Merge branches 'release' and 'dmi' into release
[linux-2.6] / include / linux / netfilter / xt_conntrack.h
1 /* Header file for kernel module to match connection tracking information.
2  * GPL (C) 2001  Marc Boucher (marc@mbsi.ca).
3  */
4
5 #ifndef _XT_CONNTRACK_H
6 #define _XT_CONNTRACK_H
7
8 #include <linux/netfilter/nf_conntrack_tuple_common.h>
9
10 #define XT_CONNTRACK_STATE_BIT(ctinfo) (1 << ((ctinfo)%IP_CT_IS_REPLY+1))
11 #define XT_CONNTRACK_STATE_INVALID (1 << 0)
12
13 #define XT_CONNTRACK_STATE_SNAT (1 << (IP_CT_NUMBER + 1))
14 #define XT_CONNTRACK_STATE_DNAT (1 << (IP_CT_NUMBER + 2))
15 #define XT_CONNTRACK_STATE_UNTRACKED (1 << (IP_CT_NUMBER + 3))
16
17 /* flags, invflags: */
18 enum {
19         XT_CONNTRACK_STATE        = 1 << 0,
20         XT_CONNTRACK_PROTO        = 1 << 1,
21         XT_CONNTRACK_ORIGSRC      = 1 << 2,
22         XT_CONNTRACK_ORIGDST      = 1 << 3,
23         XT_CONNTRACK_REPLSRC      = 1 << 4,
24         XT_CONNTRACK_REPLDST      = 1 << 5,
25         XT_CONNTRACK_STATUS       = 1 << 6,
26         XT_CONNTRACK_EXPIRES      = 1 << 7,
27         XT_CONNTRACK_ORIGSRC_PORT = 1 << 8,
28         XT_CONNTRACK_ORIGDST_PORT = 1 << 9,
29         XT_CONNTRACK_REPLSRC_PORT = 1 << 10,
30         XT_CONNTRACK_REPLDST_PORT = 1 << 11,
31         XT_CONNTRACK_DIRECTION    = 1 << 12,
32 };
33
34 /* This is exposed to userspace, so remains frozen in time. */
35 struct ip_conntrack_old_tuple
36 {
37         struct {
38                 __be32 ip;
39                 union {
40                         __u16 all;
41                 } u;
42         } src;
43
44         struct {
45                 __be32 ip;
46                 union {
47                         __u16 all;
48                 } u;
49
50                 /* The protocol. */
51                 __u16 protonum;
52         } dst;
53 };
54
55 struct xt_conntrack_info
56 {
57         unsigned int statemask, statusmask;
58
59         struct ip_conntrack_old_tuple tuple[IP_CT_DIR_MAX];
60         struct in_addr sipmsk[IP_CT_DIR_MAX], dipmsk[IP_CT_DIR_MAX];
61
62         unsigned long expires_min, expires_max;
63
64         /* Flags word */
65         u_int8_t flags;
66         /* Inverse flags */
67         u_int8_t invflags;
68 };
69
70 struct xt_conntrack_mtinfo1 {
71         union nf_inet_addr origsrc_addr, origsrc_mask;
72         union nf_inet_addr origdst_addr, origdst_mask;
73         union nf_inet_addr replsrc_addr, replsrc_mask;
74         union nf_inet_addr repldst_addr, repldst_mask;
75         u_int32_t expires_min, expires_max;
76         u_int16_t l4proto;
77         __be16 origsrc_port, origdst_port;
78         __be16 replsrc_port, repldst_port;
79         u_int16_t match_flags, invert_flags;
80         u_int8_t state_mask, status_mask;
81 };
82
83 #endif /*_XT_CONNTRACK_H*/