diff options
author | Pau Espin Pedrol <pespin@sysmocom.de> | 2022-02-14 11:19:23 +0100 |
---|---|---|
committer | pespin <pespin@sysmocom.de> | 2022-02-15 17:13:00 +0000 |
commit | c6ac6950c23fdafc09e7d98d619acc77ef996b95 (patch) | |
tree | fb5a7eb5ccb22fa53d23644dd86905a46043e452 /ggsn_tests | |
parent | 5760421255994fadaac60835c6c223e18bf0262c (diff) |
ggsn: Rework tests validating wrong ipv6 saddr on IPv4v6 APNs
The existing test TC_pdp46_act_deact_gtpu_access_wrong_global_saddr_ipv6
was wrong, because the global address was being finally encoded as a
link local address by f_gen_icmpv6_router_solicitation().
Let's rewrite the test and add a new one for source link local addresses
simlar to the ones used to test IPv6-only APNs.
Change-Id: I3d0790104abea7acb4fa5e33109fe93cc51d94ea
Diffstat (limited to 'ggsn_tests')
-rw-r--r-- | ggsn_tests/GGSN_Tests.ttcn | 28 |
1 files changed, 25 insertions, 3 deletions
diff --git a/ggsn_tests/GGSN_Tests.ttcn b/ggsn_tests/GGSN_Tests.ttcn index 4ea7cf46..8f4e7094 100644 --- a/ggsn_tests/GGSN_Tests.ttcn +++ b/ggsn_tests/GGSN_Tests.ttcn @@ -1512,15 +1512,36 @@ module GGSN_Tests { f_pdp_ctx_del(ctx, '1'B); } + /* 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))); + ctx.pco_req := valueof(ts_PCO_IPv4_DNS_CONT); + f_pdp_ctx_act(ctx); + + var OCT16 saddr_ll := f_ipv6_link_local(ctx.eua.endUserAddress.endUserAddressIPv4andIPv6.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 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); + ctx.pco_req := valueof(ts_PCO_IPv6_DNS); 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_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.endUserAddressIPv4andIPv6.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); f_pdp_ctx_del(ctx, '1'B); @@ -1713,6 +1734,7 @@ module GGSN_Tests { 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_ll_saddr_ipv6()); execute(TC_pdp46_act_deact_gtpu_access_wrong_global_saddr_ipv6()); execute(TC_pdp46_clients_interact()); execute(TC_pdp46_act_deact_apn4()); |