Changes of Revision 24

open5gs_2.7.3.dsc -> open5gs_2.7.4.dsc Changed
x
 
1
@@ -2,7 +2,7 @@
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.3
6
+Version: 2.7.4
7
 Maintainer: Harald Welte <laforge@gnumonks.org>
8
 Uploaders: Sukchan Lee <acetcom@gmail.com>
9
 Homepage: https://open5gs.org
10
@@ -32,8 +32,8 @@
11
  open5gs-udr deb net optional arch=any
12
  open5gs-upf deb net optional arch=any
13
 Checksums-Sha1:
14
- dd88f5f0a72ec11c3ea6a7980461ab01368a4541 14529912 open5gs_2.7.3.tar.xz
15
+ 00c5d85960fc8a4761d1367e9d7ae77916fc6b8b 14531268 open5gs_2.7.4.tar.xz
16
 Checksums-Sha256:
17
- 50582518d95d573ec40d88c700f466bf73283b20a875ae40718852e5f9961731 14529912 open5gs_2.7.3.tar.xz
18
+ 3057efeef445770a432db1389a8f3285e306137c1b5daf4ca45f52ce191a8803 14531268 open5gs_2.7.4.tar.xz
19
 Files:
20
- 5e3cf881cfcbca0fbbc3024809758d27 14529912 open5gs_2.7.3.tar.xz
21
+ 2b3939d1a5bd92de0b91381f87cb3526 14531268 open5gs_2.7.4.tar.xz
22
open5gs_2.7.3.tar.xz/.tarball-version -> open5gs_2.7.4.tar.xz/.tarball-version Changed
4
 
1
@@ -1 +1 @@
2
-2.7.3
3
+2.7.4
4
open5gs_2.7.3.tar.xz/debian/changelog -> open5gs_2.7.4.tar.xz/debian/changelog Changed
41
 
1
@@ -1,3 +1,39 @@
2
+open5gs (2.7.4) unstable; urgency=medium
3
+
4
+  * Bug Fixed
5
+
6
+ -- Sukchan Lee <acetcom@gmail.com>  Wed, 26 Mar 2025 20:01:32 +0900
7
+
8
+open5gs (2.7.4~oracular1) oracular; urgency=medium
9
+
10
+  * Bug Fixed
11
+
12
+ -- Sukchan Lee <acetcom@gmail.com>  Wed, 26 Mar 2025 19:59:26 +0900
13
+
14
+open5gs (2.7.4~noble1) noble; urgency=medium
15
+
16
+  * Bug Fixed
17
+
18
+ -- Sukchan Lee <acetcom@gmail.com>  Wed, 26 Mar 2025 19:57:53 +0900
19
+
20
+open5gs (2.7.4~jammy1) jammy; urgency=medium
21
+
22
+  * Bug Fixed
23
+
24
+ -- Sukchan Lee <acetcom@gmail.com>  Wed, 26 Mar 2025 19:56:48 +0900
25
+
26
+open5gs (2.7.4~focal1) focal; urgency=medium
27
+
28
+  * Bug Fixed
29
+
30
+ -- Sukchan Lee <acetcom@gmail.com>  Wed, 26 Mar 2025 19:54:26 +0900
31
+
32
+open5gs (2.7.4~bionic1) bionic; urgency=medium
33
+
34
+  * Bug Fixed
35
+
36
+ -- Sukchan Lee <acetcom@gmail.com>  Wed, 26 Mar 2025 19:52:28 +0900
37
+
38
 open5gs (2.7.3) unstable; urgency=medium
39
 
40
   * Bug Fixed
41
open5gs_2.7.4.tar.xz/docs/_posts/2025-03-26-release-v2.7.4.md Added
52
 
