[ovs-dev] [PATCH 1/9] Windows: Add netfilter-conntrack header files to Include folder

Sairam Venugopal vsairam at vmware.com
Tue Jun 21 01:23:00 UTC 2016


Include netfilter-conntrack header files in user-space. This will be used
by Windows userspace for adding debugging support in Conntrack. Some of these files
are intentionally left blank and will be updated once relevant support is
added in Windows datapath.

Signed-off-by: Sairam Venugopal <vsairam at vmware.com>
---
 include/windows/automake.mk                        |   6 +
 .../windows/linux/netfilter/nf_conntrack_common.h  | 113 ++++++++++
 include/windows/linux/netfilter/nf_conntrack_ftp.h |   0
 .../windows/linux/netfilter/nf_conntrack_sctp.h    |   0
 include/windows/linux/netfilter/nf_conntrack_tcp.h |  49 ++++
 include/windows/linux/netfilter/nfnetlink.h        |  63 ++++++
 .../windows/linux/netfilter/nfnetlink_conntrack.h  | 249 +++++++++++++++++++++
 7 files changed, 480 insertions(+)
 create mode 100644 include/windows/linux/netfilter/nf_conntrack_common.h
 create mode 100644 include/windows/linux/netfilter/nf_conntrack_ftp.h
 create mode 100644 include/windows/linux/netfilter/nf_conntrack_sctp.h
 create mode 100644 include/windows/linux/netfilter/nf_conntrack_tcp.h
 create mode 100644 include/windows/linux/netfilter/nfnetlink.h
 create mode 100644 include/windows/linux/netfilter/nfnetlink_conntrack.h

diff --git a/include/windows/automake.mk b/include/windows/automake.mk
index 58b52f1..382627b 100644
--- a/include/windows/automake.mk
+++ b/include/windows/automake.mk
@@ -9,6 +9,12 @@ noinst_HEADERS += \
 	include/windows/arpa/inet.h \
 	include/windows/dirent.h \
 	include/windows/getopt.h \
+	include/windows/linux/netfilter/nf_conntrack_common.h \
+	include/windows/linux/netfilter/nf_conntrack_ftp.h \
+	include/windows/linux/netfilter/nf_conntrack_sctp.h \
+	include/windows/linux/netfilter/nf_conntrack_tcp.h \
+	include/windows/linux/netfilter/nfnetlink.h \
+	include/windows/linux/netfilter/nfnetlink_conntrack.h \
 	include/windows/linux/pkt_sched.h \
 	include/windows/linux/types.h \
 	include/windows/net/if.h \
