aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc
diff options
context:
space:
mode:
authorNeels Hofmeyr <nhofmeyr@sysmocom.de>2017-06-28 00:51:43 +0200
committerNeels Hofmeyr <nhofmeyr@sysmocom.de>2017-06-28 00:51:43 +0200
commit9244306db501a2e94a43861b67f619d4a4b8a958 (patch)
tree3ff52a4a1960143d931fc74263a56519174b1b5d /openbsc
parent208505b85d81b8d94aa09363a2f4dee5f27bad17 (diff)
aoip: don't use iu struct: move rtp ports from .iu to new subscr_conn.rtp
Diffstat (limited to 'openbsc')
-rw-r--r--openbsc/include/openbsc/gsm_data.h7
-rw-r--r--openbsc/src/libmsc/a_iface.c2
-rw-r--r--openbsc/src/libmsc/a_iface_bssap.c2
-rw-r--r--openbsc/src/libmsc/msc_ifaces.c10
4 files changed, 12 insertions, 9 deletions
diff --git a/openbsc/include/openbsc/gsm_data.h b/openbsc/include/openbsc/gsm_data.h
index 39e2227e0..13178ae6c 100644
--- a/openbsc/include/openbsc/gsm_data.h
+++ b/openbsc/include/openbsc/gsm_data.h
@@ -195,13 +195,16 @@ struct gsm_subscriber_connection {
uint16_t lac;
struct gsm_encr encr;
+ struct {
+ uint16_t port_subscr;
+ uint16_t port_cn;
+ } rtp;
+
/* which Iu-CS connection, if any. */
struct {
struct ue_conn_ctx *ue_ctx;
int integrity_protection;
unsigned int mgcp_rtp_endpoint;
- uint16_t mgcp_rtp_port_ue;
- uint16_t mgcp_rtp_port_cn;
uint8_t rab_id;
} iu;
diff --git a/openbsc/src/libmsc/a_iface.c b/openbsc/src/libmsc/a_iface.c
index ce38e20db..869cd7887 100644
--- a/openbsc/src/libmsc/a_iface.c
+++ b/openbsc/src/libmsc/a_iface.c
@@ -291,7 +291,7 @@ int a_iface_tx_assignment(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->iu.mgcp_rtp_port_ue);
+ rtp_addr_in.sin_port = osmo_htons(conn->rtp.port_subscr);
rtp_addr_in.sin_addr.s_addr = osmo_htonl(mgcpgw_client_remote_addr_n(gsm_network->mgcpgw.client));
memset(&rtp_addr, 0, sizeof(rtp_addr));
diff --git a/openbsc/src/libmsc/a_iface_bssap.c b/openbsc/src/libmsc/a_iface_bssap.c
index 8a40314e6..cdddac7e7 100644
--- a/openbsc/src/libmsc/a_iface_bssap.c
+++ b/openbsc/src/libmsc/a_iface_bssap.c
@@ -584,7 +584,7 @@ static int bssmap_rx_ass_compl(struct osmo_sccp_user *scu, struct a_conn_info *a
* transport address element */
if (rtp_addr.ss_family == AF_INET) {
rtp_addr_in = (struct sockaddr_in *)&rtp_addr;
- conn->iu.mgcp_rtp_port_ue = osmo_ntohs(rtp_addr_in->sin_port);
+ conn->rtp.port_subscr = osmo_ntohs(rtp_addr_in->sin_port);
/* FIXME: We also get the IP-Address of the remote (e.g. BTS)
* end with the response. Currently we just ignore that address.
* Instead we expect that our local MGCP gateway and the code
diff --git a/openbsc/src/libmsc/msc_ifaces.c b/openbsc/src/libmsc/msc_ifaces.c
index 8d5364767..cdc724b5b 100644
--- a/openbsc/src/libmsc/msc_ifaces.c
+++ b/openbsc/src/libmsc/msc_ifaces.c
@@ -170,18 +170,18 @@ static void mgcp_response_rab_act_cs_crcx(struct mgcp_response *r, void *priv)
goto rab_act_cs_error;
}
- conn->iu.mgcp_rtp_port_cn = r->audio_port;
+ conn->rtp.port_cn = r->audio_port;
rtp_ip = mgcpgw_client_remote_addr_n(conn->network->mgcpgw.client);
if (trans->conn->via_ran == RAN_UTRAN_IU) {
/* Assign a voice channel via RANAP on 3G */
iu_rab_act_cs(uectx, conn->iu.rab_id, rtp_ip,
- conn->iu.mgcp_rtp_port_ue);
+ conn->rtp.port_subscr);
/* use_x213_nsap == 0 for ip.access nano3G */
} else if (trans->conn->via_ran == RAN_GERAN_A) {
/* Assign a voice channel via A on 2G */
- if (a_iface_tx_assignment(trans) == -EINVAL)
+ if (a_iface_tx_assignment(trans))
goto rab_act_cs_error;
} else
goto rab_act_cs_error;
@@ -213,7 +213,7 @@ static int conn_iu_rab_act_cs(struct gsm_trans *trans)
* gets the endpoint ID via the CRCX. It will do the same calculation
* on his side too to get knowledge of the rtp port. */
bts_base = mgcp->actual.bts_base;
- conn->iu.mgcp_rtp_port_ue = bts_base + 2 * conn->iu.mgcp_rtp_endpoint;
+ conn->rtp.port_subscr = bts_base + 2 * conn->iu.mgcp_rtp_endpoint;
/* Since we know now the endpoint number, we enforce a DLCX on tha
* endpoint in order to ensure that this endpoint is not occupied
@@ -286,7 +286,7 @@ static void mgcp_bridge(struct gsm_trans *from, struct gsm_trans *to,
msg = mgcp_msg_mdcx(mgcp,
conn1->iu.mgcp_rtp_endpoint,
- ip, conn2->iu.mgcp_rtp_port_cn,
+ ip, conn2->rtp.port_cn,
mode);
if (mgcpgw_client_tx(mgcp, msg, mgcp_response_bridge_mdcx, from))
LOGP(DMGCP, LOGL_ERROR,