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