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
This commit is contained in:
parent
5760421255
commit
c6ac6950c2
|
@ -1512,15 +1512,36 @@ module GGSN_Tests {
|
|||
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 {
|
||||
/* 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_v6 := f_inet6_addr("fde4:8dba:82e1:2000:1:2:3:4");
|
||||
f_send_gtpu(ctx, f_gen_icmpv6_router_solicitation(saddr_v6));
|
||||
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_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.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());
|
||||
|
|
Loading…
Reference in New Issue