pespin has uploaded this change for review. ( 
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/28105 )


Change subject: ggsn: Append IMEISV IE to CreatePdpCtxReq
......................................................................

ggsn: Append IMEISV IE to CreatePdpCtxReq

Change-Id: I00975328e94afd116e59c88fd96c5b0154810a1e
---
M ggsn_tests/GGSN_Tests.ttcn
M library/GTP_Templates.ttcn
2 files changed, 39 insertions(+), 9 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks 
refs/changes/05/28105/1

diff --git a/ggsn_tests/GGSN_Tests.ttcn b/ggsn_tests/GGSN_Tests.ttcn
index e3d9341..b813960 100644
--- a/ggsn_tests/GGSN_Tests.ttcn
+++ b/ggsn_tests/GGSN_Tests.ttcn
@@ -99,7 +99,8 @@
                OCT4            teic_remote,
                OCT1            ratType optional,
                UserLocationInformation uli optional,
-               OCT2 charging_char optional
+               OCT2 charging_char optional,
+               OCT8 imeisv optional
        }

        type component GT_CT {
@@ -332,6 +333,11 @@
                return int2oct(f_rnd_int(4294967296), 4);
        }

+       /* return random IMEI(SV) */
+       function f_rnd_imeisv() return OCT8 {
+               return int2oct(f_rnd_int(18446744073709551616), 8);
+       }
+
        /* define an (internal) representation of a PDP context */
        template PdpContext t_DefinePDP(hexstring imsi, octetstring msisdn, 
octetstring apn,
                                        EndUserAddress eua, OCT1 ratType := 
'02'O /* GERAN */) := {
@@ -352,7 +358,8 @@
                                geographicLocationCGI := 
ts_GeographicLocationCGI('262'H, '42F'H, '0001'O, '0002'O)
                        }
                },
-               charging_char := '0000'O
+               charging_char := '0000'O,
+               imeisv := f_rnd_imeisv()
        }

        /* send GTP-C for a given context and increment sequence number */
@@ -513,7 +520,7 @@
                f_send_gtpc(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,
                                                  g_sgsn_ip_c, g_sgsn_ip_u, 
ctx.msisdn, ctx.pco_req, ctx.ratType,
-                                                 ctx.uli, ctx.charging_char));
+                                                 ctx.uli, ctx.charging_char, 
ctx.imeisv));
                T_default.start;
                d := activate(pingpong());
                if (Gx_PROC.checkstate("Connected")) {
@@ -2009,7 +2016,7 @@
                                                          
ctx[next_req_ctx].teid, ctx[next_req_ctx].teic, ctx[next_req_ctx].nsapi,
                                                          
ctx[next_req_ctx].eua, ctx[next_req_ctx].apn,  g_sgsn_ip_c, g_sgsn_ip_u,
                                                          
ctx[next_req_ctx].msisdn, ctx[next_req_ctx].pco_req, ctx[next_req_ctx].ratType,
-                                                         
ctx[next_req_ctx].uli, ctx[next_req_ctx].charging_char));
+                                                         
ctx[next_req_ctx].uli, ctx[next_req_ctx].charging_char, 
ctx[next_req_ctx].imeisv));
                        next_req_ctx := next_req_ctx + 1;
                        if (next_req_ctx < num_ctx) {
                                T_next.start;
@@ -2123,7 +2130,7 @@
                                                                          
ctx.teid, ctx.teic, ctx.nsapi,
                                                                          
ctx.eua, ctx.apn,  g_sgsn_ip_c, g_sgsn_ip_u,
                                                                          
ctx.msisdn, ctx.pco_req, ctx.ratType,
-                                                                         
ctx.uli, ctx.charging_char));
+                                                                         
ctx.uli, ctx.charging_char, ctx.imeisv));
                                        next_req_ctx := next_req_ctx + 1;
                                }
                                T_next.start;
diff --git a/library/GTP_Templates.ttcn b/library/GTP_Templates.ttcn
index 0c5c003..5156510 100644
--- a/library/GTP_Templates.ttcn
+++ b/library/GTP_Templates.ttcn
@@ -119,6 +119,26 @@
                restartCounter := restart_counter
        }

+       /* IMEI(SV) IE TS 29.060 7.7.53 */
+       template IMEISV_gtpc ts_IMEISV(template (value) OCT8 imeisv) := {
+               type_gtpc := '9A'O,
+               lengthf := 8,
+               imeisv := imeisv
+       }
+       private function f_ts_IMEISV(template (omit) OCT8 imeisv)
+               return template (omit) IMEISV_gtpc {
+               if (istemplatekind(imeisv, "omit")) {
+                       return omit;
+               }
+               return ts_IMEISV(imeisv);
+       }
+
+       template IMEISV_gtpc tr_IMEISV(template (present) OCT8 imeisv) := {
+               type_gtpc := '9A'O,
+               lengthf := 8,
+               imeisv := imeisv
+       }
+
        /* Charging Characteristics IE TS 29.060 7.7.23 */
        template ChargingCharacteristics_GTPC 
ts_ChargingCharacteristics(template (value) OCT2 chargingChar) := {
                type_gtpc := '1A'O,
@@ -379,7 +399,8 @@
                                           octetstring msisdn, template 
ProtConfigOptions pco := omit,
                                           template (omit) OCT1 ratType := omit,
                                           template (omit) 
UserLocationInformation uli := omit,
-                                          template (omit) OCT2 charging_char 
:= omit) := {
+                                          template (omit) OCT2 charging_char 
:= omit,
+                                          template (omit) OCT8 imeisv := omit) 
:= {
                createPDPContextRequest := {
                        imsi := ts_Imsi(imsi),
                        rai := omit,
@@ -421,7 +442,7 @@
                        ratType := f_ts_RATType(ratType),
                        userLocationInformation := uli,
                        mS_TimeZone := omit,
-                       imeisv := omit,
+                       imeisv := f_ts_IMEISV(imeisv),
                        camelChargingInformationContainer := omit,
                        additionalTraceInfo := omit,
                        correlationID := omit,
@@ -443,12 +464,14 @@
                                                 template ProtConfigOptions pco 
:= omit,
                                                 template (omit) OCT1 ratType 
:= omit,
                                                 template (omit) 
UserLocationInformation uli := omit,
-                                                template (omit) OCT2 
charging_char := omit) := {
+                                                template (omit) OCT2 
charging_char := omit,
+                                                template (omit) OCT8 imeisv := 
omit) := {
                peer := peer,
                gtpc := ts_GTP1C_PDU(createPDPContextRequest, '00000000'O,
                                        valueof(ts_CreatePdpPDU(imsi, 
restart_ctr, teid_data, teid_ctrl,
                                                                nsapi, eua, 
apn, sgsn_ip_sign,
-                                                               sgsn_ip_data, 
msisdn, pco, ratType, uli, charging_char)), seq)
+                                                               sgsn_ip_data, 
msisdn, pco, ratType, uli,
+                                                               charging_char, 
imeisv)), seq)
        }



--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/28105
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: I00975328e94afd116e59c88fd96c5b0154810a1e
Gerrit-Change-Number: 28105
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <[email protected]>
Gerrit-MessageType: newchange

Reply via email to