etc: miscellaneous work (#779)

o Check IMEISV length == 16 digits
o Add Relative Capabity comment in the configuration file
This commit is contained in:
Sukchan Lee 2021-01-29 00:10:17 -05:00
parent 49a9e58efe
commit 388e64213f
8 changed files with 81 additions and 29 deletions

View File

@ -160,6 +160,10 @@ logger:
#
# amf_name: amf1.open5gs.amf.5gc.mnc70.mcc901.3gppnetwork.org
#
# <Relative Capacity> - Default(255)
#
# relative_capacity: 100
#
amf:
sbi:
- addr: 127.0.0.5

View File

@ -201,6 +201,10 @@ logger:
#
# mme_name: open5gs-mme0
#
# <Relative Capacity> - Default(255)
#
# relative_capacity: 100
#
mme:
freeDiameter: @sysconfdir@/freeDiameter/mme.conf
s1ap:

View File

@ -621,17 +621,31 @@ int gmm_handle_security_mode_complete(amf_ue_t *amf_ue,
switch (mobile_identity_imeisv->type) {
case OGS_NAS_5GS_MOBILE_IDENTITY_IMEISV:
memcpy(&amf_ue->nas_mobile_identity_imeisv,
mobile_identity_imeisv, imeisv->length);
ogs_nas_imeisv_to_bcd(mobile_identity_imeisv, imeisv->length,
amf_ue->imeisv_bcd);
ogs_nas_imeisv_bcd_to_buffer(amf_ue->imeisv_bcd,
amf_ue->masked_imeisv, &amf_ue->masked_imeisv_len);
amf_ue->masked_imeisv[5] = 0xff;
amf_ue->masked_imeisv[6] = 0xff;
if (amf_ue->pei)
ogs_free(amf_ue->pei);
amf_ue->pei = ogs_msprintf("imeisv-%s", amf_ue->imeisv_bcd);
/* TS23.003 6.2.2 Composition of IMEISV
*
* The International Mobile station Equipment Identity and
* Software Version Number (IMEISV) is composed.
*
* TAC(8 digits) - SNR(6 digits) - SVN(2 digits)
* IMEISV(16 digits) ==> 8bytes
*/
if (imeisv->length == sizeof(ogs_nas_mobile_identity_imeisv_t)) {
memcpy(&amf_ue->nas_mobile_identity_imeisv,
mobile_identity_imeisv, imeisv->length);
ogs_nas_imeisv_to_bcd(mobile_identity_imeisv, imeisv->length,
amf_ue->imeisv_bcd);
ogs_nas_imeisv_bcd_to_buffer(amf_ue->imeisv_bcd,
amf_ue->masked_imeisv, &amf_ue->masked_imeisv_len);
amf_ue->masked_imeisv[5] = 0xff;
amf_ue->masked_imeisv[6] = 0xff;
if (amf_ue->pei)
ogs_free(amf_ue->pei);
amf_ue->pei = ogs_msprintf("imeisv-%s", amf_ue->imeisv_bcd);
} else {
ogs_error("[%s] Unknown IMEISV Length [%d]",
amf_ue->supi, imeisv->length);
ogs_log_hexdump(OGS_LOG_ERROR, imeisv->buffer, imeisv->length);
}
break;
default:
ogs_warn("[%s] Invalid IMEISV Type [%d]",

View File

@ -619,7 +619,15 @@ ogs_pkbuf_t *ngap_ue_build_initial_context_setup_request(
UERadioCapability);
}
if (amf_ue->masked_imeisv_len) {
/* TS23.003 6.2.2 Composition of IMEISV
*
* The International Mobile station Equipment Identity and
* Software Version Number (IMEISV) is composed.
*
* TAC(8 digits) - SNR(6 digits) - SVN(2 digits)
* IMEISV(16 digits) ==> 8bytes
*/
if (amf_ue->masked_imeisv_len == OGS_MAX_IMEISV_LEN) {
ie = CALLOC(1, sizeof(NGAP_InitialContextSetupRequestIEs_t));
ASN_SEQUENCE_ADD(&InitialContextSetupRequest->protocolIEs, ie);

View File

@ -650,16 +650,31 @@ int emm_handle_security_mode_complete(mme_ue_t *mme_ue,
OGS_NAS_EPS_SECURITY_MODE_COMMAND_IMEISV_REQUEST_PRESENT) {
switch (imeisv->imeisv.type) {
case OGS_NAS_MOBILE_IDENTITY_IMEISV:
memcpy(&mme_ue->nas_mobile_identity_imeisv,
&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);
ogs_nas_imeisv_bcd_to_buffer(mme_ue->imeisv_bcd,
mme_ue->masked_imeisv, &mme_ue->masked_imeisv_len);
mme_ue->masked_imeisv[5] = 0xff;
mme_ue->masked_imeisv[6] = 0xff;
/* TS23.003 6.2.2 Composition of IMEISV
*
* The International Mobile station Equipment Identity and
* Software Version Number (IMEISV) is composed.
*
* TAC(8 digits) - SNR(6 digits) - SVN(2 digits)
* IMEISV(16 digits) ==> 8bytes
*/
if (imeisv->length == sizeof(ogs_nas_mobile_identity_imeisv_t)) {
memcpy(&mme_ue->nas_mobile_identity_imeisv,
&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);
ogs_nas_imeisv_bcd_to_buffer(mme_ue->imeisv_bcd,
mme_ue->masked_imeisv, &mme_ue->masked_imeisv_len);
mme_ue->masked_imeisv[5] = 0xff;
mme_ue->masked_imeisv[6] = 0xff;
} else {
ogs_error("[%s] Unknown IMEISV Length [%d]",
mme_ue->imsi_bcd, imeisv->length);
ogs_log_hexdump(OGS_LOG_ERROR,
(unsigned char *)&imeisv->imeisv, imeisv->length);
}
break;
default:
ogs_warn("Invalid IMEISV Type[%d]", imeisv->imeisv.type);

View File

@ -569,7 +569,15 @@ ogs_pkbuf_t *s1ap_build_initial_context_setup_request(
UERadioCapability);
}
if (mme_ue->imeisv_len) {
/* TS23.003 6.2.2 Composition of IMEISV
*
* The International Mobile station Equipment Identity and
* Software Version Number (IMEISV) is composed.
*
* TAC(8 digits) - SNR(6 digits) - SVN(2 digits)
* IMEISV(16 digits) ==> 8bytes
*/
if (mme_ue->imeisv_len == OGS_MAX_IMEISV_LEN) {
ie = CALLOC(1, sizeof(S1AP_InitialContextSetupRequestIEs_t));
ASN_SEQUENCE_ADD(&InitialContextSetupRequest->protocolIEs, ie);

View File

@ -195,7 +195,7 @@ ogs_pkbuf_t *testngap_build_initial_ue_message(
initiatingMessage = pdu.choice.initiatingMessage;
initiatingMessage->procedureCode = NGAP_ProcedureCode_id_InitialUEMessage;
initiatingMessage->criticality = NGAP_Criticality_reject;
initiatingMessage->criticality = NGAP_Criticality_ignore;
initiatingMessage->value.present =
NGAP_InitiatingMessage__value_PR_InitialUEMessage;
@ -272,9 +272,8 @@ ogs_pkbuf_t *testngap_build_initial_ue_message(
ASN_SEQUENCE_ADD(&InitialUEMessage->protocolIEs, ie);
ie->id = NGAP_ProtocolIE_ID_id_FiveG_S_TMSI;
ie->criticality = NGAP_Criticality_ignore;
ie->value.present =
NGAP_InitialUEMessage_IEs__value_PR_FiveG_S_TMSI;
ie->criticality = NGAP_Criticality_reject;
ie->value.present = NGAP_InitialUEMessage_IEs__value_PR_FiveG_S_TMSI;
FiveG_S_TMSI = &ie->value.choice.FiveG_S_TMSI;

View File

@ -123,7 +123,7 @@ ogs_pkbuf_t *test_s1ap_build_initial_ue_message(
initiatingMessage = pdu.choice.initiatingMessage;
initiatingMessage->procedureCode = S1AP_ProcedureCode_id_initialUEMessage;
initiatingMessage->criticality = S1AP_Criticality_reject;
initiatingMessage->criticality = S1AP_Criticality_ignore;
initiatingMessage->value.present =
S1AP_InitiatingMessage__value_PR_InitialUEMessage;
@ -211,7 +211,7 @@ ogs_pkbuf_t *test_s1ap_build_initial_ue_message(
ASN_SEQUENCE_ADD(&InitialUEMessage->protocolIEs, ie);
ie->id = S1AP_ProtocolIE_ID_id_S_TMSI;
ie->criticality = S1AP_Criticality_ignore;
ie->criticality = S1AP_Criticality_reject;
ie->value.present = S1AP_InitialUEMessage_IEs__value_PR_S_TMSI;
S_TMSI = &ie->value.choice.S_TMSI;