mgcp: Only use early bind for the BTS socket.

Simplify the code by onlt allowing one way to allocate
a socket.
This commit is contained in:
Holger Hans Peter Freyther 2010-08-05 03:22:24 +08:00
parent 58ff219c85
commit f1a168dc20
3 changed files with 11 additions and 24 deletions

View File

@ -91,7 +91,6 @@ struct mgcp_config {
char *audio_name;
int audio_payload;
int audio_loop;
int early_bind;
int rtp_base_port;
int endp_dscp;

View File

@ -428,11 +428,8 @@ static struct msgb *handle_create_con(struct mgcp_config *cfg, struct msgb *msg)
/* bind to the port now */
port = rtp_calculate_port(ENDPOINT_NUMBER(endp), cfg->rtp_base_port);
if (cfg->early_bind) {
endp->bts_end.local_port = port;
endp->net_end.local_port = port;
} else if (mgcp_bind_rtp_port(endp, port) != 0)
goto error2;
endp->bts_end.local_port = port;
endp->net_end.local_port = port;
/* assign a local call identifier or fail */
endp->ci = generate_call_id(cfg);
@ -760,11 +757,6 @@ void mgcp_free_endp(struct mgcp_endpoint *endp)
endp->local_options = NULL;
}
if (!endp->cfg->early_bind) {
bsc_unregister_fd(&endp->local_rtp);
bsc_unregister_fd(&endp->local_rtcp);
}
mgcp_rtp_end_reset(&endp->bts_end);
mgcp_rtp_end_reset(&endp->net_end);

View File

@ -56,7 +56,6 @@ static int config_write_mgcp(struct vty *vty)
vty_out(vty, " bts ip %s%s", g_cfg->bts_ip, VTY_NEWLINE);
vty_out(vty, " bind ip %s%s", g_cfg->source_addr, VTY_NEWLINE);
vty_out(vty, " bind port %u%s", g_cfg->source_port, VTY_NEWLINE);
vty_out(vty, " bind early %u%s", !!g_cfg->early_bind, VTY_NEWLINE);
vty_out(vty, " rtp base %u%s", g_cfg->rtp_base_port, VTY_NEWLINE);
vty_out(vty, " rtp ip-dscp %d%s", g_cfg->endp_dscp, VTY_NEWLINE);
if (g_cfg->audio_payload != -1)
@ -150,9 +149,8 @@ DEFUN(cfg_mgcp_bind_early,
"bind early (0|1)",
"Bind all RTP ports early")
{
unsigned int bind = atoi(argv[0]);
g_cfg->early_bind = bind == 1;
return CMD_SUCCESS;
vty_out(vty, "bind early is deprecated, remove it from the config.\n");
return CMD_WARNING;
}
DEFUN(cfg_mgcp_rtp_base_port,
@ -311,16 +309,14 @@ int mgcp_parse_config(const char *config_file, struct mgcp_config *cfg)
}
/* early bind */
if (g_cfg->early_bind) {
for (i = 1; i < g_cfg->number_endpoints; ++i) {
struct mgcp_endpoint *endp = &g_cfg->endpoints[i];
int rtp_port;
for (i = 1; i < g_cfg->number_endpoints; ++i) {
struct mgcp_endpoint *endp = &g_cfg->endpoints[i];
int rtp_port;
rtp_port = rtp_calculate_port(ENDPOINT_NUMBER(endp), g_cfg->rtp_base_port);
if (mgcp_bind_rtp_port(endp, rtp_port) != 0) {
LOGP(DMGCP, LOGL_FATAL, "Failed to bind: %d\n", rtp_port);
return -1;
}
rtp_port = rtp_calculate_port(ENDPOINT_NUMBER(endp), g_cfg->rtp_base_port);
if (mgcp_bind_rtp_port(endp, rtp_port) != 0) {
LOGP(DMGCP, LOGL_FATAL, "Failed to bind: %d\n", rtp_port);
return -1;
}
}