pespin has submitted this change. (
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/35701?usp=email )
Change subject: ggsn: Validate IPCP identifier in answer matches the one in the request
......................................................................
ggsn: Validate IPCP identifier in answer matches the one in the request
Related:
https://github.com/open5gs/open5gs/pull/2920
Related: SYS#6582
Change-Id: I0e0cefaeb303b4e284173011231170554e225561
---
M ggsn_tests/GGSN_Tests.ttcn
M library/GTP_Templates.ttcn
2 files changed, 22 insertions(+), 6 deletions(-)
Approvals:
Jenkins Builder: Verified
laforge: Looks good to me, approved
osmith: Looks good to me, but someone else must approve
diff --git a/ggsn_tests/GGSN_Tests.ttcn b/ggsn_tests/GGSN_Tests.ttcn
index d7de443..c949dc9 100644
--- a/ggsn_tests/GGSN_Tests.ttcn
+++ b/ggsn_tests/GGSN_Tests.ttcn
@@ -1489,8 +1489,9 @@
f_init();
var OCT4 ggsn_ip4_dns1 := f_inet_addr(m_ggsn_ip4_dns1);
var OCT4 ggsn_ip4_dns2 := f_inet_addr(m_ggsn_ip4_dns2);
+ var uint8_t ipcp_req_id := oct2int(f_rnd_octstring(1));
var PdpContext ctx := valueof(t_DefinePDP(f_rnd_imsi('26242'H),
"1234", c_ApnInternet, valueof(t_EuaIPv4Dyn)));
- ctx.pco_req := valueof(ts_PCO_IPv4_DNS_IPCP);
+ ctx.pco_req := valueof(ts_PCO_IPv4_DNS_IPCP(ipcp_req_id));
f_pdp_ctx_act(ctx);
f_PCO_ensure_no_duplicates(ctx.pco_neg);
/* verify IPCP is at all contained */
@@ -1499,9 +1500,13 @@
}
/* verify IPCP contains both primary and secondary DNS */
var IpcpPacket ipcp := dec_IpcpPacket(f_PCO_extract_proto(ctx.pco_neg,
'8021'O));
- if (not match(ipcp, tr_IPCP_Ack_DNS(0, ggsn_ip4_dns1, ggsn_ip4_dns2))) {
- if (not match(ipcp, tr_IPCP_Ack_DNS(0))) {
- setverdict(fail, "Primary/Secondary DNS PCO IPCP option not found");
+ if (not match(ipcp, tr_IPCP_Ack_DNS(ipcp_req_id, ggsn_ip4_dns1, ggsn_ip4_dns2))) {
+ if (not match(ipcp, tr_IPCP_Ack_DNS(ipcp_req_id))) {
+ if (not match(ipcp, tr_IPCP_Ack_DNS(?))) {
+ setverdict(fail, "Primary/Secondary DNS PCO IPCP option not found");
+ } else {
+ setverdict(fail, "Primary/Secondary DNS PCO IPCP option found but not matching
expected identifier");
+ }
} else {
setverdict(fail, "Primary/Secondary DNS PCO IPCP option found but not matching
expected values");
}
diff --git a/library/GTP_Templates.ttcn b/library/GTP_Templates.ttcn
index 3788725..30346d4 100644
--- a/library/GTP_Templates.ttcn
+++ b/library/GTP_Templates.ttcn
@@ -973,13 +973,13 @@
}
}
- template (value) ProtConfigOptions ts_PCO_IPv4_DNS_IPCP modifies ts_PCO := {
+ template (value) ProtConfigOptions ts_PCO_IPv4_DNS_IPCP(uint8_t ipcp_req_id := 0)
modifies ts_PCO := {
protocols := {
/* dummy PAP entry to check if our parser in the GGSN can properly iterate over
* the list of protocols, see Change-Id Icc2e6716c33d78d3c3e000f529806228d8aa155e */
{ protocolID := 'C023'O, lengthProtoID := 0, protoIDContents := ''O
},
{ protocolID := '8021'O, lengthProtoID := 16, protoIDContents :=
- enc_IpcpPacket(valueof(ts_IPCP_ReqDNS)) }
+ enc_IpcpPacket(valueof(ts_IPCP_ReqDNS(ipcp_req_id))) }
}
}
--
To view, visit
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/35701?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: I0e0cefaeb303b4e284173011231170554e225561
Gerrit-Change-Number: 35701
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <pespin(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: osmith <osmith(a)sysmocom.de>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-MessageType: merged