Changes of Revision 12

open5gs_2.5.7.dsc -> open5gs_2.5.8.dsc Changed
x
 
1
@@ -2,7 +2,7 @@
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-ausf, open5gs-udm, open5gs-pcf, open5gs-nssf, open5gs-bsf, open5gs-udr, open5gs, open5gs-dbg
4
 Architecture: any
5
-Version: 2.5.7
6
+Version: 2.5.8
7
 Maintainer: Harald Welte <laforge@gnumonks.org>
8
 Uploaders: Sukchan Lee <acetcom@gmail.com>
9
 Homepage: https://open5gs.org
10
@@ -31,8 +31,8 @@
11
  open5gs-udr deb net optional arch=any
12
  open5gs-upf deb net optional arch=any
13
 Checksums-Sha1:
14
- d6c5d6d5f14991e71f3563c490835e14abd4db90 13114432 open5gs_2.5.7.tar.xz
15
+ e897336da0dd76c1ec44566c805b0790198a4625 13114496 open5gs_2.5.8.tar.xz
16
 Checksums-Sha256:
17
- 9304b8df7b683fe9f2e3fa592297e75690285476e613f687c2e4d39c36bf4769 13114432 open5gs_2.5.7.tar.xz
18
+ f3ddbb82da91464a5ffdcb11f039fbf42b0dfe5b200796e8162f0bfb72430575 13114496 open5gs_2.5.8.tar.xz
19
 Files:
20
- 93d783f336c306276721bfd5dc88e74d 13114432 open5gs_2.5.7.tar.xz
21
+ 9788e2808cc95a64f41d19c33cfe8307 13114496 open5gs_2.5.8.tar.xz
22
open5gs_2.5.7.tar.xz/.tarball-version -> open5gs_2.5.8.tar.xz/.tarball-version Changed
4
 
1
@@ -1 +1 @@
2
-2.5.7
3
+2.5.8
4
open5gs_2.5.7.tar.xz/debian/changelog -> open5gs_2.5.8.tar.xz/debian/changelog Changed
35
 
1
@@ -1,3 +1,33 @@
2
+open5gs (2.5.8) unstable; urgency=medium
3
+
4
+  * Bug Fixed
5
+
6
+ -- Sukchan Lee <acetcom@gmail.com>  Mon, 23 Jan 2023 10:58:46 +0900
7
+
8
+open5gs (2.5.8~kinetic) kinetic; urgency=medium
9
+
10
+  * Bug Fixed
11
+
12
+ -- Sukchan Lee <acetcom@gmail.com>  Mon, 23 Jan 2023 10:57:23 +0900
13
+
14
+open5gs (2.5.8~jammy) jammy; urgency=medium
15
+
16
+  * Bug Fixed
17
+
18
+ -- Sukchan Lee <acetcom@gmail.com>  Mon, 23 Jan 2023 10:55:19 +0900
19
+
20
+open5gs (2.5.8~bionic) bionic; urgency=medium
21
+
22
+  * Bug Fixed
23
+
24
+ -- Sukchan Lee <acetcom@gmail.com>  Mon, 23 Jan 2023 10:53:56 +0900
25
+
26
+open5gs (2.5.8~focal) focal; urgency=medium
27
+
28
+  * Bug Fixed
29
+
30
+ -- Sukchan Lee <acetcom@gmail.com>  Mon, 23 Jan 2023 10:52:22 +0900
31
+
32
 open5gs (2.5.7) unstable; urgency=medium
33
 
34
   * Bug Fixed
35
open5gs_2.5.7.tar.xz/lib/app/ogs-context.c -> open5gs_2.5.8.tar.xz/lib/app/ogs-context.c Changed
14
 
1
@@ -425,10 +425,10 @@
2
                     const char *v = ogs_yaml_iter_value(&pool_iter);
3
                     if (v)
4
                         self.pool.defconfig.cluster_2048_pool = atoi(v);
