aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorMax <msuraev@sysmocom.de>2022-08-07 00:40:48 +0700
committerMax <msuraev@sysmocom.de>2022-08-14 12:21:12 +0700
commite145e28a91eeca65d34d7b82caa2190fa89492b4 (patch)
treed90cae03b92eb4c5cca073075e6ca9e0914c9401 /include
parent18c6a8183f92915e77368ecffb1cbf7f555453a3 (diff)
Add osmo_sockaddr_strs_to_str()
This will come in handy for working with multihomes sockets like SCTP. Related: OS#5581 Change-Id: Ic0d7c08f669994e37a2314555ecac85d28c42c89
Diffstat (limited to 'include')
-rw-r--r--include/osmocom/core/sockaddr_str.h15
1 files changed, 9 insertions, 6 deletions
diff --git a/include/osmocom/core/sockaddr_str.h b/include/osmocom/core/sockaddr_str.h
index a46ad595..604f926d 100644
--- a/include/osmocom/core/sockaddr_str.h
+++ b/include/osmocom/core/sockaddr_str.h
@@ -59,12 +59,14 @@ struct osmo_sockaddr_str {
* struct osmo_sockaddr_str *my_sockaddr_str = ...;
* printf("got " OSMO_SOCKADDR_STR_FMT "\n", OSMO_SOCKADDR_STR_FMT_ARGS(my_sockaddr_str));
*/
-#define OSMO_SOCKADDR_STR_FMT "%s%s%s:%u"
-#define OSMO_SOCKADDR_STR_FMT_ARGS(R) \
- ((R) && (R)->af == AF_INET6)? "[" : "", \
- (R)? (R)->ip : "NULL", \
- ((R) && (R)->af == AF_INET6)? "]" : "", \
- (R)? (R)->port : 0
+#define OSMO_SOCKADDR_STR_NO_PORT_FMT "%s%s%s"
+#define OSMO_SOCKADDR_STR_NO_PORT_FMT_ARGS(R) \
+ ((R) && (R)->af == AF_INET6) ? "[" : "", \
+ (R) ? (R)->ip : "NULL", \
+ ((R) && (R)->af == AF_INET6) ? "]" : ""
+
+#define OSMO_SOCKADDR_STR_FMT OSMO_SOCKADDR_STR_NO_PORT_FMT ":%u"
+#define OSMO_SOCKADDR_STR_FMT_ARGS(R) OSMO_SOCKADDR_STR_NO_PORT_FMT_ARGS(R), (R) ? (R)->port : 0
bool osmo_sockaddr_str_is_set(const struct osmo_sockaddr_str *sockaddr_str);
bool osmo_sockaddr_str_is_nonzero(const struct osmo_sockaddr_str *sockaddr_str);
@@ -88,6 +90,7 @@ int osmo_sockaddr_str_to_32h(const struct osmo_sockaddr_str *sockaddr_str, uint3
int osmo_sockaddr_str_to_sockaddr_in(const struct osmo_sockaddr_str *sockaddr_str, struct sockaddr_in *dst);
int osmo_sockaddr_str_to_sockaddr_in6(const struct osmo_sockaddr_str *sockaddr_str, struct sockaddr_in6 *dst);
int osmo_sockaddr_str_to_sockaddr(const struct osmo_sockaddr_str *sockaddr_str, struct sockaddr_storage *dst);
+int osmo_sockaddr_strs_to_str(char *buf, size_t buf_len, const struct osmo_sockaddr_str **sa_str, size_t sa_str_count);
int osmo_sockaddr_str_from_32n(struct osmo_sockaddr_str *sockaddr_str, uint32_t ip, uint16_t port)
OSMO_DEPRECATED("osmo_sockaddr_str_from_32n() actually uses *host* byte order. Use osmo_sockaddr_str_from_32h() instead");