Change in osmo-ttcn3-hacks[master]: GGSN_Tests: test what happens when PCO contains only one DNS entry

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/gerrit-log@lists.osmocom.org/.

dexter gerrit-no-reply at lists.osmocom.org
Wed May 30 15:31:03 UTC 2018


dexter has uploaded this change for review. ( https://gerrit.osmocom.org/9394


Change subject: GGSN_Tests: test what happens when PCO contains only one DNS entry
......................................................................

GGSN_Tests: test what happens when PCO contains only one DNS entry

When the protocol configuration options (PCO) contain a protocol
option that lists only one DNS server (normally there are two
included, a primary and a secondary). Than the parser in osmo-ggsn
runs into an endles loop. This testcase tries to provoke this behavior
by sending PDP CONTEXT ACTIVATE messages with PCO that contain only
a single DNS entry.

The problematic behavior of osmo-ggsn has been fixed recently
(see depends).

Change-Id: I71761e1f9db7ceac3c3df43d2e539f8c8d53c4fc
Depends: osmo-msc Icffde89f9bc5d8fcadf6e2dd6c0b4de03440edd5
Related: OS#3288
---
M ggsn_tests/GGSN_Tests.ttcn
M ggsn_tests/expected-results.xml
M library/GTP_Templates.ttcn
3 files changed, 47 insertions(+), 0 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/94/9394/1

diff --git a/ggsn_tests/GGSN_Tests.ttcn b/ggsn_tests/GGSN_Tests.ttcn
index d099681..28a1785 100644
--- a/ggsn_tests/GGSN_Tests.ttcn
+++ b/ggsn_tests/GGSN_Tests.ttcn
@@ -932,6 +932,24 @@
 		T_default.stop;
 	}
 
+	/* Test if the parser can cope with PCO that only contain either a single or a primary DNS.
+	 * Note: an unpatched osmo-ggsn version will enter an endless-loop when the test is run
+	 * see Change-Id Icffde89f9bc5d8fcadf6e2dd6c0b4de03440edd5 and OS#3288 */
+	testcase TC_pdp4_act_deact_with_single_dns() runs on GT_CT {
+		f_init();
+		var PdpContext ctx := valueof(t_DefinePDP(f_rnd_imsi('26242'H), '1234'O, c_ApnInternet, valueof(t_EuaIPv4Dyn)));
+		var ProtConfigOptions pco_pri_dns := valueof(ts_PCO_IPv4_PRI_DNS_IPCP);
+		var ProtConfigOptions pco_sec_dns := valueof(ts_PCO_IPv4_SEC_DNS_IPCP);
+
+		ctx.pco_req := pco_pri_dns;
+		f_pdp_ctx_act(ctx);
+		f_pdp_ctx_del(ctx, '1'B);
+
+		ctx.pco_req := pco_sec_dns;
+		f_pdp_ctx_act(ctx);
+		f_pdp_ctx_del(ctx, '1'B);
+	}
+
 	control {
 		execute(TC_pdp4_act_deact());
 		execute(TC_pdp4_act_deact_ipcp());
@@ -947,5 +965,7 @@
 		execute(TC_pdp6_clients_interact());
 
 		execute(TC_echo_req_resp());
+
+		execute(TC_pdp4_act_deact_with_single_dns());
 	}
 }
diff --git a/ggsn_tests/expected-results.xml b/ggsn_tests/expected-results.xml
index 1e5da38..f871657 100644
--- a/ggsn_tests/expected-results.xml
+++ b/ggsn_tests/expected-results.xml
@@ -11,4 +11,5 @@
   <testcase classname='GGSN_Tests' name='TC_pdp6_act_deact_gtpu_access' time='MASKED'/>
   <testcase classname='GGSN_Tests' name='TC_pdp6_clients_interact' time='MASKED'/>
   <testcase classname='GGSN_Tests' name='TC_echo_req_resp' time='MASKED'/>
+  <testcase classname='GGSN_Tests' name='TC_pdp4_act_deact_with_single_dns' time='MASKED'/>
 </testsuite>
diff --git a/library/GTP_Templates.ttcn b/library/GTP_Templates.ttcn
index 44ec439..6c71765 100644
--- a/library/GTP_Templates.ttcn
+++ b/library/GTP_Templates.ttcn
@@ -400,6 +400,25 @@
 		}
 	}
 
+	template ProtConfigOptions ts_PCO_IPv4_PRI_DNS_IPCP modifies ts_PCO := {
+		protocols := {
+			/* dummy PAP entry to check if our parser can cope with a single primary DNS entry
+			 * see Change-Id Icffde89f9bc5d8fcadf6e2dd6c0b4de03440edd5 and OS#3288 */
+			{ protocolID := 'C023'O, lengthProtoID := 0, protoIDContents := ''O },
+			{ protocolID := '8021'O, lengthProtoID := 16, protoIDContents :=
+								enc_IpcpPacket(valueof(ts_IPCP_ReqDNS_Primary)) }
+		}
+	}
+	template ProtConfigOptions ts_PCO_IPv4_SEC_DNS_IPCP modifies ts_PCO := {
+		protocols := {
+			/* dummy PAP entry to check if our parser can cope with a single secondary DNS entry
+			 * see Change-Id Icffde89f9bc5d8fcadf6e2dd6c0b4de03440edd5 and OS#3288 */
+			{ protocolID := 'C023'O, lengthProtoID := 0, protoIDContents := ''O },
+			{ protocolID := '8021'O, lengthProtoID := 16, protoIDContents :=
+								enc_IpcpPacket(valueof(ts_IPCP_ReqDNS_Secondary)) }
+		}
+	}
+
 	template ProtocolElement tr_PCO_Proto(OCT2 prot_id) := {
 		protocolID := prot_id,
 		lengthProtoID := ?,
@@ -468,6 +487,13 @@
 		ts_IPCP(LCP_Configure_Request, identifier,
 			{ tr_IPCP_PrimaryDns('00000000'O), tr_IPCP_SecondaryDns('00000000'O) });
 
+	template IpcpPacket ts_IPCP_ReqDNS_Primary(uint8_t identifier := 0) :=
+		ts_IPCP(LCP_Configure_Request, identifier,
+			{ tr_IPCP_PrimaryDns('00000000'O) });
+	template IpcpPacket ts_IPCP_ReqDNS_Secondary(uint8_t identifier := 0) :=
+		ts_IPCP(LCP_Configure_Request, identifier,
+			{ tr_IPCP_SecondaryDns('00000000'O) });
+
 	function f_teardown_ind_IE(in template (omit) BIT1 ind) return template (omit) TearDownInd {
 		if (istemplatekind(ind, "omit")) {
 			return omit;

-- 
To view, visit https://gerrit.osmocom.org/9394
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: I71761e1f9db7ceac3c3df43d2e539f8c8d53c4fc
Gerrit-Change-Number: 9394
Gerrit-PatchSet: 1
Gerrit-Owner: dexter <pmaier at sysmocom.de>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20180530/33695326/attachment.htm>


More information about the gerrit-log mailing list