5
-                } else if (!strcmp(pool_key, "8192")) {
6
+                } else if (!strcmp(pool_key, "16384")) {
7
                     const char *v = ogs_yaml_iter_value(&pool_iter);
8
                     if (v)
9
-                        self.pool.defconfig.cluster_8192_pool = atoi(v);
10
+                        self.pool.defconfig.cluster_16384_pool = atoi(v);
11
                 } else if (!strcmp(pool_key, "big")) {
12
                     const char *v = ogs_yaml_iter_value(&pool_iter);
13
                     if (v)
14
open5gs_2.5.7.tar.xz/lib/core/ogs-pkbuf.c -> open5gs_2.5.8.tar.xz/lib/core/ogs-pkbuf.c Changed
112
 
1
@@ -28,15 +28,27 @@
2
 #define OGS_CLUSTER_512_SIZE    512
3
 #define OGS_CLUSTER_1024_SIZE   1024
4
 #define OGS_CLUSTER_2048_SIZE   2048
5
-#define OGS_CLUSTER_8192_SIZE   8192
6
-#define OGS_CLUSTER_BIG_SIZE    1024*1024
7
+#define OGS_CLUSTER_16384_SIZE  16384
8
+
9
+/*
10
+ *
11
+ * In lib/core/ogs-kqueue.c:69
12
+ *   context->change_list = ogs_calloc(
13
+ *       pollset->capacity, sizeof(struct kevent));
14
+ *   1. pollset->capacity : 1024*16
15
+ *   2. sizeof(struct kevent) : 64
16
+ *   3. sizeof(ogs_pkbuf_t *) is headroom in ogs_calloc()
17
+ *
18
+ * So, we use BIG_SIZE : 1024*(16*64=1024)*64+8
19
+ */
20
+#define OGS_CLUSTER_BIG_SIZE    (1024*1024+sizeof(ogs_pkbuf_t *))
21
 
22
 typedef uint8_t ogs_cluster_128_tOGS_CLUSTER_128_SIZE;
23
 typedef uint8_t ogs_cluster_256_tOGS_CLUSTER_256_SIZE;
24
 typedef uint8_t ogs_cluster_512_tOGS_CLUSTER_512_SIZE;
25
 typedef uint8_t ogs_cluster_1024_tOGS_CLUSTER_1024_SIZE;
26
 typedef uint8_t ogs_cluster_2048_tOGS_CLUSTER_2048_SIZE;
27
-typedef uint8_t ogs_cluster_8192_tOGS_CLUSTER_8192_SIZE;
28
+typedef uint8_t ogs_cluster_16384_tOGS_CLUSTER_16384_SIZE;
29
 typedef uint8_t ogs_cluster_big_tOGS_CLUSTER_BIG_SIZE;
30
 
31
 OGS_STATIC_ASSERT(sizeof(ogs_cluster_128_t) % sizeof(void *) == 0);
32
@@ -44,7 +56,7 @@
33
 OGS_STATIC_ASSERT(sizeof(ogs_cluster_512_t) % sizeof(void *) == 0);
34
 OGS_STATIC_ASSERT(sizeof(ogs_cluster_1024_t) % sizeof(void *) == 0);
35
 OGS_STATIC_ASSERT(sizeof(ogs_cluster_2048_t) % sizeof(void *) == 0);
36
-OGS_STATIC_ASSERT(sizeof(ogs_cluster_8192_t) % sizeof(void *) == 0);
37
+OGS_STATIC_ASSERT(sizeof(ogs_cluster_16384_t) % sizeof(void *) == 0);
38
 OGS_STATIC_ASSERT(sizeof(ogs_cluster_big_t) % sizeof(void *) == 0);
39
 
40
 typedef struct ogs_pkbuf_pool_s {
41
@@ -56,7 +68,7 @@
42
     OGS_POOL(cluster_512, ogs_cluster_512_t);
43
     OGS_POOL(cluster_1024, ogs_cluster_1024_t);
44
     OGS_POOL(cluster_2048, ogs_cluster_2048_t);
45
-    OGS_POOL(cluster_8192, ogs_cluster_8192_t);
46
+    OGS_POOL(cluster_16384, ogs_cluster_16384_t);
47
     OGS_POOL(cluster_big, ogs_cluster_big_t);
48
 
49
     ogs_thread_mutex_t mutex;
50
@@ -104,7 +116,7 @@
51
     config->cluster_512_pool = 4096;
52
     config->cluster_1024_pool = 2048;
53
     config->cluster_2048_pool = 1024;
54
-    config->cluster_8192_pool = 512;
55
+    config->cluster_16384_pool = 512;
56
     config->cluster_big_pool = 8;
57
 #endif
58
 }
59
@@ -139,7 +151,7 @@
60
 
61
     tmp = config->cluster_128_pool + config->cluster_256_pool +
62
         config->cluster_512_pool + config->cluster_1024_pool +
63
-        config->cluster_2048_pool + config->cluster_8192_pool +
64
+        config->cluster_2048_pool + config->cluster_16384_pool +
65
         config->cluster_big_pool;
66
 
67
     ogs_pool_init(&pool->pkbuf, tmp);
68
@@ -150,7 +162,7 @@
69
     ogs_pool_init(&pool->cluster_512, config->cluster_512_pool);
70
     ogs_pool_init(&pool->cluster_1024, config->cluster_1024_pool);
71
     ogs_pool_init(&pool->cluster_2048, config->cluster_2048_pool);
72
-    ogs_pool_init(&pool->cluster_8192, config->cluster_8192_pool);
73
+    ogs_pool_init(&pool->cluster_16384, config->cluster_16384_pool);
74
     ogs_pool_init(&pool->cluster_big, config->cluster_big_pool);
75
 #endif
76
 
77
@@ -188,7 +200,7 @@
78
     ogs_pool_final(&pool->cluster_512);
79
     ogs_pool_final(&pool->cluster_1024);
80
     ogs_pool_final(&pool->cluster_2048);
81
-    ogs_pool_final(&pool->cluster_8192);
82
+    ogs_pool_final(&pool->cluster_16384);
83
     ogs_pool_final(&pool->cluster_big);
84
 
85
     ogs_thread_mutex_destroy(&pool->mutex);
86
@@ -378,10 +390,10 @@
87
         ogs_pool_alloc(&pool->cluster_2048, (ogs_cluster_2048_t**)&buffer);
88
         ogs_expect_or_return_val(buffer, NULL);
89
         cluster->size = OGS_CLUSTER_2048_SIZE;
90
-    } else if (size <= OGS_CLUSTER_8192_SIZE) {
91
-        ogs_pool_alloc(&pool->cluster_8192, (ogs_cluster_8192_t**)&buffer);
92
+    } else if (size <= OGS_CLUSTER_16384_SIZE) {
93
+        ogs_pool_alloc(&pool->cluster_16384, (ogs_cluster_16384_t**)&buffer);
94
         ogs_expect_or_return_val(buffer, NULL);
95
-        cluster->size = OGS_CLUSTER_8192_SIZE;
96
+        cluster->size = OGS_CLUSTER_16384_SIZE;
97
     } else if (size <= OGS_CLUSTER_BIG_SIZE) {
98
         ogs_pool_alloc(&pool->cluster_big, (ogs_cluster_big_t**)&buffer);
99
         ogs_expect_or_return_val(buffer, NULL);
100
@@ -419,9 +431,9 @@
101
         ogs_pool_free(
102
                 &pool->cluster_2048, (ogs_cluster_2048_t*)cluster->buffer);
103
         break;
104
-    case OGS_CLUSTER_8192_SIZE:
105
+    case OGS_CLUSTER_16384_SIZE:
106
         ogs_pool_free(
107
-                &pool->cluster_8192, (ogs_cluster_8192_t*)cluster->buffer);
108
+                &pool->cluster_16384, (ogs_cluster_16384_t*)cluster->buffer);
109
         break;
