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 6
open5gs_2.4.8.202206300002.dsc -> open5gs_2.4.8.202207010002.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-ausf, open5gs-udm, open5gs-pcf, open5gs-nssf, open5gs-bsf, open5gs-udr, open5gs, open5gs-dbg
4
Architecture: any
5
-Version: 2.4.8.202206300002
6
+Version: 2.4.8.202207010002
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
- 70a011ee684d644a03b3eb5f70f9431c117c5744 11444120 open5gs_2.4.8.202206300002.tar.xz
15
+ fc5dd83e6e1531f4819b9b29515e9a95b6679fd5 11444060 open5gs_2.4.8.202207010002.tar.xz
16
Checksums-Sha256:
17
- ab387b7f01f43118ca0e224189627812f200a7050b327b706f553fde05edb37c 11444120 open5gs_2.4.8.202206300002.tar.xz
18
+ 52963ee9bf7ce27f5fe1de65b86b152cdcc0ff54d6811302976f0cffa73e2d01 11444060 open5gs_2.4.8.202207010002.tar.xz
19
Files:
20
- 7447ec56414ce907330f78528419f548 11444120 open5gs_2.4.8.202206300002.tar.xz
21
+ 00282b87d56da28014e0d41348c65f67 11444060 open5gs_2.4.8.202207010002.tar.xz
22
open5gs_2.4.8.202206300002.tar.xz/debian/changelog -> open5gs_2.4.8.202207010002.tar.xz/debian/changelog
Changed
12
1
2
-open5gs (2.4.8.202206300002) UNRELEASED; urgency=medium
3
+open5gs (2.4.8.202207010002) UNRELEASED; urgency=medium
4
5
* Snapshot build
6
7
- -- Sukchan Lee <acetcom@gmail.com> Thu, 30 Jun 2022 00:09:09 +0000
8
+ -- Sukchan Lee <acetcom@gmail.com> Fri, 01 Jul 2022 00:09:11 +0000
9
10
open5gs (2.4.8) unstable; urgency=medium
11
12
open5gs_2.4.8.202206300002.tar.xz/debian/control -> open5gs_2.4.8.202207010002.tar.xz/debian/control
Changed
163
1
2
Package: open5gs-common
3
Architecture: any
4
Multi-Arch: same
5
-Depends: osmocom-nightly (= 1.0.0.202206300002), ${shlibs:Depends},
6
+Depends: osmocom-nightly (= 1.0.0.202207010002), ${shlibs:Depends},
7
${misc:Depends}
8
Description: 5G Core and EPC (Shared Files)
9
Open5GS is a C-language implementation of 5G Core and EPC
10
11
Package: open5gs-mme
12
Architecture: any
13
Multi-Arch: same
14
-Depends: osmocom-nightly (= 1.0.0.202206300002), ${shlibs:Depends},
15
+Depends: osmocom-nightly (= 1.0.0.202207010002), ${shlibs:Depends},
16
${misc:Depends},
17
open5gs-common (= ${binary:Version})
18
Description: MME (Mobility Management Entity)
19
20
Package: open5gs-sgwc
21
Architecture: any
22
Multi-Arch: same
23
-Depends: osmocom-nightly (= 1.0.0.202206300002), ${shlibs:Depends},
24
+Depends: osmocom-nightly (= 1.0.0.202207010002), ${shlibs:Depends},
25
${misc:Depends},
26
open5gs-common (= ${binary:Version})
27
Description: SGW-C (Serving Gateway - Control Plane)
28
29
Package: open5gs-smf
30
Architecture: any
31
Multi-Arch: same
32
-Depends: osmocom-nightly (= 1.0.0.202206300002), ${shlibs:Depends},
33
+Depends: osmocom-nightly (= 1.0.0.202207010002), ${shlibs:Depends},
34
${misc:Depends},
35
open5gs-common (= ${binary:Version})
36
Description: SMF (Session Management Function)
37
38
Package: open5gs-amf
39
Architecture: any
40
Multi-Arch: same
41
-Depends: osmocom-nightly (= 1.0.0.202206300002), ${shlibs:Depends},
42
+Depends: osmocom-nightly (= 1.0.0.202207010002), ${shlibs:Depends},
43
${misc:Depends},
44
open5gs-common (= ${binary:Version})
45
Description: AMF (Access and Mobility Management Function)
46
47
Package: open5gs-sgwu
48
Architecture: any
49
Multi-Arch: same
50
-Depends: osmocom-nightly (= 1.0.0.202206300002), ${shlibs:Depends},
51
+Depends: osmocom-nightly (= 1.0.0.202207010002), ${shlibs:Depends},
52
${misc:Depends},
53
open5gs-common (= ${binary:Version})
54
Description: SGW-U (Serving Gateway - User Plane)
55
56
Package: open5gs-upf
57
Architecture: any
58
Multi-Arch: same
59
-Depends: osmocom-nightly (= 1.0.0.202206300002), ${shlibs:Depends},
60
+Depends: osmocom-nightly (= 1.0.0.202207010002), ${shlibs:Depends},
61
${misc:Depends},
62
udev,
63
open5gs-common (= ${binary:Version})
64
65
Package: open5gs-hss
66
Architecture: any
67
Multi-Arch: same
68
-Depends: osmocom-nightly (= 1.0.0.202206300002), ${shlibs:Depends},
69
+Depends: osmocom-nightly (= 1.0.0.202207010002), ${shlibs:Depends},
70
${misc:Depends},
71
mongodb-org | mongodb,
72
open5gs-common (= ${binary:Version})
73
74
Package: open5gs-pcrf
75
Architecture: any
76
Multi-Arch: same
77
-Depends: osmocom-nightly (= 1.0.0.202206300002), ${shlibs:Depends},
78
+Depends: osmocom-nightly (= 1.0.0.202207010002), ${shlibs:Depends},
79
${misc:Depends},
80
mongodb-org | mongodb,
81
open5gs-common (= ${binary:Version})
82
83
Package: open5gs-nrf
84
Architecture: any
85
Multi-Arch: same
86
-Depends: osmocom-nightly (= 1.0.0.202206300002), ${shlibs:Depends},
87
+Depends: osmocom-nightly (= 1.0.0.202207010002), ${shlibs:Depends},
88
${misc:Depends},
89
open5gs-common (= ${binary:Version})
90
Description: NRF (Network Repository Function)
91
92
Package: open5gs-ausf
93
Architecture: any
94
Multi-Arch: same
95
-Depends: osmocom-nightly (= 1.0.0.202206300002), ${shlibs:Depends},
96
+Depends: osmocom-nightly (= 1.0.0.202207010002), ${shlibs:Depends},
97
${misc:Depends},
98
open5gs-common (= ${binary:Version})
99
Description: AUSF (Authentication Server Function)
100
101
Package: open5gs-udm
102
Architecture: any
103
Multi-Arch: same
104
-Depends: osmocom-nightly (= 1.0.0.202206300002), ${shlibs:Depends},
105
+Depends: osmocom-nightly (= 1.0.0.202207010002), ${shlibs:Depends},
106
${misc:Depends},
107
open5gs-common (= ${binary:Version})
108
Description: UDM (Unified Data Management)
109
110
Package: open5gs-pcf
111
Architecture: any
112
Multi-Arch: same
113
-Depends: osmocom-nightly (= 1.0.0.202206300002), ${shlibs:Depends},
114
+Depends: osmocom-nightly (= 1.0.0.202207010002), ${shlibs:Depends},
115
${misc:Depends},
116
open5gs-common (= ${binary:Version})
117
Description: PCF (Policy Control Function)
118
119
Package: open5gs-nssf
120
Architecture: any
121
Multi-Arch: same
122
-Depends: osmocom-nightly (= 1.0.0.202206300002), ${shlibs:Depends},
123
+Depends: osmocom-nightly (= 1.0.0.202207010002), ${shlibs:Depends},
124
${misc:Depends},
125
open5gs-common (= ${binary:Version})
126
Description: NSSF (Network Slice Selection Function)
127
128
Package: open5gs-bsf
129
Architecture: any
130
Multi-Arch: same
131
-Depends: osmocom-nightly (= 1.0.0.202206300002), ${shlibs:Depends},
132
+Depends: osmocom-nightly (= 1.0.0.202207010002), ${shlibs:Depends},
133
${misc:Depends},
134
open5gs-common (= ${binary:Version})
135
Description: BSF (Binding Support Function)
136
137
Package: open5gs-udr
138
Architecture: any
139
Multi-Arch: same
140
-Depends: osmocom-nightly (= 1.0.0.202206300002), ${shlibs:Depends},
141
+Depends: osmocom-nightly (= 1.0.0.202207010002), ${shlibs:Depends},
142
${misc:Depends},
143
open5gs-common (= ${binary:Version})
144
Description: UDR (Unified Data Repository)
145
146
Package: open5gs
147
Architecture: any
148
Multi-Arch: same
149
-Depends: osmocom-nightly (= 1.0.0.202206300002), ${misc:Depends},
150
+Depends: osmocom-nightly (= 1.0.0.202207010002), ${misc:Depends},
151
open5gs-common (= ${binary:Version}),
152
open5gs-mme (= ${binary:Version}),
153
open5gs-sgwc (= ${binary:Version}),
154
155
Package: open5gs-dbg
156
Architecture: any
157
Multi-Arch: same
158
-Depends: osmocom-nightly (= 1.0.0.202206300002), ${misc:Depends},
159
+Depends: osmocom-nightly (= 1.0.0.202207010002), ${misc:Depends},
160
open5gs (= ${binary:Version})
161
Description: Debug symbols for Open5GS
162
Open5GS is a C-language implementation of 5G Core and EPC
163
open5gs_2.4.8.202206300002.tar.xz/src/amf/context.c -> open5gs_2.4.8.202207010002.tar.xz/src/amf/context.c
Changed
11
1
2
3
ogs_assert(amf_ue);
4
5
+ ogs_assert(amf_ue->num_of_slice <= OGS_MAX_NUM_OF_SLICE);
6
for (i = 0; i < amf_ue->num_of_slice; i++) {
7
+ ogs_assert(amf_ue->slicei.num_of_session <= OGS_MAX_NUM_OF_SESS);
8
for (j = 0; j < amf_ue->slicei.num_of_session; j++) {
9
ogs_assert(amf_ue->slicei.sessionj.name);
10
ogs_free(amf_ue->slicei.sessionj.name);
11
open5gs_2.4.8.202206300002.tar.xz/src/amf/gmm-handler.c -> open5gs_2.4.8.202207010002.tar.xz/src/amf/gmm-handler.c
Changed
40
1
2
3
4
for (i = 0; i < amf_ue->num_of_slice; i++) {
5
+ if (i >= OGS_MAX_NUM_OF_SLICE) {
6
+ ogs_warn("Ignore max slice count overflow %d>=%d",
7
+ amf_ue->num_of_slice, OGS_MAX_NUM_OF_SLICE);
8
+ break;
9
+ }
10
if (ul_nas_transport->presencemask &
11
OGS_NAS_5GS_UL_NAS_TRANSPORT_S_NSSAI_PRESENT) {
12
ogs_nas_s_nssai_ie_t ie;
13
14
}
15
}
16
for (j = 0; j < amf_ue->allowed_nssai.num_of_s_nssai; j++) {
17
+ if (j >= OGS_MAX_NUM_OF_SLICE) {
18
+ ogs_warn("Ignore max slice count overflow %d>=%d",
19
+ amf_ue->allowed_nssai.num_of_s_nssai,
20
+ OGS_MAX_NUM_OF_SLICE);
21
+ break;
22
+ }
23
if (amf_ue->slicei.s_nssai.sst ==
24
amf_ue->allowed_nssai.s_nssaij.sst &&
25
amf_ue->slicei.s_nssai.sd.v ==
26
27
28
for (k = 0;
29
k < amf_ue->slicei.num_of_session; k++) {
30
+ if (k >= OGS_MAX_NUM_OF_SESS) {
31
+ ogs_warn("Ignore max session "
32
+ "count overflow %d>=%d",
33
+ amf_ue->slicei.num_of_session,
34
+ OGS_MAX_NUM_OF_SESS);
35
+ break;
36
+ }
37
if (!strcmp(dnn->value,
38
amf_ue->slicei.sessionk.name)) {
39
40
open5gs_2.4.8.202206300002.tar.xz/src/hss/hss-s6a-path.c -> open5gs_2.4.8.202207010002.tar.xz/src/hss/hss-s6a-path.c
Changed
18
1
2
struct avp *pdn_gw_allocation_type;
3
struct avp *vplmn_dynamic_address_allowed;
4
5
- ogs_session_t *session = &slice_data->sessioni;
6
+ ogs_session_t *session = NULL;
7
+
8
+ if (i >= OGS_MAX_NUM_OF_SESS) {
9
+ ogs_warn("Ignore max session count overflow %d>=%d",
10
+ slice_data->num_of_session, OGS_MAX_NUM_OF_SESS);
11
+ break;
12
+ }
13
+
14
+ session = &slice_data->sessioni;
15
ogs_assert(session);
16
session->context_identifier = i+1;
17
18
open5gs_2.4.8.202206300002.tar.xz/src/hss/hss-swx-path.c -> open5gs_2.4.8.202207010002.tar.xz/src/hss/hss-swx-path.c
Changed
18
1
2
struct avp *pdn_gw_allocation_type;
3
struct avp *vplmn_dynamic_address_allowed;
4
5
- ogs_session_t *session = &slice_data->sessioni;
6
+ ogs_session_t *session = NULL;
7
+
8
+ if (i >= OGS_MAX_NUM_OF_SESS) {
9
+ ogs_warn("Ignore max session count overflow %d>=%d",
10
+ slice_data->num_of_session, OGS_MAX_NUM_OF_SESS);
11
+ break;
12
+ }
13
+
14
+ session = &slice_data->sessioni;
15
ogs_assert(session);
16
session->context_identifier = i+1;
17
18
open5gs_2.4.8.202206300002.tar.xz/src/mme/mme-context.c -> open5gs_2.4.8.202207010002.tar.xz/src/mme/mme-context.c
Changed
25
1
2
3
ogs_assert(mme_ue);
4
5
+ ogs_assert(mme_ue->num_of_session <= OGS_MAX_NUM_OF_SESS);
6
for (i = 0; i < mme_ue->num_of_session; i++) {
7
if (mme_ue->sessioni.name)
8
ogs_free(mme_ue->sessioni.name);
9
10
ogs_assert(mme_ue);
11
ogs_assert(apn);
12
13
+ ogs_assert(mme_ue->num_of_session <= OGS_MAX_NUM_OF_SESS);
14
for (i = 0; i < mme_ue->num_of_session; i++) {
15
session = &mme_ue->sessioni;
16
ogs_assert(session->name);
17
18
19
ogs_assert(mme_ue);
20
21
+ ogs_assert(mme_ue->num_of_session <= OGS_MAX_NUM_OF_SESS);
22
for (i = 0; i < mme_ue->num_of_session; i++) {
23
session = &mme_ue->sessioni;
24
if (session->context_identifier == mme_ue->context_identifier)
25
open5gs_2.4.8.202206300002.tar.xz/src/mme/mme-fd-path.c -> open5gs_2.4.8.202207010002.tar.xz/src/mme/mme-fd-path.c
Changed
18
1
2
*/
3
case OGS_DIAM_S6A_AVP_CODE_APN_CONFIGURATION:
4
{
5
- ogs_session_t *session =
6
- &slice_data->sessionslice_data->num_of_session;
7
+ ogs_session_t *session = NULL;
8
+
9
+ if (slice_data->num_of_session >= OGS_MAX_NUM_OF_SESS) {
10
+ ogs_warn("Ignore max session count overflow %d>=%d",
11
+ slice_data->num_of_session, OGS_MAX_NUM_OF_SESS);
12
+ break;
13
+ }
14
+ session = &slice_data->sessionslice_data->num_of_session;
15
ogs_assert(session);
16
17
/* AVP: 'Service-Selection'(493)
18
open5gs_2.4.8.202206300002.tar.xz/src/mme/mme-s11-handler.c -> open5gs_2.4.8.202207010002.tar.xz/src/mme/mme-s11-handler.c
Changed
201
1
2
}
3
4
void mme_s11_handle_create_session_response(
5
- ogs_gtp_xact_t *xact, mme_ue_t *mme_ue,
6
+ ogs_gtp_xact_t *xact, mme_ue_t *mme_ue_from_teid,
7
ogs_gtp2_create_session_response_t *rsp)
8
{
9
int rv, i;
10
11
12
mme_bearer_t *bearer = NULL;
13
mme_sess_t *sess = NULL;
14
+ mme_ue_t *mme_ue = NULL;
15
sgw_ue_t *source_ue = NULL, *target_ue = NULL;
16
ogs_session_t *session = NULL;
17
ogs_gtp2_bearer_qos_t bearer_qos;
18
19
uint16_t decoded = 0;
20
int create_action = 0;
21
22
- ogs_assert(mme_ue);
23
ogs_assert(rsp);
24
25
ogs_debug("Create Session Response");
26
27
create_action = xact->create_action;
28
sess = xact->data;
29
ogs_assert(sess);
30
+ mme_ue = sess->mme_ue;
31
+ ogs_assert(mme_ue);
32
source_ue = sgw_ue_cycle(mme_ue->sgw_ue);
33
ogs_assert(source_ue);
34
35
36
************************/
37
cause_value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
38
39
+ if (!mme_ue_from_teid) {
40
+ ogs_error("No Context in TEID");
41
+ cause_value = OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND;
42
+ }
43
+
44
if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
45
if (create_action == OGS_GTP_CREATE_IN_ATTACH_REQUEST) {
46
ogs_error("%s Attach reject", mme_ue->imsi_bcd);
47
48
}
49
50
void mme_s11_handle_modify_bearer_response(
51
- ogs_gtp_xact_t *xact, mme_ue_t *mme_ue,
52
+ ogs_gtp_xact_t *xact, mme_ue_t *mme_ue_from_teid,
53
ogs_gtp2_modify_bearer_response_t *rsp)
54
{
55
int rv;
56
57
int modify_action = 0;
58
ogs_gtp2_cause_t *cause = NULL;
59
60
+ mme_ue_t *mme_ue = NULL;
61
sgw_ue_t *sgw_ue = NULL;
62
63
- ogs_assert(mme_ue);
64
ogs_assert(rsp);
65
66
ogs_debug("Modify Bearer Response");
67
68
********************/
69
ogs_assert(xact);
70
modify_action = xact->modify_action;
71
+ mme_ue = xact->data;
72
+ ogs_assert(mme_ue);
73
sgw_ue = sgw_ue_cycle(mme_ue->sgw_ue);
74
ogs_assert(sgw_ue);
75
76
77
************************/
78
cause_value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
79
80
+ if (!mme_ue_from_teid) {
81
+ ogs_error("No Context in TEID");
82
+ cause_value = OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND;
83
+ }
84
+
85
if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
86
mme_send_delete_session_or_mme_ue_context_release(mme_ue);
87
return;
88
89
}
90
91
void mme_s11_handle_delete_session_response(
92
- ogs_gtp_xact_t *xact, mme_ue_t *mme_ue,
93
+ ogs_gtp_xact_t *xact, mme_ue_t *mme_ue_from_teid,
94
ogs_gtp2_delete_session_response_t *rsp)
95
{
96
int rv;
97
98
int action = 0;
99
sgw_ue_t *source_ue = NULL, *target_ue = NULL;
100
mme_sess_t *sess = NULL;
101
+ mme_ue_t *mme_ue = NULL;
102
103
- ogs_assert(mme_ue);
104
ogs_assert(rsp);
105
106
ogs_debug("Delete Session Response");
107
108
ogs_assert(action);
109
sess = xact->data;
110
ogs_assert(sess);
111
+ mme_ue = sess->mme_ue;
112
+ ogs_assert(mme_ue);
113
target_ue = sgw_ue_cycle(mme_ue->sgw_ue);
114
ogs_assert(target_ue);
115
116
117
rv = ogs_gtp_xact_commit(xact);
118
ogs_expect_or_return(rv == OGS_OK);
119
120
+ /************************
121
+ * Check MME-UE Context
122
+ ************************/
123
+ if (!mme_ue_from_teid) {
124
+ ogs_error("No Context in TEID");
125
+ }
126
+
127
/********************
128
* Check Cause Value
129
********************/
130
131
}
132
133
void mme_s11_handle_release_access_bearers_response(
134
- ogs_gtp_xact_t *xact, mme_ue_t *mme_ue,
135
+ ogs_gtp_xact_t *xact, mme_ue_t *mme_ue_from_teid,
136
ogs_gtp2_release_access_bearers_response_t *rsp)
137
{
138
int rv;
139
140
enb_ue_t *enb_ue = NULL;
141
142
sgw_ue_t *sgw_ue = NULL;;
143
+ mme_ue_t *mme_ue = NULL;
144
mme_sess_t *sess = NULL;
145
mme_bearer_t *bearer = NULL;
146
147
- ogs_assert(mme_ue);
148
ogs_assert(rsp);
149
150
ogs_debug("Release Access Bearers Response");
151
152
ogs_assert(xact);
153
action = xact->release_action;
154
ogs_assert(action);
155
+ mme_ue = xact->data;
156
+ ogs_assert(mme_ue);
157
sgw_ue = sgw_ue_cycle(mme_ue->sgw_ue);
158
ogs_assert(sgw_ue);
159
160
rv = ogs_gtp_xact_commit(xact);
161
ogs_expect_or_return(rv == OGS_OK);
162
163
+ /***********************
164
+ * Check MME-UE Context
165
+ ***********************/
166
+ if (!mme_ue_from_teid) {
167
+ ogs_error("No Context in TEID ACTION:%d", action);
168
+ }
169
+
170
/********************
171
* Check Cause Value
172
********************/
173
174
175
cause_value = cause->value;
176
if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED)
177
- ogs_error("GTP Failed CAUSE:%d", cause_value);
178
+ ogs_error("GTP Failed CAUSE:%d, ACTION:%d", cause_value, action);
179
}
180
181
/********************
182
183
}
184
185
void mme_s11_handle_create_indirect_data_forwarding_tunnel_response(
186
- ogs_gtp_xact_t *xact, mme_ue_t *mme_ue,
187
+ ogs_gtp_xact_t *xact, mme_ue_t *mme_ue_from_teid,
188
ogs_gtp2_create_indirect_data_forwarding_tunnel_response_t *rsp)
189
{
190
int rv;
191
192
ogs_gtp2_cause_t *cause = NULL;
193
sgw_ue_t *sgw_ue = NULL;
194
mme_bearer_t *bearer = NULL;
195
+ mme_ue_t *mme_ue = NULL;
196
enb_ue_t *source_ue = NULL;
197
int i;
198
199
ogs_gtp2_f_teid_t *teid = NULL;
200
201
open5gs_2.4.8.202206300002.tar.xz/src/mme/mme-s6a-handler.c -> open5gs_2.4.8.202207010002.tar.xz/src/mme/mme-s6a-handler.c
Changed
26
1
2
3
mme_session_remove_all(mme_ue);
4
5
- mme_ue->num_of_session = slice_data->num_of_session;
6
- mme_ue->context_identifier = slice_data->context_identifier;
7
-
8
for (i = 0; i < slice_data->num_of_session; i++) {
9
+ if (i >= OGS_MAX_NUM_OF_SESS) {
10
+ ogs_warn("Ignore max session count overflow %d>=%d",
11
+ slice_data->num_of_session, OGS_MAX_NUM_OF_SESS);
12
+ break;
13
+ }
14
+
15
mme_ue->sessioni.name = ogs_strdup(slice_data->sessioni.name);
16
ogs_assert(mme_ue->sessioni.name);
17
18
19
memcpy(&mme_ue->sessioni.smf_ip, &slice_data->sessioni.smf_ip,
20
sizeof(mme_ue->sessioni.smf_ip));
21
}
22
+
23
+ mme_ue->num_of_session = i;
24
+ mme_ue->context_identifier = slice_data->context_identifier;
25
}
26
open5gs_2.4.8.202206300002.tar.xz/src/sgwc/pfcp-path.c -> open5gs_2.4.8.202207010002.tar.xz/src/sgwc/pfcp-path.c
Changed
26
1
2
ogs_assert(sess);
3
ogs_assert(xact);
4
5
- xact->local_seid = sess->sgwc_sxa_seid;
6
-
7
memset(&h, 0, sizeof(ogs_pfcp_header_t));
8
h.type = OGS_PFCP_SESSION_MODIFICATION_REQUEST_TYPE;
9
h.seid = sess->sgwu_sxa_seid;
10
11
xact->gtpbuf = ogs_pkbuf_copy(gtpbuf);
12
ogs_expect_or_return_val(xact->gtpbuf, OGS_ERROR);
13
}
14
+ xact->local_seid = sess->sgwc_sxa_seid;
15
16
ogs_list_for_each(&sess->bearer_list, bearer)
17
ogs_list_add(&xact->bearer_to_modify_list, &bearer->to_modify_node);
18
19
ogs_pfcp_header_t h;
20
21
ogs_assert(xact);
22
- xact->local_seid = sess->sgwc_sxa_seid;
23
24
memset(&h, 0, sizeof(ogs_pfcp_header_t));
25
h.type = OGS_PFCP_SESSION_REPORT_RESPONSE_TYPE;
26
open5gs_2.4.8.202206300002.tar.xz/src/sgwc/pfcp-sm.c -> open5gs_2.4.8.202207010002.tar.xz/src/sgwc/pfcp-sm.c
Changed
33
1
2
break;
3
case OGS_PFCP_SESSION_ESTABLISHMENT_RESPONSE_TYPE:
4
if (!message->h.seid_presence) ogs_error("No SEID");
5
+
6
sgwc_sxa_handle_session_establishment_response(
7
sess, xact, e->gtp_message,
8
&message->pfcp_session_establishment_response);
9
10
11
case OGS_PFCP_SESSION_MODIFICATION_RESPONSE_TYPE:
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
18
19
case OGS_PFCP_SESSION_DELETION_RESPONSE_TYPE:
20
if (!message->h.seid_presence) ogs_error("No SEID");
21
+
22
sgwc_sxa_handle_session_deletion_response(
23
sess, xact, e->gtp_message,
24
&message->pfcp_session_deletion_response);
25
26
27
case OGS_PFCP_SESSION_REPORT_REQUEST_TYPE:
28
if (!message->h.seid_presence) ogs_error("No SEID");
29
+
30
sgwc_sxa_handle_session_report_request(
31
sess, xact, &message->pfcp_session_report_request);
32
break;
33
open5gs_2.4.8.202206300002.tar.xz/src/sgwc/s11-handler.c -> open5gs_2.4.8.202207010002.tar.xz/src/sgwc/s11-handler.c
Changed
126
1
2
current_xact->gtpbuf = ogs_pkbuf_copy(gtpbuf);
3
ogs_assert(current_xact->gtpbuf);
4
}
5
+ current_xact->local_seid = sess->sgwc_sxa_seid;
6
7
ogs_list_add(&pfcp_xact_list, ¤t_xact->tmpnode);
8
}
9
10
ogs_gtp2_f_teid_t *sgw_s1u_teid = NULL, *enb_s1u_teid = NULL;
11
ogs_gtp2_uli_t uli;
12
13
- ogs_assert(sgwc_ue);
14
ogs_assert(message);
15
rsp = &message->create_bearer_response;
16
ogs_assert(rsp);
17
18
rv = ogs_gtp_xact_commit(s11_xact);
19
ogs_expect(rv == OGS_OK);
20
21
+ /************************
22
+ * Check SGWC-UE Context
23
+ ************************/
24
+ cause_value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
25
+
26
+ if (!sgwc_ue) {
27
+ ogs_error("No Context in TEID");
28
+ cause_value = OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND;
29
+ }
30
+
31
+ if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
32
+ ogs_assert(OGS_OK ==
33
+ sgwc_pfcp_send_bearer_modification_request(
34
+ bearer, NULL, NULL,
35
+ OGS_PFCP_MODIFY_UL_ONLY|OGS_PFCP_MODIFY_REMOVE));
36
+ ogs_gtp_send_error_message(s5c_xact, sess ? sess->pgw_s5c_teid : 0,
37
+ OGS_GTP2_CREATE_BEARER_RESPONSE_TYPE, cause_value);
38
+ return;
39
+ }
40
+
41
/*****************************************
42
* Check Mandatory/Conditional IE Missing
43
*****************************************/
44
- cause_value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
45
+ ogs_assert(cause_value == OGS_GTP2_CAUSE_REQUEST_ACCEPTED);
46
47
if (rsp->bearer_contexts.presence == 0) {
48
ogs_error("No Bearer");
49
50
sgwc_bearer_t *bearer = NULL;
51
ogs_gtp2_update_bearer_response_t *rsp = NULL;
52
53
- ogs_assert(sgwc_ue);
54
ogs_assert(message);
55
rsp = &message->update_bearer_response;
56
ogs_assert(rsp);
57
58
rv = ogs_gtp_xact_commit(s11_xact);
59
ogs_expect(rv == OGS_OK);
60
61
+ /************************
62
+ * Check SGWC-UE Context
63
+ ************************/
64
+ cause_value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
65
+
66
+ if (!sgwc_ue) {
67
+ ogs_error("No Context in TEID");
68
+ cause_value = OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND;
69
+ }
70
+
71
+ if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
72
+ ogs_gtp_send_error_message(s5c_xact, sess ? sess->pgw_s5c_teid : 0,
73
+ OGS_GTP2_UPDATE_BEARER_RESPONSE_TYPE, cause_value);
74
+ return;
75
+ }
76
+
77
/*****************************************
78
* Check Mandatory/Conditional IE Missing
79
*****************************************/
80
- cause_value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
81
+ ogs_assert(cause_value == OGS_GTP2_CAUSE_REQUEST_ACCEPTED);
82
83
if (rsp->bearer_contexts.presence == 0) {
84
ogs_error("No Bearer");
85
86
sgwc_bearer_t *bearer = NULL;
87
ogs_gtp2_delete_bearer_response_t *rsp = NULL;
88
89
- ogs_assert(sgwc_ue);
90
ogs_assert(message);
91
rsp = &message->delete_bearer_response;
92
ogs_assert(rsp);
93
94
************************/
95
cause_value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
96
97
+ if (!sgwc_ue) {
98
+ ogs_error("No Context in TEID");
99
+ cause_value = OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND;
100
+ }
101
+
102
if (rsp->linked_eps_bearer_id.presence) {
103
/*
104
* << Linked EPS Bearer ID >>
105
106
ogs_error("No Cause");
107
}
108
109
- ogs_debug(" MME_S11_TEID%d SGW_S11_TEID%d",
110
- sgwc_ue->mme_s11_teid, sgwc_ue->sgw_s11_teid);
111
+ if (sgwc_ue) {
112
+ ogs_debug(" MME_S11_TEID%d SGW_S11_TEID%d",
113
+ sgwc_ue->mme_s11_teid, sgwc_ue->sgw_s11_teid);
114
+ }
115
ogs_debug(" SGW_S5C_TEID0x%x PGW_S5C_TEID0x%x",
116
sess->sgw_s5c_teid, sess->pgw_s5c_teid);
117
118
119
s5c_xact = ogs_gtp_xact_local_create(
120
sess->gnode, &message->h, pkbuf, gtp_bearer_timeout, bearer);
121
ogs_expect_or_return(s5c_xact);
122
- s5c_xact->local_teid = sess->sgw_s5c_teid;
123
124
ogs_gtp_xact_associate(s11_xact, s5c_xact);
125
126
open5gs_2.4.8.202206300002.tar.xz/src/sgwc/s5c-handler.c -> open5gs_2.4.8.202207010002.tar.xz/src/sgwc/s5c-handler.c
Changed
201
1
2
ogs_gtp_xact_t *s11_xact = NULL;
3
ogs_gtp_node_t *pgw = NULL;
4
5
- ogs_assert(sess);
6
- sgwc_ue = sess->sgwc_ue;
7
- ogs_assert(sgwc_ue);
8
ogs_assert(gtpbuf);
9
ogs_assert(message);
10
rsp = &message->create_session_response;
11
12
rv = ogs_gtp_xact_commit(s5c_xact);
13
ogs_expect(rv == OGS_OK);
14
15
+ /************************
16
+ * Check Session Context
17
+ ************************/
18
+ cause_value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
19
+
20
+ if (!sess) {
21
+ ogs_error("No Context in TEID");
22
+ cause_value = OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND;
23
+ } else {
24
+ sgwc_ue = sess->sgwc_ue;
25
+ ogs_assert(sgwc_ue);
26
+ }
27
+
28
+ if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
29
+ ogs_gtp_send_error_message(
30
+ s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0,
31
+ OGS_GTP2_CREATE_SESSION_RESPONSE_TYPE, cause_value);
32
+ return;
33
+ }
34
+
35
/*****************************************
36
* Check Mandatory/Conditional IE Missing
37
*****************************************/
38
- cause_value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
39
+ ogs_assert(cause_value == OGS_GTP2_CAUSE_REQUEST_ACCEPTED);
40
41
if (rsp->pgw_s5_s8__s2a_s2b_f_teid_for_pmip_based_interface_or_for_gtp_based_control_plane_interface.presence == 0) {
42
ogs_error("No GTP TEID");
43
44
OGS_PFCP_MODIFY_UL_ONLY|OGS_PFCP_MODIFY_ACTIVATE));
45
}
46
47
-void sgwc_s5c_handle_modify_bearer_response(
48
+void sgwc_s5c_handle_delete_session_response(
49
sgwc_sess_t *sess, ogs_gtp_xact_t *s5c_xact,
50
ogs_pkbuf_t *gtpbuf, ogs_gtp2_message_t *message)
51
{
52
int rv;
53
ogs_gtp2_cause_t *cause = NULL;
54
uint8_t cause_value;
55
- int modify_action;
56
57
sgwc_ue_t *sgwc_ue = NULL;
58
- ogs_pkbuf_t *pkbuf = NULL;
59
60
ogs_gtp_xact_t *s11_xact = NULL;
61
- ogs_gtp2_modify_bearer_response_t *rsp = NULL;
62
+ ogs_gtp2_delete_session_response_t *rsp = NULL;
63
64
- ogs_assert(sess);
65
- sgwc_ue = sess->sgwc_ue;
66
- ogs_assert(sgwc_ue);
67
ogs_assert(message);
68
- rsp = &message->modify_bearer_response;
69
+ rsp = &message->delete_session_response;
70
ogs_assert(rsp);
71
72
- ogs_debug("Modify Bearer Response");
73
+ ogs_debug("Delete Session Response");
74
75
/********************
76
* Check Transaction
77
78
ogs_assert(s5c_xact);
79
s11_xact = s5c_xact->assoc_xact;
80
ogs_assert(s11_xact);
81
- modify_action = s5c_xact->modify_action;
82
83
rv = ogs_gtp_xact_commit(s5c_xact);
84
ogs_expect(rv == OGS_OK);
85
86
+ /************************
87
+ * Check Session Context
88
+ ************************/
89
+ cause_value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
90
+
91
+ if (!sess) {
92
+ ogs_error("No Context in TEID");
93
+ cause_value = OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND;
94
+ } else {
95
+ sgwc_ue = sess->sgwc_ue;
96
+ ogs_assert(sgwc_ue);
97
+ }
98
+
99
+ if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
100
+ ogs_gtp_send_error_message(
101
+ s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0,
102
+ OGS_GTP2_DELETE_SESSION_RESPONSE_TYPE, cause_value);
103
+ return;
104
+ }
105
+
106
/*****************************************
107
* Check Mandatory/Conditional IE Missing
108
*****************************************/
109
- cause_value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
110
+ ogs_assert(cause_value == OGS_GTP2_CAUSE_REQUEST_ACCEPTED);
111
112
if (rsp->cause.presence == 0) {
113
ogs_error("No Cause");
114
115
}
116
117
if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
118
- if (modify_action == OGS_GTP_MODIFY_IN_PATH_SWITCH_REQUEST)
119
- ogs_gtp_send_error_message(
120
- s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0,
121
- OGS_GTP2_CREATE_SESSION_RESPONSE_TYPE, cause_value);
122
- else
123
- ogs_gtp_send_error_message(
124
- s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0,
125
- OGS_GTP2_MODIFY_BEARER_RESPONSE_TYPE, cause_value);
126
+ ogs_gtp_send_error_message(
127
+ s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0,
128
+ OGS_GTP2_DELETE_SESSION_RESPONSE_TYPE, cause_value);
129
return;
130
}
131
132
133
cause_value = cause->value;
134
if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
135
ogs_error("GTP Failed CAUSE:%d", cause_value);
136
- if (modify_action == OGS_GTP_MODIFY_IN_PATH_SWITCH_REQUEST)
137
- ogs_gtp_send_error_message(
138
- s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0,
139
- OGS_GTP2_CREATE_SESSION_RESPONSE_TYPE, cause_value);
140
- else
141
- ogs_gtp_send_error_message(
142
- s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0,
143
- OGS_GTP2_MODIFY_BEARER_RESPONSE_TYPE, cause_value);
144
+ ogs_gtp_send_error_message(
145
+ s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0,
146
+ OGS_GTP2_DELETE_SESSION_RESPONSE_TYPE, cause_value);
147
return;
148
}
149
150
/********************
151
* Check ALL Context
152
********************/
153
- ogs_assert(sgwc_ue);
154
ogs_assert(sess);
155
+ ogs_assert(sgwc_ue);
156
157
+ /* Remove a pgw session */
158
ogs_debug(" MME_S11_TEID%d SGW_S11_TEID%d",
159
sgwc_ue->mme_s11_teid, sgwc_ue->sgw_s11_teid);
160
ogs_debug(" SGW_S5C_TEID0x%x PGW_S5C_TEID0x%x",
161
sess->sgw_s5c_teid, sess->pgw_s5c_teid);
162
163
- if (modify_action == OGS_GTP_MODIFY_IN_PATH_SWITCH_REQUEST) {
164
- ogs_assert(OGS_OK ==
165
- sgwc_gtp_send_create_session_response(sess, s11_xact));
166
- } else {
167
- message->h.type = OGS_GTP2_MODIFY_BEARER_RESPONSE_TYPE;
168
- message->h.teid = sgwc_ue->mme_s11_teid;
169
-
170
- pkbuf = ogs_gtp2_build_msg(message);
171
- ogs_expect_or_return(pkbuf);
172
-
173
- rv = ogs_gtp_xact_update_tx(s11_xact, &message->h, pkbuf);
174
- ogs_expect_or_return(rv == OGS_OK);
175
-
176
- rv = ogs_gtp_xact_commit(s11_xact);
177
- ogs_expect(rv == OGS_OK);
178
- }
179
+ /*
180
+ * 1. MME sends Delete Session Request to SGW/SMF.
181
+ * 2. SMF sends Delete Session Response to SGW/MME.
182
+ */
183
+ ogs_assert(OGS_OK ==
184
+ sgwc_pfcp_send_session_deletion_request(sess, s11_xact, gtpbuf));
185
}
186
187
-void sgwc_s5c_handle_delete_session_response(
188
+void sgwc_s5c_handle_modify_bearer_response(
189
sgwc_sess_t *sess, ogs_gtp_xact_t *s5c_xact,
190
ogs_pkbuf_t *gtpbuf, ogs_gtp2_message_t *message)
191
{
192
int rv;
193
ogs_gtp2_cause_t *cause = NULL;
194
uint8_t cause_value;
195
+ int modify_action;
196
197
sgwc_ue_t *sgwc_ue = NULL;
198
+ ogs_pkbuf_t *pkbuf = NULL;
199
200
ogs_gtp_xact_t *s11_xact = NULL;
201
open5gs_2.4.8.202206300002.tar.xz/src/sgwc/sgwc-sm.c -> open5gs_2.4.8.202207010002.tar.xz/src/sgwc/sgwc-sm.c
Changed
10
1
2
if (gtp_message.h.teid_presence && gtp_message.h.teid != 0) {
3
/* Cause is not "Context not found" */
4
sgwc_ue = sgwc_ue_find_by_teid(gtp_message.h.teid);
5
- } else if (gtp_xact->local_teid) { /* rx no TEID or TEID=0 */
6
+ } else if (gtp_xact->local_teid) { /* rx no TEID or TEID=0 */
7
/* 3GPP TS 29.274 5.5.2: we receive TEID=0 under some
8
* conditions, such as cause "Session context not found". In those
9
* cases, we still want to identify the local session which
10
open5gs_2.4.8.202206300002.tar.xz/src/sgwc/sxa-handler.c -> open5gs_2.4.8.202207010002.tar.xz/src/sgwc/sxa-handler.c
Changed
96
1
2
3
ogs_debug("Session Establishment Response");
4
5
- ogs_assert(sess);
6
ogs_assert(pfcp_xact);
7
ogs_assert(pfcp_rsp);
8
ogs_assert(recv_message);
9
10
11
cause_value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
12
13
+ if (!sess) {
14
+ ogs_warn("No Context");
15
+ cause_value = OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND;
16
+ }
17
+
18
if (pfcp_rsp->up_f_seid.presence == 0) {
19
ogs_error("No UP F-SEID");
20
cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
21
22
23
ogs_debug("Session Modification Response");
24
25
- ogs_assert(sess);
26
ogs_assert(pfcp_xact);
27
ogs_assert(pfcp_rsp);
28
29
30
cause_value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
31
32
if (flags & OGS_PFCP_MODIFY_SESSION) {
33
+ if (!sess) {
34
+ ogs_warn("No Context");
35
+
36
+ sess = pfcp_xact->data;
37
+ ogs_assert(sess);
38
+
39
+ cause_value = OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND;
40
+ }
41
sgwc_ue = sess->sgwc_ue;
42
ogs_assert(sgwc_ue);
43
44
} else {
45
bearer = pfcp_xact->data;
46
ogs_assert(bearer);
47
+
48
+ if (!sess) {
49
+ ogs_warn("No Context");
50
+
51
+ sess = bearer->sess;
52
+ ogs_assert(sess);
53
+
54
+ cause_value = OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND;
55
+ }
56
+
57
sgwc_ue = bearer->sgwc_ue;
58
ogs_assert(sgwc_ue);
59
}
60
61
62
ogs_debug("Session Deletion Response");
63
64
- ogs_assert(sess);
65
ogs_assert(pfcp_xact);
66
ogs_assert(pfcp_rsp);
67
68
cause_value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
69
70
+ if (!sess) {
71
+ ogs_warn("No Context");
72
+ cause_value = OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND;
73
+ }
74
+
75
if (pfcp_rsp->cause.presence) {
76
if (pfcp_rsp->cause.u8 != OGS_PFCP_CAUSE_REQUEST_ACCEPTED) {
77
ogs_warn("PFCP Cause%d : Not Accepted", pfcp_rsp->cause.u8);
78
79
80
ogs_debug("Session Report Request");
81
82
- ogs_assert(sess);
83
ogs_assert(pfcp_xact);
84
ogs_assert(pfcp_req);
85
86
cause_value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
87
88
+ if (!sess) {
89
+ ogs_warn("No Context");
90
+ cause_value = OGS_PFCP_CAUSE_SESSION_CONTEXT_NOT_FOUND;
91
+ }
92
+
93
if (pfcp_req->report_type.presence == 0) {
94
ogs_error("No Report Type");
95
cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
96
open5gs_2.4.8.202206300002.tar.xz/src/smf/n4-handler.c -> open5gs_2.4.8.202207010002.tar.xz/src/smf/n4-handler.c
Changed
90
1
2
3
ogs_debug("Session Modification Response 5gc");
4
5
- ogs_assert(sess);
6
ogs_assert(xact);
7
ogs_assert(rsp);
8
9
10
11
status = OGS_SBI_HTTP_STATUS_OK;
12
13
+ if (!sess) {
14
+ ogs_warn("No Context");
15
+ status = OGS_SBI_HTTP_STATUS_NOT_FOUND;
16
+ }
17
+
18
if (rsp->cause.presence) {
19
if (rsp->cause.u8 != OGS_PFCP_CAUSE_REQUEST_ACCEPTED) {
20
ogs_warn("PFCP Cause %d : Not Accepted", rsp->cause.u8);
21
22
23
status = OGS_SBI_HTTP_STATUS_OK;
24
25
- ogs_assert(sess);
26
+ if (!sess) {
27
+ ogs_warn("No Context");
28
+ status = OGS_SBI_HTTP_STATUS_NOT_FOUND;
29
+ }
30
31
if (rsp->cause.presence) {
32
if (rsp->cause.u8 != OGS_PFCP_CAUSE_REQUEST_ACCEPTED) {
33
34
return status;
35
}
36
37
+ ogs_assert(sess);
38
+
39
return status;
40
}
41
42
43
44
OGS_LIST(pdr_to_create_list);
45
46
- ogs_assert(sess);
47
ogs_assert(xact);
48
ogs_assert(rsp);
49
50
51
52
ogs_pfcp_xact_commit(xact);
53
54
+ if (!sess) {
55
+ ogs_error("No Context");
56
+ return;
57
+ }
58
+
59
if (rsp->cause.presence) {
60
if (rsp->cause.u8 != OGS_PFCP_CAUSE_REQUEST_ACCEPTED) {
61
ogs_error("PFCP Cause %d : Not Accepted", rsp->cause.u8);
62
63
uint16_t pdr_id = 0;
64
unsigned int i;
65
66
- ogs_assert(sess);
67
ogs_assert(pfcp_xact);
68
ogs_assert(pfcp_req);
69
70
71
72
cause_value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
73
74
+ if (!sess) {
75
+ ogs_warn("No Context");
76
+ cause_value = OGS_PFCP_CAUSE_SESSION_CONTEXT_NOT_FOUND;
77
+ }
78
+
79
if (pfcp_req->report_type.presence == 0) {
80
ogs_error("No Report Type");
81
cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
82
83
return;
84
}
85
86
+ ogs_assert(sess);
87
report_type.value = pfcp_req->report_type.u8;
88
89
if (report_type.downlink_data_report) {
90
open5gs_2.4.8.202206300002.tar.xz/src/smf/pfcp-path.c -> open5gs_2.4.8.202207010002.tar.xz/src/smf/pfcp-path.c
Changed
42
1
2
ogs_assert(sess);
3
ogs_assert(xact);
4
5
- xact->local_seid = sess->smf_n4_seid;
6
-
7
memset(&h, 0, sizeof(ogs_pfcp_header_t));
8
h.type = OGS_PFCP_SESSION_MODIFICATION_REQUEST_TYPE;
9
h.seid = sess->upf_n4_seid;
10
11
ogs_expect_or_return_val(xact, OGS_ERROR);
12
13
xact->assoc_stream = stream;
14
+ xact->local_seid = sess->smf_n4_seid;
15
xact->modify_flags = flags | OGS_PFCP_MODIFY_SESSION;
16
17
ogs_list_init(&sess->pdr_to_modify_list);
18
19
ogs_expect_or_return_val(xact, OGS_ERROR);
20
21
xact->assoc_stream = stream;
22
+ xact->local_seid = sess->smf_n4_seid;
23
xact->modify_flags = flags | OGS_PFCP_MODIFY_SESSION;
24
25
rv = smf_pfcp_send_modify_list(
26
27
28
xact->epc = true; /* EPC PFCP transaction */
29
xact->assoc_xact = gtp_xact;
30
+ xact->local_seid = sess->smf_n4_seid;
31
xact->modify_flags = flags | OGS_PFCP_MODIFY_SESSION;
32
33
xact->gtp_pti = gtp_pti;
34
35
36
xact->epc = true; /* EPC PFCP transaction */
37
xact->assoc_xact = gtp_xact;
38
+ xact->local_seid = sess->smf_n4_seid;
39
xact->modify_flags = flags;
40
41
xact->gtp_pti = gtp_pti;
42
open5gs_2.4.8.202206300002.tar.xz/src/smf/pfcp-sm.c -> open5gs_2.4.8.202207010002.tar.xz/src/smf/pfcp-sm.c
Changed
59
1
2
break;
3
case OGS_PFCP_SESSION_ESTABLISHMENT_RESPONSE_TYPE:
4
if (!message->h.seid_presence) ogs_error("No SEID");
5
- ogs_assert(sess);
6
+
7
+ if (!sess) {
8
+ ogs_gtp_xact_t *gtp_xact = xact->assoc_xact;
9
+ ogs_assert(gtp_xact);
10
+ if (gtp_xact->gtp_version == 1)
11
+ ogs_gtp1_send_error_message(gtp_xact, 0,
12
+ OGS_GTP1_CREATE_PDP_CONTEXT_RESPONSE_TYPE,
13
+ OGS_GTP1_CAUSE_CONTEXT_NOT_FOUND);
14
+ else
15
+ ogs_gtp2_send_error_message(gtp_xact, 0,
16
+ OGS_GTP2_CREATE_SESSION_RESPONSE_TYPE,
17
+ OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND);
18
+ break;
19
+ }
20
ogs_fsm_dispatch(&sess->sm, e);
21
break;
22
23
case OGS_PFCP_SESSION_MODIFICATION_RESPONSE_TYPE:
24
if (!message->h.seid_presence) ogs_error("No SEID");
25
+
26
if (xact->epc)
27
smf_epc_n4_handle_session_modification_response(
28
sess, xact, e->gtp2_message,
29
30
31
case OGS_PFCP_SESSION_DELETION_RESPONSE_TYPE:
32
if (!message->h.seid_presence) ogs_error("No SEID");
33
- ogs_assert(sess);
34
+
35
+ if (!sess) {
36
+ ogs_gtp_xact_t *gtp_xact = xact->assoc_xact;
37
+ if (!gtp_xact)
38
+ break;
39
+ if (gtp_xact->gtp_version == 1)
40
+ ogs_gtp1_send_error_message(gtp_xact, 0,
41
+ OGS_GTP1_CREATE_PDP_CONTEXT_RESPONSE_TYPE,
42
+ OGS_GTP1_CAUSE_CONTEXT_NOT_FOUND);
43
+ else
44
+ ogs_gtp2_send_error_message(gtp_xact, 0,
45
+ OGS_GTP2_CREATE_SESSION_RESPONSE_TYPE,
46
+ OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND);
47
+ break;
48
+ }
49
+
50
ogs_fsm_dispatch(&sess->sm, e);
51
break;
52
53
case OGS_PFCP_SESSION_REPORT_REQUEST_TYPE:
54
if (!message->h.seid_presence) ogs_error("No SEID");
55
+
56
smf_n4_handle_session_report_request(
57
sess, xact, &message->pfcp_session_report_request);
58
break;
59
open5gs_2.4.8.202206300002.tar.xz/src/smf/s5c-handler.c -> open5gs_2.4.8.202207010002.tar.xz/src/smf/s5c-handler.c
Changed
90
1
2
3
pfcp_xact->gtp_pti = OGS_NAS_PROCEDURE_TRANSACTION_IDENTITY_UNASSIGNED;
4
pfcp_xact->gtp_cause = OGS_GTP2_CAUSE_UNDEFINED_VALUE;
5
+ pfcp_xact->local_seid = sess->smf_n4_seid;
6
7
ogs_assert(gtpbuf);
8
pfcp_xact->gtpbuf = ogs_pkbuf_copy(gtpbuf);
9
10
smf_bearer_t *bearer = NULL;
11
ogs_pfcp_far_t *dl_far = NULL;
12
13
- ogs_assert(sess);
14
ogs_assert(rsp);
15
16
ogs_debug("Create Bearer Response");
17
18
************************/
19
cause_value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
20
21
+ if (!sess) {
22
+ ogs_error("No Context in TEID");
23
+ cause_value = OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND;
24
+ }
25
+
26
if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
27
ogs_assert(OGS_OK ==
28
smf_epc_pfcp_send_one_bearer_modification_request(
29
30
uint64_t pfcp_flags = 0;
31
smf_bearer_t *bearer = NULL;
32
33
- ogs_assert(sess);
34
ogs_assert(rsp);
35
36
ogs_debug("Update Bearer Response");
37
38
rv = ogs_gtp_xact_commit(xact);
39
ogs_expect(rv == OGS_OK);
40
41
+ /************************
42
+ * Check Session Context
43
+ ************************/
44
+ cause_value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
45
+
46
+ if (!sess) {
47
+ ogs_error("No Context in TEID");
48
+ cause_value = OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND;
49
+ }
50
+
51
+ if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {
52
+ return;
53
+ }
54
+
55
/*****************************************
56
* Check Mandatory/Conditional IE Missing
57
*****************************************/
58
- cause_value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED;
59
+ ogs_assert(cause_value == OGS_GTP2_CAUSE_REQUEST_ACCEPTED);
60
61
if (rsp->bearer_contexts.presence == 0) {
62
ogs_error("No Bearer");
63
64
uint8_t cause_value;
65
smf_bearer_t *bearer = NULL;
66
67
- ogs_assert(sess);
68
ogs_assert(rsp);
69
70
ogs_debug("Delete Bearer Response");
71
72
rv = ogs_gtp_xact_commit(xact);
73
ogs_expect(rv == OGS_OK);
74
75
+ /************************
76
+ * Check Session Context
77
+ ************************/
78
+ if (!sess)
79
+ ogs_error("No Context in TEID");
80
+
81
/********************
82
* Check ALL Context
83
********************/
84
ogs_assert(bearer);
85
+ sess = bearer->sess;
86
+ ogs_assert(sess);
87
88
if (rsp->linked_eps_bearer_id.presence) {
89
/*
90
open5gs_2.4.8.202206300002.tar.xz/src/smf/smf-sm.c -> open5gs_2.4.8.202207010002.tar.xz/src/smf/smf-sm.c
Changed
14
1
2
break;
3
case OGS_GTP2_DELETE_BEARER_RESPONSE_TYPE:
4
if (!gtp2_message.h.teid_presence) ogs_error("No TEID");
5
- ogs_assert(sess);
6
+ if (!sess) {
7
+ /* TODO: NACK the message */
8
+ ogs_error("TODO: NACK the message");
9
+ break;
10
+ }
11
e->sess = sess;
12
ogs_fsm_dispatch(&sess->sm, e);
13
break;
14
open5gs_2.4.8.202206300002.tar.xz/src/udr/nudr-handler.c -> open5gs_2.4.8.202207010002.tar.xz/src/udr/nudr-handler.c
Changed
63
1
2
ogs_assert(SubscribedSnssaiInfoList);
3
4
for (i = 0; i < subscription_data.num_of_slice; i++) {
5
+ if (i >= OGS_MAX_NUM_OF_SLICE) {
6
+ ogs_warn("Ignore max slice count overflow %d>=%d",
7
+ subscription_data.num_of_slice, OGS_MAX_NUM_OF_SLICE);
8
+ break;
9
+ }
10
slice_data = &subscription_data.slicei;
11
12
DnnInfoList = OpenAPI_list_create();
13
ogs_assert(DnnInfoList);
14
15
for (j = 0; j < slice_data->num_of_session; j++) {
16
- ogs_session_t *session = &slice_data->sessionj;
17
+ ogs_session_t *session = NULL;
18
+
19
+ if (j >= OGS_MAX_NUM_OF_SESS) {
20
+ ogs_warn("Ignore max session count overflow %d>=%d",
21
+ slice_data->num_of_session, OGS_MAX_NUM_OF_SESS);
22
+ break;
23
+ }
24
+
25
+ session = &slice_data->sessionj;
26
ogs_assert(session);
27
ogs_assert(session->name);
28
29
30
dnnConfigurationList = OpenAPI_list_create();
31
32
for (i = 0; i < slice_data->num_of_session; i++) {
33
- ogs_session_t *session = &slice_data->sessioni;
34
+ ogs_session_t *session = NULL;
35
+
36
+ if (i >= OGS_MAX_NUM_OF_SESS) {
37
+ ogs_warn("Ignore max session count overflow %d>=%d",
38
+ slice_data->num_of_session, OGS_MAX_NUM_OF_SESS);
39
+ break;
40
+ }
41
+
42
+ session = &slice_data->sessioni;
43
ogs_assert(session);
44
ogs_assert(session->name);
45
46
47
slice_data = &subscription_data.slice0;
48
49
for (i = 0; i < slice_data->num_of_session; i++) {
50
- ogs_session_t *session = &slice_data->sessioni;
51
+ ogs_session_t *session = NULL;
52
+
53
+ if (i >= OGS_MAX_NUM_OF_SESS) {
54
+ ogs_warn("Ignore max session count overflow %d>=%d",
55
+ slice_data->num_of_session, OGS_MAX_NUM_OF_SESS);
56
+ break;
57
+ }
58
+
59
+ session = &slice_data->sessioni;
60
ogs_assert(session);
61
ogs_assert(session->name);
62
63