pespin submitted this change.
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(-)
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 change 34964. To unsubscribe, or for help writing mail filters, visit settings.