root/sbin/ipf/libipf/printnataddr.c
/*
 * Copyright (C) 2012 by Darren Reed.
 *
 * See the IPFILTER.LICENCE file for details on licencing.
 *
 * Added redirect stuff and a variety of bug fixes. (mcn@EnGarde.com)
 */

#include "ipf.h"
#include "kmem.h"




void
printnataddr( int v, char *base, nat_addr_t *addr, int ifidx)
{
        switch (v)
        {
        case 4 :
                if (addr->na_atype == FRI_NORMAL &&
                    addr->na_addr[0].in4.s_addr == 0) {
                        PRINTF("0/%d", count4bits(addr->na_addr[1].in4.s_addr));
                } else {
                        printaddr(AF_INET, addr->na_atype, base, ifidx,
                                  (u_32_t *)&addr->na_addr[0].in4.s_addr,
                                  (u_32_t *)&addr->na_addr[1].in4.s_addr);
                }
                break;
#ifdef USE_INET6
        case 6 :
                printaddr(AF_INET6, addr->na_atype, base, ifidx,
                          (u_32_t *)&addr->na_addr[0].in6,
                          (u_32_t *)&addr->na_addr[1].in6);
                break;
#endif
        default :
                printf("{v=%d}", v);
                break;
        }
}