xref: /netbsd-src/external/bsd/ipf/dist/lib/printnataddr.c (revision 07967fb18af5b87d2d477c5b3e1e438bf0c293fb)
1 /*	$NetBSD: printnataddr.c,v 1.3 2018/02/04 08:19:42 mrg 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 __attribute__((__used__)) 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
printnataddr(v,base,addr,ifidx)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