Changes of Revision 920

open5gs_2.7.2.4573.3396.202412262026.dsc Deleted
x
 
1
@@ -1,39 +0,0 @@
2
-Format: 3.0 (native)
3
-Source: open5gs
4
-Binary: open5gs-common, open5gs-mme, open5gs-sgwc, open5gs-smf, open5gs-amf, open5gs-sgwu, open5gs-upf, open5gs-hss, open5gs-pcrf, open5gs-nrf, open5gs-scp, open5gs-sepp, open5gs-ausf, open5gs-udm, open5gs-pcf, open5gs-nssf, open5gs-bsf, open5gs-udr, open5gs, open5gs-dbg
5
-Architecture: any
6
-Version: 2.7.2.4573.3396.202412262026
7
-Maintainer: Harald Welte <laforge@gnumonks.org>
8
-Uploaders: Sukchan Lee <acetcom@gmail.com>
9
-Homepage: https://open5gs.org
10
-Standards-Version: 4.3.0
11
-Vcs-Browser: https://github.com/open5gs/open5gs
12
-Vcs-Git: git://github.com/open5gs/open5gs
13
-Build-Depends: debhelper (>= 11), git, pkg-config, meson (>= 0.43.0), cmake, flex, bison, libgnutls28-dev, libgcrypt-dev, libssl-dev, libidn11-dev, libmongoc-dev, libbson-dev, libsctp-dev, libyaml-dev, libmicrohttpd-dev, libcurl4-gnutls-dev, libnghttp2-dev, libtins-dev, libtalloc-dev
14
-Package-List:
15
- open5gs deb net optional arch=any
16
- open5gs-amf deb net optional arch=any
17
- open5gs-ausf deb net optional arch=any
18
- open5gs-bsf deb net optional arch=any
19
- open5gs-common deb net optional arch=any
20
- open5gs-dbg deb net optional arch=any
21
- open5gs-hss deb net optional arch=any
22
- open5gs-mme deb net optional arch=any
23
- open5gs-nrf deb net optional arch=any
24
- open5gs-nssf deb net optional arch=any
25
- open5gs-pcf deb net optional arch=any
26
- open5gs-pcrf deb net optional arch=any
27
- open5gs-scp deb net optional arch=any
28
- open5gs-sepp deb net optional arch=any
29
- open5gs-sgwc deb net optional arch=any
30
- open5gs-sgwu deb net optional arch=any
31
- open5gs-smf deb net optional arch=any
32
- open5gs-udm deb net optional arch=any
33
- open5gs-udr deb net optional arch=any
34
- open5gs-upf deb net optional arch=any
35
-Checksums-Sha1:
36
- 75ba4ca4b9dab98b7c63be745f4e20c67a58753c 14517020 open5gs_2.7.2.4573.3396.202412262026.tar.xz
37
-Checksums-Sha256:
38
- a0e51d6fd95c410ebdc0452b154f6233fcfe3625e446efad12fd9748a4b524c3 14517020 open5gs_2.7.2.4573.3396.202412262026.tar.xz
39
-Files:
40
- fb93d2ff9f0086e5149749a18bbd567d 14517020 open5gs_2.7.2.4573.3396.202412262026.tar.xz
41
open5gs_2.7.2.4578.35a1.202412272026.dsc Added
41
 
1
@@ -0,0 +1,39 @@
2
+Format: 3.0 (native)
3
+Source: open5gs
4
+Binary: open5gs-common, open5gs-mme, open5gs-sgwc, open5gs-smf, open5gs-amf, open5gs-sgwu, open5gs-upf, open5gs-hss, open5gs-pcrf, open5gs-nrf, open5gs-scp, open5gs-sepp, open5gs-ausf, open5gs-udm, open5gs-pcf, open5gs-nssf, open5gs-bsf, open5gs-udr, open5gs, open5gs-dbg
5
+Architecture: any
6
+Version: 2.7.2.4578.35a1.202412272026
7
+Maintainer: Harald Welte <laforge@gnumonks.org>
8
+Uploaders: Sukchan Lee <acetcom@gmail.com>
9
+Homepage: https://open5gs.org
10
+Standards-Version: 4.3.0
11
+Vcs-Browser: https://github.com/open5gs/open5gs
12
+Vcs-Git: git://github.com/open5gs/open5gs
13
+Build-Depends: debhelper (>= 11), git, pkg-config, meson (>= 0.43.0), cmake, flex, bison, libgnutls28-dev, libgcrypt-dev, libssl-dev, libidn11-dev, libmongoc-dev, libbson-dev, libsctp-dev, libyaml-dev, libmicrohttpd-dev, libcurl4-gnutls-dev, libnghttp2-dev, libtins-dev, libtalloc-dev
14
+Package-List:
15
+ open5gs deb net optional arch=any
16
+ open5gs-amf deb net optional arch=any
17
+ open5gs-ausf deb net optional arch=any
18
+ open5gs-bsf deb net optional arch=any
19
+ open5gs-common deb net optional arch=any
20
+ open5gs-dbg deb net optional arch=any
21
+ open5gs-hss deb net optional arch=any
22
+ open5gs-mme deb net optional arch=any
23
+ open5gs-nrf deb net optional arch=any
24
+ open5gs-nssf deb net optional arch=any
25
+ open5gs-pcf deb net optional arch=any
26
+ open5gs-pcrf deb net optional arch=any
27
+ open5gs-scp deb net optional arch=any
28
+ open5gs-sepp deb net optional arch=any
29
+ open5gs-sgwc deb net optional arch=any
30
+ open5gs-sgwu deb net optional arch=any
31
+ open5gs-smf deb net optional arch=any
32
+ open5gs-udm deb net optional arch=any
33
+ open5gs-udr deb net optional arch=any
34
+ open5gs-upf deb net optional arch=any
35
+Checksums-Sha1:
36
+ 9ab7f28ac658fd22319a490ab61661954d1be02d 14516500 open5gs_2.7.2.4578.35a1.202412272026.tar.xz
37
+Checksums-Sha256:
38
+ 4eda929ae51c9976be5ab18a51257ddc4632f9e192b64fdb4cf40c45407411e6 14516500 open5gs_2.7.2.4578.35a1.202412272026.tar.xz
39
+Files:
40
+ f5fdcd906548059b3ae3451f4e3ee7ab 14516500 open5gs_2.7.2.4578.35a1.202412272026.tar.xz
41
open5gs_2.7.2.4573.3396.202412262026.tar.xz/.tarball-version -> open5gs_2.7.2.4578.35a1.202412272026.tar.xz/.tarball-version Changed
4
 
