From 1a20370b364ada675882e6a70d05b6e81418d64f Mon Sep 17 00:00:00 2001 From: David Gibson Date: Tue, 21 May 2024 14:48:03 +1000 Subject: util, tcp: Add helper to display socket addresses When reporting errors, we sometimes want to show a relevant socket address. Doing so by extracting the various relevant fields can be pretty awkward, so introduce a sockaddr_ntop() helper to make it simpler. For now we just have one user in tcp.c, but I have further upcoming patches which can make use of it. Signed-off-by: David Gibson Signed-off-by: Stefano Brivio --- util.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'util.h') diff --git a/util.h b/util.h index 264423b..c8a357e 100644 --- a/util.h +++ b/util.h @@ -180,6 +180,20 @@ static inline const char *af_name(sa_family_t af) } } +#define UINT16_STRLEN (sizeof("65535")) + +/* inet address (- '\0') + port (u16) (- '\0') + ':' + '\0' */ +#define SOCKADDR_INET_STRLEN \ + (INET_ADDRSTRLEN-1 + UINT16_STRLEN-1 + sizeof(":")) + +/* inet6 address (- '\0') + port (u16) (- '\0') + '[' + ']' + ':' + '\0' */ +#define SOCKADDR_INET6_STRLEN \ + (INET6_ADDRSTRLEN-1 + UINT16_STRLEN-1 + sizeof("[]:")) + +#define SOCKADDR_STRLEN MAX(SOCKADDR_INET_STRLEN, SOCKADDR_INET6_STRLEN) + +const char *sockaddr_ntop(const void *sa, char *dst, socklen_t size); + /** * mod_sub() - Modular arithmetic subtraction * @a: Minued, unsigned value < @m -- cgit v1.2.3