aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPau Espin Pedrol <pespin@sysmocom.de>2019-05-10 16:49:59 +0200
committerPau Espin Pedrol <pespin@sysmocom.de>2019-05-14 11:32:33 +0200
commitca538fc5eb73f70fdfa828253767ce37666d91a2 (patch)
treee163a3068e58df2d2d2a08d2fb7ee0b52c120267
parent6be2c49538306ffa01b7b1336a40900cd5f175d9 (diff)
mgcp-cli: Allow submitting X-Osmux on MDCX request
-rw-r--r--src/libosmo-mgcp-client/mgcp_client_fsm.c5
-rw-r--r--tests/mgcp_client/mgcp_client_test.c11
-rw-r--r--tests/mgcp_client/mgcp_client_test.ok8
3 files changed, 24 insertions, 0 deletions
diff --git a/src/libosmo-mgcp-client/mgcp_client_fsm.c b/src/libosmo-mgcp-client/mgcp_client_fsm.c
index 7ff3a5358..ab7af10b2 100644
--- a/src/libosmo-mgcp-client/mgcp_client_fsm.c
+++ b/src/libosmo-mgcp-client/mgcp_client_fsm.c
@@ -173,6 +173,11 @@ static struct msgb *make_mdcx_msg(struct mgcp_ctx *mgcp_ctx)
set_conn_mode(&mgcp_msg, &mgcp_ctx->conn_peer_local);
+ if (mgcp_ctx->conn_peer_local.x_osmo_osmux_use) {
+ mgcp_msg.x_osmo_osmux_cid = mgcp_ctx->conn_peer_local.x_osmo_osmux_cid;
+ mgcp_msg.presence |= MGCP_MSG_PRESENCE_X_OSMO_OSMUX_CID;
+ }
+
/* Note: We take the endpoint and the call_id from the remote
* connection info, because we can be confident that the
* information there is valid. For the local info, we explicitly
diff --git a/tests/mgcp_client/mgcp_client_test.c b/tests/mgcp_client/mgcp_client_test.c
index 432a09c8e..9c4392f7d 100644
--- a/tests/mgcp_client/mgcp_client_test.c
+++ b/tests/mgcp_client/mgcp_client_test.c
@@ -276,6 +276,17 @@ void test_mgcp_msg(void)
msg = mgcp_msg_gen(mgcp, &mgcp_msg);
printf("%s\n", (char *)msg->data);
+ printf("Generate X-Osmo-Osmux message (MDCX):\n");
+ msg = mgcp_msg_gen(mgcp, &mgcp_msg);
+ mgcp_msg.verb = MGCP_VERB_MDCX;
+ mgcp_msg.x_osmo_osmux_cid = 2;
+ mgcp_msg.presence =
+ (MGCP_MSG_PRESENCE_ENDPOINT | MGCP_MSG_PRESENCE_CALL_ID |
+ MGCP_MSG_PRESENCE_CONN_ID | MGCP_MSG_PRESENCE_CONN_MODE
+ | MGCP_MSG_PRESENCE_X_OSMO_OSMUX_CID);
+ msg = mgcp_msg_gen(mgcp, &mgcp_msg);
+ printf("%s\n", (char *)msg->data);
+
printf("Overfolow test:\n");
mgcp_msg.verb = MGCP_VERB_MDCX;
mgcp_msg.presence =
diff --git a/tests/mgcp_client/mgcp_client_test.ok b/tests/mgcp_client/mgcp_client_test.ok
index 8fbe3ae4f..8b3e15bb3 100644
--- a/tests/mgcp_client/mgcp_client_test.ok
+++ b/tests/mgcp_client/mgcp_client_test.ok
@@ -100,6 +100,14 @@ L: p:20, a:GSM, nt:IN
M: sendrecv
X-Osmux: 2
+Generate X-Osmo-Osmux message (MDCX):
+MDCX 17 23@mgw MGCP 1.0
+C: 2f
+I: 11
+L: p:20, a:GSM, nt:IN
+M: sendrecv
+X-Osmux: 2
+
Overfolow test: