Add MMEName in S1SetupResponse [#444]

This commit is contained in:
Sukchan Lee 2020-05-25 12:34:05 -04:00
parent 6ef5a746e5
commit 9bfb4591ea
9 changed files with 42 additions and 14 deletions

View File

@ -39,7 +39,7 @@ amf:
ciphering_order : [ EEA0, EEA1, EEA2 ]
network_name:
full: Open5GS
amf_name: amf.open5gs.org
amf_name: open5gs-amf0
smf:
sbi:

View File

@ -43,7 +43,7 @@ amf:
ciphering_order : [ EEA0, EEA1, EEA2 ]
network_name:
full: Open5GS
amf_name: amf.open5gs.org
amf_name: open5gs-amf0
smf:
sbi:

View File

@ -90,7 +90,7 @@ amf:
ciphering_order : [ EEA0, EEA1, EEA2 ]
network_name:
full: Open5GS
amf_name: amf.open5gs.org
amf_name: open5gs-amf0
#
# nrf:

View File

@ -197,6 +197,10 @@ logger:
# full: Open5GS
# short: Next
#
# <MME Name>
#
# mme_name: open5gs-mme0
#
mme:
freeDiameter: @sysconfdir@/freeDiameter/mme.conf
s1ap:
@ -217,6 +221,7 @@ mme:
ciphering_order : [ EEA0, EEA1, EEA2 ]
network_name:
full: Open5GS
mme_name: open5gs-mme0
#
# sgw:

View File

@ -48,7 +48,6 @@ typedef struct amf_context_s {
ogs_pollset_t *pollset; /* Poll Set for I/O Multiplexing */
OpenAPI_nf_type_e nf_type;
const char *amf_name;
/* Served GUMME */
uint8_t num_of_served_guami;
@ -91,6 +90,9 @@ typedef struct amf_context_s {
ogs_nas_network_name_t short_name; /* Network short name */
ogs_nas_network_name_t full_name; /* Network Full Name */
/* AMF Name */
const char *amf_name;
/* M-TMSI Pool */
OGS_POOL(m_tmsi, amf_m_tmsi_t);

View File

@ -1385,6 +1385,8 @@ int mme_context_parse_config()
}
} while (ogs_yaml_iter_type(&sgsap_array) ==
YAML_SEQUENCE_NODE);
} else if (!strcmp(mme_key, "mme_name")) {
self.mme_name = ogs_yaml_iter_value(&mme_iter);
} else
ogs_warn("unknown key `%s`", mme_key);
}

View File

@ -131,6 +131,16 @@ typedef struct mme_context_s {
uint8_t num_of_integrity_order;
uint8_t integrity_order[OGS_MAX_NUM_OF_ALGORITHM];
/* Network Name */
ogs_nas_network_name_t short_name; /* Network short name */
ogs_nas_network_name_t full_name; /* Network Full Name */
/* MME Name */
const char *mme_name;
/* SGW Selection */
sgw_select_e sgw_selection;
/* S1SetupResponse */
uint8_t relative_capacity;
@ -153,13 +163,6 @@ typedef struct mme_context_s {
ogs_timer_mgr_t *timer_mgr; /* Timer Manager */
ogs_pollset_t *pollset; /* Poll Set for I/O Multiplexing */
/* Network Name */
ogs_nas_network_name_t short_name; /* Network short name */
ogs_nas_network_name_t full_name; /* Network Full Name */
/* SGW Selection */
sgw_select_e sgw_selection;
} mme_context_t;
typedef struct mme_sgw_s {

View File

@ -34,6 +34,7 @@ ogs_pkbuf_t *s1ap_build_setup_rsp(void)
S1AP_S1SetupResponseIEs_t *ie = NULL;
S1AP_ServedGUMMEIs_t *ServedGUMMEIs = NULL;
S1AP_RelativeMMECapacity_t *RelativeMMECapacity = NULL;
S1AP_MMEname_t *MMEname = NULL;
memset(&pdu, 0, sizeof (S1AP_S1AP_PDU_t));
pdu.present = S1AP_S1AP_PDU_PR_successfulOutcome;
@ -48,6 +49,17 @@ ogs_pkbuf_t *s1ap_build_setup_rsp(void)
S1SetupResponse = &successfulOutcome->value.choice.S1SetupResponse;
if (mme_self()->mme_name) {
ie = CALLOC(1, sizeof(S1AP_S1SetupResponseIEs_t));
ASN_SEQUENCE_ADD(&S1SetupResponse->protocolIEs, ie);
ie->id = S1AP_ProtocolIE_ID_id_MMEname;
ie->criticality = S1AP_Criticality_ignore;
ie->value.present = S1AP_S1SetupResponseIEs__value_PR_MMEname;
MMEname = &ie->value.choice.MMEname;
}
ie = CALLOC(1, sizeof(S1AP_S1SetupResponseIEs_t));
ASN_SEQUENCE_ADD(&S1SetupResponse->protocolIEs, ie);
@ -66,6 +78,11 @@ ogs_pkbuf_t *s1ap_build_setup_rsp(void)
RelativeMMECapacity = &ie->value.choice.RelativeMMECapacity;
if (MMEname) {
ogs_asn_buffer_to_OCTET_STRING((char*)mme_self()->mme_name,
strlen(mme_self()->mme_name), MMEname);
}
for (i = 0; i < mme_self()->max_num_of_served_gummei; i++) {
S1AP_ServedGUMMEIsItem_t *ServedGUMMEIsItem = NULL;
ServedGUMMEIsItem = (S1AP_ServedGUMMEIsItem_t *)

View File

@ -35,9 +35,8 @@ static void test1_func(abts_case *tc, void *data)
"0015002d00000300 1b00080002f83910 0001020066001500 000000010002f839"
"0001100801020310 0811223300154001 20";
const char *_ng_setup_response =
"2015003d00000400 0100110700616d66 2e6f70656e356773 2e6f726700600008"
"000002f839cafe00 00564001ff005000 100002f839000110 0801020310081122"
"33";
"2015003a00000400 01000e05806f7065 6e3567732d616d66 3000600008000002"
"f839cafe00005640 01ff005000100002 f839000110080102 031008112233";
const char *_authentication_request =
"000b403b00000300 000005c00100009d 000800020001001a 0025240752002008"
"0c3818183b522614 162c07601d0d10f1 1b89a2a8de8000ad 0ccf7f55e8b20d";