xref: /netbsd-src/external/bsd/ipf/dist/lib/printstatefields.c (revision 13885a665959c62f13a82b3caedf986eaa17aa31)
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