110
     case OGS_CLUSTER_BIG_SIZE:
111
         ogs_pool_free(&pool->cluster_big, (ogs_cluster_big_t*)cluster->buffer);
112
open5gs_2.5.7.tar.xz/lib/core/ogs-pkbuf.h -> open5gs_2.5.8.tar.xz/lib/core/ogs-pkbuf.h Changed
10
 
1
@@ -68,7 +68,7 @@
2
     int cluster_512_pool;
3
     int cluster_1024_pool;
4
     int cluster_2048_pool;
5
-    int cluster_8192_pool;
6
+    int cluster_16384_pool;
7
     int cluster_big_pool;
8
 } ogs_pkbuf_config_t;
9
 
10
open5gs_2.5.7.tar.xz/lib/core/ogs-strings.h -> open5gs_2.5.8.tar.xz/lib/core/ogs-strings.h Changed
10
 
1
@@ -54,7 +54,7 @@
2
 extern "C" {
3
 #endif
4
 
5
-#define OGS_HUGE_LEN        8192
6
+#define OGS_HUGE_LEN        16384
7
 
8
 #if defined(_WIN32)
9
 #define ogs_strtok_r strtok_s
10
open5gs_2.5.7.tar.xz/lib/pfcp/context.c -> open5gs_2.5.8.tar.xz/lib/pfcp/context.c Changed
47
 
1
@@ -929,6 +929,20 @@
2
             self.object_teid_hash, &teid, sizeof(teid));
