pespin has uploaded this change for review. ( 
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/27145 )


Change subject: ggsn: Split gtpu_access tests into several separated tests
......................................................................

ggsn: Split gtpu_access tests into several separated tests

Those tests validated several different scenarios, let's better handle
them separately one at a time, it makes it easier to understand the
behavior of the SUT and see what needs to be fixed.

Change-Id: I39342fcf2366030ce743dd4b4773f0fff5d61b9f
---
M ggsn_tests/GGSN_Tests.ttcn
1 file changed, 103 insertions(+), 10 deletions(-)



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

diff --git a/ggsn_tests/GGSN_Tests.ttcn b/ggsn_tests/GGSN_Tests.ttcn
index 5ec535c..cebd6f2 100644
--- a/ggsn_tests/GGSN_Tests.ttcn
+++ b/ggsn_tests/GGSN_Tests.ttcn
@@ -1001,22 +1001,64 @@
                        f_wait_gtpu_fail(ctx);
                }

-               /* Check that attempting RA with another ll src addr won't 
work, packet dropped: */
-               var OCT16 saddr_ll_wrong := f_ipv6_mangle(saddr_ll, 8);
-               f_send_gtpu(ctx, 
f_gen_icmpv6_router_solicitation(saddr_ll_wrong));
-               f_wait_gtpu_fail(ctx);
-
                /* Check if we can use valid global src addr, should work */
                var OCT16 saddr_glob := 
f_ipv6_global(ctx.eua.endUserAddress.endUserAddressIPv6.ipv6_address);
                f_send_gtpu(ctx, f_gen_icmpv6_echo(saddr_glob, dns1_addr));
                f_wait_icmp6_echo_reply(ctx);

-               /* Assert that packets with wrong global src addr are dropped 
by GGSN */
+               f_pdp_ctx_del(ctx, '1'B);
+       }
+
+       /* 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)));
+               ctx.pco_req := valueof(ts_PCO_IPv6_DNS);
+               f_pdp_ctx_act(ctx);
+
+               f_send_gtpu(ctx, f_icmpv6_rs_for_pdp(ctx));
+               f_wait_rtr_adv(ctx);
+               f_send_gtpu(ctx, f_gen_icmpv6_neigh_solicit_for_pdp(ctx));
+
+               var OCT16 saddr_ll := 
f_ipv6_link_local(ctx.eua.endUserAddress.endUserAddressIPv6.ipv6_address);
+               var OCT16 saddr_ll_wrong := f_ipv6_mangle(saddr_ll, 8);
+               f_send_gtpu(ctx, 
f_gen_icmpv6_router_solicitation(saddr_ll_wrong));
+               f_wait_gtpu_fail(ctx);
+
+               f_pdp_ctx_del(ctx, '1'B);
+       }
+
+       /* 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)));
+               ctx.pco_req := valueof(ts_PCO_IPv6_DNS);
+               f_pdp_ctx_act(ctx);
+
+               f_send_gtpu(ctx, f_icmpv6_rs_for_pdp(ctx));
+               f_wait_rtr_adv(ctx);
+               f_send_gtpu(ctx, f_gen_icmpv6_neigh_solicit_for_pdp(ctx));
+
+               var OCT16 dns1_addr := f_PCO_extract_proto(ctx.pco_neg, 
'0003'O);
+               var OCT16 saddr_glob := 
f_ipv6_global(ctx.eua.endUserAddress.endUserAddressIPv6.ipv6_address);
                var OCT16 saddr_wrong := f_ipv6_mangle(saddr_glob);
                f_send_gtpu(ctx, f_gen_icmpv6_echo(saddr_wrong, dns1_addr));
                f_wait_gtpu_fail(ctx);

-               /* Send an IPv4 ICMP ECHO REQUEST to APN6, should fail (packet 
dropped) */
+               f_pdp_ctx_del(ctx, '1'B);
+       }
+
+       /* 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)));
+               ctx.pco_req := valueof(ts_PCO_IPv6_DNS);
+               f_pdp_ctx_act(ctx);
+
+               f_send_gtpu(ctx, f_icmpv6_rs_for_pdp(ctx));
+               f_wait_rtr_adv(ctx);
+               f_send_gtpu(ctx, f_gen_icmpv6_neigh_solicit_for_pdp(ctx));
+
                var OCT4 saddr_v4 := f_inet_addr("192.168.10.2");
                var OCT4 daddr_v4 := f_inet_addr("8.8.8.8");
                f_send_gtpu(ctx, f_gen_icmpv4_echo(saddr_v4, daddr_v4));
@@ -1161,15 +1203,38 @@
                f_send_gtpu(ctx, f_gen_icmpv4_echo(saddr, dns1_addr));
                f_wait_icmp4_echo_reply(ctx);

-               /* Assert that packets with wrong global src addr are dropped 
by GGSN */
+               f_pdp_ctx_del(ctx, '1'B);
+       }
+
+       /* 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)));
+               ctx.pco_req := valueof(ts_PCO_IPv4_DNS_CONT);
+               f_pdp_ctx_act(ctx);
+
+               f_PCO_ensure_no_duplicates(ctx.pco_neg);
+               var OCT4 dns1_addr := f_PCO_extract_proto(ctx.pco_neg, '000d'O);
+               var OCT4 saddr := 
ctx.eua.endUserAddress.endUserAddressIPv4.ipv4_address;
                var OCT4 saddr_wrong := substr(saddr, 0, 3) & (saddr[3] xor4b 
'11'O);
                f_send_gtpu(ctx, f_gen_icmpv4_echo(saddr_wrong, dns1_addr));
                f_wait_gtpu_fail(ctx);

+               f_pdp_ctx_del(ctx, '1'B);
+       }
+
+       /* 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)));
+               ctx.pco_req := valueof(ts_PCO_IPv4_DNS_CONT);
+               f_pdp_ctx_act(ctx);
+
                /* Send an IPv6 RA to APN4, should fail (packet dropped) */
                var OCT16 saddr_v6 := 
