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