1 #ifndef _NF_CONNTRACK_COMMON_H 2 #define _NF_CONNTRACK_COMMON_H 3 /* Connection state tracking for netfilter. This is separated from, 4 but required by, the NAT layer; it can also be used by an iptables 5 extension. */ 6 enum ip_conntrack_info { 7 /* Part of an established connection (either direction). */ 8 IP_CT_ESTABLISHED, 9 10 /* Like NEW, but related to an existing connection, or ICMP error 11 (in either direction). */ 12 IP_CT_RELATED, 13 14 /* Started a new connection to track (only 15 IP_CT_DIR_ORIGINAL); may be a retransmission. */ 16 IP_CT_NEW, 17 18 /* >= this indicates reply direction */ 19 IP_CT_IS_REPLY, 20 21 /* Number of distinct IP_CT types (no NEW in reply dirn). */ 22 IP_CT_NUMBER = IP_CT_IS_REPLY * 2 - 1 23 }; 24 25 /* Bitset representing status of connection. */ 26 enum ip_conntrack_status { 27 /* It's an expected connection: bit 0 set. This bit never changed */ 28 IPS_EXPECTED_BIT = 0, 29 IPS_EXPECTED = (1 << IPS_EXPECTED_BIT), 30 31 /* We've seen packets both ways: bit 1 set. Can be set, not unset. */ 32 IPS_SEEN_REPLY_BIT = 1, 33 IPS_SEEN_REPLY = (1 << IPS_SEEN_REPLY_BIT), 34 35 /* Conntrack should never be early-expired. */ 36 IPS_ASSURED_BIT = 2, 37 IPS_ASSURED = (1 << IPS_ASSURED_BIT), 38 39 /* Connection is confirmed: originating packet has left box */ 40 IPS_CONFIRMED_BIT = 3, 41 IPS_CONFIRMED = (1 << IPS_CONFIRMED_BIT), 42 43 /* Connection needs src nat in orig dir. This bit never changed. */ 44 IPS_SRC_NAT_BIT = 4, 45 IPS_SRC_NAT = (1 << IPS_SRC_NAT_BIT), 46 47 /* Connection needs dst nat in orig dir. This bit never changed. */ 48 IPS_DST_NAT_BIT = 5, 49 IPS_DST_NAT = (1 << IPS_DST_NAT_BIT), 50 51 /* Both together. */ 52 IPS_NAT_MASK = (IPS_DST_NAT | IPS_SRC_NAT), 53 54 /* Connection needs TCP sequence adjusted. */ 55 IPS_SEQ_ADJUST_BIT = 6, 56 IPS_SEQ_ADJUST = (1 << IPS_SEQ_ADJUST_BIT), 57 58 /* NAT initialization bits. */ 59 IPS_SRC_NAT_DONE_BIT = 7, 60 IPS_SRC_NAT_DONE = (1 << IPS_SRC_NAT_DONE_BIT), 61 62 IPS_DST_NAT_DONE_BIT = 8, 63 IPS_DST_NAT_DONE = (1 << IPS_DST_NAT_DONE_BIT), 64 65 /* Both together */ 66 IPS_NAT_DONE_MASK = (IPS_DST_NAT_DONE | IPS_SRC_NAT_DONE), 67 68 /* Connection is dying (removed from lists), can not be unset. */ 69 IPS_DYING_BIT = 9, 70 IPS_DYING = (1 << IPS_DYING_BIT), 71 72 /* Connection has fixed timeout. */ 73 IPS_FIXED_TIMEOUT_BIT = 10, 74 IPS_FIXED_TIMEOUT = (1 << IPS_FIXED_TIMEOUT_BIT), 75 76 /* Conntrack is a template */ 77 IPS_TEMPLATE_BIT = 11, 78 IPS_TEMPLATE = (1 << IPS_TEMPLATE_BIT), 79 }; 80 81 /* Connection tracking event types */ 82 enum ip_conntrack_events { 83 IPCT_NEW, /* new conntrack */ 84 IPCT_RELATED, /* related conntrack */ 85 IPCT_DESTROY, /* destroyed conntrack */ 86 IPCT_REPLY, /* connection has seen two-way traffic */ 87 IPCT_ASSURED, /* connection status has changed to assured */ 88 IPCT_PROTOINFO, /* protocol information has changed */ 89 IPCT_HELPER, /* new helper has been set */ 90 IPCT_MARK, /* new mark has been set */ 91 IPCT_NATSEQADJ, /* NAT is doing sequence adjustment */ 92 IPCT_SECMARK, /* new security mark has been set */ 93 }; 94 95 enum ip_conntrack_expect_events { 96 IPEXP_NEW, /* new expectation */ 97 }; 98 99 #endif /* _NF_CONNTRACK_COMMON_H */ 100