src/mme/emm_handler.c

src/mme/mme_context.c
src/mme/mme_context.h
support/config/mme.conf.in
This commit is contained in:
medeiros405 2018-02-25 18:33:36 -03:00
parent 888cbfbdb8
commit 02712a38e6
4 changed files with 61 additions and 0 deletions

View File

@ -214,6 +214,14 @@ status_t emm_handle_attach_complete(
NAS_EMM_INFORMATION_NETWORK_DAYLIGHT_SAVING_TIME_PRESENT;
network_daylight_saving_time->length = 1;
emm_information->presencemask |= NAS_EMM_INFORMATION_FULL_NAME_FOR_NETWORK_TYPE;
memcpy(&emm_information->full_name_for_network, &mme_self()->full_name, sizeof(nas_network_name_t));
emm_information->presencemask |= NAS_EMM_INFORMATION_SHORT_NAME_FOR_NETWORK_TYPE;
memcpy(&emm_information->short_name_for_network, &mme_self()->short_name, sizeof(nas_network_name_t));
rv = nas_security_encode(&emmbuf, mme_ue, &message);
d_assert(rv == CORE_OK && emmbuf, return CORE_ERROR, "emm build error");
d_assert(nas_send_to_downlink_nas_transport(mme_ue, emmbuf) == CORE_OK,,);

View File

@ -1211,6 +1211,51 @@ status_t mme_context_parse_config()
}
}
}
else if(!strcmp(mme_key, "network_name"))
{
yaml_iter_t network_name_iter;
yaml_iter_recurse(&mme_iter, &network_name_iter);
while(yaml_iter_next(&network_name_iter))
{
const char *network_name_key =
yaml_iter_key(&network_name_iter);
d_assert(network_name_key,
return CORE_ERROR,);
if (!strcmp(network_name_key, "full"))
{
nas_network_name_t *network_full_name = &self.full_name;
const char *c_network_name = yaml_iter_value(&network_name_iter);
c_uint8_t size = strlen(c_network_name);
c_uint8_t i;
for(i = 0;i<size;i++)
{
/* Workaround to convert the ASCII to USC-2 */
network_full_name->name[i*2] = 0;
network_full_name->name[(i*2)+1] = c_network_name[i];
}
network_full_name->length = size*2+1;
network_full_name->coding_scheme = 1;
}
else if (!strcmp(network_name_key, "short"))
{
nas_network_name_t *network_short_name = &self.short_name;
const char *c_network_name = yaml_iter_value(&network_name_iter);
c_uint8_t size = strlen(c_network_name);
c_uint8_t i;
for(i = 0;i<size;i++)
{
/* Workaround to convert the ASCII to USC-2 */
network_short_name->name[i*2] = 0;
network_short_name->name[(i*2)+1] = c_network_name[i];
}
network_short_name->length = size*2+1;
network_short_name->coding_scheme = 1;
}
}
}
else
d_warn("unknown key `%s`", mme_key);
}

View File

@ -132,6 +132,11 @@ typedef struct _mme_context_t {
/* System */
msgq_id queue_id; /* Queue for processing MME control plane */
tm_service_t tm_service; /* Timer Service */
/* Network Name */
nas_network_name_t short_name; /* Network short name */
nas_network_name_t full_name; /* Network Full Name */
} mme_context_t;
typedef struct _mme_enb_t {

View File

@ -29,6 +29,9 @@ mme:
security:
integrity_order : [ EIA1, EIA2, EIA0 ]
ciphering_order : [ EEA0, EEA1, EEA2 ]
network_name:
full: NextEPC
short: NEPC
sgw:
gtpc: