summaryrefslogtreecommitdiffstats
path: root/sbin/hastd/pjdlog.c
diff options
context:
space:
mode:
authorpjd <pjd@FreeBSD.org>2011-05-18 22:43:56 +0000
committerpjd <pjd@FreeBSD.org>2011-05-18 22:43:56 +0000
commita47ef66623a172a2eb328a57badab597eb5551ee (patch)
treeee08afde938ea99abf978732a71f737428718d67 /sbin/hastd/pjdlog.c
parent8407c0a698d82282fb1d9dbf38fafe81aca31583 (diff)
downloadFreeBSD-src-a47ef66623a172a2eb328a57badab597eb5551ee.zip
FreeBSD-src-a47ef66623a172a2eb328a57badab597eb5551ee.tar.gz
- Add support for AF_INET6 sockets for %S format character.
- Use inet_ntop(3) instead of reimplementing it. - Use %hhu for unsigned char instead of casting it to unsigned int and using %u. MFC after: 1 week
Diffstat (limited to 'sbin/hastd/pjdlog.c')
-rw-r--r--sbin/hastd/pjdlog.c33
1 files changed, 26 insertions, 7 deletions
diff --git a/sbin/hastd/pjdlog.c b/sbin/hastd/pjdlog.c
index 59d3ffa..16ecf4d 100644
--- a/sbin/hastd/pjdlog.c
+++ b/sbin/hastd/pjdlog.c
@@ -31,8 +31,10 @@
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
+#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
+#include <arpa/inet.h>
#include <assert.h>
#include <errno.h>
@@ -103,22 +105,39 @@ pjdlog_printf_render_sockaddr(struct __printf_io *io,
switch (ss->ss_family) {
case AF_INET:
{
+ char addr[INET_ADDRSTRLEN];
const struct sockaddr_in *sin;
- in_addr_t ip;
unsigned int port;
sin = (const struct sockaddr_in *)ss;
- ip = ntohl(sin->sin_addr.s_addr);
port = ntohs(sin->sin_port);
+ if (inet_ntop(ss->ss_family, &sin->sin_addr, addr,
+ sizeof(addr)) == NULL) {
+ PJDLOG_ABORT("inet_ntop(AF_INET) failed: %s.",
+ strerror(errno));
+ }
+ snprintf(buf, sizeof(buf), "%s:%u", addr, port);
+ break;
+ }
+ case AF_INET6:
+ {
+ char addr[INET6_ADDRSTRLEN];
+ const struct sockaddr_in6 *sin;
+ unsigned int port;
- snprintf(buf, sizeof(buf), "%u.%u.%u.%u:%u",
- ((ip >> 24) & 0xff), ((ip >> 16) & 0xff),
- ((ip >> 8) & 0xff), (ip & 0xff), port);
+ sin = (const struct sockaddr_in6 *)ss;
+ port = ntohs(sin->sin6_port);
+ if (inet_ntop(ss->ss_family, &sin->sin6_addr, addr,
+ sizeof(addr)) == NULL) {
+ PJDLOG_ABORT("inet_ntop(AF_INET6) failed: %s.",
+ strerror(errno));
+ }
+ snprintf(buf, sizeof(buf), "[%s]:%u", addr, port);
break;
}
default:
- snprintf(buf, sizeof(buf), "[unsupported family %u]",
- (unsigned int)ss->ss_family);
+ snprintf(buf, sizeof(buf), "[unsupported family %hhu]",
+ ss->ss_family);
break;
}
ret = __printf_out(io, pi, buf, strlen(buf));
OpenPOWER on IntegriCloud