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