1
@@ -0,0 +1,50 @@
2
+---
3
+title: "v2.7.4 - Bug fixed"
4
+date: 2025-03-26 20:08:00 +0900
5
+categories:
6
+  - Release
7
+tags:
8
+  - News
9
+  - Release
10
+head_inline: "<style> ul { padding-bottom: 1em; } .blue { color: blue; }</style>"
11
+---
12
+
13
+# Open5GS Release Note Summary
14
+
15
+This release introduces numerous improvements and bug fixes across core network components, enhancing overall stability, performance, and security. Below is a concise overview of the key updates:
16
+
17
+## Session & Subscription Management
18
+- **SMF Enhancements:**
19
+  Improved handling of SDM subscriptions to UDM during the PDU session lifetime.
20
+- **Optional PLMN-ID:**
21
+  Added support for an optional PLMN-ID parameter in SDM GET queries (AMF/SMF).
22
+- **5GMM Cause Reporting:**
23
+  AMF now sends a 5GMM cause in the request to SMF when initiating a session release.
24
+
25
+## Mobility & Authentication Improvements
26
+- **Mobility Fixes:**
27
+  Corrected QoS values for 2G to 4G mobility and fixed issues with UE context release and cell reselection.
28
+- **Security & Authentication:**
29
+  Enhanced UE authentication processes, prevented crashes during security mode command failures, and implemented HSS selection improvements.
30
+
31
+## Interface & Protocol Enhancements
32
+- **Diameter & PFCP:**
33
+  - Integrated statistics into the main loop for Diameter interfaces, with enhanced debug logging for HSS and PCRF.
34
+  - Addressed multiple PFCP issues, including memory management, header handling, and correct TEID restoration.
35
+- **NAS Module:**
36
+  Fixed a heap-buffer overflow vulnerability in NAS message decoding.
37
+
38
+## SBI and Other Module Updates
39
+- **SBI Enhancements:**
40
+  Enabled custom User-Agent header information for HTTP/2 requests, support for custom port numbers, and direct NRF communication.
41
+- **Additional Fixes:**
42
+  - Resolved UE context handling issues during handovers and state transitions.
43
+  - Implemented various cosmetic fixes, typo corrections, and documentation updates.
44
+  - Introduced support for new parameters and refined subscription conditions.
45
+
46
+Overall, this release emphasizes improved network reliability, enhanced security measures, and better support for 5G core operations while also addressing legacy issues.
47
+
48
+See Release Note(https://github.com/open5gs/open5gs/releases/tag/v2.7.4)
49
+
50
+Download -- v2.7.4.tar.gz(https://github.com/open5gs/open5gs/archive/v2.7.4.tar.gz)
51
+{: .notice--info}
52
open5gs_2.7.3.tar.xz/lib/sbi/message.h -> open5gs_2.7.4.tar.xz/lib/sbi/message.h Changed
10
 
1
@@ -411,6 +411,8 @@
2
     "N5g-ddnmf_Discovery_MonitorUpdateResult"
3
 #define OGS_SBI_CALLBACK_N5G_DDNMF_DISCOVERY_MATCH_INFORMATION \
4
     "N5g-ddnmf_Discovery_MatchInformation"
5
+#define OGS_SBI_CALLBACK_NAMF_COMMUNICATION_ONN1N2TRANSFERFAILURE \
6
+    "Namf_Communication_onN1N2TransferFailure"
7
 
8
 typedef struct ogs_sbi_header_s {
9
     char *method;
10
open5gs_2.7.3.tar.xz/lib/sbi/nnrf-build.c -> open5gs_2.7.4.tar.xz/lib/sbi/nnrf-build.c Changed
588
 
1
@@ -26,6 +26,10 @@
2
 static OpenAPI_amf_info_t *build_amf_info(ogs_sbi_nf_info_t *nf_info);
3
 static OpenAPI_scp_info_t *build_scp_info(ogs_sbi_nf_info_t *nf_info);
4
 static OpenAPI_sepp_info_t *build_sepp_info(ogs_sbi_nf_info_t *nf_info);
5
+static void free_smf_info(OpenAPI_smf_info_t *SmfInfo);
6
+static void free_amf_info(OpenAPI_amf_info_t *AmfInfo);
7
+static void free_scp_info(OpenAPI_scp_info_t *ScpInfo);
8
+static void free_sepp_info(OpenAPI_sepp_info_t *SeppInfo);
9
 
10
 ogs_sbi_request_t *ogs_nnrf_nfm_build_register(void)
11
 {
12
@@ -460,7 +464,7 @@
13
         if (SmfInfoMap) {
14
             SmfInfo = SmfInfoMap->value;
15
             if (SmfInfo)
16
-                OpenAPI_smf_info_free(SmfInfo);
17
+                free_smf_info(SmfInfo);
18
             if (SmfInfoMap->key)
19
                 ogs_free(SmfInfoMap->key);
20
             ogs_free(SmfInfoMap);
21
@@ -469,14 +473,14 @@
22
     OpenAPI_list_free(NFProfile->smf_info_list);
23
 
24
     if (NFProfile->smf_info)
25
-        OpenAPI_smf_info_free(NFProfile->smf_info);
26
+        free_smf_info(NFProfile->smf_info);
27
 
28
     OpenAPI_list_for_each(NFProfile->amf_info_list, node) {
29
         AmfInfoMap = node->data;
30
         if (AmfInfoMap) {
31
             AmfInfo = AmfInfoMap->value;
32
             if (AmfInfo)
33
-                OpenAPI_amf_info_free(AmfInfo);
34
+                free_amf_info(AmfInfo);
35
             if (AmfInfoMap->key)
36
                 ogs_free(AmfInfoMap->key);
37
             ogs_free(AmfInfoMap);
38
@@ -485,13 +489,13 @@
39
     OpenAPI_list_free(NFProfile->amf_info_list);
40
 
41
     if (NFProfile->amf_info)
42
-        OpenAPI_amf_info_free(NFProfile->amf_info);
43
+        free_amf_info(NFProfile->amf_info);
44
 
45
     if (NFProfile->scp_info)
46
-        OpenAPI_scp_info_free(NFProfile->scp_info);
47
+        free_scp_info(NFProfile->scp_info);
48
 
49
     if (NFProfile->sepp_info)
50
-        OpenAPI_sepp_info_free(NFProfile->sepp_info);
51
+        free_sepp_info(NFProfile->sepp_info);
52
 
53
     ogs_free(NFProfile);
54
 }
55
@@ -756,7 +760,7 @@
56
     sNssaiSmfInfoList = OpenAPI_list_create();
57
     if (!sNssaiSmfInfoList) {
58
         ogs_error("No sNssaiSmfInfoList");
59
-        OpenAPI_smf_info_free(SmfInfo);
60
+        free_smf_info(SmfInfo);
61
         return NULL;
62
     }
63
 
64
@@ -764,7 +768,7 @@
65
         DnnSmfInfoList = OpenAPI_list_create();
66
         if (!DnnSmfInfoList) {
67
             ogs_error("No DnnSmfInfoList");
68
-            OpenAPI_smf_info_free(SmfInfo);
69
+            free_smf_info(SmfInfo);
70
             OpenAPI_list_free(sNssaiSmfInfoList);
71
             return NULL;
72
         }
73
@@ -781,7 +785,7 @@
74
             ogs_error("CHECK CONFIGURATION: No DNN");
75
 
76
             OpenAPI_list_free(DnnSmfInfoList);
77
-            OpenAPI_smf_info_free(SmfInfo);
78
+            free_smf_info(SmfInfo);
79
             OpenAPI_list_free(sNssaiSmfInfoList);
80
 
81
             return NULL;
82
@@ -809,7 +813,7 @@
83
     TaiList = OpenAPI_list_create();
84
     if (!TaiList) {
85
         ogs_error("No TaiList");
86
-        OpenAPI_smf_info_free(SmfInfo);
87
+        free_smf_info(SmfInfo);
88
         return NULL;
89
     }
90
 
91
@@ -817,7 +821,7 @@
92
         TaiItem = ogs_calloc(1, sizeof(*TaiItem));
93
         if (!TaiItem) {
94
             ogs_error("No TaiItem");
95
-            OpenAPI_smf_info_free(SmfInfo);
96
+            free_smf_info(SmfInfo);
97
             OpenAPI_list_free(TaiList);
98
             return NULL;
99
         }
100
@@ -827,7 +831,7 @@
101
             ogs_error("No TaiItem->plmn_id");
102
             if (TaiItem)
103
                 ogs_free(TaiItem);
104
-            OpenAPI_smf_info_free(SmfInfo);
105
+            free_smf_info(SmfInfo);
106
             OpenAPI_list_free(TaiList);
107
             return NULL;
108
         }
109
@@ -852,7 +856,7 @@
110
     TaiRangeList = OpenAPI_list_create();
111
     if (!TaiRangeList) {
112
         ogs_error("No TaiRangeList");
113
-        OpenAPI_smf_info_free(SmfInfo);
114
+        free_smf_info(SmfInfo);
115
         return NULL;
116
     }
117
 
118
@@ -860,7 +864,7 @@
119
         TacRangeList = OpenAPI_list_create();
120
         if (!TacRangeList) {
121
             ogs_error("No TacRangeList");
122
-            OpenAPI_smf_info_free(SmfInfo);
123
+            free_smf_info(SmfInfo);
124
             OpenAPI_list_free(TaiRangeList);
125
             return NULL;
126
         }
127
@@ -886,7 +890,7 @@
128
             ogs_error("CHECK CONFIGURATION: No Start/End in TacRange");
129
 
130
             OpenAPI_list_free(TacRangeList);
131
-            OpenAPI_smf_info_free(SmfInfo);
132
+            free_smf_info(SmfInfo);
133
             OpenAPI_list_free(TaiRangeList);
134
 
135
             return NULL;
136
@@ -938,13 +942,13 @@
137
     AmfInfo->amf_set_id = ogs_msprintf("%03x", nf_info->amf.amf_set_id);
138
     if (!AmfInfo->amf_set_id) {
139
         ogs_error("No amf_set_id");
140
-        OpenAPI_amf_info_free(AmfInfo);
141
+        free_amf_info(AmfInfo);
142
         return NULL;
143
     }
144
     AmfInfo->amf_region_id = ogs_msprintf("%02x", nf_info->amf.amf_region_id);
145
     if (!AmfInfo->amf_region_id) {
146
         ogs_error("No amf_region_id");
147
-        OpenAPI_amf_info_free(AmfInfo);
148
+        free_amf_info(AmfInfo);
149
         return NULL;
150
     }
151
 
152
@@ -952,7 +956,7 @@
153
     guamiAmfInfoList = OpenAPI_list_create();
154
     if (!guamiAmfInfoList) {
155
         ogs_error("No guamiAmfInfoList");
156
-        OpenAPI_amf_info_free(AmfInfo);
157
+        free_amf_info(AmfInfo);
158
         return NULL;
159
     }
160
 
161
@@ -998,7 +1002,7 @@
162
     TaiList = OpenAPI_list_create();
163
     if (!TaiList) {
164
         ogs_error("No TaiList");
165
-        OpenAPI_amf_info_free(AmfInfo);
166
+        free_amf_info(AmfInfo);
167
         return NULL;
168
     }
169
 
170
@@ -1006,7 +1010,7 @@
171
         TaiItem = ogs_calloc(1, sizeof(*TaiItem));
172
         if (!TaiItem) {
173
             ogs_error("No TaiItem");
174
-            OpenAPI_amf_info_free(AmfInfo);
175
+            free_amf_info(AmfInfo);
176
             OpenAPI_list_free(TaiList);
177
             return NULL;
178
         }
179
@@ -1041,7 +1045,7 @@
180
     TaiRangeList = OpenAPI_list_create();
181
     if (!TaiRangeList) {
182
         ogs_error("No TaiRangeList");
183
-        OpenAPI_amf_info_free(AmfInfo);
184
+        free_amf_info(AmfInfo);
185
         return NULL;
186
     }
187
 
188
@@ -1049,7 +1053,7 @@
189
         TacRangeList = OpenAPI_list_create();
190
         if (!TacRangeList) {
191
             ogs_error("No TacRangeList");
192
-            OpenAPI_amf_info_free(AmfInfo);
193
+            free_amf_info(AmfInfo);
194
             OpenAPI_list_free(TaiRangeList);
195
             return NULL;
196
         }
197
@@ -1075,7 +1079,7 @@
198
             ogs_error("CHECK CONFIGURATION: No Start/End in TacRange");
199
 
200
             OpenAPI_list_free(TacRangeList);
201
-            OpenAPI_amf_info_free(AmfInfo);
202
+            free_amf_info(AmfInfo);
203
             OpenAPI_list_free(TaiRangeList);
204
 
205
             return NULL;
206
@@ -1084,7 +1088,7 @@
207
         TaiRangeItem = ogs_calloc(1, sizeof(*TaiRangeItem));
208
         if (!TaiRangeItem) {
209
             ogs_error("No TaiRangeItem");
210
-            OpenAPI_amf_info_free(AmfInfo);
211
+            free_amf_info(AmfInfo);
212
             OpenAPI_list_free(TaiRangeList);
213
             return NULL;
214
         }
215
@@ -1094,7 +1098,7 @@
216
         if (!TaiRangeItem->plmn_id) {
217
             ogs_error("No TaiRangeItem->plmn_id");
218
             ogs_free(TaiRangeItem);
219
-            OpenAPI_amf_info_free(AmfInfo);
220
+            free_amf_info(AmfInfo);
221
             OpenAPI_list_free(TaiRangeList);
222
             return NULL;
223
         }
224
@@ -1134,26 +1138,26 @@
225
     PortList = OpenAPI_list_create();
226
     if (!PortList) {
227
         ogs_error("No PortList");
228
-        OpenAPI_scp_info_free(ScpInfo);
229
+        free_scp_info(ScpInfo);
230
         return NULL;
231
     }
232
 
233
     if (nf_info->scp.http.presence) {
234
         PortMap = OpenAPI_map_create(
235
-                ogs_strdup("http"), ogs_alloc_double(nf_info->scp.http.port));
236
+                    (char *)"http", ogs_alloc_double(nf_info->scp.http.port));
237
         if (!PortMap) {
238
             ogs_error("No PortMap");
239
-            OpenAPI_scp_info_free(ScpInfo);
240
+            free_scp_info(ScpInfo);
241
             return NULL;
242
         }
243
         OpenAPI_list_add(PortList, PortMap);
244
     }
245
     if (nf_info->scp.https.presence) {
246
         PortMap = OpenAPI_map_create(
247
-                ogs_strdup("https"), ogs_alloc_double(nf_info->scp.https.port));
248
+                    (char *)"https", ogs_alloc_double(nf_info->scp.https.port));
249
         if (!PortMap) {
250
             ogs_error("No PortMap");
251
-            OpenAPI_scp_info_free(ScpInfo);
252
+            free_scp_info(ScpInfo);
253
             return NULL;
254
         }
255
         OpenAPI_list_add(PortList, PortMap);
256
@@ -1167,7 +1171,7 @@
257
     DomainInfoList = OpenAPI_list_create();
258
     if (!DomainInfoList) {
259
         ogs_error("No DomainInfoList");
260
-        OpenAPI_scp_info_free(ScpInfo);
261
+        free_scp_info(ScpInfo);
262
         return NULL;
263
     }
264
     for (i = 0; i < nf_info->scp.num_of_domain; i++) {
265
@@ -1176,7 +1180,7 @@
266
         DomainInfo = ogs_calloc(1, sizeof(*DomainInfo));
267
         if (!DomainInfo) {
268
             ogs_error("No DomainInfo");
269
-            OpenAPI_scp_info_free(ScpInfo);
270
+            free_scp_info(ScpInfo);
271
             return NULL;
272
         }
273
 
274
@@ -1185,7 +1189,7 @@
275
         PortList = OpenAPI_list_create();
276
         if (!PortList) {
277
             ogs_error("No PortList");
278
-            OpenAPI_scp_info_free(ScpInfo);
279
+            free_scp_info(ScpInfo);
280
             return NULL;
281
         }
282
 
283
@@ -1195,7 +1199,7 @@
284
                         ogs_alloc_double(nf_info->scp.domaini.http.port));
285
             if (!PortMap) {
286
                 ogs_error("No PortMap");
287
-                OpenAPI_scp_info_free(ScpInfo);
288
+                free_scp_info(ScpInfo);
289
                 return NULL;
290
             }
291
             OpenAPI_list_add(PortList, PortMap);
292
@@ -1206,7 +1210,7 @@
293
                         ogs_alloc_double(nf_info->scp.domaini.https.port));
294
             if (!PortMap) {
295
                 ogs_error("No PortMap");
296
-                OpenAPI_scp_info_free(ScpInfo);
297
+                free_scp_info(ScpInfo);
298
                 return NULL;
299
             }
300
             OpenAPI_list_add(PortList, PortMap);
301
@@ -1221,7 +1225,7 @@
302
                     nf_info->scp.domaini.name, DomainInfo);
303
         if (!DomainInfoMap) {
304
             ogs_error("No PortMap");
305
-            OpenAPI_scp_info_free(ScpInfo);
306
+            free_scp_info(ScpInfo);
307
             return NULL;
308
         }
309
 
310
@@ -1253,7 +1257,7 @@
311
     PortList = OpenAPI_list_create();
312
     if (!PortList) {
313
         ogs_error("No PortList");
314
-        OpenAPI_sepp_info_free(SeppInfo);
315
+        free_sepp_info(SeppInfo);
316
         return NULL;
317
     }
318
 
319
@@ -1262,7 +1266,7 @@
320
                     (char *)"http", ogs_alloc_double(nf_info->sepp.http.port));
321
         if (!PortMap) {
322
             ogs_error("No PortMap");
323
-            OpenAPI_sepp_info_free(SeppInfo);
324
+            free_sepp_info(SeppInfo);
325
             return NULL;
326
         }
327
         OpenAPI_list_add(PortList, PortMap);
328
@@ -1272,7 +1276,7 @@
329
                     (char *)"https", ogs_alloc_double(nf_info->sepp.https.port));
