<p>dexter has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/9394">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">GGSN_Tests: test what happens when PCO contains only one DNS entry<br><br>When the protocol configuration options (PCO) contain a protocol<br>option that lists only one DNS server (normally there are two<br>included, a primary and a secondary). Than the parser in osmo-ggsn<br>runs into an endles loop. This testcase tries to provoke this behavior<br>by sending PDP CONTEXT ACTIVATE messages with PCO that contain only<br>a single DNS entry.<br><br>The problematic behavior of osmo-ggsn has been fixed recently<br>(see depends).<br><br>Change-Id: I71761e1f9db7ceac3c3df43d2e539f8c8d53c4fc<br>Depends: osmo-msc Icffde89f9bc5d8fcadf6e2dd6c0b4de03440edd5<br>Related: OS#3288<br>---<br>M ggsn_tests/GGSN_Tests.ttcn<br>M ggsn_tests/expected-results.xml<br>M library/GTP_Templates.ttcn<br>3 files changed, 47 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/94/9394/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/ggsn_tests/GGSN_Tests.ttcn b/ggsn_tests/GGSN_Tests.ttcn</span><br><span>index d099681..28a1785 100644</span><br><span>--- a/ggsn_tests/GGSN_Tests.ttcn</span><br><span>+++ b/ggsn_tests/GGSN_Tests.ttcn</span><br><span>@@ -932,6 +932,24 @@</span><br><span> T_default.stop;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ /* Test if the parser can cope with PCO that only contain either a single or a primary DNS.</span><br><span style="color: hsl(120, 100%, 40%);">+ * Note: an unpatched osmo-ggsn version will enter an endless-loop when the test is run</span><br><span style="color: hsl(120, 100%, 40%);">+ * see Change-Id Icffde89f9bc5d8fcadf6e2dd6c0b4de03440edd5 and OS#3288 */</span><br><span style="color: hsl(120, 100%, 40%);">+ testcase TC_pdp4_act_deact_with_single_dns() runs on GT_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+ f_init();</span><br><span style="color: hsl(120, 100%, 40%);">+ var PdpContext ctx := valueof(t_DefinePDP(f_rnd_imsi('26242'H), '1234'O, c_ApnInternet, valueof(t_EuaIPv4Dyn)));</span><br><span style="color: hsl(120, 100%, 40%);">+ var ProtConfigOptions pco_pri_dns := valueof(ts_PCO_IPv4_PRI_DNS_IPCP);</span><br><span style="color: hsl(120, 100%, 40%);">+ var ProtConfigOptions pco_sec_dns := valueof(ts_PCO_IPv4_SEC_DNS_IPCP);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ ctx.pco_req := pco_pri_dns;</span><br><span style="color: hsl(120, 100%, 40%);">+ f_pdp_ctx_act(ctx);</span><br><span style="color: hsl(120, 100%, 40%);">+ f_pdp_ctx_del(ctx, '1'B);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ ctx.pco_req := pco_sec_dns;</span><br><span style="color: hsl(120, 100%, 40%);">+ f_pdp_ctx_act(ctx);</span><br><span style="color: hsl(120, 100%, 40%);">+ f_pdp_ctx_del(ctx, '1'B);</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> control {</span><br><span> execute(TC_pdp4_act_deact());</span><br><span> execute(TC_pdp4_act_deact_ipcp());</span><br><span>@@ -947,5 +965,7 @@</span><br><span> execute(TC_pdp6_clients_interact());</span><br><span> </span><br><span> execute(TC_echo_req_resp());</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ execute(TC_pdp4_act_deact_with_single_dns());</span><br><span> }</span><br><span> }</span><br><span>diff --git a/ggsn_tests/expected-results.xml b/ggsn_tests/expected-results.xml</span><br><span>index 1e5da38..f871657 100644</span><br><span>--- a/ggsn_tests/expected-results.xml</span><br><span>+++ b/ggsn_tests/expected-results.xml</span><br><span>@@ -11,4 +11,5 @@</span><br><span> <testcase classname='GGSN_Tests' name='TC_pdp6_act_deact_gtpu_access' time='MASKED'/></span><br><span> <testcase classname='GGSN_Tests' name='TC_pdp6_clients_interact' time='MASKED'/></span><br><span> <testcase classname='GGSN_Tests' name='TC_echo_req_resp' time='MASKED'/></span><br><span style="color: hsl(120, 100%, 40%);">+ <testcase classname='GGSN_Tests' name='TC_pdp4_act_deact_with_single_dns' time='MASKED'/></span><br><span> </testsuite></span><br><span>diff --git a/library/GTP_Templates.ttcn b/library/GTP_Templates.ttcn</span><br><span>index 44ec439..6c71765 100644</span><br><span>--- a/library/GTP_Templates.ttcn</span><br><span>+++ b/library/GTP_Templates.ttcn</span><br><span>@@ -400,6 +400,25 @@</span><br><span> }</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ template ProtConfigOptions ts_PCO_IPv4_PRI_DNS_IPCP modifies ts_PCO := {</span><br><span style="color: hsl(120, 100%, 40%);">+ protocols := {</span><br><span style="color: hsl(120, 100%, 40%);">+ /* dummy PAP entry to check if our parser can cope with a single primary DNS entry</span><br><span style="color: hsl(120, 100%, 40%);">+ * see Change-Id Icffde89f9bc5d8fcadf6e2dd6c0b4de03440edd5 and OS#3288 */</span><br><span style="color: hsl(120, 100%, 40%);">+ { protocolID := 'C023'O, lengthProtoID := 0, protoIDContents := ''O },</span><br><span style="color: hsl(120, 100%, 40%);">+ { protocolID := '8021'O, lengthProtoID := 16, protoIDContents :=</span><br><span style="color: hsl(120, 100%, 40%);">+ enc_IpcpPacket(valueof(ts_IPCP_ReqDNS_Primary)) }</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+ template ProtConfigOptions ts_PCO_IPv4_SEC_DNS_IPCP modifies ts_PCO := {</span><br><span style="color: hsl(120, 100%, 40%);">+ protocols := {</span><br><span style="color: hsl(120, 100%, 40%);">+ /* dummy PAP entry to check if our parser can cope with a single secondary DNS entry</span><br><span style="color: hsl(120, 100%, 40%);">+ * see Change-Id Icffde89f9bc5d8fcadf6e2dd6c0b4de03440edd5 and OS#3288 */</span><br><span style="color: hsl(120, 100%, 40%);">+ { protocolID := 'C023'O, lengthProtoID := 0, protoIDContents := ''O },</span><br><span style="color: hsl(120, 100%, 40%);">+ { protocolID := '8021'O, lengthProtoID := 16, protoIDContents :=</span><br><span style="color: hsl(120, 100%, 40%);">+ enc_IpcpPacket(valueof(ts_IPCP_ReqDNS_Secondary)) }</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> template ProtocolElement tr_PCO_Proto(OCT2 prot_id) := {</span><br><span> protocolID := prot_id,</span><br><span> lengthProtoID := ?,</span><br><span>@@ -468,6 +487,13 @@</span><br><span> ts_IPCP(LCP_Configure_Request, identifier,</span><br><span> { tr_IPCP_PrimaryDns('00000000'O), tr_IPCP_SecondaryDns('00000000'O) });</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ template IpcpPacket ts_IPCP_ReqDNS_Primary(uint8_t identifier := 0) :=</span><br><span style="color: hsl(120, 100%, 40%);">+ ts_IPCP(LCP_Configure_Request, identifier,</span><br><span style="color: hsl(120, 100%, 40%);">+ { tr_IPCP_PrimaryDns('00000000'O) });</span><br><span style="color: hsl(120, 100%, 40%);">+ template IpcpPacket ts_IPCP_ReqDNS_Secondary(uint8_t identifier := 0) :=</span><br><span style="color: hsl(120, 100%, 40%);">+ ts_IPCP(LCP_Configure_Request, identifier,</span><br><span style="color: hsl(120, 100%, 40%);">+ { tr_IPCP_SecondaryDns('00000000'O) });</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> function f_teardown_ind_IE(in template (omit) BIT1 ind) return template (omit) TearDownInd {</span><br><span> if (istemplatekind(ind, "omit")) {</span><br><span> return omit;</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/9394">change 9394</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/9394"/><meta itemprop="name" content="View Change"/></div></div>
<div style="display:none"> Gerrit-Project: osmo-ttcn3-hacks </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: I71761e1f9db7ceac3c3df43d2e539f8c8d53c4fc </div>
<div style="display:none"> Gerrit-Change-Number: 9394 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: dexter <pmaier@sysmocom.de> </div>