Changes of Revision 655

open5gs_2.7.0.128.30648.202404052026.dsc Deleted
x
 
1
@@ -1,39 +0,0 @@
2
-Format: 3.0 (native)
3
-Source: open5gs
4
-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
5
-Architecture: any
6
-Version: 2.7.0.128.30648.202404052026
7
-Maintainer: Harald Welte <laforge@gnumonks.org>
8
-Uploaders: Sukchan Lee <acetcom@gmail.com>
9
-Homepage: https://open5gs.org
10
-Standards-Version: 4.3.0
11
-Vcs-Browser: https://github.com/open5gs/open5gs
12
-Vcs-Git: git://github.com/open5gs/open5gs
13
-Build-Depends: debhelper (>= 11), git, pkg-config, meson (>= 0.43.0), cmake, flex, bison, libgnutls28-dev, libgcrypt-dev, libssl-dev, libidn11-dev, libmongoc-dev, libbson-dev, libsctp-dev, libyaml-dev, libmicrohttpd-dev, libcurl4-gnutls-dev, libnghttp2-dev, libtins-dev, libtalloc-dev
14
-Package-List:
15
- open5gs deb net optional arch=any
16
- open5gs-amf deb net optional arch=any
17
- open5gs-ausf deb net optional arch=any
18
- open5gs-bsf deb net optional arch=any
19
- open5gs-common deb net optional arch=any
20
- open5gs-dbg deb net optional arch=any
21
- open5gs-hss deb net optional arch=any
22
- open5gs-mme deb net optional arch=any
23
- open5gs-nrf deb net optional arch=any
24
- open5gs-nssf deb net optional arch=any
25
- open5gs-pcf deb net optional arch=any
26
- open5gs-pcrf deb net optional arch=any
27
- open5gs-scp deb net optional arch=any
28
- open5gs-sepp deb net optional arch=any
29
- open5gs-sgwc deb net optional arch=any
30
- open5gs-sgwu deb net optional arch=any
31
- open5gs-smf deb net optional arch=any
32
- open5gs-udm deb net optional arch=any
33
- open5gs-udr deb net optional arch=any
34
- open5gs-upf deb net optional arch=any
35
-Checksums-Sha1:
36
- e2eef4ee2269878a50d13707d30bf4f6f669ae13 14488320 open5gs_2.7.0.128.30648.202404052026.tar.xz
37
-Checksums-Sha256:
38
- 11d6afe2e86d483f5ec478401e2a561373c3fed46480610352bd3db19a1e7874 14488320 open5gs_2.7.0.128.30648.202404052026.tar.xz
39
-Files:
40
- 7cd88d66dcad2d41d93706b0c0058ca6 14488320 open5gs_2.7.0.128.30648.202404052026.tar.xz
41
open5gs_2.7.0.128.8484a.202404062026.dsc Added
41
 
1
@@ -0,0 +1,39 @@
2
+Format: 3.0 (native)
3
+Source: open5gs
4
+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
5
+Architecture: any
6
+Version: 2.7.0.128.8484a.202404062026
7
+Maintainer: Harald Welte <laforge@gnumonks.org>
8
+Uploaders: Sukchan Lee <acetcom@gmail.com>
9
+Homepage: https://open5gs.org
10
+Standards-Version: 4.3.0
11
+Vcs-Browser: https://github.com/open5gs/open5gs
12
+Vcs-Git: git://github.com/open5gs/open5gs
13
+Build-Depends: debhelper (>= 11), git, pkg-config, meson (>= 0.43.0), cmake, flex, bison, libgnutls28-dev, libgcrypt-dev, libssl-dev, libidn11-dev, libmongoc-dev, libbson-dev, libsctp-dev, libyaml-dev, libmicrohttpd-dev, libcurl4-gnutls-dev, libnghttp2-dev, libtins-dev, libtalloc-dev
14
+Package-List:
15
+ open5gs deb net optional arch=any
16
+ open5gs-amf deb net optional arch=any
17
+ open5gs-ausf deb net optional arch=any
18
+ open5gs-bsf deb net optional arch=any
19
+ open5gs-common deb net optional arch=any
20
+ open5gs-dbg deb net optional arch=any
21
+ open5gs-hss deb net optional arch=any
22
+ open5gs-mme deb net optional arch=any
23
+ open5gs-nrf deb net optional arch=any
24
+ open5gs-nssf deb net optional arch=any
25
+ open5gs-pcf deb net optional arch=any
26
+ open5gs-pcrf deb net optional arch=any
27
+ open5gs-scp deb net optional arch=any
28
+ open5gs-sepp deb net optional arch=any
29
+ open5gs-sgwc deb net optional arch=any
30
+ open5gs-sgwu deb net optional arch=any
31
+ open5gs-smf deb net optional arch=any
32
+ open5gs-udm deb net optional arch=any
33
+ open5gs-udr deb net optional arch=any
34
+ open5gs-upf deb net optional arch=any
35
+Checksums-Sha1:
36
+ add8c1fc8139553dee3417ae0ab8776550829459 14488252 open5gs_2.7.0.128.8484a.202404062026.tar.xz
37
+Checksums-Sha256:
38
+ 40c621a695d204f877a24886e96d81adc04d80c8d1d320f7251b9f4509208672 14488252 open5gs_2.7.0.128.8484a.202404062026.tar.xz
39
+Files:
40
+ 4b8e3f9900cedee9fd327e6df236d553 14488252 open5gs_2.7.0.128.8484a.202404062026.tar.xz
41
open5gs_2.7.0.128.30648.202404052026.tar.xz/.tarball-version -> open5gs_2.7.0.128.8484a.202404062026.tar.xz/.tarball-version Changed
4
 
1
@@ -1 +1 @@
2
-2.7.0.128-30648.202404052026
3
+2.7.0.128-8484a.202404062026
4
open5gs_2.7.0.128.30648.202404052026.tar.xz/debian/changelog -> open5gs_2.7.0.128.8484a.202404062026.tar.xz/debian/changelog Changed
12
 
1
@@ -1,8 +1,8 @@
2
-open5gs (2.7.0.128.30648.202404052026) unstable; urgency=medium
3
+open5gs (2.7.0.128.8484a.202404062026) unstable; urgency=medium
4
 
5
   * Automatically generated changelog entry for building the Osmocom nightly feed
6
 
7
- -- Osmocom OBS scripts <info@osmocom.org>  Fri, 05 Apr 2024 20:27:38 +0000
8
+ -- Osmocom OBS scripts <info@osmocom.org>  Sat, 06 Apr 2024 20:27:41 +0000
9
 
10
 open5gs (2.7.0) unstable; urgency=medium
11
 
12
open5gs_2.7.0.128.30648.202404052026.tar.xz/lib/gtp/util.c -> open5gs_2.7.0.128.8484a.202404062026.tar.xz/lib/gtp/util.c Changed
70
 
1
@@ -180,3 +180,68 @@
2
 
3
     return answer;
4
 }
5
+
6
+void ogs_gtp2_sender_f_teid(
7
+        ogs_gtp2_sender_f_teid_t *sender_f_teid, ogs_gtp2_message_t *message)
8
+{
9
+    ogs_gtp2_tlv_f_teid_t *tlv_f_teid = NULL;
10
+    ogs_gtp2_f_teid_t *f_teid = NULL;
11
+
12
+    ogs_assert(sender_f_teid);
13
+    ogs_assert(message);
14
+
15
+    memset(sender_f_teid, 0, sizeof(*sender_f_teid));
16
+
17
+    switch (message->h.type) {
18
+    case OGS_GTP2_CREATE_SESSION_REQUEST_TYPE:
19
+        tlv_f_teid = &message->create_session_request.
20
+            sender_f_teid_for_control_plane;
21
+        break;
22
+    case OGS_GTP2_CREATE_SESSION_RESPONSE_TYPE:
23
+        tlv_f_teid = &message->create_session_response.
24
+            sender_f_teid_for_control_plane;
25
+        break;
26
+    case OGS_GTP2_MODIFY_BEARER_REQUEST_TYPE:
27
+        tlv_f_teid = &message->modify_bearer_request.
28
+            sender_f_teid_for_control_plane;
29
+        break;
30
+    case OGS_GTP2_DELETE_SESSION_REQUEST_TYPE:
31
+        tlv_f_teid = &message->delete_session_request.
32
+            sender_f_teid_for_control_plane;
33
+        break;
34
+    case OGS_GTP2_MODIFY_BEARER_COMMAND_TYPE:
35
+        tlv_f_teid = &message->modify_bearer_command.
36
+            sender_f_teid_for_control_plane;
37
+        break;
38
+    case OGS_GTP2_DELETE_BEARER_COMMAND_TYPE:
39
+        tlv_f_teid = &message->delete_bearer_command.
40
+            sender_f_teid_for_control_plane;
41
+        break;
42
+    case OGS_GTP2_BEARER_RESOURCE_COMMAND_TYPE:
43
+        tlv_f_teid = &message->bearer_resource_command.
44
+            sender_f_teid_for_control_plane;
45
+        break;
46
+    case OGS_GTP2_CREATE_INDIRECT_DATA_FORWARDING_TUNNEL_REQUEST_TYPE:
47
+        tlv_f_teid = &message->create_indirect_data_forwarding_tunnel_request.
48
+            sender_f_teid_for_control_plane;
49
+        break;
50
+    case OGS_GTP2_CREATE_INDIRECT_DATA_FORWARDING_TUNNEL_RESPONSE_TYPE:
51
+        tlv_f_teid = &message->create_indirect_data_forwarding_tunnel_response.
52
+            sender_f_teid_for_control_plane;
53
+        break;
54
+    case OGS_GTP2_DOWNLINK_DATA_NOTIFICATION_TYPE:
55
+        tlv_f_teid = &message->downlink_data_notification.
56
+            sender_f_teid_for_control_plane;
57
+        break;
58
+    case OGS_GTP2_MODIFY_ACCESS_BEARERS_REQUEST_TYPE:
59
+        tlv_f_teid = &message->modify_access_bearers_request.
60
+            sender_f_teid_for_control_plane;
61
+    default:
62
+        break;
63
+    }
64
+
65
+    if (tlv_f_teid && tlv_f_teid->presence && (f_teid = tlv_f_teid->data)) {
66
+        sender_f_teid->teid_presence = true;
67
+        sender_f_teid->teid = be32toh(f_teid->teid);
68
+    }
69
+}
70
open5gs_2.7.0.128.30648.202404052026.tar.xz/lib/gtp/util.h -> open5gs_2.7.0.128.8484a.202404062026.tar.xz/lib/gtp/util.h Changed
16
 
1
@@ -32,6 +32,14 @@
2
         ogs_gtp2_header_desc_t *header_desc, ogs_pkbuf_t *pkbuf);
3
 uint16_t ogs_in_cksum(uint16_t *addr, int len);
4
 
5
+typedef struct ogs_gtp2_sender_f_teid_s {
6
+    bool teid_presence;
7
+    uint32_t teid;
8
+} ogs_gtp2_sender_f_teid_t;
9
+
10
+void ogs_gtp2_sender_f_teid(
11
+        ogs_gtp2_sender_f_teid_t *sender_f_teid, ogs_gtp2_message_t *message);
12
+
13
 #ifdef __cplusplus
14
 }
15
 #endif
16
open5gs_2.7.0.128.30648.202404052026.tar.xz/src/mme/mme-s11-handler.c -> open5gs_2.7.0.128.8484a.202404062026.tar.xz/src/mme/mme-s11-handler.c Changed
201
 
1
@@ -60,13 +60,9 @@
2
 }
3
 
4
 void mme_s11_handle_echo_request(
5
-        ogs_gtp_xact_t *xact, ogs_gtp2_message_t *gtp2_message)
6
+        ogs_gtp_xact_t *xact, ogs_gtp2_echo_request_t *req)
7
 {
8
-    ogs_gtp2_echo_request_t *req = NULL;
9
-
10
     ogs_assert(xact);
11
-    ogs_assert(gtp2_message);
12
-    req = &gtp2_message->echo_request;
13
     ogs_assert(req);
14
 
15
     ogs_debug("Receiving Echo Request");
16
@@ -76,14 +72,14 @@
17
 }
18
 
19
 void mme_s11_handle_echo_response(
20
-        ogs_gtp_xact_t *xact, ogs_gtp2_message_t *gtp2_message)
21
+        ogs_gtp_xact_t *xact, ogs_gtp2_echo_response_t *rsp)
22
 {
23
     /* Not Implemented */
24
 }
25
 
