aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPau Espin Pedrol <pespin@sysmocom.de>2019-05-06 15:23:57 +0200
committerPau Espin Pedrol <pespin@sysmocom.de>2019-05-14 11:36:33 +0200
commita93c6e9263955e83e819e41ef3a595b034dbfc1f (patch)
tree14539950f195b83f17a6c825a6db1e6f95f29bc5
parent30907dc9d84b61e95d106f752d1e08491606055f (diff)
osmux: Provide correct local port during mgcp resp
Also document some possible future improvements for local addr. Change-Id: I12c8fcdc8b772b9f92a70774406d4662f44bd9a9
-rw-r--r--src/libosmo-mgcp/mgcp_network.c2
-rw-r--r--src/libosmo-mgcp/mgcp_protocol.c3
-rw-r--r--src/libosmo-mgcp/mgcp_sdp.c7
3 files changed, 10 insertions, 2 deletions
diff --git a/src/libosmo-mgcp/mgcp_network.c b/src/libosmo-mgcp/mgcp_network.c
index dbed1562d..650d4c069 100644
--- a/src/libosmo-mgcp/mgcp_network.c
+++ b/src/libosmo-mgcp/mgcp_network.c
@@ -86,7 +86,7 @@ void mgcp_get_local_addr(char *addr, struct mgcp_conn_rtp *conn)
}
}
- /* Select from preconfigured IP-Addresses */
+ /* Select from preconfigured IP-Addresses. We don't have bind_addr for Osmux (yet?). */
if (endp->cfg->net_ports.bind_addr) {
/* Check there is a bind IP for the RTP traffic configured,
* if so, use that IP-Address */
diff --git a/src/libosmo-mgcp/mgcp_protocol.c b/src/libosmo-mgcp/mgcp_protocol.c
index 609b5fb10..0831abbda 100644
--- a/src/libosmo-mgcp/mgcp_protocol.c
+++ b/src/libosmo-mgcp/mgcp_protocol.c
@@ -300,6 +300,9 @@ static struct msgb *create_response_with_sdp(struct mgcp_endpoint *endp,
const char *trans_id,
bool add_conn_params)
{
+ /* TODO: we may want to define another local_ip_osmux var to us for
+ OSMUX connections. Perhaps adding a new internal API to get it based
+ on conn type */
const char *addr = endp->cfg->local_ip;
struct msgb *sdp;
int rc;
diff --git a/src/libosmo-mgcp/mgcp_sdp.c b/src/libosmo-mgcp/mgcp_sdp.c
index 6b41f50cd..99e764bbf 100644
--- a/src/libosmo-mgcp/mgcp_sdp.c
+++ b/src/libosmo-mgcp/mgcp_sdp.c
@@ -512,6 +512,7 @@ int mgcp_write_response_sdp(const struct mgcp_endpoint *endp,
struct sdp_fmtp_param fmtp_param;
int rc;
int payload_types[1];
+ int local_port;
struct sdp_fmtp_param fmtp_params[1];
unsigned int fmtp_params_len = 0;
@@ -541,7 +542,11 @@ int mgcp_write_response_sdp(const struct mgcp_endpoint *endp,
if (payload_type >= 0) {
payload_types[0] = payload_type;
- rc = add_audio(sdp, payload_types, 1, conn->end.local_port);
+ if (mgcp_conn_rtp_is_osmux(conn))
+ local_port = endp->cfg->osmux_port;
+ else
+ local_port = conn->end.local_port;
+ rc = add_audio(sdp, payload_types, 1, local_port);
if (rc < 0)
goto buffer_too_small;