UAPI: (Scripted) Disintegrate include/linux/netfilter
authorDavid Howells <dhowells@redhat.com>
Tue, 9 Oct 2012 08:48:54 +0000 (09:48 +0100)
committerDavid Howells <dhowells@redhat.com>
Tue, 9 Oct 2012 08:48:54 +0000 (09:48 +0100)
Signed-off-by: David Howells <dhowells@redhat.com>
Acked-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Michael Kerrisk <mtk.manpages@gmail.com>
Acked-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Acked-by: Dave Jones <davej@redhat.com>
86 files changed:
include/linux/netfilter/Kbuild
include/linux/netfilter/nf_conntrack_common.h
include/linux/netfilter/nf_conntrack_ftp.h
include/linux/netfilter/nf_conntrack_tcp.h
include/linux/netfilter/nfnetlink.h
include/linux/netfilter/nfnetlink_acct.h
include/linux/netfilter/x_tables.h
include/linux/netfilter/xt_hashlimit.h
include/linux/netfilter/xt_physdev.h
include/uapi/linux/netfilter/Kbuild
include/uapi/linux/netfilter/nf_conntrack_common.h [new file with mode: 0644]
include/uapi/linux/netfilter/nf_conntrack_ftp.h [new file with mode: 0644]
include/uapi/linux/netfilter/nf_conntrack_sctp.h [moved from include/linux/netfilter/nf_conntrack_sctp.h with 100% similarity]
include/uapi/linux/netfilter/nf_conntrack_tcp.h [new file with mode: 0644]
include/uapi/linux/netfilter/nf_conntrack_tuple_common.h [moved from include/linux/netfilter/nf_conntrack_tuple_common.h with 100% similarity]
include/uapi/linux/netfilter/nf_nat.h [moved from include/linux/netfilter/nf_nat.h with 100% similarity]
include/uapi/linux/netfilter/nfnetlink.h [new file with mode: 0644]
include/uapi/linux/netfilter/nfnetlink_acct.h [new file with mode: 0644]
include/uapi/linux/netfilter/nfnetlink_compat.h [moved from include/linux/netfilter/nfnetlink_compat.h with 100% similarity]
include/uapi/linux/netfilter/nfnetlink_conntrack.h [moved from include/linux/netfilter/nfnetlink_conntrack.h with 100% similarity]
include/uapi/linux/netfilter/nfnetlink_cthelper.h [moved from include/linux/netfilter/nfnetlink_cthelper.h with 100% similarity]
include/uapi/linux/netfilter/nfnetlink_cttimeout.h [moved from include/linux/netfilter/nfnetlink_cttimeout.h with 100% similarity]
include/uapi/linux/netfilter/nfnetlink_log.h [moved from include/linux/netfilter/nfnetlink_log.h with 100% similarity]
include/uapi/linux/netfilter/nfnetlink_queue.h [moved from include/linux/netfilter/nfnetlink_queue.h with 100% similarity]
include/uapi/linux/netfilter/x_tables.h [new file with mode: 0644]
include/uapi/linux/netfilter/xt_AUDIT.h [moved from include/linux/netfilter/xt_AUDIT.h with 100% similarity]
include/uapi/linux/netfilter/xt_CHECKSUM.h [moved from include/linux/netfilter/xt_CHECKSUM.h with 100% similarity]
include/uapi/linux/netfilter/xt_CLASSIFY.h [moved from include/linux/netfilter/xt_CLASSIFY.h with 100% similarity]
include/uapi/linux/netfilter/xt_CONNMARK.h [moved from include/linux/netfilter/xt_CONNMARK.h with 100% similarity]
include/uapi/linux/netfilter/xt_CONNSECMARK.h [moved from include/linux/netfilter/xt_CONNSECMARK.h with 100% similarity]
include/uapi/linux/netfilter/xt_CT.h [moved from include/linux/netfilter/xt_CT.h with 100% similarity]
include/uapi/linux/netfilter/xt_DSCP.h [moved from include/linux/netfilter/xt_DSCP.h with 100% similarity]
include/uapi/linux/netfilter/xt_IDLETIMER.h [moved from include/linux/netfilter/xt_IDLETIMER.h with 100% similarity]
include/uapi/linux/netfilter/xt_LED.h [moved from include/linux/netfilter/xt_LED.h with 100% similarity]
include/uapi/linux/netfilter/xt_LOG.h [moved from include/linux/netfilter/xt_LOG.h with 100% similarity]
include/uapi/linux/netfilter/xt_MARK.h [moved from include/linux/netfilter/xt_MARK.h with 100% similarity]
include/uapi/linux/netfilter/xt_NFLOG.h [moved from include/linux/netfilter/xt_NFLOG.h with 100% similarity]
include/uapi/linux/netfilter/xt_NFQUEUE.h [moved from include/linux/netfilter/xt_NFQUEUE.h with 100% similarity]
include/uapi/linux/netfilter/xt_RATEEST.h [moved from include/linux/netfilter/xt_RATEEST.h with 100% similarity]
include/uapi/linux/netfilter/xt_SECMARK.h [moved from include/linux/netfilter/xt_SECMARK.h with 100% similarity]
include/uapi/linux/netfilter/xt_TCPMSS.h [moved from include/linux/netfilter/xt_TCPMSS.h with 100% similarity]
include/uapi/linux/netfilter/xt_TCPOPTSTRIP.h [moved from include/linux/netfilter/xt_TCPOPTSTRIP.h with 100% similarity]
include/uapi/linux/netfilter/xt_TEE.h [moved from include/linux/netfilter/xt_TEE.h with 100% similarity]
include/uapi/linux/netfilter/xt_TPROXY.h [moved from include/linux/netfilter/xt_TPROXY.h with 100% similarity]
include/uapi/linux/netfilter/xt_addrtype.h [moved from include/linux/netfilter/xt_addrtype.h with 100% similarity]
include/uapi/linux/netfilter/xt_cluster.h [moved from include/linux/netfilter/xt_cluster.h with 100% similarity]
include/uapi/linux/netfilter/xt_comment.h [moved from include/linux/netfilter/xt_comment.h with 100% similarity]
include/uapi/linux/netfilter/xt_connbytes.h [moved from include/linux/netfilter/xt_connbytes.h with 100% similarity]
include/uapi/linux/netfilter/xt_connlimit.h [moved from include/linux/netfilter/xt_connlimit.h with 100% similarity]
include/uapi/linux/netfilter/xt_connmark.h [moved from include/linux/netfilter/xt_connmark.h with 100% similarity]
include/uapi/linux/netfilter/xt_conntrack.h [moved from include/linux/netfilter/xt_conntrack.h with 100% similarity]
include/uapi/linux/netfilter/xt_cpu.h [moved from include/linux/netfilter/xt_cpu.h with 100% similarity]
include/uapi/linux/netfilter/xt_dccp.h [moved from include/linux/netfilter/xt_dccp.h with 100% similarity]
include/uapi/linux/netfilter/xt_devgroup.h [moved from include/linux/netfilter/xt_devgroup.h with 100% similarity]
include/uapi/linux/netfilter/xt_dscp.h [moved from include/linux/netfilter/xt_dscp.h with 100% similarity]
include/uapi/linux/netfilter/xt_ecn.h [moved from include/linux/netfilter/xt_ecn.h with 100% similarity]
include/uapi/linux/netfilter/xt_esp.h [moved from include/linux/netfilter/xt_esp.h with 100% similarity]
include/uapi/linux/netfilter/xt_hashlimit.h [new file with mode: 0644]
include/uapi/linux/netfilter/xt_helper.h [moved from include/linux/netfilter/xt_helper.h with 100% similarity]
include/uapi/linux/netfilter/xt_iprange.h [moved from include/linux/netfilter/xt_iprange.h with 100% similarity]
include/uapi/linux/netfilter/xt_ipvs.h [moved from include/linux/netfilter/xt_ipvs.h with 100% similarity]
include/uapi/linux/netfilter/xt_length.h [moved from include/linux/netfilter/xt_length.h with 100% similarity]
include/uapi/linux/netfilter/xt_limit.h [moved from include/linux/netfilter/xt_limit.h with 100% similarity]
include/uapi/linux/netfilter/xt_mac.h [moved from include/linux/netfilter/xt_mac.h with 100% similarity]
include/uapi/linux/netfilter/xt_mark.h [moved from include/linux/netfilter/xt_mark.h with 100% similarity]
include/uapi/linux/netfilter/xt_multiport.h [moved from include/linux/netfilter/xt_multiport.h with 100% similarity]
include/uapi/linux/netfilter/xt_nfacct.h [moved from include/linux/netfilter/xt_nfacct.h with 100% similarity]
include/uapi/linux/netfilter/xt_osf.h [moved from include/linux/netfilter/xt_osf.h with 100% similarity]
include/uapi/linux/netfilter/xt_owner.h [moved from include/linux/netfilter/xt_owner.h with 100% similarity]
include/uapi/linux/netfilter/xt_physdev.h [new file with mode: 0644]
include/uapi/linux/netfilter/xt_pkttype.h [moved from include/linux/netfilter/xt_pkttype.h with 100% similarity]
include/uapi/linux/netfilter/xt_policy.h [moved from include/linux/netfilter/xt_policy.h with 100% similarity]
include/uapi/linux/netfilter/xt_quota.h [moved from include/linux/netfilter/xt_quota.h with 100% similarity]
include/uapi/linux/netfilter/xt_rateest.h [moved from include/linux/netfilter/xt_rateest.h with 100% similarity]
include/uapi/linux/netfilter/xt_realm.h [moved from include/linux/netfilter/xt_realm.h with 100% similarity]
include/uapi/linux/netfilter/xt_recent.h [moved from include/linux/netfilter/xt_recent.h with 100% similarity]
include/uapi/linux/netfilter/xt_sctp.h [moved from include/linux/netfilter/xt_sctp.h with 100% similarity]
include/uapi/linux/netfilter/xt_set.h [moved from include/linux/netfilter/xt_set.h with 100% similarity]
include/uapi/linux/netfilter/xt_socket.h [moved from include/linux/netfilter/xt_socket.h with 100% similarity]
include/uapi/linux/netfilter/xt_state.h [moved from include/linux/netfilter/xt_state.h with 100% similarity]
include/uapi/linux/netfilter/xt_statistic.h [moved from include/linux/netfilter/xt_statistic.h with 100% similarity]
include/uapi/linux/netfilter/xt_string.h [moved from include/linux/netfilter/xt_string.h with 100% similarity]
include/uapi/linux/netfilter/xt_tcpmss.h [moved from include/linux/netfilter/xt_tcpmss.h with 100% similarity]
include/uapi/linux/netfilter/xt_tcpudp.h [moved from include/linux/netfilter/xt_tcpudp.h with 100% similarity]
include/uapi/linux/netfilter/xt_time.h [moved from include/linux/netfilter/xt_time.h with 100% similarity]
include/uapi/linux/netfilter/xt_u32.h [moved from include/linux/netfilter/xt_u32.h with 100% similarity]

