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