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