pespin has submitted this change. ( 
https://gerrit.osmocom.org/c/osmo-hnbgw/+/34964?usp=email )

Change subject: tests/ranap_rab_ass: Test RAB-Ass.req with X.213 IPv4 address 
len=7
......................................................................

tests/ranap_rab_ass: Test RAB-Ass.req with X.213 IPv4 address len=7

It was found in the field that some peers sends an X.213 IP address
consisting of 7 bytes (1byte IDP/AFI, 2byte ICP, 4 byte IPv4 address) insetad
of 20 bytes. This was until recently failing in osmo-hnbgw due to
missing decoding functionalitit in osmo-iuh.git. Cover it here.

Related: SYS#6623
Depends: osmo-iuh.git I507fb1605d976bd8573162e4fa81721245330184
Change-Id: I71323018d79a4f5778dc6e49488d75ae7c2c4cdc
---
M TODO-RELEASE
M tests/ranap_rab_ass/ranap_rab_ass_test.c
M tests/ranap_rab_ass/ranap_rab_ass_test.ok
3 files changed, 60 insertions(+), 9 deletions(-)

Approvals:
  osmith: Looks good to me, approved
  laforge: Looks good to me, but someone else must approve
  fixeria: Looks good to me, but someone else must approve
  Jenkins Builder: Verified




diff --git a/TODO-RELEASE b/TODO-RELEASE
index d0852fc..b5a838d 100644
--- a/TODO-RELEASE
+++ b/TODO-RELEASE
@@ -7,3 +7,4 @@
 # If any interfaces have been added since the last public release: c:r:a + 1.
 # If any interfaces have been removed or changed since the last public 
release: c:r:0.
 #library       what            description / commit summary line
+osmo-iuh  >1.5.0  proper decoding of X.213 IPv4 address len=7
\ No newline at end of file
diff --git a/tests/ranap_rab_ass/ranap_rab_ass_test.c 
b/tests/ranap_rab_ass/ranap_rab_ass_test.c
index fbdfa77..76a3430 100644
--- a/tests/ranap_rab_ass/ranap_rab_ass_test.c
+++ b/tests/ranap_rab_ass/ranap_rab_ass_test.c
@@ -98,14 +98,27 @@
        ranap_cn_rx_co_free(&message);
 }

