GGSN_Tests: Sequence numbers are node-global and not per-PDP context
This commit is contained in:
parent
ed7a17750f
commit
5438b9dc27
|
@ -33,11 +33,7 @@ module GGSN_Tests {
|
||||||
/* TEI (Data) remote side */
|
/* TEI (Data) remote side */
|
||||||
OCT4 teid_remote,
|
OCT4 teid_remote,
|
||||||
/* TEI (Control) remote side */
|
/* TEI (Control) remote side */
|
||||||
OCT4 teic_remote,
|
OCT4 teic_remote
|
||||||
/* next to-be-sent GTP-C sequence number */
|
|
||||||
uint16_t c_seq_nr,
|
|
||||||
/* next to-be-sent GTP-U sequence number */
|
|
||||||
uint16_t d_seq_nr
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type component GT_CT {
|
type component GT_CT {
|
||||||
|
@ -52,6 +48,11 @@ module GGSN_Tests {
|
||||||
var GtpPeer g_peer_c := { connId := 0, remName := "127.0.0.6", remPort := GTP1C_PORT };
|
var GtpPeer g_peer_c := { connId := 0, remName := "127.0.0.6", remPort := GTP1C_PORT };
|
||||||
var GtpPeer g_peer_u := { connId := 0, remName := "127.0.0.6", remPort := GTP1U_PORT };
|
var GtpPeer g_peer_u := { connId := 0, remName := "127.0.0.6", remPort := GTP1U_PORT };
|
||||||
timer T_default := 3.0;
|
timer T_default := 3.0;
|
||||||
|
|
||||||
|
/* next to-be-sent GTP-C sequence number */
|
||||||
|
var uint16_t g_c_seq_nr;
|
||||||
|
/* next to-be-sent GTP-U sequence number */
|
||||||
|
var uint16_t g_d_seq_nr;
|
||||||
}
|
}
|
||||||
|
|
||||||
function f_init() runs on GT_CT {
|
function f_init() runs on GT_CT {
|
||||||
|
@ -64,6 +65,10 @@ module GGSN_Tests {
|
||||||
map(self:GTPU, system:GTPU);
|
map(self:GTPU, system:GTPU);
|
||||||
res := GTP_CodecPort_CtrlFunct.f_GTPU_listen(GTPU, g_bind_ip_u, GTP1U_PORT, {udp:={}});
|
res := GTP_CodecPort_CtrlFunct.f_GTPU_listen(GTPU, g_bind_ip_u, GTP1U_PORT, {udp:={}});
|
||||||
g_peer_u.connId:= res.connId;
|
g_peer_u.connId:= res.connId;
|
||||||
|
|
||||||
|
g_restart_ctr := f_rnd_octstring(1);
|
||||||
|
g_c_seq_nr := (oct2int(g_restart_ctr) * 1024) mod 65536;
|
||||||
|
g_d_seq_nr := (oct2int(g_restart_ctr) * 2000) mod 65536;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* generalized GTP-C receive template */
|
/* generalized GTP-C receive template */
|
||||||
|
@ -500,21 +505,19 @@ module GGSN_Tests {
|
||||||
pco_req := omit,
|
pco_req := omit,
|
||||||
eua := eua,
|
eua := eua,
|
||||||
teid := f_rnd_tei(),
|
teid := f_rnd_tei(),
|
||||||
teic := f_rnd_tei(),
|
teic := f_rnd_tei()
|
||||||
d_seq_nr := 0,
|
|
||||||
c_seq_nr := 0
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* send GTP-C for a given context and increment sequence number */
|
/* send GTP-C for a given context and increment sequence number */
|
||||||
function f_send_gtpc(inout PdpContext ctx, in template Gtp1cUnitdata data) runs on GT_CT {
|
function f_send_gtpc(inout PdpContext ctx, in template Gtp1cUnitdata data) runs on GT_CT {
|
||||||
GTPC.send(data);
|
GTPC.send(data);
|
||||||
ctx.c_seq_nr := ctx.c_seq_nr + 1;
|
g_c_seq_nr := g_c_seq_nr + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* send GTP-U for a given context and increment sequence number */
|
/* send GTP-U for a given context and increment sequence number */
|
||||||
function f_send_gtpu(inout PdpContext ctx, in octetstring data) runs on GT_CT {
|
function f_send_gtpu(inout PdpContext ctx, in octetstring data) runs on GT_CT {
|
||||||
GTPU.send(ts_GTP1U_GPDU(g_peer_u, ctx.d_seq_nr, ctx.teid_remote, data));
|
GTPU.send(ts_GTP1U_GPDU(g_peer_u, g_d_seq_nr, ctx.teid_remote, data));
|
||||||
ctx.d_seq_nr := ctx.d_seq_nr + 1;
|
g_d_seq_nr := g_d_seq_nr + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* send a PDP context activation */
|
/* send a PDP context activation */
|
||||||
|
@ -523,7 +526,7 @@ module GGSN_Tests {
|
||||||
var default d;
|
var default d;
|
||||||
|
|
||||||
log("sending CreatePDP");
|
log("sending CreatePDP");
|
||||||
f_send_gtpc(ctx, ts_GTPC_CreatePDP(g_peer_c, ctx.c_seq_nr, ctx.imsi, g_restart_ctr,
|
f_send_gtpc(ctx, ts_GTPC_CreatePDP(g_peer_c, g_c_seq_nr, ctx.imsi, g_restart_ctr,
|
||||||
ctx.teid, ctx.teic, ctx.nsapi, ctx.eua, ctx.apn,
|
ctx.teid, ctx.teic, ctx.nsapi, ctx.eua, ctx.apn,
|
||||||
g_sgsn_ip_c, g_sgsn_ip_u, ctx.msisdn, ctx.pco_req));
|
g_sgsn_ip_c, g_sgsn_ip_u, ctx.msisdn, ctx.pco_req));
|
||||||
T_default.start;
|
T_default.start;
|
||||||
|
@ -550,7 +553,7 @@ module GGSN_Tests {
|
||||||
var Gtp1cUnitdata ud;
|
var Gtp1cUnitdata ud;
|
||||||
var default d;
|
var default d;
|
||||||
|
|
||||||
f_send_gtpc(ctx, ts_GTPC_DeletePDP(g_peer_c, ctx.c_seq_nr, ctx.teic_remote, ctx.nsapi, teardown_ind));
|
f_send_gtpc(ctx, ts_GTPC_DeletePDP(g_peer_c, g_c_seq_nr, ctx.teic_remote, ctx.nsapi, teardown_ind));
|
||||||
T_default.start;
|
T_default.start;
|
||||||
d := activate(pingpong());
|
d := activate(pingpong());
|
||||||
alt {
|
alt {
|
||||||
|
|
Loading…
Reference in New Issue