index 874ae8f..b332202 100644 (file)
@@ -1,78 +1 @@
 header-y += ipset/
-
-header-y += nf_conntrack_common.h
-header-y += nf_conntrack_ftp.h
-header-y += nf_conntrack_sctp.h
-header-y += nf_conntrack_tcp.h
-header-y += nf_conntrack_tuple_common.h
-header-y += nf_nat.h
-header-y += nfnetlink.h
-header-y += nfnetlink_acct.h
-header-y += nfnetlink_compat.h
-header-y += nfnetlink_conntrack.h
-header-y += nfnetlink_cthelper.h
-header-y += nfnetlink_cttimeout.h
-header-y += nfnetlink_log.h
-header-y += nfnetlink_queue.h
-header-y += x_tables.h
-header-y += xt_AUDIT.h
-header-y += xt_CHECKSUM.h
-header-y += xt_CLASSIFY.h
-header-y += xt_CONNMARK.h
-header-y += xt_CONNSECMARK.h
-header-y += xt_CT.h
-header-y += xt_DSCP.h
-header-y += xt_IDLETIMER.h
-header-y += xt_LED.h
-header-y += xt_LOG.h
-header-y += xt_MARK.h
-header-y += xt_nfacct.h
-header-y += xt_NFLOG.h
-header-y += xt_NFQUEUE.h
-header-y += xt_RATEEST.h
-header-y += xt_SECMARK.h
-header-y += xt_TCPMSS.h
-header-y += xt_TCPOPTSTRIP.h
-header-y += xt_TEE.h
-header-y += xt_TPROXY.h
-header-y += xt_addrtype.h
-header-y += xt_cluster.h
-header-y += xt_comment.h
-header-y += xt_connbytes.h
-header-y += xt_connlimit.h
-header-y += xt_connmark.h
-header-y += xt_conntrack.h
-header-y += xt_cpu.h
-header-y += xt_dccp.h
-header-y += xt_devgroup.h
-header-y += xt_dscp.h
-header-y += xt_ecn.h
-header-y += xt_esp.h
-header-y += xt_hashlimit.h
-header-y += xt_helper.h
-header-y += xt_iprange.h
-header-y += xt_ipvs.h
-header-y += xt_length.h
-header-y += xt_limit.h
-header-y += xt_mac.h
-header-y += xt_mark.h
-header-y += xt_multiport.h
-header-y += xt_osf.h
-header-y += xt_owner.h
-header-y += xt_physdev.h
-header-y += xt_pkttype.h
-header-y += xt_policy.h
-header-y += xt_quota.h
-header-y += xt_rateest.h
-header-y += xt_realm.h
-header-y += xt_recent.h
-header-y += xt_set.h
-header-y += xt_sctp.h
-header-y += xt_socket.h
-header-y += xt_state.h
-header-y += xt_statistic.h
-header-y += xt_string.h
-header-y += xt_tcpmss.h
-header-y += xt_tcpudp.h
-header-y += xt_time.h
-header-y += xt_u32.h
index d146872..127d0b9 100644 (file)
@@ -1,119 +1,8 @@
 #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,
