aboutsummaryrefslogtreecommitdiffstats
path: root/src/libmsc/a_iface.c
diff options
context:
space:
mode:
authorPhilipp Maier <pmaier@sysmocom.de>2017-11-07 17:19:25 +0100
committerthe 34c3 gsm team <34c3-gsm@congress>2017-12-27 18:46:26 +0100
commit387edd67ac28782d3241905fc00a0a33d2adda89 (patch)
tree452b0c27f106fd8c72a98c869c1cb95172759229 /src/libmsc/a_iface.c
parent629c479eddfc8995117eaee56ef330ae705bba5f (diff)
mgcp: use osmo-mgw to switch rtp streams
in the current implementation we still use osmo-bsc_mgcp, which has many problems and is also obsoleted by osmo-mgw. integrate osmo-mgw and re-implement the current switching using an osmo fsm. Depends: osmo-mgw Iab6a6038e7610c62f34e642cd49c93d11151252c Depends: osmo-iuh I3c1a0455c5f25cae41ee19229d6daf299e023062 Closes: OS#2605 Change-Id: Ieea9630358b3963261fa1993cf1f3b563ff23538
Diffstat (limited to 'src/libmsc/a_iface.c')
-rw-r--r--src/libmsc/a_iface.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/src/libmsc/a_iface.c b/src/libmsc/a_iface.c
index 9dacca561..74ad51ddf 100644
--- a/src/libmsc/a_iface.c
+++ b/src/libmsc/a_iface.c
@@ -396,8 +396,21 @@ int a_iface_tx_assignment(const struct gsm_trans *trans)
/* Package RTP-Address data */
memset(&rtp_addr_in, 0, sizeof(rtp_addr_in));
rtp_addr_in.sin_family = AF_INET;
- rtp_addr_in.sin_port = osmo_htons(conn->rtp.port_subscr);
- rtp_addr_in.sin_addr.s_addr = osmo_htonl(mgcp_client_remote_addr_n(gsm_network->mgw.client));
+ rtp_addr_in.sin_port = osmo_htons(conn->rtp.local_port_ran);
+ rtp_addr_in.sin_addr.s_addr = inet_addr(conn->rtp.local_addr_ran);
+
+ if (rtp_addr_in.sin_addr.s_addr == INADDR_NONE) {
+ LOGP(DMSC, LOGL_ERROR,
+ "(subscriber:%s) Invalid RTP-Address -- assignment not sent!\n",
+ vlr_subscr_name(trans->vsub));
+ return -EINVAL;
+ }
+ if (rtp_addr_in.sin_port == 0) {
+ LOGP(DMSC, LOGL_ERROR,
+ "(subscriber:%s) Invalid RTP-Port -- assignment not sent!\n",
+ vlr_subscr_name(trans->vsub));
+ return -EINVAL;
+ }
memset(&rtp_addr, 0, sizeof(rtp_addr));
memcpy(&rtp_addr, &rtp_addr_in, sizeof(rtp_addr_in));