xref: /netbsd-src/external/bsd/ipf/dist/lib/printnatfield.c (revision 13885a665959c62f13a82b3caedf986eaa17aa31)
1*13885a66Sdarrenr /*	$NetBSD: printnatfield.c,v 1.2 2012/07/22 14:27:37 darrenr Exp $	*/
2bc4097aaSchristos 
3bc4097aaSchristos /*
4bc4097aaSchristos  * Copyright (C) 2012 by Darren Reed.
5bc4097aaSchristos  *
6bc4097aaSchristos  * See the IPFILTER.LICENCE file for details on licencing.
7bc4097aaSchristos  *
8*13885a66Sdarrenr  * Id: printnatfield.c,v 1.1.1.2 2012/07/22 13:44:41 darrenr Exp $
9bc4097aaSchristos  */
10bc4097aaSchristos 
11bc4097aaSchristos #include "ipf.h"
12bc4097aaSchristos 
13bc4097aaSchristos wordtab_t natfields[] = {
14bc4097aaSchristos 	{ "all",	-2 },
15bc4097aaSchristos 	{ "ifp0",	1 },
16bc4097aaSchristos 	{ "ifp1",	2 },
17bc4097aaSchristos 	{ "mtu0",	3 },
18bc4097aaSchristos 	{ "mtu1",	4 },
19bc4097aaSchristos 	{ "ifname0",	5 },
20bc4097aaSchristos 	{ "ifname1",	6 },
21bc4097aaSchristos 	{ "sumd0",	7 },
22bc4097aaSchristos 	{ "sumd1",	8 },
23bc4097aaSchristos 	{ "pkts0",	9 },
24bc4097aaSchristos 	{ "pkts1",	10 },
25bc4097aaSchristos 	{ "bytes0",	11 },
26bc4097aaSchristos 	{ "bytes1",	12 },
27bc4097aaSchristos 	{ "proto0",	13 },
28bc4097aaSchristos 	{ "proto1",	14 },
29bc4097aaSchristos 	{ "hash0",	15 },
30bc4097aaSchristos 	{ "hash1",	16 },
31bc4097aaSchristos 	{ "ref",	17 },
32bc4097aaSchristos 	{ "rev",	18 },
33bc4097aaSchristos 	{ "v0",		19 },
34bc4097aaSchristos 	{ "redir",	20 },
35bc4097aaSchristos 	{ "use",	21 },
36bc4097aaSchristos 	{ "ipsumd",	22 },
37bc4097aaSchristos 	{ "dir",	23 },
38bc4097aaSchristos 	{ "olddstip",	24 },
39bc4097aaSchristos 	{ "oldsrcip",	25 },
40bc4097aaSchristos 	{ "newdstip",	26 },
41bc4097aaSchristos 	{ "newsrcip",	27 },
42bc4097aaSchristos 	{ "olddport",	28 },
43bc4097aaSchristos 	{ "oldsport",	29 },
44bc4097aaSchristos 	{ "newdport",	30 },
45bc4097aaSchristos 	{ "newsport",	31 },
46bc4097aaSchristos 	{ "age",	32 },
47bc4097aaSchristos 	{ "v1",		33 },
48bc4097aaSchristos 	{ NULL, 0 }
49bc4097aaSchristos };
50bc4097aaSchristos 
51bc4097aaSchristos 
52bc4097aaSchristos void
printnatfield(n,fieldnum)53bc4097aaSchristos printnatfield(n, fieldnum)
54bc4097aaSchristos 	nat_t *n;
55bc4097aaSchristos 	int fieldnum;
56bc4097aaSchristos {
57bc4097aaSchristos 	int i;
58bc4097aaSchristos 
59bc4097aaSchristos 	switch (fieldnum)
60bc4097aaSchristos 	{
61bc4097aaSchristos 	case -2 :
62bc4097aaSchristos 		for (i = 1; natfields[i].w_word != NULL; i++) {
63bc4097aaSchristos 			if (natfields[i].w_value > 0) {
64bc4097aaSchristos 				printnatfield(n, i);
65bc4097aaSchristos 				if (natfields[i + 1].w_value > 0)
66bc4097aaSchristos 					putchar('\t');
67bc4097aaSchristos 			}
68bc4097aaSchristos 		}
69bc4097aaSchristos 		break;
70bc4097aaSchristos 
71bc4097aaSchristos 	case 1:
72bc4097aaSchristos 		PRINTF("%#lx", (u_long)n->nat_ifps[0]);
73bc4097aaSchristos 		break;
74bc4097aaSchristos 
75bc4097aaSchristos 	case 2:
76bc4097aaSchristos 		PRINTF("%#lx", (u_long)n->nat_ifps[1]);
77bc4097aaSchristos 		break;
78bc4097aaSchristos 
79bc4097aaSchristos 	case 3:
80bc4097aaSchristos 		PRINTF("%d", n->nat_mtu[0]);
81bc4097aaSchristos 		break;
82bc4097aaSchristos 
83bc4097aaSchristos 	case 4:
84bc4097aaSchristos 		PRINTF("%d", n->nat_mtu[1]);
85bc4097aaSchristos 		break;
86bc4097aaSchristos 
87bc4097aaSchristos 	case 5:
88bc4097aaSchristos 		PRINTF("%s", n->nat_ifnames[0]);
89bc4097aaSchristos 		break;
90bc4097aaSchristos 
91bc4097aaSchristos 	case 6:
92bc4097aaSchristos 		PRINTF("%s", n->nat_ifnames[1]);
93bc4097aaSchristos 		break;
94bc4097aaSchristos 
95bc4097aaSchristos 	case 7:
96bc4097aaSchristos 		PRINTF("%d", n->nat_sumd[0]);
97bc4097aaSchristos 		break;
98bc4097aaSchristos 
99bc4097aaSchristos 	case 8:
100bc4097aaSchristos 		PRINTF("%d", n->nat_sumd[1]);
101bc4097aaSchristos 		break;
102bc4097aaSchristos 
103bc4097aaSchristos 	case 9:
104bc4097aaSchristos #ifdef USE_QUAD_T
105bc4097aaSchristos 		PRINTF("%"PRIu64"", n->nat_pkts[0]);
106bc4097aaSchristos #else
107bc4097aaSchristos 		PRINTF("%lu", n->nat_pkts[0]);
108bc4097aaSchristos #endif
109bc4097aaSchristos 		break;
110bc4097aaSchristos 
111bc4097aaSchristos 	case 10:
112bc4097aaSchristos #ifdef USE_QUAD_T
113bc4097aaSchristos 		PRINTF("%"PRIu64"", n->nat_pkts[1]);
114bc4097aaSchristos #else
115bc4097aaSchristos 		PRINTF("%lu", n->nat_pkts[1]);
116bc4097aaSchristos #endif
117bc4097aaSchristos 		break;
118bc4097aaSchristos 
119bc4097aaSchristos 	case 11:
120bc4097aaSchristos #ifdef USE_QUAD_T
121bc4097aaSchristos 		PRINTF("%"PRIu64"", n->nat_bytes[0]);
122bc4097aaSchristos #else
123bc4097aaSchristos 		PRINTF("%lu", n->nat_bytes[0]);
124bc4097aaSchristos #endif
125bc4097aaSchristos 		break;
126bc4097aaSchristos 
127bc4097aaSchristos 	case 12:
128bc4097aaSchristos #ifdef USE_QUAD_T
129bc4097aaSchristos 		PRINTF("%"PRIu64"", n->nat_bytes[1]);
130bc4097aaSchristos #else
131bc4097aaSchristos 		PRINTF("%lu", n->nat_bytes[1]);
132bc4097aaSchristos #endif
133bc4097aaSchristos 		break;
134bc4097aaSchristos 
135bc4097aaSchristos 	case 13:
136bc4097aaSchristos 		PRINTF("%d", n->nat_pr[0]);
137bc4097aaSchristos 		break;
138bc4097aaSchristos 
139bc4097aaSchristos 	case 14:
140bc4097aaSchristos 		PRINTF("%d", n->nat_pr[1]);
141bc4097aaSchristos 		break;
142bc4097aaSchristos 
143bc4097aaSchristos 	case 15:
144bc4097aaSchristos 		PRINTF("%u", n->nat_hv[0]);
145bc4097aaSchristos 		break;
146bc4097aaSchristos 
147bc4097aaSchristos 	case 16:
148bc4097aaSchristos 		PRINTF("%u", n->nat_hv[1]);
149bc4097aaSchristos 		break;
150bc4097aaSchristos 
151bc4097aaSchristos 	case 17:
152bc4097aaSchristos 		PRINTF("%d", n->nat_ref);
153bc4097aaSchristos 		break;
154bc4097aaSchristos 
155bc4097aaSchristos 	case 18:
156bc4097aaSchristos 		PRINTF("%d", n->nat_rev);
157bc4097aaSchristos 		break;
158bc4097aaSchristos 
159bc4097aaSchristos 	case 19:
160bc4097aaSchristos 		PRINTF("%d", n->nat_v[0]);
161bc4097aaSchristos 		break;
162bc4097aaSchristos 
163bc4097aaSchristos 	case 33:
164bc4097aaSchristos 		PRINTF("%d", n->nat_v[0]);
165bc4097aaSchristos 		break;
166bc4097aaSchristos 
167bc4097aaSchristos 	case 20:
168bc4097aaSchristos 		PRINTF("%d", n->nat_redir);
169bc4097aaSchristos 		break;
170bc4097aaSchristos 
171bc4097aaSchristos 	case 21:
172bc4097aaSchristos 		PRINTF("%d", n->nat_use);
173bc4097aaSchristos 		break;
174bc4097aaSchristos 
175bc4097aaSchristos 	case 22:
176bc4097aaSchristos 		PRINTF("%u", n->nat_ipsumd);
177bc4097aaSchristos 		break;
178bc4097aaSchristos 
179bc4097aaSchristos 	case 23:
180bc4097aaSchristos 		PRINTF("%d", n->nat_dir);
181bc4097aaSchristos 		break;
182bc4097aaSchristos 
183bc4097aaSchristos 	case 24:
184bc4097aaSchristos 		PRINTF("%s", hostname(n->nat_v[0], &n->nat_odstip));
185bc4097aaSchristos 		break;
186bc4097aaSchristos 
187bc4097aaSchristos 	case 25:
188bc4097aaSchristos 		PRINTF("%s", hostname(n->nat_v[0], &n->nat_osrcip));
189bc4097aaSchristos 		break;
190bc4097aaSchristos 
191bc4097aaSchristos 	case 26:
192bc4097aaSchristos 		PRINTF("%s", hostname(n->nat_v[1], &n->nat_ndstip));
193bc4097aaSchristos 		break;
194bc4097aaSchristos 
195bc4097aaSchristos 	case 27:
196bc4097aaSchristos 		PRINTF("%s", hostname(n->nat_v[1], &n->nat_nsrcip));
197bc4097aaSchristos 		break;
198bc4097aaSchristos 
199bc4097aaSchristos 	case 28:
200bc4097aaSchristos 		PRINTF("%hu", ntohs(n->nat_odport));
201bc4097aaSchristos 		break;
202bc4097aaSchristos 
203bc4097aaSchristos 	case 29:
204bc4097aaSchristos 		PRINTF("%hu", ntohs(n->nat_osport));
205bc4097aaSchristos 		break;
206bc4097aaSchristos 
207bc4097aaSchristos 	case 30:
208bc4097aaSchristos 		PRINTF("%hu", ntohs(n->nat_ndport));
209bc4097aaSchristos 		break;
210bc4097aaSchristos 
211bc4097aaSchristos 	case 31:
212bc4097aaSchristos 		PRINTF("%hu", ntohs(n->nat_nsport));
213bc4097aaSchristos 		break;
214bc4097aaSchristos 
215bc4097aaSchristos 	case 32:
216bc4097aaSchristos 		PRINTF("%u", n->nat_age);
217bc4097aaSchristos 		break;
218bc4097aaSchristos 
219bc4097aaSchristos 	default:
220bc4097aaSchristos 		break;
221bc4097aaSchristos 	}
222bc4097aaSchristos }
223