26
 void mme_s11_handle_create_session_response(
27
         ogs_gtp_xact_t *xact, mme_ue_t *mme_ue_from_teid,
28
-        ogs_gtp2_message_t *gtp2_message)
29
+        ogs_gtp2_create_session_response_t *rsp)
30
 {
31
     int i, r, rv;
32
     uint8_t cause_value = OGS_GTP2_CAUSE_UNDEFINED_VALUE;
33
@@ -104,10 +100,6 @@
34
     uint16_t decoded = 0;
35
     int create_action = 0;
36
 
37
-    ogs_gtp2_create_session_response_t *rsp = NULL;
38
-
39
-    ogs_assert(gtp2_message);
40
-    rsp = &gtp2_message->create_session_response;
41
     ogs_assert(rsp);
42
 
43
     ogs_debug("Create Session Response");
44
@@ -480,7 +472,7 @@
45
 
46
 void mme_s11_handle_modify_bearer_response(
47
         ogs_gtp_xact_t *xact, mme_ue_t *mme_ue_from_teid,
48
-        ogs_gtp2_message_t *gtp2_message)
49
+        ogs_gtp2_modify_bearer_response_t *rsp)
50
 {
51
     int r, rv;
52
     uint8_t cause_value = OGS_GTP2_CAUSE_UNDEFINED_VALUE;
53
@@ -490,10 +482,6 @@
54
     mme_ue_t *mme_ue = NULL;
55
     sgw_ue_t *sgw_ue = NULL;
56
 
57
-    ogs_gtp2_modify_bearer_response_t *rsp = NULL;
58
-
59
-    ogs_assert(gtp2_message);
60
-    rsp = &gtp2_message->modify_bearer_response;
61
     ogs_assert(rsp);
62
 
63
     ogs_debug("Modify Bearer Response");
64
@@ -598,7 +586,7 @@
65
 
66
 void mme_s11_handle_delete_session_response(
67
         ogs_gtp_xact_t *xact, mme_ue_t *mme_ue_from_teid,
68
-        ogs_gtp2_message_t *gtp2_message)
69
+        ogs_gtp2_delete_session_response_t *rsp)
70
 {
71
     int r, rv;
72
     uint8_t cause_value = OGS_GTP2_CAUSE_UNDEFINED_VALUE;
73
@@ -607,10 +595,6 @@
74
     mme_sess_t *sess = NULL;
75
     mme_ue_t *mme_ue = NULL;
76
 
77
-    ogs_gtp2_delete_session_response_t *rsp = NULL;
78
-
79
-    ogs_assert(gtp2_message);
80
-    rsp = &gtp2_message->delete_session_response;
81
     ogs_assert(rsp);
82
 
83
     ogs_debug("Delete Session Response");
84
@@ -794,7 +778,7 @@
85
 
86
 void mme_s11_handle_create_bearer_request(
87
         ogs_gtp_xact_t *xact, mme_ue_t *mme_ue,
88
-        ogs_gtp2_message_t *gtp2_message)
89
+        ogs_gtp2_create_bearer_request_t *req)
90
 {
91
     int r;
92
     uint8_t cause_value = OGS_GTP2_CAUSE_UNDEFINED_VALUE;
93
@@ -806,11 +790,7 @@
94
     ogs_gtp2_f_teid_t *pgw_s5u_teid = NULL;
95
     ogs_gtp2_bearer_qos_t bearer_qos;
96
 
97
-    ogs_gtp2_create_bearer_request_t *req = NULL;
98
-
99
     ogs_assert(xact);
100
-    ogs_assert(gtp2_message);
101
-    req = &gtp2_message->create_bearer_request;
102
     ogs_assert(req);
103
 
104
     ogs_debug("Create Bearer Request");
105
@@ -843,8 +823,7 @@
106
     }
107
 
108
     if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
109
-        ogs_gtp2_send_error_message(xact,
110
-                sgw_ue ? sgw_ue->sgw_s11_teid : gtp2_message->h.teid,
111
+        ogs_gtp2_send_error_message(xact, sgw_ue ? sgw_ue->sgw_s11_teid : 0,
112
                 OGS_GTP2_CREATE_BEARER_RESPONSE_TYPE, cause_value);
113
         return;
114
     }
115
@@ -880,8 +859,7 @@
116
     }
117
 
118
     if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
119
-        ogs_gtp2_send_error_message(xact,
120
-                sgw_ue ? sgw_ue->sgw_s11_teid : gtp2_message->h.teid,
121
+        ogs_gtp2_send_error_message(xact, sgw_ue ? sgw_ue->sgw_s11_teid : 0,
122
                 OGS_GTP2_CREATE_BEARER_RESPONSE_TYPE, cause_value);
123
         return;
124
     }
125
@@ -1004,7 +982,7 @@
126
 
127
 void mme_s11_handle_update_bearer_request(
128
         ogs_gtp_xact_t *xact, mme_ue_t *mme_ue,
129
-        ogs_gtp2_message_t *gtp2_message)
130
+        ogs_gtp2_update_bearer_request_t *req)
131
 {
132
     int r;
133
     uint8_t cause_value = OGS_GTP2_CAUSE_UNDEFINED_VALUE;
134
@@ -1013,11 +991,7 @@
135
     sgw_ue_t *sgw_ue = NULL;
136
     ogs_gtp2_bearer_qos_t bearer_qos;
137
 
138
-    ogs_gtp2_update_bearer_request_t *req = NULL;
139
-
140
     ogs_assert(xact);
141
-    ogs_assert(gtp2_message);
142
-    req = &gtp2_message->update_bearer_request;
143
     ogs_assert(req);
144
 
145
     ogs_debug("Update Bearer Request");
146
@@ -1054,8 +1028,7 @@
147
     }
148
 
149
     if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
150
-        ogs_gtp2_send_error_message(xact,
151
-                sgw_ue ? sgw_ue->sgw_s11_teid : gtp2_message->h.teid,
152
+        ogs_gtp2_send_error_message(xact, sgw_ue ? sgw_ue->sgw_s11_teid : 0,
153
                 OGS_GTP2_UPDATE_BEARER_RESPONSE_TYPE, cause_value);
154
         return;
155
     }
156
@@ -1156,7 +1129,7 @@
157
 
158
 void mme_s11_handle_delete_bearer_request(
159
         ogs_gtp_xact_t *xact, mme_ue_t *mme_ue,
160
-        ogs_gtp2_message_t *gtp2_message)
161
+        ogs_gtp2_delete_bearer_request_t *req)
162
 {
163
     int r;
164
     uint8_t cause_value = OGS_GTP2_CAUSE_UNDEFINED_VALUE;
165
@@ -1165,11 +1138,7 @@
166
     mme_sess_t *sess = NULL;
167
     sgw_ue_t *sgw_ue = NULL;
168
 
169
-    ogs_gtp2_delete_bearer_request_t *req = NULL;
170
-
171
     ogs_assert(xact);
172
-    ogs_assert(gtp2_message);
173
-    req = &gtp2_message->delete_bearer_request;
174
     ogs_assert(req);
175
 
176
     ogs_debug("Delete Bearer Request");
177
@@ -1230,8 +1199,7 @@
178
     }
179
 
180
     if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
181
-        ogs_gtp2_send_error_message(xact,
182
-                sgw_ue ? sgw_ue->sgw_s11_teid : gtp2_message->h.teid,
183
+        ogs_gtp2_send_error_message(xact, sgw_ue ? sgw_ue->sgw_s11_teid : 0,
184
                 OGS_GTP2_DELETE_BEARER_RESPONSE_TYPE,
185
                 OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND);
186
         return;
187
@@ -1282,7 +1250,7 @@
188
 
189
 void mme_s11_handle_release_access_bearers_response(
190
         ogs_gtp_xact_t *xact, mme_ue_t *mme_ue_from_teid,
191
-        ogs_gtp2_message_t *gtp2_message)
192
+        ogs_gtp2_release_access_bearers_response_t *rsp)
193
 {
194
     int r, rv;
195
     uint8_t cause_value = OGS_GTP2_CAUSE_UNDEFINED_VALUE;
196
@@ -1294,10 +1262,6 @@
197
     mme_sess_t *sess = NULL;
198
     mme_bearer_t *bearer = NULL;
199
 
200
-    ogs_gtp2_release_access_bearers_response_t *rsp = NULL;
201
open5gs_2.7.0.128.30648.202404052026.tar.xz/src/mme/mme-s11-handler.h -> open5gs_2.7.0.128.8484a.202404062026.tar.xz/src/mme/mme-s11-handler.h Changed
59
 
1
@@ -27,44 +27,44 @@
2
 #endif
3
 
4
 void mme_s11_handle_echo_request(
5
-        ogs_gtp_xact_t *xact, ogs_gtp2_message_t *gtp2_message);
6
+        ogs_gtp_xact_t *xact, ogs_gtp2_echo_request_t *req);
7
 void mme_s11_handle_echo_response(
8
-        ogs_gtp_xact_t *xact, ogs_gtp2_message_t *gtp2_message);
9
+        ogs_gtp_xact_t *xact, ogs_gtp2_echo_response_t *rsp);
10
 void mme_s11_handle_create_session_response(
11
         ogs_gtp_xact_t *xact, mme_ue_t *mme_ue,
12
-        ogs_gtp2_message_t *gtp2_message);
13
+        ogs_gtp2_create_session_response_t *rsp);
14
 void mme_s11_handle_modify_bearer_response(
15
         ogs_gtp_xact_t *xact, mme_ue_t *mme_ue,
16
-        ogs_gtp2_message_t *gtp2_message);
17
+        ogs_gtp2_modify_bearer_response_t *rsp);
18
 void mme_s11_handle_delete_session_response(
19
         ogs_gtp_xact_t *xact, mme_ue_t *mme_ue,
20
-        ogs_gtp2_message_t *gtp2_message);
21
+        ogs_gtp2_delete_session_response_t *rsp);
22
 void mme_s11_handle_create_bearer_request(
23
         ogs_gtp_xact_t *xact, mme_ue_t *mme_ue,
24
-        ogs_gtp2_message_t *gtp2_message);
25
+        ogs_gtp2_create_bearer_request_t *req);
26
 void mme_s11_handle_update_bearer_request(
27
         ogs_gtp_xact_t *xact, mme_ue_t *mme_ue,
28
-        ogs_gtp2_message_t *gtp2_message);
29
+        ogs_gtp2_update_bearer_request_t *req);
30
 void mme_s11_handle_delete_bearer_request(
31
         ogs_gtp_xact_t *xact, mme_ue_t *mme_ue,
32
-        ogs_gtp2_message_t *gtp2_message);
33
+        ogs_gtp2_delete_bearer_request_t *req);
34
 
35
 void mme_s11_handle_release_access_bearers_response(
36
         ogs_gtp_xact_t *xact, mme_ue_t *mme_ue,
37
-        ogs_gtp2_message_t *gtp2_message);
38
+        ogs_gtp2_release_access_bearers_response_t *rsp);
39
 void mme_s11_handle_downlink_data_notification(
40
         ogs_gtp_xact_t *xact, mme_ue_t *mme_ue,
41
-        ogs_gtp2_message_t *gtp2_message);
42
+        ogs_gtp2_downlink_data_notification_t *noti);
43
 void mme_s11_handle_create_indirect_data_forwarding_tunnel_response(
44
         ogs_gtp_xact_t *xact, mme_ue_t *mme_ue,
45
-        ogs_gtp2_message_t *gtp2_message);
46
+        ogs_gtp2_create_indirect_data_forwarding_tunnel_response_t *rsp);
47
 void mme_s11_handle_delete_indirect_data_forwarding_tunnel_response(
48
         ogs_gtp_xact_t *xact, mme_ue_t *mme_ue,
49
-        ogs_gtp2_message_t *gtp2_message);
50
+        ogs_gtp2_delete_indirect_data_forwarding_tunnel_response_t *rsp);
51
 
52
 void mme_s11_handle_bearer_resource_failure_indication(
53
         ogs_gtp_xact_t *xact, mme_ue_t *mme_ue,
54
-        ogs_gtp2_message_t *gtp2_message);
55
+        ogs_gtp2_bearer_resource_failure_indication_t *ind);
56
 
57
 #ifdef __cplusplus
58
 }
59
open5gs_2.7.0.128.30648.202404052026.tar.xz/src/mme/mme-sm.c -> open5gs_2.7.0.128.8484a.202404062026.tar.xz/src/mme/mme-sm.c Changed
132
 
1
@@ -79,7 +79,7 @@
2
 
3
     ogs_gtp_node_t *gnode = NULL;
4
     ogs_gtp_xact_t *xact = NULL;
5
-    ogs_gtp2_message_t gtp2_message;
6
+    ogs_gtp2_message_t gtp_message;
7
     ogs_gtp1_message_t gtp1_message;
8
 
9
     mme_vlr_t *vlr = NULL;
10
@@ -650,7 +650,7 @@
11
         pkbuf = e->pkbuf;
12
         ogs_assert(pkbuf);
13
 
