root/sbin/ipf/libipf/printip.c

/*
 * Copyright (C) 2012 by Darren Reed.
 *
 * See the IPFILTER.LICENCE file for details on licencing.
 *
 * $Id$
 */

#include "ipf.h"


void
printip(int family, u_32_t *addr)
{
        struct in_addr ipa;

        if (family == AF_INET) {
                ipa.s_addr = *addr;
                if (ntohl(ipa.s_addr) < 256)
                        PRINTF("%lu", (u_long)ntohl(ipa.s_addr));
                else
                        PRINTF("%s", inet_ntoa(ipa));
        }
#ifdef USE_INET6
        else if (family == AF_INET6) {
                char buf[INET6_ADDRSTRLEN + 1];
                const char *str;

                buf[0] = '\0';
                str = inet_ntop(AF_INET6, addr, buf, sizeof(buf) - 1);
                if (str != NULL)
                        PRINTF("%s", str);
                else
                        PRINTF("???");
        }
#endif
        else
                PRINTF("?(%d)?", family);
}