Changes of Revision 379
commit_4088cdf17d4f9e4956c42cab8aaf27a24afe5179.txt
Added
commit_52be56b839ce483c74d0ca5f5655f2afe128fbc7.txt
Deleted
open5gs_2.7.0.57.52be.dsc -> open5gs_2.7.0.58.4088.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.57.52be
6
+Version: 2.7.0.58.4088
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
- cbde29b872edeb8c0c20add3cd5c96d4cccde269 14467948 open5gs_2.7.0.57.52be.tar.xz
15
+ 0afcc239aa0f682a207d95832f5fedfa13b3a9f0 14467360 open5gs_2.7.0.58.4088.tar.xz
16
Checksums-Sha256:
17
- 18e08a4d102cb7126b34551fb3101ce25e6018cff451003aba1b1bca23baa87f 14467948 open5gs_2.7.0.57.52be.tar.xz
18
+ e1ef5410cd30a0e6cd60af72d05765accf9a49833f1855b76b95d17c1512d3e8 14467360 open5gs_2.7.0.58.4088.tar.xz
19
Files:
20
- 090806a3185cdb26846f63c0d76bd17d 14467948 open5gs_2.7.0.57.52be.tar.xz
21
+ f40fe0856a697f6ffbcd955b6a4988f9 14467360 open5gs_2.7.0.58.4088.tar.xz
22
open5gs_2.7.0.57.52be.tar.xz/.tarball-version -> open5gs_2.7.0.58.4088.tar.xz/.tarball-version
Changed
4
1
2
-2.7.0.57-52be
3
+2.7.0.58-4088
4
open5gs_2.7.0.57.52be.tar.xz/debian/changelog -> open5gs_2.7.0.58.4088.tar.xz/debian/changelog
Changed
12
1
2
-open5gs (2.7.0.57.52be) unstable; urgency=medium
3
+open5gs (2.7.0.58.4088) unstable; urgency=medium
4
5
* Automatically generated changelog entry for building the Osmocom master feed
6
7
- -- Osmocom OBS scripts <info@osmocom.org> Mon, 15 Jan 2024 22:42:01 +0000
8
+ -- Osmocom OBS scripts <info@osmocom.org> Wed, 17 Jan 2024 12:03:55 +0000
9
10
open5gs (2.7.0) unstable; urgency=medium
11
12
open5gs_2.7.0.57.52be.tar.xz/lib/core/ogs-list.h -> open5gs_2.7.0.58.4088.tar.xz/lib/core/ogs-list.h
Changed
21
1
2
return i;
3
}
4
5
+static ogs_inline bool ogs_list_exists(const ogs_list_t *list, void *lnode)
6
+{
7
+ ogs_list_t *node = (ogs_list_t *)lnode;
8
+ void *iter = NULL;
9
+
10
+ ogs_list_for_each(list, iter) {
11
+ if (node == (ogs_list_t *)iter)
12
+ return true;
13
+ }
14
+
15
+ return false;
16
+}
17
+
18
#ifdef __cplusplus
19
}
20
#endif
21
open5gs_2.7.0.57.52be.tar.xz/src/mme/s1ap-handler.c -> open5gs_2.7.0.58.4088.tar.xz/src/mme/s1ap-handler.c
Changed
49
1
2
ogs_debug(" ### ULI PRESENT ###");
3
uli_presence = 1;
4
}
5
- ogs_list_add(&mme_ue->bearer_to_modify_list,
6
- &bearer->to_modify_node);
7
+ if (ogs_list_exists(
8
+ &mme_ue->bearer_to_modify_list,
9
+ &bearer->to_modify_node) == false)
10
+ ogs_list_add(
11
+ &mme_ue->bearer_to_modify_list,
12
+ &bearer->to_modify_node);
13
+ else
14
+ ogs_warn("Bearer %d Duplicated", (int)e_rab->e_RAB_ID);
15
}
16
}
17
18
19
return;
20
}
21
22
- ogs_list_add(&mme_ue->bearer_to_modify_list, &bearer->to_modify_node);
23
+ if (ogs_list_exists(
24
+ &mme_ue->bearer_to_modify_list,
25
+ &bearer->to_modify_node) == false)
26
+ ogs_list_add(
27
+ &mme_ue->bearer_to_modify_list, &bearer->to_modify_node);
28
+ else
29
+ ogs_warn("Bearer %d Duplicated", (int)e_rab->e_RAB_ID);
30
}
31
32
if (ogs_list_count(&mme_ue->bearer_to_modify_list)) {
33
34
return;
35
}
36
37
- ogs_list_add(
38
- &mme_ue->bearer_to_modify_list, &bearer->to_modify_node);
39
+ if (ogs_list_exists(
40
+ &mme_ue->bearer_to_modify_list,
41
+ &bearer->to_modify_node) == false)
42
+ ogs_list_add(
43
+ &mme_ue->bearer_to_modify_list, &bearer->to_modify_node);
44
+ else
45
+ ogs_warn("Bearer %d Duplicated", (int)e_rab->e_RAB_ID);
46
}
47
48
relocation = sgw_ue_check_if_relocated(mme_ue);
49
open5gs_2.7.0.57.52be.tar.xz/tests/handover/epc-x2-test.c -> open5gs_2.7.0.58.4088.tar.xz/tests/handover/epc-x2-test.c
Changed
270
1
2
test_ue_remove(test_ue);
3
}
4
5
+static void test2_func(abts_case *tc, void *data)
6
+{
7
+ int rv;
8
+ ogs_socknode_t *s1ap1, *s1ap2;
9
+ ogs_socknode_t *gtpu1, *gtpu2;
10
+ ogs_pkbuf_t *emmbuf;
11
+ ogs_pkbuf_t *esmbuf;
12
+ ogs_pkbuf_t *sendbuf;
13
+ ogs_pkbuf_t *recvbuf;
14
+ ogs_s1ap_message_t message;
15
+
16
+ ogs_nas_5gs_mobile_identity_suci_t mobile_identity_suci;
17
+ test_ue_t *test_ue = NULL;
18
+ test_sess_t *sess = NULL;
19
+ test_bearer_t *bearer = NULL;
20
+
21
+ bson_t *doc = NULL;
22
+
23
+ /* Setup Test UE & Session Context */
24
+ memset(&mobile_identity_suci, 0, sizeof(mobile_identity_suci));
25
+
26
+ mobile_identity_suci.h.supi_format = OGS_NAS_5GS_SUPI_FORMAT_IMSI;
27
+ mobile_identity_suci.h.type = OGS_NAS_5GS_MOBILE_IDENTITY_SUCI;
28
+ mobile_identity_suci.routing_indicator1 = 0;
29
+ mobile_identity_suci.routing_indicator2 = 0xf;
30
+ mobile_identity_suci.routing_indicator3 = 0xf;
31
+ mobile_identity_suci.routing_indicator4 = 0xf;
32
+ mobile_identity_suci.protection_scheme_id = OGS_PROTECTION_SCHEME_NULL;
33
+ mobile_identity_suci.home_network_pki_value = 0;
34
+
35
+ test_ue = test_ue_add_by_suci(&mobile_identity_suci, "3746000006");
36
+ ogs_assert(test_ue);
37
+
38
+ test_ue->e_cgi.cell_id = 0x1234560;
39
+ test_ue->nas.ksi = OGS_NAS_KSI_NO_KEY_IS_AVAILABLE;
40
+ test_ue->nas.value = OGS_NAS_ATTACH_TYPE_COMBINED_EPS_IMSI_ATTACH;
41
+
42
+ test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc";
43
+ test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca";
44
+
45
+ sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP2_RAT_TYPE_EUTRAN);
46
+ ogs_assert(sess);
47
+
48
+ /* Two eNB connects to MME */
49
+ s1ap1 = tests1ap_client(AF_INET);
50
+ ABTS_PTR_NOTNULL(tc, s1ap1);
51
+
52
+ s1ap2 = tests1ap_client(AF_INET);
53
+ ABTS_PTR_NOTNULL(tc, s1ap2);
54
+
55
+ /* Two eNB connects to SGW */
56
+ gtpu1 = test_gtpu_server(1, AF_INET);
57
+ ABTS_PTR_NOTNULL(tc, gtpu1);
58
+
59
+ gtpu2 = test_gtpu_server(2, AF_INET);
60
+ ABTS_PTR_NOTNULL(tc, gtpu2);
61
+
62
+ /* S1-Setup Reqeust/Response for Source eNB */
63
+ sendbuf = test_s1ap_build_s1_setup_request(
64
+ S1AP_ENB_ID_PR_macroENB_ID, 0x54f64);
65
+ ABTS_PTR_NOTNULL(tc, sendbuf);
66
+ rv = testenb_s1ap_send(s1ap1, sendbuf);
67
+ ABTS_INT_EQUAL(tc, OGS_OK, rv);
68
+
69
+ recvbuf = testenb_s1ap_read(s1ap1);
70
+ ABTS_PTR_NOTNULL(tc, recvbuf);
71
+ tests1ap_recv(NULL, recvbuf);
72
+
73
+ /* S1-Setup Reqeust/Response for Target eNB */
74
+ sendbuf = test_s1ap_build_s1_setup_request(
75
+ S1AP_ENB_ID_PR_macroENB_ID, 0x54f65);
76
+ ABTS_PTR_NOTNULL(tc, sendbuf);
77
+ rv = testenb_s1ap_send(s1ap2, sendbuf);
78
+ ABTS_INT_EQUAL(tc, OGS_OK, rv);
79
+
80
+ recvbuf = testenb_s1ap_read(s1ap2);
81
+ ABTS_PTR_NOTNULL(tc, recvbuf);
82
+ tests1ap_recv(NULL, recvbuf);
83
+
84
+ /********** Insert Subscriber in Database */
85
+ doc = test_db_new_qos_flow(test_ue);
86
+ ABTS_PTR_NOTNULL(tc, doc);
87
+ ABTS_INT_EQUAL(tc, OGS_OK, test_db_insert_ue(test_ue, doc));
88
+
89
+ /* Send Attach Request */
90
+ memset(&sess->pdn_connectivity_param,
91
+ 0, sizeof(sess->pdn_connectivity_param));
92
+ sess->pdn_connectivity_param.eit = 1;
93
+ sess->pdn_connectivity_param.pco = 1;
94
+ sess->pdn_connectivity_param.request_type =
95
+ OGS_NAS_EPS_REQUEST_TYPE_INITIAL;
96
+ esmbuf = testesm_build_pdn_connectivity_request(sess, false);
97
+ ABTS_PTR_NOTNULL(tc, esmbuf);
98
+
99
+ memset(&test_ue->attach_request_param,
100
+ 0, sizeof(test_ue->attach_request_param));
101
+ test_ue->attach_request_param.drx_parameter = 1;
102
+ test_ue->attach_request_param.tmsi_status = 1;
103
+ test_ue->attach_request_param.mobile_station_classmark_2 = 1;
104
+ test_ue->attach_request_param.additional_update_type = 1;
105
+ test_ue->attach_request_param.ue_usage_setting = 1;
106
+ emmbuf = testemm_build_attach_request(test_ue, esmbuf, false, false);
107
+ ABTS_PTR_NOTNULL(tc, emmbuf);
108
+
109
+ memset(&test_ue->initial_ue_param, 0, sizeof(test_ue->initial_ue_param));
110
+ sendbuf = test_s1ap_build_initial_ue_message(
111
+ test_ue, emmbuf, S1AP_RRC_Establishment_Cause_mo_Signalling, false);
112
+ ABTS_INT_EQUAL(tc, OGS_OK, rv);
113
+ rv = testenb_s1ap_send(s1ap1, sendbuf);
114
+ ABTS_INT_EQUAL(tc, OGS_OK, rv);
115
+
116
+ /* Receive Authentication Request */
117
+ recvbuf = testenb_s1ap_read(s1ap1);
118
+ ABTS_PTR_NOTNULL(tc, recvbuf);
119
+ tests1ap_recv(test_ue, recvbuf);
120
+
121
+ /* Send Authentication response */
122
+ emmbuf = testemm_build_authentication_response(test_ue);
123
+ ABTS_PTR_NOTNULL(tc, emmbuf);
124
+ sendbuf = test_s1ap_build_uplink_nas_transport(test_ue, emmbuf);
125
+ ABTS_PTR_NOTNULL(tc, sendbuf);
126
+ rv = testenb_s1ap_send(s1ap1, sendbuf);
127
+ ABTS_INT_EQUAL(tc, OGS_OK, rv);
128
+
129
+ /* Receive Security mode Command */
130
+ recvbuf = testenb_s1ap_read(s1ap1);
131
+ ABTS_PTR_NOTNULL(tc, recvbuf);
132
+ tests1ap_recv(test_ue, recvbuf);
133
+
134
+ /* Send Security mode complete */
135
+ test_ue->mobile_identity_imeisv_presence = true;
136
+ emmbuf = testemm_build_security_mode_complete(test_ue);
137
+ ABTS_PTR_NOTNULL(tc, emmbuf);
138
+ sendbuf = test_s1ap_build_uplink_nas_transport(test_ue, emmbuf);
139
+ ABTS_PTR_NOTNULL(tc, sendbuf);
140
+ rv = testenb_s1ap_send(s1ap1, sendbuf);
141
+ ABTS_INT_EQUAL(tc, OGS_OK, rv);
142
+
143
+ /* Receive ESM Information Request */
144
+ recvbuf = testenb_s1ap_read(s1ap1);
145
+ ABTS_PTR_NOTNULL(tc, recvbuf);
146
+ tests1ap_recv(test_ue, recvbuf);
147
+
148
+ /* Send ESM Information Response */
149
+ esmbuf = testesm_build_esm_information_response(sess);
150
+ ABTS_PTR_NOTNULL(tc, esmbuf);
151
+ sendbuf = test_s1ap_build_uplink_nas_transport(test_ue, esmbuf);
152
+ ABTS_PTR_NOTNULL(tc, sendbuf);
153
+ rv = testenb_s1ap_send(s1ap1, sendbuf);
154
+ ABTS_INT_EQUAL(tc, OGS_OK, rv);
155
+
156
+ /* Receive Initial Context Setup Request +
157
+ * Attach Accept +
158
+ * Activate Default Bearer Context Request */
159
+ recvbuf = testenb_s1ap_read(s1ap1);
160
+ ABTS_PTR_NOTNULL(tc, recvbuf);
161
+ tests1ap_recv(test_ue, recvbuf);
162
+
163
+ /* Send UE Capability Info Indication */
164
+ sendbuf = tests1ap_build_ue_radio_capability_info_indication(test_ue);
165
+ ABTS_PTR_NOTNULL(tc, sendbuf);
166
+ rv = testenb_s1ap_send(s1ap1, sendbuf);
167
+ ABTS_INT_EQUAL(tc, OGS_OK, rv);
168
+
169
+ /* Send Initial Context Setup Response */
170
+ sendbuf = test_s1ap_build_initial_context_setup_response(test_ue);
171
+ ABTS_PTR_NOTNULL(tc, sendbuf);
172
+ rv = testenb_s1ap_send(s1ap1, sendbuf);
173
+ ABTS_INT_EQUAL(tc, OGS_OK, rv);
174
+
175
+ /* Send Attach Complete + Activate default EPS bearer cotext accept */
176
+ test_ue->nr_cgi.cell_id = 0x1234502;
177
+ bearer = test_bearer_find_by_ue_ebi(test_ue, 5);
178
+ ogs_assert(bearer);
179
+ esmbuf = testesm_build_activate_default_eps_bearer_context_accept(
180
+ bearer, false);
181
+ ABTS_PTR_NOTNULL(tc, esmbuf);
182
+ emmbuf = testemm_build_attach_complete(test_ue, esmbuf);
183
+ ABTS_PTR_NOTNULL(tc, emmbuf);
184
+ sendbuf = test_s1ap_build_uplink_nas_transport(test_ue, emmbuf);
185
+ ABTS_PTR_NOTNULL(tc, sendbuf);
186
+ rv = testenb_s1ap_send(s1ap1, sendbuf);
187
+ ABTS_INT_EQUAL(tc, OGS_OK, rv);
188
+
189
+ /* Receive EMM information */
190
+ recvbuf = testenb_s1ap_read(s1ap1);
191
+ ABTS_PTR_NOTNULL(tc, recvbuf);
192
+ tests1ap_recv(test_ue, recvbuf);
193
+
194
+ /* Receive E-RAB Setup Request +
195
+ * Activate dedicated EPS bearer context request */
196
+ recvbuf = testenb_s1ap_read(s1ap1);
197
+ ABTS_PTR_NOTNULL(tc, recvbuf);
198
+ tests1ap_recv(test_ue, recvbuf);
199
+
200
+ /* Send E-RAB Setup Response */
201
+ bearer = test_bearer_find_by_ue_ebi(test_ue, 6);
202
+ ogs_assert(bearer);
203
+ sendbuf = test_s1ap_build_e_rab_setup_response(bearer);
204
+ ABTS_PTR_NOTNULL(tc, sendbuf);
205
+ rv = testenb_s1ap_send(s1ap1, sendbuf);
206
+ ABTS_INT_EQUAL(tc, OGS_OK, rv);
207
+
208
+ /* Send Activate dedicated EPS bearer context accept */
209
+ esmbuf = testesm_build_activate_dedicated_eps_bearer_context_accept(bearer);
210
+ ABTS_PTR_NOTNULL(tc, esmbuf);
211
+ sendbuf = test_s1ap_build_uplink_nas_transport(test_ue, esmbuf);
212
+ ABTS_PTR_NOTNULL(tc, sendbuf);
213
+ rv = testenb_s1ap_send(s1ap1, sendbuf);
214
+ ABTS_INT_EQUAL(tc, OGS_OK, rv);
215
+
216
+ ogs_msleep(100);
217
+
218
+ /* Send Path Switch Request */
219
+ test_ue->e_cgi.cell_id = 0xabcdef0;
220
+ test_ue->enb_ue_s1ap_id++;
221
+ bearer = ogs_list_first(&sess->bearer_list);
222
+ bearer->ebi = 5;
223
+ bearer->enb_s1u_addr = test_self()->gnb2_addr;
224
+ bearer->enb_s1u_addr6 = test_self()->gnb2_addr6;
225
+ bearer = ogs_list_next(bearer);
226
+ bearer->ebi = 5; /* Invalid Bearer with same EBI = 5 */
227
+ bearer->enb_s1u_addr = test_self()->gnb2_addr;
228
+ bearer->enb_s1u_addr6 = test_self()->gnb2_addr6;
229
+
230
+ sendbuf = test_s1ap_build_path_switch_request(test_ue);
231
+ ABTS_PTR_NOTNULL(tc, sendbuf);
232
+ rv = testenb_s1ap_send(s1ap2, sendbuf);
233
+ ABTS_INT_EQUAL(tc, OGS_OK, rv);
234
+
235
+ /* Receive Path Switch Ack */
236
+ recvbuf = testenb_s1ap_read(s1ap2);
237
+ ABTS_PTR_NOTNULL(tc, recvbuf);
238
+ tests1ap_recv(test_ue, recvbuf);
239
+
240
+ /* Receive End Mark */
241
+ recvbuf = test_gtpu_read(gtpu1);
242
+ ABTS_PTR_NOTNULL(tc, recvbuf);
243
+ ogs_pkbuf_free(recvbuf);
244
+
245
+ ogs_msleep(300);
246
+
247
+ /********** Remove Subscriber in Database */
248
+ ABTS_INT_EQUAL(tc, OGS_OK, test_db_remove_ue(test_ue));
249
+
250
+ /* Two eNB disonncect from SGW */
251
+ testgnb_gtpu_close(gtpu1);
252
+ testgnb_gtpu_close(gtpu2);
253
+
254
+ /* Two eNB disonncect from MME */
255
+ testenb_s1ap_close(s1ap1);
256
+ testenb_s1ap_close(s1ap2);
257
+
258
+ test_ue_remove(test_ue);
259
+}
260
+
261
abts_suite *test_epc_x2(abts_suite *suite)
262
{
263
suite = ADD_SUITE(suite)
264
265
abts_run_test(suite, test1_func, NULL);
266
+ abts_run_test(suite, test2_func, NULL);
267
268
return suite;
269
}
270