14
-        if (ogs_gtp2_parse_msg(&gtp2_message, pkbuf) != OGS_OK) {
15
+        if (ogs_gtp2_parse_msg(&gtp_message, pkbuf) != OGS_OK) {
16
             ogs_error("ogs_gtp2_parse_msg() failed");
17
             ogs_pkbuf_free(pkbuf);
18
             break;
19
@@ -659,7 +659,7 @@
20
         gnode = e->gnode;
21
         ogs_assert(gnode);
22
 
23
-        rv = ogs_gtp_xact_receive(gnode, &gtp2_message.h, &xact);
24
+        rv = ogs_gtp_xact_receive(gnode, &gtp_message.h, &xact);
25
         if (rv != OGS_OK) {
26
             ogs_pkbuf_free(pkbuf);
27
             break;
28
@@ -694,9 +694,9 @@
29
          *   However in this case, the cause code shall not be set to
30
          *   "Context not found".
31
          */
32
-        if (gtp2_message.h.teid_presence && gtp2_message.h.teid != 0) {
33
+        if (gtp_message.h.teid_presence && gtp_message.h.teid != 0) {
34
             /* Cause is not "Context not found" */
35
-            mme_ue = mme_ue_find_by_s11_local_teid(gtp2_message.h.teid);
36
+            mme_ue = mme_ue_find_by_s11_local_teid(gtp_message.h.teid);
37
         } else if (xact->local_teid) { /* rx no TEID or TEID=0 */
38
             /* 3GPP TS 29.274 5.5.2: we receive TEID=0 under some
39
              * conditions, such as cause "Session context not found". In those
40
@@ -706,60 +706,69 @@
41
             mme_ue = mme_ue_find_by_s11_local_teid(xact->local_teid);
42
         }
43
 
44
-        switch (gtp2_message.h.type) {
45
+        switch (gtp_message.h.type) {
46
         case OGS_GTP2_ECHO_REQUEST_TYPE:
47
-            mme_s11_handle_echo_request(xact, &gtp2_message);
48
+            mme_s11_handle_echo_request(xact, &gtp_message.echo_request);
49
             break;
50
         case OGS_GTP2_ECHO_RESPONSE_TYPE:
51
-            mme_s11_handle_echo_response(xact, &gtp2_message);
52
+            mme_s11_handle_echo_response(xact, &gtp_message.echo_response);
53
             break;
54
         case OGS_GTP2_CREATE_SESSION_RESPONSE_TYPE:
55
-            if (!gtp2_message.h.teid_presence) ogs_error("No TEID");
56
-            mme_s11_handle_create_session_response(xact, mme_ue, &gtp2_message);
57
+            if (!gtp_message.h.teid_presence) ogs_error("No TEID");
58
+            mme_s11_handle_create_session_response(
59
+                xact, mme_ue, &gtp_message.create_session_response);
60
             break;
61
         case OGS_GTP2_MODIFY_BEARER_RESPONSE_TYPE:
62
-            if (!gtp2_message.h.teid_presence) ogs_error("No TEID");
63
-            mme_s11_handle_modify_bearer_response(xact, mme_ue, &gtp2_message);
64
+            if (!gtp_message.h.teid_presence) ogs_error("No TEID");
65
+            mme_s11_handle_modify_bearer_response(
66
+                xact, mme_ue, &gtp_message.modify_bearer_response);
67
             break;
68
         case OGS_GTP2_DELETE_SESSION_RESPONSE_TYPE:
69
-            if (!gtp2_message.h.teid_presence) ogs_error("No TEID");
70
-            mme_s11_handle_delete_session_response(xact, mme_ue, &gtp2_message);
71
+            if (!gtp_message.h.teid_presence) ogs_error("No TEID");
72
+            mme_s11_handle_delete_session_response(
73
+                xact, mme_ue, &gtp_message.delete_session_response);
74
             break;
75
         case OGS_GTP2_CREATE_BEARER_REQUEST_TYPE:
76
-            mme_s11_handle_create_bearer_request(xact, mme_ue, &gtp2_message);
77
+            mme_s11_handle_create_bearer_request(
78
+                xact, mme_ue, &gtp_message.create_bearer_request);
79
             break;
80
         case OGS_GTP2_UPDATE_BEARER_REQUEST_TYPE:
81
-            mme_s11_handle_update_bearer_request(xact, mme_ue, &gtp2_message);
82
+            mme_s11_handle_update_bearer_request(
83
+                xact, mme_ue, &gtp_message.update_bearer_request);
84
             break;
85
         case OGS_GTP2_DELETE_BEARER_REQUEST_TYPE:
86
-            mme_s11_handle_delete_bearer_request(xact, mme_ue, &gtp2_message);
87
+            mme_s11_handle_delete_bearer_request(
88
+                xact, mme_ue, &gtp_message.delete_bearer_request);
89
             break;
90
         case OGS_GTP2_RELEASE_ACCESS_BEARERS_RESPONSE_TYPE:
91
-            if (!gtp2_message.h.teid_presence) ogs_error("No TEID");
92
+            if (!gtp_message.h.teid_presence) ogs_error("No TEID");
93
             mme_s11_handle_release_access_bearers_response(
94
-                xact, mme_ue, &gtp2_message);
95
+                xact, mme_ue, &gtp_message.release_access_bearers_response);
96
             break;
97
         case OGS_GTP2_DOWNLINK_DATA_NOTIFICATION_TYPE:
98
             mme_s11_handle_downlink_data_notification(
99
-                xact, mme_ue, &gtp2_message);
100
+                xact, mme_ue, &gtp_message.downlink_data_notification);
101
             break;
102
         case OGS_GTP2_CREATE_INDIRECT_DATA_FORWARDING_TUNNEL_RESPONSE_TYPE:
103
-            if (!gtp2_message.h.teid_presence) ogs_error("No TEID");
104
+            if (!gtp_message.h.teid_presence) ogs_error("No TEID");
105
             mme_s11_handle_create_indirect_data_forwarding_tunnel_response(
106
-                xact, mme_ue, &gtp2_message);
107
+                xact, mme_ue,
108
+                &gtp_message.create_indirect_data_forwarding_tunnel_response);
109
             break;
110
         case OGS_GTP2_DELETE_INDIRECT_DATA_FORWARDING_TUNNEL_RESPONSE_TYPE:
111
-            if (!gtp2_message.h.teid_presence) ogs_error("No TEID");
112
+            if (!gtp_message.h.teid_presence) ogs_error("No TEID");
113
             mme_s11_handle_delete_indirect_data_forwarding_tunnel_response(
114
-                xact, mme_ue, &gtp2_message);
115
+                xact, mme_ue,
116
+                &gtp_message.delete_indirect_data_forwarding_tunnel_response);
117
             break;
118
         case OGS_GTP2_BEARER_RESOURCE_FAILURE_INDICATION_TYPE:
119
-            if (!gtp2_message.h.teid_presence) ogs_error("No TEID");
120
+            if (!gtp_message.h.teid_presence) ogs_error("No TEID");
121
             mme_s11_handle_bearer_resource_failure_indication(
122
-                xact, mme_ue, &gtp2_message);
123
+                xact, mme_ue,
124
+                &gtp_message.bearer_resource_failure_indication);
125
             break;
126
         default:
127
-            ogs_warn("Not implemented(type:%d)", gtp2_message.h.type);
128
+            ogs_warn("Not implemented(type:%d)", gtp_message.h.type);
129
             break;
130
         }
131
         ogs_pkbuf_free(pkbuf);
132
open5gs_2.7.0.128.30648.202404052026.tar.xz/src/sgwc/pfcp-sm.c -> open5gs_2.7.0.128.8484a.202404062026.tar.xz/src/sgwc/pfcp-sm.c Changed
38
 
1
@@ -305,7 +305,8 @@
2
                 sess->sgwu_sxa_seid = be64toh(up_f_seid->seid);
3
             } else {
4
                 sgwc_sxa_handle_session_establishment_response(
5
-                    sess, xact, e->gtp_message, message);
6
+                    sess, xact, e->gtp_message,
7
+                    &message->pfcp_session_establishment_response);
8
             }
9
             break;
10
 
11
@@ -313,20 +314,23 @@
12
             if (!message->h.seid_presence) ogs_error("No SEID");
13
 
14
             sgwc_sxa_handle_session_modification_response(
15
-                sess, xact, e->gtp_message, message);
16
+                sess, xact, e->gtp_message,
17
+                &message->pfcp_session_modification_response);
18
             break;
19
 
20
         case OGS_PFCP_SESSION_DELETION_RESPONSE_TYPE:
21
             if (!message->h.seid_presence) ogs_error("No SEID");
22
 
23
             sgwc_sxa_handle_session_deletion_response(
24
-                sess, xact, e->gtp_message, message);
25
+                sess, xact, e->gtp_message,
26
+                &message->pfcp_session_deletion_response);
27
             break;
28
 
29
         case OGS_PFCP_SESSION_REPORT_REQUEST_TYPE:
30
             if (!message->h.seid_presence) ogs_error("No SEID");
31
 
32
-            sgwc_sxa_handle_session_report_request(sess, xact, message);
33
+            sgwc_sxa_handle_session_report_request(
34
+                sess, xact, &message->pfcp_session_report_request);
35
             break;
36
 
37
         default:
38
open5gs_2.7.0.128.30648.202404052026.tar.xz/src/sgwc/s11-handler.c -> open5gs_2.7.0.128.8484a.202404062026.tar.xz/src/sgwc/s11-handler.c Changed
152
 
1
@@ -174,7 +174,7 @@
2
 
3
     if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
4
         ogs_gtp_send_error_message(
5
-                s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : message->h.teid,
6
+                s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0,
7
                 OGS_GTP2_CREATE_SESSION_RESPONSE_TYPE, cause_value);
8
         return;
9
     }
10
@@ -215,7 +215,7 @@
11
 
12
     if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
13
         ogs_gtp_send_error_message(
14
-                s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : message->h.teid,
15
+                s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0,
16
                 OGS_GTP2_CREATE_SESSION_RESPONSE_TYPE, cause_value);
17
         return;
18
     }
19
@@ -263,7 +263,7 @@
20
     ogs_assert(sess->pfcp_node);
21
     if (!OGS_FSM_CHECK(&sess->pfcp_node->sm, sgwc_pfcp_state_associated)) {
22
         ogs_gtp_send_error_message(
23
-                s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : message->h.teid,
24
+                s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0,
25
                 OGS_GTP2_CREATE_SESSION_RESPONSE_TYPE,
26
                 OGS_GTP2_CAUSE_REMOTE_PEER_NOT_RESPONDING);
27
         return;
28
@@ -424,7 +424,7 @@
29
 
30
     if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
31
         ogs_gtp_send_error_message(
32
-                s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : message->h.teid,
33
+                s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0,
34
                 OGS_GTP2_MODIFY_BEARER_RESPONSE_TYPE, cause_value);
35
         return;
36
     }
37
@@ -532,7 +532,7 @@
38
     if (i == 0) {
39
         ogs_error("No Bearer");
40
         ogs_gtp_send_error_message(
41
-                s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : message->h.teid,
42
+                s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0,
43
                 OGS_GTP2_MODIFY_BEARER_RESPONSE_TYPE, cause_value);
44
         return;
45
     }
46
@@ -610,7 +610,7 @@
47
 
48
     if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
49
         ogs_gtp_send_error_message(
50
-                s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : message->h.teid,
51
+                s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0,
52
                 OGS_GTP2_DELETE_SESSION_RESPONSE_TYPE, cause_value);
53
         return;
54
     }
55
@@ -630,7 +630,7 @@
56
         indication->scope_indication == 1) {
57
         ogs_error("Invalid Indication");
58
         ogs_gtp_send_error_message(
59
-                s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : message->h.teid,
60
+                s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0,
61
                 OGS_GTP2_DELETE_SESSION_RESPONSE_TYPE,
62
                 OGS_GTP2_CAUSE_INVALID_MESSAGE_FORMAT);
63
         return;
64
@@ -1129,7 +1129,7 @@
65
 
66
     if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
67
         ogs_gtp_send_error_message(
68
-                s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : message->h.teid,
69
+                s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0,
70
                 OGS_GTP2_RELEASE_ACCESS_BEARERS_RESPONSE_TYPE, cause_value);
71
         return;
72
     }
73
@@ -1236,7 +1236,7 @@
74
 
75
     if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
76
         ogs_gtp_send_error_message(
77
-                s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : message->h.teid,
78
+                s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0,
79
                 OGS_GTP2_CREATE_INDIRECT_DATA_FORWARDING_TUNNEL_RESPONSE_TYPE,
80
                 cause_value);
81
         return;
82
@@ -1254,7 +1254,7 @@
83
         if (req->bearer_contextsi.eps_bearer_id.presence == 0) {
84
             ogs_error("No EBI");
85
             ogs_gtp_send_error_message(
86
-                s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : message->h.teid,
87
+                s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0,
88
                 OGS_GTP2_CREATE_INDIRECT_DATA_FORWARDING_TUNNEL_RESPONSE_TYPE,
89
                 OGS_GTP2_CAUSE_MANDATORY_IE_MISSING);
90
             return;
91
@@ -1277,7 +1277,7 @@
92
             rv = ogs_gtp2_f_teid_to_ip(req_teid, &tunnel->remote_ip);
93
             if (rv != OGS_OK) {
94
                 ogs_gtp_send_error_message(s11_xact,
95
-                        sgwc_ue ? sgwc_ue->mme_s11_teid : message->h.teid,
96
+                        sgwc_ue ? sgwc_ue->mme_s11_teid : 0,
97
                 OGS_GTP2_CREATE_INDIRECT_DATA_FORWARDING_TUNNEL_RESPONSE_TYPE,
98
                 OGS_GTP2_CAUSE_MANDATORY_IE_MISSING);
99
                 return;
100
@@ -1312,7 +1312,7 @@
101
             rv = ogs_gtp2_f_teid_to_ip(req_teid, &tunnel->remote_ip);
102
             if (rv != OGS_OK) {
103
                 ogs_gtp_send_error_message(s11_xact,
104
-                        sgwc_ue ? sgwc_ue->mme_s11_teid : message->h.teid,
105
+                        sgwc_ue ? sgwc_ue->mme_s11_teid : 0,
106
                 OGS_GTP2_CREATE_INDIRECT_DATA_FORWARDING_TUNNEL_RESPONSE_TYPE,
107
                 OGS_GTP2_CAUSE_MANDATORY_IE_MISSING);
108
                 return;
109
@@ -1346,13 +1346,12 @@
110
 
111
 void sgwc_s11_handle_delete_indirect_data_forwarding_tunnel_request(
112
         sgwc_ue_t *sgwc_ue, ogs_gtp_xact_t *s11_xact,
113
-        ogs_pkbuf_t *gtpbuf, ogs_gtp2_message_t *message)
114
+        ogs_pkbuf_t *gtpbuf, ogs_gtp2_message_t *recv_message)
115
 {
116
     sgwc_sess_t *sess = NULL;
117
     uint8_t cause_value = 0;
118
 
119
     ogs_assert(s11_xact);
120
-    ogs_assert(message);
121
 
122
     ogs_debug("Delete Indirect Data Forwarding Tunnel Request");
123
 
124
@@ -1368,8 +1367,7 @@
125
 
126
     if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
127
         ogs_gtp_send_error_message(
128
-                s11_xact,
129
-                sgwc_ue ? sgwc_ue->mme_s11_teid : message->h.teid,
130
+                s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0,
131
                 OGS_GTP2_DELETE_INDIRECT_DATA_FORWARDING_TUNNEL_RESPONSE_TYPE,
132
                 cause_value);
133
         return;
134
@@ -1444,7 +1442,7 @@
135
 
136
     if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
137
         ogs_gtp_send_error_message(
138
-                s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : message->h.teid,
139
+                s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0,
140
                 OGS_GTP2_BEARER_RESOURCE_FAILURE_INDICATION_TYPE, cause_value);
141
         return;
142
     }
143
@@ -1465,7 +1463,7 @@
144
 
145
     if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
146
         ogs_gtp_send_error_message(
147
-                s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : message->h.teid,
148
+                s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0,
149
                 OGS_GTP2_BEARER_RESOURCE_FAILURE_INDICATION_TYPE, cause_value);
150
         return;
151
     }
152
open5gs_2.7.0.128.30648.202404052026.tar.xz/src/sgwc/s5c-handler.c -> open5gs_2.7.0.128.8484a.202404062026.tar.xz/src/sgwc/s5c-handler.c Changed
51
 
1
@@ -573,8 +573,7 @@
2
     }
3
 
4
     if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
5
-        ogs_gtp_send_error_message(s5c_xact,
6
-                sess ? sess->pgw_s5c_teid : message->h.teid,
7
+        ogs_gtp_send_error_message(s5c_xact, sess ? sess->pgw_s5c_teid : 0,
8
                 OGS_GTP2_CREATE_BEARER_RESPONSE_TYPE, cause_value);
9
         return;
10
     }
11
@@ -602,8 +601,7 @@
12
     }
13
 
14
     if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
15
-        ogs_gtp_send_error_message(s5c_xact,
16
-                sess ? sess->pgw_s5c_teid : message->h.teid,
17
+        ogs_gtp_send_error_message(s5c_xact, sess ? sess->pgw_s5c_teid : 0,
18
                 OGS_GTP2_CREATE_BEARER_RESPONSE_TYPE, cause_value);
19
         return;
20
     }
21
@@ -633,8 +631,7 @@
22
 
23
     rv = ogs_gtp2_f_teid_to_ip(pgw_s5u_teid, &ul_tunnel->remote_ip);
24
     if (rv != OGS_OK) {
25
-        ogs_gtp_send_error_message(s5c_xact,
26
-                sess ? sess->pgw_s5c_teid : message->h.teid,
27
+        ogs_gtp_send_error_message(s5c_xact, sess ? sess->pgw_s5c_teid : 0,
28
                 OGS_GTP2_CREATE_BEARER_RESPONSE_TYPE,
29
                 OGS_GTP2_CAUSE_MANDATORY_IE_MISSING);
30
         return;
31
@@ -712,8 +709,7 @@
32
     }
33
 
34
     if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
35
-        ogs_gtp_send_error_message(s5c_xact,
36
-                sess ? sess->pgw_s5c_teid : message->h.teid,
37
+        ogs_gtp_send_error_message(s5c_xact, sess ? sess->pgw_s5c_teid : 0,
38
                 OGS_GTP2_UPDATE_BEARER_RESPONSE_TYPE, cause_value);
39
         return;
40
     }
41
@@ -854,8 +850,7 @@
42
     }
43
 
44
     if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
45
-        ogs_gtp_send_error_message(s5c_xact,
46
-                sess ? sess->pgw_s5c_teid : message->h.teid,
47
+        ogs_gtp_send_error_message(s5c_xact, sess ? sess->pgw_s5c_teid : 0,
48
                 OGS_GTP2_DELETE_BEARER_RESPONSE_TYPE, cause_value);
49
         return;
50
     }
51
open5gs_2.7.0.128.30648.202404052026.tar.xz/src/sgwc/sxa-handler.c -> open5gs_2.7.0.128.8484a.202404062026.tar.xz/src/sgwc/sxa-handler.c Changed
201
 
1
@@ -127,7 +127,7 @@
2
 void sgwc_sxa_handle_session_establishment_response(
3
         sgwc_sess_t *sess, ogs_pfcp_xact_t *pfcp_xact,
4
         ogs_gtp2_message_t *recv_message,
5
-        ogs_pfcp_message_t *pfcp_message)
6
+        ogs_pfcp_session_establishment_response_t *pfcp_rsp)
7
 {
8
     int rv;
9
     uint8_t cause_value = 0;
10
@@ -155,13 +155,11 @@
11
 
12
     ogs_gtp2_indication_t *indication = NULL;
13
 
14
-    ogs_pfcp_session_establishment_response_t *pfcp_rsp = NULL;
15
-
16
     ogs_debug("Session Establishment Response");
17
 
18
     ogs_assert(pfcp_xact);
19
+    ogs_assert(pfcp_rsp);
20
     ogs_assert(recv_message);
21
-    ogs_assert(pfcp_message);
22
 
23
     create_session_request = &recv_message->create_session_request;
24
     ogs_assert(create_session_request);
25
@@ -169,9 +167,6 @@
26
     s11_xact = pfcp_xact->assoc_xact;
27
     ogs_assert(s11_xact);
28
 
29
-    pfcp_rsp = &pfcp_message->pfcp_session_establishment_response;
30
-    ogs_assert(pfcp_rsp);
31
-
32
     ogs_pfcp_xact_commit(pfcp_xact);
33
 
34
     cause_value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
35
@@ -251,8 +246,7 @@
36
     if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
37
         if (sess) sgwc_ue = sess->sgwc_ue;
38
         ogs_gtp_send_error_message(
39
-                s11_xact,
40
-                sgwc_ue ? sgwc_ue->mme_s11_teid : recv_message->h.teid,
41
+                s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0,
42
                 OGS_GTP2_CREATE_SESSION_RESPONSE_TYPE, cause_value);
43
         return;
44
     }
45
@@ -276,8 +270,7 @@
46
         if (dl_tunnel->local_addr == NULL && dl_tunnel->local_addr6 == NULL) {
47
             ogs_error("No UP F-TEID");
48
             ogs_gtp_send_error_message(
49
-                    s11_xact,
50
-                    sgwc_ue ? sgwc_ue->mme_s11_teid : recv_message->h.teid,
51
+                    s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0,
52
                     OGS_GTP2_CREATE_SESSION_RESPONSE_TYPE,
53
                     OGS_GTP2_CAUSE_GRE_KEY_NOT_FOUND);
54
             return;
55
@@ -451,7 +444,7 @@
56
 void sgwc_sxa_handle_session_modification_response(
57
         sgwc_sess_t *sess, ogs_pfcp_xact_t *pfcp_xact,
58
         ogs_gtp2_message_t *recv_message,
59
-        ogs_pfcp_message_t *pfcp_message)
60
+        ogs_pfcp_session_modification_response_t *pfcp_rsp)
61
 {
62
     int i, rv, len = 0;
63
     uint8_t cause_value = 0;
64
@@ -470,19 +463,14 @@
65
 
66
     ogs_gtp2_cause_t cause;
67
 
68
-    ogs_pfcp_session_modification_response_t *pfcp_rsp = NULL;
69
-
70
     ogs_debug("Session Modification Response");
71
 
72
     ogs_assert(pfcp_xact);
73
-    ogs_assert(pfcp_message);
74
+    ogs_assert(pfcp_rsp);
75
 
76
     flags = pfcp_xact->modify_flags;
77
     ogs_assert(flags);
78
 
79
-    pfcp_rsp = &pfcp_message->pfcp_session_modification_response;
80
-    ogs_assert(pfcp_rsp);
81
-
82
     cause_value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
83
 
84
     if (flags & OGS_PFCP_MODIFY_SESSION) {
85
@@ -609,15 +597,12 @@
86
 
87
 
88
         } else if (flags & OGS_PFCP_MODIFY_ACTIVATE) {
89
-            ogs_assert(recv_message);
90
-
91
             if (flags & OGS_PFCP_MODIFY_UL_ONLY) {
92
                 s11_xact = pfcp_xact->assoc_xact;
93
                 ogs_assert(s11_xact);
94
 
95
                 ogs_gtp_send_error_message(
96
-                        s11_xact,
97
-                        sgwc_ue ? sgwc_ue->mme_s11_teid : recv_message->h.teid,
98
+                        s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0,
99
                         OGS_GTP2_CREATE_SESSION_RESPONSE_TYPE, cause_value);
100
 
101
             } else if (flags & OGS_PFCP_MODIFY_DL_ONLY) {
102
@@ -625,26 +610,19 @@
103
                 ogs_assert(s11_xact);
104
 
105
                 ogs_gtp_send_error_message(
106
-                        s11_xact,
107
-                        sgwc_ue ? sgwc_ue->mme_s11_teid : recv_message->h.teid,
108
+                        s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0,
109
                         OGS_GTP2_MODIFY_BEARER_RESPONSE_TYPE, cause_value);
110
             } else {
111
                 ogs_fatal("Invalid modify_flags0x%llx", (long long)flags);
112
                 ogs_assert_if_reached();
113
             }
114
         } else if (flags & OGS_PFCP_MODIFY_DEACTIVATE) {
115
-            if (flags & OGS_PFCP_MODIFY_ERROR_INDICATION) {
116
-            } else {
117
-                ogs_assert(recv_message);
118
-
119
-                s11_xact = pfcp_xact->assoc_xact;
120
-                ogs_assert(s11_xact);
121
+            s11_xact = pfcp_xact->assoc_xact;
122
+            ogs_assert(s11_xact);
123
 
124
-                ogs_gtp_send_error_message(
125
-                        s11_xact,
126
-                        sgwc_ue ? sgwc_ue->mme_s11_teid : recv_message->h.teid,
127
-                        OGS_GTP2_RELEASE_ACCESS_BEARERS_RESPONSE_TYPE, cause_value);
128
-            }
129
+            ogs_gtp_send_error_message(
130
+                    s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0,
131
+                    OGS_GTP2_RELEASE_ACCESS_BEARERS_RESPONSE_TYPE, cause_value);
132
         }
133
 
134
         ogs_pfcp_xact_commit(pfcp_xact);
135
@@ -1011,7 +989,6 @@
136
 
137
         s11_xact = pfcp_xact->assoc_xact;
138
         ogs_assert(s11_xact);
139
-        ogs_assert(recv_message);
140
 
141
         ogs_list_copy(&bearer_to_modify_list,
142
                 &pfcp_xact->bearer_to_modify_list);
143
@@ -1025,6 +1002,7 @@
144
             ogs_gtp2_f_teid_t sgw_s1u_teidOGS_BEARER_PER_UE;
145
             int sgw_s1u_lenOGS_BEARER_PER_UE;
146
 
147
+            ogs_assert(recv_message);
148
             gtp_rsp = &recv_message->create_session_response;
149
             ogs_assert(gtp_rsp);
150
 
151
@@ -1093,6 +1071,7 @@
152
 
153
                 ogs_gtp2_indication_t *indication = NULL;
154
 
155
+                ogs_assert(recv_message);
156
                 gtp_req = &recv_message->modify_bearer_request;
157
                 ogs_assert(gtp_req);
158
 
159
@@ -1231,7 +1210,6 @@
160
         } else {
161
             s11_xact = pfcp_xact->assoc_xact;
162
             ogs_assert(s11_xact);
163
-            ogs_assert(recv_message);
164
 
165
             ogs_pfcp_xact_commit(pfcp_xact);
166
 
167
@@ -1282,7 +1260,7 @@
168
 void sgwc_sxa_handle_session_deletion_response(
169
         sgwc_sess_t *sess, ogs_pfcp_xact_t *pfcp_xact,
170
         ogs_gtp2_message_t *gtp_message,
171
-        ogs_pfcp_message_t *pfcp_message)
172
+        ogs_pfcp_session_deletion_response_t *pfcp_rsp)
173
 {
174
     int rv;
175
     uint8_t cause_value = 0;
176
@@ -1293,14 +1271,9 @@
177
     ogs_gtp_xact_t *gtp_xact = NULL;
178
     ogs_pkbuf_t *pkbuf = NULL;
179
 
180
-    ogs_pfcp_session_deletion_response_t *pfcp_rsp = NULL;
181
-
182
     ogs_debug("Session Deletion Response");
183
 
184
     ogs_assert(pfcp_xact);
185
-    ogs_assert(pfcp_message);
186
-
187
-    pfcp_rsp = &pfcp_message->pfcp_session_deletion_response;
188
     ogs_assert(pfcp_rsp);
189
 
190
     cause_value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
191
@@ -1342,7 +1315,7 @@
192
          * 2. SMF sends Delete Session Response to SGW/MME.
193
          */
194
         if (sess) sgwc_ue = sess->sgwc_ue;
195
-        teid = sgwc_ue ? sgwc_ue->mme_s11_teid : gtp_message->h.teid;
196
+        teid = sgwc_ue ? sgwc_ue->mme_s11_teid : 0;
197
         break;
198
     case OGS_GTP2_DELETE_BEARER_RESPONSE_TYPE:
199
         /*
200
@@ -1412,7 +1385,7 @@
201
open5gs_2.7.0.128.30648.202404052026.tar.xz/src/sgwc/sxa-handler.h -> open5gs_2.7.0.128.8484a.202404062026.tar.xz/src/sgwc/sxa-handler.h Changed
24
 
1
@@ -29,18 +29,18 @@
2
 void sgwc_sxa_handle_session_establishment_response(
3
         sgwc_sess_t *sess, ogs_pfcp_xact_t *pfcp_xact,
4
         ogs_gtp2_message_t *recv_message,
5
-        ogs_pfcp_message_t *pfcp_message);
6
+        ogs_pfcp_session_establishment_response_t *pfcp_rsp);
7
 void sgwc_sxa_handle_session_modification_response(
8
         sgwc_sess_t *sess, ogs_pfcp_xact_t *pfcp_xact,
9
         ogs_gtp2_message_t *recv_message,
10
-        ogs_pfcp_message_t *pfcp_message);
11
+        ogs_pfcp_session_modification_response_t *pfcp_rsp);
12
 void sgwc_sxa_handle_session_deletion_response(
13
         sgwc_sess_t *sess, ogs_pfcp_xact_t *pfcp_xact,
14
         ogs_gtp2_message_t *gtp_message,
15
-        ogs_pfcp_message_t *pfcp_message);
16
+        ogs_pfcp_session_deletion_response_t *pfcp_rsp);
17
 void sgwc_sxa_handle_session_report_request(
18
         sgwc_sess_t *sess, ogs_pfcp_xact_t *pfcp_xact,
19
-        ogs_pfcp_message_t *pfcp_message);
20
+        ogs_pfcp_session_report_request_t *pfcp_req);
21
 
22
 #ifdef __cplusplus
23
 }
24
open5gs_2.7.0.128.30648.202404052026.tar.xz/src/sgwu/pfcp-sm.c -> open5gs_2.7.0.128.8484a.202404062026.tar.xz/src/sgwu/pfcp-sm.c Changed
26
 
1
@@ -280,16 +280,20 @@
2
             sess = sgwu_sess_add_by_message(message);
3
             if (sess)
4
                 OGS_SETUP_PFCP_NODE(sess, node);
5
-            sgwu_sxa_handle_session_establishment_request(sess, xact, message);
6
+            sgwu_sxa_handle_session_establishment_request(
7
+                sess, xact, &message->pfcp_session_establishment_request);
8
             break;
9
         case OGS_PFCP_SESSION_MODIFICATION_REQUEST_TYPE:
10
-            sgwu_sxa_handle_session_modification_request(sess, xact, message);
11
+            sgwu_sxa_handle_session_modification_request(
12
+                sess, xact, &message->pfcp_session_modification_request);
13
             break;
14
         case OGS_PFCP_SESSION_DELETION_REQUEST_TYPE:
15
-            sgwu_sxa_handle_session_deletion_request(sess, xact, message);
16
+            sgwu_sxa_handle_session_deletion_request(
17
+                sess, xact, &message->pfcp_session_deletion_request);
18
             break;
19
         case OGS_PFCP_SESSION_REPORT_RESPONSE_TYPE:
20
-            sgwu_sxa_handle_session_report_response(sess, xact, message);
21
+            sgwu_sxa_handle_session_report_response(
22
+                sess, xact, &message->pfcp_session_report_response);
23
             break;
24
         default:
25
             ogs_error("Not implemented PFCP message type%d",
26
open5gs_2.7.0.128.30648.202404052026.tar.xz/src/sgwu/sxa-handler.c -> open5gs_2.7.0.128.8484a.202404062026.tar.xz/src/sgwu/sxa-handler.c Changed
124
 
1
@@ -22,7 +22,8 @@
2
 #include "sxa-handler.h"
3
 
4
 void sgwu_sxa_handle_session_establishment_request(
5
-        sgwu_sess_t *sess, ogs_pfcp_xact_t *xact, ogs_pfcp_message_t *message)
6
+        sgwu_sess_t *sess, ogs_pfcp_xact_t *xact, 
7
+        ogs_pfcp_session_establishment_request_t *req)
8
 {
9
     ogs_pfcp_pdr_t *pdr = NULL;
10
     ogs_pfcp_far_t *far = NULL;
11
@@ -35,11 +36,7 @@
12
     ogs_pfcp_sereq_flags_t sereq_flags;
13
     bool restoration_indication = false;
14
 
15
-    ogs_pfcp_session_establishment_request_t *req = NULL;
16
-
17
     ogs_assert(xact);
18
-    ogs_assert(message);
19
-    req = &message->pfcp_session_establishment_request;
20
     ogs_assert(req);
21
 
22
     ogs_debug("Session Establishment Request");
23
@@ -48,8 +45,7 @@
24
 
25
     if (!sess) {
26
         ogs_error("No Context");
27
-        ogs_pfcp_send_error_message(
28
-                xact, sess ? sess->sgwc_sxa_f_seid.seid : message->h.seid,
29
+        ogs_pfcp_send_error_message(xact, 0,
30
                 OGS_PFCP_SESSION_ESTABLISHMENT_RESPONSE_TYPE,
31
                 OGS_PFCP_CAUSE_MANDATORY_IE_MISSING, 0);
32
         return;
33
@@ -146,14 +142,14 @@
34
 
35
 cleanup:
36
     ogs_pfcp_sess_clear(&sess->pfcp);
37
-    ogs_pfcp_send_error_message(
38
-            xact, sess ? sess->sgwc_sxa_f_seid.seid : message->h.seid,
39
+    ogs_pfcp_send_error_message(xact, sess ? sess->sgwu_sxa_seid : 0,
40
             OGS_PFCP_SESSION_ESTABLISHMENT_RESPONSE_TYPE,
41
             cause_value, offending_ie_value);
42
 }
43
 
44
 void sgwu_sxa_handle_session_modification_request(
45
-        sgwu_sess_t *sess, ogs_pfcp_xact_t *xact, ogs_pfcp_message_t *message)
46
+        sgwu_sess_t *sess, ogs_pfcp_xact_t *xact, 
47
+        ogs_pfcp_session_modification_request_t *req)
48
 {
49
     ogs_pfcp_pdr_t *pdr = NULL;
50
     ogs_pfcp_far_t *far = NULL;
51
@@ -163,11 +159,7 @@
52
     uint8_t offending_ie_value = 0;
53
     int i;
54
 
55
-    ogs_pfcp_session_modification_request_t *req = NULL;
56
-
57
     ogs_assert(xact);
58
-    ogs_assert(message);
59
-    req = &message->pfcp_session_modification_request;
60
     ogs_assert(req);
61
 
62
     ogs_debug("Session Modification Request");
63
@@ -176,8 +168,7 @@
64
 
65
     if (!sess) {
66
         ogs_error("No Context");
67
-        ogs_pfcp_send_error_message(
68
-                xact, sess ? sess->sgwc_sxa_f_seid.seid : message->h.seid,
69
+        ogs_pfcp_send_error_message(xact, 0,
70
                 OGS_PFCP_SESSION_MODIFICATION_RESPONSE_TYPE,
71
                 OGS_PFCP_CAUSE_SESSION_CONTEXT_NOT_FOUND, 0);
72
         return;
73
@@ -318,28 +309,23 @@
74
 
75
 cleanup:
76
     ogs_pfcp_sess_clear(&sess->pfcp);
77
-    ogs_pfcp_send_error_message(
78
-            xact, sess ? sess->sgwc_sxa_f_seid.seid : message->h.seid,
79
+    ogs_pfcp_send_error_message(xact, sess ? sess->sgwu_sxa_seid : 0,
80
             OGS_PFCP_SESSION_MODIFICATION_RESPONSE_TYPE,
81
             cause_value, offending_ie_value);
82
 }
83
 
84
 void sgwu_sxa_handle_session_deletion_request(
85
-        sgwu_sess_t *sess, ogs_pfcp_xact_t *xact, ogs_pfcp_message_t *message)
86
+        sgwu_sess_t *sess, ogs_pfcp_xact_t *xact,
87
+        ogs_pfcp_session_deletion_request_t *req)
88
 {
89
-    ogs_pfcp_session_deletion_request_t *req = NULL;
90
-
91
     ogs_assert(xact);
92
-    ogs_assert(message);
93
-    req = &message->pfcp_session_deletion_request;
94
     ogs_assert(req);
95
 
96
     ogs_debug("Session Deletion Request");
97
 
98
     if (!sess) {
99
         ogs_error("No Context");
100
-        ogs_pfcp_send_error_message(
101
-                xact, sess ? sess->sgwc_sxa_f_seid.seid : message->h.seid,
102
+        ogs_pfcp_send_error_message(xact, 0,
103
                 OGS_PFCP_SESSION_DELETION_RESPONSE_TYPE,
104
                 OGS_PFCP_CAUSE_SESSION_CONTEXT_NOT_FOUND, 0);
105
         return;
106
@@ -353,15 +339,12 @@
107
 }
108
 
109
 void sgwu_sxa_handle_session_report_response(
110
-        sgwu_sess_t *sess, ogs_pfcp_xact_t *xact, ogs_pfcp_message_t *message)
111
+        sgwu_sess_t *sess, ogs_pfcp_xact_t *xact,
112
+        ogs_pfcp_session_report_response_t *rsp)
113
 {
114
     uint8_t cause_value = 0;
115
 
116
-    ogs_pfcp_session_report_response_t *rsp = NULL;
117
-
118
     ogs_assert(xact);
119
-    ogs_assert(message);
120
-    rsp = &message->pfcp_session_report_response;
121
     ogs_assert(rsp);
122
 
123
     ogs_pfcp_xact_commit(xact);
124
open5gs_2.7.0.128.30648.202404052026.tar.xz/src/sgwu/sxa-handler.h -> open5gs_2.7.0.128.8484a.202404062026.tar.xz/src/sgwu/sxa-handler.h Changed
24
 
1
@@ -27,14 +27,18 @@
2
 #endif
3
 
4
 void sgwu_sxa_handle_session_establishment_request(
5
-        sgwu_sess_t *sess, ogs_pfcp_xact_t *xact, ogs_pfcp_message_t *message);
6
+        sgwu_sess_t *sess, ogs_pfcp_xact_t *xact,
7
+        ogs_pfcp_session_establishment_request_t *req);
8
 void sgwu_sxa_handle_session_modification_request(
9
-        sgwu_sess_t *sess, ogs_pfcp_xact_t *xact, ogs_pfcp_message_t *message);
10
+        sgwu_sess_t *sess, ogs_pfcp_xact_t *xact,
11
+        ogs_pfcp_session_modification_request_t *req);
12
 void sgwu_sxa_handle_session_deletion_request(
13
-        sgwu_sess_t *sess, ogs_pfcp_xact_t *xact, ogs_pfcp_message_t *message);
14
+        sgwu_sess_t *sess, ogs_pfcp_xact_t *xact,
15
+        ogs_pfcp_session_deletion_request_t *req);
16
 
17
 void sgwu_sxa_handle_session_report_response(
18
-        sgwu_sess_t *sess, ogs_pfcp_xact_t *xact, ogs_pfcp_message_t *message);
19
+        sgwu_sess_t *sess, ogs_pfcp_xact_t *xact,
20
+        ogs_pfcp_session_report_response_t *rsp);
21
 
22
 #ifdef __cplusplus
23
 }
24
open5gs_2.7.0.128.30648.202404052026.tar.xz/src/smf/gsm-sm.c -> open5gs_2.7.0.128.8484a.202404062026.tar.xz/src/smf/gsm-sm.c Changed
70
 
1
@@ -218,7 +218,8 @@
2
         switch(gtp2_message->h.type) {
3
         case OGS_GTP2_CREATE_SESSION_REQUEST_TYPE:
4
             gtp2_cause = smf_s5c_handle_create_session_request(sess,
5
-                            e->gtp_xact, gtp2_message);
6
+                            e->gtp_xact,
7
+                            &e->gtp2_message->create_session_request);
8
             if (gtp2_cause != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
9
                 send_gtp_create_err_msg(sess, e->gtp_xact, gtp2_cause);
10
                 return;
11
@@ -620,7 +621,8 @@
12
                 ogs_assert(gtp_xact);
13
 
14
                 pfcp_cause = smf_epc_n4_handle_session_establishment_response(
15
-                        sess, pfcp_xact, pfcp_message);
16
+                        sess, pfcp_xact,
17
+                        &pfcp_message->pfcp_session_establishment_response);
18
                 if (pfcp_cause != OGS_PFCP_CAUSE_REQUEST_ACCEPTED) {
19
                     /* FIXME: tear down Gy and Gx */
20
                     gtp_cause = gtp_cause_from_pfcp(
21
@@ -669,7 +671,8 @@
22
                 smf_bearer_binding(sess);
23
             } else {
24
                 pfcp_cause = smf_5gc_n4_handle_session_establishment_response(
25
-                        sess, pfcp_xact, pfcp_message);
26
+                        sess, pfcp_xact,
27
+                        &pfcp_message->pfcp_session_establishment_response);
28
                 if (pfcp_cause != OGS_PFCP_CAUSE_REQUEST_ACCEPTED) {
29
                     OGS_FSM_TRAN(s, smf_gsm_state_5gc_n1_n2_reject);
30
                     return;
31
@@ -781,7 +784,8 @@
32
         switch(gtp2_message->h.type) {
33
         case OGS_GTP2_DELETE_SESSION_REQUEST_TYPE:
34
             gtp2_cause = smf_s5c_handle_delete_session_request(
35
-                            sess, e->gtp_xact, gtp2_message);
36
+                            sess, e->gtp_xact,
37
+                            &gtp2_message->delete_session_request);
38
             if (gtp2_cause != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
39
                 ogs_gtp2_send_error_message(e->gtp_xact, sess->sgw_s5c_teid,
40
                         OGS_GTP2_DELETE_SESSION_RESPONSE_TYPE, gtp2_cause);
41
@@ -791,7 +795,7 @@
42
             break;
43
         case OGS_GTP2_DELETE_BEARER_RESPONSE_TYPE:
44
             release = smf_s5c_handle_delete_bearer_response(
45
-                sess, e->gtp_xact, gtp2_message);
46
+                sess, e->gtp_xact, &e->gtp2_message->delete_bearer_response);
47
             if (release) {
48
                 e->gtp_xact = NULL;
49
                 OGS_FSM_TRAN(s, smf_gsm_state_wait_pfcp_deletion);
50
@@ -1306,7 +1310,8 @@
51
                 gtp_xact = pfcp_xact->assoc_xact;
52
 
53
                 pfcp_cause = smf_epc_n4_handle_session_deletion_response(
54
-                            sess, pfcp_xact, pfcp_message);
55
+                            sess, pfcp_xact,
56
+                            &pfcp_message->pfcp_session_deletion_response);
57
                 if (pfcp_cause != OGS_PFCP_CAUSE_REQUEST_ACCEPTED) {
58
                     /* FIXME: tear down Gy and Gx */
59
                     ogs_assert(gtp_xact);
60
@@ -1329,7 +1334,8 @@
61
                 ogs_pfcp_xact_commit(pfcp_xact);
62
 
63
                 status = smf_5gc_n4_handle_session_deletion_response(
64
-                            sess, stream, trigger, pfcp_message);
65
+                            sess, stream, trigger,
66
+                            &pfcp_message->pfcp_session_deletion_response);
67
                 if (status != OGS_SBI_HTTP_STATUS_OK) {
68
                     ogs_error(
69
                         "%d smf_5gc_n4_handle_session_deletion_response() "
70
open5gs_2.7.0.128.30648.202404052026.tar.xz/src/smf/n4-handler.c -> open5gs_2.7.0.128.8484a.202404062026.tar.xz/src/smf/n4-handler.c Changed
192
 
1
@@ -144,7 +144,7 @@
2
  * other cause value on failure */
3
 uint8_t smf_5gc_n4_handle_session_establishment_response(
4
         smf_sess_t *sess, ogs_pfcp_xact_t *xact,
5
-        ogs_pfcp_message_t *pfcp_message)
6
+        ogs_pfcp_session_establishment_response_t *rsp)
7
 {
8
     int i;
9
 
10
@@ -156,12 +156,8 @@
11
     ogs_pfcp_pdr_t *pdr = NULL;
12
     ogs_pfcp_far_t *far = NULL;
13
 
14
-    ogs_pfcp_session_establishment_response_t *rsp = NULL;
15
-
16
     ogs_assert(sess);
17
     ogs_assert(xact);
18
-    ogs_assert(pfcp_message);
19
-    rsp = &pfcp_message->pfcp_session_establishment_response;
20
     ogs_assert(rsp);
21
 
22
     ogs_debug("Session Establishment Response 5gc");
23
@@ -244,22 +240,18 @@
24
 
25
 void smf_5gc_n4_handle_session_modification_response(
26
         smf_sess_t *sess, ogs_pfcp_xact_t *xact,
27
-        ogs_pfcp_message_t *pfcp_message)
28
+        ogs_pfcp_session_modification_response_t *rsp)
29
 {
30
     int status = 0;
31
     uint64_t flags = 0;
32
     ogs_sbi_stream_t *stream = NULL;
33
     smf_bearer_t *qos_flow = NULL;
34
 
35
-    ogs_pfcp_session_modification_response_t *rsp = NULL;
36
-
37
     OGS_LIST(pdr_to_create_list);
38
 
39
     ogs_debug("Session Modification Response 5gc");
40
 
41
     ogs_assert(xact);
42
-    ogs_assert(pfcp_message);
43
-    rsp = &pfcp_message->pfcp_session_modification_response;
44
     ogs_assert(rsp);
45
 
46
     flags = xact->modify_flags;
47
@@ -673,16 +665,12 @@
48
 
49
 int smf_5gc_n4_handle_session_deletion_response(
50
         smf_sess_t *sess, ogs_sbi_stream_t *stream, int trigger,
51
-        ogs_pfcp_message_t *pfcp_message)
52
+        ogs_pfcp_session_deletion_response_t *rsp)
53
 {
54
     int status = 0;
55
 
56
-    ogs_pfcp_session_deletion_response_t *rsp = NULL;
57
-
58
     ogs_debug("Session Deletion Response 5gc");
59
 
60
-    ogs_assert(pfcp_message);
61
-    rsp = &pfcp_message->pfcp_session_deletion_response;
62
     ogs_assert(rsp);
63
     ogs_assert(trigger);
64
 
65
@@ -737,7 +725,7 @@
66
  * other cause value on failure */
67
 uint8_t smf_epc_n4_handle_session_establishment_response(
68
         smf_sess_t *sess, ogs_pfcp_xact_t *xact,
69
-        ogs_pfcp_message_t *pfcp_message)
70
+        ogs_pfcp_session_establishment_response_t *rsp)
71
 {
72
     uint8_t cause_value = OGS_PFCP_CAUSE_REQUEST_ACCEPTED;
73
 
74
@@ -745,12 +733,8 @@
75
 
76
     ogs_pfcp_f_seid_t *up_f_seid = NULL;
77
 
78
-    ogs_pfcp_session_establishment_response_t *rsp = NULL;
79
-
80
     ogs_assert(sess);
81
     ogs_assert(xact);
82
-    ogs_assert(pfcp_message);
83
-    rsp = &pfcp_message->pfcp_session_establishment_response;
84
     ogs_assert(rsp);
85
 
86
     ogs_debug("Session Establishment Response epc");
87
@@ -844,7 +828,7 @@
88
 void smf_epc_n4_handle_session_modification_response(
89
         smf_sess_t *sess, ogs_pfcp_xact_t *xact,
90
         ogs_gtp2_message_t *recv_message,
91
-        ogs_pfcp_message_t *pfcp_message)
92
+        ogs_pfcp_session_modification_response_t *rsp)
93
 {
94
     int i;
95
 
96
@@ -860,13 +844,9 @@
97
     ogs_pfcp_pdr_t *pdr = NULL;
98
     ogs_pfcp_far_t *far = NULL;
99
 
100
-    ogs_pfcp_session_modification_response_t *rsp = NULL;
101
-
102
     OGS_LIST(pdr_to_create_list);
103
 
104
     ogs_assert(xact);
105
-    ogs_assert(pfcp_message);
106
-    rsp = &pfcp_message->pfcp_session_modification_response;
107
     ogs_assert(rsp);
108
 
109
     ogs_debug("Session Modification Response epc");
110
@@ -1113,17 +1093,13 @@
111
 
112
 uint8_t smf_epc_n4_handle_session_deletion_response(
113
         smf_sess_t *sess, ogs_pfcp_xact_t *xact,
114
-        ogs_pfcp_message_t *pfcp_message)
115
+        ogs_pfcp_session_deletion_response_t *rsp)
116
 {
117
     smf_bearer_t *bearer = NULL;
118
     unsigned int i;
119
 
120
-    ogs_pfcp_session_deletion_response_t *rsp = NULL;
121
-
122
     ogs_assert(sess);
123
     ogs_assert(xact);
124
-    ogs_assert(pfcp_message);
125
-    rsp = &pfcp_message->pfcp_session_deletion_response;
126
     ogs_assert(rsp);
127
 
128
     ogs_debug("Session Deletion Response epc");
129
@@ -1173,7 +1149,7 @@
130
 
131
 void smf_n4_handle_session_report_request(
132
         smf_sess_t *sess, ogs_pfcp_xact_t *pfcp_xact,
133
-        ogs_pfcp_message_t *pfcp_message)
134
+        ogs_pfcp_session_report_request_t *pfcp_req)
135
 {
136
     smf_ue_t *smf_ue = NULL;
137
     smf_bearer_t *qos_flow = NULL;
138
@@ -1186,13 +1162,9 @@
139
     uint16_t pdr_id = 0;
140
     unsigned int i;
141
 
142
-    ogs_pfcp_session_report_request_t *pfcp_req = NULL;
143
-
144
     smf_metrics_inst_global_inc(SMF_METR_GLOB_CTR_SM_N4SESSIONREPORT);
145
 
146
     ogs_assert(pfcp_xact);
147
-    ogs_assert(pfcp_message);
148
-    pfcp_req = &pfcp_message->pfcp_session_report_request;
149
     ogs_assert(pfcp_req);
150
 
151
     ogs_debug("Session Report Request");
152
@@ -1210,8 +1182,7 @@
153
     }
154
 
155
     if (cause_value != OGS_PFCP_CAUSE_REQUEST_ACCEPTED) {
156
-        ogs_pfcp_send_error_message(pfcp_xact,
157
-                sess ? sess->upf_n4_seid : pfcp_message->h.seid,
158
+        ogs_pfcp_send_error_message(pfcp_xact, 0,
159
                 OGS_PFCP_SESSION_REPORT_RESPONSE_TYPE,
160
                 cause_value, 0);
161
         return;
162
@@ -1251,8 +1222,7 @@
163
                     if (paging_policy_indication_value) {
164
                         ogs_warn("Not implement - "
165
                                 "Paging Policy Indication Value");
166
-                        ogs_pfcp_send_error_message(pfcp_xact,
167
-                                sess ? sess->upf_n4_seid : pfcp_message->h.seid,
168
+                        ogs_pfcp_send_error_message(pfcp_xact, 0,
169
                                 OGS_PFCP_SESSION_REPORT_RESPONSE_TYPE,
170
                                 OGS_PFCP_CAUSE_SERVICE_NOT_SUPPORTED, 0);
171
                         return;
172
@@ -1262,8 +1232,7 @@
173
                         qos_flow = smf_qos_flow_find_by_qfi(sess, qfi);
174
                         if (!qos_flow) {
175
                             ogs_error("Cannot find the QoS Flow%d", qfi);
176
-                            ogs_pfcp_send_error_message(pfcp_xact,
177
-                                sess ? sess->upf_n4_seid : pfcp_message->h.seid,
178
+                            ogs_pfcp_send_error_message(pfcp_xact, 0,
179
                                 OGS_PFCP_SESSION_REPORT_RESPONSE_TYPE,
180
                                 OGS_PFCP_CAUSE_SESSION_CONTEXT_NOT_FOUND, 0);
181
                             return;
182
@@ -1288,8 +1257,7 @@
183
 
184
         if (!pdr) {
185
             ogs_error("No Context");
186
-            ogs_pfcp_send_error_message(pfcp_xact,
187
-                    sess ? sess->upf_n4_seid : pfcp_message->h.seid,
188
+            ogs_pfcp_send_error_message(pfcp_xact, 0,
189
                     OGS_PFCP_SESSION_REPORT_RESPONSE_TYPE,
190
                     OGS_PFCP_CAUSE_SESSION_CONTEXT_NOT_FOUND, 0);
191
             return;
192
open5gs_2.7.0.128.30648.202404052026.tar.xz/src/smf/n4-handler.h -> open5gs_2.7.0.128.8484a.202404062026.tar.xz/src/smf/n4-handler.h Changed
37
 
1
@@ -28,28 +28,28 @@
2
 
3
 uint8_t smf_5gc_n4_handle_session_establishment_response(
4
         smf_sess_t *sess, ogs_pfcp_xact_t *xact,
5
-        ogs_pfcp_message_t *pfcp_message);
6
+        ogs_pfcp_session_establishment_response_t *rsp);
7
 void smf_5gc_n4_handle_session_modification_response(
8
         smf_sess_t *sess, ogs_pfcp_xact_t *xact,
9
-        ogs_pfcp_message_t *pfcp_message);
10
+        ogs_pfcp_session_modification_response_t *rsp);
11
 int smf_5gc_n4_handle_session_deletion_response(
12
         smf_sess_t *sess, ogs_sbi_stream_t *stream, int trigger,
13
-        ogs_pfcp_message_t *pfcp_message);
14
+        ogs_pfcp_session_deletion_response_t *rsp);
15
 
16
 uint8_t smf_epc_n4_handle_session_establishment_response(
17
         smf_sess_t *sess, ogs_pfcp_xact_t *xact,
18
-        ogs_pfcp_message_t *pfcp_message);
19
+        ogs_pfcp_session_establishment_response_t *rsp);
20
 void smf_epc_n4_handle_session_modification_response(
21
         smf_sess_t *sess, ogs_pfcp_xact_t *xact,
22
         ogs_gtp2_message_t *recv_message,
23
-        ogs_pfcp_message_t *pfcp_message);
24
+        ogs_pfcp_session_modification_response_t *rsp);
25
 uint8_t smf_epc_n4_handle_session_deletion_response(
26
         smf_sess_t *sess, ogs_pfcp_xact_t *xact,
27
-        ogs_pfcp_message_t *pfcp_message);
28
+        ogs_pfcp_session_deletion_response_t *rsp);
29
 
30
 void smf_n4_handle_session_report_request(
31
         smf_sess_t *sess, ogs_pfcp_xact_t *pfcp_xact,
32
-        ogs_pfcp_message_t *pfcp_message);
33
+        ogs_pfcp_session_report_request_t *pfcp_req);
34
 
35
 uint8_t gtp_cause_from_pfcp(uint8_t pfcp_cause, uint8_t gtp_version);
36
 
37
open5gs_2.7.0.128.30648.202404052026.tar.xz/src/smf/pfcp-sm.c -> open5gs_2.7.0.128.8484a.202404062026.tar.xz/src/smf/pfcp-sm.c Changed
24
 
1
@@ -337,10 +337,11 @@
2
 
3
             if (xact->epc)
4
                 smf_epc_n4_handle_session_modification_response(
5
-                    sess, xact, e->gtp2_message, message);
6
+                    sess, xact, e->gtp2_message,
7
+                    &message->pfcp_session_modification_response);
8
             else
9
                 smf_5gc_n4_handle_session_modification_response(
10
-                    sess, xact, message);
11
+                    sess, xact, &message->pfcp_session_modification_response);
12
             break;
13
 
14
         case OGS_PFCP_SESSION_DELETION_RESPONSE_TYPE:
15
@@ -370,7 +371,7 @@
16
             if (!message->h.seid_presence) ogs_error("No SEID");
17
 
18
             smf_n4_handle_session_report_request(
19
-                sess, xact, message);
20
+                sess, xact, &message->pfcp_session_report_request);
21
             break;
22
 
23
         default:
24
open5gs_2.7.0.128.30648.202404052026.tar.xz/src/smf/s5c-handler.c -> open5gs_2.7.0.128.8484a.202404062026.tar.xz/src/smf/s5c-handler.c Changed
201
 
1
@@ -70,7 +70,7 @@
2
 
3
 uint8_t smf_s5c_handle_create_session_request(
4
         smf_sess_t *sess, ogs_gtp_xact_t *xact,
5
-        ogs_gtp2_message_t *gtp2_message)
6
+        ogs_gtp2_create_session_request_t *req)
7
 {
8
     char buf1OGS_ADDRSTRLEN;
9
     char buf2OGS_ADDRSTRLEN;
10
@@ -89,11 +89,8 @@
11
     ogs_gtp2_ambr_t *ambr = NULL;
12
     uint16_t decoded = 0;
13
 
14
-    ogs_gtp2_create_session_request_t *req = NULL;
15
-
16
     ogs_assert(sess);
17
     ogs_assert(xact);
18
-    req = &gtp2_message->create_session_request;
19
     ogs_assert(req);
20
 
21
     ogs_debug("Create Session Request");
22
@@ -107,18 +104,7 @@
23
     if (req->sender_f_teid_for_control_plane.presence == 0) {
24
         ogs_error("No TEID");
25
         cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
26
-    } else {
27
-        /* Control Plane(DL) : SGW-S5C */
28
-        sgw_s5c_teid = req->sender_f_teid_for_control_plane.data;
29
-        ogs_assert(sgw_s5c_teid);
30
-        sess->sgw_s5c_teid = be32toh(sgw_s5c_teid->teid);
31
-        rv = ogs_gtp2_f_teid_to_ip(sgw_s5c_teid, &sess->sgw_s5c_ip);
32
-        ogs_assert(rv == OGS_OK);
33
-
34
-        ogs_debug("    SGW_S5C_TEID0x%x SMF_N4_TEID0x%x",
35
-                sess->sgw_s5c_teid, sess->smf_n4_teid);
36
     }
37
-
38
     if (req->bearer_contexts_to_be_created0.presence == 0) {
39
         ogs_error("No Bearer");
40
         cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
41
@@ -292,6 +278,17 @@
42
         sess->ipv4 ? OGS_INET_NTOP(&sess->ipv4->addr, buf1) : "",
43
         sess->ipv6 ? OGS_INET6_NTOP(&sess->ipv6->addr, buf2) : "");
44
 
45
+    /* Control Plane(DL) : SGW-S5C */
46
+    sgw_s5c_teid = req->sender_f_teid_for_control_plane.data;
47
+    ogs_assert(sgw_s5c_teid);
48
+    /* sess->sgw_s5c_teid has already been updated in SMF-SM */
49
+    ogs_assert(sess->sgw_s5c_teid == be32toh(sgw_s5c_teid->teid));
50
+    rv = ogs_gtp2_f_teid_to_ip(sgw_s5c_teid, &sess->sgw_s5c_ip);
51
+    ogs_assert(rv == OGS_OK);
52
+
53
+    ogs_debug("    SGW_S5C_TEID0x%x SMF_N4_TEID0x%x",
54
+            sess->sgw_s5c_teid, sess->smf_n4_teid);
55
+
56
     /* Remove all previous bearer */
57
     smf_bearer_remove_all(sess);
58
 
59
@@ -426,14 +423,11 @@
60
 
61
 uint8_t smf_s5c_handle_delete_session_request(
62
         smf_sess_t *sess, ogs_gtp_xact_t *xact,
63
-        ogs_gtp2_message_t *gtp2_message)
64
+        ogs_gtp2_delete_session_request_t *req)
65
 {
66
-    ogs_gtp2_delete_session_request_t *req = NULL;
67
-
68
     ogs_debug("Delete Session Request");
69
 
70
     ogs_assert(xact);
71
-    req = &gtp2_message->delete_session_request;
72
     ogs_assert(req);
73
 
74
     if (!ogs_diam_app_connected(OGS_DIAM_GX_APPLICATION_ID)) {
75
@@ -486,7 +480,8 @@
76
 
77
 void smf_s5c_handle_modify_bearer_request(
78
         smf_sess_t *sess, ogs_gtp_xact_t *gtp_xact,
79
-        ogs_pkbuf_t *gtpbuf, ogs_gtp2_message_t *gtp2_message)
80
+        ogs_pkbuf_t *gtpbuf, ogs_gtp2_modify_bearer_request_t *req,
81
+        ogs_gtp2_sender_f_teid_t *sender_f_teid)
82
 {
83
     int rv, i;
84
     uint8_t cause_value = 0;
85
@@ -495,14 +490,11 @@
86
     smf_ue_t *smf_ue = NULL;
87
     smf_bearer_t *bearer = NULL;
88
 
89
-    ogs_gtp2_modify_bearer_request_t *req = NULL;
90
-
91
     ogs_debug("Modify Bearer Request");
92
 
93
     ogs_assert(gtp_xact);
94
-    ogs_assert(gtp2_message);
95
-    req = &gtp2_message->modify_bearer_request;
96
     ogs_assert(req);
97
+    ogs_assert(sender_f_teid);
98
 
99
     /************************
100
      * Check Session Context
101
@@ -516,7 +508,9 @@
102
 
103
     if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
104
         ogs_gtp2_send_error_message(gtp_xact,
105
-                sess ? sess->sgw_s5c_teid : gtp2_message->h.teid,
106
+                sess ? sess->sgw_s5c_teid :
107
+                    sender_f_teid->teid_presence == true ?
108
+                        sender_f_teid->teid : 0,
109
                 OGS_GTP2_MODIFY_BEARER_RESPONSE_TYPE, cause_value);
110
         return;
111
     }
112
@@ -660,7 +654,7 @@
113
 
114
 void smf_s5c_handle_create_bearer_response(
115
         smf_sess_t *sess, ogs_gtp_xact_t *xact,
116
-        ogs_gtp2_message_t *gtp2_message)
117
+        ogs_gtp2_create_bearer_response_t *rsp)
118
 {
119
     int rv;
120
     uint8_t cause_value;
121
@@ -669,10 +663,7 @@
122
     smf_bearer_t *bearer = NULL;
123
     ogs_pfcp_far_t *dl_far = NULL;
124
 
125
-    ogs_gtp2_create_bearer_response_t *rsp = NULL;
126
-
127
     ogs_assert(sess);
128
-    rsp = &gtp2_message->create_bearer_response;
129
     ogs_assert(rsp);
130
 
131
     ogs_debug("Create Bearer Response");
132
@@ -837,7 +828,7 @@
133
 
134
 void smf_s5c_handle_update_bearer_response(
135
         smf_sess_t *sess, ogs_gtp_xact_t *xact,
136
-        ogs_gtp2_message_t *gtp2_message)
137
+        ogs_gtp2_update_bearer_response_t *rsp)
138
 {
139
     int rv;
140
     uint8_t cause_value;
141
@@ -846,10 +837,7 @@
142
     uint64_t pfcp_flags = 0;
143
     smf_bearer_t *bearer = NULL;
144
 
145
-    ogs_gtp2_update_bearer_response_t *rsp = NULL;
146
-
147
     ogs_assert(sess);
148
-    rsp = &gtp2_message->update_bearer_response;
149
     ogs_assert(rsp);
150
 
151
     ogs_debug("Update Bearer Response");
152
@@ -947,16 +935,13 @@
153
 /* return true if entire session must be released */
154
 bool smf_s5c_handle_delete_bearer_response(
155
         smf_sess_t *sess, ogs_gtp_xact_t *xact,
156
-        ogs_gtp2_message_t *gtp2_message)
157
+        ogs_gtp2_delete_bearer_response_t *rsp)
158
 {
159
     int rv;
160
     uint8_t cause_value;
161
     smf_bearer_t *bearer = NULL;
162
 
163
-    ogs_gtp2_delete_bearer_response_t *rsp = NULL;
164
-
165
     ogs_assert(sess);
166
-    rsp = &gtp2_message->delete_bearer_response;
167
     ogs_assert(rsp);
168
 
169
     ogs_debug("Delete Bearer Response");
170
@@ -1153,7 +1138,8 @@
171
 
172
 void smf_s5c_handle_bearer_resource_command(
173
         smf_sess_t *sess, ogs_gtp_xact_t *xact,
174
-        ogs_gtp2_message_t *gtp2_message)
175
+        ogs_gtp2_bearer_resource_command_t *cmd,
176
+        ogs_gtp2_sender_f_teid_t *sender_f_teid)
177
 {
178
     int rv;
179
     uint8_t cause_value = 0;
180
@@ -1172,12 +1158,9 @@
181
     int qos_update = 0;
182
     int tft_delete = 0;
183
 
184
-    ogs_gtp2_bearer_resource_command_t *cmd = NULL;
185
-
186
     ogs_assert(xact);
187
-    ogs_assert(gtp2_message);
188
-    cmd = &gtp2_message->bearer_resource_command;
189
     ogs_assert(cmd);
190
+    ogs_assert(sender_f_teid);
191
 
192
     ogs_debug("Bearer Resource Command");
193
 
194
@@ -1212,7 +1195,9 @@
195
 
196
     if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
197
         ogs_gtp2_send_error_message(xact,
198
-                sess ? sess->sgw_s5c_teid : gtp2_message->h.teid,
199
+                sess ? sess->sgw_s5c_teid :
200
+                    sender_f_teid->teid_presence == true ?
201
open5gs_2.7.0.128.30648.202404052026.tar.xz/src/smf/s5c-handler.h -> open5gs_2.7.0.128.8484a.202404062026.tar.xz/src/smf/s5c-handler.h Changed
36
 
1
@@ -33,25 +33,27 @@
2
 
3
 uint8_t smf_s5c_handle_create_session_request(
4
         smf_sess_t *sess, ogs_gtp_xact_t *xact,
5
-        ogs_gtp2_message_t *gtp2_message);
6
+        ogs_gtp2_create_session_request_t *req);
7
 uint8_t smf_s5c_handle_delete_session_request(
8
         smf_sess_t *sess, ogs_gtp_xact_t *xact,
9
-        ogs_gtp2_message_t *gtp2_message);
10
+        ogs_gtp2_delete_session_request_t *req);
11
 void smf_s5c_handle_modify_bearer_request(
12
         smf_sess_t *sess, ogs_gtp_xact_t *xact,
13
-        ogs_pkbuf_t *gtpbuf, ogs_gtp2_message_t *gtp2_message);
14
+        ogs_pkbuf_t *gtpbuf, ogs_gtp2_modify_bearer_request_t *req,
15
+        ogs_gtp2_sender_f_teid_t *sender_f_teid);
16
 void smf_s5c_handle_create_bearer_response(
17
         smf_sess_t *sess, ogs_gtp_xact_t *xact,
18
-        ogs_gtp2_message_t *gtp2_message);
19
+        ogs_gtp2_create_bearer_response_t *rsp);
20
 void smf_s5c_handle_update_bearer_response(
21
         smf_sess_t *sess, ogs_gtp_xact_t *xact,
22
-        ogs_gtp2_message_t *gtp2_message);
23
+        ogs_gtp2_update_bearer_response_t *rsp);
24
 bool smf_s5c_handle_delete_bearer_response(
25
         smf_sess_t *sess, ogs_gtp_xact_t *xact,
26
-        ogs_gtp2_message_t *gtp2_message);
27
+        ogs_gtp2_delete_bearer_response_t *rsp);
28
 void smf_s5c_handle_bearer_resource_command(
29
         smf_sess_t *sess, ogs_gtp_xact_t *xact,
30
-        ogs_gtp2_message_t *gtp2_message);
31
+        ogs_gtp2_bearer_resource_command_t *cmd,
32
+        ogs_gtp2_sender_f_teid_t *sender_f_teid);
33
 