diff --git a/include/windows/linux/netfilter/nf_conntrack_common.h b/include/windows/linux/netfilter/nf_conntrack_common.h
new file mode 100644
index 0000000..9904003
--- /dev/null
+++ b/include/windows/linux/netfilter/nf_conntrack_common.h
@@ -0,0 +1,113 @@
+#ifndef _NF_CONNTRACK_COMMON_H
+#define _NF_CONNTRACK_COMMON_H
+/* Connection state tracking for netfilter.  This is separated from,
+   but required by, the NAT layer; it can also be used by an iptables
+   extension. */
+enum ip_conntrack_info {
+    /* Part of an established connection (either direction). */
+    IP_CT_ESTABLISHED,
+
+    /* Like NEW, but related to an existing connection, or ICMP error
+       (in either direction). */
+    IP_CT_RELATED,
+
+    /* Started a new connection to track (only
+           IP_CT_DIR_ORIGINAL); may be a retransmission. */
+    IP_CT_NEW,
+
+    /* >= this indicates reply direction */
+    IP_CT_IS_REPLY,
+
+    IP_CT_ESTABLISHED_REPLY = IP_CT_ESTABLISHED + IP_CT_IS_REPLY,
+    IP_CT_RELATED_REPLY = IP_CT_RELATED + IP_CT_IS_REPLY,
+    IP_CT_NEW_REPLY = IP_CT_NEW + IP_CT_IS_REPLY,
+    /* Number of distinct IP_CT types (no NEW in reply dirn). */
+    IP_CT_NUMBER = IP_CT_IS_REPLY * 2 - 1
+};
+
+/* Bitset representing status of connection. */
+enum ip_conntrack_status {
+    /* It's an expected connection: bit 0 set.  This bit never changed */
+    IPS_EXPECTED_BIT = 0,
+    IPS_EXPECTED = (1 << IPS_EXPECTED_BIT),
+
+    /* We've seen packets both ways: bit 1 set.  Can be set, not unset. */
+    IPS_SEEN_REPLY_BIT = 1,
+    IPS_SEEN_REPLY = (1 << IPS_SEEN_REPLY_BIT),
+
+    /* Conntrack should never be early-expired. */
+    IPS_ASSURED_BIT = 2,
+    IPS_ASSURED = (1 << IPS_ASSURED_BIT),
+
+    /* Connection is confirmed: originating packet has left box */
+    IPS_CONFIRMED_BIT = 3,
+    IPS_CONFIRMED = (1 << IPS_CONFIRMED_BIT),
+
+    /* Connection needs src nat in orig dir.  This bit never changed. */
+    IPS_SRC_NAT_BIT = 4,
+    IPS_SRC_NAT = (1 << IPS_SRC_NAT_BIT),
+
+    /* Connection needs dst nat in orig dir.  This bit never changed. */
+    IPS_DST_NAT_BIT = 5,
+    IPS_DST_NAT = (1 << IPS_DST_NAT_BIT),
+
+    /* Both together. */
+    IPS_NAT_MASK = (IPS_DST_NAT | IPS_SRC_NAT),
+
+    /* Connection needs TCP sequence adjusted. */
+    IPS_SEQ_ADJUST_BIT = 6,
+    IPS_SEQ_ADJUST = (1 << IPS_SEQ_ADJUST_BIT),
+
+    /* NAT initialization bits. */
+    IPS_SRC_NAT_DONE_BIT = 7,
+    IPS_SRC_NAT_DONE = (1 << IPS_SRC_NAT_DONE_BIT),
+
+    IPS_DST_NAT_DONE_BIT = 8,
+    IPS_DST_NAT_DONE = (1 << IPS_DST_NAT_DONE_BIT),
+
+    /* Both together */
+    IPS_NAT_DONE_MASK = (IPS_DST_NAT_DONE | IPS_SRC_NAT_DONE),
+
+    /* Connection is dying (removed from lists), can not be unset. */
+    IPS_DYING_BIT = 9,
+    IPS_DYING = (1 << IPS_DYING_BIT),
+
+    /* Connection has fixed timeout. */
+    IPS_FIXED_TIMEOUT_BIT = 10,
+    IPS_FIXED_TIMEOUT = (1 << IPS_FIXED_TIMEOUT_BIT),
+
+    /* Conntrack is a template */
+    IPS_TEMPLATE_BIT = 11,
+    IPS_TEMPLATE = (1 << IPS_TEMPLATE_BIT),
+
+    /* Conntrack is a fake untracked entry */
+    IPS_UNTRACKED_BIT = 12,
+    IPS_UNTRACKED = (1 << IPS_UNTRACKED_BIT),
+};
+
+/* Connection tracking event types */
+enum ip_conntrack_events {
+    IPCT_NEW,       /* new conntrack */
+    IPCT_RELATED,   /* related conntrack */
+    IPCT_DESTROY,   /* destroyed conntrack */
+    IPCT_REPLY,     /* connection has seen two-way traffic */
+    IPCT_ASSURED,   /* connection status has changed to assured */
+    IPCT_PROTOINFO, /* protocol information has changed */
+    IPCT_HELPER,    /* new helper has been set */
+    IPCT_MARK,      /* new mark has been set */
+    IPCT_NATSEQADJ, /* NAT is doing sequence adjustment */
+    IPCT_SECMARK,   /* new security mark has been set */
+};
+
+enum ip_conntrack_expect_events {
+    IPEXP_NEW,      /* new expectation */
+    IPEXP_DESTROY,  /* destroyed expectation */
+};
+
+/* expectation flags */
+#define NF_CT_EXPECT_PERMANENT  0x1
+#define NF_CT_EXPECT_INACTIVE   0x2
+#define NF_CT_EXPECT_USERSPACE  0x4
+
+
+#endif /* _NF_CONNTRACK_COMMON_H */
diff --git a/include/windows/linux/netfilter/nf_conntrack_ftp.h b/include/windows/linux/netfilter/nf_conntrack_ftp.h
new file mode 100644
index 0000000..e69de29
diff --git a/include/windows/linux/netfilter/nf_conntrack_sctp.h b/include/windows/linux/netfilter/nf_conntrack_sctp.h
new file mode 100644
index 0000000..e69de29
diff --git a/include/windows/linux/netfilter/nf_conntrack_tcp.h b/include/windows/linux/netfilter/nf_conntrack_tcp.h
new file mode 100644
index 0000000..9ed9471
--- /dev/null
+++ b/include/windows/linux/netfilter/nf_conntrack_tcp.h
@@ -0,0 +1,49 @@
+#ifndef _UAPI_NF_CONNTRACK_TCP_H
+#define _UAPI_NF_CONNTRACK_TCP_H
+/* TCP tracking. */
+
+/* This is exposed to userspace (ctnetlink) */
+enum tcp_conntrack {
+    TCP_CONNTRACK_NONE,
+    TCP_CONNTRACK_SYN_SENT,
+    TCP_CONNTRACK_SYN_RECV,
+    TCP_CONNTRACK_ESTABLISHED,
+    TCP_CONNTRACK_FIN_WAIT,
+    TCP_CONNTRACK_CLOSE_WAIT,
+    TCP_CONNTRACK_LAST_ACK,
+    TCP_CONNTRACK_TIME_WAIT,
+    TCP_CONNTRACK_CLOSE,
+    TCP_CONNTRACK_LISTEN,   /* obsolete */
+#define TCP_CONNTRACK_SYN_SENT2 TCP_CONNTRACK_LISTEN
+    TCP_CONNTRACK_MAX,
+    TCP_CONNTRACK_IGNORE,
+    TCP_CONNTRACK_RETRANS,
+    TCP_CONNTRACK_UNACK,
+    TCP_CONNTRACK_TIMEOUT_MAX
+};
+
+/* Window scaling is advertised by the sender */
+#define IP_CT_TCP_FLAG_WINDOW_SCALE     0x01
+
+/* SACK is permitted by the sender */
+#define IP_CT_TCP_FLAG_SACK_PERM        0x02
+
+/* This sender sent FIN first */
+#define IP_CT_TCP_FLAG_CLOSE_INIT       0x04
+
+/* Be liberal in window checking */
+#define IP_CT_TCP_FLAG_BE_LIBERAL       0x08
+
+/* Has unacknowledged data */
+#define IP_CT_TCP_FLAG_DATA_UNACKNOWLEDGED  0x10
+
+/* The field td_maxack has been set */
+#define IP_CT_TCP_FLAG_MAXACK_SET       0x20
+
+struct nf_ct_tcp_flags {
+    u_int8_t flags;
+    u_int8_t mask;
+};
+
+
+#endif /* _UAPI_NF_CONNTRACK_TCP_H */
diff --git a/include/windows/linux/netfilter/nfnetlink.h b/include/windows/linux/netfilter/nfnetlink.h
new file mode 100644
index 0000000..c76a47c
--- /dev/null
+++ b/include/windows/linux/netfilter/nfnetlink.h
@@ -0,0 +1,63 @@
+#ifndef _NFNETLINK_H
+#define _NFNETLINK_H
+
+enum nfnetlink_groups {
+    NFNLGRP_NONE,
+#define NFNLGRP_NONE                NFNLGRP_NONE
+    NFNLGRP_CONNTRACK_NEW,
+#define NFNLGRP_CONNTRACK_NEW       NFNLGRP_CONNTRACK_NEW
+    NFNLGRP_CONNTRACK_UPDATE,
+#define NFNLGRP_CONNTRACK_UPDATE    NFNLGRP_CONNTRACK_UPDATE
+    NFNLGRP_CONNTRACK_DESTROY,
+#define NFNLGRP_CONNTRACK_DESTROY   NFNLGRP_CONNTRACK_DESTROY
+    NFNLGRP_CONNTRACK_EXP_NEW,
+#define NFNLGRP_CONNTRACK_EXP_NEW   NFNLGRP_CONNTRACK_EXP_NEW
+    NFNLGRP_CONNTRACK_EXP_UPDATE,
+#define NFNLGRP_CONNTRACK_EXP_UPDATE    NFNLGRP_CONNTRACK_EXP_UPDATE
+    NFNLGRP_CONNTRACK_EXP_DESTROY,
+#define NFNLGRP_CONNTRACK_EXP_DESTROY   NFNLGRP_CONNTRACK_EXP_DESTROY
+    NFNLGRP_NFTABLES,
+#define NFNLGRP_NFTABLES    NFNLGRP_NFTABLES
+    __NFNLGRP_MAX,
+};
+#define NFNLGRP_MAX (__NFNLGRP_MAX - 1)
+
+/* General form of address family dependent message.
+ */
+struct nfgenmsg {
+    UINT8  nfgen_family;        /* AF_xxx */
+    UINT8  version;             /* nfnetlink version */
+    UINT16    res_id;           /* resource id */
+    struct ovs_header ovsHdr;   /* Pad this for Windows */
+};
+
+#define NFNETLINK_V0    0
+
+/* netfilter netlink message types are split in two pieces:
+ * 8 bit subsystem, 8bit operation.
+ */
+
+#define NFNL_SUBSYS_ID(x)   ((x & 0xff00) >> 8)
+#define NFNL_MSG_TYPE(x)    (x & 0x00ff)
+
+/* No enum here, otherwise __stringify() trick of MODULE_ALIAS_NFNL_SUBSYS()
+ * won't work anymore */
+#define NFNL_SUBSYS_NONE                0
+#define NFNL_SUBSYS_CTNETLINK           1
+#define NFNL_SUBSYS_CTNETLINK_EXP       2
+#define NFNL_SUBSYS_QUEUE               3
+#define NFNL_SUBSYS_ULOG                4
+#define NFNL_SUBSYS_OSF                 5
+#define NFNL_SUBSYS_IPSET               6
+#define NFNL_SUBSYS_ACCT                7
+#define NFNL_SUBSYS_CTNETLINK_TIMEOUT   8
+#define NFNL_SUBSYS_CTHELPER            9
+#define NFNL_SUBSYS_NFTABLES            10
+#define NFNL_SUBSYS_NFT_COMPAT          11
+#define NFNL_SUBSYS_COUNT               12
+
+/* Reserved control nfnetlink messages */
+#define NFNL_MSG_BATCH_BEGIN    NLMSG_MIN_TYPE
+#define NFNL_MSG_BATCH_END      NLMSG_MIN_TYPE+1
+
+#endif /* _NFNETLINK_H */
diff --git a/include/windows/linux/netfilter/nfnetlink_conntrack.h b/include/windows/linux/netfilter/nfnetlink_conntrack.h
new file mode 100644
index 0000000..d30eba9
--- /dev/null
+++ b/include/windows/linux/netfilter/nfnetlink_conntrack.h
@@ -0,0 +1,249 @@
+#ifndef _IPCONNTRACK_NETLINK_H
+#define _IPCONNTRACK_NETLINK_H
+
+enum cntl_msg_types {
+    IPCTNL_MSG_CT_NEW,
+    IPCTNL_MSG_CT_GET,
+    IPCTNL_MSG_CT_DELETE,
+    IPCTNL_MSG_CT_GET_CTRZERO,
+    IPCTNL_MSG_CT_GET_STATS_CPU,
+    IPCTNL_MSG_CT_GET_STATS,
+    IPCTNL_MSG_CT_GET_DYING,
+    IPCTNL_MSG_CT_GET_UNCONFIRMED,
+    IPCTNL_MSG_MAX
+};
+
+enum ctnl_exp_msg_types {
+    IPCTNL_MSG_EXP_NEW,
+    IPCTNL_MSG_EXP_GET,
+    IPCTNL_MSG_EXP_DELETE,
+    IPCTNL_MSG_EXP_GET_STATS_CPU,
+
+    IPCTNL_MSG_EXP_MAX
+};
+
+enum ctattr_type {
+    CTA_UNSPEC,
+    CTA_TUPLE_ORIG,
+    CTA_TUPLE_REPLY,
+    CTA_STATUS,
+    CTA_PROTOINFO,
+    CTA_HELP,
+    CTA_NAT_SRC,
+#define CTA_NAT CTA_NAT_SRC  /* backwards compatibility */
+    CTA_TIMEOUT,
+    CTA_MARK,
+    CTA_COUNTERS_ORIG,
+    CTA_COUNTERS_REPLY,
+    CTA_USE,
+    CTA_ID,
+    CTA_NAT_DST,
+    CTA_TUPLE_MASTER,
+    CTA_NAT_SEQ_ADJ_ORIG,
+    CTA_NAT_SEQ_ADJ_REPLY,
+    CTA_SECMARK,              /* obsolete */
+    CTA_ZONE,
+    CTA_SECCTX,
+    CTA_TIMESTAMP,
+    CTA_MARK_MASK,
+    CTA_LABELS,
+    CTA_LABELS_MASK,
+    __CTA_MAX
+};
+#define CTA_MAX (__CTA_MAX - 1)
+
+enum ctattr_tuple {
+    CTA_TUPLE_UNSPEC,
+    CTA_TUPLE_IP,
+    CTA_TUPLE_PROTO,
+    __CTA_TUPLE_MAX
+};
+#define CTA_TUPLE_MAX (__CTA_TUPLE_MAX - 1)
+
+enum ctattr_ip {
+    CTA_IP_UNSPEC,
+    CTA_IP_V4_SRC,
+    CTA_IP_V4_DST,
+    CTA_IP_V6_SRC,
+    CTA_IP_V6_DST,
+    __CTA_IP_MAX
+};
+#define CTA_IP_MAX (__CTA_IP_MAX - 1)
+
+enum ctattr_l4proto {
+    CTA_PROTO_UNSPEC,
+    CTA_PROTO_NUM,
+    CTA_PROTO_SRC_PORT,
+    CTA_PROTO_DST_PORT,
+    CTA_PROTO_ICMP_ID,
+    CTA_PROTO_ICMP_TYPE,
+    CTA_PROTO_ICMP_CODE,
+    CTA_PROTO_ICMPV6_ID,
+    CTA_PROTO_ICMPV6_TYPE,
+    CTA_PROTO_ICMPV6_CODE,
+    __CTA_PROTO_MAX
+};
+#define CTA_PROTO_MAX (__CTA_PROTO_MAX - 1)
+
+enum ctattr_protoinfo {
+    CTA_PROTOINFO_UNSPEC,
+    CTA_PROTOINFO_TCP,
+    CTA_PROTOINFO_DCCP,
+    CTA_PROTOINFO_SCTP,
+    __CTA_PROTOINFO_MAX
+};
+#define CTA_PROTOINFO_MAX (__CTA_PROTOINFO_MAX - 1)
+
+enum ctattr_protoinfo_tcp {
+    CTA_PROTOINFO_TCP_UNSPEC,
+    CTA_PROTOINFO_TCP_STATE,
+    CTA_PROTOINFO_TCP_WSCALE_ORIGINAL,
+    CTA_PROTOINFO_TCP_WSCALE_REPLY,
+    CTA_PROTOINFO_TCP_FLAGS_ORIGINAL,
+    CTA_PROTOINFO_TCP_FLAGS_REPLY,
+    __CTA_PROTOINFO_TCP_MAX
+};
+#define CTA_PROTOINFO_TCP_MAX (__CTA_PROTOINFO_TCP_MAX - 1)
+
+enum ctattr_protoinfo_dccp {
+    CTA_PROTOINFO_DCCP_UNSPEC,
+    CTA_PROTOINFO_DCCP_STATE,
+    CTA_PROTOINFO_DCCP_ROLE,
+    CTA_PROTOINFO_DCCP_HANDSHAKE_SEQ,
+    __CTA_PROTOINFO_DCCP_MAX,
+};
+#define CTA_PROTOINFO_DCCP_MAX (__CTA_PROTOINFO_DCCP_MAX - 1)
+
+enum ctattr_protoinfo_sctp {
+    CTA_PROTOINFO_SCTP_UNSPEC,
+    CTA_PROTOINFO_SCTP_STATE,
+    CTA_PROTOINFO_SCTP_VTAG_ORIGINAL,
+    CTA_PROTOINFO_SCTP_VTAG_REPLY,
+    __CTA_PROTOINFO_SCTP_MAX
+};
+#define CTA_PROTOINFO_SCTP_MAX (__CTA_PROTOINFO_SCTP_MAX - 1)
+
+enum ctattr_counters {
+    CTA_COUNTERS_UNSPEC,
+    CTA_COUNTERS_PACKETS,       /* 64bit counters */
+    CTA_COUNTERS_BYTES,         /* 64bit counters */
+    CTA_COUNTERS32_PACKETS,     /* old 32bit counters, unused */
+    CTA_COUNTERS32_BYTES,       /* old 32bit counters, unused */
+    __CTA_COUNTERS_MAX
+};
+#define CTA_COUNTERS_MAX (__CTA_COUNTERS_MAX - 1)
+
+enum ctattr_tstamp {
+    CTA_TIMESTAMP_UNSPEC,
+    CTA_TIMESTAMP_START,
+    CTA_TIMESTAMP_STOP,
+    __CTA_TIMESTAMP_MAX
+};
+#define CTA_TIMESTAMP_MAX (__CTA_TIMESTAMP_MAX - 1)
+
+enum ctattr_nat {
+    CTA_NAT_UNSPEC,
+    CTA_NAT_V4_MINIP,
+#define CTA_NAT_MINIP CTA_NAT_V4_MINIP
+    CTA_NAT_V4_MAXIP,
+#define CTA_NAT_MAXIP CTA_NAT_V4_MAXIP
+    CTA_NAT_PROTO,
+    CTA_NAT_V6_MINIP,
+    CTA_NAT_V6_MAXIP,
+    __CTA_NAT_MAX
+};
+#define CTA_NAT_MAX (__CTA_NAT_MAX - 1)
+
+enum ctattr_protonat {
+    CTA_PROTONAT_UNSPEC,
+    CTA_PROTONAT_PORT_MIN,
+    CTA_PROTONAT_PORT_MAX,
+    __CTA_PROTONAT_MAX
+};
+#define CTA_PROTONAT_MAX (__CTA_PROTONAT_MAX - 1)
+
+enum ctattr_natseq {
+    CTA_NAT_SEQ_UNSPEC,
+    CTA_NAT_SEQ_CORRECTION_POS,
+    CTA_NAT_SEQ_OFFSET_BEFORE,
+    CTA_NAT_SEQ_OFFSET_AFTER,
+    __CTA_NAT_SEQ_MAX
+};
+#define CTA_NAT_SEQ_MAX (__CTA_NAT_SEQ_MAX - 1)
+
+enum ctattr_expect {
+    CTA_EXPECT_UNSPEC,
+    CTA_EXPECT_MASTER,
+    CTA_EXPECT_TUPLE,
+    CTA_EXPECT_MASK,
+    CTA_EXPECT_TIMEOUT,
+    CTA_EXPECT_ID,
+    CTA_EXPECT_HELP_NAME,
+    CTA_EXPECT_ZONE,
+    CTA_EXPECT_FLAGS,
+    CTA_EXPECT_CLASS,
+    CTA_EXPECT_NAT,
+    CTA_EXPECT_FN,
+    __CTA_EXPECT_MAX
+};
+#define CTA_EXPECT_MAX (__CTA_EXPECT_MAX - 1)
+
+enum ctattr_expect_nat {
+    CTA_EXPECT_NAT_UNSPEC,
+    CTA_EXPECT_NAT_DIR,
+    CTA_EXPECT_NAT_TUPLE,
+    __CTA_EXPECT_NAT_MAX
+};
+#define CTA_EXPECT_NAT_MAX (__CTA_EXPECT_NAT_MAX - 1)
+
+enum ctattr_help {
+    CTA_HELP_UNSPEC,
+    CTA_HELP_NAME,
+    CTA_HELP_INFO,
+    __CTA_HELP_MAX
+};
+#define CTA_HELP_MAX (__CTA_HELP_MAX - 1)
+
+enum ctattr_secctx {
+    CTA_SECCTX_UNSPEC,
+    CTA_SECCTX_NAME,
+    __CTA_SECCTX_MAX
+};
+#define CTA_SECCTX_MAX (__CTA_SECCTX_MAX - 1)
+
+enum ctattr_stats_cpu {
+    CTA_STATS_UNSPEC,
+    CTA_STATS_SEARCHED,
+    CTA_STATS_FOUND,
+    CTA_STATS_NEW,
+    CTA_STATS_INVALID,
+    CTA_STATS_IGNORE,
+    CTA_STATS_DELETE,
+    CTA_STATS_DELETE_LIST,
+    CTA_STATS_INSERT,
+    CTA_STATS_INSERT_FAILED,
+    CTA_STATS_DROP,
+    CTA_STATS_EARLY_DROP,
+    CTA_STATS_ERROR,
+    CTA_STATS_SEARCH_RESTART,
+    __CTA_STATS_MAX,
+};
+#define CTA_STATS_MAX (__CTA_STATS_MAX - 1)
+
+enum ctattr_stats_global {
+    CTA_STATS_GLOBAL_UNSPEC,
+    CTA_STATS_GLOBAL_ENTRIES,
+    __CTA_STATS_GLOBAL_MAX,
+};
+#define CTA_STATS_GLOBAL_MAX (__CTA_STATS_GLOBAL_MAX - 1)
+
+enum ctattr_expect_stats {
+    CTA_STATS_EXP_UNSPEC,
+    CTA_STATS_EXP_NEW,
+    CTA_STATS_EXP_CREATE,
+    CTA_STATS_EXP_DELETE,
+    __CTA_STATS_EXP_MAX,
+};
+#define CTA_STATS_EXP_MAX (__CTA_STATS_EXP_MAX - 1)
+
+#endif /* _IPCONNTRACK_NETLINK_H */
-- 
2.5.0.windows.1




More information about the dev mailing list