[PATCH 1/2] grps: Add test for NS messages that shall be ignored

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/OpenBSC@lists.osmocom.org/.

Jacob Erlbeck jerlbeck at sysmocom.de
Mon Oct 28 12:29:10 UTC 2013


Several messages shall not be answered when a RESET hasn't been
received on a NS-VC:
- NS_RESET_ACK (see 3GPP TS 08.16, 7.3.1)
- NS_ALIVE_ACK (see 3GPP TS 08.16, 7.4.1)
- NS_STATUS (see 3GPP TS 08.16, 7.5.1)

Sponsored-by: On-Waves ehf
---
 tests/gb/gprs_ns_test.c  |   28 ++++++++++++++++++++++++++++
 tests/gb/gprs_ns_test.ok |   27 +++++++++++++++++++++++++++
 2 files changed, 55 insertions(+)

diff --git a/tests/gb/gprs_ns_test.c b/tests/gb/gprs_ns_test.c
index c88792c..c90d752 100644
--- a/tests/gb/gprs_ns_test.c
+++ b/tests/gb/gprs_ns_test.c
@@ -486,6 +486,33 @@ static void test_nsvc()
 	alarm(0);
 }
 
+static void test_ignored_messages()
+{
+	struct gprs_ns_inst *nsi = gprs_ns_instantiate(gprs_ns_callback, NULL);
+	struct sockaddr_in peer[1] = {{0},};
+
+	peer[0].sin_family = AF_INET;
+	peer[0].sin_port = htons(1111);
+	peer[0].sin_addr.s_addr = htonl(REMOTE_BSS_ADDR);
+
+	printf("--- Send unexpected NS STATUS (should not be answered)---\n\n");
+	/* Do not respond, see 3GPP TS 08.16, 7.5.1 */
+	gprs_process_message(nsi, "STATUS", &peer[0],
+			     gprs_ns_status_invalid_alive,
+			     sizeof(gprs_ns_status_invalid_alive));
+
+	printf("--- Send unexpected NS ALIVE ACK (should not be answered)---\n\n");
+	/* Ignore this, see 3GPP TS 08.16, 7.4.1 */
+	send_ns_alive_ack(nsi, &peer[0]);
+
+	printf("--- Send unexpected NS RESET ACK (should not be answered)---\n\n");
+	/* Ignore this, see 3GPP TS 08.16, 7.3.1 */
+	send_ns_reset_ack(nsi, &peer[0], 0xe001, 0xe000);
+
+	gprs_ns_destroy(nsi);
+	nsi = NULL;
+}
+
 static void test_bss_port_changes()
 {
 	struct gprs_ns_inst *nsi = gprs_ns_instantiate(gprs_ns_callback, NULL);
@@ -832,6 +859,7 @@ int main(int argc, char **argv)
 
 	printf("===== NS protocol test START\n");
 	test_nsvc();
+	test_ignored_messages();
 	test_bss_port_changes();
 	test_bss_reset_ack();
 	test_sgsn_reset();
diff --git a/tests/gb/gprs_ns_test.ok b/tests/gb/gprs_ns_test.ok
index 8a61450..23c9e5f 100644
--- a/tests/gb/gprs_ns_test.ok
+++ b/tests/gb/gprs_ns_test.ok
@@ -85,6 +85,33 @@ Current NS-VCIs:
 
 --- Process timers ---
 
+--- Send unexpected NS STATUS (should not be answered)---
+
+PROCESSING STATUS from 0x01020304:1111
+08 00 81 0a 02 81 0a 
+
+result (STATUS) = 0
+
+--- Send unexpected NS ALIVE ACK (should not be answered)---
+
+PROCESSING ALIVE_ACK from 0x01020304:1111
+0b 
+
+MESSAGE to BSS, msg length 7
+08 00 81 0a 02 81 0b 
+
+result (ALIVE_ACK) = 0
+
+--- Send unexpected NS RESET ACK (should not be answered)---
+
+PROCESSING RESET_ACK from 0x01020304:1111
+03 01 82 e0 01 04 82 e0 00 
+
+MESSAGE to BSS, msg length 15
+08 00 81 0a 02 89 03 01 82 e0 01 04 82 e0 00 
+
+result (RESET_ACK) = 0
+
 --- Setup, send BSSGP RESET ---
 
 Setup NS-VC: remote 0x01020304:1111, NSVCI 0x1122(4386), NSEI 0x1122(4386)
-- 
1.7.9.5





More information about the OpenBSC mailing list