diff options
author | Max <msuraev@sysmocom.de> | 2022-08-07 00:40:48 +0700 |
---|---|---|
committer | Max <msuraev@sysmocom.de> | 2022-08-14 12:21:12 +0700 |
commit | e145e28a91eeca65d34d7b82caa2190fa89492b4 (patch) | |
tree | d90cae03b92eb4c5cca073075e6ca9e0914c9401 /include/osmocom/core | |
parent | 18c6a8183f92915e77368ecffb1cbf7f555453a3 (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/osmocom/core')
-rw-r--r-- | include/osmocom/core/sockaddr_str.h | 15 |
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"); |