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 920
open5gs_2.7.2.4573.3396.202412262026.dsc
Deleted
x
1
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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