1
@@ -1 +1 @@
2
-2.7.2.4573-3396.202412262026
3
+2.7.2.4578-35a1.202412272026
4
open5gs_2.7.2.4573.3396.202412262026.tar.xz/debian/changelog -> open5gs_2.7.2.4578.35a1.202412272026.tar.xz/debian/changelog Changed
12
 
1
@@ -1,8 +1,8 @@
2
-open5gs (2.7.2.4573.3396.202412262026) unstable; urgency=medium
3
+open5gs (2.7.2.4578.35a1.202412272026) unstable; urgency=medium
4
 
5
   * Automatically generated changelog entry for building the Osmocom nightly feed
6
 
7
- -- Osmocom OBS scripts <info@osmocom.org>  Thu, 26 Dec 2024 20:27:52 +0000
8
+ -- Osmocom OBS scripts <info@osmocom.org>  Fri, 27 Dec 2024 20:27:55 +0000
9
 
10
 open5gs (2.7.2) unstable; urgency=medium
11
 
12
open5gs_2.7.2.4573.3396.202412262026.tar.xz/lib/core/ogs-sockaddr.c -> open5gs_2.7.2.4578.35a1.202412272026.tar.xz/lib/core/ogs-sockaddr.c Changed
33
 
1
@@ -666,3 +666,31 @@
2
 
3
     return ogs_strdup(buf);
4
 }
5
+
6
+char *ogs_sockaddr_strdup(ogs_sockaddr_t *sa_list)
7
+{
8
+    char dumpstrOGS_HUGE_LEN;
9
+    char *p, *last;
10
+    ogs_sockaddr_t *addr = NULL;
11
+
12
+    last = dumpstr + OGS_HUGE_LEN;
13
+    p = dumpstr;
14
+
15
+    addr = (ogs_sockaddr_t *)sa_list;
16
+    while (addr) {
17
+        char bufOGS_ADDRSTRLEN;
18
+        p = ogs_slprintf(p, last, "%s:%d ",
19
+                OGS_ADDR(addr, buf), OGS_PORT(addr));
20
+        addr = addr->next;
21
+    }
22
+
23
+    if (p > dumpstr) {
24
+        /* If there is more than one addr, remove the last character */
25
+        *(p-1) = 0;
26
+
27
+        return ogs_strdup(dumpstr);
28
+    }
29
+
30
+    /* No address */
31
+    return NULL;
32
+}
33
open5gs_2.7.2.4573.3396.202412262026.tar.xz/lib/core/ogs-sockaddr.h -> open5gs_2.7.2.4578.35a1.202412272026.tar.xz/lib/core/ogs-sockaddr.h Changed
9
 
1
@@ -125,6 +125,7 @@
2
 
3
 char *ogs_gethostname(ogs_sockaddr_t *addr);
4
 char *ogs_ipstrdup(ogs_sockaddr_t *addr);
5
+char *ogs_sockaddr_strdup(ogs_sockaddr_t *sa_list);
6
 
7
 #ifdef __cplusplus
8
 }
9
open5gs_2.7.2.4573.3396.202412262026.tar.xz/lib/sctp/ogs-lksctp.c -> open5gs_2.7.2.4578.35a1.202412272026.tar.xz/lib/sctp/ogs-lksctp.c Changed
201
 
1
@@ -54,6 +54,37 @@
2
 }
3
 
