Home | History | Annotate | Line # | Download | only in lib
      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
     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