conf: Add ignore_requested_nssai parameter (#859)

If parameter.ignore_requsted_nssai is true,
AMF will ignore the UE Requested NSSAI and create an allowed-NSSAI
based on the Default S-NSSAI in the Subscription DB.
This commit is contained in:
Sukchan Lee 2021-03-26 23:12:43 +09:00
parent b22023afb8
commit 6ab5c41af5
19 changed files with 29 additions and 90 deletions

View File

@ -254,11 +254,9 @@ nrf:
# o Prefer IPv4 instead of IPv6 for estabishing new GTP connections. # o Prefer IPv4 instead of IPv6 for estabishing new GTP connections.
# prefer_ipv4: true # prefer_ipv4: true
# #
# o Enable Multicast traffic to the UE # o AMF ignores the UE Requested NSSAI and creates an allowed-NSSAI
# multicast: true # based on the Default S-NSSAI in the Subscription DB.
# # ignore_requested_nssai: true
# o Disable Stateless Address Autoconfiguration for IPv6
# no_slaac: true
# #
parameter: parameter:

View File

@ -126,12 +126,6 @@ nrf:
# o Prefer IPv4 instead of IPv6 for estabishing new GTP connections. # o Prefer IPv4 instead of IPv6 for estabishing new GTP connections.
# prefer_ipv4: true # prefer_ipv4: true
# #
# o Enable Multicast traffic to the UE
# multicast: true
#
# o Disable Stateless Address Autoconfiguration for IPv6
# no_slaac: true
#
parameter: parameter:
# #

View File

@ -41,12 +41,6 @@ hss:
# o Prefer IPv4 instead of IPv6 for estabishing new GTP connections. # o Prefer IPv4 instead of IPv6 for estabishing new GTP connections.
# prefer_ipv4: true # prefer_ipv4: true
# #
# o Enable Multicast traffic to the UE
# multicast: true
#
# o Disable Stateless Address Autoconfiguration for IPv6
# no_slaac: true
#
parameter: parameter:
# #

View File

@ -347,12 +347,6 @@ smf:
# o Prefer IPv4 instead of IPv6 for estabishing new GTP connections. # o Prefer IPv4 instead of IPv6 for estabishing new GTP connections.
# prefer_ipv4: true # prefer_ipv4: true
# #
# o Enable Multicast traffic to the UE
# multicast: true
#
# o Disable Stateless Address Autoconfiguration for IPv6
# no_slaac: true
#
# o Use OAI UE # o Use OAI UE
# - Remove HashMME in Security-mode command message # - Remove HashMME in Security-mode command message
# - Use the length 1 of EPS network feature support in Attach accept message # - Use the length 1 of EPS network feature support in Attach accept message

View File

@ -87,12 +87,6 @@ nrf:
# o Prefer IPv4 instead of IPv6 for estabishing new GTP connections. # o Prefer IPv4 instead of IPv6 for estabishing new GTP connections.
# prefer_ipv4: true # prefer_ipv4: true
# #
# o Enable Multicast traffic to the UE
# multicast: true
#
# o Disable Stateless Address Autoconfiguration for IPv6
# no_slaac: true
#
parameter: parameter:
# #

View File

@ -168,12 +168,6 @@ nrf:
# o Prefer IPv4 instead of IPv6 for estabishing new GTP connections. # o Prefer IPv4 instead of IPv6 for estabishing new GTP connections.
# prefer_ipv4: true # prefer_ipv4: true
# #
# o Enable Multicast traffic to the UE
# multicast: true
#
# o Disable Stateless Address Autoconfiguration for IPv6
# no_slaac: true
#
parameter: parameter:
# #

View File

@ -128,12 +128,6 @@ nrf:
# o Prefer IPv4 instead of IPv6 for estabishing new GTP connections. # o Prefer IPv4 instead of IPv6 for estabishing new GTP connections.
# prefer_ipv4: true # prefer_ipv4: true
# #
# o Enable Multicast traffic to the UE
# multicast: true
#
# o Disable Stateless Address Autoconfiguration for IPv6
# no_slaac: true
#
parameter: parameter:
# #

View File

@ -40,12 +40,6 @@ pcrf:
# o Prefer IPv4 instead of IPv6 for estabishing new GTP connections. # o Prefer IPv4 instead of IPv6 for estabishing new GTP connections.
# prefer_ipv4: true # prefer_ipv4: true
# #
# o Enable Multicast traffic to the UE
# multicast: true
#
# o Disable Stateless Address Autoconfiguration for IPv6
# no_slaac: true
#
# o Legacy support for pre-release LTE 11 devices to do calling # o Legacy support for pre-release LTE 11 devices to do calling
# - Replace IPv4/v6 local addr field in AAR Media-Subcomponent AVP by any # - Replace IPv4/v6 local addr field in AAR Media-Subcomponent AVP by any
# no_ipv4v6_local_addr_in_packet_filter: true # no_ipv4v6_local_addr_in_packet_filter: true

View File

@ -126,12 +126,6 @@ sgwu:
# o Prefer IPv4 instead of IPv6 for estabishing new GTP connections. # o Prefer IPv4 instead of IPv6 for estabishing new GTP connections.
# prefer_ipv4: true # prefer_ipv4: true
# #
# o Enable Multicast traffic to the UE
# multicast: true
#
# o Disable Stateless Address Autoconfiguration for IPv6
# no_slaac: true
#
parameter: parameter:
# #

View File

@ -113,12 +113,6 @@ sgwc:
# o Prefer IPv4 instead of IPv6 for estabishing new GTP connections. # o Prefer IPv4 instead of IPv6 for estabishing new GTP connections.
# prefer_ipv4: true # prefer_ipv4: true
# #
# o Enable Multicast traffic to the UE
# multicast: true
#
# o Disable Stateless Address Autoconfiguration for IPv6
# no_slaac: true
#
parameter: parameter:
# #

View File

@ -444,12 +444,6 @@ upf:
# o Prefer IPv4 instead of IPv6 for estabishing new GTP connections. # o Prefer IPv4 instead of IPv6 for estabishing new GTP connections.
# prefer_ipv4: true # prefer_ipv4: true
# #
# o Enable Multicast traffic to the UE
# multicast: true
#
# o Disable Stateless Address Autoconfiguration for IPv6
# no_slaac: true
#
parameter: parameter:
# #

View File

@ -126,12 +126,6 @@ nrf:
# o Prefer IPv4 instead of IPv6 for estabishing new GTP connections. # o Prefer IPv4 instead of IPv6 for estabishing new GTP connections.
# prefer_ipv4: true # prefer_ipv4: true
# #
# o Enable Multicast traffic to the UE
# multicast: true
#
# o Disable Stateless Address Autoconfiguration for IPv6
# no_slaac: true
#
parameter: parameter:
# #

View File

@ -128,12 +128,6 @@ nrf:
# o Prefer IPv4 instead of IPv6 for estabishing new GTP connections. # o Prefer IPv4 instead of IPv6 for estabishing new GTP connections.
# prefer_ipv4: true # prefer_ipv4: true
# #
# o Enable Multicast traffic to the UE
# multicast: true
#
# o Disable Stateless Address Autoconfiguration for IPv6
# no_slaac: true
#
parameter: parameter:
# #

View File

@ -172,13 +172,6 @@ smf:
# o Prefer IPv4 instead of IPv6 for estabishing new GTP connections. # o Prefer IPv4 instead of IPv6 for estabishing new GTP connections.
# prefer_ipv4: true # prefer_ipv4: true
# #
# o Enable Multicast traffic to the UE
# multicast: true
#
# o Disable Stateless Address Autoconfiguration for IPv6
# no_slaac: true
#
#
parameter: parameter:
# #

View File

@ -339,6 +339,9 @@ int ogs_app_context_parse_config(void)
parameter_key, "no_ipv4v6_local_addr_in_packet_filter")) { parameter_key, "no_ipv4v6_local_addr_in_packet_filter")) {
self.parameter.no_ipv4v6_local_addr_in_packet_filter = self.parameter.no_ipv4v6_local_addr_in_packet_filter =
ogs_yaml_iter_bool(&parameter_iter); ogs_yaml_iter_bool(&parameter_iter);
} else if (!strcmp(parameter_key, "ignore_requested_nssai")) {
self.parameter.ignore_requested_nssai =
ogs_yaml_iter_bool(&parameter_iter);
} else } else
ogs_warn("unknown key `%s`", parameter_key); ogs_warn("unknown key `%s`", parameter_key);
} }