4
 /**
5
+ * Determines the appropriate SCTP socket family based on the provided
6
+ * address list.
7
+ * Returns AF_INET6 if any address in sa_list is IPv6, otherwise AF_INET.
8
+ * Returns AF_UNSPEC if sa_list is NULL or no suitable family is found.
9
+ *
10
+ * @param sa_list List of addresses to check.
11
+ * @return AF_INET6, AF_INET, or AF_UNSPEC if no suitable family is found.
12
+ */
13
+static int sctp_socket_family_from_addr_list(const ogs_sockaddr_t *sa_list)
14
+{
15
+    const ogs_sockaddr_t *addr = sa_list;
16
+
17
+    if (!sa_list) {
18
+        ogs_error("Address list is NULL");
19
+        return AF_UNSPEC;
20
+    }
21
+
22
+    /* Iterate through the address list to find an IPv6 address */
23
+    while (addr != NULL) {
24
+        if (addr->ogs_sa_family == AF_INET6) {
25
+            return AF_INET6;
26
+        }
27
+        addr = addr->next;
28
+    }
29
+
30
+    /* Default to AF_INET if no IPv6 address is found */
31
+    return AF_INET;
32
+}
33
+
34
+
35
+/**
36
  * @brief
37
  *   1) Count the number of addresses in sa_list and determine the total
38
  *      buffer size.
39
@@ -133,7 +164,8 @@
40
     ogs_sockopt_t *socket_option)
41
 {
42
     int rv;
43
-    char bufOGS_ADDRSTRLEN;
44
+    char *sa_list_str = NULL;
45
+    int sa_family;
46
     ogs_sock_t *new_sock = NULL;
47
     ogs_sockopt_t option;
48
 
49
@@ -143,6 +175,7 @@
50
     int total_len = 0;
51
 
52
     ogs_assert(sa_list);
53
+    sa_list_str = ogs_sockaddr_strdup(sa_list);
54
 
55
     /* Initialize socket options. */
56
     ogs_sockopt_init(&option);
57
@@ -159,20 +192,22 @@
58
                    sa_list, &addr_count, &total_len);
59
     if (!addr_buf) {
60
         /* The helper logs errors, so just return. */
61
-        return NULL;
62
+        ogs_error("create_continuous_address_buffer() failed");
63
+        goto err;
64
     }
65
 
66
-    /*
67
-     * Create an SCTP socket using the family of the first address
68
-     * in sa_list.
69
-     */
70
-    new_sock = ogs_sctp_socket(sa_list->ogs_sa_family, type);
71
-    if (!new_sock) {
72
+    /* Determine the appropriate address family from sa_list */
73
+    sa_family = sctp_socket_family_from_addr_list(sa_list);
74
+    if (sa_family == AF_UNSPEC) {
75
         ogs_log_message(OGS_LOG_ERROR, ogs_socket_errno,
76
-                        "sctp_server() Failed to create SCTP socket");
77
+                        "sctp_client() No suitable address family found "
78
+                        "in sa_list");
79
         goto err;
80
     }
81
 
82
+    /* Create the SCTP socket using the determined address family */
83
+    new_sock = ogs_sctp_socket(sa_family, type);
84
+
85
     /* Configure SCTP-specific options. */
86
     rv = ogs_sctp_peer_addr_params(new_sock, &option);
87
     ogs_assert(rv == OGS_OK);
88
@@ -214,8 +249,8 @@
89
     /*
90
      * Log debug info: only the first address is shown here as an example.
91
      */
92
-    ogs_debug("sctp_server() %s:%d (bound %d addresses)",
93
-              OGS_ADDR(sa_list, buf), OGS_PORT(sa_list), addr_count);
94
+    ogs_debug("sctp_server() %s (bound %d addresses)", sa_list_str, addr_count);
95
+    ogs_free(sa_list_str);
96
 
97
     /* Start listening for connections. */
98
     rv = ogs_sock_listen(new_sock);
99
@@ -236,8 +271,9 @@
100
      * in sa_list (customize as needed).
101
      */
102
     ogs_log_message(OGS_LOG_ERROR, ogs_socket_errno,
103
-                    "sctp_server() %s:%d failed",
104
-                    OGS_ADDR(sa_list, buf), OGS_PORT(sa_list));
105
+                    "sctp_server() %s failed", sa_list_str);
106
+    ogs_free(sa_list_str);
107
+
108
     return NULL;
109
 }
110
 
111
@@ -248,7 +284,8 @@
112
     ogs_sockopt_t *socket_option)
