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 654
open5gs_2.7.0.126.eb2b.202404042026.dsc -> open5gs_2.7.0.128.30648.202404052026.dsc
Changed
x
1
2
Source: open5gs
3
Binary: open5gs-common, open5gs-mme, open5gs-sgwc, open5gs-smf, open5gs-amf, open5gs-sgwu, open5gs-upf, open5gs-hss, open5gs-pcrf, open5gs-nrf, open5gs-scp, open5gs-sepp, open5gs-ausf, open5gs-udm, open5gs-pcf, open5gs-nssf, open5gs-bsf, open5gs-udr, open5gs, open5gs-dbg
4
Architecture: any
5
-Version: 2.7.0.126.eb2b.202404042026
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
11
open5gs-udr deb net optional arch=any
12
open5gs-upf deb net optional arch=any
13
Checksums-Sha1:
14
- ef775b1e733b8f3beeede28aec2d2c13dce2e4c0 14487084 open5gs_2.7.0.126.eb2b.202404042026.tar.xz
15
+ e2eef4ee2269878a50d13707d30bf4f6f669ae13 14488320 open5gs_2.7.0.128.30648.202404052026.tar.xz
16
Checksums-Sha256:
17
- adce053ea3a0aef9582b963fdf8708dc5f8f1ca0528b0142a4710e7b2b7fb5d3 14487084 open5gs_2.7.0.126.eb2b.202404042026.tar.xz
18
+ 11d6afe2e86d483f5ec478401e2a561373c3fed46480610352bd3db19a1e7874 14488320 open5gs_2.7.0.128.30648.202404052026.tar.xz
19
Files:
20
- 7420079c1ea7bdba26bc6478e6080ef1 14487084 open5gs_2.7.0.126.eb2b.202404042026.tar.xz
21
+ 7cd88d66dcad2d41d93706b0c0058ca6 14488320 open5gs_2.7.0.128.30648.202404052026.tar.xz
22
open5gs_2.7.0.126.eb2b.202404042026.tar.xz/.tarball-version -> open5gs_2.7.0.128.30648.202404052026.tar.xz/.tarball-version
Changed
4
1
2
-2.7.0.126-eb2b.202404042026
3
+2.7.0.128-30648.202404052026
4
open5gs_2.7.0.126.eb2b.202404042026.tar.xz/debian/changelog -> open5gs_2.7.0.128.30648.202404052026.tar.xz/debian/changelog
Changed
12
1
2
-open5gs (2.7.0.126.eb2b.202404042026) unstable; urgency=medium
3
+open5gs (2.7.0.128.30648.202404052026) unstable; urgency=medium
4
5
* Automatically generated changelog entry for building the Osmocom nightly feed
6
7
- -- Osmocom OBS scripts <info@osmocom.org> Thu, 04 Apr 2024 20:27:44 +0000
8
+ -- Osmocom OBS scripts <info@osmocom.org> Fri, 05 Apr 2024 20:27:38 +0000
9
10
open5gs (2.7.0) unstable; urgency=medium
11
12
open5gs_2.7.0.126.eb2b.202404042026.tar.xz/docs/_docs/guide/01-quickstart.md -> open5gs_2.7.0.128.30648.202404052026.tar.xz/docs/_docs/guide/01-quickstart.md
Changed
10
1
2
SGWC-gtpc = 127.0.0.3 :2123 for S11
3
SGWC-pfcp = 127.0.0.3 :8805 for Sxa
4
5
-SMF-gtpc = 127.0.0.4 :2123 for S5c, N11
6
+SMF-gtpc = 127.0.0.4 :2123 for S5c
7
SMF-gtpu = 127.0.0.4 :2152 for N4u (Sxu)
8
SMF-pfcp = 127.0.0.4 :8805 for N4 (Sxb)
9
SMF-frDi = 127.0.0.4 :3868 for Gx auth
10
open5gs_2.7.0.126.eb2b.202404042026.tar.xz/src/mme/mme-s11-handler.c -> open5gs_2.7.0.128.30648.202404052026.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_echo_request_t *req)
6
+ ogs_gtp_xact_t *xact, ogs_gtp2_message_t *gtp2_message)
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_echo_response_t *rsp)
21
+ ogs_gtp_xact_t *xact, ogs_gtp2_message_t *gtp2_message)
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_create_session_response_t *rsp)
29
+ ogs_gtp2_message_t *gtp2_message)
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_modify_bearer_response_t *rsp)
49
+ ogs_gtp2_message_t *gtp2_message)
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_delete_session_response_t *rsp)
69
+ ogs_gtp2_message_t *gtp2_message)
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_create_bearer_request_t *req)
89
+ ogs_gtp2_message_t *gtp2_message)
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, sgw_ue ? sgw_ue->sgw_s11_teid : 0,
110
+ ogs_gtp2_send_error_message(xact,
111
+ sgw_ue ? sgw_ue->sgw_s11_teid : gtp2_message->h.teid,
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, sgw_ue ? sgw_ue->sgw_s11_teid : 0,
120
+ ogs_gtp2_send_error_message(xact,
121
+ sgw_ue ? sgw_ue->sgw_s11_teid : gtp2_message->h.teid,
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_update_bearer_request_t *req)
130
+ ogs_gtp2_message_t *gtp2_message)
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, sgw_ue ? sgw_ue->sgw_s11_teid : 0,
151
+ ogs_gtp2_send_error_message(xact,
152
+ sgw_ue ? sgw_ue->sgw_s11_teid : gtp2_message->h.teid,
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_delete_bearer_request_t *req)
161
+ ogs_gtp2_message_t *gtp2_message)
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, sgw_ue ? sgw_ue->sgw_s11_teid : 0,
182
+ ogs_gtp2_send_error_message(xact,
183
+ sgw_ue ? sgw_ue->sgw_s11_teid : gtp2_message->h.teid,
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_release_access_bearers_response_t *rsp)
192
+ ogs_gtp2_message_t *gtp2_message)
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.126.eb2b.202404042026.tar.xz/src/mme/mme-s11-handler.h -> open5gs_2.7.0.128.30648.202404052026.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_echo_request_t *req);
6
+ ogs_gtp_xact_t *xact, ogs_gtp2_message_t *gtp2_message);
7
void mme_s11_handle_echo_response(
8
- ogs_gtp_xact_t *xact, ogs_gtp2_echo_response_t *rsp);
9
+ ogs_gtp_xact_t *xact, ogs_gtp2_message_t *gtp2_message);
10
void mme_s11_handle_create_session_response(
11
ogs_gtp_xact_t *xact, mme_ue_t *mme_ue,
12
- ogs_gtp2_create_session_response_t *rsp);
13
+ ogs_gtp2_message_t *gtp2_message);
14
void mme_s11_handle_modify_bearer_response(
15
ogs_gtp_xact_t *xact, mme_ue_t *mme_ue,
16
- ogs_gtp2_modify_bearer_response_t *rsp);
17
+ ogs_gtp2_message_t *gtp2_message);
18
void mme_s11_handle_delete_session_response(
19
ogs_gtp_xact_t *xact, mme_ue_t *mme_ue,
20
- ogs_gtp2_delete_session_response_t *rsp);
21
+ ogs_gtp2_message_t *gtp2_message);
22
void mme_s11_handle_create_bearer_request(
23
ogs_gtp_xact_t *xact, mme_ue_t *mme_ue,
24
- ogs_gtp2_create_bearer_request_t *req);
25
+ ogs_gtp2_message_t *gtp2_message);
26
void mme_s11_handle_update_bearer_request(
27
ogs_gtp_xact_t *xact, mme_ue_t *mme_ue,
28
- ogs_gtp2_update_bearer_request_t *req);
29
+ ogs_gtp2_message_t *gtp2_message);
30
void mme_s11_handle_delete_bearer_request(
31
ogs_gtp_xact_t *xact, mme_ue_t *mme_ue,
32
- ogs_gtp2_delete_bearer_request_t *req);
33
+ ogs_gtp2_message_t *gtp2_message);
34
35
void mme_s11_handle_release_access_bearers_response(
36
ogs_gtp_xact_t *xact, mme_ue_t *mme_ue,
37
- ogs_gtp2_release_access_bearers_response_t *rsp);
38
+ ogs_gtp2_message_t *gtp2_message);
39
void mme_s11_handle_downlink_data_notification(
40
ogs_gtp_xact_t *xact, mme_ue_t *mme_ue,
41
- ogs_gtp2_downlink_data_notification_t *noti);
42
+ ogs_gtp2_message_t *gtp2_message);
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_create_indirect_data_forwarding_tunnel_response_t *rsp);
46
+ ogs_gtp2_message_t *gtp2_message);
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_delete_indirect_data_forwarding_tunnel_response_t *rsp);
50
+ ogs_gtp2_message_t *gtp2_message);
51
52
void mme_s11_handle_bearer_resource_failure_indication(
53
ogs_gtp_xact_t *xact, mme_ue_t *mme_ue,
54
- ogs_gtp2_bearer_resource_failure_indication_t *ind);
55
+ ogs_gtp2_message_t *gtp2_message);
56
57
#ifdef __cplusplus
58
}
59
open5gs_2.7.0.126.eb2b.202404042026.tar.xz/src/mme/mme-sm.c -> open5gs_2.7.0.128.30648.202404052026.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 gtp_message;
6
+ ogs_gtp2_message_t gtp2_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(>p_message, pkbuf) != OGS_OK) {
15
+ if (ogs_gtp2_parse_msg(>p2_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, >p_message.h, &xact);
24
+ rv = ogs_gtp_xact_receive(gnode, >p2_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 (gtp_message.h.teid_presence && gtp_message.h.teid != 0) {
33
+ if (gtp2_message.h.teid_presence && gtp2_message.h.teid != 0) {
34
/* Cause is not "Context not found" */
35
- mme_ue = mme_ue_find_by_s11_local_teid(gtp_message.h.teid);
36
+ mme_ue = mme_ue_find_by_s11_local_teid(gtp2_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 (gtp_message.h.type) {
45
+ switch (gtp2_message.h.type) {
46
case OGS_GTP2_ECHO_REQUEST_TYPE:
47
- mme_s11_handle_echo_request(xact, >p_message.echo_request);
48
+ mme_s11_handle_echo_request(xact, >p2_message);
49
break;
50
case OGS_GTP2_ECHO_RESPONSE_TYPE:
51
- mme_s11_handle_echo_response(xact, >p_message.echo_response);
52
+ mme_s11_handle_echo_response(xact, >p2_message);
53
break;
54
case OGS_GTP2_CREATE_SESSION_RESPONSE_TYPE:
55
- if (!gtp_message.h.teid_presence) ogs_error("No TEID");
56
- mme_s11_handle_create_session_response(
57
- xact, mme_ue, >p_message.create_session_response);
58
+ if (!gtp2_message.h.teid_presence) ogs_error("No TEID");
59
+ mme_s11_handle_create_session_response(xact, mme_ue, >p2_message);
60
break;
61
case OGS_GTP2_MODIFY_BEARER_RESPONSE_TYPE:
62
- if (!gtp_message.h.teid_presence) ogs_error("No TEID");
63
- mme_s11_handle_modify_bearer_response(
64
- xact, mme_ue, >p_message.modify_bearer_response);
65
+ if (!gtp2_message.h.teid_presence) ogs_error("No TEID");
66
+ mme_s11_handle_modify_bearer_response(xact, mme_ue, >p2_message);
67
break;
68
case OGS_GTP2_DELETE_SESSION_RESPONSE_TYPE:
69
- if (!gtp_message.h.teid_presence) ogs_error("No TEID");
70
- mme_s11_handle_delete_session_response(
71
- xact, mme_ue, >p_message.delete_session_response);
72
+ if (!gtp2_message.h.teid_presence) ogs_error("No TEID");
73
+ mme_s11_handle_delete_session_response(xact, mme_ue, >p2_message);
74
break;
75
case OGS_GTP2_CREATE_BEARER_REQUEST_TYPE:
76
- mme_s11_handle_create_bearer_request(
77
- xact, mme_ue, >p_message.create_bearer_request);
78
+ mme_s11_handle_create_bearer_request(xact, mme_ue, >p2_message);
79
break;
80
case OGS_GTP2_UPDATE_BEARER_REQUEST_TYPE:
81
- mme_s11_handle_update_bearer_request(
82
- xact, mme_ue, >p_message.update_bearer_request);
83
+ mme_s11_handle_update_bearer_request(xact, mme_ue, >p2_message);
84
break;
85
case OGS_GTP2_DELETE_BEARER_REQUEST_TYPE:
86
- mme_s11_handle_delete_bearer_request(
87
- xact, mme_ue, >p_message.delete_bearer_request);
88
+ mme_s11_handle_delete_bearer_request(xact, mme_ue, >p2_message);
89
break;
90
case OGS_GTP2_RELEASE_ACCESS_BEARERS_RESPONSE_TYPE:
91
- if (!gtp_message.h.teid_presence) ogs_error("No TEID");
92
+ if (!gtp2_message.h.teid_presence) ogs_error("No TEID");
93
mme_s11_handle_release_access_bearers_response(
94
- xact, mme_ue, >p_message.release_access_bearers_response);
95
+ xact, mme_ue, >p2_message);
96
break;
97
case OGS_GTP2_DOWNLINK_DATA_NOTIFICATION_TYPE:
98
mme_s11_handle_downlink_data_notification(
99
- xact, mme_ue, >p_message.downlink_data_notification);
100
+ xact, mme_ue, >p2_message);
101
break;
102
case OGS_GTP2_CREATE_INDIRECT_DATA_FORWARDING_TUNNEL_RESPONSE_TYPE:
103
- if (!gtp_message.h.teid_presence) ogs_error("No TEID");
104
+ if (!gtp2_message.h.teid_presence) ogs_error("No TEID");
105
mme_s11_handle_create_indirect_data_forwarding_tunnel_response(
106
- xact, mme_ue,
107
- >p_message.create_indirect_data_forwarding_tunnel_response);
108
+ xact, mme_ue, >p2_message);
109
break;
110
case OGS_GTP2_DELETE_INDIRECT_DATA_FORWARDING_TUNNEL_RESPONSE_TYPE:
111
- if (!gtp_message.h.teid_presence) ogs_error("No TEID");
112
+ if (!gtp2_message.h.teid_presence) ogs_error("No TEID");
113
mme_s11_handle_delete_indirect_data_forwarding_tunnel_response(
114
- xact, mme_ue,
115
- >p_message.delete_indirect_data_forwarding_tunnel_response);
116
+ xact, mme_ue, >p2_message);
117
break;
118
case OGS_GTP2_BEARER_RESOURCE_FAILURE_INDICATION_TYPE:
119
- if (!gtp_message.h.teid_presence) ogs_error("No TEID");
120
+ if (!gtp2_message.h.teid_presence) ogs_error("No TEID");
121
mme_s11_handle_bearer_resource_failure_indication(
122
- xact, mme_ue,
123
- >p_message.bearer_resource_failure_indication);
124
+ xact, mme_ue, >p2_message);
125
break;
126
default:
127
- ogs_warn("Not implemented(type:%d)", gtp_message.h.type);
128
+ ogs_warn("Not implemented(type:%d)", gtp2_message.h.type);
129
break;
130
}
131
ogs_pkbuf_free(pkbuf);
132
open5gs_2.7.0.126.eb2b.202404042026.tar.xz/src/sgwc/pfcp-sm.c -> open5gs_2.7.0.128.30648.202404052026.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,
6
- &message->pfcp_session_establishment_response);
7
+ sess, xact, e->gtp_message, message);
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,
16
- &message->pfcp_session_modification_response);
17
+ sess, xact, e->gtp_message, message);
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,
25
- &message->pfcp_session_deletion_response);
26
+ sess, xact, e->gtp_message, message);
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(
33
- sess, xact, &message->pfcp_session_report_request);
34
+ sgwc_sxa_handle_session_report_request(sess, xact, message);
35
break;
36
37
default:
38
open5gs_2.7.0.126.eb2b.202404042026.tar.xz/src/sgwc/s11-handler.c -> open5gs_2.7.0.128.30648.202404052026.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 : 0,
6
+ s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : message->h.teid,
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 : 0,
15
+ s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : message->h.teid,
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 : 0,
24
+ s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : message->h.teid,
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 : 0,
33
+ s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : message->h.teid,
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 : 0,
42
+ s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : message->h.teid,
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 : 0,
51
+ s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : message->h.teid,
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 : 0,
60
+ s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : message->h.teid,
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 : 0,
69
+ s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : message->h.teid,
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 : 0,
78
+ s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : message->h.teid,
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 : 0,
87
+ s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : message->h.teid,
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 : 0,
96
+ sgwc_ue ? sgwc_ue->mme_s11_teid : message->h.teid,
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 : 0,
105
+ sgwc_ue ? sgwc_ue->mme_s11_teid : message->h.teid,
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 *recv_message)
114
+ ogs_pkbuf_t *gtpbuf, ogs_gtp2_message_t *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, sgwc_ue ? sgwc_ue->mme_s11_teid : 0,
129
+ s11_xact,
130
+ sgwc_ue ? sgwc_ue->mme_s11_teid : message->h.teid,
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 : 0,
139
+ s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : message->h.teid,
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 : 0,
148
+ s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : message->h.teid,
149
OGS_GTP2_BEARER_RESOURCE_FAILURE_INDICATION_TYPE, cause_value);
150
return;
151
}
152
open5gs_2.7.0.126.eb2b.202404042026.tar.xz/src/sgwc/s5c-handler.c -> open5gs_2.7.0.128.30648.202404052026.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, sess ? sess->pgw_s5c_teid : 0,
6
+ ogs_gtp_send_error_message(s5c_xact,
7
+ sess ? sess->pgw_s5c_teid : message->h.teid,
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, sess ? sess->pgw_s5c_teid : 0,
16
+ ogs_gtp_send_error_message(s5c_xact,
17
+ sess ? sess->pgw_s5c_teid : message->h.teid,
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, sess ? sess->pgw_s5c_teid : 0,
26
+ ogs_gtp_send_error_message(s5c_xact,
27
+ sess ? sess->pgw_s5c_teid : message->h.teid,
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, sess ? sess->pgw_s5c_teid : 0,
36
+ ogs_gtp_send_error_message(s5c_xact,
37
+ sess ? sess->pgw_s5c_teid : message->h.teid,
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, sess ? sess->pgw_s5c_teid : 0,
46
+ ogs_gtp_send_error_message(s5c_xact,
47
+ sess ? sess->pgw_s5c_teid : message->h.teid,
48
OGS_GTP2_DELETE_BEARER_RESPONSE_TYPE, cause_value);
49
return;
50
}
51
open5gs_2.7.0.126.eb2b.202404042026.tar.xz/src/sgwc/sxa-handler.c -> open5gs_2.7.0.128.30648.202404052026.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_session_establishment_response_t *pfcp_rsp)
6
+ ogs_pfcp_message_t *pfcp_message)
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, sgwc_ue ? sgwc_ue->mme_s11_teid : 0,
40
+ s11_xact,
41
+ sgwc_ue ? sgwc_ue->mme_s11_teid : recv_message->h.teid,
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, sgwc_ue ? sgwc_ue->mme_s11_teid : 0,
50
+ s11_xact,
51
+ sgwc_ue ? sgwc_ue->mme_s11_teid : recv_message->h.teid,
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_session_modification_response_t *pfcp_rsp)
60
+ ogs_pfcp_message_t *pfcp_message)
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_rsp);
74
+ ogs_assert(pfcp_message);
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, sgwc_ue ? sgwc_ue->mme_s11_teid : 0,
97
+ s11_xact,
98
+ sgwc_ue ? sgwc_ue->mme_s11_teid : recv_message->h.teid,
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, sgwc_ue ? sgwc_ue->mme_s11_teid : 0,
107
+ s11_xact,
108
+ sgwc_ue ? sgwc_ue->mme_s11_teid : recv_message->h.teid,
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
- s11_xact = pfcp_xact->assoc_xact;
116
- ogs_assert(s11_xact);
117
+ if (flags & OGS_PFCP_MODIFY_ERROR_INDICATION) {
118
+ } else {
119
+ ogs_assert(recv_message);
120
121
- ogs_gtp_send_error_message(
122
- s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0,
123
- OGS_GTP2_RELEASE_ACCESS_BEARERS_RESPONSE_TYPE, cause_value);
124
+ s11_xact = pfcp_xact->assoc_xact;
125
+ ogs_assert(s11_xact);
126
+
127
+ ogs_gtp_send_error_message(
128
+ s11_xact,
129
+ sgwc_ue ? sgwc_ue->mme_s11_teid : recv_message->h.teid,
130
+ OGS_GTP2_RELEASE_ACCESS_BEARERS_RESPONSE_TYPE, cause_value);
131
+ }
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_session_deletion_response_t *pfcp_rsp)
172
+ ogs_pfcp_message_t *pfcp_message)
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 : 0;
196
+ teid = sgwc_ue ? sgwc_ue->mme_s11_teid : gtp_message->h.teid;
197
break;
198
case OGS_GTP2_DELETE_BEARER_RESPONSE_TYPE:
199
/*
200
201
open5gs_2.7.0.126.eb2b.202404042026.tar.xz/src/sgwc/sxa-handler.h -> open5gs_2.7.0.128.30648.202404052026.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_session_establishment_response_t *pfcp_rsp);
6
+ ogs_pfcp_message_t *pfcp_message);
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_session_modification_response_t *pfcp_rsp);
11
+ ogs_pfcp_message_t *pfcp_message);
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_session_deletion_response_t *pfcp_rsp);
16
+ ogs_pfcp_message_t *pfcp_message);
17
void sgwc_sxa_handle_session_report_request(
18
sgwc_sess_t *sess, ogs_pfcp_xact_t *pfcp_xact,
19
- ogs_pfcp_session_report_request_t *pfcp_req);
20
+ ogs_pfcp_message_t *pfcp_message);
21
22
#ifdef __cplusplus
23
}
24
open5gs_2.7.0.126.eb2b.202404042026.tar.xz/src/sgwu/pfcp-sm.c -> open5gs_2.7.0.128.30648.202404052026.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(
6
- sess, xact, &message->pfcp_session_establishment_request);
7
+ sgwu_sxa_handle_session_establishment_request(sess, xact, message);
8
break;
9
case OGS_PFCP_SESSION_MODIFICATION_REQUEST_TYPE:
10
- sgwu_sxa_handle_session_modification_request(
11
- sess, xact, &message->pfcp_session_modification_request);
12
+ sgwu_sxa_handle_session_modification_request(sess, xact, message);
13
break;
14
case OGS_PFCP_SESSION_DELETION_REQUEST_TYPE:
15
- sgwu_sxa_handle_session_deletion_request(
16
- sess, xact, &message->pfcp_session_deletion_request);
17
+ sgwu_sxa_handle_session_deletion_request(sess, xact, message);
18
break;
19
case OGS_PFCP_SESSION_REPORT_RESPONSE_TYPE:
20
- sgwu_sxa_handle_session_report_response(
21
- sess, xact, &message->pfcp_session_report_response);
22
+ sgwu_sxa_handle_session_report_response(sess, xact, message);
23
break;
24
default:
25
ogs_error("Not implemented PFCP message type%d",
26
open5gs_2.7.0.126.eb2b.202404042026.tar.xz/src/sgwu/sxa-handler.c -> open5gs_2.7.0.128.30648.202404052026.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,
6
- ogs_pfcp_session_establishment_request_t *req)
7
+ sgwu_sess_t *sess, ogs_pfcp_xact_t *xact, ogs_pfcp_message_t *message)
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(xact, 0,
28
+ ogs_pfcp_send_error_message(
29
+ xact, sess ? sess->sgwc_sxa_f_seid.seid : message->h.seid,
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(xact, sess ? sess->sgwu_sxa_seid : 0,
38
+ ogs_pfcp_send_error_message(
39
+ xact, sess ? sess->sgwc_sxa_f_seid.seid : message->h.seid,
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,
46
- ogs_pfcp_session_modification_request_t *req)
47
+ sgwu_sess_t *sess, ogs_pfcp_xact_t *xact, ogs_pfcp_message_t *message)
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(xact, 0,
68
+ ogs_pfcp_send_error_message(
69
+ xact, sess ? sess->sgwc_sxa_f_seid.seid : message->h.seid,
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(xact, sess ? sess->sgwu_sxa_seid : 0,
78
+ ogs_pfcp_send_error_message(
79
+ xact, sess ? sess->sgwc_sxa_f_seid.seid : message->h.seid,
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,
86
- ogs_pfcp_session_deletion_request_t *req)
87
+ sgwu_sess_t *sess, ogs_pfcp_xact_t *xact, ogs_pfcp_message_t *message)
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(xact, 0,
101
+ ogs_pfcp_send_error_message(
102
+ xact, sess ? sess->sgwc_sxa_f_seid.seid : message->h.seid,
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,
111
- ogs_pfcp_session_report_response_t *rsp)
112
+ sgwu_sess_t *sess, ogs_pfcp_xact_t *xact, ogs_pfcp_message_t *message)
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.126.eb2b.202404042026.tar.xz/src/sgwu/sxa-handler.h -> open5gs_2.7.0.128.30648.202404052026.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,
6
- ogs_pfcp_session_establishment_request_t *req);
7
+ sgwu_sess_t *sess, ogs_pfcp_xact_t *xact, ogs_pfcp_message_t *message);
8
void sgwu_sxa_handle_session_modification_request(
9
- sgwu_sess_t *sess, ogs_pfcp_xact_t *xact,
10
- ogs_pfcp_session_modification_request_t *req);
11
+ sgwu_sess_t *sess, ogs_pfcp_xact_t *xact, ogs_pfcp_message_t *message);
12
void sgwu_sxa_handle_session_deletion_request(
13
- sgwu_sess_t *sess, ogs_pfcp_xact_t *xact,
14
- ogs_pfcp_session_deletion_request_t *req);
15
+ sgwu_sess_t *sess, ogs_pfcp_xact_t *xact, ogs_pfcp_message_t *message);
16
17
void sgwu_sxa_handle_session_report_response(
18
- sgwu_sess_t *sess, ogs_pfcp_xact_t *xact,
19
- ogs_pfcp_session_report_response_t *rsp);
20
+ sgwu_sess_t *sess, ogs_pfcp_xact_t *xact, ogs_pfcp_message_t *message);
21
22
#ifdef __cplusplus
23
}
24
open5gs_2.7.0.126.eb2b.202404042026.tar.xz/src/smf/gsm-sm.c -> open5gs_2.7.0.128.30648.202404052026.tar.xz/src/smf/gsm-sm.c
Changed
106
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,
6
- &e->gtp2_message->create_session_request);
7
+ e->gtp_xact, gtp2_message);
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_diam_gy_message_t *gy_message = NULL;
13
ogs_diam_gx_message_t *gx_message = NULL;
14
uint32_t diam_err;
15
+ bool need_gy_terminate = false;
16
17
ogs_assert(s);
18
ogs_assert(e);
19
20
case OGS_DIAM_GY_CC_REQUEST_TYPE_INITIAL_REQUEST:
21
ogs_assert(e->gtp_xact);
22
diam_err = smf_gy_handle_cca_initial_request(sess,
23
- gy_message, e->gtp_xact);
24
+ gy_message, e->gtp_xact, &need_gy_terminate);
25
sess->sm_data.gy_ccr_init_in_flight = false;
26
sess->sm_data.gy_cca_init_err = diam_err;
27
goto test_can_proceed;
28
29
smf_epc_pfcp_send_session_establishment_request(
30
sess, e->gtp_xact, 0));
31
} else {
32
- /* FIXME: tear down Gx/Gy session
33
- * if its sm_data.*init_err == ER_DIAMETER_SUCCESS */
34
+ /* Tear down Gx/Gy session if its sm_data.*init_err == ER_DIAMETER_SUCCESS */
35
+ if (sess->sm_data.gx_cca_init_err == ER_DIAMETER_SUCCESS) {
36
+ sess->sm_data.gx_ccr_term_in_flight = true;
37
+ smf_gx_send_ccr(sess, e->gtp_xact, OGS_DIAM_GX_CC_REQUEST_TYPE_TERMINATION_REQUEST);
38
+ }
39
+ if (smf_use_gy_iface() == 1 &&
40
+ (sess->sm_data.gy_cca_init_err == ER_DIAMETER_SUCCESS || need_gy_terminate)) {
41
+ sess->sm_data.gy_ccr_term_in_flight = true;
42
+ smf_gy_send_ccr(sess, e->gtp_xact, OGS_DIAM_GY_CC_REQUEST_TYPE_TERMINATION_REQUEST);
43
+ }
44
uint8_t gtp_cause = gtp_cause_from_diameter(
45
e->gtp_xact->gtp_version, diam_err, NULL);
46
send_gtp_create_err_msg(sess, e->gtp_xact, gtp_cause);
47
48
ogs_assert(gtp_xact);
49
50
pfcp_cause = smf_epc_n4_handle_session_establishment_response(
51
- sess, pfcp_xact,
52
- &pfcp_message->pfcp_session_establishment_response);
53
+ sess, pfcp_xact, pfcp_message);
54
if (pfcp_cause != OGS_PFCP_CAUSE_REQUEST_ACCEPTED) {
55
/* FIXME: tear down Gy and Gx */
56
gtp_cause = gtp_cause_from_pfcp(
57
58
smf_bearer_binding(sess);
59
} else {
60
pfcp_cause = smf_5gc_n4_handle_session_establishment_response(
61
- sess, pfcp_xact,
62
- &pfcp_message->pfcp_session_establishment_response);
63
+ sess, pfcp_xact, pfcp_message);
64
if (pfcp_cause != OGS_PFCP_CAUSE_REQUEST_ACCEPTED) {
65
OGS_FSM_TRAN(s, smf_gsm_state_5gc_n1_n2_reject);
66
return;
67
68
switch(gtp2_message->h.type) {
69
case OGS_GTP2_DELETE_SESSION_REQUEST_TYPE:
70
gtp2_cause = smf_s5c_handle_delete_session_request(
71
- sess, e->gtp_xact,
72
- >p2_message->delete_session_request);
73
+ sess, e->gtp_xact, gtp2_message);
74
if (gtp2_cause != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
75
ogs_gtp2_send_error_message(e->gtp_xact, sess->sgw_s5c_teid,
76
OGS_GTP2_DELETE_SESSION_RESPONSE_TYPE, gtp2_cause);
77
78
break;
79
case OGS_GTP2_DELETE_BEARER_RESPONSE_TYPE:
80
release = smf_s5c_handle_delete_bearer_response(
81
- sess, e->gtp_xact, &e->gtp2_message->delete_bearer_response);
82
+ sess, e->gtp_xact, gtp2_message);
83
if (release) {
84
e->gtp_xact = NULL;
85
OGS_FSM_TRAN(s, smf_gsm_state_wait_pfcp_deletion);
86
87
gtp_xact = pfcp_xact->assoc_xact;
88
89
pfcp_cause = smf_epc_n4_handle_session_deletion_response(
90
- sess, pfcp_xact,
91
- &pfcp_message->pfcp_session_deletion_response);
92
+ sess, pfcp_xact, pfcp_message);
93
if (pfcp_cause != OGS_PFCP_CAUSE_REQUEST_ACCEPTED) {
94
/* FIXME: tear down Gy and Gx */
95
ogs_assert(gtp_xact);
96
97
ogs_pfcp_xact_commit(pfcp_xact);
98
99
status = smf_5gc_n4_handle_session_deletion_response(
100
- sess, stream, trigger,
101
- &pfcp_message->pfcp_session_deletion_response);
102
+ sess, stream, trigger, pfcp_message);
103
if (status != OGS_SBI_HTTP_STATUS_OK) {
104
ogs_error(
105
"%d smf_5gc_n4_handle_session_deletion_response() "
106
open5gs_2.7.0.126.eb2b.202404042026.tar.xz/src/smf/gy-handler.c -> open5gs_2.7.0.128.30648.202404052026.tar.xz/src/smf/gy-handler.c
Changed
57
1
2
}
3
}
4
5
-/* Returns ER_DIAMETER_SUCCESS on success, Diameter error code on failue. */
6
+/* Returns ER_DIAMETER_SUCCESS on success, Diameter error code on failue.
7
+ * Upon failure, CCR-Terminate is needed based on "need_termination" value (this
8
+ * may happen eg. if messaged RC is successful but MSCC RC is rejected). */
9
uint32_t smf_gy_handle_cca_initial_request(
10
smf_sess_t *sess, ogs_diam_gy_message_t *gy_message,
11
- ogs_gtp_xact_t *gtp_xact)
12
+ ogs_gtp_xact_t *gtp_xact,
13
+ bool *need_termination)
14
{
15
smf_bearer_t *bearer;
16
17
ogs_assert(sess);
18
ogs_assert(gy_message);
19
ogs_assert(gtp_xact);
20
+ ogs_assert(need_termination);
21
22
ogs_debug("Gy CCA Initial");
23
ogs_debug(" SGW_S5C_TEID0x%x PGW_S5C_TEID0x%x",
24
sess->sgw_s5c_teid, sess->smf_n4_teid);
25
26
- if (gy_message->result_code != ER_DIAMETER_SUCCESS)
27
+ *need_termination = false;
28
+ if (gy_message->result_code != ER_DIAMETER_SUCCESS) {
29
+ ogs_warn("Gy CCA Initial Diameter failure: res=%u",
30
+ gy_message->result_code);
31
return gy_message->err ? *gy_message->err :
32
ER_DIAMETER_AUTHENTICATION_REJECTED;
33
+ }
34
+ if (gy_message->cca.result_code != ER_DIAMETER_SUCCESS) {
35
+ ogs_warn("Gy CCA Initial Diameter Multiple-Services-Credit-Control Result-Code=%u",
36
+ gy_message->cca.result_code);
37
+ /* Message RC was successful but MSCC was rejected. The session needs to
38
+ * be tear down through CCR-T: */
39
+ *need_termination = true;
40
+ return gy_message->cca.err ? *gy_message->cca.err :
41
+ ER_DIAMETER_AUTHENTICATION_REJECTED;
42
+ }
43
44
bearer = smf_default_bearer_in_sess(sess);
45
ogs_assert(bearer);
46
47
sess->sgw_s5c_teid, sess->smf_n4_teid);
48
49
if (gy_message->result_code != ER_DIAMETER_SUCCESS) {
50
- ogs_warn("Gy CCA Update Diameter failure: res=%u err=%u",
51
- gy_message->result_code, *gy_message->err);
52
+ ogs_warn("Gy CCA Update Diameter failure: Result-Code=%u",
53
+ gy_message->result_code);
54
return gy_message->err ? *gy_message->err :
55
ER_DIAMETER_AUTHENTICATION_REJECTED;
56
}
57
open5gs_2.7.0.126.eb2b.202404042026.tar.xz/src/smf/gy-handler.h -> open5gs_2.7.0.128.30648.202404052026.tar.xz/src/smf/gy-handler.h
Changed
11
1
2
3
uint32_t smf_gy_handle_cca_initial_request(
4
smf_sess_t *sess, ogs_diam_gy_message_t *gy_message,
5
- ogs_gtp_xact_t *gtp_xact);
6
+ ogs_gtp_xact_t *gtp_xact,
7
+ bool *need_termination);
8
uint32_t smf_gy_handle_cca_update_request(
9
smf_sess_t *sess, ogs_diam_gy_message_t *gy_message,
10
ogs_pfcp_xact_t *pfcp_xact);
11
open5gs_2.7.0.126.eb2b.202404042026.tar.xz/src/smf/n4-handler.c -> open5gs_2.7.0.128.30648.202404052026.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_session_establishment_response_t *rsp)
6
+ ogs_pfcp_message_t *pfcp_message)
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_session_modification_response_t *rsp)
28
+ ogs_pfcp_message_t *pfcp_message)
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_session_deletion_response_t *rsp)
52
+ ogs_pfcp_message_t *pfcp_message)
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_session_establishment_response_t *rsp)
70
+ ogs_pfcp_message_t *pfcp_message)
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_session_modification_response_t *rsp)
92
+ ogs_pfcp_message_t *pfcp_message)
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_session_deletion_response_t *rsp)
115
+ ogs_pfcp_message_t *pfcp_message)
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_session_report_request_t *pfcp_req)
134
+ ogs_pfcp_message_t *pfcp_message)
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, 0,
157
+ ogs_pfcp_send_error_message(pfcp_xact,
158
+ sess ? sess->upf_n4_seid : pfcp_message->h.seid,
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, 0,
167
+ ogs_pfcp_send_error_message(pfcp_xact,
168
+ sess ? sess->upf_n4_seid : pfcp_message->h.seid,
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, 0,
177
+ ogs_pfcp_send_error_message(pfcp_xact,
178
+ sess ? sess->upf_n4_seid : pfcp_message->h.seid,
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, 0,
187
+ ogs_pfcp_send_error_message(pfcp_xact,
188
+ sess ? sess->upf_n4_seid : pfcp_message->h.seid,
189
OGS_PFCP_SESSION_REPORT_RESPONSE_TYPE,
190
OGS_PFCP_CAUSE_SESSION_CONTEXT_NOT_FOUND, 0);
191
return;
192
open5gs_2.7.0.126.eb2b.202404042026.tar.xz/src/smf/n4-handler.h -> open5gs_2.7.0.128.30648.202404052026.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_session_establishment_response_t *rsp);
6
+ ogs_pfcp_message_t *pfcp_message);
7
void smf_5gc_n4_handle_session_modification_response(
8
smf_sess_t *sess, ogs_pfcp_xact_t *xact,
9
- ogs_pfcp_session_modification_response_t *rsp);
10
+ ogs_pfcp_message_t *pfcp_message);
11
int smf_5gc_n4_handle_session_deletion_response(
12
smf_sess_t *sess, ogs_sbi_stream_t *stream, int trigger,
13
- ogs_pfcp_session_deletion_response_t *rsp);
14
+ ogs_pfcp_message_t *pfcp_message);
15
16
uint8_t smf_epc_n4_handle_session_establishment_response(
17
smf_sess_t *sess, ogs_pfcp_xact_t *xact,
18
- ogs_pfcp_session_establishment_response_t *rsp);
19
+ ogs_pfcp_message_t *pfcp_message);
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_session_modification_response_t *rsp);
24
+ ogs_pfcp_message_t *pfcp_message);
25
uint8_t smf_epc_n4_handle_session_deletion_response(
26
smf_sess_t *sess, ogs_pfcp_xact_t *xact,
27
- ogs_pfcp_session_deletion_response_t *rsp);
28
+ ogs_pfcp_message_t *pfcp_message);
29
30
void smf_n4_handle_session_report_request(
31
smf_sess_t *sess, ogs_pfcp_xact_t *pfcp_xact,
32
- ogs_pfcp_session_report_request_t *pfcp_req);
33
+ ogs_pfcp_message_t *pfcp_message);
34
35
uint8_t gtp_cause_from_pfcp(uint8_t pfcp_cause, uint8_t gtp_version);
36
37
open5gs_2.7.0.126.eb2b.202404042026.tar.xz/src/smf/pfcp-sm.c -> open5gs_2.7.0.128.30648.202404052026.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,
6
- &message->pfcp_session_modification_response);
7
+ sess, xact, e->gtp2_message, message);
8
else
9
smf_5gc_n4_handle_session_modification_response(
10
- sess, xact, &message->pfcp_session_modification_response);
11
+ sess, xact, message);
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->pfcp_session_report_request);
20
+ sess, xact, message);
21
break;
22
23
default:
24
open5gs_2.7.0.126.eb2b.202404042026.tar.xz/src/smf/s5c-handler.c -> open5gs_2.7.0.128.30648.202404052026.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_create_session_request_t *req)
6
+ ogs_gtp2_message_t *gtp2_message)
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 = be32toh(sgw_s5c_teid->teid);
49
- rv = ogs_gtp2_f_teid_to_ip(sgw_s5c_teid, &sess->sgw_s5c_ip);
50
- ogs_assert(rv == OGS_OK);
51
-
52
- ogs_debug(" SGW_S5C_TEID0x%x SMF_N4_TEID0x%x",
53
- sess->sgw_s5c_teid, sess->smf_n4_teid);
54
-
55
/* Remove all previous bearer */
56
smf_bearer_remove_all(sess);
57
58
59
60
uint8_t smf_s5c_handle_delete_session_request(
61
smf_sess_t *sess, ogs_gtp_xact_t *xact,
62
- ogs_gtp2_delete_session_request_t *req)
63
+ ogs_gtp2_message_t *gtp2_message)
64
{
65
+ ogs_gtp2_delete_session_request_t *req = NULL;
66
+
67
ogs_debug("Delete Session Request");
68
69
ogs_assert(xact);
70
+ req = >p2_message->delete_session_request;
71
ogs_assert(req);
72
73
if (!ogs_diam_app_connected(OGS_DIAM_GX_APPLICATION_ID)) {
74
75
76
void smf_s5c_handle_modify_bearer_request(
77
smf_sess_t *sess, ogs_gtp_xact_t *gtp_xact,
78
- ogs_pkbuf_t *gtpbuf, ogs_gtp2_modify_bearer_request_t *req)
79
+ ogs_pkbuf_t *gtpbuf, ogs_gtp2_message_t *gtp2_message)
80
{
81
int rv, i;
82
uint8_t cause_value = 0;
83
84
smf_ue_t *smf_ue = NULL;
85
smf_bearer_t *bearer = NULL;
86
87
+ ogs_gtp2_modify_bearer_request_t *req = NULL;
88
+
89
ogs_debug("Modify Bearer Request");
90
91
ogs_assert(gtp_xact);
92
+ ogs_assert(gtp2_message);
93
+ req = >p2_message->modify_bearer_request;
94
ogs_assert(req);
95
96
/************************
97
98
}
99
100
if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
101
- ogs_gtp2_send_error_message(gtp_xact, sess ? sess->sgw_s5c_teid : 0,
102
+ ogs_gtp2_send_error_message(gtp_xact,
103
+ sess ? sess->sgw_s5c_teid : gtp2_message->h.teid,
104
OGS_GTP2_MODIFY_BEARER_RESPONSE_TYPE, cause_value);
105
return;
106
}
107
108
109
void smf_s5c_handle_create_bearer_response(
110
smf_sess_t *sess, ogs_gtp_xact_t *xact,
111
- ogs_gtp2_create_bearer_response_t *rsp)
112
+ ogs_gtp2_message_t *gtp2_message)
113
{
114
int rv;
115
uint8_t cause_value;
116
117
smf_bearer_t *bearer = NULL;
118
ogs_pfcp_far_t *dl_far = NULL;
119
120
+ ogs_gtp2_create_bearer_response_t *rsp = NULL;
121
+
122
ogs_assert(sess);
123
+ rsp = >p2_message->create_bearer_response;
124
ogs_assert(rsp);
125
126
ogs_debug("Create Bearer Response");
127
128
129
void smf_s5c_handle_update_bearer_response(
130
smf_sess_t *sess, ogs_gtp_xact_t *xact,
131
- ogs_gtp2_update_bearer_response_t *rsp)
132
+ ogs_gtp2_message_t *gtp2_message)
133
{
134
int rv;
135
uint8_t cause_value;
136
137
uint64_t pfcp_flags = 0;
138
smf_bearer_t *bearer = NULL;
139
140
+ ogs_gtp2_update_bearer_response_t *rsp = NULL;
141
+
142
ogs_assert(sess);
143
+ rsp = >p2_message->update_bearer_response;
144
ogs_assert(rsp);
145
146
ogs_debug("Update Bearer Response");
147
148
/* return true if entire session must be released */
149
bool smf_s5c_handle_delete_bearer_response(
150
smf_sess_t *sess, ogs_gtp_xact_t *xact,
151
- ogs_gtp2_delete_bearer_response_t *rsp)
152
+ ogs_gtp2_message_t *gtp2_message)
153
{
154
int rv;
155
uint8_t cause_value;
156
smf_bearer_t *bearer = NULL;
157
158
+ ogs_gtp2_delete_bearer_response_t *rsp = NULL;
159
+
160
ogs_assert(sess);
161
+ rsp = >p2_message->delete_bearer_response;
162
ogs_assert(rsp);
163
164
ogs_debug("Delete Bearer Response");
165
166
167
void smf_s5c_handle_bearer_resource_command(
168
smf_sess_t *sess, ogs_gtp_xact_t *xact,
169
- ogs_gtp2_bearer_resource_command_t *cmd)
170
+ ogs_gtp2_message_t *gtp2_message)
171
{
172
int rv;
173
uint8_t cause_value = 0;
174
175
int qos_update = 0;
176
int tft_delete = 0;
177
178
+ ogs_gtp2_bearer_resource_command_t *cmd = NULL;
179
+
180
ogs_assert(xact);
181
+ ogs_assert(gtp2_message);
182
+ cmd = >p2_message->bearer_resource_command;
183
ogs_assert(cmd);
184
185
ogs_debug("Bearer Resource Command");
186
187
}
188
189
if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
190
- ogs_gtp2_send_error_message(xact, sess ? sess->sgw_s5c_teid : 0,
191
+ ogs_gtp2_send_error_message(xact,
192
+ sess ? sess->sgw_s5c_teid : gtp2_message->h.teid,
193
OGS_GTP2_BEARER_RESOURCE_FAILURE_INDICATION_TYPE, cause_value);
194
return;
195
}
196
197
}
198
199
if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
200
- ogs_gtp2_send_error_message(xact, sess ? sess->sgw_s5c_teid : 0,
201
open5gs_2.7.0.126.eb2b.202404042026.tar.xz/src/smf/s5c-handler.h -> open5gs_2.7.0.128.30648.202404052026.tar.xz/src/smf/s5c-handler.h
Changed
34
1
2
3
uint8_t smf_s5c_handle_create_session_request(
4
smf_sess_t *sess, ogs_gtp_xact_t *xact,
5
- ogs_gtp2_create_session_request_t *req);
6
+ ogs_gtp2_message_t *gtp2_message);
7
uint8_t smf_s5c_handle_delete_session_request(
8
smf_sess_t *sess, ogs_gtp_xact_t *xact,
9
- ogs_gtp2_delete_session_request_t *req);
10
+ ogs_gtp2_message_t *gtp2_message);
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_modify_bearer_request_t *req);
14
+ ogs_pkbuf_t *gtpbuf, ogs_gtp2_message_t *gtp2_message);
15
void smf_s5c_handle_create_bearer_response(
16
smf_sess_t *sess, ogs_gtp_xact_t *xact,
17
- ogs_gtp2_create_bearer_response_t *rsp);
18
+ ogs_gtp2_message_t *gtp2_message);
19
void smf_s5c_handle_update_bearer_response(
20
smf_sess_t *sess, ogs_gtp_xact_t *xact,
21
- ogs_gtp2_update_bearer_response_t *rsp);
22
+ ogs_gtp2_message_t *gtp2_message);
23
bool smf_s5c_handle_delete_bearer_response(
24
smf_sess_t *sess, ogs_gtp_xact_t *xact,
25
- ogs_gtp2_delete_bearer_response_t *rsp);
26
+ ogs_gtp2_message_t *gtp2_message);
27
void smf_s5c_handle_bearer_resource_command(
28
smf_sess_t *sess, ogs_gtp_xact_t *xact,
29
- ogs_gtp2_bearer_resource_command_t *cmd);
30
+ ogs_gtp2_message_t *gtp2_message);
31
32
#ifdef __cplusplus
33
}
34
open5gs_2.7.0.126.eb2b.202404042026.tar.xz/src/smf/smf-sm.c -> open5gs_2.7.0.128.30648.202404052026.tar.xz/src/smf/smf-sm.c
Changed
49
1
2
}
3
if (!sess) {
4
ogs_error("No Session");
5
- ogs_gtp2_send_error_message(gtp_xact, 0,
6
+ ogs_gtp2_send_error_message(gtp_xact, gtp2_message.h.teid,
7
OGS_GTP2_CREATE_SESSION_RESPONSE_TYPE,
8
OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND);
9
break;
10
11
smf_metrics_inst_gtp_node_inc(smf_gnode->metrics, SMF_METR_GTP_NODE_CTR_S5C_RX_DELETESESSIONREQ);
12
if (!sess) {
13
ogs_error("No Session");
14
- ogs_gtp2_send_error_message(gtp_xact, 0,
15
+ ogs_gtp2_send_error_message(gtp_xact, gtp2_message.h.teid,
16
OGS_GTP2_DELETE_SESSION_RESPONSE_TYPE,
17
OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND);
18
break;
19
20
case OGS_GTP2_MODIFY_BEARER_REQUEST_TYPE:
21
if (!gtp2_message.h.teid_presence) ogs_error("No TEID");
22
smf_s5c_handle_modify_bearer_request(
23
- sess, gtp_xact, recvbuf, >p2_message.modify_bearer_request);
24
+ sess, gtp_xact, recvbuf, >p2_message);
25
break;
26
case OGS_GTP2_CREATE_BEARER_RESPONSE_TYPE:
27
if (!gtp2_message.h.teid_presence) ogs_error("No TEID");
28
smf_s5c_handle_create_bearer_response(
29
- sess, gtp_xact, >p2_message.create_bearer_response);
30
+ sess, gtp_xact, >p2_message);
31
break;
32
case OGS_GTP2_UPDATE_BEARER_RESPONSE_TYPE:
33
if (!gtp2_message.h.teid_presence) ogs_error("No TEID");
34
smf_s5c_handle_update_bearer_response(
35
- sess, gtp_xact, >p2_message.update_bearer_response);
36
+ sess, gtp_xact, >p2_message);
37
break;
38
case OGS_GTP2_DELETE_BEARER_RESPONSE_TYPE:
39
if (!gtp2_message.h.teid_presence) ogs_error("No TEID");
40
41
case OGS_GTP2_BEARER_RESOURCE_COMMAND_TYPE:
42
if (!gtp2_message.h.teid_presence) ogs_error("No TEID");
43
smf_s5c_handle_bearer_resource_command(
44
- sess, gtp_xact, >p2_message.bearer_resource_command);
45
+ sess, gtp_xact, >p2_message);
46
break;
47
default:
48
ogs_warn("Not implemented(type:%d)", gtp2_message.h.type);
49
open5gs_2.7.0.126.eb2b.202404042026.tar.xz/src/upf/n4-handler.c -> open5gs_2.7.0.128.30648.202404052026.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,
6
- ogs_pfcp_session_establishment_request_t *req)
7
+ upf_sess_t *sess, ogs_pfcp_xact_t *xact, ogs_pfcp_message_t *message)
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(xact, 0,
30
+ ogs_pfcp_send_error_message(
31
+ xact, sess ? sess->smf_n4_f_seid.seid : message->h.seid,
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(xact, sess ? sess->smf_n4_f_seid.seid : 0,
40
+ ogs_pfcp_send_error_message(
41
+ xact, sess ? sess->smf_n4_f_seid.seid : message->h.seid,
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,
48
- ogs_pfcp_session_modification_request_t *req)
49
+ upf_sess_t *sess, ogs_pfcp_xact_t *xact, ogs_pfcp_message_t *message)
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(xact, 0,
70
+ ogs_pfcp_send_error_message(
71
+ xact, sess ? sess->smf_n4_f_seid.seid : message->h.seid,
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(xact, sess ? sess->smf_n4_f_seid.seid : 0,
80
+ ogs_pfcp_send_error_message(
81
+ xact, sess ? sess->smf_n4_f_seid.seid : message->h.seid,
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,
88
- ogs_pfcp_session_deletion_request_t *req)
89
+ upf_sess_t *sess, ogs_pfcp_xact_t *xact, ogs_pfcp_message_t *message)
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, 0,
105
+ ogs_pfcp_send_error_message(xact,
106
+ sess ? sess->smf_n4_f_seid.seid : message->h.seid,
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,
115
- ogs_pfcp_session_report_response_t *rsp)
116
+ upf_sess_t *sess, ogs_pfcp_xact_t *xact, ogs_pfcp_message_t *message)
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.126.eb2b.202404042026.tar.xz/src/upf/n4-handler.h -> open5gs_2.7.0.128.30648.202404052026.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,
6
- ogs_pfcp_session_establishment_request_t *req);
7
+ upf_sess_t *sess, ogs_pfcp_xact_t *xact, ogs_pfcp_message_t *message);
8
void upf_n4_handle_session_modification_request(
9
- upf_sess_t *sess, ogs_pfcp_xact_t *xact,
10
- ogs_pfcp_session_modification_request_t *req);
11
+ upf_sess_t *sess, ogs_pfcp_xact_t *xact, ogs_pfcp_message_t *message);
12
void upf_n4_handle_session_deletion_request(
13
- upf_sess_t *sess, ogs_pfcp_xact_t *xact,
14
- ogs_pfcp_session_deletion_request_t *req);
15
+ upf_sess_t *sess, ogs_pfcp_xact_t *xact, ogs_pfcp_message_t *message);
16
17
void upf_n4_handle_session_report_response(
18
- upf_sess_t *sess, ogs_pfcp_xact_t *xact,
19
- ogs_pfcp_session_report_response_t *rsp);
20
+ upf_sess_t *sess, ogs_pfcp_xact_t *xact, ogs_pfcp_message_t *message);
21
22
#ifdef __cplusplus
23
}
24
open5gs_2.7.0.126.eb2b.202404042026.tar.xz/src/upf/pfcp-sm.c -> open5gs_2.7.0.128.30648.202404052026.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(
6
- sess, xact, &message->pfcp_session_establishment_request);
7
+ upf_n4_handle_session_establishment_request(sess, xact, message);
8
break;
9
case OGS_PFCP_SESSION_MODIFICATION_REQUEST_TYPE:
10
- upf_n4_handle_session_modification_request(
11
- sess, xact, &message->pfcp_session_modification_request);
12
+ upf_n4_handle_session_modification_request(sess, xact, message);
13
break;
14
case OGS_PFCP_SESSION_DELETION_REQUEST_TYPE:
15
- upf_n4_handle_session_deletion_request(
16
- sess, xact, &message->pfcp_session_deletion_request);
17
+ upf_n4_handle_session_deletion_request(sess, xact, message);
18
break;
19
case OGS_PFCP_SESSION_REPORT_RESPONSE_TYPE:
20
- upf_n4_handle_session_report_response(
21
- sess, xact, &message->pfcp_session_report_response);
22
+ upf_n4_handle_session_report_response(sess, xact, message);
23
break;
24
default:
25
ogs_error("Not implemented PFCP message type%d",
26