330
         if (!PortMap) {
331
             ogs_error("No PortMap");
332
-            OpenAPI_sepp_info_free(SeppInfo);
333
+            free_sepp_info(SeppInfo);
334
             return NULL;
335
         }
336
         OpenAPI_list_add(PortList, PortMap);
337
@@ -1286,6 +1290,230 @@
338
     return SeppInfo;
339
 }
340
 
341
+static void free_smf_info(OpenAPI_smf_info_t *SmfInfo)
342
+{
343
+    OpenAPI_list_t *sNssaiSmfInfoList = NULL;
344
+    OpenAPI_snssai_smf_info_item_t *sNssaiSmfInfoItem = NULL;
345
+    OpenAPI_ext_snssai_t *sNssai = NULL;
346
+    OpenAPI_list_t *DnnSmfInfoList = NULL;
347
+    OpenAPI_dnn_smf_info_item_t *DnnSmfInfoItem = NULL;
348
+
349
+    OpenAPI_list_t *TaiList = NULL;
350
+    OpenAPI_tai_t *TaiItem = NULL;
351
+    OpenAPI_list_t *TaiRangeList = NULL;
352
+    OpenAPI_tai_range_t *TaiRangeItem = NULL;
353
+    OpenAPI_list_t *TacRangeList = NULL;
354
+    OpenAPI_tac_range_t *TacRangeItem = NULL;
355
+
356
+    OpenAPI_lnode_t *node = NULL, *node2 = NULL;
357
+
358
+    ogs_assert(SmfInfo);
359
+
360
+    sNssaiSmfInfoList = SmfInfo->s_nssai_smf_info_list;
361
+    OpenAPI_list_for_each(sNssaiSmfInfoList, node) {
362
+        sNssaiSmfInfoItem = node->data;
363
+        ogs_assert(sNssaiSmfInfoItem);
364
+
365
+        DnnSmfInfoList = sNssaiSmfInfoItem->dnn_smf_info_list;
366
+        OpenAPI_list_for_each(DnnSmfInfoList, node2) {
367
+            DnnSmfInfoItem = node2->data;
368
+            ogs_assert(DnnSmfInfoItem);
369
+            ogs_free(DnnSmfInfoItem);
370
+        }
371
+        OpenAPI_list_free(DnnSmfInfoList);
372
+
373
+        sNssai = sNssaiSmfInfoItem->s_nssai;
374
+        if (sNssai) {
375
+            if (sNssai->sd)
376
+                ogs_free(sNssai->sd);
377
+            ogs_free(sNssai);
378
+        }
379
+
380
+        ogs_free(sNssaiSmfInfoItem);
381
+    }
382
+    OpenAPI_list_free(sNssaiSmfInfoList);
383
+
384
+    TaiList = SmfInfo->tai_list;
385
+    OpenAPI_list_for_each(TaiList, node) {
386
+        TaiItem = node->data;
387
+        ogs_assert(TaiItem);
388
+        if (TaiItem->plmn_id)
389
+            ogs_sbi_free_plmn_id(TaiItem->plmn_id);
390
+        if (TaiItem->tac)
391
+            ogs_free(TaiItem->tac);
392
+        ogs_free(TaiItem);
393
+    }
394
+    OpenAPI_list_free(TaiList);
395
+
396
+    TaiRangeList = SmfInfo->tai_range_list;
397
+    OpenAPI_list_for_each(TaiRangeList, node) {
398
+        TaiRangeItem = node->data;
399
+        ogs_assert(TaiRangeItem);
400
+
401
+        if (TaiRangeItem->plmn_id)
402
+            ogs_sbi_free_plmn_id(TaiRangeItem->plmn_id);
403
+
404
+        TacRangeList = TaiRangeItem->tac_range_list;
405
+        OpenAPI_list_for_each(TacRangeList, node2) {
406
+            TacRangeItem = node2->data;
407
+            ogs_assert(TacRangeItem);
408
+            if (TacRangeItem->start)
409
+                ogs_free(TacRangeItem->start);
410
+            if (TacRangeItem->end)
411
+                ogs_free(TacRangeItem->end);
412
+
413
+            ogs_free(TacRangeItem);
414
+        }
415
+        OpenAPI_list_free(TacRangeList);
416
+
417
+        ogs_free(TaiRangeItem);
418
+    }
419
+    OpenAPI_list_free(TaiRangeList);
420
+
421
+    ogs_free(SmfInfo);
422
+}
423
+
424
+static void free_amf_info(OpenAPI_amf_info_t *AmfInfo)
425
+{
426
+    OpenAPI_list_t *guamiAmfInfoList = NULL;
427
+    OpenAPI_guami_t *guamiAmfInfoItem = NULL;
428
+
429
+    OpenAPI_list_t *TaiList = NULL;
430
+    OpenAPI_tai_t *TaiItem = NULL;
431
+    OpenAPI_list_t *TaiRangeList = NULL;
432
+    OpenAPI_tai_range_t *TaiRangeItem = NULL;
433
+    OpenAPI_list_t *TacRangeList = NULL;
434
+    OpenAPI_tac_range_t *TacRangeItem = NULL;
435
+
436
+    OpenAPI_lnode_t *node = NULL, *node2 = NULL;
437
+
438
+    ogs_assert(AmfInfo);
439
+
440
+    if (AmfInfo->amf_set_id)
441
+        ogs_free(AmfInfo->amf_set_id);
442
+    if (AmfInfo->amf_region_id)
443
+        ogs_free(AmfInfo->amf_region_id);
444
+
445
+    guamiAmfInfoList = AmfInfo->guami_list;
446
+    OpenAPI_list_for_each(guamiAmfInfoList, node) {
447
+        guamiAmfInfoItem = node->data;
448
+        if (guamiAmfInfoItem) {
449
+            if (guamiAmfInfoItem->plmn_id) {
450
+                if (guamiAmfInfoItem->plmn_id->mcc)
451
+                    ogs_free(guamiAmfInfoItem->plmn_id->mcc);
452
+                if (guamiAmfInfoItem->plmn_id->mnc)
453
+                    ogs_free(guamiAmfInfoItem->plmn_id->mnc);
454
+                ogs_free(guamiAmfInfoItem->plmn_id);
455
+            }
456
+            if (guamiAmfInfoItem->amf_id)
457
+                ogs_free(guamiAmfInfoItem->amf_id);
458
+        }
459
+        ogs_free(guamiAmfInfoItem);
460
+    }
461
+
462
+    OpenAPI_list_free(guamiAmfInfoList);
463
+
464
+    TaiList = AmfInfo->tai_list;
465
+    OpenAPI_list_for_each(TaiList, node) {
466
+        TaiItem = node->data;
467
+        ogs_assert(TaiItem);
468
+        if (TaiItem->plmn_id)
469
+            ogs_sbi_free_plmn_id(TaiItem->plmn_id);
470
+        if (TaiItem->tac)
471
+            ogs_free(TaiItem->tac);
472
+        ogs_free(TaiItem);
473
+    }
474
+    OpenAPI_list_free(TaiList);
475
+
476
+    TaiRangeList = AmfInfo->tai_range_list;
477
+    OpenAPI_list_for_each(TaiRangeList, node) {
478
+        TaiRangeItem = node->data;
479
+        ogs_assert(TaiRangeItem);
480
+
481
+        if (TaiRangeItem->plmn_id)
482
+            ogs_sbi_free_plmn_id(TaiRangeItem->plmn_id);
483
+
484
+        TacRangeList = TaiRangeItem->tac_range_list;
485
+        OpenAPI_list_for_each(TacRangeList, node2) {
486
+            TacRangeItem = node2->data;
487
+            ogs_assert(TacRangeItem);
488
+            if (TacRangeItem->start)
489
+                ogs_free(TacRangeItem->start);
490
+            if (TacRangeItem->end)
491
+                ogs_free(TacRangeItem->end);
492
+
493
+            ogs_free(TacRangeItem);
494
+        }
495
+        OpenAPI_list_free(TacRangeList);
496
+
497
+        ogs_free(TaiRangeItem);
498
+    }
499
+    OpenAPI_list_free(TaiRangeList);
500
+
501
+    ogs_free(AmfInfo);
502
+}
503
+
504
+static void free_scp_info(OpenAPI_scp_info_t *ScpInfo)
505
+{
506
+    OpenAPI_map_t *PortMap = NULL;
507
+    OpenAPI_lnode_t *node = NULL, *node2 = NULL;
508
+
509
+    OpenAPI_map_t *DomainInfoMap = NULL;
510
+    OpenAPI_scp_domain_info_t *DomainInfo = NULL;
511
+
512
+    ogs_assert(ScpInfo);
513
+
514
+    OpenAPI_list_for_each(ScpInfo->scp_ports, node) {
515
+        PortMap = node->data;
516
+        if (PortMap) {
517
+            ogs_free(PortMap->value);
518
+            OpenAPI_map_free(PortMap);
519
+        }
520
+    }
521
+    OpenAPI_list_free(ScpInfo->scp_ports);
522
+
523
+    OpenAPI_list_for_each(ScpInfo->scp_domain_info_list, node) {
524
+        DomainInfoMap = node->data;
525
+        if (DomainInfoMap) {
526
+            DomainInfo = DomainInfoMap->value;
527
+            if (DomainInfo) {
528
+                OpenAPI_list_for_each(DomainInfo->scp_ports, node2) {
529
+                    PortMap = node2->data;
530
+                    if (PortMap) {
531
+                        ogs_free(PortMap->value);
532
+                        OpenAPI_map_free(PortMap);
533
+                    }
534
+                }
535
+                OpenAPI_list_free(DomainInfo->scp_ports);
536
+                ogs_free(DomainInfo);
537
+            }
538
+            OpenAPI_map_free(DomainInfoMap);
539
+        }
540
+    }
541
+    OpenAPI_list_free(ScpInfo->scp_domain_info_list);
542
+
543
+    ogs_free(ScpInfo);
544
+}
545
+
546
+static void free_sepp_info(OpenAPI_sepp_info_t *SeppInfo)
547
+{
548
+    OpenAPI_map_t *PortMap = NULL;
549
+    OpenAPI_lnode_t *node = NULL;
550
+
551
+    ogs_assert(SeppInfo);
552
+
553
+    OpenAPI_list_for_each(SeppInfo->sepp_ports, node) {
554
+        PortMap = node->data;
555
+        if (PortMap) {
556
+            ogs_free(PortMap->value);
557
+            OpenAPI_map_free(PortMap);
558
+        }
559
+    }
560
+    OpenAPI_list_free(SeppInfo->sepp_ports);
561
+
562
+    ogs_free(SeppInfo);
563
+}
564
+
565
 ogs_sbi_request_t *ogs_nnrf_nfm_build_update(void)