-void test_ranap_rab_ass_req_ies_extract_inet_addr(void)
+static void test_ranap_rab_ass_req_ies_extract_inet_addr_one(uint8_t *testvec, 
size_t testvec_len)
 {
        int rc;
        struct osmo_sockaddr addr;
        struct osmo_sockaddr_str addr_str;
        uint8_t rab_id;
        ranap_message message;
-       uint8_t testvec[] = {
+
+       rc = ranap_ran_rx_co_decode(talloc_asn1_ctx, &message, testvec, 
testvec_len);
+       OSMO_ASSERT(rc == 0);
+       rc = ranap_rab_ass_req_ies_extract_inet_addr(&addr, &rab_id, 
&message.msg.raB_AssignmentRequestIEs, 0);
+       osmo_sockaddr_str_from_sockaddr(&addr_str, &addr.u.sas);
+       printf("ranap_rab_ass_req_extract_inet_addr rc=%d\n", rc);
+       printf("RESULT: addr=%s, port=%u, rab-id=%02x\n", addr_str.ip, 
addr_str.port, rab_id);
+       ranap_ran_rx_co_free(&message);
+}
+
+void test_ranap_rab_ass_req_ies_extract_inet_addr(void)
+{
+
+       uint8_t testvec0[] = {
                0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x01, 0x00,
                0x36, 0x40, 0x52, 0x00, 0x00, 0x01, 0x00, 0x35,
                0x00, 0x48, 0x78, 0x22, 0xcd, 0x80, 0x10, 0x2f,
@@ -119,14 +132,33 @@
                0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x1f, 0x76,
                0x00, 0x00, 0x40, 0x01, 0x00, 0x00
        };
+       test_ranap_rab_ass_req_ies_extract_inet_addr_one(testvec0, 
sizeof(testvec0));

-       rc = ranap_ran_rx_co_decode(talloc_asn1_ctx, &message, testvec, 
sizeof(testvec));
-       OSMO_ASSERT(rc == 0);
-       rc = ranap_rab_ass_req_ies_extract_inet_addr(&addr, &rab_id, 
&message.msg.raB_AssignmentRequestIEs, 0);
-       osmo_sockaddr_str_from_sockaddr(&addr_str, &addr.u.sas);
-       printf("ranap_rab_ass_req_extract_inet_addr rc=%d\n", rc);
-       printf("RESULT: addr=%s, port=%u, rab-id=%02x\n", addr_str.ip, 
addr_str.port, rab_id);
-       ranap_ran_rx_co_free(&message);
+       /* "35 00 01 ac 19 0c 0d" => X.213 IPv4 address len=7:
+       * transportLayerInformation
+       * transportLayerAddress: 350001ac190c0d [bit length 56, 0011 0101  0000 
0000  0000 0001  1010 1100  0001 1001  0000 1100  0000 1101 decimal value 
14918180947954701]
+       *       transportLayerAddress NSAP: 350001ac190c0d
+       *       IDP: 350001
+       *       X.213 Address Format Information (AFI): IANA ICP, binary (0x35)
+       *       IANA ICP: IP Version 4 Address (0x0001)
+       *       DSP: ac190c0d00000000000000000000000000
+       *       IWFA IPv4 Address: 172.25.12.13
+       * iuTransportAssociation: bindingID (1)
+       *       bindingID: 444c0000 (17484)
+       */
+       uint8_t testvec1[] = {
+               0x00, 0x00, 0x00, 0x80, 0x8c, 0x00, 0x00, 0x01, 0x00, 0x36, 
0x40, 0x80, 0x84, 0x00, 0x00, 0x01,
+               0x00, 0x35, 0x00, 0x7a, 0x78, 0x02, 0xcd, 0x80, 0x10, 0x2f, 
0xa7, 0x20, 0x12, 0x8e, 0x00, 0x00,
+               0xf4, 0x4c, 0x64, 0x0a, 0x10, 0x80, 0x00, 0x51, 0x40, 0x00, 
0x41, 0x40, 0x00, 0x4b, 0x40, 0x00,
+               0x3d, 0x40, 0x00, 0x3a, 0x40, 0x00, 0x37, 0x40, 0x00, 0x31, 
0x40, 0x00, 0x2a, 0x40, 0x00, 0x27,
+               0x20, 0x28, 0x84, 0x00, 0x67, 0x40, 0x00, 0x63, 0x40, 0x00, 
0x54, 0x40, 0x00, 0x57, 0x40, 0x00,
+               0x4c, 0x40, 0x00, 0x3f, 0x40, 0x00, 0x36, 0x40, 0x00, 0x35, 
0x40, 0x00, 0x00, 0x22, 0x28, 0x84,
+               0x00, 0x3c, 0x40, 0x00, 0x28, 0x40, 0x00, 0x00, 0x40, 0x00, 
0x00, 0x40, 0x00, 0x00, 0x40, 0x00,
+               0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 
0x00, 0x50, 0x30, 0x82, 0x00, 0x06,
+               0x0d, 0xc0, 0x35, 0x00, 0x01, 0xac, 0x19, 0x0c, 0x0d, 0x40, 
0x44, 0x4c, 0x00, 0x00, 0x40, 0x01,
+               0x00
+       };
+       test_ranap_rab_ass_req_ies_extract_inet_addr_one(testvec1, 
sizeof(testvec1));
 }

 void test_ranap_rab_ass_resp_ies_extract_inet_addr(void)
diff --git a/tests/ranap_rab_ass/ranap_rab_ass_test.ok 
b/tests/ranap_rab_ass/ranap_rab_ass_test.ok
index 73565af..6bf2521 100644
--- a/tests/ranap_rab_ass/ranap_rab_ass_test.ok
+++ b/tests/ranap_rab_ass/ranap_rab_ass_test.ok
@@ -5,6 +5,8 @@
 RESULT: 
6000002a000001003440230000010033401c603a7c3500010a0901a40000000000000000000000000040040a0000
 ranap_rab_ass_req_extract_inet_addr rc=0
 RESULT: addr=10.9.1.162, port=8054, rab-id=11
+ranap_rab_ass_req_extract_inet_addr rc=0
+RESULT: addr=172.25.12.13, port=17484, rab-id=01
 ranap_rab_ass_resp_extract_inet_addr rc=0
 RESULT: addr=10.9.1.164, port=1034
 before: addr=10.9.1.162, port=8122, rab_id=39

--
To view, visit https://gerrit.osmocom.org/c/osmo-hnbgw/+/34964?usp=email
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-hnbgw
Gerrit-Branch: master
Gerrit-Change-Id: I71323018d79a4f5778dc6e49488d75ae7c2c4cdc
Gerrit-Change-Number: 34964
Gerrit-PatchSet: 2
Gerrit-Owner: pespin <[email protected]>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <[email protected]>
Gerrit-Reviewer: laforge <[email protected]>
Gerrit-Reviewer: osmith <[email protected]>
Gerrit-Reviewer: pespin <[email protected]>
Gerrit-MessageType: merged

Reply via email to