1 1.2 darrenr /* $NetBSD: printnatfield.c,v 1.2 2012/07/22 14:27:37 darrenr Exp $ */ 2 1.1 christos 3 1.1 christos /* 4 1.1 christos * Copyright (C) 2012 by Darren Reed. 5 1.1 christos * 6 1.1 christos * See the IPFILTER.LICENCE file for details on licencing. 7 1.1 christos * 8 1.2 darrenr * Id: printnatfield.c,v 1.1.1.2 2012/07/22 13:44:41 darrenr Exp $ 9 1.1 christos */ 10 1.1 christos 11 1.1 christos #include "ipf.h" 12 1.1 christos 13 1.1 christos wordtab_t natfields[] = { 14 1.1 christos { "all", -2 }, 15 1.1 christos { "ifp0", 1 }, 16 1.1 christos { "ifp1", 2 }, 17 1.1 christos { "mtu0", 3 }, 18 1.1 christos { "mtu1", 4 }, 19 1.1 christos { "ifname0", 5 }, 20 1.1 christos { "ifname1", 6 }, 21 1.1 christos { "sumd0", 7 }, 22 1.1 christos { "sumd1", 8 }, 23 1.1 christos { "pkts0", 9 }, 24 1.1 christos { "pkts1", 10 }, 25 1.1 christos { "bytes0", 11 }, 26 1.1 christos { "bytes1", 12 }, 27 1.1 christos { "proto0", 13 }, 28 1.1 christos { "proto1", 14 }, 29 1.1 christos { "hash0", 15 }, 30 1.1 christos { "hash1", 16 }, 31 1.1 christos { "ref", 17 }, 32 1.1 christos { "rev", 18 }, 33 1.1 christos { "v0", 19 }, 34 1.1 christos { "redir", 20 }, 35 1.1 christos { "use", 21 }, 36 1.1 christos { "ipsumd", 22 }, 37 1.1 christos { "dir", 23 }, 38 1.1 christos { "olddstip", 24 }, 39 1.1 christos { "oldsrcip", 25 }, 40 1.1 christos { "newdstip", 26 }, 41 1.1 christos { "newsrcip", 27 }, 42 1.1 christos { "olddport", 28 }, 43 1.1 christos { "oldsport", 29 }, 44 1.1 christos { "newdport", 30 }, 45 1.1 christos { "newsport", 31 }, 46 1.1 christos { "age", 32 }, 47 1.1 christos { "v1", 33 }, 48 1.1 christos { NULL, 0 } 49 1.1 christos }; 50 1.1 christos 51 1.1 christos 52 1.1 christos void 53 1.1 christos printnatfield(n, fieldnum) 54 1.1 christos nat_t *n; 55 1.1 christos int fieldnum; 56 1.1 christos { 57 1.1 christos int i; 58 1.1 christos 59 1.1 christos switch (fieldnum) 60 1.1 christos { 61 1.1 christos case -2 : 62 1.1 christos for (i = 1; natfields[i].w_word != NULL; i++) { 63 1.1 christos if (natfields[i].w_value > 0) { 64 1.1 christos printnatfield(n, i); 65 1.1 christos if (natfields[i + 1].w_value > 0) 66 1.1 christos putchar('\t'); 67 1.1 christos } 68 1.1 christos } 69 1.1 christos break; 70 1.1 christos 71 1.1 christos case 1: 72 1.1 christos PRINTF("%#lx", (u_long)n->nat_ifps[0]); 73 1.1 christos break; 74 1.1 christos 75 1.1 christos case 2: 76 1.1 christos PRINTF("%#lx", (u_long)n->nat_ifps[1]); 77 1.1 christos break; 78 1.1 christos 79 1.1 christos case 3: 80 1.1 christos PRINTF("%d", n->nat_mtu[0]); 81 1.1 christos break; 82 1.1 christos 83 1.1 christos case 4: 84 1.1 christos PRINTF("%d", n->nat_mtu[1]); 85 1.1 christos break; 86 1.1 christos 87 1.1 christos case 5: 88 1.1 christos PRINTF("%s", n->nat_ifnames[0]); 89 1.1 christos break; 90 1.1 christos 91 1.1 christos case 6: 92 1.1 christos PRINTF("%s", n->nat_ifnames[1]); 93 1.1 christos break; 94 1.1 christos 95 1.1 christos case 7: 96 1.1 christos PRINTF("%d", n->nat_sumd[0]); 97 1.1 christos break; 98 1.1 christos 99 1.1 christos case 8: 100 1.1 christos PRINTF("%d", n->nat_sumd[1]); 101 1.1 christos break; 102 1.1 christos 103 1.1 christos case 9: 104 1.1 christos #ifdef USE_QUAD_T 105 1.1 christos PRINTF("%"PRIu64"", n->nat_pkts[0]); 106 1.1 christos #else 107 1.1 christos PRINTF("%lu", n->nat_pkts[0]); 108 1.1 christos #endif 109 1.1 christos break; 110 1.1 christos 111 1.1 christos case 10: 112 1.1 christos #ifdef USE_QUAD_T 113 1.1 christos PRINTF("%"PRIu64"", n->nat_pkts[1]); 114 1.1 christos #else 115 1.1 christos PRINTF("%lu", n->nat_pkts[1]); 116 1.1 christos #endif 117 1.1 christos break; 118 1.1 christos 119 1.1 christos case 11: 120 1.1 christos #ifdef USE_QUAD_T 121 1.1 christos PRINTF("%"PRIu64"", n->nat_bytes[0]); 122 1.1 christos #else 123 1.1 christos PRINTF("%lu", n->nat_bytes[0]); 124 1.1 christos #endif 125 1.1 christos break; 126 1.1 christos 127 1.1 christos case 12: 128 1.1 christos #ifdef USE_QUAD_T 129 1.1 christos PRINTF("%"PRIu64"", n->nat_bytes[1]); 130 1.1 christos #else 131 1.1 christos PRINTF("%lu", n->nat_bytes[1]); 132 1.1 christos #endif 133 1.1 christos break; 134 1.1 christos 135 1.1 christos case 13: 136 1.1 christos PRINTF("%d", n->nat_pr[0]); 137 1.1 christos break; 138 1.1 christos 139 1.1 christos case 14: 140 1.1 christos PRINTF("%d", n->nat_pr[1]); 141 1.1 christos break; 142 1.1 christos 143 1.1 christos case 15: 144 1.1 christos PRINTF("%u", n->nat_hv[0]); 145 1.1 christos break; 146 1.1 christos 147 1.1 christos case 16: 148 1.1 christos PRINTF("%u", n->nat_hv[1]); 149 1.1 christos break; 150 1.1 christos 151 1.1 christos case 17: 152 1.1 christos PRINTF("%d", n->nat_ref); 153 1.1 christos break; 154 1.1 christos 155 1.1 christos case 18: 156 1.1 christos PRINTF("%d", n->nat_rev); 157 1.1 christos break; 158 1.1 christos 159 1.1 christos case 19: 160 1.1 christos PRINTF("%d", n->nat_v[0]); 161 1.1 christos break; 162 1.1 christos 163 1.1 christos case 33: 164 1.1 christos PRINTF("%d", n->nat_v[0]); 165 1.1 christos break; 166 1.1 christos 167 1.1 christos case 20: 168 1.1 christos PRINTF("%d", n->nat_redir); 169 1.1 christos break; 170 1.1 christos 171 1.1 christos case 21: 172 1.1 christos PRINTF("%d", n->nat_use); 173 1.1 christos break; 174 1.1 christos 175 1.1 christos case 22: 176 1.1 christos PRINTF("%u", n->nat_ipsumd); 177 1.1 christos break; 178 1.1 christos 179 1.1 christos case 23: 180 1.1 christos PRINTF("%d", n->nat_dir); 181 1.1 christos break; 182 1.1 christos 183 1.1 christos case 24: 184 1.1 christos PRINTF("%s", hostname(n->nat_v[0], &n->nat_odstip)); 185 1.1 christos break; 186 1.1 christos 187 1.1 christos case 25: 188 1.1 christos PRINTF("%s", hostname(n->nat_v[0], &n->nat_osrcip)); 189 1.1 christos break; 190 1.1 christos 191 1.1 christos case 26: 192 1.1 christos PRINTF("%s", hostname(n->nat_v[1], &n->nat_ndstip)); 193 1.1 christos break; 194 1.1 christos 195 1.1 christos case 27: 196 1.1 christos PRINTF("%s", hostname(n->nat_v[1], &n->nat_nsrcip)); 197 1.1 christos break; 198 1.1 christos 199 1.1 christos case 28: 200 1.1 christos PRINTF("%hu", ntohs(n->nat_odport)); 201 1.1 christos break; 202 1.1 christos 203 1.1 christos case 29: 204 1.1 christos PRINTF("%hu", ntohs(n->nat_osport)); 205 1.1 christos break; 206 1.1 christos 207 1.1 christos case 30: 208 1.1 christos PRINTF("%hu", ntohs(n->nat_ndport)); 209 1.1 christos break; 210 1.1 christos 211 1.1 christos case 31: 212 1.1 christos PRINTF("%hu", ntohs(n->nat_nsport)); 213 1.1 christos break; 214 1.1 christos 215 1.1 christos case 32: 216 1.1 christos PRINTF("%u", n->nat_age); 217 1.1 christos break; 218 1.1 christos 219 1.1 christos default: 220 1.1 christos break; 221 1.1 christos } 222 1.1 christos } 223