We truncated the diff of some files because they were too big.
If you want to see the full diff for every file, click here.
Changes of Revision 655
open5gs_2.7.0.128.30648.202404052026.dsc
Deleted
x
1
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
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
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
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
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
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
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 = >p2_message->echo_request;
13
ogs_assert(req);
14
15
ogs_debug("Receiving Echo Request");
16
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
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 = >p2_message->create_session_response;
41
ogs_assert(rsp);
42
43
ogs_debug("Create Session Response");
44
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
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 = >p2_message->modify_bearer_response;
61
ogs_assert(rsp);
62
63
ogs_debug("Modify Bearer Response");
64
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
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 = >p2_message->delete_session_response;
81
ogs_assert(rsp);
82
83
ogs_debug("Delete Session Response");
84
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
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 = >p2_message->create_bearer_request;
102
ogs_assert(req);
103
104
ogs_debug("Create Bearer Request");
105
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
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
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
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 = >p2_message->update_bearer_request;
143
ogs_assert(req);
144
145
ogs_debug("Update Bearer Request");
146
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
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
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 = >p2_message->delete_bearer_request;
174
ogs_assert(req);
175
176
ogs_debug("Delete Bearer Request");
177
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
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
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
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
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
11
pkbuf = e->pkbuf;
12
ogs_assert(pkbuf);
13
14
- if (ogs_gtp2_parse_msg(>p2_message, pkbuf) != OGS_OK) {
15
+ if (ogs_gtp2_parse_msg(>p_message, pkbuf) != OGS_OK) {
16
ogs_error("ogs_gtp2_parse_msg() failed");
17
ogs_pkbuf_free(pkbuf);
18
break;
19
20
gnode = e->gnode;
21
ogs_assert(gnode);
22
23
- rv = ogs_gtp_xact_receive(gnode, >p2_message.h, &xact);
24
+ rv = ogs_gtp_xact_receive(gnode, >p_message.h, &xact);
25
if (rv != OGS_OK) {
26
ogs_pkbuf_free(pkbuf);
27
break;
28
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
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, >p2_message);
48
+ mme_s11_handle_echo_request(xact, >p_message.echo_request);
49
break;
50
case OGS_GTP2_ECHO_RESPONSE_TYPE:
51
- mme_s11_handle_echo_response(xact, >p2_message);
52
+ mme_s11_handle_echo_response(xact, >p_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, >p2_message);
57
+ if (!gtp_message.h.teid_presence) ogs_error("No TEID");
58
+ mme_s11_handle_create_session_response(
59
+ xact, mme_ue, >p_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, >p2_message);
64
+ if (!gtp_message.h.teid_presence) ogs_error("No TEID");
65
+ mme_s11_handle_modify_bearer_response(
66
+ xact, mme_ue, >p_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, >p2_message);
71
+ if (!gtp_message.h.teid_presence) ogs_error("No TEID");
72
+ mme_s11_handle_delete_session_response(
73
+ xact, mme_ue, >p_message.delete_session_response);
74
break;
75
case OGS_GTP2_CREATE_BEARER_REQUEST_TYPE:
76
- mme_s11_handle_create_bearer_request(xact, mme_ue, >p2_message);
77
+ mme_s11_handle_create_bearer_request(
78
+ xact, mme_ue, >p_message.create_bearer_request);
79
break;
80
case OGS_GTP2_UPDATE_BEARER_REQUEST_TYPE:
81
- mme_s11_handle_update_bearer_request(xact, mme_ue, >p2_message);
82
+ mme_s11_handle_update_bearer_request(
83
+ xact, mme_ue, >p_message.update_bearer_request);
84
break;
85
case OGS_GTP2_DELETE_BEARER_REQUEST_TYPE:
86
- mme_s11_handle_delete_bearer_request(xact, mme_ue, >p2_message);
87
+ mme_s11_handle_delete_bearer_request(
88
+ xact, mme_ue, >p_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, >p2_message);
95
+ xact, mme_ue, >p_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, >p2_message);
100
+ xact, mme_ue, >p_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, >p2_message);
107
+ xact, mme_ue,
108
+ >p_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, >p2_message);
115
+ xact, mme_ue,
116
+ >p_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, >p2_message);
123
+ xact, mme_ue,
124
+ >p_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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
+ >p2_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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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 = >p2_message->create_session_request;
19
ogs_assert(req);
20
21
ogs_debug("Create Session Request");
22
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
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
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 = >p2_message->delete_session_request;
72
ogs_assert(req);
73
74
if (!ogs_diam_app_connected(OGS_DIAM_GX_APPLICATION_ID)) {
75
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
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 = >p2_message->modify_bearer_request;
96
ogs_assert(req);
97
+ ogs_assert(sender_f_teid);
98
99
/************************
100
* Check Session Context
101
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
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
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 = >p2_message->create_bearer_response;
129
ogs_assert(rsp);
130
131
ogs_debug("Create Bearer Response");
132
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
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 = >p2_message->update_bearer_response;
149
ogs_assert(rsp);
150
151
ogs_debug("Update Bearer Response");
152
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 = >p2_message->delete_bearer_response;
167
ogs_assert(rsp);
168
169
ogs_debug("Delete Bearer Response");
170
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
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 = >p2_message->bearer_resource_command;
189
ogs_assert(cmd);
190
+ ogs_assert(sender_f_teid);
191
192
ogs_debug("Bearer Resource Command");
193
194
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
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
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
10
}
11
e->gtp2_message = >p2_message;
12
13
+ ogs_gtp2_sender_f_teid(>p2_sender_f_teid, >p2_message);
14
+
15
rv = ogs_gtp_xact_receive(smf_gnode->gnode, >p2_message.h, >p_xact);
16
if (rv != OGS_OK) {
17
ogs_pkbuf_free(recvbuf);
18
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
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, >p2_message);
72
+ sess, gtp_xact, recvbuf,
73
+ >p2_message.modify_bearer_request, >p2_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, >p2_message);
79
+ sess, gtp_xact, >p2_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, >p2_message);
85
+ sess, gtp_xact, >p2_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
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, >p2_message);
94
+ sess, gtp_xact,
95
+ >p2_message.bearer_resource_command, >p2_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
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
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
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
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
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
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
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
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
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
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