WIP: add TC_pdp46_clients_interact
Change-Id: I99c58e3412c3b2b68f7fbff16443fb73940a4bb0
This commit is contained in:
parent
62cd07948a
commit
4a0df5b5eb
|
@ -701,6 +701,25 @@ module GGSN_Tests {
|
|||
f_wait_icmp6(ctx, (tr_ICMPv6_ERP,tr_ICMPv6_DU));
|
||||
}
|
||||
|
||||
/* new block */
|
||||
|
||||
/* create ICMPv6 router solicitation deriving link-id from PDP Context EUA */
|
||||
function f_icmpv6_rs_for_pdp46(in PdpContext ctx) return octetstring {
|
||||
var OCT16 interface_id := ctx.eua.endUserAddress.endUserAddressIPv4andIPv6.ipv6_address;
|
||||
return f_gen_icmpv6_router_solicitation(interface_id);
|
||||
}
|
||||
|
||||
/* generate and encode ICMPv6 neighbor solicitation for PDP Context */
|
||||
function f_gen_icmpv6_neigh_solicit_for_pdp46(in PdpContext ctx) return octetstring {
|
||||
var OCT16 interface_id := ctx.eua.endUserAddress.endUserAddressIPv4andIPv6.ipv6_address;
|
||||
var OCT16 link_local := f_ipv6_link_local(interface_id);
|
||||
var OCT16 daddr := f_ipv6_sol_node_mcast(link_local);
|
||||
|
||||
return f_gen_icmpv6_neigh_solicit(link_local, daddr, link_local);
|
||||
}
|
||||
|
||||
/* new block end */
|
||||
|
||||
/* Assert we don't receive a ICMPv4/6 echo reply (or unreachable) from GTP */
|
||||
function f_wait_gtpu_fail(PdpContext ctx) runs on GT_CT {
|
||||
T_default.start;
|
||||
|
@ -1135,6 +1154,36 @@ module GGSN_Tests {
|
|||
f_pdp_ctx_del(ctx, '1'B);
|
||||
}
|
||||
|
||||
/* 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)));
|
||||
f_pdp_ctx_act(ctxA);
|
||||
f_send_gtpu(ctxA, f_icmpv6_rs_for_pdp46(ctxA));
|
||||
f_wait_rtr_adv(ctxA);
|
||||
f_send_gtpu(ctxA, f_gen_icmpv6_neigh_solicit_for_pdp46(ctxA));
|
||||
|
||||
f_pdp_ctx_act(ctxB);
|
||||
f_send_gtpu(ctxB, f_icmpv6_rs_for_pdp46(ctxB));
|
||||
f_wait_rtr_adv(ctxB);
|
||||
f_send_gtpu(ctxB, f_gen_icmpv6_neigh_solicit_for_pdp46(ctxB));
|
||||
|
||||
var OCT16 addrA_ll := f_ipv6_link_local(ctxA.eua.endUserAddress.endUserAddressIPv4andIPv6.ipv6_address);
|
||||
var OCT16 addrB_ll := f_ipv6_link_local(ctxB.eua.endUserAddress.endUserAddressIPv4andIPv6.ipv6_address);
|
||||
var OCT16 addrA_glob := f_ipv6_global(ctxA.eua.endUserAddress.endUserAddressIPv4andIPv6.ipv6_address);
|
||||
var OCT16 addrB_glob := f_ipv6_global(ctxB.eua.endUserAddress.endUserAddressIPv4andIPv6.ipv6_address);
|
||||
|
||||
/* Validate if clients can interact using ll addr. */
|
||||
f_send_gtpu(ctxA, f_gen_icmpv6_echo(addrA_ll, addrB_ll));
|
||||
f_wait_gtpu_fail(ctxB);
|
||||
|
||||
/* Validate if clients can interact using global addr. */
|
||||
f_send_gtpu(ctxA, f_gen_icmpv6_echo(addrA_glob, addrB_glob));
|
||||
f_wait_gtpu_fail(ctxB);
|
||||
|
||||
f_pdp_ctx_del(ctxA, '1'B);
|
||||
}
|
||||
|
||||
control {
|
||||
execute(TC_pdp4_act_deact());
|
||||
|
@ -1157,6 +1206,7 @@ module GGSN_Tests {
|
|||
execute(TC_pdp46_act_deact_pcodns4());
|
||||
execute(TC_pdp46_act_deact_pcodns6());
|
||||
execute(TC_pdp46_act_deact_gtpu_access());
|
||||
execute(TC_pdp46_clients_interact());
|
||||
|
||||
execute(TC_echo_req_resp());
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue