From 9244306db501a2e94a43861b67f619d4a4b8a958 Mon Sep 17 00:00:00 2001 From: Neels Hofmeyr Date: Wed, 28 Jun 2017 00:51:43 +0200 Subject: aoip: don't use iu struct: move rtp ports from .iu to new subscr_conn.rtp Change-Id: I2ec2ecc2e3dcf0493168de6091d7fa4cfa028645 --- openbsc/include/openbsc/gsm_data.h | 7 +++++-- openbsc/src/libmsc/a_iface.c | 2 +- openbsc/src/libmsc/a_iface_bssap.c | 2 +- openbsc/src/libmsc/msc_ifaces.c | 10 +++++----- 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, -- cgit v1.2.3