forked from acouzens/open5gs
Add MMEName in S1SetupResponse [#444]
This commit is contained in:
parent
6ef5a746e5
commit
9bfb4591ea
|
@ -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:
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -90,7 +90,7 @@ amf:
|
|||
ciphering_order : [ EEA0, EEA1, EEA2 ]
|
||||
network_name:
|
||||
full: Open5GS
|
||||
amf_name: amf.open5gs.org
|
||||
amf_name: open5gs-amf0
|
||||
|
||||
#
|
||||
# nrf:
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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 *)
|
||||
|
|
|
@ -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";
|
||||
|
|
Loading…
Reference in New Issue