<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>