+#include <uapi/linux/netfilter/nf_conntrack_common.h>
 
-       /* 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),
-
-       /* Conntrack got a helper explicitly attached via CT target. */
-       IPS_HELPER_BIT = 13,
-       IPS_HELPER = (1 << IPS_HELPER_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
-
-#ifdef __KERNEL__
 struct ip_conntrack_stat {
        unsigned int searched;
        unsigned int found;
@@ -136,6 +25,4 @@ struct ip_conntrack_stat {
 /* call to create an explicit dependency on nf_conntrack. */
 extern void need_conntrack(void);
 
-#endif /* __KERNEL__ */
-
 #endif /* _NF_CONNTRACK_COMMON_H */
index 8faf3f7..5f818b0 100644 (file)
@@ -1,20 +1,8 @@
 #ifndef _NF_CONNTRACK_FTP_H
 #define _NF_CONNTRACK_FTP_H
-/* FTP tracking. */
 
-/* This enum is exposed to userspace */
-enum nf_ct_ftp_type {
-       /* PORT command from client */
-       NF_CT_FTP_PORT,
-       /* PASV response from server */
-       NF_CT_FTP_PASV,
-       /* EPRT command from client */
-       NF_CT_FTP_EPRT,
-       /* EPSV response from server */
-       NF_CT_FTP_EPSV,
-};
+#include <uapi/linux/netfilter/nf_conntrack_ftp.h>
 
-#ifdef __KERNEL__
 
 #define FTP_PORT       21
 
@@ -42,6 +30,4 @@ extern unsigned int (*nf_nat_ftp_hook)(struct sk_buff *skb,
                                       unsigned int matchoff,
                                       unsigned int matchlen,
                                       struct nf_conntrack_expect *exp);
-#endif /* __KERNEL__ */
-
 #endif /* _NF_CONNTRACK_FTP_H */
index e59868a..22db961 100644 (file)
@@ -1,53 +1,8 @@
 #ifndef _NF_CONNTRACK_TCP_H
 #define _NF_CONNTRACK_TCP_H
-/* TCP tracking. */
 
-#include <linux/types.h>
+#include <uapi/linux/netfilter/nf_conntrack_tcp.h>
 
-/* 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 {
-       __u8 flags;
-       __u8 mask;
-};
-
-#ifdef __KERNEL__
 
 struct ip_ct_tcp_state {
        u_int32_t       td_end;         /* max of seq + len */
@@ -74,6 +29,4 @@ struct ip_ct_tcp {
        u_int8_t        last_flags;     /* Last flags set */
 };
 
-#endif /* __KERNEL__ */
-
 #endif /* _NF_CONNTRACK_TCP_H */
index 18341cd..4966dde 100644 (file)
@@ -1,63 +1,11 @@
 #ifndef _NFNETLINK_H
 #define _NFNETLINK_H
-#include <linux/types.h>
-#include <linux/netfilter/nfnetlink_compat.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_MAX,
-};
-#define NFNLGRP_MAX    (__NFNLGRP_MAX - 1)
-
-/* General form of address family dependent message.
- */
-struct nfgenmsg {
-       __u8  nfgen_family;             /* AF_xxx */
-       __u8  version;          /* nfnetlink version */
-       __be16    res_id;               /* resource id */
-};
-
-#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_COUNT              10
-
-#ifdef __KERNEL__
 
 #include <linux/netlink.h>
 #include <linux/capability.h>
 #include <net/netlink.h>
+#include <uapi/linux/netfilter/nfnetlink.h>
 
 struct nfnl_callback {
        int (*call)(struct sock *nl, struct sk_buff *skb, 
@@ -92,5 +40,4 @@ extern void nfnl_unlock(void);
 #define MODULE_ALIAS_NFNL_SUBSYS(subsys) \
        MODULE_ALIAS("nfnetlink-subsys-" __stringify(subsys))
 
-#endif /* __KERNEL__ */
 #endif /* _NFNETLINK_H */
index 7c4279b..bb4bbc9 100644 (file)
@@ -1,29 +1,8 @@
 #ifndef _NFNL_ACCT_H_
 #define _NFNL_ACCT_H_
 
-#ifndef NFACCT_NAME_MAX
-#define NFACCT_NAME_MAX                32
-#endif
+#include <uapi/linux/netfilter/nfnetlink_acct.h>
 
-enum nfnl_acct_msg_types {
-       NFNL_MSG_ACCT_NEW,
-       NFNL_MSG_ACCT_GET,
-       NFNL_MSG_ACCT_GET_CTRZERO,
-       NFNL_MSG_ACCT_DEL,
-       NFNL_MSG_ACCT_MAX
-};
-
-enum nfnl_acct_type {
-       NFACCT_UNSPEC,
-       NFACCT_NAME,
-       NFACCT_PKTS,
-       NFACCT_BYTES,
-       NFACCT_USE,
-       __NFACCT_MAX
-};
-#define NFACCT_MAX (__NFACCT_MAX - 1)
-
-#ifdef __KERNEL__
 
 struct nf_acct;
 
@@ -31,6 +10,4 @@ extern struct nf_acct *nfnl_acct_find_get(const char *filter_name);
 extern void nfnl_acct_put(struct nf_acct *acct);
 extern void nfnl_acct_update(const struct sk_buff *skb, struct nf_acct *nfacct);
 
-#endif /* __KERNEL__ */
-
 #endif /* _NFNL_ACCT_H */
index 8d674a7..dd49566 100644 (file)
@@ -1,191 +1,9 @@
 #ifndef _X_TABLES_H
 #define _X_TABLES_H
-#include <linux/kernel.h>
-#include <linux/types.h>
 
-#define XT_FUNCTION_MAXNAMELEN 30
-#define XT_EXTENSION_MAXNAMELEN 29
-#define XT_TABLE_MAXNAMELEN 32
-
-struct xt_entry_match {
-       union {
-               struct {
-                       __u16 match_size;
-
-                       /* Used by userspace */
-                       char name[XT_EXTENSION_MAXNAMELEN];
-                       __u8 revision;
-               } user;
-               struct {
-                       __u16 match_size;
-
-                       /* Used inside the kernel */
-                       struct xt_match *match;
-               } kernel;
-
-               /* Total length */
-               __u16 match_size;
-       } u;
-
-       unsigned char data[0];
-};
-
-struct xt_entry_target {
-       union {
-               struct {
-                       __u16 target_size;
-
-                       /* Used by userspace */
-                       char name[XT_EXTENSION_MAXNAMELEN];
-                       __u8 revision;
-               } user;
-               struct {
-                       __u16 target_size;
-
-                       /* Used inside the kernel */
-                       struct xt_target *target;
-               } kernel;
-
-               /* Total length */
-               __u16 target_size;
-       } u;
-
-       unsigned char data[0];
-};
-
-#define XT_TARGET_INIT(__name, __size)                                        \
-{                                                                             \
-       .target.u.user = {                                                     \
-               .target_size    = XT_ALIGN(__size),                            \
-               .name           = __name,                                      \
-       },                                                                     \
-}
-
-struct xt_standard_target {
-       struct xt_entry_target target;
-       int verdict;
-};
-
-struct xt_error_target {
-       struct xt_entry_target target;
-       char errorname[XT_FUNCTION_MAXNAMELEN];
-};
-
-/* The argument to IPT_SO_GET_REVISION_*.  Returns highest revision
- * kernel supports, if >= revision. */
-struct xt_get_revision {
-       char name[XT_EXTENSION_MAXNAMELEN];
-       __u8 revision;
-};
-
-/* CONTINUE verdict for targets */
-#define XT_CONTINUE 0xFFFFFFFF
-
-/* For standard target */
-#define XT_RETURN (-NF_REPEAT - 1)
-
-/* this is a dummy structure to find out the alignment requirement for a struct
- * containing all the fundamental data types that are used in ipt_entry,
- * ip6t_entry and arpt_entry.  This sucks, and it is a hack.  It will be my
- * personal pleasure to remove it -HW
- */
-struct _xt_align {
-       __u8 u8;
-       __u16 u16;
-       __u32 u32;
-       __u64 u64;
-};
-
-#define XT_ALIGN(s) __ALIGN_KERNEL((s), __alignof__(struct _xt_align))
-
-/* Standard return verdict, or do jump. */
-#define XT_STANDARD_TARGET ""
-/* Error verdict. */
-#define XT_ERROR_TARGET "ERROR"
-
-#define SET_COUNTER(c,b,p) do { (c).bcnt = (b); (c).pcnt = (p); } while(0)
-#define ADD_COUNTER(c,b,p) do { (c).bcnt += (b); (c).pcnt += (p); } while(0)
-
-struct xt_counters {
-       __u64 pcnt, bcnt;                       /* Packet and byte counters */
-};
-
-/* The argument to IPT_SO_ADD_COUNTERS. */
-struct xt_counters_info {
-       /* Which table. */
-       char name[XT_TABLE_MAXNAMELEN];
-
-       unsigned int num_counters;
-
-       /* The counters (actually `number' of these). */
-       struct xt_counters counters[0];
-};
-
-#define XT_INV_PROTO           0x40    /* Invert the sense of PROTO. */
-
-#ifndef __KERNEL__
-/* fn returns 0 to continue iteration */
-#define XT_MATCH_ITERATE(type, e, fn, args...)                 \
-({                                                             \
-       unsigned int __i;                                       \
-       int __ret = 0;                                          \
-       struct xt_entry_match *__m;                             \
-                                                               \
-       for (__i = sizeof(type);                                \
-            __i < (e)->target_offset;                          \
-            __i += __m->u.match_size) {                        \
-               __m = (void *)e + __i;                          \
-                                                               \
-               __ret = fn(__m , ## args);                      \
-               if (__ret != 0)                                 \
-                       break;                                  \
-       }                                                       \
-       __ret;                                                  \
-})
-
-/* fn returns 0 to continue iteration */
-#define XT_ENTRY_ITERATE_CONTINUE(type, entries, size, n, fn, args...) \
-({                                                             \
-       unsigned int __i, __n;                                  \
-       int __ret = 0;                                          \
-       type *__entry;                                          \
-                                                               \
-       for (__i = 0, __n = 0; __i < (size);                    \
-            __i += __entry->next_offset, __n++) {              \
-               __entry = (void *)(entries) + __i;              \
-               if (__n < n)                                    \
-                       continue;                               \
-                                                               \
-               __ret = fn(__entry , ## args);                  \
-               if (__ret != 0)                                 \
-                       break;                                  \
-       }                                                       \
-       __ret;                                                  \
-})
-
-/* fn returns 0 to continue iteration */
-#define XT_ENTRY_ITERATE(type, entries, size, fn, args...) \
-       XT_ENTRY_ITERATE_CONTINUE(type, entries, size, 0, fn, args)
-
-#endif /* !__KERNEL__ */
-
-/* pos is normally a struct ipt_entry/ip6t_entry/etc. */
-#define xt_entry_foreach(pos, ehead, esize) \
-       for ((pos) = (typeof(pos))(ehead); \
-            (pos) < (typeof(pos))((char *)(ehead) + (esize)); \
-            (pos) = (typeof(pos))((char *)(pos) + (pos)->next_offset))
-
-/* can only be xt_entry_match, so no use of typeof here */
-#define xt_ematch_foreach(pos, entry) \
-       for ((pos) = (struct xt_entry_match *)entry->elems; \
-            (pos) < (struct xt_entry_match *)((char *)(entry) + \
-                    (entry)->target_offset); \
-            (pos) = (struct xt_entry_match *)((char *)(pos) + \
-                    (pos)->u.match_size))
-
-#ifdef __KERNEL__
 
 #include <linux/netdevice.h>
+#include <uapi/linux/netfilter/x_tables.h>
 
 /**
  * struct xt_action_param - parameters for matches/targets
@@ -617,6 +435,4 @@ extern int xt_compat_target_to_user(const struct xt_entry_target *t,
                                    void __user **dstptr, unsigned int *size);
 
 #endif /* CONFIG_COMPAT */
-#endif /* __KERNEL__ */
-
 #endif /* _X_TABLES_H */
index c42e52f..074790c 100644 (file)
@@ -1,78 +1,9 @@
 #ifndef _XT_HASHLIMIT_H
 #define _XT_HASHLIMIT_H
 
-#include <linux/types.h>
+#include <uapi/linux/netfilter/xt_hashlimit.h>
 
-/* timings are in milliseconds. */
-#define XT_HASHLIMIT_SCALE 10000
-/* 1/10,000 sec period => max of 10,000/sec.  Min rate is then 429490
- * seconds, or one packet every 59 hours.
- */
-
-/* packet length accounting is done in 16-byte steps */
-#define XT_HASHLIMIT_BYTE_SHIFT 4
-
-/* details of this structure hidden by the implementation */
-struct xt_hashlimit_htable;
-
-enum {
-       XT_HASHLIMIT_HASH_DIP = 1 << 0,
-       XT_HASHLIMIT_HASH_DPT = 1 << 1,
-       XT_HASHLIMIT_HASH_SIP = 1 << 2,
-       XT_HASHLIMIT_HASH_SPT = 1 << 3,
-       XT_HASHLIMIT_INVERT   = 1 << 4,
-       XT_HASHLIMIT_BYTES    = 1 << 5,
-};
-#ifdef __KERNEL__
 #define XT_HASHLIMIT_ALL (XT_HASHLIMIT_HASH_DIP | XT_HASHLIMIT_HASH_DPT | \
                          XT_HASHLIMIT_HASH_SIP | XT_HASHLIMIT_HASH_SPT | \
                          XT_HASHLIMIT_INVERT | XT_HASHLIMIT_BYTES)
-#endif
-
-struct hashlimit_cfg {
-       __u32 mode;       /* bitmask of XT_HASHLIMIT_HASH_* */
-       __u32 avg;    /* Average secs between packets * scale */
-       __u32 burst;  /* Period multiplier for upper limit. */
-
-       /* user specified */
-       __u32 size;             /* how many buckets */
-       __u32 max;              /* max number of entries */
-       __u32 gc_interval;      /* gc interval */
-       __u32 expire;   /* when do entries expire? */
-};
-
-struct xt_hashlimit_info {
-       char name [IFNAMSIZ];           /* name */
-       struct hashlimit_cfg cfg;
-
-       /* Used internally by the kernel */
-       struct xt_hashlimit_htable *hinfo;
-       union {
-               void *ptr;
-               struct xt_hashlimit_info *master;
-       } u;
-};
-
-struct hashlimit_cfg1 {
-       __u32 mode;       /* bitmask of XT_HASHLIMIT_HASH_* */
-       __u32 avg;    /* Average secs between packets * scale */
-       __u32 burst;  /* Period multiplier for upper limit. */
-
-       /* user specified */
-       __u32 size;             /* how many buckets */
-       __u32 max;              /* max number of entries */
-       __u32 gc_interval;      /* gc interval */
-       __u32 expire;   /* when do entries expire? */
-
-       __u8 srcmask, dstmask;
-};
-
-struct xt_hashlimit_mtinfo1 {
-       char name[IFNAMSIZ];
-       struct hashlimit_cfg1 cfg;
-
-       /* Used internally by the kernel */
-       struct xt_hashlimit_htable *hinfo __attribute__((aligned(8)));
-};
-
 #endif /*_XT_HASHLIMIT_H*/
index 8555e39..5b5e417 100644 (file)
@@ -1,26 +1,7 @@
 #ifndef _XT_PHYSDEV_H
 #define _XT_PHYSDEV_H
 
-#include <linux/types.h>
-
-#ifdef __KERNEL__
 #include <linux/if.h>
-#endif
-
-#define XT_PHYSDEV_OP_IN               0x01
-#define XT_PHYSDEV_OP_OUT              0x02
-#define XT_PHYSDEV_OP_BRIDGED          0x04
-#define XT_PHYSDEV_OP_ISIN             0x08
-#define XT_PHYSDEV_OP_ISOUT            0x10
-#define XT_PHYSDEV_OP_MASK             (0x20 - 1)
-
-struct xt_physdev_info {
-       char physindev[IFNAMSIZ];
-       char in_mask[IFNAMSIZ];
-       char physoutdev[IFNAMSIZ];
-       char out_mask[IFNAMSIZ];
-       __u8 invert;
-       __u8 bitmask;
-};
+#include <uapi/linux/netfilter/xt_physdev.h>
 
 #endif /*_XT_PHYSDEV_H*/
index 4afbace..08f555f 100644 (file)
@@ -1,2 +1,78 @@
 # UAPI Header export list
 header-y += ipset/
+header-y += nf_conntrack_common.h
+header-y += nf_conntrack_ftp.h
+header-y += nf_conntrack_sctp.h
+header-y += nf_conntrack_tcp.h
+header-y += nf_conntrack_tuple_common.h
+header-y += nf_nat.h
+header-y += nfnetlink.h
+header-y += nfnetlink_acct.h
+header-y += nfnetlink_compat.h
+header-y += nfnetlink_conntrack.h
+header-y += nfnetlink_cthelper.h
+header-y += nfnetlink_cttimeout.h
+header-y += nfnetlink_log.h
+header-y += nfnetlink_queue.h
+header-y += x_tables.h
+header-y += xt_AUDIT.h
+header-y += xt_CHECKSUM.h
+header-y += xt_CLASSIFY.h
+header-y += xt_CONNMARK.h
+header-y += xt_CONNSECMARK.h
+header-y += xt_CT.h
+header-y += xt_DSCP.h
+header-y += xt_IDLETIMER.h
+header-y += xt_LED.h
+header-y += xt_LOG.h
+header-y += xt_MARK.h
+header-y += xt_NFLOG.h
+header-y += xt_NFQUEUE.h
+header-y += xt_RATEEST.h
+header-y += xt_SECMARK.h
+header-y += xt_TCPMSS.h
+header-y += xt_TCPOPTSTRIP.h
+header-y += xt_TEE.h
+header-y += xt_TPROXY.h
+header-y += xt_addrtype.h
+header-y += xt_cluster.h
+header-y += xt_comment.h
+header-y += xt_connbytes.h
+header-y += xt_connlimit.h
+header-y += xt_connmark.h
+header-y += xt_conntrack.h
+header-y += xt_cpu.h
+header-y += xt_dccp.h
+header-y += xt_devgroup.h
+header-y += xt_dscp.h
+header-y += xt_ecn.h
+header-y += xt_esp.h
+header-y += xt_hashlimit.h
+header-y += xt_helper.h
+header-y += xt_iprange.h
+header-y += xt_ipvs.h
+header-y += xt_length.h
+header-y += xt_limit.h
+header-y += xt_mac.h
+header-y += xt_mark.h
+header-y += xt_multiport.h
+header-y += xt_nfacct.h
+header-y += xt_osf.h
+header-y += xt_owner.h
+header-y += xt_physdev.h
+header-y += xt_pkttype.h
+header-y += xt_policy.h
+header-y += xt_quota.h
+header-y += xt_rateest.h
+header-y += xt_realm.h
+header-y += xt_recent.h
+header-y += xt_sctp.h
+header-y += xt_set.h
+header-y += xt_socket.h
+header-y += xt_state.h
+header-y += xt_statistic.h
+header-y += xt_string.h
+header-y += xt_tcpmss.h
+header-y += xt_tcpudp.h
+header-y += xt_time.h
+header-y += xt_u32.h
diff --git a/include/uapi/linux/netfilter/nf_conntrack_common.h b/include/uapi/linux/netfilter/nf_conntrack_common.h
new file mode 100644 (file)
index 0000000..1644cdd
--- /dev/null
@@ -0,0 +1,117 @@
+#ifndef _UAPI_NF_CONNTRACK_COMMON_H
+#define _UAPI_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),
+
+       /* Conntrack got a helper explicitly attached via CT target. */
+       IPS_HELPER_BIT = 13,
+       IPS_HELPER = (1 << IPS_HELPER_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 /* _UAPI_NF_CONNTRACK_COMMON_H */
diff --git a/include/uapi/linux/netfilter/nf_conntrack_ftp.h b/include/uapi/linux/netfilter/nf_conntrack_ftp.h
new file mode 100644 (file)
index 0000000..1030315
--- /dev/null
@@ -0,0 +1,18 @@
+#ifndef _UAPI_NF_CONNTRACK_FTP_H
+#define _UAPI_NF_CONNTRACK_FTP_H
+/* FTP tracking. */
+
+/* This enum is exposed to userspace */
+enum nf_ct_ftp_type {
+       /* PORT command from client */
+       NF_CT_FTP_PORT,
+       /* PASV response from server */
+       NF_CT_FTP_PASV,
+       /* EPRT command from client */
+       NF_CT_FTP_EPRT,
+       /* EPSV response from server */
+       NF_CT_FTP_EPSV,
+};
+
+
+#endif /* _UAPI_NF_CONNTRACK_FTP_H */
diff --git a/include/uapi/linux/netfilter/nf_conntrack_tcp.h b/include/uapi/linux/netfilter/nf_conntrack_tcp.h
new file mode 100644 (file)
index 0000000..9993a42
--- /dev/null
@@ -0,0 +1,51 @@
+#ifndef _UAPI_NF_CONNTRACK_TCP_H
+#define _UAPI_NF_CONNTRACK_TCP_H
+/* TCP tracking. */
+
+#include <linux/types.h>
+
+/* 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 {
+       __u8 flags;
+       __u8 mask;
+};
+
+
+#endif /* _UAPI_NF_CONNTRACK_TCP_H */
diff --git a/include/uapi/linux/netfilter/nfnetlink.h b/include/uapi/linux/netfilter/nfnetlink.h
new file mode 100644 (file)
index 0000000..4a4efaf
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _UAPI_NFNETLINK_H
+#define _UAPI_NFNETLINK_H
+#include <linux/types.h>
+#include <linux/netfilter/nfnetlink_compat.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_MAX,
+};
+#define NFNLGRP_MAX    (__NFNLGRP_MAX - 1)
+
+/* General form of address family dependent message.
+ */
+struct nfgenmsg {
+       __u8  nfgen_family;             /* AF_xxx */
+       __u8  version;          /* nfnetlink version */
+       __be16    res_id;               /* resource id */
+};
+
+#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_COUNT              10
+
+#endif /* _UAPI_NFNETLINK_H */
diff --git a/include/uapi/linux/netfilter/nfnetlink_acct.h b/include/uapi/linux/netfilter/nfnetlink_acct.h
new file mode 100644 (file)
index 0000000..c7b6269
--- /dev/null
@@ -0,0 +1,27 @@
+#ifndef _UAPI_NFNL_ACCT_H_
+#define _UAPI_NFNL_ACCT_H_
+
+#ifndef NFACCT_NAME_MAX
+#define NFACCT_NAME_MAX                32
+#endif
+
+enum nfnl_acct_msg_types {
+       NFNL_MSG_ACCT_NEW,
+       NFNL_MSG_ACCT_GET,
+       NFNL_MSG_ACCT_GET_CTRZERO,
+       NFNL_MSG_ACCT_DEL,
+       NFNL_MSG_ACCT_MAX
+};
+
+enum nfnl_acct_type {
+       NFACCT_UNSPEC,
+       NFACCT_NAME,
+       NFACCT_PKTS,
+       NFACCT_BYTES,
+       NFACCT_USE,
+       __NFACCT_MAX
+};
+#define NFACCT_MAX (__NFACCT_MAX - 1)
+
+
+#endif /* _UAPI_NFNL_ACCT_H_ */
diff --git a/include/uapi/linux/netfilter/x_tables.h b/include/uapi/linux/netfilter/x_tables.h
new file mode 100644 (file)
index 0000000..c36969b
--- /dev/null
@@ -0,0 +1,187 @@
+#ifndef _UAPI_X_TABLES_H
+#define _UAPI_X_TABLES_H
+#include <linux/kernel.h>
+#include <linux/types.h>
+
+#define XT_FUNCTION_MAXNAMELEN 30
+#define XT_EXTENSION_MAXNAMELEN 29
+#define XT_TABLE_MAXNAMELEN 32
+
+struct xt_entry_match {
+       union {
+               struct {
+                       __u16 match_size;
+
+                       /* Used by userspace */
+                       char name[XT_EXTENSION_MAXNAMELEN];
+                       __u8 revision;
+               } user;
+               struct {
+                       __u16 match_size;
+
+                       /* Used inside the kernel */
+                       struct xt_match *match;
+               } kernel;
+
+               /* Total length */
+               __u16 match_size;
+       } u;
+
+       unsigned char data[0];
+};
+
+struct xt_entry_target {
+       union {
+               struct {
+                       __u16 target_size;
+
+                       /* Used by userspace */
+                       char name[XT_EXTENSION_MAXNAMELEN];
+                       __u8 revision;
+               } user;
+               struct {
+                       __u16 target_size;
+
+                       /* Used inside the kernel */
+                       struct xt_target *target;
+               } kernel;
+
+               /* Total length */
+               __u16 target_size;
+       } u;
+
+       unsigned char data[0];
+};
+
+#define XT_TARGET_INIT(__name, __size)                                        \
+{                                                                             \
+       .target.u.user = {                                                     \
+               .target_size    = XT_ALIGN(__size),                            \
+               .name           = __name,                                      \
+       },                                                                     \
+}
+
+struct xt_standard_target {
+       struct xt_entry_target target;
+       int verdict;
+};
+
+struct xt_error_target {
+       struct xt_entry_target target;
+       char errorname[XT_FUNCTION_MAXNAMELEN];
+};
+
+/* The argument to IPT_SO_GET_REVISION_*.  Returns highest revision
+ * kernel supports, if >= revision. */
+struct xt_get_revision {
+       char name[XT_EXTENSION_MAXNAMELEN];
+       __u8 revision;
+};
+
+/* CONTINUE verdict for targets */
+#define XT_CONTINUE 0xFFFFFFFF
+
+/* For standard target */
+#define XT_RETURN (-NF_REPEAT - 1)
+
+/* this is a dummy structure to find out the alignment requirement for a struct
+ * containing all the fundamental data types that are used in ipt_entry,
+ * ip6t_entry and arpt_entry.  This sucks, and it is a hack.  It will be my
+ * personal pleasure to remove it -HW
+ */
+struct _xt_align {
+       __u8 u8;
+       __u16 u16;
+       __u32 u32;
+       __u64 u64;
+};
+
+#define XT_ALIGN(s) __ALIGN_KERNEL((s), __alignof__(struct _xt_align))
+
+/* Standard return verdict, or do jump. */
+#define XT_STANDARD_TARGET ""
+/* Error verdict. */
+#define XT_ERROR_TARGET "ERROR"
+
+#define SET_COUNTER(c,b,p) do { (c).bcnt = (b); (c).pcnt = (p); } while(0)
+#define ADD_COUNTER(c,b,p) do { (c).bcnt += (b); (c).pcnt += (p); } while(0)
+
+struct xt_counters {
+       __u64 pcnt, bcnt;                       /* Packet and byte counters */
+};
+
+/* The argument to IPT_SO_ADD_COUNTERS. */
+struct xt_counters_info {
+       /* Which table. */
+       char name[XT_TABLE_MAXNAMELEN];
+
+       unsigned int num_counters;
+
+       /* The counters (actually `number' of these). */
+       struct xt_counters counters[0];
+};
+
+#define XT_INV_PROTO           0x40    /* Invert the sense of PROTO. */
+
+#ifndef __KERNEL__
+/* fn returns 0 to continue iteration */
+#define XT_MATCH_ITERATE(type, e, fn, args...)                 \
+({                                                             \
+       unsigned int __i;                                       \
+       int __ret = 0;                                          \
+       struct xt_entry_match *__m;                             \
+                                                               \
+       for (__i = sizeof(type);                                \
+            __i < (e)->target_offset;                          \
+            __i += __m->u.match_size) {                        \
+               __m = (void *)e + __i;                          \
+                                                               \
+               __ret = fn(__m , ## args);                      \
+               if (__ret != 0)                                 \
+                       break;                                  \
+       }                                                       \
+       __ret;                                                  \
+})
+
+/* fn returns 0 to continue iteration */
+#define XT_ENTRY_ITERATE_CONTINUE(type, entries, size, n, fn, args...) \
+({                                                             \
+       unsigned int __i, __n;                                  \
+       int __ret = 0;                                          \
+       type *__entry;                                          \
+                                                               \
+       for (__i = 0, __n = 0; __i < (size);                    \
+            __i += __entry->next_offset, __n++) {              \
+               __entry = (void *)(entries) + __i;              \
+               if (__n < n)                                    \
+                       continue;                               \
+                                                               \
+               __ret = fn(__entry , ## args);                  \
+               if (__ret != 0)                                 \
+                       break;                                  \
+       }                                                       \
+       __ret;                                                  \
+})
+
+/* fn returns 0 to continue iteration */
+#define XT_ENTRY_ITERATE(type, entries, size, fn, args...) \
+       XT_ENTRY_ITERATE_CONTINUE(type, entries, size, 0, fn, args)
+
+#endif /* !__KERNEL__ */
+
+/* pos is normally a struct ipt_entry/ip6t_entry/etc. */
+#define xt_entry_foreach(pos, ehead, esize) \
+       for ((pos) = (typeof(pos))(ehead); \
+            (pos) < (typeof(pos))((char *)(ehead) + (esize)); \
+            (pos) = (typeof(pos))((char *)(pos) + (pos)->next_offset))
+
+/* can only be xt_entry_match, so no use of typeof here */
+#define xt_ematch_foreach(pos, entry) \
+       for ((pos) = (struct xt_entry_match *)entry->elems; \
+            (pos) < (struct xt_entry_match *)((char *)(entry) + \
+                    (entry)->target_offset); \
+            (pos) = (struct xt_entry_match *)((char *)(pos) + \
+                    (pos)->u.match_size))
+
+
+#endif /* _UAPI_X_TABLES_H */
diff --git a/include/uapi/linux/netfilter/xt_hashlimit.h b/include/uapi/linux/netfilter/xt_hashlimit.h
new file mode 100644 (file)
index 0000000..cbfc43d
--- /dev/null
@@ -0,0 +1,73 @@
+#ifndef _UAPI_XT_HASHLIMIT_H
+#define _UAPI_XT_HASHLIMIT_H
+
+#include <linux/types.h>
+
+/* timings are in milliseconds. */
+#define XT_HASHLIMIT_SCALE 10000
+/* 1/10,000 sec period => max of 10,000/sec.  Min rate is then 429490
+ * seconds, or one packet every 59 hours.
+ */
+
+/* packet length accounting is done in 16-byte steps */
+#define XT_HASHLIMIT_BYTE_SHIFT 4
+
+/* details of this structure hidden by the implementation */
+struct xt_hashlimit_htable;
+
+enum {
+       XT_HASHLIMIT_HASH_DIP = 1 << 0,
+       XT_HASHLIMIT_HASH_DPT = 1 << 1,
+       XT_HASHLIMIT_HASH_SIP = 1 << 2,
+       XT_HASHLIMIT_HASH_SPT = 1 << 3,
+       XT_HASHLIMIT_INVERT   = 1 << 4,
+       XT_HASHLIMIT_BYTES    = 1 << 5,
+};
+
+struct hashlimit_cfg {
+       __u32 mode;       /* bitmask of XT_HASHLIMIT_HASH_* */
+       __u32 avg;    /* Average secs between packets * scale */
+       __u32 burst;  /* Period multiplier for upper limit. */
+
+       /* user specified */
+       __u32 size;             /* how many buckets */
+       __u32 max;              /* max number of entries */
+       __u32 gc_interval;      /* gc interval */
+       __u32 expire;   /* when do entries expire? */
+};
+
+struct xt_hashlimit_info {
+       char name [IFNAMSIZ];           /* name */
+       struct hashlimit_cfg cfg;
+
+       /* Used internally by the kernel */
+       struct xt_hashlimit_htable *hinfo;
+       union {
+               void *ptr;
+               struct xt_hashlimit_info *master;
+       } u;
+};
+
+struct hashlimit_cfg1 {
+       __u32 mode;       /* bitmask of XT_HASHLIMIT_HASH_* */
+       __u32 avg;    /* Average secs between packets * scale */
+       __u32 burst;  /* Period multiplier for upper limit. */
+
+       /* user specified */
+       __u32 size;             /* how many buckets */
+       __u32 max;              /* max number of entries */
+       __u32 gc_interval;      /* gc interval */
+       __u32 expire;   /* when do entries expire? */
+
+       __u8 srcmask, dstmask;
+};
+
+struct xt_hashlimit_mtinfo1 {
+       char name[IFNAMSIZ];
+       struct hashlimit_cfg1 cfg;
+
+       /* Used internally by the kernel */
+       struct xt_hashlimit_htable *hinfo __attribute__((aligned(8)));
+};
+
+#endif /* _UAPI_XT_HASHLIMIT_H */
diff --git a/include/uapi/linux/netfilter/xt_physdev.h b/include/uapi/linux/netfilter/xt_physdev.h
new file mode 100644 (file)
index 0000000..db7a298
--- /dev/null
@@ -0,0 +1,23 @@
+#ifndef _UAPI_XT_PHYSDEV_H
+#define _UAPI_XT_PHYSDEV_H
+
+#include <linux/types.h>
+
+
+#define XT_PHYSDEV_OP_IN               0x01
+#define XT_PHYSDEV_OP_OUT              0x02
+#define XT_PHYSDEV_OP_BRIDGED          0x04
+#define XT_PHYSDEV_OP_ISIN             0x08
+#define XT_PHYSDEV_OP_ISOUT            0x10
+#define XT_PHYSDEV_OP_MASK             (0x20 - 1)
+
+struct xt_physdev_info {
+       char physindev[IFNAMSIZ];
+       char in_mask[IFNAMSIZ];
+       char physoutdev[IFNAMSIZ];
+       char out_mask[IFNAMSIZ];
+       __u8 invert;
+       __u8 bitmask;
+};
+
+#endif /* _UAPI_XT_PHYSDEV_H */