xref: /netbsd-src/external/bsd/ipf/dist/lib/printstatefields.c (revision 13885a665959c62f13a82b3caedf986eaa17aa31)
1*13885a66Sdarrenr /*	$NetBSD: printstatefields.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: printstatefields.c,v 1.1.1.2 2012/07/22 13:44:42 darrenr Exp $
9bc4097aaSchristos  */
10bc4097aaSchristos 
11bc4097aaSchristos #include "ipf.h"
12bc4097aaSchristos 
13bc4097aaSchristos wordtab_t statefields[] = {
14bc4097aaSchristos 	{ "all",	-2 },
15bc4097aaSchristos 	{ "ifp0",	1 },
16bc4097aaSchristos 	{ "ifp1",	2 },
17bc4097aaSchristos 	{ "ifp2",	3 },
18bc4097aaSchristos 	{ "ifp3",	4 },
19bc4097aaSchristos 	{ "ifname0",	5 },
20bc4097aaSchristos 	{ "ifname1",	6 },
21bc4097aaSchristos 	{ "ifname2",	7 },
22bc4097aaSchristos 	{ "ifname3",	8 },
23bc4097aaSchristos 	{ "pkts0",	9 },
24bc4097aaSchristos 	{ "pkts1",	10 },
25bc4097aaSchristos 	{ "pkts2",	11 },
26bc4097aaSchristos 	{ "pkts3",	12 },
27bc4097aaSchristos 	{ "bytes0",	13 },
28bc4097aaSchristos 	{ "bytes1",	14 },
29bc4097aaSchristos 	{ "bytes2",	15 },
30bc4097aaSchristos 	{ "bytes3",	16 },
31bc4097aaSchristos 	{ "state0",	17 },
32bc4097aaSchristos 	{ "state1",	18 },
33bc4097aaSchristos 	{ "age0",	19 },
34bc4097aaSchristos 	{ "age1",	20 },
35bc4097aaSchristos 	{ "ref",	21 },
36bc4097aaSchristos 	{ "isn0",	22 },
37bc4097aaSchristos 	{ "isn1",	23 },
38bc4097aaSchristos 	{ "sumd0",	24 },
39bc4097aaSchristos 	{ "sumd1",	25 },
40bc4097aaSchristos 	{ "src",	26 },
41bc4097aaSchristos 	{ "dst",	27 },
42bc4097aaSchristos 	{ "sport",	28 },
43bc4097aaSchristos 	{ "dport",	29 },
44bc4097aaSchristos 	{ "icmptype",	30 },
45bc4097aaSchristos 	{ "-",		31 },
46bc4097aaSchristos 	{ "pass",	32 },
47bc4097aaSchristos 	{ "proto",	33 },
48bc4097aaSchristos 	{ "version",	34 },
49bc4097aaSchristos 	{ "hash",	35 },
50bc4097aaSchristos 	{ "tag",	36 },
51bc4097aaSchristos 	{ "flags",	37 },
52bc4097aaSchristos 	{ "rulen",	38 },
53bc4097aaSchristos 	{ "group",	39 },
54bc4097aaSchristos 	{ "flx0",	40 },
55bc4097aaSchristos 	{ "flx1",	41 },
56bc4097aaSchristos 	{ "flx2",	42 },
57bc4097aaSchristos 	{ "flx3",	43 },
58bc4097aaSchristos 	{ "opt0",	44 },
59bc4097aaSchristos 	{ "opt1",	45 },
60bc4097aaSchristos 	{ "optmsk0",	46 },
61bc4097aaSchristos 	{ "optmsk1",	47 },
62bc4097aaSchristos 	{ "sec",	48 },
63bc4097aaSchristos 	{ "secmsk",	49 },
64bc4097aaSchristos 	{ "auth",	50 },
65bc4097aaSchristos 	{ "authmsk",	51 },
66bc4097aaSchristos 	{ "icmppkts0",	52 },
67bc4097aaSchristos 	{ "icmppkts1",	53 },
68bc4097aaSchristos 	{ "icmppkts2",	54 },
69bc4097aaSchristos 	{ "icmppkts3",	55 },
70bc4097aaSchristos 	{ NULL, 0 }
71bc4097aaSchristos };
72bc4097aaSchristos 
73bc4097aaSchristos 
74bc4097aaSchristos void
printstatefield(sp,fieldnum)75bc4097aaSchristos printstatefield(sp, fieldnum)
76bc4097aaSchristos 	ipstate_t *sp;
77bc4097aaSchristos 	int fieldnum;
78bc4097aaSchristos {
79bc4097aaSchristos 	int i;
80bc4097aaSchristos 
81bc4097aaSchristos 	switch (fieldnum)
82bc4097aaSchristos 	{
83bc4097aaSchristos 	case -2 :
84bc4097aaSchristos 		for (i = 1; statefields[i].w_word != NULL; i++) {
85bc4097aaSchristos 			if (statefields[i].w_value > 0) {
86bc4097aaSchristos 				printstatefield(sp, i);
87bc4097aaSchristos 				if (statefields[i + 1].w_value > 0)
88bc4097aaSchristos 					putchar('\t');
89bc4097aaSchristos 			}
90bc4097aaSchristos 		}
91bc4097aaSchristos 		break;
92bc4097aaSchristos 
93bc4097aaSchristos 	case 1:
94bc4097aaSchristos 		PRINTF("%#lx", (u_long)sp->is_ifp[0]);
95bc4097aaSchristos 		break;
96bc4097aaSchristos 
97bc4097aaSchristos 	case 2:
98bc4097aaSchristos 		PRINTF("%#lx", (u_long)sp->is_ifp[1]);
99bc4097aaSchristos 		break;
100bc4097aaSchristos 
101bc4097aaSchristos 	case 3:
102bc4097aaSchristos 		PRINTF("%#lx", (u_long)sp->is_ifp[2]);
103bc4097aaSchristos 		break;
104bc4097aaSchristos 
105bc4097aaSchristos 	case 4:
106bc4097aaSchristos 		PRINTF("%#lx", (u_long)sp->is_ifp[3]);
107bc4097aaSchristos 		break;
108bc4097aaSchristos 
109bc4097aaSchristos 	case 5:
110bc4097aaSchristos 		PRINTF("%s", sp->is_ifname[0]);
111bc4097aaSchristos 		break;
112bc4097aaSchristos 
113bc4097aaSchristos 	case 6:
114bc4097aaSchristos 		PRINTF("%s", sp->is_ifname[1]);
115bc4097aaSchristos 		break;
116bc4097aaSchristos 
117bc4097aaSchristos 	case 7:
118bc4097aaSchristos 		PRINTF("%s", sp->is_ifname[2]);
119bc4097aaSchristos 		break;
120bc4097aaSchristos 
121bc4097aaSchristos 	case 8:
122bc4097aaSchristos 		PRINTF("%s", sp->is_ifname[3]);
123bc4097aaSchristos 		break;
124bc4097aaSchristos 
125bc4097aaSchristos 	case 9:
126bc4097aaSchristos #ifdef USE_QUAD_T
127bc4097aaSchristos 		PRINTF("%"PRIu64"", sp->is_pkts[0]);
128bc4097aaSchristos #else
129bc4097aaSchristos 		PRINTF("%lu", sp->is_pkts[0]);
130bc4097aaSchristos #endif
131bc4097aaSchristos 		break;
132bc4097aaSchristos 
133bc4097aaSchristos 	case 10:
134bc4097aaSchristos #ifdef USE_QUAD_T
135bc4097aaSchristos 		PRINTF("%"PRIu64"", sp->is_pkts[1]);
136bc4097aaSchristos #else
137bc4097aaSchristos 		PRINTF("%lu", sp->is_pkts[1]);
138bc4097aaSchristos #endif
139bc4097aaSchristos 		break;
140bc4097aaSchristos 
141bc4097aaSchristos 	case 11:
142bc4097aaSchristos #ifdef USE_QUAD_T
143bc4097aaSchristos 		PRINTF("%"PRIu64"", sp->is_pkts[2]);
144bc4097aaSchristos #else
145bc4097aaSchristos 		PRINTF("%lu", sp->is_pkts[2]);
146bc4097aaSchristos #endif
147bc4097aaSchristos 		break;
148bc4097aaSchristos 
149bc4097aaSchristos 	case 12:
150bc4097aaSchristos #ifdef USE_QUAD_T
151bc4097aaSchristos 		PRINTF("%"PRIu64"", sp->is_pkts[3]);
152bc4097aaSchristos #else
153bc4097aaSchristos 		PRINTF("%lu", sp->is_pkts[3]);
154bc4097aaSchristos #endif
155bc4097aaSchristos 		break;
156bc4097aaSchristos 
157bc4097aaSchristos 	case 13:
158bc4097aaSchristos #ifdef USE_QUAD_T
159bc4097aaSchristos 		PRINTF("%"PRIu64"", sp->is_bytes[0]);
160bc4097aaSchristos #else
161bc4097aaSchristos 		PRINTF("%lu", sp->is_bytes[0]);
162bc4097aaSchristos #endif
163bc4097aaSchristos 		break;
164bc4097aaSchristos 
165bc4097aaSchristos 	case 14:
166bc4097aaSchristos #ifdef USE_QUAD_T
167bc4097aaSchristos 		PRINTF("%"PRIu64"", sp->is_bytes[1]);
168bc4097aaSchristos #else
169bc4097aaSchristos 		PRINTF("%lu", sp->is_bytes[1]);
170bc4097aaSchristos #endif
171bc4097aaSchristos 		break;
172bc4097aaSchristos 
173bc4097aaSchristos 	case 15:
174bc4097aaSchristos #ifdef USE_QUAD_T
175bc4097aaSchristos 		PRINTF("%"PRIu64"", sp->is_bytes[2]);
176bc4097aaSchristos #else
177bc4097aaSchristos 		PRINTF("%lu", sp->is_bytes[2]);
178bc4097aaSchristos #endif
179bc4097aaSchristos 		break;
180bc4097aaSchristos 
181bc4097aaSchristos 	case 16:
182bc4097aaSchristos #ifdef USE_QUAD_T
183bc4097aaSchristos 		PRINTF("%"PRIu64"", sp->is_bytes[3]);
184bc4097aaSchristos #else
185bc4097aaSchristos 		PRINTF("%lu", sp->is_bytes[3]);
186bc4097aaSchristos #endif
187bc4097aaSchristos 		break;
188bc4097aaSchristos 
189bc4097aaSchristos 	case 17:
190bc4097aaSchristos 		PRINTF("%d", sp->is_state[0]);
191bc4097aaSchristos 		break;
192bc4097aaSchristos 
193bc4097aaSchristos 	case 18:
194bc4097aaSchristos 		PRINTF("%d", sp->is_state[1]);
195bc4097aaSchristos 		break;
196bc4097aaSchristos 
197bc4097aaSchristos 	case 19:
198bc4097aaSchristos 		PRINTF("%d", sp->is_frage[0]);
199bc4097aaSchristos 		break;
200bc4097aaSchristos 
201bc4097aaSchristos 	case 20:
202bc4097aaSchristos 		PRINTF("%d", sp->is_frage[1]);
203bc4097aaSchristos 		break;
204bc4097aaSchristos 
205bc4097aaSchristos 	case 21:
206bc4097aaSchristos 		PRINTF("%d", sp->is_ref);
207bc4097aaSchristos 		break;
208bc4097aaSchristos 
209bc4097aaSchristos 	case 22:
210bc4097aaSchristos 		PRINTF("%d", sp->is_isninc[0]);
211bc4097aaSchristos 		break;
212bc4097aaSchristos 
213bc4097aaSchristos 	case 23:
214bc4097aaSchristos 		PRINTF("%d", sp->is_isninc[1]);
215bc4097aaSchristos 		break;
216bc4097aaSchristos 
217bc4097aaSchristos 	case 24:
218bc4097aaSchristos 		PRINTF("%hd", sp->is_sumd[0]);
219bc4097aaSchristos 		break;
220bc4097aaSchristos 
221bc4097aaSchristos 	case 25:
222bc4097aaSchristos 		PRINTF("%hd", sp->is_sumd[1]);
223bc4097aaSchristos 		break;
224bc4097aaSchristos 
225bc4097aaSchristos 	case 26:
226bc4097aaSchristos 		PRINTF("%s", hostname(sp->is_v, &sp->is_src.in4));
227bc4097aaSchristos 		break;
228bc4097aaSchristos 
229bc4097aaSchristos 	case 27:
230bc4097aaSchristos 		PRINTF("%s", hostname(sp->is_v, &sp->is_dst.in4));
231bc4097aaSchristos 		break;
232bc4097aaSchristos 
233bc4097aaSchristos 	case 28:
234bc4097aaSchristos 		PRINTF("%hu", ntohs(sp->is_sport));
235bc4097aaSchristos 		break;
236bc4097aaSchristos 
237bc4097aaSchristos 	case 29:
238bc4097aaSchristos 		PRINTF("%hu", ntohs(sp->is_dport));
239bc4097aaSchristos 		break;
240bc4097aaSchristos 
241bc4097aaSchristos 	case 30:
242bc4097aaSchristos 		PRINTF("%d", sp->is_type);
243bc4097aaSchristos 		break;
244bc4097aaSchristos 
245bc4097aaSchristos 	case 32:
246bc4097aaSchristos 		PRINTF("%#x", sp->is_pass);
247bc4097aaSchristos 		break;
248bc4097aaSchristos 
249bc4097aaSchristos 	case 33:
250bc4097aaSchristos 		PRINTF("%d", sp->is_p);
251bc4097aaSchristos 		break;
252bc4097aaSchristos 
253bc4097aaSchristos 	case 34:
254bc4097aaSchristos 		PRINTF("%d", sp->is_v);
255bc4097aaSchristos 		break;
256bc4097aaSchristos 
257bc4097aaSchristos 	case 35:
258bc4097aaSchristos 		PRINTF("%d", sp->is_hv);
259bc4097aaSchristos 		break;
260bc4097aaSchristos 
261bc4097aaSchristos 	case 36:
262bc4097aaSchristos 		PRINTF("%d", sp->is_tag);
263bc4097aaSchristos 		break;
264bc4097aaSchristos 
265bc4097aaSchristos 	case 37:
266bc4097aaSchristos 		PRINTF("%#x", sp->is_flags);
267bc4097aaSchristos 		break;
268bc4097aaSchristos 
269bc4097aaSchristos 	case 38:
270bc4097aaSchristos 		PRINTF("%d", sp->is_rulen);
271bc4097aaSchristos 		break;
272bc4097aaSchristos 
273bc4097aaSchristos 	case 39:
274bc4097aaSchristos 		PRINTF("%s", sp->is_group);
275bc4097aaSchristos 		break;
276bc4097aaSchristos 
277bc4097aaSchristos 	case 40:
278bc4097aaSchristos 		PRINTF("%#x", sp->is_flx[0][0]);
279bc4097aaSchristos 		break;
280bc4097aaSchristos 
281bc4097aaSchristos 	case 41:
282bc4097aaSchristos 		PRINTF("%#x", sp->is_flx[0][1]);
283bc4097aaSchristos 		break;
284bc4097aaSchristos 
285bc4097aaSchristos 	case 42:
286bc4097aaSchristos 		PRINTF("%#x", sp->is_flx[1][0]);
287bc4097aaSchristos 		break;
288bc4097aaSchristos 
289bc4097aaSchristos 	case 43:
290bc4097aaSchristos 		PRINTF("%#x", sp->is_flx[1][1]);
291bc4097aaSchristos 		break;
292bc4097aaSchristos 
293bc4097aaSchristos 	case 44:
294bc4097aaSchristos 		PRINTF("%#x", sp->is_opt[0]);
295bc4097aaSchristos 		break;
296bc4097aaSchristos 
297bc4097aaSchristos 	case 45:
298bc4097aaSchristos 		PRINTF("%#x", sp->is_opt[1]);
299bc4097aaSchristos 		break;
300bc4097aaSchristos 
301bc4097aaSchristos 	case 46:
302bc4097aaSchristos 		PRINTF("%#x", sp->is_optmsk[0]);
303bc4097aaSchristos 		break;
304bc4097aaSchristos 
305bc4097aaSchristos 	case 47:
306bc4097aaSchristos 		PRINTF("%#x", sp->is_optmsk[1]);
307bc4097aaSchristos 		break;
308bc4097aaSchristos 
309bc4097aaSchristos 	case 48:
310bc4097aaSchristos 		PRINTF("%#x", sp->is_sec);
311bc4097aaSchristos 		break;
312bc4097aaSchristos 
313bc4097aaSchristos 	case 49:
314bc4097aaSchristos 		PRINTF("%#x", sp->is_secmsk);
315bc4097aaSchristos 		break;
316bc4097aaSchristos 
317bc4097aaSchristos 	case 50:
318bc4097aaSchristos 		PRINTF("%#x", sp->is_auth);
319bc4097aaSchristos 		break;
320bc4097aaSchristos 
321bc4097aaSchristos 	case 51:
322bc4097aaSchristos 		PRINTF("%#x", sp->is_authmsk);
323bc4097aaSchristos 		break;
324bc4097aaSchristos 
325bc4097aaSchristos 	case 52:
326bc4097aaSchristos #ifdef USE_QUAD_T
327bc4097aaSchristos 		PRINTF("%"PRIu64"", sp->is_icmppkts[0]);
328bc4097aaSchristos #else
329bc4097aaSchristos 		PRINTF("%lu", sp->is_icmppkts[0]);
330bc4097aaSchristos #endif
331bc4097aaSchristos 		break;
332bc4097aaSchristos 
333bc4097aaSchristos 	case 53:
334bc4097aaSchristos #ifdef USE_QUAD_T
335bc4097aaSchristos 		PRINTF("%"PRIu64"", sp->is_icmppkts[1]);
336bc4097aaSchristos #else
337bc4097aaSchristos 		PRINTF("%lu", sp->is_icmppkts[1]);
338bc4097aaSchristos #endif
339bc4097aaSchristos 		break;
340bc4097aaSchristos 
341bc4097aaSchristos 	case 54:
342bc4097aaSchristos #ifdef USE_QUAD_T
343bc4097aaSchristos 		PRINTF("%"PRIu64"", sp->is_icmppkts[2]);
344bc4097aaSchristos #else
345bc4097aaSchristos 		PRINTF("%lu", sp->is_icmppkts[2]);
346bc4097aaSchristos #endif
347bc4097aaSchristos 		break;
348bc4097aaSchristos 
349bc4097aaSchristos 	case 55:
350bc4097aaSchristos #ifdef USE_QUAD_T
351bc4097aaSchristos 		PRINTF("%"PRIu64"", sp->is_icmppkts[3]);
352bc4097aaSchristos #else
353bc4097aaSchristos 		PRINTF("%lu", sp->is_icmppkts[3]);
354bc4097aaSchristos #endif
355bc4097aaSchristos 		break;
356bc4097aaSchristos 
357bc4097aaSchristos 	default:
358bc4097aaSchristos 		break;
359bc4097aaSchristos 	}
360bc4097aaSchristos }
361