1 /* $NetBSD: printnataddr.c,v 1.2 2012/07/22 14:27:37 darrenr Exp $ */ 2 3 /* 4 * Copyright (C) 2012 by Darren Reed. 5 * 6 * See the IPFILTER.LICENCE file for details on licencing. 7 * 8 * Added redirect stuff and a variety of bug fixes. (mcn@EnGarde.com) 9 */ 10 11 #include "ipf.h" 12 #include "kmem.h" 13 14 15 #if !defined(lint) 16 static const char rcsid[] = "@(#)Id: printnataddr.c,v 1.1.1.2 2012/07/22 13:44:41 darrenr Exp $"; 17 #endif 18 19 20 void 21 printnataddr(v, base, addr, ifidx) 22 int v; 23 char *base; 24 nat_addr_t *addr; 25 int ifidx; 26 { 27 switch (v) 28 { 29 case 4 : 30 if (addr->na_atype == FRI_NORMAL && 31 addr->na_addr[0].in4.s_addr == 0) { 32 PRINTF("0/%d", count4bits(addr->na_addr[1].in4.s_addr)); 33 } else { 34 printaddr(AF_INET, addr->na_atype, base, ifidx, 35 (u_32_t *)&addr->na_addr[0].in4.s_addr, 36 (u_32_t *)&addr->na_addr[1].in4.s_addr); 37 } 38 break; 39 #ifdef USE_INET6 40 case 6 : 41 printaddr(AF_INET6, addr->na_atype, base, ifidx, 42 (u_32_t *)&addr->na_addr[0].in6, 43 (u_32_t *)&addr->na_addr[1].in6); 44 break; 45 #endif 46 default : 47 printf("{v=%d}", v); 48 break; 49 } 50 } 51