1254219Scy/* 2254219Scy * Copyright (C) 2012 by Darren Reed. 3254219Scy * 4254219Scy * See the IPFILTER.LICENCE file for details on licencing. 5254219Scy * 6254219Scy * $Id: printstatefields.c,v 1.4.2.2 2012/01/26 05:44:26 darren_r Exp $ 7254219Scy */ 8254219Scy 9254219Scy#include "ipf.h" 10254219Scy 11254219Scywordtab_t statefields[] = { 12254219Scy { "all", -2 }, 13254219Scy { "ifp0", 1 }, 14254219Scy { "ifp1", 2 }, 15254219Scy { "ifp2", 3 }, 16254219Scy { "ifp3", 4 }, 17254219Scy { "ifname0", 5 }, 18254219Scy { "ifname1", 6 }, 19254219Scy { "ifname2", 7 }, 20254219Scy { "ifname3", 8 }, 21254219Scy { "pkts0", 9 }, 22254219Scy { "pkts1", 10 }, 23254219Scy { "pkts2", 11 }, 24254219Scy { "pkts3", 12 }, 25254219Scy { "bytes0", 13 }, 26254219Scy { "bytes1", 14 }, 27254219Scy { "bytes2", 15 }, 28254219Scy { "bytes3", 16 }, 29254219Scy { "state0", 17 }, 30254219Scy { "state1", 18 }, 31254219Scy { "age0", 19 }, 32254219Scy { "age1", 20 }, 33254219Scy { "ref", 21 }, 34254219Scy { "isn0", 22 }, 35254219Scy { "isn1", 23 }, 36254219Scy { "sumd0", 24 }, 37254219Scy { "sumd1", 25 }, 38254219Scy { "src", 26 }, 39254219Scy { "dst", 27 }, 40254219Scy { "sport", 28 }, 41254219Scy { "dport", 29 }, 42254219Scy { "icmptype", 30 }, 43254219Scy { "-", 31 }, 44254219Scy { "pass", 32 }, 45254219Scy { "proto", 33 }, 46254219Scy { "version", 34 }, 47254219Scy { "hash", 35 }, 48254219Scy { "tag", 36 }, 49254219Scy { "flags", 37 }, 50254219Scy { "rulen", 38 }, 51254219Scy { "group", 39 }, 52254219Scy { "flx0", 40 }, 53254219Scy { "flx1", 41 }, 54254219Scy { "flx2", 42 }, 55254219Scy { "flx3", 43 }, 56254219Scy { "opt0", 44 }, 57254219Scy { "opt1", 45 }, 58254219Scy { "optmsk0", 46 }, 59254219Scy { "optmsk1", 47 }, 60254219Scy { "sec", 48 }, 61254219Scy { "secmsk", 49 }, 62254219Scy { "auth", 50 }, 63254219Scy { "authmsk", 51 }, 64254219Scy { "icmppkts0", 52 }, 65254219Scy { "icmppkts1", 53 }, 66254219Scy { "icmppkts2", 54 }, 67254219Scy { "icmppkts3", 55 }, 68254219Scy { NULL, 0 } 69254219Scy}; 70254219Scy 71254219Scy 72254219Scyvoid 73254219Scyprintstatefield(sp, fieldnum) 74254219Scy ipstate_t *sp; 75254219Scy int fieldnum; 76254219Scy{ 77254219Scy int i; 78254219Scy 79254219Scy switch (fieldnum) 80254219Scy { 81254219Scy case -2 : 82254219Scy for (i = 1; statefields[i].w_word != NULL; i++) { 83254219Scy if (statefields[i].w_value > 0) { 84254219Scy printstatefield(sp, i); 85254219Scy if (statefields[i + 1].w_value > 0) 86254219Scy putchar('\t'); 87254219Scy } 88254219Scy } 89254219Scy break; 90254219Scy 91254219Scy case 1: 92254219Scy PRINTF("%#lx", (u_long)sp->is_ifp[0]); 93254219Scy break; 94254219Scy 95254219Scy case 2: 96254219Scy PRINTF("%#lx", (u_long)sp->is_ifp[1]); 97254219Scy break; 98254219Scy 99254219Scy case 3: 100254219Scy PRINTF("%#lx", (u_long)sp->is_ifp[2]); 101254219Scy break; 102254219Scy 103254219Scy case 4: 104254219Scy PRINTF("%#lx", (u_long)sp->is_ifp[3]); 105254219Scy break; 106254219Scy 107254219Scy case 5: 108254219Scy PRINTF("%s", sp->is_ifname[0]); 109254219Scy break; 110254219Scy 111254219Scy case 6: 112254219Scy PRINTF("%s", sp->is_ifname[1]); 113254219Scy break; 114254219Scy 115254219Scy case 7: 116254219Scy PRINTF("%s", sp->is_ifname[2]); 117254219Scy break; 118254219Scy 119254219Scy case 8: 120254219Scy PRINTF("%s", sp->is_ifname[3]); 121254219Scy break; 122254219Scy 123254219Scy case 9: 124254219Scy#ifdef USE_QUAD_T 125254219Scy PRINTF("%"PRIu64"", sp->is_pkts[0]); 126254219Scy#else 127254219Scy PRINTF("%lu", sp->is_pkts[0]); 128254219Scy#endif 129254219Scy break; 130254219Scy 131254219Scy case 10: 132254219Scy#ifdef USE_QUAD_T 133254219Scy PRINTF("%"PRIu64"", sp->is_pkts[1]); 134254219Scy#else 135254219Scy PRINTF("%lu", sp->is_pkts[1]); 136254219Scy#endif 137254219Scy break; 138254219Scy 139254219Scy case 11: 140254219Scy#ifdef USE_QUAD_T 141254219Scy PRINTF("%"PRIu64"", sp->is_pkts[2]); 142254219Scy#else 143254219Scy PRINTF("%lu", sp->is_pkts[2]); 144254219Scy#endif 145254219Scy break; 146254219Scy 147254219Scy case 12: 148254219Scy#ifdef USE_QUAD_T 149254219Scy PRINTF("%"PRIu64"", sp->is_pkts[3]); 150254219Scy#else 151254219Scy PRINTF("%lu", sp->is_pkts[3]); 152254219Scy#endif 153254219Scy break; 154254219Scy 155254219Scy case 13: 156254219Scy#ifdef USE_QUAD_T 157254219Scy PRINTF("%"PRIu64"", sp->is_bytes[0]); 158254219Scy#else 159254219Scy PRINTF("%lu", sp->is_bytes[0]); 160254219Scy#endif 161254219Scy break; 162254219Scy 163254219Scy case 14: 164254219Scy#ifdef USE_QUAD_T 165254219Scy PRINTF("%"PRIu64"", sp->is_bytes[1]); 166254219Scy#else 167254219Scy PRINTF("%lu", sp->is_bytes[1]); 168254219Scy#endif 169254219Scy break; 170254219Scy 171254219Scy case 15: 172254219Scy#ifdef USE_QUAD_T 173254219Scy PRINTF("%"PRIu64"", sp->is_bytes[2]); 174254219Scy#else 175254219Scy PRINTF("%lu", sp->is_bytes[2]); 176254219Scy#endif 177254219Scy break; 178254219Scy 179254219Scy case 16: 180254219Scy#ifdef USE_QUAD_T 181254219Scy PRINTF("%"PRIu64"", sp->is_bytes[3]); 182254219Scy#else 183254219Scy PRINTF("%lu", sp->is_bytes[3]); 184254219Scy#endif 185254219Scy break; 186254219Scy 187254219Scy case 17: 188254219Scy PRINTF("%d", sp->is_state[0]); 189254219Scy break; 190254219Scy 191254219Scy case 18: 192254219Scy PRINTF("%d", sp->is_state[1]); 193254219Scy break; 194254219Scy 195254219Scy case 19: 196254219Scy PRINTF("%d", sp->is_frage[0]); 197254219Scy break; 198254219Scy 199254219Scy case 20: 200254219Scy PRINTF("%d", sp->is_frage[1]); 201254219Scy break; 202254219Scy 203254219Scy case 21: 204254219Scy PRINTF("%d", sp->is_ref); 205254219Scy break; 206254219Scy 207254219Scy case 22: 208254219Scy PRINTF("%d", sp->is_isninc[0]); 209254219Scy break; 210254219Scy 211254219Scy case 23: 212254219Scy PRINTF("%d", sp->is_isninc[1]); 213254219Scy break; 214254219Scy 215254219Scy case 24: 216254219Scy PRINTF("%hd", sp->is_sumd[0]); 217254219Scy break; 218254219Scy 219254219Scy case 25: 220254219Scy PRINTF("%hd", sp->is_sumd[1]); 221254219Scy break; 222254219Scy 223254219Scy case 26: 224254219Scy PRINTF("%s", hostname(sp->is_v, &sp->is_src.in4)); 225254219Scy break; 226254219Scy 227254219Scy case 27: 228254219Scy PRINTF("%s", hostname(sp->is_v, &sp->is_dst.in4)); 229254219Scy break; 230254219Scy 231254219Scy case 28: 232254219Scy PRINTF("%hu", ntohs(sp->is_sport)); 233254219Scy break; 234254219Scy 235254219Scy case 29: 236254219Scy PRINTF("%hu", ntohs(sp->is_dport)); 237254219Scy break; 238254219Scy 239254219Scy case 30: 240254219Scy PRINTF("%d", sp->is_type); 241254219Scy break; 242254219Scy 243254219Scy case 32: 244254219Scy PRINTF("%#x", sp->is_pass); 245254219Scy break; 246254219Scy 247254219Scy case 33: 248254219Scy PRINTF("%d", sp->is_p); 249254219Scy break; 250254219Scy 251254219Scy case 34: 252254219Scy PRINTF("%d", sp->is_v); 253254219Scy break; 254254219Scy 255254219Scy case 35: 256254219Scy PRINTF("%d", sp->is_hv); 257254219Scy break; 258254219Scy 259254219Scy case 36: 260254219Scy PRINTF("%d", sp->is_tag); 261254219Scy break; 262254219Scy 263254219Scy case 37: 264254219Scy PRINTF("%#x", sp->is_flags); 265254219Scy break; 266254219Scy 267254219Scy case 38: 268254219Scy PRINTF("%d", sp->is_rulen); 269254219Scy break; 270254219Scy 271254219Scy case 39: 272254219Scy PRINTF("%s", sp->is_group); 273254219Scy break; 274254219Scy 275254219Scy case 40: 276254219Scy PRINTF("%#x", sp->is_flx[0][0]); 277254219Scy break; 278254219Scy 279254219Scy case 41: 280254219Scy PRINTF("%#x", sp->is_flx[0][1]); 281254219Scy break; 282254219Scy 283254219Scy case 42: 284254219Scy PRINTF("%#x", sp->is_flx[1][0]); 285254219Scy break; 286254219Scy 287254219Scy case 43: 288254219Scy PRINTF("%#x", sp->is_flx[1][1]); 289254219Scy break; 290254219Scy 291254219Scy case 44: 292254219Scy PRINTF("%#x", sp->is_opt[0]); 293254219Scy break; 294254219Scy 295254219Scy case 45: 296254219Scy PRINTF("%#x", sp->is_opt[1]); 297254219Scy break; 298254219Scy 299254219Scy case 46: 300254219Scy PRINTF("%#x", sp->is_optmsk[0]); 301254219Scy break; 302254219Scy 303254219Scy case 47: 304254219Scy PRINTF("%#x", sp->is_optmsk[1]); 305254219Scy break; 306254219Scy 307254219Scy case 48: 308254219Scy PRINTF("%#x", sp->is_sec); 309254219Scy break; 310254219Scy 311254219Scy case 49: 312254219Scy PRINTF("%#x", sp->is_secmsk); 313254219Scy break; 314254219Scy 315254219Scy case 50: 316254219Scy PRINTF("%#x", sp->is_auth); 317254219Scy break; 318254219Scy 319254219Scy case 51: 320254219Scy PRINTF("%#x", sp->is_authmsk); 321254219Scy break; 322254219Scy 323254219Scy case 52: 324254219Scy#ifdef USE_QUAD_T 325254219Scy PRINTF("%"PRIu64"", sp->is_icmppkts[0]); 326254219Scy#else 327254219Scy PRINTF("%lu", sp->is_icmppkts[0]); 328254219Scy#endif 329254219Scy break; 330254219Scy 331254219Scy case 53: 332254219Scy#ifdef USE_QUAD_T 333254219Scy PRINTF("%"PRIu64"", sp->is_icmppkts[1]); 334254219Scy#else 335254219Scy PRINTF("%lu", sp->is_icmppkts[1]); 336254219Scy#endif 337254219Scy break; 338254219Scy 339254219Scy case 54: 340254219Scy#ifdef USE_QUAD_T 341254219Scy PRINTF("%"PRIu64"", sp->is_icmppkts[2]); 342254219Scy#else 343254219Scy PRINTF("%lu", sp->is_icmppkts[2]); 344254219Scy#endif 345254219Scy break; 346254219Scy 347254219Scy case 55: 348254219Scy#ifdef USE_QUAD_T 349254219Scy PRINTF("%"PRIu64"", sp->is_icmppkts[3]); 350254219Scy#else 351254219Scy PRINTF("%lu", sp->is_icmppkts[3]); 352254219Scy#endif 353254219Scy break; 354254219Scy 355254219Scy default: 356254219Scy break; 357254219Scy } 358254219Scy} 359