diff options
Diffstat (limited to 'addr.c')
-rw-r--r-- | addr.c | 21 |
1 files changed, 21 insertions, 0 deletions
@@ -1,3 +1,4 @@ +#include <stdio.h> #include <string.h> #include "addr.h" @@ -51,3 +52,23 @@ blob_t addr_get_hostaddr_blob(const sockaddr_any *addr) return BLOB_NULL; } } + +void addr_push_hostaddr(blob_t *b, const sockaddr_any *addr) +{ + char buf[64]; + blob_t f; + unsigned int t; + + switch (addr->any.sa_family) { + case AF_INET: + t = ntohl(addr->ipv4.sin_addr.s_addr); + f.ptr = buf; + f.len = sprintf(buf, "%d.%d.%d.%d", + (t ) & 0xff, (t >> 8) & 0xff, + (t >> 16) & 0xff, (t >> 24) & 0xff); + break; + default: + return; + } + blob_push(b, f); +} |