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