5G UE IMEISV 16 digits
reading 5G UE IMEISV from config file Signed-off-by: Dorovskikh <vladimir.dorovskikh@capgemini.com>
This commit is contained in:
@@ -235,10 +235,23 @@ static int encode_suci_5gs_mobile_identity(Suci5GSMobileIdentity_t *suci, uint8_
|
||||
static int encode_imeisv_5gs_mobile_identity(Imeisv5GSMobileIdentity_t *imeisv, uint8_t *buffer)
|
||||
{
|
||||
uint32_t encoded = 0;
|
||||
*(buffer + encoded) = 0x00 | (imeisv->digit1 << 4) | (imeisv->oddeven << 3) | (imeisv->typeofidentity);
|
||||
*(buffer + encoded) = 0x00 | (imeisv->digittac01 << 4) | (imeisv->oddeven << 3) | (imeisv->typeofidentity);
|
||||
encoded++;
|
||||
|
||||
*(buffer + encoded) = 0x00 | (imeisv->digitp1 << 4) | (imeisv->digitp);
|
||||
*(buffer + encoded) = 0x00 | (imeisv->digittac03 << 4) | (imeisv->digittac02);
|
||||
encoded++;
|
||||
*(buffer + encoded) = 0x00 | (imeisv->digittac05 << 4) | (imeisv->digittac04);
|
||||
encoded++;
|
||||
*(buffer + encoded) = 0x00 | (imeisv->digittac07 << 4) | (imeisv->digittac06);
|
||||
encoded++;
|
||||
*(buffer + encoded) = 0x00 | (imeisv->digit09 << 4) | (imeisv->digittac08);
|
||||
encoded++;
|
||||
*(buffer + encoded) = 0x00 | (imeisv->digit11 << 4) | (imeisv->digit10);
|
||||
encoded++;
|
||||
*(buffer + encoded) = 0x00 | (imeisv->digit13 << 4) | (imeisv->digit12);
|
||||
encoded++;
|
||||
*(buffer + encoded) = 0x00 | (imeisv->digitsv1 << 4) | (imeisv->digit14);
|
||||
encoded++;
|
||||
*(buffer + encoded) = 0x00 | (imeisv->spare << 4) | (imeisv->digitsv2);
|
||||
encoded++;
|
||||
|
||||
return encoded;
|
||||
|
||||
@@ -92,7 +92,27 @@ typedef struct {
|
||||
uint8_t digitp:4;
|
||||
} Imei5GSMobileIdentity_t;
|
||||
|
||||
typedef Imei5GSMobileIdentity_t Imeisv5GSMobileIdentity_t;
|
||||
typedef struct {
|
||||
uint8_t digittac01:4;
|
||||
uint8_t oddeven:1;
|
||||
uint8_t typeofidentity:3;
|
||||
uint8_t digittac02:4;
|
||||
uint8_t digittac03:4;
|
||||
uint8_t digittac04:4;
|
||||
uint8_t digittac05:4;
|
||||
uint8_t digittac06:4;
|
||||
uint8_t digittac07:4;
|
||||
uint8_t digittac08:4;
|
||||
uint8_t digit09:4;
|
||||
uint8_t digit10:4;
|
||||
uint8_t digit11:4;
|
||||
uint8_t digit12:4;
|
||||
uint8_t digit13:4;
|
||||
uint8_t digit14:4;
|
||||
uint8_t digitsv1:4;
|
||||
uint8_t digitsv2:4;
|
||||
uint8_t spare:4;
|
||||
} Imeisv5GSMobileIdentity_t;
|
||||
|
||||
|
||||
typedef struct {
|
||||
|
||||
@@ -25,6 +25,8 @@
|
||||
* \email yoshio.inoue@fujitsu.com,masayuki.harada@fujitsu.com
|
||||
* \date 2020
|
||||
* \version 0.1
|
||||
*
|
||||
* 2023.01.27 Vladimir Dorovskikh 16 digits IMEISV
|
||||
*/
|
||||
|
||||
|
||||
@@ -523,6 +525,31 @@ int nas_itti_kgnb_refresh_req(const uint8_t kgnb[32], int instance) {
|
||||
return itti_send_msg_to_task(TASK_RRC_NRUE, instance, message_p);
|
||||
}
|
||||
|
||||
static int addImeisv(int Mod_id,MM_msg *mm_msg)
|
||||
{
|
||||
int i=0;
|
||||
mm_msg->fgs_security_mode_complete.fgsmobileidentity.imeisv.typeofidentity = FGS_MOBILE_IDENTITY_IMEISV;
|
||||
mm_msg->fgs_security_mode_complete.fgsmobileidentity.imeisv.digittac01 = getImeisvDigit(Mod_id,i++);
|
||||
mm_msg->fgs_security_mode_complete.fgsmobileidentity.imeisv.digittac02 = getImeisvDigit(Mod_id,i++);
|
||||
mm_msg->fgs_security_mode_complete.fgsmobileidentity.imeisv.digittac03 = getImeisvDigit(Mod_id,i++);
|
||||
mm_msg->fgs_security_mode_complete.fgsmobileidentity.imeisv.digittac04 = getImeisvDigit(Mod_id,i++);
|
||||
mm_msg->fgs_security_mode_complete.fgsmobileidentity.imeisv.digittac05 = getImeisvDigit(Mod_id,i++);
|
||||
mm_msg->fgs_security_mode_complete.fgsmobileidentity.imeisv.digittac06 = getImeisvDigit(Mod_id,i++);
|
||||
mm_msg->fgs_security_mode_complete.fgsmobileidentity.imeisv.digittac07 = getImeisvDigit(Mod_id,i++);
|
||||
mm_msg->fgs_security_mode_complete.fgsmobileidentity.imeisv.digittac08 = getImeisvDigit(Mod_id,i++);
|
||||
mm_msg->fgs_security_mode_complete.fgsmobileidentity.imeisv.digit09 = getImeisvDigit(Mod_id,i++);
|
||||
mm_msg->fgs_security_mode_complete.fgsmobileidentity.imeisv.digit10 = getImeisvDigit(Mod_id,i++);
|
||||
mm_msg->fgs_security_mode_complete.fgsmobileidentity.imeisv.digit11 = getImeisvDigit(Mod_id,i++);
|
||||
mm_msg->fgs_security_mode_complete.fgsmobileidentity.imeisv.digit12 = getImeisvDigit(Mod_id,i++);
|
||||
mm_msg->fgs_security_mode_complete.fgsmobileidentity.imeisv.digit13 = getImeisvDigit(Mod_id,i++);
|
||||
mm_msg->fgs_security_mode_complete.fgsmobileidentity.imeisv.digit14 = getImeisvDigit(Mod_id,i++);
|
||||
mm_msg->fgs_security_mode_complete.fgsmobileidentity.imeisv.digitsv1 = getImeisvDigit(Mod_id,i++);
|
||||
mm_msg->fgs_security_mode_complete.fgsmobileidentity.imeisv.digitsv2 = getImeisvDigit(Mod_id,i++);
|
||||
mm_msg->fgs_security_mode_complete.fgsmobileidentity.imeisv.spare = 0x0f;
|
||||
mm_msg->fgs_security_mode_complete.fgsmobileidentity.imeisv.oddeven = 1;
|
||||
return 19;
|
||||
}
|
||||
|
||||
static void generateSecurityModeComplete(int Mod_id,as_nas_info_t *initialNasMsg)
|
||||
{
|
||||
int size = sizeof(mm_msg_header_t);
|
||||
@@ -552,12 +579,7 @@ static void generateSecurityModeComplete(int Mod_id,as_nas_info_t *initialNasMsg
|
||||
mm_msg->fgs_security_mode_complete.messagetype = FGS_SECURITY_MODE_COMPLETE;
|
||||
size += 1;
|
||||
|
||||
mm_msg->fgs_security_mode_complete.fgsmobileidentity.imeisv.typeofidentity = FGS_MOBILE_IDENTITY_IMEISV;
|
||||
mm_msg->fgs_security_mode_complete.fgsmobileidentity.imeisv.digit1 = 1;
|
||||
mm_msg->fgs_security_mode_complete.fgsmobileidentity.imeisv.digitp1 = 1;
|
||||
mm_msg->fgs_security_mode_complete.fgsmobileidentity.imeisv.digitp = 1;
|
||||
mm_msg->fgs_security_mode_complete.fgsmobileidentity.imeisv.oddeven = 0;
|
||||
size += 5;
|
||||
size += addImeisv(Mod_id, mm_msg);
|
||||
|
||||
mm_msg->fgs_security_mode_complete.fgsnasmessagecontainer.nasmessagecontainercontents.value = registration_request_buf;
|
||||
mm_msg->fgs_security_mode_complete.fgsnasmessagecontainer.nasmessagecontainercontents.length = registration_request_len;
|
||||
|
||||
Reference in New Issue
Block a user