GGSN_Tests: Actually request the right IPv4 PCO according to the test case
Missing: Verification of returned PCO
This commit is contained in:
parent
11dbc7b6cc
commit
dca8005080
|
@ -14,3 +14,5 @@ GGSN_Tests.TC_pdp4_act_deact_pcodns
|
||||||
GGSN_Tests.TC_pdp6_act_deact
|
GGSN_Tests.TC_pdp6_act_deact
|
||||||
GGSN_Tests.TC_pdp6_act_deact_pcodns
|
GGSN_Tests.TC_pdp6_act_deact_pcodns
|
||||||
GGSN_Tests.TC_pdp6_act_deact_icmp6
|
GGSN_Tests.TC_pdp6_act_deact_icmp6
|
||||||
|
|
||||||
|
GGSN_Tests.TC_echo_req_resp
|
||||||
|
|
|
@ -79,7 +79,7 @@ module GGSN_Tests {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* generalized GTP-C receive template */
|
/* generalized GTP-C receive template */
|
||||||
template PDU_GTPC tr_GTP1C_PDU(template OCT1 msg_type, template OCT4 teid) := {
|
template PDU_GTPC tr_GTP1C_PDU(template OCT1 msg_type, template OCT4 teid, template GTPC_PDUs pdu := ?) := {
|
||||||
/* N-PDU Number flag (PN) shall be set to '0'. A GTP-C receiver shall not return an
|
/* N-PDU Number flag (PN) shall be set to '0'. A GTP-C receiver shall not return an
|
||||||
* error if this flag is set to '1'. */
|
* error if this flag is set to '1'. */
|
||||||
pn_bit := '0'B,
|
pn_bit := '0'B,
|
||||||
|
@ -95,7 +95,7 @@ module GGSN_Tests {
|
||||||
lengthf := ?,
|
lengthf := ?,
|
||||||
teid := teid,
|
teid := teid,
|
||||||
opt_part := *,
|
opt_part := *,
|
||||||
gtpc_pdu := ?
|
gtpc_pdu := pdu
|
||||||
}
|
}
|
||||||
|
|
||||||
/* generalized GTP-C send template */
|
/* generalized GTP-C send template */
|
||||||
|
@ -125,25 +125,37 @@ module GGSN_Tests {
|
||||||
|
|
||||||
/* recovery IE */
|
/* recovery IE */
|
||||||
template Recovery_gtpc ts_Recovery(OCT1 restart_counter) := {
|
template Recovery_gtpc ts_Recovery(OCT1 restart_counter) := {
|
||||||
type_gtpc := '00'O, /* we assume encoder fixes this */
|
type_gtpc := '0E'O,
|
||||||
|
restartCounter := restart_counter
|
||||||
|
}
|
||||||
|
|
||||||
|
template Recovery_gtpc tr_Recovery(template OCT1 restart_counter) := {
|
||||||
|
type_gtpc := '0E'O,
|
||||||
restartCounter := restart_counter
|
restartCounter := restart_counter
|
||||||
}
|
}
|
||||||
|
|
||||||
/* template matching reception of GTP-C echo-request */
|
/* template matching reception of GTP-C echo-request */
|
||||||
template Gtp1cUnitdata tr_GTPC_MsgType(template GtpPeer peer, template OCT1 msg_type, template OCT4 teid) := {
|
template Gtp1cUnitdata tr_GTPC_MsgType(template GtpPeer peer, template OCT1 msg_type, template OCT4 teid, template GTPC_PDUs pdus := ?) := {
|
||||||
peer := peer,
|
peer := peer,
|
||||||
gtpc := tr_GTP1C_PDU(msg_type, teid)
|
gtpc := tr_GTP1C_PDU(msg_type, teid, pdus)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* template matching reception of GTP-C echo-request */
|
/* template matching reception of GTP-C echo-request */
|
||||||
template Gtp1cUnitdata tr_GTPC_PING(template GtpPeer peer) := tr_GTPC_MsgType(peer, echoRequest, '00000000'O);
|
template Gtp1cUnitdata tr_GTPC_PING(template GtpPeer peer) := tr_GTPC_MsgType(peer, echoRequest, '00000000'O);
|
||||||
|
|
||||||
|
template GTPC_PDUs tr_EchoRespPDU(template OCT1 restart_counter) := {
|
||||||
|
echoResponse := {
|
||||||
|
recovery := tr_Recovery(restart_counter),
|
||||||
|
private_extension_gtpc := *
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* template matching reception of GTP-C echo-response */
|
||||||
|
template Gtp1cUnitdata tr_GTPC_PONG(template GtpPeer peer) := tr_GTPC_MsgType(peer, echoResponse, '00000000'O, tr_EchoRespPDU(?));
|
||||||
|
|
||||||
template GTPC_PDUs ts_EchoRespPDU(OCT1 restart_counter) := {
|
template GTPC_PDUs ts_EchoRespPDU(OCT1 restart_counter) := {
|
||||||
echoResponse := {
|
echoResponse := {
|
||||||
recovery := {
|
recovery := ts_Recovery(restart_counter),
|
||||||
type_gtpc := '00'O, /* we assume encoder fixes? */
|
|
||||||
restartCounter := restart_counter
|
|
||||||
},
|
|
||||||
private_extension_gtpc := omit
|
private_extension_gtpc := omit
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -154,6 +166,18 @@ module GGSN_Tests {
|
||||||
gtpc := ts_GTP1C_PDU(echoResponse, '00000000'O, valueof(ts_EchoRespPDU(rest_ctr)), seq)
|
gtpc := ts_GTP1C_PDU(echoResponse, '00000000'O, valueof(ts_EchoRespPDU(rest_ctr)), seq)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template GTPC_PDUs ts_EchoReqPDU := {
|
||||||
|
echoRequest := {
|
||||||
|
private_extension_gtpc := omit
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* master template for sending a GTP-C echo request */
|
||||||
|
template Gtp1cUnitdata ts_GTPC_PING(GtpPeer peer, uint16_t seq) := {
|
||||||
|
peer := peer,
|
||||||
|
gtpc := ts_GTP1C_PDU(echoRequest, '00000000'O, valueof(ts_EchoReqPDU), seq)
|
||||||
|
}
|
||||||
|
|
||||||
template EndUserAddress t_EuaIPv4(template OCT4 ip_addr) := {
|
template EndUserAddress t_EuaIPv4(template OCT4 ip_addr) := {
|
||||||
type_gtpc := '80'O,
|
type_gtpc := '80'O,
|
||||||
endUserAddress := {
|
endUserAddress := {
|
||||||
|
@ -836,6 +860,7 @@ module GGSN_Tests {
|
||||||
testcase TC_pdp4_act_deact_ipcp() runs on GT_CT {
|
testcase TC_pdp4_act_deact_ipcp() runs on GT_CT {
|
||||||
f_init();
|
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'O, c_ApnInternet, valueof(t_EuaIPv4Dyn)));
|
||||||
|
ctx.pco_req := valueof(ts_PCO_IPv4_DNS_IPCP);
|
||||||
f_pdp_ctx_act(ctx);
|
f_pdp_ctx_act(ctx);
|
||||||
f_pdp_ctx_del(ctx, '1'B);
|
f_pdp_ctx_del(ctx, '1'B);
|
||||||
}
|
}
|
||||||
|
@ -843,10 +868,23 @@ module GGSN_Tests {
|
||||||
testcase TC_pdp4_act_deact_pcodns() runs on GT_CT {
|
testcase TC_pdp4_act_deact_pcodns() runs on GT_CT {
|
||||||
f_init();
|
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'O, c_ApnInternet, valueof(t_EuaIPv4Dyn)));
|
||||||
|
ctx.pco_req := valueof(ts_PCO_IPv4_DNS_CONT);
|
||||||
f_pdp_ctx_act(ctx);
|
f_pdp_ctx_act(ctx);
|
||||||
f_pdp_ctx_del(ctx, '1'B);
|
f_pdp_ctx_del(ctx, '1'B);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
testcase TC_echo_req_resp() runs on GT_CT {
|
||||||
|
f_init();
|
||||||
|
f_send_gtpc(ts_GTPC_PING(g_peer_c, g_c_seq_nr));
|
||||||
|
T_default.start;
|
||||||
|
alt {
|
||||||
|
[] GTPC.receive(tr_GTPC_PONG(g_peer_c)) { setverdict(pass); };
|
||||||
|
[] GTPC.receive { repeat; };
|
||||||
|
[] T_default.timeout { setverdict(fail); }
|
||||||
|
}
|
||||||
|
T_default.stop;
|
||||||
|
}
|
||||||
|
|
||||||
control {
|
control {
|
||||||
execute(TC_pdp4_act_deact());
|
execute(TC_pdp4_act_deact());
|
||||||
execute(TC_pdp4_act_deact_ipcp());
|
execute(TC_pdp4_act_deact_ipcp());
|
||||||
|
@ -855,5 +893,7 @@ module GGSN_Tests {
|
||||||
execute(TC_pdp6_act_deact());
|
execute(TC_pdp6_act_deact());
|
||||||
execute(TC_pdp6_act_deact_pcodns());
|
execute(TC_pdp6_act_deact_pcodns());
|
||||||
execute(TC_pdp6_act_deact_icmp6());
|
execute(TC_pdp6_act_deact_icmp6());
|
||||||
|
|
||||||
|
execute(TC_echo_req_resp());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue