aoip: don't use iu struct: move rtp ports from .iu to new subscr_conn.rtp
Change-Id: Ib1a84b0733655b2e87c1598ae9df0640cdca833b
This commit is contained in:
parent
e4dc412e7b
commit
04d1ca7895
|
@ -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;
|
||||
|
||||
|
|
|
@ -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));
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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,
|
||||
|
|
Loading…
Reference in New Issue