113
 {
114
     int rv;
115
-    char bufOGS_ADDRSTRLEN;
116
+    char *sa_list_str = NULL;
117
+    int sa_family;
118
     ogs_sock_t *new_sock = NULL;
119
     ogs_sockopt_t option;
120
 
121
@@ -263,6 +300,7 @@
122
     int local_len = 0;
123
 
124
     ogs_assert(sa_list);
125
+    sa_list_str = ogs_sockaddr_strdup(sa_list);
126
 
127
     /* Initialize socket options and copy user-provided options if present. */
128
     ogs_sockopt_init(&option);
129
@@ -276,21 +314,22 @@
130
     remote_buf = create_continuous_address_buffer(
131
                      sa_list, &remote_count, &remote_len);
132
     if (!remote_buf) {
133
-        /* Logs and returns NULL on failure. */
134
-        return NULL;
135
+        ogs_error("create_continuous_address_buffer() failed");
136
+        goto err;
137
     }
138
 
139
-    /*
140
-     * Create the SCTP socket using the address family of the first remote
141
-     * address.
142
-     */
143
-    new_sock = ogs_sctp_socket(sa_list->ogs_sa_family, type);
144
-    if (!new_sock) {
145
+    /* Determine the appropriate address family from sa_list */
146
+    sa_family = sctp_socket_family_from_addr_list(sa_list);
147
+    if (sa_family == AF_UNSPEC) {
148
         ogs_log_message(OGS_LOG_ERROR, ogs_socket_errno,
149
-                        "sctp_client() Failed to create SCTP socket");
150
+                    "sctp_client() No suitable address family found "
151
+                    "in sa_list");
152
         goto err;
153
     }
154
 
155
+    /* Create the SCTP socket using the determined address family */
156
+    new_sock = ogs_sctp_socket(sa_family, type);
157
+
158
     /* Configure SCTP-specific options. */
159
     rv = ogs_sctp_peer_addr_params(new_sock, &option);
160
     ogs_assert(rv == OGS_OK);
161
@@ -352,8 +391,8 @@
162
     }
163
 
164
     /* Debug log for the first remote address. */
165
-    ogs_debug("sctp_client() connected to %s:%d",
166
-              OGS_ADDR(sa_list, buf), OGS_PORT(sa_list));
167
+    ogs_debug("sctp_client() connected to %s", sa_list_str);
168
+    ogs_free(sa_list_str);
169
 
170
     /* Success: free buffers and return the new socket. */
171
     if (local_buf)
172
@@ -375,15 +414,16 @@
173
      * Adjust to your needs, e.g., log local too if necessary.
174
      */
175
     ogs_log_message(OGS_LOG_ERROR, ogs_socket_errno,
176
-                    "sctp_client() %s:%d failed",
177
-                    OGS_ADDR(sa_list, buf),
178
-                    OGS_PORT(sa_list));
179
+                    "sctp_client() %s failed", sa_list_str);
180
+    ogs_free(sa_list_str);
181
+
182
     return NULL;
183
 }
184
 
185
 int ogs_sctp_connect(ogs_sock_t *sock, ogs_sockaddr_t *sa_list)
186
 {
187
     ogs_sockaddr_t *addr;
188
+    char *sa_list_str = NULL;
189
     char bufOGS_ADDRSTRLEN;
190
 
191
     ogs_assert(sock);
192
@@ -404,9 +444,11 @@
193
     }
194
 
195
     if (addr == NULL) {
196
+        sa_list_str = ogs_sockaddr_strdup(sa_list);
197
         ogs_log_message(OGS_LOG_ERROR, ogs_socket_errno,
198
-                "sctp_connect() %s:%d failed",
199
-                OGS_ADDR(sa_list, buf), OGS_PORT(sa_list));
200
+                "sctp_connect() %s failed", sa_list_str);
201
open5gs_2.7.2.4573.3396.202412262026.tar.xz/lib/sctp/ogs-usrsctp.c -> open5gs_2.7.2.4578.35a1.202412272026.tar.xz/lib/sctp/ogs-usrsctp.c Changed
103
 
1
@@ -93,6 +93,7 @@
2
         int type, ogs_sockaddr_t *sa_list, ogs_sockopt_t *socket_option)
3
 {
4
     int rv;
5
+    char *sa_list_str = NULL;
6
     char bufOGS_ADDRSTRLEN;
7
 
8
     ogs_sock_t *new = NULL;
9
@@ -142,8 +143,10 @@
10
     }
11
 
12
     if (addr == NULL) {
13
-        ogs_error("sctp_server %s:%d failed",
14
-                OGS_ADDR(sa_list, buf), OGS_PORT(sa_list));
15
+        sa_list_str = ogs_sockaddr_strdup(sa_list);
16
+        ogs_error("sctp_server %s failed", sa_list_str);
17
+        ogs_free(sa_list_str);
18
+
19
         return NULL;
20
     }
21
 
22
@@ -161,6 +164,7 @@
23
         ogs_sockopt_t *socket_option)
24
 {
25
     int rv;
26
+    char *sa_list_str = NULL;
27
     char bufOGS_ADDRSTRLEN;
28
 
29
     ogs_sock_t *new = NULL;
30
@@ -210,8 +214,10 @@
31
     }
32
 
33
     if (addr == NULL) {
34
-        ogs_error("sctp_client %s:%d failed", 
35
-                OGS_ADDR(sa_list, buf), OGS_PORT(sa_list));
36
+        sa_list_str = ogs_sockaddr_strdup(sa_list);
37
+        ogs_error("sctp_client %s failed", sa_list_str);
38
+        ogs_free(sa_list_str);
39
+
40
         return NULL;
41
     }
42
 
