1 #ifndef _UAPI_NF_CONNTRACK_COMMON_H 2 #define _UAPI_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 IP_CT_ESTABLISHED_REPLY = IP_CT_ESTABLISHED + IP_CT_IS_REPLY, 22 IP_CT_RELATED_REPLY = IP_CT_RELATED + IP_CT_IS_REPLY, 23 /* No NEW in reply direction. */ 24 25 /* Number of distinct IP_CT types. */ 26 IP_CT_NUMBER, 27 28 /* only for userspace compatibility */ 29 #ifndef __KERNEL__ 30 IP_CT_NEW_REPLY = IP_CT_NUMBER, 31 #endif 32 }; 33 34 #define NF_CT_STATE_INVALID_BIT (1 << 0) 35 #define NF_CT_STATE_BIT(ctinfo) (1 << ((ctinfo) % IP_CT_IS_REPLY + 1)) 36 #define NF_CT_STATE_UNTRACKED_BIT (1 << (IP_CT_NUMBER + 1)) 37 38 /* Bitset representing status of connection. */ 39 enum ip_conntrack_status { 40 /* It's an expected connection: bit 0 set. This bit never changed */ 41 IPS_EXPECTED_BIT = 0, 42 IPS_EXPECTED = (1 << IPS_EXPECTED_BIT), 43 44 /* We've seen packets both ways: bit 1 set. Can be set, not unset. */ 45 IPS_SEEN_REPLY_BIT = 1, 46 IPS_SEEN_REPLY = (1 << IPS_SEEN_REPLY_BIT), 47 48 /* Conntrack should never be early-expired. */ 49 IPS_ASSURED_BIT = 2, 50 IPS_ASSURED = (1 << IPS_ASSURED_BIT), 51 52 /* Connection is confirmed: originating packet has left box */ 53 IPS_CONFIRMED_BIT = 3, 54 IPS_CONFIRMED = (1 << IPS_CONFIRMED_BIT), 55 56 /* Connection needs src nat in orig dir. This bit never changed. */ 57 IPS_SRC_NAT_BIT = 4, 58 IPS_SRC_NAT = (1 << IPS_SRC_NAT_BIT), 59 60 /* Connection needs dst nat in orig dir. This bit never changed. */ 61 IPS_DST_NAT_BIT = 5, 62 IPS_DST_NAT = (1 << IPS_DST_NAT_BIT), 63 64 /* Both together. */ 65 IPS_NAT_MASK = (IPS_DST_NAT | IPS_SRC_NAT), 66 67 /* Connection needs TCP sequence adjusted. */ 68 IPS_SEQ_ADJUST_BIT = 6, 69 IPS_SEQ_ADJUST = (1 << IPS_SEQ_ADJUST_BIT), 70 71 /* NAT initialization bits. */ 72 IPS_SRC_NAT_DONE_BIT = 7, 73 IPS_SRC_NAT_DONE = (1 << IPS_SRC_NAT_DONE_BIT), 74 75 IPS_DST_NAT_DONE_BIT = 8, 76 IPS_DST_NAT_DONE = (1 << IPS_DST_NAT_DONE_BIT), 77 78 /* Both together */ 79 IPS_NAT_DONE_MASK = (IPS_DST_NAT_DONE | IPS_SRC_NAT_DONE), 80 81 /* Connection is dying (removed from lists), can not be unset. */ 82 IPS_DYING_BIT = 9, 83 IPS_DYING = (1 << IPS_DYING_BIT), 84 85 /* Connection has fixed timeout. */ 86 IPS_FIXED_TIMEOUT_BIT = 10, 87 IPS_FIXED_TIMEOUT = (1 << IPS_FIXED_TIMEOUT_BIT), 88 89 /* Conntrack is a template */ 90 IPS_TEMPLATE_BIT = 11, 91 IPS_TEMPLATE = (1 << IPS_TEMPLATE_BIT), 92 93 /* Conntrack is a fake untracked entry */ 94 IPS_UNTRACKED_BIT = 12, 95 IPS_UNTRACKED = (1 << IPS_UNTRACKED_BIT), 96 97 /* Conntrack got a helper explicitly attached via CT target. */ 98 IPS_HELPER_BIT = 13, 99 IPS_HELPER = (1 << IPS_HELPER_BIT), 100 }; 101 102 /* Connection tracking event types */ 103 enum ip_conntrack_events { 104 IPCT_NEW, /* new conntrack */ 105 IPCT_RELATED, /* related conntrack */ 106 IPCT_DESTROY, /* destroyed conntrack */ 107 IPCT_REPLY, /* connection has seen two-way traffic */ 108 IPCT_ASSURED, /* connection status has changed to assured */ 109 IPCT_PROTOINFO, /* protocol information has changed */ 110 IPCT_HELPER, /* new helper has been set */ 111 IPCT_MARK, /* new mark has been set */ 112 IPCT_SEQADJ, /* sequence adjustment has changed */ 113 IPCT_NATSEQADJ = IPCT_SEQADJ, 114 IPCT_SECMARK, /* new security mark has been set */ 115 IPCT_LABEL, /* new connlabel has been set */ 116 }; 117 118 enum ip_conntrack_expect_events { 119 IPEXP_NEW, /* new expectation */ 120 IPEXP_DESTROY, /* destroyed expectation */ 121 }; 122 123 /* expectation flags */ 124 #define NF_CT_EXPECT_PERMANENT 0x1 125 #define NF_CT_EXPECT_INACTIVE 0x2 126 #define NF_CT_EXPECT_USERSPACE 0x4 127 128 129 #endif /* _UAPI_NF_CONNTRACK_COMMON_H */ 130