f_inet6_addr("fde4:8dba:82e1:2000:1:2:3:4");
                f_send_gtpu(ctx, f_gen_icmpv6_router_solicitation(saddr_v6));
                f_wait_gtpu_fail(ctx);
+
                f_pdp_ctx_del(ctx, '1'B);
        }

@@ -1415,15 +1480,36 @@
                f_send_gtpu(ctx, f_gen_icmpv4_echo(saddr, dns1_addr));
                f_wait_icmp4_echo_reply(ctx);

-               /* Assert that packets with wrong global src addr are dropped 
by GGSN */
+               f_pdp_ctx_del(ctx, '1'B);
+       }
+
+       /* 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)));
+               ctx.pco_req := valueof(ts_PCO_IPv4_DNS_CONT);
+               f_pdp_ctx_act(ctx);
+
+               var OCT4 dns1_addr := f_PCO_extract_proto(ctx.pco_neg, '000d'O);
+               var OCT4 saddr := 
ctx.eua.endUserAddress.endUserAddressIPv4andIPv6.ipv4_address;
                var OCT4 saddr_wrong := substr(saddr, 0, 3) & (saddr[3] xor4b 
'11'O);
                f_send_gtpu(ctx, f_gen_icmpv4_echo(saddr_wrong, dns1_addr));
                f_wait_gtpu_fail(ctx);

-               /* Send an IPv6 RA to APN4, should fail (packet dropped) */
+               f_pdp_ctx_del(ctx, '1'B);
+       }
+
+       /* 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)));
+               ctx.pco_req := valueof(ts_PCO_IPv4_DNS_CONT);
+               f_pdp_ctx_act(ctx);
+
                var OCT16 saddr_v6 := 
f_inet6_addr("fde4:8dba:82e1:2000:1:2:3:4");
                f_send_gtpu(ctx, f_gen_icmpv6_router_solicitation(saddr_v6));
                f_wait_gtpu_fail(ctx);
+
                f_pdp_ctx_del(ctx, '1'B);
        }

@@ -1591,6 +1677,8 @@
                execute(TC_pdp4_act_deact_ipcp_pap_broken());
                execute(TC_pdp4_act_deact_pcodns());
                execute(TC_pdp4_act_deact_gtpu_access());
+               execute(TC_pdp4_act_deact_gtpu_access_wrong_saddr());
+               execute(TC_pdp4_act_deact_gtpu_access_ipv6_apn4());
                execute(TC_pdp4_clients_interact_with_txseq());
                execute(TC_pdp4_clients_interact_without_txseq());
                execute(TC_pdp4_act_deact_with_single_dns());
@@ -1600,6 +1688,9 @@
                execute(TC_pdp6_act_deact_pcodns());
                execute(TC_pdp6_act_deact_icmp6());
                execute(TC_pdp6_act_deact_gtpu_access());
+               execute(TC_pdp6_act_deact_gtpu_access_wrong_ll_saddr());
+               execute(TC_pdp6_act_deact_gtpu_access_wrong_global_saddr());
+               execute(TC_pdp6_act_deact_gtpu_access_ipv4_apn6());
                execute(TC_pdp6_clients_interact());

                execute(TC_pdp46_act_deact());
@@ -1608,6 +1699,8 @@
                execute(TC_pdp46_act_deact_pcodns4());
                execute(TC_pdp46_act_deact_pcodns6());
                execute(TC_pdp46_act_deact_gtpu_access());
+               execute(TC_pdp46_act_deact_gtpu_access_wrong_saddr_ipv4());
+               
execute(TC_pdp46_act_deact_gtpu_access_wrong_global_saddr_ipv6());
                execute(TC_pdp46_clients_interact());
                execute(TC_pdp46_act_deact_apn4());


--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/27145
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: I39342fcf2366030ce743dd4b4773f0fff5d61b9f
Gerrit-Change-Number: 27145
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <[email protected]>
Gerrit-MessageType: newchange

Reply via email to