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