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

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">gsup: Introduce OSMO_GSUP_NUM_VECTORS_REQ_IE<br><br>This is a bit of a hack, as we want to maintain binary compatibility<br>without breaking existing users of libosmocore.  To do so, we use the<br>'num_auth_vectors' field in two ways now:<br><br>* In the existing use case as part of SEND_AUTH_INFO_RESPONSE, it<br>  indicates the number of vectors stored in the 'auth_vectors' field<br><br>* In the new use case as part of SEND_AUTH_INFO_REQUEST, it indicates<br>  the number of vectors actually requested by the MSC/SGSN/MME.<br><br>Change-Id: Iaecc47280f8ce54f3e3a888c1cfc160735483d0f<br>---<br>M include/osmocom/gsm/gsup.h<br>M src/gsm/gsup.c<br>M tests/gsup/gsup_test.c<br>M tests/gsup/gsup_test.err<br>M tests/gsup/gsup_test.ok<br>5 files changed, 33 insertions(+), 4 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/include/osmocom/gsm/gsup.h b/include/osmocom/gsm/gsup.h</span><br><span>index 285bc0c..56d7a30 100644</span><br><span>--- a/include/osmocom/gsm/gsup.h</span><br><span>+++ b/include/osmocom/gsm/gsup.h</span><br><span>@@ -107,6 +107,7 @@</span><br><span> </span><br><span>         OSMO_GSUP_IMEI_IE                       = 0x50,</span><br><span>      OSMO_GSUP_IMEI_RESULT_IE                = 0x51,</span><br><span style="color: hsl(120, 100%, 40%);">+       OSMO_GSUP_NUM_VECTORS_REQ_IE            = 0x52,</span><br><span> </span><br><span>  /* Inter-MSC handover related */</span><br><span>     OSMO_GSUP_SOURCE_NAME_IE                = 0x60,</span><br><span>diff --git a/src/gsm/gsup.c b/src/gsm/gsup.c</span><br><span>index ad7a2a4..ef33ed0 100644</span><br><span>--- a/src/gsm/gsup.c</span><br><span>+++ b/src/gsm/gsup.c</span><br><span>@@ -569,6 +569,11 @@</span><br><span>                  gsup_msg->cause_sm = value[0];</span><br><span>                    break;</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+            case OSMO_GSUP_NUM_VECTORS_REQ_IE:</span><br><span style="color: hsl(120, 100%, 40%);">+                    if (gsup_msg->message_type == OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST)</span><br><span style="color: hsl(120, 100%, 40%);">+                               gsup_msg->num_auth_vectors = value[0];</span><br><span style="color: hsl(120, 100%, 40%);">+                     break;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>             default:</span><br><span>                     LOGP(DLGSUP, LOGL_NOTICE,</span><br><span>                         "GSUP IE type %d unknown\n", iei);</span><br><span>@@ -753,12 +758,18 @@</span><br><span>            }</span><br><span>    }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   for (idx = 0; idx < gsup_msg->num_auth_vectors; idx++) {</span><br><span style="color: hsl(0, 100%, 40%);">-          const struct osmo_auth_vector *auth_vector;</span><br><span style="color: hsl(120, 100%, 40%);">+   if (gsup_msg->message_type == OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST) {</span><br><span style="color: hsl(120, 100%, 40%);">+             uint8_t num = gsup_msg->num_auth_vectors;</span><br><span style="color: hsl(120, 100%, 40%);">+          if (num != 0)</span><br><span style="color: hsl(120, 100%, 40%);">+                 msgb_tlv_put(msg, OSMO_GSUP_NUM_VECTORS_REQ_IE, 1, &num);</span><br><span style="color: hsl(120, 100%, 40%);">+ } else {</span><br><span style="color: hsl(120, 100%, 40%);">+              for (idx = 0; idx < gsup_msg->num_auth_vectors; idx++) {</span><br><span style="color: hsl(120, 100%, 40%);">+                        const struct osmo_auth_vector *auth_vector;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-         auth_vector = &gsup_msg->auth_vectors[idx];</span><br><span style="color: hsl(120, 100%, 40%);">+                    auth_vector = &gsup_msg->auth_vectors[idx];</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-          encode_auth_info(msg, OSMO_GSUP_AUTH_TUPLE_IE, auth_vector);</span><br><span style="color: hsl(120, 100%, 40%);">+                  encode_auth_info(msg, OSMO_GSUP_AUTH_TUPLE_IE, auth_vector);</span><br><span style="color: hsl(120, 100%, 40%);">+          }</span><br><span>    }</span><br><span> </span><br><span>        if (gsup_msg->auts)</span><br><span>diff --git a/tests/gsup/gsup_test.c b/tests/gsup/gsup_test.c</span><br><span>index b84c88f..f34ac7a 100644</span><br><span>--- a/tests/gsup/gsup_test.c</span><br><span>+++ b/tests/gsup/gsup_test.c</span><br><span>@@ -19,6 +19,7 @@</span><br><span> #define TEST_AN_APDU_IE 0x62, 0x05, 0x01, 0x42, 0x42, 0x42, 0x42</span><br><span> #define TEST_SOURCE_NAME_IE 0x60, 0x05, 'M', 'S', 'C', '-', 'A'</span><br><span> #define TEST_DESTINATION_NAME_IE 0x61, 0x05, 'M', 'S', 'C', '-', 'B'</span><br><span style="color: hsl(120, 100%, 40%);">+#define TEST_NUM_VEC_IE(x) 0x52, 1, x</span><br><span> </span><br><span> static void test_gsup_messages_dec_enc(void)</span><br><span> {</span><br><span>@@ -32,6 +33,13 @@</span><br><span>          TEST_CLASS_SUBSCR_IE</span><br><span>         };</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+        static const uint8_t send_auth_info_req10[] = {</span><br><span style="color: hsl(120, 100%, 40%);">+               0x08,</span><br><span style="color: hsl(120, 100%, 40%);">+         TEST_IMSI_IE,</span><br><span style="color: hsl(120, 100%, 40%);">+         TEST_NUM_VEC_IE(10),</span><br><span style="color: hsl(120, 100%, 40%);">+          TEST_CLASS_SUBSCR_IE</span><br><span style="color: hsl(120, 100%, 40%);">+  };</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>         static const uint8_t send_auth_info_err[] = {</span><br><span>                0x09,</span><br><span>                TEST_IMSI_IE,</span><br><span>@@ -612,6 +620,8 @@</span><br><span>                  send_e_abort, sizeof(send_e_abort)},</span><br><span>                 {"E Routing Error",</span><br><span>                        send_e_routing_error, sizeof(send_e_routing_error)},</span><br><span style="color: hsl(120, 100%, 40%);">+          {"Send Authentication Info Request (10 Vectors)",</span><br><span style="color: hsl(120, 100%, 40%);">+                   send_auth_info_req10, sizeof(send_auth_info_req10)},</span><br><span>         };</span><br><span> </span><br><span>       printf("Test GSUP message decoding/encoding\n");</span><br><span>diff --git a/tests/gsup/gsup_test.err b/tests/gsup/gsup_test.err</span><br><span>index 1da3964..7b2fda9 100644</span><br><span>--- a/tests/gsup/gsup_test.err</span><br><span>+++ b/tests/gsup/gsup_test.err</span><br><span>@@ -115,6 +115,9 @@</span><br><span>   generated message: 4e 01 08 21 43 65 87 09 21 43 f5 30 04 de ad be ef 31 01 03 0a 01 04 60 05 4d 53 43 2d 41 61 05 4d 53 43 2d 42 </span><br><span>   original message:  4e 01 08 21 43 65 87 09 21 43 f5 30 04 de ad be ef 31 01 03 0a 01 04 60 05 4d 53 43 2d 41 61 05 4d 53 43 2d 42 </span><br><span>   IMSI:              123456789012345</span><br><span style="color: hsl(120, 100%, 40%);">+  generated message: 08 01 08 21 43 65 87 09 21 43 f5 52 01 0a 0a 01 01 </span><br><span style="color: hsl(120, 100%, 40%);">+  original message:  08 01 08 21 43 65 87 09 21 43 f5 52 01 0a 0a 01 01 </span><br><span style="color: hsl(120, 100%, 40%);">+  IMSI:              123456789012345</span><br><span>   message 0: tested 14 truncations, 13 parse failures</span><br><span>   message 1: tested 14 truncations, 13 parse failures</span><br><span>   message 2: tested 83 truncations, 81 parse failures</span><br><span>@@ -154,6 +157,7 @@</span><br><span>   message 36: tested 37 truncations, 32 parse failures</span><br><span>   message 37: tested 26 truncations, 22 parse failures</span><br><span>   message 38: tested 37 truncations, 32 parse failures</span><br><span style="color: hsl(120, 100%, 40%);">+  message 39: tested 17 truncations, 15 parse failures</span><br><span> DLGSUP Stopping DLGSUP logging</span><br><span>   message 0: tested 3584 modifications, 771 parse failures</span><br><span>   message 1: tested 3584 modifications, 770 parse failures</span><br><span>@@ -194,3 +198,4 @@</span><br><span>   message 36: tested 9472 modifications, 1803 parse failures</span><br><span>   message 37: tested 6656 modifications, 1546 parse failures</span><br><span>   message 38: tested 9472 modifications, 1803 parse failures</span><br><span style="color: hsl(120, 100%, 40%);">+  message 39: tested 4352 modifications, 1030 parse failures</span><br><span>diff --git a/tests/gsup/gsup_test.ok b/tests/gsup/gsup_test.ok</span><br><span>index db8bc2f..ef2aec6 100644</span><br><span>--- a/tests/gsup/gsup_test.ok</span><br><span>+++ b/tests/gsup/gsup_test.ok</span><br><span>@@ -77,4 +77,6 @@</span><br><span>           E Abort OK</span><br><span>   Testing E Routing Error</span><br><span>           E Routing Error OK</span><br><span style="color: hsl(120, 100%, 40%);">+  Testing Send Authentication Info Request (10 Vectors)</span><br><span style="color: hsl(120, 100%, 40%);">+          Send Authentication Info Request (10 Vectors) OK</span><br><span> Done.</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/libosmocore/+/15321">change 15321</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/libosmocore/+/15321"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: libosmocore </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: Iaecc47280f8ce54f3e3a888c1cfc160735483d0f </div>
<div style="display:none"> Gerrit-Change-Number: 15321 </div>
<div style="display:none"> Gerrit-PatchSet: 7 </div>
<div style="display:none"> Gerrit-Owner: laforge <laforge@osmocom.org> </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-CC: neels <nhofmeyr@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>