34
 #ifdef __cplusplus
35
 }
36
open5gs_2.7.0.128.30648.202404052026.tar.xz/src/smf/smf-sm.c -> open5gs_2.7.0.128.8484a.202404062026.tar.xz/src/smf/smf-sm.c Changed
99
 
1
@@ -58,6 +58,7 @@
2
 
3
     ogs_gtp_xact_t *gtp_xact = NULL;
4
     ogs_gtp2_message_t gtp2_message;
5
+    ogs_gtp2_sender_f_teid_t gtp2_sender_f_teid;
6
     ogs_gtp1_message_t gtp1_message;
7
 
8
     ogs_diam_gx_message_t *gx_message = NULL;
9
@@ -108,6 +109,8 @@
10
         }
11
         e->gtp2_message = &gtp2_message;
12
 
13
+        ogs_gtp2_sender_f_teid(&gtp2_sender_f_teid, &gtp2_message);
14
+
15
         rv = ogs_gtp_xact_receive(smf_gnode->gnode, &gtp2_message.h, &gtp_xact);
16
         if (rv != OGS_OK) {
17
             ogs_pkbuf_free(recvbuf);
18
@@ -144,11 +147,21 @@
19
             }
20
             if (!sess) {
21
                 ogs_error("No Session");
22
-                ogs_gtp2_send_error_message(gtp_xact, gtp2_message.h.teid,
23
+                ogs_gtp2_send_error_message(gtp_xact,
24
+                        gtp2_sender_f_teid.teid_presence == true ?
25
+                            gtp2_sender_f_teid.teid : 0,
26
                         OGS_GTP2_CREATE_SESSION_RESPONSE_TYPE,
27
                         OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND);
28
                 break;
29
             }
30
+
31
+            if (gtp2_sender_f_teid.teid_presence == true)
32
+                sess->sgw_s5c_teid = gtp2_sender_f_teid.teid;
33
+
34
+            ogs_debug("    SGW_S5C_TEID0x%x, Sender F-TEID(%d)0x%x",
35
+                    sess->sgw_s5c_teid,
36
+                    gtp2_sender_f_teid.teid_presence, gtp2_sender_f_teid.teid);
37
+
38
             e->sess = sess;
39
             ogs_fsm_dispatch(&sess->sm, e);
40
             break;
41
@@ -158,28 +171,43 @@
42
             smf_metrics_inst_gtp_node_inc(smf_gnode->metrics, SMF_METR_GTP_NODE_CTR_S5C_RX_DELETESESSIONREQ);
43
             if (!sess) {
44
                 ogs_error("No Session");
45
-                ogs_gtp2_send_error_message(gtp_xact, gtp2_message.h.teid,
46
+                ogs_gtp2_send_error_message(gtp_xact,
47
+                        gtp2_sender_f_teid.teid_presence == true ?
48
+                            gtp2_sender_f_teid.teid : 0,
49
                         OGS_GTP2_DELETE_SESSION_RESPONSE_TYPE,
50
                         OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND);
51
                 break;
52
             }
53
+            if (gtp2_sender_f_teid.teid_presence == true) {
54
+                if (sess->sgw_s5c_teid != gtp2_sender_f_teid.teid) {
55
+                    ogs_error("Invalid Sender F-TEID 0x%x != 0x%x",
56
+                        sess->sgw_s5c_teid, gtp2_sender_f_teid.teid);
57
+                    ogs_gtp2_send_error_message(gtp_xact,
58
+                            gtp2_sender_f_teid.teid_presence == true ?
59
+                                gtp2_sender_f_teid.teid : 0,
60
+                            OGS_GTP2_DELETE_SESSION_RESPONSE_TYPE,
61
+                            OGS_GTP2_CAUSE_INVALID_MESSAGE_FORMAT);
62
+                    break;
63
+                }
64
+            }
65
             e->sess = sess;
66
             ogs_fsm_dispatch(&sess->sm, e);
67
             break;
68
         case OGS_GTP2_MODIFY_BEARER_REQUEST_TYPE:
69
             if (!gtp2_message.h.teid_presence) ogs_error("No TEID");
70
             smf_s5c_handle_modify_bearer_request(
71
-                sess, gtp_xact, recvbuf, &gtp2_message);
72
+                sess, gtp_xact, recvbuf,
73
+                &gtp2_message.modify_bearer_request, &gtp2_sender_f_teid);
74
             break;
75
         case OGS_GTP2_CREATE_BEARER_RESPONSE_TYPE:
76
             if (!gtp2_message.h.teid_presence) ogs_error("No TEID");
77
             smf_s5c_handle_create_bearer_response(
78
-                sess, gtp_xact, &gtp2_message);
79
+                sess, gtp_xact, &gtp2_message.create_bearer_response);
80
             break;
