From 0c01103c021a7be7a62235aa3d14b5ca9ac46472 Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Mon, 16 May 2016 12:38:02 +0100 Subject: [PATCH] [Feature] Add function for pretty printing of inet addresses --- src/libutil/addr.c | 30 ++++++++++++++++++++++++++++++ src/libutil/addr.h | 7 +++++++ 2 files changed, 37 insertions(+) diff --git a/src/libutil/addr.c b/src/libutil/addr.c index 18414a98c..5c5a51e13 100644 --- a/src/libutil/addr.c +++ b/src/libutil/addr.c @@ -667,6 +667,36 @@ rspamd_inet_address_to_string (const rspamd_inet_addr_t *addr) return "undefined"; } +const char * +rspamd_inet_address_to_string_pretty (const rspamd_inet_addr_t *addr) +{ + static char addr_str[PATH_MAX + 5]; + + if (addr == NULL) { + return ""; + } + + switch (addr->af) { + case AF_INET: + rspamd_snprintf (addr_str, sizeof (addr_str), "%s:%d", + rspamd_inet_address_to_string (addr), + rspamd_inet_address_get_port (addr)); + break; + case AF_INET6: + rspamd_snprintf (addr_str, sizeof (addr_str), "[%s]:%d", + rspamd_inet_address_to_string (addr), + rspamd_inet_address_get_port (addr)); + break; + case AF_UNIX: + rspamd_snprintf (addr_str, sizeof (addr_str), "unix:%s", + rspamd_inet_address_to_string (addr), + rspamd_inet_address_get_port (addr)); + break; + } + + return addr_str; +} + uint16_t rspamd_inet_address_get_port (const rspamd_inet_addr_t *addr) { diff --git a/src/libutil/addr.h b/src/libutil/addr.h index afed3f8fc..bb9fd2573 100644 --- a/src/libutil/addr.h +++ b/src/libutil/addr.h @@ -107,6 +107,13 @@ gboolean rspamd_parse_inet_address (rspamd_inet_addr_t **target, */ const char * rspamd_inet_address_to_string (const rspamd_inet_addr_t *addr); +/** + * Returns pretty string representation of inet address + * @param addr + * @return statically allocated string pointer (not thread safe) + */ +const char * rspamd_inet_address_to_string_pretty (const rspamd_inet_addr_t *addr); + /** * Returns port number for the specified inet address in host byte order * @param addr -- 2.39.5