sm: Allow passing old RAI during attach

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

Change-Id: I13118bed3f7035ff9b4c2c21ed9557f48f5596e6
This commit is contained in:
Pau Espin 2023-05-16 19:31:29 +02:00 committed by pespin
parent 1d1b704dca
commit c57f5d70c4
4 changed files with 5 additions and 0 deletions

View File

@ -13,6 +13,7 @@
#include <osmocom/core/prim.h>
#include <osmocom/core/socket.h>
#include <osmocom/gsm/protocol/gsm_23_003.h>
#include <osmocom/gsm/gsm48.h>
#include <osmocom/gprs/sm/sm.h>
@ -68,6 +69,7 @@ struct osmo_gprs_sm_smreg_prim {
char imsi[OSMO_IMSI_BUF_SIZE];
char imei[GSM23003_IMEI_NUM_DIGITS + 1];
char imeisv[GSM23003_IMEISV_NUM_DIGITS+1];
struct gprs_ra_id old_rai;
} gmm;
} pdp_act_req;

View File

@ -131,6 +131,7 @@ struct gprs_sm_ms {
char imsi[OSMO_IMSI_BUF_SIZE];
char imei[GSM23003_IMEI_NUM_DIGITS + 1];
char imeisv[GSM23003_IMEISV_NUM_DIGITS+1];
struct gprs_ra_id ra; /* TS 24.008 10.5.5.15 (decoded) */
} gmm;
};

View File

@ -196,6 +196,7 @@ int gprs_sm_submit_gmmsm_assign_req(const struct gprs_sm_entity *sme)
OSMO_STRLCPY_ARRAY(gmm_prim_tx->gmmsm.establish_req.imsi, ms->gmm.imsi);
OSMO_STRLCPY_ARRAY(gmm_prim_tx->gmmsm.establish_req.imei, ms->gmm.imei);
OSMO_STRLCPY_ARRAY(gmm_prim_tx->gmmsm.establish_req.imeisv, ms->gmm.imeisv);
memcpy(&gmm_prim_tx->gmmsm.establish_req.old_rai, &ms->gmm.ra, sizeof(ms->gmm.ra));
rc = gprs_sm_prim_call_gmm_down_cb(gmm_prim_tx);
return rc;

View File

@ -276,6 +276,7 @@ static int gprs_sm_prim_handle_smreg_pdp_act_req(struct osmo_gprs_sm_prim *sm_pr
OSMO_STRLCPY_ARRAY(ms->gmm.imei, sm_prim->smreg.pdp_act_req.gmm.imei);
if (sm_prim->smreg.pdp_act_req.gmm.imeisv[0] != '\0')
OSMO_STRLCPY_ARRAY(ms->gmm.imeisv, sm_prim->smreg.pdp_act_req.gmm.imeisv);
memcpy(&ms->gmm.ra, &sm_prim->smreg.pdp_act_req.gmm.old_rai, sizeof(ms->gmm.ra));
rc = osmo_fsm_inst_dispatch(sme->ms_fsm.fi, GPRS_SM_MS_EV_TX_ACT_PDP_CTX_REQ, NULL);