<p>pespin <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-mgw/+/19888">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Jenkins Builder: Verified
  dexter: Looks good to me, but someone else must approve
  pespin: Looks good to me, approved
  laforge: Looks good to me, but someone else must approve

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">mgcp_client: Allow submitting and parsing IPv6 addr in SDP<br><br>Existing mgcp_client_test code required the '.' to trigger the same code<br>path, since with this commit we do extra checks and without a dot the<br>address is not accepted as IPv4 by osmo_ip_str_type().<br><br>Change-Id: I936bf57d37f5f0607dfe7fc66c37e424c3793f9b<br>---<br>M src/libosmo-mgcp-client/mgcp_client.c<br>M tests/mgcp_client/mgcp_client_test.c<br>M tests/mgcp_client/mgcp_client_test.err<br>M tests/mgcp_client/mgcp_client_test.ok<br>4 files changed, 211 insertions(+), 15 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/libosmo-mgcp-client/mgcp_client.c b/src/libosmo-mgcp-client/mgcp_client.c</span><br><span>index 146a59d..df84226 100644</span><br><span>--- a/src/libosmo-mgcp-client/mgcp_client.c</span><br><span>+++ b/src/libosmo-mgcp-client/mgcp_client.c</span><br><span>@@ -25,6 +25,7 @@</span><br><span> #include <osmocom/core/logging.h></span><br><span> #include <osmocom/core/byteswap.h></span><br><span> #include <osmocom/core/socket.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <osmocom/core/sockaddr_str.h></span><br><span> </span><br><span> #include <osmocom/mgcp_client/mgcp_client.h></span><br><span> #include <osmocom/mgcp_client/mgcp_client_internal.h></span><br><span>@@ -370,22 +371,37 @@</span><br><span> /* Parse a line like "c=IN IP4 10.11.12.13" */</span><br><span> static int mgcp_parse_audio_ip(struct mgcp_response *r, const char *line)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">- struct in_addr ip_test;</span><br><span style="color: hsl(120, 100%, 40%);">+       struct in6_addr ip_test;</span><br><span style="color: hsl(120, 100%, 40%);">+      bool is_ipv6;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-       if (strlen(line) < 16)</span><br><span style="color: hsl(120, 100%, 40%);">+     if (strncmp("c=IN IP", line, 7) != 0)</span><br><span>              goto response_parse_failure;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-    /* The current implementation strictly supports IPV4 only ! */</span><br><span style="color: hsl(0, 100%, 40%);">-  if (memcmp("c=IN IP4 ", line, 9) != 0)</span><br><span style="color: hsl(120, 100%, 40%);">+      line += 7;</span><br><span style="color: hsl(120, 100%, 40%);">+    if (*line == '6')</span><br><span style="color: hsl(120, 100%, 40%);">+             is_ipv6 = true;</span><br><span style="color: hsl(120, 100%, 40%);">+       else if (*line == '4')</span><br><span style="color: hsl(120, 100%, 40%);">+                is_ipv6 = false;</span><br><span style="color: hsl(120, 100%, 40%);">+      else</span><br><span>                 goto response_parse_failure;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-    /* Extract IP-Address */</span><br><span style="color: hsl(0, 100%, 40%);">-        osmo_strlcpy(r->audio_ip, line + 9, sizeof(r->audio_ip));</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- /* Check IP-Address */</span><br><span style="color: hsl(0, 100%, 40%);">-  if (inet_aton(r->audio_ip, &ip_test) == 0)</span><br><span style="color: hsl(120, 100%, 40%);">+     line++;</span><br><span style="color: hsl(120, 100%, 40%);">+       if (*line != ' ')</span><br><span>            goto response_parse_failure;</span><br><span style="color: hsl(120, 100%, 40%);">+  line++;</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+   /* Extract and check IP-Address */</span><br><span style="color: hsl(120, 100%, 40%);">+    if (is_ipv6) {</span><br><span style="color: hsl(120, 100%, 40%);">+                /* 45 = INET6_ADDRSTRLEN -1 */</span><br><span style="color: hsl(120, 100%, 40%);">+                if (sscanf(line, "%45s", r->audio_ip) != 1)</span><br><span style="color: hsl(120, 100%, 40%);">+                      goto response_parse_failure;</span><br><span style="color: hsl(120, 100%, 40%);">+          if (inet_pton(AF_INET6, r->audio_ip, &ip_test) != 1)</span><br><span style="color: hsl(120, 100%, 40%);">+                   goto response_parse_failure;</span><br><span style="color: hsl(120, 100%, 40%);">+  } else {</span><br><span style="color: hsl(120, 100%, 40%);">+              /* 15 = INET_ADDRSTRLEN -1 */</span><br><span style="color: hsl(120, 100%, 40%);">+         if (sscanf(line, "%15s", r->audio_ip) != 1)</span><br><span style="color: hsl(120, 100%, 40%);">+                      goto response_parse_failure;</span><br><span style="color: hsl(120, 100%, 40%);">+          if (inet_pton(AF_INET, r->audio_ip, &ip_test) != 1)</span><br><span style="color: hsl(120, 100%, 40%);">+                    goto response_parse_failure;</span><br><span style="color: hsl(120, 100%, 40%);">+  }</span><br><span>    return 0;</span><br><span> </span><br><span> response_parse_failure:</span><br><span>@@ -1122,6 +1138,7 @@</span><br><span>     unsigned int i;</span><br><span>      int rc = 0;</span><br><span>  char local_ip[INET6_ADDRSTRLEN];</span><br><span style="color: hsl(120, 100%, 40%);">+      int local_ip_family, audio_ip_family;</span><br><span>        const char *codec;</span><br><span>   unsigned int pt;</span><br><span> </span><br><span>@@ -1138,10 +1155,21 @@</span><br><span>               msgb_free(msg);</span><br><span>              return -2;</span><br><span>   }</span><br><span style="color: hsl(120, 100%, 40%);">+     local_ip_family = osmo_ip_str_type(local_ip);</span><br><span style="color: hsl(120, 100%, 40%);">+ if (local_ip_family == AF_UNSPEC) {</span><br><span style="color: hsl(120, 100%, 40%);">+           msgb_free(msg);</span><br><span style="color: hsl(120, 100%, 40%);">+               return -2;</span><br><span style="color: hsl(120, 100%, 40%);">+    }</span><br><span style="color: hsl(120, 100%, 40%);">+     audio_ip_family = osmo_ip_str_type(mgcp_msg->audio_ip);</span><br><span style="color: hsl(120, 100%, 40%);">+    if (audio_ip_family == AF_UNSPEC) {</span><br><span style="color: hsl(120, 100%, 40%);">+           msgb_free(msg);</span><br><span style="color: hsl(120, 100%, 40%);">+               return -2;</span><br><span style="color: hsl(120, 100%, 40%);">+    }</span><br><span> </span><br><span>        /* Add owner/creator (SDP) */</span><br><span style="color: hsl(0, 100%, 40%);">-   rc += msgb_printf(msg, "o=- %x 23 IN IP4 %s\r\n",</span><br><span style="color: hsl(0, 100%, 40%);">-                       mgcp_msg->call_id, local_ip);</span><br><span style="color: hsl(120, 100%, 40%);">+    rc += msgb_printf(msg, "o=- %x 23 IN IP%c %s\r\n", mgcp_msg->call_id,</span><br><span style="color: hsl(120, 100%, 40%);">+                      local_ip_family == AF_INET6 ? '6' : '4',</span><br><span style="color: hsl(120, 100%, 40%);">+                      local_ip);</span><br><span> </span><br><span>     /* Add session name (none) */</span><br><span>        rc += msgb_printf(msg, "s=-\r\n");</span><br><span>@@ -1159,7 +1187,9 @@</span><br><span>                 msgb_free(msg);</span><br><span>              return -2;</span><br><span>   }</span><br><span style="color: hsl(0, 100%, 40%);">-       rc += msgb_printf(msg, "c=IN IP4 %s\r\n", mgcp_msg->audio_ip);</span><br><span style="color: hsl(120, 100%, 40%);">+   rc += msgb_printf(msg, "c=IN IP%c %s\r\n",</span><br><span style="color: hsl(120, 100%, 40%);">+                    audio_ip_family == AF_INET6 ? '6' : '4',</span><br><span style="color: hsl(120, 100%, 40%);">+                      mgcp_msg->audio_ip);</span><br><span> </span><br><span>        /* Add time description, active time (SDP) */</span><br><span>        rc += msgb_printf(msg, "t=0 0\r\n");</span><br><span>diff --git a/tests/mgcp_client/mgcp_client_test.c b/tests/mgcp_client/mgcp_client_test.c</span><br><span>index db9f4f8..e2e8bf8 100644</span><br><span>--- a/tests/mgcp_client/mgcp_client_test.c</span><br><span>+++ b/tests/mgcp_client/mgcp_client_test.c</span><br><span>@@ -294,11 +294,23 @@</span><br><span>       MGCP_MSG_PRESENCE_CONN_ID | MGCP_MSG_PRESENCE_CONN_MODE |</span><br><span>            MGCP_MSG_PRESENCE_AUDIO_IP | MGCP_MSG_PRESENCE_AUDIO_PORT);</span><br><span>     memset(audio_ip_overflow, 'X', sizeof(audio_ip_overflow));</span><br><span style="color: hsl(120, 100%, 40%);">+    audio_ip_overflow[1] = '.';</span><br><span>  audio_ip_overflow[sizeof(audio_ip_overflow) - 1] = '\0';</span><br><span>     mgcp_msg.audio_ip = audio_ip_overflow;</span><br><span>       msg = mgcp_msg_gen(mgcp, &mgcp_msg);</span><br><span>     OSMO_ASSERT(msg == NULL);</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ printf("IPv6 test:\n");</span><br><span style="color: hsl(120, 100%, 40%);">+     mgcp_msg.verb = MGCP_VERB_MDCX;</span><br><span style="color: hsl(120, 100%, 40%);">+       mgcp_msg.presence =</span><br><span style="color: hsl(120, 100%, 40%);">+       (MGCP_MSG_PRESENCE_ENDPOINT | MGCP_MSG_PRESENCE_CALL_ID |</span><br><span style="color: hsl(120, 100%, 40%);">+      MGCP_MSG_PRESENCE_CONN_ID | MGCP_MSG_PRESENCE_CONN_MODE |</span><br><span style="color: hsl(120, 100%, 40%);">+             MGCP_MSG_PRESENCE_AUDIO_IP | MGCP_MSG_PRESENCE_AUDIO_PORT);</span><br><span style="color: hsl(120, 100%, 40%);">+      mgcp_msg.audio_ip = "2001:db8:1::ab9:c0a8:102";</span><br><span style="color: hsl(120, 100%, 40%);">+     mgcp->actual.remote_addr = "::1";</span><br><span style="color: hsl(120, 100%, 40%);">+        msg = mgcp_msg_gen(mgcp, &mgcp_msg);</span><br><span style="color: hsl(120, 100%, 40%);">+      printf("%s\n", (char *)msg->data);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>    printf("\n");</span><br><span>      msgb_free(msg);</span><br><span> }</span><br><span>@@ -413,6 +425,66 @@</span><br><span>                  "m=audio 23\r\n",</span><br><span>          .expect_rc = 0,</span><br><span>      },</span><br><span style="color: hsl(120, 100%, 40%);">+    {</span><br><span style="color: hsl(120, 100%, 40%);">+             .body = "some mgcp header data\r\nand header params"</span><br><span style="color: hsl(120, 100%, 40%);">+                        "\r\n\r\n"</span><br><span style="color: hsl(120, 100%, 40%);">+                  "c=IN IP4 1.2.3.4\r\n",</span><br><span style="color: hsl(120, 100%, 40%);">+             .expect_params = {</span><br><span style="color: hsl(120, 100%, 40%);">+                    .audio_ip = "1.2.3.4",</span><br><span style="color: hsl(120, 100%, 40%);">+              },</span><br><span style="color: hsl(120, 100%, 40%);">+            .expect_rc = 0,</span><br><span style="color: hsl(120, 100%, 40%);">+       },</span><br><span style="color: hsl(120, 100%, 40%);">+    {</span><br><span style="color: hsl(120, 100%, 40%);">+             .body = "some mgcp header data\r\nand header params"</span><br><span style="color: hsl(120, 100%, 40%);">+                        "\r\n\r\n"</span><br><span style="color: hsl(120, 100%, 40%);">+                  "c=IN IP6 2001:db8:1::ab9:c0a8:102\r\n",</span><br><span style="color: hsl(120, 100%, 40%);">+            .expect_params = {</span><br><span style="color: hsl(120, 100%, 40%);">+                    .audio_ip = "2001:db8:1::ab9:c0a8:102",</span><br><span style="color: hsl(120, 100%, 40%);">+             },</span><br><span style="color: hsl(120, 100%, 40%);">+            .expect_rc = 0,</span><br><span style="color: hsl(120, 100%, 40%);">+       },</span><br><span style="color: hsl(120, 100%, 40%);">+    {</span><br><span style="color: hsl(120, 100%, 40%);">+             .body = "some mgcp header data\r\nand header params"</span><br><span style="color: hsl(120, 100%, 40%);">+                        "\r\n\r\n"</span><br><span style="color: hsl(120, 100%, 40%);">+                  "c=IN IP6 1.2.3.4\r\n",</span><br><span style="color: hsl(120, 100%, 40%);">+             .expect_rc = -22,</span><br><span style="color: hsl(120, 100%, 40%);">+     },</span><br><span style="color: hsl(120, 100%, 40%);">+    {</span><br><span style="color: hsl(120, 100%, 40%);">+             .body = "some mgcp header data\r\nand header params"</span><br><span style="color: hsl(120, 100%, 40%);">+                        "\r\n\r\n"</span><br><span style="color: hsl(120, 100%, 40%);">+                  "c=IN IP4 ::1\r\n",</span><br><span style="color: hsl(120, 100%, 40%);">+         .expect_rc = -22,</span><br><span style="color: hsl(120, 100%, 40%);">+     },</span><br><span style="color: hsl(120, 100%, 40%);">+    {</span><br><span style="color: hsl(120, 100%, 40%);">+             .body = "some mgcp header data\r\nand header params"</span><br><span style="color: hsl(120, 100%, 40%);">+                        "\r\n\r\n"</span><br><span style="color: hsl(120, 100%, 40%);">+                  "c=IN IP4 notanip\r\n",</span><br><span style="color: hsl(120, 100%, 40%);">+             .expect_rc = -22,</span><br><span style="color: hsl(120, 100%, 40%);">+     },</span><br><span style="color: hsl(120, 100%, 40%);">+    {</span><br><span style="color: hsl(120, 100%, 40%);">+             .body = "some mgcp header data\r\nand header params"</span><br><span style="color: hsl(120, 100%, 40%);">+                        "\r\n\r\n"</span><br><span style="color: hsl(120, 100%, 40%);">+                  "c=IN IP4 1.2.3.4.5.6\r\n",</span><br><span style="color: hsl(120, 100%, 40%);">+         .expect_rc = -22,</span><br><span style="color: hsl(120, 100%, 40%);">+     },</span><br><span style="color: hsl(120, 100%, 40%);">+    {</span><br><span style="color: hsl(120, 100%, 40%);">+             .body = "some mgcp header data\r\nand header params"</span><br><span style="color: hsl(120, 100%, 40%);">+                        "\r\n\r\n"</span><br><span style="color: hsl(120, 100%, 40%);">+                  "c=IN IP4 1.2 .3\r\n",</span><br><span style="color: hsl(120, 100%, 40%);">+              .expect_rc = -22,</span><br><span style="color: hsl(120, 100%, 40%);">+     },</span><br><span style="color: hsl(120, 100%, 40%);">+    {</span><br><span style="color: hsl(120, 100%, 40%);">+             .body = "some mgcp header data\r\nand header params"</span><br><span style="color: hsl(120, 100%, 40%);">+                        "\r\n\r\n"</span><br><span style="color: hsl(120, 100%, 40%);">+                  "c=IN IP4 1.2 .3\r\n",</span><br><span style="color: hsl(120, 100%, 40%);">+              .expect_rc = -22,</span><br><span style="color: hsl(120, 100%, 40%);">+     },</span><br><span style="color: hsl(120, 100%, 40%);">+    {</span><br><span style="color: hsl(120, 100%, 40%);">+             .body = "some mgcp header data\r\nand header params"</span><br><span style="color: hsl(120, 100%, 40%);">+                        "\r\n\r\n"</span><br><span style="color: hsl(120, 100%, 40%);">+                  "c=IN IP4 \r\n",</span><br><span style="color: hsl(120, 100%, 40%);">+            .expect_rc = -22,</span><br><span style="color: hsl(120, 100%, 40%);">+     },</span><br><span> };</span><br><span> </span><br><span> void test_sdp_section_start()</span><br><span>@@ -443,7 +515,12 @@</span><br><span>                         continue;</span><br><span>            }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-           fprintf(stderr, "got audio_port=%u\n", t->expect_params.audio_port);</span><br><span style="color: hsl(120, 100%, 40%);">+             fprintf(stderr, "got audio_ip=\"%s\"\n", r->audio_ip);</span><br><span style="color: hsl(120, 100%, 40%);">+         if (strcmp(r->audio_ip, t->expect_params.audio_ip)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                   fprintf(stderr, "FAIL: Expected audio_ip=\"%s\"\n", t->expect_params.audio_ip);</span><br><span style="color: hsl(120, 100%, 40%);">+                        failures++;</span><br><span style="color: hsl(120, 100%, 40%);">+           }</span><br><span style="color: hsl(120, 100%, 40%);">+             fprintf(stderr, "got audio_port=%u\n", r->audio_port);</span><br><span>          if (r->audio_port != t->expect_params.audio_port) {</span><br><span>                    fprintf(stderr, "FAIL: Expected audio_port=%u\n", t->expect_params.audio_port);</span><br><span>                         failures++;</span><br><span>diff --git a/tests/mgcp_client/mgcp_client_test.err b/tests/mgcp_client/mgcp_client_test.err</span><br><span>index e114f79..ac13f03 100644</span><br><span>--- a/tests/mgcp_client/mgcp_client_test.err</span><br><span>+++ b/tests/mgcp_client/mgcp_client_test.err</span><br><span>@@ -19,55 +19,112 @@</span><br><span> body: ""</span><br><span> DLMGCP MGCP response contains no SDP parameters</span><br><span> got rc=0</span><br><span style="color: hsl(120, 100%, 40%);">+got audio_ip=""</span><br><span> got audio_port=0</span><br><span> </span><br><span> test_sdp_section_start() test [1]:</span><br><span> body: "\n\n"</span><br><span> got rc=0</span><br><span style="color: hsl(120, 100%, 40%);">+got audio_ip=""</span><br><span> got audio_port=0</span><br><span> </span><br><span> test_sdp_section_start() test [2]:</span><br><span> body: "\r\n\r\n"</span><br><span> got rc=0</span><br><span style="color: hsl(120, 100%, 40%);">+got audio_ip=""</span><br><span> got audio_port=0</span><br><span> </span><br><span> test_sdp_section_start() test [3]:</span><br><span> body: "\n\r\n\r"</span><br><span> got rc=0</span><br><span style="color: hsl(120, 100%, 40%);">+got audio_ip=""</span><br><span> got audio_port=0</span><br><span> </span><br><span> test_sdp_section_start() test [4]:</span><br><span> body: "some mgcp header data\r\nand header params\n\nm=audio 23\r\n"</span><br><span> got rc=0</span><br><span style="color: hsl(120, 100%, 40%);">+got audio_ip=""</span><br><span> got audio_port=23</span><br><span> </span><br><span> test_sdp_section_start() test [5]:</span><br><span> body: "some mgcp header data\r\nand header params\r\n\r\nm=audio 23\r\n"</span><br><span> got rc=0</span><br><span style="color: hsl(120, 100%, 40%);">+got audio_ip=""</span><br><span> got audio_port=23</span><br><span> </span><br><span> test_sdp_section_start() test [6]:</span><br><span> body: "some mgcp header data\r\nand header params\n\r\n\rm=audio 23\r\n"</span><br><span> got rc=0</span><br><span style="color: hsl(120, 100%, 40%);">+got audio_ip=""</span><br><span> got audio_port=23</span><br><span> </span><br><span> test_sdp_section_start() test [7]:</span><br><span> body: "some mgcp header data\r\nand header params\n\r\nm=audio 23\r\n"</span><br><span> DLMGCP MGCP response contains no SDP parameters</span><br><span> got rc=0</span><br><span style="color: hsl(120, 100%, 40%);">+got audio_ip=""</span><br><span> got audio_port=0</span><br><span> </span><br><span> test_sdp_section_start() test [8]:</span><br><span> body: "some mgcp header data\r\nand header params\r\n\rm=audio 23\r\n"</span><br><span> DLMGCP MGCP response contains no SDP parameters</span><br><span> got rc=0</span><br><span style="color: hsl(120, 100%, 40%);">+got audio_ip=""</span><br><span> got audio_port=0</span><br><span> </span><br><span> test_sdp_section_start() test [9]:</span><br><span> body: "some mgcp header data\r\nand header params\n\r\rm=audio 23\r\n"</span><br><span> DLMGCP MGCP response contains no SDP parameters</span><br><span> got rc=0</span><br><span style="color: hsl(120, 100%, 40%);">+got audio_ip=""</span><br><span> got audio_port=0</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+test_sdp_section_start() test [10]:</span><br><span style="color: hsl(120, 100%, 40%);">+body: "some mgcp header data\r\nand header params\r\n\r\nc=IN IP4 1.2.3.4\r\n"</span><br><span style="color: hsl(120, 100%, 40%);">+got rc=0</span><br><span style="color: hsl(120, 100%, 40%);">+got audio_ip="1.2.3.4"</span><br><span style="color: hsl(120, 100%, 40%);">+got audio_port=0</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+test_sdp_section_start() test [11]:</span><br><span style="color: hsl(120, 100%, 40%);">+body: "some mgcp header data\r\nand header params\r\n\r\nc=IN IP6 2001:db8:1::ab9:c0a8:102\r\n"</span><br><span style="color: hsl(120, 100%, 40%);">+got rc=0</span><br><span style="color: hsl(120, 100%, 40%);">+got audio_ip="2001:db8:1::ab9:c0a8:102"</span><br><span style="color: hsl(120, 100%, 40%);">+got audio_port=0</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+test_sdp_section_start() test [12]:</span><br><span style="color: hsl(120, 100%, 40%);">+body: "some mgcp header data\r\nand header params\r\n\r\nc=IN IP6 1.2.3.4\r\n"</span><br><span style="color: hsl(120, 100%, 40%);">+DLMGCP Failed to parse MGCP response header (audio ip)</span><br><span style="color: hsl(120, 100%, 40%);">+got rc=-22</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+test_sdp_section_start() test [13]:</span><br><span style="color: hsl(120, 100%, 40%);">+body: "some mgcp header data\r\nand header params\r\n\r\nc=IN IP4 ::1\r\n"</span><br><span style="color: hsl(120, 100%, 40%);">+DLMGCP Failed to parse MGCP response header (audio ip)</span><br><span style="color: hsl(120, 100%, 40%);">+got rc=-22</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+test_sdp_section_start() test [14]:</span><br><span style="color: hsl(120, 100%, 40%);">+body: "some mgcp header data\r\nand header params\r\n\r\nc=IN IP4 notanip\r\n"</span><br><span style="color: hsl(120, 100%, 40%);">+DLMGCP Failed to parse MGCP response header (audio ip)</span><br><span style="color: hsl(120, 100%, 40%);">+got rc=-22</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+test_sdp_section_start() test [15]:</span><br><span style="color: hsl(120, 100%, 40%);">+body: "some mgcp header data\r\nand header params\r\n\r\nc=IN IP4 1.2.3.4.5.6\r\n"</span><br><span style="color: hsl(120, 100%, 40%);">+DLMGCP Failed to parse MGCP response header (audio ip)</span><br><span style="color: hsl(120, 100%, 40%);">+got rc=-22</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+test_sdp_section_start() test [16]:</span><br><span style="color: hsl(120, 100%, 40%);">+body: "some mgcp header data\r\nand header params\r\n\r\nc=IN IP4 1.2 .3\r\n"</span><br><span style="color: hsl(120, 100%, 40%);">+DLMGCP Failed to parse MGCP response header (audio ip)</span><br><span style="color: hsl(120, 100%, 40%);">+got rc=-22</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+test_sdp_section_start() test [17]:</span><br><span style="color: hsl(120, 100%, 40%);">+body: "some mgcp header data\r\nand header params\r\n\r\nc=IN IP4 1.2 .3\r\n"</span><br><span style="color: hsl(120, 100%, 40%);">+DLMGCP Failed to parse MGCP response header (audio ip)</span><br><span style="color: hsl(120, 100%, 40%);">+got rc=-22</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+test_sdp_section_start() test [18]:</span><br><span style="color: hsl(120, 100%, 40%);">+body: "some mgcp header data\r\nand header params\r\n\r\nc=IN IP4 \r\n"</span><br><span style="color: hsl(120, 100%, 40%);">+DLMGCP Failed to parse MGCP response header (audio ip)</span><br><span style="color: hsl(120, 100%, 40%);">+got rc=-22</span><br><span> DLMGCP ptmap contains illegal mapping: codec=113 maps to pt=2</span><br><span> DLMGCP ptmap contains illegal mapping: codec=0 maps to pt=100</span><br><span> DLMGCP ptmap contains illegal mapping: codec=113 maps to pt=2</span><br><span>diff --git a/tests/mgcp_client/mgcp_client_test.ok b/tests/mgcp_client/mgcp_client_test.ok</span><br><span>index 2b03ba1..039fbd9 100644</span><br><span>--- a/tests/mgcp_client/mgcp_client_test.ok</span><br><span>+++ b/tests/mgcp_client/mgcp_client_test.ok</span><br><span>@@ -109,6 +109,20 @@</span><br><span> X-Osmux: 2 </span><br><span> </span><br><span> Overfolow test:</span><br><span style="color: hsl(120, 100%, 40%);">+IPv6 test:</span><br><span style="color: hsl(120, 100%, 40%);">+MDCX 19 23@mgw MGCP 1.0 </span><br><span style="color: hsl(120, 100%, 40%);">+C: 2f </span><br><span style="color: hsl(120, 100%, 40%);">+I: 11 </span><br><span style="color: hsl(120, 100%, 40%);">+M: sendrecv </span><br><span style="color: hsl(120, 100%, 40%);">+ </span><br><span style="color: hsl(120, 100%, 40%);">+v=0 </span><br><span style="color: hsl(120, 100%, 40%);">+o=- 2f 23 IN IP6 ::1 </span><br><span style="color: hsl(120, 100%, 40%);">+s=- </span><br><span style="color: hsl(120, 100%, 40%);">+c=IN IP6 2001:db8:1::ab9:c0a8:102 </span><br><span style="color: hsl(120, 100%, 40%);">+t=0 0 </span><br><span style="color: hsl(120, 100%, 40%);">+m=audio 1234 RTP/AVP 3 </span><br><span style="color: hsl(120, 100%, 40%);">+a=ptime:20 </span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> </span><br><span> </span><br><span> test_mgcp_client_cancel():</span><br><span>@@ -149,6 +163,24 @@</span><br><span> test_sdp_section_start() test [8]:</span><br><span> </span><br><span> test_sdp_section_start() test [9]:</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+test_sdp_section_start() test [10]:</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+test_sdp_section_start() test [11]:</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+test_sdp_section_start() test [12]:</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+test_sdp_section_start() test [13]:</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+test_sdp_section_start() test [14]:</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+test_sdp_section_start() test [15]:</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+test_sdp_section_start() test [16]:</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+test_sdp_section_start() test [17]:</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+test_sdp_section_start() test [18]:</span><br><span>  110 => 96</span><br><span>  111 => 97</span><br><span>  112 => 98</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-mgw/+/19888">change 19888</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/osmo-mgw/+/19888"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-mgw </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I936bf57d37f5f0607dfe7fc66c37e424c3793f9b </div>
<div style="display:none"> Gerrit-Change-Number: 19888 </div>
<div style="display:none"> Gerrit-PatchSet: 6 </div>
<div style="display:none"> Gerrit-Owner: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-Assignee: dexter <pmaier@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: dexter <pmaier@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>