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