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