81
         case OGS_GTP2_UPDATE_BEARER_RESPONSE_TYPE:
82
             if (!gtp2_message.h.teid_presence) ogs_error("No TEID");
83
             smf_s5c_handle_update_bearer_response(
84
-                sess, gtp_xact, &gtp2_message);
85
+                sess, gtp_xact, &gtp2_message.update_bearer_response);
86
             break;
87
         case OGS_GTP2_DELETE_BEARER_RESPONSE_TYPE:
88
             if (!gtp2_message.h.teid_presence) ogs_error("No TEID");
89
@@ -194,7 +222,8 @@
90
         case OGS_GTP2_BEARER_RESOURCE_COMMAND_TYPE:
91
             if (!gtp2_message.h.teid_presence) ogs_error("No TEID");
92
             smf_s5c_handle_bearer_resource_command(
93
-                sess, gtp_xact, &gtp2_message);
94
+                sess, gtp_xact,
95
+                &gtp2_message.bearer_resource_command, &gtp2_sender_f_teid);
96
             break;
97
         default:
98
             ogs_warn("Not implemented(type:%d)", gtp2_message.h.type);
99
open5gs_2.7.0.128.30648.202404052026.tar.xz/src/upf/n4-handler.c -> open5gs_2.7.0.128.8484a.202404062026.tar.xz/src/upf/n4-handler.c Changed
128
 
