<p>fixeria has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-msc/+/14552">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">libmsc/ran_msg_iu.c: fix: properly handle SAPI IE of RANAP_DirectTransfer<br><br>The RANAP DirectTransfer message may contain an optional SAPI IE.<br>Thanks to our TTCN-3 tests (and Wireshark!), it was discovered<br>that this IE is ignored, so even if the MO SMS related messages<br>arrive on SAPI 3 (as per GSM TS 04.11, section 2.3) OsmoMSC sends<br>MT messages on SAPI 0.<br><br>In ran_iu_decode_l3() we need to check if the SAPI IE is present,<br>and tag the NAS PDU message buffer with a proper DLCI value.<br><br>This change makes the failing SMS related test cases pass.<br><br>Change-Id: I728b55b04e87fc23be6d4f8735e8cad82b6f640e<br>---<br>M src/libmsc/ran_msg_iu.c<br>1 file changed, 12 insertions(+), 2 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/52/14552/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/libmsc/ran_msg_iu.c b/src/libmsc/ran_msg_iu.c</span><br><span>index f443944..d5b9143 100644</span><br><span>--- a/src/libmsc/ran_msg_iu.c</span><br><span>+++ b/src/libmsc/ran_msg_iu.c</span><br><span>@@ -37,6 +37,7 @@</span><br><span> #include <osmocom/msc/msc_common.h></span><br><span> #include <osmocom/msc/sccp_ran.h></span><br><span> #include <osmocom/msc/ran_msg_iu.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <osmocom/msc/gsm_04_11.h></span><br><span> </span><br><span> /* Implement the extern talloc_asn1_ctx from libasn1c as talloc ctx for ASN.1 message composition */</span><br><span> void *talloc_asn1_ctx = NULL;</span><br><span>@@ -92,8 +93,11 @@</span><br><span>       msgb_free(ran);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static void ran_iu_decode_l3(struct ran_dec *ran_iu_decode, const RANAP_NAS_PDU_t *nas_pdu, const char *msg_name)</span><br><span style="color: hsl(120, 100%, 40%);">+static void ran_iu_decode_l3(struct ran_dec *ran_iu_decode,</span><br><span style="color: hsl(120, 100%, 40%);">+                             const RANAP_DirectTransferIEs_t *ies,</span><br><span style="color: hsl(120, 100%, 40%);">+                         const char *msg_name)</span><br><span> {</span><br><span style="color: hsl(120, 100%, 40%);">+       const RANAP_NAS_PDU_t *nas_pdu = &ies->nas_pdu;</span><br><span>       struct msgb *ran = msgb_alloc(256, msg_name);</span><br><span>        struct ran_msg ran_dec_msg;</span><br><span> </span><br><span>@@ -101,6 +105,12 @@</span><br><span>       ran->l3h = msgb_put(ran, nas_pdu->size);</span><br><span>       memcpy(ran->l3h, nas_pdu->buf, nas_pdu->size);</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+   /* Handle optional SAPI IE */</span><br><span style="color: hsl(120, 100%, 40%);">+ if (ies->presenceMask & DIRECTTRANSFERIES_RANAP_SAPI_PRESENT) {</span><br><span style="color: hsl(120, 100%, 40%);">+                if (ies->sapi == RANAP_SAPI_sapi_3)</span><br><span style="color: hsl(120, 100%, 40%);">+                        OMSC_LINKID_CB(ran) = UM_SAPI_SMS;</span><br><span style="color: hsl(120, 100%, 40%);">+    }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>  ran_dec_msg = (struct ran_msg){</span><br><span>              .msg_type = RAN_MSG_DTAP,</span><br><span>            .msg_name = msg_name,</span><br><span>@@ -266,7 +276,7 @@</span><br><span>          return;</span><br><span> </span><br><span>  case RANAP_ProcedureCode_id_DirectTransfer:</span><br><span style="color: hsl(0, 100%, 40%);">-             ran_iu_decode_l3(ran_iu_decode, &message->msg.directTransferIEs.nas_pdu, "RANAP DirectTransfer RAN PDU");</span><br><span style="color: hsl(120, 100%, 40%);">+            ran_iu_decode_l3(ran_iu_decode, &message->msg.directTransferIEs, "RANAP DirectTransfer RAN PDU");</span><br><span>           return;</span><br><span> </span><br><span>  case RANAP_ProcedureCode_id_SecurityModeControl:</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-msc/+/14552">change 14552</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-msc/+/14552"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-msc </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I728b55b04e87fc23be6d4f8735e8cad82b6f640e </div>
<div style="display:none"> Gerrit-Change-Number: 14552 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: fixeria <axilirator@gmail.com> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>