2 * Definitions and Declarations for tuple.
4 * 16 Dec 2003: Yasuyuki Kozakai @USAGI <yasuyuki.kozakai@toshiba.co.jp>
5 * - generalize L3 protocol dependent part.
7 * Derived from include/linux/netfiter_ipv4/ip_conntrack_tuple.h
10 #ifndef _NF_CONNTRACK_TUPLE_H
11 #define _NF_CONNTRACK_TUPLE_H
13 #include <linux/netfilter/nf_conntrack_tuple_common.h>
15 /* A `tuple' is a structure containing the information to uniquely
16 identify a connection. ie. if two packets have the same tuple, they
17 are in the same connection; if not, they are not.
19 We divide the structure along "manipulatable" and
20 "non-manipulatable" lines, for the benefit of the NAT code.
23 #define NF_CT_TUPLE_L3SIZE 4
25 /* The l3 protocol-specific manipulable parts of the tuple: always in
27 union nf_conntrack_address {
28 u_int32_t all[NF_CT_TUPLE_L3SIZE];
33 /* The protocol-specific manipulable parts of the tuple: always in
35 union nf_conntrack_man_proto
37 /* Add other protocols here. */
53 __be16 key; /* GRE key is 32bit, PPtP only uses 16bit */
57 /* The manipulable part of the tuple. */
58 struct nf_conntrack_man
60 union nf_conntrack_address u3;
61 union nf_conntrack_man_proto u;
62 /* Layer 3 protocol */
66 /* This contains the information to distinguish a connection. */
67 struct nf_conntrack_tuple
69 struct nf_conntrack_man src;
71 /* These are the parts of the tuple which are fixed. */
73 union nf_conntrack_address u3;
75 /* Add other protocols here. */
98 /* The direction (for tuplehash) */
103 #endif /* _NF_CONNTRACK_TUPLE_H */