pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/27423 )
Change subject: ggsn: Emulate OCS ......................................................................
ggsn: Emulate OCS
Change-Id: I10027d4f8adc6b47ce97b90514d1f13e9aa3d40d --- M ggsn_tests/GGSN_Tests.ttcn M library/DIAMETER_Templates.ttcn 2 files changed, 27 insertions(+), 1 deletion(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/23/27423/1
diff --git a/ggsn_tests/GGSN_Tests.ttcn b/ggsn_tests/GGSN_Tests.ttcn index 7a7ff97..02b5aa4 100644 --- a/ggsn_tests/GGSN_Tests.ttcn +++ b/ggsn_tests/GGSN_Tests.ttcn @@ -39,6 +39,7 @@ const integer GTP1C_PORT := 2123; const integer GTP1U_PORT := 2152; const integer PCRF_PORT := 3868; + const integer OCS_PORT := 3869;
type enumerated GGSN_Impl { GGSN_IMPL_OSMOCOM, @@ -128,6 +129,9 @@ var DIAMETER_Emulation_CT vc_Gx; port DIAMETER_PT Gx_UNIT; port DIAMETEREM_PROC_PT Gx_PROC; + var DIAMETER_Emulation_CT vc_Gy; + port DIAMETER_PT Gy_UNIT; + port DIAMETEREM_PROC_PT Gy_PROC; }
private function f_init_vty() runs on GT_CT { @@ -203,7 +207,10 @@ unitdata_cb := refers(DiameterForwardUnitdataCallback), raw := true /* handler mode (single component for all IMSI)) */ }; - var DIAMETER_conn_parameters pars := { + var DIAMETER_conn_parameters pars; + + /* Gx setup: */ + pars := { remote_ip := m_ggsn_ip_gtpc, remote_sctp_port := -1, local_ip := m_bind_ip_gtpc, @@ -218,7 +225,24 @@ connect(vc_Gx:DIAMETER_PROC, self:Gx_PROC); vc_Gx.start(DIAMETER_Emulation.main(ops, pars, id));
+ /* Gy setup: */ + pars := { + remote_ip := m_ggsn_ip_gtpc, + remote_sctp_port := -1, + local_ip := m_bind_ip_gtpc, + local_sctp_port := OCS_PORT, + origin_host := "ocs.localdomain", + origin_realm := "localdomain", + vendor_app_id := c_DIAMETER_CREDIT_CONTROL_AID + }; + vc_Gy := DIAMETER_Emulation_CT.create(id); + map(vc_Gy:DIAMETER, system:DIAMETER_CODEC_PT); + connect(vc_Gy:DIAMETER_UNIT, self:Gy_UNIT); + connect(vc_Gy:DIAMETER_PROC, self:Gy_PROC); + vc_Gy.start(DIAMETER_Emulation.main(ops, pars, id)); + f_diameter_wait_capability(Gx_UNIT); + f_diameter_wait_capability(Gy_UNIT); /* Give some time for our emulation to get out of SUSPECT list of SUT (3 watchdong ping-pongs): * RFC6733 sec 5.1 * RFC3539 sec 3.4.1 [5] diff --git a/library/DIAMETER_Templates.ttcn b/library/DIAMETER_Templates.ttcn index b56363f..e2067f6 100644 --- a/library/DIAMETER_Templates.ttcn +++ b/library/DIAMETER_Templates.ttcn @@ -100,6 +100,8 @@ DIAMETER_ERROR_EAP_CODE_UNKNOWN (5048) };
+/* Gy : 3GPP TS 32.299 7.1.6, RFC4006 3.1 */ +const uint32_t c_DIAMETER_CREDIT_CONTROL_AID := 4; /* 3GPP TS 29.272 Section 7.1.8 */ const uint32_t c_DIAMETER_3GPP_Gx_AID := 16777238; const uint32_t c_DIAMETER_3GPP_S6_AID := 16777251;