3
 }
4
 
5
+int ogs_pfcp_object_count_by_teid(ogs_pfcp_sess_t *sess, uint32_t teid)
6
+{
7
+    ogs_pfcp_pdr_t *pdr = NULL;
8
+    int count = 0;
9
+
10
+    ogs_assert(sess);
11
+
12
+    ogs_list_for_each(&sess->pdr_list, pdr) {
13
+        if (pdr->f_teid.teid == teid) count++;
14
+    }
15
+
16
+    return count;
17
+}
18
+
19
 ogs_pfcp_pdr_t *ogs_pfcp_pdr_find_by_choose_id(
20
         ogs_pfcp_sess_t *sess, uint8_t choose_id)
21
 {
22
@@ -997,9 +1011,21 @@
23
 
24
     ogs_pfcp_rule_remove_all(pdr);
25
 
26
-    if (pdr->hash.teid.len)
27
-        ogs_hash_set(self.object_teid_hash,
28
-                &pdr->hash.teid.key, pdr->hash.teid.len, NULL);
29
+    if (pdr->hash.teid.len) {
30
+        /*
31
+         * Issues #2003
32
+         *
33
+         * In 5G Core, two PDRs can use different QFIDs for the same TEID.
34
+         * So, before deleting a TEID, we should check if there is a PDR
35
+         * using the same TEID.
36
+         *
37
+         * Since this PDR has already been deleted with ogs_list_remove() above,
38
+         * if the current list has a TEID count of 0, there are no other PDRs.
39
+         */
40
+        if (ogs_pfcp_object_count_by_teid(pdr->sess, pdr->f_teid.teid) == 0)
41
+            ogs_hash_set(self.object_teid_hash,
42
+                    &pdr->hash.teid.key, pdr->hash.teid.len, NULL);
43
+    }
44
 
45
     if (pdr->dnn)
46
         ogs_free(pdr->dnn);
47
open5gs_2.5.7.tar.xz/lib/pfcp/context.h -> open5gs_2.5.8.tar.xz/lib/pfcp/context.h Changed
9
 
1
@@ -397,6 +397,7 @@
2
 void ogs_pfcp_object_teid_hash_set(
3
         ogs_pfcp_object_type_e type, ogs_pfcp_pdr_t *pdr);
4
 ogs_pfcp_object_t *ogs_pfcp_object_find_by_teid(uint32_t teid);
5
+int ogs_pfcp_object_count_by_teid(ogs_pfcp_sess_t *sess, uint32_t teid);
6
 
7
 ogs_pfcp_pdr_t *ogs_pfcp_pdr_find_by_choose_id(
8
         ogs_pfcp_sess_t *sess, uint8_t choose_id);
9
open5gs_2.5.7.tar.xz/lib/pfcp/rule-match.c -> open5gs_2.5.8.tar.xz/lib/pfcp/rule-match.c Changed
23
 
1
@@ -143,8 +143,8 @@
2
             proto = ip_h->ip_p;
3
             ip_hlen = (ip_h->ip_hl)*4;
4
 
5
-            src_addr = &ip_h->ip_src.s_addr;
6
-            dst_addr = &ip_h->ip_dst.s_addr;
7
+            src_addr = (void *)&ip_h->ip_src.s_addr;
8
+            dst_addr = (void *)&ip_h->ip_dst.s_addr;
9
             addr_len = OGS_IPV4_LEN;
10
         } else if (ip_h->ip_v == 6) {
11
             ip_h = NULL;
12
@@ -152,8 +152,8 @@
13
 
14
             decode_ipv6_header(ip6_h, &proto, &ip_hlen);
15
 
16
-            src_addr = (uint32_t *)ip6_h->ip6_src.s6_addr;
17
-            dst_addr = (uint32_t *)ip6_h->ip6_dst.s6_addr;
18
+            src_addr = (void *)ip6_h->ip6_src.s6_addr;
19
+            dst_addr = (void *)ip6_h->ip6_dst.s6_addr;
20
             addr_len = OGS_IPV6_LEN;
21
         } else {
22
             ogs_error("Invalid packet IP version:%d, Packet Length:%d",
23
open5gs_2.5.7.tar.xz/lib/proto/types.h -> open5gs_2.5.8.tar.xz/lib/proto/types.h Changed
10
 
1
@@ -51,7 +51,7 @@
2
 
3
 #define OGS_MAX_NUM_OF_GTPU_RESOURCE    4
4
 
5
-#define OGS_MAX_SDU_LEN                 8192
6
+#define OGS_MAX_SDU_LEN                 OGS_HUGE_LEN
7
 #define OGS_MAX_PKT_LEN                 2048
8
 #define OGS_PLMN_ID_LEN                 3
9
 #define OGS_MAX_PLMN_ID_BCD_LEN         6
10
open5gs_2.5.7.tar.xz/lib/sbi/client.c -> open5gs_2.5.8.tar.xz/lib/sbi/client.c Changed
10
 
1
@@ -372,6 +372,8 @@
2
         request->h.uri = uri;
3
     }
4
 
5
+    curl_easy_setopt(conn->easy, CURLOPT_BUFFERSIZE, OGS_MAX_SDU_LEN*2);
6
+
7
     /* HTTP Method */
8
     if (strcmp(request->h.method, OGS_SBI_HTTP_METHOD_PUT) == 0 ||
9
         strcmp(request->h.method, OGS_SBI_HTTP_METHOD_PATCH) == 0 ||
10
open5gs_2.5.7.tar.xz/meson.build -> open5gs_2.5.8.tar.xz/meson.build Changed
19
 
1
@@ -16,7 +16,7 @@
2
 # along with this program.  If not, see <https://www.gnu.org/licenses/>.
3
 
4
 project('open5gs', 'c', 'cpp',
5
-    version : '2.5.7',
6
+    version : '2.5.8',
7
     license : 'AGPL-3.0-or-later',
8
     meson_version : '>= 0.43.0',
9
     default_options : 
10
@@ -24,7 +24,7 @@
11
     ,
12
 )
13
 
14
-libogslib_version = '2.5.7'
15
+libogslib_version = '2.5.8'
16
 
17
 prefix = get_option('prefix')
18
 bindir = join_paths(prefix, get_option('bindir'))
19
open5gs_2.5.7.tar.xz/src/amf/nas-path.c -> open5gs_2.5.8.tar.xz/src/amf/nas-path.c Changed
9
 
1
@@ -655,6 +655,7 @@
2
         rv = nas_5gs_send_to_gnb(amf_ue, ngapbuf);
3
         ogs_expect(rv == OGS_OK);
4
     } else if (gmmbuf) {
5
+        ogs_pkbuf_free(n2smbuf);
6
         ngapbuf = ngap_build_downlink_nas_transport(
7
                 ran_ue, gmmbuf, false, false);
8
         if (!ngapbuf) {
9
open5gs_2.5.7.tar.xz/src/scp/sbi-path.c -> open5gs_2.5.8.tar.xz/src/scp/sbi-path.c Changed
10
 
1
@@ -552,7 +552,7 @@
2
             ogs_error("No NF-Instance ID");
3
     }
4
 
5
-    ogs_assert(true == ogs_sbi_server_send_response(stream, response));
6
+    ogs_expect(true == ogs_sbi_server_send_response(stream, response));
7
     scp_assoc_remove(assoc);
8
 
9
     return OGS_OK;
10
open5gs_2.5.7.tar.xz/src/upf/gtp-path.c -> open5gs_2.5.8.tar.xz/src/upf/gtp-path.c Changed
19
 
1
@@ -421,7 +421,7 @@
2
         ogs_assert(far);
3
 
4
         if (ip_h->ip_v == 4 && sess->ipv4) {
5
-            src_addr = &ip_h->ip_src.s_addr;
6
+            src_addr = (void *)&ip_h->ip_src.s_addr;
7
             ogs_assert(src_addr);
8
 
9
             /*
10
@@ -452,7 +452,7 @@
11
         } else if (ip_h->ip_v == 6 && sess->ipv6) {
12
             struct ip6_hdr *ip6_h = (struct ip6_hdr *)pkbuf->data;
13
             ogs_assert(ip6_h);
14
-            src_addr = (uint32_t *)ip6_h->ip6_src.s6_addr;
15
+            src_addr = (void *)ip6_h->ip6_src.s6_addr;
16
             ogs_assert(src_addr);
17
 
18
             /*
19
open5gs_2.5.7.tar.xz/tests/registration/multi-ue-test.c -> open5gs_2.5.8.tar.xz/tests/registration/multi-ue-test.c Changed
9
 
1
@@ -58,6 +58,7 @@
2
     /* Receive NG-Setup Response */
3
     recvbuf = testgnb_ngap_read(ngap);
4
     ABTS_PTR_NOTNULL(tc, recvbuf);
5
+    ogs_pkbuf_free(recvbuf);
6
 
7
     for (i = 0; i < NUM_OF_TEST_UE; i++) {
8
         uint64_t imsi_index;
9
open5gs_2.5.7.tar.xz/tests/vonr/simple-test.c -> open5gs_2.5.8.tar.xz/tests/vonr/simple-test.c Changed
22
 
1
@@ -423,6 +423,20 @@
2
     /* Test Bearer Remove */
3
     test_bearer_remove(qos_flow);
4
 
5
+    /* Send GTP-U ICMP Packet */
6
+    qos_flow = test_qos_flow_find_by_qfi(sess, 1);
7
+    ogs_assert(qos_flow);
8
+    rv = test_gtpu_send_ping(gtpu, qos_flow, TEST_PING_IPV4);
9
+    ABTS_INT_EQUAL(tc, OGS_OK, rv);
10
+
11
+    /* Receive GTP-U ICMP Packet */
12
+    recvbuf = testgnb_gtpu_read(gtpu);
13
+    ABTS_PTR_NOTNULL(tc, recvbuf);
14
+    ogs_pkbuf_free(recvbuf);
15
+
16
+    /* Wait for PDU session resource modify complete */
17
+    ogs_msleep(100);
18
+
19
     /* Send UEContextReleaseRequest */
20
     sendbuf = testngap_build_ue_context_release_request(test_ue,
21
             NGAP_Cause_PR_radioNetwork, NGAP_CauseRadioNetwork_user_inactivity,
22