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 <pespin(a)sysmocom.de>
Gerrit-MessageType: newchange