libnetfilter_conntrack 1.0.9
grp.c
1/*
2 * (C) 2005-2012 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
12const struct attr_grp_bitmask attr_grp_bitmask[ATTR_GRP_MAX]= {
13 [ATTR_GRP_ORIG_IPV4] = {
14 .bitmask[0] = (1 << ATTR_ORIG_IPV4_SRC) |
15 (1 << ATTR_ORIG_IPV4_DST) |
16 (1 << ATTR_ORIG_L3PROTO),
17 .type = NFCT_BITMASK_AND,
18 },
19 [ATTR_GRP_REPL_IPV4] = {
20 .bitmask[0] = (1 << ATTR_REPL_IPV4_SRC) |
21 (1 << ATTR_REPL_IPV4_DST) |
22 (1 << ATTR_REPL_L3PROTO),
23 .type = NFCT_BITMASK_AND,
24 },
25 [ATTR_GRP_ORIG_IPV6] = {
26 .bitmask[0] = (1 << ATTR_ORIG_IPV6_SRC) |
27 (1 << ATTR_ORIG_IPV6_DST) |
28 (1 << ATTR_ORIG_L3PROTO),
29 .type = NFCT_BITMASK_AND,
30 },
31 [ATTR_GRP_REPL_IPV6] = {
32 .bitmask[0] = (1 << ATTR_REPL_IPV6_SRC) |
33 (1 << ATTR_REPL_IPV6_DST) |
34 (1 << ATTR_REPL_L3PROTO),
35 .type = NFCT_BITMASK_AND,
36 },
37 [ATTR_GRP_ORIG_PORT] = {
38 .bitmask[0] = (1 << ATTR_ORIG_PORT_SRC) |
39 (1 << ATTR_ORIG_PORT_DST) |
40 (1 << ATTR_ORIG_L4PROTO),
41 .type = NFCT_BITMASK_AND,
42 },
43 [ATTR_GRP_REPL_PORT] = {
44 .bitmask[0] = (1 << ATTR_REPL_PORT_SRC) |
45 (1 << ATTR_REPL_PORT_DST) |
46 (1 << ATTR_REPL_L4PROTO),
47 .type = NFCT_BITMASK_AND,
48 },
49 [ATTR_GRP_ICMP] = {
50 .bitmask[0] = (1 << ATTR_ICMP_CODE) |
51 (1 << ATTR_ICMP_TYPE) |
52 (1 << ATTR_ICMP_ID),
53 .type = NFCT_BITMASK_AND,
54 },
55 [ATTR_GRP_MASTER_IPV4] = {
56 .bitmask[1] = (1 << (ATTR_MASTER_IPV4_SRC - 32)) |
57 (1 << (ATTR_MASTER_IPV4_DST - 32)) |
58 (1 << (ATTR_MASTER_L3PROTO - 32)),
59 .type = NFCT_BITMASK_AND,
60 },
61 [ATTR_GRP_MASTER_IPV6] = {
62 .bitmask[1] = (1 << (ATTR_MASTER_IPV6_SRC - 32)) |
63 (1 << (ATTR_MASTER_IPV6_DST - 32)) |
64 (1 << (ATTR_MASTER_L3PROTO - 32)),
65 .type = NFCT_BITMASK_AND,
66 },
67 [ATTR_GRP_MASTER_PORT] = {
68 .bitmask[1] = (1 << (ATTR_MASTER_PORT_SRC - 32)) |
69 (1 << (ATTR_MASTER_PORT_DST - 32)) |
70 (1 << (ATTR_MASTER_L4PROTO - 32)),
71 .type = NFCT_BITMASK_AND,
72 },
73 [ATTR_GRP_ORIG_COUNTERS] = {
74 .bitmask[0] = (1 << (ATTR_ORIG_COUNTER_PACKETS)) |
75 (1 << (ATTR_ORIG_COUNTER_BYTES)),
76 .type = NFCT_BITMASK_AND,
77 },
78 [ATTR_GRP_REPL_COUNTERS] = {
79 .bitmask[0] = (1 << (ATTR_REPL_COUNTER_PACKETS)) |
80 (1 << (ATTR_REPL_COUNTER_BYTES)),
81 .type = NFCT_BITMASK_AND,
82 },
83 [ATTR_GRP_ORIG_ADDR_SRC] = {
84 .bitmask[0] = (1 << ATTR_ORIG_IPV4_SRC) |
85 (1 << ATTR_ORIG_IPV6_SRC),
86 .type = NFCT_BITMASK_OR,
87 },
88 [ATTR_GRP_ORIG_ADDR_DST] = {
89 .bitmask[0] = (1 << ATTR_ORIG_IPV4_DST) |
90 (1 << ATTR_ORIG_IPV6_DST),
91 .type = NFCT_BITMASK_OR,
92
93 },
94 [ATTR_GRP_REPL_ADDR_SRC] = {
95 .bitmask[0] = (1 << ATTR_REPL_IPV4_SRC) |
96 (1 << ATTR_REPL_IPV6_SRC),
97 .type = NFCT_BITMASK_OR,
98 },
99 [ATTR_GRP_REPL_ADDR_DST] = {
100 .bitmask[0] = (1 << ATTR_REPL_IPV4_DST) |
101 (1 << ATTR_REPL_IPV6_DST),
102 .type = NFCT_BITMASK_OR,
103 },
104};