Home | History | Annotate | Line # | Download | only in lib
printnatfield.c revision 1.2
      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