43
@@ -221,7 +227,7 @@
44
 int ogs_sctp_bind(ogs_sock_t *sock, ogs_sockaddr_t *sa_list)
45
 {
46
     struct socket *socket = (struct socket *)sock;
47
-    char bufOGS_ADDRSTRLEN;
48
+    char *sa_list_str = NULL;
49
     socklen_t addrlen;
50
 
51
     ogs_assert(socket);
52
@@ -231,13 +237,16 @@
53
     ogs_assert(addrlen);
54
 
55
     if (usrsctp_bind(socket, &sa_list->sa, addrlen) != 0) {
56
-        ogs_error("sctp_bind() %s:%d failed",
57
-                OGS_ADDR(sa_list, buf), OGS_PORT(sa_list));
58
+        sa_list_str = ogs_sockaddr_strdup(sa_list);
59
+        ogs_error("sctp_bind() %s failed", sa_list_str);
60
+        ogs_free(sa_list_str);
61
+
62
         return OGS_ERROR;
63
     }
64
 
65
-    ogs_debug("sctp_bind() %s:%d",
66
-            OGS_ADDR(sa_list, buf), OGS_PORT(sa_list));
67
+    sa_list_str = ogs_sockaddr_strdup(sa_list);
68
+    ogs_debug("sctp_bind() %s", sa_list_str);
69
+    ogs_free(sa_list_str);
70
 
71
     return OGS_OK;
72
 }
73
@@ -245,7 +254,7 @@
74
 int ogs_sctp_connect(ogs_sock_t *sock, ogs_sockaddr_t *sa_list)
75
 {
76
     struct socket *socket = (struct socket *)sock;
77
-    char bufOGS_ADDRSTRLEN;
78
+    char *sa_list_str = NULL;
79
     socklen_t addrlen;
80
 
81
     ogs_assert(socket);
82
@@ -255,13 +264,16 @@
83
     ogs_assert(addrlen);
84
 
85
     if (usrsctp_connect(socket, &sa_list->sa, addrlen) != 0) {
86
-        ogs_error("sctp_connect() %s:%d",
87
-                OGS_ADDR(sa_list, buf), OGS_PORT(sa_list));
88
+        sa_list_str = ogs_sockaddr_strdup(sa_list);
89
+        ogs_error("sctp_connect() %s", sa_list_str);
90
+        ogs_free(sa_list_str);
91
+
92
         return OGS_ERROR;
93
     }
94
 
95
-    ogs_debug("sctp_connect() %s:%d",
96
-            OGS_ADDR(sa_list, buf), OGS_PORT(sa_list));
97
+    sa_list_str = ogs_sockaddr_strdup(sa_list);
98
+    ogs_debug("sctp_connect() %s", sa_list_str);
99
+    ogs_free(sa_list_str);
100
 
101
     return OGS_OK;
102
 }
103
open5gs_2.7.2.4573.3396.202412262026.tar.xz/src/mme/mme-context.c -> open5gs_2.7.2.4578.35a1.202412272026.tar.xz/src/mme/mme-context.c Changed
18
 
1
@@ -2840,13 +2840,13 @@
2
         ogs_sctp_destroy(vlr->sock);
3
 }
4
 
5
-mme_vlr_t *mme_vlr_find_by_addr(const ogs_sockaddr_t *addr)
6
+mme_vlr_t *mme_vlr_find_by_sock(const ogs_sock_t *sock)
7
 {
8
     mme_vlr_t *vlr = NULL;
9
-    ogs_assert(addr);
10
+    ogs_assert(sock);
11
 
12
     ogs_list_for_each(&self.vlr_list, vlr) {
13
-        if (ogs_sockaddr_is_equal(vlr->addr, addr) == true)
14
+        if (vlr->sock == sock)
15
             return vlr;
16
     }
17
 
18
open5gs_2.7.2.4573.3396.202412262026.tar.xz/src/mme/mme-context.h -> open5gs_2.7.2.4578.35a1.202412272026.tar.xz/src/mme/mme-context.h Changed
18
 
1
@@ -219,7 +219,6 @@
2
     ogs_sockaddr_t  *local_sa_list;   /* VLR SGsAP Socket Local Address List */
3
 
4
     ogs_sock_t      *sock;      /* VLR SGsAP Socket */
5
-    ogs_sockaddr_t  *addr;      /* VLR SGsAP Connected Socket Address */
6
     ogs_sockopt_t   *option;    /* VLR SGsAP Socket Option */
7
     ogs_poll_t      *poll;      /* VLR SGsAP Poll */
8
 } mme_vlr_t;
9
@@ -946,7 +945,7 @@
10
 void mme_vlr_remove(mme_vlr_t *vlr);
11
 void mme_vlr_remove_all(void);
12
 void mme_vlr_close(mme_vlr_t *vlr);
13
-mme_vlr_t *mme_vlr_find_by_addr(const ogs_sockaddr_t *addr);
14
+mme_vlr_t *mme_vlr_find_by_sock(const ogs_sock_t *sock);
15
 
16
 mme_csmap_t *mme_csmap_add(mme_vlr_t *vlr);
