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

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">BSSMAP: decode Codec List (BSS Supported)<br><br>Actually decode the Codec List (BSS Supported) in BSSMAP, in both the Complete<br>Layer 3 Information and the Assignment Complete messages.<br><br>An upcoming patch improves codec negotiation and requires the BSS supported<br>codecs, which are so far ignored (which is/was a pity as osmo-bsc goes at great<br>lengths to compose those IEs).<br><br>Change-Id: I66c735c79e982388f06b5de783aa584c9d13569e<br>---<br>M include/osmocom/msc/ran_msg.h<br>M src/libmsc/ran_msg_a.c<br>2 files changed, 32 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/include/osmocom/msc/ran_msg.h b/include/osmocom/msc/ran_msg.h</span><br><span>index 081c7ad..1b0e2e8 100644</span><br><span>--- a/include/osmocom/msc/ran_msg.h</span><br><span>+++ b/include/osmocom/msc/ran_msg.h</span><br><span>@@ -192,6 +192,7 @@</span><br><span>    union {</span><br><span>              struct {</span><br><span>                     const struct gsm0808_cell_id *cell_id;</span><br><span style="color: hsl(120, 100%, 40%);">+                        const struct gsm0808_speech_codec_list *codec_list_bss_supported;</span><br><span>                    struct msgb *msg;</span><br><span>            } compl_l3;</span><br><span>          struct msgb *dtap;</span><br><span>@@ -226,6 +227,7 @@</span><br><span>                     struct osmo_sockaddr_str remote_rtp;</span><br><span>                         bool codec_present;</span><br><span>                  enum mgcp_codecs codec;</span><br><span style="color: hsl(120, 100%, 40%);">+                       const struct gsm0808_speech_codec_list *codec_list_bss_supported;</span><br><span>                    bool osmux_present;</span><br><span>                  uint8_t osmux_cid;</span><br><span>           } assignment_complete;</span><br><span>diff --git a/src/libmsc/ran_msg_a.c b/src/libmsc/ran_msg_a.c</span><br><span>index fc9a9d7..59789b0 100644</span><br><span>--- a/src/libmsc/ran_msg_a.c</span><br><span>+++ b/src/libmsc/ran_msg_a.c</span><br><span>@@ -52,6 +52,8 @@</span><br><span>      struct gsm0808_cell_id cell_id;</span><br><span>      struct tlv_p_entry *ie_cell_id = TLVP_GET(tp, GSM0808_IE_CELL_IDENTIFIER);</span><br><span>   struct tlv_p_entry *ie_l3_info = TLVP_GET(tp, GSM0808_IE_LAYER_3_INFORMATION);</span><br><span style="color: hsl(120, 100%, 40%);">+        struct tlv_p_entry *ie_codec_list_bss_supported = TLVP_GET(tp, GSM0808_IE_SPEECH_CODEC_LIST);</span><br><span style="color: hsl(120, 100%, 40%);">+ struct gsm0808_speech_codec_list codec_list_bss_supported;</span><br><span>   struct ran_msg ran_dec_msg = {</span><br><span>               .msg_type = RAN_MSG_COMPL_L3,</span><br><span>                .msg_name = "BSSMAP Complete Layer 3 Information",</span><br><span>@@ -114,6 +116,19 @@</span><br><span>          return -ENODATA;</span><br><span>     }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ /* Decode Codec List (BSS Supported) */</span><br><span style="color: hsl(120, 100%, 40%);">+       if (ie_codec_list_bss_supported) {</span><br><span style="color: hsl(120, 100%, 40%);">+            rc = gsm0808_dec_speech_codec_list(&codec_list_bss_supported,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                ie_codec_list_bss_supported->val, ie_codec_list_bss_supported->len);</span><br><span style="color: hsl(120, 100%, 40%);">+         if (rc < 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+                      LOG_RAN_A_DEC_MSG(LOGL_ERROR,</span><br><span style="color: hsl(120, 100%, 40%);">+                                   "Complete Layer 3 Information: unable to decode IE Codec List (BSS Supported)"</span><br><span style="color: hsl(120, 100%, 40%);">+                                      " (rc=%d), continuing anyway\n", rc);</span><br><span style="color: hsl(120, 100%, 40%);">+                     /* This IE is not critical, do not abort with error. */</span><br><span style="color: hsl(120, 100%, 40%);">+               } else</span><br><span style="color: hsl(120, 100%, 40%);">+                        ran_dec_msg.compl_l3.codec_list_bss_supported = &codec_list_bss_supported;</span><br><span style="color: hsl(120, 100%, 40%);">+        }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>  return ran_decoded(ran_dec, &ran_dec_msg);</span><br><span> }</span><br><span> </span><br><span>@@ -261,10 +276,12 @@</span><br><span> {</span><br><span>         struct tlv_p_entry *ie_aoip_transp_addr = TLVP_GET(tp, GSM0808_IE_AOIP_TRASP_ADDR);</span><br><span>  struct tlv_p_entry *ie_speech_codec = TLVP_GET(tp, GSM0808_IE_SPEECH_CODEC);</span><br><span style="color: hsl(120, 100%, 40%);">+  struct tlv_p_entry *ie_codec_list_bss_supported = TLVP_GET(tp, GSM0808_IE_SPEECH_CODEC_LIST);</span><br><span>        struct tlv_p_entry *ie_osmux_cid = TLVP_GET(tp, GSM0808_IE_OSMO_OSMUX_CID);</span><br><span>  struct sockaddr_storage rtp_addr;</span><br><span>    struct sockaddr_in *rtp_addr_in;</span><br><span>     struct gsm0808_speech_codec sc;</span><br><span style="color: hsl(120, 100%, 40%);">+       struct gsm0808_speech_codec_list codec_list_bss_supported;</span><br><span>   int rc;</span><br><span>      struct ran_msg ran_dec_msg = {</span><br><span>               .msg_type = RAN_MSG_ASSIGNMENT_COMPLETE,</span><br><span>@@ -314,6 +331,19 @@</span><br><span>              ran_dec_msg.assignment_complete.codec = ran_a_mgcp_codec_from_sc(&sc);</span><br><span>   }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ if (ie_codec_list_bss_supported) {</span><br><span style="color: hsl(120, 100%, 40%);">+            /* Decode Codec List (BSS Supported) */</span><br><span style="color: hsl(120, 100%, 40%);">+               rc = gsm0808_dec_speech_codec_list(&codec_list_bss_supported,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                ie_codec_list_bss_supported->val, ie_codec_list_bss_supported->len);</span><br><span style="color: hsl(120, 100%, 40%);">+         if (rc < 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+                      LOG_RAN_A_DEC_MSG(LOGL_ERROR,</span><br><span style="color: hsl(120, 100%, 40%);">+                                   "Assignment Complete: unable to decode IE Codec List (BSS Supported)"</span><br><span style="color: hsl(120, 100%, 40%);">+                                       " (rc=%d), continuing anyway\n", rc);</span><br><span style="color: hsl(120, 100%, 40%);">+                     /* This IE is not critical, do not abort with error. */</span><br><span style="color: hsl(120, 100%, 40%);">+               } else</span><br><span style="color: hsl(120, 100%, 40%);">+                        ran_dec_msg.assignment_complete.codec_list_bss_supported = &codec_list_bss_supported;</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>  return ran_decoded(ran_dec, &ran_dec_msg);</span><br><span> }</span><br><span> </span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-msc/+/15946">change 15946</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/+/15946"/><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: I66c735c79e982388f06b5de783aa584c9d13569e </div>
<div style="display:none"> Gerrit-Change-Number: 15946 </div>
<div style="display:none"> Gerrit-PatchSet: 2 </div>
<div style="display:none"> Gerrit-Owner: neels <nhofmeyr@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: neels <nhofmeyr@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>