Add IMEISV(MEI) in Create Session Request
This commit is contained in:
parent
552305afe2
commit
7b7acea59b
|
@ -41,6 +41,8 @@ extern "C" {
|
|||
OGS_BCD_TO_BUFFER_LEN(OGS_MAX_IMSI_BCD_LEN)
|
||||
|
||||
#define OGS_MAX_IMEISV_BCD_LEN 16
|
||||
#define OGS_MAX_IMEISV_LEN \
|
||||
OGS_BCD_TO_BUFFER_LEN(OGS_MAX_IMEISV_BCD_LEN)
|
||||
|
||||
#define OGS_MAX_NUM_OF_HOSTNAME 16
|
||||
#define OGS_MAX_APN_LEN 100
|
||||
|
|
|
@ -30,18 +30,13 @@ void *ogs_ascii_to_hex(char *in, int in_len, void *out, int out_len)
|
|||
int i = 0, j = 0, k = 0, hex;
|
||||
uint8_t *out_p = out;
|
||||
|
||||
while(i < in_len && j < out_len)
|
||||
{
|
||||
if (!isspace(in[i]))
|
||||
{
|
||||
while(i < in_len && j < out_len) {
|
||||
if (!isspace(in[i])) {
|
||||
hex = isdigit(in[i]) ? in[i] - '0' :
|
||||
islower(in[i]) ? in[i] - 'a' + 10 : in[i] - 'A' + 10;
|
||||
if ((k & 0x1) == 0)
|
||||
{
|
||||
if ((k & 0x1) == 0) {
|
||||
out_p[j] = (hex << 4);
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
out_p[j] |= hex;
|
||||
j++;
|
||||
}
|
||||
|
@ -62,8 +57,7 @@ void *ogs_hex_to_ascii(void *in, int in_len, void *out, int out_len)
|
|||
p[0] = 0;
|
||||
|
||||
l = (in_len - off) > out_len ? out_len : in_len - off;
|
||||
for (i = 0; i < l; i++)
|
||||
{
|
||||
for (i = 0; i < l; i++) {
|
||||
p += sprintf(p, "%02X", ((char*)in)[off+i] & 0xff);
|
||||
if ((i & 0x3) == 3 && (i != (l-1))) p += sprintf(p, " ");
|
||||
}
|
||||
|
@ -87,8 +81,7 @@ uint64_t ogs_buffer_to_uint64(void *buffer, int size)
|
|||
uint8_t *buffer_p = buffer;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < size; i++)
|
||||
{
|
||||
for (i = 0; i < size; i++) {
|
||||
num |= (((uint64_t)buffer_p[i]) << ((size-1-i) * 8));
|
||||
}
|
||||
|
||||
|
@ -101,8 +94,7 @@ void *ogs_bcd_to_buffer(const char *in, void *out, int *out_len)
|
|||
uint8_t *out_p = out;
|
||||
int in_len = strlen(in);
|
||||
|
||||
for (i = 0; i < in_len; i++)
|
||||
{
|
||||
for (i = 0; i < in_len; i++) {
|
||||
if (i & 0x01)
|
||||
out_p[i>>1] = out_p[i>>1] | (((in[i] - 0x30) << 4) & 0xF0);
|
||||
else
|
||||
|
@ -110,8 +102,7 @@ void *ogs_bcd_to_buffer(const char *in, void *out, int *out_len)
|
|||
}
|
||||
|
||||
*out_len = (in_len + 1) / 2;
|
||||
if (in_len & 0x01)
|
||||
{
|
||||
if (in_len & 0x01) {
|
||||
out_p[(*out_len)-1] |= 0xF0;
|
||||
}
|
||||
|
||||
|
@ -123,19 +114,15 @@ void *ogs_buffer_to_bcd(uint8_t *in, int in_len, void *out)
|
|||
int i = 0;
|
||||
uint8_t *out_p = out;
|
||||
|
||||
for (i = 0; i < in_len-1; i++)
|
||||
{
|
||||
for (i = 0; i < in_len-1; i++) {
|
||||
out_p[i*2] = 0x30 + (in[i] & 0x0F);
|
||||
out_p[i*2+1] = 0x30 + ((in[i] & 0xF0) >> 4);
|
||||
}
|
||||
|
||||
if ((in[i] & 0xF0) == 0xF0)
|
||||
{
|
||||
if ((in[i] & 0xF0) == 0xF0) {
|
||||
out_p[i*2] = 0x30 + (in[i] & 0x0F);
|
||||
out_p[i*2+1] = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
out_p[i*2] = 0x30 + (in[i] & 0x0F);
|
||||
out_p[i*2+1] = 0x30 + ((in[i] & 0xF0) >> 4);
|
||||
out_p[i*2+2] = 0;
|
||||
|
|
|
@ -635,6 +635,8 @@ int emm_handle_security_mode_complete(mme_ue_t *mme_ue,
|
|||
&imeisv->imeisv, imeisv->length);
|
||||
ogs_nas_imeisv_to_bcd(&imeisv->imeisv, imeisv->length,
|
||||
mme_ue->imeisv_bcd);
|
||||
ogs_bcd_to_buffer(mme_ue->imeisv_bcd,
|
||||
mme_ue->imeisv, &mme_ue->imeisv_len);
|
||||
mme_ue->imeisv_presence = true;
|
||||
break;
|
||||
default:
|
||||
|
|
|
@ -306,6 +306,8 @@ struct mme_ue_s {
|
|||
ogs_nas_mobile_identity_imsi_t nas_mobile_identity_imsi;
|
||||
|
||||
bool imeisv_presence;
|
||||
uint8_t imeisv[OGS_MAX_IMEISV_LEN];
|
||||
int imeisv_len;
|
||||
char imeisv_bcd[OGS_MAX_IMEISV_BCD_LEN+1];
|
||||
ogs_nas_mobile_identity_imeisv_t nas_mobile_identity_imeisv;
|
||||
|
||||
|
|
|
@ -61,6 +61,12 @@ int mme_s11_build_create_session_request(
|
|||
req->imsi.data = mme_ue->imsi;
|
||||
req->imsi.len = mme_ue->imsi_len;
|
||||
|
||||
if (mme_ue->imeisv_presence) {
|
||||
req->me_identity.presence = 1;
|
||||
req->me_identity.data = mme_ue->imeisv;
|
||||
req->me_identity.len = mme_ue->imeisv_len;
|
||||
}
|
||||
|
||||
memset(&uli, 0, sizeof(ogs_gtp_uli_t));
|
||||
uli.flags.e_cgi = 1;
|
||||
uli.flags.tai = 1;
|
||||
|
|
Loading…
Reference in New Issue