ggsn: Properly encode MISDN IE in GTP

ISDN-AddressString contains an initial byte at the start.
We didn't care so far because we were not yet checking the content of
msisdn, so the usual first '12'O byte was being considered as a header.

Let's store it in GTP format as before, but let's pass it as a
charstring when initializing the PdpContext, so that the human-style is
visible in the test for easy visualization/comparison (It will be
verified in a follow-up patch in Gy Diameter interface).

Change-Id: Ie1b65707d4b08f2201572e1fa44a1f9f985eb096
This commit is contained in:
Pau Espin 2022-05-18 16:29:05 +02:00
parent 35e308a26c
commit d25095f7ce
3 changed files with 49 additions and 46 deletions

View File

@ -11,6 +11,7 @@ module GGSN_Tests {
* SPDX-License-Identifier: GPL-2.0-or-later
*/
import from TCCEncoding_Functions all;
import from General_Types all;
import from Osmocom_Types all;
@ -340,10 +341,10 @@ module GGSN_Tests {
}
/* define an (internal) representation of a PDP context */
template PdpContext t_DefinePDP(hexstring imsi, octetstring msisdn, octetstring apn,
template PdpContext t_DefinePDP(hexstring imsi, charstring msisdn, octetstring apn,
EndUserAddress eua, OCT1 ratType := '02'O /* GERAN */) := {
imsi := imsi,
msisdn := msisdn,
msisdn := '11'O & f_enc_TBCD(msisdn), /* encoded as TS 29.060 7.7.33, TS 29.002 */
nsapi := f_rnd_nsapi(),
apn := apn,
pco_req := omit,
@ -1104,7 +1105,7 @@ module GGSN_Tests {
testcase TC_pdp6_act_deact() runs on GT_CT {
f_init();
var PdpContext ctx := valueof(t_DefinePDP(f_rnd_imsi('26242'H), '1234'O, c_ApnInet6, valueof(t_EuaIPv6Dyn)));
var PdpContext ctx := valueof(t_DefinePDP(f_rnd_imsi('26242'H), "1234", c_ApnInet6, valueof(t_EuaIPv6Dyn)));
f_pdp_ctx_act(ctx);
f_pdp_ctx_del(ctx, '1'B);
f_shutdown_helper();
@ -1114,7 +1115,7 @@ module GGSN_Tests {
testcase TC_pdp6_act_deact_pcodns() runs on GT_CT {
f_init();
var PdpContext ctx := valueof(t_DefinePDP(f_rnd_imsi('26242'H), '1234'O, c_ApnInet6, valueof(t_EuaIPv6Dyn)));
var PdpContext ctx := valueof(t_DefinePDP(f_rnd_imsi('26242'H), "1234", c_ApnInet6, valueof(t_EuaIPv6Dyn)));
ctx.pco_req := valueof(ts_PCO_IPv6_DNS);
f_pdp_ctx_act(ctx);
@ -1138,7 +1139,7 @@ module GGSN_Tests {
testcase TC_pdp6_act_deact_icmp6() runs on GT_CT {
f_init();
var PdpContext ctx := valueof(t_DefinePDP(f_rnd_imsi('26242'H), '1234'O, c_ApnInet6, valueof(t_EuaIPv6Dyn)));
var PdpContext ctx := valueof(t_DefinePDP(f_rnd_imsi('26242'H), "1234", c_ApnInet6, valueof(t_EuaIPv6Dyn)));
ctx.pco_req := valueof(ts_PCO_IPv6_DNS);
f_pdp_ctx_act(ctx);
@ -1158,7 +1159,7 @@ module GGSN_Tests {
Test we can send ICMPv6 ping over GTPU to DNS server. */
testcase TC_pdp6_act_deact_gtpu_access() runs on GT_CT {
f_init();
var PdpContext ctx := valueof(t_DefinePDP(f_rnd_imsi('26242'H), '1234'O, c_ApnInet6, valueof(t_EuaIPv6Dyn)));
var PdpContext ctx := valueof(t_DefinePDP(f_rnd_imsi('26242'H), "1234", c_ApnInet6, valueof(t_EuaIPv6Dyn)));
ctx.pco_req := valueof(ts_PCO_IPv6_DNS);
f_pdp_ctx_act(ctx);
@ -1189,7 +1190,7 @@ module GGSN_Tests {
/* Check that attempting RA with another ll src addr won't work, packet dropped: */
testcase TC_pdp6_act_deact_gtpu_access_wrong_ll_saddr() runs on GT_CT {
f_init();
var PdpContext ctx := valueof(t_DefinePDP(f_rnd_imsi('26242'H), '1234'O, c_ApnInet6, valueof(t_EuaIPv6Dyn)));
var PdpContext ctx := valueof(t_DefinePDP(f_rnd_imsi('26242'H), "1234", c_ApnInet6, valueof(t_EuaIPv6Dyn)));
ctx.pco_req := valueof(ts_PCO_IPv6_DNS);
f_pdp_ctx_act(ctx);
@ -1209,7 +1210,7 @@ module GGSN_Tests {
/* Assert that packets with wrong global src addr are dropped by GGSN */
testcase TC_pdp6_act_deact_gtpu_access_wrong_global_saddr() runs on GT_CT {
f_init();
var PdpContext ctx := valueof(t_DefinePDP(f_rnd_imsi('26242'H), '1234'O, c_ApnInet6, valueof(t_EuaIPv6Dyn)));
var PdpContext ctx := valueof(t_DefinePDP(f_rnd_imsi('26242'H), "1234", c_ApnInet6, valueof(t_EuaIPv6Dyn)));
ctx.pco_req := valueof(ts_PCO_IPv6_DNS);
f_pdp_ctx_act(ctx);
@ -1230,7 +1231,7 @@ module GGSN_Tests {
/* Send an IPv4 ICMP ECHO REQUEST to APN6, should fail (packet dropped */
testcase TC_pdp6_act_deact_gtpu_access_ipv4_apn6() runs on GT_CT {
f_init();
var PdpContext ctx := valueof(t_DefinePDP(f_rnd_imsi('26242'H), '1234'O, c_ApnInet6, valueof(t_EuaIPv6Dyn)));
var PdpContext ctx := valueof(t_DefinePDP(f_rnd_imsi('26242'H), "1234", c_ApnInet6, valueof(t_EuaIPv6Dyn)));
ctx.pco_req := valueof(ts_PCO_IPv6_DNS);
f_pdp_ctx_act(ctx);
@ -1250,8 +1251,8 @@ module GGSN_Tests {
/* Validate if different clients (pdp ctx) can reach one another through GGSN. */
testcase TC_pdp6_clients_interact() runs on GT_CT {
f_init();
var PdpContext ctxA := valueof(t_DefinePDP(f_rnd_imsi('26242'H), '1234'O, c_ApnInet6, valueof(t_EuaIPv6Dyn)));
var PdpContext ctxB := valueof(t_DefinePDP(f_rnd_imsi('26242'H), '1234'O, c_ApnInet6, valueof(t_EuaIPv6Dyn)));
var PdpContext ctxA := valueof(t_DefinePDP(f_rnd_imsi('26242'H), "1234", c_ApnInet6, valueof(t_EuaIPv6Dyn)));
var PdpContext ctxB := valueof(t_DefinePDP(f_rnd_imsi('26242'H), "1234", c_ApnInet6, valueof(t_EuaIPv6Dyn)));
f_pdp_ctx_act(ctxA);
f_send_gtpu(ctxA, f_icmpv6_rs_for_pdp(ctxA));
f_wait_rtr_adv(ctxA);
@ -1283,7 +1284,7 @@ module GGSN_Tests {
/* Test PDP context activation for dynamic IPv4 EUA without DNS request */
testcase TC_pdp4_act_deact() 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 PdpContext ctx := valueof(t_DefinePDP(f_rnd_imsi('26242'H), "1234", c_ApnInternet, valueof(t_EuaIPv4Dyn)));
f_pdp_ctx_act(ctx);
f_pdp_ctx_del(ctx, '1'B);
f_shutdown_helper();
@ -1294,7 +1295,7 @@ module GGSN_Tests {
f_init();
var OCT4 ggsn_ip4_dns1 := f_inet_addr(m_ggsn_ip4_dns1);
var OCT4 ggsn_ip4_dns2 := f_inet_addr(m_ggsn_ip4_dns2);
var PdpContext ctx := valueof(t_DefinePDP(f_rnd_imsi('26242'H), '1234'O, c_ApnInternet, valueof(t_EuaIPv4Dyn)));
var PdpContext ctx := valueof(t_DefinePDP(f_rnd_imsi('26242'H), "1234", c_ApnInternet, valueof(t_EuaIPv4Dyn)));
ctx.pco_req := valueof(ts_PCO_IPv4_DNS_IPCP);
f_pdp_ctx_act(ctx);
f_PCO_ensure_no_duplicates(ctx.pco_neg);
@ -1320,7 +1321,7 @@ module GGSN_Tests {
f_init();
var OCT4 ggsn_ip4_dns1 := f_inet_addr(m_ggsn_ip4_dns1);
var OCT4 ggsn_ip4_dns2 := f_inet_addr(m_ggsn_ip4_dns2);
var PdpContext ctx := valueof(t_DefinePDP(f_rnd_imsi('26242'H), '1234'O, c_ApnInternet, valueof(t_EuaIPv4Dyn)));
var PdpContext ctx := valueof(t_DefinePDP(f_rnd_imsi('26242'H), "1234", c_ApnInternet, valueof(t_EuaIPv4Dyn)));
ctx.pco_req := valueof(ts_PCO_PAP_IPv4_DNS);
f_pdp_ctx_act(ctx);
f_PCO_ensure_no_duplicates(ctx.pco_neg);
@ -1352,7 +1353,7 @@ module GGSN_Tests {
/* Test PDP context activation for dynamic IPv4 EUA with IPv4 DNS in PCO */
testcase TC_pdp4_act_deact_pcodns() 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 PdpContext ctx := valueof(t_DefinePDP(f_rnd_imsi('26242'H), "1234", c_ApnInternet, valueof(t_EuaIPv4Dyn)));
ctx.pco_req := valueof(ts_PCO_IPv4_DNS_CONT);
f_pdp_ctx_act(ctx);
@ -1376,7 +1377,7 @@ module GGSN_Tests {
Test we can send ICMPv6 ping over GTPU to DNS server. */
testcase TC_pdp4_act_deact_gtpu_access() 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 PdpContext ctx := valueof(t_DefinePDP(f_rnd_imsi('26242'H), "1234", c_ApnInternet, valueof(t_EuaIPv4Dyn)));
ctx.pco_req := valueof(ts_PCO_IPv4_DNS_CONT);
f_pdp_ctx_act(ctx);
@ -1395,7 +1396,7 @@ module GGSN_Tests {
/* Assert that packets with wrong global src addr are dropped by GGSN */
testcase TC_pdp4_act_deact_gtpu_access_wrong_saddr() 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 PdpContext ctx := valueof(t_DefinePDP(f_rnd_imsi('26242'H), "1234", c_ApnInternet, valueof(t_EuaIPv4Dyn)));
ctx.pco_req := valueof(ts_PCO_IPv4_DNS_CONT);
f_pdp_ctx_act(ctx);
@ -1413,7 +1414,7 @@ module GGSN_Tests {
/* Send an IPv6 RA to APN4, should fail (packet dropped) */
testcase TC_pdp4_act_deact_gtpu_access_ipv6_apn4() 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 PdpContext ctx := valueof(t_DefinePDP(f_rnd_imsi('26242'H), "1234", c_ApnInternet, valueof(t_EuaIPv4Dyn)));
ctx.pco_req := valueof(ts_PCO_IPv4_DNS_CONT);
f_pdp_ctx_act(ctx);
@ -1429,8 +1430,8 @@ module GGSN_Tests {
/* Helper function for tests below. */
function f_pdp4_clients_interact() runs on GT_CT {
f_init();
var PdpContext ctxA := valueof(t_DefinePDP(f_rnd_imsi('26242'H), '1234'O, c_ApnInternet, valueof(t_EuaIPv4Dyn)));
var PdpContext ctxB := valueof(t_DefinePDP(f_rnd_imsi('26242'H), '1234'O, c_ApnInternet, valueof(t_EuaIPv4Dyn)));
var PdpContext ctxA := valueof(t_DefinePDP(f_rnd_imsi('26242'H), "1234", c_ApnInternet, valueof(t_EuaIPv4Dyn)));
var PdpContext ctxB := valueof(t_DefinePDP(f_rnd_imsi('26242'H), "1234", c_ApnInternet, valueof(t_EuaIPv4Dyn)));
f_pdp_ctx_act(ctxA);
f_pdp_ctx_act(ctxB);
var OCT4 addrA := ctxA.eua.endUserAddress.endUserAddressIPv4.ipv4_address;
@ -1491,7 +1492,7 @@ module GGSN_Tests {
* see also: Change-Id Icffde89f9bc5d8fcadf6e2dd6c0b4de03440edd5 and OS#3288 */
f_init();
var PdpContext ctx := valueof(t_DefinePDP(f_rnd_imsi('26242'H), '1234'O, c_ApnInternet, valueof(t_EuaIPv4Dyn)));
var PdpContext ctx := valueof(t_DefinePDP(f_rnd_imsi('26242'H), "1234", c_ApnInternet, valueof(t_EuaIPv4Dyn)));
var OCT4 ggsn_ip4_dns1 := f_inet_addr(m_ggsn_ip4_dns1);
var OCT4 ggsn_ip4_dns2 := f_inet_addr(m_ggsn_ip4_dns2);
var octetstring pco_neg_dns;
@ -1516,7 +1517,7 @@ module GGSN_Tests {
f_pdp_ctx_del(ctx, '1'B);
/* PCO with secondary DNS only */
ctx := valueof(t_DefinePDP(f_rnd_imsi('26242'H), '1234'O, c_ApnInternet, valueof(t_EuaIPv4Dyn)));
ctx := valueof(t_DefinePDP(f_rnd_imsi('26242'H), "1234", c_ApnInternet, valueof(t_EuaIPv4Dyn)));
ctx.pco_req := valueof(ts_PCO_IPv4_SEC_DNS_IPCP);
f_pdp_ctx_act(ctx);
pco_neg_dns := f_PCO_extract_proto(ctx.pco_neg, '8021'O, 1);
@ -1538,7 +1539,7 @@ module GGSN_Tests {
* see also: Change-Id Icffde89f9bc5d8fcadf6e2dd6c0b4de03440edd5 and OS#3288 */
f_init();
var PdpContext ctx := valueof(t_DefinePDP(f_rnd_imsi('26242'H), '1234'O, c_ApnInternet, valueof(t_EuaIPv4Dyn)));
var PdpContext ctx := valueof(t_DefinePDP(f_rnd_imsi('26242'H), "1234", c_ApnInternet, valueof(t_EuaIPv4Dyn)));
var OCT4 ggsn_ip4_dns1 := f_inet_addr(m_ggsn_ip4_dns1);
var OCT4 ggsn_ip4_dns2 := f_inet_addr(m_ggsn_ip4_dns2);
var octetstring pco_neg_dns;
@ -1568,7 +1569,7 @@ module GGSN_Tests {
/* Validate that SUT updates remote TEIC when requested through UpdatePDPContextRequest */
testcase TC_pdp4_act_update_teic() 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 PdpContext ctx := valueof(t_DefinePDP(f_rnd_imsi('26242'H), "1234", c_ApnInternet, valueof(t_EuaIPv4Dyn)));
ctx.pco_req := valueof(ts_PCO_IPv4_DNS_CONT);
f_pdp_ctx_act(ctx);
@ -1584,7 +1585,7 @@ module GGSN_Tests {
/* Validate that SUT updates remote TEID when requested through UpdatePDPContextRequest */
testcase TC_pdp4_act_update_teid() 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 PdpContext ctx := valueof(t_DefinePDP(f_rnd_imsi('26242'H), "1234", c_ApnInternet, valueof(t_EuaIPv4Dyn)));
ctx.pco_req := valueof(ts_PCO_IPv4_DNS_CONT);
f_pdp_ctx_act(ctx);
@ -1612,7 +1613,7 @@ module GGSN_Tests {
/* Test IPv4v6 context activation for dynamic IPv4v6 EUA without DNS request */
testcase TC_pdp46_act_deact() runs on GT_CT {
f_init();
var PdpContext ctx := valueof(t_DefinePDP(f_rnd_imsi('26242'H), '1234'O, c_ApnInet46, valueof(t_EuaIPv4Dynv6Dyn)));
var PdpContext ctx := valueof(t_DefinePDP(f_rnd_imsi('26242'H), "1234", c_ApnInet46, valueof(t_EuaIPv4Dynv6Dyn)));
f_pdp_ctx_act(ctx);
f_pdp_ctx_del(ctx, '1'B);
f_shutdown_helper();
@ -1623,7 +1624,7 @@ module GGSN_Tests {
f_init();
var OCT4 ggsn_ip4_dns1 := f_inet_addr(m_ggsn_ip4_dns1);
var OCT4 ggsn_ip4_dns2 := f_inet_addr(m_ggsn_ip4_dns2);
var PdpContext ctx := valueof(t_DefinePDP(f_rnd_imsi('26242'H), '1234'O, c_ApnInet46, valueof(t_EuaIPv4Dynv6Dyn)));
var PdpContext ctx := valueof(t_DefinePDP(f_rnd_imsi('26242'H), "1234", c_ApnInet46, valueof(t_EuaIPv4Dynv6Dyn)));
ctx.pco_req := valueof(ts_PCO_IPv4_DNS_IPCP);
f_pdp_ctx_act(ctx);
f_PCO_ensure_no_duplicates(ctx.pco_neg);
@ -1648,7 +1649,7 @@ module GGSN_Tests {
/* Test PDP context activation for dynamic IPv4v6 EUA with IPv6 DNS in PCO and router solicitation/advertisement */
testcase TC_pdp46_act_deact_icmp6() runs on GT_CT {
f_init();
var PdpContext ctx := valueof(t_DefinePDP(f_rnd_imsi('26242'H), '1234'O, c_ApnInet46, valueof(t_EuaIPv4Dynv6Dyn)));
var PdpContext ctx := valueof(t_DefinePDP(f_rnd_imsi('26242'H), "1234", c_ApnInet46, valueof(t_EuaIPv4Dynv6Dyn)));
ctx.pco_req := valueof(ts_PCO_IPv6_DNS);
f_pdp_ctx_act(ctx);
@ -1664,7 +1665,7 @@ module GGSN_Tests {
testcase TC_pdp46_act_deact_pcodns4() runs on GT_CT {
f_init();
var PdpContext ctx := valueof(t_DefinePDP(f_rnd_imsi('26242'H), '1234'O, c_ApnInet46, valueof(t_EuaIPv4Dynv6Dyn)));
var PdpContext ctx := valueof(t_DefinePDP(f_rnd_imsi('26242'H), "1234", c_ApnInet46, valueof(t_EuaIPv4Dynv6Dyn)));
ctx.pco_req := valueof(ts_PCO_IPv4_DNS_CONT);
f_pdp_ctx_act(ctx);
@ -1688,7 +1689,7 @@ module GGSN_Tests {
testcase TC_pdp46_act_deact_pcodns6() runs on GT_CT {
f_init();
var PdpContext ctx := valueof(t_DefinePDP(f_rnd_imsi('26242'H), '1234'O, c_ApnInet46, valueof(t_EuaIPv4Dynv6Dyn)));
var PdpContext ctx := valueof(t_DefinePDP(f_rnd_imsi('26242'H), "1234", c_ApnInet46, valueof(t_EuaIPv4Dynv6Dyn)));
ctx.pco_req := valueof(ts_PCO_IPv6_DNS);
f_pdp_ctx_act(ctx);
@ -1712,7 +1713,7 @@ module GGSN_Tests {
Test we can send ICMPv6 ping over GTPU to DNS server. */
testcase TC_pdp46_act_deact_gtpu_access() runs on GT_CT {
f_init();
var PdpContext ctx := valueof(t_DefinePDP(f_rnd_imsi('26242'H), '1234'O, c_ApnInet46, valueof(t_EuaIPv4Dynv6Dyn)));
var PdpContext ctx := valueof(t_DefinePDP(f_rnd_imsi('26242'H), "1234", c_ApnInet46, valueof(t_EuaIPv4Dynv6Dyn)));
ctx.pco_req := valueof(ts_PCO_IPv4_DNS_CONT);
f_pdp_ctx_act(ctx);
@ -1730,7 +1731,7 @@ module GGSN_Tests {
/* Assert that packets with wrong ipv4 src addr are dropped by GGSN on APN IPv4v6 */
testcase TC_pdp46_act_deact_gtpu_access_wrong_saddr_ipv4() runs on GT_CT {
f_init();
var PdpContext ctx := valueof(t_DefinePDP(f_rnd_imsi('26242'H), '1234'O, c_ApnInet46, valueof(t_EuaIPv4Dynv6Dyn)));
var PdpContext ctx := valueof(t_DefinePDP(f_rnd_imsi('26242'H), "1234", c_ApnInet46, valueof(t_EuaIPv4Dynv6Dyn)));
ctx.pco_req := valueof(ts_PCO_IPv4_DNS_CONT);
f_pdp_ctx_act(ctx);
@ -1747,7 +1748,7 @@ module GGSN_Tests {
/* Check that attempting RA with another ll src addr won't work, packet dropped: */
testcase TC_pdp46_act_deact_gtpu_access_wrong_ll_saddr_ipv6() runs on GT_CT {
f_init();
var PdpContext ctx := valueof(t_DefinePDP(f_rnd_imsi('26242'H), '1234'O, c_ApnInet46, valueof(t_EuaIPv4Dynv6Dyn)));
var PdpContext ctx := valueof(t_DefinePDP(f_rnd_imsi('26242'H), "1234", c_ApnInet46, valueof(t_EuaIPv4Dynv6Dyn)));
ctx.pco_req := valueof(ts_PCO_IPv4_DNS_CONT);
f_pdp_ctx_act(ctx);
@ -1763,7 +1764,7 @@ module GGSN_Tests {
/* Assert that packets with wrong ipv6 global src addr are dropped by GGSN on APN IPv4v6 */
testcase TC_pdp46_act_deact_gtpu_access_wrong_global_saddr_ipv6() runs on GT_CT {
f_init();
var PdpContext ctx := valueof(t_DefinePDP(f_rnd_imsi('26242'H), '1234'O, c_ApnInet46, valueof(t_EuaIPv4Dynv6Dyn)));
var PdpContext ctx := valueof(t_DefinePDP(f_rnd_imsi('26242'H), "1234", c_ApnInet46, valueof(t_EuaIPv4Dynv6Dyn)));
ctx.pco_req := valueof(ts_PCO_IPv6_DNS);
f_pdp_ctx_act(ctx);
@ -1784,8 +1785,8 @@ module GGSN_Tests {
/* Validate if different clients (pdp ctx) can reach one another through GGSN. */
testcase TC_pdp46_clients_interact() runs on GT_CT {
f_init();
var PdpContext ctxA := valueof(t_DefinePDP(f_rnd_imsi('26242'H), '1234'O, c_ApnInet46, valueof(t_EuaIPv4Dynv6Dyn)));
var PdpContext ctxB := valueof(t_DefinePDP(f_rnd_imsi('26242'H), '1234'O, c_ApnInet46, valueof(t_EuaIPv4Dynv6Dyn)));
var PdpContext ctxA := valueof(t_DefinePDP(f_rnd_imsi('26242'H), "1234", c_ApnInet46, valueof(t_EuaIPv4Dynv6Dyn)));
var PdpContext ctxB := valueof(t_DefinePDP(f_rnd_imsi('26242'H), "1234", c_ApnInet46, valueof(t_EuaIPv4Dynv6Dyn)));
f_pdp_ctx_act(ctxA);
f_send_gtpu(ctxA, f_icmpv6_rs_for_pdp46(ctxA));
f_wait_rtr_adv(ctxA);
@ -1822,7 +1823,7 @@ module GGSN_Tests {
var CreatePDPContextResponse cpr;
f_init();
var PdpContext ctx46 := valueof(t_DefinePDP(f_rnd_imsi('26242'H), '1234'O, c_ApnInternet, valueof(t_EuaIPv4Dynv6Dyn)));
var PdpContext ctx46 := valueof(t_DefinePDP(f_rnd_imsi('26242'H), "1234", c_ApnInternet, valueof(t_EuaIPv4Dynv6Dyn)));
cpr := f_pdp_ctx_act(ctx46, (cause_unknown_pdp, cause_new_pdp_type));
if (cpr.cause.causevalue == cause_new_pdp_type) {
@ -1842,10 +1843,10 @@ module GGSN_Tests {
* IPv4 PDP context and an IPv6 PDP context, both to the same APN. A
* typical MS first attempts v4v6, and if rejected, then tries v4
* and v6 separetly */
var PdpContext ctx4 := valueof(t_DefinePDP(f_rnd_imsi('26242'H), '1234'O, c_ApnInternet, valueof(t_EuaIPv4Dyn)));
var PdpContext ctx4 := valueof(t_DefinePDP(f_rnd_imsi('26242'H), "1234", c_ApnInternet, valueof(t_EuaIPv4Dyn)));
f_pdp_ctx_act(ctx4, cause_accept); /* Normal accept cause */
var PdpContext ctx6 := valueof(t_DefinePDP(f_rnd_imsi('26242'H), '1234'O, c_ApnInternet, valueof(t_EuaIPv6Dyn)));
var PdpContext ctx6 := valueof(t_DefinePDP(f_rnd_imsi('26242'H), "1234", c_ApnInternet, valueof(t_EuaIPv6Dyn)));
f_pdp_ctx_act(ctx6, cause_unknown_pdp); /* Cause: Unknown PDP address or PDP type */
f_pdp_ctx_del(ctx4, '1'B);
@ -1861,8 +1862,8 @@ module GGSN_Tests {
var boolean ctxB_created := false;
f_init();
var PdpContext ctxA := valueof(t_DefinePDP(f_rnd_imsi('26242'H), '1234'O, c_ApnInternet, valueof(t_EuaIPv4Dyn)));
var PdpContext ctxB := valueof(t_DefinePDP(f_rnd_imsi('26242'H), '1234'O, c_ApnInternet, valueof(t_EuaIPv4Dyn)));
var PdpContext ctxA := valueof(t_DefinePDP(f_rnd_imsi('26242'H), "1234", c_ApnInternet, valueof(t_EuaIPv4Dyn)));
var PdpContext ctxB := valueof(t_DefinePDP(f_rnd_imsi('26242'H), "1234", c_ApnInternet, valueof(t_EuaIPv4Dyn)));
f_pdp_ctx_act(ctxA);
g_restart_ctr := int2oct((oct2int(g_restart_ctr) + 1) mod 256, 1);
@ -1922,7 +1923,7 @@ module GGSN_Tests {
detected, saved duplicate response should be sent back. */
testcase TC_act_deact_retrans_duplicate() 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 PdpContext ctx := valueof(t_DefinePDP(f_rnd_imsi('26242'H), "1234", c_ApnInternet, valueof(t_EuaIPv4Dyn)));
f_pdp_ctx_act(ctx);
f_pdp_ctx_del(ctx, '1'B);
/* leave some time in between to make sure retransmit response queue keeps packets for a while */
@ -1945,7 +1946,7 @@ module GGSN_Tests {
g_use_echo_intval := 5;
timer T_echo;
f_init();
var PdpContext ctx := valueof(t_DefinePDP(f_rnd_imsi('26242'H), '1234'O, c_ApnInternet, valueof(t_EuaIPv4Dyn)));
var PdpContext ctx := valueof(t_DefinePDP(f_rnd_imsi('26242'H), "1234", c_ApnInternet, valueof(t_EuaIPv4Dyn)));
f_pdp_ctx_act(ctx);
/* Wait to receive echo request and send initial Restart counter */
@ -2000,7 +2001,7 @@ module GGSN_Tests {
f_init();
for (var integer i := 0; i < num_ctx; i := i + 1) {
ctx[i] := valueof(t_DefinePDP(f_rnd_imsi('26242'H), f_rnd_msisdn('1234'O), c_ApnInternet, valueof(t_EuaIPv4Dyn)));
ctx[i] := valueof(t_DefinePDP(f_rnd_imsi('26242'H), f_dec_TBCD(f_rnd_msisdn('1234'O)), c_ApnInternet, valueof(t_EuaIPv4Dyn)));
ctx[i].teic := int2oct(i+1, 4); /* +1: skip TEIC=0 */
ctx[i].teid := int2oct(i+1, 4); /* +1: skip TEID=0 */
ctx[i].pco_req := valueof(ts_PCO_IPv4_DNS_CONT);
@ -2125,7 +2126,7 @@ module GGSN_Tests {
[] T_next.timeout {
if (cont_req) {
if (next_req_ctx - rx_resp_ctx < 100) { /* if we have too many in progress, wait a bit to continue */
ctx := valueof(t_DefinePDP(f_rnd_imsi('26242'H), f_rnd_msisdn('1234'O), c_ApnInternet, valueof(t_EuaIPv4Dyn)));
ctx := valueof(t_DefinePDP(f_rnd_imsi('26242'H), f_dec_TBCD(f_rnd_msisdn('1234'O)), c_ApnInternet, valueof(t_EuaIPv4Dyn)));
ctx.nsapi := '0001'B;
ctx.teic := int2oct(next_req_ctx+1, 4); /* +1: skip TEIC=0 */
ctx.teid := int2oct(next_req_ctx+1, 4); /* +1: skip TEID=0 */
@ -2208,7 +2209,7 @@ module GGSN_Tests {
g_gy_validity_time := 3; /* Grant access for 3 seconds, needs to be re-validated afterwards */
f_init();
var PdpContext ctx := valueof(t_DefinePDP(f_rnd_imsi('26242'H), '1234567890'O, c_ApnInternet, valueof(t_EuaIPv4Dyn)));
var PdpContext ctx := valueof(t_DefinePDP(f_rnd_imsi('26242'H), "1234", c_ApnInternet, valueof(t_EuaIPv4Dyn)));
ctx.pco_req := valueof(ts_PCO_IPv4_DNS_CONT);
f_pdp_ctx_act(ctx);

View File

@ -10,6 +10,7 @@ BASEDIR=../deps
DIR=$BASEDIR/titan.Libraries.TCCUsefulFunctions/src
FILES="TCCInterface_Functions.ttcn TCCConversion_Functions.ttcn TCCConversion.cc TCCInterface.cc TCCInterface_ip.h"
FILES+=" TCCEncoding_Functions.ttcn TCCEncoding.cc " # BCD coding
gen_links $DIR $FILES
DIR=$BASEDIR/titan.TestPorts.Common_Components.Socket-API/src

View File

@ -18,6 +18,7 @@ FILES="
Native_FunctionDefs.cc
TCCConversion.cc
TCCInterface.cc
TCCEncoding.cc
TELNETasp_PT.cc
UDP_EncDec.cc
"