From 7f100c9712de5c684462e809bf31a58c0c326337 Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Thu, 23 Apr 2015 20:25:17 -0400 Subject: nat: Make mode-set patching optional --- openbsc/tests/bsc-nat/bsc_data.c | 15 +++++++++++++++ openbsc/tests/bsc-nat/bsc_nat_test.c | 3 ++- openbsc/tests/vty_test_runner.py | 17 +++++++++++++++++ 3 files changed, 34 insertions(+), 1 deletion(-) (limited to 'openbsc/tests') diff --git a/openbsc/tests/bsc-nat/bsc_data.c b/openbsc/tests/bsc-nat/bsc_data.c index d1f8ebc0d..3f1f527c0 100644 --- a/openbsc/tests/bsc-nat/bsc_data.c +++ b/openbsc/tests/bsc-nat/bsc_data.c @@ -171,6 +171,7 @@ static const char mdcx_resp_patched[] = "200 23330829\r\n\r\nv=0\r\nc=IN IP4 10. /* different line ending */ static const char mdcx_resp2[] = "200 33330829\n\nv=0\nc=IN IP4 172.16.18.2\nm=audio 4002 RTP/AVP 98\na=rtpmap:98 AMR/8000\n"; static const char mdcx_resp_patched2[] = "200 33330829\n\nv=0\nc=IN IP4 10.0.0.23\nm=audio 5555 RTP/AVP 98\na=rtpmap:98 AMR/8000\na=fmtp:98 mode-set=2\n"; +static const char mdcx_resp_patched2_noamr[] = "200 33330829\n\nv=0\nc=IN IP4 10.0.0.23\nm=audio 5555 RTP/AVP 98\na=rtpmap:98 AMR/8000\n"; struct mgcp_patch_test { const char *orig; @@ -178,6 +179,7 @@ struct mgcp_patch_test { const char *ip; const int port; const int payload_type; + const int ensure_mode_set; }; static const struct mgcp_patch_test mgcp_messages[] = { @@ -186,6 +188,7 @@ static const struct mgcp_patch_test mgcp_messages[] = { .patch = crcx_patched, .ip = "0.0.0.0", .port = 2323, + .ensure_mode_set = 1, }, { .orig = crcx_resp, @@ -193,6 +196,7 @@ static const struct mgcp_patch_test mgcp_messages[] = { .ip = "10.0.0.1", .port = 999, .payload_type = 98, + .ensure_mode_set = 1, }, { .orig = mdcx, @@ -200,6 +204,7 @@ static const struct mgcp_patch_test mgcp_messages[] = { .ip = "10.0.0.23", .port = 6666, .payload_type = 126, + .ensure_mode_set = 1, }, { .orig = mdcx_resp, @@ -207,6 +212,7 @@ static const struct mgcp_patch_test mgcp_messages[] = { .ip = "10.0.0.23", .port = 5555, .payload_type = 98, + .ensure_mode_set = 1, }, { .orig = mdcx_resp2, @@ -214,6 +220,15 @@ static const struct mgcp_patch_test mgcp_messages[] = { .ip = "10.0.0.23", .port = 5555, .payload_type = 98, + .ensure_mode_set = 1, + }, + { + .orig = mdcx_resp2, + .patch = mdcx_resp_patched2_noamr, + .ip = "10.0.0.23", + .port = 5555, + .payload_type = 98, + .ensure_mode_set = 0, }, }; diff --git a/openbsc/tests/bsc-nat/bsc_nat_test.c b/openbsc/tests/bsc-nat/bsc_nat_test.c index 245b081e1..5b01cc3cd 100644 --- a/openbsc/tests/bsc-nat/bsc_nat_test.c +++ b/openbsc/tests/bsc-nat/bsc_nat_test.c @@ -625,12 +625,13 @@ static void test_mgcp_rewrite(void) const char *ip = mgcp_messages[i].ip; const int port = mgcp_messages[i].port; const int expected_payload_type = mgcp_messages[i].payload_type; + const int ensure_mode_set = mgcp_messages[i].ensure_mode_set; int payload_type = -1; char *input = strdup(orig); output = bsc_mgcp_rewrite(input, strlen(input), 0x1e, - ip, port, -1, &payload_type); + ip, port, -1, &payload_type, ensure_mode_set); if (payload_type != -1) { fprintf(stderr, "Found media payload type %d in SDP data\n", diff --git a/openbsc/tests/vty_test_runner.py b/openbsc/tests/vty_test_runner.py index fb4ca7d1a..3581b67c9 100644 --- a/openbsc/tests/vty_test_runner.py +++ b/openbsc/tests/vty_test_runner.py @@ -588,6 +588,23 @@ class TestVTYNAT(TestVTYGenericBSC): res = self.vty.command("number-rewrite rewrite.cfg") res = self.vty.command("no number-rewrite") + def testEnsureNoEnsureModeSet(self): + self.vty.enable() + res = self.vty.command("configure terminal") + res = self.vty.command("nat") + + # Ensure the default + res = self.vty.command("show running-config") + self.assert_(res.find('\n sdp-ensure-amr-mode-set') > 0) + + self.vty.command("sdp-ensure-amr-mode-set") + res = self.vty.command("show running-config") + self.assert_(res.find('\n sdp-ensure-amr-mode-set') > 0) + + self.vty.command("no sdp-ensure-amr-mode-set") + res = self.vty.command("show running-config") + self.assert_(res.find('\n no sdp-ensure-amr-mode-set') > 0) + def testRewritePostNoRewrite(self): self.vty.enable() self.vty.command("configure terminal") -- cgit v1.2.3