<p>Neels Hofmeyr has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/13585">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">fix inter-BSC-HO-incoming for AoIP (2/2)<br><br>For AoIP, the AoIP Transport Layer Address IE must be included in the Handover<br>Request Acknowledge message, so the MSC can send RTP to the right place. Add<br>this IE for AoIP.<br><br>Depends: Ia71542ea37d4fd2c9fb9b40357db7aeb111ec576 (libosmocore)<br>Depends: Id617265337f09dfb6ddfe111ef5e578cd3dc9f63 (libosmocore)<br>Change-Id: Ia05e37da125eb6e7b7be9b974b73261bd72de1f4<br>---<br>M src/osmo-bsc/osmo_bsc_bssap.c<br>1 file changed, 32 insertions(+), 6 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/85/13585/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/osmo-bsc/osmo_bsc_bssap.c b/src/osmo-bsc/osmo_bsc_bssap.c</span><br><span>index 65618fd..4849b1d 100644</span><br><span>--- a/src/osmo-bsc/osmo_bsc_bssap.c</span><br><span>+++ b/src/osmo-bsc/osmo_bsc_bssap.c</span><br><span>@@ -40,8 +40,10 @@</span><br><span> #include <osmocom/bsc/osmo_bsc_lcls.h></span><br><span> #include <osmocom/bsc/a_reset.h></span><br><span> #include <osmocom/bsc/handover.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <osmocom/bsc/mgw_endpoint_fsm.h></span><br><span> #include <osmocom/core/fsm.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> #define IP_V4_ADDR_LEN 4</span><br><span> </span><br><span>@@ -1185,14 +1187,38 @@</span><br><span> {</span><br><span>    struct msgb *msg;</span><br><span>    struct gsm_lchan *new_lchan = conn->ho.new_lchan;</span><br><span style="color: hsl(120, 100%, 40%);">+  struct sockaddr_storage ss;</span><br><span style="color: hsl(120, 100%, 40%);">+   struct gsm0808_handover_request_ack params = {</span><br><span style="color: hsl(120, 100%, 40%);">+                .l3_info = rr_ho_command->data,</span><br><span style="color: hsl(120, 100%, 40%);">+            .l3_info_len = rr_ho_command->len,</span><br><span style="color: hsl(120, 100%, 40%);">+         .chosen_channel_present = true,</span><br><span style="color: hsl(120, 100%, 40%);">+               .chosen_channel = gsm0808_chosen_channel(new_lchan->type, new_lchan->tch_mode),</span><br><span style="color: hsl(120, 100%, 40%);">+         .chosen_encr_alg = new_lchan->encr.alg_id,</span><br><span style="color: hsl(120, 100%, 40%);">+         .chosen_speech_version = gsm0808_permitted_speech(new_lchan->type, new_lchan->tch_mode),</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%);">+  if (gscon_is_aoip(conn)) {</span><br><span style="color: hsl(120, 100%, 40%);">+            struct osmo_sockaddr_str to_msc_rtp;</span><br><span style="color: hsl(120, 100%, 40%);">+          const struct mgcp_conn_peer *rtp_info = mgwep_ci_get_rtp_info(conn->user_plane.mgw_endpoint_ci_msc);</span><br><span style="color: hsl(120, 100%, 40%);">+               if (!rtp_info) {</span><br><span style="color: hsl(120, 100%, 40%);">+                      LOG_HO(conn, LOGL_ERROR,</span><br><span style="color: hsl(120, 100%, 40%);">+                             "Handover Request Acknowledge: no RTP address known to send as"</span><br><span style="color: hsl(120, 100%, 40%);">+                             " AoIP Transport Layer Address\n");</span><br><span style="color: hsl(120, 100%, 40%);">+                  return -EINVAL;</span><br><span style="color: hsl(120, 100%, 40%);">+               }</span><br><span style="color: hsl(120, 100%, 40%);">+             if (osmo_sockaddr_str_from_str(&to_msc_rtp, rtp_info->addr, rtp_info->port)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                      LOG_HO(conn, LOGL_ERROR, "Handover Request Acknowledge: cannot encode AoIP Transport Layer\n");</span><br><span style="color: hsl(120, 100%, 40%);">+                     return -EINVAL;</span><br><span style="color: hsl(120, 100%, 40%);">+               }</span><br><span style="color: hsl(120, 100%, 40%);">+             if (osmo_sockaddr_str_to_sockaddr(&to_msc_rtp, &ss)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                        LOG_HO(conn, LOGL_ERROR, "Handover Request Acknowledge: cannot encode AoIP Transport Layer\n");</span><br><span style="color: hsl(120, 100%, 40%);">+                     return -EINVAL;</span><br><span style="color: hsl(120, 100%, 40%);">+               }</span><br><span style="color: hsl(120, 100%, 40%);">+             params.aoip_transport_layer = &ss;</span><br><span style="color: hsl(120, 100%, 40%);">+        }</span><br><span> </span><br><span>        LOG_HO(conn, LOGL_DEBUG, "Sending BSSMAP Handover Request Acknowledge\n");</span><br><span style="color: hsl(0, 100%, 40%);">-    msg = gsm0808_create_handover_request_ack(rr_ho_command->data, rr_ho_command->len,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                  gsm0808_chosen_channel(new_lchan->type,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                                     new_lchan->tch_mode),</span><br><span style="color: hsl(0, 100%, 40%);">-                                                 new_lchan->encr.alg_id,</span><br><span style="color: hsl(0, 100%, 40%);">-                                              gsm0808_permitted_speech(new_lchan->type,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                                     new_lchan->tch_mode));</span><br><span style="color: hsl(120, 100%, 40%);">+  msg = gsm0808_create_handover_request_ack2(&params);</span><br><span>     msgb_free(rr_ho_command);</span><br><span>    if (!msg)</span><br><span>            return -ENOMEM;</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/13585">change 13585</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/13585"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-bsc </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: Ia05e37da125eb6e7b7be9b974b73261bd72de1f4 </div>
<div style="display:none"> Gerrit-Change-Number: 13585 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Neels Hofmeyr <nhofmeyr@sysmocom.de> </div>