1254219Scy/* 2254219Scy * Copyright (C) 2012 by Darren Reed. 3254219Scy * 4254219Scy * See the IPFILTER.LICENCE file for details on licencing. 5254219Scy * 6254219Scy * $Id: printnatfield.c,v 1.6.2.2 2012/01/26 05:44:26 darren_r Exp $ 7254219Scy */ 8254219Scy 9254219Scy#include "ipf.h" 10254219Scy 11254219Scywordtab_t natfields[] = { 12254219Scy { "all", -2 }, 13254219Scy { "ifp0", 1 }, 14254219Scy { "ifp1", 2 }, 15254219Scy { "mtu0", 3 }, 16254219Scy { "mtu1", 4 }, 17254219Scy { "ifname0", 5 }, 18254219Scy { "ifname1", 6 }, 19254219Scy { "sumd0", 7 }, 20254219Scy { "sumd1", 8 }, 21254219Scy { "pkts0", 9 }, 22254219Scy { "pkts1", 10 }, 23254219Scy { "bytes0", 11 }, 24254219Scy { "bytes1", 12 }, 25254219Scy { "proto0", 13 }, 26254219Scy { "proto1", 14 }, 27254219Scy { "hash0", 15 }, 28254219Scy { "hash1", 16 }, 29254219Scy { "ref", 17 }, 30254219Scy { "rev", 18 }, 31254219Scy { "v0", 19 }, 32254219Scy { "redir", 20 }, 33254219Scy { "use", 21 }, 34254219Scy { "ipsumd", 22 }, 35254219Scy { "dir", 23 }, 36254219Scy { "olddstip", 24 }, 37254219Scy { "oldsrcip", 25 }, 38254219Scy { "newdstip", 26 }, 39254219Scy { "newsrcip", 27 }, 40254219Scy { "olddport", 28 }, 41254219Scy { "oldsport", 29 }, 42254219Scy { "newdport", 30 }, 43254219Scy { "newsport", 31 }, 44254219Scy { "age", 32 }, 45254219Scy { "v1", 33 }, 46254219Scy { NULL, 0 } 47254219Scy}; 48254219Scy 49254219Scy 50254219Scyvoid 51254219Scyprintnatfield(n, fieldnum) 52254219Scy nat_t *n; 53254219Scy int fieldnum; 54254219Scy{ 55254219Scy int i; 56254219Scy 57254219Scy switch (fieldnum) 58254219Scy { 59254219Scy case -2 : 60254219Scy for (i = 1; natfields[i].w_word != NULL; i++) { 61254219Scy if (natfields[i].w_value > 0) { 62254219Scy printnatfield(n, i); 63254219Scy if (natfields[i + 1].w_value > 0) 64254219Scy putchar('\t'); 65254219Scy } 66254219Scy } 67254219Scy break; 68254219Scy 69254219Scy case 1: 70254219Scy PRINTF("%#lx", (u_long)n->nat_ifps[0]); 71254219Scy break; 72254219Scy 73254219Scy case 2: 74254219Scy PRINTF("%#lx", (u_long)n->nat_ifps[1]); 75254219Scy break; 76254219Scy 77254219Scy case 3: 78254219Scy PRINTF("%d", n->nat_mtu[0]); 79254219Scy break; 80254219Scy 81254219Scy case 4: 82254219Scy PRINTF("%d", n->nat_mtu[1]); 83254219Scy break; 84254219Scy 85254219Scy case 5: 86254219Scy PRINTF("%s", n->nat_ifnames[0]); 87254219Scy break; 88254219Scy 89254219Scy case 6: 90254219Scy PRINTF("%s", n->nat_ifnames[1]); 91254219Scy break; 92254219Scy 93254219Scy case 7: 94254219Scy PRINTF("%d", n->nat_sumd[0]); 95254219Scy break; 96254219Scy 97254219Scy case 8: 98254219Scy PRINTF("%d", n->nat_sumd[1]); 99254219Scy break; 100254219Scy 101254219Scy case 9: 102254219Scy#ifdef USE_QUAD_T 103254219Scy PRINTF("%"PRIu64"", n->nat_pkts[0]); 104254219Scy#else 105254219Scy PRINTF("%lu", n->nat_pkts[0]); 106254219Scy#endif 107254219Scy break; 108254219Scy 109254219Scy case 10: 110254219Scy#ifdef USE_QUAD_T 111254219Scy PRINTF("%"PRIu64"", n->nat_pkts[1]); 112254219Scy#else 113254219Scy PRINTF("%lu", n->nat_pkts[1]); 114254219Scy#endif 115254219Scy break; 116254219Scy 117254219Scy case 11: 118254219Scy#ifdef USE_QUAD_T 119254219Scy PRINTF("%"PRIu64"", n->nat_bytes[0]); 120254219Scy#else 121254219Scy PRINTF("%lu", n->nat_bytes[0]); 122254219Scy#endif 123254219Scy break; 124254219Scy 125254219Scy case 12: 126254219Scy#ifdef USE_QUAD_T 127254219Scy PRINTF("%"PRIu64"", n->nat_bytes[1]); 128254219Scy#else 129254219Scy PRINTF("%lu", n->nat_bytes[1]); 130254219Scy#endif 131254219Scy break; 132254219Scy 133254219Scy case 13: 134254219Scy PRINTF("%d", n->nat_pr[0]); 135254219Scy break; 136254219Scy 137254219Scy case 14: 138254219Scy PRINTF("%d", n->nat_pr[1]); 139254219Scy break; 140254219Scy 141254219Scy case 15: 142254219Scy PRINTF("%u", n->nat_hv[0]); 143254219Scy break; 144254219Scy 145254219Scy case 16: 146254219Scy PRINTF("%u", n->nat_hv[1]); 147254219Scy break; 148254219Scy 149254219Scy case 17: 150254219Scy PRINTF("%d", n->nat_ref); 151254219Scy break; 152254219Scy 153254219Scy case 18: 154254219Scy PRINTF("%d", n->nat_rev); 155254219Scy break; 156254219Scy 157254219Scy case 19: 158254219Scy PRINTF("%d", n->nat_v[0]); 159254219Scy break; 160254219Scy 161254219Scy case 33: 162254219Scy PRINTF("%d", n->nat_v[0]); 163254219Scy break; 164254219Scy 165254219Scy case 20: 166254219Scy PRINTF("%d", n->nat_redir); 167254219Scy break; 168254219Scy 169254219Scy case 21: 170254219Scy PRINTF("%d", n->nat_use); 171254219Scy break; 172254219Scy 173254219Scy case 22: 174254219Scy PRINTF("%u", n->nat_ipsumd); 175254219Scy break; 176254219Scy 177254219Scy case 23: 178254219Scy PRINTF("%d", n->nat_dir); 179254219Scy break; 180254219Scy 181254219Scy case 24: 182254219Scy PRINTF("%s", hostname(n->nat_v[0], &n->nat_odstip)); 183254219Scy break; 184254219Scy 185254219Scy case 25: 186254219Scy PRINTF("%s", hostname(n->nat_v[0], &n->nat_osrcip)); 187254219Scy break; 188254219Scy 189254219Scy case 26: 190254219Scy PRINTF("%s", hostname(n->nat_v[1], &n->nat_ndstip)); 191254219Scy break; 192254219Scy 193254219Scy case 27: 194254219Scy PRINTF("%s", hostname(n->nat_v[1], &n->nat_nsrcip)); 195254219Scy break; 196254219Scy 197254219Scy case 28: 198254219Scy PRINTF("%hu", ntohs(n->nat_odport)); 199254219Scy break; 200254219Scy 201254219Scy case 29: 202254219Scy PRINTF("%hu", ntohs(n->nat_osport)); 203254219Scy break; 204254219Scy 205254219Scy case 30: 206254219Scy PRINTF("%hu", ntohs(n->nat_ndport)); 207254219Scy break; 208254219Scy 209254219Scy case 31: 210254219Scy PRINTF("%hu", ntohs(n->nat_nsport)); 211254219Scy break; 212254219Scy 213254219Scy case 32: 214254219Scy PRINTF("%u", n->nat_age); 215254219Scy break; 216254219Scy 217254219Scy default: 218254219Scy break; 219254219Scy } 220254219Scy} 221