Changes of Revision 965
open5gs_2.7.2.4610.056b.202502102026.dsc -> open5gs_2.7.2.4612.8715.202502112026.dsc
Changed
x
1
2
Source: open5gs
3
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
4
Architecture: any
5
-Version: 2.7.2.4610.056b.202502102026
6
+Version: 2.7.2.4612.8715.202502112026
7
Maintainer: Harald Welte <laforge@gnumonks.org>
8
Uploaders: Sukchan Lee <acetcom@gmail.com>
9
Homepage: https://open5gs.org
10
11
open5gs-udr deb net optional arch=any
12
open5gs-upf deb net optional arch=any
13
Checksums-Sha1:
14
- 5fb441b769b36afe0c5bfce0fd434574c15a2e9c 14524760 open5gs_2.7.2.4610.056b.202502102026.tar.xz
15
+ 46b81168d8cbfa60580dd76ab64a305edb71c00a 14525680 open5gs_2.7.2.4612.8715.202502112026.tar.xz
16
Checksums-Sha256:
17
- 4c24a2224aa072de3f58622019a72f948c29bc7d9078a65ec5eb3329674b44fc 14524760 open5gs_2.7.2.4610.056b.202502102026.tar.xz
18
+ ccdca04e595a22b22058d8d287c90a9899979ea5fcc7644bbba246c50dde77f2 14525680 open5gs_2.7.2.4612.8715.202502112026.tar.xz
19
Files:
20
- b57529aa51f5ae2a2320922b9f7bafe5 14524760 open5gs_2.7.2.4610.056b.202502102026.tar.xz
21
+ ec297c86edbc43570b85e59829274e4d 14525680 open5gs_2.7.2.4612.8715.202502112026.tar.xz
22
open5gs_2.7.2.4610.056b.202502102026.tar.xz/.tarball-version -> open5gs_2.7.2.4612.8715.202502112026.tar.xz/.tarball-version
Changed
4
1
2
-2.7.2.4610-056b.202502102026
3
+2.7.2.4612-8715.202502112026
4
open5gs_2.7.2.4610.056b.202502102026.tar.xz/debian/changelog -> open5gs_2.7.2.4612.8715.202502112026.tar.xz/debian/changelog
Changed
12
1
2
-open5gs (2.7.2.4610.056b.202502102026) unstable; urgency=medium
3
+open5gs (2.7.2.4612.8715.202502112026) unstable; urgency=medium
4
5
* Automatically generated changelog entry for building the Osmocom nightly feed
6
7
- -- Osmocom OBS scripts <info@osmocom.org> Mon, 10 Feb 2025 20:27:53 +0000
8
+ -- Osmocom OBS scripts <info@osmocom.org> Tue, 11 Feb 2025 20:27:55 +0000
9
10
open5gs (2.7.2) unstable; urgency=medium
11
12
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
108
1
2
if (message->param.discovery_option)
3
ogs_sbi_discovery_option_free(message->param.discovery_option);
4
5
+ /* Query parameters */
6
+ for (i = 0; i < message->param.num_of_fields; i++)
7
+ ogs_free(message->param.fieldsi);
8
+
9
/* JSON Data */
10
if (message->NFProfile)
11
OpenAPI_nf_profile_free(message->NFProfile);
12
13
message->Amf3GppAccessRegistrationModification);
14
if (message->SmfRegistration)
15
OpenAPI_smf_registration_free(message->SmfRegistration);
16
+ if (message->Nssai)
17
+ OpenAPI_nssai_free(message->Nssai);
18
if (message->AccessAndMobilitySubscriptionData)
19
OpenAPI_access_and_mobility_subscription_data_free(
20
message->AccessAndMobilitySubscriptionData);
21
22
if (sNSSAI.sd)
23
ogs_free(sNSSAI.sd);
24
}
25
+ if (message->param.num_of_fields) {
26
+ char *fields;
27
+
28
+ fields = ogs_strdup(message->param.fields0);
29
+ if (!fields) {
30
+ ogs_error("ogs_strdup() failed");
31
+ return NULL;
32
+ }
33
+
34
+ for (i = 1; i < message->param.num_of_fields; i++)
35
+ fields = ogs_mstrcatf(
36
+ fields, ",%s", message->param.fieldsi);
37
+
38
+ if (fields) {
39
+ ogs_sbi_header_set(request->http.params,
40
+ OGS_SBI_PARAM_FIELDS, fields);
41
+ ogs_free(fields);
42
+ }
43
+
44
+ }
45
if (message->param.ipv4addr) {
46
ogs_sbi_header_set(request->http.params,
47
OGS_SBI_PARAM_IPV4ADDR, message->param.ipv4addr);
48
49
cJSON_Delete(item);
50
}
51
}
52
+ } else if (!strcmp(ogs_hash_this_key(hi), OGS_SBI_PARAM_FIELDS)) {
53
+ char *_v = ogs_hash_this_val(hi), *v = NULL;
54
+ char *token = NULL;
55
+ char *saveptr = NULL;
56
+
57
+ v = ogs_strdup(_v);
58
+ ogs_assert(v);
59
+
60
+ token = ogs_strtok_r(v, ",", &saveptr);
61
+ while (token != NULL) {
62
+ if (message->param.num_of_fields < OGS_SBI_MAX_NUM_OF_FIELDS) {
63
+ message->param.fields
64
+ message->param.num_of_fields = ogs_strdup(token);
65
+ ogs_assert(message->param.fields
66
+ message->param.num_of_fields);
67
+ message->param.num_of_fields++;
68
+ token = ogs_strtok_r(NULL, ",", &saveptr);
69
+ } else {
70
+ ogs_error("Fields in query exceed MAX_NUM_OF_FIELDS");
71
+ break;
72
+ }
73
+ }
74
+
75
+ ogs_free(v);
76
} else if (!strcmp(ogs_hash_this_key(hi), OGS_SBI_PARAM_IPV4ADDR)) {
77
message->param.ipv4addr = ogs_hash_this_val(hi);
78
} else if (!strcmp(ogs_hash_this_key(hi), OGS_SBI_PARAM_IPV6PREFIX)) {
79
80
} else if (message->SmfRegistration) {
81
item = OpenAPI_smf_registration_convertToJSON(message->SmfRegistration);
82
ogs_assert(item);
83
+ } else if (message->Nssai) {
84
+ item = OpenAPI_nssai_convertToJSON(message->Nssai);
85
+ ogs_assert(item);
86
} else if (message->AccessAndMobilitySubscriptionData) {
87
item = OpenAPI_access_and_mobility_subscription_data_convertToJSON(
88
message->AccessAndMobilitySubscriptionData);
89
90
91
CASE(OGS_SBI_SERVICE_NAME_NUDM_SDM)
92
SWITCH(message->h.resource.component1)
93
+ CASE(OGS_SBI_RESOURCE_NAME_NSSAI)
94
+ if (message->res_status < 300) {
95
+ message->Nssai = OpenAPI_nssai_parseFromJSON(item);
96
+ if (!message->Nssai) {
97
+ rv = OGS_ERROR;
98
+ ogs_error("JSON parse error");
99
+ }
100
+ } else {
101
+ ogs_error("HTTP ERROR Status : %d", message->res_status);
102
+ }
103
+ break;
104
+
105
CASE(OGS_SBI_RESOURCE_NAME_AM_DATA)
106
if (message->res_status < 300) {
107
message->AccessAndMobilitySubscriptionData =
108
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
42
1
2
#define OGS_SBI_RESOURCE_NAME_SM_DATA "sm-data"
3
#define OGS_SBI_RESOURCE_NAME_SMF_SELECT_DATA "smf-select-data"
4
#define OGS_SBI_RESOURCE_NAME_UE_CONTEXT_IN_SMF_DATA "ue-context-in-smf-data"
5
+#define OGS_SBI_RESOURCE_NAME_NSSAI "nssai"
6
#define OGS_SBI_RESOURCE_NAME_SMF_SELECTION_SUBSCRIPTION_DATA \
7
"smf-selection-subscription-data"
8
#define OGS_SBI_RESOURCE_NAME_SDM_SUBSCRIPTIONS "sdm-subscriptions"
9
10
#define OGS_SBI_PARAM_TAI "tai"
11
#define OGS_SBI_PARAM_SLICE_INFO_REQUEST_FOR_PDU_SESSION \
12
"slice-info-request-for-pdu-session"
13
+#define OGS_SBI_PARAM_FIELDS "fields"
14
#define OGS_SBI_PARAM_IPV4ADDR "ipv4Addr"
15
#define OGS_SBI_PARAM_IPV6PREFIX "ipv6Prefix"
16
17
+#define OGS_SBI_PARAM_FIELDS_GPSIS "gpsis"
18
+#define OGS_SBI_PARAM_FIELDS_SUBSCRIBED_UE_AMBR "subscribedUeAmbr"
19
+#define OGS_SBI_PARAM_FIELDS_NSSAI "nssai"
20
+#define OGS_SBI_MAX_NUM_OF_FIELDS 8
21
+
22
#define OGS_SBI_CONTENT_JSON_TYPE \
23
OGS_SBI_APPLICATION_TYPE "/" OGS_SBI_APPLICATION_JSON_TYPE
24
#define OGS_SBI_CONTENT_PROBLEM_TYPE \
25
26
OpenAPI_nf_type_e nf_type;
27
int limit;
28
char *dnn;
29
+ int num_of_fields;
30
+ char *fieldsOGS_SBI_MAX_NUM_OF_FIELDS;
31
32
/* Shared memory */
33
ogs_plmn_id_t plmn_id;
34
35
OpenAPI_amf3_gpp_access_registration_t *Amf3GppAccessRegistration;
36
OpenAPI_amf3_gpp_access_registration_modification_t
37
*Amf3GppAccessRegistrationModification;
38
+ OpenAPI_nssai_t *Nssai;
39
OpenAPI_access_and_mobility_subscription_data_t
40
*AccessAndMobilitySubscriptionData;
41
OpenAPI_smf_selection_subscription_data_t *SmfSelectionSubscriptionData;
42
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
67
1
2
3
r = udm_ue_sbi_discover_and_send(OGS_SBI_SERVICE_TYPE_NUDR_DR, NULL,
4
udm_nudr_dr_build_authentication_subscription,
5
- udm_ue, stream, NULL);
6
+ udm_ue, stream, UDM_SBI_NO_STATE, NULL);
7
ogs_expect(r == OGS_OK);
8
ogs_assert(r != OGS_ERROR);
9
10
11
12
r = udm_ue_sbi_discover_and_send(OGS_SBI_SERVICE_TYPE_NUDR_DR, NULL,
13
udm_nudr_dr_build_authentication_subscription,
14
- udm_ue, stream, udm_ue->sqn);
15
+ udm_ue, stream, UDM_SBI_NO_STATE, udm_ue->sqn);
16
ogs_expect(r == OGS_OK);
17
ogs_assert(r != OGS_ERROR);
18
}
19
20
21
r = udm_ue_sbi_discover_and_send(OGS_SBI_SERVICE_TYPE_NUDR_DR, NULL,
22
udm_nudr_dr_build_update_authentication_status,
23
- udm_ue, stream, NULL);
24
+ udm_ue, stream, UDM_SBI_NO_STATE, NULL);
25
ogs_expect(r == OGS_OK);
26
ogs_assert(r != OGS_ERROR);
27
28
29
message->Amf3GppAccessRegistration);
30
31
r = udm_ue_sbi_discover_and_send(OGS_SBI_SERVICE_TYPE_NUDR_DR, NULL,
32
- udm_nudr_dr_build_update_amf_context, udm_ue, stream, NULL);
33
+ udm_nudr_dr_build_update_amf_context, udm_ue, stream,
34
+ UDM_SBI_NO_STATE, NULL);
35
ogs_expect(r == OGS_OK);
36
ogs_assert(r != OGS_ERROR);
37
38
39
40
r = udm_ue_sbi_discover_and_send(OGS_SBI_SERVICE_TYPE_NUDR_DR, NULL,
41
udm_nudr_dr_build_patch_amf_context,
42
- udm_ue, stream, PatchItemList);
43
+ udm_ue, stream, UDM_SBI_NO_STATE, PatchItemList);
44
ogs_expect(r == OGS_OK);
45
ogs_assert(r != OGS_ERROR);
46
47
48
OpenAPI_smf_registration_copy(sess->smf_registration, SmfRegistration);
49
50
r = udm_sess_sbi_discover_and_send(OGS_SBI_SERVICE_TYPE_NUDR_DR, NULL,
51
- udm_nudr_dr_build_update_smf_context, sess, stream, NULL);
52
+ udm_nudr_dr_build_update_smf_context, sess, stream,
53
+ UDM_SBI_NO_STATE, NULL);
54
ogs_expect(r == OGS_OK);
55
ogs_assert(r != OGS_ERROR);
56
57
58
ogs_assert(udm_ue);
59
60
r = udm_sess_sbi_discover_and_send(OGS_SBI_SERVICE_TYPE_NUDR_DR, NULL,
61
- udm_nudr_dr_build_delete_smf_context, sess, stream, NULL);
62
+ udm_nudr_dr_build_delete_smf_context, sess, stream,
63
+ UDM_SBI_NO_STATE, NULL);
64
ogs_expect(r == OGS_OK);
65
ogs_assert(r != OGS_ERROR);
66
67
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
14
1
2
(char *)OGS_SBI_RESOURCE_NAME_SMF_SELECTION_SUBSCRIPTION_DATA;
3
break;
4
5
+ CASE(OGS_SBI_RESOURCE_NAME_NSSAI)
6
+ sendmsg.h.resource.component4 = (char *)OGS_SBI_RESOURCE_NAME_AM_DATA;
7
+ sendmsg.param.fields0 = (char *)OGS_SBI_RESOURCE_NAME_NSSAI;
8
+ sendmsg.param.num_of_fields = 1;
9
+ break;
10
+
11
DEFAULT
12
END
13
14
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
49
1
2
*/
3
4
#include "nudr-handler.h"
5
+#include "sbi-path.h"
6
7
bool udm_nudr_dr_handle_subscription_authentication(
8
udm_ue_t *udm_ue, ogs_sbi_stream_t *stream, ogs_sbi_message_t *recvmsg)
9
10
}
11
12
bool udm_nudr_dr_handle_subscription_provisioned(
13
- udm_ue_t *udm_ue, ogs_sbi_stream_t *stream, ogs_sbi_message_t *recvmsg)
14
+ udm_ue_t *udm_ue, ogs_sbi_stream_t *stream, int state,
15
+ ogs_sbi_message_t *recvmsg)
16
{
17
char *strerror = NULL;
18
ogs_sbi_server_t *server = NULL;
19
20
21
memset(&sendmsg, 0, sizeof(sendmsg));
22
23
+ /* Check if original request was for /nudm-sdm/v2/{supi}/nssai */
24
+ if (state == UDM_SBI_UE_PROVISIONED_NSSAI_ONLY) {
25
+ OpenAPI_nssai_t *Nssai = NULL;
26
+ Nssai = AccessAndMobilitySubscriptionData->nssai;
27
+ if (!Nssai) {
28
+ ogs_error("%s No Nssai", udm_ue->supi);
29
+ ogs_assert(true ==
30
+ ogs_sbi_server_send_error(
31
+ stream, OGS_SBI_HTTP_STATUS_BAD_REQUEST,
32
+ recvmsg, "No Nssai",
33
+ udm_ue->supi, NULL));
34
+ return false;
35
+ }
36
+
37
+ sendmsg.Nssai = OpenAPI_nssai_copy(sendmsg.Nssai, Nssai);
38
+ response = ogs_sbi_build_response(&sendmsg, recvmsg->res_status);
39
+ ogs_assert(response);
40
+ ogs_assert(true == ogs_sbi_server_send_response(stream, response));
41
+ OpenAPI_nssai_free(sendmsg.Nssai);
42
+
43
+ break;
44
+ }
45
+
46
sendmsg.AccessAndMobilitySubscriptionData =
47
OpenAPI_access_and_mobility_subscription_data_copy(
48
sendmsg.AccessAndMobilitySubscriptionData,
49
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
11
1
2
bool udm_nudr_dr_handle_subscription_context(
3
udm_ue_t *udm_ue, ogs_sbi_stream_t *stream, ogs_sbi_message_t *recvmsg);
4
bool udm_nudr_dr_handle_subscription_provisioned(
5
- udm_ue_t *udm_ue, ogs_sbi_stream_t *stream, ogs_sbi_message_t *recvmsg);
6
+ udm_ue_t *udm_ue, ogs_sbi_stream_t *stream, int state,
7
+ ogs_sbi_message_t *recvmsg);
8
9
bool udm_nudr_dr_handle_smf_registration(
10
udm_sess_t *sess, ogs_sbi_stream_t *stream, ogs_sbi_message_t *recvmsg);
11
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
55
1
2
ogs_sbi_service_type_e service_type,
3
ogs_sbi_discovery_option_t *discovery_option,
4
ogs_sbi_build_f build,
5
- void *context, ogs_sbi_stream_t *stream, void *data)
6
+ void *context, ogs_sbi_stream_t *stream, int state, void *data)
7
{
8
ogs_sbi_xact_t *xact = NULL;
9
int r;
10
11
return OGS_ERROR;
12
}
13
14
+ xact->state = state;
15
+
16
if (stream) {
17
xact->assoc_stream_id = ogs_sbi_id_from_stream(stream);
18
ogs_assert(xact->assoc_stream_id >= OGS_MIN_POOL_ID &&
19
20
ogs_sbi_service_type_e service_type,
21
ogs_sbi_discovery_option_t *discovery_option,
22
ogs_sbi_request_t *(*build)(udm_ue_t *udm_ue, void *data),
23
- udm_ue_t *udm_ue, ogs_sbi_stream_t *stream, void *data)
24
+ udm_ue_t *udm_ue, ogs_sbi_stream_t *stream, int state, void *data)
25
{
26
int r;
27
28
29
30
r = udm_sbi_discover_and_send(
31
udm_ue->id, &udm_ue->sbi, service_type, discovery_option,
32
- (ogs_sbi_build_f)build, udm_ue, stream, data);
33
+ (ogs_sbi_build_f)build, udm_ue, stream, state, data);
34
if (r != OGS_OK) {
35
ogs_error("udm_ue_sbi_discover_and_send() failed");
36
ogs_assert(true ==
37
38
ogs_sbi_service_type_e service_type,
39
ogs_sbi_discovery_option_t *discovery_option,
40
ogs_sbi_request_t *(*build)(udm_sess_t *sess, void *data),
41
- udm_sess_t *sess, ogs_sbi_stream_t *stream, void *data)
42
+ udm_sess_t *sess, ogs_sbi_stream_t *stream, int state, void *data)
43
{
44
int r;
45
46
47
48
r = udm_sbi_discover_and_send(
49
sess->id, &sess->sbi, service_type, discovery_option,
50
- (ogs_sbi_build_f)build, sess, stream, data);
51
+ (ogs_sbi_build_f)build, sess, stream, state, data);
52
if (r != OGS_OK) {
53
ogs_error("udm_sess_sbi_discover_and_send() failed");
54
ogs_assert(true ==
55
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
24
1
2
3
bool udm_sbi_send_request(
4
ogs_sbi_nf_instance_t *nf_instance, ogs_sbi_xact_t *xact);
5
+
6
+#define UDM_SBI_NO_STATE 0
7
+#define UDM_SBI_UE_PROVISIONED_NSSAI_ONLY 1
8
+
9
int udm_ue_sbi_discover_and_send(
10
ogs_sbi_service_type_e service_type,
11
ogs_sbi_discovery_option_t *discovery_option,
12
ogs_sbi_request_t *(*build)(udm_ue_t *udm_ue, void *data),
13
- udm_ue_t *udm_ue, ogs_sbi_stream_t *stream, void *data);
14
+ udm_ue_t *udm_ue, ogs_sbi_stream_t *stream, int state, void *data);
15
int udm_sess_sbi_discover_and_send(
16
ogs_sbi_service_type_e service_type,
17
ogs_sbi_discovery_option_t *discovery_option,
18
ogs_sbi_request_t *(*build)(udm_sess_t *sess, void *data),
19
- udm_sess_t *sess, ogs_sbi_stream_t *stream, void *data);
20
+ udm_sess_t *sess, ogs_sbi_stream_t *stream, int state, void *data);
21
22
#ifdef __cplusplus
23
}
24
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
34
1
2
udm_ue = udm_ue_find_by_suci_or_supi(
3
message.h.resource.component0);
4
if (!udm_ue) {
5
- if (!strcmp(message.h.method,
6
- OGS_SBI_HTTP_METHOD_POST)) {
7
+ SWITCH(message.h.method)
8
+ CASE(OGS_SBI_HTTP_METHOD_POST)
9
+ CASE(OGS_SBI_HTTP_METHOD_GET)
10
udm_ue = udm_ue_add(message.h.resource.component0);
11
if (!udm_ue) {
12
ogs_error("Invalid Request %s",
13
message.h.resource.component0);
14
}
15
- } else {
16
+ break;
17
+
18
+ DEFAULT
19
ogs_error("Invalid HTTP method %s", message.h.method);
20
- }
21
+ END
22
}
23
}
24
25
26
e->h.sbi.data =
27
OGS_UINT_TO_POINTER(sbi_xact->assoc_stream_id);
28
29
+ e->h.sbi.state = sbi_xact->state;
30
+
31
ogs_sbi_xact_remove(sbi_xact);
32
33
udm_ue = udm_ue_find_by_id(udm_ue_id);
34
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
29
1
2
r = udm_ue_sbi_discover_and_send(
3
OGS_SBI_SERVICE_TYPE_NUDR_DR, NULL,
4
udm_nudr_dr_build_query_subscription_provisioned,
5
- udm_ue, stream, message);
6
+ udm_ue, stream, UDM_SBI_NO_STATE, message);
7
+ ogs_expect(r == OGS_OK);
8
+ ogs_assert(r != OGS_ERROR);
9
+ break;
10
+
11
+ CASE(OGS_SBI_RESOURCE_NAME_NSSAI)
12
+ r = udm_ue_sbi_discover_and_send(
13
+ OGS_SBI_SERVICE_TYPE_NUDR_DR, NULL,
14
+ udm_nudr_dr_build_query_subscription_provisioned,
15
+ udm_ue, stream, UDM_SBI_UE_PROVISIONED_NSSAI_ONLY,
16
+ message);
17
ogs_expect(r == OGS_OK);
18
ogs_assert(r != OGS_ERROR);
19
break;
20
21
SWITCH(message->h.resource.component3)
22
CASE(OGS_SBI_RESOURCE_NAME_PROVISIONED_DATA)
23
udm_nudr_dr_handle_subscription_provisioned(
24
- udm_ue, stream, message);
25
+ udm_ue, stream, e->h.sbi.state, message);
26
break;
27
28
DEFAULT
29
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
188
1
2
SWITCH(recvmsg->h.resource.component4)
3
CASE(OGS_SBI_RESOURCE_NAME_AM_DATA)
4
int i;
5
+ bool processGpsi = false;
6
+ bool processUeAmbr = false;
7
+ bool processNssai = false;
8
9
OpenAPI_access_and_mobility_subscription_data_t
10
AccessAndMobilitySubscriptionData;
11
12
13
OpenAPI_lnode_t *node = NULL;
14
15
- GpsiList = OpenAPI_list_create();
16
- for (i = 0; i < subscription_data.num_of_msisdn; i++) {
17
- char *gpsi = ogs_msprintf("%s-%s",
18
- OGS_ID_GPSI_TYPE_MSISDN, subscription_data.msisdni.bcd);
19
- ogs_assert(gpsi);
20
- OpenAPI_list_add(GpsiList, gpsi);
21
- }
22
-
23
- SubscribedUeAmbr.uplink = ogs_sbi_bitrate_to_string(
24
- subscription_data.ambr.uplink, OGS_SBI_BITRATE_KBPS);
25
- SubscribedUeAmbr.downlink = ogs_sbi_bitrate_to_string(
26
- subscription_data.ambr.downlink, OGS_SBI_BITRATE_KBPS);
27
+ memset(&AccessAndMobilitySubscriptionData, 0,
28
+ sizeof(AccessAndMobilitySubscriptionData));
29
30
+ memset(&SubscribedUeAmbr, 0, sizeof(SubscribedUeAmbr));
31
memset(&NSSAI, 0, sizeof(NSSAI));
32
- DefaultSingleNssaiList = OpenAPI_list_create();
33
- for (i = 0; i < subscription_data.num_of_slice; i++) {
34
- slice_data = &subscription_data.slicei;
35
-
36
- if (slice_data->default_indicator == false)
37
- continue;
38
39
- Snssai = ogs_calloc(1, sizeof(*Snssai));
40
- ogs_assert(Snssai);
41
+ /* Apply filtering based on fields query parameter */
42
+ if (recvmsg->param.num_of_fields) {
43
+ for (i = 0; i < recvmsg->param.num_of_fields; i++) {
44
+ SWITCH(recvmsg->param.fieldsi)
45
+ CASE(OGS_SBI_PARAM_FIELDS_GPSIS)
46
+ processGpsi = true;
47
+ break;
48
+ CASE(OGS_SBI_PARAM_FIELDS_SUBSCRIBED_UE_AMBR)
49
+ processUeAmbr = true;
50
+ break;
51
+ CASE(OGS_SBI_PARAM_FIELDS_NSSAI)
52
+ processNssai = true;
53
+ break;
54
+ DEFAULT
55
+ ogs_error("Unexpected field! %s",
56
+ recvmsg->param.fieldsi);
57
+ END
58
+ }
59
+ } else {
60
+ processGpsi = true;
61
+ processUeAmbr = true;
62
+ processNssai = true;
63
+ }
64
65
- Snssai->sst = slice_data->s_nssai.sst;
66
- Snssai->sd = ogs_s_nssai_sd_to_string(slice_data->s_nssai.sd);
67
+ if (processGpsi) {
68
+ GpsiList = OpenAPI_list_create();
69
+ for (i = 0; i < subscription_data.num_of_msisdn; i++) {
70
+ char *gpsi = ogs_msprintf("%s-%s",
71
+ OGS_ID_GPSI_TYPE_MSISDN,
72
+ subscription_data.msisdni.bcd);
73
+ ogs_assert(gpsi);
74
+ OpenAPI_list_add(GpsiList, gpsi);
75
+ }
76
77
- OpenAPI_list_add(DefaultSingleNssaiList, Snssai);
78
- }
79
- if (DefaultSingleNssaiList->count) {
80
- NSSAI.default_single_nssais = DefaultSingleNssaiList;
81
+ if (GpsiList->count)
82
+ AccessAndMobilitySubscriptionData.gpsis = GpsiList;
83
}
84
85
- SingleNssaiList = OpenAPI_list_create();
86
- for (i = 0; i < subscription_data.num_of_slice; i++) {
87
- slice_data = &subscription_data.slicei;
88
+ if (processUeAmbr) {
89
+ SubscribedUeAmbr.uplink = ogs_sbi_bitrate_to_string(
90
+ subscription_data.ambr.uplink, OGS_SBI_BITRATE_KBPS);
91
+ SubscribedUeAmbr.downlink = ogs_sbi_bitrate_to_string(
92
+ subscription_data.ambr.downlink, OGS_SBI_BITRATE_KBPS);
93
94
- if (slice_data->default_indicator == true)
95
- continue;
96
+ AccessAndMobilitySubscriptionData.subscribed_ue_ambr =
97
+ &SubscribedUeAmbr;
98
+ }
99
100
- Snssai = ogs_calloc(1, sizeof(*Snssai));
101
- ogs_assert(Snssai);
102
+ if (processNssai) {
103
+ DefaultSingleNssaiList = OpenAPI_list_create();
104
+ for (i = 0; i < subscription_data.num_of_slice; i++) {
105
+ slice_data = &subscription_data.slicei;
106
107
- Snssai->sst = slice_data->s_nssai.sst;
108
- Snssai->sd = ogs_s_nssai_sd_to_string(slice_data->s_nssai.sd);
109
+ if (slice_data->default_indicator == false)
110
+ continue;
111
112
- OpenAPI_list_add(SingleNssaiList, Snssai);
113
- }
114
+ Snssai = ogs_calloc(1, sizeof(*Snssai));
115
+ ogs_assert(Snssai);
116
117
- if (DefaultSingleNssaiList->count) {
118
- if (SingleNssaiList->count) {
119
- NSSAI.single_nssais = SingleNssaiList;
120
+ Snssai->sst = slice_data->s_nssai.sst;
121
+ Snssai->sd = ogs_s_nssai_sd_to_string(slice_data->s_nssai.sd);
122
+
123
+ OpenAPI_list_add(DefaultSingleNssaiList, Snssai);
124
}
125
- } else {
126
- if (SingleNssaiList->count) {
127
- ogs_fatal("No Default S-NSSAI");
128
- ogs_assert_if_reached();
129
+ if (DefaultSingleNssaiList->count) {
130
+ NSSAI.default_single_nssais = DefaultSingleNssaiList;
131
}
132
- }
133
134
- memset(&AccessAndMobilitySubscriptionData, 0,
135
- sizeof(AccessAndMobilitySubscriptionData));
136
+ SingleNssaiList = OpenAPI_list_create();
137
+ for (i = 0; i < subscription_data.num_of_slice; i++) {
138
+ slice_data = &subscription_data.slicei;
139
+
140
+ if (slice_data->default_indicator == true)
141
+ continue;
142
143
- if (GpsiList->count)
144
- AccessAndMobilitySubscriptionData.gpsis = GpsiList;
145
+ Snssai = ogs_calloc(1, sizeof(*Snssai));
146
+ ogs_assert(Snssai);
147
148
- AccessAndMobilitySubscriptionData.subscribed_ue_ambr =
149
- &SubscribedUeAmbr;
150
+ Snssai->sst = slice_data->s_nssai.sst;
151
+ Snssai->sd = ogs_s_nssai_sd_to_string(slice_data->s_nssai.sd);
152
153
- if (DefaultSingleNssaiList->count)
154
- AccessAndMobilitySubscriptionData.nssai = &NSSAI;
155
+ OpenAPI_list_add(SingleNssaiList, Snssai);
156
+ }
157
+
158
+ if (DefaultSingleNssaiList->count) {
159
+ if (SingleNssaiList->count) {
160
+ NSSAI.single_nssais = SingleNssaiList;
161
+ }
162
+ } else {
163
+ if (SingleNssaiList->count) {
164
+ ogs_fatal("No Default S-NSSAI");
165
+ ogs_assert_if_reached();
166
+ }
167
+ }
168
+
169
+ if (DefaultSingleNssaiList->count)
170
+ AccessAndMobilitySubscriptionData.nssai = &NSSAI;
171
+ }
172
173
memset(&sendmsg, 0, sizeof(sendmsg));
174
sendmsg.AccessAndMobilitySubscriptionData =
175
176
}
177
OpenAPI_list_free(GpsiList);
178
179
- ogs_free(SubscribedUeAmbr.uplink);
180
- ogs_free(SubscribedUeAmbr.downlink);
181
+ if (SubscribedUeAmbr.uplink)
182
+ ogs_free(SubscribedUeAmbr.uplink);
183
+ if (SubscribedUeAmbr.downlink)
184
+ ogs_free(SubscribedUeAmbr.downlink);
185
186
OpenAPI_list_for_each(DefaultSingleNssaiList, node) {
187
OpenAPI_snssai_t *Snssai = node->data;
188