566
 {
567
     ogs_sbi_nf_instance_t *nf_instance = NULL;
568
@@ -1458,9 +1686,6 @@
569
 
570
     message.SubscriptionData = SubscriptionData;
571
 
572
-    message.http.custom.callback =
573
-        (char *)OGS_SBI_CALLBACK_NNRF_NFMANAGEMENT_NF_STATUS_NOTIFY;
574
-
575
     request = ogs_sbi_build_request(&message);
576
     ogs_expect(request);
577
 
578
@@ -1549,9 +1774,6 @@
579
     message.h.method = (char *)OGS_SBI_HTTP_METHOD_DELETE;
580
     message.h.uri = subscription_data->resource_uri;
581
 
582
-    message.http.custom.callback =
583
-        (char *)OGS_SBI_CALLBACK_NNRF_NFMANAGEMENT_NF_STATUS_NOTIFY;
584
-
585
     request = ogs_sbi_build_request(&message);
586
     ogs_expect(request);
587
 
588
open5gs_2.7.3.tar.xz/meson.build -> open5gs_2.7.4.tar.xz/meson.build Changed
19
 
1
@@ -16,7 +16,7 @@
2
 # along with this program.  If not, see <https://www.gnu.org/licenses/>.
3
 
4
 project('open5gs', 'c', 'cpp',
5
-    version : '2.7.3',
6
+    version : '2.7.4',
7
     license : 'AGPL-3.0-or-later',
8
     meson_version : '>= 0.43.0',
9
     default_options : 
10
@@ -25,7 +25,7 @@
11
     ,
12
 )
13
 
14
-libogslib_version = '2.7.3'
15
+libogslib_version = '2.7.4'
16
 
17
 prefix = get_option('prefix')
18
 bindir = join_paths(prefix, get_option('bindir'))
19
open5gs_2.7.3.tar.xz/src/amf/nsmf-build.c -> open5gs_2.7.4.tar.xz/src/amf/nsmf-build.c Changed
36
 
1
@@ -224,6 +224,15 @@
2
     message.http.accept = (char *)(OGS_SBI_CONTENT_JSON_TYPE ","
3
         OGS_SBI_CONTENT_NGAP_TYPE "," OGS_SBI_CONTENT_PROBLEM_TYPE);
4
 
5
+/*
6
+ * Callback Header Configuration
7
+ *
8
+ * The 3gpp-Sbi-Callback HTTP header (per 3GPP TS 29.500 v17.9.0) indicates that
9
+ * a message is an asynchronous notification or callback. This header should be
10
+ * included only in HTTP POST requests that are callbacks (e.g., event or
11
+ * notification messages) and must not be added to regular service requests,
12
+ * such as registration (HTTP PUT) or subscription requests.
13
+ */
14
     message.http.custom.callback =
15
         (char *)OGS_SBI_CALLBACK_NSMF_PDUSESSION_STATUS_NOTIFY;
16
 
17
@@ -529,6 +538,18 @@
18
 
19
     message.N1N2MsgTxfrFailureNotification = &N1N2MsgTxfrFailureNotification;
20
 
21
+/*
22
+ * Callback Header Configuration
23
+ *
24
+ * The 3gpp-Sbi-Callback HTTP header (per 3GPP TS 29.500 v17.9.0) indicates that
25
+ * a message is an asynchronous notification or callback. This header should be
26
+ * included only in HTTP POST requests that are callbacks (e.g., event or
27
+ * notification messages) and must not be added to regular service requests,
28
+ * such as registration (HTTP PUT) or subscription requests.
29
+ */
30
+    message.http.custom.callback =
31
+        (char *)OGS_SBI_CALLBACK_NAMF_COMMUNICATION_ONN1N2TRANSFERFAILURE;
32
+
33
     request = ogs_sbi_build_request(&message);
34
     ogs_expect(request);
35
 
36
open5gs_2.7.3.tar.xz/src/amf/nudm-build.c -> open5gs_2.7.4.tar.xz/src/amf/nudm-build.c Changed
21
 
1
@@ -85,9 +85,6 @@
2
 
3
     message.Amf3GppAccessRegistration = &Amf3GppAccessRegistration;
4
 
5
-    message.http.custom.callback =
6
-        (char *)OGS_SBI_CALLBACK_NUDM_UECM_DEREGISTRATION_NOTIFICATION;
7
-
8
     request = ogs_sbi_build_request(&message);
9
     ogs_expect(request);
10
 
11
@@ -243,9 +240,6 @@
12
 
13
     message.SDMSubscription = &SDMSubscription;
14
 
15
-    message.http.custom.callback =
16
-        (char *)OGS_SBI_CALLBACK_NUDM_SDM_NOTIFICATION;
17
-
18
     request = ogs_sbi_build_request(&message);
19
     ogs_expect(request);
20
 
21
open5gs_2.7.3.tar.xz/src/nrf/nnrf-build.c -> open5gs_2.7.4.tar.xz/src/nrf/nnrf-build.c Changed
19
 
1
@@ -81,6 +81,17 @@
2
             goto end;
3
         }
4
     }
5
+/*
6
+ * Callback Header Configuration
7
+ *
8
+ * The 3gpp-Sbi-Callback HTTP header (per 3GPP TS 29.500 v17.9.0) indicates that
9
+ * a message is an asynchronous notification or callback. This header should be
10
+ * included only in HTTP POST requests that are callbacks (e.g., event or
11
+ * notification messages) and must not be added to regular service requests,
12
+ * such as registration (HTTP PUT) or subscription requests.
13
+ */
14
+    message.http.custom.callback =
15
+        (char *)OGS_SBI_CALLBACK_NNRF_NFMANAGEMENT_NF_STATUS_NOTIFY;
16
 
17
     message.NotificationData = NotificationData;
18
 
19
open5gs_2.7.3.tar.xz/src/smf/nudm-build.c -> open5gs_2.7.4.tar.xz/src/smf/nudm-build.c Changed
11
 
1
@@ -236,9 +236,6 @@
2
 
3
     message.SDMSubscription = &SDMSubscription;
4
 
5
-    message.http.custom.callback =
6
-        (char *)OGS_SBI_CALLBACK_NUDM_SDM_NOTIFICATION;
7
-
8
     request = ogs_sbi_build_request(&message);
9
     ogs_expect(request);
10
 
11