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