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