aoip: don't use iu struct: move rtp ports from .iu to new subscr_conn.rtp

Change-Id: Ib1a84b0733655b2e87c1598ae9df0640cdca833b
This commit is contained in:
Neels Hofmeyr 2017-06-28 00:51:43 +02:00 committed by Neels Hofmeyr
parent e4dc412e7b
commit 04d1ca7895
4 changed files with 12 additions and 9 deletions

View File

@ -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;

View File

@ -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));

View File

@ -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

View File

@ -169,18 +169,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;
@ -212,7 +212,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
@ -285,7 +285,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,