17
 void mme_csmap_remove(mme_csmap_t *csmap);
18
open5gs_2.7.2.4573.3396.202412262026.tar.xz/src/mme/mme-event.c -> open5gs_2.7.2.4578.35a1.202412272026.tar.xz/src/mme/mme-event.c Changed
9
 
1
@@ -117,7 +117,6 @@
2
 
3
     ogs_assert(id);
4
     ogs_assert(sock);
5
-    ogs_assert(addr);
6
 
7
     e = mme_event_new(id);
8
     ogs_assert(e);
9
open5gs_2.7.2.4573.3396.202412262026.tar.xz/src/mme/mme-sm.c -> open5gs_2.7.2.4578.35a1.202412272026.tar.xz/src/mme/mme-sm.c Changed
93
 
1
@@ -54,6 +54,7 @@
2
 void mme_state_operational(ogs_fsm_t *s, mme_event_t *e)
3
 {
4
     int rv;
5
+    char *sa_list_str = NULL;
6
     char bufOGS_ADDRSTRLEN;
7
 
8
     ogs_sock_t *sock = NULL;
9
@@ -970,25 +971,20 @@
10
     case MME_EVENT_SGSAP_LO_SCTP_COMM_UP:
11
         sock = e->sock;
12
         ogs_assert(sock);
13
-        addr = e->addr;
14
-        ogs_assert(addr);
15
-
16
-        ogs_assert(addr->ogs_sa_family == AF_INET ||
17
-                addr->ogs_sa_family == AF_INET6);
18
 
19
         max_num_of_ostreams = e->max_num_of_ostreams;
20
 
21
-        vlr = mme_vlr_find_by_addr(addr);
22
-        ogs_free(addr);
23
-
24
+        vlr = mme_vlr_find_by_sock(sock);
25
         ogs_assert(vlr);
26
         ogs_assert(OGS_FSM_STATE(&vlr->sm));
27
 
28
         vlr->max_num_of_ostreams =
29
                 ogs_min(max_num_of_ostreams, vlr->max_num_of_ostreams);
30
 
31
-        ogs_debug("VLR-SGs SCTP_COMM_UP%s Max Num of Outbound Streams%d",
32
-            OGS_ADDR(vlr->addr, buf), vlr->max_num_of_ostreams);
33
+        sa_list_str = ogs_sockaddr_strdup(vlr->sa_list);
34
+        ogs_debug("VLR-SGs SCTP_COMM_UP %s Max Num of Outbound Streams%d",
35
+                sa_list_str, vlr->max_num_of_ostreams);
36
+        ogs_free(sa_list_str);
37
 
38
         e->vlr = vlr;
39
         ogs_fsm_dispatch(&vlr->sm, e);
40
@@ -997,45 +993,32 @@
41
     case MME_EVENT_SGSAP_LO_CONNREFUSED:
42
         sock = e->sock;
43
         ogs_assert(sock);
44
-        addr = e->addr;
45
-        ogs_assert(addr);
46
-
47
-        ogs_assert(addr->ogs_sa_family == AF_INET ||
48
-                addr->ogs_sa_family == AF_INET6);
49
-
50
-        vlr = mme_vlr_find_by_addr(addr);
51
-        ogs_free(addr);
52
 
53
+        vlr = mme_vlr_find_by_sock(sock);
54
         ogs_assert(vlr);
55
         ogs_assert(OGS_FSM_STATE(&vlr->sm));
56
 
57
+        sa_list_str = ogs_sockaddr_strdup(vlr->sa_list);
58
         if (OGS_FSM_CHECK(&vlr->sm, sgsap_state_connected)) {
59
             e->vlr = vlr;
60
             ogs_fsm_dispatch(&vlr->sm, e);
61
 
62
-            ogs_info("VLR-SGs%s connection refused!!!",
63
-                    OGS_ADDR(vlr->addr, buf));
64
+            ogs_info("VLR-SGs %s connection refused!!!", sa_list_str);
65
 
66
         } else {
67
-            ogs_warn("VLR-SGs%s connection refused, Already Removed!",
68
-                    OGS_ADDR(vlr->addr, buf));
69
+            ogs_warn("VLR-SGs %s connection refused, Already Removed!",
70
+                    sa_list_str);
71
         }
72
+        ogs_free(sa_list_str);
73
 
74
         break;
75
     case MME_EVENT_SGSAP_MESSAGE:
76
         sock = e->sock;
77
         ogs_assert(sock);
78
-        addr = e->addr;
79
-        ogs_assert(addr);
80
         pkbuf = e->pkbuf;
81
         ogs_assert(pkbuf);
82
 
83
-        ogs_assert(addr->ogs_sa_family == AF_INET ||
84
-                addr->ogs_sa_family == AF_INET6);
85
-
86
-        vlr = mme_vlr_find_by_addr(addr);
87
-        ogs_free(addr);
88
-
89
+        vlr = mme_vlr_find_by_sock(sock);
90
         ogs_assert(vlr);
91
         ogs_assert(OGS_FSM_STATE(&vlr->sm));
92
 
93
open5gs_2.7.2.4573.3396.202412262026.tar.xz/src/mme/sgsap-path.c -> open5gs_2.7.2.4578.35a1.202412272026.tar.xz/src/mme/sgsap-path.c Changed
43
 
1
@@ -53,8 +53,7 @@
2
     }
