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