mirror of
https://gitlab.eurecom.fr/oai/openairinterface5g.git
synced 2026-07-13 04:30:28 +00:00
Send NAS NSSAI SD only if configured, show UICC DNN/SST/SD info
This commit is contained in:
@@ -733,16 +733,20 @@ static void generatePduSessionEstablishRequest(int Mod_id, uicc_t * uicc, as_nas
|
||||
mm_msg->uplink_nas_transport.pdusessionid = 10;
|
||||
mm_msg->uplink_nas_transport.requesttype = 1;
|
||||
size += 3;
|
||||
mm_msg->uplink_nas_transport.snssai.length = 4;
|
||||
const bool has_nssai_sd = uicc->nssai_sd != 0xffffff; // 0xffffff means "no SD", TS 23.003
|
||||
const size_t nssai_len = has_nssai_sd ? 4 : 1;
|
||||
mm_msg->uplink_nas_transport.snssai.length = nssai_len;
|
||||
//Fixme: it seems there are a lot of memory errors in this: this value was on the stack,
|
||||
// but pushed in a itti message to another thread
|
||||
// this kind of error seems in many places in 5G NAS
|
||||
mm_msg->uplink_nas_transport.snssai.value=calloc(1,4);
|
||||
mm_msg->uplink_nas_transport.snssai.value = calloc(1, nssai_len);
|
||||
mm_msg->uplink_nas_transport.snssai.value[0] = uicc->nssai_sst;
|
||||
mm_msg->uplink_nas_transport.snssai.value[1] = (uicc->nssai_sd>>16)&0xFF;
|
||||
mm_msg->uplink_nas_transport.snssai.value[2] = (uicc->nssai_sd>>8)&0xFF;
|
||||
mm_msg->uplink_nas_transport.snssai.value[3] = (uicc->nssai_sd)&0xFF;
|
||||
size += (1+1+4);
|
||||
if (has_nssai_sd) {
|
||||
mm_msg->uplink_nas_transport.snssai.value[1] = (uicc->nssai_sd >> 16) & 0xFF;
|
||||
mm_msg->uplink_nas_transport.snssai.value[2] = (uicc->nssai_sd >> 8) & 0xFF;
|
||||
mm_msg->uplink_nas_transport.snssai.value[3] = (uicc->nssai_sd) & 0xFF;
|
||||
}
|
||||
size += 1 + 1 + nssai_len;
|
||||
int dnnSize=strlen(uicc->dnnStr);
|
||||
mm_msg->uplink_nas_transport.dnn.value=calloc(1,dnnSize+1);
|
||||
mm_msg->uplink_nas_transport.dnn.length = dnnSize + 1;
|
||||
|
||||
@@ -44,7 +44,7 @@ extern uint16_t NB_UE_INST;
|
||||
{"sqn", "USIM sqn\n", 0, strptr:&uicc->sqnStr, defstrval:"000000", TYPE_STRING, 0 }, \
|
||||
{"dnn", "UE dnn (apn)\n", 0, strptr:&uicc->dnnStr, defstrval:"oai", TYPE_STRING, 0 }, \
|
||||
{"nssai_sst", "UE nssai\n", 0, iptr:&uicc->nssai_sst, defintval:1, TYPE_INT, 0 }, \
|
||||
{"nssai_sd", "UE nssai\n", 0, iptr:&uicc->nssai_sd, defintval:1, TYPE_INT, 0 }, \
|
||||
{"nssai_sd", "UE nssai\n", 0, iptr:&uicc->nssai_sd, defintval:0xffffff, TYPE_INT, 0 }, \
|
||||
};
|
||||
|
||||
static uicc_t** uiccArray=NULL;
|
||||
@@ -73,7 +73,10 @@ uicc_t *init_uicc(char *sectionName) {
|
||||
// key, OPc, sqn, amf don't need to be read from the true USIM
|
||||
int ret = config_get( uicc_params,sizeof(uicc_params)/sizeof(paramdef_t),sectionName);
|
||||
AssertFatal(ret >= 0, "configuration couldn't be performed for uicc name: %s", sectionName);
|
||||
LOG_I(SIM, "UICC simulation: IMSI=%s, Ki=%s, OPc=%s\n", uicc->imsiStr, uicc->keyStr, uicc->opcStr);
|
||||
LOG_I(SIM,
|
||||
"UICC simulation: IMSI=%s, Ki=%s, OPc=%s, DNN=%s, SST=0x%02x, SD=0x%06x\n",
|
||||
uicc->imsiStr, uicc->keyStr, uicc->opcStr,
|
||||
uicc->dnnStr, uicc->nssai_sst, uicc->nssai_sd);
|
||||
to_hex(uicc->keyStr,uicc->key, sizeof(uicc->key) );
|
||||
to_hex(uicc->opcStr,uicc->opc, sizeof(uicc->opc) );
|
||||
to_hex(uicc->sqnStr,uicc->sqn, sizeof(uicc->sqn) );
|
||||
|
||||
Reference in New Issue
Block a user