1
@@ -44,7 +44,8 @@
2
 }
3
 
4
 void upf_n4_handle_session_establishment_request(
5
-        upf_sess_t *sess, ogs_pfcp_xact_t *xact, ogs_pfcp_message_t *message)
6
+        upf_sess_t *sess, ogs_pfcp_xact_t *xact,
7
+        ogs_pfcp_session_establishment_request_t *req)
8
 {
9
     ogs_pfcp_pdr_t *pdr = NULL;
10
     ogs_pfcp_far_t *far = NULL;
11
@@ -57,13 +58,9 @@
12
     ogs_pfcp_sereq_flags_t sereq_flags;
13
     bool restoration_indication = false;
14
 
15
-    ogs_pfcp_session_establishment_request_t *req = NULL;
16
-
17
     upf_metrics_inst_global_inc(UPF_METR_GLOB_CTR_SM_N4SESSIONESTABREQ);
18
 
19
     ogs_assert(xact);
20
-    ogs_assert(message);
21
-    req = &message->pfcp_session_establishment_request;
22
     ogs_assert(req);
23
 
24
     ogs_debug("Session Establishment Request");
25
@@ -72,8 +69,7 @@
26
 
27
     if (!sess) {
28
         ogs_error("No Context");
29
-        ogs_pfcp_send_error_message(
30
-                xact, sess ? sess->smf_n4_f_seid.seid : message->h.seid,
31
+        ogs_pfcp_send_error_message(xact, 0,
32
                 OGS_PFCP_SESSION_ESTABLISHMENT_RESPONSE_TYPE,
33
                 OGS_PFCP_CAUSE_MANDATORY_IE_MISSING, 0);
34
         upf_metrics_inst_by_cause_add(OGS_PFCP_CAUSE_MANDATORY_IE_MISSING,
35
@@ -218,14 +214,14 @@
36
     upf_metrics_inst_by_cause_add(cause_value,
37
             UPF_METR_CTR_SM_N4SESSIONESTABFAIL, 1);
38
     ogs_pfcp_sess_clear(&sess->pfcp);
39
-    ogs_pfcp_send_error_message(
40
-            xact, sess ? sess->smf_n4_f_seid.seid : message->h.seid,
41
+    ogs_pfcp_send_error_message(xact, sess ? sess->smf_n4_f_seid.seid : 0,
42
             OGS_PFCP_SESSION_ESTABLISHMENT_RESPONSE_TYPE,
43
             cause_value, offending_ie_value);
44
 }
45
 
46
 void upf_n4_handle_session_modification_request(
47
-        upf_sess_t *sess, ogs_pfcp_xact_t *xact, ogs_pfcp_message_t *message)
48
+        upf_sess_t *sess, ogs_pfcp_xact_t *xact,
49
+        ogs_pfcp_session_modification_request_t *req)
50
 {
51
     ogs_pfcp_pdr_t *pdr = NULL;
52
     ogs_pfcp_far_t *far = NULL;
53
@@ -235,11 +231,7 @@
54
     uint8_t offending_ie_value = 0;
55
     int i;
56
 
57
-    ogs_pfcp_session_modification_request_t *req = NULL;
58
-
59
     ogs_assert(xact);
60
-    ogs_assert(message);
61
-    req = &message->pfcp_session_modification_request;
62
     ogs_assert(req);
63
 
64
     ogs_debug("Session Modification Request");
65
@@ -248,8 +240,7 @@
66
 
67
     if (!sess) {
68
         ogs_error("No Context");
69
-        ogs_pfcp_send_error_message(
70
-                xact, sess ? sess->smf_n4_f_seid.seid : message->h.seid,
71
+        ogs_pfcp_send_error_message(xact, 0,
72
                 OGS_PFCP_SESSION_MODIFICATION_RESPONSE_TYPE,
73
                 OGS_PFCP_CAUSE_SESSION_CONTEXT_NOT_FOUND, 0);
74
         return;
75
@@ -422,30 +413,25 @@
76
 
77
 cleanup:
78
     ogs_pfcp_sess_clear(&sess->pfcp);
79
-    ogs_pfcp_send_error_message(
80
-            xact, sess ? sess->smf_n4_f_seid.seid : message->h.seid,
81
+    ogs_pfcp_send_error_message(xact, sess ? sess->smf_n4_f_seid.seid : 0,
82
             OGS_PFCP_SESSION_MODIFICATION_RESPONSE_TYPE,
83
             cause_value, offending_ie_value);
84
 }
85
 
86
 void upf_n4_handle_session_deletion_request(
87
-        upf_sess_t *sess, ogs_pfcp_xact_t *xact, ogs_pfcp_message_t *message)
88
+        upf_sess_t *sess, ogs_pfcp_xact_t *xact,
89
+        ogs_pfcp_session_deletion_request_t *req)
90
 {
91
     ogs_pfcp_qer_t *qer = NULL;
92
 
93
-    ogs_pfcp_session_deletion_request_t *req = NULL;
94
-
95
     ogs_assert(xact);
96
-    ogs_assert(message);
97
-    req = &message->pfcp_session_deletion_request;
98
     ogs_assert(req);
99
 
100
     ogs_debug("Session Deletion Request");
101
 
102
     if (!sess) {
103
         ogs_error("No Context");
104
-        ogs_pfcp_send_error_message(xact,
105
-                sess ? sess->smf_n4_f_seid.seid : message->h.seid,
106
+        ogs_pfcp_send_error_message(xact, 0,
107
                 OGS_PFCP_SESSION_DELETION_RESPONSE_TYPE,
108
                 OGS_PFCP_CAUSE_SESSION_CONTEXT_NOT_FOUND, 0);
109
         return;
110
@@ -460,15 +446,12 @@
111
 }
112
 
113
 void upf_n4_handle_session_report_response(
114
-        upf_sess_t *sess, ogs_pfcp_xact_t *xact, ogs_pfcp_message_t *message)
115
+        upf_sess_t *sess, ogs_pfcp_xact_t *xact,
116
+        ogs_pfcp_session_report_response_t *rsp)
117
 {
118
     uint8_t cause_value = 0;
119
 
120
-    ogs_pfcp_session_report_response_t *rsp = NULL;
121
-
122
     ogs_assert(xact);
123
-    ogs_assert(message);
124
-    rsp = &message->pfcp_session_report_response;
125
     ogs_assert(rsp);
126
 
127
     ogs_pfcp_xact_commit(xact);
128
open5gs_2.7.0.128.30648.202404052026.tar.xz/src/upf/n4-handler.h -> open5gs_2.7.0.128.8484a.202404062026.tar.xz/src/upf/n4-handler.h Changed
24
 
1
@@ -27,14 +27,18 @@
2
 #endif
3
 
4
 void upf_n4_handle_session_establishment_request(
5
-        upf_sess_t *sess, ogs_pfcp_xact_t *xact, ogs_pfcp_message_t *message);
6
+        upf_sess_t *sess, ogs_pfcp_xact_t *xact,
7
+        ogs_pfcp_session_establishment_request_t *req);
8
 void upf_n4_handle_session_modification_request(
9
-        upf_sess_t *sess, ogs_pfcp_xact_t *xact, ogs_pfcp_message_t *message);
10
+        upf_sess_t *sess, ogs_pfcp_xact_t *xact,
11
+        ogs_pfcp_session_modification_request_t *req);
12
 void upf_n4_handle_session_deletion_request(
13
-        upf_sess_t *sess, ogs_pfcp_xact_t *xact, ogs_pfcp_message_t *message);
14
+        upf_sess_t *sess, ogs_pfcp_xact_t *xact,
15
+        ogs_pfcp_session_deletion_request_t *req);
16
 
17
 void upf_n4_handle_session_report_response(
18
-        upf_sess_t *sess, ogs_pfcp_xact_t *xact, ogs_pfcp_message_t *message);
19
+        upf_sess_t *sess, ogs_pfcp_xact_t *xact,
20
+        ogs_pfcp_session_report_response_t *rsp);
21
 
22
 #ifdef __cplusplus
23
 }
24
open5gs_2.7.0.128.30648.202404052026.tar.xz/src/upf/pfcp-sm.c -> open5gs_2.7.0.128.8484a.202404062026.tar.xz/src/upf/pfcp-sm.c Changed
26
 
1
@@ -284,16 +284,20 @@
2
             sess = upf_sess_add_by_message(message);
3
             if (sess)
4
                 OGS_SETUP_PFCP_NODE(sess, node);
5
-            upf_n4_handle_session_establishment_request(sess, xact, message);
6
+            upf_n4_handle_session_establishment_request(
7
+                sess, xact, &message->pfcp_session_establishment_request);
8
             break;
9
         case OGS_PFCP_SESSION_MODIFICATION_REQUEST_TYPE:
10
-            upf_n4_handle_session_modification_request(sess, xact, message);
11
+            upf_n4_handle_session_modification_request(
12
+                sess, xact, &message->pfcp_session_modification_request);
13
             break;
14
         case OGS_PFCP_SESSION_DELETION_REQUEST_TYPE:
15
-            upf_n4_handle_session_deletion_request(sess, xact, message);
16
+            upf_n4_handle_session_deletion_request(
17
+                sess, xact, &message->pfcp_session_deletion_request);
18
             break;
19
         case OGS_PFCP_SESSION_REPORT_RESPONSE_TYPE:
20
-            upf_n4_handle_session_report_response(sess, xact, message);
21
+            upf_n4_handle_session_report_response(
22
+                sess, xact, &message->pfcp_session_report_response);
23
             break;
24
         default:
25
             ogs_error("Not implemented PFCP message type%d",
26