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