pespin has uploaded this change for review. ( 
https://gerrit.osmocom.org/c/libosmo-gprs/+/32735 )


Change subject: gmm: Allow passing old RAI during attach
......................................................................

gmm: Allow passing old RAI during attach

This is stored by the MS and hence shall be passed by the application.

Change-Id: I22ffa8a169c09445e7126892616f61b8d01cbfe7
---
M include/osmocom/gprs/gmm/gmm_prim.h
M src/gmm/gmm_pdu.c
M src/gmm/gmm_prim.c
M tests/gmm/gmm_prim_test.c
4 files changed, 26 insertions(+), 11 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/libosmo-gprs refs/changes/35/32735/1

diff --git a/include/osmocom/gprs/gmm/gmm_prim.h 
b/include/osmocom/gprs/gmm/gmm_prim.h
index 42dc90a..665b3df 100644
--- a/include/osmocom/gprs/gmm/gmm_prim.h
+++ b/include/osmocom/gprs/gmm/gmm_prim.h
@@ -14,6 +14,7 @@
 #include <osmocom/core/utils.h>
 #include <osmocom/core/prim.h>
 #include <osmocom/gsm/protocol/gsm_23_003.h>
+#include <osmocom/gsm/gsm48.h>
 #include <osmocom/gprs/gmm/gmm.h>

 struct osmo_gprs_llc_prim;
@@ -108,7 +109,8 @@
                        char imsi[OSMO_IMSI_BUF_SIZE];
                        char imei[GSM23003_IMEI_NUM_DIGITS + 1];
                        char imeisv[GSM23003_IMEISV_NUM_DIGITS+1];
-                       /* attach-type, READY-timer, STANDBY-timer */
+                       struct gprs_ra_id old_rai;
+                       /* READY-timer, STANDBY-timer */
                } attach_req;
                /* OSMO_GPRS_GMM_GMMREG_ATTACH | Cnf 6.6.1.2 / Rej 6.6.1.3 */
                struct {
@@ -212,7 +214,8 @@
                        char imsi[OSMO_IMSI_BUF_SIZE];
                        char imei[GSM23003_IMEI_NUM_DIGITS + 1];
                        char imeisv[GSM23003_IMEISV_NUM_DIGITS+1];
-                       /* attach-type, READY-timer, STANDBY-timer */
+                       struct gprs_ra_id old_rai;
+                       /* READY-timer, STANDBY-timer */
                } establish_req;
                /* OSMO_GPRS_GMM_GMMSM_ESTABLISH | Cnf/Rej */
                struct {
diff --git a/src/gmm/gmm_pdu.c b/src/gmm/gmm_pdu.c
index 785932c..1182482 100644
--- a/src/gmm/gmm_pdu.c
+++ b/src/gmm/gmm_pdu.c
@@ -181,7 +181,6 @@
        uint8_t *l;
        int rc;
        struct gsm48_ra_id *raid_enc;
-       struct gprs_ra_id raid;

        gh = (struct gsm48_hdr *) msgb_put(msg, sizeof(*gh));
        gh->proto_discr = GSM48_PDISC_MM_GPRS;
@@ -221,15 +220,8 @@
        *l = rc;

        /* Old routing area identification 0.5.5.15 */
-       raid = (struct gprs_ra_id){ /* TODO: fill this correctly */
-               .mcc = 0,
-               .mnc = 0,
-               .mnc_3_digits = false,
-               .lac = 0,
-               .rac = 0,
-       };
        raid_enc = (struct gsm48_ra_id *)msgb_put(msg, sizeof(struct 
gsm48_ra_id));
-       gsm48_encode_ra(raid_enc, &raid);
+       gsm48_encode_ra(raid_enc, &gmme->ra);

        /* MS Radio Access capability 10.5.5.12a */
        rc = encode_ms_ra_acc_cap(gmme, msg);
diff --git a/src/gmm/gmm_prim.c b/src/gmm/gmm_prim.c
index af8f663..4951651 100644
--- a/src/gmm/gmm_prim.c
+++ b/src/gmm/gmm_prim.c
@@ -385,6 +385,7 @@
                OSMO_STRLCPY_ARRAY(gmme->imei, 
gmm_prim->gmmreg.attach_req.imei);
        if (gmm_prim->gmmreg.attach_req.imeisv[0] != '\0')
                OSMO_STRLCPY_ARRAY(gmme->imeisv, 
gmm_prim->gmmreg.attach_req.imeisv);
+       memcpy(&gmme->ra, &gmm_prim->gmmreg.attach_req.old_rai, 
sizeof(gmme->ra));

        rc = gprs_gmm_ms_fsm_ctx_request_attach(&gmme->ms_fsm,
                                                
gmm_prim->gmmreg.attach_req.attach_type,
@@ -497,6 +498,7 @@
                OSMO_STRLCPY_ARRAY(gmme->imei, 
gmm_prim->gmmsm.establish_req.imei);
        if (gmm_prim->gmmsm.establish_req.imeisv[0] != '\0')
                OSMO_STRLCPY_ARRAY(gmme->imeisv, 
gmm_prim->gmmsm.establish_req.imeisv);
+       memcpy(&gmme->ra, &gmm_prim->gmmsm.establish_req.old_rai, 
sizeof(gmme->ra));

        rc = gprs_gmm_ms_fsm_ctx_request_attach(&gmme->ms_fsm,
                                                
gmm_prim->gmmsm.establish_req.attach_type,
diff --git a/tests/gmm/gmm_prim_test.c b/tests/gmm/gmm_prim_test.c
index b66ca51..1b14b38 100644
--- a/tests/gmm/gmm_prim_test.c
+++ b/tests/gmm/gmm_prim_test.c
@@ -306,6 +306,13 @@
        OSMO_STRLCPY_ARRAY(gmm_prim->gmmreg.attach_req.imsi, imsi);
        OSMO_STRLCPY_ARRAY(gmm_prim->gmmreg.attach_req.imei, imei);
        OSMO_STRLCPY_ARRAY(gmm_prim->gmmreg.attach_req.imeisv, imeisv);
+       gmm_prim->gmmreg.attach_req.old_rai = (struct gprs_ra_id){
+               .mcc = 0,
+               .mnc = 0,
+               .mnc_3_digits = false,
+               .lac = 0,
+               .rac = 0,
+       };
        rc = osmo_gprs_gmm_prim_upper_down(gmm_prim);
        OSMO_ASSERT(rc == 0);


--
To view, visit https://gerrit.osmocom.org/c/libosmo-gprs/+/32735
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings

Gerrit-Project: libosmo-gprs
Gerrit-Branch: master
Gerrit-Change-Id: I22ffa8a169c09445e7126892616f61b8d01cbfe7
Gerrit-Change-Number: 32735
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <[email protected]>
Gerrit-MessageType: newchange

Reply via email to