| /* This file was manually copied from the Linux kernel source |
| * and manually stripped from __KERNEL__ sections and unused functions. |
| */ |
| |
| /* |
| * Definitions and Declarations for tuple. |
| * |
| * 16 Dec 2003: Yasuyuki Kozakai @USAGI <yasuyuki.kozakai@toshiba.co.jp> |
| * - generalize L3 protocol dependent part. |
| * |
| * Derived from include/linux/netfiter_ipv4/ip_conntrack_tuple.h |
| */ |
| |
| #ifndef _NF_CONNTRACK_TUPLE_H |
| #define _NF_CONNTRACK_TUPLE_H |
| |
| #include <linux/netfilter/x_tables.h> |
| #include <linux/netfilter/nf_conntrack_tuple_common.h> |
| |
| /* A `tuple' is a structure containing the information to uniquely |
| identify a connection. ie. if two packets have the same tuple, they |
| are in the same connection; if not, they are not. |
| |
| We divide the structure along "manipulatable" and |
| "non-manipulatable" lines, for the benefit of the NAT code. |
| */ |
| |
| #define NF_CT_TUPLE_L3SIZE ARRAY_SIZE(((union nf_inet_addr *)NULL)->all) |
| |
| /* The protocol-specific manipulable parts of the tuple: always in |
| network order! */ |
| union nf_conntrack_man_proto |
| { |
| /* Add other protocols here. */ |
| __be16 all; |
| |
| struct { |
| __be16 port; |
| } tcp; |
| struct { |
| __be16 port; |
| } udp; |
| struct { |
| __be16 id; |
| } icmp; |
| struct { |
| __be16 port; |
| } dccp; |
| struct { |
| __be16 port; |
| } sctp; |
| struct { |
| __be16 key; /* GRE key is 32bit, PPtP only uses 16bit */ |
| } gre; |
| }; |
| |
| /* The manipulable part of the tuple. */ |
| struct nf_conntrack_man |
| { |
| union nf_inet_addr u3; |
| union nf_conntrack_man_proto u; |
| /* Layer 3 protocol */ |
| u_int16_t l3num; |
| }; |
| |
| /* This contains the information to distinguish a connection. */ |
| struct nf_conntrack_tuple |
| { |
| struct nf_conntrack_man src; |
| |
| /* These are the parts of the tuple which are fixed. */ |
| struct { |
| union nf_inet_addr u3; |
| union { |
| /* Add other protocols here. */ |
| __be16 all; |
| |
| struct { |
| __be16 port; |
| } tcp; |
| struct { |
| __be16 port; |
| } udp; |
| struct { |
| u_int8_t type, code; |
| } icmp; |
| struct { |
| __be16 port; |
| } dccp; |
| struct { |
| __be16 port; |
| } sctp; |
| struct { |
| __be16 key; |
| } gre; |
| } u; |
| |
| /* The protocol. */ |
| u_int8_t protonum; |
| |
| /* The direction (for tuplehash) */ |
| u_int8_t dir; |
| } dst; |
| }; |
| |
| struct nf_conntrack_tuple_mask |
| { |
| struct { |
| union nf_inet_addr u3; |
| union nf_conntrack_man_proto u; |
| } src; |
| }; |
| |
| #endif /* _NF_CONNTRACK_TUPLE_H */ |