diff --git a/configs/open5gs/amf.yaml.in b/configs/open5gs/amf.yaml.in index 7e939e81c..f765397c3 100644 --- a/configs/open5gs/amf.yaml.in +++ b/configs/open5gs/amf.yaml.in @@ -254,11 +254,9 @@ nrf: # o Prefer IPv4 instead of IPv6 for estabishing new GTP connections. # prefer_ipv4: true # -# o Enable Multicast traffic to the UE -# multicast: true -# -# o Disable Stateless Address Autoconfiguration for IPv6 -# no_slaac: true +# o AMF ignores the UE Requested NSSAI and creates an allowed-NSSAI +# based on the Default S-NSSAI in the Subscription DB. +# ignore_requested_nssai: true # parameter: diff --git a/configs/open5gs/ausf.yaml.in b/configs/open5gs/ausf.yaml.in index cb8fd2a7d..fbd0b38d7 100644 --- a/configs/open5gs/ausf.yaml.in +++ b/configs/open5gs/ausf.yaml.in @@ -126,12 +126,6 @@ nrf: # o Prefer IPv4 instead of IPv6 for estabishing new GTP connections. # prefer_ipv4: true # -# o Enable Multicast traffic to the UE -# multicast: true -# -# o Disable Stateless Address Autoconfiguration for IPv6 -# no_slaac: true -# parameter: # diff --git a/configs/open5gs/hss.yaml.in b/configs/open5gs/hss.yaml.in index d07602bfb..deef15251 100644 --- a/configs/open5gs/hss.yaml.in +++ b/configs/open5gs/hss.yaml.in @@ -41,12 +41,6 @@ hss: # o Prefer IPv4 instead of IPv6 for estabishing new GTP connections. # prefer_ipv4: true # -# o Enable Multicast traffic to the UE -# multicast: true -# -# o Disable Stateless Address Autoconfiguration for IPv6 -# no_slaac: true -# parameter: # diff --git a/configs/open5gs/mme.yaml.in b/configs/open5gs/mme.yaml.in index e1968dd08..592d80c8f 100644 --- a/configs/open5gs/mme.yaml.in +++ b/configs/open5gs/mme.yaml.in @@ -347,12 +347,6 @@ smf: # o Prefer IPv4 instead of IPv6 for estabishing new GTP connections. # 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 # - Remove HashMME in Security-mode command message # - Use the length 1 of EPS network feature support in Attach accept message diff --git a/configs/open5gs/nrf.yaml.in b/configs/open5gs/nrf.yaml.in index c3d47e068..abfed29f4 100644 --- a/configs/open5gs/nrf.yaml.in +++ b/configs/open5gs/nrf.yaml.in @@ -87,12 +87,6 @@ nrf: # o Prefer IPv4 instead of IPv6 for estabishing new GTP connections. # prefer_ipv4: true # -# o Enable Multicast traffic to the UE -# multicast: true -# -# o Disable Stateless Address Autoconfiguration for IPv6 -# no_slaac: true -# parameter: # diff --git a/configs/open5gs/nssf.yaml.in b/configs/open5gs/nssf.yaml.in index ecd4f7e2d..b8657991f 100644 --- a/configs/open5gs/nssf.yaml.in +++ b/configs/open5gs/nssf.yaml.in @@ -168,12 +168,6 @@ nrf: # o Prefer IPv4 instead of IPv6 for estabishing new GTP connections. # prefer_ipv4: true # -# o Enable Multicast traffic to the UE -# multicast: true -# -# o Disable Stateless Address Autoconfiguration for IPv6 -# no_slaac: true -# parameter: # diff --git a/configs/open5gs/pcf.yaml.in b/configs/open5gs/pcf.yaml.in index f533af374..0c49a7453 100644 --- a/configs/open5gs/pcf.yaml.in +++ b/configs/open5gs/pcf.yaml.in @@ -128,12 +128,6 @@ nrf: # o Prefer IPv4 instead of IPv6 for estabishing new GTP connections. # prefer_ipv4: true # -# o Enable Multicast traffic to the UE -# multicast: true -# -# o Disable Stateless Address Autoconfiguration for IPv6 -# no_slaac: true -# parameter: # diff --git a/configs/open5gs/pcrf.yaml.in b/configs/open5gs/pcrf.yaml.in index ad6c98a5d..5b9349c41 100644 --- a/configs/open5gs/pcrf.yaml.in +++ b/configs/open5gs/pcrf.yaml.in @@ -40,12 +40,6 @@ pcrf: # o Prefer IPv4 instead of IPv6 for estabishing new GTP connections. # 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 # - Replace IPv4/v6 local addr field in AAR Media-Subcomponent AVP by any # no_ipv4v6_local_addr_in_packet_filter: true diff --git a/configs/open5gs/sgwc.yaml.in b/configs/open5gs/sgwc.yaml.in index b8165ea6c..b19b6fcc6 100644 --- a/configs/open5gs/sgwc.yaml.in +++ b/configs/open5gs/sgwc.yaml.in @@ -126,12 +126,6 @@ sgwu: # o Prefer IPv4 instead of IPv6 for estabishing new GTP connections. # prefer_ipv4: true # -# o Enable Multicast traffic to the UE -# multicast: true -# -# o Disable Stateless Address Autoconfiguration for IPv6 -# no_slaac: true -# parameter: # diff --git a/configs/open5gs/sgwu.yaml.in b/configs/open5gs/sgwu.yaml.in index e635e463c..79bd05145 100644 --- a/configs/open5gs/sgwu.yaml.in +++ b/configs/open5gs/sgwu.yaml.in @@ -113,12 +113,6 @@ sgwc: # o Prefer IPv4 instead of IPv6 for estabishing new GTP connections. # prefer_ipv4: true # -# o Enable Multicast traffic to the UE -# multicast: true -# -# o Disable Stateless Address Autoconfiguration for IPv6 -# no_slaac: true -# parameter: # diff --git a/configs/open5gs/smf.yaml.in b/configs/open5gs/smf.yaml.in index d45aa60f8..728b0835f 100644 --- a/configs/open5gs/smf.yaml.in +++ b/configs/open5gs/smf.yaml.in @@ -444,12 +444,6 @@ upf: # o Prefer IPv4 instead of IPv6 for estabishing new GTP connections. # prefer_ipv4: true # -# o Enable Multicast traffic to the UE -# multicast: true -# -# o Disable Stateless Address Autoconfiguration for IPv6 -# no_slaac: true -# parameter: # diff --git a/configs/open5gs/udm.yaml.in b/configs/open5gs/udm.yaml.in index eb1ab2859..0a1140813 100644 --- a/configs/open5gs/udm.yaml.in +++ b/configs/open5gs/udm.yaml.in @@ -126,12 +126,6 @@ nrf: # o Prefer IPv4 instead of IPv6 for estabishing new GTP connections. # prefer_ipv4: true # -# o Enable Multicast traffic to the UE -# multicast: true -# -# o Disable Stateless Address Autoconfiguration for IPv6 -# no_slaac: true -# parameter: # diff --git a/configs/open5gs/udr.yaml.in b/configs/open5gs/udr.yaml.in index aa078a3c0..2d52cc15b 100644 --- a/configs/open5gs/udr.yaml.in +++ b/configs/open5gs/udr.yaml.in @@ -128,12 +128,6 @@ nrf: # o Prefer IPv4 instead of IPv6 for estabishing new GTP connections. # prefer_ipv4: true # -# o Enable Multicast traffic to the UE -# multicast: true -# -# o Disable Stateless Address Autoconfiguration for IPv6 -# no_slaac: true -# parameter: # diff --git a/configs/open5gs/upf.yaml.in b/configs/open5gs/upf.yaml.in index c570232bc..b95623370 100644 --- a/configs/open5gs/upf.yaml.in +++ b/configs/open5gs/upf.yaml.in @@ -172,13 +172,6 @@ smf: # o Prefer IPv4 instead of IPv6 for estabishing new GTP connections. # prefer_ipv4: true # -# o Enable Multicast traffic to the UE -# multicast: true -# -# o Disable Stateless Address Autoconfiguration for IPv6 -# no_slaac: true -# -# parameter: # diff --git a/lib/app/ogs-context.c b/lib/app/ogs-context.c index 37cd5aaa6..5fc5d0434 100644 --- a/lib/app/ogs-context.c +++ b/lib/app/ogs-context.c @@ -339,6 +339,9 @@ int ogs_app_context_parse_config(void) parameter_key, "no_ipv4v6_local_addr_in_packet_filter")) { self.parameter.no_ipv4v6_local_addr_in_packet_filter = ogs_yaml_iter_bool(¶meter_iter); + } else if (!strcmp(parameter_key, "ignore_requested_nssai")) { + self.parameter.ignore_requested_nssai = + ogs_yaml_iter_bool(¶meter_iter); } else ogs_warn("unknown key `%s`", parameter_key); } diff --git a/lib/app/ogs-context.h b/lib/app/ogs-context.h index d4137d9ae..7246e83c4 100644 --- a/lib/app/ogs-context.h +++ b/lib/app/ogs-context.h @@ -75,6 +75,7 @@ typedef struct ogs_app_context_s { int use_openair; int no_ipv4v6_local_addr_in_packet_filter; + int ignore_requested_nssai; } parameter; ogs_sockopt_t sockopt; diff --git a/lib/nas/5gs/types.c b/lib/nas/5gs/types.c index 149509053..17bd32d58 100644 --- a/lib/nas/5gs/types.c +++ b/lib/nas/5gs/types.c @@ -258,7 +258,7 @@ int ogs_nas_parse_nssai( if (!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 && diff --git a/src/amf/gmm-handler.c b/src/amf/gmm-handler.c index b36fb7765..3c9a920af 100644 --- a/src/amf/gmm-handler.c +++ b/src/amf/gmm-handler.c @@ -239,7 +239,8 @@ int gmm_handle_registration_update(amf_ue_t *amf_ue, } 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++) { ogs_error(" PLMN_ID[MCC:%d MNC:%d]", ogs_plmn_id_mcc(&amf_ue->nr_tai.plmn_id), diff --git a/src/amf/nudm-handler.c b/src/amf/nudm-handler.c index beb697f53..597bca9a3 100644 --- a/src/amf/nudm-handler.c +++ b/src/amf/nudm-handler.c @@ -165,7 +165,8 @@ int amf_nudm_sdm_handle_provisioned( amf_ue->allowed_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++) { ogs_slice_data_t *slice = NULL; 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) { amf_ue->allowed_nssai_present = true; } 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++) { - 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_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].sd.v); }