xref: /netbsd-src/external/bsd/ipf/dist/lib/printnatfield.c (revision 13885a665959c62f13a82b3caedf986eaa17aa31)
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
printnatfield(n,fieldnum)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