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

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">library/MNCC_EncDec: rip out MNCC version 6 support<br><br>The latest release of osmo-sip-connector (1.5.0, 23 Feb 2021) does<br>support MNCCv7, so there is no need to maintain MNCCv6 support.<br><br>Change-Id: Ie45158e805a62e86b9496b46f323b83a74630460<br>Related: I5448ff931ec33f24f4837a51376f1703fe97683b<br>Related: OS#5282<br>---<br>M library/MNCC_EncDec.cc<br>M library/mncc.h<br>2 files changed, 37 insertions(+), 83 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/library/MNCC_EncDec.cc b/library/MNCC_EncDec.cc</span><br><span>index be5d01a..7d09d0a 100644</span><br><span>--- a/library/MNCC_EncDec.cc</span><br><span>+++ b/library/MNCC_EncDec.cc</span><br><span>@@ -9,7 +9,7 @@</span><br><span> </span><br><span> BOOLEAN set__MNCC__version(INTEGER const& version)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-        if (version != 6 && version != 7)</span><br><span style="color: hsl(120, 100%, 40%);">+     if (version != 7)</span><br><span>            return false;</span><br><span>        mncc_sock_version = version;</span><br><span>         return true;</span><br><span>@@ -195,46 +195,27 @@</span><br><span>                 ret_val = ret_val & in.u().data().data();</span><br><span>                break;</span><br><span>       case MNCC__MsgUnion::ALT_rtp:</span><br><span style="color: hsl(0, 100%, 40%);">-           switch (mncc_sock_version) {</span><br><span style="color: hsl(0, 100%, 40%);">-            case 6:</span><br><span style="color: hsl(0, 100%, 40%);">-                 struct gsm_mncc_rtp_mncc6 rtp_old;</span><br><span style="color: hsl(0, 100%, 40%);">-                      memset(&rtp_old, 0, sizeof(rtp_old));</span><br><span style="color: hsl(0, 100%, 40%);">-                       rtp_old.msg_type = in.msg__type();</span><br><span style="color: hsl(0, 100%, 40%);">-                      rtp_old.callref = in.u().rtp().callref();</span><br><span style="color: hsl(0, 100%, 40%);">-                       ttcn_buffer.put_string(in.u().rtp().ip());</span><br><span style="color: hsl(0, 100%, 40%);">-                      if (!in.u().rtp().is__ipv6()) {</span><br><span style="color: hsl(0, 100%, 40%);">-                         memcpy(&rtp_old.ip, ttcn_buffer.get_data(), sizeof(struct in_addr));</span><br><span style="color: hsl(0, 100%, 40%);">-                                rtp_old.ip = ntohl(rtp_old.ip);</span><br><span style="color: hsl(0, 100%, 40%);">-                 } /* else: ipv6 not supported in MNCCv6 */</span><br><span style="color: hsl(0, 100%, 40%);">-                      rtp_old.port = in.u().rtp().rtp__port();</span><br><span style="color: hsl(0, 100%, 40%);">-                        rtp_old.payload_type = in.u().rtp().payload__type();</span><br><span style="color: hsl(0, 100%, 40%);">-                    rtp_old.payload_msg_type = in.u().rtp().payload__msg__type();</span><br><span style="color: hsl(0, 100%, 40%);">-                   ret_val = OCTETSTRING(sizeof(rtp_old), (uint8_t *) &rtp_old);</span><br><span style="color: hsl(0, 100%, 40%);">-                       break;</span><br><span style="color: hsl(0, 100%, 40%);">-          case 7:</span><br><span style="color: hsl(0, 100%, 40%);">-                 struct gsm_mncc_rtp rtp;</span><br><span style="color: hsl(0, 100%, 40%);">-                        memset(&rtp, 0, sizeof(rtp));</span><br><span style="color: hsl(0, 100%, 40%);">-                       rtp.msg_type = in.msg__type();</span><br><span style="color: hsl(0, 100%, 40%);">-                  rtp.callref = in.u().rtp().callref();</span><br><span style="color: hsl(0, 100%, 40%);">-                   ttcn_buffer.put_string(in.u().rtp().ip());</span><br><span style="color: hsl(0, 100%, 40%);">-                      if (in.u().rtp().is__ipv6()) {</span><br><span style="color: hsl(0, 100%, 40%);">-                          // if(in.u().rtp().ip().lengthof() != 16) print error</span><br><span style="color: hsl(0, 100%, 40%);">-                           rtp.addr.ss_family = AF_INET6;</span><br><span style="color: hsl(0, 100%, 40%);">-                          memcpy(&((struct sockaddr_in6*)&rtp.addr)->sin6_addr, ttcn_buffer.get_data(),</span><br><span style="color: hsl(0, 100%, 40%);">-                                       sizeof(struct in6_addr));</span><br><span style="color: hsl(0, 100%, 40%);">-                                ((struct sockaddr_in6*)&rtp.addr)->sin6_port = htons(in.u().rtp().rtp__port());</span><br><span style="color: hsl(0, 100%, 40%);">-                  } else {</span><br><span style="color: hsl(0, 100%, 40%);">-                                // if(in.u().rtp().ip().lengthof() != 4) print error</span><br><span style="color: hsl(0, 100%, 40%);">-                            rtp.addr.ss_family = AF_INET;</span><br><span style="color: hsl(0, 100%, 40%);">-                           memcpy(&((struct sockaddr_in*)&rtp.addr)->sin_addr, ttcn_buffer.get_data(),</span><br><span style="color: hsl(0, 100%, 40%);">-                                 sizeof(struct in_addr));</span><br><span style="color: hsl(0, 100%, 40%);">-                         ((struct sockaddr_in*)&rtp.addr)->sin_port = htons(in.u().rtp().rtp__port());</span><br><span style="color: hsl(0, 100%, 40%);">-                    }</span><br><span style="color: hsl(0, 100%, 40%);">-                       rtp.payload_type = in.u().rtp().payload__type();</span><br><span style="color: hsl(0, 100%, 40%);">-                        rtp.payload_msg_type = in.u().rtp().payload__msg__type();</span><br><span style="color: hsl(0, 100%, 40%);">-                       ret_val = OCTETSTRING(sizeof(rtp), (uint8_t *) &rtp);</span><br><span style="color: hsl(0, 100%, 40%);">-                       break;</span><br><span style="color: hsl(120, 100%, 40%);">+                struct gsm_mncc_rtp rtp;</span><br><span style="color: hsl(120, 100%, 40%);">+              memset(&rtp, 0, sizeof(rtp));</span><br><span style="color: hsl(120, 100%, 40%);">+             rtp.msg_type = in.msg__type();</span><br><span style="color: hsl(120, 100%, 40%);">+                rtp.callref = in.u().rtp().callref();</span><br><span style="color: hsl(120, 100%, 40%);">+         ttcn_buffer.put_string(in.u().rtp().ip());</span><br><span style="color: hsl(120, 100%, 40%);">+            if (in.u().rtp().is__ipv6()) {</span><br><span style="color: hsl(120, 100%, 40%);">+                        // if(in.u().rtp().ip().lengthof() != 16) print error</span><br><span style="color: hsl(120, 100%, 40%);">+                 rtp.addr.ss_family = AF_INET6;</span><br><span style="color: hsl(120, 100%, 40%);">+                        memcpy(&((struct sockaddr_in6*)&rtp.addr)->sin6_addr, ttcn_buffer.get_data(),</span><br><span style="color: hsl(120, 100%, 40%);">+                             sizeof(struct in6_addr));</span><br><span style="color: hsl(120, 100%, 40%);">+                      ((struct sockaddr_in6*)&rtp.addr)->sin6_port = htons(in.u().rtp().rtp__port());</span><br><span style="color: hsl(120, 100%, 40%);">+                } else {</span><br><span style="color: hsl(120, 100%, 40%);">+                      // if(in.u().rtp().ip().lengthof() != 4) print error</span><br><span style="color: hsl(120, 100%, 40%);">+                  rtp.addr.ss_family = AF_INET;</span><br><span style="color: hsl(120, 100%, 40%);">+                 memcpy(&((struct sockaddr_in*)&rtp.addr)->sin_addr, ttcn_buffer.get_data(),</span><br><span style="color: hsl(120, 100%, 40%);">+                               sizeof(struct in_addr));</span><br><span style="color: hsl(120, 100%, 40%);">+                       ((struct sockaddr_in*)&rtp.addr)->sin_port = htons(in.u().rtp().rtp__port());</span><br><span>                 }</span><br><span style="color: hsl(120, 100%, 40%);">+             rtp.payload_type = in.u().rtp().payload__type();</span><br><span style="color: hsl(120, 100%, 40%);">+              rtp.payload_msg_type = in.u().rtp().payload__msg__type();</span><br><span style="color: hsl(120, 100%, 40%);">+             ret_val = OCTETSTRING(sizeof(rtp), (uint8_t *) &rtp);</span><br><span>            break;</span><br><span>       case MNCC__MsgUnion::ALT_hello:</span><br><span>              struct gsm_mncc_hello hello;</span><br><span>@@ -264,7 +245,6 @@</span><br><span>   const struct gsm_data_frame *in_data;</span><br><span>        MNCC__PDU__Data data;</span><br><span>        const struct gsm_mncc_rtp *in_rtp;</span><br><span style="color: hsl(0, 100%, 40%);">-      const struct gsm_mncc_rtp_mncc6 *in_rtp_old;</span><br><span>         MNCC__PDU__Rtp rtp;</span><br><span>  MNCC__MsgUnion u;</span><br><span>    bool is_ipv6;</span><br><span>@@ -303,40 +283,26 @@</span><br><span>        case MNCC_RTP_CREATE:</span><br><span>        case MNCC_RTP_CONNECT:</span><br><span>       case MNCC_RTP_FREE:</span><br><span style="color: hsl(0, 100%, 40%);">-             switch (mncc_sock_version) {</span><br><span style="color: hsl(0, 100%, 40%);">-            case 6:</span><br><span style="color: hsl(0, 100%, 40%);">-                 struct in_addr inaddr;</span><br><span style="color: hsl(0, 100%, 40%);">-                  in_rtp_old = (const struct gsm_mncc_rtp_mncc6 *) in_mncc;</span><br><span style="color: hsl(0, 100%, 40%);">-                       inaddr.s_addr = htonl(in_rtp_old->ip);</span><br><span style="color: hsl(0, 100%, 40%);">-                       ip = OCTETSTRING(sizeof(struct in_addr),</span><br><span style="color: hsl(0, 100%, 40%);">-                                        (const unsigned char*)&inaddr);</span><br><span style="color: hsl(0, 100%, 40%);">-                     rtp = MNCC__PDU__Rtp(in_rtp_old->callref, false, ip, in_rtp_old->port, in_rtp_old->payload_type,</span><br><span style="color: hsl(0, 100%, 40%);">-                                            in_rtp_old->payload_msg_type, in_rtp_old->sdp);</span><br><span style="color: hsl(0, 100%, 40%);">-                      u.rtp() = rtp;</span><br><span style="color: hsl(0, 100%, 40%);">-                  break;</span><br><span style="color: hsl(0, 100%, 40%);">-          case 7:</span><br><span style="color: hsl(0, 100%, 40%);">-                 in_rtp = (const struct gsm_mncc_rtp *) in_mncc;</span><br><span style="color: hsl(0, 100%, 40%);">-                 switch (in_rtp->addr.ss_family) {</span><br><span style="color: hsl(0, 100%, 40%);">-                    case AF_INET6:</span><br><span style="color: hsl(0, 100%, 40%);">-                          is_ipv6 = true;</span><br><span style="color: hsl(0, 100%, 40%);">-                         port = ntohs(((struct sockaddr_in6*)&in_rtp->addr)->sin6_port);</span><br><span style="color: hsl(0, 100%, 40%);">-                               ip = OCTETSTRING(sizeof(struct in6_addr),</span><br><span style="color: hsl(0, 100%, 40%);">-                                               (const unsigned char*)&((struct sockaddr_in6*)&in_rtp->addr)->sin6_addr);</span><br><span style="color: hsl(120, 100%, 40%);">+               in_rtp = (const struct gsm_mncc_rtp *) in_mncc;</span><br><span style="color: hsl(120, 100%, 40%);">+               switch (in_rtp->addr.ss_family) {</span><br><span style="color: hsl(120, 100%, 40%);">+          case AF_INET6:</span><br><span style="color: hsl(120, 100%, 40%);">+                        is_ipv6 = true;</span><br><span style="color: hsl(120, 100%, 40%);">+                       port = ntohs(((struct sockaddr_in6*)&in_rtp->addr)->sin6_port);</span><br><span style="color: hsl(120, 100%, 40%);">+                     ip = OCTETSTRING(sizeof(struct in6_addr),</span><br><span style="color: hsl(120, 100%, 40%);">+                                     (const unsigned char*)&((struct sockaddr_in6*)&in_rtp->addr)->sin6_addr);</span><br><span> </span><br><span>                  break;</span><br><span style="color: hsl(0, 100%, 40%);">-                  case AF_UNSPEC: //RTP_CREATE and RTP_FREE can contain fully zeroed addr</span><br><span style="color: hsl(0, 100%, 40%);">-                 case AF_INET:</span><br><span style="color: hsl(0, 100%, 40%);">-                           is_ipv6 = false;</span><br><span style="color: hsl(0, 100%, 40%);">-                                port = ntohs(((struct sockaddr_in*)&in_rtp->addr)->sin_port);</span><br><span style="color: hsl(0, 100%, 40%);">-                         ip = OCTETSTRING(sizeof(struct in_addr),</span><br><span style="color: hsl(0, 100%, 40%);">-                                                (const unsigned char*)&((struct sockaddr_in*)&in_rtp->addr)->sin_addr);</span><br><span style="color: hsl(0, 100%, 40%);">-                           break;</span><br><span style="color: hsl(0, 100%, 40%);">-                  }</span><br><span style="color: hsl(0, 100%, 40%);">-                       rtp = MNCC__PDU__Rtp(in_rtp->callref, is_ipv6, ip, port, in_rtp->payload_type,</span><br><span style="color: hsl(0, 100%, 40%);">-                                         in_rtp->payload_msg_type, in_rtp->sdp);</span><br><span style="color: hsl(0, 100%, 40%);">-                      u.rtp() = rtp;</span><br><span style="color: hsl(120, 100%, 40%);">+                case AF_UNSPEC: //RTP_CREATE and RTP_FREE can contain fully zeroed addr</span><br><span style="color: hsl(120, 100%, 40%);">+               case AF_INET:</span><br><span style="color: hsl(120, 100%, 40%);">+                 is_ipv6 = false;</span><br><span style="color: hsl(120, 100%, 40%);">+                      port = ntohs(((struct sockaddr_in*)&in_rtp->addr)->sin_port);</span><br><span style="color: hsl(120, 100%, 40%);">+                       ip = OCTETSTRING(sizeof(struct in_addr),</span><br><span style="color: hsl(120, 100%, 40%);">+                                      (const unsigned char*)&((struct sockaddr_in*)&in_rtp->addr)->sin_addr);</span><br><span>                        break;</span><br><span>               }</span><br><span style="color: hsl(120, 100%, 40%);">+             rtp = MNCC__PDU__Rtp(in_rtp->callref, is_ipv6, ip, port, in_rtp->payload_type,</span><br><span style="color: hsl(120, 100%, 40%);">+                               in_rtp->payload_msg_type, in_rtp->sdp);</span><br><span style="color: hsl(120, 100%, 40%);">+            u.rtp() = rtp;</span><br><span>               break;</span><br><span>       default:</span><br><span>             sign.callref() = in_mncc->callref;</span><br><span>diff --git a/library/mncc.h b/library/mncc.h</span><br><span>index a55d155..1e45c37 100644</span><br><span>--- a/library/mncc.h</span><br><span>+++ b/library/mncc.h</span><br><span>@@ -292,18 +292,6 @@</span><br><span>    uint32_t        lchan_type_offset;</span><br><span> };</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* Use this one in MNCCv6 */</span><br><span style="color: hsl(0, 100%, 40%);">-struct gsm_mncc_rtp_mncc6 {</span><br><span style="color: hsl(0, 100%, 40%);">-     uint32_t        msg_type;</span><br><span style="color: hsl(0, 100%, 40%);">-       uint32_t        callref;</span><br><span style="color: hsl(0, 100%, 40%);">-        uint32_t        ip;</span><br><span style="color: hsl(0, 100%, 40%);">-     uint16_t        port;</span><br><span style="color: hsl(0, 100%, 40%);">-   uint32_t        payload_type;</span><br><span style="color: hsl(0, 100%, 40%);">-   uint32_t        payload_msg_type;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-       char            sdp[1024];</span><br><span style="color: hsl(0, 100%, 40%);">-};</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> struct gsm_mncc_rtp {</span><br><span>        uint32_t        msg_type;</span><br><span>    uint32_t        callref;</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/25990">change 25990</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-ttcn3-hacks/+/25990"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-ttcn3-hacks </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: Ie45158e805a62e86b9496b46f323b83a74630460 </div>
<div style="display:none"> Gerrit-Change-Number: 25990 </div>
<div style="display:none"> Gerrit-PatchSet: 2 </div>
<div style="display:none"> Gerrit-Owner: fixeria <vyanitskiy@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </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>