/* $NetBSD: printnatfield.c,v 1.2 2012/07/22 14:27:37 darrenr Exp $ */ /* * Copyright (C) 2012 by Darren Reed. * * See the IPFILTER.LICENCE file for details on licencing. * * Id: printnatfield.c,v 1.1.1.2 2012/07/22 13:44:41 darrenr Exp $ */ #include "ipf.h" wordtab_t natfields[] = { { "all", -2 }, { "ifp0", 1 }, { "ifp1", 2 }, { "mtu0", 3 }, { "mtu1", 4 }, { "ifname0", 5 }, { "ifname1", 6 }, { "sumd0", 7 }, { "sumd1", 8 }, { "pkts0", 9 }, { "pkts1", 10 }, { "bytes0", 11 }, { "bytes1", 12 }, { "proto0", 13 }, { "proto1", 14 }, { "hash0", 15 }, { "hash1", 16 }, { "ref", 17 }, { "rev", 18 }, { "v0", 19 }, { "redir", 20 }, { "use", 21 }, { "ipsumd", 22 }, { "dir", 23 }, { "olddstip", 24 }, { "oldsrcip", 25 }, { "newdstip", 26 }, { "newsrcip", 27 }, { "olddport", 28 }, { "oldsport", 29 }, { "newdport", 30 }, { "newsport", 31 }, { "age", 32 }, { "v1", 33 }, { NULL, 0 } }; void printnatfield(n, fieldnum) nat_t *n; int fieldnum; { int i; switch (fieldnum) { case -2 : for (i = 1; natfields[i].w_word != NULL; i++) { if (natfields[i].w_value > 0) { printnatfield(n, i); if (natfields[i + 1].w_value > 0) putchar('\t'); } } break; case 1: PRINTF("%#lx", (u_long)n->nat_ifps[0]); break; case 2: PRINTF("%#lx", (u_long)n->nat_ifps[1]); break; case 3: PRINTF("%d", n->nat_mtu[0]); break; case 4: PRINTF("%d", n->nat_mtu[1]); break; case 5: PRINTF("%s", n->nat_ifnames[0]); break; case 6: PRINTF("%s", n->nat_ifnames[1]); break; case 7: PRINTF("%d", n->nat_sumd[0]); break; case 8: PRINTF("%d", n->nat_sumd[1]); break; case 9: #ifdef USE_QUAD_T PRINTF("%"PRIu64"", n->nat_pkts[0]); #else PRINTF("%lu", n->nat_pkts[0]); #endif break; case 10: #ifdef USE_QUAD_T PRINTF("%"PRIu64"", n->nat_pkts[1]); #else PRINTF("%lu", n->nat_pkts[1]); #endif break; case 11: #ifdef USE_QUAD_T PRINTF("%"PRIu64"", n->nat_bytes[0]); #else PRINTF("%lu", n->nat_bytes[0]); #endif break; case 12: #ifdef USE_QUAD_T PRINTF("%"PRIu64"", n->nat_bytes[1]); #else PRINTF("%lu", n->nat_bytes[1]); #endif break; case 13: PRINTF("%d", n->nat_pr[0]); break; case 14: PRINTF("%d", n->nat_pr[1]); break; case 15: PRINTF("%u", n->nat_hv[0]); break; case 16: PRINTF("%u", n->nat_hv[1]); break; case 17: PRINTF("%d", n->nat_ref); break; case 18: PRINTF("%d", n->nat_rev); break; case 19: PRINTF("%d", n->nat_v[0]); break; case 33: PRINTF("%d", n->nat_v[0]); break; case 20: PRINTF("%d", n->nat_redir); break; case 21: PRINTF("%d", n->nat_use); break; case 22: PRINTF("%u", n->nat_ipsumd); break; case 23: PRINTF("%d", n->nat_dir); break; case 24: PRINTF("%s", hostname(n->nat_v[0], &n->nat_odstip)); break; case 25: PRINTF("%s", hostname(n->nat_v[0], &n->nat_osrcip)); break; case 26: PRINTF("%s", hostname(n->nat_v[1], &n->nat_ndstip)); break; case 27: PRINTF("%s", hostname(n->nat_v[1], &n->nat_nsrcip)); break; case 28: PRINTF("%hu", ntohs(n->nat_odport)); break; case 29: PRINTF("%hu", ntohs(n->nat_osport)); break; case 30: PRINTF("%hu", ntohs(n->nat_ndport)); break; case 31: PRINTF("%hu", ntohs(n->nat_nsport)); break; case 32: PRINTF("%u", n->nat_age); break; default: break; } }