diff options
author | Pau Espin Pedrol <pespin@sysmocom.de> | 2019-05-10 16:49:59 +0200 |
---|---|---|
committer | Pau Espin Pedrol <pespin@sysmocom.de> | 2019-05-14 11:32:33 +0200 |
commit | ca538fc5eb73f70fdfa828253767ce37666d91a2 (patch) | |
tree | e163a3068e58df2d2d2a08d2fb7ee0b52c120267 | |
parent | 6be2c49538306ffa01b7b1336a40900cd5f175d9 (diff) |
mgcp-cli: Allow submitting X-Osmux on MDCX request
Change-Id: I41243f3ed212ace6087d5b0341e3a52f4069e37d
-rw-r--r-- | src/libosmo-mgcp-client/mgcp_client_fsm.c | 5 | ||||
-rw-r--r-- | tests/mgcp_client/mgcp_client_test.c | 11 | ||||
-rw-r--r-- | tests/mgcp_client/mgcp_client_test.ok | 8 |
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: |