3
 }
4
 
5
-int sgsap_send(ogs_sock_t *sock, ogs_pkbuf_t *pkbuf,
6
-        ogs_sockaddr_t *addr, uint16_t stream_no)
7
+int sgsap_send(ogs_sock_t *sock, ogs_pkbuf_t *pkbuf, uint16_t stream_no)
8
 {
9
     int sent;
10
 
11
@@ -62,7 +61,7 @@
12
     ogs_assert(pkbuf);
13
 
14
     sent = ogs_sctp_sendmsg(sock, pkbuf->data, pkbuf->len,
15
-            addr, OGS_SCTP_SGSAP_PPID, stream_no);
16
+            NULL, OGS_SCTP_SGSAP_PPID, stream_no);
17
     if (sent < 0 || sent != pkbuf->len) {
18
         ogs_error("ogs_sctp_sendmsg(len:%d,ssn:%d) error (%d:%s)",
19
                 pkbuf->len, stream_no, errno, strerror(errno));
20
@@ -77,7 +76,7 @@
21
 int sgsap_send_to_vlr_with_sid(
22
         mme_vlr_t *vlr, ogs_pkbuf_t *pkbuf, uint16_t stream_no)
23
 {
24
-    char bufOGS_ADDRSTRLEN;
25
+    char *sa_list_str = NULL;
26
     ogs_sock_t *sock = NULL;;
27
 
28
     ogs_assert(vlr);
29
@@ -85,8 +84,11 @@
30
     sock = vlr->sock;
31
     ogs_assert(sock);
32
 
33
-    ogs_debug("    VLR-IP%s", OGS_ADDR(vlr->addr, buf));
34
-    return sgsap_send(sock, pkbuf, vlr->addr, stream_no);
35
+    sa_list_str = ogs_sockaddr_strdup(vlr->sa_list);
36
+    ogs_debug("    StreamNO%d VLR-IP%s", stream_no, sa_list_str);
37
+    ogs_free(sa_list_str);
38
+
39
+    return sgsap_send(sock, pkbuf, stream_no);
40
 }
41
 
42
 int sgsap_send_to_vlr(mme_ue_t *mme_ue, ogs_pkbuf_t *pkbuf)
43
open5gs_2.7.2.4573.3396.202412262026.tar.xz/src/mme/sgsap-path.h -> open5gs_2.7.2.4578.35a1.202412272026.tar.xz/src/mme/sgsap-path.h Changed
11
 
1
@@ -36,8 +36,7 @@
2
 
3
 ogs_sock_t *sgsap_client(mme_vlr_t *vlr);
4
 
5
-int sgsap_send(ogs_sock_t *sock,
6
-        ogs_pkbuf_t *pkbuf, ogs_sockaddr_t *addr, uint16_t stream_no);
7
+int sgsap_send(ogs_sock_t *sock, ogs_pkbuf_t *pkbuf, uint16_t stream_no);
8
 
9
 int sgsap_send_to_vlr_with_sid(
10
         mme_vlr_t *vlr, ogs_pkbuf_t *pkbuf, uint16_t stream_no);
11
open5gs_2.7.2.4573.3396.202412262026.tar.xz/src/mme/sgsap-sctp.c -> open5gs_2.7.2.4578.35a1.202412272026.tar.xz/src/mme/sgsap-sctp.c Changed
123
 
1
@@ -34,43 +34,26 @@
2
 
3
 ogs_sock_t *sgsap_client(mme_vlr_t *vlr)
4
 {
5
-    char bufOGS_ADDRSTRLEN;
6
+    char *sa_list_str = NULL;
7
     ogs_sock_t *sock = NULL;
8
 
9
     ogs_assert(vlr);
10
 
11
-    sock = ogs_sctp_client(SOCK_SEQPACKET,
12
+    sock = ogs_sctp_client(SOCK_STREAM,
13
             vlr->sa_list, vlr->local_sa_list, vlr->option);
14
     if (sock) {
15
         vlr->sock = sock;
16
 #if HAVE_USRSCTP
17
-        vlr->addr = vlr->sa_list;
18
         usrsctp_set_non_blocking((struct socket *)sock, 1);
19
         usrsctp_set_upcall((struct socket *)sock, usrsctp_recv_handler, NULL);
20
 #else
21
-
22
-/*
23
- * Originally, the code assigned vlr->addr to the address of sock->remote_addr:
24
- *   vlr->addr = &sock->remote_addr;
25
- * However, when using sctp_connectx, it was not easy to set remote_addr.
26
- * Therefore, at this point, vlr->addr is now assigned to vlr->sa_list,
27
- * utilizing the initially used address:
28
- *   vlr->addr = vlr->sa_list;
29
- *
30
- * This approach may lead to issues when connecting to multiple addresses,
31
- * as subsequent addresses cannot be accurately compared using the 'from'
32
- * parameter in sctp_recvmsg.
33
- *
34
- * Since a proper solution is deferred, it is recommended to avoid using
35
- * sctp_connectx with multiple addresses for the time being.
36
- */
37
-        vlr->addr = vlr->sa_list;
38
         vlr->poll = ogs_pollset_add(ogs_app()->pollset,
39
                 OGS_POLLIN, sock->fd, lksctp_recv_handler, sock);
40
         ogs_assert(vlr->poll);
41
 #endif
42
-        ogs_info("sgsap client() %s:%d",
43
-                OGS_ADDR(vlr->addr, buf), OGS_PORT(vlr->addr));
44
+        sa_list_str = ogs_sockaddr_strdup(vlr->sa_list);
45
+        ogs_info("sgsap client() %s", sa_list_str);
46
+        ogs_free(sa_list_str);
47
     }
48
 
49
     return sock;
50
@@ -103,8 +86,6 @@
51
 {
52
     ogs_pkbuf_t *pkbuf;
53
     int size;
54
-    ogs_sockaddr_t *addr = NULL;
55
-    ogs_sockaddr_t from;
56
     ogs_sctp_info_t sinfo;
57
     int flags = 0;
58
 
59
@@ -114,7 +95,7 @@
60
     ogs_assert(pkbuf);
61
     ogs_pkbuf_put(pkbuf, OGS_MAX_SDU_LEN);
62
     size = ogs_sctp_recvmsg(
63
-            sock, pkbuf->data, pkbuf->len, &from, &sinfo, &flags);
64
+            sock, pkbuf->data, pkbuf->len, NULL, &sinfo, &flags);
65
     if (size < 0 || size >= OGS_MAX_SDU_LEN) {
66
         ogs_error("ogs_sctp_recvmsg(%d) failed(%d:%s)",
67
                 size, errno, strerror(errno));
68
@@ -139,12 +120,8 @@
69
             if (not->sn_assoc_change.sac_state == SCTP_COMM_UP) {
70
                 ogs_debug("SCTP_COMM_UP");
71
 
72
-                addr = ogs_calloc(1, sizeof(ogs_sockaddr_t));
73
-                ogs_assert(addr);
74
-                memcpy(addr, &from, sizeof(ogs_sockaddr_t));
75
-
76
                 sgsap_event_push(MME_EVENT_SGSAP_LO_SCTP_COMM_UP,
77
-                        sock, addr, NULL,
78
+                        sock, NULL, NULL,
79
                         not->sn_assoc_change.sac_inbound_streams,
80
                         not->sn_assoc_change.sac_outbound_streams);
81
             } else if (not->sn_assoc_change.sac_state == SCTP_SHUTDOWN_COMP ||
82
@@ -155,12 +132,8 @@
83
                 if (not->sn_assoc_change.sac_state == SCTP_COMM_LOST)
84
                     ogs_debug("SCTP_COMM_LOST");
85
 
86
-                addr = ogs_calloc(1, sizeof(ogs_sockaddr_t));
87
-                ogs_assert(addr);
88
-                memcpy(addr, &from, sizeof(ogs_sockaddr_t));
89
-
90
                 sgsap_event_push(MME_EVENT_SGSAP_LO_CONNREFUSED,
91
-                        sock, addr, NULL, 0, 0);
92
+                        sock, NULL, NULL, 0, 0);
93
             }
94
             break;
95
         case SCTP_SHUTDOWN_EVENT :
96
@@ -183,12 +156,8 @@
97
                         not->sn_send_failed.ssf_error);
98
 #endif
99
 
100
-            addr = ogs_calloc(1, sizeof(ogs_sockaddr_t));
101
-            ogs_assert(addr);
102
-            memcpy(addr, &from, sizeof(ogs_sockaddr_t));
103
-
104
             sgsap_event_push(MME_EVENT_SGSAP_LO_CONNREFUSED,
105
-                    sock, addr, NULL, 0, 0);
106
+                    sock, NULL, NULL, 0, 0);
107
             break;
108
         case SCTP_PEER_ADDR_CHANGE:
109
             ogs_warn("SCTP_PEER_ADDR_CHANGE:T:%d, F:0x%x, S:%d", 
110
@@ -210,11 +179,7 @@
111
     } else if (flags & MSG_EOR) {
112
         ogs_pkbuf_trim(pkbuf, size);
113
 
114
-        addr = ogs_calloc(1, sizeof(ogs_sockaddr_t));
115
-        ogs_assert(addr);
116
-        memcpy(addr, &from, sizeof(ogs_sockaddr_t));
117
-
118
-        sgsap_event_push(MME_EVENT_SGSAP_MESSAGE, sock, addr, pkbuf, 0, 0);
119
+        sgsap_event_push(MME_EVENT_SGSAP_MESSAGE, sock, NULL, pkbuf, 0, 0);
120
         return;
121
     } else {
122
         if (ogs_socket_errno != OGS_EAGAIN) {
123