osmux: Clean up mgcp_config osmux fields
* Move all of them to an anonymous "osmux" substruct to have them all together. * Rename some fields to clarify its meanings, similar to what was already done in osmo-bts. * Move the port VTY config next to the ip address ones. Change-Id: Icc1c1ce3ab3a8beb941cda7c112485a0db882a90
This commit is contained in:
parent
833281dcb9
commit
36413c011f
|
@ -157,24 +157,26 @@ struct mgcp_config {
|
||||||
|
|
||||||
enum mgcp_role role;
|
enum mgcp_role role;
|
||||||
|
|
||||||
|
struct {
|
||||||
/* Osmux usage policy: */
|
/* Osmux usage policy: */
|
||||||
enum osmux_usage osmux_use;
|
enum osmux_usage usage;
|
||||||
/* addr to bind the server to */
|
/* addr to bind the server to */
|
||||||
char *osmux_addr_v4;
|
char *local_addr_v4;
|
||||||
char *osmux_addr_v6;
|
char *local_addr_v6;
|
||||||
|
/* osmux port */
|
||||||
|
uint16_t local_port;
|
||||||
/* The osmux socket is allocated on demand (1st time used).
|
/* The osmux socket is allocated on demand (1st time used).
|
||||||
* This tells us if the osmux socket is already initialized. */
|
* This tells us if the osmux socket is already initialized. */
|
||||||
bool osmux_initialized;
|
bool initialized;
|
||||||
/* osmux batch factor: from 1 to 4 maximum */
|
/* osmux batch factor: from 1 to 4 maximum */
|
||||||
int osmux_batch;
|
int batch_factor;
|
||||||
/* osmux batch size (in bytes) */
|
/* osmux batch size (in bytes) */
|
||||||
int osmux_batch_size;
|
int batch_size;
|
||||||
/* osmux port */
|
|
||||||
uint16_t osmux_port;
|
|
||||||
/* Pad circuit with dummy AMR frames if no payload to transmit is available */
|
/* Pad circuit with dummy AMR frames if no payload to transmit is available */
|
||||||
bool osmux_dummy;
|
bool dummy_padding;
|
||||||
/* Whether peer is behind NAT (Retrieve remote addr from 1st received Osmux packet) */
|
/* Whether peer is behind NAT (Retrieve remote addr from 1st received Osmux packet) */
|
||||||
bool osmux_peer_behind_nat;
|
bool peer_behind_nat;
|
||||||
|
} osmux;
|
||||||
/* domain name of the media gateway */
|
/* domain name of the media gateway */
|
||||||
char domain[255+1];
|
char domain[255+1];
|
||||||
|
|
||||||
|
|
|
@ -102,19 +102,19 @@ int mgcp_get_local_addr(char *addr, struct mgcp_conn_rtp *conn)
|
||||||
if (rem_addr_set) {
|
if (rem_addr_set) {
|
||||||
/* Match IP version with what was requested from remote: */
|
/* Match IP version with what was requested from remote: */
|
||||||
bind_addr = conn->end.addr.u.sa.sa_family == AF_INET6 ?
|
bind_addr = conn->end.addr.u.sa.sa_family == AF_INET6 ?
|
||||||
cfg->osmux_addr_v6 :
|
cfg->osmux.local_addr_v6 :
|
||||||
cfg->osmux_addr_v4;
|
cfg->osmux.local_addr_v4;
|
||||||
} else {
|
} else {
|
||||||
/* Choose any of the bind addresses, preferring v6 over v4 if available: */
|
/* Choose any of the bind addresses, preferring v6 over v4 if available: */
|
||||||
bind_addr = cfg->osmux_addr_v6;
|
bind_addr = cfg->osmux.local_addr_v6;
|
||||||
if (!bind_addr)
|
if (!bind_addr)
|
||||||
bind_addr = cfg->osmux_addr_v4;
|
bind_addr = cfg->osmux.local_addr_v4;
|
||||||
}
|
}
|
||||||
if (!bind_addr) {
|
if (!bind_addr) {
|
||||||
LOGPCONN(conn->conn, DOSMUX, LOGL_ERROR,
|
LOGPCONN(conn->conn, DOSMUX, LOGL_ERROR,
|
||||||
"Unable to locate local Osmux address, check your configuration! v4=%u v6=%u remote_known=%s\n",
|
"Unable to locate local Osmux address, check your configuration! v4=%u v6=%u remote_known=%s\n",
|
||||||
!!cfg->osmux_addr_v4,
|
!!cfg->osmux.local_addr_v4,
|
||||||
!!cfg->osmux_addr_v6,
|
!!cfg->osmux.local_addr_v6,
|
||||||
rem_addr_set ? osmo_sockaddr_ntop(&conn->end.addr.u.sa, ipbuf) : "no");
|
rem_addr_set ? osmo_sockaddr_ntop(&conn->end.addr.u.sa, ipbuf) : "no");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -169,9 +169,9 @@ osmux_handle_alloc(const struct mgcp_trunk *trunk, const struct osmo_sockaddr *r
|
||||||
}
|
}
|
||||||
/* sequence number to start OSMUX message from */
|
/* sequence number to start OSMUX message from */
|
||||||
osmux_xfrm_input_set_initial_seqnum(h->in, 0);
|
osmux_xfrm_input_set_initial_seqnum(h->in, 0);
|
||||||
osmux_xfrm_input_set_batch_factor(h->in, cfg->osmux_batch);
|
osmux_xfrm_input_set_batch_factor(h->in, cfg->osmux.batch_factor);
|
||||||
/* If batch size is zero, the library defaults to 1472 bytes. */
|
/* If batch size is zero, the library defaults to 1472 bytes. */
|
||||||
osmux_xfrm_input_set_batch_size(h->in, cfg->osmux_batch_size);
|
osmux_xfrm_input_set_batch_size(h->in, cfg->osmux.batch_size);
|
||||||
osmux_xfrm_input_set_deliver_cb(h->in, osmux_deliver_cb, h);
|
osmux_xfrm_input_set_deliver_cb(h->in, osmux_deliver_cb, h);
|
||||||
|
|
||||||
llist_add(&h->head, &osmux_handle_list);
|
llist_add(&h->head, &osmux_handle_list);
|
||||||
|
@ -287,7 +287,7 @@ osmux_conn_lookup(const struct mgcp_trunk *trunk, uint8_t local_cid, const struc
|
||||||
h = osmux_xfrm_input_get_deliver_cb_data(conn_rtp->osmux.in);
|
h = osmux_xfrm_input_get_deliver_cb_data(conn_rtp->osmux.in);
|
||||||
if (osmo_sockaddr_cmp(&h->rem_addr, rem_addr) != 0)
|
if (osmo_sockaddr_cmp(&h->rem_addr, rem_addr) != 0)
|
||||||
continue;
|
continue;
|
||||||
} else if (!trunk->cfg->osmux_peer_behind_nat) {
|
} else if (!trunk->cfg->osmux.peer_behind_nat) {
|
||||||
LOGPCONN(conn, DOSMUX, LOGL_DEBUG, "osmux_conn_lookup(rem_addr=%s local_cid=%d): Skipping because not (yet) ENABLED\n",
|
LOGPCONN(conn, DOSMUX, LOGL_DEBUG, "osmux_conn_lookup(rem_addr=%s local_cid=%d): Skipping because not (yet) ENABLED\n",
|
||||||
osmo_sockaddr_to_str(rem_addr), local_cid);
|
osmo_sockaddr_to_str(rem_addr), local_cid);
|
||||||
continue; /* skip, read above */
|
continue; /* skip, read above */
|
||||||
|
@ -353,7 +353,7 @@ static int conn_osmux_event_data_received(struct mgcp_conn_rtp *conn, const stru
|
||||||
* conn_osmux_rx_mdcx() whenever a CRCX/MDCX with the remote address is received.
|
* conn_osmux_rx_mdcx() whenever a CRCX/MDCX with the remote address is received.
|
||||||
*/
|
*/
|
||||||
cfg = conn->conn->endp->trunk->cfg;
|
cfg = conn->conn->endp->trunk->cfg;
|
||||||
if (!cfg->osmux_peer_behind_nat) {
|
if (!cfg->osmux.peer_behind_nat) {
|
||||||
/* osmux_conn_lookup() should never provide us with an
|
/* osmux_conn_lookup() should never provide us with an
|
||||||
* ACTIVATING conn without NAT in first place. This should never happen. */
|
* ACTIVATING conn without NAT in first place. This should never happen. */
|
||||||
LOGPCONN(conn->conn, DOSMUX, LOGL_ERROR,
|
LOGPCONN(conn->conn, DOSMUX, LOGL_ERROR,
|
||||||
|
@ -392,7 +392,7 @@ int conn_osmux_event_rx_crcx_mdcx(struct mgcp_conn_rtp *conn)
|
||||||
/* If peer is behind NAT, we have to wait until 1st osmux frame is received
|
/* If peer is behind NAT, we have to wait until 1st osmux frame is received
|
||||||
* to discover peer's real remote address */
|
* to discover peer's real remote address */
|
||||||
cfg = conn->conn->endp->trunk->cfg;
|
cfg = conn->conn->endp->trunk->cfg;
|
||||||
if (cfg->osmux_peer_behind_nat)
|
if (cfg->osmux.peer_behind_nat)
|
||||||
return 0;
|
return 0;
|
||||||
/* Keep waiting to receive remote CID through CRCX/MDCX */
|
/* Keep waiting to receive remote CID through CRCX/MDCX */
|
||||||
if (!conn->osmux.remote_cid_present)
|
if (!conn->osmux.remote_cid_present)
|
||||||
|
@ -454,7 +454,7 @@ static int osmux_read_fd_cb(struct osmo_fd *ofd, unsigned int what)
|
||||||
rate_ctr_inc(rate_ctr_group_get_ctr(all_rtp_stats, OSMUX_PACKETS_RX_CTR));
|
rate_ctr_inc(rate_ctr_group_get_ctr(all_rtp_stats, OSMUX_PACKETS_RX_CTR));
|
||||||
osmo_sockaddr_to_str_buf(addr_str, sizeof(addr_str), &rem_addr);
|
osmo_sockaddr_to_str_buf(addr_str, sizeof(addr_str), &rem_addr);
|
||||||
|
|
||||||
if (trunk->cfg->osmux_use == OSMUX_USAGE_OFF) {
|
if (trunk->cfg->osmux.usage == OSMUX_USAGE_OFF) {
|
||||||
LOGP(DOSMUX, LOGL_ERROR,
|
LOGP(DOSMUX, LOGL_ERROR,
|
||||||
"Peer %s wants to use Osmux but MGCP Client did not request it\n",
|
"Peer %s wants to use Osmux but MGCP Client did not request it\n",
|
||||||
addr_str);
|
addr_str);
|
||||||
|
@ -505,12 +505,12 @@ int osmux_init(struct mgcp_trunk *trunk)
|
||||||
osmo_fd_setup(&osmux_fd_v4, -1, OSMO_FD_READ, osmux_read_fd_cb, trunk, 0);
|
osmo_fd_setup(&osmux_fd_v4, -1, OSMO_FD_READ, osmux_read_fd_cb, trunk, 0);
|
||||||
osmo_fd_setup(&osmux_fd_v6, -1, OSMO_FD_READ, osmux_read_fd_cb, trunk, 0);
|
osmo_fd_setup(&osmux_fd_v6, -1, OSMO_FD_READ, osmux_read_fd_cb, trunk, 0);
|
||||||
|
|
||||||
if (cfg->osmux_addr_v4) {
|
if (cfg->osmux.local_addr_v4) {
|
||||||
ret = mgcp_create_bind(cfg->osmux_addr_v4, &osmux_fd_v4, cfg->osmux_port,
|
ret = mgcp_create_bind(cfg->osmux.local_addr_v4, &osmux_fd_v4, cfg->osmux.local_port,
|
||||||
cfg->endp_dscp, cfg->endp_priority);
|
cfg->endp_dscp, cfg->endp_priority);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
LOGP(DOSMUX, LOGL_ERROR, "Cannot bind OSMUX IPv4 socket to %s:%u\n",
|
LOGP(DOSMUX, LOGL_ERROR, "Cannot bind OSMUX IPv4 socket to %s:%u\n",
|
||||||
cfg->osmux_addr_v4, cfg->osmux_port);
|
cfg->osmux.local_addr_v4, cfg->osmux.local_port);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -523,12 +523,12 @@ int osmux_init(struct mgcp_trunk *trunk)
|
||||||
LOGP(DOSMUX, LOGL_INFO, "OSMUX IPv4 socket listening on %s\n",
|
LOGP(DOSMUX, LOGL_INFO, "OSMUX IPv4 socket listening on %s\n",
|
||||||
osmo_sock_get_name2(osmux_fd_v4.fd));
|
osmo_sock_get_name2(osmux_fd_v4.fd));
|
||||||
}
|
}
|
||||||
if (cfg->osmux_addr_v6) {
|
if (cfg->osmux.local_addr_v6) {
|
||||||
ret = mgcp_create_bind(cfg->osmux_addr_v6, &osmux_fd_v6, cfg->osmux_port,
|
ret = mgcp_create_bind(cfg->osmux.local_addr_v6, &osmux_fd_v6, cfg->osmux.local_port,
|
||||||
cfg->endp_dscp, cfg->endp_priority);
|
cfg->endp_dscp, cfg->endp_priority);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
LOGP(DOSMUX, LOGL_ERROR, "Cannot bind OSMUX IPv6 socket to [%s]:%u\n",
|
LOGP(DOSMUX, LOGL_ERROR, "Cannot bind OSMUX IPv6 socket to [%s]:%u\n",
|
||||||
cfg->osmux_addr_v6, cfg->osmux_port);
|
cfg->osmux.local_addr_v6, cfg->osmux.local_port);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -541,7 +541,7 @@ int osmux_init(struct mgcp_trunk *trunk)
|
||||||
LOGP(DOSMUX, LOGL_INFO, "OSMUX IPv6 socket listening on %s\n",
|
LOGP(DOSMUX, LOGL_INFO, "OSMUX IPv6 socket listening on %s\n",
|
||||||
osmo_sock_get_name2(osmux_fd_v6.fd));
|
osmo_sock_get_name2(osmux_fd_v6.fd));
|
||||||
}
|
}
|
||||||
cfg->osmux_initialized = true;
|
cfg->osmux.initialized = true;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -608,7 +608,7 @@ int conn_osmux_enable(struct mgcp_conn_rtp *conn)
|
||||||
*/
|
*/
|
||||||
const struct mgcp_trunk *trunk = conn->conn->endp->trunk;
|
const struct mgcp_trunk *trunk = conn->conn->endp->trunk;
|
||||||
static const uint32_t rtp_ssrc_winlen = UINT32_MAX / (OSMUX_CID_MAX + 1);
|
static const uint32_t rtp_ssrc_winlen = UINT32_MAX / (OSMUX_CID_MAX + 1);
|
||||||
bool osmux_dummy = trunk->cfg->osmux_dummy;
|
bool osmux_dummy = trunk->cfg->osmux.dummy_padding;
|
||||||
|
|
||||||
/* Wait until we have the remote connection information, be it from MDCX (peer not behind NAT)
|
/* Wait until we have the remote connection information, be it from MDCX (peer not behind NAT)
|
||||||
* or later learned from first received remote osmux packet (peer behind NAT) */
|
* or later learned from first received remote osmux packet (peer behind NAT) */
|
||||||
|
|
|
@ -745,7 +745,7 @@ uint32_t mgcp_rtp_packet_duration(const struct mgcp_endpoint *endp,
|
||||||
*/
|
*/
|
||||||
static int mgcp_osmux_setup(struct mgcp_endpoint *endp, const char *line)
|
static int mgcp_osmux_setup(struct mgcp_endpoint *endp, const char *line)
|
||||||
{
|
{
|
||||||
if (!endp->trunk->cfg->osmux_initialized) {
|
if (!endp->trunk->cfg->osmux.initialized) {
|
||||||
if (osmux_init(endp->trunk) < 0) {
|
if (osmux_init(endp->trunk) < 0) {
|
||||||
LOGPENDP(endp, DOSMUX, LOGL_ERROR, "Cannot init OSMUX\n");
|
LOGPENDP(endp, DOSMUX, LOGL_ERROR, "Cannot init OSMUX\n");
|
||||||
return -3;
|
return -3;
|
||||||
|
@ -898,7 +898,7 @@ static struct msgb *handle_create_con(struct mgcp_request_data *rq)
|
||||||
case 'X':
|
case 'X':
|
||||||
if (strncasecmp("Osmux: ", line + 2, strlen("Osmux: ")) == 0) {
|
if (strncasecmp("Osmux: ", line + 2, strlen("Osmux: ")) == 0) {
|
||||||
/* If osmux is disabled, just skip setting it up */
|
/* If osmux is disabled, just skip setting it up */
|
||||||
if (rq->endp->trunk->cfg->osmux_use == OSMUX_USAGE_OFF)
|
if (rq->endp->trunk->cfg->osmux.usage == OSMUX_USAGE_OFF)
|
||||||
break;
|
break;
|
||||||
remote_osmux_cid = mgcp_osmux_setup(endp, line);
|
remote_osmux_cid = mgcp_osmux_setup(endp, line);
|
||||||
break;
|
break;
|
||||||
|
@ -1013,7 +1013,7 @@ mgcp_header_done:
|
||||||
conn->osmux.remote_cid_present = true;
|
conn->osmux.remote_cid_present = true;
|
||||||
conn->osmux.remote_cid = remote_osmux_cid;
|
conn->osmux.remote_cid = remote_osmux_cid;
|
||||||
}
|
}
|
||||||
} else if (endp->trunk->cfg->osmux_use == OSMUX_USAGE_ONLY) {
|
} else if (endp->trunk->cfg->osmux.usage == OSMUX_USAGE_ONLY) {
|
||||||
LOGPCONN(_conn, DLMGCP, LOGL_ERROR,
|
LOGPCONN(_conn, DLMGCP, LOGL_ERROR,
|
||||||
"CRCX: osmux only and no osmux offered\n");
|
"CRCX: osmux only and no osmux offered\n");
|
||||||
rate_ctr_inc(rate_ctr_group_get_ctr(rate_ctrs, MGCP_CRCX_FAIL_NO_OSMUX));
|
rate_ctr_inc(rate_ctr_group_get_ctr(rate_ctrs, MGCP_CRCX_FAIL_NO_OSMUX));
|
||||||
|
@ -1190,7 +1190,7 @@ static struct msgb *handle_modify_con(struct mgcp_request_data *rq)
|
||||||
case 'X':
|
case 'X':
|
||||||
if (strncasecmp("Osmux: ", line + 2, strlen("Osmux: ")) == 0) {
|
if (strncasecmp("Osmux: ", line + 2, strlen("Osmux: ")) == 0) {
|
||||||
/* If osmux is disabled, just skip setting it up */
|
/* If osmux is disabled, just skip setting it up */
|
||||||
if (endp->trunk->cfg->osmux_use == OSMUX_USAGE_OFF)
|
if (endp->trunk->cfg->osmux.usage == OSMUX_USAGE_OFF)
|
||||||
break;
|
break;
|
||||||
remote_osmux_cid = mgcp_osmux_setup(endp, line);
|
remote_osmux_cid = mgcp_osmux_setup(endp, line);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -601,7 +601,7 @@ int mgcp_write_response_sdp(const struct mgcp_endpoint *endp,
|
||||||
|
|
||||||
payload_types[0] = payload_type;
|
payload_types[0] = payload_type;
|
||||||
if (mgcp_conn_rtp_is_osmux(conn))
|
if (mgcp_conn_rtp_is_osmux(conn))
|
||||||
local_port = endp->trunk->cfg->osmux_port;
|
local_port = endp->trunk->cfg->osmux.local_port;
|
||||||
else
|
else
|
||||||
local_port = conn->end.local_port;
|
local_port = conn->end.local_port;
|
||||||
rc = add_audio(sdp, payload_types, 1, local_port);
|
rc = add_audio(sdp, payload_types, 1, local_port);
|
||||||
|
|
|
@ -99,7 +99,7 @@ static void mgcp_format_stats_rtp(char *str, size_t str_len,
|
||||||
str += nchars;
|
str += nchars;
|
||||||
str_len -= nchars;
|
str_len -= nchars;
|
||||||
|
|
||||||
if (conn->conn->endp->trunk->cfg->osmux_use != OSMUX_USAGE_OFF) {
|
if (conn->conn->endp->trunk->cfg->osmux.usage != OSMUX_USAGE_OFF) {
|
||||||
/* Error Counter */
|
/* Error Counter */
|
||||||
nchars = snprintf(str, str_len,
|
nchars = snprintf(str, str_len,
|
||||||
"\r\nX-Osmo-CP: EC TI=%" PRIu64 ", TO=%" PRIu64,
|
"\r\nX-Osmo-CP: EC TI=%" PRIu64 ", TO=%" PRIu64,
|
||||||
|
|
|
@ -129,7 +129,7 @@ static int config_write_mgcp(struct vty *vty)
|
||||||
vty_out(vty, " rtp force-ptime %d%s", g_cfg->force_ptime,
|
vty_out(vty, " rtp force-ptime %d%s", g_cfg->force_ptime,
|
||||||
VTY_NEWLINE);
|
VTY_NEWLINE);
|
||||||
|
|
||||||
switch (g_cfg->osmux_use) {
|
switch (g_cfg->osmux.usage) {
|
||||||
case OSMUX_USAGE_ON:
|
case OSMUX_USAGE_ON:
|
||||||
vty_out(vty, " osmux on%s", VTY_NEWLINE);
|
vty_out(vty, " osmux on%s", VTY_NEWLINE);
|
||||||
break;
|
break;
|
||||||
|
@ -141,23 +141,23 @@ static int config_write_mgcp(struct vty *vty)
|
||||||
vty_out(vty, " osmux off%s", VTY_NEWLINE);
|
vty_out(vty, " osmux off%s", VTY_NEWLINE);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (g_cfg->osmux_use != OSMUX_USAGE_OFF) {
|
if (g_cfg->osmux.usage != OSMUX_USAGE_OFF) {
|
||||||
if (g_cfg->osmux_addr_v4)
|
if (g_cfg->osmux.local_addr_v4)
|
||||||
vty_out(vty, " osmux bind-ip %s%s",
|
vty_out(vty, " osmux bind-ip %s%s",
|
||||||
g_cfg->osmux_addr_v4, VTY_NEWLINE);
|
g_cfg->osmux.local_addr_v4, VTY_NEWLINE);
|
||||||
if (g_cfg->osmux_addr_v6)
|
if (g_cfg->osmux.local_addr_v6)
|
||||||
vty_out(vty, " osmux bind-ip-v6 %s%s",
|
vty_out(vty, " osmux bind-ip-v6 %s%s",
|
||||||
g_cfg->osmux_addr_v6, VTY_NEWLINE);
|
g_cfg->osmux.local_addr_v6, VTY_NEWLINE);
|
||||||
vty_out(vty, " osmux batch-factor %d%s",
|
vty_out(vty, " osmux batch-factor %d%s",
|
||||||
g_cfg->osmux_batch, VTY_NEWLINE);
|
g_cfg->osmux.batch_factor, VTY_NEWLINE);
|
||||||
vty_out(vty, " osmux batch-size %u%s",
|
vty_out(vty, " osmux batch-size %u%s",
|
||||||
g_cfg->osmux_batch_size, VTY_NEWLINE);
|
g_cfg->osmux.batch_size, VTY_NEWLINE);
|
||||||
vty_out(vty, " osmux port %u%s",
|
vty_out(vty, " osmux port %u%s",
|
||||||
g_cfg->osmux_port, VTY_NEWLINE);
|
g_cfg->osmux.local_port, VTY_NEWLINE);
|
||||||
vty_out(vty, " osmux dummy %s%s",
|
vty_out(vty, " osmux dummy %s%s",
|
||||||
g_cfg->osmux_dummy ? "on" : "off", VTY_NEWLINE);
|
g_cfg->osmux.dummy_padding ? "on" : "off", VTY_NEWLINE);
|
||||||
vty_out(vty, " osmux peer-behind-nat %s%s",
|
vty_out(vty, " osmux peer-behind-nat %s%s",
|
||||||
g_cfg->osmux_peer_behind_nat ? "on" : "off", VTY_NEWLINE);
|
g_cfg->osmux.peer_behind_nat ? "on" : "off", VTY_NEWLINE);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (g_cfg->conn_timeout)
|
if (g_cfg->conn_timeout)
|
||||||
|
@ -380,7 +380,7 @@ static int mgcp_show(struct vty *vty, int argc, const char **argv,
|
||||||
llist_for_each_entry(trunk, &g_cfg->trunks, entry)
|
llist_for_each_entry(trunk, &g_cfg->trunks, entry)
|
||||||
dump_trunk(vty, trunk, show_stats, active_only);
|
dump_trunk(vty, trunk, show_stats, active_only);
|
||||||
|
|
||||||
if (g_cfg->osmux_use != OSMUX_USAGE_OFF)
|
if (g_cfg->osmux.usage != OSMUX_USAGE_OFF)
|
||||||
vty_out(vty, "Osmux used CID: %d%s", osmux_cid_pool_count_used(),
|
vty_out(vty, "Osmux used CID: %d%s", osmux_cid_pool_count_used(),
|
||||||
VTY_NEWLINE);
|
VTY_NEWLINE);
|
||||||
|
|
||||||
|
@ -1577,12 +1577,12 @@ DEFUN(cfg_mgcp_osmux,
|
||||||
OSMO_ASSERT(trunk);
|
OSMO_ASSERT(trunk);
|
||||||
|
|
||||||
if (strcmp(argv[0], "off") == 0) {
|
if (strcmp(argv[0], "off") == 0) {
|
||||||
g_cfg->osmux_use = OSMUX_USAGE_OFF;
|
g_cfg->osmux.usage = OSMUX_USAGE_OFF;
|
||||||
return CMD_SUCCESS;
|
return CMD_SUCCESS;
|
||||||
} else if (strcmp(argv[0], "on") == 0)
|
} else if (strcmp(argv[0], "on") == 0)
|
||||||
g_cfg->osmux_use = OSMUX_USAGE_ON;
|
g_cfg->osmux.usage = OSMUX_USAGE_ON;
|
||||||
else if (strcmp(argv[0], "only") == 0)
|
else if (strcmp(argv[0], "only") == 0)
|
||||||
g_cfg->osmux_use = OSMUX_USAGE_ONLY;
|
g_cfg->osmux.usage = OSMUX_USAGE_ONLY;
|
||||||
|
|
||||||
return CMD_SUCCESS;
|
return CMD_SUCCESS;
|
||||||
|
|
||||||
|
@ -1594,7 +1594,7 @@ DEFUN(cfg_mgcp_osmux_ip,
|
||||||
OSMUX_STR IP_STR
|
OSMUX_STR IP_STR
|
||||||
"IPv4 Address to bind to\n")
|
"IPv4 Address to bind to\n")
|
||||||
{
|
{
|
||||||
osmo_talloc_replace_string(g_cfg, &g_cfg->osmux_addr_v4, argv[0]);
|
osmo_talloc_replace_string(g_cfg, &g_cfg->osmux.local_addr_v4, argv[0]);
|
||||||
return CMD_SUCCESS;
|
return CMD_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1604,7 +1604,15 @@ DEFUN(cfg_mgcp_osmux_ip_v6,
|
||||||
OSMUX_STR IP_STR
|
OSMUX_STR IP_STR
|
||||||
"IPv6 Address to bind to\n")
|
"IPv6 Address to bind to\n")
|
||||||
{
|
{
|
||||||
osmo_talloc_replace_string(g_cfg, &g_cfg->osmux_addr_v6, argv[0]);
|
osmo_talloc_replace_string(g_cfg, &g_cfg->osmux.local_addr_v6, argv[0]);
|
||||||
|
return CMD_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
DEFUN(cfg_mgcp_osmux_port,
|
||||||
|
cfg_mgcp_osmux_port_cmd,
|
||||||
|
"osmux port <1-65535>", OSMUX_STR "port\n" "UDP port\n")
|
||||||
|
{
|
||||||
|
g_cfg->osmux.local_port = atoi(argv[0]);
|
||||||
return CMD_SUCCESS;
|
return CMD_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1613,7 +1621,7 @@ DEFUN(cfg_mgcp_osmux_batch_factor,
|
||||||
"osmux batch-factor <1-8>",
|
"osmux batch-factor <1-8>",
|
||||||
OSMUX_STR "Batching factor\n" "Number of messages in the batch\n")
|
OSMUX_STR "Batching factor\n" "Number of messages in the batch\n")
|
||||||
{
|
{
|
||||||
g_cfg->osmux_batch = atoi(argv[0]);
|
g_cfg->osmux.batch_factor = atoi(argv[0]);
|
||||||
return CMD_SUCCESS;
|
return CMD_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1622,15 +1630,7 @@ DEFUN(cfg_mgcp_osmux_batch_size,
|
||||||
"osmux batch-size <1-65535>",
|
"osmux batch-size <1-65535>",
|
||||||
OSMUX_STR "batch size\n" "Batch size in bytes\n")
|
OSMUX_STR "batch size\n" "Batch size in bytes\n")
|
||||||
{
|
{
|
||||||
g_cfg->osmux_batch_size = atoi(argv[0]);
|
g_cfg->osmux.batch_size = atoi(argv[0]);
|
||||||
return CMD_SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
DEFUN(cfg_mgcp_osmux_port,
|
|
||||||
cfg_mgcp_osmux_port_cmd,
|
|
||||||
"osmux port <1-65535>", OSMUX_STR "port\n" "UDP port\n")
|
|
||||||
{
|
|
||||||
g_cfg->osmux_port = atoi(argv[0]);
|
|
||||||
return CMD_SUCCESS;
|
return CMD_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1641,9 +1641,9 @@ DEFUN(cfg_mgcp_osmux_dummy,
|
||||||
"Disable dummy padding\n")
|
"Disable dummy padding\n")
|
||||||
{
|
{
|
||||||
if (strcmp(argv[0], "on") == 0)
|
if (strcmp(argv[0], "on") == 0)
|
||||||
g_cfg->osmux_dummy = true;
|
g_cfg->osmux.dummy_padding = true;
|
||||||
else if (strcmp(argv[0], "off") == 0)
|
else if (strcmp(argv[0], "off") == 0)
|
||||||
g_cfg->osmux_dummy = false;
|
g_cfg->osmux.dummy_padding = false;
|
||||||
|
|
||||||
return CMD_SUCCESS;
|
return CMD_SUCCESS;
|
||||||
}
|
}
|
||||||
|
@ -1656,9 +1656,9 @@ DEFUN(cfg_mgcp_osmux_peer_behind_nat,
|
||||||
"Peer is NOT behind NAT\n")
|
"Peer is NOT behind NAT\n")
|
||||||
{
|
{
|
||||||
if (strcmp(argv[0], "on") == 0)
|
if (strcmp(argv[0], "on") == 0)
|
||||||
g_cfg->osmux_peer_behind_nat = true;
|
g_cfg->osmux.peer_behind_nat = true;
|
||||||
else if (strcmp(argv[0], "off") == 0)
|
else if (strcmp(argv[0], "off") == 0)
|
||||||
g_cfg->osmux_peer_behind_nat = false;
|
g_cfg->osmux.peer_behind_nat = false;
|
||||||
|
|
||||||
return CMD_SUCCESS;
|
return CMD_SUCCESS;
|
||||||
}
|
}
|
||||||
|
@ -1749,9 +1749,9 @@ int mgcp_vty_init(void)
|
||||||
install_element(MGCP_NODE, &cfg_mgcp_osmux_cmd);
|
install_element(MGCP_NODE, &cfg_mgcp_osmux_cmd);
|
||||||
install_element(MGCP_NODE, &cfg_mgcp_osmux_ip_cmd);
|
install_element(MGCP_NODE, &cfg_mgcp_osmux_ip_cmd);
|
||||||
install_element(MGCP_NODE, &cfg_mgcp_osmux_ip_v6_cmd);
|
install_element(MGCP_NODE, &cfg_mgcp_osmux_ip_v6_cmd);
|
||||||
|
install_element(MGCP_NODE, &cfg_mgcp_osmux_port_cmd);
|
||||||
install_element(MGCP_NODE, &cfg_mgcp_osmux_batch_factor_cmd);
|
install_element(MGCP_NODE, &cfg_mgcp_osmux_batch_factor_cmd);
|
||||||
install_element(MGCP_NODE, &cfg_mgcp_osmux_batch_size_cmd);
|
install_element(MGCP_NODE, &cfg_mgcp_osmux_batch_size_cmd);
|
||||||
install_element(MGCP_NODE, &cfg_mgcp_osmux_port_cmd);
|
|
||||||
install_element(MGCP_NODE, &cfg_mgcp_osmux_dummy_cmd);
|
install_element(MGCP_NODE, &cfg_mgcp_osmux_dummy_cmd);
|
||||||
install_element(MGCP_NODE, &cfg_mgcp_osmux_peer_behind_nat_cmd);
|
install_element(MGCP_NODE, &cfg_mgcp_osmux_peer_behind_nat_cmd);
|
||||||
install_element(MGCP_NODE, &cfg_mgcp_allow_transcoding_cmd);
|
install_element(MGCP_NODE, &cfg_mgcp_allow_transcoding_cmd);
|
||||||
|
@ -1798,9 +1798,9 @@ int mgcp_parse_config(const char *config_file, struct mgcp_config *cfg,
|
||||||
int rc;
|
int rc;
|
||||||
struct mgcp_trunk *trunk;
|
struct mgcp_trunk *trunk;
|
||||||
|
|
||||||
cfg->osmux_port = OSMUX_DEFAULT_PORT;
|
cfg->osmux.local_port = OSMUX_DEFAULT_PORT;
|
||||||
cfg->osmux_batch = 4;
|
cfg->osmux.batch_factor = 4;
|
||||||
cfg->osmux_batch_size = OSMUX_BATCH_DEFAULT_MAX;
|
cfg->osmux.batch_size = OSMUX_BATCH_DEFAULT_MAX;
|
||||||
|
|
||||||
g_cfg = cfg;
|
g_cfg = cfg;
|
||||||
rc = vty_read_config_file(config_file, NULL);
|
rc = vty_read_config_file(config_file, NULL);
|
||||||
|
|
Loading…
Reference in New Issue