libnetfilter_conntrack 1.0.9
conntrack/getter.c
1/*
2 * (C) 2005-2011 by Pablo Neira Ayuso <pablo@netfilter.org>
3 *
4 * This program is free software; you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
8 */
9
10#include "internal/internal.h"
11
12static const void *get_attr_orig_ipv4_src(const struct nf_conntrack *ct)
13{
14 return &ct->head.orig.src.v4;
15}
16
17static const void *get_attr_orig_ipv4_dst(const struct nf_conntrack *ct)
18{
19 return &ct->head.orig.dst.v4;
20}
21
22static const void *get_attr_repl_ipv4_src(const struct nf_conntrack *ct)
23{
24 return &ct->repl.src.v4;
25}
26
27static const void *get_attr_repl_ipv4_dst(const struct nf_conntrack *ct)
28{
29 return &ct->repl.dst.v4;
30}
31
32static const void *get_attr_orig_ipv6_src(const struct nf_conntrack *ct)
33{
34 return &ct->head.orig.src.v6;
35}
36
37static const void *get_attr_orig_ipv6_dst(const struct nf_conntrack *ct)
38{
39 return &ct->head.orig.dst.v6;
40}
41
42static const void *get_attr_repl_ipv6_src(const struct nf_conntrack *ct)
43{
44 return &ct->repl.src.v6;
45}
46
47static const void *get_attr_repl_ipv6_dst(const struct nf_conntrack *ct)
48{
49 return &ct->repl.dst.v6;
50}
51
52static const void *get_attr_orig_port_src(const struct nf_conntrack *ct)
53{
54 return &ct->head.orig.l4src.all;
55}
56
57static const void *get_attr_orig_port_dst(const struct nf_conntrack *ct)
58{
59 return &ct->head.orig.l4dst.all;
60}
61
62static const void *get_attr_repl_port_src(const struct nf_conntrack *ct)
63{
64 return &ct->repl.l4src.all;
65}
66
67static const void *get_attr_repl_port_dst(const struct nf_conntrack *ct)
68{
69 return &ct->repl.l4dst.all;
70}
71
72static const void *get_attr_orig_zone(const struct nf_conntrack *ct)
73{
74 return &ct->head.orig.zone;
75}
76
77static const void *get_attr_repl_zone(const struct nf_conntrack *ct)
78{
79 return &ct->repl.zone;
80}
81
82static const void *get_attr_icmp_type(const struct nf_conntrack *ct)
83{
84 return &ct->head.orig.l4dst.icmp.type;
85}
86
87static const void *get_attr_icmp_code(const struct nf_conntrack *ct)
88{
89 return &ct->head.orig.l4dst.icmp.code;
90}
91
92static const void *get_attr_icmp_id(const struct nf_conntrack *ct)
93{
94 return &ct->head.orig.l4src.icmp.id;
95}
96
97static const void *get_attr_orig_l3proto(const struct nf_conntrack *ct)
98{
99 return &ct->head.orig.l3protonum;
100}
101
102static const void *get_attr_repl_l3proto(const struct nf_conntrack *ct)
103{
104 return &ct->repl.l3protonum;
105}
106
107static const void *get_attr_orig_l4proto(const struct nf_conntrack *ct)
108{
109 return &ct->head.orig.protonum;
110}
111
112static const void *get_attr_repl_l4proto(const struct nf_conntrack *ct)
113{
114 return &ct->repl.protonum;
115}
116
117static const void *get_attr_master_ipv4_src(const struct nf_conntrack *ct)
118{
119 return &ct->master.src.v4;
120}
121
122static const void *get_attr_master_ipv4_dst(const struct nf_conntrack *ct)
123{
124 return &ct->master.dst.v4;
125}
126
127static const void *get_attr_master_ipv6_src(const struct nf_conntrack *ct)
128{
129 return &ct->master.src.v6;
130}
131
132static const void *get_attr_master_ipv6_dst(const struct nf_conntrack *ct)
133{
134 return &ct->master.dst.v6;
135}
136
137static const void *get_attr_master_port_src(const struct nf_conntrack *ct)
138{
139 return &ct->master.l4src.all;
140}
141
142static const void *get_attr_master_port_dst(const struct nf_conntrack *ct)
143{
144 return &ct->master.l4dst.all;
145}
146
147static const void *get_attr_master_l3proto(const struct nf_conntrack *ct)
148{
149 return &ct->master.l3protonum;
150}
151
152static const void *get_attr_master_l4proto(const struct nf_conntrack *ct)
153{
154 return &ct->master.protonum;
155}
156
157static const void *get_attr_tcp_state(const struct nf_conntrack *ct)
158{
159 return &ct->protoinfo.tcp.state;
160}
161
162static const void *get_attr_tcp_flags_orig(const struct nf_conntrack *ct)
163{
164 return &ct->protoinfo.tcp.flags[__DIR_ORIG].value;
165}
166
167static const void *get_attr_tcp_mask_orig(const struct nf_conntrack *ct)
168{
169 return &ct->protoinfo.tcp.flags[__DIR_ORIG].mask;
170}
171
172static const void *get_attr_tcp_flags_repl(const struct nf_conntrack *ct)
173{
174 return &ct->protoinfo.tcp.flags[__DIR_REPL].value;
175}
176
177static const void *get_attr_tcp_mask_repl(const struct nf_conntrack *ct)
178{
179 return &ct->protoinfo.tcp.flags[__DIR_REPL].mask;
180}
181
182static const void *get_attr_tcp_wscale_orig(const struct nf_conntrack *ct)
183{
184 return &ct->protoinfo.tcp.wscale[__DIR_ORIG];
185}
186
187static const void *get_attr_tcp_wscale_repl(const struct nf_conntrack *ct)
188{
189 return &ct->protoinfo.tcp.wscale[__DIR_REPL];
190}
191
192static const void *get_attr_sctp_state(const struct nf_conntrack *ct)
193{
194 return &ct->protoinfo.sctp.state;
195}
196
197static const void *get_attr_sctp_vtag_orig(const struct nf_conntrack *ct)
198{
199 return &ct->protoinfo.sctp.vtag[__DIR_ORIG];
200}
201
202static const void *get_attr_sctp_vtag_repl(const struct nf_conntrack *ct)
203{
204 return &ct->protoinfo.sctp.vtag[__DIR_REPL];
205}
206
207static const void *get_attr_snat_ipv4(const struct nf_conntrack *ct)
208{
209 return &ct->snat.min_ip.v4;
210}
211
212static const void *get_attr_dnat_ipv4(const struct nf_conntrack *ct)
213{
214 return &ct->dnat.min_ip.v4;
215}
216
217static const void *get_attr_snat_ipv6(const struct nf_conntrack *ct)
218{
219 return &ct->snat.min_ip.v6;
220}
221
222static const void *get_attr_dnat_ipv6(const struct nf_conntrack *ct)
223{
224 return &ct->dnat.min_ip.v6;
225}
226
227static const void *get_attr_snat_port(const struct nf_conntrack *ct)
228{
229 return &ct->snat.l4min.all;
230}
231
232static const void *get_attr_dnat_port(const struct nf_conntrack *ct)
233{
234 return &ct->dnat.l4min.all;
235}
236
237static const void *get_attr_timeout(const struct nf_conntrack *ct)
238{
239 return &ct->timeout;
240}
241
242static const void *get_attr_mark(const struct nf_conntrack *ct)
243{
244 return &ct->mark;
245}
246
247static const void *get_attr_secmark(const struct nf_conntrack *ct)
248{
249 return &ct->secmark;
250}
251
252static const void *get_attr_orig_counter_packets(const struct nf_conntrack *ct)
253{
254 return &ct->counters[__DIR_ORIG].packets;
255}
256
257static const void *get_attr_orig_counter_bytes(const struct nf_conntrack *ct)
258{
259 return &ct->counters[__DIR_ORIG].bytes;
260}
261
262static const void *get_attr_repl_counter_packets(const struct nf_conntrack *ct)
263{
264 return &ct->counters[__DIR_REPL].packets;
265}
266
267static const void *get_attr_repl_counter_bytes(const struct nf_conntrack *ct)
268{
269 return &ct->counters[__DIR_REPL].bytes;
270}
271
272static const void *get_attr_status(const struct nf_conntrack *ct)
273{
274 return &ct->status;
275}
276
277static const void *get_attr_use(const struct nf_conntrack *ct)
278{
279 return &ct->use;
280}
281
282static const void *get_attr_id(const struct nf_conntrack *ct)
283{
284 return &ct->id;
285}
286
287static const void *get_attr_orig_cor_pos(const struct nf_conntrack *ct)
288{
289 return &ct->natseq[__DIR_ORIG].correction_pos;
290}
291
292static const void *get_attr_orig_off_bfr(const struct nf_conntrack *ct)
293{
294 return &ct->natseq[__DIR_ORIG].offset_before;
295}
296
297static const void *get_attr_orig_off_aft(const struct nf_conntrack *ct)
298{
299 return &ct->natseq[__DIR_ORIG].offset_after;
300}
301
302static const void *get_attr_repl_cor_pos(const struct nf_conntrack *ct)
303{
304 return &ct->natseq[__DIR_REPL].correction_pos;
305}
306
307static const void *get_attr_repl_off_bfr(const struct nf_conntrack *ct)
308{
309 return &ct->natseq[__DIR_REPL].offset_before;
310}
311
312static const void *get_attr_repl_off_aft(const struct nf_conntrack *ct)
313{
314 return &ct->natseq[__DIR_REPL].offset_after;
315}
316
317static const void *get_attr_helper_name(const struct nf_conntrack *ct)
318{
319 return ct->helper_name;
320}
321
322static const void *get_attr_dccp_state(const struct nf_conntrack *ct)
323{
324 return &ct->protoinfo.dccp.state;
325}
326
327static const void *get_attr_dccp_role(const struct nf_conntrack *ct)
328{
329 return &ct->protoinfo.dccp.role;
330}
331
332static const void *get_attr_dccp_handshake_seq(const struct nf_conntrack *ct)
333{
334 return &ct->protoinfo.dccp.handshake_seq;
335}
336
337static const void *get_attr_zone(const struct nf_conntrack *ct)
338{
339 return &ct->zone;
340}
341
342static const void *get_attr_secctx(const struct nf_conntrack *ct)
343{
344 return ct->secctx;
345}
346
347static const void *get_attr_timestamp_start(const struct nf_conntrack *ct)
348{
349 return &ct->timestamp.start;
350}
351
352static const void *get_attr_timestamp_stop(const struct nf_conntrack *ct)
353{
354 return &ct->timestamp.stop;
355}
356
357static const void *get_attr_helper_info(const struct nf_conntrack *ct)
358{
359 return ct->helper_info;
360}
361
362static const void *get_attr_connlabels(const struct nf_conntrack *ct)
363{
364 return ct->connlabels;
365}
366
367static const void *get_attr_connlabels_mask(const struct nf_conntrack *ct)
368{
369 return ct->connlabels_mask;
370}
371
372static const void *get_attr_synproxy_isn(const struct nf_conntrack *ct)
373{
374 return &ct->synproxy.isn;
375}
376
377static const void *get_attr_synproxy_its(const struct nf_conntrack *ct)
378{
379 return &ct->synproxy.its;
380}
381
382static const void *get_attr_synproxy_tsoff(const struct nf_conntrack *ct)
383{
384 return &ct->synproxy.tsoff;
385}
386
387const get_attr get_attr_array[ATTR_MAX] = {
388 [ATTR_ORIG_IPV4_SRC] = get_attr_orig_ipv4_src,
389 [ATTR_ORIG_IPV4_DST] = get_attr_orig_ipv4_dst,
390 [ATTR_REPL_IPV4_SRC] = get_attr_repl_ipv4_src,
391 [ATTR_REPL_IPV4_DST] = get_attr_repl_ipv4_dst,
392 [ATTR_ORIG_IPV6_SRC] = get_attr_orig_ipv6_src,
393 [ATTR_ORIG_IPV6_DST] = get_attr_orig_ipv6_dst,
394 [ATTR_REPL_IPV6_SRC] = get_attr_repl_ipv6_src,
395 [ATTR_REPL_IPV6_DST] = get_attr_repl_ipv6_dst,
396 [ATTR_ORIG_PORT_SRC] = get_attr_orig_port_src,
397 [ATTR_ORIG_PORT_DST] = get_attr_orig_port_dst,
398 [ATTR_REPL_PORT_SRC] = get_attr_repl_port_src,
399 [ATTR_REPL_PORT_DST] = get_attr_repl_port_dst,
400 [ATTR_ICMP_TYPE] = get_attr_icmp_type,
401 [ATTR_ICMP_CODE] = get_attr_icmp_code,
402 [ATTR_ICMP_ID] = get_attr_icmp_id,
403 [ATTR_ORIG_L3PROTO] = get_attr_orig_l3proto,
404 [ATTR_REPL_L3PROTO] = get_attr_repl_l3proto,
405 [ATTR_ORIG_L4PROTO] = get_attr_orig_l4proto,
406 [ATTR_REPL_L4PROTO] = get_attr_repl_l4proto,
407 [ATTR_TCP_STATE] = get_attr_tcp_state,
408 [ATTR_SNAT_IPV4] = get_attr_snat_ipv4,
409 [ATTR_DNAT_IPV4] = get_attr_dnat_ipv4,
410 [ATTR_SNAT_PORT] = get_attr_snat_port,
411 [ATTR_DNAT_PORT] = get_attr_dnat_port,
412 [ATTR_TIMEOUT] = get_attr_timeout,
413 [ATTR_MARK] = get_attr_mark,
414 [ATTR_ORIG_COUNTER_PACKETS] = get_attr_orig_counter_packets,
415 [ATTR_ORIG_COUNTER_BYTES] = get_attr_orig_counter_bytes,
416 [ATTR_REPL_COUNTER_PACKETS] = get_attr_repl_counter_packets,
417 [ATTR_REPL_COUNTER_BYTES] = get_attr_repl_counter_bytes,
418 [ATTR_USE] = get_attr_use,
419 [ATTR_ID] = get_attr_id,
420 [ATTR_STATUS] = get_attr_status,
421 [ATTR_TCP_FLAGS_ORIG] = get_attr_tcp_flags_orig,
422 [ATTR_TCP_FLAGS_REPL] = get_attr_tcp_flags_repl,
423 [ATTR_TCP_MASK_ORIG] = get_attr_tcp_mask_orig,
424 [ATTR_TCP_MASK_REPL] = get_attr_tcp_mask_repl,
425 [ATTR_MASTER_IPV4_SRC] = get_attr_master_ipv4_src,
426 [ATTR_MASTER_IPV4_DST] = get_attr_master_ipv4_dst,
427 [ATTR_MASTER_IPV6_SRC] = get_attr_master_ipv6_src,
428 [ATTR_MASTER_IPV6_DST] = get_attr_master_ipv6_dst,
429 [ATTR_MASTER_PORT_SRC] = get_attr_master_port_src,
430 [ATTR_MASTER_PORT_DST] = get_attr_master_port_dst,
431 [ATTR_MASTER_L3PROTO] = get_attr_master_l3proto,
432 [ATTR_MASTER_L4PROTO] = get_attr_master_l4proto,
433 [ATTR_SECMARK] = get_attr_secmark,
434 [ATTR_ORIG_NAT_SEQ_CORRECTION_POS] = get_attr_orig_cor_pos,
435 [ATTR_ORIG_NAT_SEQ_OFFSET_BEFORE] = get_attr_orig_off_bfr,
436 [ATTR_ORIG_NAT_SEQ_OFFSET_AFTER] = get_attr_orig_off_aft,
437 [ATTR_REPL_NAT_SEQ_CORRECTION_POS] = get_attr_repl_cor_pos,
438 [ATTR_REPL_NAT_SEQ_OFFSET_BEFORE] = get_attr_repl_off_bfr,
439 [ATTR_REPL_NAT_SEQ_OFFSET_AFTER] = get_attr_repl_off_aft,
440 [ATTR_SCTP_STATE] = get_attr_sctp_state,
441 [ATTR_SCTP_VTAG_ORIG] = get_attr_sctp_vtag_orig,
442 [ATTR_SCTP_VTAG_REPL] = get_attr_sctp_vtag_repl,
443 [ATTR_HELPER_NAME] = get_attr_helper_name,
444 [ATTR_DCCP_STATE] = get_attr_dccp_state,
445 [ATTR_DCCP_ROLE] = get_attr_dccp_role,
446 [ATTR_DCCP_HANDSHAKE_SEQ] = get_attr_dccp_handshake_seq,
447 [ATTR_TCP_WSCALE_ORIG] = get_attr_tcp_wscale_orig,
448 [ATTR_TCP_WSCALE_REPL] = get_attr_tcp_wscale_repl,
449 [ATTR_ZONE] = get_attr_zone,
450 [ATTR_ORIG_ZONE] = get_attr_orig_zone,
451 [ATTR_REPL_ZONE] = get_attr_repl_zone,
452 [ATTR_SECCTX] = get_attr_secctx,
453 [ATTR_TIMESTAMP_START] = get_attr_timestamp_start,
454 [ATTR_TIMESTAMP_STOP] = get_attr_timestamp_stop,
455 [ATTR_HELPER_INFO] = get_attr_helper_info,
456 [ATTR_CONNLABELS] = get_attr_connlabels,
457 [ATTR_CONNLABELS_MASK] = get_attr_connlabels_mask,
458 [ATTR_SNAT_IPV6] = get_attr_snat_ipv6,
459 [ATTR_DNAT_IPV6] = get_attr_dnat_ipv6,
460 [ATTR_SYNPROXY_ISN] = get_attr_synproxy_isn,
461 [ATTR_SYNPROXY_ITS] = get_attr_synproxy_its,
462 [ATTR_SYNPROXY_TSOFF] = get_attr_synproxy_tsoff,
463};