Projects
osmocom:nightly
open5gs
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
Expand all
Collapse all
Changes of Revision 965
View file
open5gs_2.7.2.4610.056b.202502102026.dsc -> open5gs_2.7.2.4612.8715.202502112026.dsc
Changed
@@ -2,7 +2,7 @@ Source: open5gs Binary: open5gs-common, open5gs-mme, open5gs-sgwc, open5gs-smf, open5gs-amf, open5gs-sgwu, open5gs-upf, open5gs-hss, open5gs-pcrf, open5gs-nrf, open5gs-scp, open5gs-sepp, open5gs-ausf, open5gs-udm, open5gs-pcf, open5gs-nssf, open5gs-bsf, open5gs-udr, open5gs, open5gs-dbg Architecture: any -Version: 2.7.2.4610.056b.202502102026 +Version: 2.7.2.4612.8715.202502112026 Maintainer: Harald Welte <laforge@gnumonks.org> Uploaders: Sukchan Lee <acetcom@gmail.com> Homepage: https://open5gs.org @@ -32,8 +32,8 @@ open5gs-udr deb net optional arch=any open5gs-upf deb net optional arch=any Checksums-Sha1: - 5fb441b769b36afe0c5bfce0fd434574c15a2e9c 14524760 open5gs_2.7.2.4610.056b.202502102026.tar.xz + 46b81168d8cbfa60580dd76ab64a305edb71c00a 14525680 open5gs_2.7.2.4612.8715.202502112026.tar.xz Checksums-Sha256: - 4c24a2224aa072de3f58622019a72f948c29bc7d9078a65ec5eb3329674b44fc 14524760 open5gs_2.7.2.4610.056b.202502102026.tar.xz + ccdca04e595a22b22058d8d287c90a9899979ea5fcc7644bbba246c50dde77f2 14525680 open5gs_2.7.2.4612.8715.202502112026.tar.xz Files: - b57529aa51f5ae2a2320922b9f7bafe5 14524760 open5gs_2.7.2.4610.056b.202502102026.tar.xz + ec297c86edbc43570b85e59829274e4d 14525680 open5gs_2.7.2.4612.8715.202502112026.tar.xz
View file
open5gs_2.7.2.4610.056b.202502102026.tar.xz/.tarball-version -> open5gs_2.7.2.4612.8715.202502112026.tar.xz/.tarball-version
Changed
@@ -1 +1 @@ -2.7.2.4610-056b.202502102026 +2.7.2.4612-8715.202502112026
View file
open5gs_2.7.2.4610.056b.202502102026.tar.xz/debian/changelog -> open5gs_2.7.2.4612.8715.202502112026.tar.xz/debian/changelog
Changed
@@ -1,8 +1,8 @@ -open5gs (2.7.2.4610.056b.202502102026) unstable; urgency=medium +open5gs (2.7.2.4612.8715.202502112026) unstable; urgency=medium * Automatically generated changelog entry for building the Osmocom nightly feed - -- Osmocom OBS scripts <info@osmocom.org> Mon, 10 Feb 2025 20:27:53 +0000 + -- Osmocom OBS scripts <info@osmocom.org> Tue, 11 Feb 2025 20:27:55 +0000 open5gs (2.7.2) unstable; urgency=medium
View file
open5gs_2.7.2.4610.056b.202502102026.tar.xz/lib/sbi/message.c -> open5gs_2.7.2.4612.8715.202502112026.tar.xz/lib/sbi/message.c
Changed
@@ -63,6 +63,10 @@ if (message->param.discovery_option) ogs_sbi_discovery_option_free(message->param.discovery_option); + /* Query parameters */ + for (i = 0; i < message->param.num_of_fields; i++) + ogs_free(message->param.fieldsi); + /* JSON Data */ if (message->NFProfile) OpenAPI_nf_profile_free(message->NFProfile); @@ -109,6 +113,8 @@ message->Amf3GppAccessRegistrationModification); if (message->SmfRegistration) OpenAPI_smf_registration_free(message->SmfRegistration); + if (message->Nssai) + OpenAPI_nssai_free(message->Nssai); if (message->AccessAndMobilitySubscriptionData) OpenAPI_access_and_mobility_subscription_data_free( message->AccessAndMobilitySubscriptionData); @@ -652,6 +658,26 @@ if (sNSSAI.sd) ogs_free(sNSSAI.sd); } + if (message->param.num_of_fields) { + char *fields; + + fields = ogs_strdup(message->param.fields0); + if (!fields) { + ogs_error("ogs_strdup() failed"); + return NULL; + } + + for (i = 1; i < message->param.num_of_fields; i++) + fields = ogs_mstrcatf( + fields, ",%s", message->param.fieldsi); + + if (fields) { + ogs_sbi_header_set(request->http.params, + OGS_SBI_PARAM_FIELDS, fields); + ogs_free(fields); + } + + } if (message->param.ipv4addr) { ogs_sbi_header_set(request->http.params, OGS_SBI_PARAM_IPV4ADDR, message->param.ipv4addr); @@ -956,6 +982,30 @@ cJSON_Delete(item); } } + } else if (!strcmp(ogs_hash_this_key(hi), OGS_SBI_PARAM_FIELDS)) { + char *_v = ogs_hash_this_val(hi), *v = NULL; + char *token = NULL; + char *saveptr = NULL; + + v = ogs_strdup(_v); + ogs_assert(v); + + token = ogs_strtok_r(v, ",", &saveptr); + while (token != NULL) { + if (message->param.num_of_fields < OGS_SBI_MAX_NUM_OF_FIELDS) { + message->param.fields + message->param.num_of_fields = ogs_strdup(token); + ogs_assert(message->param.fields + message->param.num_of_fields); + message->param.num_of_fields++; + token = ogs_strtok_r(NULL, ",", &saveptr); + } else { + ogs_error("Fields in query exceed MAX_NUM_OF_FIELDS"); + break; + } + } + + ogs_free(v); } else if (!strcmp(ogs_hash_this_key(hi), OGS_SBI_PARAM_IPV4ADDR)) { message->param.ipv4addr = ogs_hash_this_val(hi); } else if (!strcmp(ogs_hash_this_key(hi), OGS_SBI_PARAM_IPV6PREFIX)) { @@ -1221,6 +1271,9 @@ } else if (message->SmfRegistration) { item = OpenAPI_smf_registration_convertToJSON(message->SmfRegistration); ogs_assert(item); + } else if (message->Nssai) { + item = OpenAPI_nssai_convertToJSON(message->Nssai); + ogs_assert(item); } else if (message->AccessAndMobilitySubscriptionData) { item = OpenAPI_access_and_mobility_subscription_data_convertToJSON( message->AccessAndMobilitySubscriptionData); @@ -1685,6 +1738,18 @@ CASE(OGS_SBI_SERVICE_NAME_NUDM_SDM) SWITCH(message->h.resource.component1) + CASE(OGS_SBI_RESOURCE_NAME_NSSAI) + if (message->res_status < 300) { + message->Nssai = OpenAPI_nssai_parseFromJSON(item); + if (!message->Nssai) { + rv = OGS_ERROR; + ogs_error("JSON parse error"); + } + } else { + ogs_error("HTTP ERROR Status : %d", message->res_status); + } + break; + CASE(OGS_SBI_RESOURCE_NAME_AM_DATA) if (message->res_status < 300) { message->AccessAndMobilitySubscriptionData =
View file
open5gs_2.7.2.4610.056b.202502102026.tar.xz/lib/sbi/message.h -> open5gs_2.7.2.4612.8715.202502112026.tar.xz/lib/sbi/message.h
Changed
@@ -93,6 +93,7 @@ #define OGS_SBI_RESOURCE_NAME_SM_DATA "sm-data" #define OGS_SBI_RESOURCE_NAME_SMF_SELECT_DATA "smf-select-data" #define OGS_SBI_RESOURCE_NAME_UE_CONTEXT_IN_SMF_DATA "ue-context-in-smf-data" +#define OGS_SBI_RESOURCE_NAME_NSSAI "nssai" #define OGS_SBI_RESOURCE_NAME_SMF_SELECTION_SUBSCRIPTION_DATA \ "smf-selection-subscription-data" #define OGS_SBI_RESOURCE_NAME_SDM_SUBSCRIPTIONS "sdm-subscriptions" @@ -347,9 +348,15 @@ #define OGS_SBI_PARAM_TAI "tai" #define OGS_SBI_PARAM_SLICE_INFO_REQUEST_FOR_PDU_SESSION \ "slice-info-request-for-pdu-session" +#define OGS_SBI_PARAM_FIELDS "fields" #define OGS_SBI_PARAM_IPV4ADDR "ipv4Addr" #define OGS_SBI_PARAM_IPV6PREFIX "ipv6Prefix" +#define OGS_SBI_PARAM_FIELDS_GPSIS "gpsis" +#define OGS_SBI_PARAM_FIELDS_SUBSCRIBED_UE_AMBR "subscribedUeAmbr" +#define OGS_SBI_PARAM_FIELDS_NSSAI "nssai" +#define OGS_SBI_MAX_NUM_OF_FIELDS 8 + #define OGS_SBI_CONTENT_JSON_TYPE \ OGS_SBI_APPLICATION_TYPE "/" OGS_SBI_APPLICATION_JSON_TYPE #define OGS_SBI_CONTENT_PROBLEM_TYPE \ @@ -484,6 +491,8 @@ OpenAPI_nf_type_e nf_type; int limit; char *dnn; + int num_of_fields; + char *fieldsOGS_SBI_MAX_NUM_OF_FIELDS; /* Shared memory */ ogs_plmn_id_t plmn_id; @@ -519,6 +528,7 @@ OpenAPI_amf3_gpp_access_registration_t *Amf3GppAccessRegistration; OpenAPI_amf3_gpp_access_registration_modification_t *Amf3GppAccessRegistrationModification; + OpenAPI_nssai_t *Nssai; OpenAPI_access_and_mobility_subscription_data_t *AccessAndMobilitySubscriptionData; OpenAPI_smf_selection_subscription_data_t *SmfSelectionSubscriptionData;
View file
open5gs_2.7.2.4610.056b.202502102026.tar.xz/src/udm/nudm-handler.c -> open5gs_2.7.2.4612.8715.202502112026.tar.xz/src/udm/nudm-handler.c
Changed
@@ -75,7 +75,7 @@ r = udm_ue_sbi_discover_and_send(OGS_SBI_SERVICE_TYPE_NUDR_DR, NULL, udm_nudr_dr_build_authentication_subscription, - udm_ue, stream, NULL); + udm_ue, stream, UDM_SBI_NO_STATE, NULL); ogs_expect(r == OGS_OK); ogs_assert(r != OGS_ERROR); @@ -165,7 +165,7 @@ r = udm_ue_sbi_discover_and_send(OGS_SBI_SERVICE_TYPE_NUDR_DR, NULL, udm_nudr_dr_build_authentication_subscription, - udm_ue, stream, udm_ue->sqn); + udm_ue, stream, UDM_SBI_NO_STATE, udm_ue->sqn); ogs_expect(r == OGS_OK); ogs_assert(r != OGS_ERROR); } @@ -237,7 +237,7 @@ r = udm_ue_sbi_discover_and_send(OGS_SBI_SERVICE_TYPE_NUDR_DR, NULL, udm_nudr_dr_build_update_authentication_status, - udm_ue, stream, NULL); + udm_ue, stream, UDM_SBI_NO_STATE, NULL); ogs_expect(r == OGS_OK); ogs_assert(r != OGS_ERROR); @@ -346,7 +346,8 @@ message->Amf3GppAccessRegistration); r = udm_ue_sbi_discover_and_send(OGS_SBI_SERVICE_TYPE_NUDR_DR, NULL, - udm_nudr_dr_build_update_amf_context, udm_ue, stream, NULL); + udm_nudr_dr_build_update_amf_context, udm_ue, stream, + UDM_SBI_NO_STATE, NULL); ogs_expect(r == OGS_OK); ogs_assert(r != OGS_ERROR); @@ -473,7 +474,7 @@ r = udm_ue_sbi_discover_and_send(OGS_SBI_SERVICE_TYPE_NUDR_DR, NULL, udm_nudr_dr_build_patch_amf_context, - udm_ue, stream, PatchItemList); + udm_ue, stream, UDM_SBI_NO_STATE, PatchItemList); ogs_expect(r == OGS_OK); ogs_assert(r != OGS_ERROR); @@ -587,7 +588,8 @@ OpenAPI_smf_registration_copy(sess->smf_registration, SmfRegistration); r = udm_sess_sbi_discover_and_send(OGS_SBI_SERVICE_TYPE_NUDR_DR, NULL, - udm_nudr_dr_build_update_smf_context, sess, stream, NULL); + udm_nudr_dr_build_update_smf_context, sess, stream, + UDM_SBI_NO_STATE, NULL); ogs_expect(r == OGS_OK); ogs_assert(r != OGS_ERROR); @@ -608,7 +610,8 @@ ogs_assert(udm_ue); r = udm_sess_sbi_discover_and_send(OGS_SBI_SERVICE_TYPE_NUDR_DR, NULL, - udm_nudr_dr_build_delete_smf_context, sess, stream, NULL); + udm_nudr_dr_build_delete_smf_context, sess, stream, + UDM_SBI_NO_STATE, NULL); ogs_expect(r == OGS_OK); ogs_assert(r != OGS_ERROR);
View file
open5gs_2.7.2.4610.056b.202502102026.tar.xz/src/udm/nudr-build.c -> open5gs_2.7.2.4612.8715.202502112026.tar.xz/src/udm/nudr-build.c
Changed
@@ -239,6 +239,12 @@ (char *)OGS_SBI_RESOURCE_NAME_SMF_SELECTION_SUBSCRIPTION_DATA; break; + CASE(OGS_SBI_RESOURCE_NAME_NSSAI) + sendmsg.h.resource.component4 = (char *)OGS_SBI_RESOURCE_NAME_AM_DATA; + sendmsg.param.fields0 = (char *)OGS_SBI_RESOURCE_NAME_NSSAI; + sendmsg.param.num_of_fields = 1; + break; + DEFAULT END
View file
open5gs_2.7.2.4610.056b.202502102026.tar.xz/src/udm/nudr-handler.c -> open5gs_2.7.2.4612.8715.202502112026.tar.xz/src/udm/nudr-handler.c
Changed
@@ -18,6 +18,7 @@ */ #include "nudr-handler.h" +#include "sbi-path.h" bool udm_nudr_dr_handle_subscription_authentication( udm_ue_t *udm_ue, ogs_sbi_stream_t *stream, ogs_sbi_message_t *recvmsg) @@ -601,7 +602,8 @@ } bool udm_nudr_dr_handle_subscription_provisioned( - udm_ue_t *udm_ue, ogs_sbi_stream_t *stream, ogs_sbi_message_t *recvmsg) + udm_ue_t *udm_ue, ogs_sbi_stream_t *stream, int state, + ogs_sbi_message_t *recvmsg) { char *strerror = NULL; ogs_sbi_server_t *server = NULL; @@ -636,6 +638,29 @@ memset(&sendmsg, 0, sizeof(sendmsg)); + /* Check if original request was for /nudm-sdm/v2/{supi}/nssai */ + if (state == UDM_SBI_UE_PROVISIONED_NSSAI_ONLY) { + OpenAPI_nssai_t *Nssai = NULL; + Nssai = AccessAndMobilitySubscriptionData->nssai; + if (!Nssai) { + ogs_error("%s No Nssai", udm_ue->supi); + ogs_assert(true == + ogs_sbi_server_send_error( + stream, OGS_SBI_HTTP_STATUS_BAD_REQUEST, + recvmsg, "No Nssai", + udm_ue->supi, NULL)); + return false; + } + + sendmsg.Nssai = OpenAPI_nssai_copy(sendmsg.Nssai, Nssai); + response = ogs_sbi_build_response(&sendmsg, recvmsg->res_status); + ogs_assert(response); + ogs_assert(true == ogs_sbi_server_send_response(stream, response)); + OpenAPI_nssai_free(sendmsg.Nssai); + + break; + } + sendmsg.AccessAndMobilitySubscriptionData = OpenAPI_access_and_mobility_subscription_data_copy( sendmsg.AccessAndMobilitySubscriptionData,
View file
open5gs_2.7.2.4610.056b.202502102026.tar.xz/src/udm/nudr-handler.h -> open5gs_2.7.2.4612.8715.202502112026.tar.xz/src/udm/nudr-handler.h
Changed
@@ -31,7 +31,8 @@ bool udm_nudr_dr_handle_subscription_context( udm_ue_t *udm_ue, ogs_sbi_stream_t *stream, ogs_sbi_message_t *recvmsg); bool udm_nudr_dr_handle_subscription_provisioned( - udm_ue_t *udm_ue, ogs_sbi_stream_t *stream, ogs_sbi_message_t *recvmsg); + udm_ue_t *udm_ue, ogs_sbi_stream_t *stream, int state, + ogs_sbi_message_t *recvmsg); bool udm_nudr_dr_handle_smf_registration( udm_sess_t *sess, ogs_sbi_stream_t *stream, ogs_sbi_message_t *recvmsg);
View file
open5gs_2.7.2.4610.056b.202502102026.tar.xz/src/udm/sbi-path.c -> open5gs_2.7.2.4612.8715.202502112026.tar.xz/src/udm/sbi-path.c
Changed
@@ -102,7 +102,7 @@ ogs_sbi_service_type_e service_type, ogs_sbi_discovery_option_t *discovery_option, ogs_sbi_build_f build, - void *context, ogs_sbi_stream_t *stream, void *data) + void *context, ogs_sbi_stream_t *stream, int state, void *data) { ogs_sbi_xact_t *xact = NULL; int r; @@ -123,6 +123,8 @@ return OGS_ERROR; } + xact->state = state; + if (stream) { xact->assoc_stream_id = ogs_sbi_id_from_stream(stream); ogs_assert(xact->assoc_stream_id >= OGS_MIN_POOL_ID && @@ -143,7 +145,7 @@ ogs_sbi_service_type_e service_type, ogs_sbi_discovery_option_t *discovery_option, ogs_sbi_request_t *(*build)(udm_ue_t *udm_ue, void *data), - udm_ue_t *udm_ue, ogs_sbi_stream_t *stream, void *data) + udm_ue_t *udm_ue, ogs_sbi_stream_t *stream, int state, void *data) { int r; @@ -151,7 +153,7 @@ r = udm_sbi_discover_and_send( udm_ue->id, &udm_ue->sbi, service_type, discovery_option, - (ogs_sbi_build_f)build, udm_ue, stream, data); + (ogs_sbi_build_f)build, udm_ue, stream, state, data); if (r != OGS_OK) { ogs_error("udm_ue_sbi_discover_and_send() failed"); ogs_assert(true == @@ -168,7 +170,7 @@ ogs_sbi_service_type_e service_type, ogs_sbi_discovery_option_t *discovery_option, ogs_sbi_request_t *(*build)(udm_sess_t *sess, void *data), - udm_sess_t *sess, ogs_sbi_stream_t *stream, void *data) + udm_sess_t *sess, ogs_sbi_stream_t *stream, int state, void *data) { int r; @@ -176,7 +178,7 @@ r = udm_sbi_discover_and_send( sess->id, &sess->sbi, service_type, discovery_option, - (ogs_sbi_build_f)build, sess, stream, data); + (ogs_sbi_build_f)build, sess, stream, state, data); if (r != OGS_OK) { ogs_error("udm_sess_sbi_discover_and_send() failed"); ogs_assert(true ==
View file
open5gs_2.7.2.4610.056b.202502102026.tar.xz/src/udm/sbi-path.h -> open5gs_2.7.2.4612.8715.202502112026.tar.xz/src/udm/sbi-path.h
Changed
@@ -31,16 +31,20 @@ bool udm_sbi_send_request( ogs_sbi_nf_instance_t *nf_instance, ogs_sbi_xact_t *xact); + +#define UDM_SBI_NO_STATE 0 +#define UDM_SBI_UE_PROVISIONED_NSSAI_ONLY 1 + int udm_ue_sbi_discover_and_send( ogs_sbi_service_type_e service_type, ogs_sbi_discovery_option_t *discovery_option, ogs_sbi_request_t *(*build)(udm_ue_t *udm_ue, void *data), - udm_ue_t *udm_ue, ogs_sbi_stream_t *stream, void *data); + udm_ue_t *udm_ue, ogs_sbi_stream_t *stream, int state, void *data); int udm_sess_sbi_discover_and_send( ogs_sbi_service_type_e service_type, ogs_sbi_discovery_option_t *discovery_option, ogs_sbi_request_t *(*build)(udm_sess_t *sess, void *data), - udm_sess_t *sess, ogs_sbi_stream_t *stream, void *data); + udm_sess_t *sess, ogs_sbi_stream_t *stream, int state, void *data); #ifdef __cplusplus }
View file
open5gs_2.7.2.4610.056b.202502102026.tar.xz/src/udm/udm-sm.c -> open5gs_2.7.2.4612.8715.202502112026.tar.xz/src/udm/udm-sm.c
Changed
@@ -176,16 +176,19 @@ udm_ue = udm_ue_find_by_suci_or_supi( message.h.resource.component0); if (!udm_ue) { - if (!strcmp(message.h.method, - OGS_SBI_HTTP_METHOD_POST)) { + SWITCH(message.h.method) + CASE(OGS_SBI_HTTP_METHOD_POST) + CASE(OGS_SBI_HTTP_METHOD_GET) udm_ue = udm_ue_add(message.h.resource.component0); if (!udm_ue) { ogs_error("Invalid Request %s", message.h.resource.component0); } - } else { + break; + + DEFAULT ogs_error("Invalid HTTP method %s", message.h.method); - } + END } } @@ -461,6 +464,8 @@ e->h.sbi.data = OGS_UINT_TO_POINTER(sbi_xact->assoc_stream_id); + e->h.sbi.state = sbi_xact->state; + ogs_sbi_xact_remove(sbi_xact); udm_ue = udm_ue_find_by_id(udm_ue_id);
View file
open5gs_2.7.2.4610.056b.202502102026.tar.xz/src/udm/ue-sm.c -> open5gs_2.7.2.4612.8715.202502112026.tar.xz/src/udm/ue-sm.c
Changed
@@ -196,7 +196,17 @@ r = udm_ue_sbi_discover_and_send( OGS_SBI_SERVICE_TYPE_NUDR_DR, NULL, udm_nudr_dr_build_query_subscription_provisioned, - udm_ue, stream, message); + udm_ue, stream, UDM_SBI_NO_STATE, message); + ogs_expect(r == OGS_OK); + ogs_assert(r != OGS_ERROR); + break; + + CASE(OGS_SBI_RESOURCE_NAME_NSSAI) + r = udm_ue_sbi_discover_and_send( + OGS_SBI_SERVICE_TYPE_NUDR_DR, NULL, + udm_nudr_dr_build_query_subscription_provisioned, + udm_ue, stream, UDM_SBI_UE_PROVISIONED_NSSAI_ONLY, + message); ogs_expect(r == OGS_OK); ogs_assert(r != OGS_ERROR); break; @@ -305,7 +315,7 @@ SWITCH(message->h.resource.component3) CASE(OGS_SBI_RESOURCE_NAME_PROVISIONED_DATA) udm_nudr_dr_handle_subscription_provisioned( - udm_ue, stream, message); + udm_ue, stream, e->h.sbi.state, message); break; DEFAULT
View file
open5gs_2.7.2.4610.056b.202502102026.tar.xz/src/udr/nudr-handler.c -> open5gs_2.7.2.4612.8715.202502112026.tar.xz/src/udr/nudr-handler.c
Changed
@@ -467,6 +467,9 @@ SWITCH(recvmsg->h.resource.component4) CASE(OGS_SBI_RESOURCE_NAME_AM_DATA) int i; + bool processGpsi = false; + bool processUeAmbr = false; + bool processNssai = false; OpenAPI_access_and_mobility_subscription_data_t AccessAndMobilitySubscriptionData; @@ -480,77 +483,110 @@ OpenAPI_lnode_t *node = NULL; - GpsiList = OpenAPI_list_create(); - for (i = 0; i < subscription_data.num_of_msisdn; i++) { - char *gpsi = ogs_msprintf("%s-%s", - OGS_ID_GPSI_TYPE_MSISDN, subscription_data.msisdni.bcd); - ogs_assert(gpsi); - OpenAPI_list_add(GpsiList, gpsi); - } - - SubscribedUeAmbr.uplink = ogs_sbi_bitrate_to_string( - subscription_data.ambr.uplink, OGS_SBI_BITRATE_KBPS); - SubscribedUeAmbr.downlink = ogs_sbi_bitrate_to_string( - subscription_data.ambr.downlink, OGS_SBI_BITRATE_KBPS); + memset(&AccessAndMobilitySubscriptionData, 0, + sizeof(AccessAndMobilitySubscriptionData)); + memset(&SubscribedUeAmbr, 0, sizeof(SubscribedUeAmbr)); memset(&NSSAI, 0, sizeof(NSSAI)); - DefaultSingleNssaiList = OpenAPI_list_create(); - for (i = 0; i < subscription_data.num_of_slice; i++) { - slice_data = &subscription_data.slicei; - - if (slice_data->default_indicator == false) - continue; - Snssai = ogs_calloc(1, sizeof(*Snssai)); - ogs_assert(Snssai); + /* Apply filtering based on fields query parameter */ + if (recvmsg->param.num_of_fields) { + for (i = 0; i < recvmsg->param.num_of_fields; i++) { + SWITCH(recvmsg->param.fieldsi) + CASE(OGS_SBI_PARAM_FIELDS_GPSIS) + processGpsi = true; + break; + CASE(OGS_SBI_PARAM_FIELDS_SUBSCRIBED_UE_AMBR) + processUeAmbr = true; + break; + CASE(OGS_SBI_PARAM_FIELDS_NSSAI) + processNssai = true; + break; + DEFAULT + ogs_error("Unexpected field! %s", + recvmsg->param.fieldsi); + END + } + } else { + processGpsi = true; + processUeAmbr = true; + processNssai = true; + } - Snssai->sst = slice_data->s_nssai.sst; - Snssai->sd = ogs_s_nssai_sd_to_string(slice_data->s_nssai.sd); + if (processGpsi) { + GpsiList = OpenAPI_list_create(); + for (i = 0; i < subscription_data.num_of_msisdn; i++) { + char *gpsi = ogs_msprintf("%s-%s", + OGS_ID_GPSI_TYPE_MSISDN, + subscription_data.msisdni.bcd); + ogs_assert(gpsi); + OpenAPI_list_add(GpsiList, gpsi); + } - OpenAPI_list_add(DefaultSingleNssaiList, Snssai); - } - if (DefaultSingleNssaiList->count) { - NSSAI.default_single_nssais = DefaultSingleNssaiList; + if (GpsiList->count) + AccessAndMobilitySubscriptionData.gpsis = GpsiList; } - SingleNssaiList = OpenAPI_list_create(); - for (i = 0; i < subscription_data.num_of_slice; i++) { - slice_data = &subscription_data.slicei; + if (processUeAmbr) { + SubscribedUeAmbr.uplink = ogs_sbi_bitrate_to_string( + subscription_data.ambr.uplink, OGS_SBI_BITRATE_KBPS); + SubscribedUeAmbr.downlink = ogs_sbi_bitrate_to_string( + subscription_data.ambr.downlink, OGS_SBI_BITRATE_KBPS); - if (slice_data->default_indicator == true) - continue; + AccessAndMobilitySubscriptionData.subscribed_ue_ambr = + &SubscribedUeAmbr; + } - Snssai = ogs_calloc(1, sizeof(*Snssai)); - ogs_assert(Snssai); + if (processNssai) { + DefaultSingleNssaiList = OpenAPI_list_create(); + for (i = 0; i < subscription_data.num_of_slice; i++) { + slice_data = &subscription_data.slicei; - Snssai->sst = slice_data->s_nssai.sst; - Snssai->sd = ogs_s_nssai_sd_to_string(slice_data->s_nssai.sd); + if (slice_data->default_indicator == false) + continue; - OpenAPI_list_add(SingleNssaiList, Snssai); - } + Snssai = ogs_calloc(1, sizeof(*Snssai)); + ogs_assert(Snssai); - if (DefaultSingleNssaiList->count) { - if (SingleNssaiList->count) { - NSSAI.single_nssais = SingleNssaiList; + Snssai->sst = slice_data->s_nssai.sst; + Snssai->sd = ogs_s_nssai_sd_to_string(slice_data->s_nssai.sd); + + OpenAPI_list_add(DefaultSingleNssaiList, Snssai); } - } else { - if (SingleNssaiList->count) { - ogs_fatal("No Default S-NSSAI"); - ogs_assert_if_reached(); + if (DefaultSingleNssaiList->count) { + NSSAI.default_single_nssais = DefaultSingleNssaiList; } - } - memset(&AccessAndMobilitySubscriptionData, 0, - sizeof(AccessAndMobilitySubscriptionData)); + SingleNssaiList = OpenAPI_list_create(); + for (i = 0; i < subscription_data.num_of_slice; i++) { + slice_data = &subscription_data.slicei; + + if (slice_data->default_indicator == true) + continue; - if (GpsiList->count) - AccessAndMobilitySubscriptionData.gpsis = GpsiList; + Snssai = ogs_calloc(1, sizeof(*Snssai)); + ogs_assert(Snssai); - AccessAndMobilitySubscriptionData.subscribed_ue_ambr = - &SubscribedUeAmbr; + Snssai->sst = slice_data->s_nssai.sst; + Snssai->sd = ogs_s_nssai_sd_to_string(slice_data->s_nssai.sd); - if (DefaultSingleNssaiList->count) - AccessAndMobilitySubscriptionData.nssai = &NSSAI; + OpenAPI_list_add(SingleNssaiList, Snssai); + } + + if (DefaultSingleNssaiList->count) { + if (SingleNssaiList->count) { + NSSAI.single_nssais = SingleNssaiList; + } + } else { + if (SingleNssaiList->count) { + ogs_fatal("No Default S-NSSAI"); + ogs_assert_if_reached(); + } + } + + if (DefaultSingleNssaiList->count) + AccessAndMobilitySubscriptionData.nssai = &NSSAI; + } memset(&sendmsg, 0, sizeof(sendmsg)); sendmsg.AccessAndMobilitySubscriptionData = @@ -565,8 +601,10 @@ } OpenAPI_list_free(GpsiList); - ogs_free(SubscribedUeAmbr.uplink); - ogs_free(SubscribedUeAmbr.downlink); + if (SubscribedUeAmbr.uplink) + ogs_free(SubscribedUeAmbr.uplink); + if (SubscribedUeAmbr.downlink) + ogs_free(SubscribedUeAmbr.downlink); OpenAPI_list_for_each(DefaultSingleNssaiList, node) { OpenAPI_snssai_t *Snssai = node->data;
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.