View File

@ -75,6 +75,7 @@ typedef struct ogs_app_context_s {
int use_openair; int use_openair;
int no_ipv4v6_local_addr_in_packet_filter; int no_ipv4v6_local_addr_in_packet_filter;
int ignore_requested_nssai;
} parameter; } parameter;
ogs_sockopt_t sockopt; ogs_sockopt_t sockopt;

View File

@ -258,7 +258,7 @@ int ogs_nas_parse_nssai(
if (!nas_nssai->length) { if (!nas_nssai->length) {
ogs_error("No NSSAI [%p:%d]", nas_nssai->buffer, nas_nssai->length); ogs_error("No NSSAI [%p:%d]", nas_nssai->buffer, nas_nssai->length);
return OGS_ERROR; return 0;
} }
while (pos < nas_nssai->length && while (pos < nas_nssai->length &&

View File

@ -239,7 +239,8 @@ int gmm_handle_registration_update(amf_ue_t *amf_ue,
} }
if (i == amf_ue->requested_nssai.num_of_s_nssai) { if (i == amf_ue->requested_nssai.num_of_s_nssai) {
ogs_error("CHECK CONFIGURATION: Cannot find Requested NSSAI"); ogs_error("Cannot find Requested NSSAI [%d]",
amf_ue->requested_nssai.num_of_s_nssai);
for (i = 0; i < amf_ue->requested_nssai.num_of_s_nssai; i++) { for (i = 0; i < amf_ue->requested_nssai.num_of_s_nssai; i++) {
ogs_error(" PLMN_ID[MCC:%d MNC:%d]", ogs_error(" PLMN_ID[MCC:%d MNC:%d]",
ogs_plmn_id_mcc(&amf_ue->nr_tai.plmn_id), ogs_plmn_id_mcc(&amf_ue->nr_tai.plmn_id),

View File

@ -165,7 +165,8 @@ int amf_nudm_sdm_handle_provisioned(
amf_ue->allowed_nssai.num_of_s_nssai = 0; amf_ue->allowed_nssai.num_of_s_nssai = 0;
amf_ue->rejected_nssai.num_of_s_nssai = 0; amf_ue->rejected_nssai.num_of_s_nssai = 0;
if (amf_ue->requested_nssai.num_of_s_nssai) { if (ogs_app()->parameter.ignore_requested_nssai == 0 &&
amf_ue->requested_nssai.num_of_s_nssai) {
for (i = 0; i < amf_ue->requested_nssai.num_of_s_nssai; i++) { for (i = 0; i < amf_ue->requested_nssai.num_of_s_nssai; i++) {
ogs_slice_data_t *slice = NULL; ogs_slice_data_t *slice = NULL;
ogs_nas_s_nssai_ie_t *requested = ogs_nas_s_nssai_ie_t *requested =
@ -224,12 +225,26 @@ int amf_nudm_sdm_handle_provisioned(
if (amf_ue->allowed_nssai.num_of_s_nssai) { if (amf_ue->allowed_nssai.num_of_s_nssai) {
amf_ue->allowed_nssai_present = true; amf_ue->allowed_nssai_present = true;
} else { } else {
ogs_error("CHECK DATABASE: Cannot create Allowed-NSSAI"); ogs_error("No Allowed-NSSAI");
ogs_error(" Number of Subscribed S-NSSAI [%d]",
amf_ue->num_of_slice);
for (i = 0; i < amf_ue->num_of_slice; i++) {
ogs_slice_data_t *slice = &amf_ue->slice[i];
if (slice->default_indicator == true) {
ogs_error(" Default S_NSSAI[SST:%d SD:0x%x]",
slice->s_nssai.sst, slice->s_nssai.sd.v);
} else {
ogs_error(" S_NSSAI[SST:%d SD:0x%x]",
slice->s_nssai.sst, slice->s_nssai.sd.v);
}
}
ogs_error(" Number of Requested NSSAI [%d]",
amf_ue->requested_nssai.num_of_s_nssai);
for (i = 0; i < amf_ue->requested_nssai.num_of_s_nssai; i++) { for (i = 0; i < amf_ue->requested_nssai.num_of_s_nssai; i++) {
ogs_error(" PLMN_ID[MCC:%d MNC:%d]", ogs_error(" PLMN_ID[MCC:%d MNC:%d]",
ogs_plmn_id_mcc(&amf_ue->nr_tai.plmn_id), ogs_plmn_id_mcc(&amf_ue->nr_tai.plmn_id),
ogs_plmn_id_mnc(&amf_ue->nr_tai.plmn_id)); ogs_plmn_id_mnc(&amf_ue->nr_tai.plmn_id));
ogs_error(" S_NSSAI[SST:%d SD:0x%x]", ogs_error(" S_NSSAI[SST:%d SD:0x%x]",
amf_ue->requested_nssai.s_nssai[i].sst, amf_ue->requested_nssai.s_nssai[i].sst,
amf_ue->requested_nssai.s_nssai[i].sd.v); amf_ue->requested_nssai.s_nssai[i].sd.v);
} }