aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/include/openbsc
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <holger@moiji-mobile.com>2015-08-20 15:15:50 +0200
committerHolger Hans Peter Freyther <holger@moiji-mobile.com>2015-08-20 17:24:03 +0200
commitc390ae8eaf0fd505ae1138b356358e0bcfe13e61 (patch)
treed4df73bf6d1555cfa729144cf73cb1d353e1f754 /openbsc/include/openbsc
parente6ed009a36d410fc0cbac7a82d92313bd6d4c084 (diff)
mgcp: Allow to bind to different ports for net/bts ports
When using multiple interfaces on a system one can now configure which will be served for the BTS ports and which will be served for the network. The direct usage of source_addr is now only to initialize the MGCP receiving port itself.
Diffstat (limited to 'openbsc/include/openbsc')
-rw-r--r--openbsc/include/openbsc/mgcp.h3
-rw-r--r--openbsc/include/openbsc/mgcp_internal.h4
2 files changed, 7 insertions, 0 deletions
diff --git a/openbsc/include/openbsc/mgcp.h b/openbsc/include/openbsc/mgcp.h
index 9befa7c7e..aebcda357 100644
--- a/openbsc/include/openbsc/mgcp.h
+++ b/openbsc/include/openbsc/mgcp.h
@@ -117,6 +117,9 @@ typedef void (*mgcp_get_format)(struct mgcp_endpoint *endp,
struct mgcp_port_range {
int mode;
+ /* addr or NULL to fall-back to default */
+ char *bind_addr;
+
/* pre-allocated from a base? */
int base_port;
diff --git a/openbsc/include/openbsc/mgcp_internal.h b/openbsc/include/openbsc/mgcp_internal.h
index f97292d9a..1f836595b 100644
--- a/openbsc/include/openbsc/mgcp_internal.h
+++ b/openbsc/include/openbsc/mgcp_internal.h
@@ -327,10 +327,14 @@ int mgcp_set_audio_info(void *ctx, struct mgcp_rtp_codec *codec,
*/
static inline const char *mgcp_net_src_addr(struct mgcp_endpoint *endp)
{
+ if (endp->cfg->bts_ports.bind_addr)
+ return endp->cfg->bts_ports.bind_addr;
return endp->cfg->source_addr;
}
static inline const char *mgcp_bts_src_addr(struct mgcp_endpoint *endp)
{
+ if (endp->cfg->net_ports.bind_addr)
+ return endp->cfg->net_ports.bind_addr;
return endp->cfg->source_addr;
}