]> git.proxmox.com Git - mirror_iproute2.git/commitdiff
iproute: build more easily on Android
authorLorenzo Colitti <lorenzo@google.com>
Mon, 2 Oct 2017 17:03:37 +0000 (02:03 +0900)
committerStephen Hemminger <stephen@networkplumber.org>
Wed, 11 Oct 2017 17:35:45 +0000 (10:35 -0700)
iproute2 contains a bunch of kernel headers, including uapi ones.
Android's libc uses uapi headers almost directly, and uses a
script to fix kernel types that don't match what userspace
expects.

For example: https://issuetracker.google.com/36987220 reports
that our struct ip_mreq_source contains "__be32 imr_multiaddr"
rather than "struct in_addr imr_multiaddr". The script addresses
this by replacing the uapi struct definition with a #include
<bits/ip_mreq.h> which contains the traditional userspace
definition.

Unfortunately, when we compile iproute2, this definition
conflicts with the one in iproute2's linux/in.h.

Historically we've just solved this problem by running "git rm"
on all the iproute2 include/linux headers that break Android's
libc.  However, deleting the files in this way makes it harder to
keep up with upstream, because every upstream change to
an include file causes a merge conflict with the delete.

This patch fixes the problem by moving the iproute2 linux headers
from include/linux to include/uapi/linux.

Tested: compiles on ubuntu trusty (glibc)

Signed-off-by: Elliott Hughes <enh@google.com>
Signed-off-by: Lorenzo Colitti <lorenzo@google.com>
221 files changed:
Makefile
include/linux/atm.h [deleted file]
include/linux/atmapi.h [deleted file]
include/linux/atmarp.h [deleted file]
include/linux/atmdev.h [deleted file]
include/linux/atmioc.h [deleted file]
include/linux/atmsap.h [deleted file]
include/linux/bpf.h [deleted file]
include/linux/bpf_common.h [deleted file]
include/linux/can.h [deleted file]
include/linux/can/netlink.h [deleted file]
include/linux/can/vxcan.h [deleted file]
include/linux/devlink.h [deleted file]
include/linux/elf-em.h [deleted file]
include/linux/fib_rules.h [deleted file]
include/linux/filter.h [deleted file]
include/linux/fou.h [deleted file]
include/linux/gen_stats.h [deleted file]
include/linux/genetlink.h [deleted file]
include/linux/hdlc/ioctl.h [deleted file]
include/linux/icmpv6.h [deleted file]
include/linux/if.h [deleted file]
include/linux/if_addr.h [deleted file]
include/linux/if_addrlabel.h [deleted file]
include/linux/if_alg.h [deleted file]
include/linux/if_arp.h [deleted file]
include/linux/if_bonding.h [deleted file]
include/linux/if_bridge.h [deleted file]
include/linux/if_ether.h [deleted file]
include/linux/if_link.h [deleted file]
include/linux/if_macsec.h [deleted file]
include/linux/if_packet.h [deleted file]
include/linux/if_tun.h [deleted file]
include/linux/if_tunnel.h [deleted file]
include/linux/if_vlan.h [deleted file]
include/linux/ife.h [deleted file]
include/linux/ila.h [deleted file]
include/linux/in.h [deleted file]
include/linux/in6.h [deleted file]
include/linux/in_route.h [deleted file]
include/linux/inet_diag.h [deleted file]
include/linux/ip.h [deleted file]
include/linux/ip6_tunnel.h [deleted file]
include/linux/ipsec.h [deleted file]
include/linux/kernel.h [deleted file]
include/linux/l2tp.h [deleted file]
include/linux/libc-compat.h [deleted file]
include/linux/limits.h [deleted file]
include/linux/lwtunnel.h [deleted file]
include/linux/magic.h [deleted file]
include/linux/mpls.h [deleted file]
include/linux/mpls_iptunnel.h [deleted file]
include/linux/neighbour.h [deleted file]
include/linux/net_namespace.h [deleted file]
include/linux/netconf.h [deleted file]
include/linux/netdevice.h [deleted file]
include/linux/netfilter.h [deleted file]
include/linux/netfilter/ipset/ip_set.h [deleted file]
include/linux/netfilter/x_tables.h [deleted file]
include/linux/netfilter/xt_set.h [deleted file]
include/linux/netfilter/xt_tcpudp.h [deleted file]
include/linux/netfilter_ipv4.h [deleted file]
include/linux/netfilter_ipv4/ip_tables.h [deleted file]
include/linux/netfilter_ipv6.h [deleted file]
include/linux/netfilter_ipv6/ip6_tables.h [deleted file]
include/linux/netlink.h [deleted file]
include/linux/netlink_diag.h [deleted file]
include/linux/packet_diag.h [deleted file]
include/linux/param.h [deleted file]
include/linux/pfkeyv2.h [deleted file]
include/linux/pkt_cls.h [deleted file]
include/linux/pkt_sched.h [deleted file]
include/linux/posix_types.h [deleted file]
include/linux/rtnetlink.h [deleted file]
include/linux/sctp.h [deleted file]
include/linux/seg6.h [deleted file]
include/linux/seg6_genl.h [deleted file]
include/linux/seg6_hmac.h [deleted file]
include/linux/seg6_iptunnel.h [deleted file]
include/linux/seg6_local.h [deleted file]
include/linux/sock_diag.h [deleted file]
include/linux/socket.h [deleted file]
include/linux/sockios.h [deleted file]
include/linux/stddef.h [deleted file]
include/linux/sysinfo.h [deleted file]
include/linux/tc_act/tc_bpf.h [deleted file]
include/linux/tc_act/tc_connmark.h [deleted file]
include/linux/tc_act/tc_csum.h [deleted file]
include/linux/tc_act/tc_defact.h [deleted file]
include/linux/tc_act/tc_gact.h [deleted file]
include/linux/tc_act/tc_ife.h [deleted file]
include/linux/tc_act/tc_ipt.h [deleted file]
include/linux/tc_act/tc_mirred.h [deleted file]
include/linux/tc_act/tc_nat.h [deleted file]
include/linux/tc_act/tc_pedit.h [deleted file]
include/linux/tc_act/tc_sample.h [deleted file]
include/linux/tc_act/tc_skbedit.h [deleted file]
include/linux/tc_act/tc_skbmod.h [deleted file]
include/linux/tc_act/tc_tunnel_key.h [deleted file]
include/linux/tc_act/tc_vlan.h [deleted file]
include/linux/tc_ematch/tc_em_cmp.h [deleted file]
include/linux/tc_ematch/tc_em_meta.h [deleted file]
include/linux/tc_ematch/tc_em_nbyte.h [deleted file]
include/linux/tcp.h [deleted file]
include/linux/tcp_metrics.h [deleted file]
include/linux/tipc.h [deleted file]
include/linux/tipc_netlink.h [deleted file]
include/linux/types.h [deleted file]
include/linux/unix_diag.h [deleted file]
include/linux/veth.h [deleted file]
include/linux/xfrm.h [deleted file]
include/uapi/linux/atm.h [new file with mode: 0644]
include/uapi/linux/atmapi.h [new file with mode: 0644]
include/uapi/linux/atmarp.h [new file with mode: 0644]
include/uapi/linux/atmdev.h [new file with mode: 0644]
include/uapi/linux/atmioc.h [new file with mode: 0644]
include/uapi/linux/atmsap.h [new file with mode: 0644]
include/uapi/linux/bpf.h [new file with mode: 0644]
include/uapi/linux/bpf_common.h [new file with mode: 0644]
include/uapi/linux/can.h [new file with mode: 0644]
include/uapi/linux/can/netlink.h [new file with mode: 0644]
include/uapi/linux/can/vxcan.h [new file with mode: 0644]
include/uapi/linux/devlink.h [new file with mode: 0644]
include/uapi/linux/elf-em.h [new file with mode: 0644]
include/uapi/linux/fib_rules.h [new file with mode: 0644]
include/uapi/linux/filter.h [new file with mode: 0644]
include/uapi/linux/fou.h [new file with mode: 0644]
include/uapi/linux/gen_stats.h [new file with mode: 0644]
include/uapi/linux/genetlink.h [new file with mode: 0644]
include/uapi/linux/hdlc/ioctl.h [new file with mode: 0644]
include/uapi/linux/icmpv6.h [new file with mode: 0644]
include/uapi/linux/if.h [new file with mode: 0644]
include/uapi/linux/if_addr.h [new file with mode: 0644]
include/uapi/linux/if_addrlabel.h [new file with mode: 0644]
include/uapi/linux/if_alg.h [new file with mode: 0644]
include/uapi/linux/if_arp.h [new file with mode: 0644]
include/uapi/linux/if_bonding.h [new file with mode: 0644]
include/uapi/linux/if_bridge.h [new file with mode: 0644]
include/uapi/linux/if_ether.h [new file with mode: 0644]
include/uapi/linux/if_link.h [new file with mode: 0644]
include/uapi/linux/if_macsec.h [new file with mode: 0644]
include/uapi/linux/if_packet.h [new file with mode: 0644]
include/uapi/linux/if_tun.h [new file with mode: 0644]
include/uapi/linux/if_tunnel.h [new file with mode: 0644]
include/uapi/linux/if_vlan.h [new file with mode: 0644]
include/uapi/linux/ife.h [new file with mode: 0644]
include/uapi/linux/ila.h [new file with mode: 0644]
include/uapi/linux/in.h [new file with mode: 0644]
include/uapi/linux/in6.h [new file with mode: 0644]
include/uapi/linux/in_route.h [new file with mode: 0644]
include/uapi/linux/inet_diag.h [new file with mode: 0644]
include/uapi/linux/ip.h [new file with mode: 0644]
include/uapi/linux/ip6_tunnel.h [new file with mode: 0644]
include/uapi/linux/ipsec.h [new file with mode: 0644]
include/uapi/linux/kernel.h [new file with mode: 0644]
include/uapi/linux/l2tp.h [new file with mode: 0644]
include/uapi/linux/libc-compat.h [new file with mode: 0644]
include/uapi/linux/limits.h [new file with mode: 0644]
include/uapi/linux/lwtunnel.h [new file with mode: 0644]
include/uapi/linux/magic.h [new file with mode: 0644]
include/uapi/linux/mpls.h [new file with mode: 0644]
include/uapi/linux/mpls_iptunnel.h [new file with mode: 0644]
include/uapi/linux/neighbour.h [new file with mode: 0644]
include/uapi/linux/net_namespace.h [new file with mode: 0644]
include/uapi/linux/netconf.h [new file with mode: 0644]
include/uapi/linux/netdevice.h [new file with mode: 0644]
include/uapi/linux/netfilter.h [new file with mode: 0644]
include/uapi/linux/netfilter/ipset/ip_set.h [new file with mode: 0644]
include/uapi/linux/netfilter/x_tables.h [new file with mode: 0644]
include/uapi/linux/netfilter/xt_set.h [new file with mode: 0644]
include/uapi/linux/netfilter/xt_tcpudp.h [new file with mode: 0644]
include/uapi/linux/netfilter_ipv4.h [new file with mode: 0644]
include/uapi/linux/netfilter_ipv4/ip_tables.h [new file with mode: 0644]
include/uapi/linux/netfilter_ipv6.h [new file with mode: 0644]
include/uapi/linux/netfilter_ipv6/ip6_tables.h [new file with mode: 0644]
include/uapi/linux/netlink.h [new file with mode: 0644]
include/uapi/linux/netlink_diag.h [new file with mode: 0644]
include/uapi/linux/packet_diag.h [new file with mode: 0644]
include/uapi/linux/param.h [new file with mode: 0644]
include/uapi/linux/pfkeyv2.h [new file with mode: 0644]
include/uapi/linux/pkt_cls.h [new file with mode: 0644]
include/uapi/linux/pkt_sched.h [new file with mode: 0644]
include/uapi/linux/posix_types.h [new file with mode: 0644]
include/uapi/linux/rtnetlink.h [new file with mode: 0644]
include/uapi/linux/sctp.h [new file with mode: 0644]
include/uapi/linux/seg6.h [new file with mode: 0644]
include/uapi/linux/seg6_genl.h [new file with mode: 0644]
include/uapi/linux/seg6_hmac.h [new file with mode: 0644]
include/uapi/linux/seg6_iptunnel.h [new file with mode: 0644]
include/uapi/linux/seg6_local.h [new file with mode: 0644]
include/uapi/linux/sock_diag.h [new file with mode: 0644]
include/uapi/linux/socket.h [new file with mode: 0644]
include/uapi/linux/sockios.h [new file with mode: 0644]
include/uapi/linux/stddef.h [new file with mode: 0644]
include/uapi/linux/sysinfo.h [new file with mode: 0644]
include/uapi/linux/tc_act/tc_bpf.h [new file with mode: 0644]
include/uapi/linux/tc_act/tc_connmark.h [new file with mode: 0644]
include/uapi/linux/tc_act/tc_csum.h [new file with mode: 0644]
include/uapi/linux/tc_act/tc_defact.h [new file with mode: 0644]
include/uapi/linux/tc_act/tc_gact.h [new file with mode: 0644]
include/uapi/linux/tc_act/tc_ife.h [new file with mode: 0644]
include/uapi/linux/tc_act/tc_ipt.h [new file with mode: 0644]
include/uapi/linux/tc_act/tc_mirred.h [new file with mode: 0644]
include/uapi/linux/tc_act/tc_nat.h [new file with mode: 0644]
include/uapi/linux/tc_act/tc_pedit.h [new file with mode: 0644]
include/uapi/linux/tc_act/tc_sample.h [new file with mode: 0644]
include/uapi/linux/tc_act/tc_skbedit.h [new file with mode: 0644]
include/uapi/linux/tc_act/tc_skbmod.h [new file with mode: 0644]
include/uapi/linux/tc_act/tc_tunnel_key.h [new file with mode: 0644]
include/uapi/linux/tc_act/tc_vlan.h [new file with mode: 0644]
include/uapi/linux/tc_ematch/tc_em_cmp.h [new file with mode: 0644]
include/uapi/linux/tc_ematch/tc_em_meta.h [new file with mode: 0644]
include/uapi/linux/tc_ematch/tc_em_nbyte.h [new file with mode: 0644]
include/uapi/linux/tcp.h [new file with mode: 0644]
include/uapi/linux/tcp_metrics.h [new file with mode: 0644]
include/uapi/linux/tipc.h [new file with mode: 0644]
include/uapi/linux/tipc_netlink.h [new file with mode: 0644]
include/uapi/linux/types.h [new file with mode: 0644]
include/uapi/linux/unix_diag.h [new file with mode: 0644]
include/uapi/linux/veth.h [new file with mode: 0644]
include/uapi/linux/xfrm.h [new file with mode: 0644]

index 75c0e57006ce262d225a754fc087fd6952c7cadb..6ad9610430526f93419878b3c13d3851986be9bd 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -46,7 +46,7 @@ CCOPTS = -O2
 WFLAGS := -Wall -Wstrict-prototypes  -Wmissing-prototypes
 WFLAGS += -Wmissing-declarations -Wold-style-definition -Wformat=2
 
-CFLAGS := $(WFLAGS) $(CCOPTS) -I../include $(DEFINES) $(CFLAGS)
+CFLAGS := $(WFLAGS) $(CCOPTS) -I../include -I../include/uapi $(DEFINES) $(CFLAGS)
 YACCFLAGS = -d -t -v
 
 SUBDIRS=lib ip tc bridge misc netem genl tipc devlink rdma man
diff --git a/include/linux/atm.h b/include/linux/atm.h
deleted file mode 100644 (file)
index 08e27be..0000000
+++ /dev/null
@@ -1,241 +0,0 @@
-/* atm.h - general ATM declarations */
-/* Written 1995-2000 by Werner Almesberger, EPFL LRC/ICA */
-
-/*
- * WARNING: User-space programs should not #include <linux/atm.h> directly.
- *          Instead, #include <atm.h>
- */
-
-#ifndef _LINUX_ATM_H
-#define _LINUX_ATM_H
-
-/*
- * BEGIN_xx and END_xx markers are used for automatic generation of
- * documentation. Do not change them.
- */
-
-
-#include <linux/atmapi.h>
-#include <linux/atmsap.h>
-#include <linux/atmioc.h>
-#include <linux/types.h>
-
-
-/* general ATM constants */
-#define ATM_CELL_SIZE              53  /* ATM cell size incl. header */
-#define ATM_CELL_PAYLOAD           48  /* ATM payload size */
-#define ATM_AAL0_SDU               52  /* AAL0 SDU size */
-#define ATM_MAX_AAL34_PDU       65535  /* maximum AAL3/4 PDU payload */
-#define ATM_AAL5_TRAILER            8  /* AAL5 trailer size */
-#define ATM_MAX_AAL5_PDU        65535  /* maximum AAL5 PDU payload */
-#define ATM_MAX_CDV              9999  /* maximum (default) CDV */
-#define ATM_NOT_RSV_VCI                    32  /* first non-reserved VCI value */
-
-#define ATM_MAX_VPI               255  /* maximum VPI at the UNI */
-#define ATM_MAX_VPI_NNI                  4096  /* maximum VPI at the NNI */
-#define ATM_MAX_VCI             65535  /* maximum VCI */
-
-
-/* "protcol" values for the socket system call */
-#define ATM_NO_AAL     0               /* AAL not specified */
-#define ATM_AAL0       13              /* "raw" ATM cells */
-#define ATM_AAL1       1               /* AAL1 (CBR) */
-#define ATM_AAL2       2               /* AAL2 (VBR) */
-#define ATM_AAL34      3               /* AAL3/4 (data) */
-#define ATM_AAL5       5               /* AAL5 (data) */
-
-/*
- * socket option name coding functions
- *
- * Note that __SO_ENCODE and __SO_LEVEL are somewhat a hack since the
- * << 22 only reserves 9 bits for the level.  On some architectures
- * SOL_SOCKET is 0xFFFF, so that's a bit of a problem
- */
-
-#define __SO_ENCODE(l,n,t)     ((((l) & 0x1FF) << 22) | ((n) << 16) | \
-                               sizeof(t))
-#define __SO_LEVEL_MATCH(c,m)  (((c) >> 22) == ((m) & 0x1FF))
-#define __SO_NUMBER(c)         (((c) >> 16) & 0x3f)
-#define __SO_SIZE(c)           ((c) & 0x3fff)
-
-/*
- * ATM layer
- */
-
-#define SO_SETCLP      __SO_ENCODE(SOL_ATM,0,int)
-                           /* set CLP bit value - TODO */
-#define SO_CIRANGE     __SO_ENCODE(SOL_ATM,1,struct atm_cirange)
-                           /* connection identifier range; socket must be
-                              bound or connected */
-#define SO_ATMQOS      __SO_ENCODE(SOL_ATM,2,struct atm_qos)
-                           /* Quality of Service setting */
-#define SO_ATMSAP      __SO_ENCODE(SOL_ATM,3,struct atm_sap)
-                           /* Service Access Point */
-#define SO_ATMPVC      __SO_ENCODE(SOL_ATM,4,struct sockaddr_atmpvc)
-                           /* "PVC" address (also for SVCs); get only */
-#define SO_MULTIPOINT  __SO_ENCODE(SOL_ATM, 5, int)
-                           /* make this vc a p2mp */
-
-
-/*
- * Note @@@: since the socket layers don't really distinguish the control and
- * the data plane but generally seems to be data plane-centric, any layer is
- * about equally wrong for the SAP. If you have a better idea about this,
- * please speak up ...
- */
-
-
-/* ATM cell header (for AAL0) */
-
-/* BEGIN_CH */
-#define ATM_HDR_GFC_MASK       0xf0000000
-#define ATM_HDR_GFC_SHIFT      28
-#define ATM_HDR_VPI_MASK       0x0ff00000
-#define ATM_HDR_VPI_SHIFT      20
-#define ATM_HDR_VCI_MASK       0x000ffff0
-#define ATM_HDR_VCI_SHIFT      4
-#define ATM_HDR_PTI_MASK       0x0000000e
-#define ATM_HDR_PTI_SHIFT      1
-#define ATM_HDR_CLP            0x00000001
-/* END_CH */
-
-
-/* PTI codings */
-
-/* BEGIN_PTI */
-#define ATM_PTI_US0    0  /* user data cell, congestion not exp, SDU-type 0 */
-#define ATM_PTI_US1    1  /* user data cell, congestion not exp, SDU-type 1 */
-#define ATM_PTI_UCES0  2  /* user data cell, cong. experienced, SDU-type 0 */
-#define ATM_PTI_UCES1  3  /* user data cell, cong. experienced, SDU-type 1 */
-#define ATM_PTI_SEGF5  4  /* segment OAM F5 flow related cell */
-#define ATM_PTI_E2EF5  5  /* end-to-end OAM F5 flow related cell */
-#define ATM_PTI_RSV_RM 6  /* reserved for traffic control/resource mgmt */
-#define ATM_PTI_RSV    7  /* reserved */
-/* END_PTI */
-
-
-/*
- * The following items should stay in linux/atm.h, which should be linked to
- * netatm/atm.h
- */
-
-/* Traffic description */
-
-#define ATM_NONE       0               /* no traffic */
-#define ATM_UBR                1
-#define ATM_CBR                2
-#define ATM_VBR                3
-#define ATM_ABR                4
-#define ATM_ANYCLASS   5               /* compatible with everything */
-
-#define ATM_MAX_PCR    -1              /* maximum available PCR */
-
-struct atm_trafprm {
-       unsigned char   traffic_class;  /* traffic class (ATM_UBR, ...) */
-       int             max_pcr;        /* maximum PCR in cells per second */
-       int             pcr;            /* desired PCR in cells per second */
-       int             min_pcr;        /* minimum PCR in cells per second */
-       int             max_cdv;        /* maximum CDV in microseconds */
-       int             max_sdu;        /* maximum SDU in bytes */
-        /* extra params for ABR */
-        unsigned int   icr;            /* Initial Cell Rate (24-bit) */
-        unsigned int   tbe;            /* Transient Buffer Exposure (24-bit) */ 
-        unsigned int   frtt : 24;      /* Fixed Round Trip Time (24-bit) */
-        unsigned int   rif  : 4;       /* Rate Increment Factor (4-bit) */
-        unsigned int   rdf  : 4;       /* Rate Decrease Factor (4-bit) */
-        unsigned int nrm_pres  :1;      /* nrm present bit */
-        unsigned int trm_pres  :1;             /* rm present bit */
-        unsigned int adtf_pres :1;             /* adtf present bit */
-        unsigned int cdf_pres  :1;     /* cdf present bit*/
-        unsigned int nrm       :3;             /* Max # of Cells for each forward RM cell (3-bit) */
-        unsigned int trm       :3;     /* Time between forward RM cells (3-bit) */    
-       unsigned int adtf      :10;     /* ACR Decrease Time Factor (10-bit) */
-       unsigned int cdf       :3;      /* Cutoff Decrease Factor (3-bit) */
-        unsigned int spare     :9;      /* spare bits */ 
-};
-
-struct atm_qos {
-       struct atm_trafprm txtp;        /* parameters in TX direction */
-       struct atm_trafprm rxtp __ATM_API_ALIGN;
-                                       /* parameters in RX direction */
-       unsigned char aal __ATM_API_ALIGN;
-};
-
-/* PVC addressing */
-
-#define ATM_ITF_ANY    -1              /* "magic" PVC address values */
-#define ATM_VPI_ANY    -1
-#define ATM_VCI_ANY    -1
-#define ATM_VPI_UNSPEC -2
-#define ATM_VCI_UNSPEC -2
-
-
-struct sockaddr_atmpvc {
-       unsigned short  sap_family;     /* address family, AF_ATMPVC  */
-       struct {                        /* PVC address */
-               short   itf;            /* ATM interface */
-               short   vpi;            /* VPI (only 8 bits at UNI) */
-               int     vci;            /* VCI (only 16 bits at UNI) */
-       } sap_addr __ATM_API_ALIGN;     /* PVC address */
-};
-
-/* SVC addressing */
-
-#define        ATM_ESA_LEN     20              /* ATM End System Address length */
-#define ATM_E164_LEN   12              /* maximum E.164 number length */
-
-#define ATM_AFI_DCC    0x39            /* DCC ATM Format */
-#define ATM_AFI_ICD    0x47            /* ICD ATM Format */
-#define ATM_AFI_E164   0x45            /* E.164 ATM Format */
-#define ATM_AFI_LOCAL  0x49            /* Local ATM Format */ 
-
-#define ATM_AFI_DCC_GROUP      0xBD    /* DCC ATM Group Format */
-#define ATM_AFI_ICD_GROUP      0xC5    /* ICD ATM Group Format */
-#define ATM_AFI_E164_GROUP     0xC3    /* E.164 ATM Group Format */
-#define ATM_AFI_LOCAL_GROUP    0xC7    /* Local ATM Group Format */
-
-#define ATM_LIJ_NONE   0               /* no leaf-initiated join */
-#define ATM_LIJ                1               /* request joining */
-#define ATM_LIJ_RPJ    2               /* set to root-prompted join */
-#define ATM_LIJ_NJ     3               /* set to network join */
-
-
-struct sockaddr_atmsvc {
-    unsigned short     sas_family;     /* address family, AF_ATMSVC */
-    struct {                           /* SVC address */
-        unsigned char  prv[ATM_ESA_LEN];/* private ATM address */
-        char           pub[ATM_E164_LEN+1]; /* public address (E.164) */
-                                       /* unused addresses must be bzero'ed */
-       char            lij_type;       /* role in LIJ call; one of ATM_LIJ* */
-       __u32   lij_id;         /* LIJ call identifier */
-    } sas_addr __ATM_API_ALIGN;                /* SVC address */
-};
-
-
-static __inline__ int atmsvc_addr_in_use(struct sockaddr_atmsvc addr)
-{
-       return *addr.sas_addr.prv || *addr.sas_addr.pub;
-}
-
-
-static __inline__ int atmpvc_addr_in_use(struct sockaddr_atmpvc addr)
-{
-       return addr.sap_addr.itf || addr.sap_addr.vpi || addr.sap_addr.vci;
-}
-
-
-/*
- * Some stuff for linux/sockios.h
- */
-
-struct atmif_sioc {
-       int number;
-       int length;
-       void *arg;
-};
-
-
-typedef unsigned short atm_backend_t;
-#endif /* _LINUX_ATM_H */
diff --git a/include/linux/atmapi.h b/include/linux/atmapi.h
deleted file mode 100644 (file)
index 8fe54d9..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-/* atmapi.h - ATM API user space/kernel compatibility */
-/* Written 1999,2000 by Werner Almesberger, EPFL ICA */
-
-#ifndef _LINUX_ATMAPI_H
-#define _LINUX_ATMAPI_H
-
-#if defined(__sparc__) || defined(__ia64__)
-/* such alignment is not required on 32 bit sparcs, but we can't
-   figure that we are on a sparc64 while compiling user-space programs. */
-#define __ATM_API_ALIGN        __attribute__((aligned(8)))
-#else
-#define __ATM_API_ALIGN
-#endif
-
-
-/*
- * Opaque type for kernel pointers. Note that _ is never accessed. We need
- * the struct in order hide the array, so that we can make simple assignments
- * instead of being forced to use memcpy. It also improves error reporting for
- * code that still assumes that we're passing unsigned longs.
- *
- * Convention: NULL pointers are passed as a field of all zeroes.
- */
-typedef struct { unsigned char _[8]; } __ATM_API_ALIGN atm_kptr_t;
-
-#endif
diff --git a/include/linux/atmarp.h b/include/linux/atmarp.h
deleted file mode 100644 (file)
index 231f4bd..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-/* atmarp.h - ATM ARP protocol and kernel-demon interface definitions */
-/* Written 1995-1999 by Werner Almesberger, EPFL LRC/ICA */
-
-#ifndef _LINUX_ATMARP_H
-#define _LINUX_ATMARP_H
-
-#include <linux/types.h>
-#include <linux/atmapi.h>
-#include <linux/atmioc.h>
-
-
-#define ATMARP_RETRY_DELAY 30          /* request next resolution or forget
-                                          NAK after 30 sec - should go into
-                                          atmclip.h */
-#define ATMARP_MAX_UNRES_PACKETS 5     /* queue that many packets while
-                                          waiting for the resolver */
-
-
-#define ATMARPD_CTRL   _IO('a',ATMIOC_CLIP+1)  /* become atmarpd ctrl sock */
-#define ATMARP_MKIP    _IO('a',ATMIOC_CLIP+2)  /* attach socket to IP */
-#define ATMARP_SETENTRY        _IO('a',ATMIOC_CLIP+3)  /* fill or hide ARP entry */
-#define ATMARP_ENCAP   _IO('a',ATMIOC_CLIP+5)  /* change encapsulation */
-
-
-enum atmarp_ctrl_type {
-       act_invalid,            /* catch uninitialized structures */
-       act_need,               /* need address resolution */
-       act_up,                 /* interface is coming up */
-       act_down,               /* interface is going down */
-       act_change              /* interface configuration has changed */
-};
-
-struct atmarp_ctrl {
-       enum atmarp_ctrl_type   type;   /* message type */
-       int                     itf_num;/* interface number (if present) */
-       __be32                  ip;     /* IP address (act_need only) */
-};
-
-#endif
diff --git a/include/linux/atmdev.h b/include/linux/atmdev.h
deleted file mode 100644 (file)
index 8faa8b9..0000000
+++ /dev/null
@@ -1,215 +0,0 @@
-/* atmdev.h - ATM device driver declarations and various related items */
-/* Written 1995-2000 by Werner Almesberger, EPFL LRC/ICA */
-
-#ifndef LINUX_ATMDEV_H
-#define LINUX_ATMDEV_H
-
-
-#include <linux/atmapi.h>
-#include <linux/atm.h>
-#include <linux/atmioc.h>
-
-
-#define ESI_LEN                6
-
-#define ATM_OC3_PCR    (155520000/270*260/8/53)
-                       /* OC3 link rate:  155520000 bps
-                          SONET overhead: /270*260 (9 section, 1 path)
-                          bits per cell:  /8/53
-                          max cell rate:  353207.547 cells/sec */
-#define ATM_25_PCR     ((25600000/8-8000)/54)
-                       /* 25 Mbps ATM cell rate (59111) */
-#define ATM_OC12_PCR   (622080000/1080*1040/8/53)
-                       /* OC12 link rate: 622080000 bps
-                          SONET overhead: /1080*1040
-                          bits per cell:  /8/53
-                          max cell rate:  1412830.188 cells/sec */
-#define ATM_DS3_PCR    (8000*12)
-                       /* DS3: 12 cells in a 125 usec time slot */
-
-
-#define __AAL_STAT_ITEMS \
-    __HANDLE_ITEM(tx);                 /* TX okay */ \
-    __HANDLE_ITEM(tx_err);             /* TX errors */ \
-    __HANDLE_ITEM(rx);                 /* RX okay */ \
-    __HANDLE_ITEM(rx_err);             /* RX errors */ \
-    __HANDLE_ITEM(rx_drop);            /* RX out of memory */
-
-struct atm_aal_stats {
-#define __HANDLE_ITEM(i) int i
-       __AAL_STAT_ITEMS
-#undef __HANDLE_ITEM
-};
-
-
-struct atm_dev_stats {
-       struct atm_aal_stats aal0;
-       struct atm_aal_stats aal34;
-       struct atm_aal_stats aal5;
-} __ATM_API_ALIGN;
-
-
-#define ATM_GETLINKRATE        _IOW('a',ATMIOC_ITF+1,struct atmif_sioc)
-                                       /* get link rate */
-#define ATM_GETNAMES   _IOW('a',ATMIOC_ITF+3,struct atm_iobuf)
-                                       /* get interface names (numbers) */
-#define ATM_GETTYPE    _IOW('a',ATMIOC_ITF+4,struct atmif_sioc)
-                                       /* get interface type name */
-#define ATM_GETESI     _IOW('a',ATMIOC_ITF+5,struct atmif_sioc)
-                                       /* get interface ESI */
-#define ATM_GETADDR    _IOW('a',ATMIOC_ITF+6,struct atmif_sioc)
-                                       /* get itf's local ATM addr. list */
-#define ATM_RSTADDR    _IOW('a',ATMIOC_ITF+7,struct atmif_sioc)
-                                       /* reset itf's ATM address list */
-#define ATM_ADDADDR    _IOW('a',ATMIOC_ITF+8,struct atmif_sioc)
-                                       /* add a local ATM address */
-#define ATM_DELADDR    _IOW('a',ATMIOC_ITF+9,struct atmif_sioc)
-                                       /* remove a local ATM address */
-#define ATM_GETCIRANGE _IOW('a',ATMIOC_ITF+10,struct atmif_sioc)
-                                       /* get connection identifier range */
-#define ATM_SETCIRANGE _IOW('a',ATMIOC_ITF+11,struct atmif_sioc)
-                                       /* set connection identifier range */
-#define ATM_SETESI     _IOW('a',ATMIOC_ITF+12,struct atmif_sioc)
-                                       /* set interface ESI */
-#define ATM_SETESIF    _IOW('a',ATMIOC_ITF+13,struct atmif_sioc)
-                                       /* force interface ESI */
-#define ATM_ADDLECSADDR        _IOW('a', ATMIOC_ITF+14, struct atmif_sioc)
-                                       /* register a LECS address */
-#define ATM_DELLECSADDR        _IOW('a', ATMIOC_ITF+15, struct atmif_sioc)
-                                       /* unregister a LECS address */
-#define ATM_GETLECSADDR        _IOW('a', ATMIOC_ITF+16, struct atmif_sioc)
-                                       /* retrieve LECS address(es) */
-
-#define ATM_GETSTAT    _IOW('a',ATMIOC_SARCOM+0,struct atmif_sioc)
-                                       /* get AAL layer statistics */
-#define ATM_GETSTATZ   _IOW('a',ATMIOC_SARCOM+1,struct atmif_sioc)
-                                       /* get AAL layer statistics and zero */
-#define ATM_GETLOOP    _IOW('a',ATMIOC_SARCOM+2,struct atmif_sioc)
-                                       /* get loopback mode */
-#define ATM_SETLOOP    _IOW('a',ATMIOC_SARCOM+3,struct atmif_sioc)
-                                       /* set loopback mode */
-#define ATM_QUERYLOOP  _IOW('a',ATMIOC_SARCOM+4,struct atmif_sioc)
-                                       /* query supported loopback modes */
-#define ATM_SETSC      _IOW('a',ATMIOC_SPECIAL+1,int)
-                                       /* enable or disable single-copy */
-#define ATM_SETBACKEND _IOW('a',ATMIOC_SPECIAL+2,atm_backend_t)
-                                       /* set backend handler */
-#define ATM_NEWBACKENDIF _IOW('a',ATMIOC_SPECIAL+3,atm_backend_t)
-                                       /* use backend to make new if */
-#define ATM_ADDPARTY   _IOW('a', ATMIOC_SPECIAL+4,struct atm_iobuf)
-                                       /* add party to p2mp call */
-#ifdef CONFIG_COMPAT
-/* It actually takes struct sockaddr_atmsvc, not struct atm_iobuf */
-#define COMPAT_ATM_ADDPARTY    _IOW('a', ATMIOC_SPECIAL+4,struct compat_atm_iobuf)
-#endif
-#define ATM_DROPPARTY  _IOW('a', ATMIOC_SPECIAL+5,int)
-                                       /* drop party from p2mp call */
-
-/*
- * These are backend handkers that can be set via the ATM_SETBACKEND call
- * above.  In the future we may support dynamic loading of these - for now,
- * they're just being used to share the ATMIOC_BACKEND ioctls
- */
-#define ATM_BACKEND_RAW                0       
-#define ATM_BACKEND_PPP                1       /* PPPoATM - RFC2364 */
-#define ATM_BACKEND_BR2684     2       /* Bridged RFC1483/2684 */
-
-/* for ATM_GETTYPE */
-#define ATM_ITFTYP_LEN 8       /* maximum length of interface type name */
-
-/*
- * Loopback modes for ATM_{PHY,SAR}_{GET,SET}LOOP
- */
-
-/* Point of loopback                           CPU-->SAR-->PHY-->line--> ... */
-#define __ATM_LM_NONE  0       /* no loop back     ^     ^     ^      ^      */
-#define __ATM_LM_AAL   1       /* loop back PDUs --'     |     |      |      */
-#define __ATM_LM_ATM   2       /* loop back ATM cells ---'     |      |      */
-/* RESERVED            4       loop back on PHY side  ---'                   */
-#define __ATM_LM_PHY   8       /* loop back bits (digital) ----'      |      */
-#define __ATM_LM_ANALOG 16     /* loop back the analog signal --------'      */
-
-/* Direction of loopback */
-#define __ATM_LM_MKLOC(n)      ((n))       /* Local (i.e. loop TX to RX) */
-#define __ATM_LM_MKRMT(n)      ((n) << 8)  /* Remote (i.e. loop RX to TX) */
-
-#define __ATM_LM_XTLOC(n)      ((n) & 0xff)
-#define __ATM_LM_XTRMT(n)      (((n) >> 8) & 0xff)
-
-#define ATM_LM_NONE    0       /* no loopback */
-
-#define ATM_LM_LOC_AAL __ATM_LM_MKLOC(__ATM_LM_AAL)
-#define ATM_LM_LOC_ATM __ATM_LM_MKLOC(__ATM_LM_ATM)
-#define ATM_LM_LOC_PHY __ATM_LM_MKLOC(__ATM_LM_PHY)
-#define ATM_LM_LOC_ANALOG __ATM_LM_MKLOC(__ATM_LM_ANALOG)
-
-#define ATM_LM_RMT_AAL __ATM_LM_MKRMT(__ATM_LM_AAL)
-#define ATM_LM_RMT_ATM __ATM_LM_MKRMT(__ATM_LM_ATM)
-#define ATM_LM_RMT_PHY __ATM_LM_MKRMT(__ATM_LM_PHY)
-#define ATM_LM_RMT_ANALOG __ATM_LM_MKRMT(__ATM_LM_ANALOG)
-
-/*
- * Note: ATM_LM_LOC_* and ATM_LM_RMT_* can be combined, provided that
- * __ATM_LM_XTLOC(x) <= __ATM_LM_XTRMT(x)
- */
-
-
-struct atm_iobuf {
-       int length;
-       void *buffer;
-};
-
-/* for ATM_GETCIRANGE / ATM_SETCIRANGE */
-
-#define ATM_CI_MAX      -1              /* use maximum range of VPI/VCI */
-struct atm_cirange {
-       signed char     vpi_bits;       /* 1..8, ATM_CI_MAX (-1) for maximum */
-       signed char     vci_bits;       /* 1..16, ATM_CI_MAX (-1) for maximum */
-};
-
-/* for ATM_SETSC; actually taken from the ATM_VF number space */
-
-#define ATM_SC_RX      1024            /* enable RX single-copy */
-#define ATM_SC_TX      2048            /* enable TX single-copy */
-
-#define ATM_BACKLOG_DEFAULT 32 /* if we get more, we're likely to time out
-                                 anyway */
-
-/* MF: change_qos (Modify) flags */
-
-#define ATM_MF_IMMED    1      /* Block until change is effective */
-#define ATM_MF_INC_RSV  2      /* Change reservation on increase */
-#define ATM_MF_INC_SHP  4      /* Change shaping on increase */
-#define ATM_MF_DEC_RSV  8      /* Change reservation on decrease */
-#define ATM_MF_DEC_SHP 16      /* Change shaping on decrease */
-#define ATM_MF_BWD     32      /* Set the backward direction parameters */
-
-#define ATM_MF_SET     (ATM_MF_INC_RSV | ATM_MF_INC_SHP | ATM_MF_DEC_RSV | \
-                         ATM_MF_DEC_SHP | ATM_MF_BWD)
-
-/*
- * ATM_VS_* are used to express VC state in a human-friendly way.
- */
-
-#define ATM_VS_IDLE    0       /* VC is not used */
-#define ATM_VS_CONNECTED 1     /* VC is connected */
-#define ATM_VS_CLOSING 2       /* VC is closing */
-#define ATM_VS_LISTEN  3       /* VC is listening for incoming setups */
-#define ATM_VS_INUSE   4       /* VC is in use (registered with atmsigd) */
-#define ATM_VS_BOUND   5       /* VC is bound */
-
-#define ATM_VS2TXT_MAP \
-    "IDLE", "CONNECTED", "CLOSING", "LISTEN", "INUSE", "BOUND"
-
-#define ATM_VF2TXT_MAP \
-    "ADDR",    "READY",        "PARTIAL",      "REGIS", \
-    "RELEASED", "HASQOS",      "LISTEN",       "META", \
-    "256",     "512",          "1024",         "2048", \
-    "SESSION", "HASSAP",       "BOUND",        "CLOSE"
-
-
-
-#endif /* LINUX_ATMDEV_H */
diff --git a/include/linux/atmioc.h b/include/linux/atmioc.h
deleted file mode 100644 (file)
index 37f67aa..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-/* atmioc.h - ranges for ATM-related ioctl numbers */
-/* Written 1995-1999 by Werner Almesberger, EPFL LRC/ICA */
-
-
-/*
- * See http://icawww1.epfl.ch/linux-atm/magic.html for the complete list of
- * "magic" ioctl numbers.
- */
-
-
-#ifndef _LINUX_ATMIOC_H
-#define _LINUX_ATMIOC_H
-
-#include <asm/ioctl.h>
-               /* everybody including atmioc.h will also need _IO{,R,W,WR} */
-
-#define ATMIOC_PHYCOM    0x00 /* PHY device common ioctls, globally unique */
-#define ATMIOC_PHYCOM_END 0x0f
-#define ATMIOC_PHYTYP    0x10 /* PHY dev type ioctls, unique per PHY type */
-#define ATMIOC_PHYTYP_END 0x2f
-#define ATMIOC_PHYPRV    0x30 /* PHY dev private ioctls, unique per driver */
-#define ATMIOC_PHYPRV_END 0x4f
-#define ATMIOC_SARCOM    0x50 /* SAR device common ioctls, globally unique */
-#define ATMIOC_SARCOM_END 0x50
-#define ATMIOC_SARPRV    0x60 /* SAR dev private ioctls, unique per driver */
-#define ATMIOC_SARPRV_END 0x7f
-#define ATMIOC_ITF       0x80 /* Interface ioctls, globally unique */
-#define ATMIOC_ITF_END   0x8f
-#define ATMIOC_BACKEND   0x90 /* ATM generic backend ioctls, u. per backend */
-#define ATMIOC_BACKEND_END 0xaf
-/* 0xb0-0xbf: Reserved for future use */
-#define ATMIOC_AREQUIPA          0xc0 /* Application requested IP over ATM, glob. u. */
-#define ATMIOC_LANE      0xd0 /* LAN Emulation, globally unique */
-#define ATMIOC_MPOA       0xd8 /* MPOA, globally unique */
-#define        ATMIOC_CLIP       0xe0 /* Classical IP over ATM control, globally u. */
-#define        ATMIOC_CLIP_END   0xef
-#define        ATMIOC_SPECIAL    0xf0 /* Special-purpose controls, globally unique */
-#define        ATMIOC_SPECIAL_END 0xff
-
-#endif
diff --git a/include/linux/atmsap.h b/include/linux/atmsap.h
deleted file mode 100644 (file)
index 799b104..0000000
+++ /dev/null
@@ -1,162 +0,0 @@
-/* atmsap.h - ATM Service Access Point addressing definitions */
-
-/* Written 1995-1999 by Werner Almesberger, EPFL LRC/ICA */
-
-
-#ifndef _LINUX_ATMSAP_H
-#define _LINUX_ATMSAP_H
-
-#include <linux/atmapi.h>
-
-/*
- * BEGIN_xx and END_xx markers are used for automatic generation of
- * documentation. Do not change them.
- */
-
-
-/*
- * Layer 2 protocol identifiers
- */
-
-/* BEGIN_L2 */
-#define ATM_L2_NONE    0       /* L2 not specified */
-#define ATM_L2_ISO1745  0x01   /* Basic mode ISO 1745 */
-#define ATM_L2_Q291    0x02    /* ITU-T Q.291 (Rec. I.441) */
-#define ATM_L2_X25_LL  0x06    /* ITU-T X.25, link layer */
-#define ATM_L2_X25_ML  0x07    /* ITU-T X.25, multilink */
-#define ATM_L2_LAPB    0x08    /* Extended LAPB, half-duplex (Rec. T.71) */
-#define ATM_L2_HDLC_ARM        0x09    /* HDLC ARM (ISO/IEC 4335) */
-#define ATM_L2_HDLC_NRM        0x0a    /* HDLC NRM (ISO/IEC 4335) */
-#define ATM_L2_HDLC_ABM        0x0b    /* HDLC ABM (ISO/IEC 4335) */
-#define ATM_L2_ISO8802 0x0c    /* LAN LLC (ISO/IEC 8802/2) */
-#define ATM_L2_X75     0x0d    /* ITU-T X.75, SLP */
-#define ATM_L2_Q922    0x0e    /* ITU-T Q.922 */
-#define ATM_L2_USER    0x10    /* user-specified */
-#define ATM_L2_ISO7776 0x11    /* ISO 7776 DTE-DTE */
-/* END_L2 */
-
-
-/*
- * Layer 3 protocol identifiers
- */
-
-/* BEGIN_L3 */
-#define ATM_L3_NONE    0       /* L3 not specified */
-#define ATM_L3_X25     0x06    /* ITU-T X.25, packet layer */
-#define ATM_L3_ISO8208 0x07    /* ISO/IEC 8208 */
-#define ATM_L3_X223    0x08    /* ITU-T X.223 | ISO/IEC 8878 */
-#define ATM_L3_ISO8473 0x09    /* ITU-T X.233 | ISO/IEC 8473 */
-#define ATM_L3_T70     0x0a    /* ITU-T T.70 minimum network layer */
-#define ATM_L3_TR9577  0x0b    /* ISO/IEC TR 9577 */
-#define ATM_L3_H310    0x0c    /* ITU-T Recommendation H.310 */
-#define ATM_L3_H321    0x0d    /* ITU-T Recommendation H.321 */
-#define ATM_L3_USER    0x10    /* user-specified */
-/* END_L3 */
-
-
-/*
- * High layer identifiers
- */
-
-/* BEGIN_HL */
-#define ATM_HL_NONE    0       /* HL not specified */
-#define ATM_HL_ISO     0x01    /* ISO */
-#define ATM_HL_USER    0x02    /* user-specific */
-#define ATM_HL_HLP     0x03    /* high layer profile - UNI 3.0 only */
-#define ATM_HL_VENDOR  0x04    /* vendor-specific application identifier */
-/* END_HL */
-
-
-/*
- * ITU-T coded mode of operation
- */
-
-/* BEGIN_IMD */
-#define ATM_IMD_NONE    0      /* mode not specified */
-#define ATM_IMD_NORMAL  1      /* normal mode of operation */
-#define ATM_IMD_EXTENDED 2     /* extended mode of operation */
-/* END_IMD */
-
-/*
- * H.310 code points
- */
-
-#define ATM_TT_NONE    0       /* terminal type not specified */
-#define ATM_TT_RX      1       /* receive only */
-#define ATM_TT_TX      2       /* send only */
-#define ATM_TT_RXTX    3       /* receive and send */
-
-#define ATM_MC_NONE    0       /* no multiplexing */
-#define ATM_MC_TS      1       /* transport stream (TS) */
-#define ATM_MC_TS_FEC  2       /* transport stream with forward error corr. */
-#define ATM_MC_PS      3       /* program stream (PS) */
-#define ATM_MC_PS_FEC  4       /* program stream with forward error corr. */
-#define ATM_MC_H221    5       /* ITU-T Rec. H.221 */
-
-/*
- * SAP structures
- */
-
-#define ATM_MAX_HLI    8       /* maximum high-layer information length */
-
-
-struct atm_blli {
-    unsigned char l2_proto;    /* layer 2 protocol */
-    union {
-       struct {
-           unsigned char mode; /* mode of operation (ATM_IMD_xxx), 0 if */
-                               /* absent */
-           unsigned char window; /* window size (k), 1-127 (0 to omit) */
-       } itu;                  /* ITU-T encoding */
-       unsigned char user;     /* user-specified l2 information */
-    } l2;
-    unsigned char l3_proto;    /* layer 3 protocol */
-    union {
-       struct {
-           unsigned char mode; /* mode of operation (ATM_IMD_xxx), 0 if */
-                               /* absent */
-           unsigned char def_size; /* default packet size (log2), 4-12 (0 to */
-                                   /* omit) */
-           unsigned char window;/* packet window size, 1-127 (0 to omit) */
-       } itu;                  /* ITU-T encoding */
-       unsigned char user;     /* user specified l3 information */
-       struct {                      /* if l3_proto = ATM_L3_H310 */
-           unsigned char term_type;  /* terminal type */
-           unsigned char fw_mpx_cap; /* forward multiplexing capability */
-                                     /* only if term_type != ATM_TT_NONE */
-           unsigned char bw_mpx_cap; /* backward multiplexing capability */
-                                     /* only if term_type != ATM_TT_NONE */
-       } h310;
-       struct {                  /* if l3_proto = ATM_L3_TR9577 */
-           unsigned char ipi;    /* initial protocol id */
-           unsigned char snap[5];/* IEEE 802.1 SNAP identifier */
-                                 /* (only if ipi == NLPID_IEEE802_1_SNAP) */
-       } tr9577;
-    } l3;
-} __ATM_API_ALIGN;
-
-
-struct atm_bhli {
-    unsigned char hl_type;     /* high layer information type */
-    unsigned char hl_length;   /* length (only if hl_type == ATM_HL_USER || */
-                               /* hl_type == ATM_HL_ISO) */
-    unsigned char hl_info[ATM_MAX_HLI];/* high layer information */
-};
-
-
-#define ATM_MAX_BLLI   3               /* maximum number of BLLI elements */
-
-
-struct atm_sap {
-       struct atm_bhli bhli;           /* local SAP, high-layer information */
-       struct atm_blli blli[ATM_MAX_BLLI] __ATM_API_ALIGN;
-                                       /* local SAP, low-layer info */
-};
-
-
-static __inline__ int blli_in_use(struct atm_blli blli)
-{
-       return blli.l2_proto || blli.l3_proto;
-}
-
-#endif
diff --git a/include/linux/bpf.h b/include/linux/bpf.h
deleted file mode 100644 (file)
index 0895a52..0000000
+++ /dev/null
@@ -1,867 +0,0 @@
-/* Copyright (c) 2011-2014 PLUMgrid, http://plumgrid.com
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- */
-#ifndef __LINUX_BPF_H__
-#define __LINUX_BPF_H__
-
-#include <linux/types.h>
-#include <linux/bpf_common.h>
-
-/* Extended instruction set based on top of classic BPF */
-
-/* instruction classes */
-#define BPF_ALU64      0x07    /* alu mode in double word width */
-
-/* ld/ldx fields */
-#define BPF_DW         0x18    /* double word */
-#define BPF_XADD       0xc0    /* exclusive add */
-
-/* alu/jmp fields */
-#define BPF_MOV                0xb0    /* mov reg to reg */
-#define BPF_ARSH       0xc0    /* sign extending arithmetic shift right */
-
-/* change endianness of a register */
-#define BPF_END                0xd0    /* flags for endianness conversion: */
-#define BPF_TO_LE      0x00    /* convert to little-endian */
-#define BPF_TO_BE      0x08    /* convert to big-endian */
-#define BPF_FROM_LE    BPF_TO_LE
-#define BPF_FROM_BE    BPF_TO_BE
-
-/* jmp encodings */
-#define BPF_JNE                0x50    /* jump != */
-#define BPF_JLT                0xa0    /* LT is unsigned, '<' */
-#define BPF_JLE                0xb0    /* LE is unsigned, '<=' */
-#define BPF_JSGT       0x60    /* SGT is signed '>', GT in x86 */
-#define BPF_JSGE       0x70    /* SGE is signed '>=', GE in x86 */
-#define BPF_JSLT       0xc0    /* SLT is signed, '<' */
-#define BPF_JSLE       0xd0    /* SLE is signed, '<=' */
-#define BPF_CALL       0x80    /* function call */
-#define BPF_EXIT       0x90    /* function return */
-
-/* Register numbers */
-enum {
-       BPF_REG_0 = 0,
-       BPF_REG_1,
-       BPF_REG_2,
-       BPF_REG_3,
-       BPF_REG_4,
-       BPF_REG_5,
-       BPF_REG_6,
-       BPF_REG_7,
-       BPF_REG_8,
-       BPF_REG_9,
-       BPF_REG_10,
-       __MAX_BPF_REG,
-};
-
-/* BPF has 10 general purpose 64-bit registers and stack frame. */
-#define MAX_BPF_REG    __MAX_BPF_REG
-
-struct bpf_insn {
-       __u8    code;           /* opcode */
-       __u8    dst_reg:4;      /* dest register */
-       __u8    src_reg:4;      /* source register */
-       __s16   off;            /* signed offset */
-       __s32   imm;            /* signed immediate constant */
-};
-
-/* Key of an a BPF_MAP_TYPE_LPM_TRIE entry */
-struct bpf_lpm_trie_key {
-       __u32   prefixlen;      /* up to 32 for AF_INET, 128 for AF_INET6 */
-       __u8    data[0];        /* Arbitrary size */
-};
-
-/* BPF syscall commands, see bpf(2) man-page for details. */
-enum bpf_cmd {
-       BPF_MAP_CREATE,
-       BPF_MAP_LOOKUP_ELEM,
-       BPF_MAP_UPDATE_ELEM,
-       BPF_MAP_DELETE_ELEM,
-       BPF_MAP_GET_NEXT_KEY,
-       BPF_PROG_LOAD,
-       BPF_OBJ_PIN,
-       BPF_OBJ_GET,
-       BPF_PROG_ATTACH,
-       BPF_PROG_DETACH,
-       BPF_PROG_TEST_RUN,
-       BPF_PROG_GET_NEXT_ID,
-       BPF_MAP_GET_NEXT_ID,
-       BPF_PROG_GET_FD_BY_ID,
-       BPF_MAP_GET_FD_BY_ID,
-       BPF_OBJ_GET_INFO_BY_FD,
-};
-
-enum bpf_map_type {
-       BPF_MAP_TYPE_UNSPEC,
-       BPF_MAP_TYPE_HASH,
-       BPF_MAP_TYPE_ARRAY,
-       BPF_MAP_TYPE_PROG_ARRAY,
-       BPF_MAP_TYPE_PERF_EVENT_ARRAY,
-       BPF_MAP_TYPE_PERCPU_HASH,
-       BPF_MAP_TYPE_PERCPU_ARRAY,
-       BPF_MAP_TYPE_STACK_TRACE,
-       BPF_MAP_TYPE_CGROUP_ARRAY,
-       BPF_MAP_TYPE_LRU_HASH,
-       BPF_MAP_TYPE_LRU_PERCPU_HASH,
-       BPF_MAP_TYPE_LPM_TRIE,
-       BPF_MAP_TYPE_ARRAY_OF_MAPS,
-       BPF_MAP_TYPE_HASH_OF_MAPS,
-       BPF_MAP_TYPE_DEVMAP,
-       BPF_MAP_TYPE_SOCKMAP,
-};
-
-enum bpf_prog_type {
-       BPF_PROG_TYPE_UNSPEC,
-       BPF_PROG_TYPE_SOCKET_FILTER,
-       BPF_PROG_TYPE_KPROBE,
-       BPF_PROG_TYPE_SCHED_CLS,
-       BPF_PROG_TYPE_SCHED_ACT,
-       BPF_PROG_TYPE_TRACEPOINT,
-       BPF_PROG_TYPE_XDP,
-       BPF_PROG_TYPE_PERF_EVENT,
-       BPF_PROG_TYPE_CGROUP_SKB,
-       BPF_PROG_TYPE_CGROUP_SOCK,
-       BPF_PROG_TYPE_LWT_IN,
-       BPF_PROG_TYPE_LWT_OUT,
-       BPF_PROG_TYPE_LWT_XMIT,
-       BPF_PROG_TYPE_SOCK_OPS,
-       BPF_PROG_TYPE_SK_SKB,
-};
-
-enum bpf_attach_type {
-       BPF_CGROUP_INET_INGRESS,
-       BPF_CGROUP_INET_EGRESS,
-       BPF_CGROUP_INET_SOCK_CREATE,
-       BPF_CGROUP_SOCK_OPS,
-       BPF_SK_SKB_STREAM_PARSER,
-       BPF_SK_SKB_STREAM_VERDICT,
-       __MAX_BPF_ATTACH_TYPE
-};
-
-#define MAX_BPF_ATTACH_TYPE __MAX_BPF_ATTACH_TYPE
-
-/* If BPF_F_ALLOW_OVERRIDE flag is used in BPF_PROG_ATTACH command
- * to the given target_fd cgroup the descendent cgroup will be able to
- * override effective bpf program that was inherited from this cgroup
- */
-#define BPF_F_ALLOW_OVERRIDE   (1U << 0)
-
-/* If BPF_F_STRICT_ALIGNMENT is used in BPF_PROG_LOAD command, the
- * verifier will perform strict alignment checking as if the kernel
- * has been built with CONFIG_EFFICIENT_UNALIGNED_ACCESS not set,
- * and NET_IP_ALIGN defined to 2.
- */
-#define BPF_F_STRICT_ALIGNMENT (1U << 0)
-
-#define BPF_PSEUDO_MAP_FD      1
-
-/* flags for BPF_MAP_UPDATE_ELEM command */
-#define BPF_ANY                0 /* create new element or update existing */
-#define BPF_NOEXIST    1 /* create new element if it didn't exist */
-#define BPF_EXIST      2 /* update existing element */
-
-/* flags for BPF_MAP_CREATE command */
-#define BPF_F_NO_PREALLOC      (1U << 0)
-/* Instead of having one common LRU list in the
- * BPF_MAP_TYPE_LRU_[PERCPU_]HASH map, use a percpu LRU list
- * which can scale and perform better.
- * Note, the LRU nodes (including free nodes) cannot be moved
- * across different LRU lists.
- */
-#define BPF_F_NO_COMMON_LRU    (1U << 1)
-/* Specify numa node during map creation */
-#define BPF_F_NUMA_NODE                (1U << 2)
-
-union bpf_attr {
-       struct { /* anonymous struct used by BPF_MAP_CREATE command */
-               __u32   map_type;       /* one of enum bpf_map_type */
-               __u32   key_size;       /* size of key in bytes */
-               __u32   value_size;     /* size of value in bytes */
-               __u32   max_entries;    /* max number of entries in a map */
-               __u32   map_flags;      /* BPF_MAP_CREATE related
-                                        * flags defined above.
-                                        */
-               __u32   inner_map_fd;   /* fd pointing to the inner map */
-               __u32   numa_node;      /* numa node (effective only if
-                                        * BPF_F_NUMA_NODE is set).
-                                        */
-       };
-
-       struct { /* anonymous struct used by BPF_MAP_*_ELEM commands */
-               __u32           map_fd;
-               __aligned_u64   key;
-               union {
-                       __aligned_u64 value;
-                       __aligned_u64 next_key;
-               };
-               __u64           flags;
-       };
-
-       struct { /* anonymous struct used by BPF_PROG_LOAD command */
-               __u32           prog_type;      /* one of enum bpf_prog_type */
-               __u32           insn_cnt;
-               __aligned_u64   insns;
-               __aligned_u64   license;
-               __u32           log_level;      /* verbosity level of verifier */
-               __u32           log_size;       /* size of user buffer */
-               __aligned_u64   log_buf;        /* user supplied buffer */
-               __u32           kern_version;   /* checked when prog_type=kprobe */
-               __u32           prog_flags;
-       };
-
-       struct { /* anonymous struct used by BPF_OBJ_* commands */
-               __aligned_u64   pathname;
-               __u32           bpf_fd;
-       };
-
-       struct { /* anonymous struct used by BPF_PROG_ATTACH/DETACH commands */
-               __u32           target_fd;      /* container object to attach to */
-               __u32           attach_bpf_fd;  /* eBPF program to attach */
-               __u32           attach_type;
-               __u32           attach_flags;
-       };
-
-       struct { /* anonymous struct used by BPF_PROG_TEST_RUN command */
-               __u32           prog_fd;
-               __u32           retval;
-               __u32           data_size_in;
-               __u32           data_size_out;
-               __aligned_u64   data_in;
-               __aligned_u64   data_out;
-               __u32           repeat;
-               __u32           duration;
-       } test;
-
-       struct { /* anonymous struct used by BPF_*_GET_*_ID */
-               union {
-                       __u32           start_id;
-                       __u32           prog_id;
-                       __u32           map_id;
-               };
-               __u32           next_id;
-       };
-
-       struct { /* anonymous struct used by BPF_OBJ_GET_INFO_BY_FD */
-               __u32           bpf_fd;
-               __u32           info_len;
-               __aligned_u64   info;
-       } info;
-} __attribute__((aligned(8)));
-
-/* BPF helper function descriptions:
- *
- * void *bpf_map_lookup_elem(&map, &key)
- *     Return: Map value or NULL
- *
- * int bpf_map_update_elem(&map, &key, &value, flags)
- *     Return: 0 on success or negative error
- *
- * int bpf_map_delete_elem(&map, &key)
- *     Return: 0 on success or negative error
- *
- * int bpf_probe_read(void *dst, int size, void *src)
- *     Return: 0 on success or negative error
- *
- * u64 bpf_ktime_get_ns(void)
- *     Return: current ktime
- *
- * int bpf_trace_printk(const char *fmt, int fmt_size, ...)
- *     Return: length of buffer written or negative error
- *
- * u32 bpf_prandom_u32(void)
- *     Return: random value
- *
- * u32 bpf_raw_smp_processor_id(void)
- *     Return: SMP processor ID
- *
- * int bpf_skb_store_bytes(skb, offset, from, len, flags)
- *     store bytes into packet
- *     @skb: pointer to skb
- *     @offset: offset within packet from skb->mac_header
- *     @from: pointer where to copy bytes from
- *     @len: number of bytes to store into packet
- *     @flags: bit 0 - if true, recompute skb->csum
- *             other bits - reserved
- *     Return: 0 on success or negative error
- *
- * int bpf_l3_csum_replace(skb, offset, from, to, flags)
- *     recompute IP checksum
- *     @skb: pointer to skb
- *     @offset: offset within packet where IP checksum is located
- *     @from: old value of header field
- *     @to: new value of header field
- *     @flags: bits 0-3 - size of header field
- *             other bits - reserved
- *     Return: 0 on success or negative error
- *
- * int bpf_l4_csum_replace(skb, offset, from, to, flags)
- *     recompute TCP/UDP checksum
- *     @skb: pointer to skb
- *     @offset: offset within packet where TCP/UDP checksum is located
- *     @from: old value of header field
- *     @to: new value of header field
- *     @flags: bits 0-3 - size of header field
- *             bit 4 - is pseudo header
- *             other bits - reserved
- *     Return: 0 on success or negative error
- *
- * int bpf_tail_call(ctx, prog_array_map, index)
- *     jump into another BPF program
- *     @ctx: context pointer passed to next program
- *     @prog_array_map: pointer to map which type is BPF_MAP_TYPE_PROG_ARRAY
- *     @index: index inside array that selects specific program to run
- *     Return: 0 on success or negative error
- *
- * int bpf_clone_redirect(skb, ifindex, flags)
- *     redirect to another netdev
- *     @skb: pointer to skb
- *     @ifindex: ifindex of the net device
- *     @flags: bit 0 - if set, redirect to ingress instead of egress
- *             other bits - reserved
- *     Return: 0 on success or negative error
- *
- * u64 bpf_get_current_pid_tgid(void)
- *     Return: current->tgid << 32 | current->pid
- *
- * u64 bpf_get_current_uid_gid(void)
- *     Return: current_gid << 32 | current_uid
- *
- * int bpf_get_current_comm(char *buf, int size_of_buf)
- *     stores current->comm into buf
- *     Return: 0 on success or negative error
- *
- * u32 bpf_get_cgroup_classid(skb)
- *     retrieve a proc's classid
- *     @skb: pointer to skb
- *     Return: classid if != 0
- *
- * int bpf_skb_vlan_push(skb, vlan_proto, vlan_tci)
- *     Return: 0 on success or negative error
- *
- * int bpf_skb_vlan_pop(skb)
- *     Return: 0 on success or negative error
- *
- * int bpf_skb_get_tunnel_key(skb, key, size, flags)
- * int bpf_skb_set_tunnel_key(skb, key, size, flags)
- *     retrieve or populate tunnel metadata
- *     @skb: pointer to skb
- *     @key: pointer to 'struct bpf_tunnel_key'
- *     @size: size of 'struct bpf_tunnel_key'
- *     @flags: room for future extensions
- *     Return: 0 on success or negative error
- *
- * u64 bpf_perf_event_read(map, flags)
- *     read perf event counter value
- *     @map: pointer to perf_event_array map
- *     @flags: index of event in the map or bitmask flags
- *     Return: value of perf event counter read or error code
- *
- * int bpf_redirect(ifindex, flags)
- *     redirect to another netdev
- *     @ifindex: ifindex of the net device
- *     @flags:
- *       cls_bpf:
- *          bit 0 - if set, redirect to ingress instead of egress
- *          other bits - reserved
- *       xdp_bpf:
- *         all bits - reserved
- *     Return: cls_bpf: TC_ACT_REDIRECT on success or TC_ACT_SHOT on error
- *            xdp_bfp: XDP_REDIRECT on success or XDP_ABORT on error
- * int bpf_redirect_map(map, key, flags)
- *     redirect to endpoint in map
- *     @map: pointer to dev map
- *     @key: index in map to lookup
- *     @flags: --
- *     Return: XDP_REDIRECT on success or XDP_ABORT on error
- *
- * u32 bpf_get_route_realm(skb)
- *     retrieve a dst's tclassid
- *     @skb: pointer to skb
- *     Return: realm if != 0
- *
- * int bpf_perf_event_output(ctx, map, flags, data, size)
- *     output perf raw sample
- *     @ctx: struct pt_regs*
- *     @map: pointer to perf_event_array map
- *     @flags: index of event in the map or bitmask flags
- *     @data: data on stack to be output as raw data
- *     @size: size of data
- *     Return: 0 on success or negative error
- *
- * int bpf_get_stackid(ctx, map, flags)
- *     walk user or kernel stack and return id
- *     @ctx: struct pt_regs*
- *     @map: pointer to stack_trace map
- *     @flags: bits 0-7 - numer of stack frames to skip
- *             bit 8 - collect user stack instead of kernel
- *             bit 9 - compare stacks by hash only
- *             bit 10 - if two different stacks hash into the same stackid
- *                      discard old
- *             other bits - reserved
- *     Return: >= 0 stackid on success or negative error
- *
- * s64 bpf_csum_diff(from, from_size, to, to_size, seed)
- *     calculate csum diff
- *     @from: raw from buffer
- *     @from_size: length of from buffer
- *     @to: raw to buffer
- *     @to_size: length of to buffer
- *     @seed: optional seed
- *     Return: csum result or negative error code
- *
- * int bpf_skb_get_tunnel_opt(skb, opt, size)
- *     retrieve tunnel options metadata
- *     @skb: pointer to skb
- *     @opt: pointer to raw tunnel option data
- *     @size: size of @opt
- *     Return: option size
- *
- * int bpf_skb_set_tunnel_opt(skb, opt, size)
- *     populate tunnel options metadata
- *     @skb: pointer to skb
- *     @opt: pointer to raw tunnel option data
- *     @size: size of @opt
- *     Return: 0 on success or negative error
- *
- * int bpf_skb_change_proto(skb, proto, flags)
- *     Change protocol of the skb. Currently supported is v4 -> v6,
- *     v6 -> v4 transitions. The helper will also resize the skb. eBPF
- *     program is expected to fill the new headers via skb_store_bytes
- *     and lX_csum_replace.
- *     @skb: pointer to skb
- *     @proto: new skb->protocol type
- *     @flags: reserved
- *     Return: 0 on success or negative error
- *
- * int bpf_skb_change_type(skb, type)
- *     Change packet type of skb.
- *     @skb: pointer to skb
- *     @type: new skb->pkt_type type
- *     Return: 0 on success or negative error
- *
- * int bpf_skb_under_cgroup(skb, map, index)
- *     Check cgroup2 membership of skb
- *     @skb: pointer to skb
- *     @map: pointer to bpf_map in BPF_MAP_TYPE_CGROUP_ARRAY type
- *     @index: index of the cgroup in the bpf_map
- *     Return:
- *       == 0 skb failed the cgroup2 descendant test
- *       == 1 skb succeeded the cgroup2 descendant test
- *        < 0 error
- *
- * u32 bpf_get_hash_recalc(skb)
- *     Retrieve and possibly recalculate skb->hash.
- *     @skb: pointer to skb
- *     Return: hash
- *
- * u64 bpf_get_current_task(void)
- *     Returns current task_struct
- *     Return: current
- *
- * int bpf_probe_write_user(void *dst, void *src, int len)
- *     safely attempt to write to a location
- *     @dst: destination address in userspace
- *     @src: source address on stack
- *     @len: number of bytes to copy
- *     Return: 0 on success or negative error
- *
- * int bpf_current_task_under_cgroup(map, index)
- *     Check cgroup2 membership of current task
- *     @map: pointer to bpf_map in BPF_MAP_TYPE_CGROUP_ARRAY type
- *     @index: index of the cgroup in the bpf_map
- *     Return:
- *       == 0 current failed the cgroup2 descendant test
- *       == 1 current succeeded the cgroup2 descendant test
- *        < 0 error
- *
- * int bpf_skb_change_tail(skb, len, flags)
- *     The helper will resize the skb to the given new size, to be used f.e.
- *     with control messages.
- *     @skb: pointer to skb
- *     @len: new skb length
- *     @flags: reserved
- *     Return: 0 on success or negative error
- *
- * int bpf_skb_pull_data(skb, len)
- *     The helper will pull in non-linear data in case the skb is non-linear
- *     and not all of len are part of the linear section. Only needed for
- *     read/write with direct packet access.
- *     @skb: pointer to skb
- *     @len: len to make read/writeable
- *     Return: 0 on success or negative error
- *
- * s64 bpf_csum_update(skb, csum)
- *     Adds csum into skb->csum in case of CHECKSUM_COMPLETE.
- *     @skb: pointer to skb
- *     @csum: csum to add
- *     Return: csum on success or negative error
- *
- * void bpf_set_hash_invalid(skb)
- *     Invalidate current skb->hash.
- *     @skb: pointer to skb
- *
- * int bpf_get_numa_node_id()
- *     Return: Id of current NUMA node.
- *
- * int bpf_skb_change_head()
- *     Grows headroom of skb and adjusts MAC header offset accordingly.
- *     Will extends/reallocae as required automatically.
- *     May change skb data pointer and will thus invalidate any check
- *     performed for direct packet access.
- *     @skb: pointer to skb
- *     @len: length of header to be pushed in front
- *     @flags: Flags (unused for now)
- *     Return: 0 on success or negative error
- *
- * int bpf_xdp_adjust_head(xdp_md, delta)
- *     Adjust the xdp_md.data by delta
- *     @xdp_md: pointer to xdp_md
- *     @delta: An positive/negative integer to be added to xdp_md.data
- *     Return: 0 on success or negative on error
- *
- * int bpf_probe_read_str(void *dst, int size, const void *unsafe_ptr)
- *     Copy a NUL terminated string from unsafe address. In case the string
- *     length is smaller than size, the target is not padded with further NUL
- *     bytes. In case the string length is larger than size, just count-1
- *     bytes are copied and the last byte is set to NUL.
- *     @dst: destination address
- *     @size: maximum number of bytes to copy, including the trailing NUL
- *     @unsafe_ptr: unsafe address
- *     Return:
- *       > 0 length of the string including the trailing NUL on success
- *       < 0 error
- *
- * u64 bpf_get_socket_cookie(skb)
- *     Get the cookie for the socket stored inside sk_buff.
- *     @skb: pointer to skb
- *     Return: 8 Bytes non-decreasing number on success or 0 if the socket
- *     field is missing inside sk_buff
- *
- * u32 bpf_get_socket_uid(skb)
- *     Get the owner uid of the socket stored inside sk_buff.
- *     @skb: pointer to skb
- *     Return: uid of the socket owner on success or overflowuid if failed.
- *
- * u32 bpf_set_hash(skb, hash)
- *     Set full skb->hash.
- *     @skb: pointer to skb
- *     @hash: hash to set
- *
- * int bpf_setsockopt(bpf_socket, level, optname, optval, optlen)
- *     Calls setsockopt. Not all opts are available, only those with
- *     integer optvals plus TCP_CONGESTION.
- *     Supported levels: SOL_SOCKET and IPROTO_TCP
- *     @bpf_socket: pointer to bpf_socket
- *     @level: SOL_SOCKET or IPROTO_TCP
- *     @optname: option name
- *     @optval: pointer to option value
- *     @optlen: length of optval in byes
- *     Return: 0 or negative error
- *
- * int bpf_skb_adjust_room(skb, len_diff, mode, flags)
- *     Grow or shrink room in sk_buff.
- *     @skb: pointer to skb
- *     @len_diff: (signed) amount of room to grow/shrink
- *     @mode: operation mode (enum bpf_adj_room_mode)
- *     @flags: reserved for future use
- *     Return: 0 on success or negative error code
- *
- * int bpf_sk_redirect_map(map, key, flags)
- *     Redirect skb to a sock in map using key as a lookup key for the
- *     sock in map.
- *     @map: pointer to sockmap
- *     @key: key to lookup sock in map
- *     @flags: reserved for future use
- *     Return: SK_REDIRECT
- *
- * int bpf_sock_map_update(skops, map, key, flags)
- *     @skops: pointer to bpf_sock_ops
- *     @map: pointer to sockmap to update
- *     @key: key to insert/update sock in map
- *     @flags: same flags as map update elem
- */
-#define __BPF_FUNC_MAPPER(FN)          \
-       FN(unspec),                     \
-       FN(map_lookup_elem),            \
-       FN(map_update_elem),            \
-       FN(map_delete_elem),            \
-       FN(probe_read),                 \
-       FN(ktime_get_ns),               \
-       FN(trace_printk),               \
-       FN(get_prandom_u32),            \
-       FN(get_smp_processor_id),       \
-       FN(skb_store_bytes),            \
-       FN(l3_csum_replace),            \
-       FN(l4_csum_replace),            \
-       FN(tail_call),                  \
-       FN(clone_redirect),             \
-       FN(get_current_pid_tgid),       \
-       FN(get_current_uid_gid),        \
-       FN(get_current_comm),           \
-       FN(get_cgroup_classid),         \
-       FN(skb_vlan_push),              \
-       FN(skb_vlan_pop),               \
-       FN(skb_get_tunnel_key),         \
-       FN(skb_set_tunnel_key),         \
-       FN(perf_event_read),            \
-       FN(redirect),                   \
-       FN(get_route_realm),            \
-       FN(perf_event_output),          \
-       FN(skb_load_bytes),             \
-       FN(get_stackid),                \
-       FN(csum_diff),                  \
-       FN(skb_get_tunnel_opt),         \
-       FN(skb_set_tunnel_opt),         \
-       FN(skb_change_proto),           \
-       FN(skb_change_type),            \
-       FN(skb_under_cgroup),           \
-       FN(get_hash_recalc),            \
-       FN(get_current_task),           \
-       FN(probe_write_user),           \
-       FN(current_task_under_cgroup),  \
-       FN(skb_change_tail),            \
-       FN(skb_pull_data),              \
-       FN(csum_update),                \
-       FN(set_hash_invalid),           \
-       FN(get_numa_node_id),           \
-       FN(skb_change_head),            \
-       FN(xdp_adjust_head),            \
-       FN(probe_read_str),             \
-       FN(get_socket_cookie),          \
-       FN(get_socket_uid),             \
-       FN(set_hash),                   \
-       FN(setsockopt),                 \
-       FN(skb_adjust_room),            \
-       FN(redirect_map),               \
-       FN(sk_redirect_map),            \
-       FN(sock_map_update),            \
-
-/* integer value in 'imm' field of BPF_CALL instruction selects which helper
- * function eBPF program intends to call
- */
-#define __BPF_ENUM_FN(x) BPF_FUNC_ ## x
-enum bpf_func_id {
-       __BPF_FUNC_MAPPER(__BPF_ENUM_FN)
-       __BPF_FUNC_MAX_ID,
-};
-#undef __BPF_ENUM_FN
-
-/* All flags used by eBPF helper functions, placed here. */
-
-/* BPF_FUNC_skb_store_bytes flags. */
-#define BPF_F_RECOMPUTE_CSUM           (1ULL << 0)
-#define BPF_F_INVALIDATE_HASH          (1ULL << 1)
-
-/* BPF_FUNC_l3_csum_replace and BPF_FUNC_l4_csum_replace flags.
- * First 4 bits are for passing the header field size.
- */
-#define BPF_F_HDR_FIELD_MASK           0xfULL
-
-/* BPF_FUNC_l4_csum_replace flags. */
-#define BPF_F_PSEUDO_HDR               (1ULL << 4)
-#define BPF_F_MARK_MANGLED_0           (1ULL << 5)
-#define BPF_F_MARK_ENFORCE             (1ULL << 6)
-
-/* BPF_FUNC_clone_redirect and BPF_FUNC_redirect flags. */
-#define BPF_F_INGRESS                  (1ULL << 0)
-
-/* BPF_FUNC_skb_set_tunnel_key and BPF_FUNC_skb_get_tunnel_key flags. */
-#define BPF_F_TUNINFO_IPV6             (1ULL << 0)
-
-/* BPF_FUNC_get_stackid flags. */
-#define BPF_F_SKIP_FIELD_MASK          0xffULL
-#define BPF_F_USER_STACK               (1ULL << 8)
-#define BPF_F_FAST_STACK_CMP           (1ULL << 9)
-#define BPF_F_REUSE_STACKID            (1ULL << 10)
-
-/* BPF_FUNC_skb_set_tunnel_key flags. */
-#define BPF_F_ZERO_CSUM_TX             (1ULL << 1)
-#define BPF_F_DONT_FRAGMENT            (1ULL << 2)
-
-/* BPF_FUNC_perf_event_output and BPF_FUNC_perf_event_read flags. */
-#define BPF_F_INDEX_MASK               0xffffffffULL
-#define BPF_F_CURRENT_CPU              BPF_F_INDEX_MASK
-/* BPF_FUNC_perf_event_output for sk_buff input context. */
-#define BPF_F_CTXLEN_MASK              (0xfffffULL << 32)
-
-/* Mode for BPF_FUNC_skb_adjust_room helper. */
-enum bpf_adj_room_mode {
-       BPF_ADJ_ROOM_NET,
-};
-
-/* user accessible mirror of in-kernel sk_buff.
- * new fields can only be added to the end of this structure
- */
-struct __sk_buff {
-       __u32 len;
-       __u32 pkt_type;
-       __u32 mark;
-       __u32 queue_mapping;
-       __u32 protocol;
-       __u32 vlan_present;
-       __u32 vlan_tci;
-       __u32 vlan_proto;
-       __u32 priority;
-       __u32 ingress_ifindex;
-       __u32 ifindex;
-       __u32 tc_index;
-       __u32 cb[5];
-       __u32 hash;
-       __u32 tc_classid;
-       __u32 data;
-       __u32 data_end;
-       __u32 napi_id;
-
-       /* accessed by BPF_PROG_TYPE_sk_skb types */
-       __u32 family;
-       __u32 remote_ip4;       /* Stored in network byte order */
-       __u32 local_ip4;        /* Stored in network byte order */
-       __u32 remote_ip6[4];    /* Stored in network byte order */
-       __u32 local_ip6[4];     /* Stored in network byte order */
-       __u32 remote_port;      /* Stored in network byte order */
-       __u32 local_port;       /* stored in host byte order */
-};
-
-struct bpf_tunnel_key {
-       __u32 tunnel_id;
-       union {
-               __u32 remote_ipv4;
-               __u32 remote_ipv6[4];
-       };
-       __u8 tunnel_tos;
-       __u8 tunnel_ttl;
-       __u16 tunnel_ext;
-       __u32 tunnel_label;
-};
-
-/* Generic BPF return codes which all BPF program types may support.
- * The values are binary compatible with their TC_ACT_* counter-part to
- * provide backwards compatibility with existing SCHED_CLS and SCHED_ACT
- * programs.
- *
- * XDP is handled seprately, see XDP_*.
- */
-enum bpf_ret_code {
-       BPF_OK = 0,
-       /* 1 reserved */
-       BPF_DROP = 2,
-       /* 3-6 reserved */
-       BPF_REDIRECT = 7,
-       /* >127 are reserved for prog type specific return codes */
-};
-
-struct bpf_sock {
-       __u32 bound_dev_if;
-       __u32 family;
-       __u32 type;
-       __u32 protocol;
-       __u32 mark;
-       __u32 priority;
-};
-
-#define XDP_PACKET_HEADROOM 256
-
-/* User return codes for XDP prog type.
- * A valid XDP program must return one of these defined values. All other
- * return codes are reserved for future use. Unknown return codes will
- * result in packet drops and a warning via bpf_warn_invalid_xdp_action().
- */
-enum xdp_action {
-       XDP_ABORTED = 0,
-       XDP_DROP,
-       XDP_PASS,
-       XDP_TX,
-       XDP_REDIRECT,
-};
-
-/* user accessible metadata for XDP packet hook
- * new fields must be added to the end of this structure
- */
-struct xdp_md {
-       __u32 data;
-       __u32 data_end;
-};
-
-enum sk_action {
-       SK_ABORTED = 0,
-       SK_DROP,
-       SK_REDIRECT,
-};
-
-#define BPF_TAG_SIZE   8
-
-struct bpf_prog_info {
-       __u32 type;
-       __u32 id;
-       __u8  tag[BPF_TAG_SIZE];
-       __u32 jited_prog_len;
-       __u32 xlated_prog_len;
-       __aligned_u64 jited_prog_insns;
-       __aligned_u64 xlated_prog_insns;
-} __attribute__((aligned(8)));
-
-struct bpf_map_info {
-       __u32 type;
-       __u32 id;
-       __u32 key_size;
-       __u32 value_size;
-       __u32 max_entries;
-       __u32 map_flags;
-} __attribute__((aligned(8)));
-
-/* User bpf_sock_ops struct to access socket values and specify request ops
- * and their replies.
- * Some of this fields are in network (bigendian) byte order and may need
- * to be converted before use (bpf_ntohl() defined in samples/bpf/bpf_endian.h).
- * New fields can only be added at the end of this structure
- */
-struct bpf_sock_ops {
-       __u32 op;
-       union {
-               __u32 reply;
-               __u32 replylong[4];
-       };
-       __u32 family;
-       __u32 remote_ip4;       /* Stored in network byte order */
-       __u32 local_ip4;        /* Stored in network byte order */
-       __u32 remote_ip6[4];    /* Stored in network byte order */
-       __u32 local_ip6[4];     /* Stored in network byte order */
-       __u32 remote_port;      /* Stored in network byte order */
-       __u32 local_port;       /* stored in host byte order */
-};
-
-/* List of known BPF sock_ops operators.
- * New entries can only be added at the end
- */
-enum {
-       BPF_SOCK_OPS_VOID,
-       BPF_SOCK_OPS_TIMEOUT_INIT,      /* Should return SYN-RTO value to use or
-                                        * -1 if default value should be used
-                                        */
-       BPF_SOCK_OPS_RWND_INIT,         /* Should return initial advertized
-                                        * window (in packets) or -1 if default
-                                        * value should be used
-                                        */
-       BPF_SOCK_OPS_TCP_CONNECT_CB,    /* Calls BPF program right before an
-                                        * active connection is initialized
-                                        */
-       BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB,     /* Calls BPF program when an
-                                                * active connection is
-                                                * established
-                                                */
-       BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB,    /* Calls BPF program when a
-                                                * passive connection is
-                                                * established
-                                                */
-       BPF_SOCK_OPS_NEEDS_ECN,         /* If connection's congestion control
-                                        * needs ECN
-                                        */
-};
-
-#define TCP_BPF_IW             1001    /* Set TCP initial congestion window */
-#define TCP_BPF_SNDCWND_CLAMP  1002    /* Set sndcwnd_clamp */
-
-#endif /* __LINUX_BPF_H__ */
diff --git a/include/linux/bpf_common.h b/include/linux/bpf_common.h
deleted file mode 100644 (file)
index afe7433..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-#ifndef __LINUX_BPF_COMMON_H__
-#define __LINUX_BPF_COMMON_H__
-
-/* Instruction classes */
-#define BPF_CLASS(code) ((code) & 0x07)
-#define                BPF_LD          0x00
-#define                BPF_LDX         0x01
-#define                BPF_ST          0x02
-#define                BPF_STX         0x03
-#define                BPF_ALU         0x04
-#define                BPF_JMP         0x05
-#define                BPF_RET         0x06
-#define                BPF_MISC        0x07
-
-/* ld/ldx fields */
-#define BPF_SIZE(code)  ((code) & 0x18)
-#define                BPF_W           0x00
-#define                BPF_H           0x08
-#define                BPF_B           0x10
-#define BPF_MODE(code)  ((code) & 0xe0)
-#define                BPF_IMM         0x00
-#define                BPF_ABS         0x20
-#define                BPF_IND         0x40
-#define                BPF_MEM         0x60
-#define                BPF_LEN         0x80
-#define                BPF_MSH         0xa0
-
-/* alu/jmp fields */
-#define BPF_OP(code)    ((code) & 0xf0)
-#define                BPF_ADD         0x00
-#define                BPF_SUB         0x10
-#define                BPF_MUL         0x20
-#define                BPF_DIV         0x30
-#define                BPF_OR          0x40
-#define                BPF_AND         0x50
-#define                BPF_LSH         0x60
-#define                BPF_RSH         0x70
-#define                BPF_NEG         0x80
-#define                BPF_MOD         0x90
-#define                BPF_XOR         0xa0
-
-#define                BPF_JA          0x00
-#define                BPF_JEQ         0x10
-#define                BPF_JGT         0x20
-#define                BPF_JGE         0x30
-#define                BPF_JSET        0x40
-#define BPF_SRC(code)   ((code) & 0x08)
-#define                BPF_K           0x00
-#define                BPF_X           0x08
-
-#ifndef BPF_MAXINSNS
-#define BPF_MAXINSNS 4096
-#endif
-
-#endif /* __LINUX_BPF_COMMON_H__ */
diff --git a/include/linux/can.h b/include/linux/can.h
deleted file mode 100644 (file)
index f7a810d..0000000
+++ /dev/null
@@ -1,201 +0,0 @@
-/*
- * linux/can.h
- *
- * Definitions for CAN network layer (socket addr / CAN frame / CAN filter)
- *
- * Authors: Oliver Hartkopp <oliver.hartkopp@volkswagen.de>
- *          Urs Thuermann   <urs.thuermann@volkswagen.de>
- * Copyright (c) 2002-2007 Volkswagen Group Electronic Research
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Volkswagen nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * Alternatively, provided that this notice is retained in full, this
- * software may be distributed under the terms of the GNU General
- * Public License ("GPL") version 2, in which case the provisions of the
- * GPL apply INSTEAD OF those given above.
- *
- * The provided data structures and external interfaces from this code
- * are not restricted to be used by modules with a GPL compatible license.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- */
-
-#ifndef _CAN_H
-#define _CAN_H
-
-#include <linux/types.h>
-#include <linux/socket.h>
-
-/* controller area network (CAN) kernel definitions */
-
-/* special address description flags for the CAN_ID */
-#define CAN_EFF_FLAG 0x80000000U /* EFF/SFF is set in the MSB */
-#define CAN_RTR_FLAG 0x40000000U /* remote transmission request */
-#define CAN_ERR_FLAG 0x20000000U /* error message frame */
-
-/* valid bits in CAN ID for frame formats */
-#define CAN_SFF_MASK 0x000007FFU /* standard frame format (SFF) */
-#define CAN_EFF_MASK 0x1FFFFFFFU /* extended frame format (EFF) */
-#define CAN_ERR_MASK 0x1FFFFFFFU /* omit EFF, RTR, ERR flags */
-
-/*
- * Controller Area Network Identifier structure
- *
- * bit 0-28    : CAN identifier (11/29 bit)
- * bit 29      : error message frame flag (0 = data frame, 1 = error message)
- * bit 30      : remote transmission request flag (1 = rtr frame)
- * bit 31      : frame format flag (0 = standard 11 bit, 1 = extended 29 bit)
- */
-typedef __u32 canid_t;
-
-#define CAN_SFF_ID_BITS                11
-#define CAN_EFF_ID_BITS                29
-
-/*
- * Controller Area Network Error Message Frame Mask structure
- *
- * bit 0-28    : error class mask (see include/linux/can/error.h)
- * bit 29-31   : set to zero
- */
-typedef __u32 can_err_mask_t;
-
-/* CAN payload length and DLC definitions according to ISO 11898-1 */
-#define CAN_MAX_DLC 8
-#define CAN_MAX_DLEN 8
-
-/* CAN FD payload length and DLC definitions according to ISO 11898-7 */
-#define CANFD_MAX_DLC 15
-#define CANFD_MAX_DLEN 64
-
-/**
- * struct can_frame - basic CAN frame structure
- * @can_id:  CAN ID of the frame and CAN_*_FLAG flags, see canid_t definition
- * @can_dlc: frame payload length in byte (0 .. 8) aka data length code
- *           N.B. the DLC field from ISO 11898-1 Chapter 8.4.2.3 has a 1:1
- *           mapping of the 'data length code' to the real payload length
- * @__pad:   padding
- * @__res0:  reserved / padding
- * @__res1:  reserved / padding
- * @data:    CAN frame payload (up to 8 byte)
- */
-struct can_frame {
-       canid_t can_id;  /* 32 bit CAN_ID + EFF/RTR/ERR flags */
-       __u8    can_dlc; /* frame payload length in byte (0 .. CAN_MAX_DLEN) */
-       __u8    __pad;   /* padding */
-       __u8    __res0;  /* reserved / padding */
-       __u8    __res1;  /* reserved / padding */
-       __u8    data[CAN_MAX_DLEN] __attribute__((aligned(8)));
-};
-
-/*
- * defined bits for canfd_frame.flags
- *
- * The use of struct canfd_frame implies the Extended Data Length (EDL) bit to
- * be set in the CAN frame bitstream on the wire. The EDL bit switch turns
- * the CAN controllers bitstream processor into the CAN FD mode which creates
- * two new options within the CAN FD frame specification:
- *
- * Bit Rate Switch - to indicate a second bitrate is/was used for the payload
- * Error State Indicator - represents the error state of the transmitting node
- *
- * As the CANFD_ESI bit is internally generated by the transmitting CAN
- * controller only the CANFD_BRS bit is relevant for real CAN controllers when
- * building a CAN FD frame for transmission. Setting the CANFD_ESI bit can make
- * sense for virtual CAN interfaces to test applications with echoed frames.
- */
-#define CANFD_BRS 0x01 /* bit rate switch (second bitrate for payload data) */
-#define CANFD_ESI 0x02 /* error state indicator of the transmitting node */
-
-/**
- * struct canfd_frame - CAN flexible data rate frame structure
- * @can_id: CAN ID of the frame and CAN_*_FLAG flags, see canid_t definition
- * @len:    frame payload length in byte (0 .. CANFD_MAX_DLEN)
- * @flags:  additional flags for CAN FD
- * @__res0: reserved / padding
- * @__res1: reserved / padding
- * @data:   CAN FD frame payload (up to CANFD_MAX_DLEN byte)
- */
-struct canfd_frame {
-       canid_t can_id;  /* 32 bit CAN_ID + EFF/RTR/ERR flags */
-       __u8    len;     /* frame payload length in byte */
-       __u8    flags;   /* additional flags for CAN FD */
-       __u8    __res0;  /* reserved / padding */
-       __u8    __res1;  /* reserved / padding */
-       __u8    data[CANFD_MAX_DLEN] __attribute__((aligned(8)));
-};
-
-#define CAN_MTU                (sizeof(struct can_frame))
-#define CANFD_MTU      (sizeof(struct canfd_frame))
-
-/* particular protocols of the protocol family PF_CAN */
-#define CAN_RAW                1 /* RAW sockets */
-#define CAN_BCM                2 /* Broadcast Manager */
-#define CAN_TP16       3 /* VAG Transport Protocol v1.6 */
-#define CAN_TP20       4 /* VAG Transport Protocol v2.0 */
-#define CAN_MCNET      5 /* Bosch MCNet */
-#define CAN_ISOTP      6 /* ISO 15765-2 Transport Protocol */
-#define CAN_NPROTO     7
-
-#define SOL_CAN_BASE 100
-
-/**
- * struct sockaddr_can - the sockaddr structure for CAN sockets
- * @can_family:  address family number AF_CAN.
- * @can_ifindex: CAN network interface index.
- * @can_addr:    protocol specific address information
- */
-struct sockaddr_can {
-       __kernel_sa_family_t can_family;
-       int         can_ifindex;
-       union {
-               /* transport protocol class address information (e.g. ISOTP) */
-               struct { canid_t rx_id, tx_id; } tp;
-
-               /* reserved for future CAN protocols address information */
-       } can_addr;
-};
-
-/**
- * struct can_filter - CAN ID based filter in can_register().
- * @can_id:   relevant bits of CAN ID which are not masked out.
- * @can_mask: CAN mask (see description)
- *
- * Description:
- * A filter matches, when
- *
- *          <received_can_id> & mask == can_id & mask
- *
- * The filter can be inverted (CAN_INV_FILTER bit set in can_id) or it can
- * filter for error message frames (CAN_ERR_FLAG bit set in mask).
- */
-struct can_filter {
-       canid_t can_id;
-       canid_t can_mask;
-};
-
-#define CAN_INV_FILTER 0x20000000U /* to be set in can_filter.can_id */
-#define CAN_RAW_FILTER_MAX 512 /* maximum number of can_filter set via setsockopt() */
-
-#endif /* !_UAPI_CAN_H */
diff --git a/include/linux/can/netlink.h b/include/linux/can/netlink.h
deleted file mode 100644 (file)
index b9214bd..0000000
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- * linux/can/netlink.h
- *
- * Definitions for the CAN netlink interface
- *
- * Copyright (c) 2009 Wolfgang Grandegger <wg@grandegger.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the version 2 of the GNU General Public License
- * as published by the Free Software Foundation
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- */
-
-#ifndef _CAN_NETLINK_H
-#define _CAN_NETLINK_H
-
-#include <linux/types.h>
-
-/*
- * CAN bit-timing parameters
- *
- * For further information, please read chapter "8 BIT TIMING
- * REQUIREMENTS" of the "Bosch CAN Specification version 2.0"
- * at http://www.semiconductors.bosch.de/pdf/can2spec.pdf.
- */
-struct can_bittiming {
-       __u32 bitrate;          /* Bit-rate in bits/second */
-       __u32 sample_point;     /* Sample point in one-tenth of a percent */
-       __u32 tq;               /* Time quanta (TQ) in nanoseconds */
-       __u32 prop_seg;         /* Propagation segment in TQs */
-       __u32 phase_seg1;       /* Phase buffer segment 1 in TQs */
-       __u32 phase_seg2;       /* Phase buffer segment 2 in TQs */
-       __u32 sjw;              /* Synchronisation jump width in TQs */
-       __u32 brp;              /* Bit-rate prescaler */
-};
-
-/*
- * CAN harware-dependent bit-timing constant
- *
- * Used for calculating and checking bit-timing parameters
- */
-struct can_bittiming_const {
-       char name[16];          /* Name of the CAN controller hardware */
-       __u32 tseg1_min;        /* Time segement 1 = prop_seg + phase_seg1 */
-       __u32 tseg1_max;
-       __u32 tseg2_min;        /* Time segement 2 = phase_seg2 */
-       __u32 tseg2_max;
-       __u32 sjw_max;          /* Synchronisation jump width */
-       __u32 brp_min;          /* Bit-rate prescaler */
-       __u32 brp_max;
-       __u32 brp_inc;
-};
-
-/*
- * CAN clock parameters
- */
-struct can_clock {
-       __u32 freq;             /* CAN system clock frequency in Hz */
-};
-
-/*
- * CAN operational and error states
- */
-enum can_state {
-       CAN_STATE_ERROR_ACTIVE = 0,     /* RX/TX error count < 96 */
-       CAN_STATE_ERROR_WARNING,        /* RX/TX error count < 128 */
-       CAN_STATE_ERROR_PASSIVE,        /* RX/TX error count < 256 */
-       CAN_STATE_BUS_OFF,              /* RX/TX error count >= 256 */
-       CAN_STATE_STOPPED,              /* Device is stopped */
-       CAN_STATE_SLEEPING,             /* Device is sleeping */
-       CAN_STATE_MAX
-};
-
-/*
- * CAN bus error counters
- */
-struct can_berr_counter {
-       __u16 txerr;
-       __u16 rxerr;
-};
-
-/*
- * CAN controller mode
- */
-struct can_ctrlmode {
-       __u32 mask;
-       __u32 flags;
-};
-
-#define CAN_CTRLMODE_LOOPBACK          0x01    /* Loopback mode */
-#define CAN_CTRLMODE_LISTENONLY                0x02    /* Listen-only mode */
-#define CAN_CTRLMODE_3_SAMPLES         0x04    /* Triple sampling mode */
-#define CAN_CTRLMODE_ONE_SHOT          0x08    /* One-Shot mode */
-#define CAN_CTRLMODE_BERR_REPORTING    0x10    /* Bus-error reporting */
-#define CAN_CTRLMODE_FD                        0x20    /* CAN FD mode */
-#define CAN_CTRLMODE_PRESUME_ACK       0x40    /* Ignore missing CAN ACKs */
-#define CAN_CTRLMODE_FD_NON_ISO                0x80    /* CAN FD in non-ISO mode */
-
-/*
- * CAN device statistics
- */
-struct can_device_stats {
-       __u32 bus_error;        /* Bus errors */
-       __u32 error_warning;    /* Changes to error warning state */
-       __u32 error_passive;    /* Changes to error passive state */
-       __u32 bus_off;          /* Changes to bus off state */
-       __u32 arbitration_lost; /* Arbitration lost errors */
-       __u32 restarts;         /* CAN controller re-starts */
-};
-
-/*
- * CAN netlink interface
- */
-enum {
-       IFLA_CAN_UNSPEC,
-       IFLA_CAN_BITTIMING,
-       IFLA_CAN_BITTIMING_CONST,
-       IFLA_CAN_CLOCK,
-       IFLA_CAN_STATE,
-       IFLA_CAN_CTRLMODE,
-       IFLA_CAN_RESTART_MS,
-       IFLA_CAN_RESTART,
-       IFLA_CAN_BERR_COUNTER,
-       IFLA_CAN_DATA_BITTIMING,
-       IFLA_CAN_DATA_BITTIMING_CONST,
-       IFLA_CAN_TERMINATION,
-       IFLA_CAN_TERMINATION_CONST,
-       IFLA_CAN_BITRATE_CONST,
-       IFLA_CAN_DATA_BITRATE_CONST,
-       __IFLA_CAN_MAX
-};
-
-#define IFLA_CAN_MAX   (__IFLA_CAN_MAX - 1)
-
-/* u16 termination range: 1..65535 Ohms */
-#define CAN_TERMINATION_DISABLED 0
-
-#endif /* !_UAPI_CAN_NETLINK_H */
diff --git a/include/linux/can/vxcan.h b/include/linux/can/vxcan.h
deleted file mode 100644 (file)
index 5b29e8a..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-#ifndef _CAN_VXCAN_H
-#define _CAN_VXCAN_H
-
-enum {
-       VXCAN_INFO_UNSPEC,
-       VXCAN_INFO_PEER,
-
-       __VXCAN_INFO_MAX
-#define VXCAN_INFO_MAX (__VXCAN_INFO_MAX - 1)
-};
-
-#endif
diff --git a/include/linux/devlink.h b/include/linux/devlink.h
deleted file mode 100644 (file)
index a62695e..0000000
+++ /dev/null
@@ -1,247 +0,0 @@
-/*
- * include/uapi/linux/devlink.h - Network physical device Netlink interface
- * Copyright (c) 2016 Mellanox Technologies. All rights reserved.
- * Copyright (c) 2016 Jiri Pirko <jiri@mellanox.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- */
-
-#ifndef _LINUX_DEVLINK_H_
-#define _LINUX_DEVLINK_H_
-
-#define DEVLINK_GENL_NAME "devlink"
-#define DEVLINK_GENL_VERSION 0x1
-#define DEVLINK_GENL_MCGRP_CONFIG_NAME "config"
-
-enum devlink_command {
-       /* don't change the order or add anything between, this is ABI! */
-       DEVLINK_CMD_UNSPEC,
-
-       DEVLINK_CMD_GET,                /* can dump */
-       DEVLINK_CMD_SET,
-       DEVLINK_CMD_NEW,
-       DEVLINK_CMD_DEL,
-
-       DEVLINK_CMD_PORT_GET,           /* can dump */
-       DEVLINK_CMD_PORT_SET,
-       DEVLINK_CMD_PORT_NEW,
-       DEVLINK_CMD_PORT_DEL,
-
-       DEVLINK_CMD_PORT_SPLIT,
-       DEVLINK_CMD_PORT_UNSPLIT,
-
-       DEVLINK_CMD_SB_GET,             /* can dump */
-       DEVLINK_CMD_SB_SET,
-       DEVLINK_CMD_SB_NEW,
-       DEVLINK_CMD_SB_DEL,
-
-       DEVLINK_CMD_SB_POOL_GET,        /* can dump */
-       DEVLINK_CMD_SB_POOL_SET,
-       DEVLINK_CMD_SB_POOL_NEW,
-       DEVLINK_CMD_SB_POOL_DEL,
-
-       DEVLINK_CMD_SB_PORT_POOL_GET,   /* can dump */
-       DEVLINK_CMD_SB_PORT_POOL_SET,
-       DEVLINK_CMD_SB_PORT_POOL_NEW,
-       DEVLINK_CMD_SB_PORT_POOL_DEL,
-
-       DEVLINK_CMD_SB_TC_POOL_BIND_GET,        /* can dump */
-       DEVLINK_CMD_SB_TC_POOL_BIND_SET,
-       DEVLINK_CMD_SB_TC_POOL_BIND_NEW,
-       DEVLINK_CMD_SB_TC_POOL_BIND_DEL,
-
-       /* Shared buffer occupancy monitoring commands */
-       DEVLINK_CMD_SB_OCC_SNAPSHOT,
-       DEVLINK_CMD_SB_OCC_MAX_CLEAR,
-
-       DEVLINK_CMD_ESWITCH_GET,
-#define DEVLINK_CMD_ESWITCH_MODE_GET /* obsolete, never use this! */ \
-       DEVLINK_CMD_ESWITCH_GET
-
-       DEVLINK_CMD_ESWITCH_SET,
-#define DEVLINK_CMD_ESWITCH_MODE_SET /* obsolete, never use this! */ \
-       DEVLINK_CMD_ESWITCH_SET
-
-       DEVLINK_CMD_DPIPE_TABLE_GET,
-       DEVLINK_CMD_DPIPE_ENTRIES_GET,
-       DEVLINK_CMD_DPIPE_HEADERS_GET,
-       DEVLINK_CMD_DPIPE_TABLE_COUNTERS_SET,
-
-       /* add new commands above here */
-       __DEVLINK_CMD_MAX,
-       DEVLINK_CMD_MAX = __DEVLINK_CMD_MAX - 1
-};
-
-enum devlink_port_type {
-       DEVLINK_PORT_TYPE_NOTSET,
-       DEVLINK_PORT_TYPE_AUTO,
-       DEVLINK_PORT_TYPE_ETH,
-       DEVLINK_PORT_TYPE_IB,
-};
-
-enum devlink_sb_pool_type {
-       DEVLINK_SB_POOL_TYPE_INGRESS,
-       DEVLINK_SB_POOL_TYPE_EGRESS,
-};
-
-/* static threshold - limiting the maximum number of bytes.
- * dynamic threshold - limiting the maximum number of bytes
- *   based on the currently available free space in the shared buffer pool.
- *   In this mode, the maximum quota is calculated based
- *   on the following formula:
- *     max_quota = alpha / (1 + alpha) * Free_Buffer
- *   While Free_Buffer is the amount of none-occupied buffer associated to
- *   the relevant pool.
- *   The value range which can be passed is 0-20 and serves
- *   for computation of alpha by following formula:
- *     alpha = 2 ^ (passed_value - 10)
- */
-
-enum devlink_sb_threshold_type {
-       DEVLINK_SB_THRESHOLD_TYPE_STATIC,
-       DEVLINK_SB_THRESHOLD_TYPE_DYNAMIC,
-};
-
-#define DEVLINK_SB_THRESHOLD_TO_ALPHA_MAX 20
-
-enum devlink_eswitch_mode {
-       DEVLINK_ESWITCH_MODE_LEGACY,
-       DEVLINK_ESWITCH_MODE_SWITCHDEV,
-};
-
-enum devlink_eswitch_inline_mode {
-       DEVLINK_ESWITCH_INLINE_MODE_NONE,
-       DEVLINK_ESWITCH_INLINE_MODE_LINK,
-       DEVLINK_ESWITCH_INLINE_MODE_NETWORK,
-       DEVLINK_ESWITCH_INLINE_MODE_TRANSPORT,
-};
-
-enum devlink_eswitch_encap_mode {
-       DEVLINK_ESWITCH_ENCAP_MODE_NONE,
-       DEVLINK_ESWITCH_ENCAP_MODE_BASIC,
-};
-
-enum devlink_attr {
-       /* don't change the order or add anything between, this is ABI! */
-       DEVLINK_ATTR_UNSPEC,
-
-       /* bus name + dev name together are a handle for devlink entity */
-       DEVLINK_ATTR_BUS_NAME,                  /* string */
-       DEVLINK_ATTR_DEV_NAME,                  /* string */
-
-       DEVLINK_ATTR_PORT_INDEX,                /* u32 */
-       DEVLINK_ATTR_PORT_TYPE,                 /* u16 */
-       DEVLINK_ATTR_PORT_DESIRED_TYPE,         /* u16 */
-       DEVLINK_ATTR_PORT_NETDEV_IFINDEX,       /* u32 */
-       DEVLINK_ATTR_PORT_NETDEV_NAME,          /* string */
-       DEVLINK_ATTR_PORT_IBDEV_NAME,           /* string */
-       DEVLINK_ATTR_PORT_SPLIT_COUNT,          /* u32 */
-       DEVLINK_ATTR_PORT_SPLIT_GROUP,          /* u32 */
-       DEVLINK_ATTR_SB_INDEX,                  /* u32 */
-       DEVLINK_ATTR_SB_SIZE,                   /* u32 */
-       DEVLINK_ATTR_SB_INGRESS_POOL_COUNT,     /* u16 */
-       DEVLINK_ATTR_SB_EGRESS_POOL_COUNT,      /* u16 */
-       DEVLINK_ATTR_SB_INGRESS_TC_COUNT,       /* u16 */
-       DEVLINK_ATTR_SB_EGRESS_TC_COUNT,        /* u16 */
-       DEVLINK_ATTR_SB_POOL_INDEX,             /* u16 */
-       DEVLINK_ATTR_SB_POOL_TYPE,              /* u8 */
-       DEVLINK_ATTR_SB_POOL_SIZE,              /* u32 */
-       DEVLINK_ATTR_SB_POOL_THRESHOLD_TYPE,    /* u8 */
-       DEVLINK_ATTR_SB_THRESHOLD,              /* u32 */
-       DEVLINK_ATTR_SB_TC_INDEX,               /* u16 */
-       DEVLINK_ATTR_SB_OCC_CUR,                /* u32 */
-       DEVLINK_ATTR_SB_OCC_MAX,                /* u32 */
-       DEVLINK_ATTR_ESWITCH_MODE,              /* u16 */
-       DEVLINK_ATTR_ESWITCH_INLINE_MODE,       /* u8 */
-
-       DEVLINK_ATTR_DPIPE_TABLES,              /* nested */
-       DEVLINK_ATTR_DPIPE_TABLE,               /* nested */
-       DEVLINK_ATTR_DPIPE_TABLE_NAME,          /* string */
-       DEVLINK_ATTR_DPIPE_TABLE_SIZE,          /* u64 */
-       DEVLINK_ATTR_DPIPE_TABLE_MATCHES,       /* nested */
-       DEVLINK_ATTR_DPIPE_TABLE_ACTIONS,       /* nested */
-       DEVLINK_ATTR_DPIPE_TABLE_COUNTERS_ENABLED,      /* u8 */
-
-       DEVLINK_ATTR_DPIPE_ENTRIES,             /* nested */
-       DEVLINK_ATTR_DPIPE_ENTRY,               /* nested */
-       DEVLINK_ATTR_DPIPE_ENTRY_INDEX,         /* u64 */
-       DEVLINK_ATTR_DPIPE_ENTRY_MATCH_VALUES,  /* nested */
-       DEVLINK_ATTR_DPIPE_ENTRY_ACTION_VALUES, /* nested */
-       DEVLINK_ATTR_DPIPE_ENTRY_COUNTER,       /* u64 */
-
-       DEVLINK_ATTR_DPIPE_MATCH,               /* nested */
-       DEVLINK_ATTR_DPIPE_MATCH_VALUE,         /* nested */
-       DEVLINK_ATTR_DPIPE_MATCH_TYPE,          /* u32 */
-
-       DEVLINK_ATTR_DPIPE_ACTION,              /* nested */
-       DEVLINK_ATTR_DPIPE_ACTION_VALUE,        /* nested */
-       DEVLINK_ATTR_DPIPE_ACTION_TYPE,         /* u32 */
-
-       DEVLINK_ATTR_DPIPE_VALUE,
-       DEVLINK_ATTR_DPIPE_VALUE_MASK,
-       DEVLINK_ATTR_DPIPE_VALUE_MAPPING,       /* u32 */
-
-       DEVLINK_ATTR_DPIPE_HEADERS,             /* nested */
-       DEVLINK_ATTR_DPIPE_HEADER,              /* nested */
-       DEVLINK_ATTR_DPIPE_HEADER_NAME,         /* string */
-       DEVLINK_ATTR_DPIPE_HEADER_ID,           /* u32 */
-       DEVLINK_ATTR_DPIPE_HEADER_FIELDS,       /* nested */
-       DEVLINK_ATTR_DPIPE_HEADER_GLOBAL,       /* u8 */
-       DEVLINK_ATTR_DPIPE_HEADER_INDEX,        /* u32 */
-
-       DEVLINK_ATTR_DPIPE_FIELD,               /* nested */
-       DEVLINK_ATTR_DPIPE_FIELD_NAME,          /* string */
-       DEVLINK_ATTR_DPIPE_FIELD_ID,            /* u32 */
-       DEVLINK_ATTR_DPIPE_FIELD_BITWIDTH,      /* u32 */
-       DEVLINK_ATTR_DPIPE_FIELD_MAPPING_TYPE,  /* u32 */
-
-       DEVLINK_ATTR_PAD,
-
-       DEVLINK_ATTR_ESWITCH_ENCAP_MODE,        /* u8 */
-
-       /* add new attributes above here, update the policy in devlink.c */
-
-       __DEVLINK_ATTR_MAX,
-       DEVLINK_ATTR_MAX = __DEVLINK_ATTR_MAX - 1
-};
-
-/* Mapping between internal resource described by the field and system
- * structure
- */
-enum devlink_dpipe_field_mapping_type {
-       DEVLINK_DPIPE_FIELD_MAPPING_TYPE_NONE,
-       DEVLINK_DPIPE_FIELD_MAPPING_TYPE_IFINDEX,
-};
-
-/* Match type - specify the type of the match */
-enum devlink_dpipe_match_type {
-       DEVLINK_DPIPE_MATCH_TYPE_FIELD_EXACT,
-};
-
-/* Action type - specify the action type */
-enum devlink_dpipe_action_type {
-       DEVLINK_DPIPE_ACTION_TYPE_FIELD_MODIFY,
-};
-
-enum devlink_dpipe_field_ethernet_id {
-       DEVLINK_DPIPE_FIELD_ETHERNET_DST_MAC,
-};
-
-enum devlink_dpipe_field_ipv4_id {
-       DEVLINK_DPIPE_FIELD_IPV4_DST_IP,
-};
-
-enum devlink_dpipe_field_ipv6_id {
-       DEVLINK_DPIPE_FIELD_IPV6_DST_IP,
-};
-
-enum devlink_dpipe_header_id {
-       DEVLINK_DPIPE_HEADER_ETHERNET,
-       DEVLINK_DPIPE_HEADER_IPV4,
-       DEVLINK_DPIPE_HEADER_IPV6,
-};
-
-#endif /* _LINUX_DEVLINK_H_ */
diff --git a/include/linux/elf-em.h b/include/linux/elf-em.h
deleted file mode 100644 (file)
index 9cd1de9..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-#ifndef _LINUX_ELF_EM_H
-#define _LINUX_ELF_EM_H
-
-/* These constants define the various ELF target machines */
-#define EM_NONE                0
-#define EM_M32         1
-#define EM_SPARC       2
-#define EM_386         3
-#define EM_68K         4
-#define EM_88K         5
-#define EM_486         6       /* Perhaps disused */
-#define EM_860         7
-#define EM_MIPS                8       /* MIPS R3000 (officially, big-endian only) */
-                               /* Next two are historical and binaries and
-                                  modules of these types will be rejected by
-                                  Linux.  */
-#define EM_MIPS_RS3_LE 10      /* MIPS R3000 little-endian */
-#define EM_MIPS_RS4_BE 10      /* MIPS R4000 big-endian */
-
-#define EM_PARISC      15      /* HPPA */
-#define EM_SPARC32PLUS 18      /* Sun's "v8plus" */
-#define EM_PPC         20      /* PowerPC */
-#define EM_PPC64       21       /* PowerPC64 */
-#define EM_SPU         23      /* Cell BE SPU */
-#define EM_ARM         40      /* ARM 32 bit */
-#define EM_SH          42      /* SuperH */
-#define EM_SPARCV9     43      /* SPARC v9 64-bit */
-#define EM_H8_300      46      /* Renesas H8/300 */
-#define EM_IA_64       50      /* HP/Intel IA-64 */
-#define EM_X86_64      62      /* AMD x86-64 */
-#define EM_S390                22      /* IBM S/390 */
-#define EM_CRIS                76      /* Axis Communications 32-bit embedded processor */
-#define EM_M32R                88      /* Renesas M32R */
-#define EM_MN10300     89      /* Panasonic/MEI MN10300, AM33 */
-#define EM_OPENRISC     92     /* OpenRISC 32-bit embedded processor */
-#define EM_BLACKFIN     106     /* ADI Blackfin Processor */
-#define EM_ALTERA_NIOS2        113     /* Altera Nios II soft-core processor */
-#define EM_TI_C6000    140     /* TI C6X DSPs */
-#define EM_AARCH64     183     /* ARM 64 bit */
-#define EM_TILEPRO     188     /* Tilera TILEPro */
-#define EM_MICROBLAZE  189     /* Xilinx MicroBlaze */
-#define EM_TILEGX      191     /* Tilera TILE-Gx */
-#define EM_BPF         247     /* Linux BPF - in-kernel virtual machine */
-#define EM_FRV         0x5441  /* Fujitsu FR-V */
-
-/*
- * This is an interim value that we will use until the committee comes
- * up with a final number.
- */
-#define EM_ALPHA       0x9026
-
-/* Bogus old m32r magic number, used by old tools. */
-#define EM_CYGNUS_M32R 0x9041
-/* This is the old interim value for S/390 architecture */
-#define EM_S390_OLD    0xA390
-/* Also Panasonic/MEI MN10300, AM33 */
-#define EM_CYGNUS_MN10300 0xbeef
-
-
-#endif /* _LINUX_ELF_EM_H */
diff --git a/include/linux/fib_rules.h b/include/linux/fib_rules.h
deleted file mode 100644 (file)
index bbf02a6..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-#ifndef __LINUX_FIB_RULES_H
-#define __LINUX_FIB_RULES_H
-
-#include <linux/types.h>
-#include <linux/rtnetlink.h>
-
-/* rule is permanent, and cannot be deleted */
-#define FIB_RULE_PERMANENT     0x00000001
-#define FIB_RULE_INVERT                0x00000002
-#define FIB_RULE_UNRESOLVED    0x00000004
-#define FIB_RULE_IIF_DETACHED  0x00000008
-#define FIB_RULE_DEV_DETACHED  FIB_RULE_IIF_DETACHED
-#define FIB_RULE_OIF_DETACHED  0x00000010
-
-/* try to find source address in routing lookups */
-#define FIB_RULE_FIND_SADDR    0x00010000
-
-struct fib_rule_hdr {
-       __u8            family;
-       __u8            dst_len;
-       __u8            src_len;
-       __u8            tos;
-
-       __u8            table;
-       __u8            res1;   /* reserved */
-       __u8            res2;   /* reserved */
-       __u8            action;
-
-       __u32           flags;
-};
-
-struct fib_rule_uid_range {
-       __u32           start;
-       __u32           end;
-};
-
-enum {
-       FRA_UNSPEC,
-       FRA_DST,        /* destination address */
-       FRA_SRC,        /* source address */
-       FRA_IIFNAME,    /* interface name */
-#define FRA_IFNAME     FRA_IIFNAME
-       FRA_GOTO,       /* target to jump to (FR_ACT_GOTO) */
-       FRA_UNUSED2,
-       FRA_PRIORITY,   /* priority/preference */
-       FRA_UNUSED3,
-       FRA_UNUSED4,
-       FRA_UNUSED5,
-       FRA_FWMARK,     /* mark */
-       FRA_FLOW,       /* flow/class id */
-       FRA_TUN_ID,
-       FRA_SUPPRESS_IFGROUP,
-       FRA_SUPPRESS_PREFIXLEN,
-       FRA_TABLE,      /* Extended table id */
-       FRA_FWMASK,     /* mask for netfilter mark */
-       FRA_OIFNAME,
-       FRA_PAD,
-       FRA_L3MDEV,     /* iif or oif is l3mdev goto its table */
-       FRA_UID_RANGE,  /* UID range */
-       __FRA_MAX
-};
-
-#define FRA_MAX (__FRA_MAX - 1)
-
-enum {
-       FR_ACT_UNSPEC,
-       FR_ACT_TO_TBL,          /* Pass to fixed table */
-       FR_ACT_GOTO,            /* Jump to another rule */
-       FR_ACT_NOP,             /* No operation */
-       FR_ACT_RES3,
-       FR_ACT_RES4,
-       FR_ACT_BLACKHOLE,       /* Drop without notification */
-       FR_ACT_UNREACHABLE,     /* Drop with ENETUNREACH */
-       FR_ACT_PROHIBIT,        /* Drop with EACCES */
-       __FR_ACT_MAX,
-};
-
-#define FR_ACT_MAX (__FR_ACT_MAX - 1)
-
-#endif
diff --git a/include/linux/filter.h b/include/linux/filter.h
deleted file mode 100644 (file)
index e4f2f74..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Linux Socket Filter Data Structures
- */
-
-#ifndef __LINUX_FILTER_H__
-#define __LINUX_FILTER_H__
-
-
-#include <linux/types.h>
-#include <linux/bpf_common.h>
-
-/*
- * Current version of the filter code architecture.
- */
-#define BPF_MAJOR_VERSION 1
-#define BPF_MINOR_VERSION 1
-
-/*
- *     Try and keep these values and structures similar to BSD, especially
- *     the BPF code definitions which need to match so you can share filters
- */
-struct sock_filter {   /* Filter block */
-       __u16   code;   /* Actual filter code */
-       __u8    jt;     /* Jump true */
-       __u8    jf;     /* Jump false */
-       __u32   k;      /* Generic multiuse field */
-};
-
-struct sock_fprog {    /* Required for SO_ATTACH_FILTER. */
-       unsigned short          len;    /* Number of filter blocks */
-       struct sock_filter *filter;
-};
-
-/* ret - BPF_K and BPF_X also apply */
-#define BPF_RVAL(code)  ((code) & 0x18)
-#define         BPF_A           0x10
-
-/* misc */
-#define BPF_MISCOP(code) ((code) & 0xf8)
-#define         BPF_TAX         0x00
-#define         BPF_TXA         0x80
-
-/*
- * Macros for filter block array initializers.
- */
-#ifndef BPF_STMT
-#define BPF_STMT(code, k) { (unsigned short)(code), 0, 0, k }
-#endif
-#ifndef BPF_JUMP
-#define BPF_JUMP(code, k, jt, jf) { (unsigned short)(code), jt, jf, k }
-#endif
-
-/*
- * Number of scratch memory words for: BPF_ST and BPF_STX
- */
-#define BPF_MEMWORDS 16
-
-/* RATIONALE. Negative offsets are invalid in BPF.
-   We use them to reference ancillary data.
-   Unlike introduction new instructions, it does not break
-   existing compilers/optimizers.
- */
-#define SKF_AD_OFF    (-0x1000)
-#define SKF_AD_PROTOCOL 0
-#define SKF_AD_PKTTYPE         4
-#define SKF_AD_IFINDEX         8
-#define SKF_AD_NLATTR  12
-#define SKF_AD_NLATTR_NEST     16
-#define SKF_AD_MARK    20
-#define SKF_AD_QUEUE   24
-#define SKF_AD_HATYPE  28
-#define SKF_AD_RXHASH  32
-#define SKF_AD_CPU     36
-#define SKF_AD_ALU_XOR_X       40
-#define SKF_AD_VLAN_TAG        44
-#define SKF_AD_VLAN_TAG_PRESENT 48
-#define SKF_AD_PAY_OFFSET      52
-#define SKF_AD_RANDOM  56
-#define SKF_AD_VLAN_TPID       60
-#define SKF_AD_MAX     64
-
-#define SKF_NET_OFF    (-0x100000)
-#define SKF_LL_OFF     (-0x200000)
-
-#define BPF_NET_OFF    SKF_NET_OFF
-#define BPF_LL_OFF     SKF_LL_OFF
-
-#endif /* __LINUX_FILTER_H__ */
diff --git a/include/linux/fou.h b/include/linux/fou.h
deleted file mode 100644 (file)
index 744c323..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-/* fou.h - FOU Interface */
-
-#ifndef _LINUX_FOU_H
-#define _LINUX_FOU_H
-
-/* NETLINK_GENERIC related info
- */
-#define FOU_GENL_NAME          "fou"
-#define FOU_GENL_VERSION       0x1
-
-enum {
-       FOU_ATTR_UNSPEC,
-       FOU_ATTR_PORT,                          /* u16 */
-       FOU_ATTR_AF,                            /* u8 */
-       FOU_ATTR_IPPROTO,                       /* u8 */
-       FOU_ATTR_TYPE,                          /* u8 */
-       FOU_ATTR_REMCSUM_NOPARTIAL,             /* flag */
-
-       __FOU_ATTR_MAX,
-};
-
-#define FOU_ATTR_MAX           (__FOU_ATTR_MAX - 1)
-
-enum {
-       FOU_CMD_UNSPEC,
-       FOU_CMD_ADD,
-       FOU_CMD_DEL,
-       FOU_CMD_GET,
-
-       __FOU_CMD_MAX,
-};
-
-enum {
-       FOU_ENCAP_UNSPEC,
-       FOU_ENCAP_DIRECT,
-       FOU_ENCAP_GUE,
-};
-
-#define FOU_CMD_MAX    (__FOU_CMD_MAX - 1)
-
-#endif /* _LINUX_FOU_H */
diff --git a/include/linux/gen_stats.h b/include/linux/gen_stats.h
deleted file mode 100644 (file)
index 52deccc..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-#ifndef __LINUX_GEN_STATS_H
-#define __LINUX_GEN_STATS_H
-
-#include <linux/types.h>
-
-enum {
-       TCA_STATS_UNSPEC,
-       TCA_STATS_BASIC,
-       TCA_STATS_RATE_EST,
-       TCA_STATS_QUEUE,
-       TCA_STATS_APP,
-       TCA_STATS_RATE_EST64,
-       TCA_STATS_PAD,
-       __TCA_STATS_MAX,
-};
-#define TCA_STATS_MAX (__TCA_STATS_MAX - 1)
-
-/**
- * struct gnet_stats_basic - byte/packet throughput statistics
- * @bytes: number of seen bytes
- * @packets: number of seen packets
- */
-struct gnet_stats_basic {
-       __u64   bytes;
-       __u32   packets;
-};
-struct gnet_stats_basic_packed {
-       __u64   bytes;
-       __u32   packets;
-} __attribute__ ((packed));
-
-/**
- * struct gnet_stats_rate_est - rate estimator
- * @bps: current byte rate
- * @pps: current packet rate
- */
-struct gnet_stats_rate_est {
-       __u32   bps;
-       __u32   pps;
-};
-
-/**
- * struct gnet_stats_rate_est64 - rate estimator
- * @bps: current byte rate
- * @pps: current packet rate
- */
-struct gnet_stats_rate_est64 {
-       __u64   bps;
-       __u64   pps;
-};
-
-/**
- * struct gnet_stats_queue - queuing statistics
- * @qlen: queue length
- * @backlog: backlog size of queue
- * @drops: number of dropped packets
- * @requeues: number of requeues
- * @overlimits: number of enqueues over the limit
- */
-struct gnet_stats_queue {
-       __u32   qlen;
-       __u32   backlog;
-       __u32   drops;
-       __u32   requeues;
-       __u32   overlimits;
-};
-
-/**
- * struct gnet_estimator - rate estimator configuration
- * @interval: sampling period
- * @ewma_log: the log of measurement window weight
- */
-struct gnet_estimator {
-       signed char     interval;
-       unsigned char   ewma_log;
-};
-
-
-#endif /* __LINUX_GEN_STATS_H */
diff --git a/include/linux/genetlink.h b/include/linux/genetlink.h
deleted file mode 100644 (file)
index 08239d8..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-#ifndef __LINUX_GENERIC_NETLINK_H
-#define __LINUX_GENERIC_NETLINK_H
-
-#include <linux/types.h>
-#include <linux/netlink.h>
-
-#define GENL_NAMSIZ    16      /* length of family name */
-
-#define GENL_MIN_ID    NLMSG_MIN_TYPE
-#define GENL_MAX_ID    1023
-
-struct genlmsghdr {
-       __u8    cmd;
-       __u8    version;
-       __u16   reserved;
-};
-
-#define GENL_HDRLEN    NLMSG_ALIGN(sizeof(struct genlmsghdr))
-
-#define GENL_ADMIN_PERM                0x01
-#define GENL_CMD_CAP_DO                0x02
-#define GENL_CMD_CAP_DUMP      0x04
-#define GENL_CMD_CAP_HASPOL    0x08
-#define GENL_UNS_ADMIN_PERM    0x10
-
-/*
- * List of reserved static generic netlink identifiers:
- */
-#define GENL_ID_CTRL           NLMSG_MIN_TYPE
-#define GENL_ID_VFS_DQUOT      (NLMSG_MIN_TYPE + 1)
-#define GENL_ID_PMCRAID                (NLMSG_MIN_TYPE + 2)
-/* must be last reserved + 1 */
-#define GENL_START_ALLOC       (NLMSG_MIN_TYPE + 3)
-
-/**************************************************************************
- * Controller
- **************************************************************************/
-
-enum {
-       CTRL_CMD_UNSPEC,
-       CTRL_CMD_NEWFAMILY,
-       CTRL_CMD_DELFAMILY,
-       CTRL_CMD_GETFAMILY,
-       CTRL_CMD_NEWOPS,
-       CTRL_CMD_DELOPS,
-       CTRL_CMD_GETOPS,
-       CTRL_CMD_NEWMCAST_GRP,
-       CTRL_CMD_DELMCAST_GRP,
-       CTRL_CMD_GETMCAST_GRP, /* unused */
-       __CTRL_CMD_MAX,
-};
-
-#define CTRL_CMD_MAX (__CTRL_CMD_MAX - 1)
-
-enum {
-       CTRL_ATTR_UNSPEC,
-       CTRL_ATTR_FAMILY_ID,
-       CTRL_ATTR_FAMILY_NAME,
-       CTRL_ATTR_VERSION,
-       CTRL_ATTR_HDRSIZE,
-       CTRL_ATTR_MAXATTR,
-       CTRL_ATTR_OPS,
-       CTRL_ATTR_MCAST_GROUPS,
-       __CTRL_ATTR_MAX,
-};
-
-#define CTRL_ATTR_MAX (__CTRL_ATTR_MAX - 1)
-
-enum {
-       CTRL_ATTR_OP_UNSPEC,
-       CTRL_ATTR_OP_ID,
-       CTRL_ATTR_OP_FLAGS,
-       __CTRL_ATTR_OP_MAX,
-};
-
-#define CTRL_ATTR_OP_MAX (__CTRL_ATTR_OP_MAX - 1)
-
-enum {
-       CTRL_ATTR_MCAST_GRP_UNSPEC,
-       CTRL_ATTR_MCAST_GRP_NAME,
-       CTRL_ATTR_MCAST_GRP_ID,
-       __CTRL_ATTR_MCAST_GRP_MAX,
-};
-
-#define CTRL_ATTR_MCAST_GRP_MAX (__CTRL_ATTR_MCAST_GRP_MAX - 1)
-
-
-#endif /* __LINUX_GENERIC_NETLINK_H */
diff --git a/include/linux/hdlc/ioctl.h b/include/linux/hdlc/ioctl.h
deleted file mode 100644 (file)
index 04bc027..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-#ifndef __HDLC_IOCTL_H__
-#define __HDLC_IOCTL_H__
-
-
-#define GENERIC_HDLC_VERSION 4 /* For synchronization with sethdlc utility */
-
-#define CLOCK_DEFAULT   0      /* Default setting */
-#define CLOCK_EXT      1       /* External TX and RX clock - DTE */
-#define CLOCK_INT      2       /* Internal TX and RX clock - DCE */
-#define CLOCK_TXINT    3       /* Internal TX and external RX clock */
-#define CLOCK_TXFROMRX 4       /* TX clock derived from external RX clock */
-
-
-#define ENCODING_DEFAULT       0 /* Default setting */
-#define ENCODING_NRZ           1
-#define ENCODING_NRZI          2
-#define ENCODING_FM_MARK       3
-#define ENCODING_FM_SPACE      4
-#define ENCODING_MANCHESTER    5
-
-
-#define PARITY_DEFAULT         0 /* Default setting */
-#define PARITY_NONE            1 /* No parity */
-#define PARITY_CRC16_PR0       2 /* CRC16, initial value 0x0000 */
-#define PARITY_CRC16_PR1       3 /* CRC16, initial value 0xFFFF */
-#define PARITY_CRC16_PR0_CCITT 4 /* CRC16, initial 0x0000, ITU-T version */
-#define PARITY_CRC16_PR1_CCITT 5 /* CRC16, initial 0xFFFF, ITU-T version */
-#define PARITY_CRC32_PR0_CCITT 6 /* CRC32, initial value 0x00000000 */
-#define PARITY_CRC32_PR1_CCITT 7 /* CRC32, initial value 0xFFFFFFFF */
-
-#define LMI_DEFAULT            0 /* Default setting */
-#define LMI_NONE               1 /* No LMI, all PVCs are static */
-#define LMI_ANSI               2 /* ANSI Annex D */
-#define LMI_CCITT              3 /* ITU-T Annex A */
-#define LMI_CISCO              4 /* The "original" LMI, aka Gang of Four */
-
-#ifndef __ASSEMBLY__
-
-typedef struct {
-       unsigned int clock_rate; /* bits per second */
-       unsigned int clock_type; /* internal, external, TX-internal etc. */
-       unsigned short loopback;
-} sync_serial_settings;          /* V.35, V.24, X.21 */
-
-typedef struct {
-       unsigned int clock_rate; /* bits per second */
-       unsigned int clock_type; /* internal, external, TX-internal etc. */
-       unsigned short loopback;
-       unsigned int slot_map;
-} te1_settings;                  /* T1, E1 */
-
-typedef struct {
-       unsigned short encoding;
-       unsigned short parity;
-} raw_hdlc_proto;
-
-typedef struct {
-       unsigned int t391;
-       unsigned int t392;
-       unsigned int n391;
-       unsigned int n392;
-       unsigned int n393;
-       unsigned short lmi;
-       unsigned short dce; /* 1 for DCE (network side) operation */
-} fr_proto;
-
-typedef struct {
-       unsigned int dlci;
-} fr_proto_pvc;          /* for creating/deleting FR PVCs */
-
-typedef struct {
-       unsigned int dlci;
-       char master[IFNAMSIZ];  /* Name of master FRAD device */
-}fr_proto_pvc_info;            /* for returning PVC information only */
-
-typedef struct {
-    unsigned int interval;
-    unsigned int timeout;
-} cisco_proto;
-
-/* PPP doesn't need any info now - supply length = 0 to ioctl */
-
-#endif /* __ASSEMBLY__ */
-#endif /* __HDLC_IOCTL_H__ */
diff --git a/include/linux/icmpv6.h b/include/linux/icmpv6.h
deleted file mode 100644 (file)
index a2e839e..0000000
+++ /dev/null
@@ -1,166 +0,0 @@
-#ifndef _LINUX_ICMPV6_H
-#define _LINUX_ICMPV6_H
-
-#include <linux/types.h>
-#include <asm/byteorder.h>
-
-struct icmp6hdr {
-
-       __u8            icmp6_type;
-       __u8            icmp6_code;
-       __sum16         icmp6_cksum;
-
-
-       union {
-               __be32                  un_data32[1];
-               __be16                  un_data16[2];
-               __u8                    un_data8[4];
-
-               struct icmpv6_echo {
-                       __be16          identifier;
-                       __be16          sequence;
-               } u_echo;
-
-                struct icmpv6_nd_advt {
-#if defined(__LITTLE_ENDIAN_BITFIELD)
-                        __u32          reserved:5,
-                                       override:1,
-                                       solicited:1,
-                                       router:1,
-                                       reserved2:24;
-#elif defined(__BIG_ENDIAN_BITFIELD)
-                        __u32          router:1,
-                                       solicited:1,
-                                       override:1,
-                                       reserved:29;
-#else
-#error "Please fix <asm/byteorder.h>"
-#endif                                         
-                } u_nd_advt;
-
-                struct icmpv6_nd_ra {
-                       __u8            hop_limit;
-#if defined(__LITTLE_ENDIAN_BITFIELD)
-                       __u8            reserved:3,
-                                       router_pref:2,
-                                       home_agent:1,
-                                       other:1,
-                                       managed:1;
-
-#elif defined(__BIG_ENDIAN_BITFIELD)
-                       __u8            managed:1,
-                                       other:1,
-                                       home_agent:1,
-                                       router_pref:2,
-                                       reserved:3;
-#else
-#error "Please fix <asm/byteorder.h>"
-#endif
-                       __be16          rt_lifetime;
-                } u_nd_ra;
-
-       } icmp6_dataun;
-
-#define icmp6_identifier       icmp6_dataun.u_echo.identifier
-#define icmp6_sequence         icmp6_dataun.u_echo.sequence
-#define icmp6_pointer          icmp6_dataun.un_data32[0]
-#define icmp6_mtu              icmp6_dataun.un_data32[0]
-#define icmp6_unused           icmp6_dataun.un_data32[0]
-#define icmp6_maxdelay         icmp6_dataun.un_data16[0]
-#define icmp6_router           icmp6_dataun.u_nd_advt.router
-#define icmp6_solicited                icmp6_dataun.u_nd_advt.solicited
-#define icmp6_override         icmp6_dataun.u_nd_advt.override
-#define icmp6_ndiscreserved    icmp6_dataun.u_nd_advt.reserved
-#define icmp6_hop_limit                icmp6_dataun.u_nd_ra.hop_limit
-#define icmp6_addrconf_managed icmp6_dataun.u_nd_ra.managed
-#define icmp6_addrconf_other   icmp6_dataun.u_nd_ra.other
-#define icmp6_rt_lifetime      icmp6_dataun.u_nd_ra.rt_lifetime
-#define icmp6_router_pref      icmp6_dataun.u_nd_ra.router_pref
-};
-
-
-#define ICMPV6_ROUTER_PREF_LOW         0x3
-#define ICMPV6_ROUTER_PREF_MEDIUM      0x0
-#define ICMPV6_ROUTER_PREF_HIGH                0x1
-#define ICMPV6_ROUTER_PREF_INVALID     0x2
-
-#define ICMPV6_DEST_UNREACH            1
-#define ICMPV6_PKT_TOOBIG              2
-#define ICMPV6_TIME_EXCEED             3
-#define ICMPV6_PARAMPROB               4
-
-#define ICMPV6_INFOMSG_MASK            0x80
-
-#define ICMPV6_ECHO_REQUEST            128
-#define ICMPV6_ECHO_REPLY              129
-#define ICMPV6_MGM_QUERY               130
-#define ICMPV6_MGM_REPORT              131
-#define ICMPV6_MGM_REDUCTION           132
-
-#define ICMPV6_NI_QUERY                        139
-#define ICMPV6_NI_REPLY                        140
-
-#define ICMPV6_MLD2_REPORT             143
-
-#define ICMPV6_DHAAD_REQUEST           144
-#define ICMPV6_DHAAD_REPLY             145
-#define ICMPV6_MOBILE_PREFIX_SOL       146
-#define ICMPV6_MOBILE_PREFIX_ADV       147
-
-/*
- *     Codes for Destination Unreachable
- */
-#define ICMPV6_NOROUTE                 0
-#define ICMPV6_ADM_PROHIBITED          1
-#define ICMPV6_NOT_NEIGHBOUR           2
-#define ICMPV6_ADDR_UNREACH            3
-#define ICMPV6_PORT_UNREACH            4
-#define ICMPV6_POLICY_FAIL             5
-#define ICMPV6_REJECT_ROUTE            6
-
-/*
- *     Codes for Time Exceeded
- */
-#define ICMPV6_EXC_HOPLIMIT            0
-#define ICMPV6_EXC_FRAGTIME            1
-
-/*
- *     Codes for Parameter Problem
- */
-#define ICMPV6_HDR_FIELD               0
-#define ICMPV6_UNK_NEXTHDR             1
-#define ICMPV6_UNK_OPTION              2
-
-/*
- *     constants for (set|get)sockopt
- */
-
-#define ICMPV6_FILTER                  1
-
-/*
- *     ICMPV6 filter
- */
-
-#define ICMPV6_FILTER_BLOCK            1
-#define ICMPV6_FILTER_PASS             2
-#define ICMPV6_FILTER_BLOCKOTHERS      3
-#define ICMPV6_FILTER_PASSONLY         4
-
-struct icmp6_filter {
-       __u32           data[8];
-};
-
-/*
- *     Definitions for MLDv2
- */
-#define MLD2_MODE_IS_INCLUDE   1
-#define MLD2_MODE_IS_EXCLUDE   2
-#define MLD2_CHANGE_TO_INCLUDE 3
-#define MLD2_CHANGE_TO_EXCLUDE 4
-#define MLD2_ALLOW_NEW_SOURCES 5
-#define MLD2_BLOCK_OLD_SOURCES 6
-
-#define MLD2_ALL_MCR_INIT { { { 0xff,0x02,0,0,0,0,0,0,0,0,0,0,0,0,0,0x16 } } }
-
-
-#endif /* _LINUX_ICMPV6_H */
diff --git a/include/linux/if.h b/include/linux/if.h
deleted file mode 100644 (file)
index b4ba020..0000000
+++ /dev/null
@@ -1,292 +0,0 @@
-/*
- * INET                An implementation of the TCP/IP protocol suite for the LINUX
- *             operating system.  INET is implemented using the  BSD Socket
- *             interface as the means of communication with the user level.
- *
- *             Global definitions for the INET interface module.
- *
- * Version:    @(#)if.h        1.0.2   04/18/93
- *
- * Authors:    Original taken from Berkeley UNIX 4.3, (c) UCB 1982-1988
- *             Ross Biro
- *             Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
- *
- *             This program is free software; you can redistribute it and/or
- *             modify it under the terms of the GNU General Public License
- *             as published by the Free Software Foundation; either version
- *             2 of the License, or (at your option) any later version.
- */
-#ifndef _LINUX_IF_H
-#define _LINUX_IF_H
-
-#include <linux/libc-compat.h>          /* for compatibility with glibc */
-#include <linux/types.h>               /* for "__kernel_caddr_t" et al */
-#include <linux/socket.h>              /* for "struct sockaddr" et al  */
-               /* for "__user" et al           */
-
-#include <sys/socket.h>                        /* for struct sockaddr.         */
-
-#if __UAPI_DEF_IF_IFNAMSIZ
-#define        IFNAMSIZ        16
-#endif /* __UAPI_DEF_IF_IFNAMSIZ */
-#define        IFALIASZ        256
-#include <linux/hdlc/ioctl.h>
-
-/* For glibc compatibility. An empty enum does not compile. */
-#if __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO != 0 || \
-    __UAPI_DEF_IF_NET_DEVICE_FLAGS != 0
-/**
- * enum net_device_flags - &struct net_device flags
- *
- * These are the &struct net_device flags, they can be set by drivers, the
- * kernel and some can be triggered by userspace. Userspace can query and
- * set these flags using userspace utilities but there is also a sysfs
- * entry available for all dev flags which can be queried and set. These flags
- * are shared for all types of net_devices. The sysfs entries are available
- * via /sys/class/net/<dev>/flags. Flags which can be toggled through sysfs
- * are annotated below, note that only a few flags can be toggled and some
- * other flags are always preserved from the original net_device flags
- * even if you try to set them via sysfs. Flags which are always preserved
- * are kept under the flag grouping @IFF_VOLATILE. Flags which are __volatile__
- * are annotated below as such.
- *
- * You should have a pretty good reason to be extending these flags.
- *
- * @IFF_UP: interface is up. Can be toggled through sysfs.
- * @IFF_BROADCAST: broadcast address valid. Volatile.
- * @IFF_DEBUG: turn on debugging. Can be toggled through sysfs.
- * @IFF_LOOPBACK: is a loopback net. Volatile.
- * @IFF_POINTOPOINT: interface is has p-p link. Volatile.
- * @IFF_NOTRAILERS: avoid use of trailers. Can be toggled through sysfs.
- *     Volatile.
- * @IFF_RUNNING: interface RFC2863 OPER_UP. Volatile.
- * @IFF_NOARP: no ARP protocol. Can be toggled through sysfs. Volatile.
- * @IFF_PROMISC: receive all packets. Can be toggled through sysfs.
- * @IFF_ALLMULTI: receive all multicast packets. Can be toggled through
- *     sysfs.
- * @IFF_MASTER: master of a load balancer. Volatile.
- * @IFF_SLAVE: slave of a load balancer. Volatile.
- * @IFF_MULTICAST: Supports multicast. Can be toggled through sysfs.
- * @IFF_PORTSEL: can set media type. Can be toggled through sysfs.
- * @IFF_AUTOMEDIA: auto media select active. Can be toggled through sysfs.
- * @IFF_DYNAMIC: dialup device with changing addresses. Can be toggled
- *     through sysfs.
- * @IFF_LOWER_UP: driver signals L1 up. Volatile.
- * @IFF_DORMANT: driver signals dormant. Volatile.
- * @IFF_ECHO: echo sent packets. Volatile.
- */
-enum net_device_flags {
-/* for compatibility with glibc net/if.h */
-#if __UAPI_DEF_IF_NET_DEVICE_FLAGS
-       IFF_UP                          = 1<<0,  /* sysfs */
-       IFF_BROADCAST                   = 1<<1,  /* __volatile__ */
-       IFF_DEBUG                       = 1<<2,  /* sysfs */
-       IFF_LOOPBACK                    = 1<<3,  /* __volatile__ */
-       IFF_POINTOPOINT                 = 1<<4,  /* __volatile__ */
-       IFF_NOTRAILERS                  = 1<<5,  /* sysfs */
-       IFF_RUNNING                     = 1<<6,  /* __volatile__ */
-       IFF_NOARP                       = 1<<7,  /* sysfs */
-       IFF_PROMISC                     = 1<<8,  /* sysfs */
-       IFF_ALLMULTI                    = 1<<9,  /* sysfs */
-       IFF_MASTER                      = 1<<10, /* __volatile__ */
-       IFF_SLAVE                       = 1<<11, /* __volatile__ */
-       IFF_MULTICAST                   = 1<<12, /* sysfs */
-       IFF_PORTSEL                     = 1<<13, /* sysfs */
-       IFF_AUTOMEDIA                   = 1<<14, /* sysfs */
-       IFF_DYNAMIC                     = 1<<15, /* sysfs */
-#endif /* __UAPI_DEF_IF_NET_DEVICE_FLAGS */
-#if __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO
-       IFF_LOWER_UP                    = 1<<16, /* __volatile__ */
-       IFF_DORMANT                     = 1<<17, /* __volatile__ */
-       IFF_ECHO                        = 1<<18, /* __volatile__ */
-#endif /* __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO */
-};
-#endif /* __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO != 0 || __UAPI_DEF_IF_NET_DEVICE_FLAGS != 0 */
-
-/* for compatibility with glibc net/if.h */
-#if __UAPI_DEF_IF_NET_DEVICE_FLAGS
-#define IFF_UP                         IFF_UP
-#define IFF_BROADCAST                  IFF_BROADCAST
-#define IFF_DEBUG                      IFF_DEBUG
-#define IFF_LOOPBACK                   IFF_LOOPBACK
-#define IFF_POINTOPOINT                        IFF_POINTOPOINT
-#define IFF_NOTRAILERS                 IFF_NOTRAILERS
-#define IFF_RUNNING                    IFF_RUNNING
-#define IFF_NOARP                      IFF_NOARP
-#define IFF_PROMISC                    IFF_PROMISC
-#define IFF_ALLMULTI                   IFF_ALLMULTI
-#define IFF_MASTER                     IFF_MASTER
-#define IFF_SLAVE                      IFF_SLAVE
-#define IFF_MULTICAST                  IFF_MULTICAST
-#define IFF_PORTSEL                    IFF_PORTSEL
-#define IFF_AUTOMEDIA                  IFF_AUTOMEDIA
-#define IFF_DYNAMIC                    IFF_DYNAMIC
-#endif /* __UAPI_DEF_IF_NET_DEVICE_FLAGS */
-
-#if __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO
-#define IFF_LOWER_UP                   IFF_LOWER_UP
-#define IFF_DORMANT                    IFF_DORMANT
-#define IFF_ECHO                       IFF_ECHO
-#endif /* __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO */
-
-#define IFF_VOLATILE   (IFF_LOOPBACK|IFF_POINTOPOINT|IFF_BROADCAST|IFF_ECHO|\
-               IFF_MASTER|IFF_SLAVE|IFF_RUNNING|IFF_LOWER_UP|IFF_DORMANT)
-
-#define IF_GET_IFACE   0x0001          /* for querying only */
-#define IF_GET_PROTO   0x0002
-
-/* For definitions see hdlc.h */
-#define IF_IFACE_V35   0x1000          /* V.35 serial interface        */
-#define IF_IFACE_V24   0x1001          /* V.24 serial interface        */
-#define IF_IFACE_X21   0x1002          /* X.21 serial interface        */
-#define IF_IFACE_T1    0x1003          /* T1 telco serial interface    */
-#define IF_IFACE_E1    0x1004          /* E1 telco serial interface    */
-#define IF_IFACE_SYNC_SERIAL 0x1005    /* can't be set by software     */
-#define IF_IFACE_X21D   0x1006          /* X.21 Dual Clocking (FarSite) */
-
-/* For definitions see hdlc.h */
-#define IF_PROTO_HDLC  0x2000          /* raw HDLC protocol            */
-#define IF_PROTO_PPP   0x2001          /* PPP protocol                 */
-#define IF_PROTO_CISCO 0x2002          /* Cisco HDLC protocol          */
-#define IF_PROTO_FR    0x2003          /* Frame Relay protocol         */
-#define IF_PROTO_FR_ADD_PVC 0x2004     /*    Create FR PVC             */
-#define IF_PROTO_FR_DEL_PVC 0x2005     /*    Delete FR PVC             */
-#define IF_PROTO_X25   0x2006          /* X.25                         */
-#define IF_PROTO_HDLC_ETH 0x2007       /* raw HDLC, Ethernet emulation */
-#define IF_PROTO_FR_ADD_ETH_PVC 0x2008 /*  Create FR Ethernet-bridged PVC */
-#define IF_PROTO_FR_DEL_ETH_PVC 0x2009 /*  Delete FR Ethernet-bridged PVC */
-#define IF_PROTO_FR_PVC        0x200A          /* for reading PVC status       */
-#define IF_PROTO_FR_ETH_PVC 0x200B
-#define IF_PROTO_RAW    0x200C          /* RAW Socket                   */
-
-/* RFC 2863 operational status */
-enum {
-       IF_OPER_UNKNOWN,
-       IF_OPER_NOTPRESENT,
-       IF_OPER_DOWN,
-       IF_OPER_LOWERLAYERDOWN,
-       IF_OPER_TESTING,
-       IF_OPER_DORMANT,
-       IF_OPER_UP,
-};
-
-/* link modes */
-enum {
-       IF_LINK_MODE_DEFAULT,
-       IF_LINK_MODE_DORMANT,   /* limit upward transition to dormant */
-};
-
-/*
- *     Device mapping structure. I'd just gone off and designed a 
- *     beautiful scheme using only loadable modules with arguments
- *     for driver options and along come the PCMCIA people 8)
- *
- *     Ah well. The get() side of this is good for WDSETUP, and it'll
- *     be handy for debugging things. The set side is fine for now and
- *     being very small might be worth keeping for clean configuration.
- */
-
-/* for compatibility with glibc net/if.h */
-#if __UAPI_DEF_IF_IFMAP
-struct ifmap {
-       unsigned long mem_start;
-       unsigned long mem_end;
-       unsigned short base_addr; 
-       unsigned char irq;
-       unsigned char dma;
-       unsigned char port;
-       /* 3 bytes spare */
-};
-#endif /* __UAPI_DEF_IF_IFMAP */
-
-struct if_settings {
-       unsigned int type;      /* Type of physical device or protocol */
-       unsigned int size;      /* Size of the data allocated by the caller */
-       union {
-               /* {atm/eth/dsl}_settings anyone ? */
-               raw_hdlc_proto          *raw_hdlc;
-               cisco_proto             *cisco;
-               fr_proto                *fr;
-               fr_proto_pvc            *fr_pvc;
-               fr_proto_pvc_info       *fr_pvc_info;
-
-               /* interface settings */
-               sync_serial_settings    *sync;
-               te1_settings            *te1;
-       } ifs_ifsu;
-};
-
-/*
- * Interface request structure used for socket
- * ioctl's.  All interface ioctl's must have parameter
- * definitions which begin with ifr_name.  The
- * remainder may be interface specific.
- */
-
-/* for compatibility with glibc net/if.h */
-#if __UAPI_DEF_IF_IFREQ
-struct ifreq {
-#define IFHWADDRLEN    6
-       union
-       {
-               char    ifrn_name[IFNAMSIZ];            /* if name, e.g. "en0" */
-       } ifr_ifrn;
-       
-       union {
-               struct  sockaddr ifru_addr;
-               struct  sockaddr ifru_dstaddr;
-               struct  sockaddr ifru_broadaddr;
-               struct  sockaddr ifru_netmask;
-               struct  sockaddr ifru_hwaddr;
-               short   ifru_flags;
-               int     ifru_ivalue;
-               int     ifru_mtu;
-               struct  ifmap ifru_map;
-               char    ifru_slave[IFNAMSIZ];   /* Just fits the size */
-               char    ifru_newname[IFNAMSIZ];
-               void *  ifru_data;
-               struct  if_settings ifru_settings;
-       } ifr_ifru;
-};
-#endif /* __UAPI_DEF_IF_IFREQ */
-
-#define ifr_name       ifr_ifrn.ifrn_name      /* interface name       */
-#define ifr_hwaddr     ifr_ifru.ifru_hwaddr    /* MAC address          */
-#define        ifr_addr        ifr_ifru.ifru_addr      /* address              */
-#define        ifr_dstaddr     ifr_ifru.ifru_dstaddr   /* other end of p-p lnk */
-#define        ifr_broadaddr   ifr_ifru.ifru_broadaddr /* broadcast address    */
-#define        ifr_netmask     ifr_ifru.ifru_netmask   /* interface net mask   */
-#define        ifr_flags       ifr_ifru.ifru_flags     /* flags                */
-#define        ifr_metric      ifr_ifru.ifru_ivalue    /* metric               */
-#define        ifr_mtu         ifr_ifru.ifru_mtu       /* mtu                  */
-#define ifr_map                ifr_ifru.ifru_map       /* device map           */
-#define ifr_slave      ifr_ifru.ifru_slave     /* slave device         */
-#define        ifr_data        ifr_ifru.ifru_data      /* for use by interface */
-#define ifr_ifindex    ifr_ifru.ifru_ivalue    /* interface index      */
-#define ifr_bandwidth  ifr_ifru.ifru_ivalue    /* link bandwidth       */
-#define ifr_qlen       ifr_ifru.ifru_ivalue    /* Queue length         */
-#define ifr_newname    ifr_ifru.ifru_newname   /* New name             */
-#define ifr_settings   ifr_ifru.ifru_settings  /* Device/proto settings*/
-
-/*
- * Structure used in SIOCGIFCONF request.
- * Used to retrieve interface configuration
- * for machine (useful for programs which
- * must know all networks accessible).
- */
-
-/* for compatibility with glibc net/if.h */
-#if __UAPI_DEF_IF_IFCONF
-struct ifconf  {
-       int     ifc_len;                        /* size of buffer       */
-       union {
-               char *ifcu_buf;
-               struct ifreq *ifcu_req;
-       } ifc_ifcu;
-};
-#endif /* __UAPI_DEF_IF_IFCONF */
-
-#define        ifc_buf ifc_ifcu.ifcu_buf               /* buffer address       */
-#define        ifc_req ifc_ifcu.ifcu_req               /* array of structures  */
-
-#endif /* _LINUX_IF_H */
diff --git a/include/linux/if_addr.h b/include/linux/if_addr.h
deleted file mode 100644 (file)
index 26f0ecf..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-#ifndef __LINUX_IF_ADDR_H
-#define __LINUX_IF_ADDR_H
-
-#include <linux/types.h>
-#include <linux/netlink.h>
-
-struct ifaddrmsg {
-       __u8            ifa_family;
-       __u8            ifa_prefixlen;  /* The prefix length            */
-       __u8            ifa_flags;      /* Flags                        */
-       __u8            ifa_scope;      /* Address scope                */
-       __u32           ifa_index;      /* Link index                   */
-};
-
-/*
- * Important comment:
- * IFA_ADDRESS is prefix address, rather than local interface address.
- * It makes no difference for normally configured broadcast interfaces,
- * but for point-to-point IFA_ADDRESS is DESTINATION address,
- * local address is supplied in IFA_LOCAL attribute.
- *
- * IFA_FLAGS is a u32 attribute that extends the u8 field ifa_flags.
- * If present, the value from struct ifaddrmsg will be ignored.
- */
-enum {
-       IFA_UNSPEC,
-       IFA_ADDRESS,
-       IFA_LOCAL,
-       IFA_LABEL,
-       IFA_BROADCAST,
-       IFA_ANYCAST,
-       IFA_CACHEINFO,
-       IFA_MULTICAST,
-       IFA_FLAGS,
-       __IFA_MAX,
-};
-
-#define IFA_MAX (__IFA_MAX - 1)
-
-/* ifa_flags */
-#define IFA_F_SECONDARY                0x01
-#define IFA_F_TEMPORARY                IFA_F_SECONDARY
-
-#define        IFA_F_NODAD             0x02
-#define IFA_F_OPTIMISTIC       0x04
-#define IFA_F_DADFAILED                0x08
-#define        IFA_F_HOMEADDRESS       0x10
-#define IFA_F_DEPRECATED       0x20
-#define IFA_F_TENTATIVE                0x40
-#define IFA_F_PERMANENT                0x80
-#define IFA_F_MANAGETEMPADDR   0x100
-#define IFA_F_NOPREFIXROUTE    0x200
-#define IFA_F_MCAUTOJOIN       0x400
-#define IFA_F_STABLE_PRIVACY   0x800
-
-struct ifa_cacheinfo {
-       __u32   ifa_prefered;
-       __u32   ifa_valid;
-       __u32   cstamp; /* created timestamp, hundredths of seconds */
-       __u32   tstamp; /* updated timestamp, hundredths of seconds */
-};
-
-/* backwards compatibility for userspace */
-#define IFA_RTA(r)  ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct ifaddrmsg))))
-#define IFA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct ifaddrmsg))
-
-#endif
diff --git a/include/linux/if_addrlabel.h b/include/linux/if_addrlabel.h
deleted file mode 100644 (file)
index 54580c2..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * if_addrlabel.h - netlink interface for address labels
- *
- * Copyright (C)2007 USAGI/WIDE Project,  All Rights Reserved.
- *
- * Authors:
- *     YOSHIFUJI Hideaki @ USAGI/WIDE <yoshfuji@linux-ipv6.org>
- */
-
-#ifndef __LINUX_IF_ADDRLABEL_H
-#define __LINUX_IF_ADDRLABEL_H
-
-#include <linux/types.h>
-
-struct ifaddrlblmsg {
-       __u8            ifal_family;            /* Address family */
-       __u8            __ifal_reserved;        /* Reserved */
-       __u8            ifal_prefixlen;         /* Prefix length */
-       __u8            ifal_flags;             /* Flags */
-       __u32           ifal_index;             /* Link index */
-       __u32           ifal_seq;               /* sequence number */
-};
-
-enum {
-       IFAL_ADDRESS = 1,
-       IFAL_LABEL = 2,
-       __IFAL_MAX
-};
-
-#define IFAL_MAX       (__IFAL_MAX - 1)
-
-#endif
diff --git a/include/linux/if_alg.h b/include/linux/if_alg.h
deleted file mode 100644 (file)
index f2acd2f..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * if_alg: User-space algorithm interface
- *
- * Copyright (c) 2010 Herbert Xu <herbert@gondor.apana.org.au>
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the Free
- * Software Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- */
-
-#ifndef _LINUX_IF_ALG_H
-#define _LINUX_IF_ALG_H
-
-#include <linux/types.h>
-
-struct sockaddr_alg {
-       __u16   salg_family;
-       __u8    salg_type[14];
-       __u32   salg_feat;
-       __u32   salg_mask;
-       __u8    salg_name[64];
-};
-
-struct af_alg_iv {
-       __u32   ivlen;
-       __u8    iv[0];
-};
-
-/* Socket options */
-#define ALG_SET_KEY                    1
-#define ALG_SET_IV                     2
-#define ALG_SET_OP                     3
-#define ALG_SET_AEAD_ASSOCLEN          4
-#define ALG_SET_AEAD_AUTHSIZE          5
-
-/* Operations */
-#define ALG_OP_DECRYPT                 0
-#define ALG_OP_ENCRYPT                 1
-
-#endif /* _LINUX_IF_ALG_H */
diff --git a/include/linux/if_arp.h b/include/linux/if_arp.h
deleted file mode 100644 (file)
index 199f253..0000000
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- * INET                An implementation of the TCP/IP protocol suite for the LINUX
- *             operating system.  INET is implemented using the  BSD Socket
- *             interface as the means of communication with the user level.
- *
- *             Global definitions for the ARP (RFC 826) protocol.
- *
- * Version:    @(#)if_arp.h    1.0.1   04/16/93
- *
- * Authors:    Original taken from Berkeley UNIX 4.3, (c) UCB 1986-1988
- *             Portions taken from the KA9Q/NOS (v2.00m PA0GRI) source.
- *             Ross Biro
- *             Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
- *             Florian La Roche,
- *             Jonathan Layes <layes@loran.com>
- *             Arnaldo Carvalho de Melo <acme@conectiva.com.br> ARPHRD_HWX25
- *
- *             This program is free software; you can redistribute it and/or
- *             modify it under the terms of the GNU General Public License
- *             as published by the Free Software Foundation; either version
- *             2 of the License, or (at your option) any later version.
- */
-#ifndef _LINUX_IF_ARP_H
-#define _LINUX_IF_ARP_H
-
-#include <linux/netdevice.h>
-
-/* ARP protocol HARDWARE identifiers. */
-#define ARPHRD_NETROM  0               /* from KA9Q: NET/ROM pseudo    */
-#define ARPHRD_ETHER   1               /* Ethernet 10Mbps              */
-#define        ARPHRD_EETHER   2               /* Experimental Ethernet        */
-#define        ARPHRD_AX25     3               /* AX.25 Level 2                */
-#define        ARPHRD_PRONET   4               /* PROnet token ring            */
-#define        ARPHRD_CHAOS    5               /* Chaosnet                     */
-#define        ARPHRD_IEEE802  6               /* IEEE 802.2 Ethernet/TR/TB    */
-#define        ARPHRD_ARCNET   7               /* ARCnet                       */
-#define        ARPHRD_APPLETLK 8               /* APPLEtalk                    */
-#define ARPHRD_DLCI    15              /* Frame Relay DLCI             */
-#define ARPHRD_ATM     19              /* ATM                          */
-#define ARPHRD_METRICOM        23              /* Metricom STRIP (new IANA id) */
-#define        ARPHRD_IEEE1394 24              /* IEEE 1394 IPv4 - RFC 2734    */
-#define ARPHRD_EUI64   27              /* EUI-64                       */
-#define ARPHRD_INFINIBAND 32           /* InfiniBand                   */
-
-/* Dummy types for non ARP hardware */
-#define ARPHRD_SLIP    256
-#define ARPHRD_CSLIP   257
-#define ARPHRD_SLIP6   258
-#define ARPHRD_CSLIP6  259
-#define ARPHRD_RSRVD   260             /* Notional KISS type           */
-#define ARPHRD_ADAPT   264
-#define ARPHRD_ROSE    270
-#define ARPHRD_X25     271             /* CCITT X.25                   */
-#define ARPHRD_HWX25   272             /* Boards with X.25 in firmware */
-#define ARPHRD_CAN     280             /* Controller Area Network      */
-#define ARPHRD_PPP     512
-#define ARPHRD_CISCO   513             /* Cisco HDLC                   */
-#define ARPHRD_HDLC    ARPHRD_CISCO
-#define ARPHRD_LAPB    516             /* LAPB                         */
-#define ARPHRD_DDCMP    517            /* Digital's DDCMP protocol     */
-#define ARPHRD_RAWHDLC 518             /* Raw HDLC                     */
-#define ARPHRD_RAWIP    519            /* Raw IP                       */
-
-#define ARPHRD_TUNNEL  768             /* IPIP tunnel                  */
-#define ARPHRD_TUNNEL6 769             /* IP6IP6 tunnel                */
-#define ARPHRD_FRAD    770             /* Frame Relay Access Device    */
-#define ARPHRD_SKIP    771             /* SKIP vif                     */
-#define ARPHRD_LOOPBACK        772             /* Loopback device              */
-#define ARPHRD_LOCALTLK 773            /* Localtalk device             */
-#define ARPHRD_FDDI    774             /* Fiber Distributed Data Interface */
-#define ARPHRD_BIF      775             /* AP1000 BIF                   */
-#define ARPHRD_SIT     776             /* sit0 device - IPv6-in-IPv4   */
-#define ARPHRD_IPDDP   777             /* IP over DDP tunneller        */
-#define ARPHRD_IPGRE   778             /* GRE over IP                  */
-#define ARPHRD_PIMREG  779             /* PIMSM register interface     */
-#define ARPHRD_HIPPI   780             /* High Performance Parallel Interface */
-#define ARPHRD_ASH     781             /* Nexus 64Mbps Ash             */
-#define ARPHRD_ECONET  782             /* Acorn Econet                 */
-#define ARPHRD_IRDA    783             /* Linux-IrDA                   */
-/* ARP works differently on different FC media .. so  */
-#define ARPHRD_FCPP    784             /* Point to point fibrechannel  */
-#define ARPHRD_FCAL    785             /* Fibrechannel arbitrated loop */
-#define ARPHRD_FCPL    786             /* Fibrechannel public loop     */
-#define ARPHRD_FCFABRIC        787             /* Fibrechannel fabric          */
-       /* 787->799 reserved for fibrechannel media types */
-#define ARPHRD_IEEE802_TR 800          /* Magic type ident for TR      */
-#define ARPHRD_IEEE80211 801           /* IEEE 802.11                  */
-#define ARPHRD_IEEE80211_PRISM 802     /* IEEE 802.11 + Prism2 header  */
-#define ARPHRD_IEEE80211_RADIOTAP 803  /* IEEE 802.11 + radiotap header */
-#define ARPHRD_IEEE802154        804
-#define ARPHRD_IEEE802154_MONITOR 805  /* IEEE 802.15.4 network monitor */
-
-#define ARPHRD_PHONET  820             /* PhoNet media type            */
-#define ARPHRD_PHONET_PIPE 821         /* PhoNet pipe header           */
-#define ARPHRD_CAIF    822             /* CAIF media type              */
-#define ARPHRD_IP6GRE  823             /* GRE over IPv6                */
-#define ARPHRD_NETLINK 824             /* Netlink header               */
-#define ARPHRD_6LOWPAN 825             /* IPv6 over LoWPAN             */
-#define ARPHRD_VSOCKMON        826             /* Vsock monitor header         */
-
-#define ARPHRD_VOID      0xFFFF        /* Void type, nothing is known */
-#define ARPHRD_NONE      0xFFFE        /* zero header length */
-
-/* ARP protocol opcodes. */
-#define        ARPOP_REQUEST   1               /* ARP request                  */
-#define        ARPOP_REPLY     2               /* ARP reply                    */
-#define        ARPOP_RREQUEST  3               /* RARP request                 */
-#define        ARPOP_RREPLY    4               /* RARP reply                   */
-#define        ARPOP_InREQUEST 8               /* InARP request                */
-#define        ARPOP_InREPLY   9               /* InARP reply                  */
-#define        ARPOP_NAK       10              /* (ATM)ARP NAK                 */
-
-
-/* ARP ioctl request. */
-struct arpreq {
-  struct sockaddr      arp_pa;         /* protocol address             */
-  struct sockaddr      arp_ha;         /* hardware address             */
-  int                  arp_flags;      /* flags                        */
-  struct sockaddr       arp_netmask;    /* netmask (only for proxy arps) */
-  char                 arp_dev[16];
-};
-
-struct arpreq_old {
-  struct sockaddr      arp_pa;         /* protocol address             */
-  struct sockaddr      arp_ha;         /* hardware address             */
-  int                  arp_flags;      /* flags                        */
-  struct sockaddr       arp_netmask;    /* netmask (only for proxy arps) */
-};
-
-/* ARP Flag values. */
-#define ATF_COM                0x02            /* completed entry (ha valid)   */
-#define        ATF_PERM        0x04            /* permanent entry              */
-#define        ATF_PUBL        0x08            /* publish entry                */
-#define        ATF_USETRAILERS 0x10            /* has requested trailers       */
-#define ATF_NETMASK     0x20            /* want to use a netmask (only
-                                          for proxy entries) */
-#define ATF_DONTPUB    0x40            /* don't answer this addresses  */
-
-/*
- *     This structure defines an ethernet arp header.
- */
-
-struct arphdr {
-       __be16          ar_hrd;         /* format of hardware address   */
-       __be16          ar_pro;         /* format of protocol address   */
-       unsigned char   ar_hln;         /* length of hardware address   */
-       unsigned char   ar_pln;         /* length of protocol address   */
-       __be16          ar_op;          /* ARP opcode (command)         */
-
-#if 0
-        /*
-         *      Ethernet looks like this : This bit is variable sized however...
-         */
-       unsigned char           ar_sha[ETH_ALEN];       /* sender hardware address      */
-       unsigned char           ar_sip[4];              /* sender IP address            */
-       unsigned char           ar_tha[ETH_ALEN];       /* target hardware address      */
-       unsigned char           ar_tip[4];              /* target IP address            */
-#endif
-
-};
-
-
-#endif /* _LINUX_IF_ARP_H */
diff --git a/include/linux/if_bonding.h b/include/linux/if_bonding.h
deleted file mode 100644 (file)
index 9635a62..0000000
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * Bond several ethernet interfaces into a Cisco, running 'Etherchannel'.
- *
- *
- * Portions are (c) Copyright 1995 Simon "Guru Aleph-Null" Janes
- * NCM: Network and Communications Management, Inc.
- *
- * BUT, I'm the one who modified it for ethernet, so:
- * (c) Copyright 1999, Thomas Davis, tadavis@lbl.gov
- *
- *     This software may be used and distributed according to the terms
- *     of the GNU Public License, incorporated herein by reference.
- *
- * 2003/03/18 - Amir Noam <amir.noam at intel dot com>
- *     - Added support for getting slave's speed and duplex via ethtool.
- *       Needed for 802.3ad and other future modes.
- *
- * 2003/03/18 - Tsippy Mendelson <tsippy.mendelson at intel dot com> and
- *             Shmulik Hen <shmulik.hen at intel dot com>
- *     - Enable support of modes that need to use the unique mac address of
- *       each slave.
- *
- * 2003/03/18 - Tsippy Mendelson <tsippy.mendelson at intel dot com> and
- *             Amir Noam <amir.noam at intel dot com>
- *     - Moved driver's private data types to bonding.h
- *
- * 2003/03/18 - Amir Noam <amir.noam at intel dot com>,
- *             Tsippy Mendelson <tsippy.mendelson at intel dot com> and
- *             Shmulik Hen <shmulik.hen at intel dot com>
- *     - Added support for IEEE 802.3ad Dynamic link aggregation mode.
- *
- * 2003/05/01 - Amir Noam <amir.noam at intel dot com>
- *     - Added ABI version control to restore compatibility between
- *       new/old ifenslave and new/old bonding.
- *
- * 2003/12/01 - Shmulik Hen <shmulik.hen at intel dot com>
- *     - Code cleanup and style changes
- *
- * 2005/05/05 - Jason Gabler <jygabler at lbl dot gov>
- *      - added definitions for various XOR hashing policies
- */
-
-#ifndef _LINUX_IF_BONDING_H
-#define _LINUX_IF_BONDING_H
-
-#include <linux/if.h>
-#include <linux/types.h>
-#include <linux/if_ether.h>
-
-/* userland - kernel ABI version (2003/05/08) */
-#define BOND_ABI_VERSION 2
-
-/*
- * We can remove these ioctl definitions in 2.5.  People should use the
- * SIOC*** versions of them instead
- */
-#define BOND_ENSLAVE_OLD               (SIOCDEVPRIVATE)
-#define BOND_RELEASE_OLD               (SIOCDEVPRIVATE + 1)
-#define BOND_SETHWADDR_OLD             (SIOCDEVPRIVATE + 2)
-#define BOND_SLAVE_INFO_QUERY_OLD      (SIOCDEVPRIVATE + 11)
-#define BOND_INFO_QUERY_OLD            (SIOCDEVPRIVATE + 12)
-#define BOND_CHANGE_ACTIVE_OLD         (SIOCDEVPRIVATE + 13)
-
-#define BOND_CHECK_MII_STATUS  (SIOCGMIIPHY)
-
-#define BOND_MODE_ROUNDROBIN   0
-#define BOND_MODE_ACTIVEBACKUP 1
-#define BOND_MODE_XOR          2
-#define BOND_MODE_BROADCAST    3
-#define BOND_MODE_8023AD        4
-#define BOND_MODE_TLB           5
-#define BOND_MODE_ALB          6 /* TLB + RLB (receive load balancing) */
-
-/* each slave's link has 4 states */
-#define BOND_LINK_UP    0           /* link is up and running */
-#define BOND_LINK_FAIL  1           /* link has just gone down */
-#define BOND_LINK_DOWN  2           /* link has been down for too long time */
-#define BOND_LINK_BACK  3           /* link is going back */
-
-/* each slave has several states */
-#define BOND_STATE_ACTIVE       0   /* link is active */
-#define BOND_STATE_BACKUP       1   /* link is backup */
-
-#define BOND_DEFAULT_MAX_BONDS  1   /* Default maximum number of devices to support */
-
-#define BOND_DEFAULT_TX_QUEUES 16   /* Default number of tx queues per device */
-
-#define BOND_DEFAULT_RESEND_IGMP       1 /* Default number of IGMP membership reports */
-
-/* hashing types */
-#define BOND_XMIT_POLICY_LAYER2                0 /* layer 2 (MAC only), default */
-#define BOND_XMIT_POLICY_LAYER34       1 /* layer 3+4 (IP ^ (TCP || UDP)) */
-#define BOND_XMIT_POLICY_LAYER23       2 /* layer 2+3 (IP ^ MAC) */
-#define BOND_XMIT_POLICY_ENCAP23       3 /* encapsulated layer 2+3 */
-#define BOND_XMIT_POLICY_ENCAP34       4 /* encapsulated layer 3+4 */
-
-typedef struct ifbond {
-       __s32 bond_mode;
-       __s32 num_slaves;
-       __s32 miimon;
-} ifbond;
-
-typedef struct ifslave {
-       __s32 slave_id; /* Used as an IN param to the BOND_SLAVE_INFO_QUERY ioctl */
-       char slave_name[IFNAMSIZ];
-       __s8 link;
-       __s8 state;
-       __u32  link_failure_count;
-} ifslave;
-
-struct ad_info {
-       __u16 aggregator_id;
-       __u16 ports;
-       __u16 actor_key;
-       __u16 partner_key;
-       __u8 partner_system[ETH_ALEN];
-};
-
-#endif /* _LINUX_IF_BONDING_H */
-
-/*
- * Local variables:
- *  version-control: t
- *  kept-new-versions: 5
- *  c-indent-level: 8
- *  c-basic-offset: 8
- *  tab-width: 8
- * End:
- */
-
diff --git a/include/linux/if_bridge.h b/include/linux/if_bridge.h
deleted file mode 100644 (file)
index 156f443..0000000
+++ /dev/null
@@ -1,294 +0,0 @@
-/*
- *     Linux ethernet bridge
- *
- *     Authors:
- *     Lennert Buytenhek               <buytenh@gnu.org>
- *
- *     This program is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License
- *     as published by the Free Software Foundation; either version
- *     2 of the License, or (at your option) any later version.
- */
-
-#ifndef _LINUX_IF_BRIDGE_H
-#define _LINUX_IF_BRIDGE_H
-
-#include <linux/types.h>
-#include <linux/if_ether.h>
-#include <linux/in6.h>
-
-#define SYSFS_BRIDGE_ATTR      "bridge"
-#define SYSFS_BRIDGE_FDB       "brforward"
-#define SYSFS_BRIDGE_PORT_SUBDIR "brif"
-#define SYSFS_BRIDGE_PORT_ATTR "brport"
-#define SYSFS_BRIDGE_PORT_LINK "bridge"
-
-#define BRCTL_VERSION 1
-
-#define BRCTL_GET_VERSION 0
-#define BRCTL_GET_BRIDGES 1
-#define BRCTL_ADD_BRIDGE 2
-#define BRCTL_DEL_BRIDGE 3
-#define BRCTL_ADD_IF 4
-#define BRCTL_DEL_IF 5
-#define BRCTL_GET_BRIDGE_INFO 6
-#define BRCTL_GET_PORT_LIST 7
-#define BRCTL_SET_BRIDGE_FORWARD_DELAY 8
-#define BRCTL_SET_BRIDGE_HELLO_TIME 9
-#define BRCTL_SET_BRIDGE_MAX_AGE 10
-#define BRCTL_SET_AGEING_TIME 11
-#define BRCTL_SET_GC_INTERVAL 12
-#define BRCTL_GET_PORT_INFO 13
-#define BRCTL_SET_BRIDGE_STP_STATE 14
-#define BRCTL_SET_BRIDGE_PRIORITY 15
-#define BRCTL_SET_PORT_PRIORITY 16
-#define BRCTL_SET_PATH_COST 17
-#define BRCTL_GET_FDB_ENTRIES 18
-
-#define BR_STATE_DISABLED 0
-#define BR_STATE_LISTENING 1
-#define BR_STATE_LEARNING 2
-#define BR_STATE_FORWARDING 3
-#define BR_STATE_BLOCKING 4
-
-struct __bridge_info {
-       __u64 designated_root;
-       __u64 bridge_id;
-       __u32 root_path_cost;
-       __u32 max_age;
-       __u32 hello_time;
-       __u32 forward_delay;
-       __u32 bridge_max_age;
-       __u32 bridge_hello_time;
-       __u32 bridge_forward_delay;
-       __u8 topology_change;
-       __u8 topology_change_detected;
-       __u8 root_port;
-       __u8 stp_enabled;
-       __u32 ageing_time;
-       __u32 gc_interval;
-       __u32 hello_timer_value;
-       __u32 tcn_timer_value;
-       __u32 topology_change_timer_value;
-       __u32 gc_timer_value;
-};
-
-struct __port_info {
-       __u64 designated_root;
-       __u64 designated_bridge;
-       __u16 port_id;
-       __u16 designated_port;
-       __u32 path_cost;
-       __u32 designated_cost;
-       __u8 state;
-       __u8 top_change_ack;
-       __u8 config_pending;
-       __u8 unused0;
-       __u32 message_age_timer_value;
-       __u32 forward_delay_timer_value;
-       __u32 hold_timer_value;
-};
-
-struct __fdb_entry {
-       __u8 mac_addr[ETH_ALEN];
-       __u8 port_no;
-       __u8 is_local;
-       __u32 ageing_timer_value;
-       __u8 port_hi;
-       __u8 pad0;
-       __u16 unused;
-};
-
-/* Bridge Flags */
-#define BRIDGE_FLAGS_MASTER    1       /* Bridge command to/from master */
-#define BRIDGE_FLAGS_SELF      2       /* Bridge command to/from lowerdev */
-
-#define BRIDGE_MODE_VEB                0       /* Default loopback mode */
-#define BRIDGE_MODE_VEPA       1       /* 802.1Qbg defined VEPA mode */
-#define BRIDGE_MODE_UNDEF      0xFFFF  /* mode undefined */
-
-/* Bridge management nested attributes
- * [IFLA_AF_SPEC] = {
- *     [IFLA_BRIDGE_FLAGS]
- *     [IFLA_BRIDGE_MODE]
- *     [IFLA_BRIDGE_VLAN_INFO]
- * }
- */
-enum {
-       IFLA_BRIDGE_FLAGS,
-       IFLA_BRIDGE_MODE,
-       IFLA_BRIDGE_VLAN_INFO,
-       IFLA_BRIDGE_VLAN_TUNNEL_INFO,
-       __IFLA_BRIDGE_MAX,
-};
-#define IFLA_BRIDGE_MAX (__IFLA_BRIDGE_MAX - 1)
-
-#define BRIDGE_VLAN_INFO_MASTER        (1<<0)  /* Operate on Bridge device as well */
-#define BRIDGE_VLAN_INFO_PVID  (1<<1)  /* VLAN is PVID, ingress untagged */
-#define BRIDGE_VLAN_INFO_UNTAGGED      (1<<2)  /* VLAN egresses untagged */
-#define BRIDGE_VLAN_INFO_RANGE_BEGIN   (1<<3) /* VLAN is start of vlan range */
-#define BRIDGE_VLAN_INFO_RANGE_END     (1<<4) /* VLAN is end of vlan range */
-#define BRIDGE_VLAN_INFO_BRENTRY       (1<<5) /* Global bridge VLAN entry */
-
-struct bridge_vlan_info {
-       __u16 flags;
-       __u16 vid;
-};
-
-enum {
-       IFLA_BRIDGE_VLAN_TUNNEL_UNSPEC,
-       IFLA_BRIDGE_VLAN_TUNNEL_ID,
-       IFLA_BRIDGE_VLAN_TUNNEL_VID,
-       IFLA_BRIDGE_VLAN_TUNNEL_FLAGS,
-       __IFLA_BRIDGE_VLAN_TUNNEL_MAX,
-};
-
-#define IFLA_BRIDGE_VLAN_TUNNEL_MAX (__IFLA_BRIDGE_VLAN_TUNNEL_MAX - 1)
-
-struct bridge_vlan_xstats {
-       __u64 rx_bytes;
-       __u64 rx_packets;
-       __u64 tx_bytes;
-       __u64 tx_packets;
-       __u16 vid;
-       __u16 flags;
-       __u32 pad2;
-};
-
-/* Bridge multicast database attributes
- * [MDBA_MDB] = {
- *     [MDBA_MDB_ENTRY] = {
- *         [MDBA_MDB_ENTRY_INFO] {
- *             struct br_mdb_entry
- *             [MDBA_MDB_EATTR attributes]
- *         }
- *     }
- * }
- * [MDBA_ROUTER] = {
- *    [MDBA_ROUTER_PORT] = {
- *        u32 ifindex
- *        [MDBA_ROUTER_PATTR attributes]
- *    }
- * }
- */
-enum {
-       MDBA_UNSPEC,
-       MDBA_MDB,
-       MDBA_ROUTER,
-       __MDBA_MAX,
-};
-#define MDBA_MAX (__MDBA_MAX - 1)
-
-enum {
-       MDBA_MDB_UNSPEC,
-       MDBA_MDB_ENTRY,
-       __MDBA_MDB_MAX,
-};
-#define MDBA_MDB_MAX (__MDBA_MDB_MAX - 1)
-
-enum {
-       MDBA_MDB_ENTRY_UNSPEC,
-       MDBA_MDB_ENTRY_INFO,
-       __MDBA_MDB_ENTRY_MAX,
-};
-#define MDBA_MDB_ENTRY_MAX (__MDBA_MDB_ENTRY_MAX - 1)
-
-/* per mdb entry additional attributes */
-enum {
-       MDBA_MDB_EATTR_UNSPEC,
-       MDBA_MDB_EATTR_TIMER,
-       __MDBA_MDB_EATTR_MAX
-};
-#define MDBA_MDB_EATTR_MAX (__MDBA_MDB_EATTR_MAX - 1)
-
-/* multicast router types */
-enum {
-       MDB_RTR_TYPE_DISABLED,
-       MDB_RTR_TYPE_TEMP_QUERY,
-       MDB_RTR_TYPE_PERM,
-       MDB_RTR_TYPE_TEMP
-};
-
-enum {
-       MDBA_ROUTER_UNSPEC,
-       MDBA_ROUTER_PORT,
-       __MDBA_ROUTER_MAX,
-};
-#define MDBA_ROUTER_MAX (__MDBA_ROUTER_MAX - 1)
-
-/* router port attributes */
-enum {
-       MDBA_ROUTER_PATTR_UNSPEC,
-       MDBA_ROUTER_PATTR_TIMER,
-       MDBA_ROUTER_PATTR_TYPE,
-       __MDBA_ROUTER_PATTR_MAX
-};
-#define MDBA_ROUTER_PATTR_MAX (__MDBA_ROUTER_PATTR_MAX - 1)
-
-struct br_port_msg {
-       __u8  family;
-       __u32 ifindex;
-};
-
-struct br_mdb_entry {
-       __u32 ifindex;
-#define MDB_TEMPORARY 0
-#define MDB_PERMANENT 1
-       __u8 state;
-#define MDB_FLAGS_OFFLOAD      (1 << 0)
-       __u8 flags;
-       __u16 vid;
-       struct {
-               union {
-                       __be32  ip4;
-                       struct in6_addr ip6;
-               } u;
-               __be16          proto;
-       } addr;
-};
-
-enum {
-       MDBA_SET_ENTRY_UNSPEC,
-       MDBA_SET_ENTRY,
-       __MDBA_SET_ENTRY_MAX,
-};
-#define MDBA_SET_ENTRY_MAX (__MDBA_SET_ENTRY_MAX - 1)
-
-/* Embedded inside LINK_XSTATS_TYPE_BRIDGE */
-enum {
-       BRIDGE_XSTATS_UNSPEC,
-       BRIDGE_XSTATS_VLAN,
-       BRIDGE_XSTATS_MCAST,
-       BRIDGE_XSTATS_PAD,
-       __BRIDGE_XSTATS_MAX
-};
-#define BRIDGE_XSTATS_MAX (__BRIDGE_XSTATS_MAX - 1)
-
-enum {
-       BR_MCAST_DIR_RX,
-       BR_MCAST_DIR_TX,
-       BR_MCAST_DIR_SIZE
-};
-
-/* IGMP/MLD statistics */
-struct br_mcast_stats {
-       __u64 igmp_v1queries[BR_MCAST_DIR_SIZE];
-       __u64 igmp_v2queries[BR_MCAST_DIR_SIZE];
-       __u64 igmp_v3queries[BR_MCAST_DIR_SIZE];
-       __u64 igmp_leaves[BR_MCAST_DIR_SIZE];
-       __u64 igmp_v1reports[BR_MCAST_DIR_SIZE];
-       __u64 igmp_v2reports[BR_MCAST_DIR_SIZE];
-       __u64 igmp_v3reports[BR_MCAST_DIR_SIZE];
-       __u64 igmp_parse_errors;
-
-       __u64 mld_v1queries[BR_MCAST_DIR_SIZE];
-       __u64 mld_v2queries[BR_MCAST_DIR_SIZE];
-       __u64 mld_leaves[BR_MCAST_DIR_SIZE];
-       __u64 mld_v1reports[BR_MCAST_DIR_SIZE];
-       __u64 mld_v2reports[BR_MCAST_DIR_SIZE];
-       __u64 mld_parse_errors;
-
-       __u64 mcast_bytes[BR_MCAST_DIR_SIZE];
-       __u64 mcast_packets[BR_MCAST_DIR_SIZE];
-};
-#endif /* _LINUX_IF_BRIDGE_H */
diff --git a/include/linux/if_ether.h b/include/linux/if_ether.h
deleted file mode 100644 (file)
index 7dde037..0000000
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- * INET                An implementation of the TCP/IP protocol suite for the LINUX
- *             operating system.  INET is implemented using the  BSD Socket
- *             interface as the means of communication with the user level.
- *
- *             Global definitions for the Ethernet IEEE 802.3 interface.
- *
- * Version:    @(#)if_ether.h  1.0.1a  02/08/94
- *
- * Author:     Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
- *             Donald Becker, <becker@super.org>
- *             Alan Cox, <alan@lxorguk.ukuu.org.uk>
- *             Steve Whitehouse, <gw7rrm@eeshack3.swan.ac.uk>
- *
- *             This program is free software; you can redistribute it and/or
- *             modify it under the terms of the GNU General Public License
- *             as published by the Free Software Foundation; either version
- *             2 of the License, or (at your option) any later version.
- */
-
-#ifndef _LINUX_IF_ETHER_H
-#define _LINUX_IF_ETHER_H
-
-#include <linux/types.h>
-
-/*
- *     IEEE 802.3 Ethernet magic constants.  The frame sizes omit the preamble
- *     and FCS/CRC (frame check sequence).
- */
-
-#define ETH_ALEN       6               /* Octets in one ethernet addr   */
-#define ETH_HLEN       14              /* Total octets in header.       */
-#define ETH_ZLEN       60              /* Min. octets in frame sans FCS */
-#define ETH_DATA_LEN   1500            /* Max. octets in payload        */
-#define ETH_FRAME_LEN  1514            /* Max. octets in frame sans FCS */
-#define ETH_FCS_LEN    4               /* Octets in the FCS             */
-
-#define ETH_MIN_MTU    68              /* Min IPv4 MTU per RFC791      */
-#define ETH_MAX_MTU    0xFFFFU         /* 65535, same as IP_MAX_MTU    */
-
-/*
- *     These are the defined Ethernet Protocol ID's.
- */
-
-#define ETH_P_LOOP     0x0060          /* Ethernet Loopback packet     */
-#define ETH_P_PUP      0x0200          /* Xerox PUP packet             */
-#define ETH_P_PUPAT    0x0201          /* Xerox PUP Addr Trans packet  */
-#define ETH_P_TSN      0x22F0          /* TSN (IEEE 1722) packet       */
-#define ETH_P_IP       0x0800          /* Internet Protocol packet     */
-#define ETH_P_X25      0x0805          /* CCITT X.25                   */
-#define ETH_P_ARP      0x0806          /* Address Resolution packet    */
-#define        ETH_P_BPQ       0x08FF          /* G8BPQ AX.25 Ethernet Packet  [ NOT AN OFFICIALLY REGISTERED ID ] */
-#define ETH_P_IEEEPUP  0x0a00          /* Xerox IEEE802.3 PUP packet */
-#define ETH_P_IEEEPUPAT        0x0a01          /* Xerox IEEE802.3 PUP Addr Trans packet */
-#define ETH_P_BATMAN   0x4305          /* B.A.T.M.A.N.-Advanced packet [ NOT AN OFFICIALLY REGISTERED ID ] */
-#define ETH_P_DEC       0x6000          /* DEC Assigned proto           */
-#define ETH_P_DNA_DL    0x6001          /* DEC DNA Dump/Load            */
-#define ETH_P_DNA_RC    0x6002          /* DEC DNA Remote Console       */
-#define ETH_P_DNA_RT    0x6003          /* DEC DNA Routing              */
-#define ETH_P_LAT       0x6004          /* DEC LAT                      */
-#define ETH_P_DIAG      0x6005          /* DEC Diagnostics              */
-#define ETH_P_CUST      0x6006          /* DEC Customer use             */
-#define ETH_P_SCA       0x6007          /* DEC Systems Comms Arch       */
-#define ETH_P_TEB      0x6558          /* Trans Ether Bridging         */
-#define ETH_P_RARP      0x8035         /* Reverse Addr Res packet      */
-#define ETH_P_ATALK    0x809B          /* Appletalk DDP                */
-#define ETH_P_AARP     0x80F3          /* Appletalk AARP               */
-#define ETH_P_8021Q    0x8100          /* 802.1Q VLAN Extended Header  */
-#define ETH_P_ERSPAN   0x88BE          /* ERSPAN type II               */
-#define ETH_P_IPX      0x8137          /* IPX over DIX                 */
-#define ETH_P_IPV6     0x86DD          /* IPv6 over bluebook           */
-#define ETH_P_PAUSE    0x8808          /* IEEE Pause frames. See 802.3 31B */
-#define ETH_P_SLOW     0x8809          /* Slow Protocol. See 802.3ad 43B */
-#define ETH_P_WCCP     0x883E          /* Web-cache coordination protocol
-                                        * defined in draft-wilson-wrec-wccp-v2-00.txt */
-#define ETH_P_MPLS_UC  0x8847          /* MPLS Unicast traffic         */
-#define ETH_P_MPLS_MC  0x8848          /* MPLS Multicast traffic       */
-#define ETH_P_ATMMPOA  0x884c          /* MultiProtocol Over ATM       */
-#define ETH_P_PPP_DISC 0x8863          /* PPPoE discovery messages     */
-#define ETH_P_PPP_SES  0x8864          /* PPPoE session messages       */
-#define ETH_P_LINK_CTL 0x886c          /* HPNA, wlan link local tunnel */
-#define ETH_P_ATMFATE  0x8884          /* Frame-based ATM Transport
-                                        * over Ethernet
-                                        */
-#define ETH_P_PAE      0x888E          /* Port Access Entity (IEEE 802.1X) */
-#define ETH_P_AOE      0x88A2          /* ATA over Ethernet            */
-#define ETH_P_8021AD   0x88A8          /* 802.1ad Service VLAN         */
-#define ETH_P_802_EX1  0x88B5          /* 802.1 Local Experimental 1.  */
-#define ETH_P_TIPC     0x88CA          /* TIPC                         */
-#define ETH_P_MACSEC   0x88E5          /* 802.1ae MACsec */
-#define ETH_P_8021AH   0x88E7          /* 802.1ah Backbone Service Tag */
-#define ETH_P_MVRP     0x88F5          /* 802.1Q MVRP                  */
-#define ETH_P_1588     0x88F7          /* IEEE 1588 Timesync */
-#define ETH_P_NCSI     0x88F8          /* NCSI protocol                */
-#define ETH_P_PRP      0x88FB          /* IEC 62439-3 PRP/HSRv0        */
-#define ETH_P_FCOE     0x8906          /* Fibre Channel over Ethernet  */
-#define ETH_P_IBOE     0x8915          /* Infiniband over Ethernet     */
-#define ETH_P_TDLS     0x890D          /* TDLS */
-#define ETH_P_FIP      0x8914          /* FCoE Initialization Protocol */
-#define ETH_P_80221    0x8917          /* IEEE 802.21 Media Independent Handover Protocol */
-#define ETH_P_HSR      0x892F          /* IEC 62439-3 HSRv1    */
-#define ETH_P_NSH      0x894F          /* Network Service Header */
-#define ETH_P_LOOPBACK 0x9000          /* Ethernet loopback packet, per IEEE 802.3 */
-#define ETH_P_QINQ1    0x9100          /* deprecated QinQ VLAN [ NOT AN OFFICIALLY REGISTERED ID ] */
-#define ETH_P_QINQ2    0x9200          /* deprecated QinQ VLAN [ NOT AN OFFICIALLY REGISTERED ID ] */
-#define ETH_P_QINQ3    0x9300          /* deprecated QinQ VLAN [ NOT AN OFFICIALLY REGISTERED ID ] */
-#define ETH_P_EDSA     0xDADA          /* Ethertype DSA [ NOT AN OFFICIALLY REGISTERED ID ] */
-#define ETH_P_IFE      0xED3E          /* ForCES inter-FE LFB type */
-#define ETH_P_AF_IUCV   0xFBFB         /* IBM af_iucv [ NOT AN OFFICIALLY REGISTERED ID ] */
-
-#define ETH_P_802_3_MIN        0x0600          /* If the value in the ethernet type is less than this value
-                                        * then the frame is Ethernet II. Else it is 802.3 */
-
-/*
- *     Non DIX types. Won't clash for 1500 types.
- */
-
-#define ETH_P_802_3    0x0001          /* Dummy type for 802.3 frames  */
-#define ETH_P_AX25     0x0002          /* Dummy protocol id for AX.25  */
-#define ETH_P_ALL      0x0003          /* Every packet (be careful!!!) */
-#define ETH_P_802_2    0x0004          /* 802.2 frames                 */
-#define ETH_P_SNAP     0x0005          /* Internal only                */
-#define ETH_P_DDCMP     0x0006          /* DEC DDCMP: Internal only     */
-#define ETH_P_WAN_PPP   0x0007          /* Dummy type for WAN PPP frames*/
-#define ETH_P_PPP_MP    0x0008          /* Dummy type for PPP MP frames */
-#define ETH_P_LOCALTALK 0x0009         /* Localtalk pseudo type        */
-#define ETH_P_CAN      0x000C          /* CAN: Controller Area Network */
-#define ETH_P_CANFD    0x000D          /* CANFD: CAN flexible data rate*/
-#define ETH_P_PPPTALK  0x0010          /* Dummy type for Atalk over PPP*/
-#define ETH_P_TR_802_2 0x0011          /* 802.2 frames                 */
-#define ETH_P_MOBITEX  0x0015          /* Mobitex (kaz@cafe.net)       */
-#define ETH_P_CONTROL  0x0016          /* Card specific control frames */
-#define ETH_P_IRDA     0x0017          /* Linux-IrDA                   */
-#define ETH_P_ECONET   0x0018          /* Acorn Econet                 */
-#define ETH_P_HDLC     0x0019          /* HDLC frames                  */
-#define ETH_P_ARCNET   0x001A          /* 1A for ArcNet :-)            */
-#define ETH_P_DSA      0x001B          /* Distributed Switch Arch.     */
-#define ETH_P_TRAILER  0x001C          /* Trailer switch tagging       */
-#define ETH_P_PHONET   0x00F5          /* Nokia Phonet frames          */
-#define ETH_P_IEEE802154 0x00F6                /* IEEE802.15.4 frame           */
-#define ETH_P_CAIF     0x00F7          /* ST-Ericsson CAIF protocol    */
-#define ETH_P_XDSA     0x00F8          /* Multiplexed DSA protocol     */
-#define ETH_P_MAP      0x00F9          /* Qualcomm multiplexing and
-                                        * aggregation protocol
-                                        */
-
-/*
- *     This is an Ethernet frame header.
- */
-
-struct ethhdr {
-       unsigned char   h_dest[ETH_ALEN];       /* destination eth addr */
-       unsigned char   h_source[ETH_ALEN];     /* source ether addr    */
-       __be16          h_proto;                /* packet type ID field */
-} __attribute__((packed));
-
-
-#endif /* _LINUX_IF_ETHER_H */
diff --git a/include/linux/if_link.h b/include/linux/if_link.h
deleted file mode 100644 (file)
index 1f97d05..0000000
+++ /dev/null
@@ -1,928 +0,0 @@
-#ifndef _LINUX_IF_LINK_H
-#define _LINUX_IF_LINK_H
-
-#include <linux/types.h>
-#include <linux/netlink.h>
-
-/* This struct should be in sync with struct rtnl_link_stats64 */
-struct rtnl_link_stats {
-       __u32   rx_packets;             /* total packets received       */
-       __u32   tx_packets;             /* total packets transmitted    */
-       __u32   rx_bytes;               /* total bytes received         */
-       __u32   tx_bytes;               /* total bytes transmitted      */
-       __u32   rx_errors;              /* bad packets received         */
-       __u32   tx_errors;              /* packet transmit problems     */
-       __u32   rx_dropped;             /* no space in linux buffers    */
-       __u32   tx_dropped;             /* no space available in linux  */
-       __u32   multicast;              /* multicast packets received   */
-       __u32   collisions;
-
-       /* detailed rx_errors: */
-       __u32   rx_length_errors;
-       __u32   rx_over_errors;         /* receiver ring buff overflow  */
-       __u32   rx_crc_errors;          /* recved pkt with crc error    */
-       __u32   rx_frame_errors;        /* recv'd frame alignment error */
-       __u32   rx_fifo_errors;         /* recv'r fifo overrun          */
-       __u32   rx_missed_errors;       /* receiver missed packet       */
-
-       /* detailed tx_errors */
-       __u32   tx_aborted_errors;
-       __u32   tx_carrier_errors;
-       __u32   tx_fifo_errors;
-       __u32   tx_heartbeat_errors;
-       __u32   tx_window_errors;
-
-       /* for cslip etc */
-       __u32   rx_compressed;
-       __u32   tx_compressed;
-
-       __u32   rx_nohandler;           /* dropped, no handler found    */
-};
-
-/* The main device statistics structure */
-struct rtnl_link_stats64 {
-       __u64   rx_packets;             /* total packets received       */
-       __u64   tx_packets;             /* total packets transmitted    */
-       __u64   rx_bytes;               /* total bytes received         */
-       __u64   tx_bytes;               /* total bytes transmitted      */
-       __u64   rx_errors;              /* bad packets received         */
-       __u64   tx_errors;              /* packet transmit problems     */
-       __u64   rx_dropped;             /* no space in linux buffers    */
-       __u64   tx_dropped;             /* no space available in linux  */
-       __u64   multicast;              /* multicast packets received   */
-       __u64   collisions;
-
-       /* detailed rx_errors: */
-       __u64   rx_length_errors;
-       __u64   rx_over_errors;         /* receiver ring buff overflow  */
-       __u64   rx_crc_errors;          /* recved pkt with crc error    */
-       __u64   rx_frame_errors;        /* recv'd frame alignment error */
-       __u64   rx_fifo_errors;         /* recv'r fifo overrun          */
-       __u64   rx_missed_errors;       /* receiver missed packet       */
-
-       /* detailed tx_errors */
-       __u64   tx_aborted_errors;
-       __u64   tx_carrier_errors;
-       __u64   tx_fifo_errors;
-       __u64   tx_heartbeat_errors;
-       __u64   tx_window_errors;
-
-       /* for cslip etc */
-       __u64   rx_compressed;
-       __u64   tx_compressed;
-
-       __u64   rx_nohandler;           /* dropped, no handler found    */
-};
-
-/* The struct should be in sync with struct ifmap */
-struct rtnl_link_ifmap {
-       __u64   mem_start;
-       __u64   mem_end;
-       __u64   base_addr;
-       __u16   irq;
-       __u8    dma;
-       __u8    port;
-};
-
-/*
- * IFLA_AF_SPEC
- *   Contains nested attributes for address family specific attributes.
- *   Each address family may create a attribute with the address family
- *   number as type and create its own attribute structure in it.
- *
- *   Example:
- *   [IFLA_AF_SPEC] = {
- *       [AF_INET] = {
- *           [IFLA_INET_CONF] = ...,
- *       },
- *       [AF_INET6] = {
- *           [IFLA_INET6_FLAGS] = ...,
- *           [IFLA_INET6_CONF] = ...,
- *       }
- *   }
- */
-
-enum {
-       IFLA_UNSPEC,
-       IFLA_ADDRESS,
-       IFLA_BROADCAST,
-       IFLA_IFNAME,
-       IFLA_MTU,
-       IFLA_LINK,
-       IFLA_QDISC,
-       IFLA_STATS,
-       IFLA_COST,
-#define IFLA_COST IFLA_COST
-       IFLA_PRIORITY,
-#define IFLA_PRIORITY IFLA_PRIORITY
-       IFLA_MASTER,
-#define IFLA_MASTER IFLA_MASTER
-       IFLA_WIRELESS,          /* Wireless Extension event - see wireless.h */
-#define IFLA_WIRELESS IFLA_WIRELESS
-       IFLA_PROTINFO,          /* Protocol specific information for a link */
-#define IFLA_PROTINFO IFLA_PROTINFO
-       IFLA_TXQLEN,
-#define IFLA_TXQLEN IFLA_TXQLEN
-       IFLA_MAP,
-#define IFLA_MAP IFLA_MAP
-       IFLA_WEIGHT,
-#define IFLA_WEIGHT IFLA_WEIGHT
-       IFLA_OPERSTATE,
-       IFLA_LINKMODE,
-       IFLA_LINKINFO,
-#define IFLA_LINKINFO IFLA_LINKINFO
-       IFLA_NET_NS_PID,
-       IFLA_IFALIAS,
-       IFLA_NUM_VF,            /* Number of VFs if device is SR-IOV PF */
-       IFLA_VFINFO_LIST,
-       IFLA_STATS64,
-       IFLA_VF_PORTS,
-       IFLA_PORT_SELF,
-       IFLA_AF_SPEC,
-       IFLA_GROUP,             /* Group the device belongs to */
-       IFLA_NET_NS_FD,
-       IFLA_EXT_MASK,          /* Extended info mask, VFs, etc */
-       IFLA_PROMISCUITY,       /* Promiscuity count: > 0 means acts PROMISC */
-#define IFLA_PROMISCUITY IFLA_PROMISCUITY
-       IFLA_NUM_TX_QUEUES,
-       IFLA_NUM_RX_QUEUES,
-       IFLA_CARRIER,
-       IFLA_PHYS_PORT_ID,
-       IFLA_CARRIER_CHANGES,
-       IFLA_PHYS_SWITCH_ID,
-       IFLA_LINK_NETNSID,
-       IFLA_PHYS_PORT_NAME,
-       IFLA_PROTO_DOWN,
-       IFLA_GSO_MAX_SEGS,
-       IFLA_GSO_MAX_SIZE,
-       IFLA_PAD,
-       IFLA_XDP,
-       IFLA_EVENT,
-       __IFLA_MAX
-};
-
-
-#define IFLA_MAX (__IFLA_MAX - 1)
-
-/* backwards compatibility for userspace */
-#define IFLA_RTA(r)  ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct ifinfomsg))))
-#define IFLA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct ifinfomsg))
-
-enum {
-       IFLA_INET_UNSPEC,
-       IFLA_INET_CONF,
-       __IFLA_INET_MAX,
-};
-
-#define IFLA_INET_MAX (__IFLA_INET_MAX - 1)
-
-/* ifi_flags.
-
-   IFF_* flags.
-
-   The only change is:
-   IFF_LOOPBACK, IFF_BROADCAST and IFF_POINTOPOINT are
-   more not changeable by user. They describe link media
-   characteristics and set by device driver.
-
-   Comments:
-   - Combination IFF_BROADCAST|IFF_POINTOPOINT is invalid
-   - If neither of these three flags are set;
-     the interface is NBMA.
-
-   - IFF_MULTICAST does not mean anything special:
-   multicasts can be used on all not-NBMA links.
-   IFF_MULTICAST means that this media uses special encapsulation
-   for multicast frames. Apparently, all IFF_POINTOPOINT and
-   IFF_BROADCAST devices are able to use multicasts too.
- */
-
-/* IFLA_LINK.
-   For usual devices it is equal ifi_index.
-   If it is a "virtual interface" (f.e. tunnel), ifi_link
-   can point to real physical interface (f.e. for bandwidth calculations),
-   or maybe 0, what means, that real media is unknown (usual
-   for IPIP tunnels, when route to endpoint is allowed to change)
- */
-
-/* Subtype attributes for IFLA_PROTINFO */
-enum {
-       IFLA_INET6_UNSPEC,
-       IFLA_INET6_FLAGS,       /* link flags                   */
-       IFLA_INET6_CONF,        /* sysctl parameters            */
-       IFLA_INET6_STATS,       /* statistics                   */
-       IFLA_INET6_MCAST,       /* MC things. What of them?     */
-       IFLA_INET6_CACHEINFO,   /* time values and max reasm size */
-       IFLA_INET6_ICMP6STATS,  /* statistics (icmpv6)          */
-       IFLA_INET6_TOKEN,       /* device token                 */
-       IFLA_INET6_ADDR_GEN_MODE, /* implicit address generator mode */
-       __IFLA_INET6_MAX
-};
-
-#define IFLA_INET6_MAX (__IFLA_INET6_MAX - 1)
-
-enum in6_addr_gen_mode {
-       IN6_ADDR_GEN_MODE_EUI64,
-       IN6_ADDR_GEN_MODE_NONE,
-       IN6_ADDR_GEN_MODE_STABLE_PRIVACY,
-       IN6_ADDR_GEN_MODE_RANDOM,
-};
-
-/* Bridge section */
-
-enum {
-       IFLA_BR_UNSPEC,
-       IFLA_BR_FORWARD_DELAY,
-       IFLA_BR_HELLO_TIME,
-       IFLA_BR_MAX_AGE,
-       IFLA_BR_AGEING_TIME,
-       IFLA_BR_STP_STATE,
-       IFLA_BR_PRIORITY,
-       IFLA_BR_VLAN_FILTERING,
-       IFLA_BR_VLAN_PROTOCOL,
-       IFLA_BR_GROUP_FWD_MASK,
-       IFLA_BR_ROOT_ID,
-       IFLA_BR_BRIDGE_ID,
-       IFLA_BR_ROOT_PORT,
-       IFLA_BR_ROOT_PATH_COST,
-       IFLA_BR_TOPOLOGY_CHANGE,
-       IFLA_BR_TOPOLOGY_CHANGE_DETECTED,
-       IFLA_BR_HELLO_TIMER,
-       IFLA_BR_TCN_TIMER,
-       IFLA_BR_TOPOLOGY_CHANGE_TIMER,
-       IFLA_BR_GC_TIMER,
-       IFLA_BR_GROUP_ADDR,
-       IFLA_BR_FDB_FLUSH,
-       IFLA_BR_MCAST_ROUTER,
-       IFLA_BR_MCAST_SNOOPING,
-       IFLA_BR_MCAST_QUERY_USE_IFADDR,
-       IFLA_BR_MCAST_QUERIER,
-       IFLA_BR_MCAST_HASH_ELASTICITY,
-       IFLA_BR_MCAST_HASH_MAX,
-       IFLA_BR_MCAST_LAST_MEMBER_CNT,
-       IFLA_BR_MCAST_STARTUP_QUERY_CNT,
-       IFLA_BR_MCAST_LAST_MEMBER_INTVL,
-       IFLA_BR_MCAST_MEMBERSHIP_INTVL,
-       IFLA_BR_MCAST_QUERIER_INTVL,
-       IFLA_BR_MCAST_QUERY_INTVL,
-       IFLA_BR_MCAST_QUERY_RESPONSE_INTVL,
-       IFLA_BR_MCAST_STARTUP_QUERY_INTVL,
-       IFLA_BR_NF_CALL_IPTABLES,
-       IFLA_BR_NF_CALL_IP6TABLES,
-       IFLA_BR_NF_CALL_ARPTABLES,
-       IFLA_BR_VLAN_DEFAULT_PVID,
-       IFLA_BR_PAD,
-       IFLA_BR_VLAN_STATS_ENABLED,
-       IFLA_BR_MCAST_STATS_ENABLED,
-       IFLA_BR_MCAST_IGMP_VERSION,
-       IFLA_BR_MCAST_MLD_VERSION,
-       __IFLA_BR_MAX,
-};
-
-#define IFLA_BR_MAX    (__IFLA_BR_MAX - 1)
-
-struct ifla_bridge_id {
-       __u8    prio[2];
-       __u8    addr[6]; /* ETH_ALEN */
-};
-
-enum {
-       BRIDGE_MODE_UNSPEC,
-       BRIDGE_MODE_HAIRPIN,
-};
-
-enum {
-       IFLA_BRPORT_UNSPEC,
-       IFLA_BRPORT_STATE,      /* Spanning tree state     */
-       IFLA_BRPORT_PRIORITY,   /* "             priority  */
-       IFLA_BRPORT_COST,       /* "             cost      */
-       IFLA_BRPORT_MODE,       /* mode (hairpin)          */
-       IFLA_BRPORT_GUARD,      /* bpdu guard              */
-       IFLA_BRPORT_PROTECT,    /* root port protection    */
-       IFLA_BRPORT_FAST_LEAVE, /* multicast fast leave    */
-       IFLA_BRPORT_LEARNING,   /* mac learning */
-       IFLA_BRPORT_UNICAST_FLOOD, /* flood unicast traffic */
-       IFLA_BRPORT_PROXYARP,   /* proxy ARP */
-       IFLA_BRPORT_LEARNING_SYNC, /* mac learning sync from device */
-       IFLA_BRPORT_PROXYARP_WIFI, /* proxy ARP for Wi-Fi */
-       IFLA_BRPORT_ROOT_ID,    /* designated root */
-       IFLA_BRPORT_BRIDGE_ID,  /* designated bridge */
-       IFLA_BRPORT_DESIGNATED_PORT,
-       IFLA_BRPORT_DESIGNATED_COST,
-       IFLA_BRPORT_ID,
-       IFLA_BRPORT_NO,
-       IFLA_BRPORT_TOPOLOGY_CHANGE_ACK,
-       IFLA_BRPORT_CONFIG_PENDING,
-       IFLA_BRPORT_MESSAGE_AGE_TIMER,
-       IFLA_BRPORT_FORWARD_DELAY_TIMER,
-       IFLA_BRPORT_HOLD_TIMER,
-       IFLA_BRPORT_FLUSH,
-       IFLA_BRPORT_MULTICAST_ROUTER,
-       IFLA_BRPORT_PAD,
-       IFLA_BRPORT_MCAST_FLOOD,
-       IFLA_BRPORT_MCAST_TO_UCAST,
-       IFLA_BRPORT_VLAN_TUNNEL,
-       IFLA_BRPORT_BCAST_FLOOD,
-       __IFLA_BRPORT_MAX
-};
-#define IFLA_BRPORT_MAX (__IFLA_BRPORT_MAX - 1)
-
-struct ifla_cacheinfo {
-       __u32   max_reasm_len;
-       __u32   tstamp;         /* ipv6InterfaceTable updated timestamp */
-       __u32   reachable_time;
-       __u32   retrans_time;
-};
-
-enum {
-       IFLA_INFO_UNSPEC,
-       IFLA_INFO_KIND,
-       IFLA_INFO_DATA,
-       IFLA_INFO_XSTATS,
-       IFLA_INFO_SLAVE_KIND,
-       IFLA_INFO_SLAVE_DATA,
-       __IFLA_INFO_MAX,
-};
-
-#define IFLA_INFO_MAX  (__IFLA_INFO_MAX - 1)
-
-/* VLAN section */
-
-enum {
-       IFLA_VLAN_UNSPEC,
-       IFLA_VLAN_ID,
-       IFLA_VLAN_FLAGS,
-       IFLA_VLAN_EGRESS_QOS,
-       IFLA_VLAN_INGRESS_QOS,
-       IFLA_VLAN_PROTOCOL,
-       __IFLA_VLAN_MAX,
-};
-
-#define IFLA_VLAN_MAX  (__IFLA_VLAN_MAX - 1)
-
-struct ifla_vlan_flags {
-       __u32   flags;
-       __u32   mask;
-};
-
-enum {
-       IFLA_VLAN_QOS_UNSPEC,
-       IFLA_VLAN_QOS_MAPPING,
-       __IFLA_VLAN_QOS_MAX
-};
-
-#define IFLA_VLAN_QOS_MAX      (__IFLA_VLAN_QOS_MAX - 1)
-
-struct ifla_vlan_qos_mapping {
-       __u32 from;
-       __u32 to;
-};
-
-/* MACVLAN section */
-enum {
-       IFLA_MACVLAN_UNSPEC,
-       IFLA_MACVLAN_MODE,
-       IFLA_MACVLAN_FLAGS,
-       IFLA_MACVLAN_MACADDR_MODE,
-       IFLA_MACVLAN_MACADDR,
-       IFLA_MACVLAN_MACADDR_DATA,
-       IFLA_MACVLAN_MACADDR_COUNT,
-       __IFLA_MACVLAN_MAX,
-};
-
-#define IFLA_MACVLAN_MAX (__IFLA_MACVLAN_MAX - 1)
-
-enum macvlan_mode {
-       MACVLAN_MODE_PRIVATE = 1, /* don't talk to other macvlans */
-       MACVLAN_MODE_VEPA    = 2, /* talk to other ports through ext bridge */
-       MACVLAN_MODE_BRIDGE  = 4, /* talk to bridge ports directly */
-       MACVLAN_MODE_PASSTHRU = 8,/* take over the underlying device */
-       MACVLAN_MODE_SOURCE  = 16,/* use source MAC address list to assign */
-};
-
-enum macvlan_macaddr_mode {
-       MACVLAN_MACADDR_ADD,
-       MACVLAN_MACADDR_DEL,
-       MACVLAN_MACADDR_FLUSH,
-       MACVLAN_MACADDR_SET,
-};
-
-#define MACVLAN_FLAG_NOPROMISC 1
-
-/* VRF section */
-enum {
-       IFLA_VRF_UNSPEC,
-       IFLA_VRF_TABLE,
-       __IFLA_VRF_MAX
-};
-
-#define IFLA_VRF_MAX (__IFLA_VRF_MAX - 1)
-
-enum {
-       IFLA_VRF_PORT_UNSPEC,
-       IFLA_VRF_PORT_TABLE,
-       __IFLA_VRF_PORT_MAX
-};
-
-#define IFLA_VRF_PORT_MAX (__IFLA_VRF_PORT_MAX - 1)
-
-/* MACSEC section */
-enum {
-       IFLA_MACSEC_UNSPEC,
-       IFLA_MACSEC_SCI,
-       IFLA_MACSEC_PORT,
-       IFLA_MACSEC_ICV_LEN,
-       IFLA_MACSEC_CIPHER_SUITE,
-       IFLA_MACSEC_WINDOW,
-       IFLA_MACSEC_ENCODING_SA,
-       IFLA_MACSEC_ENCRYPT,
-       IFLA_MACSEC_PROTECT,
-       IFLA_MACSEC_INC_SCI,
-       IFLA_MACSEC_ES,
-       IFLA_MACSEC_SCB,
-       IFLA_MACSEC_REPLAY_PROTECT,
-       IFLA_MACSEC_VALIDATION,
-       IFLA_MACSEC_PAD,
-       __IFLA_MACSEC_MAX,
-};
-
-#define IFLA_MACSEC_MAX (__IFLA_MACSEC_MAX - 1)
-
-enum macsec_validation_type {
-       MACSEC_VALIDATE_DISABLED = 0,
-       MACSEC_VALIDATE_CHECK = 1,
-       MACSEC_VALIDATE_STRICT = 2,
-       __MACSEC_VALIDATE_END,
-       MACSEC_VALIDATE_MAX = __MACSEC_VALIDATE_END - 1,
-};
-
-/* IPVLAN section */
-enum {
-       IFLA_IPVLAN_UNSPEC,
-       IFLA_IPVLAN_MODE,
-       __IFLA_IPVLAN_MAX
-};
-
-#define IFLA_IPVLAN_MAX (__IFLA_IPVLAN_MAX - 1)
-
-enum ipvlan_mode {
-       IPVLAN_MODE_L2 = 0,
-       IPVLAN_MODE_L3,
-       IPVLAN_MODE_L3S,
-       IPVLAN_MODE_MAX
-};
-
-/* VXLAN section */
-enum {
-       IFLA_VXLAN_UNSPEC,
-       IFLA_VXLAN_ID,
-       IFLA_VXLAN_GROUP,       /* group or remote address */
-       IFLA_VXLAN_LINK,
-       IFLA_VXLAN_LOCAL,
-       IFLA_VXLAN_TTL,
-       IFLA_VXLAN_TOS,
-       IFLA_VXLAN_LEARNING,
-       IFLA_VXLAN_AGEING,
-       IFLA_VXLAN_LIMIT,
-       IFLA_VXLAN_PORT_RANGE,  /* source port */
-       IFLA_VXLAN_PROXY,
-       IFLA_VXLAN_RSC,
-       IFLA_VXLAN_L2MISS,
-       IFLA_VXLAN_L3MISS,
-       IFLA_VXLAN_PORT,        /* destination port */
-       IFLA_VXLAN_GROUP6,
-       IFLA_VXLAN_LOCAL6,
-       IFLA_VXLAN_UDP_CSUM,
-       IFLA_VXLAN_UDP_ZERO_CSUM6_TX,
-       IFLA_VXLAN_UDP_ZERO_CSUM6_RX,
-       IFLA_VXLAN_REMCSUM_TX,
-       IFLA_VXLAN_REMCSUM_RX,
-       IFLA_VXLAN_GBP,
-       IFLA_VXLAN_REMCSUM_NOPARTIAL,
-       IFLA_VXLAN_COLLECT_METADATA,
-       IFLA_VXLAN_LABEL,
-       IFLA_VXLAN_GPE,
-       __IFLA_VXLAN_MAX
-};
-#define IFLA_VXLAN_MAX (__IFLA_VXLAN_MAX - 1)
-
-struct ifla_vxlan_port_range {
-       __be16  low;
-       __be16  high;
-};
-
-/* GENEVE section */
-enum {
-       IFLA_GENEVE_UNSPEC,
-       IFLA_GENEVE_ID,
-       IFLA_GENEVE_REMOTE,
-       IFLA_GENEVE_TTL,
-       IFLA_GENEVE_TOS,
-       IFLA_GENEVE_PORT,       /* destination port */
-       IFLA_GENEVE_COLLECT_METADATA,
-       IFLA_GENEVE_REMOTE6,
-       IFLA_GENEVE_UDP_CSUM,
-       IFLA_GENEVE_UDP_ZERO_CSUM6_TX,
-       IFLA_GENEVE_UDP_ZERO_CSUM6_RX,
-       IFLA_GENEVE_LABEL,
-       __IFLA_GENEVE_MAX
-};
-#define IFLA_GENEVE_MAX        (__IFLA_GENEVE_MAX - 1)
-
-/* PPP section */
-enum {
-       IFLA_PPP_UNSPEC,
-       IFLA_PPP_DEV_FD,
-       __IFLA_PPP_MAX
-};
-#define IFLA_PPP_MAX (__IFLA_PPP_MAX - 1)
-
-/* GTP section */
-
-enum ifla_gtp_role {
-       GTP_ROLE_GGSN = 0,
-       GTP_ROLE_SGSN,
-};
-
-enum {
-       IFLA_GTP_UNSPEC,
-       IFLA_GTP_FD0,
-       IFLA_GTP_FD1,
-       IFLA_GTP_PDP_HASHSIZE,
-       IFLA_GTP_ROLE,
-       __IFLA_GTP_MAX,
-};
-#define IFLA_GTP_MAX (__IFLA_GTP_MAX - 1)
-
-/* Bonding section */
-
-enum {
-       IFLA_BOND_UNSPEC,
-       IFLA_BOND_MODE,
-       IFLA_BOND_ACTIVE_SLAVE,
-       IFLA_BOND_MIIMON,
-       IFLA_BOND_UPDELAY,
-       IFLA_BOND_DOWNDELAY,
-       IFLA_BOND_USE_CARRIER,
-       IFLA_BOND_ARP_INTERVAL,
-       IFLA_BOND_ARP_IP_TARGET,
-       IFLA_BOND_ARP_VALIDATE,
-       IFLA_BOND_ARP_ALL_TARGETS,
-       IFLA_BOND_PRIMARY,
-       IFLA_BOND_PRIMARY_RESELECT,
-       IFLA_BOND_FAIL_OVER_MAC,
-       IFLA_BOND_XMIT_HASH_POLICY,
-       IFLA_BOND_RESEND_IGMP,
-       IFLA_BOND_NUM_PEER_NOTIF,
-       IFLA_BOND_ALL_SLAVES_ACTIVE,
-       IFLA_BOND_MIN_LINKS,
-       IFLA_BOND_LP_INTERVAL,
-       IFLA_BOND_PACKETS_PER_SLAVE,
-       IFLA_BOND_AD_LACP_RATE,
-       IFLA_BOND_AD_SELECT,
-       IFLA_BOND_AD_INFO,
-       IFLA_BOND_AD_ACTOR_SYS_PRIO,
-       IFLA_BOND_AD_USER_PORT_KEY,
-       IFLA_BOND_AD_ACTOR_SYSTEM,
-       IFLA_BOND_TLB_DYNAMIC_LB,
-       __IFLA_BOND_MAX,
-};
-
-#define IFLA_BOND_MAX  (__IFLA_BOND_MAX - 1)
-
-enum {
-       IFLA_BOND_AD_INFO_UNSPEC,
-       IFLA_BOND_AD_INFO_AGGREGATOR,
-       IFLA_BOND_AD_INFO_NUM_PORTS,
-       IFLA_BOND_AD_INFO_ACTOR_KEY,
-       IFLA_BOND_AD_INFO_PARTNER_KEY,
-       IFLA_BOND_AD_INFO_PARTNER_MAC,
-       __IFLA_BOND_AD_INFO_MAX,
-};
-
-#define IFLA_BOND_AD_INFO_MAX  (__IFLA_BOND_AD_INFO_MAX - 1)
-
-enum {
-       IFLA_BOND_SLAVE_UNSPEC,
-       IFLA_BOND_SLAVE_STATE,
-       IFLA_BOND_SLAVE_MII_STATUS,
-       IFLA_BOND_SLAVE_LINK_FAILURE_COUNT,
-       IFLA_BOND_SLAVE_PERM_HWADDR,
-       IFLA_BOND_SLAVE_QUEUE_ID,
-       IFLA_BOND_SLAVE_AD_AGGREGATOR_ID,
-       IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE,
-       IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE,
-       __IFLA_BOND_SLAVE_MAX,
-};
-
-#define IFLA_BOND_SLAVE_MAX    (__IFLA_BOND_SLAVE_MAX - 1)
-
-/* SR-IOV virtual function management section */
-
-enum {
-       IFLA_VF_INFO_UNSPEC,
-       IFLA_VF_INFO,
-       __IFLA_VF_INFO_MAX,
-};
-
-#define IFLA_VF_INFO_MAX (__IFLA_VF_INFO_MAX - 1)
-
-enum {
-       IFLA_VF_UNSPEC,
-       IFLA_VF_MAC,            /* Hardware queue specific attributes */
-       IFLA_VF_VLAN,           /* VLAN ID and QoS */
-       IFLA_VF_TX_RATE,        /* Max TX Bandwidth Allocation */
-       IFLA_VF_SPOOFCHK,       /* Spoof Checking on/off switch */
-       IFLA_VF_LINK_STATE,     /* link state enable/disable/auto switch */
-       IFLA_VF_RATE,           /* Min and Max TX Bandwidth Allocation */
-       IFLA_VF_RSS_QUERY_EN,   /* RSS Redirection Table and Hash Key query
-                                * on/off switch
-                                */
-       IFLA_VF_STATS,          /* network device statistics */
-       IFLA_VF_TRUST,          /* Trust VF */
-       IFLA_VF_IB_NODE_GUID,   /* VF Infiniband node GUID */
-       IFLA_VF_IB_PORT_GUID,   /* VF Infiniband port GUID */
-       IFLA_VF_VLAN_LIST,      /* nested list of vlans, option for QinQ */
-       __IFLA_VF_MAX,
-};
-
-#define IFLA_VF_MAX (__IFLA_VF_MAX - 1)
-
-struct ifla_vf_mac {
-       __u32 vf;
-       __u8 mac[32]; /* MAX_ADDR_LEN */
-};
-
-struct ifla_vf_vlan {
-       __u32 vf;
-       __u32 vlan; /* 0 - 4095, 0 disables VLAN filter */
-       __u32 qos;
-};
-
-enum {
-       IFLA_VF_VLAN_INFO_UNSPEC,
-       IFLA_VF_VLAN_INFO,      /* VLAN ID, QoS and VLAN protocol */
-       __IFLA_VF_VLAN_INFO_MAX,
-};
-
-#define IFLA_VF_VLAN_INFO_MAX (__IFLA_VF_VLAN_INFO_MAX - 1)
-#define MAX_VLAN_LIST_LEN 1
-
-struct ifla_vf_vlan_info {
-       __u32 vf;
-       __u32 vlan; /* 0 - 4095, 0 disables VLAN filter */
-       __u32 qos;
-       __be16 vlan_proto; /* VLAN protocol either 802.1Q or 802.1ad */
-};
-
-struct ifla_vf_tx_rate {
-       __u32 vf;
-       __u32 rate; /* Max TX bandwidth in Mbps, 0 disables throttling */
-};
-
-struct ifla_vf_rate {
-       __u32 vf;
-       __u32 min_tx_rate; /* Min Bandwidth in Mbps */
-       __u32 max_tx_rate; /* Max Bandwidth in Mbps */
-};
-
-struct ifla_vf_spoofchk {
-       __u32 vf;
-       __u32 setting;
-};
-
-struct ifla_vf_guid {
-       __u32 vf;
-       __u64 guid;
-};
-
-enum {
-       IFLA_VF_LINK_STATE_AUTO,        /* link state of the uplink */
-       IFLA_VF_LINK_STATE_ENABLE,      /* link always up */
-       IFLA_VF_LINK_STATE_DISABLE,     /* link always down */
-       __IFLA_VF_LINK_STATE_MAX,
-};
-
-struct ifla_vf_link_state {
-       __u32 vf;
-       __u32 link_state;
-};
-
-struct ifla_vf_rss_query_en {
-       __u32 vf;
-       __u32 setting;
-};
-
-enum {
-       IFLA_VF_STATS_RX_PACKETS,
-       IFLA_VF_STATS_TX_PACKETS,
-       IFLA_VF_STATS_RX_BYTES,
-       IFLA_VF_STATS_TX_BYTES,
-       IFLA_VF_STATS_BROADCAST,
-       IFLA_VF_STATS_MULTICAST,
-       IFLA_VF_STATS_PAD,
-       __IFLA_VF_STATS_MAX,
-};
-
-#define IFLA_VF_STATS_MAX (__IFLA_VF_STATS_MAX - 1)
-
-struct ifla_vf_trust {
-       __u32 vf;
-       __u32 setting;
-};
-
-/* VF ports management section
- *
- *     Nested layout of set/get msg is:
- *
- *             [IFLA_NUM_VF]
- *             [IFLA_VF_PORTS]
- *                     [IFLA_VF_PORT]
- *                             [IFLA_PORT_*], ...
- *                     [IFLA_VF_PORT]
- *                             [IFLA_PORT_*], ...
- *                     ...
- *             [IFLA_PORT_SELF]
- *                     [IFLA_PORT_*], ...
- */
-
-enum {
-       IFLA_VF_PORT_UNSPEC,
-       IFLA_VF_PORT,                   /* nest */
-       __IFLA_VF_PORT_MAX,
-};
-
-#define IFLA_VF_PORT_MAX (__IFLA_VF_PORT_MAX - 1)
-
-enum {
-       IFLA_PORT_UNSPEC,
-       IFLA_PORT_VF,                   /* __u32 */
-       IFLA_PORT_PROFILE,              /* string */
-       IFLA_PORT_VSI_TYPE,             /* 802.1Qbg (pre-)standard VDP */
-       IFLA_PORT_INSTANCE_UUID,        /* binary UUID */
-       IFLA_PORT_HOST_UUID,            /* binary UUID */
-       IFLA_PORT_REQUEST,              /* __u8 */
-       IFLA_PORT_RESPONSE,             /* __u16, output only */
-       __IFLA_PORT_MAX,
-};
-
-#define IFLA_PORT_MAX (__IFLA_PORT_MAX - 1)
-
-#define PORT_PROFILE_MAX       40
-#define PORT_UUID_MAX          16
-#define PORT_SELF_VF           -1
-
-enum {
-       PORT_REQUEST_PREASSOCIATE = 0,
-       PORT_REQUEST_PREASSOCIATE_RR,
-       PORT_REQUEST_ASSOCIATE,
-       PORT_REQUEST_DISASSOCIATE,
-};
-
-enum {
-       PORT_VDP_RESPONSE_SUCCESS = 0,
-       PORT_VDP_RESPONSE_INVALID_FORMAT,
-       PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES,
-       PORT_VDP_RESPONSE_UNUSED_VTID,
-       PORT_VDP_RESPONSE_VTID_VIOLATION,
-       PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION,
-       PORT_VDP_RESPONSE_OUT_OF_SYNC,
-       /* 0x08-0xFF reserved for future VDP use */
-       PORT_PROFILE_RESPONSE_SUCCESS = 0x100,
-       PORT_PROFILE_RESPONSE_INPROGRESS,
-       PORT_PROFILE_RESPONSE_INVALID,
-       PORT_PROFILE_RESPONSE_BADSTATE,
-       PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES,
-       PORT_PROFILE_RESPONSE_ERROR,
-};
-
-struct ifla_port_vsi {
-       __u8 vsi_mgr_id;
-       __u8 vsi_type_id[3];
-       __u8 vsi_type_version;
-       __u8 pad[3];
-};
-
-
-/* IPoIB section */
-
-enum {
-       IFLA_IPOIB_UNSPEC,
-       IFLA_IPOIB_PKEY,
-       IFLA_IPOIB_MODE,
-       IFLA_IPOIB_UMCAST,
-       __IFLA_IPOIB_MAX
-};
-
-enum {
-       IPOIB_MODE_DATAGRAM  = 0, /* using unreliable datagram QPs */
-       IPOIB_MODE_CONNECTED = 1, /* using connected QPs */
-};
-
-#define IFLA_IPOIB_MAX (__IFLA_IPOIB_MAX - 1)
-
-
-/* HSR section */
-
-enum {
-       IFLA_HSR_UNSPEC,
-       IFLA_HSR_SLAVE1,
-       IFLA_HSR_SLAVE2,
-       IFLA_HSR_MULTICAST_SPEC,        /* Last byte of supervision addr */
-       IFLA_HSR_SUPERVISION_ADDR,      /* Supervision frame multicast addr */
-       IFLA_HSR_SEQ_NR,
-       IFLA_HSR_VERSION,               /* HSR version */
-       __IFLA_HSR_MAX,
-};
-
-#define IFLA_HSR_MAX (__IFLA_HSR_MAX - 1)
-
-/* STATS section */
-
-struct if_stats_msg {
-       __u8  family;
-       __u8  pad1;
-       __u16 pad2;
-       __u32 ifindex;
-       __u32 filter_mask;
-};
-
-/* A stats attribute can be netdev specific or a global stat.
- * For netdev stats, lets use the prefix IFLA_STATS_LINK_*
- */
-enum {
-       IFLA_STATS_UNSPEC, /* also used as 64bit pad attribute */
-       IFLA_STATS_LINK_64,
-       IFLA_STATS_LINK_XSTATS,
-       IFLA_STATS_LINK_XSTATS_SLAVE,
-       IFLA_STATS_LINK_OFFLOAD_XSTATS,
-       IFLA_STATS_AF_SPEC,
-       __IFLA_STATS_MAX,
-};
-
-#define IFLA_STATS_MAX (__IFLA_STATS_MAX - 1)
-
-#define IFLA_STATS_FILTER_BIT(ATTR)    (1 << (ATTR - 1))
-
-/* These are embedded into IFLA_STATS_LINK_XSTATS:
- * [IFLA_STATS_LINK_XSTATS]
- * -> [LINK_XSTATS_TYPE_xxx]
- *    -> [rtnl link type specific attributes]
- */
-enum {
-       LINK_XSTATS_TYPE_UNSPEC,
-       LINK_XSTATS_TYPE_BRIDGE,
-       __LINK_XSTATS_TYPE_MAX
-};
-#define LINK_XSTATS_TYPE_MAX (__LINK_XSTATS_TYPE_MAX - 1)
-
-/* These are stats embedded into IFLA_STATS_LINK_OFFLOAD_XSTATS */
-enum {
-       IFLA_OFFLOAD_XSTATS_UNSPEC,
-       IFLA_OFFLOAD_XSTATS_CPU_HIT, /* struct rtnl_link_stats64 */
-       __IFLA_OFFLOAD_XSTATS_MAX
-};
-#define IFLA_OFFLOAD_XSTATS_MAX (__IFLA_OFFLOAD_XSTATS_MAX - 1)
-
-/* XDP section */
-
-#define XDP_FLAGS_UPDATE_IF_NOEXIST    (1U << 0)
-#define XDP_FLAGS_SKB_MODE             (1U << 1)
-#define XDP_FLAGS_DRV_MODE             (1U << 2)
-#define XDP_FLAGS_HW_MODE              (1U << 3)
-#define XDP_FLAGS_MODES                        (XDP_FLAGS_SKB_MODE | \
-                                        XDP_FLAGS_DRV_MODE | \
-                                        XDP_FLAGS_HW_MODE)
-#define XDP_FLAGS_MASK                 (XDP_FLAGS_UPDATE_IF_NOEXIST | \
-                                        XDP_FLAGS_MODES)
-
-/* These are stored into IFLA_XDP_ATTACHED on dump. */
-enum {
-       XDP_ATTACHED_NONE = 0,
-       XDP_ATTACHED_DRV,
-       XDP_ATTACHED_SKB,
-       XDP_ATTACHED_HW,
-};
-
-enum {
-       IFLA_XDP_UNSPEC,
-       IFLA_XDP_FD,
-       IFLA_XDP_ATTACHED,
-       IFLA_XDP_FLAGS,
-       IFLA_XDP_PROG_ID,
-       __IFLA_XDP_MAX,
-};
-
-#define IFLA_XDP_MAX (__IFLA_XDP_MAX - 1)
-
-enum {
-       IFLA_EVENT_NONE,
-       IFLA_EVENT_REBOOT,              /* internal reset / reboot */
-       IFLA_EVENT_FEATURES,            /* change in offload features */
-       IFLA_EVENT_BONDING_FAILOVER,    /* change in active slave */
-       IFLA_EVENT_NOTIFY_PEERS,        /* re-sent grat. arp/ndisc */
-       IFLA_EVENT_IGMP_RESEND,         /* re-sent IGMP JOIN */
-       IFLA_EVENT_BONDING_OPTIONS,     /* change in bonding options */
-};
-
-#endif /* _LINUX_IF_LINK_H */
diff --git a/include/linux/if_macsec.h b/include/linux/if_macsec.h
deleted file mode 100644 (file)
index 22939a3..0000000
+++ /dev/null
@@ -1,171 +0,0 @@
-/*
- * include/uapi/linux/if_macsec.h - MACsec device
- *
- * Copyright (c) 2015 Sabrina Dubroca <sd@queasysnail.net>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- */
-
-#ifndef _MACSEC_H
-#define _MACSEC_H
-
-#include <linux/types.h>
-
-#define MACSEC_GENL_NAME "macsec"
-#define MACSEC_GENL_VERSION 1
-
-#define MACSEC_MAX_KEY_LEN 128
-
-#define MACSEC_KEYID_LEN 16
-
-#define MACSEC_DEFAULT_CIPHER_ID   0x0080020001000001ULL
-#define MACSEC_DEFAULT_CIPHER_ALT  0x0080C20001000001ULL
-
-#define MACSEC_MIN_ICV_LEN 8
-#define MACSEC_MAX_ICV_LEN 32
-/* upper limit for ICV length as recommended by IEEE802.1AE-2006 */
-#define MACSEC_STD_ICV_LEN 16
-
-enum macsec_attrs {
-       MACSEC_ATTR_UNSPEC,
-       MACSEC_ATTR_IFINDEX,     /* u32, ifindex of the MACsec netdevice */
-       MACSEC_ATTR_RXSC_CONFIG, /* config, nested macsec_rxsc_attrs */
-       MACSEC_ATTR_SA_CONFIG,   /* config, nested macsec_sa_attrs */
-       MACSEC_ATTR_SECY,        /* dump, nested macsec_secy_attrs */
-       MACSEC_ATTR_TXSA_LIST,   /* dump, nested, macsec_sa_attrs for each TXSA */
-       MACSEC_ATTR_RXSC_LIST,   /* dump, nested, macsec_rxsc_attrs for each RXSC */
-       MACSEC_ATTR_TXSC_STATS,  /* dump, nested, macsec_txsc_stats_attr */
-       MACSEC_ATTR_SECY_STATS,  /* dump, nested, macsec_secy_stats_attr */
-       __MACSEC_ATTR_END,
-       NUM_MACSEC_ATTR = __MACSEC_ATTR_END,
-       MACSEC_ATTR_MAX = __MACSEC_ATTR_END - 1,
-};
-
-enum macsec_secy_attrs {
-       MACSEC_SECY_ATTR_UNSPEC,
-       MACSEC_SECY_ATTR_SCI,
-       MACSEC_SECY_ATTR_ENCODING_SA,
-       MACSEC_SECY_ATTR_WINDOW,
-       MACSEC_SECY_ATTR_CIPHER_SUITE,
-       MACSEC_SECY_ATTR_ICV_LEN,
-       MACSEC_SECY_ATTR_PROTECT,
-       MACSEC_SECY_ATTR_REPLAY,
-       MACSEC_SECY_ATTR_OPER,
-       MACSEC_SECY_ATTR_VALIDATE,
-       MACSEC_SECY_ATTR_ENCRYPT,
-       MACSEC_SECY_ATTR_INC_SCI,
-       MACSEC_SECY_ATTR_ES,
-       MACSEC_SECY_ATTR_SCB,
-       MACSEC_SECY_ATTR_PAD,
-       __MACSEC_SECY_ATTR_END,
-       NUM_MACSEC_SECY_ATTR = __MACSEC_SECY_ATTR_END,
-       MACSEC_SECY_ATTR_MAX = __MACSEC_SECY_ATTR_END - 1,
-};
-
-enum macsec_rxsc_attrs {
-       MACSEC_RXSC_ATTR_UNSPEC,
-       MACSEC_RXSC_ATTR_SCI,     /* config/dump, u64 */
-       MACSEC_RXSC_ATTR_ACTIVE,  /* config/dump, u8 0..1 */
-       MACSEC_RXSC_ATTR_SA_LIST, /* dump, nested */
-       MACSEC_RXSC_ATTR_STATS,   /* dump, nested, macsec_rxsc_stats_attr */
-       MACSEC_RXSC_ATTR_PAD,
-       __MACSEC_RXSC_ATTR_END,
-       NUM_MACSEC_RXSC_ATTR = __MACSEC_RXSC_ATTR_END,
-       MACSEC_RXSC_ATTR_MAX = __MACSEC_RXSC_ATTR_END - 1,
-};
-
-enum macsec_sa_attrs {
-       MACSEC_SA_ATTR_UNSPEC,
-       MACSEC_SA_ATTR_AN,     /* config/dump, u8 0..3 */
-       MACSEC_SA_ATTR_ACTIVE, /* config/dump, u8 0..1 */
-       MACSEC_SA_ATTR_PN,     /* config/dump, u32 */
-       MACSEC_SA_ATTR_KEY,    /* config, data */
-       MACSEC_SA_ATTR_KEYID,  /* config/dump, 128-bit */
-       MACSEC_SA_ATTR_STATS,  /* dump, nested, macsec_sa_stats_attr */
-       MACSEC_SA_ATTR_PAD,
-       __MACSEC_SA_ATTR_END,
-       NUM_MACSEC_SA_ATTR = __MACSEC_SA_ATTR_END,
-       MACSEC_SA_ATTR_MAX = __MACSEC_SA_ATTR_END - 1,
-};
-
-enum macsec_nl_commands {
-       MACSEC_CMD_GET_TXSC,
-       MACSEC_CMD_ADD_RXSC,
-       MACSEC_CMD_DEL_RXSC,
-       MACSEC_CMD_UPD_RXSC,
-       MACSEC_CMD_ADD_TXSA,
-       MACSEC_CMD_DEL_TXSA,
-       MACSEC_CMD_UPD_TXSA,
-       MACSEC_CMD_ADD_RXSA,
-       MACSEC_CMD_DEL_RXSA,
-       MACSEC_CMD_UPD_RXSA,
-};
-
-/* u64 per-RXSC stats */
-enum macsec_rxsc_stats_attr {
-       MACSEC_RXSC_STATS_ATTR_UNSPEC,
-       MACSEC_RXSC_STATS_ATTR_IN_OCTETS_VALIDATED,
-       MACSEC_RXSC_STATS_ATTR_IN_OCTETS_DECRYPTED,
-       MACSEC_RXSC_STATS_ATTR_IN_PKTS_UNCHECKED,
-       MACSEC_RXSC_STATS_ATTR_IN_PKTS_DELAYED,
-       MACSEC_RXSC_STATS_ATTR_IN_PKTS_OK,
-       MACSEC_RXSC_STATS_ATTR_IN_PKTS_INVALID,
-       MACSEC_RXSC_STATS_ATTR_IN_PKTS_LATE,
-       MACSEC_RXSC_STATS_ATTR_IN_PKTS_NOT_VALID,
-       MACSEC_RXSC_STATS_ATTR_IN_PKTS_NOT_USING_SA,
-       MACSEC_RXSC_STATS_ATTR_IN_PKTS_UNUSED_SA,
-       MACSEC_RXSC_STATS_ATTR_PAD,
-       __MACSEC_RXSC_STATS_ATTR_END,
-       NUM_MACSEC_RXSC_STATS_ATTR = __MACSEC_RXSC_STATS_ATTR_END,
-       MACSEC_RXSC_STATS_ATTR_MAX = __MACSEC_RXSC_STATS_ATTR_END - 1,
-};
-
-/* u32 per-{RX,TX}SA stats */
-enum macsec_sa_stats_attr {
-       MACSEC_SA_STATS_ATTR_UNSPEC,
-       MACSEC_SA_STATS_ATTR_IN_PKTS_OK,
-       MACSEC_SA_STATS_ATTR_IN_PKTS_INVALID,
-       MACSEC_SA_STATS_ATTR_IN_PKTS_NOT_VALID,
-       MACSEC_SA_STATS_ATTR_IN_PKTS_NOT_USING_SA,
-       MACSEC_SA_STATS_ATTR_IN_PKTS_UNUSED_SA,
-       MACSEC_SA_STATS_ATTR_OUT_PKTS_PROTECTED,
-       MACSEC_SA_STATS_ATTR_OUT_PKTS_ENCRYPTED,
-       __MACSEC_SA_STATS_ATTR_END,
-       NUM_MACSEC_SA_STATS_ATTR = __MACSEC_SA_STATS_ATTR_END,
-       MACSEC_SA_STATS_ATTR_MAX = __MACSEC_SA_STATS_ATTR_END - 1,
-};
-
-/* u64 per-TXSC stats */
-enum macsec_txsc_stats_attr {
-       MACSEC_TXSC_STATS_ATTR_UNSPEC,
-       MACSEC_TXSC_STATS_ATTR_OUT_PKTS_PROTECTED,
-       MACSEC_TXSC_STATS_ATTR_OUT_PKTS_ENCRYPTED,
-       MACSEC_TXSC_STATS_ATTR_OUT_OCTETS_PROTECTED,
-       MACSEC_TXSC_STATS_ATTR_OUT_OCTETS_ENCRYPTED,
-       MACSEC_TXSC_STATS_ATTR_PAD,
-       __MACSEC_TXSC_STATS_ATTR_END,
-       NUM_MACSEC_TXSC_STATS_ATTR = __MACSEC_TXSC_STATS_ATTR_END,
-       MACSEC_TXSC_STATS_ATTR_MAX = __MACSEC_TXSC_STATS_ATTR_END - 1,
-};
-
-/* u64 per-SecY stats */
-enum macsec_secy_stats_attr {
-       MACSEC_SECY_STATS_ATTR_UNSPEC,
-       MACSEC_SECY_STATS_ATTR_OUT_PKTS_UNTAGGED,
-       MACSEC_SECY_STATS_ATTR_IN_PKTS_UNTAGGED,
-       MACSEC_SECY_STATS_ATTR_OUT_PKTS_TOO_LONG,
-       MACSEC_SECY_STATS_ATTR_IN_PKTS_NO_TAG,
-       MACSEC_SECY_STATS_ATTR_IN_PKTS_BAD_TAG,
-       MACSEC_SECY_STATS_ATTR_IN_PKTS_UNKNOWN_SCI,
-       MACSEC_SECY_STATS_ATTR_IN_PKTS_NO_SCI,
-       MACSEC_SECY_STATS_ATTR_IN_PKTS_OVERRUN,
-       MACSEC_SECY_STATS_ATTR_PAD,
-       __MACSEC_SECY_STATS_ATTR_END,
-       NUM_MACSEC_SECY_STATS_ATTR = __MACSEC_SECY_STATS_ATTR_END,
-       MACSEC_SECY_STATS_ATTR_MAX = __MACSEC_SECY_STATS_ATTR_END - 1,
-};
-
-#endif /* _MACSEC_H */
diff --git a/include/linux/if_packet.h b/include/linux/if_packet.h
deleted file mode 100644 (file)
index 4df96a7..0000000
+++ /dev/null
@@ -1,302 +0,0 @@
-#ifndef __LINUX_IF_PACKET_H
-#define __LINUX_IF_PACKET_H
-
-#include <linux/types.h>
-
-struct sockaddr_pkt {
-       unsigned short spkt_family;
-       unsigned char spkt_device[14];
-       __be16 spkt_protocol;
-};
-
-struct sockaddr_ll {
-       unsigned short  sll_family;
-       __be16          sll_protocol;
-       int             sll_ifindex;
-       unsigned short  sll_hatype;
-       unsigned char   sll_pkttype;
-       unsigned char   sll_halen;
-       unsigned char   sll_addr[8];
-};
-
-/* Packet types */
-
-#define PACKET_HOST            0               /* To us                */
-#define PACKET_BROADCAST       1               /* To all               */
-#define PACKET_MULTICAST       2               /* To group             */
-#define PACKET_OTHERHOST       3               /* To someone else      */
-#define PACKET_OUTGOING                4               /* Outgoing of any type */
-#define PACKET_LOOPBACK                5               /* MC/BRD frame looped back */
-#define PACKET_USER            6               /* To user space        */
-#define PACKET_KERNEL          7               /* To kernel space      */
-/* Unused, PACKET_FASTROUTE and PACKET_LOOPBACK are invisible to user space */
-#define PACKET_FASTROUTE       6               /* Fastrouted frame     */
-
-/* Packet socket options */
-
-#define PACKET_ADD_MEMBERSHIP          1
-#define PACKET_DROP_MEMBERSHIP         2
-#define PACKET_RECV_OUTPUT             3
-/* Value 4 is still used by obsolete turbo-packet. */
-#define PACKET_RX_RING                 5
-#define PACKET_STATISTICS              6
-#define PACKET_COPY_THRESH             7
-#define PACKET_AUXDATA                 8
-#define PACKET_ORIGDEV                 9
-#define PACKET_VERSION                 10
-#define PACKET_HDRLEN                  11
-#define PACKET_RESERVE                 12
-#define PACKET_TX_RING                 13
-#define PACKET_LOSS                    14
-#define PACKET_VNET_HDR                        15
-#define PACKET_TX_TIMESTAMP            16
-#define PACKET_TIMESTAMP               17
-#define PACKET_FANOUT                  18
-#define PACKET_TX_HAS_OFF              19
-#define PACKET_QDISC_BYPASS            20
-#define PACKET_ROLLOVER_STATS          21
-#define PACKET_FANOUT_DATA             22
-
-#define PACKET_FANOUT_HASH             0
-#define PACKET_FANOUT_LB               1
-#define PACKET_FANOUT_CPU              2
-#define PACKET_FANOUT_ROLLOVER         3
-#define PACKET_FANOUT_RND              4
-#define PACKET_FANOUT_QM               5
-#define PACKET_FANOUT_CBPF             6
-#define PACKET_FANOUT_EBPF             7
-#define PACKET_FANOUT_FLAG_ROLLOVER    0x1000
-#define PACKET_FANOUT_FLAG_UNIQUEID    0x2000
-#define PACKET_FANOUT_FLAG_DEFRAG      0x8000
-
-struct tpacket_stats {
-       unsigned int    tp_packets;
-       unsigned int    tp_drops;
-};
-
-struct tpacket_stats_v3 {
-       unsigned int    tp_packets;
-       unsigned int    tp_drops;
-       unsigned int    tp_freeze_q_cnt;
-};
-
-struct tpacket_rollover_stats {
-       __aligned_u64   tp_all;
-       __aligned_u64   tp_huge;
-       __aligned_u64   tp_failed;
-};
-
-union tpacket_stats_u {
-       struct tpacket_stats stats1;
-       struct tpacket_stats_v3 stats3;
-};
-
-struct tpacket_auxdata {
-       __u32           tp_status;
-       __u32           tp_len;
-       __u32           tp_snaplen;
-       __u16           tp_mac;
-       __u16           tp_net;
-       __u16           tp_vlan_tci;
-       __u16           tp_vlan_tpid;
-};
-
-/* Rx ring - header status */
-#define TP_STATUS_KERNEL                     0
-#define TP_STATUS_USER                 (1 << 0)
-#define TP_STATUS_COPY                 (1 << 1)
-#define TP_STATUS_LOSING               (1 << 2)
-#define TP_STATUS_CSUMNOTREADY         (1 << 3)
-#define TP_STATUS_VLAN_VALID           (1 << 4) /* auxdata has valid tp_vlan_tci */
-#define TP_STATUS_BLK_TMO              (1 << 5)
-#define TP_STATUS_VLAN_TPID_VALID      (1 << 6) /* auxdata has valid tp_vlan_tpid */
-#define TP_STATUS_CSUM_VALID           (1 << 7)
-
-/* Tx ring - header status */
-#define TP_STATUS_AVAILABLE          0
-#define TP_STATUS_SEND_REQUEST (1 << 0)
-#define TP_STATUS_SENDING      (1 << 1)
-#define TP_STATUS_WRONG_FORMAT (1 << 2)
-
-/* Rx and Tx ring - header status */
-#define TP_STATUS_TS_SOFTWARE          (1 << 29)
-#define TP_STATUS_TS_SYS_HARDWARE      (1 << 30) /* deprecated, never set */
-#define TP_STATUS_TS_RAW_HARDWARE      (1 << 31)
-
-/* Rx ring - feature request bits */
-#define TP_FT_REQ_FILL_RXHASH  0x1
-
-struct tpacket_hdr {
-       unsigned long   tp_status;
-       unsigned int    tp_len;
-       unsigned int    tp_snaplen;
-       unsigned short  tp_mac;
-       unsigned short  tp_net;
-       unsigned int    tp_sec;
-       unsigned int    tp_usec;
-};
-
-#define TPACKET_ALIGNMENT      16
-#define TPACKET_ALIGN(x)       (((x)+TPACKET_ALIGNMENT-1)&~(TPACKET_ALIGNMENT-1))
-#define TPACKET_HDRLEN         (TPACKET_ALIGN(sizeof(struct tpacket_hdr)) + sizeof(struct sockaddr_ll))
-
-struct tpacket2_hdr {
-       __u32           tp_status;
-       __u32           tp_len;
-       __u32           tp_snaplen;
-       __u16           tp_mac;
-       __u16           tp_net;
-       __u32           tp_sec;
-       __u32           tp_nsec;
-       __u16           tp_vlan_tci;
-       __u16           tp_vlan_tpid;
-       __u8            tp_padding[4];
-};
-
-struct tpacket_hdr_variant1 {
-       __u32   tp_rxhash;
-       __u32   tp_vlan_tci;
-       __u16   tp_vlan_tpid;
-       __u16   tp_padding;
-};
-
-struct tpacket3_hdr {
-       __u32           tp_next_offset;
-       __u32           tp_sec;
-       __u32           tp_nsec;
-       __u32           tp_snaplen;
-       __u32           tp_len;
-       __u32           tp_status;
-       __u16           tp_mac;
-       __u16           tp_net;
-       /* pkt_hdr variants */
-       union {
-               struct tpacket_hdr_variant1 hv1;
-       };
-       __u8            tp_padding[8];
-};
-
-struct tpacket_bd_ts {
-       unsigned int ts_sec;
-       union {
-               unsigned int ts_usec;
-               unsigned int ts_nsec;
-       };
-};
-
-struct tpacket_hdr_v1 {
-       __u32   block_status;
-       __u32   num_pkts;
-       __u32   offset_to_first_pkt;
-
-       /* Number of valid bytes (including padding)
-        * blk_len <= tp_block_size
-        */
-       __u32   blk_len;
-
-       /*
-        * Quite a few uses of sequence number:
-        * 1. Make sure cache flush etc worked.
-        *    Well, one can argue - why not use the increasing ts below?
-        *    But look at 2. below first.
-        * 2. When you pass around blocks to other user space decoders,
-        *    you can see which blk[s] is[are] outstanding etc.
-        * 3. Validate kernel code.
-        */
-       __aligned_u64   seq_num;
-
-       /*
-        * ts_last_pkt:
-        *
-        * Case 1.      Block has 'N'(N >=1) packets and TMO'd(timed out)
-        *              ts_last_pkt == 'time-stamp of last packet' and NOT the
-        *              time when the timer fired and the block was closed.
-        *              By providing the ts of the last packet we can absolutely
-        *              guarantee that time-stamp wise, the first packet in the
-        *              next block will never precede the last packet of the
-        *              previous block.
-        * Case 2.      Block has zero packets and TMO'd
-        *              ts_last_pkt = time when the timer fired and the block
-        *              was closed.
-        * Case 3.      Block has 'N' packets and NO TMO.
-        *              ts_last_pkt = time-stamp of the last pkt in the block.
-        *
-        * ts_first_pkt:
-        *              Is always the time-stamp when the block was opened.
-        *              Case a) ZERO packets
-        *                      No packets to deal with but atleast you know the
-        *                      time-interval of this block.
-        *              Case b) Non-zero packets
-        *                      Use the ts of the first packet in the block.
-        *
-        */
-       struct tpacket_bd_ts    ts_first_pkt, ts_last_pkt;
-};
-
-union tpacket_bd_header_u {
-       struct tpacket_hdr_v1 bh1;
-};
-
-struct tpacket_block_desc {
-       __u32 version;
-       __u32 offset_to_priv;
-       union tpacket_bd_header_u hdr;
-};
-
-#define TPACKET2_HDRLEN                (TPACKET_ALIGN(sizeof(struct tpacket2_hdr)) + sizeof(struct sockaddr_ll))
-#define TPACKET3_HDRLEN                (TPACKET_ALIGN(sizeof(struct tpacket3_hdr)) + sizeof(struct sockaddr_ll))
-
-enum tpacket_versions {
-       TPACKET_V1,
-       TPACKET_V2,
-       TPACKET_V3
-};
-
-/*
-   Frame structure:
-
-   - Start. Frame must be aligned to TPACKET_ALIGNMENT=16
-   - struct tpacket_hdr
-   - pad to TPACKET_ALIGNMENT=16
-   - struct sockaddr_ll
-   - Gap, chosen so that packet data (Start+tp_net) alignes to TPACKET_ALIGNMENT=16
-   - Start+tp_mac: [ Optional MAC header ]
-   - Start+tp_net: Packet data, aligned to TPACKET_ALIGNMENT=16.
-   - Pad to align to TPACKET_ALIGNMENT=16
- */
-
-struct tpacket_req {
-       unsigned int    tp_block_size;  /* Minimal size of contiguous block */
-       unsigned int    tp_block_nr;    /* Number of blocks */
-       unsigned int    tp_frame_size;  /* Size of frame */
-       unsigned int    tp_frame_nr;    /* Total number of frames */
-};
-
-struct tpacket_req3 {
-       unsigned int    tp_block_size;  /* Minimal size of contiguous block */
-       unsigned int    tp_block_nr;    /* Number of blocks */
-       unsigned int    tp_frame_size;  /* Size of frame */
-       unsigned int    tp_frame_nr;    /* Total number of frames */
-       unsigned int    tp_retire_blk_tov; /* timeout in msecs */
-       unsigned int    tp_sizeof_priv; /* offset to private data area */
-       unsigned int    tp_feature_req_word;
-};
-
-union tpacket_req_u {
-       struct tpacket_req      req;
-       struct tpacket_req3     req3;
-};
-
-struct packet_mreq {
-       int             mr_ifindex;
-       unsigned short  mr_type;
-       unsigned short  mr_alen;
-       unsigned char   mr_address[8];
-};
-
-#define PACKET_MR_MULTICAST    0
-#define PACKET_MR_PROMISC      1
-#define PACKET_MR_ALLMULTI     2
-#define PACKET_MR_UNICAST      3
-
-#endif
diff --git a/include/linux/if_tun.h b/include/linux/if_tun.h
deleted file mode 100644 (file)
index d5ecb42..0000000
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- *  Universal TUN/TAP device driver.
- *  Copyright (C) 1999-2000 Maxim Krasnyansky <max_mk@yahoo.com>
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- *  GNU General Public License for more details.
- */
-
-#ifndef __IF_TUN_H
-#define __IF_TUN_H
-
-#include <linux/types.h>
-#include <linux/if_ether.h>
-#include <linux/filter.h>
-
-/* Read queue size */
-#define TUN_READQ_SIZE 500
-/* TUN device type flags: deprecated. Use IFF_TUN/IFF_TAP instead. */
-#define TUN_TUN_DEV    IFF_TUN
-#define TUN_TAP_DEV    IFF_TAP
-#define TUN_TYPE_MASK   0x000f
-
-/* Ioctl defines */
-#define TUNSETNOCSUM  _IOW('T', 200, int) 
-#define TUNSETDEBUG   _IOW('T', 201, int) 
-#define TUNSETIFF     _IOW('T', 202, int) 
-#define TUNSETPERSIST _IOW('T', 203, int) 
-#define TUNSETOWNER   _IOW('T', 204, int)
-#define TUNSETLINK    _IOW('T', 205, int)
-#define TUNSETGROUP   _IOW('T', 206, int)
-#define TUNGETFEATURES _IOR('T', 207, unsigned int)
-#define TUNSETOFFLOAD  _IOW('T', 208, unsigned int)
-#define TUNSETTXFILTER _IOW('T', 209, unsigned int)
-#define TUNGETIFF      _IOR('T', 210, unsigned int)
-#define TUNGETSNDBUF   _IOR('T', 211, int)
-#define TUNSETSNDBUF   _IOW('T', 212, int)
-#define TUNATTACHFILTER _IOW('T', 213, struct sock_fprog)
-#define TUNDETACHFILTER _IOW('T', 214, struct sock_fprog)
-#define TUNGETVNETHDRSZ _IOR('T', 215, int)
-#define TUNSETVNETHDRSZ _IOW('T', 216, int)
-#define TUNSETQUEUE  _IOW('T', 217, int)
-#define TUNSETIFINDEX  _IOW('T', 218, unsigned int)
-#define TUNGETFILTER _IOR('T', 219, struct sock_fprog)
-#define TUNSETVNETLE _IOW('T', 220, int)
-#define TUNGETVNETLE _IOR('T', 221, int)
-/* The TUNSETVNETBE and TUNGETVNETBE ioctls are for cross-endian support on
- * little-endian hosts. Not all kernel configurations support them, but all
- * configurations that support SET also support GET.
- */
-#define TUNSETVNETBE _IOW('T', 222, int)
-#define TUNGETVNETBE _IOR('T', 223, int)
-
-/* TUNSETIFF ifr flags */
-#define IFF_TUN                0x0001
-#define IFF_TAP                0x0002
-#define IFF_NO_PI      0x1000
-/* This flag has no real effect */
-#define IFF_ONE_QUEUE  0x2000
-#define IFF_VNET_HDR   0x4000
-#define IFF_TUN_EXCL   0x8000
-#define IFF_MULTI_QUEUE 0x0100
-#define IFF_ATTACH_QUEUE 0x0200
-#define IFF_DETACH_QUEUE 0x0400
-/* read-only flag */
-#define IFF_PERSIST    0x0800
-#define IFF_NOFILTER   0x1000
-
-/* Socket options */
-#define TUN_TX_TIMESTAMP 1
-
-/* Features for GSO (TUNSETOFFLOAD). */
-#define TUN_F_CSUM     0x01    /* You can hand me unchecksummed packets. */
-#define TUN_F_TSO4     0x02    /* I can handle TSO for IPv4 packets */
-#define TUN_F_TSO6     0x04    /* I can handle TSO for IPv6 packets */
-#define TUN_F_TSO_ECN  0x08    /* I can handle TSO with ECN bits. */
-#define TUN_F_UFO      0x10    /* I can handle UFO packets */
-
-/* Protocol info prepended to the packets (when IFF_NO_PI is not set) */
-#define TUN_PKT_STRIP  0x0001
-struct tun_pi {
-       __u16  flags;
-       __be16 proto;
-};
-
-/*
- * Filter spec (used for SETXXFILTER ioctls)
- * This stuff is applicable only to the TAP (Ethernet) devices.
- * If the count is zero the filter is disabled and the driver accepts
- * all packets (promisc mode).
- * If the filter is enabled in order to accept broadcast packets
- * broadcast addr must be explicitly included in the addr list.
- */
-#define TUN_FLT_ALLMULTI 0x0001 /* Accept all multicast packets */
-struct tun_filter {
-       __u16  flags; /* TUN_FLT_ flags see above */
-       __u16  count; /* Number of addresses */
-       __u8   addr[0][ETH_ALEN];
-};
-
-#endif /* __IF_TUN_H */
diff --git a/include/linux/if_tunnel.h b/include/linux/if_tunnel.h
deleted file mode 100644 (file)
index 21834ca..0000000
+++ /dev/null
@@ -1,158 +0,0 @@
-#ifndef _IF_TUNNEL_H_
-#define _IF_TUNNEL_H_
-
-#include <linux/types.h>
-#include <linux/if.h>
-#include <linux/ip.h>
-#include <linux/in6.h>
-#include <asm/byteorder.h>
-
-
-#define SIOCGETTUNNEL   (SIOCDEVPRIVATE + 0)
-#define SIOCADDTUNNEL   (SIOCDEVPRIVATE + 1)
-#define SIOCDELTUNNEL   (SIOCDEVPRIVATE + 2)
-#define SIOCCHGTUNNEL   (SIOCDEVPRIVATE + 3)
-#define SIOCGETPRL      (SIOCDEVPRIVATE + 4)
-#define SIOCADDPRL      (SIOCDEVPRIVATE + 5)
-#define SIOCDELPRL      (SIOCDEVPRIVATE + 6)
-#define SIOCCHGPRL      (SIOCDEVPRIVATE + 7)
-#define SIOCGET6RD      (SIOCDEVPRIVATE + 8)
-#define SIOCADD6RD      (SIOCDEVPRIVATE + 9)
-#define SIOCDEL6RD      (SIOCDEVPRIVATE + 10)
-#define SIOCCHG6RD      (SIOCDEVPRIVATE + 11)
-
-#define GRE_CSUM       __cpu_to_be16(0x8000)
-#define GRE_ROUTING    __cpu_to_be16(0x4000)
-#define GRE_KEY                __cpu_to_be16(0x2000)
-#define GRE_SEQ                __cpu_to_be16(0x1000)
-#define GRE_STRICT     __cpu_to_be16(0x0800)
-#define GRE_REC                __cpu_to_be16(0x0700)
-#define GRE_ACK                __cpu_to_be16(0x0080)
-#define GRE_FLAGS      __cpu_to_be16(0x0078)
-#define GRE_VERSION    __cpu_to_be16(0x0007)
-
-#define GRE_IS_CSUM(f)         ((f) & GRE_CSUM)
-#define GRE_IS_ROUTING(f)      ((f) & GRE_ROUTING)
-#define GRE_IS_KEY(f)          ((f) & GRE_KEY)
-#define GRE_IS_SEQ(f)          ((f) & GRE_SEQ)
-#define GRE_IS_STRICT(f)       ((f) & GRE_STRICT)
-#define GRE_IS_REC(f)          ((f) & GRE_REC)
-#define GRE_IS_ACK(f)          ((f) & GRE_ACK)
-
-#define GRE_VERSION_0          __cpu_to_be16(0x0000)
-#define GRE_VERSION_1          __cpu_to_be16(0x0001)
-#define GRE_PROTO_PPP          __cpu_to_be16(0x880b)
-#define GRE_PPTP_KEY_MASK      __cpu_to_be32(0xffff)
-
-struct ip_tunnel_parm {
-       char                    name[IFNAMSIZ];
-       int                     link;
-       __be16                  i_flags;
-       __be16                  o_flags;
-       __be32                  i_key;
-       __be32                  o_key;
-       struct iphdr            iph;
-};
-
-enum {
-       IFLA_IPTUN_UNSPEC,
-       IFLA_IPTUN_LINK,
-       IFLA_IPTUN_LOCAL,
-       IFLA_IPTUN_REMOTE,
-       IFLA_IPTUN_TTL,
-       IFLA_IPTUN_TOS,
-       IFLA_IPTUN_ENCAP_LIMIT,
-       IFLA_IPTUN_FLOWINFO,
-       IFLA_IPTUN_FLAGS,
-       IFLA_IPTUN_PROTO,
-       IFLA_IPTUN_PMTUDISC,
-       IFLA_IPTUN_6RD_PREFIX,
-       IFLA_IPTUN_6RD_RELAY_PREFIX,
-       IFLA_IPTUN_6RD_PREFIXLEN,
-       IFLA_IPTUN_6RD_RELAY_PREFIXLEN,
-       IFLA_IPTUN_ENCAP_TYPE,
-       IFLA_IPTUN_ENCAP_FLAGS,
-       IFLA_IPTUN_ENCAP_SPORT,
-       IFLA_IPTUN_ENCAP_DPORT,
-       IFLA_IPTUN_COLLECT_METADATA,
-       IFLA_IPTUN_FWMARK,
-       __IFLA_IPTUN_MAX,
-};
-#define IFLA_IPTUN_MAX (__IFLA_IPTUN_MAX - 1)
-
-enum tunnel_encap_types {
-       TUNNEL_ENCAP_NONE,
-       TUNNEL_ENCAP_FOU,
-       TUNNEL_ENCAP_GUE,
-};
-
-#define TUNNEL_ENCAP_FLAG_CSUM         (1<<0)
-#define TUNNEL_ENCAP_FLAG_CSUM6                (1<<1)
-#define TUNNEL_ENCAP_FLAG_REMCSUM      (1<<2)
-
-/* SIT-mode i_flags */
-#define        SIT_ISATAP      0x0001
-
-struct ip_tunnel_prl {
-       __be32                  addr;
-       __u16                   flags;
-       __u16                   __reserved;
-       __u32                   datalen;
-       __u32                   __reserved2;
-       /* data follows */
-};
-
-/* PRL flags */
-#define        PRL_DEFAULT             0x0001
-
-struct ip_tunnel_6rd {
-       struct in6_addr         prefix;
-       __be32                  relay_prefix;
-       __u16                   prefixlen;
-       __u16                   relay_prefixlen;
-};
-
-enum {
-       IFLA_GRE_UNSPEC,
-       IFLA_GRE_LINK,
-       IFLA_GRE_IFLAGS,
-       IFLA_GRE_OFLAGS,
-       IFLA_GRE_IKEY,
-       IFLA_GRE_OKEY,
-       IFLA_GRE_LOCAL,
-       IFLA_GRE_REMOTE,
-       IFLA_GRE_TTL,
-       IFLA_GRE_TOS,
-       IFLA_GRE_PMTUDISC,
-       IFLA_GRE_ENCAP_LIMIT,
-       IFLA_GRE_FLOWINFO,
-       IFLA_GRE_FLAGS,
-       IFLA_GRE_ENCAP_TYPE,
-       IFLA_GRE_ENCAP_FLAGS,
-       IFLA_GRE_ENCAP_SPORT,
-       IFLA_GRE_ENCAP_DPORT,
-       IFLA_GRE_COLLECT_METADATA,
-       IFLA_GRE_IGNORE_DF,
-       IFLA_GRE_FWMARK,
-       IFLA_GRE_ERSPAN_INDEX,
-       __IFLA_GRE_MAX,
-};
-
-#define IFLA_GRE_MAX   (__IFLA_GRE_MAX - 1)
-
-/* VTI-mode i_flags */
-#define VTI_ISVTI ((__be16)0x0001)
-
-enum {
-       IFLA_VTI_UNSPEC,
-       IFLA_VTI_LINK,
-       IFLA_VTI_IKEY,
-       IFLA_VTI_OKEY,
-       IFLA_VTI_LOCAL,
-       IFLA_VTI_REMOTE,
-       IFLA_VTI_FWMARK,
-       __IFLA_VTI_MAX,
-};
-
-#define IFLA_VTI_MAX   (__IFLA_VTI_MAX - 1)
-#endif /* _IF_TUNNEL_H_ */
diff --git a/include/linux/if_vlan.h b/include/linux/if_vlan.h
deleted file mode 100644 (file)
index 24ae007..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * VLAN                An implementation of 802.1Q VLAN tagging.
- *
- * Authors:    Ben Greear <greearb@candelatech.com>
- *
- *             This program is free software; you can redistribute it and/or
- *             modify it under the terms of the GNU General Public License
- *             as published by the Free Software Foundation; either version
- *             2 of the License, or (at your option) any later version.
- *
- */
-
-#ifndef _LINUX_IF_VLAN_H_
-#define _LINUX_IF_VLAN_H_
-
-
-/* VLAN IOCTLs are found in sockios.h */
-
-/* Passed in vlan_ioctl_args structure to determine behaviour. */
-enum vlan_ioctl_cmds {
-       ADD_VLAN_CMD,
-       DEL_VLAN_CMD,
-       SET_VLAN_INGRESS_PRIORITY_CMD,
-       SET_VLAN_EGRESS_PRIORITY_CMD,
-       GET_VLAN_INGRESS_PRIORITY_CMD,
-       GET_VLAN_EGRESS_PRIORITY_CMD,
-       SET_VLAN_NAME_TYPE_CMD,
-       SET_VLAN_FLAG_CMD,
-       GET_VLAN_REALDEV_NAME_CMD, /* If this works, you know it's a VLAN device, btw */
-       GET_VLAN_VID_CMD /* Get the VID of this VLAN (specified by name) */
-};
-
-enum vlan_flags {
-       VLAN_FLAG_REORDER_HDR   = 0x1,
-       VLAN_FLAG_GVRP          = 0x2,
-       VLAN_FLAG_LOOSE_BINDING = 0x4,
-       VLAN_FLAG_MVRP          = 0x8,
-};
-
-enum vlan_name_types {
-       VLAN_NAME_TYPE_PLUS_VID, /* Name will look like:  vlan0005 */
-       VLAN_NAME_TYPE_RAW_PLUS_VID, /* name will look like:  eth1.0005 */
-       VLAN_NAME_TYPE_PLUS_VID_NO_PAD, /* Name will look like:  vlan5 */
-       VLAN_NAME_TYPE_RAW_PLUS_VID_NO_PAD, /* Name will look like:  eth0.5 */
-       VLAN_NAME_TYPE_HIGHEST
-};
-
-struct vlan_ioctl_args {
-       int cmd; /* Should be one of the vlan_ioctl_cmds enum above. */
-       char device1[24];
-
-        union {
-               char device2[24];
-               int VID;
-               unsigned int skb_priority;
-               unsigned int name_type;
-               unsigned int bind_type;
-               unsigned int flag; /* Matches vlan_dev_priv flags */
-        } u;
-
-       short vlan_qos;   
-};
-
-#endif /* _LINUX_IF_VLAN_H_ */
diff --git a/include/linux/ife.h b/include/linux/ife.h
deleted file mode 100644 (file)
index 2954da3..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-#ifndef __UAPI_IFE_H
-#define __UAPI_IFE_H
-
-#define IFE_METAHDRLEN 2
-
-enum {
-       IFE_META_SKBMARK = 1,
-       IFE_META_HASHID,
-       IFE_META_PRIO,
-       IFE_META_QMAP,
-       IFE_META_TCINDEX,
-       __IFE_META_MAX
-};
-
-/*Can be overridden at runtime by module option*/
-#define IFE_META_MAX (__IFE_META_MAX - 1)
-
-#endif
diff --git a/include/linux/ila.h b/include/linux/ila.h
deleted file mode 100644 (file)
index 7e328d7..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-/* ila.h - ILA Interface */
-
-#ifndef _LINUX_ILA_H
-#define _LINUX_ILA_H
-
-/* NETLINK_GENERIC related info */
-#define ILA_GENL_NAME          "ila"
-#define ILA_GENL_VERSION       0x1
-
-enum {
-       ILA_ATTR_UNSPEC,
-       ILA_ATTR_LOCATOR,                       /* u64 */
-       ILA_ATTR_IDENTIFIER,                    /* u64 */
-       ILA_ATTR_LOCATOR_MATCH,                 /* u64 */
-       ILA_ATTR_IFINDEX,                       /* s32 */
-       ILA_ATTR_DIR,                           /* u32 */
-       ILA_ATTR_PAD,
-       ILA_ATTR_CSUM_MODE,                     /* u8 */
-
-       __ILA_ATTR_MAX,
-};
-
-#define ILA_ATTR_MAX           (__ILA_ATTR_MAX - 1)
-
-enum {
-       ILA_CMD_UNSPEC,
-       ILA_CMD_ADD,
-       ILA_CMD_DEL,
-       ILA_CMD_GET,
-
-       __ILA_CMD_MAX,
-};
-
-#define ILA_CMD_MAX    (__ILA_CMD_MAX - 1)
-
-#define ILA_DIR_IN     (1 << 0)
-#define ILA_DIR_OUT    (1 << 1)
-
-enum {
-       ILA_CSUM_ADJUST_TRANSPORT,
-       ILA_CSUM_NEUTRAL_MAP,
-       ILA_CSUM_NO_ACTION,
-};
-
-#endif /* _LINUX_ILA_H */
diff --git a/include/linux/in.h b/include/linux/in.h
deleted file mode 100644 (file)
index 9439efa..0000000
+++ /dev/null
@@ -1,300 +0,0 @@
-/*
- * INET                An implementation of the TCP/IP protocol suite for the LINUX
- *             operating system.  INET is implemented using the  BSD Socket
- *             interface as the means of communication with the user level.
- *
- *             Definitions of the Internet Protocol.
- *
- * Version:    @(#)in.h        1.0.1   04/21/93
- *
- * Authors:    Original taken from the GNU Project <netinet/in.h> file.
- *             Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
- *
- *             This program is free software; you can redistribute it and/or
- *             modify it under the terms of the GNU General Public License
- *             as published by the Free Software Foundation; either version
- *             2 of the License, or (at your option) any later version.
- */
-#ifndef _LINUX_IN_H
-#define _LINUX_IN_H
-
-#include <linux/types.h>
-#include <linux/libc-compat.h>
-#include <linux/socket.h>
-
-#if __UAPI_DEF_IN_IPPROTO
-/* Standard well-defined IP protocols.  */
-enum {
-  IPPROTO_IP = 0,              /* Dummy protocol for TCP               */
-#define IPPROTO_IP             IPPROTO_IP
-  IPPROTO_ICMP = 1,            /* Internet Control Message Protocol    */
-#define IPPROTO_ICMP           IPPROTO_ICMP
-  IPPROTO_IGMP = 2,            /* Internet Group Management Protocol   */
-#define IPPROTO_IGMP           IPPROTO_IGMP
-  IPPROTO_IPIP = 4,            /* IPIP tunnels (older KA9Q tunnels use 94) */
-#define IPPROTO_IPIP           IPPROTO_IPIP
-  IPPROTO_TCP = 6,             /* Transmission Control Protocol        */
-#define IPPROTO_TCP            IPPROTO_TCP
-  IPPROTO_EGP = 8,             /* Exterior Gateway Protocol            */
-#define IPPROTO_EGP            IPPROTO_EGP
-  IPPROTO_PUP = 12,            /* PUP protocol                         */
-#define IPPROTO_PUP            IPPROTO_PUP
-  IPPROTO_UDP = 17,            /* User Datagram Protocol               */
-#define IPPROTO_UDP            IPPROTO_UDP
-  IPPROTO_IDP = 22,            /* XNS IDP protocol                     */
-#define IPPROTO_IDP            IPPROTO_IDP
-  IPPROTO_TP = 29,             /* SO Transport Protocol Class 4        */
-#define IPPROTO_TP             IPPROTO_TP
-  IPPROTO_DCCP = 33,           /* Datagram Congestion Control Protocol */
-#define IPPROTO_DCCP           IPPROTO_DCCP
-  IPPROTO_IPV6 = 41,           /* IPv6-in-IPv4 tunnelling              */
-#define IPPROTO_IPV6           IPPROTO_IPV6
-  IPPROTO_RSVP = 46,           /* RSVP Protocol                        */
-#define IPPROTO_RSVP           IPPROTO_RSVP
-  IPPROTO_GRE = 47,            /* Cisco GRE tunnels (rfc 1701,1702)    */
-#define IPPROTO_GRE            IPPROTO_GRE
-  IPPROTO_ESP = 50,            /* Encapsulation Security Payload protocol */
-#define IPPROTO_ESP            IPPROTO_ESP
-  IPPROTO_AH = 51,             /* Authentication Header protocol       */
-#define IPPROTO_AH             IPPROTO_AH
-  IPPROTO_MTP = 92,            /* Multicast Transport Protocol         */
-#define IPPROTO_MTP            IPPROTO_MTP
-  IPPROTO_BEETPH = 94,         /* IP option pseudo header for BEET     */
-#define IPPROTO_BEETPH         IPPROTO_BEETPH
-  IPPROTO_ENCAP = 98,          /* Encapsulation Header                 */
-#define IPPROTO_ENCAP          IPPROTO_ENCAP
-  IPPROTO_PIM = 103,           /* Protocol Independent Multicast       */
-#define IPPROTO_PIM            IPPROTO_PIM
-  IPPROTO_COMP = 108,          /* Compression Header Protocol          */
-#define IPPROTO_COMP           IPPROTO_COMP
-  IPPROTO_SCTP = 132,          /* Stream Control Transport Protocol    */
-#define IPPROTO_SCTP           IPPROTO_SCTP
-  IPPROTO_UDPLITE = 136,       /* UDP-Lite (RFC 3828)                  */
-#define IPPROTO_UDPLITE                IPPROTO_UDPLITE
-  IPPROTO_MPLS = 137,          /* MPLS in IP (RFC 4023)                */
-#define IPPROTO_MPLS           IPPROTO_MPLS
-  IPPROTO_RAW = 255,           /* Raw IP packets                       */
-#define IPPROTO_RAW            IPPROTO_RAW
-  IPPROTO_MAX
-};
-#endif
-
-#if __UAPI_DEF_IN_ADDR
-/* Internet address. */
-struct in_addr {
-       __be32  s_addr;
-};
-#endif
-
-#define IP_TOS         1
-#define IP_TTL         2
-#define IP_HDRINCL     3
-#define IP_OPTIONS     4
-#define IP_ROUTER_ALERT        5
-#define IP_RECVOPTS    6
-#define IP_RETOPTS     7
-#define IP_PKTINFO     8
-#define IP_PKTOPTIONS  9
-#define IP_MTU_DISCOVER        10
-#define IP_RECVERR     11
-#define IP_RECVTTL     12
-#define        IP_RECVTOS      13
-#define IP_MTU         14
-#define IP_FREEBIND    15
-#define IP_IPSEC_POLICY        16
-#define IP_XFRM_POLICY 17
-#define IP_PASSSEC     18
-#define IP_TRANSPARENT 19
-
-/* BSD compatibility */
-#define IP_RECVRETOPTS IP_RETOPTS
-
-/* TProxy original addresses */
-#define IP_ORIGDSTADDR       20
-#define IP_RECVORIGDSTADDR   IP_ORIGDSTADDR
-
-#define IP_MINTTL       21
-#define IP_NODEFRAG     22
-#define IP_CHECKSUM    23
-#define IP_BIND_ADDRESS_NO_PORT        24
-#define IP_RECVFRAGSIZE        25
-
-/* IP_MTU_DISCOVER values */
-#define IP_PMTUDISC_DONT               0       /* Never send DF frames */
-#define IP_PMTUDISC_WANT               1       /* Use per route hints  */
-#define IP_PMTUDISC_DO                 2       /* Always DF            */
-#define IP_PMTUDISC_PROBE              3       /* Ignore dst pmtu      */
-/* Always use interface mtu (ignores dst pmtu) but don't set DF flag.
- * Also incoming ICMP frag_needed notifications will be ignored on
- * this socket to prevent accepting spoofed ones.
- */
-#define IP_PMTUDISC_INTERFACE          4
-/* weaker version of IP_PMTUDISC_INTERFACE, which allos packets to get
- * fragmented if they exeed the interface mtu
- */
-#define IP_PMTUDISC_OMIT               5
-
-#define IP_MULTICAST_IF                        32
-#define IP_MULTICAST_TTL               33
-#define IP_MULTICAST_LOOP              34
-#define IP_ADD_MEMBERSHIP              35
-#define IP_DROP_MEMBERSHIP             36
-#define IP_UNBLOCK_SOURCE              37
-#define IP_BLOCK_SOURCE                        38
-#define IP_ADD_SOURCE_MEMBERSHIP       39
-#define IP_DROP_SOURCE_MEMBERSHIP      40
-#define IP_MSFILTER                    41
-#define MCAST_JOIN_GROUP               42
-#define MCAST_BLOCK_SOURCE             43
-#define MCAST_UNBLOCK_SOURCE           44
-#define MCAST_LEAVE_GROUP              45
-#define MCAST_JOIN_SOURCE_GROUP                46
-#define MCAST_LEAVE_SOURCE_GROUP       47
-#define MCAST_MSFILTER                 48
-#define IP_MULTICAST_ALL               49
-#define IP_UNICAST_IF                  50
-
-#define MCAST_EXCLUDE  0
-#define MCAST_INCLUDE  1
-
-/* These need to appear somewhere around here */
-#define IP_DEFAULT_MULTICAST_TTL        1
-#define IP_DEFAULT_MULTICAST_LOOP       1
-
-/* Request struct for multicast socket ops */
-
-#if __UAPI_DEF_IP_MREQ
-struct ip_mreq  {
-       struct in_addr imr_multiaddr;   /* IP multicast address of group */
-       struct in_addr imr_interface;   /* local IP address of interface */
-};
-
-struct ip_mreqn {
-       struct in_addr  imr_multiaddr;          /* IP multicast address of group */
-       struct in_addr  imr_address;            /* local IP address of interface */
-       int             imr_ifindex;            /* Interface index */
-};
-
-struct ip_mreq_source {
-       __be32          imr_multiaddr;
-       __be32          imr_interface;
-       __be32          imr_sourceaddr;
-};
-
-struct ip_msfilter {
-       __be32          imsf_multiaddr;
-       __be32          imsf_interface;
-       __u32           imsf_fmode;
-       __u32           imsf_numsrc;
-       __be32          imsf_slist[1];
-};
-
-#define IP_MSFILTER_SIZE(numsrc) \
-       (sizeof(struct ip_msfilter) - sizeof(__u32) \
-       + (numsrc) * sizeof(__u32))
-
-struct group_req {
-       __u32                            gr_interface;  /* interface index */
-       struct __kernel_sockaddr_storage gr_group;      /* group address */
-};
-
-struct group_source_req {
-       __u32                            gsr_interface; /* interface index */
-       struct __kernel_sockaddr_storage gsr_group;     /* group address */
-       struct __kernel_sockaddr_storage gsr_source;    /* source address */
-};
-
-struct group_filter {
-       __u32                            gf_interface;  /* interface index */
-       struct __kernel_sockaddr_storage gf_group;      /* multicast address */
-       __u32                            gf_fmode;      /* filter mode */
-       __u32                            gf_numsrc;     /* number of sources */
-       struct __kernel_sockaddr_storage gf_slist[1];   /* interface index */
-};
-
-#define GROUP_FILTER_SIZE(numsrc) \
-       (sizeof(struct group_filter) - sizeof(struct __kernel_sockaddr_storage) \
-       + (numsrc) * sizeof(struct __kernel_sockaddr_storage))
-#endif
-
-#if __UAPI_DEF_IN_PKTINFO
-struct in_pktinfo {
-       int             ipi_ifindex;
-       struct in_addr  ipi_spec_dst;
-       struct in_addr  ipi_addr;
-};
-#endif
-
-/* Structure describing an Internet (IP) socket address. */
-#if  __UAPI_DEF_SOCKADDR_IN
-#define __SOCK_SIZE__  16              /* sizeof(struct sockaddr)      */
-struct sockaddr_in {
-  __kernel_sa_family_t sin_family;     /* Address family               */
-  __be16               sin_port;       /* Port number                  */
-  struct in_addr       sin_addr;       /* Internet address             */
-
-  /* Pad to size of `struct sockaddr'. */
-  unsigned char                __pad[__SOCK_SIZE__ - sizeof(short int) -
-                       sizeof(unsigned short int) - sizeof(struct in_addr)];
-};
-#define sin_zero       __pad           /* for BSD UNIX comp. -FvK      */
-#endif
-
-#if __UAPI_DEF_IN_CLASS
-/*
- * Definitions of the bits in an Internet address integer.
- * On subnets, host and network parts are found according
- * to the subnet mask, not these masks.
- */
-#define        IN_CLASSA(a)            ((((long int) (a)) & 0x80000000) == 0)
-#define        IN_CLASSA_NET           0xff000000
-#define        IN_CLASSA_NSHIFT        24
-#define        IN_CLASSA_HOST          (0xffffffff & ~IN_CLASSA_NET)
-#define        IN_CLASSA_MAX           128
-
-#define        IN_CLASSB(a)            ((((long int) (a)) & 0xc0000000) == 0x80000000)
-#define        IN_CLASSB_NET           0xffff0000
-#define        IN_CLASSB_NSHIFT        16
-#define        IN_CLASSB_HOST          (0xffffffff & ~IN_CLASSB_NET)
-#define        IN_CLASSB_MAX           65536
-
-#define        IN_CLASSC(a)            ((((long int) (a)) & 0xe0000000) == 0xc0000000)
-#define        IN_CLASSC_NET           0xffffff00
-#define        IN_CLASSC_NSHIFT        8
-#define        IN_CLASSC_HOST          (0xffffffff & ~IN_CLASSC_NET)
-
-#define        IN_CLASSD(a)            ((((long int) (a)) & 0xf0000000) == 0xe0000000)
-#define        IN_MULTICAST(a)         IN_CLASSD(a)
-#define IN_MULTICAST_NET       0xF0000000
-
-#define        IN_EXPERIMENTAL(a)      ((((long int) (a)) & 0xf0000000) == 0xf0000000)
-#define        IN_BADCLASS(a)          IN_EXPERIMENTAL((a))
-
-/* Address to accept any incoming messages. */
-#define        INADDR_ANY              ((unsigned long int) 0x00000000)
-
-/* Address to send to all hosts. */
-#define        INADDR_BROADCAST        ((unsigned long int) 0xffffffff)
-
-/* Address indicating an error return. */
-#define        INADDR_NONE             ((unsigned long int) 0xffffffff)
-
-/* Network number for local host loopback. */
-#define        IN_LOOPBACKNET          127
-
-/* Address to loopback in software to local host.  */
-#define        INADDR_LOOPBACK         0x7f000001      /* 127.0.0.1   */
-#define        IN_LOOPBACK(a)          ((((long int) (a)) & 0xff000000) == 0x7f000000)
-
-/* Defines for Multicast INADDR */
-#define INADDR_UNSPEC_GROUP    0xe0000000U     /* 224.0.0.0   */
-#define INADDR_ALLHOSTS_GROUP  0xe0000001U     /* 224.0.0.1   */
-#define INADDR_ALLRTRS_GROUP    0xe0000002U    /* 224.0.0.2 */
-#define INADDR_MAX_LOCAL_GROUP  0xe00000ffU    /* 224.0.0.255 */
-#endif
-
-/* <asm/byteorder.h> contains the htonl type stuff.. */
-#include <asm/byteorder.h> 
-
-
-#endif /* _LINUX_IN_H */
diff --git a/include/linux/in6.h b/include/linux/in6.h
deleted file mode 100644 (file)
index 6f3bdee..0000000
+++ /dev/null
@@ -1,296 +0,0 @@
-/*
- *     Types and definitions for AF_INET6 
- *     Linux INET6 implementation 
- *
- *     Authors:
- *     Pedro Roque             <roque@di.fc.ul.pt>     
- *
- *     Sources:
- *     IPv6 Program Interfaces for BSD Systems
- *      <draft-ietf-ipngwg-bsd-api-05.txt>
- *
- *     Advanced Sockets API for IPv6
- *     <draft-stevens-advanced-api-00.txt>
- *
- *     This program is free software; you can redistribute it and/or
- *      modify it under the terms of the GNU General Public License
- *      as published by the Free Software Foundation; either version
- *      2 of the License, or (at your option) any later version.
- */
-
-#ifndef _LINUX_IN6_H
-#define _LINUX_IN6_H
-
-#include <linux/types.h>
-#include <linux/libc-compat.h>
-
-/*
- *     IPv6 address structure
- */
-
-#if __UAPI_DEF_IN6_ADDR
-struct in6_addr {
-       union {
-               __u8            u6_addr8[16];
-#if __UAPI_DEF_IN6_ADDR_ALT
-               __be16          u6_addr16[8];
-               __be32          u6_addr32[4];
-#endif
-       } in6_u;
-#define s6_addr                        in6_u.u6_addr8
-#if __UAPI_DEF_IN6_ADDR_ALT
-#define s6_addr16              in6_u.u6_addr16
-#define s6_addr32              in6_u.u6_addr32
-#endif
-};
-#endif /* __UAPI_DEF_IN6_ADDR */
-
-#if __UAPI_DEF_SOCKADDR_IN6
-struct sockaddr_in6 {
-       unsigned short int      sin6_family;    /* AF_INET6 */
-       __be16                  sin6_port;      /* Transport layer port # */
-       __be32                  sin6_flowinfo;  /* IPv6 flow information */
-       struct in6_addr         sin6_addr;      /* IPv6 address */
-       __u32                   sin6_scope_id;  /* scope id (new in RFC2553) */
-};
-#endif /* __UAPI_DEF_SOCKADDR_IN6 */
-
-#if __UAPI_DEF_IPV6_MREQ
-struct ipv6_mreq {
-       /* IPv6 multicast address of group */
-       struct in6_addr ipv6mr_multiaddr;
-
-       /* local IPv6 address of interface */
-       int             ipv6mr_ifindex;
-};
-#endif /* __UAPI_DEF_IVP6_MREQ */
-
-#define ipv6mr_acaddr  ipv6mr_multiaddr
-
-struct in6_flowlabel_req {
-       struct in6_addr flr_dst;
-       __be32  flr_label;
-       __u8    flr_action;
-       __u8    flr_share;
-       __u16   flr_flags;
-       __u16   flr_expires;
-       __u16   flr_linger;
-       __u32   __flr_pad;
-       /* Options in format of IPV6_PKTOPTIONS */
-};
-
-#define IPV6_FL_A_GET  0
-#define IPV6_FL_A_PUT  1
-#define IPV6_FL_A_RENEW        2
-
-#define IPV6_FL_F_CREATE       1
-#define IPV6_FL_F_EXCL         2
-#define IPV6_FL_F_REFLECT      4
-#define IPV6_FL_F_REMOTE       8
-
-#define IPV6_FL_S_NONE         0
-#define IPV6_FL_S_EXCL         1
-#define IPV6_FL_S_PROCESS      2
-#define IPV6_FL_S_USER         3
-#define IPV6_FL_S_ANY          255
-
-
-/*
- *     Bitmask constant declarations to help applications select out the 
- *     flow label and priority fields.
- *
- *     Note that this are in host byte order while the flowinfo field of
- *     sockaddr_in6 is in network byte order.
- */
-
-#define IPV6_FLOWINFO_FLOWLABEL                0x000fffff
-#define IPV6_FLOWINFO_PRIORITY         0x0ff00000
-
-/* These definitions are obsolete */
-#define IPV6_PRIORITY_UNCHARACTERIZED  0x0000
-#define IPV6_PRIORITY_FILLER           0x0100
-#define IPV6_PRIORITY_UNATTENDED       0x0200
-#define IPV6_PRIORITY_RESERVED1                0x0300
-#define IPV6_PRIORITY_BULK             0x0400
-#define IPV6_PRIORITY_RESERVED2                0x0500
-#define IPV6_PRIORITY_INTERACTIVE      0x0600
-#define IPV6_PRIORITY_CONTROL          0x0700
-#define IPV6_PRIORITY_8                        0x0800
-#define IPV6_PRIORITY_9                        0x0900
-#define IPV6_PRIORITY_10               0x0a00
-#define IPV6_PRIORITY_11               0x0b00
-#define IPV6_PRIORITY_12               0x0c00
-#define IPV6_PRIORITY_13               0x0d00
-#define IPV6_PRIORITY_14               0x0e00
-#define IPV6_PRIORITY_15               0x0f00
-
-/*
- *     IPV6 extension headers
- */
-#if __UAPI_DEF_IPPROTO_V6
-#define IPPROTO_HOPOPTS                0       /* IPv6 hop-by-hop options      */
-#define IPPROTO_ROUTING                43      /* IPv6 routing header          */
-#define IPPROTO_FRAGMENT       44      /* IPv6 fragmentation header    */
-#define IPPROTO_ICMPV6         58      /* ICMPv6                       */
-#define IPPROTO_NONE           59      /* IPv6 no next header          */
-#define IPPROTO_DSTOPTS                60      /* IPv6 destination options     */
-#define IPPROTO_MH             135     /* IPv6 mobility header         */
-#endif /* __UAPI_DEF_IPPROTO_V6 */
-
-/*
- *     IPv6 TLV options.
- */
-#define IPV6_TLV_PAD1          0
-#define IPV6_TLV_PADN          1
-#define IPV6_TLV_ROUTERALERT   5
-#define IPV6_TLV_CALIPSO       7       /* RFC 5570 */
-#define IPV6_TLV_JUMBO         194
-#define IPV6_TLV_HAO           201     /* home address option */
-
-/*
- *     IPV6 socket options
- */
-#if __UAPI_DEF_IPV6_OPTIONS
-#define IPV6_ADDRFORM          1
-#define IPV6_2292PKTINFO       2
-#define IPV6_2292HOPOPTS       3
-#define IPV6_2292DSTOPTS       4
-#define IPV6_2292RTHDR         5
-#define IPV6_2292PKTOPTIONS    6
-#define IPV6_CHECKSUM          7
-#define IPV6_2292HOPLIMIT      8
-#define IPV6_NEXTHOP           9
-#define IPV6_AUTHHDR           10      /* obsolete */
-#define IPV6_FLOWINFO          11
-
-#define IPV6_UNICAST_HOPS      16
-#define IPV6_MULTICAST_IF      17
-#define IPV6_MULTICAST_HOPS    18
-#define IPV6_MULTICAST_LOOP    19
-#define IPV6_ADD_MEMBERSHIP    20
-#define IPV6_DROP_MEMBERSHIP   21
-#define IPV6_ROUTER_ALERT      22
-#define IPV6_MTU_DISCOVER      23
-#define IPV6_MTU               24
-#define IPV6_RECVERR           25
-#define IPV6_V6ONLY            26
-#define IPV6_JOIN_ANYCAST      27
-#define IPV6_LEAVE_ANYCAST     28
-
-/* IPV6_MTU_DISCOVER values */
-#define IPV6_PMTUDISC_DONT             0
-#define IPV6_PMTUDISC_WANT             1
-#define IPV6_PMTUDISC_DO               2
-#define IPV6_PMTUDISC_PROBE            3
-/* same as IPV6_PMTUDISC_PROBE, provided for symetry with IPv4
- * also see comments on IP_PMTUDISC_INTERFACE
- */
-#define IPV6_PMTUDISC_INTERFACE                4
-/* weaker version of IPV6_PMTUDISC_INTERFACE, which allows packets to
- * get fragmented if they exceed the interface mtu
- */
-#define IPV6_PMTUDISC_OMIT             5
-
-/* Flowlabel */
-#define IPV6_FLOWLABEL_MGR     32
-#define IPV6_FLOWINFO_SEND     33
-
-#define IPV6_IPSEC_POLICY      34
-#define IPV6_XFRM_POLICY       35
-#define IPV6_HDRINCL           36
-#endif
-
-/*
- * Multicast:
- * Following socket options are shared between IPv4 and IPv6.
- *
- * MCAST_JOIN_GROUP            42
- * MCAST_BLOCK_SOURCE          43
- * MCAST_UNBLOCK_SOURCE                44
- * MCAST_LEAVE_GROUP           45
- * MCAST_JOIN_SOURCE_GROUP     46
- * MCAST_LEAVE_SOURCE_GROUP    47
- * MCAST_MSFILTER              48
- */
-
-/*
- * Advanced API (RFC3542) (1)
- *
- * Note: IPV6_RECVRTHDRDSTOPTS does not exist. see net/ipv6/datagram.c.
- */
-
-#define IPV6_RECVPKTINFO       49
-#define IPV6_PKTINFO           50
-#define IPV6_RECVHOPLIMIT      51
-#define IPV6_HOPLIMIT          52
-#define IPV6_RECVHOPOPTS       53
-#define IPV6_HOPOPTS           54
-#define IPV6_RTHDRDSTOPTS      55
-#define IPV6_RECVRTHDR         56
-#define IPV6_RTHDR             57
-#define IPV6_RECVDSTOPTS       58
-#define IPV6_DSTOPTS           59
-#define IPV6_RECVPATHMTU       60
-#define IPV6_PATHMTU           61
-#define IPV6_DONTFRAG          62
-#if 0  /* not yet */
-#define IPV6_USE_MIN_MTU       63
-#endif
-
-/*
- * Netfilter (1)
- *
- * Following socket options are used in ip6_tables;
- * see include/linux/netfilter_ipv6/ip6_tables.h.
- *
- * IP6T_SO_SET_REPLACE / IP6T_SO_GET_INFO              64
- * IP6T_SO_SET_ADD_COUNTERS / IP6T_SO_GET_ENTRIES      65
- */
-
-/*
- * Advanced API (RFC3542) (2)
- */
-#define IPV6_RECVTCLASS                66
-#define IPV6_TCLASS            67
-
-/*
- * Netfilter (2)
- *
- * Following socket options are used in ip6_tables;
- * see include/linux/netfilter_ipv6/ip6_tables.h.
- *
- * IP6T_SO_GET_REVISION_MATCH  68
- * IP6T_SO_GET_REVISION_TARGET 69
- * IP6T_SO_ORIGINAL_DST                80
- */
-
-#define IPV6_AUTOFLOWLABEL     70
-/* RFC5014: Source address selection */
-#define IPV6_ADDR_PREFERENCES  72
-
-#define IPV6_PREFER_SRC_TMP            0x0001
-#define IPV6_PREFER_SRC_PUBLIC         0x0002
-#define IPV6_PREFER_SRC_PUBTMP_DEFAULT 0x0100
-#define IPV6_PREFER_SRC_COA            0x0004
-#define IPV6_PREFER_SRC_HOME           0x0400
-#define IPV6_PREFER_SRC_CGA            0x0008
-#define IPV6_PREFER_SRC_NONCGA         0x0800
-
-/* RFC5082: Generalized Ttl Security Mechanism */
-#define IPV6_MINHOPCOUNT               73
-
-#define IPV6_ORIGDSTADDR        74
-#define IPV6_RECVORIGDSTADDR    IPV6_ORIGDSTADDR
-#define IPV6_TRANSPARENT        75
-#define IPV6_UNICAST_IF         76
-#define IPV6_RECVFRAGSIZE      77
-
-/*
- * Multicast Routing:
- * see include/uapi/linux/mroute6.h.
- *
- * MRT6_BASE                   200
- * ...
- * MRT6_MAX
- */
-#endif /* _LINUX_IN6_H */
diff --git a/include/linux/in_route.h b/include/linux/in_route.h
deleted file mode 100644 (file)
index b261b8c..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-#ifndef _LINUX_IN_ROUTE_H
-#define _LINUX_IN_ROUTE_H
-
-/* IPv4 routing cache flags */
-
-#define RTCF_DEAD      RTNH_F_DEAD
-#define RTCF_ONLINK    RTNH_F_ONLINK
-
-/* Obsolete flag. About to be deleted */
-#define RTCF_NOPMTUDISC RTM_F_NOPMTUDISC
-
-#define RTCF_NOTIFY    0x00010000
-#define RTCF_DIRECTDST 0x00020000 /* unused */
-#define RTCF_REDIRECTED        0x00040000
-#define RTCF_TPROXY    0x00080000 /* unused */
-
-#define RTCF_FAST      0x00200000 /* unused */
-#define RTCF_MASQ      0x00400000 /* unused */
-#define RTCF_SNAT      0x00800000 /* unused */
-#define RTCF_DOREDIRECT 0x01000000
-#define RTCF_DIRECTSRC 0x04000000
-#define RTCF_DNAT      0x08000000
-#define RTCF_BROADCAST 0x10000000
-#define RTCF_MULTICAST 0x20000000
-#define RTCF_REJECT    0x40000000 /* unused */
-#define RTCF_LOCAL     0x80000000
-
-#define RTCF_NAT       (RTCF_DNAT|RTCF_SNAT)
-
-#define RT_TOS(tos)    ((tos)&IPTOS_TOS_MASK)
-
-#endif /* _LINUX_IN_ROUTE_H */
diff --git a/include/linux/inet_diag.h b/include/linux/inet_diag.h
deleted file mode 100644 (file)
index bada4d7..0000000
+++ /dev/null
@@ -1,196 +0,0 @@
-#ifndef _INET_DIAG_H_
-#define _INET_DIAG_H_
-
-#include <linux/types.h>
-
-/* Just some random number */
-#define TCPDIAG_GETSOCK 18
-#define DCCPDIAG_GETSOCK 19
-
-#define INET_DIAG_GETSOCK_MAX 24
-
-/* Socket identity */
-struct inet_diag_sockid {
-       __be16  idiag_sport;
-       __be16  idiag_dport;
-       __be32  idiag_src[4];
-       __be32  idiag_dst[4];
-       __u32   idiag_if;
-       __u32   idiag_cookie[2];
-#define INET_DIAG_NOCOOKIE (~0U)
-};
-
-/* Request structure */
-
-struct inet_diag_req {
-       __u8    idiag_family;           /* Family of addresses. */
-       __u8    idiag_src_len;
-       __u8    idiag_dst_len;
-       __u8    idiag_ext;              /* Query extended information */
-
-       struct inet_diag_sockid id;
-
-       __u32   idiag_states;           /* States to dump */
-       __u32   idiag_dbs;              /* Tables to dump (NI) */
-};
-
-struct inet_diag_req_v2 {
-       __u8    sdiag_family;
-       __u8    sdiag_protocol;
-       __u8    idiag_ext;
-       __u8    pad;
-       __u32   idiag_states;
-       struct inet_diag_sockid id;
-};
-
-/*
- * SOCK_RAW sockets require the underlied protocol to be
- * additionally specified so we can use @pad member for
- * this, but we can't rename it because userspace programs
- * still may depend on this name. Instead lets use another
- * structure definition as an alias for struct
- * @inet_diag_req_v2.
- */
-struct inet_diag_req_raw {
-       __u8    sdiag_family;
-       __u8    sdiag_protocol;
-       __u8    idiag_ext;
-       __u8    sdiag_raw_protocol;
-       __u32   idiag_states;
-       struct inet_diag_sockid id;
-};
-
-enum {
-       INET_DIAG_REQ_NONE,
-       INET_DIAG_REQ_BYTECODE,
-};
-
-#define INET_DIAG_REQ_MAX INET_DIAG_REQ_BYTECODE
-
-/* Bytecode is sequence of 4 byte commands followed by variable arguments.
- * All the commands identified by "code" are conditional jumps forward:
- * to offset cc+"yes" or to offset cc+"no". "yes" is supposed to be
- * length of the command and its arguments.
- */
-struct inet_diag_bc_op {
-       unsigned char   code;
-       unsigned char   yes;
-       unsigned short  no;
-};
-
-enum {
-       INET_DIAG_BC_NOP,
-       INET_DIAG_BC_JMP,
-       INET_DIAG_BC_S_GE,
-       INET_DIAG_BC_S_LE,
-       INET_DIAG_BC_D_GE,
-       INET_DIAG_BC_D_LE,
-       INET_DIAG_BC_AUTO,
-       INET_DIAG_BC_S_COND,
-       INET_DIAG_BC_D_COND,
-       INET_DIAG_BC_DEV_COND,   /* u32 ifindex */
-       INET_DIAG_BC_MARK_COND,
-};
-
-struct inet_diag_hostcond {
-       __u8    family;
-       __u8    prefix_len;
-       int     port;
-       __be32  addr[0];
-};
-
-struct inet_diag_markcond {
-       __u32 mark;
-       __u32 mask;
-};
-
-/* Base info structure. It contains socket identity (addrs/ports/cookie)
- * and, alas, the information shown by netstat. */
-struct inet_diag_msg {
-       __u8    idiag_family;
-       __u8    idiag_state;
-       __u8    idiag_timer;
-       __u8    idiag_retrans;
-
-       struct inet_diag_sockid id;
-
-       __u32   idiag_expires;
-       __u32   idiag_rqueue;
-       __u32   idiag_wqueue;
-       __u32   idiag_uid;
-       __u32   idiag_inode;
-};
-
-/* Extensions */
-
-enum {
-       INET_DIAG_NONE,
-       INET_DIAG_MEMINFO,
-       INET_DIAG_INFO,
-       INET_DIAG_VEGASINFO,
-       INET_DIAG_CONG,
-       INET_DIAG_TOS,
-       INET_DIAG_TCLASS,
-       INET_DIAG_SKMEMINFO,
-       INET_DIAG_SHUTDOWN,
-       INET_DIAG_DCTCPINFO,
-       INET_DIAG_PROTOCOL,  /* response attribute only */
-       INET_DIAG_SKV6ONLY,
-       INET_DIAG_LOCALS,
-       INET_DIAG_PEERS,
-       INET_DIAG_PAD,
-       INET_DIAG_MARK,
-       INET_DIAG_BBRINFO,
-       INET_DIAG_CLASS_ID,
-       INET_DIAG_MD5SIG,
-       __INET_DIAG_MAX,
-};
-
-#define INET_DIAG_MAX (__INET_DIAG_MAX - 1)
-
-/* INET_DIAG_MEM */
-
-struct inet_diag_meminfo {
-       __u32   idiag_rmem;
-       __u32   idiag_wmem;
-       __u32   idiag_fmem;
-       __u32   idiag_tmem;
-};
-
-/* INET_DIAG_VEGASINFO */
-
-struct tcpvegas_info {
-       __u32   tcpv_enabled;
-       __u32   tcpv_rttcnt;
-       __u32   tcpv_rtt;
-       __u32   tcpv_minrtt;
-};
-
-/* INET_DIAG_DCTCPINFO */
-
-struct tcp_dctcp_info {
-       __u16   dctcp_enabled;
-       __u16   dctcp_ce_state;
-       __u32   dctcp_alpha;
-       __u32   dctcp_ab_ecn;
-       __u32   dctcp_ab_tot;
-};
-
-/* INET_DIAG_BBRINFO */
-
-struct tcp_bbr_info {
-       /* u64 bw: max-filtered BW (app throughput) estimate in Byte per sec: */
-       __u32   bbr_bw_lo;              /* lower 32 bits of bw */
-       __u32   bbr_bw_hi;              /* upper 32 bits of bw */
-       __u32   bbr_min_rtt;            /* min-filtered RTT in uSec */
-       __u32   bbr_pacing_gain;        /* pacing gain shifted left 8 bits */
-       __u32   bbr_cwnd_gain;          /* cwnd gain shifted left 8 bits */
-};
-
-union tcp_cc_info {
-       struct tcpvegas_info    vegas;
-       struct tcp_dctcp_info   dctcp;
-       struct tcp_bbr_info     bbr;
-};
-#endif /* _INET_DIAG_H_ */
diff --git a/include/linux/ip.h b/include/linux/ip.h
deleted file mode 100644 (file)
index 1907284..0000000
+++ /dev/null
@@ -1,175 +0,0 @@
-/*
- * INET                An implementation of the TCP/IP protocol suite for the LINUX
- *             operating system.  INET is implemented using the  BSD Socket
- *             interface as the means of communication with the user level.
- *
- *             Definitions for the IP protocol.
- *
- * Version:    @(#)ip.h        1.0.2   04/28/93
- *
- * Authors:    Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
- *
- *             This program is free software; you can redistribute it and/or
- *             modify it under the terms of the GNU General Public License
- *             as published by the Free Software Foundation; either version
- *             2 of the License, or (at your option) any later version.
- */
-#ifndef _LINUX_IP_H
-#define _LINUX_IP_H
-#include <linux/types.h>
-#include <asm/byteorder.h>
-
-#define IPTOS_TOS_MASK         0x1E
-#define IPTOS_TOS(tos)         ((tos)&IPTOS_TOS_MASK)
-#define        IPTOS_LOWDELAY          0x10
-#define        IPTOS_THROUGHPUT        0x08
-#define        IPTOS_RELIABILITY       0x04
-#define        IPTOS_MINCOST           0x02
-
-#define IPTOS_PREC_MASK                0xE0
-#define IPTOS_PREC(tos)                ((tos)&IPTOS_PREC_MASK)
-#define IPTOS_PREC_NETCONTROL           0xe0
-#define IPTOS_PREC_INTERNETCONTROL      0xc0
-#define IPTOS_PREC_CRITIC_ECP           0xa0
-#define IPTOS_PREC_FLASHOVERRIDE        0x80
-#define IPTOS_PREC_FLASH                0x60
-#define IPTOS_PREC_IMMEDIATE            0x40
-#define IPTOS_PREC_PRIORITY             0x20
-#define IPTOS_PREC_ROUTINE              0x00
-
-
-/* IP options */
-#define IPOPT_COPY             0x80
-#define IPOPT_CLASS_MASK       0x60
-#define IPOPT_NUMBER_MASK      0x1f
-
-#define        IPOPT_COPIED(o)         ((o)&IPOPT_COPY)
-#define        IPOPT_CLASS(o)          ((o)&IPOPT_CLASS_MASK)
-#define        IPOPT_NUMBER(o)         ((o)&IPOPT_NUMBER_MASK)
-
-#define        IPOPT_CONTROL           0x00
-#define        IPOPT_RESERVED1         0x20
-#define        IPOPT_MEASUREMENT       0x40
-#define        IPOPT_RESERVED2         0x60
-
-#define IPOPT_END      (0 |IPOPT_CONTROL)
-#define IPOPT_NOOP     (1 |IPOPT_CONTROL)
-#define IPOPT_SEC      (2 |IPOPT_CONTROL|IPOPT_COPY)
-#define IPOPT_LSRR     (3 |IPOPT_CONTROL|IPOPT_COPY)
-#define IPOPT_TIMESTAMP        (4 |IPOPT_MEASUREMENT)
-#define IPOPT_CIPSO    (6 |IPOPT_CONTROL|IPOPT_COPY)
-#define IPOPT_RR       (7 |IPOPT_CONTROL)
-#define IPOPT_SID      (8 |IPOPT_CONTROL|IPOPT_COPY)
-#define IPOPT_SSRR     (9 |IPOPT_CONTROL|IPOPT_COPY)
-#define IPOPT_RA       (20|IPOPT_CONTROL|IPOPT_COPY)
-
-#define IPVERSION      4
-#define MAXTTL         255
-#define IPDEFTTL       64
-
-#define IPOPT_OPTVAL 0
-#define IPOPT_OLEN   1
-#define IPOPT_OFFSET 2
-#define IPOPT_MINOFF 4
-#define MAX_IPOPTLEN 40
-#define IPOPT_NOP IPOPT_NOOP
-#define IPOPT_EOL IPOPT_END
-#define IPOPT_TS  IPOPT_TIMESTAMP
-
-#define        IPOPT_TS_TSONLY         0               /* timestamps only */
-#define        IPOPT_TS_TSANDADDR      1               /* timestamps and addresses */
-#define        IPOPT_TS_PRESPEC        3               /* specified modules only */
-
-#define IPV4_BEET_PHMAXLEN 8
-
-struct iphdr {
-#if defined(__LITTLE_ENDIAN_BITFIELD)
-       __u8    ihl:4,
-               version:4;
-#elif defined (__BIG_ENDIAN_BITFIELD)
-       __u8    version:4,
-               ihl:4;
-#else
-#error "Please fix <asm/byteorder.h>"
-#endif
-       __u8    tos;
-       __be16  tot_len;
-       __be16  id;
-       __be16  frag_off;
-       __u8    ttl;
-       __u8    protocol;
-       __sum16 check;
-       __be32  saddr;
-       __be32  daddr;
-       /*The options start here. */
-};
-
-
-struct ip_auth_hdr {
-       __u8  nexthdr;
-       __u8  hdrlen;           /* This one is measured in 32 bit units! */
-       __be16 reserved;
-       __be32 spi;
-       __be32 seq_no;          /* Sequence number */
-       __u8  auth_data[0];     /* Variable len but >=4. Mind the 64 bit alignment! */
-};
-
-struct ip_esp_hdr {
-       __be32 spi;
-       __be32 seq_no;          /* Sequence number */
-       __u8  enc_data[0];      /* Variable len but >=8. Mind the 64 bit alignment! */
-};
-
-struct ip_comp_hdr {
-       __u8 nexthdr;
-       __u8 flags;
-       __be16 cpi;
-};
-
-struct ip_beet_phdr {
-       __u8 nexthdr;
-       __u8 hdrlen;
-       __u8 padlen;
-       __u8 reserved;
-};
-
-/* index values for the variables in ipv4_devconf */
-enum
-{
-       IPV4_DEVCONF_FORWARDING=1,
-       IPV4_DEVCONF_MC_FORWARDING,
-       IPV4_DEVCONF_PROXY_ARP,
-       IPV4_DEVCONF_ACCEPT_REDIRECTS,
-       IPV4_DEVCONF_SECURE_REDIRECTS,
-       IPV4_DEVCONF_SEND_REDIRECTS,
-       IPV4_DEVCONF_SHARED_MEDIA,
-       IPV4_DEVCONF_RP_FILTER,
-       IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE,
-       IPV4_DEVCONF_BOOTP_RELAY,
-       IPV4_DEVCONF_LOG_MARTIANS,
-       IPV4_DEVCONF_TAG,
-       IPV4_DEVCONF_ARPFILTER,
-       IPV4_DEVCONF_MEDIUM_ID,
-       IPV4_DEVCONF_NOXFRM,
-       IPV4_DEVCONF_NOPOLICY,
-       IPV4_DEVCONF_FORCE_IGMP_VERSION,
-       IPV4_DEVCONF_ARP_ANNOUNCE,
-       IPV4_DEVCONF_ARP_IGNORE,
-       IPV4_DEVCONF_PROMOTE_SECONDARIES,
-       IPV4_DEVCONF_ARP_ACCEPT,
-       IPV4_DEVCONF_ARP_NOTIFY,
-       IPV4_DEVCONF_ACCEPT_LOCAL,
-       IPV4_DEVCONF_SRC_VMARK,
-       IPV4_DEVCONF_PROXY_ARP_PVLAN,
-       IPV4_DEVCONF_ROUTE_LOCALNET,
-       IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL,
-       IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL,
-       IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN,
-       IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST,
-       IPV4_DEVCONF_DROP_GRATUITOUS_ARP,
-       __IPV4_DEVCONF_MAX
-};
-
-#define IPV4_DEVCONF_MAX (__IPV4_DEVCONF_MAX - 1)
-
-#endif /* _LINUX_IP_H */
diff --git a/include/linux/ip6_tunnel.h b/include/linux/ip6_tunnel.h
deleted file mode 100644 (file)
index 425926c..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-#ifndef _IP6_TUNNEL_H
-#define _IP6_TUNNEL_H
-
-#include <linux/types.h>
-#include <linux/if.h>          /* For IFNAMSIZ. */
-#include <linux/in6.h>         /* For struct in6_addr. */
-
-#define IPV6_TLV_TNL_ENCAP_LIMIT 4
-#define IPV6_DEFAULT_TNL_ENCAP_LIMIT 4
-
-/* don't add encapsulation limit if one isn't present in inner packet */
-#define IP6_TNL_F_IGN_ENCAP_LIMIT 0x1
-/* copy the traffic class field from the inner packet */
-#define IP6_TNL_F_USE_ORIG_TCLASS 0x2
-/* copy the flowlabel from the inner packet */
-#define IP6_TNL_F_USE_ORIG_FLOWLABEL 0x4
-/* being used for Mobile IPv6 */
-#define IP6_TNL_F_MIP6_DEV 0x8
-/* copy DSCP from the outer packet */
-#define IP6_TNL_F_RCV_DSCP_COPY 0x10
-/* copy fwmark from inner packet */
-#define IP6_TNL_F_USE_ORIG_FWMARK 0x20
-
-struct ip6_tnl_parm {
-       char name[IFNAMSIZ];    /* name of tunnel device */
-       int link;               /* ifindex of underlying L2 interface */
-       __u8 proto;             /* tunnel protocol */
-       __u8 encap_limit;       /* encapsulation limit for tunnel */
-       __u8 hop_limit;         /* hop limit for tunnel */
-       __be32 flowinfo;        /* traffic class and flowlabel for tunnel */
-       __u32 flags;            /* tunnel flags */
-       struct in6_addr laddr;  /* local tunnel end-point address */
-       struct in6_addr raddr;  /* remote tunnel end-point address */
-};
-
-struct ip6_tnl_parm2 {
-       char name[IFNAMSIZ];    /* name of tunnel device */
-       int link;               /* ifindex of underlying L2 interface */
-       __u8 proto;             /* tunnel protocol */
-       __u8 encap_limit;       /* encapsulation limit for tunnel */
-       __u8 hop_limit;         /* hop limit for tunnel */
-       __be32 flowinfo;        /* traffic class and flowlabel for tunnel */
-       __u32 flags;            /* tunnel flags */
-       struct in6_addr laddr;  /* local tunnel end-point address */
-       struct in6_addr raddr;  /* remote tunnel end-point address */
-
-       __be16                  i_flags;
-       __be16                  o_flags;
-       __be32                  i_key;
-       __be32                  o_key;
-};
-
-#endif
diff --git a/include/linux/ipsec.h b/include/linux/ipsec.h
deleted file mode 100644 (file)
index d17a630..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-#ifndef _LINUX_IPSEC_H
-#define _LINUX_IPSEC_H
-
-/* The definitions, required to talk to KAME racoon IKE. */
-
-#include <linux/pfkeyv2.h>
-
-#define IPSEC_PORT_ANY         0
-#define IPSEC_ULPROTO_ANY      255
-#define IPSEC_PROTO_ANY                255
-
-enum {
-       IPSEC_MODE_ANY          = 0,    /* We do not support this for SA */
-       IPSEC_MODE_TRANSPORT    = 1,
-       IPSEC_MODE_TUNNEL       = 2,
-       IPSEC_MODE_BEET         = 3
-};
-
-enum {
-       IPSEC_DIR_ANY           = 0,
-       IPSEC_DIR_INBOUND       = 1,
-       IPSEC_DIR_OUTBOUND      = 2,
-       IPSEC_DIR_FWD           = 3,    /* It is our own */
-       IPSEC_DIR_MAX           = 4,
-       IPSEC_DIR_INVALID       = 5
-};
-
-enum {
-       IPSEC_POLICY_DISCARD    = 0,
-       IPSEC_POLICY_NONE       = 1,
-       IPSEC_POLICY_IPSEC      = 2,
-       IPSEC_POLICY_ENTRUST    = 3,
-       IPSEC_POLICY_BYPASS     = 4
-};
-
-enum {
-       IPSEC_LEVEL_DEFAULT     = 0,
-       IPSEC_LEVEL_USE         = 1,
-       IPSEC_LEVEL_REQUIRE     = 2,
-       IPSEC_LEVEL_UNIQUE      = 3
-};
-
-#define IPSEC_MANUAL_REQID_MAX 0x3fff
-
-#define IPSEC_REPLAYWSIZE  32
-
-#endif /* _LINUX_IPSEC_H */
diff --git a/include/linux/kernel.h b/include/linux/kernel.h
deleted file mode 100644 (file)
index 527549f..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-#ifndef _LINUX_KERNEL_H
-#define _LINUX_KERNEL_H
-
-#include <linux/sysinfo.h>
-
-/*
- * 'kernel.h' contains some often-used function prototypes etc
- */
-#define __ALIGN_KERNEL(x, a)           __ALIGN_KERNEL_MASK(x, (typeof(x))(a) - 1)
-#define __ALIGN_KERNEL_MASK(x, mask)   (((x) + (mask)) & ~(mask))
-
-#define __KERNEL_DIV_ROUND_UP(n, d) (((n) + (d) - 1) / (d))
-
-#endif /* _LINUX_KERNEL_H */
diff --git a/include/linux/l2tp.h b/include/linux/l2tp.h
deleted file mode 100644 (file)
index 8a80007..0000000
+++ /dev/null
@@ -1,199 +0,0 @@
-/*
- * L2TP-over-IP socket for L2TPv3.
- *
- * Author: James Chapman <jchapman@katalix.com>
- */
-
-#ifndef _LINUX_L2TP_H_
-#define _LINUX_L2TP_H_
-
-#include <linux/types.h>
-#include <linux/socket.h>
-#include <linux/in.h>
-#include <linux/in6.h>
-
-#define IPPROTO_L2TP           115
-
-/**
- * struct sockaddr_l2tpip - the sockaddr structure for L2TP-over-IP sockets
- * @l2tp_family:  address family number AF_L2TPIP.
- * @l2tp_addr:    protocol specific address information
- * @l2tp_conn_id: connection id of tunnel
- */
-#define __SOCK_SIZE__  16              /* sizeof(struct sockaddr)      */
-struct sockaddr_l2tpip {
-       /* The first fields must match struct sockaddr_in */
-       __kernel_sa_family_t l2tp_family; /* AF_INET */
-       __be16          l2tp_unused;    /* INET port number (unused) */
-       struct in_addr  l2tp_addr;      /* Internet address */
-
-       __u32           l2tp_conn_id;   /* Connection ID of tunnel */
-
-       /* Pad to size of `struct sockaddr'. */
-       unsigned char   __pad[__SOCK_SIZE__ -
-                             sizeof(__kernel_sa_family_t) -
-                             sizeof(__be16) - sizeof(struct in_addr) -
-                             sizeof(__u32)];
-};
-
-/**
- * struct sockaddr_l2tpip6 - the sockaddr structure for L2TP-over-IPv6 sockets
- * @l2tp_family:  address family number AF_L2TPIP.
- * @l2tp_addr:    protocol specific address information
- * @l2tp_conn_id: connection id of tunnel
- */
-struct sockaddr_l2tpip6 {
-       /* The first fields must match struct sockaddr_in6 */
-       __kernel_sa_family_t l2tp_family; /* AF_INET6 */
-       __be16          l2tp_unused;    /* INET port number (unused) */
-       __be32          l2tp_flowinfo;  /* IPv6 flow information */
-       struct in6_addr l2tp_addr;      /* IPv6 address */
-       __u32           l2tp_scope_id;  /* scope id (new in RFC2553) */
-       __u32           l2tp_conn_id;   /* Connection ID of tunnel */
-};
-
-/*****************************************************************************
- *  NETLINK_GENERIC netlink family.
- *****************************************************************************/
-
-/*
- * Commands.
- * Valid TLVs of each command are:-
- * TUNNEL_CREATE       - CONN_ID, pw_type, netns, ifname, ipinfo, udpinfo, udpcsum, vlanid
- * TUNNEL_DELETE       - CONN_ID
- * TUNNEL_MODIFY       - CONN_ID, udpcsum
- * TUNNEL_GETSTATS     - CONN_ID, (stats)
- * TUNNEL_GET          - CONN_ID, (...)
- * SESSION_CREATE      - SESSION_ID, PW_TYPE, offset, data_seq, cookie, peer_cookie, offset, l2spec
- * SESSION_DELETE      - SESSION_ID
- * SESSION_MODIFY      - SESSION_ID, data_seq
- * SESSION_GET         - SESSION_ID, (...)
- * SESSION_GETSTATS    - SESSION_ID, (stats)
- *
- */
-enum {
-       L2TP_CMD_NOOP,
-       L2TP_CMD_TUNNEL_CREATE,
-       L2TP_CMD_TUNNEL_DELETE,
-       L2TP_CMD_TUNNEL_MODIFY,
-       L2TP_CMD_TUNNEL_GET,
-       L2TP_CMD_SESSION_CREATE,
-       L2TP_CMD_SESSION_DELETE,
-       L2TP_CMD_SESSION_MODIFY,
-       L2TP_CMD_SESSION_GET,
-       __L2TP_CMD_MAX,
-};
-
-#define L2TP_CMD_MAX                   (__L2TP_CMD_MAX - 1)
-
-/*
- * ATTR types defined for L2TP
- */
-enum {
-       L2TP_ATTR_NONE,                 /* no data */
-       L2TP_ATTR_PW_TYPE,              /* u16, enum l2tp_pwtype */
-       L2TP_ATTR_ENCAP_TYPE,           /* u16, enum l2tp_encap_type */
-       L2TP_ATTR_OFFSET,               /* u16 */
-       L2TP_ATTR_DATA_SEQ,             /* u16 */
-       L2TP_ATTR_L2SPEC_TYPE,          /* u8, enum l2tp_l2spec_type */
-       L2TP_ATTR_L2SPEC_LEN,           /* u8, enum l2tp_l2spec_type */
-       L2TP_ATTR_PROTO_VERSION,        /* u8 */
-       L2TP_ATTR_IFNAME,               /* string */
-       L2TP_ATTR_CONN_ID,              /* u32 */
-       L2TP_ATTR_PEER_CONN_ID,         /* u32 */
-       L2TP_ATTR_SESSION_ID,           /* u32 */
-       L2TP_ATTR_PEER_SESSION_ID,      /* u32 */
-       L2TP_ATTR_UDP_CSUM,             /* u8 */
-       L2TP_ATTR_VLAN_ID,              /* u16 */
-       L2TP_ATTR_COOKIE,               /* 0, 4 or 8 bytes */
-       L2TP_ATTR_PEER_COOKIE,          /* 0, 4 or 8 bytes */
-       L2TP_ATTR_DEBUG,                /* u32, enum l2tp_debug_flags */
-       L2TP_ATTR_RECV_SEQ,             /* u8 */
-       L2TP_ATTR_SEND_SEQ,             /* u8 */
-       L2TP_ATTR_LNS_MODE,             /* u8 */
-       L2TP_ATTR_USING_IPSEC,          /* u8 */
-       L2TP_ATTR_RECV_TIMEOUT,         /* msec */
-       L2TP_ATTR_FD,                   /* int */
-       L2TP_ATTR_IP_SADDR,             /* u32 */
-       L2TP_ATTR_IP_DADDR,             /* u32 */
-       L2TP_ATTR_UDP_SPORT,            /* u16 */
-       L2TP_ATTR_UDP_DPORT,            /* u16 */
-       L2TP_ATTR_MTU,                  /* u16 */
-       L2TP_ATTR_MRU,                  /* u16 */
-       L2TP_ATTR_STATS,                /* nested */
-       L2TP_ATTR_IP6_SADDR,            /* struct in6_addr */
-       L2TP_ATTR_IP6_DADDR,            /* struct in6_addr */
-       L2TP_ATTR_UDP_ZERO_CSUM6_TX,    /* flag */
-       L2TP_ATTR_UDP_ZERO_CSUM6_RX,    /* flag */
-       L2TP_ATTR_PAD,
-       __L2TP_ATTR_MAX,
-};
-
-#define L2TP_ATTR_MAX                  (__L2TP_ATTR_MAX - 1)
-
-/* Nested in L2TP_ATTR_STATS */
-enum {
-       L2TP_ATTR_STATS_NONE,           /* no data */
-       L2TP_ATTR_TX_PACKETS,           /* u64 */
-       L2TP_ATTR_TX_BYTES,             /* u64 */
-       L2TP_ATTR_TX_ERRORS,            /* u64 */
-       L2TP_ATTR_RX_PACKETS,           /* u64 */
-       L2TP_ATTR_RX_BYTES,             /* u64 */
-       L2TP_ATTR_RX_SEQ_DISCARDS,      /* u64 */
-       L2TP_ATTR_RX_OOS_PACKETS,       /* u64 */
-       L2TP_ATTR_RX_ERRORS,            /* u64 */
-       L2TP_ATTR_STATS_PAD,
-       __L2TP_ATTR_STATS_MAX,
-};
-
-#define L2TP_ATTR_STATS_MAX            (__L2TP_ATTR_STATS_MAX - 1)
-
-enum l2tp_pwtype {
-       L2TP_PWTYPE_NONE = 0x0000,
-       L2TP_PWTYPE_ETH_VLAN = 0x0004,
-       L2TP_PWTYPE_ETH = 0x0005,
-       L2TP_PWTYPE_PPP = 0x0007,
-       L2TP_PWTYPE_PPP_AC = 0x0008,
-       L2TP_PWTYPE_IP = 0x000b,
-       __L2TP_PWTYPE_MAX
-};
-
-enum l2tp_l2spec_type {
-       L2TP_L2SPECTYPE_NONE,
-       L2TP_L2SPECTYPE_DEFAULT,
-};
-
-enum l2tp_encap_type {
-       L2TP_ENCAPTYPE_UDP,
-       L2TP_ENCAPTYPE_IP,
-};
-
-enum l2tp_seqmode {
-       L2TP_SEQ_NONE = 0,
-       L2TP_SEQ_IP = 1,
-       L2TP_SEQ_ALL = 2,
-};
-
-/**
- * enum l2tp_debug_flags - debug message categories for L2TP tunnels/sessions
- *
- * @L2TP_MSG_DEBUG: verbose debug (if compiled in)
- * @L2TP_MSG_CONTROL: userspace - kernel interface
- * @L2TP_MSG_SEQ: sequence numbers
- * @L2TP_MSG_DATA: data packets
- */
-enum l2tp_debug_flags {
-       L2TP_MSG_DEBUG          = (1 << 0),
-       L2TP_MSG_CONTROL        = (1 << 1),
-       L2TP_MSG_SEQ            = (1 << 2),
-       L2TP_MSG_DATA           = (1 << 3),
-};
-
-/*
- * NETLINK_GENERIC related info
- */
-#define L2TP_GENL_NAME         "l2tp"
-#define L2TP_GENL_VERSION      0x1
-#define L2TP_GENL_MCGROUP       "l2tp"
-
-#endif /* _LINUX_L2TP_H_ */
diff --git a/include/linux/libc-compat.h b/include/linux/libc-compat.h
deleted file mode 100644 (file)
index f38571d..0000000
+++ /dev/null
@@ -1,213 +0,0 @@
-/*
- * Compatibility interface for userspace libc header coordination:
- *
- * Define compatibility macros that are used to control the inclusion or
- * exclusion of UAPI structures and definitions in coordination with another
- * userspace C library.
- *
- * This header is intended to solve the problem of UAPI definitions that
- * conflict with userspace definitions. If a UAPI header has such conflicting
- * definitions then the solution is as follows:
- *
- * * Synchronize the UAPI header and the libc headers so either one can be
- *   used and such that the ABI is preserved. If this is not possible then
- *   no simple compatibility interface exists (you need to write translating
- *   wrappers and rename things) and you can't use this interface.
- *
- * Then follow this process:
- *
- * (a) Include libc-compat.h in the UAPI header.
- *      e.g. #include <linux/libc-compat.h>
- *     This include must be as early as possible.
- *
- * (b) In libc-compat.h add enough code to detect that the comflicting
- *     userspace libc header has been included first.
- *
- * (c) If the userspace libc header has been included first define a set of
- *     guard macros of the form __UAPI_DEF_FOO and set their values to 1, else
- *     set their values to 0.
- *
- * (d) Back in the UAPI header with the conflicting definitions, guard the
- *     definitions with:
- *     #if __UAPI_DEF_FOO
- *       ...
- *     #endif
- *
- * This fixes the situation where the linux headers are included *after* the
- * libc headers. To fix the problem with the inclusion in the other order the
- * userspace libc headers must be fixed like this:
- *
- * * For all definitions that conflict with kernel definitions wrap those
- *   defines in the following:
- *   #if !__UAPI_DEF_FOO
- *     ...
- *   #endif
- *
- * This prevents the redefinition of a construct already defined by the kernel.
- */
-#ifndef _LIBC_COMPAT_H
-#define _LIBC_COMPAT_H
-
-/* We have included glibc headers... */
-#if defined(__GLIBC__)
-
-/* Coordinate with glibc net/if.h header. */
-#if defined(_NET_IF_H) && defined(__USE_MISC)
-
-/* GLIBC headers included first so don't define anything
- * that would already be defined. */
-
-#define __UAPI_DEF_IF_IFCONF 0
-#define __UAPI_DEF_IF_IFMAP 0
-#define __UAPI_DEF_IF_IFNAMSIZ 0
-#define __UAPI_DEF_IF_IFREQ 0
-/* Everything up to IFF_DYNAMIC, matches net/if.h until glibc 2.23 */
-#define __UAPI_DEF_IF_NET_DEVICE_FLAGS 0
-/* For the future if glibc adds IFF_LOWER_UP, IFF_DORMANT and IFF_ECHO */
-#ifndef __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO
-#define __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO 1
-#endif /* __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO */
-
-#else /* _NET_IF_H */
-
-/* Linux headers included first, and we must define everything
- * we need. The expectation is that glibc will check the
- * __UAPI_DEF_* defines and adjust appropriately. */
-
-#define __UAPI_DEF_IF_IFCONF 1
-#define __UAPI_DEF_IF_IFMAP 1
-#define __UAPI_DEF_IF_IFNAMSIZ 1
-#define __UAPI_DEF_IF_IFREQ 1
-/* Everything up to IFF_DYNAMIC, matches net/if.h until glibc 2.23 */
-#define __UAPI_DEF_IF_NET_DEVICE_FLAGS 1
-/* For the future if glibc adds IFF_LOWER_UP, IFF_DORMANT and IFF_ECHO */
-#define __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO 1
-
-#endif /* _NET_IF_H */
-
-/* Coordinate with glibc netinet/in.h header. */
-#if defined(_NETINET_IN_H)
-
-/* GLIBC headers included first so don't define anything
- * that would already be defined. */
-#define __UAPI_DEF_IN_ADDR             0
-#define __UAPI_DEF_IN_IPPROTO          0
-#define __UAPI_DEF_IN_PKTINFO          0
-#define __UAPI_DEF_IP_MREQ             0
-#define __UAPI_DEF_SOCKADDR_IN         0
-#define __UAPI_DEF_IN_CLASS            0
-
-#define __UAPI_DEF_IN6_ADDR            0
-/* The exception is the in6_addr macros which must be defined
- * if the glibc code didn't define them. This guard matches
- * the guard in glibc/inet/netinet/in.h which defines the
- * additional in6_addr macros e.g. s6_addr16, and s6_addr32. */
-#if defined(__USE_MISC) || defined (__USE_GNU)
-#define __UAPI_DEF_IN6_ADDR_ALT                0
-#else
-#define __UAPI_DEF_IN6_ADDR_ALT                1
-#endif
-#define __UAPI_DEF_SOCKADDR_IN6                0
-#define __UAPI_DEF_IPV6_MREQ           0
-#define __UAPI_DEF_IPPROTO_V6          0
-#define __UAPI_DEF_IPV6_OPTIONS                0
-#define __UAPI_DEF_IN6_PKTINFO         0
-#define __UAPI_DEF_IP6_MTUINFO         0
-
-#else
-
-/* Linux headers included first, and we must define everything
- * we need. The expectation is that glibc will check the
- * __UAPI_DEF_* defines and adjust appropriately. */
-#define __UAPI_DEF_IN_ADDR             1
-#define __UAPI_DEF_IN_IPPROTO          1
-#define __UAPI_DEF_IN_PKTINFO          1
-#define __UAPI_DEF_IP_MREQ             1
-#define __UAPI_DEF_SOCKADDR_IN         1
-#define __UAPI_DEF_IN_CLASS            1
-
-#define __UAPI_DEF_IN6_ADDR            1
-/* We unconditionally define the in6_addr macros and glibc must
- * coordinate. */
-#define __UAPI_DEF_IN6_ADDR_ALT                1
-#define __UAPI_DEF_SOCKADDR_IN6                1
-#define __UAPI_DEF_IPV6_MREQ           1
-#define __UAPI_DEF_IPPROTO_V6          1
-#define __UAPI_DEF_IPV6_OPTIONS                1
-#define __UAPI_DEF_IN6_PKTINFO         1
-#define __UAPI_DEF_IP6_MTUINFO         1
-
-#endif /* _NETINET_IN_H */
-
-/* Coordinate with glibc netipx/ipx.h header. */
-#if defined(__NETIPX_IPX_H)
-
-#define __UAPI_DEF_SOCKADDR_IPX                        0
-#define __UAPI_DEF_IPX_ROUTE_DEFINITION                0
-#define __UAPI_DEF_IPX_INTERFACE_DEFINITION    0
-#define __UAPI_DEF_IPX_CONFIG_DATA             0
-#define __UAPI_DEF_IPX_ROUTE_DEF               0
-
-#else /* defined(__NETIPX_IPX_H) */
-
-#define __UAPI_DEF_SOCKADDR_IPX                        1
-#define __UAPI_DEF_IPX_ROUTE_DEFINITION                1
-#define __UAPI_DEF_IPX_INTERFACE_DEFINITION    1
-#define __UAPI_DEF_IPX_CONFIG_DATA             1
-#define __UAPI_DEF_IPX_ROUTE_DEF               1
-
-#endif /* defined(__NETIPX_IPX_H) */
-
-/* Definitions for xattr.h */
-#if defined(_SYS_XATTR_H)
-#define __UAPI_DEF_XATTR               0
-#else
-#define __UAPI_DEF_XATTR               1
-#endif
-
-/* If we did not see any headers from any supported C libraries,
- * or we are being included in the kernel, then define everything
- * that we need. */
-#else /* !defined(__GLIBC__) */
-
-/* Definitions for if.h */
-#define __UAPI_DEF_IF_IFCONF 1
-#define __UAPI_DEF_IF_IFMAP 1
-#define __UAPI_DEF_IF_IFNAMSIZ 1
-#define __UAPI_DEF_IF_IFREQ 1
-/* Everything up to IFF_DYNAMIC, matches net/if.h until glibc 2.23 */
-#define __UAPI_DEF_IF_NET_DEVICE_FLAGS 1
-/* For the future if glibc adds IFF_LOWER_UP, IFF_DORMANT and IFF_ECHO */
-#define __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO 1
-
-/* Definitions for in.h */
-#define __UAPI_DEF_IN_ADDR             1
-#define __UAPI_DEF_IN_IPPROTO          1
-#define __UAPI_DEF_IN_PKTINFO          1
-#define __UAPI_DEF_IP_MREQ             1
-#define __UAPI_DEF_SOCKADDR_IN         1
-#define __UAPI_DEF_IN_CLASS            1
-
-/* Definitions for in6.h */
-#define __UAPI_DEF_IN6_ADDR            1
-#define __UAPI_DEF_IN6_ADDR_ALT                1
-#define __UAPI_DEF_SOCKADDR_IN6                1
-#define __UAPI_DEF_IPV6_MREQ           1
-#define __UAPI_DEF_IPPROTO_V6          1
-#define __UAPI_DEF_IPV6_OPTIONS                1
-#define __UAPI_DEF_IN6_PKTINFO         1
-#define __UAPI_DEF_IP6_MTUINFO         1
-
-/* Definitions for ipx.h */
-#define __UAPI_DEF_SOCKADDR_IPX                        1
-#define __UAPI_DEF_IPX_ROUTE_DEFINITION                1
-#define __UAPI_DEF_IPX_INTERFACE_DEFINITION    1
-#define __UAPI_DEF_IPX_CONFIG_DATA             1
-#define __UAPI_DEF_IPX_ROUTE_DEF               1
-
-/* Definitions for xattr.h */
-#define __UAPI_DEF_XATTR               1
-
-#endif /* __GLIBC__ */
-
-#endif /* _LIBC_COMPAT_H */
diff --git a/include/linux/limits.h b/include/linux/limits.h
deleted file mode 100644 (file)
index 2d0f941..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-#ifndef _LINUX_LIMITS_H
-#define _LINUX_LIMITS_H
-
-#define NR_OPEN                1024
-
-#define NGROUPS_MAX    65536   /* supplemental group IDs are available */
-#define ARG_MAX       131072   /* # bytes of args + environ for exec() */
-#define LINK_MAX         127   /* # links a file may have */
-#define MAX_CANON        255   /* size of the canonical input queue */
-#define MAX_INPUT        255   /* size of the type-ahead buffer */
-#define NAME_MAX         255   /* # chars in a file name */
-#define PATH_MAX        4096   /* # chars in a path name including nul */
-#define PIPE_BUF        4096   /* # bytes in atomic write to a pipe */
-#define XATTR_NAME_MAX   255   /* # chars in an extended attribute name */
-#define XATTR_SIZE_MAX 65536   /* size of an extended attribute value (64k) */
-#define XATTR_LIST_MAX 65536   /* size of extended attribute namelist (64k) */
-
-#define RTSIG_MAX        32
-
-#endif
diff --git a/include/linux/lwtunnel.h b/include/linux/lwtunnel.h
deleted file mode 100644 (file)
index 3298426..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-#ifndef _LWTUNNEL_H_
-#define _LWTUNNEL_H_
-
-#include <linux/types.h>
-
-enum lwtunnel_encap_types {
-       LWTUNNEL_ENCAP_NONE,
-       LWTUNNEL_ENCAP_MPLS,
-       LWTUNNEL_ENCAP_IP,
-       LWTUNNEL_ENCAP_ILA,
-       LWTUNNEL_ENCAP_IP6,
-       LWTUNNEL_ENCAP_SEG6,
-       LWTUNNEL_ENCAP_BPF,
-       LWTUNNEL_ENCAP_SEG6_LOCAL,
-       __LWTUNNEL_ENCAP_MAX,
-};
-
-#define LWTUNNEL_ENCAP_MAX (__LWTUNNEL_ENCAP_MAX - 1)
-
-enum lwtunnel_ip_t {
-       LWTUNNEL_IP_UNSPEC,
-       LWTUNNEL_IP_ID,
-       LWTUNNEL_IP_DST,
-       LWTUNNEL_IP_SRC,
-       LWTUNNEL_IP_TTL,
-       LWTUNNEL_IP_TOS,
-       LWTUNNEL_IP_FLAGS,
-       LWTUNNEL_IP_PAD,
-       __LWTUNNEL_IP_MAX,
-};
-
-#define LWTUNNEL_IP_MAX (__LWTUNNEL_IP_MAX - 1)
-
-enum lwtunnel_ip6_t {
-       LWTUNNEL_IP6_UNSPEC,
-       LWTUNNEL_IP6_ID,
-       LWTUNNEL_IP6_DST,
-       LWTUNNEL_IP6_SRC,
-       LWTUNNEL_IP6_HOPLIMIT,
-       LWTUNNEL_IP6_TC,
-       LWTUNNEL_IP6_FLAGS,
-       LWTUNNEL_IP6_PAD,
-       __LWTUNNEL_IP6_MAX,
-};
-
-#define LWTUNNEL_IP6_MAX (__LWTUNNEL_IP6_MAX - 1)
-
-enum {
-       LWT_BPF_PROG_UNSPEC,
-       LWT_BPF_PROG_FD,
-       LWT_BPF_PROG_NAME,
-       __LWT_BPF_PROG_MAX,
-};
-
-#define LWT_BPF_PROG_MAX (__LWT_BPF_PROG_MAX - 1)
-
-enum {
-       LWT_BPF_UNSPEC,
-       LWT_BPF_IN,
-       LWT_BPF_OUT,
-       LWT_BPF_XMIT,
-       LWT_BPF_XMIT_HEADROOM,
-       __LWT_BPF_MAX,
-};
-
-#define LWT_BPF_MAX (__LWT_BPF_MAX - 1)
-
-#define LWT_BPF_MAX_HEADROOM 256
-
-#endif /* _LWTUNNEL_H_ */
diff --git a/include/linux/magic.h b/include/linux/magic.h
deleted file mode 100644 (file)
index e439565..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-#ifndef __LINUX_MAGIC_H__
-#define __LINUX_MAGIC_H__
-
-#define ADFS_SUPER_MAGIC       0xadf5
-#define AFFS_SUPER_MAGIC       0xadff
-#define AFS_SUPER_MAGIC                0x5346414F
-#define AUTOFS_SUPER_MAGIC     0x0187
-#define CODA_SUPER_MAGIC       0x73757245
-#define CRAMFS_MAGIC           0x28cd3d45      /* some random number */
-#define CRAMFS_MAGIC_WEND      0x453dcd28      /* magic number with the wrong endianess */
-#define DEBUGFS_MAGIC          0x64626720
-#define SECURITYFS_MAGIC       0x73636673
-#define SELINUX_MAGIC          0xf97cff8c
-#define SMACK_MAGIC            0x43415d53      /* "SMAC" */
-#define RAMFS_MAGIC            0x858458f6      /* some random number */
-#define TMPFS_MAGIC            0x01021994
-#define HUGETLBFS_MAGIC        0x958458f6      /* some random number */
-#define SQUASHFS_MAGIC         0x73717368
-#define ECRYPTFS_SUPER_MAGIC   0xf15f
-#define EFS_SUPER_MAGIC                0x414A53
-#define EXT2_SUPER_MAGIC       0xEF53
-#define EXT3_SUPER_MAGIC       0xEF53
-#define XENFS_SUPER_MAGIC      0xabba1974
-#define EXT4_SUPER_MAGIC       0xEF53
-#define BTRFS_SUPER_MAGIC      0x9123683E
-#define NILFS_SUPER_MAGIC      0x3434
-#define F2FS_SUPER_MAGIC       0xF2F52010
-#define HPFS_SUPER_MAGIC       0xf995e849
-#define ISOFS_SUPER_MAGIC      0x9660
-#define JFFS2_SUPER_MAGIC      0x72b6
-#define PSTOREFS_MAGIC         0x6165676C
-#define EFIVARFS_MAGIC         0xde5e81e4
-#define HOSTFS_SUPER_MAGIC     0x00c0ffee
-#define OVERLAYFS_SUPER_MAGIC  0x794c7630
-
-#define MINIX_SUPER_MAGIC      0x137F          /* minix v1 fs, 14 char names */
-#define MINIX_SUPER_MAGIC2     0x138F          /* minix v1 fs, 30 char names */
-#define MINIX2_SUPER_MAGIC     0x2468          /* minix v2 fs, 14 char names */
-#define MINIX2_SUPER_MAGIC2    0x2478          /* minix v2 fs, 30 char names */
-#define MINIX3_SUPER_MAGIC     0x4d5a          /* minix v3 fs, 60 char names */
-
-#define MSDOS_SUPER_MAGIC      0x4d44          /* MD */
-#define NCP_SUPER_MAGIC                0x564c          /* Guess, what 0x564c is :-) */
-#define NFS_SUPER_MAGIC                0x6969
-#define OCFS2_SUPER_MAGIC      0x7461636f
-#define OPENPROM_SUPER_MAGIC   0x9fa1
-#define QNX4_SUPER_MAGIC       0x002f          /* qnx4 fs detection */
-#define QNX6_SUPER_MAGIC       0x68191122      /* qnx6 fs detection */
-
-#define REISERFS_SUPER_MAGIC   0x52654973      /* used by gcc */
-                                       /* used by file system utilities that
-                                          look at the superblock, etc.  */
-#define REISERFS_SUPER_MAGIC_STRING    "ReIsErFs"
-#define REISER2FS_SUPER_MAGIC_STRING   "ReIsEr2Fs"
-#define REISER2FS_JR_SUPER_MAGIC_STRING        "ReIsEr3Fs"
-
-#define SMB_SUPER_MAGIC                0x517B
-#define CGROUP_SUPER_MAGIC     0x27e0eb
-#define CGROUP2_SUPER_MAGIC    0x63677270
-
-#define RDTGROUP_SUPER_MAGIC   0x7655821
-
-#define STACK_END_MAGIC                0x57AC6E9D
-
-#define TRACEFS_MAGIC          0x74726163
-
-#define V9FS_MAGIC             0x01021997
-
-#define BDEVFS_MAGIC            0x62646576
-#define DAXFS_MAGIC             0x64646178
-#define BINFMTFS_MAGIC          0x42494e4d
-#define DEVPTS_SUPER_MAGIC     0x1cd1
-#define FUTEXFS_SUPER_MAGIC    0xBAD1DEA
-#define PIPEFS_MAGIC            0x50495045
-#define PROC_SUPER_MAGIC       0x9fa0
-#define SOCKFS_MAGIC           0x534F434B
-#define SYSFS_MAGIC            0x62656572
-#define USBDEVICE_SUPER_MAGIC  0x9fa2
-#define MTD_INODE_FS_MAGIC      0x11307854
-#define ANON_INODE_FS_MAGIC    0x09041934
-#define BTRFS_TEST_MAGIC       0x73727279
-#define NSFS_MAGIC             0x6e736673
-#define BPF_FS_MAGIC           0xcafe4a11
-#define AAFS_MAGIC             0x5a3c69f0
-
-/* Since UDF 2.01 is ISO 13346 based... */
-#define UDF_SUPER_MAGIC                0x15013346
-#define BALLOON_KVM_MAGIC      0x13661366
-#define ZSMALLOC_MAGIC         0x58295829
-
-#endif /* __LINUX_MAGIC_H__ */
diff --git a/include/linux/mpls.h b/include/linux/mpls.h
deleted file mode 100644 (file)
index bf5b625..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-#ifndef _MPLS_H
-#define _MPLS_H
-
-#include <linux/types.h>
-#include <asm/byteorder.h>
-
-/* Reference: RFC 5462, RFC 3032
- *
- *  0                   1                   2                   3
- *  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * |                Label                  | TC  |S|       TTL     |
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *
- *     Label:  Label Value, 20 bits
- *     TC:     Traffic Class field, 3 bits
- *     S:      Bottom of Stack, 1 bit
- *     TTL:    Time to Live, 8 bits
- */
-
-struct mpls_label {
-       __be32 entry;
-};
-
-#define MPLS_LS_LABEL_MASK      0xFFFFF000
-#define MPLS_LS_LABEL_SHIFT     12
-#define MPLS_LS_TC_MASK         0x00000E00
-#define MPLS_LS_TC_SHIFT        9
-#define MPLS_LS_S_MASK          0x00000100
-#define MPLS_LS_S_SHIFT         8
-#define MPLS_LS_TTL_MASK        0x000000FF
-#define MPLS_LS_TTL_SHIFT       0
-
-/* Reserved labels */
-#define MPLS_LABEL_IPV4NULL            0 /* RFC3032 */
-#define MPLS_LABEL_RTALERT             1 /* RFC3032 */
-#define MPLS_LABEL_IPV6NULL            2 /* RFC3032 */
-#define MPLS_LABEL_IMPLNULL            3 /* RFC3032 */
-#define MPLS_LABEL_ENTROPY             7 /* RFC6790 */
-#define MPLS_LABEL_GAL                 13 /* RFC5586 */
-#define MPLS_LABEL_OAMALERT            14 /* RFC3429 */
-#define MPLS_LABEL_EXTENSION           15 /* RFC7274 */
-
-#define MPLS_LABEL_FIRST_UNRESERVED    16 /* RFC3032 */
-
-/* These are embedded into IFLA_STATS_AF_SPEC:
- * [IFLA_STATS_AF_SPEC]
- * -> [AF_MPLS]
- *    -> [MPLS_STATS_xxx]
- *
- * Attributes:
- * [MPLS_STATS_LINK] = {
- *     struct mpls_link_stats
- * }
- */
-enum {
-       MPLS_STATS_UNSPEC, /* also used as 64bit pad attribute */
-       MPLS_STATS_LINK,
-       __MPLS_STATS_MAX,
-};
-
-#define MPLS_STATS_MAX (__MPLS_STATS_MAX - 1)
-
-struct mpls_link_stats {
-       __u64   rx_packets;             /* total packets received       */
-       __u64   tx_packets;             /* total packets transmitted    */
-       __u64   rx_bytes;               /* total bytes received         */
-       __u64   tx_bytes;               /* total bytes transmitted      */
-       __u64   rx_errors;              /* bad packets received         */
-       __u64   tx_errors;              /* packet transmit problems     */
-       __u64   rx_dropped;             /* packet dropped on receive    */
-       __u64   tx_dropped;             /* packet dropped on transmit   */
-       __u64   rx_noroute;             /* no route for packet dest     */
-};
-
-#endif /* _MPLS_H */
diff --git a/include/linux/mpls_iptunnel.h b/include/linux/mpls_iptunnel.h
deleted file mode 100644 (file)
index 1a0e57b..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- *     mpls tunnel api
- *
- *     Authors:
- *             Roopa Prabhu <roopa@cumulusnetworks.com>
- *
- *     This program is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License
- *     as published by the Free Software Foundation; either version
- *     2 of the License, or (at your option) any later version.
- */
-
-#ifndef _LINUX_MPLS_IPTUNNEL_H
-#define _LINUX_MPLS_IPTUNNEL_H
-
-/* MPLS tunnel attributes
- * [RTA_ENCAP] = {
- *     [MPLS_IPTUNNEL_DST]
- *     [MPLS_IPTUNNEL_TTL]
- * }
- */
-enum {
-       MPLS_IPTUNNEL_UNSPEC,
-       MPLS_IPTUNNEL_DST,
-       MPLS_IPTUNNEL_TTL,
-       __MPLS_IPTUNNEL_MAX,
-};
-#define MPLS_IPTUNNEL_MAX (__MPLS_IPTUNNEL_MAX - 1)
-
-#endif /* _LINUX_MPLS_IPTUNNEL_H */
diff --git a/include/linux/neighbour.h b/include/linux/neighbour.h
deleted file mode 100644 (file)
index 3199d28..0000000
+++ /dev/null
@@ -1,171 +0,0 @@
-#ifndef __LINUX_NEIGHBOUR_H
-#define __LINUX_NEIGHBOUR_H
-
-#include <linux/types.h>
-#include <linux/netlink.h>
-
-struct ndmsg {
-       __u8            ndm_family;
-       __u8            ndm_pad1;
-       __u16           ndm_pad2;
-       __s32           ndm_ifindex;
-       __u16           ndm_state;
-       __u8            ndm_flags;
-       __u8            ndm_type;
-};
-
-enum {
-       NDA_UNSPEC,
-       NDA_DST,
-       NDA_LLADDR,
-       NDA_CACHEINFO,
-       NDA_PROBES,
-       NDA_VLAN,
-       NDA_PORT,
-       NDA_VNI,
-       NDA_IFINDEX,
-       NDA_MASTER,
-       NDA_LINK_NETNSID,
-       NDA_SRC_VNI,
-       __NDA_MAX
-};
-
-#define NDA_MAX (__NDA_MAX - 1)
-
-/*
- *     Neighbor Cache Entry Flags
- */
-
-#define NTF_USE                0x01
-#define NTF_SELF       0x02
-#define NTF_MASTER     0x04
-#define NTF_PROXY      0x08    /* == ATF_PUBL */
-#define NTF_EXT_LEARNED        0x10
-#define NTF_OFFLOADED   0x20
-#define NTF_ROUTER     0x80
-
-/*
- *     Neighbor Cache Entry States.
- */
-
-#define NUD_INCOMPLETE 0x01
-#define NUD_REACHABLE  0x02
-#define NUD_STALE      0x04
-#define NUD_DELAY      0x08
-#define NUD_PROBE      0x10
-#define NUD_FAILED     0x20
-
-/* Dummy states */
-#define NUD_NOARP      0x40
-#define NUD_PERMANENT  0x80
-#define NUD_NONE       0x00
-
-/* NUD_NOARP & NUD_PERMANENT are pseudostates, they never change
-   and make no address resolution or NUD.
-   NUD_PERMANENT also cannot be deleted by garbage collectors.
- */
-
-struct nda_cacheinfo {
-       __u32           ndm_confirmed;
-       __u32           ndm_used;
-       __u32           ndm_updated;
-       __u32           ndm_refcnt;
-};
-
-/*****************************************************************
- *             Neighbour tables specific messages.
- *
- * To retrieve the neighbour tables send RTM_GETNEIGHTBL with the
- * NLM_F_DUMP flag set. Every neighbour table configuration is
- * spread over multiple messages to avoid running into message
- * size limits on systems with many interfaces. The first message
- * in the sequence transports all not device specific data such as
- * statistics, configuration, and the default parameter set.
- * This message is followed by 0..n messages carrying device
- * specific parameter sets.
- * Although the ordering should be sufficient, NDTA_NAME can be
- * used to identify sequences. The initial message can be identified
- * by checking for NDTA_CONFIG. The device specific messages do
- * not contain this TLV but have NDTPA_IFINDEX set to the
- * corresponding interface index.
- *
- * To change neighbour table attributes, send RTM_SETNEIGHTBL
- * with NDTA_NAME set. Changeable attribute include NDTA_THRESH[1-3],
- * NDTA_GC_INTERVAL, and all TLVs in NDTA_PARMS unless marked
- * otherwise. Device specific parameter sets can be changed by
- * setting NDTPA_IFINDEX to the interface index of the corresponding
- * device.
- ****/
-
-struct ndt_stats {
-       __u64           ndts_allocs;
-       __u64           ndts_destroys;
-       __u64           ndts_hash_grows;
-       __u64           ndts_res_failed;
-       __u64           ndts_lookups;
-       __u64           ndts_hits;
-       __u64           ndts_rcv_probes_mcast;
-       __u64           ndts_rcv_probes_ucast;
-       __u64           ndts_periodic_gc_runs;
-       __u64           ndts_forced_gc_runs;
-       __u64           ndts_table_fulls;
-};
-
-enum {
-       NDTPA_UNSPEC,
-       NDTPA_IFINDEX,                  /* u32, unchangeable */
-       NDTPA_REFCNT,                   /* u32, read-only */
-       NDTPA_REACHABLE_TIME,           /* u64, read-only, msecs */
-       NDTPA_BASE_REACHABLE_TIME,      /* u64, msecs */
-       NDTPA_RETRANS_TIME,             /* u64, msecs */
-       NDTPA_GC_STALETIME,             /* u64, msecs */
-       NDTPA_DELAY_PROBE_TIME,         /* u64, msecs */
-       NDTPA_QUEUE_LEN,                /* u32 */
-       NDTPA_APP_PROBES,               /* u32 */
-       NDTPA_UCAST_PROBES,             /* u32 */
-       NDTPA_MCAST_PROBES,             /* u32 */
-       NDTPA_ANYCAST_DELAY,            /* u64, msecs */
-       NDTPA_PROXY_DELAY,              /* u64, msecs */
-       NDTPA_PROXY_QLEN,               /* u32 */
-       NDTPA_LOCKTIME,                 /* u64, msecs */
-       NDTPA_QUEUE_LENBYTES,           /* u32 */
-       NDTPA_MCAST_REPROBES,           /* u32 */
-       NDTPA_PAD,
-       __NDTPA_MAX
-};
-#define NDTPA_MAX (__NDTPA_MAX - 1)
-
-struct ndtmsg {
-       __u8            ndtm_family;
-       __u8            ndtm_pad1;
-       __u16           ndtm_pad2;
-};
-
-struct ndt_config {
-       __u16           ndtc_key_len;
-       __u16           ndtc_entry_size;
-       __u32           ndtc_entries;
-       __u32           ndtc_last_flush;        /* delta to now in msecs */
-       __u32           ndtc_last_rand;         /* delta to now in msecs */
-       __u32           ndtc_hash_rnd;
-       __u32           ndtc_hash_mask;
-       __u32           ndtc_hash_chain_gc;
-       __u32           ndtc_proxy_qlen;
-};
-
-enum {
-       NDTA_UNSPEC,
-       NDTA_NAME,                      /* char *, unchangeable */
-       NDTA_THRESH1,                   /* u32 */
-       NDTA_THRESH2,                   /* u32 */
-       NDTA_THRESH3,                   /* u32 */
-       NDTA_CONFIG,                    /* struct ndt_config, read-only */
-       NDTA_PARMS,                     /* nested TLV NDTPA_* */
-       NDTA_STATS,                     /* struct ndt_stats, read-only */
-       NDTA_GC_INTERVAL,               /* u64, msecs */
-       NDTA_PAD,
-       __NDTA_MAX
-};
-#define NDTA_MAX (__NDTA_MAX - 1)
-
-#endif
diff --git a/include/linux/net_namespace.h b/include/linux/net_namespace.h
deleted file mode 100644 (file)
index 9a92b7e..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-/* Copyright (c) 2015 6WIND S.A.
- * Author: Nicolas Dichtel <nicolas.dichtel@6wind.com>
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- */
-#ifndef _LINUX_NET_NAMESPACE_H_
-#define _LINUX_NET_NAMESPACE_H_
-
-/* Attributes of RTM_NEWNSID/RTM_GETNSID messages */
-enum {
-       NETNSA_NONE,
-#define NETNSA_NSID_NOT_ASSIGNED -1
-       NETNSA_NSID,
-       NETNSA_PID,
-       NETNSA_FD,
-       __NETNSA_MAX,
-};
-
-#define NETNSA_MAX             (__NETNSA_MAX - 1)
-
-#endif /* _LINUX_NET_NAMESPACE_H_ */
diff --git a/include/linux/netconf.h b/include/linux/netconf.h
deleted file mode 100644 (file)
index 4afbd7d..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-#ifndef _LINUX_NETCONF_H_
-#define _LINUX_NETCONF_H_
-
-#include <linux/types.h>
-#include <linux/netlink.h>
-
-struct netconfmsg {
-       __u8    ncm_family;
-};
-
-enum {
-       NETCONFA_UNSPEC,
-       NETCONFA_IFINDEX,
-       NETCONFA_FORWARDING,
-       NETCONFA_RP_FILTER,
-       NETCONFA_MC_FORWARDING,
-       NETCONFA_PROXY_NEIGH,
-       NETCONFA_IGNORE_ROUTES_WITH_LINKDOWN,
-       NETCONFA_INPUT,
-       __NETCONFA_MAX
-};
-#define NETCONFA_MAX   (__NETCONFA_MAX - 1)
-#define NETCONFA_ALL   -1
-
-#define NETCONFA_IFINDEX_ALL           -1
-#define NETCONFA_IFINDEX_DEFAULT       -2
-
-#endif /* _LINUX_NETCONF_H_ */
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
deleted file mode 100644 (file)
index 66fceb4..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * INET                An implementation of the TCP/IP protocol suite for the LINUX
- *             operating system.  INET is implemented using the  BSD Socket
- *             interface as the means of communication with the user level.
- *
- *             Definitions for the Interfaces handler.
- *
- * Version:    @(#)dev.h       1.0.10  08/12/93
- *
- * Authors:    Ross Biro
- *             Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
- *             Corey Minyard <wf-rch!minyard@relay.EU.net>
- *             Donald J. Becker, <becker@cesdis.gsfc.nasa.gov>
- *             Alan Cox, <alan@lxorguk.ukuu.org.uk>
- *             Bjorn Ekwall. <bj0rn@blox.se>
- *              Pekka Riikonen <priikone@poseidon.pspt.fi>
- *
- *             This program is free software; you can redistribute it and/or
- *             modify it under the terms of the GNU General Public License
- *             as published by the Free Software Foundation; either version
- *             2 of the License, or (at your option) any later version.
- *
- *             Moved to /usr/include/linux for NET3
- */
-#ifndef _LINUX_NETDEVICE_H
-#define _LINUX_NETDEVICE_H
-
-#include <linux/if.h>
-#include <linux/if_ether.h>
-#include <linux/if_packet.h>
-#include <linux/if_link.h>
-
-
-#define MAX_ADDR_LEN   32              /* Largest hardware address length */
-
-/* Initial net device group. All devices belong to group 0 by default. */
-#define INIT_NETDEV_GROUP      0
-
-
-/* interface name assignment types (sysfs name_assign_type attribute) */
-#define NET_NAME_UNKNOWN       0       /* unknown origin (not exposed to userspace) */
-#define NET_NAME_ENUM          1       /* enumerated by kernel */
-#define NET_NAME_PREDICTABLE   2       /* predictably named by the kernel */
-#define NET_NAME_USER          3       /* provided by user-space */
-#define NET_NAME_RENAMED       4       /* renamed by user-space */
-
-/* Media selection options. */
-enum {
-        IF_PORT_UNKNOWN = 0,
-        IF_PORT_10BASE2,
-        IF_PORT_10BASET,
-        IF_PORT_AUI,
-        IF_PORT_100BASET,
-        IF_PORT_100BASETX,
-        IF_PORT_100BASEFX
-};
-
-/* hardware address assignment types */
-#define NET_ADDR_PERM          0       /* address is permanent (default) */
-#define NET_ADDR_RANDOM                1       /* address is generated randomly */
-#define NET_ADDR_STOLEN                2       /* address is stolen from other device */
-#define NET_ADDR_SET           3       /* address is set using
-                                        * dev_set_mac_address() */
-
-#endif /* _LINUX_NETDEVICE_H */
diff --git a/include/linux/netfilter.h b/include/linux/netfilter.h
deleted file mode 100644 (file)
index ff4a4a5..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-#ifndef __LINUX_NETFILTER_H
-#define __LINUX_NETFILTER_H
-
-#include <linux/types.h>
-
-#include <linux/in.h>
-#include <linux/in6.h>
-
-/* Responses from hook functions. */
-#define NF_DROP 0
-#define NF_ACCEPT 1
-#define NF_STOLEN 2
-#define NF_QUEUE 3
-#define NF_REPEAT 4
-#define NF_STOP 5      /* Deprecated, for userspace nf_queue compatibility. */
-#define NF_MAX_VERDICT NF_STOP
-
-/* we overload the higher bits for encoding auxiliary data such as the queue
- * number or errno values. Not nice, but better than additional function
- * arguments. */
-#define NF_VERDICT_MASK 0x000000ff
-
-/* extra verdict flags have mask 0x0000ff00 */
-#define NF_VERDICT_FLAG_QUEUE_BYPASS   0x00008000
-
-/* queue number (NF_QUEUE) or errno (NF_DROP) */
-#define NF_VERDICT_QMASK 0xffff0000
-#define NF_VERDICT_QBITS 16
-
-#define NF_QUEUE_NR(x) ((((x) << 16) & NF_VERDICT_QMASK) | NF_QUEUE)
-
-#define NF_DROP_ERR(x) (((-x) << 16) | NF_DROP)
-
-/* only for userspace compatibility */
-/* Generic cache responses from hook functions.
-   <= 0x2000 is used for protocol-flags. */
-#define NFC_UNKNOWN 0x4000
-#define NFC_ALTERED 0x8000
-
-/* NF_VERDICT_BITS should be 8 now, but userspace might break if this changes */
-#define NF_VERDICT_BITS 16
-
-enum nf_inet_hooks {
-       NF_INET_PRE_ROUTING,
-       NF_INET_LOCAL_IN,
-       NF_INET_FORWARD,
-       NF_INET_LOCAL_OUT,
-       NF_INET_POST_ROUTING,
-       NF_INET_NUMHOOKS
-};
-
-enum nf_dev_hooks {
-       NF_NETDEV_INGRESS,
-       NF_NETDEV_NUMHOOKS
-};
-
-enum {
-       NFPROTO_UNSPEC =  0,
-       NFPROTO_INET   =  1,
-       NFPROTO_IPV4   =  2,
-       NFPROTO_ARP    =  3,
-       NFPROTO_NETDEV =  5,
-       NFPROTO_BRIDGE =  7,
-       NFPROTO_IPV6   = 10,
-       NFPROTO_DECNET = 12,
-       NFPROTO_NUMPROTO,
-};
-
-union nf_inet_addr {
-       __u32           all[4];
-       __be32          ip;
-       __be32          ip6[4];
-       struct in_addr  in;
-       struct in6_addr in6;
-};
-
-#endif /* __LINUX_NETFILTER_H */
diff --git a/include/linux/netfilter/ipset/ip_set.h b/include/linux/netfilter/ipset/ip_set.h
deleted file mode 100644 (file)
index a6c96b0..0000000
+++ /dev/null
@@ -1,304 +0,0 @@
-/* Copyright (C) 2000-2002 Joakim Axelsson <gozem@linux.nu>
- *                         Patrick Schaaf <bof@bof.de>
- *                         Martin Josefsson <gandalf@wlug.westbo.se>
- * Copyright (C) 2003-2011 Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-#ifndef _IP_SET_H
-#define _IP_SET_H
-
-#include <linux/types.h>
-
-/* The protocol version */
-#define IPSET_PROTOCOL         6
-
-/* The max length of strings including NUL: set and type identifiers */
-#define IPSET_MAXNAMELEN       32
-
-/* The maximum permissible comment length we will accept over netlink */
-#define IPSET_MAX_COMMENT_SIZE 255
-
-/* Message types and commands */
-enum ipset_cmd {
-       IPSET_CMD_NONE,
-       IPSET_CMD_PROTOCOL,     /* 1: Return protocol version */
-       IPSET_CMD_CREATE,       /* 2: Create a new (empty) set */
-       IPSET_CMD_DESTROY,      /* 3: Destroy a (empty) set */
-       IPSET_CMD_FLUSH,        /* 4: Remove all elements from a set */
-       IPSET_CMD_RENAME,       /* 5: Rename a set */
-       IPSET_CMD_SWAP,         /* 6: Swap two sets */
-       IPSET_CMD_LIST,         /* 7: List sets */
-       IPSET_CMD_SAVE,         /* 8: Save sets */
-       IPSET_CMD_ADD,          /* 9: Add an element to a set */
-       IPSET_CMD_DEL,          /* 10: Delete an element from a set */
-       IPSET_CMD_TEST,         /* 11: Test an element in a set */
-       IPSET_CMD_HEADER,       /* 12: Get set header data only */
-       IPSET_CMD_TYPE,         /* 13: Get set type */
-       IPSET_MSG_MAX,          /* Netlink message commands */
-
-       /* Commands in userspace: */
-       IPSET_CMD_RESTORE = IPSET_MSG_MAX, /* 14: Enter restore mode */
-       IPSET_CMD_HELP,         /* 15: Get help */
-       IPSET_CMD_VERSION,      /* 16: Get program version */
-       IPSET_CMD_QUIT,         /* 17: Quit from interactive mode */
-
-       IPSET_CMD_MAX,
-
-       IPSET_CMD_COMMIT = IPSET_CMD_MAX, /* 18: Commit buffered commands */
-};
-
-/* Attributes at command level */
-enum {
-       IPSET_ATTR_UNSPEC,
-       IPSET_ATTR_PROTOCOL,    /* 1: Protocol version */
-       IPSET_ATTR_SETNAME,     /* 2: Name of the set */
-       IPSET_ATTR_TYPENAME,    /* 3: Typename */
-       IPSET_ATTR_SETNAME2 = IPSET_ATTR_TYPENAME, /* Setname at rename/swap */
-       IPSET_ATTR_REVISION,    /* 4: Settype revision */
-       IPSET_ATTR_FAMILY,      /* 5: Settype family */
-       IPSET_ATTR_FLAGS,       /* 6: Flags at command level */
-       IPSET_ATTR_DATA,        /* 7: Nested attributes */
-       IPSET_ATTR_ADT,         /* 8: Multiple data containers */
-       IPSET_ATTR_LINENO,      /* 9: Restore lineno */
-       IPSET_ATTR_PROTOCOL_MIN, /* 10: Minimal supported version number */
-       IPSET_ATTR_REVISION_MIN = IPSET_ATTR_PROTOCOL_MIN, /* type rev min */
-       __IPSET_ATTR_CMD_MAX,
-};
-#define IPSET_ATTR_CMD_MAX     (__IPSET_ATTR_CMD_MAX - 1)
-
-/* CADT specific attributes */
-enum {
-       IPSET_ATTR_IP = IPSET_ATTR_UNSPEC + 1,
-       IPSET_ATTR_IP_FROM = IPSET_ATTR_IP,
-       IPSET_ATTR_IP_TO,       /* 2 */
-       IPSET_ATTR_CIDR,        /* 3 */
-       IPSET_ATTR_PORT,        /* 4 */
-       IPSET_ATTR_PORT_FROM = IPSET_ATTR_PORT,
-       IPSET_ATTR_PORT_TO,     /* 5 */
-       IPSET_ATTR_TIMEOUT,     /* 6 */
-       IPSET_ATTR_PROTO,       /* 7 */
-       IPSET_ATTR_CADT_FLAGS,  /* 8 */
-       IPSET_ATTR_CADT_LINENO = IPSET_ATTR_LINENO,     /* 9 */
-       IPSET_ATTR_MARK,        /* 10 */
-       IPSET_ATTR_MARKMASK,    /* 11 */
-       /* Reserve empty slots */
-       IPSET_ATTR_CADT_MAX = 16,
-       /* Create-only specific attributes */
-       IPSET_ATTR_GC,
-       IPSET_ATTR_HASHSIZE,
-       IPSET_ATTR_MAXELEM,
-       IPSET_ATTR_NETMASK,
-       IPSET_ATTR_PROBES,
-       IPSET_ATTR_RESIZE,
-       IPSET_ATTR_SIZE,
-       /* Kernel-only */
-       IPSET_ATTR_ELEMENTS,
-       IPSET_ATTR_REFERENCES,
-       IPSET_ATTR_MEMSIZE,
-
-       __IPSET_ATTR_CREATE_MAX,
-};
-#define IPSET_ATTR_CREATE_MAX  (__IPSET_ATTR_CREATE_MAX - 1)
-
-/* ADT specific attributes */
-enum {
-       IPSET_ATTR_ETHER = IPSET_ATTR_CADT_MAX + 1,
-       IPSET_ATTR_NAME,
-       IPSET_ATTR_NAMEREF,
-       IPSET_ATTR_IP2,
-       IPSET_ATTR_CIDR2,
-       IPSET_ATTR_IP2_TO,
-       IPSET_ATTR_IFACE,
-       IPSET_ATTR_BYTES,
-       IPSET_ATTR_PACKETS,
-       IPSET_ATTR_COMMENT,
-       IPSET_ATTR_SKBMARK,
-       IPSET_ATTR_SKBPRIO,
-       IPSET_ATTR_SKBQUEUE,
-       IPSET_ATTR_PAD,
-       __IPSET_ATTR_ADT_MAX,
-};
-#define IPSET_ATTR_ADT_MAX     (__IPSET_ATTR_ADT_MAX - 1)
-
-/* IP specific attributes */
-enum {
-       IPSET_ATTR_IPADDR_IPV4 = IPSET_ATTR_UNSPEC + 1,
-       IPSET_ATTR_IPADDR_IPV6,
-       __IPSET_ATTR_IPADDR_MAX,
-};
-#define IPSET_ATTR_IPADDR_MAX  (__IPSET_ATTR_IPADDR_MAX - 1)
-
-/* Error codes */
-enum ipset_errno {
-       IPSET_ERR_PRIVATE = 4096,
-       IPSET_ERR_PROTOCOL,
-       IPSET_ERR_FIND_TYPE,
-       IPSET_ERR_MAX_SETS,
-       IPSET_ERR_BUSY,
-       IPSET_ERR_EXIST_SETNAME2,
-       IPSET_ERR_TYPE_MISMATCH,
-       IPSET_ERR_EXIST,
-       IPSET_ERR_INVALID_CIDR,
-       IPSET_ERR_INVALID_NETMASK,
-       IPSET_ERR_INVALID_FAMILY,
-       IPSET_ERR_TIMEOUT,
-       IPSET_ERR_REFERENCED,
-       IPSET_ERR_IPADDR_IPV4,
-       IPSET_ERR_IPADDR_IPV6,
-       IPSET_ERR_COUNTER,
-       IPSET_ERR_COMMENT,
-       IPSET_ERR_INVALID_MARKMASK,
-       IPSET_ERR_SKBINFO,
-
-       /* Type specific error codes */
-       IPSET_ERR_TYPE_SPECIFIC = 4352,
-};
-
-/* Flags at command level or match/target flags, lower half of cmdattrs*/
-enum ipset_cmd_flags {
-       IPSET_FLAG_BIT_EXIST    = 0,
-       IPSET_FLAG_EXIST        = (1 << IPSET_FLAG_BIT_EXIST),
-       IPSET_FLAG_BIT_LIST_SETNAME = 1,
-       IPSET_FLAG_LIST_SETNAME = (1 << IPSET_FLAG_BIT_LIST_SETNAME),
-       IPSET_FLAG_BIT_LIST_HEADER = 2,
-       IPSET_FLAG_LIST_HEADER  = (1 << IPSET_FLAG_BIT_LIST_HEADER),
-       IPSET_FLAG_BIT_SKIP_COUNTER_UPDATE = 3,
-       IPSET_FLAG_SKIP_COUNTER_UPDATE =
-               (1 << IPSET_FLAG_BIT_SKIP_COUNTER_UPDATE),
-       IPSET_FLAG_BIT_SKIP_SUBCOUNTER_UPDATE = 4,
-       IPSET_FLAG_SKIP_SUBCOUNTER_UPDATE =
-               (1 << IPSET_FLAG_BIT_SKIP_SUBCOUNTER_UPDATE),
-       IPSET_FLAG_BIT_MATCH_COUNTERS = 5,
-       IPSET_FLAG_MATCH_COUNTERS = (1 << IPSET_FLAG_BIT_MATCH_COUNTERS),
-       IPSET_FLAG_BIT_RETURN_NOMATCH = 7,
-       IPSET_FLAG_RETURN_NOMATCH = (1 << IPSET_FLAG_BIT_RETURN_NOMATCH),
-       IPSET_FLAG_BIT_MAP_SKBMARK = 8,
-       IPSET_FLAG_MAP_SKBMARK = (1 << IPSET_FLAG_BIT_MAP_SKBMARK),
-       IPSET_FLAG_BIT_MAP_SKBPRIO = 9,
-       IPSET_FLAG_MAP_SKBPRIO = (1 << IPSET_FLAG_BIT_MAP_SKBPRIO),
-       IPSET_FLAG_BIT_MAP_SKBQUEUE = 10,
-       IPSET_FLAG_MAP_SKBQUEUE = (1 << IPSET_FLAG_BIT_MAP_SKBQUEUE),
-       IPSET_FLAG_CMD_MAX = 15,
-};
-
-/* Flags at CADT attribute level, upper half of cmdattrs */
-enum ipset_cadt_flags {
-       IPSET_FLAG_BIT_BEFORE   = 0,
-       IPSET_FLAG_BEFORE       = (1 << IPSET_FLAG_BIT_BEFORE),
-       IPSET_FLAG_BIT_PHYSDEV  = 1,
-       IPSET_FLAG_PHYSDEV      = (1 << IPSET_FLAG_BIT_PHYSDEV),
-       IPSET_FLAG_BIT_NOMATCH  = 2,
-       IPSET_FLAG_NOMATCH      = (1 << IPSET_FLAG_BIT_NOMATCH),
-       IPSET_FLAG_BIT_WITH_COUNTERS = 3,
-       IPSET_FLAG_WITH_COUNTERS = (1 << IPSET_FLAG_BIT_WITH_COUNTERS),
-       IPSET_FLAG_BIT_WITH_COMMENT = 4,
-       IPSET_FLAG_WITH_COMMENT = (1 << IPSET_FLAG_BIT_WITH_COMMENT),
-       IPSET_FLAG_BIT_WITH_FORCEADD = 5,
-       IPSET_FLAG_WITH_FORCEADD = (1 << IPSET_FLAG_BIT_WITH_FORCEADD),
-       IPSET_FLAG_BIT_WITH_SKBINFO = 6,
-       IPSET_FLAG_WITH_SKBINFO = (1 << IPSET_FLAG_BIT_WITH_SKBINFO),
-       IPSET_FLAG_CADT_MAX     = 15,
-};
-
-/* The flag bits which correspond to the non-extension create flags */
-enum ipset_create_flags {
-       IPSET_CREATE_FLAG_BIT_FORCEADD = 0,
-       IPSET_CREATE_FLAG_FORCEADD = (1 << IPSET_CREATE_FLAG_BIT_FORCEADD),
-       IPSET_CREATE_FLAG_BIT_MAX = 7,
-};
-
-/* Commands with settype-specific attributes */
-enum ipset_adt {
-       IPSET_ADD,
-       IPSET_DEL,
-       IPSET_TEST,
-       IPSET_ADT_MAX,
-       IPSET_CREATE = IPSET_ADT_MAX,
-       IPSET_CADT_MAX,
-};
-
-/* Sets are identified by an index in kernel space. Tweak with ip_set_id_t
- * and IPSET_INVALID_ID if you want to increase the max number of sets.
- */
-typedef __u16 ip_set_id_t;
-
-#define IPSET_INVALID_ID               65535
-
-enum ip_set_dim {
-       IPSET_DIM_ZERO = 0,
-       IPSET_DIM_ONE,
-       IPSET_DIM_TWO,
-       IPSET_DIM_THREE,
-       /* Max dimension in elements.
-        * If changed, new revision of iptables match/target is required.
-        */
-       IPSET_DIM_MAX = 6,
-       /* Backward compatibility: set match revision 2 */
-       IPSET_BIT_RETURN_NOMATCH = 7,
-};
-
-/* Option flags for kernel operations */
-enum ip_set_kopt {
-       IPSET_INV_MATCH = (1 << IPSET_DIM_ZERO),
-       IPSET_DIM_ONE_SRC = (1 << IPSET_DIM_ONE),
-       IPSET_DIM_TWO_SRC = (1 << IPSET_DIM_TWO),
-       IPSET_DIM_THREE_SRC = (1 << IPSET_DIM_THREE),
-       IPSET_RETURN_NOMATCH = (1 << IPSET_BIT_RETURN_NOMATCH),
-};
-
-enum {
-       IPSET_COUNTER_NONE = 0,
-       IPSET_COUNTER_EQ,
-       IPSET_COUNTER_NE,
-       IPSET_COUNTER_LT,
-       IPSET_COUNTER_GT,
-};
-
-/* Backward compatibility for set match v3 */
-struct ip_set_counter_match0 {
-       __u8 op;
-       __u64 value;
-};
-
-struct ip_set_counter_match {
-       __aligned_u64 value;
-       __u8 op;
-};
-
-/* Interface to iptables/ip6tables */
-
-#define SO_IP_SET              83
-
-union ip_set_name_index {
-       char name[IPSET_MAXNAMELEN];
-       ip_set_id_t index;
-};
-
-#define IP_SET_OP_GET_BYNAME   0x00000006      /* Get set index by name */
-struct ip_set_req_get_set {
-       unsigned int op;
-       unsigned int version;
-       union ip_set_name_index set;
-};
-
-#define IP_SET_OP_GET_BYINDEX  0x00000007      /* Get set name by index */
-/* Uses ip_set_req_get_set */
-
-#define IP_SET_OP_GET_FNAME    0x00000008      /* Get set index and family */
-struct ip_set_req_get_set_family {
-       unsigned int op;
-       unsigned int version;
-       unsigned int family;
-       union ip_set_name_index set;
-};
-
-#define IP_SET_OP_VERSION      0x00000100      /* Ask kernel version */
-struct ip_set_req_version {
-       unsigned int op;
-       unsigned int version;
-};
-
-#endif /* _IP_SET_H */
diff --git a/include/linux/netfilter/x_tables.h b/include/linux/netfilter/x_tables.h
deleted file mode 100644 (file)
index 4120970..0000000
+++ /dev/null
@@ -1,185 +0,0 @@
-#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. */
-
-/* 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)
-
-
-/* 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 /* _X_TABLES_H */
diff --git a/include/linux/netfilter/xt_set.h b/include/linux/netfilter/xt_set.h
deleted file mode 100644 (file)
index d4e0234..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-#ifndef _XT_SET_H
-#define _XT_SET_H
-
-#include <linux/types.h>
-#include <linux/netfilter/ipset/ip_set.h>
-
-/* Revision 0 interface: backward compatible with netfilter/iptables */
-
-/*
- * Option flags for kernel operations (xt_set_info_v0)
- */
-#define IPSET_SRC              0x01    /* Source match/add */
-#define IPSET_DST              0x02    /* Destination match/add */
-#define IPSET_MATCH_INV                0x04    /* Inverse matching */
-
-struct xt_set_info_v0 {
-       ip_set_id_t index;
-       union {
-               __u32 flags[IPSET_DIM_MAX + 1];
-               struct {
-                       __u32 __flags[IPSET_DIM_MAX];
-                       __u8 dim;
-                       __u8 flags;
-               } compat;
-       } u;
-};
-
-/* match and target infos */
-struct xt_set_info_match_v0 {
-       struct xt_set_info_v0 match_set;
-};
-
-struct xt_set_info_target_v0 {
-       struct xt_set_info_v0 add_set;
-       struct xt_set_info_v0 del_set;
-};
-
-/* Revision 1  match and target */
-
-struct xt_set_info {
-       ip_set_id_t index;
-       __u8 dim;
-       __u8 flags;
-};
-
-/* match and target infos */
-struct xt_set_info_match_v1 {
-       struct xt_set_info match_set;
-};
-
-struct xt_set_info_target_v1 {
-       struct xt_set_info add_set;
-       struct xt_set_info del_set;
-};
-
-/* Revision 2 target */
-
-struct xt_set_info_target_v2 {
-       struct xt_set_info add_set;
-       struct xt_set_info del_set;
-       __u32 flags;
-       __u32 timeout;
-};
-
-/* Revision 3 match */
-
-struct xt_set_info_match_v3 {
-       struct xt_set_info match_set;
-       struct ip_set_counter_match0 packets;
-       struct ip_set_counter_match0 bytes;
-       __u32 flags;
-};
-
-/* Revision 3 target */
-
-struct xt_set_info_target_v3 {
-       struct xt_set_info add_set;
-       struct xt_set_info del_set;
-       struct xt_set_info map_set;
-       __u32 flags;
-       __u32 timeout;
-};
-
-/* Revision 4 match */
-
-struct xt_set_info_match_v4 {
-       struct xt_set_info match_set;
-       struct ip_set_counter_match packets;
-       struct ip_set_counter_match bytes;
-       __u32 flags;
-};
-
-#endif /*_XT_SET_H*/
diff --git a/include/linux/netfilter/xt_tcpudp.h b/include/linux/netfilter/xt_tcpudp.h
deleted file mode 100644 (file)
index 38aa7b3..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-#ifndef _XT_TCPUDP_H
-#define _XT_TCPUDP_H
-
-#include <linux/types.h>
-
-/* TCP matching stuff */
-struct xt_tcp {
-       __u16 spts[2];                  /* Source port range. */
-       __u16 dpts[2];                  /* Destination port range. */
-       __u8 option;                    /* TCP Option iff non-zero*/
-       __u8 flg_mask;                  /* TCP flags mask byte */
-       __u8 flg_cmp;                   /* TCP flags compare byte */
-       __u8 invflags;                  /* Inverse flags */
-};
-
-/* Values for "inv" field in struct ipt_tcp. */
-#define XT_TCP_INV_SRCPT       0x01    /* Invert the sense of source ports. */
-#define XT_TCP_INV_DSTPT       0x02    /* Invert the sense of dest ports. */
-#define XT_TCP_INV_FLAGS       0x04    /* Invert the sense of TCP flags. */
-#define XT_TCP_INV_OPTION      0x08    /* Invert the sense of option test. */
-#define XT_TCP_INV_MASK                0x0F    /* All possible flags. */
-
-/* UDP matching stuff */
-struct xt_udp {
-       __u16 spts[2];                  /* Source port range. */
-       __u16 dpts[2];                  /* Destination port range. */
-       __u8 invflags;                  /* Inverse flags */
-};
-
-/* Values for "invflags" field in struct ipt_udp. */
-#define XT_UDP_INV_SRCPT       0x01    /* Invert the sense of source ports. */
-#define XT_UDP_INV_DSTPT       0x02    /* Invert the sense of dest ports. */
-#define XT_UDP_INV_MASK        0x03    /* All possible flags. */
-
-
-#endif
diff --git a/include/linux/netfilter_ipv4.h b/include/linux/netfilter_ipv4.h
deleted file mode 100644 (file)
index a5f4dc7..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-/* IPv4-specific defines for netfilter. 
- * (C)1998 Rusty Russell -- This code is GPL.
- */
-#ifndef __LINUX_IP_NETFILTER_H
-#define __LINUX_IP_NETFILTER_H
-
-
-#include <linux/netfilter.h>
-
-/* only for userspace compatibility */
-
-#include <limits.h> /* for INT_MIN, INT_MAX */
-
-/* IP Cache bits. */
-/* Src IP address. */
-#define NFC_IP_SRC             0x0001
-/* Dest IP address. */
-#define NFC_IP_DST             0x0002
-/* Input device. */
-#define NFC_IP_IF_IN           0x0004
-/* Output device. */
-#define NFC_IP_IF_OUT          0x0008
-/* TOS. */
-#define NFC_IP_TOS             0x0010
-/* Protocol. */
-#define NFC_IP_PROTO           0x0020
-/* IP options. */
-#define NFC_IP_OPTIONS         0x0040
-/* Frag & flags. */
-#define NFC_IP_FRAG            0x0080
-
-/* Per-protocol information: only matters if proto match. */
-/* TCP flags. */
-#define NFC_IP_TCPFLAGS                0x0100
-/* Source port. */
-#define NFC_IP_SRC_PT          0x0200
-/* Dest port. */
-#define NFC_IP_DST_PT          0x0400
-/* Something else about the proto */
-#define NFC_IP_PROTO_UNKNOWN   0x2000
-
-/* IP Hooks */
-/* After promisc drops, checksum checks. */
-#define NF_IP_PRE_ROUTING      0
-/* If the packet is destined for this box. */
-#define NF_IP_LOCAL_IN         1
-/* If the packet is destined for another interface. */
-#define NF_IP_FORWARD          2
-/* Packets coming from a local process. */
-#define NF_IP_LOCAL_OUT                3
-/* Packets about to hit the wire. */
-#define NF_IP_POST_ROUTING     4
-#define NF_IP_NUMHOOKS         5
-
-enum nf_ip_hook_priorities {
-       NF_IP_PRI_FIRST = INT_MIN,
-       NF_IP_PRI_CONNTRACK_DEFRAG = -400,
-       NF_IP_PRI_RAW = -300,
-       NF_IP_PRI_SELINUX_FIRST = -225,
-       NF_IP_PRI_CONNTRACK = -200,
-       NF_IP_PRI_MANGLE = -150,
-       NF_IP_PRI_NAT_DST = -100,
-       NF_IP_PRI_FILTER = 0,
-       NF_IP_PRI_SECURITY = 50,
-       NF_IP_PRI_NAT_SRC = 100,
-       NF_IP_PRI_SELINUX_LAST = 225,
-       NF_IP_PRI_CONNTRACK_HELPER = 300,
-       NF_IP_PRI_CONNTRACK_CONFIRM = INT_MAX,
-       NF_IP_PRI_LAST = INT_MAX,
-};
-
-/* Arguments for setsockopt SOL_IP: */
-/* 2.0 firewalling went from 64 through 71 (and +256, +512, etc). */
-/* 2.2 firewalling (+ masq) went from 64 through 76 */
-/* 2.4 firewalling went 64 through 67. */
-#define SO_ORIGINAL_DST 80
-
-
-#endif /* __LINUX_IP_NETFILTER_H */
diff --git a/include/linux/netfilter_ipv4/ip_tables.h b/include/linux/netfilter_ipv4/ip_tables.h
deleted file mode 100644 (file)
index 456fb86..0000000
+++ /dev/null
@@ -1,228 +0,0 @@
-/*
- * 25-Jul-1998 Major changes to allow for ip chain table
- *
- * 3-Jan-2000 Named tables to allow packet selection for different uses.
- */
-
-/*
- *     Format of an IP firewall descriptor
- *
- *     src, dst, src_mask, dst_mask are always stored in network byte order.
- *     flags are stored in host byte order (of course).
- *     Port numbers are stored in HOST byte order.
- */
-
-#ifndef _IPTABLES_H
-#define _IPTABLES_H
-
-#include <linux/types.h>
-
-#include <linux/if.h>
-#include <linux/netfilter_ipv4.h>
-
-#include <linux/netfilter/x_tables.h>
-
-#define IPT_FUNCTION_MAXNAMELEN XT_FUNCTION_MAXNAMELEN
-#define IPT_TABLE_MAXNAMELEN XT_TABLE_MAXNAMELEN
-#define ipt_match xt_match
-#define ipt_target xt_target
-#define ipt_table xt_table
-#define ipt_get_revision xt_get_revision
-#define ipt_entry_match xt_entry_match
-#define ipt_entry_target xt_entry_target
-#define ipt_standard_target xt_standard_target
-#define ipt_error_target xt_error_target
-#define ipt_counters xt_counters
-#define IPT_CONTINUE XT_CONTINUE
-#define IPT_RETURN XT_RETURN
-
-/* This group is older than old (iptables < v1.4.0-rc1~89) */
-#include <linux/netfilter/xt_tcpudp.h>
-#define ipt_udp xt_udp
-#define ipt_tcp xt_tcp
-#define IPT_TCP_INV_SRCPT      XT_TCP_INV_SRCPT
-#define IPT_TCP_INV_DSTPT      XT_TCP_INV_DSTPT
-#define IPT_TCP_INV_FLAGS      XT_TCP_INV_FLAGS
-#define IPT_TCP_INV_OPTION     XT_TCP_INV_OPTION
-#define IPT_TCP_INV_MASK       XT_TCP_INV_MASK
-#define IPT_UDP_INV_SRCPT      XT_UDP_INV_SRCPT
-#define IPT_UDP_INV_DSTPT      XT_UDP_INV_DSTPT
-#define IPT_UDP_INV_MASK       XT_UDP_INV_MASK
-
-/* The argument to IPT_SO_ADD_COUNTERS. */
-#define ipt_counters_info xt_counters_info
-/* Standard return verdict, or do jump. */
-#define IPT_STANDARD_TARGET XT_STANDARD_TARGET
-/* Error verdict. */
-#define IPT_ERROR_TARGET XT_ERROR_TARGET
-
-/* fn returns 0 to continue iteration */
-#define IPT_MATCH_ITERATE(e, fn, args...) \
-       XT_MATCH_ITERATE(struct ipt_entry, e, fn, ## args)
-
-/* fn returns 0 to continue iteration */
-#define IPT_ENTRY_ITERATE(entries, size, fn, args...) \
-       XT_ENTRY_ITERATE(struct ipt_entry, entries, size, fn, ## args)
-
-/* Yes, Virginia, you have to zero the padding. */
-struct ipt_ip {
-       /* Source and destination IP addr */
-       struct in_addr src, dst;
-       /* Mask for src and dest IP addr */
-       struct in_addr smsk, dmsk;
-       char iniface[IFNAMSIZ], outiface[IFNAMSIZ];
-       unsigned char iniface_mask[IFNAMSIZ], outiface_mask[IFNAMSIZ];
-
-       /* Protocol, 0 = ANY */
-       __u16 proto;
-
-       /* Flags word */
-       __u8 flags;
-       /* Inverse flags */
-       __u8 invflags;
-};
-
-/* Values for "flag" field in struct ipt_ip (general ip structure). */
-#define IPT_F_FRAG             0x01    /* Set if rule is a fragment rule */
-#define IPT_F_GOTO             0x02    /* Set if jump is a goto */
-#define IPT_F_MASK             0x03    /* All possible flag bits mask. */
-
-/* Values for "inv" field in struct ipt_ip. */
-#define IPT_INV_VIA_IN         0x01    /* Invert the sense of IN IFACE. */
-#define IPT_INV_VIA_OUT                0x02    /* Invert the sense of OUT IFACE */
-#define IPT_INV_TOS            0x04    /* Invert the sense of TOS. */
-#define IPT_INV_SRCIP          0x08    /* Invert the sense of SRC IP. */
-#define IPT_INV_DSTIP          0x10    /* Invert the sense of DST OP. */
-#define IPT_INV_FRAG           0x20    /* Invert the sense of FRAG. */
-#define IPT_INV_PROTO          XT_INV_PROTO
-#define IPT_INV_MASK           0x7F    /* All possible flag bits mask. */
-
-/* This structure defines each of the firewall rules.  Consists of 3
-   parts which are 1) general IP header stuff 2) match specific
-   stuff 3) the target to perform if the rule matches */
-struct ipt_entry {
-       struct ipt_ip ip;
-
-       /* Mark with fields that we care about. */
-       unsigned int nfcache;
-
-       /* Size of ipt_entry + matches */
-       __u16 target_offset;
-       /* Size of ipt_entry + matches + target */
-       __u16 next_offset;
-
-       /* Back pointer */
-       unsigned int comefrom;
-
-       /* Packet and byte counters. */
-       struct xt_counters counters;
-
-       /* The matches (if any), then the target. */
-       unsigned char elems[0];
-};
-
-/*
- * New IP firewall options for [gs]etsockopt at the RAW IP level.
- * Unlike BSD Linux inherits IP options so you don't have to use a raw
- * socket for this. Instead we check rights in the calls.
- *
- * ATTENTION: check linux/in.h before adding new number here.
- */
-#define IPT_BASE_CTL           64
-
-#define IPT_SO_SET_REPLACE     (IPT_BASE_CTL)
-#define IPT_SO_SET_ADD_COUNTERS        (IPT_BASE_CTL + 1)
-#define IPT_SO_SET_MAX         IPT_SO_SET_ADD_COUNTERS
-
-#define IPT_SO_GET_INFO                        (IPT_BASE_CTL)
-#define IPT_SO_GET_ENTRIES             (IPT_BASE_CTL + 1)
-#define IPT_SO_GET_REVISION_MATCH      (IPT_BASE_CTL + 2)
-#define IPT_SO_GET_REVISION_TARGET     (IPT_BASE_CTL + 3)
-#define IPT_SO_GET_MAX                 IPT_SO_GET_REVISION_TARGET
-
-/* ICMP matching stuff */
-struct ipt_icmp {
-       __u8 type;                              /* type to match */
-       __u8 code[2];                           /* range of code */
-       __u8 invflags;                          /* Inverse flags */
-};
-
-/* Values for "inv" field for struct ipt_icmp. */
-#define IPT_ICMP_INV   0x01    /* Invert the sense of type/code test */
-
-/* The argument to IPT_SO_GET_INFO */
-struct ipt_getinfo {
-       /* Which table: caller fills this in. */
-       char name[XT_TABLE_MAXNAMELEN];
-
-       /* Kernel fills these in. */
-       /* Which hook entry points are valid: bitmask */
-       unsigned int valid_hooks;
-
-       /* Hook entry points: one per netfilter hook. */
-       unsigned int hook_entry[NF_INET_NUMHOOKS];
-
-       /* Underflow points. */
-       unsigned int underflow[NF_INET_NUMHOOKS];
-
-       /* Number of entries */
-       unsigned int num_entries;
-
-       /* Size of entries. */
-       unsigned int size;
-};
-
-/* The argument to IPT_SO_SET_REPLACE. */
-struct ipt_replace {
-       /* Which table. */
-       char name[XT_TABLE_MAXNAMELEN];
-
-       /* Which hook entry points are valid: bitmask.  You can't
-           change this. */
-       unsigned int valid_hooks;
-
-       /* Number of entries */
-       unsigned int num_entries;
-
-       /* Total size of new entries */
-       unsigned int size;
-
-       /* Hook entry points. */
-       unsigned int hook_entry[NF_INET_NUMHOOKS];
-
-       /* Underflow points. */
-       unsigned int underflow[NF_INET_NUMHOOKS];
-
-       /* Information about old entries: */
-       /* Number of counters (must be equal to current number of entries). */
-       unsigned int num_counters;
-       /* The old entries' counters. */
-       struct xt_counters *counters;
-
-       /* The entries (hang off end: not really an array). */
-       struct ipt_entry entries[0];
-};
-
-/* The argument to IPT_SO_GET_ENTRIES. */
-struct ipt_get_entries {
-       /* Which table: user fills this in. */
-       char name[XT_TABLE_MAXNAMELEN];
-
-       /* User fills this in: total entry size. */
-       unsigned int size;
-
-       /* The entries. */
-       struct ipt_entry entrytable[0];
-};
-
-/* Helper functions */
-static __inline__ struct xt_entry_target *
-ipt_get_target(struct ipt_entry *e)
-{
-       return (void *)e + e->target_offset;
-}
-
-/*
- *     Main firewall chains definitions and global var's definitions.
- */
-#endif /* _IPTABLES_H */
diff --git a/include/linux/netfilter_ipv6.h b/include/linux/netfilter_ipv6.h
deleted file mode 100644 (file)
index 8483d1d..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-/* IPv6-specific defines for netfilter. 
- * (C)1998 Rusty Russell -- This code is GPL.
- * (C)1999 David Jeffery
- *   this header was blatantly ripped from netfilter_ipv4.h 
- *   it's amazing what adding a bunch of 6s can do =8^)
- */
-#ifndef __LINUX_IP6_NETFILTER_H
-#define __LINUX_IP6_NETFILTER_H
-
-
-#include <linux/netfilter.h>
-
-/* only for userspace compatibility */
-
-#include <limits.h> /* for INT_MIN, INT_MAX */
-
-/* IP Cache bits. */
-/* Src IP address. */
-#define NFC_IP6_SRC              0x0001
-/* Dest IP address. */
-#define NFC_IP6_DST              0x0002
-/* Input device. */
-#define NFC_IP6_IF_IN            0x0004
-/* Output device. */
-#define NFC_IP6_IF_OUT           0x0008
-/* TOS. */
-#define NFC_IP6_TOS              0x0010
-/* Protocol. */
-#define NFC_IP6_PROTO            0x0020
-/* IP options. */
-#define NFC_IP6_OPTIONS          0x0040
-/* Frag & flags. */
-#define NFC_IP6_FRAG             0x0080
-
-
-/* Per-protocol information: only matters if proto match. */
-/* TCP flags. */
-#define NFC_IP6_TCPFLAGS         0x0100
-/* Source port. */
-#define NFC_IP6_SRC_PT           0x0200
-/* Dest port. */
-#define NFC_IP6_DST_PT           0x0400
-/* Something else about the proto */
-#define NFC_IP6_PROTO_UNKNOWN    0x2000
-
-/* IP6 Hooks */
-/* After promisc drops, checksum checks. */
-#define NF_IP6_PRE_ROUTING     0
-/* If the packet is destined for this box. */
-#define NF_IP6_LOCAL_IN                1
-/* If the packet is destined for another interface. */
-#define NF_IP6_FORWARD         2
-/* Packets coming from a local process. */
-#define NF_IP6_LOCAL_OUT               3
-/* Packets about to hit the wire. */
-#define NF_IP6_POST_ROUTING    4
-#define NF_IP6_NUMHOOKS                5
-
-
-enum nf_ip6_hook_priorities {
-       NF_IP6_PRI_FIRST = INT_MIN,
-       NF_IP6_PRI_CONNTRACK_DEFRAG = -400,
-       NF_IP6_PRI_RAW = -300,
-       NF_IP6_PRI_SELINUX_FIRST = -225,
-       NF_IP6_PRI_CONNTRACK = -200,
-       NF_IP6_PRI_MANGLE = -150,
-       NF_IP6_PRI_NAT_DST = -100,
-       NF_IP6_PRI_FILTER = 0,
-       NF_IP6_PRI_SECURITY = 50,
-       NF_IP6_PRI_NAT_SRC = 100,
-       NF_IP6_PRI_SELINUX_LAST = 225,
-       NF_IP6_PRI_CONNTRACK_HELPER = 300,
-       NF_IP6_PRI_LAST = INT_MAX,
-};
-
-
-#endif /* __LINUX_IP6_NETFILTER_H */
diff --git a/include/linux/netfilter_ipv6/ip6_tables.h b/include/linux/netfilter_ipv6/ip6_tables.h
deleted file mode 100644 (file)
index fcc8cca..0000000
+++ /dev/null
@@ -1,269 +0,0 @@
-/*
- * 25-Jul-1998 Major changes to allow for ip chain table
- *
- * 3-Jan-2000 Named tables to allow packet selection for different uses.
- */
-
-/*
- *     Format of an IP6 firewall descriptor
- *
- *     src, dst, src_mask, dst_mask are always stored in network byte order.
- *     flags are stored in host byte order (of course).
- *     Port numbers are stored in HOST byte order.
- */
-
-#ifndef _IP6_TABLES_H
-#define _IP6_TABLES_H
-
-#include <linux/types.h>
-
-#include <linux/if.h>
-#include <linux/netfilter_ipv6.h>
-
-#include <linux/netfilter/x_tables.h>
-
-#define IP6T_FUNCTION_MAXNAMELEN XT_FUNCTION_MAXNAMELEN
-#define IP6T_TABLE_MAXNAMELEN XT_TABLE_MAXNAMELEN
-#define ip6t_match xt_match
-#define ip6t_target xt_target
-#define ip6t_table xt_table
-#define ip6t_get_revision xt_get_revision
-#define ip6t_entry_match xt_entry_match
-#define ip6t_entry_target xt_entry_target
-#define ip6t_standard_target xt_standard_target
-#define ip6t_error_target xt_error_target
-#define ip6t_counters xt_counters
-#define IP6T_CONTINUE XT_CONTINUE
-#define IP6T_RETURN XT_RETURN
-
-/* Pre-iptables-1.4.0 */
-#include <linux/netfilter/xt_tcpudp.h>
-#define ip6t_tcp xt_tcp
-#define ip6t_udp xt_udp
-#define IP6T_TCP_INV_SRCPT     XT_TCP_INV_SRCPT
-#define IP6T_TCP_INV_DSTPT     XT_TCP_INV_DSTPT
-#define IP6T_TCP_INV_FLAGS     XT_TCP_INV_FLAGS
-#define IP6T_TCP_INV_OPTION    XT_TCP_INV_OPTION
-#define IP6T_TCP_INV_MASK      XT_TCP_INV_MASK
-#define IP6T_UDP_INV_SRCPT     XT_UDP_INV_SRCPT
-#define IP6T_UDP_INV_DSTPT     XT_UDP_INV_DSTPT
-#define IP6T_UDP_INV_MASK      XT_UDP_INV_MASK
-
-#define ip6t_counters_info xt_counters_info
-#define IP6T_STANDARD_TARGET XT_STANDARD_TARGET
-#define IP6T_ERROR_TARGET XT_ERROR_TARGET
-#define IP6T_MATCH_ITERATE(e, fn, args...) \
-       XT_MATCH_ITERATE(struct ip6t_entry, e, fn, ## args)
-#define IP6T_ENTRY_ITERATE(entries, size, fn, args...) \
-       XT_ENTRY_ITERATE(struct ip6t_entry, entries, size, fn, ## args)
-
-/* Yes, Virginia, you have to zero the padding. */
-struct ip6t_ip6 {
-       /* Source and destination IP6 addr */
-       struct in6_addr src, dst;               
-       /* Mask for src and dest IP6 addr */
-       struct in6_addr smsk, dmsk;
-       char iniface[IFNAMSIZ], outiface[IFNAMSIZ];
-       unsigned char iniface_mask[IFNAMSIZ], outiface_mask[IFNAMSIZ];
-
-       /* Upper protocol number
-        * - The allowed value is 0 (any) or protocol number of last parsable
-        *   header, which is 50 (ESP), 59 (No Next Header), 135 (MH), or
-        *   the non IPv6 extension headers.
-        * - The protocol numbers of IPv6 extension headers except of ESP and
-        *   MH do not match any packets.
-        * - You also need to set IP6T_FLAGS_PROTO to "flags" to check protocol.
-        */
-       __u16 proto;
-       /* TOS to match iff flags & IP6T_F_TOS */
-       __u8 tos;
-
-       /* Flags word */
-       __u8 flags;
-       /* Inverse flags */
-       __u8 invflags;
-};
-
-/* Values for "flag" field in struct ip6t_ip6 (general ip6 structure). */
-#define IP6T_F_PROTO           0x01    /* Set if rule cares about upper 
-                                          protocols */
-#define IP6T_F_TOS             0x02    /* Match the TOS. */
-#define IP6T_F_GOTO            0x04    /* Set if jump is a goto */
-#define IP6T_F_MASK            0x07    /* All possible flag bits mask. */
-
-/* Values for "inv" field in struct ip6t_ip6. */
-#define IP6T_INV_VIA_IN                0x01    /* Invert the sense of IN IFACE. */
-#define IP6T_INV_VIA_OUT               0x02    /* Invert the sense of OUT IFACE */
-#define IP6T_INV_TOS           0x04    /* Invert the sense of TOS. */
-#define IP6T_INV_SRCIP         0x08    /* Invert the sense of SRC IP. */
-#define IP6T_INV_DSTIP         0x10    /* Invert the sense of DST OP. */
-#define IP6T_INV_FRAG          0x20    /* Invert the sense of FRAG. */
-#define IP6T_INV_PROTO         XT_INV_PROTO
-#define IP6T_INV_MASK          0x7F    /* All possible flag bits mask. */
-
-/* This structure defines each of the firewall rules.  Consists of 3
-   parts which are 1) general IP header stuff 2) match specific
-   stuff 3) the target to perform if the rule matches */
-struct ip6t_entry {
-       struct ip6t_ip6 ipv6;
-
-       /* Mark with fields that we care about. */
-       unsigned int nfcache;
-
-       /* Size of ipt_entry + matches */
-       __u16 target_offset;
-       /* Size of ipt_entry + matches + target */
-       __u16 next_offset;
-
-       /* Back pointer */
-       unsigned int comefrom;
-
-       /* Packet and byte counters. */
-       struct xt_counters counters;
-
-       /* The matches (if any), then the target. */
-       unsigned char elems[0];
-};
-
-/* Standard entry */
-struct ip6t_standard {
-       struct ip6t_entry entry;
-       struct xt_standard_target target;
-};
-
-struct ip6t_error {
-       struct ip6t_entry entry;
-       struct xt_error_target target;
-};
-
-#define IP6T_ENTRY_INIT(__size)                                                       \
-{                                                                             \
-       .target_offset  = sizeof(struct ip6t_entry),                           \
-       .next_offset    = (__size),                                            \
-}
-
-#define IP6T_STANDARD_INIT(__verdict)                                         \
-{                                                                             \
-       .entry          = IP6T_ENTRY_INIT(sizeof(struct ip6t_standard)),       \
-       .target         = XT_TARGET_INIT(XT_STANDARD_TARGET,                   \
-                                        sizeof(struct xt_standard_target)),   \
-       .target.verdict = -(__verdict) - 1,                                    \
-}
-
-#define IP6T_ERROR_INIT                                                               \
-{                                                                             \
-       .entry          = IP6T_ENTRY_INIT(sizeof(struct ip6t_error)),          \
-       .target         = XT_TARGET_INIT(XT_ERROR_TARGET,                      \
-                                        sizeof(struct xt_error_target)),      \
-       .target.errorname = "ERROR",                                           \
-}
-
-/*
- * New IP firewall options for [gs]etsockopt at the RAW IP level.
- * Unlike BSD Linux inherits IP options so you don't have to use
- * a raw socket for this. Instead we check rights in the calls.
- *
- * ATTENTION: check linux/in6.h before adding new number here.
- */
-#define IP6T_BASE_CTL                  64
-
-#define IP6T_SO_SET_REPLACE            (IP6T_BASE_CTL)
-#define IP6T_SO_SET_ADD_COUNTERS       (IP6T_BASE_CTL + 1)
-#define IP6T_SO_SET_MAX                        IP6T_SO_SET_ADD_COUNTERS
-
-#define IP6T_SO_GET_INFO               (IP6T_BASE_CTL)
-#define IP6T_SO_GET_ENTRIES            (IP6T_BASE_CTL + 1)
-#define IP6T_SO_GET_REVISION_MATCH     (IP6T_BASE_CTL + 4)
-#define IP6T_SO_GET_REVISION_TARGET    (IP6T_BASE_CTL + 5)
-#define IP6T_SO_GET_MAX                        IP6T_SO_GET_REVISION_TARGET
-
-/* obtain original address if REDIRECT'd connection */
-#define IP6T_SO_ORIGINAL_DST            80
-
-/* ICMP matching stuff */
-struct ip6t_icmp {
-       __u8 type;                              /* type to match */
-       __u8 code[2];                           /* range of code */
-       __u8 invflags;                          /* Inverse flags */
-};
-
-/* Values for "inv" field for struct ipt_icmp. */
-#define IP6T_ICMP_INV  0x01    /* Invert the sense of type/code test */
-
-/* The argument to IP6T_SO_GET_INFO */
-struct ip6t_getinfo {
-       /* Which table: caller fills this in. */
-       char name[XT_TABLE_MAXNAMELEN];
-
-       /* Kernel fills these in. */
-       /* Which hook entry points are valid: bitmask */
-       unsigned int valid_hooks;
-
-       /* Hook entry points: one per netfilter hook. */
-       unsigned int hook_entry[NF_INET_NUMHOOKS];
-
-       /* Underflow points. */
-       unsigned int underflow[NF_INET_NUMHOOKS];
-
-       /* Number of entries */
-       unsigned int num_entries;
-
-       /* Size of entries. */
-       unsigned int size;
-};
-
-/* The argument to IP6T_SO_SET_REPLACE. */
-struct ip6t_replace {
-       /* Which table. */
-       char name[XT_TABLE_MAXNAMELEN];
-
-       /* Which hook entry points are valid: bitmask.  You can't
-           change this. */
-       unsigned int valid_hooks;
-
-       /* Number of entries */
-       unsigned int num_entries;
-
-       /* Total size of new entries */
-       unsigned int size;
-
-       /* Hook entry points. */
-       unsigned int hook_entry[NF_INET_NUMHOOKS];
-
-       /* Underflow points. */
-       unsigned int underflow[NF_INET_NUMHOOKS];
-
-       /* Information about old entries: */
-       /* Number of counters (must be equal to current number of entries). */
-       unsigned int num_counters;
-       /* The old entries' counters. */
-       struct xt_counters *counters;
-
-       /* The entries (hang off end: not really an array). */
-       struct ip6t_entry entries[0];
-};
-
-/* The argument to IP6T_SO_GET_ENTRIES. */
-struct ip6t_get_entries {
-       /* Which table: user fills this in. */
-       char name[XT_TABLE_MAXNAMELEN];
-
-       /* User fills this in: total entry size. */
-       unsigned int size;
-
-       /* The entries. */
-       struct ip6t_entry entrytable[0];
-};
-
-/* Helper functions */
-static __inline__ struct xt_entry_target *
-ip6t_get_target(struct ip6t_entry *e)
-{
-       return (void *)e + e->target_offset;
-}
-
-/*
- *     Main firewall chains definitions and global var's definitions.
- */
-
-#endif /* _IP6_TABLES_H */
diff --git a/include/linux/netlink.h b/include/linux/netlink.h
deleted file mode 100644 (file)
index ec0690b..0000000
+++ /dev/null
@@ -1,246 +0,0 @@
-#ifndef __LINUX_NETLINK_H
-#define __LINUX_NETLINK_H
-
-#include <linux/kernel.h>
-#include <linux/socket.h> /* for __kernel_sa_family_t */
-#include <linux/types.h>
-
-#define NETLINK_ROUTE          0       /* Routing/device hook                          */
-#define NETLINK_UNUSED         1       /* Unused number                                */
-#define NETLINK_USERSOCK       2       /* Reserved for user mode socket protocols      */
-#define NETLINK_FIREWALL       3       /* Unused number, formerly ip_queue             */
-#define NETLINK_SOCK_DIAG      4       /* socket monitoring                            */
-#define NETLINK_NFLOG          5       /* netfilter/iptables ULOG */
-#define NETLINK_XFRM           6       /* ipsec */
-#define NETLINK_SELINUX                7       /* SELinux event notifications */
-#define NETLINK_ISCSI          8       /* Open-iSCSI */
-#define NETLINK_AUDIT          9       /* auditing */
-#define NETLINK_FIB_LOOKUP     10      
-#define NETLINK_CONNECTOR      11
-#define NETLINK_NETFILTER      12      /* netfilter subsystem */
-#define NETLINK_IP6_FW         13
-#define NETLINK_DNRTMSG                14      /* DECnet routing messages */
-#define NETLINK_KOBJECT_UEVENT 15      /* Kernel messages to userspace */
-#define NETLINK_GENERIC                16
-/* leave room for NETLINK_DM (DM Events) */
-#define NETLINK_SCSITRANSPORT  18      /* SCSI Transports */
-#define NETLINK_ECRYPTFS       19
-#define NETLINK_RDMA           20
-#define NETLINK_CRYPTO         21      /* Crypto layer */
-#define NETLINK_SMC            22      /* SMC monitoring */
-
-#define NETLINK_INET_DIAG      NETLINK_SOCK_DIAG
-
-#define MAX_LINKS 32           
-
-struct sockaddr_nl {
-       __kernel_sa_family_t    nl_family;      /* AF_NETLINK   */
-       unsigned short  nl_pad;         /* zero         */
-       __u32           nl_pid;         /* port ID      */
-               __u32           nl_groups;      /* multicast groups mask */
-};
-
-struct nlmsghdr {
-       __u32           nlmsg_len;      /* Length of message including header */
-       __u16           nlmsg_type;     /* Message content */
-       __u16           nlmsg_flags;    /* Additional flags */
-       __u32           nlmsg_seq;      /* Sequence number */
-       __u32           nlmsg_pid;      /* Sending process port ID */
-};
-
-/* Flags values */
-
-#define NLM_F_REQUEST          0x01    /* It is request message.       */
-#define NLM_F_MULTI            0x02    /* Multipart message, terminated by NLMSG_DONE */
-#define NLM_F_ACK              0x04    /* Reply with ack, with zero or error code */
-#define NLM_F_ECHO             0x08    /* Echo this request            */
-#define NLM_F_DUMP_INTR                0x10    /* Dump was inconsistent due to sequence change */
-#define NLM_F_DUMP_FILTERED    0x20    /* Dump was filtered as requested */
-
-/* Modifiers to GET request */
-#define NLM_F_ROOT     0x100   /* specify tree root    */
-#define NLM_F_MATCH    0x200   /* return all matching  */
-#define NLM_F_ATOMIC   0x400   /* atomic GET           */
-#define NLM_F_DUMP     (NLM_F_ROOT|NLM_F_MATCH)
-
-/* Modifiers to NEW request */
-#define NLM_F_REPLACE  0x100   /* Override existing            */
-#define NLM_F_EXCL     0x200   /* Do not touch, if it exists   */
-#define NLM_F_CREATE   0x400   /* Create, if it does not exist */
-#define NLM_F_APPEND   0x800   /* Add to end of list           */
-
-/* Modifiers to DELETE request */
-#define NLM_F_NONREC   0x100   /* Do not delete recursively    */
-
-/* Flags for ACK message */
-#define NLM_F_CAPPED   0x100   /* request was capped */
-#define NLM_F_ACK_TLVS 0x200   /* extended ACK TVLs were included */
-
-/*
-   4.4BSD ADD          NLM_F_CREATE|NLM_F_EXCL
-   4.4BSD CHANGE       NLM_F_REPLACE
-
-   True CHANGE         NLM_F_CREATE|NLM_F_REPLACE
-   Append              NLM_F_CREATE
-   Check               NLM_F_EXCL
- */
-
-#define NLMSG_ALIGNTO  4U
-#define NLMSG_ALIGN(len) ( ((len)+NLMSG_ALIGNTO-1) & ~(NLMSG_ALIGNTO-1) )
-#define NLMSG_HDRLEN    ((int) NLMSG_ALIGN(sizeof(struct nlmsghdr)))
-#define NLMSG_LENGTH(len) ((len) + NLMSG_HDRLEN)
-#define NLMSG_SPACE(len) NLMSG_ALIGN(NLMSG_LENGTH(len))
-#define NLMSG_DATA(nlh)  ((void*)(((char*)nlh) + NLMSG_LENGTH(0)))
-#define NLMSG_NEXT(nlh,len)     ((len) -= NLMSG_ALIGN((nlh)->nlmsg_len), \
-                                 (struct nlmsghdr*)(((char*)(nlh)) + NLMSG_ALIGN((nlh)->nlmsg_len)))
-#define NLMSG_OK(nlh,len) ((len) >= (int)sizeof(struct nlmsghdr) && \
-                          (nlh)->nlmsg_len >= sizeof(struct nlmsghdr) && \
-                          (nlh)->nlmsg_len <= (len))
-#define NLMSG_PAYLOAD(nlh,len) ((nlh)->nlmsg_len - NLMSG_SPACE((len)))
-
-#define NLMSG_NOOP             0x1     /* Nothing.             */
-#define NLMSG_ERROR            0x2     /* Error                */
-#define NLMSG_DONE             0x3     /* End of a dump        */
-#define NLMSG_OVERRUN          0x4     /* Data lost            */
-
-#define NLMSG_MIN_TYPE         0x10    /* < 0x10: reserved control messages */
-
-struct nlmsgerr {
-       int             error;
-       struct nlmsghdr msg;
-       /*
-        * followed by the message contents unless NETLINK_CAP_ACK was set
-        * or the ACK indicates success (error == 0)
-        * message length is aligned with NLMSG_ALIGN()
-        */
-       /*
-        * followed by TLVs defined in enum nlmsgerr_attrs
-        * if NETLINK_EXT_ACK was set
-        */
-};
-
-/**
- * enum nlmsgerr_attrs - nlmsgerr attributes
- * @NLMSGERR_ATTR_UNUSED: unused
- * @NLMSGERR_ATTR_MSG: error message string (string)
- * @NLMSGERR_ATTR_OFFS: offset of the invalid attribute in the original
- *      message, counting from the beginning of the header (u32)
- * @NLMSGERR_ATTR_COOKIE: arbitrary subsystem specific cookie to
- *     be used - in the success case - to identify a created
- *     object or operation or similar (binary)
- * @__NLMSGERR_ATTR_MAX: number of attributes
- * @NLMSGERR_ATTR_MAX: highest attribute number
- */
-enum nlmsgerr_attrs {
-       NLMSGERR_ATTR_UNUSED,
-       NLMSGERR_ATTR_MSG,
-       NLMSGERR_ATTR_OFFS,
-       NLMSGERR_ATTR_COOKIE,
-
-       __NLMSGERR_ATTR_MAX,
-       NLMSGERR_ATTR_MAX = __NLMSGERR_ATTR_MAX - 1
-};
-
-#define NETLINK_ADD_MEMBERSHIP         1
-#define NETLINK_DROP_MEMBERSHIP                2
-#define NETLINK_PKTINFO                        3
-#define NETLINK_BROADCAST_ERROR                4
-#define NETLINK_NO_ENOBUFS             5
-#define NETLINK_RX_RING                        6
-#define NETLINK_TX_RING                        7
-#define NETLINK_LISTEN_ALL_NSID                8
-#define NETLINK_LIST_MEMBERSHIPS       9
-#define NETLINK_CAP_ACK                        10
-#define NETLINK_EXT_ACK                        11
-
-struct nl_pktinfo {
-       __u32   group;
-};
-
-struct nl_mmap_req {
-       unsigned int    nm_block_size;
-       unsigned int    nm_block_nr;
-       unsigned int    nm_frame_size;
-       unsigned int    nm_frame_nr;
-};
-
-struct nl_mmap_hdr {
-       unsigned int    nm_status;
-       unsigned int    nm_len;
-       __u32           nm_group;
-       /* credentials */
-       __u32           nm_pid;
-       __u32           nm_uid;
-       __u32           nm_gid;
-};
-
-enum nl_mmap_status {
-       NL_MMAP_STATUS_UNUSED,
-       NL_MMAP_STATUS_RESERVED,
-       NL_MMAP_STATUS_VALID,
-       NL_MMAP_STATUS_COPY,
-       NL_MMAP_STATUS_SKIP,
-};
-
-#define NL_MMAP_MSG_ALIGNMENT          NLMSG_ALIGNTO
-#define NL_MMAP_MSG_ALIGN(sz)          __ALIGN_KERNEL(sz, NL_MMAP_MSG_ALIGNMENT)
-#define NL_MMAP_HDRLEN                 NL_MMAP_MSG_ALIGN(sizeof(struct nl_mmap_hdr))
-
-#define NET_MAJOR 36           /* Major 36 is reserved for networking                                          */
-
-enum {
-       NETLINK_UNCONNECTED = 0,
-       NETLINK_CONNECTED,
-};
-
-/*
- *  <------- NLA_HDRLEN ------> <-- NLA_ALIGN(payload)-->
- * +---------------------+- - -+- - - - - - - - - -+- - -+
- * |        Header       | Pad |     Payload       | Pad |
- * |   (struct nlattr)   | ing |                   | ing |
- * +---------------------+- - -+- - - - - - - - - -+- - -+
- *  <-------------- nlattr->nla_len -------------->
- */
-
-struct nlattr {
-       __u16           nla_len;
-       __u16           nla_type;
-};
-
-/*
- * nla_type (16 bits)
- * +---+---+-------------------------------+
- * | N | O | Attribute Type                |
- * +---+---+-------------------------------+
- * N := Carries nested attributes
- * O := Payload stored in network byte order
- *
- * Note: The N and O flag are mutually exclusive.
- */
-#define NLA_F_NESTED           (1 << 15)
-#define NLA_F_NET_BYTEORDER    (1 << 14)
-#define NLA_TYPE_MASK          ~(NLA_F_NESTED | NLA_F_NET_BYTEORDER)
-
-#define NLA_ALIGNTO            4
-#define NLA_ALIGN(len)         (((len) + NLA_ALIGNTO - 1) & ~(NLA_ALIGNTO - 1))
-#define NLA_HDRLEN             ((int) NLA_ALIGN(sizeof(struct nlattr)))
-
-/* Generic 32 bitflags attribute content sent to the kernel.
- *
- * The value is a bitmap that defines the values being set
- * The selector is a bitmask that defines which value is legit
- *
- * Examples:
- *  value = 0x0, and selector = 0x1
- *  implies we are selecting bit 1 and we want to set its value to 0.
- *
- *  value = 0x2, and selector = 0x2
- *  implies we are selecting bit 2 and we want to set its value to 1.
- *
- */
-struct nla_bitfield32 {
-       __u32 value;
-       __u32 selector;
-};
-
-#endif /* __LINUX_NETLINK_H */
diff --git a/include/linux/netlink_diag.h b/include/linux/netlink_diag.h
deleted file mode 100644 (file)
index c8c8c7d..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-#ifndef __NETLINK_DIAG_H__
-#define __NETLINK_DIAG_H__
-
-#include <linux/types.h>
-
-struct netlink_diag_req {
-       __u8    sdiag_family;
-       __u8    sdiag_protocol;
-       __u16   pad;
-       __u32   ndiag_ino;
-       __u32   ndiag_show;
-       __u32   ndiag_cookie[2];
-};
-
-struct netlink_diag_msg {
-       __u8    ndiag_family;
-       __u8    ndiag_type;
-       __u8    ndiag_protocol;
-       __u8    ndiag_state;
-
-       __u32   ndiag_portid;
-       __u32   ndiag_dst_portid;
-       __u32   ndiag_dst_group;
-       __u32   ndiag_ino;
-       __u32   ndiag_cookie[2];
-};
-
-struct netlink_diag_ring {
-       __u32   ndr_block_size;
-       __u32   ndr_block_nr;
-       __u32   ndr_frame_size;
-       __u32   ndr_frame_nr;
-};
-
-enum {
-       /* NETLINK_DIAG_NONE, standard nl API requires this attribute!  */
-       NETLINK_DIAG_MEMINFO,
-       NETLINK_DIAG_GROUPS,
-       NETLINK_DIAG_RX_RING,
-       NETLINK_DIAG_TX_RING,
-       NETLINK_DIAG_FLAGS,
-
-       __NETLINK_DIAG_MAX,
-};
-
-#define NETLINK_DIAG_MAX (__NETLINK_DIAG_MAX - 1)
-
-#define NDIAG_PROTO_ALL                ((__u8) ~0)
-
-#define NDIAG_SHOW_MEMINFO     0x00000001 /* show memory info of a socket */
-#define NDIAG_SHOW_GROUPS      0x00000002 /* show groups of a netlink socket */
-/* deprecated since 4.6 */
-#define NDIAG_SHOW_RING_CFG    0x00000004 /* show ring configuration */
-#define NDIAG_SHOW_FLAGS       0x00000008 /* show flags of a netlink socket */
-
-/* flags */
-#define NDIAG_FLAG_CB_RUNNING          0x00000001
-#define NDIAG_FLAG_PKTINFO             0x00000002
-#define NDIAG_FLAG_BROADCAST_ERROR     0x00000004
-#define NDIAG_FLAG_NO_ENOBUFS          0x00000008
-#define NDIAG_FLAG_LISTEN_ALL_NSID     0x00000010
-#define NDIAG_FLAG_CAP_ACK             0x00000020
-
-#endif
diff --git a/include/linux/packet_diag.h b/include/linux/packet_diag.h
deleted file mode 100644 (file)
index 0c5d5dd..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-#ifndef __PACKET_DIAG_H__
-#define __PACKET_DIAG_H__
-
-#include <linux/types.h>
-
-struct packet_diag_req {
-       __u8    sdiag_family;
-       __u8    sdiag_protocol;
-       __u16   pad;
-       __u32   pdiag_ino;
-       __u32   pdiag_show;
-       __u32   pdiag_cookie[2];
-};
-
-#define PACKET_SHOW_INFO       0x00000001 /* Basic packet_sk information */
-#define PACKET_SHOW_MCLIST     0x00000002 /* A set of packet_diag_mclist-s */
-#define PACKET_SHOW_RING_CFG   0x00000004 /* Rings configuration parameters */
-#define PACKET_SHOW_FANOUT     0x00000008
-#define PACKET_SHOW_MEMINFO    0x00000010
-#define PACKET_SHOW_FILTER     0x00000020
-
-struct packet_diag_msg {
-       __u8    pdiag_family;
-       __u8    pdiag_type;
-       __u16   pdiag_num;
-
-       __u32   pdiag_ino;
-       __u32   pdiag_cookie[2];
-};
-
-enum {
-       /* PACKET_DIAG_NONE, standard nl API requires this attribute!  */
-       PACKET_DIAG_INFO,
-       PACKET_DIAG_MCLIST,
-       PACKET_DIAG_RX_RING,
-       PACKET_DIAG_TX_RING,
-       PACKET_DIAG_FANOUT,
-       PACKET_DIAG_UID,
-       PACKET_DIAG_MEMINFO,
-       PACKET_DIAG_FILTER,
-
-       __PACKET_DIAG_MAX,
-};
-
-#define PACKET_DIAG_MAX (__PACKET_DIAG_MAX - 1)
-
-struct packet_diag_info {
-       __u32   pdi_index;
-       __u32   pdi_version;
-       __u32   pdi_reserve;
-       __u32   pdi_copy_thresh;
-       __u32   pdi_tstamp;
-       __u32   pdi_flags;
-
-#define PDI_RUNNING    0x1
-#define PDI_AUXDATA    0x2
-#define PDI_ORIGDEV    0x4
-#define PDI_VNETHDR    0x8
-#define PDI_LOSS       0x10
-};
-
-struct packet_diag_mclist {
-       __u32   pdmc_index;
-       __u32   pdmc_count;
-       __u16   pdmc_type;
-       __u16   pdmc_alen;
-       __u8    pdmc_addr[32]; /* MAX_ADDR_LEN */
-};
-
-struct packet_diag_ring {
-       __u32   pdr_block_size;
-       __u32   pdr_block_nr;
-       __u32   pdr_frame_size;
-       __u32   pdr_frame_nr;
-       __u32   pdr_retire_tmo;
-       __u32   pdr_sizeof_priv;
-       __u32   pdr_features;
-};
-
-#endif
diff --git a/include/linux/param.h b/include/linux/param.h
deleted file mode 100644 (file)
index 092e92f..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef _LINUX_PARAM_H
-#define _LINUX_PARAM_H
-
-#include <asm/param.h>
-
-#endif
diff --git a/include/linux/pfkeyv2.h b/include/linux/pfkeyv2.h
deleted file mode 100644 (file)
index ada7f01..0000000
+++ /dev/null
@@ -1,383 +0,0 @@
-/* PF_KEY user interface, this is defined by rfc2367 so
- * do not make arbitrary modifications or else this header
- * file will not be compliant.
- */
-
-#ifndef _LINUX_PFKEY2_H
-#define _LINUX_PFKEY2_H
-
-#include <linux/types.h>
-
-#define PF_KEY_V2              2
-#define PFKEYV2_REVISION       199806L
-
-struct sadb_msg {
-       __u8            sadb_msg_version;
-       __u8            sadb_msg_type;
-       __u8            sadb_msg_errno;
-       __u8            sadb_msg_satype;
-       __u16   sadb_msg_len;
-       __u16   sadb_msg_reserved;
-       __u32   sadb_msg_seq;
-       __u32   sadb_msg_pid;
-} __attribute__((packed));
-/* sizeof(struct sadb_msg) == 16 */
-
-struct sadb_ext {
-       __u16   sadb_ext_len;
-       __u16   sadb_ext_type;
-} __attribute__((packed));
-/* sizeof(struct sadb_ext) == 4 */
-
-struct sadb_sa {
-       __u16   sadb_sa_len;
-       __u16   sadb_sa_exttype;
-       __be32          sadb_sa_spi;
-       __u8            sadb_sa_replay;
-       __u8            sadb_sa_state;
-       __u8            sadb_sa_auth;
-       __u8            sadb_sa_encrypt;
-       __u32   sadb_sa_flags;
-} __attribute__((packed));
-/* sizeof(struct sadb_sa) == 16 */
-
-struct sadb_lifetime {
-       __u16   sadb_lifetime_len;
-       __u16   sadb_lifetime_exttype;
-       __u32   sadb_lifetime_allocations;
-       __u64   sadb_lifetime_bytes;
-       __u64   sadb_lifetime_addtime;
-       __u64   sadb_lifetime_usetime;
-} __attribute__((packed));
-/* sizeof(struct sadb_lifetime) == 32 */
-
-struct sadb_address {
-       __u16   sadb_address_len;
-       __u16   sadb_address_exttype;
-       __u8            sadb_address_proto;
-       __u8            sadb_address_prefixlen;
-       __u16   sadb_address_reserved;
-} __attribute__((packed));
-/* sizeof(struct sadb_address) == 8 */
-
-struct sadb_key {
-       __u16   sadb_key_len;
-       __u16   sadb_key_exttype;
-       __u16   sadb_key_bits;
-       __u16   sadb_key_reserved;
-} __attribute__((packed));
-/* sizeof(struct sadb_key) == 8 */
-
-struct sadb_ident {
-       __u16   sadb_ident_len;
-       __u16   sadb_ident_exttype;
-       __u16   sadb_ident_type;
-       __u16   sadb_ident_reserved;
-       __u64   sadb_ident_id;
-} __attribute__((packed));
-/* sizeof(struct sadb_ident) == 16 */
-
-struct sadb_sens {
-       __u16   sadb_sens_len;
-       __u16   sadb_sens_exttype;
-       __u32   sadb_sens_dpd;
-       __u8            sadb_sens_sens_level;
-       __u8            sadb_sens_sens_len;
-       __u8            sadb_sens_integ_level;
-       __u8            sadb_sens_integ_len;
-       __u32   sadb_sens_reserved;
-} __attribute__((packed));
-/* sizeof(struct sadb_sens) == 16 */
-
-/* followed by:
-       __u64   sadb_sens_bitmap[sens_len];
-       __u64   sadb_integ_bitmap[integ_len];  */
-
-struct sadb_prop {
-       __u16   sadb_prop_len;
-       __u16   sadb_prop_exttype;
-       __u8            sadb_prop_replay;
-       __u8            sadb_prop_reserved[3];
-} __attribute__((packed));
-/* sizeof(struct sadb_prop) == 8 */
-
-/* followed by:
-       struct sadb_comb sadb_combs[(sadb_prop_len +
-               sizeof(__u64) - sizeof(struct sadb_prop)) /
-               sizeof(struct sadb_comb)]; */
-
-struct sadb_comb {
-       __u8            sadb_comb_auth;
-       __u8            sadb_comb_encrypt;
-       __u16   sadb_comb_flags;
-       __u16   sadb_comb_auth_minbits;
-       __u16   sadb_comb_auth_maxbits;
-       __u16   sadb_comb_encrypt_minbits;
-       __u16   sadb_comb_encrypt_maxbits;
-       __u32   sadb_comb_reserved;
-       __u32   sadb_comb_soft_allocations;
-       __u32   sadb_comb_hard_allocations;
-       __u64   sadb_comb_soft_bytes;
-       __u64   sadb_comb_hard_bytes;
-       __u64   sadb_comb_soft_addtime;
-       __u64   sadb_comb_hard_addtime;
-       __u64   sadb_comb_soft_usetime;
-       __u64   sadb_comb_hard_usetime;
-} __attribute__((packed));
-/* sizeof(struct sadb_comb) == 72 */
-
-struct sadb_supported {
-       __u16   sadb_supported_len;
-       __u16   sadb_supported_exttype;
-       __u32   sadb_supported_reserved;
-} __attribute__((packed));
-/* sizeof(struct sadb_supported) == 8 */
-
-/* followed by:
-       struct sadb_alg sadb_algs[(sadb_supported_len +
-               sizeof(__u64) - sizeof(struct sadb_supported)) /
-               sizeof(struct sadb_alg)]; */
-
-struct sadb_alg {
-       __u8            sadb_alg_id;
-       __u8            sadb_alg_ivlen;
-       __u16   sadb_alg_minbits;
-       __u16   sadb_alg_maxbits;
-       __u16   sadb_alg_reserved;
-} __attribute__((packed));
-/* sizeof(struct sadb_alg) == 8 */
-
-struct sadb_spirange {
-       __u16   sadb_spirange_len;
-       __u16   sadb_spirange_exttype;
-       __u32   sadb_spirange_min;
-       __u32   sadb_spirange_max;
-       __u32   sadb_spirange_reserved;
-} __attribute__((packed));
-/* sizeof(struct sadb_spirange) == 16 */
-
-struct sadb_x_kmprivate {
-       __u16   sadb_x_kmprivate_len;
-       __u16   sadb_x_kmprivate_exttype;
-       __u32   sadb_x_kmprivate_reserved;
-} __attribute__((packed));
-/* sizeof(struct sadb_x_kmprivate) == 8 */
-
-struct sadb_x_sa2 {
-       __u16   sadb_x_sa2_len;
-       __u16   sadb_x_sa2_exttype;
-       __u8            sadb_x_sa2_mode;
-       __u8            sadb_x_sa2_reserved1;
-       __u16   sadb_x_sa2_reserved2;
-       __u32   sadb_x_sa2_sequence;
-       __u32   sadb_x_sa2_reqid;
-} __attribute__((packed));
-/* sizeof(struct sadb_x_sa2) == 16 */
-
-struct sadb_x_policy {
-       __u16   sadb_x_policy_len;
-       __u16   sadb_x_policy_exttype;
-       __u16   sadb_x_policy_type;
-       __u8            sadb_x_policy_dir;
-       __u8            sadb_x_policy_reserved;
-       __u32   sadb_x_policy_id;
-       __u32   sadb_x_policy_priority;
-} __attribute__((packed));
-/* sizeof(struct sadb_x_policy) == 16 */
-
-struct sadb_x_ipsecrequest {
-       __u16   sadb_x_ipsecrequest_len;
-       __u16   sadb_x_ipsecrequest_proto;
-       __u8            sadb_x_ipsecrequest_mode;
-       __u8            sadb_x_ipsecrequest_level;
-       __u16   sadb_x_ipsecrequest_reserved1;
-       __u32   sadb_x_ipsecrequest_reqid;
-       __u32   sadb_x_ipsecrequest_reserved2;
-} __attribute__((packed));
-/* sizeof(struct sadb_x_ipsecrequest) == 16 */
-
-/* This defines the TYPE of Nat Traversal in use.  Currently only one
- * type of NAT-T is supported, draft-ietf-ipsec-udp-encaps-06
- */
-struct sadb_x_nat_t_type {
-       __u16   sadb_x_nat_t_type_len;
-       __u16   sadb_x_nat_t_type_exttype;
-       __u8            sadb_x_nat_t_type_type;
-       __u8            sadb_x_nat_t_type_reserved[3];
-} __attribute__((packed));
-/* sizeof(struct sadb_x_nat_t_type) == 8 */
-
-/* Pass a NAT Traversal port (Source or Dest port) */
-struct sadb_x_nat_t_port {
-       __u16   sadb_x_nat_t_port_len;
-       __u16   sadb_x_nat_t_port_exttype;
-       __be16          sadb_x_nat_t_port_port;
-       __u16   sadb_x_nat_t_port_reserved;
-} __attribute__((packed));
-/* sizeof(struct sadb_x_nat_t_port) == 8 */
-
-/* Generic LSM security context */
-struct sadb_x_sec_ctx {
-       __u16   sadb_x_sec_len;
-       __u16   sadb_x_sec_exttype;
-       __u8            sadb_x_ctx_alg;  /* LSMs: e.g., selinux == 1 */
-       __u8            sadb_x_ctx_doi;
-       __u16   sadb_x_ctx_len;
-} __attribute__((packed));
-/* sizeof(struct sadb_sec_ctx) = 8 */
-
-/* Used by MIGRATE to pass addresses IKE will use to perform
- * negotiation with the peer */
-struct sadb_x_kmaddress {
-       __u16   sadb_x_kmaddress_len;
-       __u16   sadb_x_kmaddress_exttype;
-       __u32   sadb_x_kmaddress_reserved;
-} __attribute__((packed));
-/* sizeof(struct sadb_x_kmaddress) == 8 */
-
-/* To specify the SA dump filter */
-struct sadb_x_filter {
-       __u16   sadb_x_filter_len;
-       __u16   sadb_x_filter_exttype;
-       __u32   sadb_x_filter_saddr[4];
-       __u32   sadb_x_filter_daddr[4];
-       __u16   sadb_x_filter_family;
-       __u8    sadb_x_filter_splen;
-       __u8    sadb_x_filter_dplen;
-} __attribute__((packed));
-/* sizeof(struct sadb_x_filter) == 40 */
-
-/* Message types */
-#define SADB_RESERVED          0
-#define SADB_GETSPI            1
-#define SADB_UPDATE            2
-#define SADB_ADD               3
-#define SADB_DELETE            4
-#define SADB_GET               5
-#define SADB_ACQUIRE           6
-#define SADB_REGISTER          7
-#define SADB_EXPIRE            8
-#define SADB_FLUSH             9
-#define SADB_DUMP              10
-#define SADB_X_PROMISC         11
-#define SADB_X_PCHANGE         12
-#define SADB_X_SPDUPDATE       13
-#define SADB_X_SPDADD          14
-#define SADB_X_SPDDELETE       15
-#define SADB_X_SPDGET          16
-#define SADB_X_SPDACQUIRE      17
-#define SADB_X_SPDDUMP         18
-#define SADB_X_SPDFLUSH                19
-#define SADB_X_SPDSETIDX       20
-#define SADB_X_SPDEXPIRE       21
-#define SADB_X_SPDDELETE2      22
-#define SADB_X_NAT_T_NEW_MAPPING       23
-#define SADB_X_MIGRATE         24
-#define SADB_MAX               24
-
-/* Security Association flags */
-#define SADB_SAFLAGS_PFS       1
-#define SADB_SAFLAGS_NOPMTUDISC        0x20000000
-#define SADB_SAFLAGS_DECAP_DSCP        0x40000000
-#define SADB_SAFLAGS_NOECN     0x80000000
-
-/* Security Association states */
-#define SADB_SASTATE_LARVAL    0
-#define SADB_SASTATE_MATURE    1
-#define SADB_SASTATE_DYING     2
-#define SADB_SASTATE_DEAD      3
-#define SADB_SASTATE_MAX       3
-
-/* Security Association types */
-#define SADB_SATYPE_UNSPEC     0
-#define SADB_SATYPE_AH         2
-#define SADB_SATYPE_ESP                3
-#define SADB_SATYPE_RSVP       5
-#define SADB_SATYPE_OSPFV2     6
-#define SADB_SATYPE_RIPV2      7
-#define SADB_SATYPE_MIP                8
-#define SADB_X_SATYPE_IPCOMP   9
-#define SADB_SATYPE_MAX                9
-
-/* Authentication algorithms */
-#define SADB_AALG_NONE                 0
-#define SADB_AALG_MD5HMAC              2
-#define SADB_AALG_SHA1HMAC             3
-#define SADB_X_AALG_SHA2_256HMAC       5
-#define SADB_X_AALG_SHA2_384HMAC       6
-#define SADB_X_AALG_SHA2_512HMAC       7
-#define SADB_X_AALG_RIPEMD160HMAC      8
-#define SADB_X_AALG_AES_XCBC_MAC       9
-#define SADB_X_AALG_NULL               251     /* kame */
-#define SADB_AALG_MAX                  251
-
-/* Encryption algorithms */
-#define SADB_EALG_NONE                 0
-#define SADB_EALG_DESCBC               2
-#define SADB_EALG_3DESCBC              3
-#define SADB_X_EALG_CASTCBC            6
-#define SADB_X_EALG_BLOWFISHCBC                7
-#define SADB_EALG_NULL                 11
-#define SADB_X_EALG_AESCBC             12
-#define SADB_X_EALG_AESCTR             13
-#define SADB_X_EALG_AES_CCM_ICV8       14
-#define SADB_X_EALG_AES_CCM_ICV12      15
-#define SADB_X_EALG_AES_CCM_ICV16      16
-#define SADB_X_EALG_AES_GCM_ICV8       18
-#define SADB_X_EALG_AES_GCM_ICV12      19
-#define SADB_X_EALG_AES_GCM_ICV16      20
-#define SADB_X_EALG_CAMELLIACBC                22
-#define SADB_X_EALG_NULL_AES_GMAC      23
-#define SADB_EALG_MAX                   253 /* last EALG */
-/* private allocations should use 249-255 (RFC2407) */
-#define SADB_X_EALG_SERPENTCBC  252     /* draft-ietf-ipsec-ciph-aes-cbc-00 */
-#define SADB_X_EALG_TWOFISHCBC  253     /* draft-ietf-ipsec-ciph-aes-cbc-00 */
-
-/* Compression algorithms */
-#define SADB_X_CALG_NONE               0
-#define SADB_X_CALG_OUI                        1
-#define SADB_X_CALG_DEFLATE            2
-#define SADB_X_CALG_LZS                        3
-#define SADB_X_CALG_LZJH               4
-#define SADB_X_CALG_MAX                        4
-
-/* Extension Header values */
-#define SADB_EXT_RESERVED              0
-#define SADB_EXT_SA                    1
-#define SADB_EXT_LIFETIME_CURRENT      2
-#define SADB_EXT_LIFETIME_HARD         3
-#define SADB_EXT_LIFETIME_SOFT         4
-#define SADB_EXT_ADDRESS_SRC           5
-#define SADB_EXT_ADDRESS_DST           6
-#define SADB_EXT_ADDRESS_PROXY         7
-#define SADB_EXT_KEY_AUTH              8
-#define SADB_EXT_KEY_ENCRYPT           9
-#define SADB_EXT_IDENTITY_SRC          10
-#define SADB_EXT_IDENTITY_DST          11
-#define SADB_EXT_SENSITIVITY           12
-#define SADB_EXT_PROPOSAL              13
-#define SADB_EXT_SUPPORTED_AUTH                14
-#define SADB_EXT_SUPPORTED_ENCRYPT     15
-#define SADB_EXT_SPIRANGE              16
-#define SADB_X_EXT_KMPRIVATE           17
-#define SADB_X_EXT_POLICY              18
-#define SADB_X_EXT_SA2                 19
-/* The next four entries are for setting up NAT Traversal */
-#define SADB_X_EXT_NAT_T_TYPE          20
-#define SADB_X_EXT_NAT_T_SPORT         21
-#define SADB_X_EXT_NAT_T_DPORT         22
-#define SADB_X_EXT_NAT_T_OA            23
-#define SADB_X_EXT_SEC_CTX             24
-/* Used with MIGRATE to pass @ to IKE for negotiation */
-#define SADB_X_EXT_KMADDRESS           25
-#define SADB_X_EXT_FILTER              26
-#define SADB_EXT_MAX                   26
-
-/* Identity Extension values */
-#define SADB_IDENTTYPE_RESERVED        0
-#define SADB_IDENTTYPE_PREFIX  1
-#define SADB_IDENTTYPE_FQDN    2
-#define SADB_IDENTTYPE_USERFQDN        3
-#define SADB_IDENTTYPE_MAX     3
-
-#endif /* !(_LINUX_PFKEY2_H) */
diff --git a/include/linux/pkt_cls.h b/include/linux/pkt_cls.h
deleted file mode 100644 (file)
index d5e2bf6..0000000
+++ /dev/null
@@ -1,569 +0,0 @@
-#ifndef __LINUX_PKT_CLS_H
-#define __LINUX_PKT_CLS_H
-
-#include <linux/types.h>
-#include <linux/pkt_sched.h>
-
-#define TC_COOKIE_MAX_SIZE 16
-
-/* Action attributes */
-enum {
-       TCA_ACT_UNSPEC,
-       TCA_ACT_KIND,
-       TCA_ACT_OPTIONS,
-       TCA_ACT_INDEX,
-       TCA_ACT_STATS,
-       TCA_ACT_PAD,
-       TCA_ACT_COOKIE,
-       __TCA_ACT_MAX
-};
-
-#define TCA_ACT_MAX __TCA_ACT_MAX
-#define TCA_OLD_COMPAT (TCA_ACT_MAX+1)
-#define TCA_ACT_MAX_PRIO 32
-#define TCA_ACT_BIND   1
-#define TCA_ACT_NOBIND 0
-#define TCA_ACT_UNBIND 1
-#define TCA_ACT_NOUNBIND       0
-#define TCA_ACT_REPLACE                1
-#define TCA_ACT_NOREPLACE      0
-
-#define TC_ACT_UNSPEC  (-1)
-#define TC_ACT_OK              0
-#define TC_ACT_RECLASSIFY      1
-#define TC_ACT_SHOT            2
-#define TC_ACT_PIPE            3
-#define TC_ACT_STOLEN          4
-#define TC_ACT_QUEUED          5
-#define TC_ACT_REPEAT          6
-#define TC_ACT_REDIRECT                7
-#define TC_ACT_TRAP            8 /* For hw path, this means "trap to cpu"
-                                  * and don't further process the frame
-                                  * in hardware. For sw path, this is
-                                  * equivalent of TC_ACT_STOLEN - drop
-                                  * the skb and act like everything
-                                  * is alright.
-                                  */
-
-/* There is a special kind of actions called "extended actions",
- * which need a value parameter. These have a local opcode located in
- * the highest nibble, starting from 1. The rest of the bits
- * are used to carry the value. These two parts together make
- * a combined opcode.
- */
-#define __TC_ACT_EXT_SHIFT 28
-#define __TC_ACT_EXT(local) ((local) << __TC_ACT_EXT_SHIFT)
-#define TC_ACT_EXT_VAL_MASK ((1 << __TC_ACT_EXT_SHIFT) - 1)
-#define TC_ACT_EXT_CMP(combined, opcode) \
-       (((combined) & (~TC_ACT_EXT_VAL_MASK)) == opcode)
-
-#define TC_ACT_JUMP __TC_ACT_EXT(1)
-#define TC_ACT_GOTO_CHAIN __TC_ACT_EXT(2)
-
-/* Action type identifiers*/
-enum {
-       TCA_ID_UNSPEC=0,
-       TCA_ID_POLICE=1,
-       /* other actions go here */
-       __TCA_ID_MAX=255
-};
-
-#define TCA_ID_MAX __TCA_ID_MAX
-
-struct tc_police {
-       __u32                   index;
-       int                     action;
-#define TC_POLICE_UNSPEC       TC_ACT_UNSPEC
-#define TC_POLICE_OK           TC_ACT_OK
-#define TC_POLICE_RECLASSIFY   TC_ACT_RECLASSIFY
-#define TC_POLICE_SHOT         TC_ACT_SHOT
-#define TC_POLICE_PIPE         TC_ACT_PIPE
-
-       __u32                   limit;
-       __u32                   burst;
-       __u32                   mtu;
-       struct tc_ratespec      rate;
-       struct tc_ratespec      peakrate;
-       int                     refcnt;
-       int                     bindcnt;
-       __u32                   capab;
-};
-
-struct tcf_t {
-       __u64   install;
-       __u64   lastuse;
-       __u64   expires;
-       __u64   firstuse;
-};
-
-struct tc_cnt {
-       int                   refcnt;
-       int                   bindcnt;
-};
-
-#define tc_gen \
-       __u32                 index; \
-       __u32                 capab; \
-       int                   action; \
-       int                   refcnt; \
-       int                   bindcnt
-
-enum {
-       TCA_POLICE_UNSPEC,
-       TCA_POLICE_TBF,
-       TCA_POLICE_RATE,
-       TCA_POLICE_PEAKRATE,
-       TCA_POLICE_AVRATE,
-       TCA_POLICE_RESULT,
-       TCA_POLICE_TM,
-       TCA_POLICE_PAD,
-       __TCA_POLICE_MAX
-#define TCA_POLICE_RESULT TCA_POLICE_RESULT
-};
-
-#define TCA_POLICE_MAX (__TCA_POLICE_MAX - 1)
-
-/* tca flags definitions */
-#define TCA_CLS_FLAGS_SKIP_HW  (1 << 0) /* don't offload filter to HW */
-#define TCA_CLS_FLAGS_SKIP_SW  (1 << 1) /* don't use filter in SW */
-#define TCA_CLS_FLAGS_IN_HW    (1 << 2) /* filter is offloaded to HW */
-#define TCA_CLS_FLAGS_NOT_IN_HW (1 << 3) /* filter isn't offloaded to HW */
-
-/* U32 filters */
-
-#define TC_U32_HTID(h) ((h)&0xFFF00000)
-#define TC_U32_USERHTID(h) (TC_U32_HTID(h)>>20)
-#define TC_U32_HASH(h) (((h)>>12)&0xFF)
-#define TC_U32_NODE(h) ((h)&0xFFF)
-#define TC_U32_KEY(h) ((h)&0xFFFFF)
-#define TC_U32_UNSPEC  0
-#define TC_U32_ROOT    (0xFFF00000)
-
-enum {
-       TCA_U32_UNSPEC,
-       TCA_U32_CLASSID,
-       TCA_U32_HASH,
-       TCA_U32_LINK,
-       TCA_U32_DIVISOR,
-       TCA_U32_SEL,
-       TCA_U32_POLICE,
-       TCA_U32_ACT,
-       TCA_U32_INDEV,
-       TCA_U32_PCNT,
-       TCA_U32_MARK,
-       TCA_U32_FLAGS,
-       TCA_U32_PAD,
-       __TCA_U32_MAX
-};
-
-#define TCA_U32_MAX (__TCA_U32_MAX - 1)
-
-struct tc_u32_key {
-       __be32          mask;
-       __be32          val;
-       int             off;
-       int             offmask;
-};
-
-struct tc_u32_sel {
-       unsigned char           flags;
-       unsigned char           offshift;
-       unsigned char           nkeys;
-
-       __be16                  offmask;
-       __u16                   off;
-       short                   offoff;
-
-       short                   hoff;
-       __be32                  hmask;
-       struct tc_u32_key       keys[0];
-};
-
-struct tc_u32_mark {
-       __u32           val;
-       __u32           mask;
-       __u32           success;
-};
-
-struct tc_u32_pcnt {
-       __u64 rcnt;
-       __u64 rhit;
-       __u64 kcnts[0];
-};
-
-/* Flags */
-
-#define TC_U32_TERMINAL                1
-#define TC_U32_OFFSET          2
-#define TC_U32_VAROFFSET       4
-#define TC_U32_EAT             8
-
-#define TC_U32_MAXDEPTH 8
-
-
-/* RSVP filter */
-
-enum {
-       TCA_RSVP_UNSPEC,
-       TCA_RSVP_CLASSID,
-       TCA_RSVP_DST,
-       TCA_RSVP_SRC,
-       TCA_RSVP_PINFO,
-       TCA_RSVP_POLICE,
-       TCA_RSVP_ACT,
-       __TCA_RSVP_MAX
-};
-
-#define TCA_RSVP_MAX (__TCA_RSVP_MAX - 1 )
-
-struct tc_rsvp_gpi {
-       __u32   key;
-       __u32   mask;
-       int     offset;
-};
-
-struct tc_rsvp_pinfo {
-       struct tc_rsvp_gpi dpi;
-       struct tc_rsvp_gpi spi;
-       __u8    protocol;
-       __u8    tunnelid;
-       __u8    tunnelhdr;
-       __u8    pad;
-};
-
-/* ROUTE filter */
-
-enum {
-       TCA_ROUTE4_UNSPEC,
-       TCA_ROUTE4_CLASSID,
-       TCA_ROUTE4_TO,
-       TCA_ROUTE4_FROM,
-       TCA_ROUTE4_IIF,
-       TCA_ROUTE4_POLICE,
-       TCA_ROUTE4_ACT,
-       __TCA_ROUTE4_MAX
-};
-
-#define TCA_ROUTE4_MAX (__TCA_ROUTE4_MAX - 1)
-
-
-/* FW filter */
-
-enum {
-       TCA_FW_UNSPEC,
-       TCA_FW_CLASSID,
-       TCA_FW_POLICE,
-       TCA_FW_INDEV, /*  used by CONFIG_NET_CLS_IND */
-       TCA_FW_ACT, /* used by CONFIG_NET_CLS_ACT */
-       TCA_FW_MASK,
-       __TCA_FW_MAX
-};
-
-#define TCA_FW_MAX (__TCA_FW_MAX - 1)
-
-/* TC index filter */
-
-enum {
-       TCA_TCINDEX_UNSPEC,
-       TCA_TCINDEX_HASH,
-       TCA_TCINDEX_MASK,
-       TCA_TCINDEX_SHIFT,
-       TCA_TCINDEX_FALL_THROUGH,
-       TCA_TCINDEX_CLASSID,
-       TCA_TCINDEX_POLICE,
-       TCA_TCINDEX_ACT,
-       __TCA_TCINDEX_MAX
-};
-
-#define TCA_TCINDEX_MAX     (__TCA_TCINDEX_MAX - 1)
-
-/* Flow filter */
-
-enum {
-       FLOW_KEY_SRC,
-       FLOW_KEY_DST,
-       FLOW_KEY_PROTO,
-       FLOW_KEY_PROTO_SRC,
-       FLOW_KEY_PROTO_DST,
-       FLOW_KEY_IIF,
-       FLOW_KEY_PRIORITY,
-       FLOW_KEY_MARK,
-       FLOW_KEY_NFCT,
-       FLOW_KEY_NFCT_SRC,
-       FLOW_KEY_NFCT_DST,
-       FLOW_KEY_NFCT_PROTO_SRC,
-       FLOW_KEY_NFCT_PROTO_DST,
-       FLOW_KEY_RTCLASSID,
-       FLOW_KEY_SKUID,
-       FLOW_KEY_SKGID,
-       FLOW_KEY_VLAN_TAG,
-       FLOW_KEY_RXHASH,
-       __FLOW_KEY_MAX,
-};
-
-#define FLOW_KEY_MAX   (__FLOW_KEY_MAX - 1)
-
-enum {
-       FLOW_MODE_MAP,
-       FLOW_MODE_HASH,
-};
-
-enum {
-       TCA_FLOW_UNSPEC,
-       TCA_FLOW_KEYS,
-       TCA_FLOW_MODE,
-       TCA_FLOW_BASECLASS,
-       TCA_FLOW_RSHIFT,
-       TCA_FLOW_ADDEND,
-       TCA_FLOW_MASK,
-       TCA_FLOW_XOR,
-       TCA_FLOW_DIVISOR,
-       TCA_FLOW_ACT,
-       TCA_FLOW_POLICE,
-       TCA_FLOW_EMATCHES,
-       TCA_FLOW_PERTURB,
-       __TCA_FLOW_MAX
-};
-
-#define TCA_FLOW_MAX   (__TCA_FLOW_MAX - 1)
-
-/* Basic filter */
-
-enum {
-       TCA_BASIC_UNSPEC,
-       TCA_BASIC_CLASSID,
-       TCA_BASIC_EMATCHES,
-       TCA_BASIC_ACT,
-       TCA_BASIC_POLICE,
-       __TCA_BASIC_MAX
-};
-
-#define TCA_BASIC_MAX (__TCA_BASIC_MAX - 1)
-
-
-/* Cgroup classifier */
-
-enum {
-       TCA_CGROUP_UNSPEC,
-       TCA_CGROUP_ACT,
-       TCA_CGROUP_POLICE,
-       TCA_CGROUP_EMATCHES,
-       __TCA_CGROUP_MAX,
-};
-
-#define TCA_CGROUP_MAX (__TCA_CGROUP_MAX - 1)
-
-/* BPF classifier */
-
-#define TCA_BPF_FLAG_ACT_DIRECT                (1 << 0)
-
-enum {
-       TCA_BPF_UNSPEC,
-       TCA_BPF_ACT,
-       TCA_BPF_POLICE,
-       TCA_BPF_CLASSID,
-       TCA_BPF_OPS_LEN,
-       TCA_BPF_OPS,
-       TCA_BPF_FD,
-       TCA_BPF_NAME,
-       TCA_BPF_FLAGS,
-       TCA_BPF_FLAGS_GEN,
-       TCA_BPF_TAG,
-       TCA_BPF_ID,
-       __TCA_BPF_MAX,
-};
-
-#define TCA_BPF_MAX (__TCA_BPF_MAX - 1)
-
-/* Flower classifier */
-
-enum {
-       TCA_FLOWER_UNSPEC,
-       TCA_FLOWER_CLASSID,
-       TCA_FLOWER_INDEV,
-       TCA_FLOWER_ACT,
-       TCA_FLOWER_KEY_ETH_DST,         /* ETH_ALEN */
-       TCA_FLOWER_KEY_ETH_DST_MASK,    /* ETH_ALEN */
-       TCA_FLOWER_KEY_ETH_SRC,         /* ETH_ALEN */
-       TCA_FLOWER_KEY_ETH_SRC_MASK,    /* ETH_ALEN */
-       TCA_FLOWER_KEY_ETH_TYPE,        /* be16 */
-       TCA_FLOWER_KEY_IP_PROTO,        /* u8 */
-       TCA_FLOWER_KEY_IPV4_SRC,        /* be32 */
-       TCA_FLOWER_KEY_IPV4_SRC_MASK,   /* be32 */
-       TCA_FLOWER_KEY_IPV4_DST,        /* be32 */
-       TCA_FLOWER_KEY_IPV4_DST_MASK,   /* be32 */
-       TCA_FLOWER_KEY_IPV6_SRC,        /* struct in6_addr */
-       TCA_FLOWER_KEY_IPV6_SRC_MASK,   /* struct in6_addr */
-       TCA_FLOWER_KEY_IPV6_DST,        /* struct in6_addr */
-       TCA_FLOWER_KEY_IPV6_DST_MASK,   /* struct in6_addr */
-       TCA_FLOWER_KEY_TCP_SRC,         /* be16 */
-       TCA_FLOWER_KEY_TCP_DST,         /* be16 */
-       TCA_FLOWER_KEY_UDP_SRC,         /* be16 */
-       TCA_FLOWER_KEY_UDP_DST,         /* be16 */
-
-       TCA_FLOWER_FLAGS,
-       TCA_FLOWER_KEY_VLAN_ID,         /* be16 */
-       TCA_FLOWER_KEY_VLAN_PRIO,       /* u8   */
-       TCA_FLOWER_KEY_VLAN_ETH_TYPE,   /* be16 */
-
-       TCA_FLOWER_KEY_ENC_KEY_ID,      /* be32 */
-       TCA_FLOWER_KEY_ENC_IPV4_SRC,    /* be32 */
-       TCA_FLOWER_KEY_ENC_IPV4_SRC_MASK,/* be32 */
-       TCA_FLOWER_KEY_ENC_IPV4_DST,    /* be32 */
-       TCA_FLOWER_KEY_ENC_IPV4_DST_MASK,/* be32 */
-       TCA_FLOWER_KEY_ENC_IPV6_SRC,    /* struct in6_addr */
-       TCA_FLOWER_KEY_ENC_IPV6_SRC_MASK,/* struct in6_addr */
-       TCA_FLOWER_KEY_ENC_IPV6_DST,    /* struct in6_addr */
-       TCA_FLOWER_KEY_ENC_IPV6_DST_MASK,/* struct in6_addr */
-
-       TCA_FLOWER_KEY_TCP_SRC_MASK,    /* be16 */
-       TCA_FLOWER_KEY_TCP_DST_MASK,    /* be16 */
-       TCA_FLOWER_KEY_UDP_SRC_MASK,    /* be16 */
-       TCA_FLOWER_KEY_UDP_DST_MASK,    /* be16 */
-       TCA_FLOWER_KEY_SCTP_SRC_MASK,   /* be16 */
-       TCA_FLOWER_KEY_SCTP_DST_MASK,   /* be16 */
-
-       TCA_FLOWER_KEY_SCTP_SRC,        /* be16 */
-       TCA_FLOWER_KEY_SCTP_DST,        /* be16 */
-
-       TCA_FLOWER_KEY_ENC_UDP_SRC_PORT,        /* be16 */
-       TCA_FLOWER_KEY_ENC_UDP_SRC_PORT_MASK,   /* be16 */
-       TCA_FLOWER_KEY_ENC_UDP_DST_PORT,        /* be16 */
-       TCA_FLOWER_KEY_ENC_UDP_DST_PORT_MASK,   /* be16 */
-
-       TCA_FLOWER_KEY_FLAGS,           /* be32 */
-       TCA_FLOWER_KEY_FLAGS_MASK,      /* be32 */
-
-       TCA_FLOWER_KEY_ICMPV4_CODE,     /* u8 */
-       TCA_FLOWER_KEY_ICMPV4_CODE_MASK,/* u8 */
-       TCA_FLOWER_KEY_ICMPV4_TYPE,     /* u8 */
-       TCA_FLOWER_KEY_ICMPV4_TYPE_MASK,/* u8 */
-       TCA_FLOWER_KEY_ICMPV6_CODE,     /* u8 */
-       TCA_FLOWER_KEY_ICMPV6_CODE_MASK,/* u8 */
-       TCA_FLOWER_KEY_ICMPV6_TYPE,     /* u8 */
-       TCA_FLOWER_KEY_ICMPV6_TYPE_MASK,/* u8 */
-
-       TCA_FLOWER_KEY_ARP_SIP,         /* be32 */
-       TCA_FLOWER_KEY_ARP_SIP_MASK,    /* be32 */
-       TCA_FLOWER_KEY_ARP_TIP,         /* be32 */
-       TCA_FLOWER_KEY_ARP_TIP_MASK,    /* be32 */
-       TCA_FLOWER_KEY_ARP_OP,          /* u8 */
-       TCA_FLOWER_KEY_ARP_OP_MASK,     /* u8 */
-       TCA_FLOWER_KEY_ARP_SHA,         /* ETH_ALEN */
-       TCA_FLOWER_KEY_ARP_SHA_MASK,    /* ETH_ALEN */
-       TCA_FLOWER_KEY_ARP_THA,         /* ETH_ALEN */
-       TCA_FLOWER_KEY_ARP_THA_MASK,    /* ETH_ALEN */
-
-       TCA_FLOWER_KEY_MPLS_TTL,        /* u8 - 8 bits */
-       TCA_FLOWER_KEY_MPLS_BOS,        /* u8 - 1 bit */
-       TCA_FLOWER_KEY_MPLS_TC,         /* u8 - 3 bits */
-       TCA_FLOWER_KEY_MPLS_LABEL,      /* be32 - 20 bits */
-
-       TCA_FLOWER_KEY_TCP_FLAGS,       /* be16 */
-       TCA_FLOWER_KEY_TCP_FLAGS_MASK,  /* be16 */
-
-       TCA_FLOWER_KEY_IP_TOS,          /* u8 */
-       TCA_FLOWER_KEY_IP_TOS_MASK,     /* u8 */
-       TCA_FLOWER_KEY_IP_TTL,          /* u8 */
-       TCA_FLOWER_KEY_IP_TTL_MASK,     /* u8 */
-
-       __TCA_FLOWER_MAX,
-};
-
-#define TCA_FLOWER_MAX (__TCA_FLOWER_MAX - 1)
-
-enum {
-       TCA_FLOWER_KEY_FLAGS_IS_FRAGMENT = (1 << 0),
-};
-
-/* Match-all classifier */
-
-enum {
-       TCA_MATCHALL_UNSPEC,
-       TCA_MATCHALL_CLASSID,
-       TCA_MATCHALL_ACT,
-       TCA_MATCHALL_FLAGS,
-       __TCA_MATCHALL_MAX,
-};
-
-#define TCA_MATCHALL_MAX (__TCA_MATCHALL_MAX - 1)
-
-/* Extended Matches */
-
-struct tcf_ematch_tree_hdr {
-       __u16           nmatches;
-       __u16           progid;
-};
-
-enum {
-       TCA_EMATCH_TREE_UNSPEC,
-       TCA_EMATCH_TREE_HDR,
-       TCA_EMATCH_TREE_LIST,
-       __TCA_EMATCH_TREE_MAX
-};
-#define TCA_EMATCH_TREE_MAX (__TCA_EMATCH_TREE_MAX - 1)
-
-struct tcf_ematch_hdr {
-       __u16           matchid;
-       __u16           kind;
-       __u16           flags;
-       __u16           pad; /* currently unused */
-};
-
-/*  0                   1
- *  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 
- * +-----------------------+-+-+---+
- * |         Unused        |S|I| R |
- * +-----------------------+-+-+---+
- *
- * R(2) ::= relation to next ematch
- *          where: 0 0 END (last ematch)
- *                 0 1 AND
- *                 1 0 OR
- *                 1 1 Unused (invalid)
- * I(1) ::= invert result
- * S(1) ::= simple payload
- */
-#define TCF_EM_REL_END 0
-#define TCF_EM_REL_AND (1<<0)
-#define TCF_EM_REL_OR  (1<<1)
-#define TCF_EM_INVERT  (1<<2)
-#define TCF_EM_SIMPLE  (1<<3)
-
-#define TCF_EM_REL_MASK        3
-#define TCF_EM_REL_VALID(v) (((v) & TCF_EM_REL_MASK) != TCF_EM_REL_MASK)
-
-enum {
-       TCF_LAYER_LINK,
-       TCF_LAYER_NETWORK,
-       TCF_LAYER_TRANSPORT,
-       __TCF_LAYER_MAX
-};
-#define TCF_LAYER_MAX (__TCF_LAYER_MAX - 1)
-
-/* Ematch type assignments
- *   1..32767          Reserved for ematches inside kernel tree
- *   32768..65535      Free to use, not reliable
- */
-#define        TCF_EM_CONTAINER        0
-#define        TCF_EM_CMP              1
-#define        TCF_EM_NBYTE            2
-#define        TCF_EM_U32              3
-#define        TCF_EM_META             4
-#define        TCF_EM_TEXT             5
-#define        TCF_EM_VLAN             6
-#define        TCF_EM_CANID            7
-#define        TCF_EM_IPSET            8
-#define        TCF_EM_MAX              8
-
-enum {
-       TCF_EM_PROG_TC
-};
-
-enum {
-       TCF_EM_OPND_EQ,
-       TCF_EM_OPND_GT,
-       TCF_EM_OPND_LT
-};
-
-#endif
diff --git a/include/linux/pkt_sched.h b/include/linux/pkt_sched.h
deleted file mode 100644 (file)
index 099bf55..0000000
+++ /dev/null
@@ -1,874 +0,0 @@
-#ifndef __LINUX_PKT_SCHED_H
-#define __LINUX_PKT_SCHED_H
-
-#include <linux/types.h>
-
-/* Logical priority bands not depending on specific packet scheduler.
-   Every scheduler will map them to real traffic classes, if it has
-   no more precise mechanism to classify packets.
-
-   These numbers have no special meaning, though their coincidence
-   with obsolete IPv6 values is not occasional :-). New IPv6 drafts
-   preferred full anarchy inspired by diffserv group.
-
-   Note: TC_PRIO_BESTEFFORT does not mean that it is the most unhappy
-   class, actually, as rule it will be handled with more care than
-   filler or even bulk.
- */
-
-#define TC_PRIO_BESTEFFORT             0
-#define TC_PRIO_FILLER                 1
-#define TC_PRIO_BULK                   2
-#define TC_PRIO_INTERACTIVE_BULK       4
-#define TC_PRIO_INTERACTIVE            6
-#define TC_PRIO_CONTROL                        7
-
-#define TC_PRIO_MAX                    15
-
-/* Generic queue statistics, available for all the elements.
-   Particular schedulers may have also their private records.
- */
-
-struct tc_stats {
-       __u64   bytes;                  /* Number of enqueued bytes */
-       __u32   packets;                /* Number of enqueued packets   */
-       __u32   drops;                  /* Packets dropped because of lack of resources */
-       __u32   overlimits;             /* Number of throttle events when this
-                                        * flow goes out of allocated bandwidth */
-       __u32   bps;                    /* Current flow byte rate */
-       __u32   pps;                    /* Current flow packet rate */
-       __u32   qlen;
-       __u32   backlog;
-};
-
-struct tc_estimator {
-       signed char     interval;
-       unsigned char   ewma_log;
-};
-
-/* "Handles"
-   ---------
-
-    All the traffic control objects have 32bit identifiers, or "handles".
-
-    They can be considered as opaque numbers from user API viewpoint,
-    but actually they always consist of two fields: major and
-    minor numbers, which are interpreted by kernel specially,
-    that may be used by applications, though not recommended.
-
-    F.e. qdisc handles always have minor number equal to zero,
-    classes (or flows) have major equal to parent qdisc major, and
-    minor uniquely identifying class inside qdisc.
-
-    Macros to manipulate handles:
- */
-
-#define TC_H_MAJ_MASK (0xFFFF0000U)
-#define TC_H_MIN_MASK (0x0000FFFFU)
-#define TC_H_MAJ(h) ((h)&TC_H_MAJ_MASK)
-#define TC_H_MIN(h) ((h)&TC_H_MIN_MASK)
-#define TC_H_MAKE(maj,min) (((maj)&TC_H_MAJ_MASK)|((min)&TC_H_MIN_MASK))
-
-#define TC_H_UNSPEC    (0U)
-#define TC_H_ROOT      (0xFFFFFFFFU)
-#define TC_H_INGRESS    (0xFFFFFFF1U)
-#define TC_H_CLSACT    TC_H_INGRESS
-
-#define TC_H_MIN_INGRESS       0xFFF2U
-#define TC_H_MIN_EGRESS                0xFFF3U
-
-/* Need to corrospond to iproute2 tc/tc_core.h "enum link_layer" */
-enum tc_link_layer {
-       TC_LINKLAYER_UNAWARE, /* Indicate unaware old iproute2 util */
-       TC_LINKLAYER_ETHERNET,
-       TC_LINKLAYER_ATM,
-};
-#define TC_LINKLAYER_MASK 0x0F /* limit use to lower 4 bits */
-
-struct tc_ratespec {
-       unsigned char   cell_log;
-       __u8            linklayer; /* lower 4 bits */
-       unsigned short  overhead;
-       short           cell_align;
-       unsigned short  mpu;
-       __u32           rate;
-};
-
-#define TC_RTAB_SIZE   1024
-
-struct tc_sizespec {
-       unsigned char   cell_log;
-       unsigned char   size_log;
-       short           cell_align;
-       int             overhead;
-       unsigned int    linklayer;
-       unsigned int    mpu;
-       unsigned int    mtu;
-       unsigned int    tsize;
-};
-
-enum {
-       TCA_STAB_UNSPEC,
-       TCA_STAB_BASE,
-       TCA_STAB_DATA,
-       __TCA_STAB_MAX
-};
-
-#define TCA_STAB_MAX (__TCA_STAB_MAX - 1)
-
-/* FIFO section */
-
-struct tc_fifo_qopt {
-       __u32   limit;  /* Queue length: bytes for bfifo, packets for pfifo */
-};
-
-/* PRIO section */
-
-#define TCQ_PRIO_BANDS 16
-#define TCQ_MIN_PRIO_BANDS 2
-
-struct tc_prio_qopt {
-       int     bands;                  /* Number of bands */
-       __u8    priomap[TC_PRIO_MAX+1]; /* Map: logical priority -> PRIO band */
-};
-
-/* MULTIQ section */
-
-struct tc_multiq_qopt {
-       __u16   bands;                  /* Number of bands */
-       __u16   max_bands;              /* Maximum number of queues */
-};
-
-/* PLUG section */
-
-#define TCQ_PLUG_BUFFER                0
-#define TCQ_PLUG_RELEASE_ONE           1
-#define TCQ_PLUG_RELEASE_INDEFINITE    2
-#define TCQ_PLUG_LIMIT                 3
-
-struct tc_plug_qopt {
-       /* TCQ_PLUG_BUFFER: Inset a plug into the queue and
-        *  buffer any incoming packets
-        * TCQ_PLUG_RELEASE_ONE: Dequeue packets from queue head
-        *   to beginning of the next plug.
-        * TCQ_PLUG_RELEASE_INDEFINITE: Dequeue all packets from queue.
-        *   Stop buffering packets until the next TCQ_PLUG_BUFFER
-        *   command is received (just act as a pass-thru queue).
-        * TCQ_PLUG_LIMIT: Increase/decrease queue size
-        */
-       int             action;
-       __u32           limit;
-};
-
-/* TBF section */
-
-struct tc_tbf_qopt {
-       struct tc_ratespec rate;
-       struct tc_ratespec peakrate;
-       __u32           limit;
-       __u32           buffer;
-       __u32           mtu;
-};
-
-enum {
-       TCA_TBF_UNSPEC,
-       TCA_TBF_PARMS,
-       TCA_TBF_RTAB,
-       TCA_TBF_PTAB,
-       TCA_TBF_RATE64,
-       TCA_TBF_PRATE64,
-       TCA_TBF_BURST,
-       TCA_TBF_PBURST,
-       TCA_TBF_PAD,
-       __TCA_TBF_MAX,
-};
-
-#define TCA_TBF_MAX (__TCA_TBF_MAX - 1)
-
-
-/* TEQL section */
-
-/* TEQL does not require any parameters */
-
-/* SFQ section */
-
-struct tc_sfq_qopt {
-       unsigned        quantum;        /* Bytes per round allocated to flow */
-       int             perturb_period; /* Period of hash perturbation */
-       __u32           limit;          /* Maximal packets in queue */
-       unsigned        divisor;        /* Hash divisor  */
-       unsigned        flows;          /* Maximal number of flows  */
-};
-
-struct tc_sfqred_stats {
-       __u32           prob_drop;      /* Early drops, below max threshold */
-       __u32           forced_drop;    /* Early drops, after max threshold */
-       __u32           prob_mark;      /* Marked packets, below max threshold */
-       __u32           forced_mark;    /* Marked packets, after max threshold */
-       __u32           prob_mark_head; /* Marked packets, below max threshold */
-       __u32           forced_mark_head;/* Marked packets, after max threshold */
-};
-
-struct tc_sfq_qopt_v1 {
-       struct tc_sfq_qopt v0;
-       unsigned int    depth;          /* max number of packets per flow */
-       unsigned int    headdrop;
-/* SFQRED parameters */
-       __u32           limit;          /* HARD maximal flow queue length (bytes) */
-       __u32           qth_min;        /* Min average length threshold (bytes) */
-       __u32           qth_max;        /* Max average length threshold (bytes) */
-       unsigned char   Wlog;           /* log(W)               */
-       unsigned char   Plog;           /* log(P_max/(qth_max-qth_min)) */
-       unsigned char   Scell_log;      /* cell size for idle damping */
-       unsigned char   flags;
-       __u32           max_P;          /* probability, high resolution */
-/* SFQRED stats */
-       struct tc_sfqred_stats stats;
-};
-
-
-struct tc_sfq_xstats {
-       __s32           allot;
-};
-
-/* RED section */
-
-enum {
-       TCA_RED_UNSPEC,
-       TCA_RED_PARMS,
-       TCA_RED_STAB,
-       TCA_RED_MAX_P,
-       __TCA_RED_MAX,
-};
-
-#define TCA_RED_MAX (__TCA_RED_MAX - 1)
-
-struct tc_red_qopt {
-       __u32           limit;          /* HARD maximal queue length (bytes)    */
-       __u32           qth_min;        /* Min average length threshold (bytes) */
-       __u32           qth_max;        /* Max average length threshold (bytes) */
-       unsigned char   Wlog;           /* log(W)               */
-       unsigned char   Plog;           /* log(P_max/(qth_max-qth_min)) */
-       unsigned char   Scell_log;      /* cell size for idle damping */
-       unsigned char   flags;
-#define TC_RED_ECN             1
-#define TC_RED_HARDDROP                2
-#define TC_RED_ADAPTATIVE      4
-};
-
-struct tc_red_xstats {
-       __u32           early;          /* Early drops */
-       __u32           pdrop;          /* Drops due to queue limits */
-       __u32           other;          /* Drops due to drop() calls */
-       __u32           marked;         /* Marked packets */
-};
-
-/* GRED section */
-
-#define MAX_DPs 16
-
-enum {
-       TCA_GRED_UNSPEC,
-       TCA_GRED_PARMS,
-       TCA_GRED_STAB,
-       TCA_GRED_DPS,
-       TCA_GRED_MAX_P,
-       TCA_GRED_LIMIT,
-       __TCA_GRED_MAX,
-};
-
-#define TCA_GRED_MAX (__TCA_GRED_MAX - 1)
-
-struct tc_gred_qopt {
-       __u32           limit;        /* HARD maximal queue length (bytes)    */
-       __u32           qth_min;      /* Min average length threshold (bytes) */
-       __u32           qth_max;      /* Max average length threshold (bytes) */
-       __u32           DP;           /* up to 2^32 DPs */
-       __u32           backlog;
-       __u32           qave;
-       __u32           forced;
-       __u32           early;
-       __u32           other;
-       __u32           pdrop;
-       __u8            Wlog;         /* log(W)               */
-       __u8            Plog;         /* log(P_max/(qth_max-qth_min)) */
-       __u8            Scell_log;    /* cell size for idle damping */
-       __u8            prio;         /* prio of this VQ */
-       __u32           packets;
-       __u32           bytesin;
-};
-
-/* gred setup */
-struct tc_gred_sopt {
-       __u32           DPs;
-       __u32           def_DP;
-       __u8            grio;
-       __u8            flags;
-       __u16           pad1;
-};
-
-/* CHOKe section */
-
-enum {
-       TCA_CHOKE_UNSPEC,
-       TCA_CHOKE_PARMS,
-       TCA_CHOKE_STAB,
-       TCA_CHOKE_MAX_P,
-       __TCA_CHOKE_MAX,
-};
-
-#define TCA_CHOKE_MAX (__TCA_CHOKE_MAX - 1)
-
-struct tc_choke_qopt {
-       __u32           limit;          /* Hard queue length (packets)  */
-       __u32           qth_min;        /* Min average threshold (packets) */
-       __u32           qth_max;        /* Max average threshold (packets) */
-       unsigned char   Wlog;           /* log(W)               */
-       unsigned char   Plog;           /* log(P_max/(qth_max-qth_min)) */
-       unsigned char   Scell_log;      /* cell size for idle damping */
-       unsigned char   flags;          /* see RED flags */
-};
-
-struct tc_choke_xstats {
-       __u32           early;          /* Early drops */
-       __u32           pdrop;          /* Drops due to queue limits */
-       __u32           other;          /* Drops due to drop() calls */
-       __u32           marked;         /* Marked packets */
-       __u32           matched;        /* Drops due to flow match */
-};
-
-/* HTB section */
-#define TC_HTB_NUMPRIO         8
-#define TC_HTB_MAXDEPTH                8
-#define TC_HTB_PROTOVER                3 /* the same as HTB and TC's major */
-
-struct tc_htb_opt {
-       struct tc_ratespec      rate;
-       struct tc_ratespec      ceil;
-       __u32   buffer;
-       __u32   cbuffer;
-       __u32   quantum;
-       __u32   level;          /* out only */
-       __u32   prio;
-};
-struct tc_htb_glob {
-       __u32 version;          /* to match HTB/TC */
-       __u32 rate2quantum;     /* bps->quantum divisor */
-       __u32 defcls;           /* default class number */
-       __u32 debug;            /* debug flags */
-
-       /* stats */
-       __u32 direct_pkts; /* count of non shaped packets */
-};
-enum {
-       TCA_HTB_UNSPEC,
-       TCA_HTB_PARMS,
-       TCA_HTB_INIT,
-       TCA_HTB_CTAB,
-       TCA_HTB_RTAB,
-       TCA_HTB_DIRECT_QLEN,
-       TCA_HTB_RATE64,
-       TCA_HTB_CEIL64,
-       TCA_HTB_PAD,
-       __TCA_HTB_MAX,
-};
-
-#define TCA_HTB_MAX (__TCA_HTB_MAX - 1)
-
-struct tc_htb_xstats {
-       __u32 lends;
-       __u32 borrows;
-       __u32 giants;   /* too big packets (rate will not be accurate) */
-       __u32 tokens;
-       __u32 ctokens;
-};
-
-/* HFSC section */
-
-struct tc_hfsc_qopt {
-       __u16   defcls;         /* default class */
-};
-
-struct tc_service_curve {
-       __u32   m1;             /* slope of the first segment in bps */
-       __u32   d;              /* x-projection of the first segment in us */
-       __u32   m2;             /* slope of the second segment in bps */
-};
-
-struct tc_hfsc_stats {
-       __u64   work;           /* total work done */
-       __u64   rtwork;         /* work done by real-time criteria */
-       __u32   period;         /* current period */
-       __u32   level;          /* class level in hierarchy */
-};
-
-enum {
-       TCA_HFSC_UNSPEC,
-       TCA_HFSC_RSC,
-       TCA_HFSC_FSC,
-       TCA_HFSC_USC,
-       __TCA_HFSC_MAX,
-};
-
-#define TCA_HFSC_MAX (__TCA_HFSC_MAX - 1)
-
-
-/* CBQ section */
-
-#define TC_CBQ_MAXPRIO         8
-#define TC_CBQ_MAXLEVEL                8
-#define TC_CBQ_DEF_EWMA                5
-
-struct tc_cbq_lssopt {
-       unsigned char   change;
-       unsigned char   flags;
-#define TCF_CBQ_LSS_BOUNDED    1
-#define TCF_CBQ_LSS_ISOLATED   2
-       unsigned char   ewma_log;
-       unsigned char   level;
-#define TCF_CBQ_LSS_FLAGS      1
-#define TCF_CBQ_LSS_EWMA       2
-#define TCF_CBQ_LSS_MAXIDLE    4
-#define TCF_CBQ_LSS_MINIDLE    8
-#define TCF_CBQ_LSS_OFFTIME    0x10
-#define TCF_CBQ_LSS_AVPKT      0x20
-       __u32           maxidle;
-       __u32           minidle;
-       __u32           offtime;
-       __u32           avpkt;
-};
-
-struct tc_cbq_wrropt {
-       unsigned char   flags;
-       unsigned char   priority;
-       unsigned char   cpriority;
-       unsigned char   __reserved;
-       __u32           allot;
-       __u32           weight;
-};
-
-struct tc_cbq_ovl {
-       unsigned char   strategy;
-#define        TC_CBQ_OVL_CLASSIC      0
-#define        TC_CBQ_OVL_DELAY        1
-#define        TC_CBQ_OVL_LOWPRIO      2
-#define        TC_CBQ_OVL_DROP         3
-#define        TC_CBQ_OVL_RCLASSIC     4
-       unsigned char   priority2;
-       __u16           pad;
-       __u32           penalty;
-};
-
-struct tc_cbq_police {
-       unsigned char   police;
-       unsigned char   __res1;
-       unsigned short  __res2;
-};
-
-struct tc_cbq_fopt {
-       __u32           split;
-       __u32           defmap;
-       __u32           defchange;
-};
-
-struct tc_cbq_xstats {
-       __u32           borrows;
-       __u32           overactions;
-       __s32           avgidle;
-       __s32           undertime;
-};
-
-enum {
-       TCA_CBQ_UNSPEC,
-       TCA_CBQ_LSSOPT,
-       TCA_CBQ_WRROPT,
-       TCA_CBQ_FOPT,
-       TCA_CBQ_OVL_STRATEGY,
-       TCA_CBQ_RATE,
-       TCA_CBQ_RTAB,
-       TCA_CBQ_POLICE,
-       __TCA_CBQ_MAX,
-};
-
-#define TCA_CBQ_MAX    (__TCA_CBQ_MAX - 1)
-
-/* dsmark section */
-
-enum {
-       TCA_DSMARK_UNSPEC,
-       TCA_DSMARK_INDICES,
-       TCA_DSMARK_DEFAULT_INDEX,
-       TCA_DSMARK_SET_TC_INDEX,
-       TCA_DSMARK_MASK,
-       TCA_DSMARK_VALUE,
-       __TCA_DSMARK_MAX,
-};
-
-#define TCA_DSMARK_MAX (__TCA_DSMARK_MAX - 1)
-
-/* ATM  section */
-
-enum {
-       TCA_ATM_UNSPEC,
-       TCA_ATM_FD,             /* file/socket descriptor */
-       TCA_ATM_PTR,            /* pointer to descriptor - later */
-       TCA_ATM_HDR,            /* LL header */
-       TCA_ATM_EXCESS,         /* excess traffic class (0 for CLP)  */
-       TCA_ATM_ADDR,           /* PVC address (for output only) */
-       TCA_ATM_STATE,          /* VC state (ATM_VS_*; for output only) */
-       __TCA_ATM_MAX,
-};
-
-#define TCA_ATM_MAX    (__TCA_ATM_MAX - 1)
-
-/* Network emulator */
-
-enum {
-       TCA_NETEM_UNSPEC,
-       TCA_NETEM_CORR,
-       TCA_NETEM_DELAY_DIST,
-       TCA_NETEM_REORDER,
-       TCA_NETEM_CORRUPT,
-       TCA_NETEM_LOSS,
-       TCA_NETEM_RATE,
-       TCA_NETEM_ECN,
-       TCA_NETEM_RATE64,
-       TCA_NETEM_PAD,
-       __TCA_NETEM_MAX,
-};
-
-#define TCA_NETEM_MAX (__TCA_NETEM_MAX - 1)
-
-struct tc_netem_qopt {
-       __u32   latency;        /* added delay (us) */
-       __u32   limit;          /* fifo limit (packets) */
-       __u32   loss;           /* random packet loss (0=none ~0=100%) */
-       __u32   gap;            /* re-ordering gap (0 for none) */
-       __u32   duplicate;      /* random packet dup  (0=none ~0=100%) */
-       __u32   jitter;         /* random jitter in latency (us) */
-};
-
-struct tc_netem_corr {
-       __u32   delay_corr;     /* delay correlation */
-       __u32   loss_corr;      /* packet loss correlation */
-       __u32   dup_corr;       /* duplicate correlation  */
-};
-
-struct tc_netem_reorder {
-       __u32   probability;
-       __u32   correlation;
-};
-
-struct tc_netem_corrupt {
-       __u32   probability;
-       __u32   correlation;
-};
-
-struct tc_netem_rate {
-       __u32   rate;   /* byte/s */
-       __s32   packet_overhead;
-       __u32   cell_size;
-       __s32   cell_overhead;
-};
-
-enum {
-       NETEM_LOSS_UNSPEC,
-       NETEM_LOSS_GI,          /* General Intuitive - 4 state model */
-       NETEM_LOSS_GE,          /* Gilbert Elliot models */
-       __NETEM_LOSS_MAX
-};
-#define NETEM_LOSS_MAX (__NETEM_LOSS_MAX - 1)
-
-/* State transition probabilities for 4 state model */
-struct tc_netem_gimodel {
-       __u32   p13;
-       __u32   p31;
-       __u32   p32;
-       __u32   p14;
-       __u32   p23;
-};
-
-/* Gilbert-Elliot models */
-struct tc_netem_gemodel {
-       __u32 p;
-       __u32 r;
-       __u32 h;
-       __u32 k1;
-};
-
-#define NETEM_DIST_SCALE       8192
-#define NETEM_DIST_MAX         16384
-
-/* DRR */
-
-enum {
-       TCA_DRR_UNSPEC,
-       TCA_DRR_QUANTUM,
-       __TCA_DRR_MAX
-};
-
-#define TCA_DRR_MAX    (__TCA_DRR_MAX - 1)
-
-struct tc_drr_stats {
-       __u32   deficit;
-};
-
-/* MQPRIO */
-#define TC_QOPT_BITMASK 15
-#define TC_QOPT_MAX_QUEUE 16
-
-enum {
-       TC_MQPRIO_HW_OFFLOAD_NONE,      /* no offload requested */
-       TC_MQPRIO_HW_OFFLOAD_TCS,       /* offload TCs, no queue counts */
-       __TC_MQPRIO_HW_OFFLOAD_MAX
-};
-
-#define TC_MQPRIO_HW_OFFLOAD_MAX (__TC_MQPRIO_HW_OFFLOAD_MAX - 1)
-
-struct tc_mqprio_qopt {
-       __u8    num_tc;
-       __u8    prio_tc_map[TC_QOPT_BITMASK + 1];
-       __u8    hw;
-       __u16   count[TC_QOPT_MAX_QUEUE];
-       __u16   offset[TC_QOPT_MAX_QUEUE];
-};
-
-/* SFB */
-
-enum {
-       TCA_SFB_UNSPEC,
-       TCA_SFB_PARMS,
-       __TCA_SFB_MAX,
-};
-
-#define TCA_SFB_MAX (__TCA_SFB_MAX - 1)
-
-/*
- * Note: increment, decrement are Q0.16 fixed-point values.
- */
-struct tc_sfb_qopt {
-       __u32 rehash_interval;  /* delay between hash move, in ms */
-       __u32 warmup_time;      /* double buffering warmup time in ms (warmup_time < rehash_interval) */
-       __u32 max;              /* max len of qlen_min */
-       __u32 bin_size;         /* maximum queue length per bin */
-       __u32 increment;        /* probability increment, (d1 in Blue) */
-       __u32 decrement;        /* probability decrement, (d2 in Blue) */
-       __u32 limit;            /* max SFB queue length */
-       __u32 penalty_rate;     /* inelastic flows are rate limited to 'rate' pps */
-       __u32 penalty_burst;
-};
-
-struct tc_sfb_xstats {
-       __u32 earlydrop;
-       __u32 penaltydrop;
-       __u32 bucketdrop;
-       __u32 queuedrop;
-       __u32 childdrop; /* drops in child qdisc */
-       __u32 marked;
-       __u32 maxqlen;
-       __u32 maxprob;
-       __u32 avgprob;
-};
-
-#define SFB_MAX_PROB 0xFFFF
-
-/* QFQ */
-enum {
-       TCA_QFQ_UNSPEC,
-       TCA_QFQ_WEIGHT,
-       TCA_QFQ_LMAX,
-       __TCA_QFQ_MAX
-};
-
-#define TCA_QFQ_MAX    (__TCA_QFQ_MAX - 1)
-
-struct tc_qfq_stats {
-       __u32 weight;
-       __u32 lmax;
-};
-
-/* CODEL */
-
-enum {
-       TCA_CODEL_UNSPEC,
-       TCA_CODEL_TARGET,
-       TCA_CODEL_LIMIT,
-       TCA_CODEL_INTERVAL,
-       TCA_CODEL_ECN,
-       TCA_CODEL_CE_THRESHOLD,
-       __TCA_CODEL_MAX
-};
-
-#define TCA_CODEL_MAX  (__TCA_CODEL_MAX - 1)
-
-struct tc_codel_xstats {
-       __u32   maxpacket; /* largest packet we've seen so far */
-       __u32   count;     /* how many drops we've done since the last time we
-                           * entered dropping state
-                           */
-       __u32   lastcount; /* count at entry to dropping state */
-       __u32   ldelay;    /* in-queue delay seen by most recently dequeued packet */
-       __s32   drop_next; /* time to drop next packet */
-       __u32   drop_overlimit; /* number of time max qdisc packet limit was hit */
-       __u32   ecn_mark;  /* number of packets we ECN marked instead of dropped */
-       __u32   dropping;  /* are we in dropping state ? */
-       __u32   ce_mark;   /* number of CE marked packets because of ce_threshold */
-};
-
-/* FQ_CODEL */
-
-enum {
-       TCA_FQ_CODEL_UNSPEC,
-       TCA_FQ_CODEL_TARGET,
-       TCA_FQ_CODEL_LIMIT,
-       TCA_FQ_CODEL_INTERVAL,
-       TCA_FQ_CODEL_ECN,
-       TCA_FQ_CODEL_FLOWS,
-       TCA_FQ_CODEL_QUANTUM,
-       TCA_FQ_CODEL_CE_THRESHOLD,
-       TCA_FQ_CODEL_DROP_BATCH_SIZE,
-       TCA_FQ_CODEL_MEMORY_LIMIT,
-       __TCA_FQ_CODEL_MAX
-};
-
-#define TCA_FQ_CODEL_MAX       (__TCA_FQ_CODEL_MAX - 1)
-
-enum {
-       TCA_FQ_CODEL_XSTATS_QDISC,
-       TCA_FQ_CODEL_XSTATS_CLASS,
-};
-
-struct tc_fq_codel_qd_stats {
-       __u32   maxpacket;      /* largest packet we've seen so far */
-       __u32   drop_overlimit; /* number of time max qdisc
-                                * packet limit was hit
-                                */
-       __u32   ecn_mark;       /* number of packets we ECN marked
-                                * instead of being dropped
-                                */
-       __u32   new_flow_count; /* number of time packets
-                                * created a 'new flow'
-                                */
-       __u32   new_flows_len;  /* count of flows in new list */
-       __u32   old_flows_len;  /* count of flows in old list */
-       __u32   ce_mark;        /* packets above ce_threshold */
-       __u32   memory_usage;   /* in bytes */
-       __u32   drop_overmemory;
-};
-
-struct tc_fq_codel_cl_stats {
-       __s32   deficit;
-       __u32   ldelay;         /* in-queue delay seen by most recently
-                                * dequeued packet
-                                */
-       __u32   count;
-       __u32   lastcount;
-       __u32   dropping;
-       __s32   drop_next;
-};
-
-struct tc_fq_codel_xstats {
-       __u32   type;
-       union {
-               struct tc_fq_codel_qd_stats qdisc_stats;
-               struct tc_fq_codel_cl_stats class_stats;
-       };
-};
-
-/* FQ */
-
-enum {
-       TCA_FQ_UNSPEC,
-
-       TCA_FQ_PLIMIT,          /* limit of total number of packets in queue */
-
-       TCA_FQ_FLOW_PLIMIT,     /* limit of packets per flow */
-
-       TCA_FQ_QUANTUM,         /* RR quantum */
-
-       TCA_FQ_INITIAL_QUANTUM,         /* RR quantum for new flow */
-
-       TCA_FQ_RATE_ENABLE,     /* enable/disable rate limiting */
-
-       TCA_FQ_FLOW_DEFAULT_RATE,/* obsolete, do not use */
-
-       TCA_FQ_FLOW_MAX_RATE,   /* per flow max rate */
-
-       TCA_FQ_BUCKETS_LOG,     /* log2(number of buckets) */
-
-       TCA_FQ_FLOW_REFILL_DELAY,       /* flow credit refill delay in usec */
-
-       TCA_FQ_ORPHAN_MASK,     /* mask applied to orphaned skb hashes */
-
-       TCA_FQ_LOW_RATE_THRESHOLD, /* per packet delay under this rate */
-
-       __TCA_FQ_MAX
-};
-
-#define TCA_FQ_MAX     (__TCA_FQ_MAX - 1)
-
-struct tc_fq_qd_stats {
-       __u64   gc_flows;
-       __u64   highprio_packets;
-       __u64   tcp_retrans;
-       __u64   throttled;
-       __u64   flows_plimit;
-       __u64   pkts_too_long;
-       __u64   allocation_errors;
-       __s64   time_next_delayed_flow;
-       __u32   flows;
-       __u32   inactive_flows;
-       __u32   throttled_flows;
-       __u32   unthrottle_latency_ns;
-};
-
-/* Heavy-Hitter Filter */
-
-enum {
-       TCA_HHF_UNSPEC,
-       TCA_HHF_BACKLOG_LIMIT,
-       TCA_HHF_QUANTUM,
-       TCA_HHF_HH_FLOWS_LIMIT,
-       TCA_HHF_RESET_TIMEOUT,
-       TCA_HHF_ADMIT_BYTES,
-       TCA_HHF_EVICT_TIMEOUT,
-       TCA_HHF_NON_HH_WEIGHT,
-       __TCA_HHF_MAX
-};
-
-#define TCA_HHF_MAX    (__TCA_HHF_MAX - 1)
-
-struct tc_hhf_xstats {
-       __u32   drop_overlimit; /* number of times max qdisc packet limit
-                                * was hit
-                                */
-       __u32   hh_overlimit;   /* number of times max heavy-hitters was hit */
-       __u32   hh_tot_count;   /* number of captured heavy-hitters so far */
-       __u32   hh_cur_count;   /* number of current heavy-hitters */
-};
-
-/* PIE */
-enum {
-       TCA_PIE_UNSPEC,
-       TCA_PIE_TARGET,
-       TCA_PIE_LIMIT,
-       TCA_PIE_TUPDATE,
-       TCA_PIE_ALPHA,
-       TCA_PIE_BETA,
-       TCA_PIE_ECN,
-       TCA_PIE_BYTEMODE,
-       __TCA_PIE_MAX
-};
-#define TCA_PIE_MAX   (__TCA_PIE_MAX - 1)
-
-struct tc_pie_xstats {
-       __u32 prob;             /* current probability */
-       __u32 delay;            /* current delay in ms */
-       __u32 avg_dq_rate;      /* current average dq_rate in bits/pie_time */
-       __u32 packets_in;       /* total number of packets enqueued */
-       __u32 dropped;          /* packets dropped due to pie_action */
-       __u32 overlimit;        /* dropped due to lack of space in queue */
-       __u32 maxq;             /* maximum queue size */
-       __u32 ecn_mark;         /* packets marked with ecn*/
-};
-#endif
diff --git a/include/linux/posix_types.h b/include/linux/posix_types.h
deleted file mode 100644 (file)
index 988f76e..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-#ifndef _LINUX_POSIX_TYPES_H
-#define _LINUX_POSIX_TYPES_H
-
-#include <linux/stddef.h>
-
-/*
- * This allows for 1024 file descriptors: if NR_OPEN is ever grown
- * beyond that you'll have to change this too. But 1024 fd's seem to be
- * enough even for such "real" unices like OSF/1, so hopefully this is
- * one limit that doesn't have to be changed [again].
- *
- * Note that POSIX wants the FD_CLEAR(fd,fdsetp) defines to be in
- * <sys/time.h> (and thus <linux/time.h>) - but this is a more logical
- * place for them. Solved by having dummy defines in <sys/time.h>.
- */
-
-/*
- * This macro may have been defined in <gnu/types.h>. But we always
- * use the one here.
- */
-#undef __FD_SETSIZE
-#define __FD_SETSIZE   1024
-
-typedef struct {
-       unsigned long fds_bits[__FD_SETSIZE / (8 * sizeof(long))];
-} __kernel_fd_set;
-
-/* Type of a signal handler.  */
-typedef void (*__kernel_sighandler_t)(int);
-
-/* Type of a SYSV IPC key.  */
-typedef int __kernel_key_t;
-typedef int __kernel_mqd_t;
-
-#include <asm/posix_types.h>
-
-#endif /* _LINUX_POSIX_TYPES_H */
diff --git a/include/linux/rtnetlink.h b/include/linux/rtnetlink.h
deleted file mode 100644 (file)
index 813e9e0..0000000
+++ /dev/null
@@ -1,718 +0,0 @@
-#ifndef __LINUX_RTNETLINK_H
-#define __LINUX_RTNETLINK_H
-
-#include <linux/types.h>
-#include <linux/netlink.h>
-#include <linux/if_link.h>
-#include <linux/if_addr.h>
-#include <linux/neighbour.h>
-
-/* rtnetlink families. Values up to 127 are reserved for real address
- * families, values above 128 may be used arbitrarily.
- */
-#define RTNL_FAMILY_IPMR               128
-#define RTNL_FAMILY_IP6MR              129
-#define RTNL_FAMILY_MAX                        129
-
-/****
- *             Routing/neighbour discovery messages.
- ****/
-
-/* Types of messages */
-
-enum {
-       RTM_BASE        = 16,
-#define RTM_BASE       RTM_BASE
-
-       RTM_NEWLINK     = 16,
-#define RTM_NEWLINK    RTM_NEWLINK
-       RTM_DELLINK,
-#define RTM_DELLINK    RTM_DELLINK
-       RTM_GETLINK,
-#define RTM_GETLINK    RTM_GETLINK
-       RTM_SETLINK,
-#define RTM_SETLINK    RTM_SETLINK
-
-       RTM_NEWADDR     = 20,
-#define RTM_NEWADDR    RTM_NEWADDR
-       RTM_DELADDR,
-#define RTM_DELADDR    RTM_DELADDR
-       RTM_GETADDR,
-#define RTM_GETADDR    RTM_GETADDR
-
-       RTM_NEWROUTE    = 24,
-#define RTM_NEWROUTE   RTM_NEWROUTE
-       RTM_DELROUTE,
-#define RTM_DELROUTE   RTM_DELROUTE
-       RTM_GETROUTE,
-#define RTM_GETROUTE   RTM_GETROUTE
-
-       RTM_NEWNEIGH    = 28,
-#define RTM_NEWNEIGH   RTM_NEWNEIGH
-       RTM_DELNEIGH,
-#define RTM_DELNEIGH   RTM_DELNEIGH
-       RTM_GETNEIGH,
-#define RTM_GETNEIGH   RTM_GETNEIGH
-
-       RTM_NEWRULE     = 32,
-#define RTM_NEWRULE    RTM_NEWRULE
-       RTM_DELRULE,
-#define RTM_DELRULE    RTM_DELRULE
-       RTM_GETRULE,
-#define RTM_GETRULE    RTM_GETRULE
-
-       RTM_NEWQDISC    = 36,
-#define RTM_NEWQDISC   RTM_NEWQDISC
-       RTM_DELQDISC,
-#define RTM_DELQDISC   RTM_DELQDISC
-       RTM_GETQDISC,
-#define RTM_GETQDISC   RTM_GETQDISC
-
-       RTM_NEWTCLASS   = 40,
-#define RTM_NEWTCLASS  RTM_NEWTCLASS
-       RTM_DELTCLASS,
-#define RTM_DELTCLASS  RTM_DELTCLASS
-       RTM_GETTCLASS,
-#define RTM_GETTCLASS  RTM_GETTCLASS
-
-       RTM_NEWTFILTER  = 44,
-#define RTM_NEWTFILTER RTM_NEWTFILTER
-       RTM_DELTFILTER,
-#define RTM_DELTFILTER RTM_DELTFILTER
-       RTM_GETTFILTER,
-#define RTM_GETTFILTER RTM_GETTFILTER
-
-       RTM_NEWACTION   = 48,
-#define RTM_NEWACTION   RTM_NEWACTION
-       RTM_DELACTION,
-#define RTM_DELACTION   RTM_DELACTION
-       RTM_GETACTION,
-#define RTM_GETACTION   RTM_GETACTION
-
-       RTM_NEWPREFIX   = 52,
-#define RTM_NEWPREFIX  RTM_NEWPREFIX
-
-       RTM_GETMULTICAST = 58,
-#define RTM_GETMULTICAST RTM_GETMULTICAST
-
-       RTM_GETANYCAST  = 62,
-#define RTM_GETANYCAST RTM_GETANYCAST
-
-       RTM_NEWNEIGHTBL = 64,
-#define RTM_NEWNEIGHTBL        RTM_NEWNEIGHTBL
-       RTM_GETNEIGHTBL = 66,
-#define RTM_GETNEIGHTBL        RTM_GETNEIGHTBL
-       RTM_SETNEIGHTBL,
-#define RTM_SETNEIGHTBL        RTM_SETNEIGHTBL
-
-       RTM_NEWNDUSEROPT = 68,
-#define RTM_NEWNDUSEROPT RTM_NEWNDUSEROPT
-
-       RTM_NEWADDRLABEL = 72,
-#define RTM_NEWADDRLABEL RTM_NEWADDRLABEL
-       RTM_DELADDRLABEL,
-#define RTM_DELADDRLABEL RTM_DELADDRLABEL
-       RTM_GETADDRLABEL,
-#define RTM_GETADDRLABEL RTM_GETADDRLABEL
-
-       RTM_GETDCB = 78,
-#define RTM_GETDCB RTM_GETDCB
-       RTM_SETDCB,
-#define RTM_SETDCB RTM_SETDCB
-
-       RTM_NEWNETCONF = 80,
-#define RTM_NEWNETCONF RTM_NEWNETCONF
-       RTM_DELNETCONF,
-#define RTM_DELNETCONF RTM_DELNETCONF
-       RTM_GETNETCONF = 82,
-#define RTM_GETNETCONF RTM_GETNETCONF
-
-       RTM_NEWMDB = 84,
-#define RTM_NEWMDB RTM_NEWMDB
-       RTM_DELMDB = 85,
-#define RTM_DELMDB RTM_DELMDB
-       RTM_GETMDB = 86,
-#define RTM_GETMDB RTM_GETMDB
-
-       RTM_NEWNSID = 88,
-#define RTM_NEWNSID RTM_NEWNSID
-       RTM_DELNSID = 89,
-#define RTM_DELNSID RTM_DELNSID
-       RTM_GETNSID = 90,
-#define RTM_GETNSID RTM_GETNSID
-
-       RTM_NEWSTATS = 92,
-#define RTM_NEWSTATS RTM_NEWSTATS
-       RTM_GETSTATS = 94,
-#define RTM_GETSTATS RTM_GETSTATS
-
-       RTM_NEWCACHEREPORT = 96,
-#define RTM_NEWCACHEREPORT RTM_NEWCACHEREPORT
-
-       __RTM_MAX,
-#define RTM_MAX                (((__RTM_MAX + 3) & ~3) - 1)
-};
-
-#define RTM_NR_MSGTYPES        (RTM_MAX + 1 - RTM_BASE)
-#define RTM_NR_FAMILIES        (RTM_NR_MSGTYPES >> 2)
-#define RTM_FAM(cmd)   (((cmd) - RTM_BASE) >> 2)
-
-/* 
-   Generic structure for encapsulation of optional route information.
-   It is reminiscent of sockaddr, but with sa_family replaced
-   with attribute type.
- */
-
-struct rtattr {
-       unsigned short  rta_len;
-       unsigned short  rta_type;
-};
-
-/* Macros to handle rtattributes */
-
-#define RTA_ALIGNTO    4U
-#define RTA_ALIGN(len) ( ((len)+RTA_ALIGNTO-1) & ~(RTA_ALIGNTO-1) )
-#define RTA_OK(rta,len) ((len) >= (int)sizeof(struct rtattr) && \
-                        (rta)->rta_len >= sizeof(struct rtattr) && \
-                        (rta)->rta_len <= (len))
-#define RTA_NEXT(rta,attrlen)  ((attrlen) -= RTA_ALIGN((rta)->rta_len), \
-                                (struct rtattr*)(((char*)(rta)) + RTA_ALIGN((rta)->rta_len)))
-#define RTA_LENGTH(len)        (RTA_ALIGN(sizeof(struct rtattr)) + (len))
-#define RTA_SPACE(len) RTA_ALIGN(RTA_LENGTH(len))
-#define RTA_DATA(rta)   ((void*)(((char*)(rta)) + RTA_LENGTH(0)))
-#define RTA_PAYLOAD(rta) ((int)((rta)->rta_len) - RTA_LENGTH(0))
-
-
-
-
-/******************************************************************************
- *             Definitions used in routing table administration.
- ****/
-
-struct rtmsg {
-       unsigned char           rtm_family;
-       unsigned char           rtm_dst_len;
-       unsigned char           rtm_src_len;
-       unsigned char           rtm_tos;
-
-       unsigned char           rtm_table;      /* Routing table id */
-       unsigned char           rtm_protocol;   /* Routing protocol; see below  */
-       unsigned char           rtm_scope;      /* See below */ 
-       unsigned char           rtm_type;       /* See below    */
-
-       unsigned                rtm_flags;
-};
-
-/* rtm_type */
-
-enum {
-       RTN_UNSPEC,
-       RTN_UNICAST,            /* Gateway or direct route      */
-       RTN_LOCAL,              /* Accept locally               */
-       RTN_BROADCAST,          /* Accept locally as broadcast,
-                                  send as broadcast */
-       RTN_ANYCAST,            /* Accept locally as broadcast,
-                                  but send as unicast */
-       RTN_MULTICAST,          /* Multicast route              */
-       RTN_BLACKHOLE,          /* Drop                         */
-       RTN_UNREACHABLE,        /* Destination is unreachable   */
-       RTN_PROHIBIT,           /* Administratively prohibited  */
-       RTN_THROW,              /* Not in this table            */
-       RTN_NAT,                /* Translate this address       */
-       RTN_XRESOLVE,           /* Use external resolver        */
-       __RTN_MAX
-};
-
-#define RTN_MAX (__RTN_MAX - 1)
-
-
-/* rtm_protocol */
-
-#define RTPROT_UNSPEC  0
-#define RTPROT_REDIRECT        1       /* Route installed by ICMP redirects;
-                                  not used by current IPv4 */
-#define RTPROT_KERNEL  2       /* Route installed by kernel            */
-#define RTPROT_BOOT    3       /* Route installed during boot          */
-#define RTPROT_STATIC  4       /* Route installed by administrator     */
-
-/* Values of protocol >= RTPROT_STATIC are not interpreted by kernel;
-   they are just passed from user and back as is.
-   It will be used by hypothetical multiple routing daemons.
-   Note that protocol values should be standardized in order to
-   avoid conflicts.
- */
-
-#define RTPROT_GATED   8       /* Apparently, GateD */
-#define RTPROT_RA      9       /* RDISC/ND router advertisements */
-#define RTPROT_MRT     10      /* Merit MRT */
-#define RTPROT_ZEBRA   11      /* Zebra */
-#define RTPROT_BIRD    12      /* BIRD */
-#define RTPROT_DNROUTED        13      /* DECnet routing daemon */
-#define RTPROT_XORP    14      /* XORP */
-#define RTPROT_NTK     15      /* Netsukuku */
-#define RTPROT_DHCP    16      /* DHCP client */
-#define RTPROT_MROUTED 17      /* Multicast daemon */
-#define RTPROT_BABEL   42      /* Babel daemon */
-
-/* rtm_scope
-
-   Really it is not scope, but sort of distance to the destination.
-   NOWHERE are reserved for not existing destinations, HOST is our
-   local addresses, LINK are destinations, located on directly attached
-   link and UNIVERSE is everywhere in the Universe.
-
-   Intermediate values are also possible f.e. interior routes
-   could be assigned a value between UNIVERSE and LINK.
-*/
-
-enum rt_scope_t {
-       RT_SCOPE_UNIVERSE=0,
-/* User defined values  */
-       RT_SCOPE_SITE=200,
-       RT_SCOPE_LINK=253,
-       RT_SCOPE_HOST=254,
-       RT_SCOPE_NOWHERE=255
-};
-
-/* rtm_flags */
-
-#define RTM_F_NOTIFY           0x100   /* Notify user of route change  */
-#define RTM_F_CLONED           0x200   /* This route is cloned         */
-#define RTM_F_EQUALIZE         0x400   /* Multipath equalizer: NI      */
-#define RTM_F_PREFIX           0x800   /* Prefix addresses             */
-#define RTM_F_LOOKUP_TABLE     0x1000  /* set rtm_table to FIB lookup result */
-#define RTM_F_FIB_MATCH                0x2000  /* return full fib lookup match */
-
-/* Reserved table identifiers */
-
-enum rt_class_t {
-       RT_TABLE_UNSPEC=0,
-/* User defined values */
-       RT_TABLE_COMPAT=252,
-       RT_TABLE_DEFAULT=253,
-       RT_TABLE_MAIN=254,
-       RT_TABLE_LOCAL=255,
-       RT_TABLE_MAX=0xFFFFFFFF
-};
-
-
-/* Routing message attributes */
-
-enum rtattr_type_t {
-       RTA_UNSPEC,
-       RTA_DST,
-       RTA_SRC,
-       RTA_IIF,
-       RTA_OIF,
-       RTA_GATEWAY,
-       RTA_PRIORITY,
-       RTA_PREFSRC,
-       RTA_METRICS,
-       RTA_MULTIPATH,
-       RTA_PROTOINFO, /* no longer used */
-       RTA_FLOW,
-       RTA_CACHEINFO,
-       RTA_SESSION, /* no longer used */
-       RTA_MP_ALGO, /* no longer used */
-       RTA_TABLE,
-       RTA_MARK,
-       RTA_MFC_STATS,
-       RTA_VIA,
-       RTA_NEWDST,
-       RTA_PREF,
-       RTA_ENCAP_TYPE,
-       RTA_ENCAP,
-       RTA_EXPIRES,
-       RTA_PAD,
-       RTA_UID,
-       RTA_TTL_PROPAGATE,
-       __RTA_MAX
-};
-
-#define RTA_MAX (__RTA_MAX - 1)
-
-#define RTM_RTA(r)  ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct rtmsg))))
-#define RTM_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct rtmsg))
-
-/* RTM_MULTIPATH --- array of struct rtnexthop.
- *
- * "struct rtnexthop" describes all necessary nexthop information,
- * i.e. parameters of path to a destination via this nexthop.
- *
- * At the moment it is impossible to set different prefsrc, mtu, window
- * and rtt for different paths from multipath.
- */
-
-struct rtnexthop {
-       unsigned short          rtnh_len;
-       unsigned char           rtnh_flags;
-       unsigned char           rtnh_hops;
-       int                     rtnh_ifindex;
-};
-
-/* rtnh_flags */
-
-#define RTNH_F_DEAD            1       /* Nexthop is dead (used by multipath)  */
-#define RTNH_F_PERVASIVE       2       /* Do recursive gateway lookup  */
-#define RTNH_F_ONLINK          4       /* Gateway is forced on link    */
-#define RTNH_F_OFFLOAD         8       /* offloaded route */
-#define RTNH_F_LINKDOWN                16      /* carrier-down on nexthop */
-#define RTNH_F_UNRESOLVED      32      /* The entry is unresolved (ipmr) */
-
-#define RTNH_COMPARE_MASK      (RTNH_F_DEAD | RTNH_F_LINKDOWN | RTNH_F_OFFLOAD)
-
-/* Macros to handle hexthops */
-
-#define RTNH_ALIGNTO   4
-#define RTNH_ALIGN(len) ( ((len)+RTNH_ALIGNTO-1) & ~(RTNH_ALIGNTO-1) )
-#define RTNH_OK(rtnh,len) ((rtnh)->rtnh_len >= sizeof(struct rtnexthop) && \
-                          ((int)(rtnh)->rtnh_len) <= (len))
-#define RTNH_NEXT(rtnh)        ((struct rtnexthop*)(((char*)(rtnh)) + RTNH_ALIGN((rtnh)->rtnh_len)))
-#define RTNH_LENGTH(len) (RTNH_ALIGN(sizeof(struct rtnexthop)) + (len))
-#define RTNH_SPACE(len)        RTNH_ALIGN(RTNH_LENGTH(len))
-#define RTNH_DATA(rtnh)   ((struct rtattr*)(((char*)(rtnh)) + RTNH_LENGTH(0)))
-
-/* RTA_VIA */
-struct rtvia {
-       __kernel_sa_family_t    rtvia_family;
-       __u8                    rtvia_addr[0];
-};
-
-/* RTM_CACHEINFO */
-
-struct rta_cacheinfo {
-       __u32   rta_clntref;
-       __u32   rta_lastuse;
-       __s32   rta_expires;
-       __u32   rta_error;
-       __u32   rta_used;
-
-#define RTNETLINK_HAVE_PEERINFO 1
-       __u32   rta_id;
-       __u32   rta_ts;
-       __u32   rta_tsage;
-};
-
-/* RTM_METRICS --- array of struct rtattr with types of RTAX_* */
-
-enum {
-       RTAX_UNSPEC,
-#define RTAX_UNSPEC RTAX_UNSPEC
-       RTAX_LOCK,
-#define RTAX_LOCK RTAX_LOCK
-       RTAX_MTU,
-#define RTAX_MTU RTAX_MTU
-       RTAX_WINDOW,
-#define RTAX_WINDOW RTAX_WINDOW
-       RTAX_RTT,
-#define RTAX_RTT RTAX_RTT
-       RTAX_RTTVAR,
-#define RTAX_RTTVAR RTAX_RTTVAR
-       RTAX_SSTHRESH,
-#define RTAX_SSTHRESH RTAX_SSTHRESH
-       RTAX_CWND,
-#define RTAX_CWND RTAX_CWND
-       RTAX_ADVMSS,
-#define RTAX_ADVMSS RTAX_ADVMSS
-       RTAX_REORDERING,
-#define RTAX_REORDERING RTAX_REORDERING
-       RTAX_HOPLIMIT,
-#define RTAX_HOPLIMIT RTAX_HOPLIMIT
-       RTAX_INITCWND,
-#define RTAX_INITCWND RTAX_INITCWND
-       RTAX_FEATURES,
-#define RTAX_FEATURES RTAX_FEATURES
-       RTAX_RTO_MIN,
-#define RTAX_RTO_MIN RTAX_RTO_MIN
-       RTAX_INITRWND,
-#define RTAX_INITRWND RTAX_INITRWND
-       RTAX_QUICKACK,
-#define RTAX_QUICKACK RTAX_QUICKACK
-       RTAX_CC_ALGO,
-#define RTAX_CC_ALGO RTAX_CC_ALGO
-       __RTAX_MAX
-};
-
-#define RTAX_MAX (__RTAX_MAX - 1)
-
-#define RTAX_FEATURE_ECN       (1 << 0)
-#define RTAX_FEATURE_SACK      (1 << 1)
-#define RTAX_FEATURE_TIMESTAMP (1 << 2)
-#define RTAX_FEATURE_ALLFRAG   (1 << 3)
-
-#define RTAX_FEATURE_MASK      (RTAX_FEATURE_ECN | RTAX_FEATURE_SACK | \
-                                RTAX_FEATURE_TIMESTAMP | RTAX_FEATURE_ALLFRAG)
-
-struct rta_session {
-       __u8    proto;
-       __u8    pad1;
-       __u16   pad2;
-
-       union {
-               struct {
-                       __u16   sport;
-                       __u16   dport;
-               } ports;
-
-               struct {
-                       __u8    type;
-                       __u8    code;
-                       __u16   ident;
-               } icmpt;
-
-               __u32           spi;
-       } u;
-};
-
-struct rta_mfc_stats {
-       __u64   mfcs_packets;
-       __u64   mfcs_bytes;
-       __u64   mfcs_wrong_if;
-};
-
-/****
- *             General form of address family dependent message.
- ****/
-
-struct rtgenmsg {
-       unsigned char           rtgen_family;
-};
-
-/*****************************************************************
- *             Link layer specific messages.
- ****/
-
-/* struct ifinfomsg
- * passes link level specific information, not dependent
- * on network protocol.
- */
-
-struct ifinfomsg {
-       unsigned char   ifi_family;
-       unsigned char   __ifi_pad;
-       unsigned short  ifi_type;               /* ARPHRD_* */
-       int             ifi_index;              /* Link index   */
-       unsigned        ifi_flags;              /* IFF_* flags  */
-       unsigned        ifi_change;             /* IFF_* change mask */
-};
-
-/********************************************************************
- *             prefix information 
- ****/
-
-struct prefixmsg {
-       unsigned char   prefix_family;
-       unsigned char   prefix_pad1;
-       unsigned short  prefix_pad2;
-       int             prefix_ifindex;
-       unsigned char   prefix_type;
-       unsigned char   prefix_len;
-       unsigned char   prefix_flags;
-       unsigned char   prefix_pad3;
-};
-
-enum 
-{
-       PREFIX_UNSPEC,
-       PREFIX_ADDRESS,
-       PREFIX_CACHEINFO,
-       __PREFIX_MAX
-};
-
-#define PREFIX_MAX     (__PREFIX_MAX - 1)
-
-struct prefix_cacheinfo {
-       __u32   preferred_time;
-       __u32   valid_time;
-};
-
-
-/*****************************************************************
- *             Traffic control messages.
- ****/
-
-struct tcmsg {
-       unsigned char   tcm_family;
-       unsigned char   tcm__pad1;
-       unsigned short  tcm__pad2;
-       int             tcm_ifindex;
-       __u32           tcm_handle;
-       __u32           tcm_parent;
-       __u32           tcm_info;
-};
-
-enum {
-       TCA_UNSPEC,
-       TCA_KIND,
-       TCA_OPTIONS,
-       TCA_STATS,
-       TCA_XSTATS,
-       TCA_RATE,
-       TCA_FCNT,
-       TCA_STATS2,
-       TCA_STAB,
-       TCA_PAD,
-       TCA_DUMP_INVISIBLE,
-       TCA_CHAIN,
-       __TCA_MAX
-};
-
-#define TCA_MAX (__TCA_MAX - 1)
-
-#define TCA_RTA(r)  ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct tcmsg))))
-#define TCA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct tcmsg))
-
-/********************************************************************
- *             Neighbor Discovery userland options
- ****/
-
-struct nduseroptmsg {
-       unsigned char   nduseropt_family;
-       unsigned char   nduseropt_pad1;
-       unsigned short  nduseropt_opts_len;     /* Total length of options */
-       int             nduseropt_ifindex;
-       __u8            nduseropt_icmp_type;
-       __u8            nduseropt_icmp_code;
-       unsigned short  nduseropt_pad2;
-       unsigned int    nduseropt_pad3;
-       /* Followed by one or more ND options */
-};
-
-enum {
-       NDUSEROPT_UNSPEC,
-       NDUSEROPT_SRCADDR,
-       __NDUSEROPT_MAX
-};
-
-#define NDUSEROPT_MAX  (__NDUSEROPT_MAX - 1)
-
-/* RTnetlink multicast groups - backwards compatibility for userspace */
-#define RTMGRP_LINK            1
-#define RTMGRP_NOTIFY          2
-#define RTMGRP_NEIGH           4
-#define RTMGRP_TC              8
-
-#define RTMGRP_IPV4_IFADDR     0x10
-#define RTMGRP_IPV4_MROUTE     0x20
-#define RTMGRP_IPV4_ROUTE      0x40
-#define RTMGRP_IPV4_RULE       0x80
-
-#define RTMGRP_IPV6_IFADDR     0x100
-#define RTMGRP_IPV6_MROUTE     0x200
-#define RTMGRP_IPV6_ROUTE      0x400
-#define RTMGRP_IPV6_IFINFO     0x800
-
-#define RTMGRP_DECnet_IFADDR    0x1000
-#define RTMGRP_DECnet_ROUTE     0x4000
-
-#define RTMGRP_IPV6_PREFIX     0x20000
-
-/* RTnetlink multicast groups */
-enum rtnetlink_groups {
-       RTNLGRP_NONE,
-#define RTNLGRP_NONE           RTNLGRP_NONE
-       RTNLGRP_LINK,
-#define RTNLGRP_LINK           RTNLGRP_LINK
-       RTNLGRP_NOTIFY,
-#define RTNLGRP_NOTIFY         RTNLGRP_NOTIFY
-       RTNLGRP_NEIGH,
-#define RTNLGRP_NEIGH          RTNLGRP_NEIGH
-       RTNLGRP_TC,
-#define RTNLGRP_TC             RTNLGRP_TC
-       RTNLGRP_IPV4_IFADDR,
-#define RTNLGRP_IPV4_IFADDR    RTNLGRP_IPV4_IFADDR
-       RTNLGRP_IPV4_MROUTE,
-#define        RTNLGRP_IPV4_MROUTE     RTNLGRP_IPV4_MROUTE
-       RTNLGRP_IPV4_ROUTE,
-#define RTNLGRP_IPV4_ROUTE     RTNLGRP_IPV4_ROUTE
-       RTNLGRP_IPV4_RULE,
-#define RTNLGRP_IPV4_RULE      RTNLGRP_IPV4_RULE
-       RTNLGRP_IPV6_IFADDR,
-#define RTNLGRP_IPV6_IFADDR    RTNLGRP_IPV6_IFADDR
-       RTNLGRP_IPV6_MROUTE,
-#define RTNLGRP_IPV6_MROUTE    RTNLGRP_IPV6_MROUTE
-       RTNLGRP_IPV6_ROUTE,
-#define RTNLGRP_IPV6_ROUTE     RTNLGRP_IPV6_ROUTE
-       RTNLGRP_IPV6_IFINFO,
-#define RTNLGRP_IPV6_IFINFO    RTNLGRP_IPV6_IFINFO
-       RTNLGRP_DECnet_IFADDR,
-#define RTNLGRP_DECnet_IFADDR  RTNLGRP_DECnet_IFADDR
-       RTNLGRP_NOP2,
-       RTNLGRP_DECnet_ROUTE,
-#define RTNLGRP_DECnet_ROUTE   RTNLGRP_DECnet_ROUTE
-       RTNLGRP_DECnet_RULE,
-#define RTNLGRP_DECnet_RULE    RTNLGRP_DECnet_RULE
-       RTNLGRP_NOP4,
-       RTNLGRP_IPV6_PREFIX,
-#define RTNLGRP_IPV6_PREFIX    RTNLGRP_IPV6_PREFIX
-       RTNLGRP_IPV6_RULE,
-#define RTNLGRP_IPV6_RULE      RTNLGRP_IPV6_RULE
-       RTNLGRP_ND_USEROPT,
-#define RTNLGRP_ND_USEROPT     RTNLGRP_ND_USEROPT
-       RTNLGRP_PHONET_IFADDR,
-#define RTNLGRP_PHONET_IFADDR  RTNLGRP_PHONET_IFADDR
-       RTNLGRP_PHONET_ROUTE,
-#define RTNLGRP_PHONET_ROUTE   RTNLGRP_PHONET_ROUTE
-       RTNLGRP_DCB,
-#define RTNLGRP_DCB            RTNLGRP_DCB
-       RTNLGRP_IPV4_NETCONF,
-#define RTNLGRP_IPV4_NETCONF   RTNLGRP_IPV4_NETCONF
-       RTNLGRP_IPV6_NETCONF,
-#define RTNLGRP_IPV6_NETCONF   RTNLGRP_IPV6_NETCONF
-       RTNLGRP_MDB,
-#define RTNLGRP_MDB            RTNLGRP_MDB
-       RTNLGRP_MPLS_ROUTE,
-#define RTNLGRP_MPLS_ROUTE     RTNLGRP_MPLS_ROUTE
-       RTNLGRP_NSID,
-#define RTNLGRP_NSID           RTNLGRP_NSID
-       RTNLGRP_MPLS_NETCONF,
-#define RTNLGRP_MPLS_NETCONF   RTNLGRP_MPLS_NETCONF
-       RTNLGRP_IPV4_MROUTE_R,
-#define RTNLGRP_IPV4_MROUTE_R  RTNLGRP_IPV4_MROUTE_R
-       RTNLGRP_IPV6_MROUTE_R,
-#define RTNLGRP_IPV6_MROUTE_R  RTNLGRP_IPV6_MROUTE_R
-       __RTNLGRP_MAX
-};
-#define RTNLGRP_MAX    (__RTNLGRP_MAX - 1)
-
-/* TC action piece */
-struct tcamsg {
-       unsigned char   tca_family;
-       unsigned char   tca__pad1;
-       unsigned short  tca__pad2;
-};
-
-enum {
-       TCA_ROOT_UNSPEC,
-       TCA_ROOT_TAB,
-#define TCA_ACT_TAB TCA_ROOT_TAB
-#define TCAA_MAX TCA_ROOT_TAB
-       TCA_ROOT_FLAGS,
-       TCA_ROOT_COUNT,
-       TCA_ROOT_TIME_DELTA, /* in msecs */
-       __TCA_ROOT_MAX,
-#define        TCA_ROOT_MAX (__TCA_ROOT_MAX - 1)
-};
-
-#define TA_RTA(r)  ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct tcamsg))))
-#define TA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct tcamsg))
-/* tcamsg flags stored in attribute TCA_ROOT_FLAGS
- *
- * TCA_FLAG_LARGE_DUMP_ON user->kernel to request for larger than TCA_ACT_MAX_PRIO
- * actions in a dump. All dump responses will contain the number of actions
- * being dumped stored in for user app's consumption in TCA_ROOT_COUNT
- *
- */
-#define TCA_FLAG_LARGE_DUMP_ON         (1 << 0)
-
-/* New extended info filters for IFLA_EXT_MASK */
-#define RTEXT_FILTER_VF                (1 << 0)
-#define RTEXT_FILTER_BRVLAN    (1 << 1)
-#define RTEXT_FILTER_BRVLAN_COMPRESSED (1 << 2)
-#define        RTEXT_FILTER_SKIP_STATS (1 << 3)
-
-/* End of information exported to user level */
-
-
-
-#endif /* __LINUX_RTNETLINK_H */
diff --git a/include/linux/sctp.h b/include/linux/sctp.h
deleted file mode 100644 (file)
index fec24c4..0000000
+++ /dev/null
@@ -1,1085 +0,0 @@
-/* SCTP kernel implementation
- * (C) Copyright IBM Corp. 2001, 2004
- * Copyright (c) 1999-2000 Cisco, Inc.
- * Copyright (c) 1999-2001 Motorola, Inc.
- * Copyright (c) 2002 Intel Corp.
- *
- * This file is part of the SCTP kernel implementation
- *
- * This header represents the structures and constants needed to support
- * the SCTP Extension to the Sockets API.
- *
- * This SCTP implementation is free software;
- * you can redistribute it and/or modify it under the terms of
- * the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * This SCTP implementation is distributed in the hope that it
- * will be useful, but WITHOUT ANY WARRANTY; without even the implied
- *                 ************************
- * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- * See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU CC; see the file COPYING.  If not, see
- * <http://www.gnu.org/licenses/>.
- *
- * Please send any bug reports or fixes you make to the
- * email address(es):
- *    lksctp developers <linux-sctp@vger.kernel.org>
- *
- * Or submit a bug report through the following website:
- *    http://www.sf.net/projects/lksctp
- *
- * Written or modified by:
- *    La Monte H.P. Yarroll    <piggy@acm.org>
- *    R. Stewart               <randall@sctp.chicago.il.us>
- *    K. Morneau               <kmorneau@cisco.com>
- *    Q. Xie                   <qxie1@email.mot.com>
- *    Karl Knutson             <karl@athena.chicago.il.us>
- *    Jon Grimm                <jgrimm@us.ibm.com>
- *    Daisy Chang              <daisyc@us.ibm.com>
- *    Ryan Layer               <rmlayer@us.ibm.com>
- *    Ardelle Fan              <ardelle.fan@intel.com>
- *    Sridhar Samudrala        <sri@us.ibm.com>
- *    Inaky Perez-Gonzalez     <inaky.gonzalez@intel.com>
- *    Vlad Yasevich            <vladislav.yasevich@hp.com>
- *
- * Any bugs reported given to us we will try to fix... any fixes shared will
- * be incorporated into the next SCTP release.
- */
-
-#ifndef _SCTP_H
-#define _SCTP_H
-
-#include <linux/types.h>
-#include <linux/socket.h>
-
-typedef __s32 sctp_assoc_t;
-
-/* The following symbols come from the Sockets API Extensions for
- * SCTP <draft-ietf-tsvwg-sctpsocket-07.txt>.
- */
-#define SCTP_RTOINFO   0
-#define SCTP_ASSOCINFO  1
-#define SCTP_INITMSG   2
-#define SCTP_NODELAY   3               /* Get/set nodelay option. */
-#define SCTP_AUTOCLOSE 4
-#define SCTP_SET_PEER_PRIMARY_ADDR 5
-#define SCTP_PRIMARY_ADDR      6
-#define SCTP_ADAPTATION_LAYER  7
-#define SCTP_DISABLE_FRAGMENTS 8
-#define SCTP_PEER_ADDR_PARAMS  9
-#define SCTP_DEFAULT_SEND_PARAM        10
-#define SCTP_EVENTS    11
-#define SCTP_I_WANT_MAPPED_V4_ADDR 12  /* Turn on/off mapped v4 addresses  */
-#define SCTP_MAXSEG    13              /* Get/set maximum fragment. */
-#define SCTP_STATUS    14
-#define SCTP_GET_PEER_ADDR_INFO        15
-#define SCTP_DELAYED_ACK_TIME  16
-#define SCTP_DELAYED_ACK SCTP_DELAYED_ACK_TIME
-#define SCTP_DELAYED_SACK SCTP_DELAYED_ACK_TIME
-#define SCTP_CONTEXT   17
-#define SCTP_FRAGMENT_INTERLEAVE       18
-#define SCTP_PARTIAL_DELIVERY_POINT    19 /* Set/Get partial delivery point */
-#define SCTP_MAX_BURST 20              /* Set/Get max burst */
-#define SCTP_AUTH_CHUNK        21      /* Set only: add a chunk type to authenticate */
-#define SCTP_HMAC_IDENT        22
-#define SCTP_AUTH_KEY  23
-#define SCTP_AUTH_ACTIVE_KEY   24
-#define SCTP_AUTH_DELETE_KEY   25
-#define SCTP_PEER_AUTH_CHUNKS  26      /* Read only */
-#define SCTP_LOCAL_AUTH_CHUNKS 27      /* Read only */
-#define SCTP_GET_ASSOC_NUMBER  28      /* Read only */
-#define SCTP_GET_ASSOC_ID_LIST 29      /* Read only */
-#define SCTP_AUTO_ASCONF       30
-#define SCTP_PEER_ADDR_THLDS   31
-#define SCTP_RECVRCVINFO       32
-#define SCTP_RECVNXTINFO       33
-#define SCTP_DEFAULT_SNDINFO   34
-
-/* Internal Socket Options. Some of the sctp library functions are
- * implemented using these socket options.
- */
-#define SCTP_SOCKOPT_BINDX_ADD 100     /* BINDX requests for adding addrs */
-#define SCTP_SOCKOPT_BINDX_REM 101     /* BINDX requests for removing addrs. */
-#define SCTP_SOCKOPT_PEELOFF   102     /* peel off association. */
-/* Options 104-106 are deprecated and removed. Do not use this space */
-#define SCTP_SOCKOPT_CONNECTX_OLD      107     /* CONNECTX old requests. */
-#define SCTP_GET_PEER_ADDRS    108             /* Get all peer address. */
-#define SCTP_GET_LOCAL_ADDRS   109             /* Get all local address. */
-#define SCTP_SOCKOPT_CONNECTX  110             /* CONNECTX requests. */
-#define SCTP_SOCKOPT_CONNECTX3 111     /* CONNECTX requests (updated) */
-#define SCTP_GET_ASSOC_STATS   112     /* Read only */
-#define SCTP_PR_SUPPORTED      113
-#define SCTP_DEFAULT_PRINFO    114
-#define SCTP_PR_ASSOC_STATUS   115
-#define SCTP_PR_STREAM_STATUS  116
-#define SCTP_RECONFIG_SUPPORTED        117
-#define SCTP_ENABLE_STREAM_RESET       118
-#define SCTP_RESET_STREAMS     119
-#define SCTP_RESET_ASSOC       120
-#define SCTP_ADD_STREAMS       121
-#define SCTP_SOCKOPT_PEELOFF_FLAGS 122
-
-/* PR-SCTP policies */
-#define SCTP_PR_SCTP_NONE      0x0000
-#define SCTP_PR_SCTP_TTL       0x0010
-#define SCTP_PR_SCTP_RTX       0x0020
-#define SCTP_PR_SCTP_PRIO      0x0030
-#define SCTP_PR_SCTP_MAX       SCTP_PR_SCTP_PRIO
-#define SCTP_PR_SCTP_MASK      0x0030
-
-#define __SCTP_PR_INDEX(x)     ((x >> 4) - 1)
-#define SCTP_PR_INDEX(x)       __SCTP_PR_INDEX(SCTP_PR_SCTP_ ## x)
-
-#define SCTP_PR_POLICY(x)      ((x) & SCTP_PR_SCTP_MASK)
-#define SCTP_PR_SET_POLICY(flags, x)   \
-       do {                            \
-               flags &= ~SCTP_PR_SCTP_MASK;    \
-               flags |= x;             \
-       } while (0)
-
-#define SCTP_PR_TTL_ENABLED(x) (SCTP_PR_POLICY(x) == SCTP_PR_SCTP_TTL)
-#define SCTP_PR_RTX_ENABLED(x) (SCTP_PR_POLICY(x) == SCTP_PR_SCTP_RTX)
-#define SCTP_PR_PRIO_ENABLED(x)        (SCTP_PR_POLICY(x) == SCTP_PR_SCTP_PRIO)
-
-/* For enable stream reset */
-#define SCTP_ENABLE_RESET_STREAM_REQ   0x01
-#define SCTP_ENABLE_RESET_ASSOC_REQ    0x02
-#define SCTP_ENABLE_CHANGE_ASSOC_REQ   0x04
-#define SCTP_ENABLE_STRRESET_MASK      0x07
-
-#define SCTP_STREAM_RESET_INCOMING     0x01
-#define SCTP_STREAM_RESET_OUTGOING     0x02
-
-/* These are bit fields for msghdr->msg_flags.  See section 5.1.  */
-/* On user space Linux, these live in <bits/socket.h> as an enum.  */
-enum sctp_msg_flags {
-       MSG_NOTIFICATION = 0x8000,
-#define MSG_NOTIFICATION MSG_NOTIFICATION
-};
-
-/* 5.3.1 SCTP Initiation Structure (SCTP_INIT)
- *
- *   This cmsghdr structure provides information for initializing new
- *   SCTP associations with sendmsg().  The SCTP_INITMSG socket option
- *   uses this same data structure.  This structure is not used for
- *   recvmsg().
- *
- *   cmsg_level    cmsg_type      cmsg_data[]
- *   ------------  ------------   ----------------------
- *   IPPROTO_SCTP  SCTP_INIT      struct sctp_initmsg
- */
-struct sctp_initmsg {
-       __u16 sinit_num_ostreams;
-       __u16 sinit_max_instreams;
-       __u16 sinit_max_attempts;
-       __u16 sinit_max_init_timeo;
-};
-
-/* 5.3.2 SCTP Header Information Structure (SCTP_SNDRCV)
- *
- *   This cmsghdr structure specifies SCTP options for sendmsg() and
- *   describes SCTP header information about a received message through
- *   recvmsg().
- *
- *   cmsg_level    cmsg_type      cmsg_data[]
- *   ------------  ------------   ----------------------
- *   IPPROTO_SCTP  SCTP_SNDRCV    struct sctp_sndrcvinfo
- */
-struct sctp_sndrcvinfo {
-       __u16 sinfo_stream;
-       __u16 sinfo_ssn;
-       __u16 sinfo_flags;
-       __u32 sinfo_ppid;
-       __u32 sinfo_context;
-       __u32 sinfo_timetolive;
-       __u32 sinfo_tsn;
-       __u32 sinfo_cumtsn;
-       sctp_assoc_t sinfo_assoc_id;
-};
-
-/* 5.3.4 SCTP Send Information Structure (SCTP_SNDINFO)
- *
- *   This cmsghdr structure specifies SCTP options for sendmsg().
- *
- *   cmsg_level    cmsg_type      cmsg_data[]
- *   ------------  ------------   -------------------
- *   IPPROTO_SCTP  SCTP_SNDINFO   struct sctp_sndinfo
- */
-struct sctp_sndinfo {
-       __u16 snd_sid;
-       __u16 snd_flags;
-       __u32 snd_ppid;
-       __u32 snd_context;
-       sctp_assoc_t snd_assoc_id;
-};
-
-/* 5.3.5 SCTP Receive Information Structure (SCTP_RCVINFO)
- *
- *   This cmsghdr structure describes SCTP receive information
- *   about a received message through recvmsg().
- *
- *   cmsg_level    cmsg_type      cmsg_data[]
- *   ------------  ------------   -------------------
- *   IPPROTO_SCTP  SCTP_RCVINFO   struct sctp_rcvinfo
- */
-struct sctp_rcvinfo {
-       __u16 rcv_sid;
-       __u16 rcv_ssn;
-       __u16 rcv_flags;
-       __u32 rcv_ppid;
-       __u32 rcv_tsn;
-       __u32 rcv_cumtsn;
-       __u32 rcv_context;
-       sctp_assoc_t rcv_assoc_id;
-};
-
-/* 5.3.6 SCTP Next Receive Information Structure (SCTP_NXTINFO)
- *
- *   This cmsghdr structure describes SCTP receive information
- *   of the next message that will be delivered through recvmsg()
- *   if this information is already available when delivering
- *   the current message.
- *
- *   cmsg_level    cmsg_type      cmsg_data[]
- *   ------------  ------------   -------------------
- *   IPPROTO_SCTP  SCTP_NXTINFO   struct sctp_nxtinfo
- */
-struct sctp_nxtinfo {
-       __u16 nxt_sid;
-       __u16 nxt_flags;
-       __u32 nxt_ppid;
-       __u32 nxt_length;
-       sctp_assoc_t nxt_assoc_id;
-};
-
-/*
- *  sinfo_flags: 16 bits (unsigned integer)
- *
- *   This field may contain any of the following flags and is composed of
- *   a bitwise OR of these values.
- */
-enum sctp_sinfo_flags {
-       SCTP_UNORDERED          = (1 << 0), /* Send/receive message unordered. */
-       SCTP_ADDR_OVER          = (1 << 1), /* Override the primary destination. */
-       SCTP_ABORT              = (1 << 2), /* Send an ABORT message to the peer. */
-       SCTP_SACK_IMMEDIATELY   = (1 << 3), /* SACK should be sent without delay. */
-       SCTP_NOTIFICATION       = MSG_NOTIFICATION, /* Next message is not user msg but notification. */
-       SCTP_EOF                = MSG_FIN,  /* Initiate graceful shutdown process. */
-};
-
-typedef union {
-       __u8                    raw;
-       struct sctp_initmsg     init;
-       struct sctp_sndrcvinfo  sndrcv;
-} sctp_cmsg_data_t;
-
-/* These are cmsg_types.  */
-typedef enum sctp_cmsg_type {
-       SCTP_INIT,              /* 5.2.1 SCTP Initiation Structure */
-#define SCTP_INIT      SCTP_INIT
-       SCTP_SNDRCV,            /* 5.2.2 SCTP Header Information Structure */
-#define SCTP_SNDRCV    SCTP_SNDRCV
-       SCTP_SNDINFO,           /* 5.3.4 SCTP Send Information Structure */
-#define SCTP_SNDINFO   SCTP_SNDINFO
-       SCTP_RCVINFO,           /* 5.3.5 SCTP Receive Information Structure */
-#define SCTP_RCVINFO   SCTP_RCVINFO
-       SCTP_NXTINFO,           /* 5.3.6 SCTP Next Receive Information Structure */
-#define SCTP_NXTINFO   SCTP_NXTINFO
-} sctp_cmsg_t;
-
-/*
- * 5.3.1.1 SCTP_ASSOC_CHANGE
- *
- *   Communication notifications inform the ULP that an SCTP association
- *   has either begun or ended. The identifier for a new association is
- *   provided by this notificaion. The notification information has the
- *   following format:
- *
- */
-struct sctp_assoc_change {
-       __u16 sac_type;
-       __u16 sac_flags;
-       __u32 sac_length;
-       __u16 sac_state;
-       __u16 sac_error;
-       __u16 sac_outbound_streams;
-       __u16 sac_inbound_streams;
-       sctp_assoc_t sac_assoc_id;
-       __u8 sac_info[0];
-};
-
-/*
- *   sac_state: 32 bits (signed integer)
- *
- *   This field holds one of a number of values that communicate the
- *   event that happened to the association.  They include:
- *
- *   Note:  The following state names deviate from the API draft as
- *   the names clash too easily with other kernel symbols.
- */
-enum sctp_sac_state {
-       SCTP_COMM_UP,
-       SCTP_COMM_LOST,
-       SCTP_RESTART,
-       SCTP_SHUTDOWN_COMP,
-       SCTP_CANT_STR_ASSOC,
-};
-
-/*
- * 5.3.1.2 SCTP_PEER_ADDR_CHANGE
- *
- *   When a destination address on a multi-homed peer encounters a change
- *   an interface details event is sent.  The information has the
- *   following structure:
- */
-struct sctp_paddr_change {
-       __u16 spc_type;
-       __u16 spc_flags;
-       __u32 spc_length;
-       struct sockaddr_storage spc_aaddr;
-       int spc_state;
-       int spc_error;
-       sctp_assoc_t spc_assoc_id;
-} __attribute__((packed, aligned(4)));
-
-/*
- *    spc_state:  32 bits (signed integer)
- *
- *   This field holds one of a number of values that communicate the
- *   event that happened to the address.  They include:
- */
-enum sctp_spc_state {
-       SCTP_ADDR_AVAILABLE,
-       SCTP_ADDR_UNREACHABLE,
-       SCTP_ADDR_REMOVED,
-       SCTP_ADDR_ADDED,
-       SCTP_ADDR_MADE_PRIM,
-       SCTP_ADDR_CONFIRMED,
-};
-
-
-/*
- * 5.3.1.3 SCTP_REMOTE_ERROR
- *
- *   A remote peer may send an Operational Error message to its peer.
- *   This message indicates a variety of error conditions on an
- *   association. The entire error TLV as it appears on the wire is
- *   included in a SCTP_REMOTE_ERROR event.  Please refer to the SCTP
- *   specification [SCTP] and any extensions for a list of possible
- *   error formats. SCTP error TLVs have the format:
- */
-struct sctp_remote_error {
-       __u16 sre_type;
-       __u16 sre_flags;
-       __u32 sre_length;
-       __u16 sre_error;
-       sctp_assoc_t sre_assoc_id;
-       __u8 sre_data[0];
-};
-
-
-/*
- * 5.3.1.4 SCTP_SEND_FAILED
- *
- *   If SCTP cannot deliver a message it may return the message as a
- *   notification.
- */
-struct sctp_send_failed {
-       __u16 ssf_type;
-       __u16 ssf_flags;
-       __u32 ssf_length;
-       __u32 ssf_error;
-       struct sctp_sndrcvinfo ssf_info;
-       sctp_assoc_t ssf_assoc_id;
-       __u8 ssf_data[0];
-};
-
-/*
- *   ssf_flags: 16 bits (unsigned integer)
- *
- *   The flag value will take one of the following values
- *
- *   SCTP_DATA_UNSENT  - Indicates that the data was never put on
- *                       the wire.
- *
- *   SCTP_DATA_SENT    - Indicates that the data was put on the wire.
- *                       Note that this does not necessarily mean that the
- *                       data was (or was not) successfully delivered.
- */
-enum sctp_ssf_flags {
-       SCTP_DATA_UNSENT,
-       SCTP_DATA_SENT,
-};
-
-/*
- * 5.3.1.5 SCTP_SHUTDOWN_EVENT
- *
- *   When a peer sends a SHUTDOWN, SCTP delivers this notification to
- *   inform the application that it should cease sending data.
- */
-struct sctp_shutdown_event {
-       __u16 sse_type;
-       __u16 sse_flags;
-       __u32 sse_length;
-       sctp_assoc_t sse_assoc_id;
-};
-
-/*
- * 5.3.1.6 SCTP_ADAPTATION_INDICATION
- *
- *   When a peer sends a Adaptation Layer Indication parameter , SCTP
- *   delivers this notification to inform the application
- *   that of the peers requested adaptation layer.
- */
-struct sctp_adaptation_event {
-       __u16 sai_type;
-       __u16 sai_flags;
-       __u32 sai_length;
-       __u32 sai_adaptation_ind;
-       sctp_assoc_t sai_assoc_id;
-};
-
-/*
- * 5.3.1.7 SCTP_PARTIAL_DELIVERY_EVENT
- *
- *   When a receiver is engaged in a partial delivery of a
- *   message this notification will be used to indicate
- *   various events.
- */
-struct sctp_pdapi_event {
-       __u16 pdapi_type;
-       __u16 pdapi_flags;
-       __u32 pdapi_length;
-       __u32 pdapi_indication;
-       sctp_assoc_t pdapi_assoc_id;
-};
-
-enum { SCTP_PARTIAL_DELIVERY_ABORTED=0, };
-
-/*
- * 5.3.1.8.  SCTP_AUTHENTICATION_EVENT
- *
- *  When a receiver is using authentication this message will provide
- *  notifications regarding new keys being made active as well as errors.
- */
-struct sctp_authkey_event {
-       __u16 auth_type;
-       __u16 auth_flags;
-       __u32 auth_length;
-       __u16 auth_keynumber;
-       __u16 auth_altkeynumber;
-       __u32 auth_indication;
-       sctp_assoc_t auth_assoc_id;
-};
-
-enum { SCTP_AUTH_NEWKEY = 0, };
-
-/*
- * 6.1.9. SCTP_SENDER_DRY_EVENT
- *
- * When the SCTP stack has no more user data to send or retransmit, this
- * notification is given to the user. Also, at the time when a user app
- * subscribes to this event, if there is no data to be sent or
- * retransmit, the stack will immediately send up this notification.
- */
-struct sctp_sender_dry_event {
-       __u16 sender_dry_type;
-       __u16 sender_dry_flags;
-       __u32 sender_dry_length;
-       sctp_assoc_t sender_dry_assoc_id;
-};
-
-#define SCTP_STREAM_RESET_INCOMING_SSN 0x0001
-#define SCTP_STREAM_RESET_OUTGOING_SSN 0x0002
-#define SCTP_STREAM_RESET_DENIED       0x0004
-#define SCTP_STREAM_RESET_FAILED       0x0008
-struct sctp_stream_reset_event {
-       __u16 strreset_type;
-       __u16 strreset_flags;
-       __u32 strreset_length;
-       sctp_assoc_t strreset_assoc_id;
-       __u16 strreset_stream_list[];
-};
-
-#define SCTP_ASSOC_RESET_DENIED                0x0004
-#define SCTP_ASSOC_RESET_FAILED                0x0008
-struct sctp_assoc_reset_event {
-       __u16 assocreset_type;
-       __u16 assocreset_flags;
-       __u32 assocreset_length;
-       sctp_assoc_t assocreset_assoc_id;
-       __u32 assocreset_local_tsn;
-       __u32 assocreset_remote_tsn;
-};
-
-#define SCTP_ASSOC_CHANGE_DENIED       0x0004
-#define SCTP_ASSOC_CHANGE_FAILED       0x0008
-struct sctp_stream_change_event {
-       __u16 strchange_type;
-       __u16 strchange_flags;
-       __u32 strchange_length;
-       sctp_assoc_t strchange_assoc_id;
-       __u16 strchange_instrms;
-       __u16 strchange_outstrms;
-};
-
-/*
- * Described in Section 7.3
- *   Ancillary Data and Notification Interest Options
- */
-struct sctp_event_subscribe {
-       __u8 sctp_data_io_event;
-       __u8 sctp_association_event;
-       __u8 sctp_address_event;
-       __u8 sctp_send_failure_event;
-       __u8 sctp_peer_error_event;
-       __u8 sctp_shutdown_event;
-       __u8 sctp_partial_delivery_event;
-       __u8 sctp_adaptation_layer_event;
-       __u8 sctp_authentication_event;
-       __u8 sctp_sender_dry_event;
-       __u8 sctp_stream_reset_event;
-       __u8 sctp_assoc_reset_event;
-       __u8 sctp_stream_change_event;
-};
-
-/*
- * 5.3.1 SCTP Notification Structure
- *
- *   The notification structure is defined as the union of all
- *   notification types.
- *
- */
-union sctp_notification {
-       struct {
-               __u16 sn_type;             /* Notification type. */
-               __u16 sn_flags;
-               __u32 sn_length;
-       } sn_header;
-       struct sctp_assoc_change sn_assoc_change;
-       struct sctp_paddr_change sn_paddr_change;
-       struct sctp_remote_error sn_remote_error;
-       struct sctp_send_failed sn_send_failed;
-       struct sctp_shutdown_event sn_shutdown_event;
-       struct sctp_adaptation_event sn_adaptation_event;
-       struct sctp_pdapi_event sn_pdapi_event;
-       struct sctp_authkey_event sn_authkey_event;
-       struct sctp_sender_dry_event sn_sender_dry_event;
-       struct sctp_stream_reset_event sn_strreset_event;
-       struct sctp_assoc_reset_event sn_assocreset_event;
-       struct sctp_stream_change_event sn_strchange_event;
-};
-
-/* Section 5.3.1
- * All standard values for sn_type flags are greater than 2^15.
- * Values from 2^15 and down are reserved.
- */
-
-enum sctp_sn_type {
-       SCTP_SN_TYPE_BASE     = (1<<15),
-       SCTP_ASSOC_CHANGE,
-#define SCTP_ASSOC_CHANGE              SCTP_ASSOC_CHANGE
-       SCTP_PEER_ADDR_CHANGE,
-#define SCTP_PEER_ADDR_CHANGE          SCTP_PEER_ADDR_CHANGE
-       SCTP_SEND_FAILED,
-#define SCTP_SEND_FAILED               SCTP_SEND_FAILED
-       SCTP_REMOTE_ERROR,
-#define SCTP_REMOTE_ERROR              SCTP_REMOTE_ERROR
-       SCTP_SHUTDOWN_EVENT,
-#define SCTP_SHUTDOWN_EVENT            SCTP_SHUTDOWN_EVENT
-       SCTP_PARTIAL_DELIVERY_EVENT,
-#define SCTP_PARTIAL_DELIVERY_EVENT    SCTP_PARTIAL_DELIVERY_EVENT
-       SCTP_ADAPTATION_INDICATION,
-#define SCTP_ADAPTATION_INDICATION     SCTP_ADAPTATION_INDICATION
-       SCTP_AUTHENTICATION_EVENT,
-#define SCTP_AUTHENTICATION_INDICATION SCTP_AUTHENTICATION_EVENT
-       SCTP_SENDER_DRY_EVENT,
-#define SCTP_SENDER_DRY_EVENT          SCTP_SENDER_DRY_EVENT
-       SCTP_STREAM_RESET_EVENT,
-#define SCTP_STREAM_RESET_EVENT                SCTP_STREAM_RESET_EVENT
-       SCTP_ASSOC_RESET_EVENT,
-#define SCTP_ASSOC_RESET_EVENT         SCTP_ASSOC_RESET_EVENT
-       SCTP_STREAM_CHANGE_EVENT,
-#define SCTP_STREAM_CHANGE_EVENT       SCTP_STREAM_CHANGE_EVENT
-};
-
-/* Notification error codes used to fill up the error fields in some
- * notifications.
- * SCTP_PEER_ADDRESS_CHAGE     : spc_error
- * SCTP_ASSOC_CHANGE           : sac_error
- * These names should be potentially included in the draft 04 of the SCTP
- * sockets API specification.
- */
-typedef enum sctp_sn_error {
-       SCTP_FAILED_THRESHOLD,
-       SCTP_RECEIVED_SACK,
-       SCTP_HEARTBEAT_SUCCESS,
-       SCTP_RESPONSE_TO_USER_REQ,
-       SCTP_INTERNAL_ERROR,
-       SCTP_SHUTDOWN_GUARD_EXPIRES,
-       SCTP_PEER_FAULTY,
-} sctp_sn_error_t;
-
-/*
- * 7.1.1 Retransmission Timeout Parameters (SCTP_RTOINFO)
- *
- *   The protocol parameters used to initialize and bound retransmission
- *   timeout (RTO) are tunable.  See [SCTP] for more information on how
- *   these parameters are used in RTO calculation.
- */
-struct sctp_rtoinfo {
-       sctp_assoc_t    srto_assoc_id;
-       __u32           srto_initial;
-       __u32           srto_max;
-       __u32           srto_min;
-};
-
-/*
- * 7.1.2 Association Parameters (SCTP_ASSOCINFO)
- *
- *   This option is used to both examine and set various association and
- *   endpoint parameters.
- */
-struct sctp_assocparams {
-       sctp_assoc_t    sasoc_assoc_id;
-       __u16           sasoc_asocmaxrxt;
-       __u16           sasoc_number_peer_destinations;
-       __u32           sasoc_peer_rwnd;
-       __u32           sasoc_local_rwnd;
-       __u32           sasoc_cookie_life;
-};
-
-/*
- * 7.1.9 Set Peer Primary Address (SCTP_SET_PEER_PRIMARY_ADDR)
- *
- *  Requests that the peer mark the enclosed address as the association
- *  primary. The enclosed address must be one of the association's
- *  locally bound addresses. The following structure is used to make a
- *   set primary request:
- */
-struct sctp_setpeerprim {
-       sctp_assoc_t            sspp_assoc_id;
-       struct sockaddr_storage sspp_addr;
-} __attribute__((packed, aligned(4)));
-
-/*
- * 7.1.10 Set Primary Address (SCTP_PRIMARY_ADDR)
- *
- *  Requests that the local SCTP stack use the enclosed peer address as
- *  the association primary. The enclosed address must be one of the
- *  association peer's addresses. The following structure is used to
- *  make a set peer primary request:
- */
-struct sctp_prim {
-       sctp_assoc_t            ssp_assoc_id;
-       struct sockaddr_storage ssp_addr;
-} __attribute__((packed, aligned(4)));
-
-/* For backward compatibility use, define the old name too */
-#define sctp_setprim   sctp_prim
-
-/*
- * 7.1.11 Set Adaptation Layer Indicator (SCTP_ADAPTATION_LAYER)
- *
- * Requests that the local endpoint set the specified Adaptation Layer
- * Indication parameter for all future INIT and INIT-ACK exchanges.
- */
-struct sctp_setadaptation {
-       __u32   ssb_adaptation_ind;
-};
-
-/*
- * 7.1.13 Peer Address Parameters  (SCTP_PEER_ADDR_PARAMS)
- *
- *   Applications can enable or disable heartbeats for any peer address
- *   of an association, modify an address's heartbeat interval, force a
- *   heartbeat to be sent immediately, and adjust the address's maximum
- *   number of retransmissions sent before an address is considered
- *   unreachable. The following structure is used to access and modify an
- *   address's parameters:
- */
-enum  sctp_spp_flags {
-       SPP_HB_ENABLE = 1<<0,           /*Enable heartbeats*/
-       SPP_HB_DISABLE = 1<<1,          /*Disable heartbeats*/
-       SPP_HB = SPP_HB_ENABLE | SPP_HB_DISABLE,
-       SPP_HB_DEMAND = 1<<2,           /*Send heartbeat immediately*/
-       SPP_PMTUD_ENABLE = 1<<3,        /*Enable PMTU discovery*/
-       SPP_PMTUD_DISABLE = 1<<4,       /*Disable PMTU discovery*/
-       SPP_PMTUD = SPP_PMTUD_ENABLE | SPP_PMTUD_DISABLE,
-       SPP_SACKDELAY_ENABLE = 1<<5,    /*Enable SACK*/
-       SPP_SACKDELAY_DISABLE = 1<<6,   /*Disable SACK*/
-       SPP_SACKDELAY = SPP_SACKDELAY_ENABLE | SPP_SACKDELAY_DISABLE,
-       SPP_HB_TIME_IS_ZERO = 1<<7,     /* Set HB delay to 0 */
-};
-
-struct sctp_paddrparams {
-       sctp_assoc_t            spp_assoc_id;
-       struct sockaddr_storage spp_address;
-       __u32                   spp_hbinterval;
-       __u16                   spp_pathmaxrxt;
-       __u32                   spp_pathmtu;
-       __u32                   spp_sackdelay;
-       __u32                   spp_flags;
-} __attribute__((packed, aligned(4)));
-
-/*
- * 7.1.18.  Add a chunk that must be authenticated (SCTP_AUTH_CHUNK)
- *
- * This set option adds a chunk type that the user is requesting to be
- * received only in an authenticated way.  Changes to the list of chunks
- * will only effect future associations on the socket.
- */
-struct sctp_authchunk {
-       __u8            sauth_chunk;
-};
-
-/*
- * 7.1.19.  Get or set the list of supported HMAC Identifiers (SCTP_HMAC_IDENT)
- *
- * This option gets or sets the list of HMAC algorithms that the local
- * endpoint requires the peer to use.
- */
-/* This here is only used by user space as is. It might not be a good idea
- * to export/reveal the whole structure with reserved fields etc.
- */
-enum {
-       SCTP_AUTH_HMAC_ID_SHA1 = 1,
-       SCTP_AUTH_HMAC_ID_SHA256 = 3,
-};
-
-struct sctp_hmacalgo {
-       __u32           shmac_num_idents;
-       __u16           shmac_idents[];
-};
-
-/* Sadly, user and kernel space have different names for
- * this structure member, so this is to not break anything.
- */
-#define shmac_number_of_idents shmac_num_idents
-
-/*
- * 7.1.20.  Set a shared key (SCTP_AUTH_KEY)
- *
- * This option will set a shared secret key which is used to build an
- * association shared key.
- */
-struct sctp_authkey {
-       sctp_assoc_t    sca_assoc_id;
-       __u16           sca_keynumber;
-       __u16           sca_keylength;
-       __u8            sca_key[];
-};
-
-/*
- * 7.1.21.  Get or set the active shared key (SCTP_AUTH_ACTIVE_KEY)
- *
- * This option will get or set the active shared key to be used to build
- * the association shared key.
- */
-
-struct sctp_authkeyid {
-       sctp_assoc_t    scact_assoc_id;
-       __u16           scact_keynumber;
-};
-
-
-/*
- * 7.1.23.  Get or set delayed ack timer (SCTP_DELAYED_SACK)
- *
- * This option will effect the way delayed acks are performed.  This
- * option allows you to get or set the delayed ack time, in
- * milliseconds.  It also allows changing the delayed ack frequency.
- * Changing the frequency to 1 disables the delayed sack algorithm.  If
- * the assoc_id is 0, then this sets or gets the endpoints default
- * values.  If the assoc_id field is non-zero, then the set or get
- * effects the specified association for the one to many model (the
- * assoc_id field is ignored by the one to one model).  Note that if
- * sack_delay or sack_freq are 0 when setting this option, then the
- * current values will remain unchanged.
- */
-struct sctp_sack_info {
-       sctp_assoc_t    sack_assoc_id;
-       uint32_t        sack_delay;
-       uint32_t        sack_freq;
-};
-
-struct sctp_assoc_value {
-    sctp_assoc_t            assoc_id;
-    uint32_t                assoc_value;
-};
-
-/*
- * 7.2.2 Peer Address Information
- *
- *   Applications can retrieve information about a specific peer address
- *   of an association, including its reachability state, congestion
- *   window, and retransmission timer values.  This information is
- *   read-only. The following structure is used to access this
- *   information:
- */
-struct sctp_paddrinfo {
-       sctp_assoc_t            spinfo_assoc_id;
-       struct sockaddr_storage spinfo_address;
-       __s32                   spinfo_state;
-       __u32                   spinfo_cwnd;
-       __u32                   spinfo_srtt;
-       __u32                   spinfo_rto;
-       __u32                   spinfo_mtu;
-} __attribute__((packed, aligned(4)));
-
-/* Peer addresses's state. */
-/* UNKNOWN: Peer address passed by the upper layer in sendmsg or connect[x]
- * calls.
- * UNCONFIRMED: Peer address received in INIT/INIT-ACK address parameters.
- *              Not yet confirmed by a heartbeat and not available for data
- *             transfers.
- * ACTIVE : Peer address confirmed, active and available for data transfers.
- * INACTIVE: Peer address inactive and not available for data transfers.
- */
-enum sctp_spinfo_state {
-       SCTP_INACTIVE,
-       SCTP_PF,
-       SCTP_ACTIVE,
-       SCTP_UNCONFIRMED,
-       SCTP_UNKNOWN = 0xffff  /* Value used for transport state unknown */
-};
-
-/*
- * 7.2.1 Association Status (SCTP_STATUS)
- *
- *   Applications can retrieve current status information about an
- *   association, including association state, peer receiver window size,
- *   number of unacked data chunks, and number of data chunks pending
- *   receipt.  This information is read-only.  The following structure is
- *   used to access this information:
- */
-struct sctp_status {
-       sctp_assoc_t            sstat_assoc_id;
-       __s32                   sstat_state;
-       __u32                   sstat_rwnd;
-       __u16                   sstat_unackdata;
-       __u16                   sstat_penddata;
-       __u16                   sstat_instrms;
-       __u16                   sstat_outstrms;
-       __u32                   sstat_fragmentation_point;
-       struct sctp_paddrinfo   sstat_primary;
-};
-
-/*
- * 7.2.3.  Get the list of chunks the peer requires to be authenticated
- *         (SCTP_PEER_AUTH_CHUNKS)
- *
- * This option gets a list of chunks for a specified association that
- * the peer requires to be received authenticated only.
- */
-struct sctp_authchunks {
-       sctp_assoc_t    gauth_assoc_id;
-       __u32           gauth_number_of_chunks;
-       uint8_t         gauth_chunks[];
-};
-
-/* The broken spelling has been released already in lksctp-tools header,
- * so don't break anyone, now that it's fixed.
- */
-#define guth_number_of_chunks  gauth_number_of_chunks
-
-/* Association states.  */
-enum sctp_sstat_state {
-       SCTP_EMPTY                = 0,
-       SCTP_CLOSED               = 1,
-       SCTP_COOKIE_WAIT          = 2,
-       SCTP_COOKIE_ECHOED        = 3,
-       SCTP_ESTABLISHED          = 4,
-       SCTP_SHUTDOWN_PENDING     = 5,
-       SCTP_SHUTDOWN_SENT        = 6,
-       SCTP_SHUTDOWN_RECEIVED    = 7,
-       SCTP_SHUTDOWN_ACK_SENT    = 8,
-};
-
-/*
- * 8.2.6. Get the Current Identifiers of Associations
- *        (SCTP_GET_ASSOC_ID_LIST)
- *
- * This option gets the current list of SCTP association identifiers of
- * the SCTP associations handled by a one-to-many style socket.
- */
-struct sctp_assoc_ids {
-       __u32           gaids_number_of_ids;
-       sctp_assoc_t    gaids_assoc_id[];
-};
-
-/*
- * 8.3, 8.5 get all peer/local addresses in an association.
- * This parameter struct is used by SCTP_GET_PEER_ADDRS and
- * SCTP_GET_LOCAL_ADDRS socket options used internally to implement
- * sctp_getpaddrs() and sctp_getladdrs() API.
- */
-struct sctp_getaddrs_old {
-       sctp_assoc_t            assoc_id;
-       int                     addr_num;
-       struct sockaddr         *addrs;
-};
-
-struct sctp_getaddrs {
-       sctp_assoc_t            assoc_id; /*input*/
-       __u32                   addr_num; /*output*/
-       __u8                    addrs[0]; /*output, variable size*/
-};
-
-/* A socket user request obtained via SCTP_GET_ASSOC_STATS that retrieves
- * association stats. All stats are counts except sas_maxrto and
- * sas_obs_rto_ipaddr. maxrto is the max observed rto + transport since
- * the last call. Will return 0 when RTO was not update since last call
- */
-struct sctp_assoc_stats {
-       sctp_assoc_t    sas_assoc_id;    /* Input */
-                                        /* Transport of observed max RTO */
-       struct sockaddr_storage sas_obs_rto_ipaddr;
-       __u64           sas_maxrto;      /* Maximum Observed RTO for period */
-       __u64           sas_isacks;      /* SACKs received */
-       __u64           sas_osacks;      /* SACKs sent */
-       __u64           sas_opackets;    /* Packets sent */
-       __u64           sas_ipackets;    /* Packets received */
-       __u64           sas_rtxchunks;   /* Retransmitted Chunks */
-       __u64           sas_outofseqtsns;/* TSN received > next expected */
-       __u64           sas_idupchunks;  /* Dups received (ordered+unordered) */
-       __u64           sas_gapcnt;      /* Gap Acknowledgements Received */
-       __u64           sas_ouodchunks;  /* Unordered data chunks sent */
-       __u64           sas_iuodchunks;  /* Unordered data chunks received */
-       __u64           sas_oodchunks;   /* Ordered data chunks sent */
-       __u64           sas_iodchunks;   /* Ordered data chunks received */
-       __u64           sas_octrlchunks; /* Control chunks sent */
-       __u64           sas_ictrlchunks; /* Control chunks received */
-};
-
-/*
- * 8.1 sctp_bindx()
- *
- * The flags parameter is formed from the bitwise OR of zero or more of the
- * following currently defined flags:
- */
-#define SCTP_BINDX_ADD_ADDR 0x01
-#define SCTP_BINDX_REM_ADDR 0x02
-
-/* This is the structure that is passed as an argument(optval) to
- * getsockopt(SCTP_SOCKOPT_PEELOFF).
- */
-typedef struct {
-       sctp_assoc_t associd;
-       int sd;
-} sctp_peeloff_arg_t;
-
-typedef struct {
-       sctp_peeloff_arg_t p_arg;
-       unsigned flags;
-} sctp_peeloff_flags_arg_t;
-
-/*
- *  Peer Address Thresholds socket option
- */
-struct sctp_paddrthlds {
-       sctp_assoc_t spt_assoc_id;
-       struct sockaddr_storage spt_address;
-       __u16 spt_pathmaxrxt;
-       __u16 spt_pathpfthld;
-};
-
-/*
- * Socket Option for Getting the Association/Stream-Specific PR-SCTP Status
- */
-struct sctp_prstatus {
-       sctp_assoc_t sprstat_assoc_id;
-       __u16 sprstat_sid;
-       __u16 sprstat_policy;
-       __u64 sprstat_abandoned_unsent;
-       __u64 sprstat_abandoned_sent;
-};
-
-struct sctp_default_prinfo {
-       sctp_assoc_t pr_assoc_id;
-       __u32 pr_value;
-       __u16 pr_policy;
-};
-
-struct sctp_info {
-       __u32   sctpi_tag;
-       __u32   sctpi_state;
-       __u32   sctpi_rwnd;
-       __u16   sctpi_unackdata;
-       __u16   sctpi_penddata;
-       __u16   sctpi_instrms;
-       __u16   sctpi_outstrms;
-       __u32   sctpi_fragmentation_point;
-       __u32   sctpi_inqueue;
-       __u32   sctpi_outqueue;
-       __u32   sctpi_overall_error;
-       __u32   sctpi_max_burst;
-       __u32   sctpi_maxseg;
-       __u32   sctpi_peer_rwnd;
-       __u32   sctpi_peer_tag;
-       __u8    sctpi_peer_capable;
-       __u8    sctpi_peer_sack;
-       __u16   __reserved1;
-
-       /* assoc status info */
-       __u64   sctpi_isacks;
-       __u64   sctpi_osacks;
-       __u64   sctpi_opackets;
-       __u64   sctpi_ipackets;
-       __u64   sctpi_rtxchunks;
-       __u64   sctpi_outofseqtsns;
-       __u64   sctpi_idupchunks;
-       __u64   sctpi_gapcnt;
-       __u64   sctpi_ouodchunks;
-       __u64   sctpi_iuodchunks;
-       __u64   sctpi_oodchunks;
-       __u64   sctpi_iodchunks;
-       __u64   sctpi_octrlchunks;
-       __u64   sctpi_ictrlchunks;
-
-       /* primary transport info */
-       struct sockaddr_storage sctpi_p_address;
-       __s32   sctpi_p_state;
-       __u32   sctpi_p_cwnd;
-       __u32   sctpi_p_srtt;
-       __u32   sctpi_p_rto;
-       __u32   sctpi_p_hbinterval;
-       __u32   sctpi_p_pathmaxrxt;
-       __u32   sctpi_p_sackdelay;
-       __u32   sctpi_p_sackfreq;
-       __u32   sctpi_p_ssthresh;
-       __u32   sctpi_p_partial_bytes_acked;
-       __u32   sctpi_p_flight_size;
-       __u16   sctpi_p_error;
-       __u16   __reserved2;
-
-       /* sctp sock info */
-       __u32   sctpi_s_autoclose;
-       __u32   sctpi_s_adaptation_ind;
-       __u32   sctpi_s_pd_point;
-       __u8    sctpi_s_nodelay;
-       __u8    sctpi_s_disable_fragments;
-       __u8    sctpi_s_v4mapped;
-       __u8    sctpi_s_frag_interleave;
-       __u32   sctpi_s_type;
-       __u32   __reserved3;
-};
-
-struct sctp_reset_streams {
-       sctp_assoc_t srs_assoc_id;
-       uint16_t srs_flags;
-       uint16_t srs_number_streams;    /* 0 == ALL */
-       uint16_t srs_stream_list[];     /* list if srs_num_streams is not 0 */
-};
-
-struct sctp_add_streams {
-       sctp_assoc_t sas_assoc_id;
-       uint16_t sas_instrms;
-       uint16_t sas_outstrms;
-};
-
-#endif /* _SCTP_H */
diff --git a/include/linux/seg6.h b/include/linux/seg6.h
deleted file mode 100644 (file)
index 0715279..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- *  SR-IPv6 implementation
- *
- *  Author:
- *  David Lebrun <david.lebrun@uclouvain.be>
- *
- *
- *  This program is free software; you can redistribute it and/or
- *      modify it under the terms of the GNU General Public License
- *      as published by the Free Software Foundation; either version
- *      2 of the License, or (at your option) any later version.
- */
-
-#ifndef _LINUX_SEG6_H
-#define _LINUX_SEG6_H
-
-#include <linux/types.h>
-#include <linux/in6.h>         /* For struct in6_addr. */
-
-/*
- * SRH
- */
-struct ipv6_sr_hdr {
-       __u8    nexthdr;
-       __u8    hdrlen;
-       __u8    type;
-       __u8    segments_left;
-       __u8    first_segment;
-       __u8    flags;
-       __u16   reserved;
-
-       struct in6_addr segments[0];
-};
-
-#define SR6_FLAG1_PROTECTED    (1 << 6)
-#define SR6_FLAG1_OAM          (1 << 5)
-#define SR6_FLAG1_ALERT                (1 << 4)
-#define SR6_FLAG1_HMAC         (1 << 3)
-
-#define SR6_TLV_INGRESS                1
-#define SR6_TLV_EGRESS         2
-#define SR6_TLV_OPAQUE         3
-#define SR6_TLV_PADDING                4
-#define SR6_TLV_HMAC           5
-
-#define sr_has_hmac(srh) ((srh)->flags & SR6_FLAG1_HMAC)
-
-struct sr6_tlv {
-       __u8 type;
-       __u8 len;
-       __u8 data[0];
-};
-
-#endif
diff --git a/include/linux/seg6_genl.h b/include/linux/seg6_genl.h
deleted file mode 100644 (file)
index 99382f9..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-#ifndef _LINUX_SEG6_GENL_H
-#define _LINUX_SEG6_GENL_H
-
-#define SEG6_GENL_NAME         "SEG6"
-#define SEG6_GENL_VERSION      0x1
-
-enum {
-       SEG6_ATTR_UNSPEC,
-       SEG6_ATTR_DST,
-       SEG6_ATTR_DSTLEN,
-       SEG6_ATTR_HMACKEYID,
-       SEG6_ATTR_SECRET,
-       SEG6_ATTR_SECRETLEN,
-       SEG6_ATTR_ALGID,
-       SEG6_ATTR_HMACINFO,
-       __SEG6_ATTR_MAX,
-};
-
-#define SEG6_ATTR_MAX (__SEG6_ATTR_MAX - 1)
-
-enum {
-       SEG6_CMD_UNSPEC,
-       SEG6_CMD_SETHMAC,
-       SEG6_CMD_DUMPHMAC,
-       SEG6_CMD_SET_TUNSRC,
-       SEG6_CMD_GET_TUNSRC,
-       __SEG6_CMD_MAX,
-};
-
-#define SEG6_CMD_MAX (__SEG6_CMD_MAX - 1)
-
-#endif
diff --git a/include/linux/seg6_hmac.h b/include/linux/seg6_hmac.h
deleted file mode 100644 (file)
index 704f93e..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-#ifndef _LINUX_SEG6_HMAC_H
-#define _LINUX_SEG6_HMAC_H
-
-#include <linux/types.h>
-#include <linux/seg6.h>
-
-#define SEG6_HMAC_SECRET_LEN   64
-#define SEG6_HMAC_FIELD_LEN    32
-
-struct sr6_tlv_hmac {
-       struct sr6_tlv tlvhdr;
-       __u16 reserved;
-       __be32 hmackeyid;
-       __u8 hmac[SEG6_HMAC_FIELD_LEN];
-};
-
-enum {
-       SEG6_HMAC_ALGO_SHA1 = 1,
-       SEG6_HMAC_ALGO_SHA256 = 2,
-};
-
-#endif
diff --git a/include/linux/seg6_iptunnel.h b/include/linux/seg6_iptunnel.h
deleted file mode 100644 (file)
index a5dc05a..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- *  SR-IPv6 implementation
- *
- *  Author:
- *  David Lebrun <david.lebrun@uclouvain.be>
- *
- *
- *  This program is free software; you can redistribute it and/or
- *      modify it under the terms of the GNU General Public License
- *      as published by the Free Software Foundation; either version
- *      2 of the License, or (at your option) any later version.
- */
-
-#ifndef _LINUX_SEG6_IPTUNNEL_H
-#define _LINUX_SEG6_IPTUNNEL_H
-
-#include <linux/seg6.h>                /* For struct ipv6_sr_hdr. */
-
-enum {
-       SEG6_IPTUNNEL_UNSPEC,
-       SEG6_IPTUNNEL_SRH,
-       __SEG6_IPTUNNEL_MAX,
-};
-#define SEG6_IPTUNNEL_MAX (__SEG6_IPTUNNEL_MAX - 1)
-
-struct seg6_iptunnel_encap {
-       int mode;
-       struct ipv6_sr_hdr srh[0];
-};
-
-#define SEG6_IPTUN_ENCAP_SIZE(x) ((sizeof(*x)) + (((x)->srh->hdrlen + 1) << 3))
-
-enum {
-       SEG6_IPTUN_MODE_INLINE,
-       SEG6_IPTUN_MODE_ENCAP,
-       SEG6_IPTUN_MODE_L2ENCAP,
-};
-
-
-#endif
diff --git a/include/linux/seg6_local.h b/include/linux/seg6_local.h
deleted file mode 100644 (file)
index 76b90d6..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- *  SR-IPv6 implementation
- *
- *  Author:
- *  David Lebrun <david.lebrun@uclouvain.be>
- *
- *
- *  This program is free software; you can redistribute it and/or
- *      modify it under the terms of the GNU General Public License
- *      as published by the Free Software Foundation; either version
- *      2 of the License, or (at your option) any later version.
- */
-
-#ifndef _LINUX_SEG6_LOCAL_H
-#define _LINUX_SEG6_LOCAL_H
-
-#include <linux/seg6.h>
-
-enum {
-       SEG6_LOCAL_UNSPEC,
-       SEG6_LOCAL_ACTION,
-       SEG6_LOCAL_SRH,
-       SEG6_LOCAL_TABLE,
-       SEG6_LOCAL_NH4,
-       SEG6_LOCAL_NH6,
-       SEG6_LOCAL_IIF,
-       SEG6_LOCAL_OIF,
-       __SEG6_LOCAL_MAX,
-};
-#define SEG6_LOCAL_MAX (__SEG6_LOCAL_MAX - 1)
-
-enum {
-       SEG6_LOCAL_ACTION_UNSPEC        = 0,
-       /* node segment */
-       SEG6_LOCAL_ACTION_END           = 1,
-       /* adjacency segment (IPv6 cross-connect) */
-       SEG6_LOCAL_ACTION_END_X         = 2,
-       /* lookup of next seg NH in table */
-       SEG6_LOCAL_ACTION_END_T         = 3,
-       /* decap and L2 cross-connect */
-       SEG6_LOCAL_ACTION_END_DX2       = 4,
-       /* decap and IPv6 cross-connect */
-       SEG6_LOCAL_ACTION_END_DX6       = 5,
-       /* decap and IPv4 cross-connect */
-       SEG6_LOCAL_ACTION_END_DX4       = 6,
-       /* decap and lookup of DA in v6 table */
-       SEG6_LOCAL_ACTION_END_DT6       = 7,
-       /* decap and lookup of DA in v4 table */
-       SEG6_LOCAL_ACTION_END_DT4       = 8,
-       /* binding segment with insertion */
-       SEG6_LOCAL_ACTION_END_B6        = 9,
-       /* binding segment with encapsulation */
-       SEG6_LOCAL_ACTION_END_B6_ENCAP  = 10,
-       /* binding segment with MPLS encap */
-       SEG6_LOCAL_ACTION_END_BM        = 11,
-       /* lookup last seg in table */
-       SEG6_LOCAL_ACTION_END_S         = 12,
-       /* forward to SR-unaware VNF with static proxy */
-       SEG6_LOCAL_ACTION_END_AS        = 13,
-       /* forward to SR-unaware VNF with masquerading */
-       SEG6_LOCAL_ACTION_END_AM        = 14,
-
-       __SEG6_LOCAL_ACTION_MAX,
-};
-
-#define SEG6_LOCAL_ACTION_MAX (__SEG6_LOCAL_ACTION_MAX - 1)
-
-#endif
diff --git a/include/linux/sock_diag.h b/include/linux/sock_diag.h
deleted file mode 100644 (file)
index 901231e..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-#ifndef __SOCK_DIAG_H__
-#define __SOCK_DIAG_H__
-
-#include <linux/types.h>
-
-#define SOCK_DIAG_BY_FAMILY 20
-#define SOCK_DESTROY 21
-
-struct sock_diag_req {
-       __u8    sdiag_family;
-       __u8    sdiag_protocol;
-};
-
-enum {
-       SK_MEMINFO_RMEM_ALLOC,
-       SK_MEMINFO_RCVBUF,
-       SK_MEMINFO_WMEM_ALLOC,
-       SK_MEMINFO_SNDBUF,
-       SK_MEMINFO_FWD_ALLOC,
-       SK_MEMINFO_WMEM_QUEUED,
-       SK_MEMINFO_OPTMEM,
-       SK_MEMINFO_BACKLOG,
-       SK_MEMINFO_DROPS,
-
-       SK_MEMINFO_VARS,
-};
-
-enum sknetlink_groups {
-       SKNLGRP_NONE,
-       SKNLGRP_INET_TCP_DESTROY,
-       SKNLGRP_INET_UDP_DESTROY,
-       SKNLGRP_INET6_TCP_DESTROY,
-       SKNLGRP_INET6_UDP_DESTROY,
-       __SKNLGRP_MAX,
-};
-#define SKNLGRP_MAX    (__SKNLGRP_MAX - 1)
-
-#endif /* __SOCK_DIAG_H__ */
diff --git a/include/linux/socket.h b/include/linux/socket.h
deleted file mode 100644 (file)
index 8c1e501..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-#ifndef _LINUX_SOCKET_H
-#define _LINUX_SOCKET_H
-
-/*
- * Desired design of maximum size and alignment (see RFC2553)
- */
-#define _K_SS_MAXSIZE  128     /* Implementation specific max size */
-#define _K_SS_ALIGNSIZE        (__alignof__ (struct sockaddr *))
-                               /* Implementation specific desired alignment */
-
-typedef unsigned short __kernel_sa_family_t;
-
-struct __kernel_sockaddr_storage {
-       __kernel_sa_family_t    ss_family;              /* address family */
-       /* Following field(s) are implementation specific */
-       char            __data[_K_SS_MAXSIZE - sizeof(unsigned short)];
-                               /* space to achieve desired size, */
-                               /* _SS_MAXSIZE value minus size of ss_family */
-} __attribute__ ((aligned(_K_SS_ALIGNSIZE)));  /* force desired alignment */
-
-#endif /* _LINUX_SOCKET_H */
diff --git a/include/linux/sockios.h b/include/linux/sockios.h
deleted file mode 100644 (file)
index 79d029d..0000000
+++ /dev/null
@@ -1,152 +0,0 @@
-/*
- * INET                An implementation of the TCP/IP protocol suite for the LINUX
- *             operating system.  INET is implemented using the  BSD Socket
- *             interface as the means of communication with the user level.
- *
- *             Definitions of the socket-level I/O control calls.
- *
- * Version:    @(#)sockios.h   1.0.2   03/09/93
- *
- * Authors:    Ross Biro
- *             Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
- *
- *             This program is free software; you can redistribute it and/or
- *             modify it under the terms of the GNU General Public License
- *             as published by the Free Software Foundation; either version
- *             2 of the License, or (at your option) any later version.
- */
-#ifndef _LINUX_SOCKIOS_H
-#define _LINUX_SOCKIOS_H
-
-#include <asm/sockios.h>
-
-/* Linux-specific socket ioctls */
-#define SIOCINQ                FIONREAD
-#define SIOCOUTQ       TIOCOUTQ        /* output queue size (not sent + not acked) */
-
-#define SOCK_IOC_TYPE  0x89
-
-/* Routing table calls. */
-#define SIOCADDRT      0x890B          /* add routing table entry      */
-#define SIOCDELRT      0x890C          /* delete routing table entry   */
-#define SIOCRTMSG      0x890D          /* unused                       */
-
-/* Socket configuration controls. */
-#define SIOCGIFNAME    0x8910          /* get iface name               */
-#define SIOCSIFLINK    0x8911          /* set iface channel            */
-#define SIOCGIFCONF    0x8912          /* get iface list               */
-#define SIOCGIFFLAGS   0x8913          /* get flags                    */
-#define SIOCSIFFLAGS   0x8914          /* set flags                    */
-#define SIOCGIFADDR    0x8915          /* get PA address               */
-#define SIOCSIFADDR    0x8916          /* set PA address               */
-#define SIOCGIFDSTADDR 0x8917          /* get remote PA address        */
-#define SIOCSIFDSTADDR 0x8918          /* set remote PA address        */
-#define SIOCGIFBRDADDR 0x8919          /* get broadcast PA address     */
-#define SIOCSIFBRDADDR 0x891a          /* set broadcast PA address     */
-#define SIOCGIFNETMASK 0x891b          /* get network PA mask          */
-#define SIOCSIFNETMASK 0x891c          /* set network PA mask          */
-#define SIOCGIFMETRIC  0x891d          /* get metric                   */
-#define SIOCSIFMETRIC  0x891e          /* set metric                   */
-#define SIOCGIFMEM     0x891f          /* get memory address (BSD)     */
-#define SIOCSIFMEM     0x8920          /* set memory address (BSD)     */
-#define SIOCGIFMTU     0x8921          /* get MTU size                 */
-#define SIOCSIFMTU     0x8922          /* set MTU size                 */
-#define SIOCSIFNAME    0x8923          /* set interface name */
-#define        SIOCSIFHWADDR   0x8924          /* set hardware address         */
-#define SIOCGIFENCAP   0x8925          /* get/set encapsulations       */
-#define SIOCSIFENCAP   0x8926          
-#define SIOCGIFHWADDR  0x8927          /* Get hardware address         */
-#define SIOCGIFSLAVE   0x8929          /* Driver slaving support       */
-#define SIOCSIFSLAVE   0x8930
-#define SIOCADDMULTI   0x8931          /* Multicast address lists      */
-#define SIOCDELMULTI   0x8932
-#define SIOCGIFINDEX   0x8933          /* name -> if_index mapping     */
-#define SIOGIFINDEX    SIOCGIFINDEX    /* misprint compatibility :-)   */
-#define SIOCSIFPFLAGS  0x8934          /* set/get extended flags set   */
-#define SIOCGIFPFLAGS  0x8935
-#define SIOCDIFADDR    0x8936          /* delete PA address            */
-#define        SIOCSIFHWBROADCAST      0x8937  /* set hardware broadcast addr  */
-#define SIOCGIFCOUNT   0x8938          /* get number of devices */
-
-#define SIOCGIFBR      0x8940          /* Bridging support             */
-#define SIOCSIFBR      0x8941          /* Set bridging options         */
-
-#define SIOCGIFTXQLEN  0x8942          /* Get the tx queue length      */
-#define SIOCSIFTXQLEN  0x8943          /* Set the tx queue length      */
-
-/* SIOCGIFDIVERT was:  0x8944          Frame diversion support */
-/* SIOCSIFDIVERT was:  0x8945          Set frame diversion options */
-
-#define SIOCETHTOOL    0x8946          /* Ethtool interface            */
-
-#define SIOCGMIIPHY    0x8947          /* Get address of MII PHY in use. */
-#define SIOCGMIIREG    0x8948          /* Read MII PHY register.       */
-#define SIOCSMIIREG    0x8949          /* Write MII PHY register.      */
-
-#define SIOCWANDEV     0x894A          /* get/set netdev parameters    */
-
-#define SIOCOUTQNSD    0x894B          /* output queue size (not sent only) */
-#define SIOCGSKNS      0x894C          /* get socket network namespace */
-
-/* ARP cache control calls. */
-                   /*  0x8950 - 0x8952  * obsolete calls, don't re-use */
-#define SIOCDARP       0x8953          /* delete ARP table entry       */
-#define SIOCGARP       0x8954          /* get ARP table entry          */
-#define SIOCSARP       0x8955          /* set ARP table entry          */
-
-/* RARP cache control calls. */
-#define SIOCDRARP      0x8960          /* delete RARP table entry      */
-#define SIOCGRARP      0x8961          /* get RARP table entry         */
-#define SIOCSRARP      0x8962          /* set RARP table entry         */
-
-/* Driver configuration calls */
-
-#define SIOCGIFMAP     0x8970          /* Get device parameters        */
-#define SIOCSIFMAP     0x8971          /* Set device parameters        */
-
-/* DLCI configuration calls */
-
-#define SIOCADDDLCI    0x8980          /* Create new DLCI device       */
-#define SIOCDELDLCI    0x8981          /* Delete DLCI device           */
-
-#define SIOCGIFVLAN    0x8982          /* 802.1Q VLAN support          */
-#define SIOCSIFVLAN    0x8983          /* Set 802.1Q VLAN options      */
-
-/* bonding calls */
-
-#define SIOCBONDENSLAVE        0x8990          /* enslave a device to the bond */
-#define SIOCBONDRELEASE 0x8991         /* release a slave from the bond*/
-#define SIOCBONDSETHWADDR      0x8992  /* set the hw addr of the bond  */
-#define SIOCBONDSLAVEINFOQUERY 0x8993   /* rtn info about slave state   */
-#define SIOCBONDINFOQUERY      0x8994  /* rtn info about bond state    */
-#define SIOCBONDCHANGEACTIVE   0x8995   /* update to a new active slave */
-                       
-/* bridge calls */
-#define SIOCBRADDBR     0x89a0         /* create new bridge device     */
-#define SIOCBRDELBR     0x89a1         /* remove bridge device         */
-#define SIOCBRADDIF    0x89a2          /* add interface to bridge      */
-#define SIOCBRDELIF    0x89a3          /* remove interface from bridge */
-
-/* hardware time stamping: parameters in linux/net_tstamp.h */
-#define SIOCSHWTSTAMP  0x89b0          /* set and get config           */
-#define SIOCGHWTSTAMP  0x89b1          /* get config                   */
-
-/* Device private ioctl calls */
-
-/*
- *     These 16 ioctls are available to devices via the do_ioctl() device
- *     vector. Each device should include this file and redefine these names
- *     as their own. Because these are device dependent it is a good idea
- *     _NOT_ to issue them to random objects and hope.
- *
- *     THESE IOCTLS ARE _DEPRECATED_ AND WILL DISAPPEAR IN 2.5.X -DaveM
- */
-#define SIOCDEVPRIVATE 0x89F0  /* to 89FF */
-
-/*
- *     These 16 ioctl calls are protocol private
- */
-#define SIOCPROTOPRIVATE 0x89E0 /* to 89EF */
-#endif /* _LINUX_SOCKIOS_H */
diff --git a/include/linux/stddef.h b/include/linux/stddef.h
deleted file mode 100644 (file)
index 4bb69de..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-#ifndef __always_inline
-#define __always_inline __inline__
-#endif
diff --git a/include/linux/sysinfo.h b/include/linux/sysinfo.h
deleted file mode 100644 (file)
index 934335a..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-#ifndef _LINUX_SYSINFO_H
-#define _LINUX_SYSINFO_H
-
-#include <linux/types.h>
-
-#define SI_LOAD_SHIFT  16
-struct sysinfo {
-       __kernel_long_t uptime;         /* Seconds since boot */
-       __kernel_ulong_t loads[3];      /* 1, 5, and 15 minute load averages */
-       __kernel_ulong_t totalram;      /* Total usable main memory size */
-       __kernel_ulong_t freeram;       /* Available memory size */
-       __kernel_ulong_t sharedram;     /* Amount of shared memory */
-       __kernel_ulong_t bufferram;     /* Memory used by buffers */
-       __kernel_ulong_t totalswap;     /* Total swap space size */
-       __kernel_ulong_t freeswap;      /* swap space still available */
-       __u16 procs;                    /* Number of current processes */
-       __u16 pad;                      /* Explicit padding for m68k */
-       __kernel_ulong_t totalhigh;     /* Total high memory size */
-       __kernel_ulong_t freehigh;      /* Available high memory size */
-       __u32 mem_unit;                 /* Memory unit size in bytes */
-       char _f[20-2*sizeof(__kernel_ulong_t)-sizeof(__u32)];   /* Padding: libc5 uses this.. */
-};
-
-#endif /* _LINUX_SYSINFO_H */
diff --git a/include/linux/tc_act/tc_bpf.h b/include/linux/tc_act/tc_bpf.h
deleted file mode 100644 (file)
index 8dc2ac0..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (c) 2015 Jiri Pirko <jiri@resnulli.us>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- */
-
-#ifndef __LINUX_TC_BPF_H
-#define __LINUX_TC_BPF_H
-
-#include <linux/pkt_cls.h>
-
-#define TCA_ACT_BPF 13
-
-struct tc_act_bpf {
-       tc_gen;
-};
-
-enum {
-       TCA_ACT_BPF_UNSPEC,
-       TCA_ACT_BPF_TM,
-       TCA_ACT_BPF_PARMS,
-       TCA_ACT_BPF_OPS_LEN,
-       TCA_ACT_BPF_OPS,
-       TCA_ACT_BPF_FD,
-       TCA_ACT_BPF_NAME,
-       TCA_ACT_BPF_PAD,
-       TCA_ACT_BPF_TAG,
-       TCA_ACT_BPF_ID,
-       __TCA_ACT_BPF_MAX,
-};
-#define TCA_ACT_BPF_MAX (__TCA_ACT_BPF_MAX - 1)
-
-#endif
diff --git a/include/linux/tc_act/tc_connmark.h b/include/linux/tc_act/tc_connmark.h
deleted file mode 100644 (file)
index 62a5e94..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-#ifndef __UAPI_TC_CONNMARK_H
-#define __UAPI_TC_CONNMARK_H
-
-#include <linux/types.h>
-#include <linux/pkt_cls.h>
-
-#define TCA_ACT_CONNMARK 14
-
-struct tc_connmark {
-       tc_gen;
-       __u16 zone;
-};
-
-enum {
-       TCA_CONNMARK_UNSPEC,
-       TCA_CONNMARK_PARMS,
-       TCA_CONNMARK_TM,
-       TCA_CONNMARK_PAD,
-       __TCA_CONNMARK_MAX
-};
-#define TCA_CONNMARK_MAX (__TCA_CONNMARK_MAX - 1)
-
-#endif
diff --git a/include/linux/tc_act/tc_csum.h b/include/linux/tc_act/tc_csum.h
deleted file mode 100644 (file)
index a11bb35..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-#ifndef __LINUX_TC_CSUM_H
-#define __LINUX_TC_CSUM_H
-
-#include <linux/types.h>
-#include <linux/pkt_cls.h>
-
-#define TCA_ACT_CSUM 16
-
-enum {
-       TCA_CSUM_UNSPEC,
-       TCA_CSUM_PARMS,
-       TCA_CSUM_TM,
-       TCA_CSUM_PAD,
-       __TCA_CSUM_MAX
-};
-#define TCA_CSUM_MAX (__TCA_CSUM_MAX - 1)
-
-enum {
-       TCA_CSUM_UPDATE_FLAG_IPV4HDR = 1,
-       TCA_CSUM_UPDATE_FLAG_ICMP    = 2,
-       TCA_CSUM_UPDATE_FLAG_IGMP    = 4,
-       TCA_CSUM_UPDATE_FLAG_TCP     = 8,
-       TCA_CSUM_UPDATE_FLAG_UDP     = 16,
-       TCA_CSUM_UPDATE_FLAG_UDPLITE = 32,
-       TCA_CSUM_UPDATE_FLAG_SCTP    = 64,
-};
-
-struct tc_csum {
-       tc_gen;
-
-       __u32 update_flags;
-};
-
-#endif /* __LINUX_TC_CSUM_H */
diff --git a/include/linux/tc_act/tc_defact.h b/include/linux/tc_act/tc_defact.h
deleted file mode 100644 (file)
index d2a3abb..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-#ifndef __LINUX_TC_DEF_H
-#define __LINUX_TC_DEF_H
-
-#include <linux/pkt_cls.h>
-
-struct tc_defact {
-       tc_gen;
-};
-
-enum {
-       TCA_DEF_UNSPEC,
-       TCA_DEF_TM,
-       TCA_DEF_PARMS,
-       TCA_DEF_DATA,
-       TCA_DEF_PAD,
-       __TCA_DEF_MAX
-};
-#define TCA_DEF_MAX (__TCA_DEF_MAX - 1)
-
-#endif
diff --git a/include/linux/tc_act/tc_gact.h b/include/linux/tc_act/tc_gact.h
deleted file mode 100644 (file)
index 70b536a..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-#ifndef __LINUX_TC_GACT_H
-#define __LINUX_TC_GACT_H
-
-#include <linux/types.h>
-#include <linux/pkt_cls.h>
-
-#define TCA_ACT_GACT 5
-struct tc_gact {
-       tc_gen;
-
-};
-
-struct tc_gact_p {
-#define PGACT_NONE              0
-#define PGACT_NETRAND           1
-#define PGACT_DETERM            2
-#define MAX_RAND                (PGACT_DETERM + 1 )
-       __u16                 ptype;
-       __u16                 pval;
-       int                   paction;
-};
-enum {
-       TCA_GACT_UNSPEC,
-       TCA_GACT_TM,
-       TCA_GACT_PARMS,
-       TCA_GACT_PROB,
-       TCA_GACT_PAD,
-       __TCA_GACT_MAX
-};
-#define TCA_GACT_MAX (__TCA_GACT_MAX - 1)
-#endif
diff --git a/include/linux/tc_act/tc_ife.h b/include/linux/tc_act/tc_ife.h
deleted file mode 100644 (file)
index 7c28178..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-#ifndef __UAPI_TC_IFE_H
-#define __UAPI_TC_IFE_H
-
-#include <linux/types.h>
-#include <linux/pkt_cls.h>
-#include <linux/ife.h>
-
-#define TCA_ACT_IFE 25
-/* Flag bits for now just encoding/decoding; mutually exclusive */
-#define IFE_ENCODE 1
-#define IFE_DECODE 0
-
-struct tc_ife {
-       tc_gen;
-       __u16 flags;
-};
-
-/*XXX: We need to encode the total number of bytes consumed */
-enum {
-       TCA_IFE_UNSPEC,
-       TCA_IFE_PARMS,
-       TCA_IFE_TM,
-       TCA_IFE_DMAC,
-       TCA_IFE_SMAC,
-       TCA_IFE_TYPE,
-       TCA_IFE_METALST,
-       TCA_IFE_PAD,
-       __TCA_IFE_MAX
-};
-#define TCA_IFE_MAX (__TCA_IFE_MAX - 1)
-
-#endif
diff --git a/include/linux/tc_act/tc_ipt.h b/include/linux/tc_act/tc_ipt.h
deleted file mode 100644 (file)
index 7c6e155..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-#ifndef __LINUX_TC_IPT_H
-#define __LINUX_TC_IPT_H
-
-#include <linux/pkt_cls.h>
-
-#define TCA_ACT_IPT 6
-#define TCA_ACT_XT 10
-
-enum {
-       TCA_IPT_UNSPEC,
-       TCA_IPT_TABLE,
-       TCA_IPT_HOOK,
-       TCA_IPT_INDEX,
-       TCA_IPT_CNT,
-       TCA_IPT_TM,
-       TCA_IPT_TARG,
-       TCA_IPT_PAD,
-       __TCA_IPT_MAX
-};
-#define TCA_IPT_MAX (__TCA_IPT_MAX - 1)
-                                                                                
-#endif
diff --git a/include/linux/tc_act/tc_mirred.h b/include/linux/tc_act/tc_mirred.h
deleted file mode 100644 (file)
index 3d7a2b3..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-#ifndef __LINUX_TC_MIR_H
-#define __LINUX_TC_MIR_H
-
-#include <linux/types.h>
-#include <linux/pkt_cls.h>
-
-#define TCA_ACT_MIRRED 8
-#define TCA_EGRESS_REDIR 1  /* packet redirect to EGRESS*/
-#define TCA_EGRESS_MIRROR 2 /* mirror packet to EGRESS */
-#define TCA_INGRESS_REDIR 3  /* packet redirect to INGRESS*/
-#define TCA_INGRESS_MIRROR 4 /* mirror packet to INGRESS */
-                                                                                
-struct tc_mirred {
-       tc_gen;
-       int                     eaction;   /* one of IN/EGRESS_MIRROR/REDIR */
-       __u32                   ifindex;  /* ifindex of egress port */
-};
-                                                                                
-enum {
-       TCA_MIRRED_UNSPEC,
-       TCA_MIRRED_TM,
-       TCA_MIRRED_PARMS,
-       TCA_MIRRED_PAD,
-       __TCA_MIRRED_MAX
-};
-#define TCA_MIRRED_MAX (__TCA_MIRRED_MAX - 1)
-                                                                                
-#endif
diff --git a/include/linux/tc_act/tc_nat.h b/include/linux/tc_act/tc_nat.h
deleted file mode 100644 (file)
index 923457c..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-#ifndef __LINUX_TC_NAT_H
-#define __LINUX_TC_NAT_H
-
-#include <linux/pkt_cls.h>
-#include <linux/types.h>
-
-#define TCA_ACT_NAT 9
-
-enum {
-       TCA_NAT_UNSPEC,
-       TCA_NAT_PARMS,
-       TCA_NAT_TM,
-       TCA_NAT_PAD,
-       __TCA_NAT_MAX
-};
-#define TCA_NAT_MAX (__TCA_NAT_MAX - 1)
-
-#define TCA_NAT_FLAG_EGRESS 1
-
-struct tc_nat {
-       tc_gen;
-       __be32 old_addr;
-       __be32 new_addr;
-       __be32 mask;
-       __u32 flags;
-};
-
-#endif
diff --git a/include/linux/tc_act/tc_pedit.h b/include/linux/tc_act/tc_pedit.h
deleted file mode 100644 (file)
index 143d2b3..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-#ifndef __LINUX_TC_PED_H
-#define __LINUX_TC_PED_H
-
-#include <linux/types.h>
-#include <linux/pkt_cls.h>
-
-#define TCA_ACT_PEDIT 7
-
-enum {
-       TCA_PEDIT_UNSPEC,
-       TCA_PEDIT_TM,
-       TCA_PEDIT_PARMS,
-       TCA_PEDIT_PAD,
-       TCA_PEDIT_PARMS_EX,
-       TCA_PEDIT_KEYS_EX,
-       TCA_PEDIT_KEY_EX,
-       __TCA_PEDIT_MAX
-};
-#define TCA_PEDIT_MAX (__TCA_PEDIT_MAX - 1)
-                                                                                
-enum {
-       TCA_PEDIT_KEY_EX_HTYPE = 1,
-       TCA_PEDIT_KEY_EX_CMD = 2,
-       __TCA_PEDIT_KEY_EX_MAX
-};
-#define TCA_PEDIT_KEY_EX_MAX (__TCA_PEDIT_KEY_EX_MAX - 1)
-
- /* TCA_PEDIT_KEY_EX_HDR_TYPE_NETWROK is a special case for legacy users. It
-  * means no specific header type - offset is relative to the network layer
-  */
-enum pedit_header_type {
-       TCA_PEDIT_KEY_EX_HDR_TYPE_NETWORK = 0,
-       TCA_PEDIT_KEY_EX_HDR_TYPE_ETH = 1,
-       TCA_PEDIT_KEY_EX_HDR_TYPE_IP4 = 2,
-       TCA_PEDIT_KEY_EX_HDR_TYPE_IP6 = 3,
-       TCA_PEDIT_KEY_EX_HDR_TYPE_TCP = 4,
-       TCA_PEDIT_KEY_EX_HDR_TYPE_UDP = 5,
-       __PEDIT_HDR_TYPE_MAX,
-};
-#define TCA_PEDIT_HDR_TYPE_MAX (__PEDIT_HDR_TYPE_MAX - 1)
-
-enum pedit_cmd {
-       TCA_PEDIT_KEY_EX_CMD_SET = 0,
-       TCA_PEDIT_KEY_EX_CMD_ADD = 1,
-       __PEDIT_CMD_MAX,
-};
-#define TCA_PEDIT_CMD_MAX (__PEDIT_CMD_MAX - 1)
-
-struct tc_pedit_key {
-       __u32           mask;  /* AND */
-       __u32           val;   /*XOR */
-       __u32           off;  /*offset */
-       __u32           at;
-       __u32           offmask;
-       __u32           shift;
-};
-                                                                                
-struct tc_pedit_sel {
-       tc_gen;
-       unsigned char           nkeys;
-       unsigned char           flags;
-       struct tc_pedit_key     keys[0];
-};
-#define tc_pedit tc_pedit_sel
-
-#endif
diff --git a/include/linux/tc_act/tc_sample.h b/include/linux/tc_act/tc_sample.h
deleted file mode 100644 (file)
index edc9058..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-#ifndef __LINUX_TC_SAMPLE_H
-#define __LINUX_TC_SAMPLE_H
-
-#include <linux/types.h>
-#include <linux/pkt_cls.h>
-#include <linux/if_ether.h>
-
-#define TCA_ACT_SAMPLE 26
-
-struct tc_sample {
-       tc_gen;
-};
-
-enum {
-       TCA_SAMPLE_UNSPEC,
-       TCA_SAMPLE_TM,
-       TCA_SAMPLE_PARMS,
-       TCA_SAMPLE_RATE,
-       TCA_SAMPLE_TRUNC_SIZE,
-       TCA_SAMPLE_PSAMPLE_GROUP,
-       TCA_SAMPLE_PAD,
-       __TCA_SAMPLE_MAX
-};
-#define TCA_SAMPLE_MAX (__TCA_SAMPLE_MAX - 1)
-
-#endif
diff --git a/include/linux/tc_act/tc_skbedit.h b/include/linux/tc_act/tc_skbedit.h
deleted file mode 100644 (file)
index 2884425..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (c) 2008, Intel Corporation.
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place - Suite 330, Boston, MA 02111-1307 USA.
- *
- * Author: Alexander Duyck <alexander.h.duyck@intel.com>
- */
-
-#ifndef __LINUX_TC_SKBEDIT_H
-#define __LINUX_TC_SKBEDIT_H
-
-#include <linux/pkt_cls.h>
-
-#define TCA_ACT_SKBEDIT 11
-
-#define SKBEDIT_F_PRIORITY             0x1
-#define SKBEDIT_F_QUEUE_MAPPING                0x2
-#define SKBEDIT_F_MARK                 0x4
-#define SKBEDIT_F_PTYPE                        0x8
-#define SKBEDIT_F_MASK                 0x10
-
-struct tc_skbedit {
-       tc_gen;
-};
-
-enum {
-       TCA_SKBEDIT_UNSPEC,
-       TCA_SKBEDIT_TM,
-       TCA_SKBEDIT_PARMS,
-       TCA_SKBEDIT_PRIORITY,
-       TCA_SKBEDIT_QUEUE_MAPPING,
-       TCA_SKBEDIT_MARK,
-       TCA_SKBEDIT_PAD,
-       TCA_SKBEDIT_PTYPE,
-       TCA_SKBEDIT_MASK,
-       __TCA_SKBEDIT_MAX
-};
-#define TCA_SKBEDIT_MAX (__TCA_SKBEDIT_MAX - 1)
-
-#endif
diff --git a/include/linux/tc_act/tc_skbmod.h b/include/linux/tc_act/tc_skbmod.h
deleted file mode 100644 (file)
index 10fc07d..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (c) 2016, Jamal Hadi Salim
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
-*/
-
-#ifndef __LINUX_TC_SKBMOD_H
-#define __LINUX_TC_SKBMOD_H
-
-#include <linux/pkt_cls.h>
-
-#define TCA_ACT_SKBMOD 15
-
-#define SKBMOD_F_DMAC  0x1
-#define SKBMOD_F_SMAC  0x2
-#define SKBMOD_F_ETYPE 0x4
-#define SKBMOD_F_SWAPMAC 0x8
-
-struct tc_skbmod {
-       tc_gen;
-       __u64 flags;
-};
-
-enum {
-       TCA_SKBMOD_UNSPEC,
-       TCA_SKBMOD_TM,
-       TCA_SKBMOD_PARMS,
-       TCA_SKBMOD_DMAC,
-       TCA_SKBMOD_SMAC,
-       TCA_SKBMOD_ETYPE,
-       TCA_SKBMOD_PAD,
-       __TCA_SKBMOD_MAX
-};
-#define TCA_SKBMOD_MAX (__TCA_SKBMOD_MAX - 1)
-
-#endif
diff --git a/include/linux/tc_act/tc_tunnel_key.h b/include/linux/tc_act/tc_tunnel_key.h
deleted file mode 100644 (file)
index afcd4be..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (c) 2016, Amir Vadai <amir@vadai.me>
- * Copyright (c) 2016, Mellanox Technologies. All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- */
-
-#ifndef __LINUX_TC_TUNNEL_KEY_H
-#define __LINUX_TC_TUNNEL_KEY_H
-
-#include <linux/pkt_cls.h>
-
-#define TCA_ACT_TUNNEL_KEY 17
-
-#define TCA_TUNNEL_KEY_ACT_SET     1
-#define TCA_TUNNEL_KEY_ACT_RELEASE  2
-
-struct tc_tunnel_key {
-       tc_gen;
-       int t_action;
-};
-
-enum {
-       TCA_TUNNEL_KEY_UNSPEC,
-       TCA_TUNNEL_KEY_TM,
-       TCA_TUNNEL_KEY_PARMS,
-       TCA_TUNNEL_KEY_ENC_IPV4_SRC,    /* be32 */
-       TCA_TUNNEL_KEY_ENC_IPV4_DST,    /* be32 */
-       TCA_TUNNEL_KEY_ENC_IPV6_SRC,    /* struct in6_addr */
-       TCA_TUNNEL_KEY_ENC_IPV6_DST,    /* struct in6_addr */
-       TCA_TUNNEL_KEY_ENC_KEY_ID,      /* be64 */
-       TCA_TUNNEL_KEY_PAD,
-       TCA_TUNNEL_KEY_ENC_DST_PORT,    /* be16 */
-       TCA_TUNNEL_KEY_NO_CSUM,         /* u8 */
-       __TCA_TUNNEL_KEY_MAX,
-};
-
-#define TCA_TUNNEL_KEY_MAX (__TCA_TUNNEL_KEY_MAX - 1)
-
-#endif
diff --git a/include/linux/tc_act/tc_vlan.h b/include/linux/tc_act/tc_vlan.h
deleted file mode 100644 (file)
index bddb272..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (c) 2014 Jiri Pirko <jiri@resnulli.us>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- */
-
-#ifndef __LINUX_TC_VLAN_H
-#define __LINUX_TC_VLAN_H
-
-#include <linux/pkt_cls.h>
-
-#define TCA_ACT_VLAN 12
-
-#define TCA_VLAN_ACT_POP       1
-#define TCA_VLAN_ACT_PUSH      2
-#define TCA_VLAN_ACT_MODIFY    3
-
-struct tc_vlan {
-       tc_gen;
-       int v_action;
-};
-
-enum {
-       TCA_VLAN_UNSPEC,
-       TCA_VLAN_TM,
-       TCA_VLAN_PARMS,
-       TCA_VLAN_PUSH_VLAN_ID,
-       TCA_VLAN_PUSH_VLAN_PROTOCOL,
-       TCA_VLAN_PAD,
-       TCA_VLAN_PUSH_VLAN_PRIORITY,
-       __TCA_VLAN_MAX,
-};
-#define TCA_VLAN_MAX (__TCA_VLAN_MAX - 1)
-
-#endif
diff --git a/include/linux/tc_ematch/tc_em_cmp.h b/include/linux/tc_ematch/tc_em_cmp.h
deleted file mode 100644 (file)
index f34bb1b..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-#ifndef __LINUX_TC_EM_CMP_H
-#define __LINUX_TC_EM_CMP_H
-
-#include <linux/types.h>
-#include <linux/pkt_cls.h>
-
-struct tcf_em_cmp {
-       __u32           val;
-       __u32           mask;
-       __u16           off;
-       __u8            align:4;
-       __u8            flags:4;
-       __u8            layer:4;
-       __u8            opnd:4;
-};
-
-enum {
-       TCF_EM_ALIGN_U8  = 1,
-       TCF_EM_ALIGN_U16 = 2,
-       TCF_EM_ALIGN_U32 = 4
-};
-
-#define TCF_EM_CMP_TRANS       1
-
-#endif
diff --git a/include/linux/tc_ematch/tc_em_meta.h b/include/linux/tc_ematch/tc_em_meta.h
deleted file mode 100644 (file)
index b11f8ce..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-#ifndef __LINUX_TC_EM_META_H
-#define __LINUX_TC_EM_META_H
-
-#include <linux/types.h>
-#include <linux/pkt_cls.h>
-
-enum {
-       TCA_EM_META_UNSPEC,
-       TCA_EM_META_HDR,
-       TCA_EM_META_LVALUE,
-       TCA_EM_META_RVALUE,
-       __TCA_EM_META_MAX
-};
-#define TCA_EM_META_MAX (__TCA_EM_META_MAX - 1)
-
-struct tcf_meta_val {
-       __u16                   kind;
-       __u8                    shift;
-       __u8                    op;
-};
-
-#define TCF_META_TYPE_MASK     (0xf << 12)
-#define TCF_META_TYPE(kind)    (((kind) & TCF_META_TYPE_MASK) >> 12)
-#define TCF_META_ID_MASK       0x7ff
-#define TCF_META_ID(kind)      ((kind) & TCF_META_ID_MASK)
-
-enum {
-       TCF_META_TYPE_VAR,
-       TCF_META_TYPE_INT,
-       __TCF_META_TYPE_MAX
-};
-#define TCF_META_TYPE_MAX (__TCF_META_TYPE_MAX - 1)
-
-enum {
-       TCF_META_ID_VALUE,
-       TCF_META_ID_RANDOM,
-       TCF_META_ID_LOADAVG_0,
-       TCF_META_ID_LOADAVG_1,
-       TCF_META_ID_LOADAVG_2,
-       TCF_META_ID_DEV,
-       TCF_META_ID_PRIORITY,
-       TCF_META_ID_PROTOCOL,
-       TCF_META_ID_PKTTYPE,
-       TCF_META_ID_PKTLEN,
-       TCF_META_ID_DATALEN,
-       TCF_META_ID_MACLEN,
-       TCF_META_ID_NFMARK,
-       TCF_META_ID_TCINDEX,
-       TCF_META_ID_RTCLASSID,
-       TCF_META_ID_RTIIF,
-       TCF_META_ID_SK_FAMILY,
-       TCF_META_ID_SK_STATE,
-       TCF_META_ID_SK_REUSE,
-       TCF_META_ID_SK_BOUND_IF,
-       TCF_META_ID_SK_REFCNT,
-       TCF_META_ID_SK_SHUTDOWN,
-       TCF_META_ID_SK_PROTO,
-       TCF_META_ID_SK_TYPE,
-       TCF_META_ID_SK_RCVBUF,
-       TCF_META_ID_SK_RMEM_ALLOC,
-       TCF_META_ID_SK_WMEM_ALLOC,
-       TCF_META_ID_SK_OMEM_ALLOC,
-       TCF_META_ID_SK_WMEM_QUEUED,
-       TCF_META_ID_SK_RCV_QLEN,
-       TCF_META_ID_SK_SND_QLEN,
-       TCF_META_ID_SK_ERR_QLEN,
-       TCF_META_ID_SK_FORWARD_ALLOCS,
-       TCF_META_ID_SK_SNDBUF,
-       TCF_META_ID_SK_ALLOCS,
-       __TCF_META_ID_SK_ROUTE_CAPS,    /* unimplemented but in ABI already */
-       TCF_META_ID_SK_HASH,
-       TCF_META_ID_SK_LINGERTIME,
-       TCF_META_ID_SK_ACK_BACKLOG,
-       TCF_META_ID_SK_MAX_ACK_BACKLOG,
-       TCF_META_ID_SK_PRIO,
-       TCF_META_ID_SK_RCVLOWAT,
-       TCF_META_ID_SK_RCVTIMEO,
-       TCF_META_ID_SK_SNDTIMEO,
-       TCF_META_ID_SK_SENDMSG_OFF,
-       TCF_META_ID_SK_WRITE_PENDING,
-       TCF_META_ID_VLAN_TAG,
-       TCF_META_ID_RXHASH,
-       __TCF_META_ID_MAX
-};
-#define TCF_META_ID_MAX (__TCF_META_ID_MAX - 1)
-
-struct tcf_meta_hdr {
-       struct tcf_meta_val     left;
-       struct tcf_meta_val     right;
-};
-
-#endif
diff --git a/include/linux/tc_ematch/tc_em_nbyte.h b/include/linux/tc_ematch/tc_em_nbyte.h
deleted file mode 100644 (file)
index 7172cfb..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-#ifndef __LINUX_TC_EM_NBYTE_H
-#define __LINUX_TC_EM_NBYTE_H
-
-#include <linux/types.h>
-#include <linux/pkt_cls.h>
-
-struct tcf_em_nbyte {
-       __u16           off;
-       __u16           len:12;
-       __u8            layer:4;
-};
-
-#endif
diff --git a/include/linux/tcp.h b/include/linux/tcp.h
deleted file mode 100644 (file)
index 8edad3f..0000000
+++ /dev/null
@@ -1,268 +0,0 @@
-/*
- * INET                An implementation of the TCP/IP protocol suite for the LINUX
- *             operating system.  INET is implemented using the  BSD Socket
- *             interface as the means of communication with the user level.
- *
- *             Definitions for the TCP protocol.
- *
- * Version:    @(#)tcp.h       1.0.2   04/28/93
- *
- * Author:     Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
- *
- *             This program is free software; you can redistribute it and/or
- *             modify it under the terms of the GNU General Public License
- *             as published by the Free Software Foundation; either version
- *             2 of the License, or (at your option) any later version.
- */
-#ifndef _LINUX_TCP_H
-#define _LINUX_TCP_H
-
-#include <linux/types.h>
-#include <asm/byteorder.h>
-#include <linux/socket.h>
-
-struct tcphdr {
-       __be16  source;
-       __be16  dest;
-       __be32  seq;
-       __be32  ack_seq;
-#if defined(__LITTLE_ENDIAN_BITFIELD)
-       __u16   res1:4,
-               doff:4,
-               fin:1,
-               syn:1,
-               rst:1,
-               psh:1,
-               ack:1,
-               urg:1,
-               ece:1,
-               cwr:1;
-#elif defined(__BIG_ENDIAN_BITFIELD)
-       __u16   doff:4,
-               res1:4,
-               cwr:1,
-               ece:1,
-               urg:1,
-               ack:1,
-               psh:1,
-               rst:1,
-               syn:1,
-               fin:1;
-#else
-#error "Adjust your <asm/byteorder.h> defines"
-#endif 
-       __be16  window;
-       __sum16 check;
-       __be16  urg_ptr;
-};
-
-/*
- *     The union cast uses a gcc extension to avoid aliasing problems
- *  (union is compatible to any of its members)
- *  This means this part of the code is -fstrict-aliasing safe now.
- */
-union tcp_word_hdr { 
-       struct tcphdr hdr;
-       __be32            words[5];
-}; 
-
-#define tcp_flag_word(tp) ( ((union tcp_word_hdr *)(tp))->words [3]) 
-
-enum { 
-       TCP_FLAG_CWR = __constant_cpu_to_be32(0x00800000),
-       TCP_FLAG_ECE = __constant_cpu_to_be32(0x00400000),
-       TCP_FLAG_URG = __constant_cpu_to_be32(0x00200000),
-       TCP_FLAG_ACK = __constant_cpu_to_be32(0x00100000),
-       TCP_FLAG_PSH = __constant_cpu_to_be32(0x00080000),
-       TCP_FLAG_RST = __constant_cpu_to_be32(0x00040000),
-       TCP_FLAG_SYN = __constant_cpu_to_be32(0x00020000),
-       TCP_FLAG_FIN = __constant_cpu_to_be32(0x00010000),
-       TCP_RESERVED_BITS = __constant_cpu_to_be32(0x0F000000),
-       TCP_DATA_OFFSET = __constant_cpu_to_be32(0xF0000000)
-}; 
-
-/*
- * TCP general constants
- */
-#define TCP_MSS_DEFAULT                 536U   /* IPv4 (RFC1122, RFC2581) */
-#define TCP_MSS_DESIRED                1220U   /* IPv6 (tunneled), EDNS0 (RFC3226) */
-
-/* TCP socket options */
-#define TCP_NODELAY            1       /* Turn off Nagle's algorithm. */
-#define TCP_MAXSEG             2       /* Limit MSS */
-#define TCP_CORK               3       /* Never send partially complete segments */
-#define TCP_KEEPIDLE           4       /* Start keeplives after this period */
-#define TCP_KEEPINTVL          5       /* Interval between keepalives */
-#define TCP_KEEPCNT            6       /* Number of keepalives before death */
-#define TCP_SYNCNT             7       /* Number of SYN retransmits */
-#define TCP_LINGER2            8       /* Life time of orphaned FIN-WAIT-2 state */
-#define TCP_DEFER_ACCEPT       9       /* Wake up listener only when data arrive */
-#define TCP_WINDOW_CLAMP       10      /* Bound advertised window */
-#define TCP_INFO               11      /* Information about this connection. */
-#define TCP_QUICKACK           12      /* Block/reenable quick acks */
-#define TCP_CONGESTION         13      /* Congestion control algorithm */
-#define TCP_MD5SIG             14      /* TCP MD5 Signature (RFC2385) */
-#define TCP_THIN_LINEAR_TIMEOUTS 16      /* Use linear timeouts for thin streams*/
-#define TCP_THIN_DUPACK         17      /* Fast retrans. after 1 dupack */
-#define TCP_USER_TIMEOUT       18      /* How long for loss retry before timeout */
-#define TCP_REPAIR             19      /* TCP sock is under repair right now */
-#define TCP_REPAIR_QUEUE       20
-#define TCP_QUEUE_SEQ          21
-#define TCP_REPAIR_OPTIONS     22
-#define TCP_FASTOPEN           23      /* Enable FastOpen on listeners */
-#define TCP_TIMESTAMP          24
-#define TCP_NOTSENT_LOWAT      25      /* limit number of unsent bytes in write queue */
-#define TCP_CC_INFO            26      /* Get Congestion Control (optional) info */
-#define TCP_SAVE_SYN           27      /* Record SYN headers for new connections */
-#define TCP_SAVED_SYN          28      /* Get SYN headers recorded for connection */
-#define TCP_REPAIR_WINDOW      29      /* Get/set window parameters */
-#define TCP_FASTOPEN_CONNECT   30      /* Attempt FastOpen with connect */
-#define TCP_ULP                        31      /* Attach a ULP to a TCP connection */
-#define TCP_MD5SIG_EXT         32      /* TCP MD5 Signature with extensions */
-
-struct tcp_repair_opt {
-       __u32   opt_code;
-       __u32   opt_val;
-};
-
-struct tcp_repair_window {
-       __u32   snd_wl1;
-       __u32   snd_wnd;
-       __u32   max_window;
-
-       __u32   rcv_wnd;
-       __u32   rcv_wup;
-};
-
-enum {
-       TCP_NO_QUEUE,
-       TCP_RECV_QUEUE,
-       TCP_SEND_QUEUE,
-       TCP_QUEUES_NR,
-};
-
-/* for TCP_INFO socket option */
-#define TCPI_OPT_TIMESTAMPS    1
-#define TCPI_OPT_SACK          2
-#define TCPI_OPT_WSCALE                4
-#define TCPI_OPT_ECN           8 /* ECN was negociated at TCP session init */
-#define TCPI_OPT_ECN_SEEN      16 /* we received at least one packet with ECT */
-#define TCPI_OPT_SYN_DATA      32 /* SYN-ACK acked data in SYN sent or rcvd */
-
-enum tcp_ca_state {
-       TCP_CA_Open = 0,
-#define TCPF_CA_Open   (1<<TCP_CA_Open)
-       TCP_CA_Disorder = 1,
-#define TCPF_CA_Disorder (1<<TCP_CA_Disorder)
-       TCP_CA_CWR = 2,
-#define TCPF_CA_CWR    (1<<TCP_CA_CWR)
-       TCP_CA_Recovery = 3,
-#define TCPF_CA_Recovery (1<<TCP_CA_Recovery)
-       TCP_CA_Loss = 4
-#define TCPF_CA_Loss   (1<<TCP_CA_Loss)
-};
-
-struct tcp_info {
-       __u8    tcpi_state;
-       __u8    tcpi_ca_state;
-       __u8    tcpi_retransmits;
-       __u8    tcpi_probes;
-       __u8    tcpi_backoff;
-       __u8    tcpi_options;
-       __u8    tcpi_snd_wscale : 4, tcpi_rcv_wscale : 4;
-       __u8    tcpi_delivery_rate_app_limited:1;
-
-       __u32   tcpi_rto;
-       __u32   tcpi_ato;
-       __u32   tcpi_snd_mss;
-       __u32   tcpi_rcv_mss;
-
-       __u32   tcpi_unacked;
-       __u32   tcpi_sacked;
-       __u32   tcpi_lost;
-       __u32   tcpi_retrans;
-       __u32   tcpi_fackets;
-
-       /* Times. */
-       __u32   tcpi_last_data_sent;
-       __u32   tcpi_last_ack_sent;     /* Not remembered, sorry. */
-       __u32   tcpi_last_data_recv;
-       __u32   tcpi_last_ack_recv;
-
-       /* Metrics. */
-       __u32   tcpi_pmtu;
-       __u32   tcpi_rcv_ssthresh;
-       __u32   tcpi_rtt;
-       __u32   tcpi_rttvar;
-       __u32   tcpi_snd_ssthresh;
-       __u32   tcpi_snd_cwnd;
-       __u32   tcpi_advmss;
-       __u32   tcpi_reordering;
-
-       __u32   tcpi_rcv_rtt;
-       __u32   tcpi_rcv_space;
-
-       __u32   tcpi_total_retrans;
-
-       __u64   tcpi_pacing_rate;
-       __u64   tcpi_max_pacing_rate;
-       __u64   tcpi_bytes_acked;    /* RFC4898 tcpEStatsAppHCThruOctetsAcked */
-       __u64   tcpi_bytes_received; /* RFC4898 tcpEStatsAppHCThruOctetsReceived */
-       __u32   tcpi_segs_out;       /* RFC4898 tcpEStatsPerfSegsOut */
-       __u32   tcpi_segs_in;        /* RFC4898 tcpEStatsPerfSegsIn */
-
-       __u32   tcpi_notsent_bytes;
-       __u32   tcpi_min_rtt;
-       __u32   tcpi_data_segs_in;      /* RFC4898 tcpEStatsDataSegsIn */
-       __u32   tcpi_data_segs_out;     /* RFC4898 tcpEStatsDataSegsOut */
-
-       __u64   tcpi_delivery_rate;
-
-       __u64   tcpi_busy_time;      /* Time (usec) busy sending data */
-       __u64   tcpi_rwnd_limited;   /* Time (usec) limited by receive window */
-       __u64   tcpi_sndbuf_limited; /* Time (usec) limited by send buffer */
-};
-
-/* netlink attributes types for SCM_TIMESTAMPING_OPT_STATS */
-enum {
-       TCP_NLA_PAD,
-       TCP_NLA_BUSY,           /* Time (usec) busy sending data */
-       TCP_NLA_RWND_LIMITED,   /* Time (usec) limited by receive window */
-       TCP_NLA_SNDBUF_LIMITED, /* Time (usec) limited by send buffer */
-       TCP_NLA_DATA_SEGS_OUT,  /* Data pkts sent including retransmission */
-       TCP_NLA_TOTAL_RETRANS,  /* Data pkts retransmitted */
-       TCP_NLA_PACING_RATE,    /* Pacing rate in bytes per second */
-       TCP_NLA_DELIVERY_RATE,  /* Delivery rate in bytes per second */
-       TCP_NLA_SND_CWND,       /* Sending congestion window */
-       TCP_NLA_REORDERING,     /* Reordering metric */
-       TCP_NLA_MIN_RTT,        /* minimum RTT */
-       TCP_NLA_RECUR_RETRANS,  /* Recurring retransmits for the current pkt */
-       TCP_NLA_DELIVERY_RATE_APP_LMT, /* delivery rate application limited ? */
-
-};
-
-/* for TCP_MD5SIG socket option */
-#define TCP_MD5SIG_MAXKEYLEN   80
-
-/* tcp_md5sig extension flags for TCP_MD5SIG_EXT */
-#define TCP_MD5SIG_FLAG_PREFIX         1       /* address prefix length */
-
-struct tcp_md5sig {
-       struct __kernel_sockaddr_storage tcpm_addr;     /* address associated */
-       __u8    tcpm_flags;                             /* extension flags */
-       __u8    tcpm_prefixlen;                         /* address prefix */
-       __u16   tcpm_keylen;                            /* key length */
-       __u32   __tcpm_pad;                             /* zero */
-       __u8    tcpm_key[TCP_MD5SIG_MAXKEYLEN];         /* key (binary) */
-};
-
-/* INET_DIAG_MD5SIG */
-struct tcp_diag_md5sig {
-       __u8    tcpm_family;
-       __u8    tcpm_prefixlen;
-       __u16   tcpm_keylen;
-       __be32  tcpm_addr[4];
-       __u8    tcpm_key[TCP_MD5SIG_MAXKEYLEN];
-};
-
-#endif /* _LINUX_TCP_H */
diff --git a/include/linux/tcp_metrics.h b/include/linux/tcp_metrics.h
deleted file mode 100644 (file)
index 80ad90d..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-/* tcp_metrics.h - TCP Metrics Interface */
-
-#ifndef _LINUX_TCP_METRICS_H
-#define _LINUX_TCP_METRICS_H
-
-#include <linux/types.h>
-
-/* NETLINK_GENERIC related info
- */
-#define TCP_METRICS_GENL_NAME          "tcp_metrics"
-#define TCP_METRICS_GENL_VERSION       0x1
-
-enum tcp_metric_index {
-       TCP_METRIC_RTT,         /* in ms units */
-       TCP_METRIC_RTTVAR,      /* in ms units */
-       TCP_METRIC_SSTHRESH,
-       TCP_METRIC_CWND,
-       TCP_METRIC_REORDERING,
-
-       TCP_METRIC_RTT_US,      /* in usec units */
-       TCP_METRIC_RTTVAR_US,   /* in usec units */
-
-       /* Always last.  */
-       __TCP_METRIC_MAX,
-};
-
-#define TCP_METRIC_MAX (__TCP_METRIC_MAX - 1)
-
-enum {
-       TCP_METRICS_ATTR_UNSPEC,
-       TCP_METRICS_ATTR_ADDR_IPV4,             /* u32 */
-       TCP_METRICS_ATTR_ADDR_IPV6,             /* binary */
-       TCP_METRICS_ATTR_AGE,                   /* msecs */
-       TCP_METRICS_ATTR_TW_TSVAL,              /* u32, raw, rcv tsval */
-       TCP_METRICS_ATTR_TW_TS_STAMP,           /* s32, sec age */
-       TCP_METRICS_ATTR_VALS,                  /* nested +1, u32 */
-       TCP_METRICS_ATTR_FOPEN_MSS,             /* u16 */
-       TCP_METRICS_ATTR_FOPEN_SYN_DROPS,       /* u16, count of drops */
-       TCP_METRICS_ATTR_FOPEN_SYN_DROP_TS,     /* msecs age */
-       TCP_METRICS_ATTR_FOPEN_COOKIE,          /* binary */
-       TCP_METRICS_ATTR_SADDR_IPV4,            /* u32 */
-       TCP_METRICS_ATTR_SADDR_IPV6,            /* binary */
-       TCP_METRICS_ATTR_PAD,
-
-       __TCP_METRICS_ATTR_MAX,
-};
-
-#define TCP_METRICS_ATTR_MAX   (__TCP_METRICS_ATTR_MAX - 1)
-
-enum {
-       TCP_METRICS_CMD_UNSPEC,
-       TCP_METRICS_CMD_GET,
-       TCP_METRICS_CMD_DEL,
-
-       __TCP_METRICS_CMD_MAX,
-};
-
-#define TCP_METRICS_CMD_MAX    (__TCP_METRICS_CMD_MAX - 1)
-
-#endif /* _LINUX_TCP_METRICS_H */
diff --git a/include/linux/tipc.h b/include/linux/tipc.h
deleted file mode 100644 (file)
index 924fb5c..0000000
+++ /dev/null
@@ -1,256 +0,0 @@
-/*
- * include/uapi/linux/tipc.h: Header for TIPC socket interface
- *
- * Copyright (c) 2003-2006, 2015-2016 Ericsson AB
- * Copyright (c) 2005, 2010-2011, Wind River Systems
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the names of the copyright holders nor the names of its
- *    contributors may be used to endorse or promote products derived from
- *    this software without specific prior written permission.
- *
- * Alternatively, this software may be distributed under the terms of the
- * GNU General Public License ("GPL") version 2 as published by the Free
- * Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef _LINUX_TIPC_H_
-#define _LINUX_TIPC_H_
-
-#include <linux/types.h>
-#include <linux/sockios.h>
-
-/*
- * TIPC addressing primitives
- */
-
-struct tipc_portid {
-       __u32 ref;
-       __u32 node;
-};
-
-struct tipc_name {
-       __u32 type;
-       __u32 instance;
-};
-
-struct tipc_name_seq {
-       __u32 type;
-       __u32 lower;
-       __u32 upper;
-};
-
-/* TIPC Address Size, Offset, Mask specification for Z.C.N
- */
-#define TIPC_NODE_BITS          12
-#define TIPC_CLUSTER_BITS       12
-#define TIPC_ZONE_BITS          8
-
-#define TIPC_NODE_OFFSET        0
-#define TIPC_CLUSTER_OFFSET     TIPC_NODE_BITS
-#define TIPC_ZONE_OFFSET        (TIPC_CLUSTER_OFFSET + TIPC_CLUSTER_BITS)
-
-#define TIPC_NODE_SIZE          ((1UL << TIPC_NODE_BITS) - 1)
-#define TIPC_CLUSTER_SIZE       ((1UL << TIPC_CLUSTER_BITS) - 1)
-#define TIPC_ZONE_SIZE          ((1UL << TIPC_ZONE_BITS) - 1)
-
-#define TIPC_NODE_MASK         (TIPC_NODE_SIZE << TIPC_NODE_OFFSET)
-#define TIPC_CLUSTER_MASK      (TIPC_CLUSTER_SIZE << TIPC_CLUSTER_OFFSET)
-#define TIPC_ZONE_MASK         (TIPC_ZONE_SIZE << TIPC_ZONE_OFFSET)
-
-#define TIPC_ZONE_CLUSTER_MASK (TIPC_ZONE_MASK | TIPC_CLUSTER_MASK)
-
-static __inline__ __u32 tipc_addr(unsigned int zone,
-                             unsigned int cluster,
-                             unsigned int node)
-{
-       return (zone << TIPC_ZONE_OFFSET) |
-               (cluster << TIPC_CLUSTER_OFFSET) |
-               node;
-}
-
-static __inline__ unsigned int tipc_zone(__u32 addr)
-{
-       return addr >> TIPC_ZONE_OFFSET;
-}
-
-static __inline__ unsigned int tipc_cluster(__u32 addr)
-{
-       return (addr & TIPC_CLUSTER_MASK) >> TIPC_CLUSTER_OFFSET;
-}
-
-static __inline__ unsigned int tipc_node(__u32 addr)
-{
-       return addr & TIPC_NODE_MASK;
-}
-
-/*
- * Application-accessible port name types
- */
-
-#define TIPC_CFG_SRV           0       /* configuration service name type */
-#define TIPC_TOP_SRV           1       /* topology service name type */
-#define TIPC_LINK_STATE                2       /* link state name type */
-#define TIPC_RESERVED_TYPES    64      /* lowest user-publishable name type */
-
-/*
- * Publication scopes when binding port names and port name sequences
- */
-
-#define TIPC_ZONE_SCOPE                1
-#define TIPC_CLUSTER_SCOPE     2
-#define TIPC_NODE_SCOPE                3
-
-/*
- * Limiting values for messages
- */
-
-#define TIPC_MAX_USER_MSG_SIZE 66000U
-
-/*
- * Message importance levels
- */
-
-#define TIPC_LOW_IMPORTANCE            0
-#define TIPC_MEDIUM_IMPORTANCE         1
-#define TIPC_HIGH_IMPORTANCE           2
-#define TIPC_CRITICAL_IMPORTANCE       3
-
-/*
- * Msg rejection/connection shutdown reasons
- */
-
-#define TIPC_OK                        0
-#define TIPC_ERR_NO_NAME       1
-#define TIPC_ERR_NO_PORT       2
-#define TIPC_ERR_NO_NODE       3
-#define TIPC_ERR_OVERLOAD      4
-#define TIPC_CONN_SHUTDOWN     5
-
-/*
- * TIPC topology subscription service definitions
- */
-
-#define TIPC_SUB_PORTS         0x01    /* filter for port availability */
-#define TIPC_SUB_SERVICE       0x02    /* filter for service availability */
-#define TIPC_SUB_CANCEL                0x04    /* cancel a subscription */
-
-#define TIPC_WAIT_FOREVER      (~0)    /* timeout for permanent subscription */
-
-struct tipc_subscr {
-       struct tipc_name_seq seq;       /* name sequence of interest */
-       __u32 timeout;                  /* subscription duration (in ms) */
-       __u32 filter;                   /* bitmask of filter options */
-       char usr_handle[8];             /* available for subscriber use */
-};
-
-#define TIPC_PUBLISHED         1       /* publication event */
-#define TIPC_WITHDRAWN         2       /* withdraw event */
-#define TIPC_SUBSCR_TIMEOUT    3       /* subscription timeout event */
-
-struct tipc_event {
-       __u32 event;                    /* event type */
-       __u32 found_lower;              /* matching name seq instances */
-       __u32 found_upper;              /*    "      "    "     "      */
-       struct tipc_portid port;        /* associated port */
-       struct tipc_subscr s;           /* associated subscription */
-};
-
-/*
- * Socket API
- */
-
-#ifndef AF_TIPC
-#define AF_TIPC                30
-#endif
-
-#ifndef PF_TIPC
-#define PF_TIPC                AF_TIPC
-#endif
-
-#ifndef SOL_TIPC
-#define SOL_TIPC       271
-#endif
-
-#define TIPC_ADDR_NAMESEQ      1
-#define TIPC_ADDR_MCAST                1
-#define TIPC_ADDR_NAME         2
-#define TIPC_ADDR_ID           3
-
-struct sockaddr_tipc {
-       unsigned short family;
-       unsigned char  addrtype;
-       signed   char  scope;
-       union {
-               struct tipc_portid id;
-               struct tipc_name_seq nameseq;
-               struct {
-                       struct tipc_name name;
-                       __u32 domain;
-               } name;
-       } addr;
-};
-
-/*
- * Ancillary data objects supported by recvmsg()
- */
-
-#define TIPC_ERRINFO   1       /* error info */
-#define TIPC_RETDATA   2       /* returned data */
-#define TIPC_DESTNAME  3       /* destination name */
-
-/*
- * TIPC-specific socket option names
- */
-
-#define TIPC_IMPORTANCE                127     /* Default: TIPC_LOW_IMPORTANCE */
-#define TIPC_SRC_DROPPABLE     128     /* Default: based on socket type */
-#define TIPC_DEST_DROPPABLE    129     /* Default: based on socket type */
-#define TIPC_CONN_TIMEOUT      130     /* Default: 8000 (ms)  */
-#define TIPC_NODE_RECVQ_DEPTH  131     /* Default: none (read only) */
-#define TIPC_SOCK_RECVQ_DEPTH  132     /* Default: none (read only) */
-#define TIPC_MCAST_BROADCAST    133     /* Default: TIPC selects. No arg */
-#define TIPC_MCAST_REPLICAST    134     /* Default: TIPC selects. No arg */
-
-/*
- * Maximum sizes of TIPC bearer-related names (including terminating NULL)
- * The string formatting for each name element is:
- * media: media
- * interface: media:interface name
- * link: Z.C.N:interface-Z.C.N:interface
- *
- */
-
-#define TIPC_MAX_MEDIA_NAME    16
-#define TIPC_MAX_IF_NAME       16
-#define TIPC_MAX_BEARER_NAME   32
-#define TIPC_MAX_LINK_NAME     60
-
-#define SIOCGETLINKNAME                SIOCPROTOPRIVATE
-
-struct tipc_sioc_ln_req {
-       __u32 peer;
-       __u32 bearer_id;
-       char linkname[TIPC_MAX_LINK_NAME];
-};
-#endif
diff --git a/include/linux/tipc_netlink.h b/include/linux/tipc_netlink.h
deleted file mode 100644 (file)
index f9edd20..0000000
+++ /dev/null
@@ -1,294 +0,0 @@
-/*
- * Copyright (c) 2014, Ericsson AB
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the names of the copyright holders nor the names of its
- *    contributors may be used to endorse or promote products derived from
- *    this software without specific prior written permission.
- *
- * Alternatively, this software may be distributed under the terms of the
- * GNU General Public License ("GPL") version 2 as published by the Free
- * Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef _LINUX_TIPC_NETLINK_H_
-#define _LINUX_TIPC_NETLINK_H_
-
-#define TIPC_GENL_V2_NAME      "TIPCv2"
-#define TIPC_GENL_V2_VERSION   0x1
-
-/* Netlink commands */
-enum {
-       TIPC_NL_UNSPEC,
-       TIPC_NL_LEGACY,
-       TIPC_NL_BEARER_DISABLE,
-       TIPC_NL_BEARER_ENABLE,
-       TIPC_NL_BEARER_GET,
-       TIPC_NL_BEARER_SET,
-       TIPC_NL_SOCK_GET,
-       TIPC_NL_PUBL_GET,
-       TIPC_NL_LINK_GET,
-       TIPC_NL_LINK_SET,
-       TIPC_NL_LINK_RESET_STATS,
-       TIPC_NL_MEDIA_GET,
-       TIPC_NL_MEDIA_SET,
-       TIPC_NL_NODE_GET,
-       TIPC_NL_NET_GET,
-       TIPC_NL_NET_SET,
-       TIPC_NL_NAME_TABLE_GET,
-       TIPC_NL_MON_SET,
-       TIPC_NL_MON_GET,
-       TIPC_NL_MON_PEER_GET,
-       TIPC_NL_PEER_REMOVE,
-       TIPC_NL_BEARER_ADD,
-       TIPC_NL_UDP_GET_REMOTEIP,
-
-       __TIPC_NL_CMD_MAX,
-       TIPC_NL_CMD_MAX = __TIPC_NL_CMD_MAX - 1
-};
-
-/* Top level netlink attributes */
-enum {
-       TIPC_NLA_UNSPEC,
-       TIPC_NLA_BEARER,                /* nest */
-       TIPC_NLA_SOCK,                  /* nest */
-       TIPC_NLA_PUBL,                  /* nest */
-       TIPC_NLA_LINK,                  /* nest */
-       TIPC_NLA_MEDIA,                 /* nest */
-       TIPC_NLA_NODE,                  /* nest */
-       TIPC_NLA_NET,                   /* nest */
-       TIPC_NLA_NAME_TABLE,            /* nest */
-       TIPC_NLA_MON,                   /* nest */
-       TIPC_NLA_MON_PEER,              /* nest */
-
-       __TIPC_NLA_MAX,
-       TIPC_NLA_MAX = __TIPC_NLA_MAX - 1
-};
-
-/* Bearer info */
-enum {
-       TIPC_NLA_BEARER_UNSPEC,
-       TIPC_NLA_BEARER_NAME,           /* string */
-       TIPC_NLA_BEARER_PROP,           /* nest */
-       TIPC_NLA_BEARER_DOMAIN,         /* u32 */
-       TIPC_NLA_BEARER_UDP_OPTS,       /* nest */
-
-       __TIPC_NLA_BEARER_MAX,
-       TIPC_NLA_BEARER_MAX = __TIPC_NLA_BEARER_MAX - 1
-};
-
-enum {
-       TIPC_NLA_UDP_UNSPEC,
-       TIPC_NLA_UDP_LOCAL,             /* sockaddr_storage */
-       TIPC_NLA_UDP_REMOTE,            /* sockaddr_storage */
-       TIPC_NLA_UDP_MULTI_REMOTEIP,    /* flag */
-
-       __TIPC_NLA_UDP_MAX,
-       TIPC_NLA_UDP_MAX = __TIPC_NLA_UDP_MAX - 1
-};
-/* Socket info */
-enum {
-       TIPC_NLA_SOCK_UNSPEC,
-       TIPC_NLA_SOCK_ADDR,             /* u32 */
-       TIPC_NLA_SOCK_REF,              /* u32 */
-       TIPC_NLA_SOCK_CON,              /* nest */
-       TIPC_NLA_SOCK_HAS_PUBL,         /* flag */
-
-       __TIPC_NLA_SOCK_MAX,
-       TIPC_NLA_SOCK_MAX = __TIPC_NLA_SOCK_MAX - 1
-};
-
-/* Link info */
-enum {
-       TIPC_NLA_LINK_UNSPEC,
-       TIPC_NLA_LINK_NAME,             /* string */
-       TIPC_NLA_LINK_DEST,             /* u32 */
-       TIPC_NLA_LINK_MTU,              /* u32 */
-       TIPC_NLA_LINK_BROADCAST,        /* flag */
-       TIPC_NLA_LINK_UP,               /* flag */
-       TIPC_NLA_LINK_ACTIVE,           /* flag */
-       TIPC_NLA_LINK_PROP,             /* nest */
-       TIPC_NLA_LINK_STATS,            /* nest */
-       TIPC_NLA_LINK_RX,               /* u32 */
-       TIPC_NLA_LINK_TX,               /* u32 */
-
-       __TIPC_NLA_LINK_MAX,
-       TIPC_NLA_LINK_MAX = __TIPC_NLA_LINK_MAX - 1
-};
-
-/* Media info */
-enum {
-       TIPC_NLA_MEDIA_UNSPEC,
-       TIPC_NLA_MEDIA_NAME,            /* string */
-       TIPC_NLA_MEDIA_PROP,            /* nest */
-
-       __TIPC_NLA_MEDIA_MAX,
-       TIPC_NLA_MEDIA_MAX = __TIPC_NLA_MEDIA_MAX - 1
-};
-
-/* Node info */
-enum {
-       TIPC_NLA_NODE_UNSPEC,
-       TIPC_NLA_NODE_ADDR,             /* u32 */
-       TIPC_NLA_NODE_UP,               /* flag */
-
-       __TIPC_NLA_NODE_MAX,
-       TIPC_NLA_NODE_MAX = __TIPC_NLA_NODE_MAX - 1
-};
-
-/* Net info */
-enum {
-       TIPC_NLA_NET_UNSPEC,
-       TIPC_NLA_NET_ID,                /* u32 */
-       TIPC_NLA_NET_ADDR,              /* u32 */
-
-       __TIPC_NLA_NET_MAX,
-       TIPC_NLA_NET_MAX = __TIPC_NLA_NET_MAX - 1
-};
-
-/* Name table info */
-enum {
-       TIPC_NLA_NAME_TABLE_UNSPEC,
-       TIPC_NLA_NAME_TABLE_PUBL,       /* nest */
-
-       __TIPC_NLA_NAME_TABLE_MAX,
-       TIPC_NLA_NAME_TABLE_MAX = __TIPC_NLA_NAME_TABLE_MAX - 1
-};
-
-/* Monitor info */
-enum {
-       TIPC_NLA_MON_UNSPEC,
-       TIPC_NLA_MON_ACTIVATION_THRESHOLD,      /* u32 */
-       TIPC_NLA_MON_REF,                       /* u32 */
-       TIPC_NLA_MON_ACTIVE,                    /* flag */
-       TIPC_NLA_MON_BEARER_NAME,               /* string */
-       TIPC_NLA_MON_PEERCNT,                   /* u32 */
-       TIPC_NLA_MON_LISTGEN,                   /* u32 */
-
-       __TIPC_NLA_MON_MAX,
-       TIPC_NLA_MON_MAX = __TIPC_NLA_MON_MAX - 1
-};
-
-/* Publication info */
-enum {
-       TIPC_NLA_PUBL_UNSPEC,
-
-       TIPC_NLA_PUBL_TYPE,             /* u32 */
-       TIPC_NLA_PUBL_LOWER,            /* u32 */
-       TIPC_NLA_PUBL_UPPER,            /* u32 */
-       TIPC_NLA_PUBL_SCOPE,            /* u32 */
-       TIPC_NLA_PUBL_NODE,             /* u32 */
-       TIPC_NLA_PUBL_REF,              /* u32 */
-       TIPC_NLA_PUBL_KEY,              /* u32 */
-
-       __TIPC_NLA_PUBL_MAX,
-       TIPC_NLA_PUBL_MAX = __TIPC_NLA_PUBL_MAX - 1
-};
-
-/* Monitor peer info */
-enum {
-       TIPC_NLA_MON_PEER_UNSPEC,
-
-       TIPC_NLA_MON_PEER_ADDR,                 /* u32 */
-       TIPC_NLA_MON_PEER_DOMGEN,               /* u32 */
-       TIPC_NLA_MON_PEER_APPLIED,              /* u32 */
-       TIPC_NLA_MON_PEER_UPMAP,                /* u64 */
-       TIPC_NLA_MON_PEER_MEMBERS,              /* tlv */
-       TIPC_NLA_MON_PEER_UP,                   /* flag */
-       TIPC_NLA_MON_PEER_HEAD,                 /* flag */
-       TIPC_NLA_MON_PEER_LOCAL,                /* flag */
-       TIPC_NLA_MON_PEER_PAD,                  /* flag */
-
-       __TIPC_NLA_MON_PEER_MAX,
-       TIPC_NLA_MON_PEER_MAX = __TIPC_NLA_MON_PEER_MAX - 1
-};
-
-/* Nest, connection info */
-enum {
-       TIPC_NLA_CON_UNSPEC,
-
-       TIPC_NLA_CON_FLAG,              /* flag */
-       TIPC_NLA_CON_NODE,              /* u32 */
-       TIPC_NLA_CON_SOCK,              /* u32 */
-       TIPC_NLA_CON_TYPE,              /* u32 */
-       TIPC_NLA_CON_INST,              /* u32 */
-
-       __TIPC_NLA_CON_MAX,
-       TIPC_NLA_CON_MAX = __TIPC_NLA_CON_MAX - 1
-};
-
-/* Nest, link propreties. Valid for link, media and bearer */
-enum {
-       TIPC_NLA_PROP_UNSPEC,
-
-       TIPC_NLA_PROP_PRIO,             /* u32 */
-       TIPC_NLA_PROP_TOL,              /* u32 */
-       TIPC_NLA_PROP_WIN,              /* u32 */
-
-       __TIPC_NLA_PROP_MAX,
-       TIPC_NLA_PROP_MAX = __TIPC_NLA_PROP_MAX - 1
-};
-
-/* Nest, statistics info */
-enum {
-       TIPC_NLA_STATS_UNSPEC,
-
-       TIPC_NLA_STATS_RX_INFO,         /* u32 */
-       TIPC_NLA_STATS_RX_FRAGMENTS,    /* u32 */
-       TIPC_NLA_STATS_RX_FRAGMENTED,   /* u32 */
-       TIPC_NLA_STATS_RX_BUNDLES,      /* u32 */
-       TIPC_NLA_STATS_RX_BUNDLED,      /* u32 */
-       TIPC_NLA_STATS_TX_INFO,         /* u32 */
-       TIPC_NLA_STATS_TX_FRAGMENTS,    /* u32 */
-       TIPC_NLA_STATS_TX_FRAGMENTED,   /* u32 */
-       TIPC_NLA_STATS_TX_BUNDLES,      /* u32 */
-       TIPC_NLA_STATS_TX_BUNDLED,      /* u32 */
-       TIPC_NLA_STATS_MSG_PROF_TOT,    /* u32 */
-       TIPC_NLA_STATS_MSG_LEN_CNT,     /* u32 */
-       TIPC_NLA_STATS_MSG_LEN_TOT,     /* u32 */
-       TIPC_NLA_STATS_MSG_LEN_P0,      /* u32 */
-       TIPC_NLA_STATS_MSG_LEN_P1,      /* u32 */
-       TIPC_NLA_STATS_MSG_LEN_P2,      /* u32 */
-       TIPC_NLA_STATS_MSG_LEN_P3,      /* u32 */
-       TIPC_NLA_STATS_MSG_LEN_P4,      /* u32 */
-       TIPC_NLA_STATS_MSG_LEN_P5,      /* u32 */
-       TIPC_NLA_STATS_MSG_LEN_P6,      /* u32 */
-       TIPC_NLA_STATS_RX_STATES,       /* u32 */
-       TIPC_NLA_STATS_RX_PROBES,       /* u32 */
-       TIPC_NLA_STATS_RX_NACKS,        /* u32 */
-       TIPC_NLA_STATS_RX_DEFERRED,     /* u32 */
-       TIPC_NLA_STATS_TX_STATES,       /* u32 */
-       TIPC_NLA_STATS_TX_PROBES,       /* u32 */
-       TIPC_NLA_STATS_TX_NACKS,        /* u32 */
-       TIPC_NLA_STATS_TX_ACKS,         /* u32 */
-       TIPC_NLA_STATS_RETRANSMITTED,   /* u32 */
-       TIPC_NLA_STATS_DUPLICATES,      /* u32 */
-       TIPC_NLA_STATS_LINK_CONGS,      /* u32 */
-       TIPC_NLA_STATS_MAX_QUEUE,       /* u32 */
-       TIPC_NLA_STATS_AVG_QUEUE,       /* u32 */
-
-       __TIPC_NLA_STATS_MAX,
-       TIPC_NLA_STATS_MAX = __TIPC_NLA_STATS_MAX - 1
-};
-
-#endif
diff --git a/include/linux/types.h b/include/linux/types.h
deleted file mode 100644 (file)
index c640657..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-#ifndef _LINUX_TYPES_H
-#define _LINUX_TYPES_H
-
-#include <asm/types.h>
-
-#ifndef __ASSEMBLY__
-
-#include <linux/posix_types.h>
-
-
-/*
- * Below are truly Linux-specific types that should never collide with
- * any application/library that wants linux/types.h.
- */
-
-#ifdef __CHECKER__
-#define __bitwise__ __attribute__((bitwise))
-#else
-#define __bitwise__
-#endif
-#define __bitwise __bitwise__
-
-typedef __u16 __bitwise __le16;
-typedef __u16 __bitwise __be16;
-typedef __u32 __bitwise __le32;
-typedef __u32 __bitwise __be32;
-typedef __u64 __bitwise __le64;
-typedef __u64 __bitwise __be64;
-
-typedef __u16 __bitwise __sum16;
-typedef __u32 __bitwise __wsum;
-
-/*
- * aligned_u64 should be used in defining kernel<->userspace ABIs to avoid
- * common 32/64-bit compat problems.
- * 64-bit values align to 4-byte boundaries on x86_32 (and possibly other
- * architectures) and to 8-byte boundaries on 64-bit architectures.  The new
- * aligned_64 type enforces 8-byte alignment so that structs containing
- * aligned_64 values have the same alignment on 32-bit and 64-bit architectures.
- * No conversions are necessary between 32-bit user-space and a 64-bit kernel.
- */
-#define __aligned_u64 __u64 __attribute__((aligned(8)))
-#define __aligned_be64 __be64 __attribute__((aligned(8)))
-#define __aligned_le64 __le64 __attribute__((aligned(8)))
-
-#endif /*  __ASSEMBLY__ */
-#endif /* _LINUX_TYPES_H */
diff --git a/include/linux/unix_diag.h b/include/linux/unix_diag.h
deleted file mode 100644 (file)
index 1eb0b8d..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-#ifndef __UNIX_DIAG_H__
-#define __UNIX_DIAG_H__
-
-#include <linux/types.h>
-
-struct unix_diag_req {
-       __u8    sdiag_family;
-       __u8    sdiag_protocol;
-       __u16   pad;
-       __u32   udiag_states;
-       __u32   udiag_ino;
-       __u32   udiag_show;
-       __u32   udiag_cookie[2];
-};
-
-#define UDIAG_SHOW_NAME                0x00000001      /* show name (not path) */
-#define UDIAG_SHOW_VFS         0x00000002      /* show VFS inode info */
-#define UDIAG_SHOW_PEER                0x00000004      /* show peer socket info */
-#define UDIAG_SHOW_ICONS       0x00000008      /* show pending connections */
-#define UDIAG_SHOW_RQLEN       0x00000010      /* show skb receive queue len */
-#define UDIAG_SHOW_MEMINFO     0x00000020      /* show memory info of a socket */
-
-struct unix_diag_msg {
-       __u8    udiag_family;
-       __u8    udiag_type;
-       __u8    udiag_state;
-       __u8    pad;
-
-       __u32   udiag_ino;
-       __u32   udiag_cookie[2];
-};
-
-enum {
-       /* UNIX_DIAG_NONE, standard nl API requires this attribute!  */
-       UNIX_DIAG_NAME,
-       UNIX_DIAG_VFS,
-       UNIX_DIAG_PEER,
-       UNIX_DIAG_ICONS,
-       UNIX_DIAG_RQLEN,
-       UNIX_DIAG_MEMINFO,
-       UNIX_DIAG_SHUTDOWN,
-
-       __UNIX_DIAG_MAX,
-};
-
-#define UNIX_DIAG_MAX (__UNIX_DIAG_MAX - 1)
-
-struct unix_diag_vfs {
-       __u32   udiag_vfs_ino;
-       __u32   udiag_vfs_dev;
-};
-
-struct unix_diag_rqlen {
-       __u32   udiag_rqueue;
-       __u32   udiag_wqueue;
-};
-
-#endif
diff --git a/include/linux/veth.h b/include/linux/veth.h
deleted file mode 100644 (file)
index 3354c1e..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-#ifndef __NET_VETH_H_
-#define __NET_VETH_H_
-
-enum {
-       VETH_INFO_UNSPEC,
-       VETH_INFO_PEER,
-
-       __VETH_INFO_MAX
-#define VETH_INFO_MAX  (__VETH_INFO_MAX - 1)
-};
-
-#endif
diff --git a/include/linux/xfrm.h b/include/linux/xfrm.h
deleted file mode 100644 (file)
index 5790293..0000000
+++ /dev/null
@@ -1,536 +0,0 @@
-#ifndef _LINUX_XFRM_H
-#define _LINUX_XFRM_H
-
-#include <linux/in6.h>
-#include <linux/types.h>
-
-/* All of the structures in this file may not change size as they are
- * passed into the kernel from userspace via netlink sockets.
- */
-
-/* Structure to encapsulate addresses. I do not want to use
- * "standard" structure. My apologies.
- */
-typedef union {
-       __be32          a4;
-       __be32          a6[4];
-       struct in6_addr in6;
-} xfrm_address_t;
-
-/* Ident of a specific xfrm_state. It is used on input to lookup
- * the state by (spi,daddr,ah/esp) or to store information about
- * spi, protocol and tunnel address on output.
- */
-struct xfrm_id {
-       xfrm_address_t  daddr;
-       __be32          spi;
-       __u8            proto;
-};
-
-struct xfrm_sec_ctx {
-       __u8    ctx_doi;
-       __u8    ctx_alg;
-       __u16   ctx_len;
-       __u32   ctx_sid;
-       char    ctx_str[0];
-};
-
-/* Security Context Domains of Interpretation */
-#define XFRM_SC_DOI_RESERVED 0
-#define XFRM_SC_DOI_LSM 1
-
-/* Security Context Algorithms */
-#define XFRM_SC_ALG_RESERVED 0
-#define XFRM_SC_ALG_SELINUX 1
-
-/* Selector, used as selector both on policy rules (SPD) and SAs. */
-
-struct xfrm_selector {
-       xfrm_address_t  daddr;
-       xfrm_address_t  saddr;
-       __be16  dport;
-       __be16  dport_mask;
-       __be16  sport;
-       __be16  sport_mask;
-       __u16   family;
-       __u8    prefixlen_d;
-       __u8    prefixlen_s;
-       __u8    proto;
-       int     ifindex;
-       __kernel_uid32_t        user;
-};
-
-#define XFRM_INF (~(__u64)0)
-
-struct xfrm_lifetime_cfg {
-       __u64   soft_byte_limit;
-       __u64   hard_byte_limit;
-       __u64   soft_packet_limit;
-       __u64   hard_packet_limit;
-       __u64   soft_add_expires_seconds;
-       __u64   hard_add_expires_seconds;
-       __u64   soft_use_expires_seconds;
-       __u64   hard_use_expires_seconds;
-};
-
-struct xfrm_lifetime_cur {
-       __u64   bytes;
-       __u64   packets;
-       __u64   add_time;
-       __u64   use_time;
-};
-
-struct xfrm_replay_state {
-       __u32   oseq;
-       __u32   seq;
-       __u32   bitmap;
-};
-
-#define XFRMA_REPLAY_ESN_MAX   4096
-
-struct xfrm_replay_state_esn {
-       unsigned int    bmp_len;
-       __u32           oseq;
-       __u32           seq;
-       __u32           oseq_hi;
-       __u32           seq_hi;
-       __u32           replay_window;
-       __u32           bmp[0];
-};
-
-struct xfrm_algo {
-       char            alg_name[64];
-       unsigned int    alg_key_len;    /* in bits */
-       char            alg_key[0];
-};
-
-struct xfrm_algo_auth {
-       char            alg_name[64];
-       unsigned int    alg_key_len;    /* in bits */
-       unsigned int    alg_trunc_len;  /* in bits */
-       char            alg_key[0];
-};
-
-struct xfrm_algo_aead {
-       char            alg_name[64];
-       unsigned int    alg_key_len;    /* in bits */
-       unsigned int    alg_icv_len;    /* in bits */
-       char            alg_key[0];
-};
-
-struct xfrm_stats {
-       __u32   replay_window;
-       __u32   replay;
-       __u32   integrity_failed;
-};
-
-enum {
-       XFRM_POLICY_TYPE_MAIN   = 0,
-       XFRM_POLICY_TYPE_SUB    = 1,
-       XFRM_POLICY_TYPE_MAX    = 2,
-       XFRM_POLICY_TYPE_ANY    = 255
-};
-
-enum {
-       XFRM_POLICY_IN  = 0,
-       XFRM_POLICY_OUT = 1,
-       XFRM_POLICY_FWD = 2,
-       XFRM_POLICY_MASK = 3,
-       XFRM_POLICY_MAX = 3
-};
-
-enum {
-       XFRM_SHARE_ANY,         /* No limitations */
-       XFRM_SHARE_SESSION,     /* For this session only */
-       XFRM_SHARE_USER,        /* For this user only */
-       XFRM_SHARE_UNIQUE       /* Use once */
-};
-
-#define XFRM_MODE_TRANSPORT 0
-#define XFRM_MODE_TUNNEL 1
-#define XFRM_MODE_ROUTEOPTIMIZATION 2
-#define XFRM_MODE_IN_TRIGGER 3
-#define XFRM_MODE_BEET 4
-#define XFRM_MODE_MAX 5
-
-/* Netlink configuration messages.  */
-enum {
-       XFRM_MSG_BASE = 0x10,
-
-       XFRM_MSG_NEWSA = 0x10,
-#define XFRM_MSG_NEWSA XFRM_MSG_NEWSA
-       XFRM_MSG_DELSA,
-#define XFRM_MSG_DELSA XFRM_MSG_DELSA
-       XFRM_MSG_GETSA,
-#define XFRM_MSG_GETSA XFRM_MSG_GETSA
-
-       XFRM_MSG_NEWPOLICY,
-#define XFRM_MSG_NEWPOLICY XFRM_MSG_NEWPOLICY
-       XFRM_MSG_DELPOLICY,
-#define XFRM_MSG_DELPOLICY XFRM_MSG_DELPOLICY
-       XFRM_MSG_GETPOLICY,
-#define XFRM_MSG_GETPOLICY XFRM_MSG_GETPOLICY
-
-       XFRM_MSG_ALLOCSPI,
-#define XFRM_MSG_ALLOCSPI XFRM_MSG_ALLOCSPI
-       XFRM_MSG_ACQUIRE,
-#define XFRM_MSG_ACQUIRE XFRM_MSG_ACQUIRE
-       XFRM_MSG_EXPIRE,
-#define XFRM_MSG_EXPIRE XFRM_MSG_EXPIRE
-
-       XFRM_MSG_UPDPOLICY,
-#define XFRM_MSG_UPDPOLICY XFRM_MSG_UPDPOLICY
-       XFRM_MSG_UPDSA,
-#define XFRM_MSG_UPDSA XFRM_MSG_UPDSA
-
-       XFRM_MSG_POLEXPIRE,
-#define XFRM_MSG_POLEXPIRE XFRM_MSG_POLEXPIRE
-
-       XFRM_MSG_FLUSHSA,
-#define XFRM_MSG_FLUSHSA XFRM_MSG_FLUSHSA
-       XFRM_MSG_FLUSHPOLICY,
-#define XFRM_MSG_FLUSHPOLICY XFRM_MSG_FLUSHPOLICY
-
-       XFRM_MSG_NEWAE,
-#define XFRM_MSG_NEWAE XFRM_MSG_NEWAE
-       XFRM_MSG_GETAE,
-#define XFRM_MSG_GETAE XFRM_MSG_GETAE
-
-       XFRM_MSG_REPORT,
-#define XFRM_MSG_REPORT XFRM_MSG_REPORT
-
-       XFRM_MSG_MIGRATE,
-#define XFRM_MSG_MIGRATE XFRM_MSG_MIGRATE
-
-       XFRM_MSG_NEWSADINFO,
-#define XFRM_MSG_NEWSADINFO XFRM_MSG_NEWSADINFO
-       XFRM_MSG_GETSADINFO,
-#define XFRM_MSG_GETSADINFO XFRM_MSG_GETSADINFO
-
-       XFRM_MSG_NEWSPDINFO,
-#define XFRM_MSG_NEWSPDINFO XFRM_MSG_NEWSPDINFO
-       XFRM_MSG_GETSPDINFO,
-#define XFRM_MSG_GETSPDINFO XFRM_MSG_GETSPDINFO
-
-       XFRM_MSG_MAPPING,
-#define XFRM_MSG_MAPPING XFRM_MSG_MAPPING
-       __XFRM_MSG_MAX
-};
-#define XFRM_MSG_MAX (__XFRM_MSG_MAX - 1)
-
-#define XFRM_NR_MSGTYPES (XFRM_MSG_MAX + 1 - XFRM_MSG_BASE)
-
-/*
- * Generic LSM security context for comunicating to user space
- * NOTE: Same format as sadb_x_sec_ctx
- */
-struct xfrm_user_sec_ctx {
-       __u16                   len;
-       __u16                   exttype;
-       __u8                    ctx_alg;  /* LSMs: e.g., selinux == 1 */
-       __u8                    ctx_doi;
-       __u16                   ctx_len;
-};
-
-struct xfrm_user_tmpl {
-       struct xfrm_id          id;
-       __u16                   family;
-       xfrm_address_t          saddr;
-       __u32                   reqid;
-       __u8                    mode;
-       __u8                    share;
-       __u8                    optional;
-       __u32                   aalgos;
-       __u32                   ealgos;
-       __u32                   calgos;
-};
-
-struct xfrm_encap_tmpl {
-       __u16           encap_type;
-       __be16          encap_sport;
-       __be16          encap_dport;
-       xfrm_address_t  encap_oa;
-};
-
-/* AEVENT flags  */
-enum xfrm_ae_ftype_t {
-       XFRM_AE_UNSPEC,
-       XFRM_AE_RTHR=1, /* replay threshold*/
-       XFRM_AE_RVAL=2, /* replay value */
-       XFRM_AE_LVAL=4, /* lifetime value */
-       XFRM_AE_ETHR=8, /* expiry timer threshold */
-       XFRM_AE_CR=16, /* Event cause is replay update */
-       XFRM_AE_CE=32, /* Event cause is timer expiry */
-       XFRM_AE_CU=64, /* Event cause is policy update */
-       __XFRM_AE_MAX
-
-#define XFRM_AE_MAX (__XFRM_AE_MAX - 1)
-};
-
-struct xfrm_userpolicy_type {
-       __u8            type;
-       __u16           reserved1;
-       __u8            reserved2;
-};
-
-/* Netlink message attributes.  */
-enum xfrm_attr_type_t {
-       XFRMA_UNSPEC,
-       XFRMA_ALG_AUTH,         /* struct xfrm_algo */
-       XFRMA_ALG_CRYPT,        /* struct xfrm_algo */
-       XFRMA_ALG_COMP,         /* struct xfrm_algo */
-       XFRMA_ENCAP,            /* struct xfrm_algo + struct xfrm_encap_tmpl */
-       XFRMA_TMPL,             /* 1 or more struct xfrm_user_tmpl */
-       XFRMA_SA,               /* struct xfrm_usersa_info  */
-       XFRMA_POLICY,           /*struct xfrm_userpolicy_info */
-       XFRMA_SEC_CTX,          /* struct xfrm_sec_ctx */
-       XFRMA_LTIME_VAL,
-       XFRMA_REPLAY_VAL,
-       XFRMA_REPLAY_THRESH,
-       XFRMA_ETIMER_THRESH,
-       XFRMA_SRCADDR,          /* xfrm_address_t */
-       XFRMA_COADDR,           /* xfrm_address_t */
-       XFRMA_LASTUSED,         /* unsigned long  */
-       XFRMA_POLICY_TYPE,      /* struct xfrm_userpolicy_type */
-       XFRMA_MIGRATE,
-       XFRMA_ALG_AEAD,         /* struct xfrm_algo_aead */
-       XFRMA_KMADDRESS,        /* struct xfrm_user_kmaddress */
-       XFRMA_ALG_AUTH_TRUNC,   /* struct xfrm_algo_auth */
-       XFRMA_MARK,             /* struct xfrm_mark */
-       XFRMA_TFCPAD,           /* __u32 */
-       XFRMA_REPLAY_ESN_VAL,   /* struct xfrm_replay_state_esn */
-       XFRMA_SA_EXTRA_FLAGS,   /* __u32 */
-       XFRMA_PROTO,            /* __u8 */
-       XFRMA_ADDRESS_FILTER,   /* struct xfrm_address_filter */
-       XFRMA_PAD,
-       XFRMA_OFFLOAD_DEV,      /* struct xfrm_state_offload */
-       XFRMA_OUTPUT_MARK,      /* __u32 */
-       __XFRMA_MAX
-
-#define XFRMA_MAX (__XFRMA_MAX - 1)
-};
-
-struct xfrm_mark {
-       __u32           v; /* value */
-       __u32           m; /* mask */
-};
-
-enum xfrm_sadattr_type_t {
-       XFRMA_SAD_UNSPEC,
-       XFRMA_SAD_CNT,
-       XFRMA_SAD_HINFO,
-       __XFRMA_SAD_MAX
-
-#define XFRMA_SAD_MAX (__XFRMA_SAD_MAX - 1)
-};
-
-struct xfrmu_sadhinfo {
-       __u32 sadhcnt; /* current hash bkts */
-       __u32 sadhmcnt; /* max allowed hash bkts */
-};
-
-enum xfrm_spdattr_type_t {
-       XFRMA_SPD_UNSPEC,
-       XFRMA_SPD_INFO,
-       XFRMA_SPD_HINFO,
-       XFRMA_SPD_IPV4_HTHRESH,
-       XFRMA_SPD_IPV6_HTHRESH,
-       __XFRMA_SPD_MAX
-
-#define XFRMA_SPD_MAX (__XFRMA_SPD_MAX - 1)
-};
-
-struct xfrmu_spdinfo {
-       __u32 incnt;
-       __u32 outcnt;
-       __u32 fwdcnt;
-       __u32 inscnt;
-       __u32 outscnt;
-       __u32 fwdscnt;
-};
-
-struct xfrmu_spdhinfo {
-       __u32 spdhcnt;
-       __u32 spdhmcnt;
-};
-
-struct xfrmu_spdhthresh {
-       __u8 lbits;
-       __u8 rbits;
-};
-
-struct xfrm_usersa_info {
-       struct xfrm_selector            sel;
-       struct xfrm_id                  id;
-       xfrm_address_t                  saddr;
-       struct xfrm_lifetime_cfg        lft;
-       struct xfrm_lifetime_cur        curlft;
-       struct xfrm_stats               stats;
-       __u32                           seq;
-       __u32                           reqid;
-       __u16                           family;
-       __u8                            mode;           /* XFRM_MODE_xxx */
-       __u8                            replay_window;
-       __u8                            flags;
-#define XFRM_STATE_NOECN       1
-#define XFRM_STATE_DECAP_DSCP  2
-#define XFRM_STATE_NOPMTUDISC  4
-#define XFRM_STATE_WILDRECV    8
-#define XFRM_STATE_ICMP                16
-#define XFRM_STATE_AF_UNSPEC   32
-#define XFRM_STATE_ALIGN4      64
-#define XFRM_STATE_ESN         128
-};
-
-#define XFRM_SA_XFLAG_DONT_ENCAP_DSCP  1
-
-struct xfrm_usersa_id {
-       xfrm_address_t                  daddr;
-       __be32                          spi;
-       __u16                           family;
-       __u8                            proto;
-};
-
-struct xfrm_aevent_id {
-       struct xfrm_usersa_id           sa_id;
-       xfrm_address_t                  saddr;
-       __u32                           flags;
-       __u32                           reqid;
-};
-
-struct xfrm_userspi_info {
-       struct xfrm_usersa_info         info;
-       __u32                           min;
-       __u32                           max;
-};
-
-struct xfrm_userpolicy_info {
-       struct xfrm_selector            sel;
-       struct xfrm_lifetime_cfg        lft;
-       struct xfrm_lifetime_cur        curlft;
-       __u32                           priority;
-       __u32                           index;
-       __u8                            dir;
-       __u8                            action;
-#define XFRM_POLICY_ALLOW      0
-#define XFRM_POLICY_BLOCK      1
-       __u8                            flags;
-#define XFRM_POLICY_LOCALOK    1       /* Allow user to override global policy */
-       /* Automatically expand selector to include matching ICMP payloads. */
-#define XFRM_POLICY_ICMP       2
-       __u8                            share;
-};
-
-struct xfrm_userpolicy_id {
-       struct xfrm_selector            sel;
-       __u32                           index;
-       __u8                            dir;
-};
-
-struct xfrm_user_acquire {
-       struct xfrm_id                  id;
-       xfrm_address_t                  saddr;
-       struct xfrm_selector            sel;
-       struct xfrm_userpolicy_info     policy;
-       __u32                           aalgos;
-       __u32                           ealgos;
-       __u32                           calgos;
-       __u32                           seq;
-};
-
-struct xfrm_user_expire {
-       struct xfrm_usersa_info         state;
-       __u8                            hard;
-};
-
-struct xfrm_user_polexpire {
-       struct xfrm_userpolicy_info     pol;
-       __u8                            hard;
-};
-
-struct xfrm_usersa_flush {
-       __u8                            proto;
-};
-
-struct xfrm_user_report {
-       __u8                            proto;
-       struct xfrm_selector            sel;
-};
-
-/* Used by MIGRATE to pass addresses IKE should use to perform
- * SA negotiation with the peer */
-struct xfrm_user_kmaddress {
-       xfrm_address_t                  local;
-       xfrm_address_t                  remote;
-       __u32                           reserved;
-       __u16                           family;
-};
-
-struct xfrm_user_migrate {
-       xfrm_address_t                  old_daddr;
-       xfrm_address_t                  old_saddr;
-       xfrm_address_t                  new_daddr;
-       xfrm_address_t                  new_saddr;
-       __u8                            proto;
-       __u8                            mode;
-       __u16                           reserved;
-       __u32                           reqid;
-       __u16                           old_family;
-       __u16                           new_family;
-};
-
-struct xfrm_user_mapping {
-       struct xfrm_usersa_id           id;
-       __u32                           reqid;
-       xfrm_address_t                  old_saddr;
-       xfrm_address_t                  new_saddr;
-       __be16                          old_sport;
-       __be16                          new_sport;
-};
-
-struct xfrm_address_filter {
-       xfrm_address_t                  saddr;
-       xfrm_address_t                  daddr;
-       __u16                           family;
-       __u8                            splen;
-       __u8                            dplen;
-};
-
-struct xfrm_user_offload {
-       int                             ifindex;
-       __u8                            flags;
-};
-#define XFRM_OFFLOAD_IPV6      1
-#define XFRM_OFFLOAD_INBOUND   2
-
-/* backwards compatibility for userspace */
-#define XFRMGRP_ACQUIRE                1
-#define XFRMGRP_EXPIRE         2
-#define XFRMGRP_SA             4
-#define XFRMGRP_POLICY         8
-#define XFRMGRP_REPORT         0x20
-
-enum xfrm_nlgroups {
-       XFRMNLGRP_NONE,
-#define XFRMNLGRP_NONE         XFRMNLGRP_NONE
-       XFRMNLGRP_ACQUIRE,
-#define XFRMNLGRP_ACQUIRE      XFRMNLGRP_ACQUIRE
-       XFRMNLGRP_EXPIRE,
-#define XFRMNLGRP_EXPIRE       XFRMNLGRP_EXPIRE
-       XFRMNLGRP_SA,
-#define XFRMNLGRP_SA           XFRMNLGRP_SA
-       XFRMNLGRP_POLICY,
-#define XFRMNLGRP_POLICY       XFRMNLGRP_POLICY
-       XFRMNLGRP_AEVENTS,
-#define XFRMNLGRP_AEVENTS      XFRMNLGRP_AEVENTS
-       XFRMNLGRP_REPORT,
-#define XFRMNLGRP_REPORT       XFRMNLGRP_REPORT
-       XFRMNLGRP_MIGRATE,
-#define XFRMNLGRP_MIGRATE      XFRMNLGRP_MIGRATE
-       XFRMNLGRP_MAPPING,
-#define XFRMNLGRP_MAPPING      XFRMNLGRP_MAPPING
-       __XFRMNLGRP_MAX
-};
-#define XFRMNLGRP_MAX  (__XFRMNLGRP_MAX - 1)
-
-#endif /* _LINUX_XFRM_H */
diff --git a/include/uapi/linux/atm.h b/include/uapi/linux/atm.h
new file mode 100644 (file)
index 0000000..08e27be
--- /dev/null
@@ -0,0 +1,241 @@
+/* atm.h - general ATM declarations */
+/* Written 1995-2000 by Werner Almesberger, EPFL LRC/ICA */
+
+/*
+ * WARNING: User-space programs should not #include <linux/atm.h> directly.
+ *          Instead, #include <atm.h>
+ */
+
+#ifndef _LINUX_ATM_H
+#define _LINUX_ATM_H
+
+/*
+ * BEGIN_xx and END_xx markers are used for automatic generation of
+ * documentation. Do not change them.
+ */
+
+
+#include <linux/atmapi.h>
+#include <linux/atmsap.h>
+#include <linux/atmioc.h>
+#include <linux/types.h>
+
+
+/* general ATM constants */
+#define ATM_CELL_SIZE              53  /* ATM cell size incl. header */
+#define ATM_CELL_PAYLOAD           48  /* ATM payload size */
+#define ATM_AAL0_SDU               52  /* AAL0 SDU size */
+#define ATM_MAX_AAL34_PDU       65535  /* maximum AAL3/4 PDU payload */
+#define ATM_AAL5_TRAILER            8  /* AAL5 trailer size */
+#define ATM_MAX_AAL5_PDU        65535  /* maximum AAL5 PDU payload */
+#define ATM_MAX_CDV              9999  /* maximum (default) CDV */
+#define ATM_NOT_RSV_VCI                    32  /* first non-reserved VCI value */
+
+#define ATM_MAX_VPI               255  /* maximum VPI at the UNI */
+#define ATM_MAX_VPI_NNI                  4096  /* maximum VPI at the NNI */
+#define ATM_MAX_VCI             65535  /* maximum VCI */
+
+
+/* "protcol" values for the socket system call */
+#define ATM_NO_AAL     0               /* AAL not specified */
+#define ATM_AAL0       13              /* "raw" ATM cells */
+#define ATM_AAL1       1               /* AAL1 (CBR) */
+#define ATM_AAL2       2               /* AAL2 (VBR) */
+#define ATM_AAL34      3               /* AAL3/4 (data) */
+#define ATM_AAL5       5               /* AAL5 (data) */
+
+/*
+ * socket option name coding functions
+ *
+ * Note that __SO_ENCODE and __SO_LEVEL are somewhat a hack since the
+ * << 22 only reserves 9 bits for the level.  On some architectures
+ * SOL_SOCKET is 0xFFFF, so that's a bit of a problem
+ */
+
+#define __SO_ENCODE(l,n,t)     ((((l) & 0x1FF) << 22) | ((n) << 16) | \
+                               sizeof(t))
+#define __SO_LEVEL_MATCH(c,m)  (((c) >> 22) == ((m) & 0x1FF))
+#define __SO_NUMBER(c)         (((c) >> 16) & 0x3f)
+#define __SO_SIZE(c)           ((c) & 0x3fff)
+
+/*
+ * ATM layer
+ */
+
+#define SO_SETCLP      __SO_ENCODE(SOL_ATM,0,int)
+                           /* set CLP bit value - TODO */
+#define SO_CIRANGE     __SO_ENCODE(SOL_ATM,1,struct atm_cirange)
+                           /* connection identifier range; socket must be
+                              bound or connected */
+#define SO_ATMQOS      __SO_ENCODE(SOL_ATM,2,struct atm_qos)
+                           /* Quality of Service setting */
+#define SO_ATMSAP      __SO_ENCODE(SOL_ATM,3,struct atm_sap)
+                           /* Service Access Point */
+#define SO_ATMPVC      __SO_ENCODE(SOL_ATM,4,struct sockaddr_atmpvc)
+                           /* "PVC" address (also for SVCs); get only */
+#define SO_MULTIPOINT  __SO_ENCODE(SOL_ATM, 5, int)
+                           /* make this vc a p2mp */
+
+
+/*
+ * Note @@@: since the socket layers don't really distinguish the control and
+ * the data plane but generally seems to be data plane-centric, any layer is
+ * about equally wrong for the SAP. If you have a better idea about this,
+ * please speak up ...
+ */
+
+
+/* ATM cell header (for AAL0) */
+
+/* BEGIN_CH */
+#define ATM_HDR_GFC_MASK       0xf0000000
+#define ATM_HDR_GFC_SHIFT      28
+#define ATM_HDR_VPI_MASK       0x0ff00000
+#define ATM_HDR_VPI_SHIFT      20
+#define ATM_HDR_VCI_MASK       0x000ffff0
+#define ATM_HDR_VCI_SHIFT      4
+#define ATM_HDR_PTI_MASK       0x0000000e
+#define ATM_HDR_PTI_SHIFT      1
+#define ATM_HDR_CLP            0x00000001
+/* END_CH */
+
+
+/* PTI codings */
+
+/* BEGIN_PTI */
+#define ATM_PTI_US0    0  /* user data cell, congestion not exp, SDU-type 0 */
+#define ATM_PTI_US1    1  /* user data cell, congestion not exp, SDU-type 1 */
+#define ATM_PTI_UCES0  2  /* user data cell, cong. experienced, SDU-type 0 */
+#define ATM_PTI_UCES1  3  /* user data cell, cong. experienced, SDU-type 1 */
+#define ATM_PTI_SEGF5  4  /* segment OAM F5 flow related cell */
+#define ATM_PTI_E2EF5  5  /* end-to-end OAM F5 flow related cell */
+#define ATM_PTI_RSV_RM 6  /* reserved for traffic control/resource mgmt */
+#define ATM_PTI_RSV    7  /* reserved */
+/* END_PTI */
+
+
+/*
+ * The following items should stay in linux/atm.h, which should be linked to
+ * netatm/atm.h
+ */
+
+/* Traffic description */
+
+#define ATM_NONE       0               /* no traffic */
+#define ATM_UBR                1
+#define ATM_CBR                2
+#define ATM_VBR                3
+#define ATM_ABR                4
+#define ATM_ANYCLASS   5               /* compatible with everything */
+
+#define ATM_MAX_PCR    -1              /* maximum available PCR */
+
+struct atm_trafprm {
+       unsigned char   traffic_class;  /* traffic class (ATM_UBR, ...) */
+       int             max_pcr;        /* maximum PCR in cells per second */
+       int             pcr;            /* desired PCR in cells per second */
+       int             min_pcr;        /* minimum PCR in cells per second */
+       int             max_cdv;        /* maximum CDV in microseconds */
+       int             max_sdu;        /* maximum SDU in bytes */
+        /* extra params for ABR */
+        unsigned int   icr;            /* Initial Cell Rate (24-bit) */
+        unsigned int   tbe;            /* Transient Buffer Exposure (24-bit) */ 
+        unsigned int   frtt : 24;      /* Fixed Round Trip Time (24-bit) */
+        unsigned int   rif  : 4;       /* Rate Increment Factor (4-bit) */
+        unsigned int   rdf  : 4;       /* Rate Decrease Factor (4-bit) */
+        unsigned int nrm_pres  :1;      /* nrm present bit */
+        unsigned int trm_pres  :1;             /* rm present bit */
+        unsigned int adtf_pres :1;             /* adtf present bit */
+        unsigned int cdf_pres  :1;     /* cdf present bit*/
+        unsigned int nrm       :3;             /* Max # of Cells for each forward RM cell (3-bit) */
+        unsigned int trm       :3;     /* Time between forward RM cells (3-bit) */    
+       unsigned int adtf      :10;     /* ACR Decrease Time Factor (10-bit) */
+       unsigned int cdf       :3;      /* Cutoff Decrease Factor (3-bit) */
+        unsigned int spare     :9;      /* spare bits */ 
+};
+
+struct atm_qos {
+       struct atm_trafprm txtp;        /* parameters in TX direction */
+       struct atm_trafprm rxtp __ATM_API_ALIGN;
+                                       /* parameters in RX direction */
+       unsigned char aal __ATM_API_ALIGN;
+};
+
+/* PVC addressing */
+
+#define ATM_ITF_ANY    -1              /* "magic" PVC address values */
+#define ATM_VPI_ANY    -1
+#define ATM_VCI_ANY    -1
+#define ATM_VPI_UNSPEC -2
+#define ATM_VCI_UNSPEC -2
+
+
+struct sockaddr_atmpvc {
+       unsigned short  sap_family;     /* address family, AF_ATMPVC  */
+       struct {                        /* PVC address */
+               short   itf;            /* ATM interface */
+               short   vpi;            /* VPI (only 8 bits at UNI) */
+               int     vci;            /* VCI (only 16 bits at UNI) */
+       } sap_addr __ATM_API_ALIGN;     /* PVC address */
+};
+
+/* SVC addressing */
+
+#define        ATM_ESA_LEN     20              /* ATM End System Address length */
+#define ATM_E164_LEN   12              /* maximum E.164 number length */
+
+#define ATM_AFI_DCC    0x39            /* DCC ATM Format */
+#define ATM_AFI_ICD    0x47            /* ICD ATM Format */
+#define ATM_AFI_E164   0x45            /* E.164 ATM Format */
+#define ATM_AFI_LOCAL  0x49            /* Local ATM Format */ 
+
+#define ATM_AFI_DCC_GROUP      0xBD    /* DCC ATM Group Format */
+#define ATM_AFI_ICD_GROUP      0xC5    /* ICD ATM Group Format */
+#define ATM_AFI_E164_GROUP     0xC3    /* E.164 ATM Group Format */
+#define ATM_AFI_LOCAL_GROUP    0xC7    /* Local ATM Group Format */
+
+#define ATM_LIJ_NONE   0               /* no leaf-initiated join */
+#define ATM_LIJ                1               /* request joining */
+#define ATM_LIJ_RPJ    2               /* set to root-prompted join */
+#define ATM_LIJ_NJ     3               /* set to network join */
+
+
+struct sockaddr_atmsvc {
+    unsigned short     sas_family;     /* address family, AF_ATMSVC */
+    struct {                           /* SVC address */
+        unsigned char  prv[ATM_ESA_LEN];/* private ATM address */
+        char           pub[ATM_E164_LEN+1]; /* public address (E.164) */
+                                       /* unused addresses must be bzero'ed */
+       char            lij_type;       /* role in LIJ call; one of ATM_LIJ* */
+       __u32   lij_id;         /* LIJ call identifier */
+    } sas_addr __ATM_API_ALIGN;                /* SVC address */
+};
+
+
+static __inline__ int atmsvc_addr_in_use(struct sockaddr_atmsvc addr)
+{
+       return *addr.sas_addr.prv || *addr.sas_addr.pub;
+}
+
+
+static __inline__ int atmpvc_addr_in_use(struct sockaddr_atmpvc addr)
+{
+       return addr.sap_addr.itf || addr.sap_addr.vpi || addr.sap_addr.vci;
+}
+
+
+/*
+ * Some stuff for linux/sockios.h
+ */
+
+struct atmif_sioc {
+       int number;
+       int length;
+       void *arg;
+};
+
+
+typedef unsigned short atm_backend_t;
+#endif /* _LINUX_ATM_H */
diff --git a/include/uapi/linux/atmapi.h b/include/uapi/linux/atmapi.h
new file mode 100644 (file)
index 0000000..8fe54d9
--- /dev/null
@@ -0,0 +1,29 @@
+/* atmapi.h - ATM API user space/kernel compatibility */
+/* Written 1999,2000 by Werner Almesberger, EPFL ICA */
+
+#ifndef _LINUX_ATMAPI_H
+#define _LINUX_ATMAPI_H
+
+#if defined(__sparc__) || defined(__ia64__)
+/* such alignment is not required on 32 bit sparcs, but we can't
+   figure that we are on a sparc64 while compiling user-space programs. */
+#define __ATM_API_ALIGN        __attribute__((aligned(8)))
+#else
+#define __ATM_API_ALIGN
+#endif
+
+
+/*
+ * Opaque type for kernel pointers. Note that _ is never accessed. We need
+ * the struct in order hide the array, so that we can make simple assignments
+ * instead of being forced to use memcpy. It also improves error reporting for
+ * code that still assumes that we're passing unsigned longs.
+ *
+ * Convention: NULL pointers are passed as a field of all zeroes.
+ */
+typedef struct { unsigned char _[8]; } __ATM_API_ALIGN atm_kptr_t;
+
+#endif
diff --git a/include/uapi/linux/atmarp.h b/include/uapi/linux/atmarp.h
new file mode 100644 (file)
index 0000000..231f4bd
--- /dev/null
@@ -0,0 +1,41 @@
+/* atmarp.h - ATM ARP protocol and kernel-demon interface definitions */
+/* Written 1995-1999 by Werner Almesberger, EPFL LRC/ICA */
+
+#ifndef _LINUX_ATMARP_H
+#define _LINUX_ATMARP_H
+
+#include <linux/types.h>
+#include <linux/atmapi.h>
+#include <linux/atmioc.h>
+
+
+#define ATMARP_RETRY_DELAY 30          /* request next resolution or forget
+                                          NAK after 30 sec - should go into
+                                          atmclip.h */
+#define ATMARP_MAX_UNRES_PACKETS 5     /* queue that many packets while
+                                          waiting for the resolver */
+
+
+#define ATMARPD_CTRL   _IO('a',ATMIOC_CLIP+1)  /* become atmarpd ctrl sock */
+#define ATMARP_MKIP    _IO('a',ATMIOC_CLIP+2)  /* attach socket to IP */
+#define ATMARP_SETENTRY        _IO('a',ATMIOC_CLIP+3)  /* fill or hide ARP entry */
+#define ATMARP_ENCAP   _IO('a',ATMIOC_CLIP+5)  /* change encapsulation */
+
+
+enum atmarp_ctrl_type {
+       act_invalid,            /* catch uninitialized structures */
+       act_need,               /* need address resolution */
+       act_up,                 /* interface is coming up */
+       act_down,               /* interface is going down */
+       act_change              /* interface configuration has changed */
+};
+
+struct atmarp_ctrl {
+       enum atmarp_ctrl_type   type;   /* message type */
+       int                     itf_num;/* interface number (if present) */
+       __be32                  ip;     /* IP address (act_need only) */
+};
+
+#endif
diff --git a/include/uapi/linux/atmdev.h b/include/uapi/linux/atmdev.h
new file mode 100644 (file)
index 0000000..8faa8b9
--- /dev/null
@@ -0,0 +1,215 @@
+/* atmdev.h - ATM device driver declarations and various related items */
+/* Written 1995-2000 by Werner Almesberger, EPFL LRC/ICA */
+
+#ifndef LINUX_ATMDEV_H
+#define LINUX_ATMDEV_H
+
+
+#include <linux/atmapi.h>
+#include <linux/atm.h>
+#include <linux/atmioc.h>
+
+
+#define ESI_LEN                6
+
+#define ATM_OC3_PCR    (155520000/270*260/8/53)
+                       /* OC3 link rate:  155520000 bps
+                          SONET overhead: /270*260 (9 section, 1 path)
+                          bits per cell:  /8/53
+                          max cell rate:  353207.547 cells/sec */
+#define ATM_25_PCR     ((25600000/8-8000)/54)
+                       /* 25 Mbps ATM cell rate (59111) */
+#define ATM_OC12_PCR   (622080000/1080*1040/8/53)
+                       /* OC12 link rate: 622080000 bps
+                          SONET overhead: /1080*1040
+                          bits per cell:  /8/53
+                          max cell rate:  1412830.188 cells/sec */
+#define ATM_DS3_PCR    (8000*12)
+                       /* DS3: 12 cells in a 125 usec time slot */
+
+
+#define __AAL_STAT_ITEMS \
+    __HANDLE_ITEM(tx);                 /* TX okay */ \
+    __HANDLE_ITEM(tx_err);             /* TX errors */ \
+    __HANDLE_ITEM(rx);                 /* RX okay */ \
+    __HANDLE_ITEM(rx_err);             /* RX errors */ \
+    __HANDLE_ITEM(rx_drop);            /* RX out of memory */
+
+struct atm_aal_stats {
+#define __HANDLE_ITEM(i) int i
+       __AAL_STAT_ITEMS
+#undef __HANDLE_ITEM
+};
+
+
+struct atm_dev_stats {
+       struct atm_aal_stats aal0;
+       struct atm_aal_stats aal34;
+       struct atm_aal_stats aal5;
+} __ATM_API_ALIGN;
+
+
+#define ATM_GETLINKRATE        _IOW('a',ATMIOC_ITF+1,struct atmif_sioc)
+                                       /* get link rate */
+#define ATM_GETNAMES   _IOW('a',ATMIOC_ITF+3,struct atm_iobuf)
+                                       /* get interface names (numbers) */
+#define ATM_GETTYPE    _IOW('a',ATMIOC_ITF+4,struct atmif_sioc)
+                                       /* get interface type name */
+#define ATM_GETESI     _IOW('a',ATMIOC_ITF+5,struct atmif_sioc)
+                                       /* get interface ESI */
+#define ATM_GETADDR    _IOW('a',ATMIOC_ITF+6,struct atmif_sioc)
+                                       /* get itf's local ATM addr. list */
+#define ATM_RSTADDR    _IOW('a',ATMIOC_ITF+7,struct atmif_sioc)
+                                       /* reset itf's ATM address list */
+#define ATM_ADDADDR    _IOW('a',ATMIOC_ITF+8,struct atmif_sioc)
+                                       /* add a local ATM address */
+#define ATM_DELADDR    _IOW('a',ATMIOC_ITF+9,struct atmif_sioc)
+                                       /* remove a local ATM address */
+#define ATM_GETCIRANGE _IOW('a',ATMIOC_ITF+10,struct atmif_sioc)
+                                       /* get connection identifier range */
+#define ATM_SETCIRANGE _IOW('a',ATMIOC_ITF+11,struct atmif_sioc)
+                                       /* set connection identifier range */
+#define ATM_SETESI     _IOW('a',ATMIOC_ITF+12,struct atmif_sioc)
+                                       /* set interface ESI */
+#define ATM_SETESIF    _IOW('a',ATMIOC_ITF+13,struct atmif_sioc)
+                                       /* force interface ESI */
+#define ATM_ADDLECSADDR        _IOW('a', ATMIOC_ITF+14, struct atmif_sioc)
+                                       /* register a LECS address */
+#define ATM_DELLECSADDR        _IOW('a', ATMIOC_ITF+15, struct atmif_sioc)
+                                       /* unregister a LECS address */
+#define ATM_GETLECSADDR        _IOW('a', ATMIOC_ITF+16, struct atmif_sioc)
+                                       /* retrieve LECS address(es) */
+
+#define ATM_GETSTAT    _IOW('a',ATMIOC_SARCOM+0,struct atmif_sioc)
+                                       /* get AAL layer statistics */
+#define ATM_GETSTATZ   _IOW('a',ATMIOC_SARCOM+1,struct atmif_sioc)
+                                       /* get AAL layer statistics and zero */
+#define ATM_GETLOOP    _IOW('a',ATMIOC_SARCOM+2,struct atmif_sioc)
+                                       /* get loopback mode */
+#define ATM_SETLOOP    _IOW('a',ATMIOC_SARCOM+3,struct atmif_sioc)
+                                       /* set loopback mode */
+#define ATM_QUERYLOOP  _IOW('a',ATMIOC_SARCOM+4,struct atmif_sioc)
+                                       /* query supported loopback modes */
+#define ATM_SETSC      _IOW('a',ATMIOC_SPECIAL+1,int)
+                                       /* enable or disable single-copy */
+#define ATM_SETBACKEND _IOW('a',ATMIOC_SPECIAL+2,atm_backend_t)
+                                       /* set backend handler */
+#define ATM_NEWBACKENDIF _IOW('a',ATMIOC_SPECIAL+3,atm_backend_t)
+                                       /* use backend to make new if */
+#define ATM_ADDPARTY   _IOW('a', ATMIOC_SPECIAL+4,struct atm_iobuf)
+                                       /* add party to p2mp call */
+#ifdef CONFIG_COMPAT
+/* It actually takes struct sockaddr_atmsvc, not struct atm_iobuf */
+#define COMPAT_ATM_ADDPARTY    _IOW('a', ATMIOC_SPECIAL+4,struct compat_atm_iobuf)
+#endif
+#define ATM_DROPPARTY  _IOW('a', ATMIOC_SPECIAL+5,int)
+                                       /* drop party from p2mp call */
+
+/*
+ * These are backend handkers that can be set via the ATM_SETBACKEND call
+ * above.  In the future we may support dynamic loading of these - for now,
+ * they're just being used to share the ATMIOC_BACKEND ioctls
+ */
+#define ATM_BACKEND_RAW                0       
+#define ATM_BACKEND_PPP                1       /* PPPoATM - RFC2364 */
+#define ATM_BACKEND_BR2684     2       /* Bridged RFC1483/2684 */
+
+/* for ATM_GETTYPE */
+#define ATM_ITFTYP_LEN 8       /* maximum length of interface type name */
+
+/*
+ * Loopback modes for ATM_{PHY,SAR}_{GET,SET}LOOP
+ */
+
+/* Point of loopback                           CPU-->SAR-->PHY-->line--> ... */
+#define __ATM_LM_NONE  0       /* no loop back     ^     ^     ^      ^      */
+#define __ATM_LM_AAL   1       /* loop back PDUs --'     |     |      |      */
+#define __ATM_LM_ATM   2       /* loop back ATM cells ---'     |      |      */
+/* RESERVED            4       loop back on PHY side  ---'                   */
+#define __ATM_LM_PHY   8       /* loop back bits (digital) ----'      |      */
+#define __ATM_LM_ANALOG 16     /* loop back the analog signal --------'      */
+
+/* Direction of loopback */
+#define __ATM_LM_MKLOC(n)      ((n))       /* Local (i.e. loop TX to RX) */
+#define __ATM_LM_MKRMT(n)      ((n) << 8)  /* Remote (i.e. loop RX to TX) */
+
+#define __ATM_LM_XTLOC(n)      ((n) & 0xff)
+#define __ATM_LM_XTRMT(n)      (((n) >> 8) & 0xff)
+
+#define ATM_LM_NONE    0       /* no loopback */
+
+#define ATM_LM_LOC_AAL __ATM_LM_MKLOC(__ATM_LM_AAL)
+#define ATM_LM_LOC_ATM __ATM_LM_MKLOC(__ATM_LM_ATM)
+#define ATM_LM_LOC_PHY __ATM_LM_MKLOC(__ATM_LM_PHY)
+#define ATM_LM_LOC_ANALOG __ATM_LM_MKLOC(__ATM_LM_ANALOG)
+
+#define ATM_LM_RMT_AAL __ATM_LM_MKRMT(__ATM_LM_AAL)
+#define ATM_LM_RMT_ATM __ATM_LM_MKRMT(__ATM_LM_ATM)
+#define ATM_LM_RMT_PHY __ATM_LM_MKRMT(__ATM_LM_PHY)
+#define ATM_LM_RMT_ANALOG __ATM_LM_MKRMT(__ATM_LM_ANALOG)
+
+/*
+ * Note: ATM_LM_LOC_* and ATM_LM_RMT_* can be combined, provided that
+ * __ATM_LM_XTLOC(x) <= __ATM_LM_XTRMT(x)
+ */
+
+
+struct atm_iobuf {
+       int length;
+       void *buffer;
+};
+
+/* for ATM_GETCIRANGE / ATM_SETCIRANGE */
+
+#define ATM_CI_MAX      -1              /* use maximum range of VPI/VCI */
+struct atm_cirange {
+       signed char     vpi_bits;       /* 1..8, ATM_CI_MAX (-1) for maximum */
+       signed char     vci_bits;       /* 1..16, ATM_CI_MAX (-1) for maximum */
+};
+
+/* for ATM_SETSC; actually taken from the ATM_VF number space */
+
+#define ATM_SC_RX      1024            /* enable RX single-copy */
+#define ATM_SC_TX      2048            /* enable TX single-copy */
+
+#define ATM_BACKLOG_DEFAULT 32 /* if we get more, we're likely to time out
+                                 anyway */
+
+/* MF: change_qos (Modify) flags */
+
+#define ATM_MF_IMMED    1      /* Block until change is effective */
+#define ATM_MF_INC_RSV  2      /* Change reservation on increase */
+#define ATM_MF_INC_SHP  4      /* Change shaping on increase */
+#define ATM_MF_DEC_RSV  8      /* Change reservation on decrease */
+#define ATM_MF_DEC_SHP 16      /* Change shaping on decrease */
+#define ATM_MF_BWD     32      /* Set the backward direction parameters */
+
+#define ATM_MF_SET     (ATM_MF_INC_RSV | ATM_MF_INC_SHP | ATM_MF_DEC_RSV | \
+                         ATM_MF_DEC_SHP | ATM_MF_BWD)
+
+/*
+ * ATM_VS_* are used to express VC state in a human-friendly way.
+ */
+
+#define ATM_VS_IDLE    0       /* VC is not used */
+#define ATM_VS_CONNECTED 1     /* VC is connected */
+#define ATM_VS_CLOSING 2       /* VC is closing */
+#define ATM_VS_LISTEN  3       /* VC is listening for incoming setups */
+#define ATM_VS_INUSE   4       /* VC is in use (registered with atmsigd) */
+#define ATM_VS_BOUND   5       /* VC is bound */
+
+#define ATM_VS2TXT_MAP \
+    "IDLE", "CONNECTED", "CLOSING", "LISTEN", "INUSE", "BOUND"
+
+#define ATM_VF2TXT_MAP \
+    "ADDR",    "READY",        "PARTIAL",      "REGIS", \
+    "RELEASED", "HASQOS",      "LISTEN",       "META", \
+    "256",     "512",          "1024",         "2048", \
+    "SESSION", "HASSAP",       "BOUND",        "CLOSE"
+
+
+
+#endif /* LINUX_ATMDEV_H */
diff --git a/include/uapi/linux/atmioc.h b/include/uapi/linux/atmioc.h
new file mode 100644 (file)
index 0000000..37f67aa
--- /dev/null
@@ -0,0 +1,41 @@
+/* atmioc.h - ranges for ATM-related ioctl numbers */
+/* Written 1995-1999 by Werner Almesberger, EPFL LRC/ICA */
+
+
+/*
+ * See http://icawww1.epfl.ch/linux-atm/magic.html for the complete list of
+ * "magic" ioctl numbers.
+ */
+
+
+#ifndef _LINUX_ATMIOC_H
+#define _LINUX_ATMIOC_H
+
+#include <asm/ioctl.h>
+               /* everybody including atmioc.h will also need _IO{,R,W,WR} */
+
+#define ATMIOC_PHYCOM    0x00 /* PHY device common ioctls, globally unique */
+#define ATMIOC_PHYCOM_END 0x0f
+#define ATMIOC_PHYTYP    0x10 /* PHY dev type ioctls, unique per PHY type */
+#define ATMIOC_PHYTYP_END 0x2f
+#define ATMIOC_PHYPRV    0x30 /* PHY dev private ioctls, unique per driver */
+#define ATMIOC_PHYPRV_END 0x4f
+#define ATMIOC_SARCOM    0x50 /* SAR device common ioctls, globally unique */
+#define ATMIOC_SARCOM_END 0x50
+#define ATMIOC_SARPRV    0x60 /* SAR dev private ioctls, unique per driver */
+#define ATMIOC_SARPRV_END 0x7f
+#define ATMIOC_ITF       0x80 /* Interface ioctls, globally unique */
+#define ATMIOC_ITF_END   0x8f
+#define ATMIOC_BACKEND   0x90 /* ATM generic backend ioctls, u. per backend */
+#define ATMIOC_BACKEND_END 0xaf
+/* 0xb0-0xbf: Reserved for future use */
+#define ATMIOC_AREQUIPA          0xc0 /* Application requested IP over ATM, glob. u. */
+#define ATMIOC_LANE      0xd0 /* LAN Emulation, globally unique */
+#define ATMIOC_MPOA       0xd8 /* MPOA, globally unique */
+#define        ATMIOC_CLIP       0xe0 /* Classical IP over ATM control, globally u. */
+#define        ATMIOC_CLIP_END   0xef
+#define        ATMIOC_SPECIAL    0xf0 /* Special-purpose controls, globally unique */
+#define        ATMIOC_SPECIAL_END 0xff
+
+#endif
diff --git a/include/uapi/linux/atmsap.h b/include/uapi/linux/atmsap.h
new file mode 100644 (file)
index 0000000..799b104
--- /dev/null
@@ -0,0 +1,162 @@
+/* atmsap.h - ATM Service Access Point addressing definitions */
+
+/* Written 1995-1999 by Werner Almesberger, EPFL LRC/ICA */
+
+
+#ifndef _LINUX_ATMSAP_H
+#define _LINUX_ATMSAP_H
+
+#include <linux/atmapi.h>
+
+/*
+ * BEGIN_xx and END_xx markers are used for automatic generation of
+ * documentation. Do not change them.
+ */
+
+
+/*
+ * Layer 2 protocol identifiers
+ */
+
+/* BEGIN_L2 */
+#define ATM_L2_NONE    0       /* L2 not specified */
+#define ATM_L2_ISO1745  0x01   /* Basic mode ISO 1745 */
+#define ATM_L2_Q291    0x02    /* ITU-T Q.291 (Rec. I.441) */
+#define ATM_L2_X25_LL  0x06    /* ITU-T X.25, link layer */
+#define ATM_L2_X25_ML  0x07    /* ITU-T X.25, multilink */
+#define ATM_L2_LAPB    0x08    /* Extended LAPB, half-duplex (Rec. T.71) */
+#define ATM_L2_HDLC_ARM        0x09    /* HDLC ARM (ISO/IEC 4335) */
+#define ATM_L2_HDLC_NRM        0x0a    /* HDLC NRM (ISO/IEC 4335) */
+#define ATM_L2_HDLC_ABM        0x0b    /* HDLC ABM (ISO/IEC 4335) */
+#define ATM_L2_ISO8802 0x0c    /* LAN LLC (ISO/IEC 8802/2) */
+#define ATM_L2_X75     0x0d    /* ITU-T X.75, SLP */
+#define ATM_L2_Q922    0x0e    /* ITU-T Q.922 */
+#define ATM_L2_USER    0x10    /* user-specified */
+#define ATM_L2_ISO7776 0x11    /* ISO 7776 DTE-DTE */
+/* END_L2 */
+
+
+/*
+ * Layer 3 protocol identifiers
+ */
+
+/* BEGIN_L3 */
+#define ATM_L3_NONE    0       /* L3 not specified */
+#define ATM_L3_X25     0x06    /* ITU-T X.25, packet layer */
+#define ATM_L3_ISO8208 0x07    /* ISO/IEC 8208 */
+#define ATM_L3_X223    0x08    /* ITU-T X.223 | ISO/IEC 8878 */
+#define ATM_L3_ISO8473 0x09    /* ITU-T X.233 | ISO/IEC 8473 */
+#define ATM_L3_T70     0x0a    /* ITU-T T.70 minimum network layer */
+#define ATM_L3_TR9577  0x0b    /* ISO/IEC TR 9577 */
+#define ATM_L3_H310    0x0c    /* ITU-T Recommendation H.310 */
+#define ATM_L3_H321    0x0d    /* ITU-T Recommendation H.321 */
+#define ATM_L3_USER    0x10    /* user-specified */
+/* END_L3 */
+
+
+/*
+ * High layer identifiers
+ */
+
+/* BEGIN_HL */
+#define ATM_HL_NONE    0       /* HL not specified */
+#define ATM_HL_ISO     0x01    /* ISO */
+#define ATM_HL_USER    0x02    /* user-specific */
+#define ATM_HL_HLP     0x03    /* high layer profile - UNI 3.0 only */
+#define ATM_HL_VENDOR  0x04    /* vendor-specific application identifier */
+/* END_HL */
+
+
+/*
+ * ITU-T coded mode of operation
+ */
+
+/* BEGIN_IMD */
+#define ATM_IMD_NONE    0      /* mode not specified */
+#define ATM_IMD_NORMAL  1      /* normal mode of operation */
+#define ATM_IMD_EXTENDED 2     /* extended mode of operation */
+/* END_IMD */
+
+/*
+ * H.310 code points
+ */
+
+#define ATM_TT_NONE    0       /* terminal type not specified */
+#define ATM_TT_RX      1       /* receive only */
+#define ATM_TT_TX      2       /* send only */
+#define ATM_TT_RXTX    3       /* receive and send */
+
+#define ATM_MC_NONE    0       /* no multiplexing */
+#define ATM_MC_TS      1       /* transport stream (TS) */
+#define ATM_MC_TS_FEC  2       /* transport stream with forward error corr. */
+#define ATM_MC_PS      3       /* program stream (PS) */
+#define ATM_MC_PS_FEC  4       /* program stream with forward error corr. */
+#define ATM_MC_H221    5       /* ITU-T Rec. H.221 */
+
+/*
+ * SAP structures
+ */
+
+#define ATM_MAX_HLI    8       /* maximum high-layer information length */
+
+
+struct atm_blli {
+    unsigned char l2_proto;    /* layer 2 protocol */
+    union {
+       struct {
+           unsigned char mode; /* mode of operation (ATM_IMD_xxx), 0 if */
+                               /* absent */
+           unsigned char window; /* window size (k), 1-127 (0 to omit) */
+       } itu;                  /* ITU-T encoding */
+       unsigned char user;     /* user-specified l2 information */
+    } l2;
+    unsigned char l3_proto;    /* layer 3 protocol */
+    union {
+       struct {
+           unsigned char mode; /* mode of operation (ATM_IMD_xxx), 0 if */
+                               /* absent */
+           unsigned char def_size; /* default packet size (log2), 4-12 (0 to */
+                                   /* omit) */
+           unsigned char window;/* packet window size, 1-127 (0 to omit) */
+       } itu;                  /* ITU-T encoding */
+       unsigned char user;     /* user specified l3 information */
+       struct {                      /* if l3_proto = ATM_L3_H310 */
+           unsigned char term_type;  /* terminal type */
+           unsigned char fw_mpx_cap; /* forward multiplexing capability */
+                                     /* only if term_type != ATM_TT_NONE */
+           unsigned char bw_mpx_cap; /* backward multiplexing capability */
+                                     /* only if term_type != ATM_TT_NONE */
+       } h310;
+       struct {                  /* if l3_proto = ATM_L3_TR9577 */
+           unsigned char ipi;    /* initial protocol id */
+           unsigned char snap[5];/* IEEE 802.1 SNAP identifier */
+                                 /* (only if ipi == NLPID_IEEE802_1_SNAP) */
+       } tr9577;
+    } l3;
+} __ATM_API_ALIGN;
+
+
+struct atm_bhli {
+    unsigned char hl_type;     /* high layer information type */
+    unsigned char hl_length;   /* length (only if hl_type == ATM_HL_USER || */
+                               /* hl_type == ATM_HL_ISO) */
+    unsigned char hl_info[ATM_MAX_HLI];/* high layer information */
+};
+
+
+#define ATM_MAX_BLLI   3               /* maximum number of BLLI elements */
+
+
+struct atm_sap {
+       struct atm_bhli bhli;           /* local SAP, high-layer information */
+       struct atm_blli blli[ATM_MAX_BLLI] __ATM_API_ALIGN;
+                                       /* local SAP, low-layer info */
+};
+
+
+static __inline__ int blli_in_use(struct atm_blli blli)
+{
+       return blli.l2_proto || blli.l3_proto;
+}
+
+#endif
diff --git a/include/uapi/linux/bpf.h b/include/uapi/linux/bpf.h
new file mode 100644 (file)
index 0000000..0895a52
--- /dev/null
@@ -0,0 +1,867 @@
+/* Copyright (c) 2011-2014 PLUMgrid, http://plumgrid.com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ */
+#ifndef __LINUX_BPF_H__
+#define __LINUX_BPF_H__
+
+#include <linux/types.h>
+#include <linux/bpf_common.h>
+
+/* Extended instruction set based on top of classic BPF */
+
+/* instruction classes */
+#define BPF_ALU64      0x07    /* alu mode in double word width */
+
+/* ld/ldx fields */
+#define BPF_DW         0x18    /* double word */
+#define BPF_XADD       0xc0    /* exclusive add */
+
+/* alu/jmp fields */
+#define BPF_MOV                0xb0    /* mov reg to reg */
+#define BPF_ARSH       0xc0    /* sign extending arithmetic shift right */
+
+/* change endianness of a register */
+#define BPF_END                0xd0    /* flags for endianness conversion: */
+#define BPF_TO_LE      0x00    /* convert to little-endian */
+#define BPF_TO_BE      0x08    /* convert to big-endian */
+#define BPF_FROM_LE    BPF_TO_LE
+#define BPF_FROM_BE    BPF_TO_BE
+
+/* jmp encodings */
+#define BPF_JNE                0x50    /* jump != */
+#define BPF_JLT                0xa0    /* LT is unsigned, '<' */
+#define BPF_JLE                0xb0    /* LE is unsigned, '<=' */
+#define BPF_JSGT       0x60    /* SGT is signed '>', GT in x86 */
+#define BPF_JSGE       0x70    /* SGE is signed '>=', GE in x86 */
+#define BPF_JSLT       0xc0    /* SLT is signed, '<' */
+#define BPF_JSLE       0xd0    /* SLE is signed, '<=' */
+#define BPF_CALL       0x80    /* function call */
+#define BPF_EXIT       0x90    /* function return */
+
+/* Register numbers */
+enum {
+       BPF_REG_0 = 0,
+       BPF_REG_1,
+       BPF_REG_2,
+       BPF_REG_3,
+       BPF_REG_4,
+       BPF_REG_5,
+       BPF_REG_6,
+       BPF_REG_7,
+       BPF_REG_8,
+       BPF_REG_9,
+       BPF_REG_10,
+       __MAX_BPF_REG,
+};
+
+/* BPF has 10 general purpose 64-bit registers and stack frame. */
+#define MAX_BPF_REG    __MAX_BPF_REG
+
+struct bpf_insn {
+       __u8    code;           /* opcode */
+       __u8    dst_reg:4;      /* dest register */
+       __u8    src_reg:4;      /* source register */
+       __s16   off;            /* signed offset */
+       __s32   imm;            /* signed immediate constant */
+};
+
+/* Key of an a BPF_MAP_TYPE_LPM_TRIE entry */
+struct bpf_lpm_trie_key {
+       __u32   prefixlen;      /* up to 32 for AF_INET, 128 for AF_INET6 */
+       __u8    data[0];        /* Arbitrary size */
+};
+
+/* BPF syscall commands, see bpf(2) man-page for details. */
+enum bpf_cmd {
+       BPF_MAP_CREATE,
+       BPF_MAP_LOOKUP_ELEM,
+       BPF_MAP_UPDATE_ELEM,
+       BPF_MAP_DELETE_ELEM,
+       BPF_MAP_GET_NEXT_KEY,
+       BPF_PROG_LOAD,
+       BPF_OBJ_PIN,
+       BPF_OBJ_GET,
+       BPF_PROG_ATTACH,
+       BPF_PROG_DETACH,
+       BPF_PROG_TEST_RUN,
+       BPF_PROG_GET_NEXT_ID,
+       BPF_MAP_GET_NEXT_ID,
+       BPF_PROG_GET_FD_BY_ID,
+       BPF_MAP_GET_FD_BY_ID,
+       BPF_OBJ_GET_INFO_BY_FD,
+};
+
+enum bpf_map_type {
+       BPF_MAP_TYPE_UNSPEC,
+       BPF_MAP_TYPE_HASH,
+       BPF_MAP_TYPE_ARRAY,
+       BPF_MAP_TYPE_PROG_ARRAY,
+       BPF_MAP_TYPE_PERF_EVENT_ARRAY,
+       BPF_MAP_TYPE_PERCPU_HASH,
+       BPF_MAP_TYPE_PERCPU_ARRAY,
+       BPF_MAP_TYPE_STACK_TRACE,
+       BPF_MAP_TYPE_CGROUP_ARRAY,
+       BPF_MAP_TYPE_LRU_HASH,
+       BPF_MAP_TYPE_LRU_PERCPU_HASH,
+       BPF_MAP_TYPE_LPM_TRIE,
+       BPF_MAP_TYPE_ARRAY_OF_MAPS,
+       BPF_MAP_TYPE_HASH_OF_MAPS,
+       BPF_MAP_TYPE_DEVMAP,
+       BPF_MAP_TYPE_SOCKMAP,
+};
+
+enum bpf_prog_type {
+       BPF_PROG_TYPE_UNSPEC,
+       BPF_PROG_TYPE_SOCKET_FILTER,
+       BPF_PROG_TYPE_KPROBE,
+       BPF_PROG_TYPE_SCHED_CLS,
+       BPF_PROG_TYPE_SCHED_ACT,
+       BPF_PROG_TYPE_TRACEPOINT,
+       BPF_PROG_TYPE_XDP,
+       BPF_PROG_TYPE_PERF_EVENT,
+       BPF_PROG_TYPE_CGROUP_SKB,
+       BPF_PROG_TYPE_CGROUP_SOCK,
+       BPF_PROG_TYPE_LWT_IN,
+       BPF_PROG_TYPE_LWT_OUT,
+       BPF_PROG_TYPE_LWT_XMIT,
+       BPF_PROG_TYPE_SOCK_OPS,
+       BPF_PROG_TYPE_SK_SKB,
+};
+
+enum bpf_attach_type {
+       BPF_CGROUP_INET_INGRESS,
+       BPF_CGROUP_INET_EGRESS,
+       BPF_CGROUP_INET_SOCK_CREATE,
+       BPF_CGROUP_SOCK_OPS,
+       BPF_SK_SKB_STREAM_PARSER,
+       BPF_SK_SKB_STREAM_VERDICT,
+       __MAX_BPF_ATTACH_TYPE
+};
+
+#define MAX_BPF_ATTACH_TYPE __MAX_BPF_ATTACH_TYPE
+
+/* If BPF_F_ALLOW_OVERRIDE flag is used in BPF_PROG_ATTACH command
+ * to the given target_fd cgroup the descendent cgroup will be able to
+ * override effective bpf program that was inherited from this cgroup
+ */
+#define BPF_F_ALLOW_OVERRIDE   (1U << 0)
+
+/* If BPF_F_STRICT_ALIGNMENT is used in BPF_PROG_LOAD command, the
+ * verifier will perform strict alignment checking as if the kernel
+ * has been built with CONFIG_EFFICIENT_UNALIGNED_ACCESS not set,
+ * and NET_IP_ALIGN defined to 2.
+ */
+#define BPF_F_STRICT_ALIGNMENT (1U << 0)
+
+#define BPF_PSEUDO_MAP_FD      1
+
+/* flags for BPF_MAP_UPDATE_ELEM command */
+#define BPF_ANY                0 /* create new element or update existing */
+#define BPF_NOEXIST    1 /* create new element if it didn't exist */
+#define BPF_EXIST      2 /* update existing element */
+
+/* flags for BPF_MAP_CREATE command */
+#define BPF_F_NO_PREALLOC      (1U << 0)
+/* Instead of having one common LRU list in the
+ * BPF_MAP_TYPE_LRU_[PERCPU_]HASH map, use a percpu LRU list
+ * which can scale and perform better.
+ * Note, the LRU nodes (including free nodes) cannot be moved
+ * across different LRU lists.
+ */
+#define BPF_F_NO_COMMON_LRU    (1U << 1)
+/* Specify numa node during map creation */
+#define BPF_F_NUMA_NODE                (1U << 2)
+
+union bpf_attr {
+       struct { /* anonymous struct used by BPF_MAP_CREATE command */
+               __u32   map_type;       /* one of enum bpf_map_type */
+               __u32   key_size;       /* size of key in bytes */
+               __u32   value_size;     /* size of value in bytes */
+               __u32   max_entries;    /* max number of entries in a map */
+               __u32   map_flags;      /* BPF_MAP_CREATE related
+                                        * flags defined above.
+                                        */
+               __u32   inner_map_fd;   /* fd pointing to the inner map */
+               __u32   numa_node;      /* numa node (effective only if
+                                        * BPF_F_NUMA_NODE is set).
+                                        */
+       };
+
+       struct { /* anonymous struct used by BPF_MAP_*_ELEM commands */
+               __u32           map_fd;
+               __aligned_u64   key;
+               union {
+                       __aligned_u64 value;
+                       __aligned_u64 next_key;
+               };
+               __u64           flags;
+       };
+
+       struct { /* anonymous struct used by BPF_PROG_LOAD command */
+               __u32           prog_type;      /* one of enum bpf_prog_type */
+               __u32           insn_cnt;
+               __aligned_u64   insns;
+               __aligned_u64   license;
+               __u32           log_level;      /* verbosity level of verifier */
+               __u32           log_size;       /* size of user buffer */
+               __aligned_u64   log_buf;        /* user supplied buffer */
+               __u32           kern_version;   /* checked when prog_type=kprobe */
+               __u32           prog_flags;
+       };
+
+       struct { /* anonymous struct used by BPF_OBJ_* commands */
+               __aligned_u64   pathname;
+               __u32           bpf_fd;
+       };
+
+       struct { /* anonymous struct used by BPF_PROG_ATTACH/DETACH commands */
+               __u32           target_fd;      /* container object to attach to */
+               __u32           attach_bpf_fd;  /* eBPF program to attach */
+               __u32           attach_type;
+               __u32           attach_flags;
+       };
+
+       struct { /* anonymous struct used by BPF_PROG_TEST_RUN command */
+               __u32           prog_fd;
+               __u32           retval;
+               __u32           data_size_in;
+               __u32           data_size_out;
+               __aligned_u64   data_in;
+               __aligned_u64   data_out;
+               __u32           repeat;
+               __u32           duration;
+       } test;
+
+       struct { /* anonymous struct used by BPF_*_GET_*_ID */
+               union {
+                       __u32           start_id;
+                       __u32           prog_id;
+                       __u32           map_id;
+               };
+               __u32           next_id;
+       };
+
+       struct { /* anonymous struct used by BPF_OBJ_GET_INFO_BY_FD */
+               __u32           bpf_fd;
+               __u32           info_len;
+               __aligned_u64   info;
+       } info;
+} __attribute__((aligned(8)));
+
+/* BPF helper function descriptions:
+ *
+ * void *bpf_map_lookup_elem(&map, &key)
+ *     Return: Map value or NULL
+ *
+ * int bpf_map_update_elem(&map, &key, &value, flags)
+ *     Return: 0 on success or negative error
+ *
+ * int bpf_map_delete_elem(&map, &key)
+ *     Return: 0 on success or negative error
+ *
+ * int bpf_probe_read(void *dst, int size, void *src)
+ *     Return: 0 on success or negative error
+ *
+ * u64 bpf_ktime_get_ns(void)
+ *     Return: current ktime
+ *
+ * int bpf_trace_printk(const char *fmt, int fmt_size, ...)
+ *     Return: length of buffer written or negative error
+ *
+ * u32 bpf_prandom_u32(void)
+ *     Return: random value
+ *
+ * u32 bpf_raw_smp_processor_id(void)
+ *     Return: SMP processor ID
+ *
+ * int bpf_skb_store_bytes(skb, offset, from, len, flags)
+ *     store bytes into packet
+ *     @skb: pointer to skb
+ *     @offset: offset within packet from skb->mac_header
+ *     @from: pointer where to copy bytes from
+ *     @len: number of bytes to store into packet
+ *     @flags: bit 0 - if true, recompute skb->csum
+ *             other bits - reserved
+ *     Return: 0 on success or negative error
+ *
+ * int bpf_l3_csum_replace(skb, offset, from, to, flags)
+ *     recompute IP checksum
+ *     @skb: pointer to skb
+ *     @offset: offset within packet where IP checksum is located
+ *     @from: old value of header field
+ *     @to: new value of header field
+ *     @flags: bits 0-3 - size of header field
+ *             other bits - reserved
+ *     Return: 0 on success or negative error
+ *
+ * int bpf_l4_csum_replace(skb, offset, from, to, flags)
+ *     recompute TCP/UDP checksum
+ *     @skb: pointer to skb
+ *     @offset: offset within packet where TCP/UDP checksum is located
+ *     @from: old value of header field
+ *     @to: new value of header field
+ *     @flags: bits 0-3 - size of header field
+ *             bit 4 - is pseudo header
+ *             other bits - reserved
+ *     Return: 0 on success or negative error
+ *
+ * int bpf_tail_call(ctx, prog_array_map, index)
+ *     jump into another BPF program
+ *     @ctx: context pointer passed to next program
+ *     @prog_array_map: pointer to map which type is BPF_MAP_TYPE_PROG_ARRAY
+ *     @index: index inside array that selects specific program to run
+ *     Return: 0 on success or negative error
+ *
+ * int bpf_clone_redirect(skb, ifindex, flags)
+ *     redirect to another netdev
+ *     @skb: pointer to skb
+ *     @ifindex: ifindex of the net device
+ *     @flags: bit 0 - if set, redirect to ingress instead of egress
+ *             other bits - reserved
+ *     Return: 0 on success or negative error
+ *
+ * u64 bpf_get_current_pid_tgid(void)
+ *     Return: current->tgid << 32 | current->pid
+ *
+ * u64 bpf_get_current_uid_gid(void)
+ *     Return: current_gid << 32 | current_uid
+ *
+ * int bpf_get_current_comm(char *buf, int size_of_buf)
+ *     stores current->comm into buf
+ *     Return: 0 on success or negative error
+ *
+ * u32 bpf_get_cgroup_classid(skb)
+ *     retrieve a proc's classid
+ *     @skb: pointer to skb
+ *     Return: classid if != 0
+ *
+ * int bpf_skb_vlan_push(skb, vlan_proto, vlan_tci)
+ *     Return: 0 on success or negative error
+ *
+ * int bpf_skb_vlan_pop(skb)
+ *     Return: 0 on success or negative error
+ *
+ * int bpf_skb_get_tunnel_key(skb, key, size, flags)
+ * int bpf_skb_set_tunnel_key(skb, key, size, flags)
+ *     retrieve or populate tunnel metadata
+ *     @skb: pointer to skb
+ *     @key: pointer to 'struct bpf_tunnel_key'
+ *     @size: size of 'struct bpf_tunnel_key'
+ *     @flags: room for future extensions
+ *     Return: 0 on success or negative error
+ *
+ * u64 bpf_perf_event_read(map, flags)
+ *     read perf event counter value
+ *     @map: pointer to perf_event_array map
+ *     @flags: index of event in the map or bitmask flags
+ *     Return: value of perf event counter read or error code
+ *
+ * int bpf_redirect(ifindex, flags)
+ *     redirect to another netdev
+ *     @ifindex: ifindex of the net device
+ *     @flags:
+ *       cls_bpf:
+ *          bit 0 - if set, redirect to ingress instead of egress
+ *          other bits - reserved
+ *       xdp_bpf:
+ *         all bits - reserved
+ *     Return: cls_bpf: TC_ACT_REDIRECT on success or TC_ACT_SHOT on error
+ *            xdp_bfp: XDP_REDIRECT on success or XDP_ABORT on error
+ * int bpf_redirect_map(map, key, flags)
+ *     redirect to endpoint in map
+ *     @map: pointer to dev map
+ *     @key: index in map to lookup
+ *     @flags: --
+ *     Return: XDP_REDIRECT on success or XDP_ABORT on error
+ *
+ * u32 bpf_get_route_realm(skb)
+ *     retrieve a dst's tclassid
+ *     @skb: pointer to skb
+ *     Return: realm if != 0
+ *
+ * int bpf_perf_event_output(ctx, map, flags, data, size)
+ *     output perf raw sample
+ *     @ctx: struct pt_regs*
+ *     @map: pointer to perf_event_array map
+ *     @flags: index of event in the map or bitmask flags
+ *     @data: data on stack to be output as raw data
+ *     @size: size of data
+ *     Return: 0 on success or negative error
+ *
+ * int bpf_get_stackid(ctx, map, flags)
+ *     walk user or kernel stack and return id
+ *     @ctx: struct pt_regs*
+ *     @map: pointer to stack_trace map
+ *     @flags: bits 0-7 - numer of stack frames to skip
+ *             bit 8 - collect user stack instead of kernel
+ *             bit 9 - compare stacks by hash only
+ *             bit 10 - if two different stacks hash into the same stackid
+ *                      discard old
+ *             other bits - reserved
+ *     Return: >= 0 stackid on success or negative error
+ *
+ * s64 bpf_csum_diff(from, from_size, to, to_size, seed)
+ *     calculate csum diff
+ *     @from: raw from buffer
+ *     @from_size: length of from buffer
+ *     @to: raw to buffer
+ *     @to_size: length of to buffer
+ *     @seed: optional seed
+ *     Return: csum result or negative error code
+ *
+ * int bpf_skb_get_tunnel_opt(skb, opt, size)
+ *     retrieve tunnel options metadata
+ *     @skb: pointer to skb
+ *     @opt: pointer to raw tunnel option data
+ *     @size: size of @opt
+ *     Return: option size
+ *
+ * int bpf_skb_set_tunnel_opt(skb, opt, size)
+ *     populate tunnel options metadata
+ *     @skb: pointer to skb
+ *     @opt: pointer to raw tunnel option data
+ *     @size: size of @opt
+ *     Return: 0 on success or negative error
+ *
+ * int bpf_skb_change_proto(skb, proto, flags)
+ *     Change protocol of the skb. Currently supported is v4 -> v6,
+ *     v6 -> v4 transitions. The helper will also resize the skb. eBPF
+ *     program is expected to fill the new headers via skb_store_bytes
+ *     and lX_csum_replace.
+ *     @skb: pointer to skb
+ *     @proto: new skb->protocol type
+ *     @flags: reserved
+ *     Return: 0 on success or negative error
+ *
+ * int bpf_skb_change_type(skb, type)
+ *     Change packet type of skb.
+ *     @skb: pointer to skb
+ *     @type: new skb->pkt_type type
+ *     Return: 0 on success or negative error
+ *
+ * int bpf_skb_under_cgroup(skb, map, index)
+ *     Check cgroup2 membership of skb
+ *     @skb: pointer to skb
+ *     @map: pointer to bpf_map in BPF_MAP_TYPE_CGROUP_ARRAY type
+ *     @index: index of the cgroup in the bpf_map
+ *     Return:
+ *       == 0 skb failed the cgroup2 descendant test
+ *       == 1 skb succeeded the cgroup2 descendant test
+ *        < 0 error
+ *
+ * u32 bpf_get_hash_recalc(skb)
+ *     Retrieve and possibly recalculate skb->hash.
+ *     @skb: pointer to skb
+ *     Return: hash
+ *
+ * u64 bpf_get_current_task(void)
+ *     Returns current task_struct
+ *     Return: current
+ *
+ * int bpf_probe_write_user(void *dst, void *src, int len)
+ *     safely attempt to write to a location
+ *     @dst: destination address in userspace
+ *     @src: source address on stack
+ *     @len: number of bytes to copy
+ *     Return: 0 on success or negative error
+ *
+ * int bpf_current_task_under_cgroup(map, index)
+ *     Check cgroup2 membership of current task
+ *     @map: pointer to bpf_map in BPF_MAP_TYPE_CGROUP_ARRAY type
+ *     @index: index of the cgroup in the bpf_map
+ *     Return:
+ *       == 0 current failed the cgroup2 descendant test
+ *       == 1 current succeeded the cgroup2 descendant test
+ *        < 0 error
+ *
+ * int bpf_skb_change_tail(skb, len, flags)
+ *     The helper will resize the skb to the given new size, to be used f.e.
+ *     with control messages.
+ *     @skb: pointer to skb
+ *     @len: new skb length
+ *     @flags: reserved
+ *     Return: 0 on success or negative error
+ *
+ * int bpf_skb_pull_data(skb, len)
+ *     The helper will pull in non-linear data in case the skb is non-linear
+ *     and not all of len are part of the linear section. Only needed for
+ *     read/write with direct packet access.
+ *     @skb: pointer to skb
+ *     @len: len to make read/writeable
+ *     Return: 0 on success or negative error
+ *
+ * s64 bpf_csum_update(skb, csum)
+ *     Adds csum into skb->csum in case of CHECKSUM_COMPLETE.
+ *     @skb: pointer to skb
+ *     @csum: csum to add
+ *     Return: csum on success or negative error
+ *
+ * void bpf_set_hash_invalid(skb)
+ *     Invalidate current skb->hash.
+ *     @skb: pointer to skb
+ *
+ * int bpf_get_numa_node_id()
+ *     Return: Id of current NUMA node.
+ *
+ * int bpf_skb_change_head()
+ *     Grows headroom of skb and adjusts MAC header offset accordingly.
+ *     Will extends/reallocae as required automatically.
+ *     May change skb data pointer and will thus invalidate any check
+ *     performed for direct packet access.
+ *     @skb: pointer to skb
+ *     @len: length of header to be pushed in front
+ *     @flags: Flags (unused for now)
+ *     Return: 0 on success or negative error
+ *
+ * int bpf_xdp_adjust_head(xdp_md, delta)
+ *     Adjust the xdp_md.data by delta
+ *     @xdp_md: pointer to xdp_md
+ *     @delta: An positive/negative integer to be added to xdp_md.data
+ *     Return: 0 on success or negative on error
+ *
+ * int bpf_probe_read_str(void *dst, int size, const void *unsafe_ptr)
+ *     Copy a NUL terminated string from unsafe address. In case the string
+ *     length is smaller than size, the target is not padded with further NUL
+ *     bytes. In case the string length is larger than size, just count-1
+ *     bytes are copied and the last byte is set to NUL.
+ *     @dst: destination address
+ *     @size: maximum number of bytes to copy, including the trailing NUL
+ *     @unsafe_ptr: unsafe address
+ *     Return:
+ *       > 0 length of the string including the trailing NUL on success
+ *       < 0 error
+ *
+ * u64 bpf_get_socket_cookie(skb)
+ *     Get the cookie for the socket stored inside sk_buff.
+ *     @skb: pointer to skb
+ *     Return: 8 Bytes non-decreasing number on success or 0 if the socket
+ *     field is missing inside sk_buff
+ *
+ * u32 bpf_get_socket_uid(skb)
+ *     Get the owner uid of the socket stored inside sk_buff.
+ *     @skb: pointer to skb
+ *     Return: uid of the socket owner on success or overflowuid if failed.
+ *
+ * u32 bpf_set_hash(skb, hash)
+ *     Set full skb->hash.
+ *     @skb: pointer to skb
+ *     @hash: hash to set
+ *
+ * int bpf_setsockopt(bpf_socket, level, optname, optval, optlen)
+ *     Calls setsockopt. Not all opts are available, only those with
+ *     integer optvals plus TCP_CONGESTION.
+ *     Supported levels: SOL_SOCKET and IPROTO_TCP
+ *     @bpf_socket: pointer to bpf_socket
+ *     @level: SOL_SOCKET or IPROTO_TCP
+ *     @optname: option name
+ *     @optval: pointer to option value
+ *     @optlen: length of optval in byes
+ *     Return: 0 or negative error
+ *
+ * int bpf_skb_adjust_room(skb, len_diff, mode, flags)
+ *     Grow or shrink room in sk_buff.
+ *     @skb: pointer to skb
+ *     @len_diff: (signed) amount of room to grow/shrink
+ *     @mode: operation mode (enum bpf_adj_room_mode)
+ *     @flags: reserved for future use
+ *     Return: 0 on success or negative error code
+ *
+ * int bpf_sk_redirect_map(map, key, flags)
+ *     Redirect skb to a sock in map using key as a lookup key for the
+ *     sock in map.
+ *     @map: pointer to sockmap
+ *     @key: key to lookup sock in map
+ *     @flags: reserved for future use
+ *     Return: SK_REDIRECT
+ *
+ * int bpf_sock_map_update(skops, map, key, flags)
+ *     @skops: pointer to bpf_sock_ops
+ *     @map: pointer to sockmap to update
+ *     @key: key to insert/update sock in map
+ *     @flags: same flags as map update elem
+ */
+#define __BPF_FUNC_MAPPER(FN)          \
+       FN(unspec),                     \
+       FN(map_lookup_elem),            \
+       FN(map_update_elem),            \
+       FN(map_delete_elem),            \
+       FN(probe_read),                 \
+       FN(ktime_get_ns),               \
+       FN(trace_printk),               \
+       FN(get_prandom_u32),            \
+       FN(get_smp_processor_id),       \
+       FN(skb_store_bytes),            \
+       FN(l3_csum_replace),            \
+       FN(l4_csum_replace),            \
+       FN(tail_call),                  \
+       FN(clone_redirect),             \
+       FN(get_current_pid_tgid),       \
+       FN(get_current_uid_gid),        \
+       FN(get_current_comm),           \
+       FN(get_cgroup_classid),         \
+       FN(skb_vlan_push),              \
+       FN(skb_vlan_pop),               \
+       FN(skb_get_tunnel_key),         \
+       FN(skb_set_tunnel_key),         \
+       FN(perf_event_read),            \
+       FN(redirect),                   \
+       FN(get_route_realm),            \
+       FN(perf_event_output),          \
+       FN(skb_load_bytes),             \
+       FN(get_stackid),                \
+       FN(csum_diff),                  \
+       FN(skb_get_tunnel_opt),         \
+       FN(skb_set_tunnel_opt),         \
+       FN(skb_change_proto),           \
+       FN(skb_change_type),            \
+       FN(skb_under_cgroup),           \
+       FN(get_hash_recalc),            \
+       FN(get_current_task),           \
+       FN(probe_write_user),           \
+       FN(current_task_under_cgroup),  \
+       FN(skb_change_tail),            \
+       FN(skb_pull_data),              \
+       FN(csum_update),                \
+       FN(set_hash_invalid),           \
+       FN(get_numa_node_id),           \
+       FN(skb_change_head),            \
+       FN(xdp_adjust_head),            \
+       FN(probe_read_str),             \
+       FN(get_socket_cookie),          \
+       FN(get_socket_uid),             \
+       FN(set_hash),                   \
+       FN(setsockopt),                 \
+       FN(skb_adjust_room),            \
+       FN(redirect_map),               \
+       FN(sk_redirect_map),            \
+       FN(sock_map_update),            \
+
+/* integer value in 'imm' field of BPF_CALL instruction selects which helper
+ * function eBPF program intends to call
+ */
+#define __BPF_ENUM_FN(x) BPF_FUNC_ ## x
+enum bpf_func_id {
+       __BPF_FUNC_MAPPER(__BPF_ENUM_FN)
+       __BPF_FUNC_MAX_ID,
+};
+#undef __BPF_ENUM_FN
+
+/* All flags used by eBPF helper functions, placed here. */
+
+/* BPF_FUNC_skb_store_bytes flags. */
+#define BPF_F_RECOMPUTE_CSUM           (1ULL << 0)
+#define BPF_F_INVALIDATE_HASH          (1ULL << 1)
+
+/* BPF_FUNC_l3_csum_replace and BPF_FUNC_l4_csum_replace flags.
+ * First 4 bits are for passing the header field size.
+ */
+#define BPF_F_HDR_FIELD_MASK           0xfULL
+
+/* BPF_FUNC_l4_csum_replace flags. */
+#define BPF_F_PSEUDO_HDR               (1ULL << 4)
+#define BPF_F_MARK_MANGLED_0           (1ULL << 5)
+#define BPF_F_MARK_ENFORCE             (1ULL << 6)
+
+/* BPF_FUNC_clone_redirect and BPF_FUNC_redirect flags. */
+#define BPF_F_INGRESS                  (1ULL << 0)
+
+/* BPF_FUNC_skb_set_tunnel_key and BPF_FUNC_skb_get_tunnel_key flags. */
+#define BPF_F_TUNINFO_IPV6             (1ULL << 0)
+
+/* BPF_FUNC_get_stackid flags. */
+#define BPF_F_SKIP_FIELD_MASK          0xffULL
+#define BPF_F_USER_STACK               (1ULL << 8)
+#define BPF_F_FAST_STACK_CMP           (1ULL << 9)
+#define BPF_F_REUSE_STACKID            (1ULL << 10)
+
+/* BPF_FUNC_skb_set_tunnel_key flags. */
+#define BPF_F_ZERO_CSUM_TX             (1ULL << 1)
+#define BPF_F_DONT_FRAGMENT            (1ULL << 2)
+
+/* BPF_FUNC_perf_event_output and BPF_FUNC_perf_event_read flags. */
+#define BPF_F_INDEX_MASK               0xffffffffULL
+#define BPF_F_CURRENT_CPU              BPF_F_INDEX_MASK
+/* BPF_FUNC_perf_event_output for sk_buff input context. */
+#define BPF_F_CTXLEN_MASK              (0xfffffULL << 32)
+
+/* Mode for BPF_FUNC_skb_adjust_room helper. */
+enum bpf_adj_room_mode {
+       BPF_ADJ_ROOM_NET,
+};
+
+/* user accessible mirror of in-kernel sk_buff.
+ * new fields can only be added to the end of this structure
+ */
+struct __sk_buff {
+       __u32 len;
+       __u32 pkt_type;
+       __u32 mark;
+       __u32 queue_mapping;
+       __u32 protocol;
+       __u32 vlan_present;
+       __u32 vlan_tci;
+       __u32 vlan_proto;
+       __u32 priority;
+       __u32 ingress_ifindex;
+       __u32 ifindex;
+       __u32 tc_index;
+       __u32 cb[5];
+       __u32 hash;
+       __u32 tc_classid;
+       __u32 data;
+       __u32 data_end;
+       __u32 napi_id;
+
+       /* accessed by BPF_PROG_TYPE_sk_skb types */
+       __u32 family;
+       __u32 remote_ip4;       /* Stored in network byte order */
+       __u32 local_ip4;        /* Stored in network byte order */
+       __u32 remote_ip6[4];    /* Stored in network byte order */
+       __u32 local_ip6[4];     /* Stored in network byte order */
+       __u32 remote_port;      /* Stored in network byte order */
+       __u32 local_port;       /* stored in host byte order */
+};
+
+struct bpf_tunnel_key {
+       __u32 tunnel_id;
+       union {
+               __u32 remote_ipv4;
+               __u32 remote_ipv6[4];
+       };
+       __u8 tunnel_tos;
+       __u8 tunnel_ttl;
+       __u16 tunnel_ext;
+       __u32 tunnel_label;
+};
+
+/* Generic BPF return codes which all BPF program types may support.
+ * The values are binary compatible with their TC_ACT_* counter-part to
+ * provide backwards compatibility with existing SCHED_CLS and SCHED_ACT
+ * programs.
+ *
+ * XDP is handled seprately, see XDP_*.
+ */
+enum bpf_ret_code {
+       BPF_OK = 0,
+       /* 1 reserved */
+       BPF_DROP = 2,
+       /* 3-6 reserved */
+       BPF_REDIRECT = 7,
+       /* >127 are reserved for prog type specific return codes */
+};
+
+struct bpf_sock {
+       __u32 bound_dev_if;
+       __u32 family;
+       __u32 type;
+       __u32 protocol;
+       __u32 mark;
+       __u32 priority;
+};
+
+#define XDP_PACKET_HEADROOM 256
+
+/* User return codes for XDP prog type.
+ * A valid XDP program must return one of these defined values. All other
+ * return codes are reserved for future use. Unknown return codes will
+ * result in packet drops and a warning via bpf_warn_invalid_xdp_action().
+ */
+enum xdp_action {
+       XDP_ABORTED = 0,
+       XDP_DROP,
+       XDP_PASS,
+       XDP_TX,
+       XDP_REDIRECT,
+};
+
+/* user accessible metadata for XDP packet hook
+ * new fields must be added to the end of this structure
+ */
+struct xdp_md {
+       __u32 data;
+       __u32 data_end;
+};
+
+enum sk_action {
+       SK_ABORTED = 0,
+       SK_DROP,
+       SK_REDIRECT,
+};
+
+#define BPF_TAG_SIZE   8
+
+struct bpf_prog_info {
+       __u32 type;
+       __u32 id;
+       __u8  tag[BPF_TAG_SIZE];
+       __u32 jited_prog_len;
+       __u32 xlated_prog_len;
+       __aligned_u64 jited_prog_insns;
+       __aligned_u64 xlated_prog_insns;
+} __attribute__((aligned(8)));
+
+struct bpf_map_info {
+       __u32 type;
+       __u32 id;
+       __u32 key_size;
+       __u32 value_size;
+       __u32 max_entries;
+       __u32 map_flags;
+} __attribute__((aligned(8)));
+
+/* User bpf_sock_ops struct to access socket values and specify request ops
+ * and their replies.
+ * Some of this fields are in network (bigendian) byte order and may need
+ * to be converted before use (bpf_ntohl() defined in samples/bpf/bpf_endian.h).
+ * New fields can only be added at the end of this structure
+ */
+struct bpf_sock_ops {
+       __u32 op;
+       union {
+               __u32 reply;
+               __u32 replylong[4];
+       };
+       __u32 family;
+       __u32 remote_ip4;       /* Stored in network byte order */
+       __u32 local_ip4;        /* Stored in network byte order */
+       __u32 remote_ip6[4];    /* Stored in network byte order */
+       __u32 local_ip6[4];     /* Stored in network byte order */
+       __u32 remote_port;      /* Stored in network byte order */
+       __u32 local_port;       /* stored in host byte order */
+};
+
+/* List of known BPF sock_ops operators.
+ * New entries can only be added at the end
+ */
+enum {
+       BPF_SOCK_OPS_VOID,
+       BPF_SOCK_OPS_TIMEOUT_INIT,      /* Should return SYN-RTO value to use or
+                                        * -1 if default value should be used
+                                        */
+       BPF_SOCK_OPS_RWND_INIT,         /* Should return initial advertized
+                                        * window (in packets) or -1 if default
+                                        * value should be used
+                                        */
+       BPF_SOCK_OPS_TCP_CONNECT_CB,    /* Calls BPF program right before an
+                                        * active connection is initialized
+                                        */
+       BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB,     /* Calls BPF program when an
+                                                * active connection is
+                                                * established
+                                                */
+       BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB,    /* Calls BPF program when a
+                                                * passive connection is
+                                                * established
+                                                */
+       BPF_SOCK_OPS_NEEDS_ECN,         /* If connection's congestion control
+                                        * needs ECN
+                                        */
+};
+
+#define TCP_BPF_IW             1001    /* Set TCP initial congestion window */
+#define TCP_BPF_SNDCWND_CLAMP  1002    /* Set sndcwnd_clamp */
+
+#endif /* __LINUX_BPF_H__ */
diff --git a/include/uapi/linux/bpf_common.h b/include/uapi/linux/bpf_common.h
new file mode 100644 (file)
index 0000000..afe7433
--- /dev/null
@@ -0,0 +1,55 @@
+#ifndef __LINUX_BPF_COMMON_H__
+#define __LINUX_BPF_COMMON_H__
+
+/* Instruction classes */
+#define BPF_CLASS(code) ((code) & 0x07)
+#define                BPF_LD          0x00
+#define                BPF_LDX         0x01
+#define                BPF_ST          0x02
+#define                BPF_STX         0x03
+#define                BPF_ALU         0x04
+#define                BPF_JMP         0x05
+#define                BPF_RET         0x06
+#define                BPF_MISC        0x07
+
+/* ld/ldx fields */
+#define BPF_SIZE(code)  ((code) & 0x18)
+#define                BPF_W           0x00
+#define                BPF_H           0x08
+#define                BPF_B           0x10
+#define BPF_MODE(code)  ((code) & 0xe0)
+#define                BPF_IMM         0x00
+#define                BPF_ABS         0x20
+#define                BPF_IND         0x40
+#define                BPF_MEM         0x60
+#define                BPF_LEN         0x80
+#define                BPF_MSH         0xa0
+
+/* alu/jmp fields */
+#define BPF_OP(code)    ((code) & 0xf0)
+#define                BPF_ADD         0x00
+#define                BPF_SUB         0x10
+#define                BPF_MUL         0x20
+#define                BPF_DIV         0x30
+#define                BPF_OR          0x40
+#define                BPF_AND         0x50
+#define                BPF_LSH         0x60
+#define                BPF_RSH         0x70
+#define                BPF_NEG         0x80
+#define                BPF_MOD         0x90
+#define                BPF_XOR         0xa0
+
+#define                BPF_JA          0x00
+#define                BPF_JEQ         0x10
+#define                BPF_JGT         0x20
+#define                BPF_JGE         0x30
+#define                BPF_JSET        0x40
+#define BPF_SRC(code)   ((code) & 0x08)
+#define                BPF_K           0x00
+#define                BPF_X           0x08
+
+#ifndef BPF_MAXINSNS
+#define BPF_MAXINSNS 4096
+#endif
+
+#endif /* __LINUX_BPF_COMMON_H__ */
diff --git a/include/uapi/linux/can.h b/include/uapi/linux/can.h
new file mode 100644 (file)
index 0000000..f7a810d
--- /dev/null
@@ -0,0 +1,201 @@
+/*
+ * linux/can.h
+ *
+ * Definitions for CAN network layer (socket addr / CAN frame / CAN filter)
+ *
+ * Authors: Oliver Hartkopp <oliver.hartkopp@volkswagen.de>
+ *          Urs Thuermann   <urs.thuermann@volkswagen.de>
+ * Copyright (c) 2002-2007 Volkswagen Group Electronic Research
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of Volkswagen nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * Alternatively, provided that this notice is retained in full, this
+ * software may be distributed under the terms of the GNU General
+ * Public License ("GPL") version 2, in which case the provisions of the
+ * GPL apply INSTEAD OF those given above.
+ *
+ * The provided data structures and external interfaces from this code
+ * are not restricted to be used by modules with a GPL compatible license.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+ * DAMAGE.
+ */
+
+#ifndef _CAN_H
+#define _CAN_H
+
+#include <linux/types.h>
+#include <linux/socket.h>
+
+/* controller area network (CAN) kernel definitions */
+
+/* special address description flags for the CAN_ID */
+#define CAN_EFF_FLAG 0x80000000U /* EFF/SFF is set in the MSB */
+#define CAN_RTR_FLAG 0x40000000U /* remote transmission request */
+#define CAN_ERR_FLAG 0x20000000U /* error message frame */
+
+/* valid bits in CAN ID for frame formats */
+#define CAN_SFF_MASK 0x000007FFU /* standard frame format (SFF) */
+#define CAN_EFF_MASK 0x1FFFFFFFU /* extended frame format (EFF) */
+#define CAN_ERR_MASK 0x1FFFFFFFU /* omit EFF, RTR, ERR flags */
+
+/*
+ * Controller Area Network Identifier structure
+ *
+ * bit 0-28    : CAN identifier (11/29 bit)
+ * bit 29      : error message frame flag (0 = data frame, 1 = error message)
+ * bit 30      : remote transmission request flag (1 = rtr frame)
+ * bit 31      : frame format flag (0 = standard 11 bit, 1 = extended 29 bit)
+ */
+typedef __u32 canid_t;
+
+#define CAN_SFF_ID_BITS                11
+#define CAN_EFF_ID_BITS                29
+
+/*
+ * Controller Area Network Error Message Frame Mask structure
+ *
+ * bit 0-28    : error class mask (see include/linux/can/error.h)
+ * bit 29-31   : set to zero
+ */
+typedef __u32 can_err_mask_t;
+
+/* CAN payload length and DLC definitions according to ISO 11898-1 */
+#define CAN_MAX_DLC 8
+#define CAN_MAX_DLEN 8
+
+/* CAN FD payload length and DLC definitions according to ISO 11898-7 */
+#define CANFD_MAX_DLC 15
+#define CANFD_MAX_DLEN 64
+
+/**
+ * struct can_frame - basic CAN frame structure
+ * @can_id:  CAN ID of the frame and CAN_*_FLAG flags, see canid_t definition
+ * @can_dlc: frame payload length in byte (0 .. 8) aka data length code
+ *           N.B. the DLC field from ISO 11898-1 Chapter 8.4.2.3 has a 1:1
+ *           mapping of the 'data length code' to the real payload length
+ * @__pad:   padding
+ * @__res0:  reserved / padding
+ * @__res1:  reserved / padding
+ * @data:    CAN frame payload (up to 8 byte)
+ */
+struct can_frame {
+       canid_t can_id;  /* 32 bit CAN_ID + EFF/RTR/ERR flags */
+       __u8    can_dlc; /* frame payload length in byte (0 .. CAN_MAX_DLEN) */
+       __u8    __pad;   /* padding */
+       __u8    __res0;  /* reserved / padding */
+       __u8    __res1;  /* reserved / padding */
+       __u8    data[CAN_MAX_DLEN] __attribute__((aligned(8)));
+};
+
+/*
+ * defined bits for canfd_frame.flags
+ *
+ * The use of struct canfd_frame implies the Extended Data Length (EDL) bit to
+ * be set in the CAN frame bitstream on the wire. The EDL bit switch turns
+ * the CAN controllers bitstream processor into the CAN FD mode which creates
+ * two new options within the CAN FD frame specification:
+ *
+ * Bit Rate Switch - to indicate a second bitrate is/was used for the payload
+ * Error State Indicator - represents the error state of the transmitting node
+ *
+ * As the CANFD_ESI bit is internally generated by the transmitting CAN
+ * controller only the CANFD_BRS bit is relevant for real CAN controllers when
+ * building a CAN FD frame for transmission. Setting the CANFD_ESI bit can make
+ * sense for virtual CAN interfaces to test applications with echoed frames.
+ */
+#define CANFD_BRS 0x01 /* bit rate switch (second bitrate for payload data) */
+#define CANFD_ESI 0x02 /* error state indicator of the transmitting node */
+
+/**
+ * struct canfd_frame - CAN flexible data rate frame structure
+ * @can_id: CAN ID of the frame and CAN_*_FLAG flags, see canid_t definition
+ * @len:    frame payload length in byte (0 .. CANFD_MAX_DLEN)
+ * @flags:  additional flags for CAN FD
+ * @__res0: reserved / padding
+ * @__res1: reserved / padding
+ * @data:   CAN FD frame payload (up to CANFD_MAX_DLEN byte)
+ */
+struct canfd_frame {
+       canid_t can_id;  /* 32 bit CAN_ID + EFF/RTR/ERR flags */
+       __u8    len;     /* frame payload length in byte */
+       __u8    flags;   /* additional flags for CAN FD */
+       __u8    __res0;  /* reserved / padding */
+       __u8    __res1;  /* reserved / padding */
+       __u8    data[CANFD_MAX_DLEN] __attribute__((aligned(8)));
+};
+
+#define CAN_MTU                (sizeof(struct can_frame))
+#define CANFD_MTU      (sizeof(struct canfd_frame))
+
+/* particular protocols of the protocol family PF_CAN */
+#define CAN_RAW                1 /* RAW sockets */
+#define CAN_BCM                2 /* Broadcast Manager */
+#define CAN_TP16       3 /* VAG Transport Protocol v1.6 */
+#define CAN_TP20       4 /* VAG Transport Protocol v2.0 */
+#define CAN_MCNET      5 /* Bosch MCNet */
+#define CAN_ISOTP      6 /* ISO 15765-2 Transport Protocol */
+#define CAN_NPROTO     7
+
+#define SOL_CAN_BASE 100
+
+/**
+ * struct sockaddr_can - the sockaddr structure for CAN sockets
+ * @can_family:  address family number AF_CAN.
+ * @can_ifindex: CAN network interface index.
+ * @can_addr:    protocol specific address information
+ */
+struct sockaddr_can {
+       __kernel_sa_family_t can_family;
+       int         can_ifindex;
+       union {
+               /* transport protocol class address information (e.g. ISOTP) */
+               struct { canid_t rx_id, tx_id; } tp;
+
+               /* reserved for future CAN protocols address information */
+       } can_addr;
+};
+
+/**
+ * struct can_filter - CAN ID based filter in can_register().
+ * @can_id:   relevant bits of CAN ID which are not masked out.
+ * @can_mask: CAN mask (see description)
+ *
+ * Description:
+ * A filter matches, when
+ *
+ *          <received_can_id> & mask == can_id & mask
+ *
+ * The filter can be inverted (CAN_INV_FILTER bit set in can_id) or it can
+ * filter for error message frames (CAN_ERR_FLAG bit set in mask).
+ */
+struct can_filter {
+       canid_t can_id;
+       canid_t can_mask;
+};
+
+#define CAN_INV_FILTER 0x20000000U /* to be set in can_filter.can_id */
+#define CAN_RAW_FILTER_MAX 512 /* maximum number of can_filter set via setsockopt() */
+
+#endif /* !_UAPI_CAN_H */
diff --git a/include/uapi/linux/can/netlink.h b/include/uapi/linux/can/netlink.h
new file mode 100644 (file)
index 0000000..b9214bd
--- /dev/null
@@ -0,0 +1,142 @@
+/*
+ * linux/can/netlink.h
+ *
+ * Definitions for the CAN netlink interface
+ *
+ * Copyright (c) 2009 Wolfgang Grandegger <wg@grandegger.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the version 2 of the GNU General Public License
+ * as published by the Free Software Foundation
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+#ifndef _CAN_NETLINK_H
+#define _CAN_NETLINK_H
+
+#include <linux/types.h>
+
+/*
+ * CAN bit-timing parameters
+ *
+ * For further information, please read chapter "8 BIT TIMING
+ * REQUIREMENTS" of the "Bosch CAN Specification version 2.0"
+ * at http://www.semiconductors.bosch.de/pdf/can2spec.pdf.
+ */
+struct can_bittiming {
+       __u32 bitrate;          /* Bit-rate in bits/second */
+       __u32 sample_point;     /* Sample point in one-tenth of a percent */
+       __u32 tq;               /* Time quanta (TQ) in nanoseconds */
+       __u32 prop_seg;         /* Propagation segment in TQs */
+       __u32 phase_seg1;       /* Phase buffer segment 1 in TQs */
+       __u32 phase_seg2;       /* Phase buffer segment 2 in TQs */
+       __u32 sjw;              /* Synchronisation jump width in TQs */
+       __u32 brp;              /* Bit-rate prescaler */
+};
+
+/*
+ * CAN harware-dependent bit-timing constant
+ *
+ * Used for calculating and checking bit-timing parameters
+ */
+struct can_bittiming_const {
+       char name[16];          /* Name of the CAN controller hardware */
+       __u32 tseg1_min;        /* Time segement 1 = prop_seg + phase_seg1 */
+       __u32 tseg1_max;
+       __u32 tseg2_min;        /* Time segement 2 = phase_seg2 */
+       __u32 tseg2_max;
+       __u32 sjw_max;          /* Synchronisation jump width */
+       __u32 brp_min;          /* Bit-rate prescaler */
+       __u32 brp_max;
+       __u32 brp_inc;
+};
+
+/*
+ * CAN clock parameters
+ */
+struct can_clock {
+       __u32 freq;             /* CAN system clock frequency in Hz */
+};
+
+/*
+ * CAN operational and error states
+ */
+enum can_state {
+       CAN_STATE_ERROR_ACTIVE = 0,     /* RX/TX error count < 96 */
+       CAN_STATE_ERROR_WARNING,        /* RX/TX error count < 128 */
+       CAN_STATE_ERROR_PASSIVE,        /* RX/TX error count < 256 */
+       CAN_STATE_BUS_OFF,              /* RX/TX error count >= 256 */
+       CAN_STATE_STOPPED,              /* Device is stopped */
+       CAN_STATE_SLEEPING,             /* Device is sleeping */
+       CAN_STATE_MAX
+};
+
+/*
+ * CAN bus error counters
+ */
+struct can_berr_counter {
+       __u16 txerr;
+       __u16 rxerr;
+};
+
+/*
+ * CAN controller mode
+ */
+struct can_ctrlmode {
+       __u32 mask;
+       __u32 flags;
+};
+
+#define CAN_CTRLMODE_LOOPBACK          0x01    /* Loopback mode */
+#define CAN_CTRLMODE_LISTENONLY                0x02    /* Listen-only mode */
+#define CAN_CTRLMODE_3_SAMPLES         0x04    /* Triple sampling mode */
+#define CAN_CTRLMODE_ONE_SHOT          0x08    /* One-Shot mode */
+#define CAN_CTRLMODE_BERR_REPORTING    0x10    /* Bus-error reporting */
+#define CAN_CTRLMODE_FD                        0x20    /* CAN FD mode */
+#define CAN_CTRLMODE_PRESUME_ACK       0x40    /* Ignore missing CAN ACKs */
+#define CAN_CTRLMODE_FD_NON_ISO                0x80    /* CAN FD in non-ISO mode */
+
+/*
+ * CAN device statistics
+ */
+struct can_device_stats {
+       __u32 bus_error;        /* Bus errors */
+       __u32 error_warning;    /* Changes to error warning state */
+       __u32 error_passive;    /* Changes to error passive state */
+       __u32 bus_off;          /* Changes to bus off state */
+       __u32 arbitration_lost; /* Arbitration lost errors */
+       __u32 restarts;         /* CAN controller re-starts */
+};
+
+/*
+ * CAN netlink interface
+ */
+enum {
+       IFLA_CAN_UNSPEC,
+       IFLA_CAN_BITTIMING,
+       IFLA_CAN_BITTIMING_CONST,
+       IFLA_CAN_CLOCK,
+       IFLA_CAN_STATE,
+       IFLA_CAN_CTRLMODE,
+       IFLA_CAN_RESTART_MS,
+       IFLA_CAN_RESTART,
+       IFLA_CAN_BERR_COUNTER,
+       IFLA_CAN_DATA_BITTIMING,
+       IFLA_CAN_DATA_BITTIMING_CONST,
+       IFLA_CAN_TERMINATION,
+       IFLA_CAN_TERMINATION_CONST,
+       IFLA_CAN_BITRATE_CONST,
+       IFLA_CAN_DATA_BITRATE_CONST,
+       __IFLA_CAN_MAX
+};
+
+#define IFLA_CAN_MAX   (__IFLA_CAN_MAX - 1)
+
+/* u16 termination range: 1..65535 Ohms */
+#define CAN_TERMINATION_DISABLED 0
+
+#endif /* !_UAPI_CAN_NETLINK_H */
diff --git a/include/uapi/linux/can/vxcan.h b/include/uapi/linux/can/vxcan.h
new file mode 100644 (file)
index 0000000..5b29e8a
--- /dev/null
@@ -0,0 +1,12 @@
+#ifndef _CAN_VXCAN_H
+#define _CAN_VXCAN_H
+
+enum {
+       VXCAN_INFO_UNSPEC,
+       VXCAN_INFO_PEER,
+
+       __VXCAN_INFO_MAX
+#define VXCAN_INFO_MAX (__VXCAN_INFO_MAX - 1)
+};
+
+#endif
diff --git a/include/uapi/linux/devlink.h b/include/uapi/linux/devlink.h
new file mode 100644 (file)
index 0000000..a62695e
--- /dev/null
@@ -0,0 +1,247 @@
+/*
+ * include/uapi/linux/devlink.h - Network physical device Netlink interface
+ * Copyright (c) 2016 Mellanox Technologies. All rights reserved.
+ * Copyright (c) 2016 Jiri Pirko <jiri@mellanox.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ */
+
+#ifndef _LINUX_DEVLINK_H_
+#define _LINUX_DEVLINK_H_
+
+#define DEVLINK_GENL_NAME "devlink"
+#define DEVLINK_GENL_VERSION 0x1
+#define DEVLINK_GENL_MCGRP_CONFIG_NAME "config"
+
+enum devlink_command {
+       /* don't change the order or add anything between, this is ABI! */
+       DEVLINK_CMD_UNSPEC,
+
+       DEVLINK_CMD_GET,                /* can dump */
+       DEVLINK_CMD_SET,
+       DEVLINK_CMD_NEW,
+       DEVLINK_CMD_DEL,
+
+       DEVLINK_CMD_PORT_GET,           /* can dump */
+       DEVLINK_CMD_PORT_SET,
+       DEVLINK_CMD_PORT_NEW,
+       DEVLINK_CMD_PORT_DEL,
+
+       DEVLINK_CMD_PORT_SPLIT,
+       DEVLINK_CMD_PORT_UNSPLIT,
+
+       DEVLINK_CMD_SB_GET,             /* can dump */
+       DEVLINK_CMD_SB_SET,
+       DEVLINK_CMD_SB_NEW,
+       DEVLINK_CMD_SB_DEL,
+
+       DEVLINK_CMD_SB_POOL_GET,        /* can dump */
+       DEVLINK_CMD_SB_POOL_SET,
+       DEVLINK_CMD_SB_POOL_NEW,
+       DEVLINK_CMD_SB_POOL_DEL,
+
+       DEVLINK_CMD_SB_PORT_POOL_GET,   /* can dump */
+       DEVLINK_CMD_SB_PORT_POOL_SET,
+       DEVLINK_CMD_SB_PORT_POOL_NEW,
+       DEVLINK_CMD_SB_PORT_POOL_DEL,
+
+       DEVLINK_CMD_SB_TC_POOL_BIND_GET,        /* can dump */
+       DEVLINK_CMD_SB_TC_POOL_BIND_SET,
+       DEVLINK_CMD_SB_TC_POOL_BIND_NEW,
+       DEVLINK_CMD_SB_TC_POOL_BIND_DEL,
+
+       /* Shared buffer occupancy monitoring commands */
+       DEVLINK_CMD_SB_OCC_SNAPSHOT,
+       DEVLINK_CMD_SB_OCC_MAX_CLEAR,
+
+       DEVLINK_CMD_ESWITCH_GET,
+#define DEVLINK_CMD_ESWITCH_MODE_GET /* obsolete, never use this! */ \
+       DEVLINK_CMD_ESWITCH_GET
+
+       DEVLINK_CMD_ESWITCH_SET,
+#define DEVLINK_CMD_ESWITCH_MODE_SET /* obsolete, never use this! */ \
+       DEVLINK_CMD_ESWITCH_SET
+
+       DEVLINK_CMD_DPIPE_TABLE_GET,
+       DEVLINK_CMD_DPIPE_ENTRIES_GET,
+       DEVLINK_CMD_DPIPE_HEADERS_GET,
+       DEVLINK_CMD_DPIPE_TABLE_COUNTERS_SET,
+
+       /* add new commands above here */
+       __DEVLINK_CMD_MAX,
+       DEVLINK_CMD_MAX = __DEVLINK_CMD_MAX - 1
+};
+
+enum devlink_port_type {
+       DEVLINK_PORT_TYPE_NOTSET,
+       DEVLINK_PORT_TYPE_AUTO,
+       DEVLINK_PORT_TYPE_ETH,
+       DEVLINK_PORT_TYPE_IB,
+};
+
+enum devlink_sb_pool_type {
+       DEVLINK_SB_POOL_TYPE_INGRESS,
+       DEVLINK_SB_POOL_TYPE_EGRESS,
+};
+
+/* static threshold - limiting the maximum number of bytes.
+ * dynamic threshold - limiting the maximum number of bytes
+ *   based on the currently available free space in the shared buffer pool.
+ *   In this mode, the maximum quota is calculated based
+ *   on the following formula:
+ *     max_quota = alpha / (1 + alpha) * Free_Buffer
+ *   While Free_Buffer is the amount of none-occupied buffer associated to
+ *   the relevant pool.
+ *   The value range which can be passed is 0-20 and serves
+ *   for computation of alpha by following formula:
+ *     alpha = 2 ^ (passed_value - 10)
+ */
+
+enum devlink_sb_threshold_type {
+       DEVLINK_SB_THRESHOLD_TYPE_STATIC,
+       DEVLINK_SB_THRESHOLD_TYPE_DYNAMIC,
+};
+
+#define DEVLINK_SB_THRESHOLD_TO_ALPHA_MAX 20
+
+enum devlink_eswitch_mode {
+       DEVLINK_ESWITCH_MODE_LEGACY,
+       DEVLINK_ESWITCH_MODE_SWITCHDEV,
+};
+
+enum devlink_eswitch_inline_mode {
+       DEVLINK_ESWITCH_INLINE_MODE_NONE,
+       DEVLINK_ESWITCH_INLINE_MODE_LINK,
+       DEVLINK_ESWITCH_INLINE_MODE_NETWORK,
+       DEVLINK_ESWITCH_INLINE_MODE_TRANSPORT,
+};
+
+enum devlink_eswitch_encap_mode {
+       DEVLINK_ESWITCH_ENCAP_MODE_NONE,
+       DEVLINK_ESWITCH_ENCAP_MODE_BASIC,
+};
+
+enum devlink_attr {
+       /* don't change the order or add anything between, this is ABI! */
+       DEVLINK_ATTR_UNSPEC,
+
+       /* bus name + dev name together are a handle for devlink entity */
+       DEVLINK_ATTR_BUS_NAME,                  /* string */
+       DEVLINK_ATTR_DEV_NAME,                  /* string */
+
+       DEVLINK_ATTR_PORT_INDEX,                /* u32 */
+       DEVLINK_ATTR_PORT_TYPE,                 /* u16 */
+       DEVLINK_ATTR_PORT_DESIRED_TYPE,         /* u16 */
+       DEVLINK_ATTR_PORT_NETDEV_IFINDEX,       /* u32 */
+       DEVLINK_ATTR_PORT_NETDEV_NAME,          /* string */
+       DEVLINK_ATTR_PORT_IBDEV_NAME,           /* string */
+       DEVLINK_ATTR_PORT_SPLIT_COUNT,          /* u32 */
+       DEVLINK_ATTR_PORT_SPLIT_GROUP,          /* u32 */
+       DEVLINK_ATTR_SB_INDEX,                  /* u32 */
+       DEVLINK_ATTR_SB_SIZE,                   /* u32 */
+       DEVLINK_ATTR_SB_INGRESS_POOL_COUNT,     /* u16 */
+       DEVLINK_ATTR_SB_EGRESS_POOL_COUNT,      /* u16 */
+       DEVLINK_ATTR_SB_INGRESS_TC_COUNT,       /* u16 */
+       DEVLINK_ATTR_SB_EGRESS_TC_COUNT,        /* u16 */
+       DEVLINK_ATTR_SB_POOL_INDEX,             /* u16 */
+       DEVLINK_ATTR_SB_POOL_TYPE,              /* u8 */
+       DEVLINK_ATTR_SB_POOL_SIZE,              /* u32 */
+       DEVLINK_ATTR_SB_POOL_THRESHOLD_TYPE,    /* u8 */
+       DEVLINK_ATTR_SB_THRESHOLD,              /* u32 */
+       DEVLINK_ATTR_SB_TC_INDEX,               /* u16 */
+       DEVLINK_ATTR_SB_OCC_CUR,                /* u32 */
+       DEVLINK_ATTR_SB_OCC_MAX,                /* u32 */
+       DEVLINK_ATTR_ESWITCH_MODE,              /* u16 */
+       DEVLINK_ATTR_ESWITCH_INLINE_MODE,       /* u8 */
+
+       DEVLINK_ATTR_DPIPE_TABLES,              /* nested */
+       DEVLINK_ATTR_DPIPE_TABLE,               /* nested */
+       DEVLINK_ATTR_DPIPE_TABLE_NAME,          /* string */
+       DEVLINK_ATTR_DPIPE_TABLE_SIZE,          /* u64 */
+       DEVLINK_ATTR_DPIPE_TABLE_MATCHES,       /* nested */
+       DEVLINK_ATTR_DPIPE_TABLE_ACTIONS,       /* nested */
+       DEVLINK_ATTR_DPIPE_TABLE_COUNTERS_ENABLED,      /* u8 */
+
+       DEVLINK_ATTR_DPIPE_ENTRIES,             /* nested */
+       DEVLINK_ATTR_DPIPE_ENTRY,               /* nested */
+       DEVLINK_ATTR_DPIPE_ENTRY_INDEX,         /* u64 */
+       DEVLINK_ATTR_DPIPE_ENTRY_MATCH_VALUES,  /* nested */
+       DEVLINK_ATTR_DPIPE_ENTRY_ACTION_VALUES, /* nested */
+       DEVLINK_ATTR_DPIPE_ENTRY_COUNTER,       /* u64 */
+
+       DEVLINK_ATTR_DPIPE_MATCH,               /* nested */
+       DEVLINK_ATTR_DPIPE_MATCH_VALUE,         /* nested */
+       DEVLINK_ATTR_DPIPE_MATCH_TYPE,          /* u32 */
+
+       DEVLINK_ATTR_DPIPE_ACTION,              /* nested */
+       DEVLINK_ATTR_DPIPE_ACTION_VALUE,        /* nested */
+       DEVLINK_ATTR_DPIPE_ACTION_TYPE,         /* u32 */
+
+       DEVLINK_ATTR_DPIPE_VALUE,
+       DEVLINK_ATTR_DPIPE_VALUE_MASK,
+       DEVLINK_ATTR_DPIPE_VALUE_MAPPING,       /* u32 */
+
+       DEVLINK_ATTR_DPIPE_HEADERS,             /* nested */
+       DEVLINK_ATTR_DPIPE_HEADER,              /* nested */
+       DEVLINK_ATTR_DPIPE_HEADER_NAME,         /* string */
+       DEVLINK_ATTR_DPIPE_HEADER_ID,           /* u32 */
+       DEVLINK_ATTR_DPIPE_HEADER_FIELDS,       /* nested */
+       DEVLINK_ATTR_DPIPE_HEADER_GLOBAL,       /* u8 */
+       DEVLINK_ATTR_DPIPE_HEADER_INDEX,        /* u32 */
+
+       DEVLINK_ATTR_DPIPE_FIELD,               /* nested */
+       DEVLINK_ATTR_DPIPE_FIELD_NAME,          /* string */
+       DEVLINK_ATTR_DPIPE_FIELD_ID,            /* u32 */
+       DEVLINK_ATTR_DPIPE_FIELD_BITWIDTH,      /* u32 */
+       DEVLINK_ATTR_DPIPE_FIELD_MAPPING_TYPE,  /* u32 */
+
+       DEVLINK_ATTR_PAD,
+
+       DEVLINK_ATTR_ESWITCH_ENCAP_MODE,        /* u8 */
+
+       /* add new attributes above here, update the policy in devlink.c */
+
+       __DEVLINK_ATTR_MAX,
+       DEVLINK_ATTR_MAX = __DEVLINK_ATTR_MAX - 1
+};
+
+/* Mapping between internal resource described by the field and system
+ * structure
+ */
+enum devlink_dpipe_field_mapping_type {
+       DEVLINK_DPIPE_FIELD_MAPPING_TYPE_NONE,
+       DEVLINK_DPIPE_FIELD_MAPPING_TYPE_IFINDEX,
+};
+
+/* Match type - specify the type of the match */
+enum devlink_dpipe_match_type {
+       DEVLINK_DPIPE_MATCH_TYPE_FIELD_EXACT,
+};
+
+/* Action type - specify the action type */
+enum devlink_dpipe_action_type {
+       DEVLINK_DPIPE_ACTION_TYPE_FIELD_MODIFY,
+};
+
+enum devlink_dpipe_field_ethernet_id {
+       DEVLINK_DPIPE_FIELD_ETHERNET_DST_MAC,
+};
+
+enum devlink_dpipe_field_ipv4_id {
+       DEVLINK_DPIPE_FIELD_IPV4_DST_IP,
+};
+
+enum devlink_dpipe_field_ipv6_id {
+       DEVLINK_DPIPE_FIELD_IPV6_DST_IP,
+};
+
+enum devlink_dpipe_header_id {
+       DEVLINK_DPIPE_HEADER_ETHERNET,
+       DEVLINK_DPIPE_HEADER_IPV4,
+       DEVLINK_DPIPE_HEADER_IPV6,
+};
+
+#endif /* _LINUX_DEVLINK_H_ */
diff --git a/include/uapi/linux/elf-em.h b/include/uapi/linux/elf-em.h
new file mode 100644 (file)
index 0000000..9cd1de9
--- /dev/null
@@ -0,0 +1,60 @@
+#ifndef _LINUX_ELF_EM_H
+#define _LINUX_ELF_EM_H
+
+/* These constants define the various ELF target machines */
+#define EM_NONE                0
+#define EM_M32         1
+#define EM_SPARC       2
+#define EM_386         3
+#define EM_68K         4
+#define EM_88K         5
+#define EM_486         6       /* Perhaps disused */
+#define EM_860         7
+#define EM_MIPS                8       /* MIPS R3000 (officially, big-endian only) */
+                               /* Next two are historical and binaries and
+                                  modules of these types will be rejected by
+                                  Linux.  */
+#define EM_MIPS_RS3_LE 10      /* MIPS R3000 little-endian */
+#define EM_MIPS_RS4_BE 10      /* MIPS R4000 big-endian */
+
+#define EM_PARISC      15      /* HPPA */
+#define EM_SPARC32PLUS 18      /* Sun's "v8plus" */
+#define EM_PPC         20      /* PowerPC */
+#define EM_PPC64       21       /* PowerPC64 */
+#define EM_SPU         23      /* Cell BE SPU */
+#define EM_ARM         40      /* ARM 32 bit */
+#define EM_SH          42      /* SuperH */
+#define EM_SPARCV9     43      /* SPARC v9 64-bit */
+#define EM_H8_300      46      /* Renesas H8/300 */
+#define EM_IA_64       50      /* HP/Intel IA-64 */
+#define EM_X86_64      62      /* AMD x86-64 */
+#define EM_S390                22      /* IBM S/390 */
+#define EM_CRIS                76      /* Axis Communications 32-bit embedded processor */
+#define EM_M32R                88      /* Renesas M32R */
+#define EM_MN10300     89      /* Panasonic/MEI MN10300, AM33 */
+#define EM_OPENRISC     92     /* OpenRISC 32-bit embedded processor */
+#define EM_BLACKFIN     106     /* ADI Blackfin Processor */
+#define EM_ALTERA_NIOS2        113     /* Altera Nios II soft-core processor */
+#define EM_TI_C6000    140     /* TI C6X DSPs */
+#define EM_AARCH64     183     /* ARM 64 bit */
+#define EM_TILEPRO     188     /* Tilera TILEPro */
+#define EM_MICROBLAZE  189     /* Xilinx MicroBlaze */
+#define EM_TILEGX      191     /* Tilera TILE-Gx */
+#define EM_BPF         247     /* Linux BPF - in-kernel virtual machine */
+#define EM_FRV         0x5441  /* Fujitsu FR-V */
+
+/*
+ * This is an interim value that we will use until the committee comes
+ * up with a final number.
+ */
+#define EM_ALPHA       0x9026
+
+/* Bogus old m32r magic number, used by old tools. */
+#define EM_CYGNUS_M32R 0x9041
+/* This is the old interim value for S/390 architecture */
+#define EM_S390_OLD    0xA390
+/* Also Panasonic/MEI MN10300, AM33 */
+#define EM_CYGNUS_MN10300 0xbeef
+
+
+#endif /* _LINUX_ELF_EM_H */
diff --git a/include/uapi/linux/fib_rules.h b/include/uapi/linux/fib_rules.h
new file mode 100644 (file)
index 0000000..bbf02a6
--- /dev/null
@@ -0,0 +1,80 @@
+#ifndef __LINUX_FIB_RULES_H
+#define __LINUX_FIB_RULES_H
+
+#include <linux/types.h>
+#include <linux/rtnetlink.h>
+
+/* rule is permanent, and cannot be deleted */
+#define FIB_RULE_PERMANENT     0x00000001
+#define FIB_RULE_INVERT                0x00000002
+#define FIB_RULE_UNRESOLVED    0x00000004
+#define FIB_RULE_IIF_DETACHED  0x00000008
+#define FIB_RULE_DEV_DETACHED  FIB_RULE_IIF_DETACHED
+#define FIB_RULE_OIF_DETACHED  0x00000010
+
+/* try to find source address in routing lookups */
+#define FIB_RULE_FIND_SADDR    0x00010000
+
+struct fib_rule_hdr {
+       __u8            family;
+       __u8            dst_len;
+       __u8            src_len;
+       __u8            tos;
+
+       __u8            table;
+       __u8            res1;   /* reserved */
+       __u8            res2;   /* reserved */
+       __u8            action;
+
+       __u32           flags;
+};
+
+struct fib_rule_uid_range {
+       __u32           start;
+       __u32           end;
+};
+
+enum {
+       FRA_UNSPEC,
+       FRA_DST,        /* destination address */
+       FRA_SRC,        /* source address */
+       FRA_IIFNAME,    /* interface name */
+#define FRA_IFNAME     FRA_IIFNAME
+       FRA_GOTO,       /* target to jump to (FR_ACT_GOTO) */
+       FRA_UNUSED2,
+       FRA_PRIORITY,   /* priority/preference */
+       FRA_UNUSED3,
+       FRA_UNUSED4,
+       FRA_UNUSED5,
+       FRA_FWMARK,     /* mark */
+       FRA_FLOW,       /* flow/class id */
+       FRA_TUN_ID,
+       FRA_SUPPRESS_IFGROUP,
+       FRA_SUPPRESS_PREFIXLEN,
+       FRA_TABLE,      /* Extended table id */
+       FRA_FWMASK,     /* mask for netfilter mark */
+       FRA_OIFNAME,
+       FRA_PAD,
+       FRA_L3MDEV,     /* iif or oif is l3mdev goto its table */
+       FRA_UID_RANGE,  /* UID range */
+       __FRA_MAX
+};
+
+#define FRA_MAX (__FRA_MAX - 1)
+
+enum {
+       FR_ACT_UNSPEC,
+       FR_ACT_TO_TBL,          /* Pass to fixed table */
+       FR_ACT_GOTO,            /* Jump to another rule */
+       FR_ACT_NOP,             /* No operation */
+       FR_ACT_RES3,
+       FR_ACT_RES4,
+       FR_ACT_BLACKHOLE,       /* Drop without notification */
+       FR_ACT_UNREACHABLE,     /* Drop with ENETUNREACH */
+       FR_ACT_PROHIBIT,        /* Drop with EACCES */
+       __FR_ACT_MAX,
+};
+
+#define FR_ACT_MAX (__FR_ACT_MAX - 1)
+
+#endif
diff --git a/include/uapi/linux/filter.h b/include/uapi/linux/filter.h
new file mode 100644 (file)
index 0000000..e4f2f74
--- /dev/null
@@ -0,0 +1,89 @@
+/*
+ * Linux Socket Filter Data Structures
+ */
+
+#ifndef __LINUX_FILTER_H__
+#define __LINUX_FILTER_H__
+
+
+#include <linux/types.h>
+#include <linux/bpf_common.h>
+
+/*
+ * Current version of the filter code architecture.
+ */
+#define BPF_MAJOR_VERSION 1
+#define BPF_MINOR_VERSION 1
+
+/*
+ *     Try and keep these values and structures similar to BSD, especially
+ *     the BPF code definitions which need to match so you can share filters
+ */
+struct sock_filter {   /* Filter block */
+       __u16   code;   /* Actual filter code */
+       __u8    jt;     /* Jump true */
+       __u8    jf;     /* Jump false */
+       __u32   k;      /* Generic multiuse field */
+};
+
+struct sock_fprog {    /* Required for SO_ATTACH_FILTER. */
+       unsigned short          len;    /* Number of filter blocks */
+       struct sock_filter *filter;
+};
+
+/* ret - BPF_K and BPF_X also apply */
+#define BPF_RVAL(code)  ((code) & 0x18)
+#define         BPF_A           0x10
+
+/* misc */
+#define BPF_MISCOP(code) ((code) & 0xf8)
+#define         BPF_TAX         0x00
+#define         BPF_TXA         0x80
+
+/*
+ * Macros for filter block array initializers.
+ */
+#ifndef BPF_STMT
+#define BPF_STMT(code, k) { (unsigned short)(code), 0, 0, k }
+#endif
+#ifndef BPF_JUMP
+#define BPF_JUMP(code, k, jt, jf) { (unsigned short)(code), jt, jf, k }
+#endif
+
+/*
+ * Number of scratch memory words for: BPF_ST and BPF_STX
+ */
+#define BPF_MEMWORDS 16
+
+/* RATIONALE. Negative offsets are invalid in BPF.
+   We use them to reference ancillary data.
+   Unlike introduction new instructions, it does not break
+   existing compilers/optimizers.
+ */
+#define SKF_AD_OFF    (-0x1000)
+#define SKF_AD_PROTOCOL 0
+#define SKF_AD_PKTTYPE         4
+#define SKF_AD_IFINDEX         8
+#define SKF_AD_NLATTR  12
+#define SKF_AD_NLATTR_NEST     16
+#define SKF_AD_MARK    20
+#define SKF_AD_QUEUE   24
+#define SKF_AD_HATYPE  28
+#define SKF_AD_RXHASH  32
+#define SKF_AD_CPU     36
+#define SKF_AD_ALU_XOR_X       40
+#define SKF_AD_VLAN_TAG        44
+#define SKF_AD_VLAN_TAG_PRESENT 48
+#define SKF_AD_PAY_OFFSET      52
+#define SKF_AD_RANDOM  56
+#define SKF_AD_VLAN_TPID       60
+#define SKF_AD_MAX     64
+
+#define SKF_NET_OFF    (-0x100000)
+#define SKF_LL_OFF     (-0x200000)
+
+#define BPF_NET_OFF    SKF_NET_OFF
+#define BPF_LL_OFF     SKF_LL_OFF
+
+#endif /* __LINUX_FILTER_H__ */
diff --git a/include/uapi/linux/fou.h b/include/uapi/linux/fou.h
new file mode 100644 (file)
index 0000000..744c323
--- /dev/null
@@ -0,0 +1,41 @@
+/* fou.h - FOU Interface */
+
+#ifndef _LINUX_FOU_H
+#define _LINUX_FOU_H
+
+/* NETLINK_GENERIC related info
+ */
+#define FOU_GENL_NAME          "fou"
+#define FOU_GENL_VERSION       0x1
+
+enum {
+       FOU_ATTR_UNSPEC,
+       FOU_ATTR_PORT,                          /* u16 */
+       FOU_ATTR_AF,                            /* u8 */
+       FOU_ATTR_IPPROTO,                       /* u8 */
+       FOU_ATTR_TYPE,                          /* u8 */
+       FOU_ATTR_REMCSUM_NOPARTIAL,             /* flag */
+
+       __FOU_ATTR_MAX,
+};
+
+#define FOU_ATTR_MAX           (__FOU_ATTR_MAX - 1)
+
+enum {
+       FOU_CMD_UNSPEC,
+       FOU_CMD_ADD,
+       FOU_CMD_DEL,
+       FOU_CMD_GET,
+
+       __FOU_CMD_MAX,
+};
+
+enum {
+       FOU_ENCAP_UNSPEC,
+       FOU_ENCAP_DIRECT,
+       FOU_ENCAP_GUE,
+};
+
+#define FOU_CMD_MAX    (__FOU_CMD_MAX - 1)
+
+#endif /* _LINUX_FOU_H */
diff --git a/include/uapi/linux/gen_stats.h b/include/uapi/linux/gen_stats.h
new file mode 100644 (file)
index 0000000..52deccc
--- /dev/null
@@ -0,0 +1,79 @@
+#ifndef __LINUX_GEN_STATS_H
+#define __LINUX_GEN_STATS_H
+
+#include <linux/types.h>
+
+enum {
+       TCA_STATS_UNSPEC,
+       TCA_STATS_BASIC,
+       TCA_STATS_RATE_EST,
+       TCA_STATS_QUEUE,
+       TCA_STATS_APP,
+       TCA_STATS_RATE_EST64,
+       TCA_STATS_PAD,
+       __TCA_STATS_MAX,
+};
+#define TCA_STATS_MAX (__TCA_STATS_MAX - 1)
+
+/**
+ * struct gnet_stats_basic - byte/packet throughput statistics
+ * @bytes: number of seen bytes
+ * @packets: number of seen packets
+ */
+struct gnet_stats_basic {
+       __u64   bytes;
+       __u32   packets;
+};
+struct gnet_stats_basic_packed {
+       __u64   bytes;
+       __u32   packets;
+} __attribute__ ((packed));
+
+/**
+ * struct gnet_stats_rate_est - rate estimator
+ * @bps: current byte rate
+ * @pps: current packet rate
+ */
+struct gnet_stats_rate_est {
+       __u32   bps;
+       __u32   pps;
+};
+
+/**
+ * struct gnet_stats_rate_est64 - rate estimator
+ * @bps: current byte rate
+ * @pps: current packet rate
+ */
+struct gnet_stats_rate_est64 {
+       __u64   bps;
+       __u64   pps;
+};
+
+/**
+ * struct gnet_stats_queue - queuing statistics
+ * @qlen: queue length
+ * @backlog: backlog size of queue
+ * @drops: number of dropped packets
+ * @requeues: number of requeues
+ * @overlimits: number of enqueues over the limit
+ */
+struct gnet_stats_queue {
+       __u32   qlen;
+       __u32   backlog;
+       __u32   drops;
+       __u32   requeues;
+       __u32   overlimits;
+};
+
+/**
+ * struct gnet_estimator - rate estimator configuration
+ * @interval: sampling period
+ * @ewma_log: the log of measurement window weight
+ */
+struct gnet_estimator {
+       signed char     interval;
+       unsigned char   ewma_log;
+};
+
+
+#endif /* __LINUX_GEN_STATS_H */
diff --git a/include/uapi/linux/genetlink.h b/include/uapi/linux/genetlink.h
new file mode 100644 (file)
index 0000000..08239d8
--- /dev/null
@@ -0,0 +1,88 @@
+#ifndef __LINUX_GENERIC_NETLINK_H
+#define __LINUX_GENERIC_NETLINK_H
+
+#include <linux/types.h>
+#include <linux/netlink.h>
+
+#define GENL_NAMSIZ    16      /* length of family name */
+
+#define GENL_MIN_ID    NLMSG_MIN_TYPE
+#define GENL_MAX_ID    1023
+
+struct genlmsghdr {
+       __u8    cmd;
+       __u8    version;
+       __u16   reserved;
+};
+
+#define GENL_HDRLEN    NLMSG_ALIGN(sizeof(struct genlmsghdr))
+
+#define GENL_ADMIN_PERM                0x01
+#define GENL_CMD_CAP_DO                0x02
+#define GENL_CMD_CAP_DUMP      0x04
+#define GENL_CMD_CAP_HASPOL    0x08
+#define GENL_UNS_ADMIN_PERM    0x10
+
+/*
+ * List of reserved static generic netlink identifiers:
+ */
+#define GENL_ID_CTRL           NLMSG_MIN_TYPE
+#define GENL_ID_VFS_DQUOT      (NLMSG_MIN_TYPE + 1)
+#define GENL_ID_PMCRAID                (NLMSG_MIN_TYPE + 2)
+/* must be last reserved + 1 */
+#define GENL_START_ALLOC       (NLMSG_MIN_TYPE + 3)
+
+/**************************************************************************
+ * Controller
+ **************************************************************************/
+
+enum {
+       CTRL_CMD_UNSPEC,
+       CTRL_CMD_NEWFAMILY,
+       CTRL_CMD_DELFAMILY,
+       CTRL_CMD_GETFAMILY,
+       CTRL_CMD_NEWOPS,
+       CTRL_CMD_DELOPS,
+       CTRL_CMD_GETOPS,
+       CTRL_CMD_NEWMCAST_GRP,
+       CTRL_CMD_DELMCAST_GRP,
+       CTRL_CMD_GETMCAST_GRP, /* unused */
+       __CTRL_CMD_MAX,
+};
+
+#define CTRL_CMD_MAX (__CTRL_CMD_MAX - 1)
+
+enum {
+       CTRL_ATTR_UNSPEC,
+       CTRL_ATTR_FAMILY_ID,
+       CTRL_ATTR_FAMILY_NAME,
+       CTRL_ATTR_VERSION,
+       CTRL_ATTR_HDRSIZE,
+       CTRL_ATTR_MAXATTR,
+       CTRL_ATTR_OPS,
+       CTRL_ATTR_MCAST_GROUPS,
+       __CTRL_ATTR_MAX,
+};
+
+#define CTRL_ATTR_MAX (__CTRL_ATTR_MAX - 1)
+
+enum {
+       CTRL_ATTR_OP_UNSPEC,
+       CTRL_ATTR_OP_ID,
+       CTRL_ATTR_OP_FLAGS,
+       __CTRL_ATTR_OP_MAX,
+};
+
+#define CTRL_ATTR_OP_MAX (__CTRL_ATTR_OP_MAX - 1)
+
+enum {
+       CTRL_ATTR_MCAST_GRP_UNSPEC,
+       CTRL_ATTR_MCAST_GRP_NAME,
+       CTRL_ATTR_MCAST_GRP_ID,
+       __CTRL_ATTR_MCAST_GRP_MAX,
+};
+
+#define CTRL_ATTR_MCAST_GRP_MAX (__CTRL_ATTR_MCAST_GRP_MAX - 1)
+
+
+#endif /* __LINUX_GENERIC_NETLINK_H */
diff --git a/include/uapi/linux/hdlc/ioctl.h b/include/uapi/linux/hdlc/ioctl.h
new file mode 100644 (file)
index 0000000..04bc027
--- /dev/null
@@ -0,0 +1,84 @@
+#ifndef __HDLC_IOCTL_H__
+#define __HDLC_IOCTL_H__
+
+
+#define GENERIC_HDLC_VERSION 4 /* For synchronization with sethdlc utility */
+
+#define CLOCK_DEFAULT   0      /* Default setting */
+#define CLOCK_EXT      1       /* External TX and RX clock - DTE */
+#define CLOCK_INT      2       /* Internal TX and RX clock - DCE */
+#define CLOCK_TXINT    3       /* Internal TX and external RX clock */
+#define CLOCK_TXFROMRX 4       /* TX clock derived from external RX clock */
+
+
+#define ENCODING_DEFAULT       0 /* Default setting */
+#define ENCODING_NRZ           1
+#define ENCODING_NRZI          2
+#define ENCODING_FM_MARK       3
+#define ENCODING_FM_SPACE      4
+#define ENCODING_MANCHESTER    5
+
+
+#define PARITY_DEFAULT         0 /* Default setting */
+#define PARITY_NONE            1 /* No parity */
+#define PARITY_CRC16_PR0       2 /* CRC16, initial value 0x0000 */
+#define PARITY_CRC16_PR1       3 /* CRC16, initial value 0xFFFF */
+#define PARITY_CRC16_PR0_CCITT 4 /* CRC16, initial 0x0000, ITU-T version */
+#define PARITY_CRC16_PR1_CCITT 5 /* CRC16, initial 0xFFFF, ITU-T version */
+#define PARITY_CRC32_PR0_CCITT 6 /* CRC32, initial value 0x00000000 */
+#define PARITY_CRC32_PR1_CCITT 7 /* CRC32, initial value 0xFFFFFFFF */
+
+#define LMI_DEFAULT            0 /* Default setting */
+#define LMI_NONE               1 /* No LMI, all PVCs are static */
+#define LMI_ANSI               2 /* ANSI Annex D */
+#define LMI_CCITT              3 /* ITU-T Annex A */
+#define LMI_CISCO              4 /* The "original" LMI, aka Gang of Four */
+
+#ifndef __ASSEMBLY__
+
+typedef struct {
+       unsigned int clock_rate; /* bits per second */
+       unsigned int clock_type; /* internal, external, TX-internal etc. */
+       unsigned short loopback;
+} sync_serial_settings;          /* V.35, V.24, X.21 */
+
+typedef struct {
+       unsigned int clock_rate; /* bits per second */
+       unsigned int clock_type; /* internal, external, TX-internal etc. */
+       unsigned short loopback;
+       unsigned int slot_map;
+} te1_settings;                  /* T1, E1 */
+
+typedef struct {
+       unsigned short encoding;
+       unsigned short parity;
+} raw_hdlc_proto;
+
+typedef struct {
+       unsigned int t391;
+       unsigned int t392;
+       unsigned int n391;
+       unsigned int n392;
+       unsigned int n393;
+       unsigned short lmi;
+       unsigned short dce; /* 1 for DCE (network side) operation */
+} fr_proto;
+
+typedef struct {
+       unsigned int dlci;
+} fr_proto_pvc;          /* for creating/deleting FR PVCs */
+
+typedef struct {
+       unsigned int dlci;
+       char master[IFNAMSIZ];  /* Name of master FRAD device */
+}fr_proto_pvc_info;            /* for returning PVC information only */
+
+typedef struct {
+    unsigned int interval;
+    unsigned int timeout;
+} cisco_proto;
+
+/* PPP doesn't need any info now - supply length = 0 to ioctl */
+
+#endif /* __ASSEMBLY__ */
+#endif /* __HDLC_IOCTL_H__ */
diff --git a/include/uapi/linux/icmpv6.h b/include/uapi/linux/icmpv6.h
new file mode 100644 (file)
index 0000000..a2e839e
--- /dev/null
@@ -0,0 +1,166 @@
+#ifndef _LINUX_ICMPV6_H
+#define _LINUX_ICMPV6_H
+
+#include <linux/types.h>
+#include <asm/byteorder.h>
+
+struct icmp6hdr {
+
+       __u8            icmp6_type;
+       __u8            icmp6_code;
+       __sum16         icmp6_cksum;
+
+
+       union {
+               __be32                  un_data32[1];
+               __be16                  un_data16[2];
+               __u8                    un_data8[4];
+
+               struct icmpv6_echo {
+                       __be16          identifier;
+                       __be16          sequence;
+               } u_echo;
+
+                struct icmpv6_nd_advt {
+#if defined(__LITTLE_ENDIAN_BITFIELD)
+                        __u32          reserved:5,
+                                       override:1,
+                                       solicited:1,
+                                       router:1,
+                                       reserved2:24;
+#elif defined(__BIG_ENDIAN_BITFIELD)
+                        __u32          router:1,
+                                       solicited:1,
+                                       override:1,
+                                       reserved:29;
+#else
+#error "Please fix <asm/byteorder.h>"
+#endif                                         
+                } u_nd_advt;
+
+                struct icmpv6_nd_ra {
+                       __u8            hop_limit;
+#if defined(__LITTLE_ENDIAN_BITFIELD)
+                       __u8            reserved:3,
+                                       router_pref:2,
+                                       home_agent:1,
+                                       other:1,
+                                       managed:1;
+
+#elif defined(__BIG_ENDIAN_BITFIELD)
+                       __u8            managed:1,
+                                       other:1,
+                                       home_agent:1,
+                                       router_pref:2,
+                                       reserved:3;
+#else
+#error "Please fix <asm/byteorder.h>"
+#endif
+                       __be16          rt_lifetime;
+                } u_nd_ra;
+
+       } icmp6_dataun;
+
+#define icmp6_identifier       icmp6_dataun.u_echo.identifier
+#define icmp6_sequence         icmp6_dataun.u_echo.sequence
+#define icmp6_pointer          icmp6_dataun.un_data32[0]
+#define icmp6_mtu              icmp6_dataun.un_data32[0]
+#define icmp6_unused           icmp6_dataun.un_data32[0]
+#define icmp6_maxdelay         icmp6_dataun.un_data16[0]
+#define icmp6_router           icmp6_dataun.u_nd_advt.router
+#define icmp6_solicited                icmp6_dataun.u_nd_advt.solicited
+#define icmp6_override         icmp6_dataun.u_nd_advt.override
+#define icmp6_ndiscreserved    icmp6_dataun.u_nd_advt.reserved
+#define icmp6_hop_limit                icmp6_dataun.u_nd_ra.hop_limit
+#define icmp6_addrconf_managed icmp6_dataun.u_nd_ra.managed
+#define icmp6_addrconf_other   icmp6_dataun.u_nd_ra.other
+#define icmp6_rt_lifetime      icmp6_dataun.u_nd_ra.rt_lifetime
+#define icmp6_router_pref      icmp6_dataun.u_nd_ra.router_pref
+};
+
+
+#define ICMPV6_ROUTER_PREF_LOW         0x3
+#define ICMPV6_ROUTER_PREF_MEDIUM      0x0
+#define ICMPV6_ROUTER_PREF_HIGH                0x1
+#define ICMPV6_ROUTER_PREF_INVALID     0x2
+
+#define ICMPV6_DEST_UNREACH            1
+#define ICMPV6_PKT_TOOBIG              2
+#define ICMPV6_TIME_EXCEED             3
+#define ICMPV6_PARAMPROB               4
+
+#define ICMPV6_INFOMSG_MASK            0x80
+
+#define ICMPV6_ECHO_REQUEST            128
+#define ICMPV6_ECHO_REPLY              129
+#define ICMPV6_MGM_QUERY               130
+#define ICMPV6_MGM_REPORT              131
+#define ICMPV6_MGM_REDUCTION           132
+
+#define ICMPV6_NI_QUERY                        139
+#define ICMPV6_NI_REPLY                        140
+
+#define ICMPV6_MLD2_REPORT             143
+
+#define ICMPV6_DHAAD_REQUEST           144
+#define ICMPV6_DHAAD_REPLY             145
+#define ICMPV6_MOBILE_PREFIX_SOL       146
+#define ICMPV6_MOBILE_PREFIX_ADV       147
+
+/*
+ *     Codes for Destination Unreachable
+ */
+#define ICMPV6_NOROUTE                 0
+#define ICMPV6_ADM_PROHIBITED          1
+#define ICMPV6_NOT_NEIGHBOUR           2
+#define ICMPV6_ADDR_UNREACH            3
+#define ICMPV6_PORT_UNREACH            4
+#define ICMPV6_POLICY_FAIL             5
+#define ICMPV6_REJECT_ROUTE            6
+
+/*
+ *     Codes for Time Exceeded
+ */
+#define ICMPV6_EXC_HOPLIMIT            0
+#define ICMPV6_EXC_FRAGTIME            1
+
+/*
+ *     Codes for Parameter Problem
+ */
+#define ICMPV6_HDR_FIELD               0
+#define ICMPV6_UNK_NEXTHDR             1
+#define ICMPV6_UNK_OPTION              2
+
+/*
+ *     constants for (set|get)sockopt
+ */
+
+#define ICMPV6_FILTER                  1
+
+/*
+ *     ICMPV6 filter
+ */
+
+#define ICMPV6_FILTER_BLOCK            1
+#define ICMPV6_FILTER_PASS             2
+#define ICMPV6_FILTER_BLOCKOTHERS      3
+#define ICMPV6_FILTER_PASSONLY         4
+
+struct icmp6_filter {
+       __u32           data[8];
+};
+
+/*
+ *     Definitions for MLDv2
+ */
+#define MLD2_MODE_IS_INCLUDE   1
+#define MLD2_MODE_IS_EXCLUDE   2
+#define MLD2_CHANGE_TO_INCLUDE 3
+#define MLD2_CHANGE_TO_EXCLUDE 4
+#define MLD2_ALLOW_NEW_SOURCES 5
+#define MLD2_BLOCK_OLD_SOURCES 6
+
+#define MLD2_ALL_MCR_INIT { { { 0xff,0x02,0,0,0,0,0,0,0,0,0,0,0,0,0,0x16 } } }
+
+
+#endif /* _LINUX_ICMPV6_H */
diff --git a/include/uapi/linux/if.h b/include/uapi/linux/if.h
new file mode 100644 (file)
index 0000000..b4ba020
--- /dev/null
@@ -0,0 +1,292 @@
+/*
+ * INET                An implementation of the TCP/IP protocol suite for the LINUX
+ *             operating system.  INET is implemented using the  BSD Socket
+ *             interface as the means of communication with the user level.
+ *
+ *             Global definitions for the INET interface module.
+ *
+ * Version:    @(#)if.h        1.0.2   04/18/93
+ *
+ * Authors:    Original taken from Berkeley UNIX 4.3, (c) UCB 1982-1988
+ *             Ross Biro
+ *             Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
+ *
+ *             This program is free software; you can redistribute it and/or
+ *             modify it under the terms of the GNU General Public License
+ *             as published by the Free Software Foundation; either version
+ *             2 of the License, or (at your option) any later version.
+ */
+#ifndef _LINUX_IF_H
+#define _LINUX_IF_H
+
+#include <linux/libc-compat.h>          /* for compatibility with glibc */
+#include <linux/types.h>               /* for "__kernel_caddr_t" et al */
+#include <linux/socket.h>              /* for "struct sockaddr" et al  */
+               /* for "__user" et al           */
+
+#include <sys/socket.h>                        /* for struct sockaddr.         */
+
+#if __UAPI_DEF_IF_IFNAMSIZ
+#define        IFNAMSIZ        16
+#endif /* __UAPI_DEF_IF_IFNAMSIZ */
+#define        IFALIASZ        256
+#include <linux/hdlc/ioctl.h>
+
+/* For glibc compatibility. An empty enum does not compile. */
+#if __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO != 0 || \
+    __UAPI_DEF_IF_NET_DEVICE_FLAGS != 0
+/**
+ * enum net_device_flags - &struct net_device flags
+ *
+ * These are the &struct net_device flags, they can be set by drivers, the
+ * kernel and some can be triggered by userspace. Userspace can query and
+ * set these flags using userspace utilities but there is also a sysfs
+ * entry available for all dev flags which can be queried and set. These flags
+ * are shared for all types of net_devices. The sysfs entries are available
+ * via /sys/class/net/<dev>/flags. Flags which can be toggled through sysfs
+ * are annotated below, note that only a few flags can be toggled and some
+ * other flags are always preserved from the original net_device flags
+ * even if you try to set them via sysfs. Flags which are always preserved
+ * are kept under the flag grouping @IFF_VOLATILE. Flags which are __volatile__
+ * are annotated below as such.
+ *
+ * You should have a pretty good reason to be extending these flags.
+ *
+ * @IFF_UP: interface is up. Can be toggled through sysfs.
+ * @IFF_BROADCAST: broadcast address valid. Volatile.
+ * @IFF_DEBUG: turn on debugging. Can be toggled through sysfs.
+ * @IFF_LOOPBACK: is a loopback net. Volatile.
+ * @IFF_POINTOPOINT: interface is has p-p link. Volatile.
+ * @IFF_NOTRAILERS: avoid use of trailers. Can be toggled through sysfs.
+ *     Volatile.
+ * @IFF_RUNNING: interface RFC2863 OPER_UP. Volatile.
+ * @IFF_NOARP: no ARP protocol. Can be toggled through sysfs. Volatile.
+ * @IFF_PROMISC: receive all packets. Can be toggled through sysfs.
+ * @IFF_ALLMULTI: receive all multicast packets. Can be toggled through
+ *     sysfs.
+ * @IFF_MASTER: master of a load balancer. Volatile.
+ * @IFF_SLAVE: slave of a load balancer. Volatile.
+ * @IFF_MULTICAST: Supports multicast. Can be toggled through sysfs.
+ * @IFF_PORTSEL: can set media type. Can be toggled through sysfs.
+ * @IFF_AUTOMEDIA: auto media select active. Can be toggled through sysfs.
+ * @IFF_DYNAMIC: dialup device with changing addresses. Can be toggled
+ *     through sysfs.
+ * @IFF_LOWER_UP: driver signals L1 up. Volatile.
+ * @IFF_DORMANT: driver signals dormant. Volatile.
+ * @IFF_ECHO: echo sent packets. Volatile.
+ */
+enum net_device_flags {
+/* for compatibility with glibc net/if.h */
+#if __UAPI_DEF_IF_NET_DEVICE_FLAGS
+       IFF_UP                          = 1<<0,  /* sysfs */
+       IFF_BROADCAST                   = 1<<1,  /* __volatile__ */
+       IFF_DEBUG                       = 1<<2,  /* sysfs */
+       IFF_LOOPBACK                    = 1<<3,  /* __volatile__ */
+       IFF_POINTOPOINT                 = 1<<4,  /* __volatile__ */
+       IFF_NOTRAILERS                  = 1<<5,  /* sysfs */
+       IFF_RUNNING                     = 1<<6,  /* __volatile__ */
+       IFF_NOARP                       = 1<<7,  /* sysfs */
+       IFF_PROMISC                     = 1<<8,  /* sysfs */
+       IFF_ALLMULTI                    = 1<<9,  /* sysfs */
+       IFF_MASTER                      = 1<<10, /* __volatile__ */
+       IFF_SLAVE                       = 1<<11, /* __volatile__ */
+       IFF_MULTICAST                   = 1<<12, /* sysfs */
+       IFF_PORTSEL                     = 1<<13, /* sysfs */
+       IFF_AUTOMEDIA                   = 1<<14, /* sysfs */
+       IFF_DYNAMIC                     = 1<<15, /* sysfs */
+#endif /* __UAPI_DEF_IF_NET_DEVICE_FLAGS */
+#if __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO
+       IFF_LOWER_UP                    = 1<<16, /* __volatile__ */
+       IFF_DORMANT                     = 1<<17, /* __volatile__ */
+       IFF_ECHO                        = 1<<18, /* __volatile__ */
+#endif /* __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO */
+};
+#endif /* __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO != 0 || __UAPI_DEF_IF_NET_DEVICE_FLAGS != 0 */
+
+/* for compatibility with glibc net/if.h */
+#if __UAPI_DEF_IF_NET_DEVICE_FLAGS
+#define IFF_UP                         IFF_UP
+#define IFF_BROADCAST                  IFF_BROADCAST
+#define IFF_DEBUG                      IFF_DEBUG
+#define IFF_LOOPBACK                   IFF_LOOPBACK
+#define IFF_POINTOPOINT                        IFF_POINTOPOINT
+#define IFF_NOTRAILERS                 IFF_NOTRAILERS
+#define IFF_RUNNING                    IFF_RUNNING
+#define IFF_NOARP                      IFF_NOARP
+#define IFF_PROMISC                    IFF_PROMISC
+#define IFF_ALLMULTI                   IFF_ALLMULTI
+#define IFF_MASTER                     IFF_MASTER
+#define IFF_SLAVE                      IFF_SLAVE
+#define IFF_MULTICAST                  IFF_MULTICAST
+#define IFF_PORTSEL                    IFF_PORTSEL
+#define IFF_AUTOMEDIA                  IFF_AUTOMEDIA
+#define IFF_DYNAMIC                    IFF_DYNAMIC
+#endif /* __UAPI_DEF_IF_NET_DEVICE_FLAGS */
+
+#if __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO
+#define IFF_LOWER_UP                   IFF_LOWER_UP
+#define IFF_DORMANT                    IFF_DORMANT
+#define IFF_ECHO                       IFF_ECHO
+#endif /* __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO */
+
+#define IFF_VOLATILE   (IFF_LOOPBACK|IFF_POINTOPOINT|IFF_BROADCAST|IFF_ECHO|\
+               IFF_MASTER|IFF_SLAVE|IFF_RUNNING|IFF_LOWER_UP|IFF_DORMANT)
+
+#define IF_GET_IFACE   0x0001          /* for querying only */
+#define IF_GET_PROTO   0x0002
+
+/* For definitions see hdlc.h */
+#define IF_IFACE_V35   0x1000          /* V.35 serial interface        */
+#define IF_IFACE_V24   0x1001          /* V.24 serial interface        */
+#define IF_IFACE_X21   0x1002          /* X.21 serial interface        */
+#define IF_IFACE_T1    0x1003          /* T1 telco serial interface    */
+#define IF_IFACE_E1    0x1004          /* E1 telco serial interface    */
+#define IF_IFACE_SYNC_SERIAL 0x1005    /* can't be set by software     */
+#define IF_IFACE_X21D   0x1006          /* X.21 Dual Clocking (FarSite) */
+
+/* For definitions see hdlc.h */
+#define IF_PROTO_HDLC  0x2000          /* raw HDLC protocol            */
+#define IF_PROTO_PPP   0x2001          /* PPP protocol                 */
+#define IF_PROTO_CISCO 0x2002          /* Cisco HDLC protocol          */
+#define IF_PROTO_FR    0x2003          /* Frame Relay protocol         */
+#define IF_PROTO_FR_ADD_PVC 0x2004     /*    Create FR PVC             */
+#define IF_PROTO_FR_DEL_PVC 0x2005     /*    Delete FR PVC             */
+#define IF_PROTO_X25   0x2006          /* X.25                         */
+#define IF_PROTO_HDLC_ETH 0x2007       /* raw HDLC, Ethernet emulation */
+#define IF_PROTO_FR_ADD_ETH_PVC 0x2008 /*  Create FR Ethernet-bridged PVC */
+#define IF_PROTO_FR_DEL_ETH_PVC 0x2009 /*  Delete FR Ethernet-bridged PVC */
+#define IF_PROTO_FR_PVC        0x200A          /* for reading PVC status       */
+#define IF_PROTO_FR_ETH_PVC 0x200B
+#define IF_PROTO_RAW    0x200C          /* RAW Socket                   */
+
+/* RFC 2863 operational status */
+enum {
+       IF_OPER_UNKNOWN,
+       IF_OPER_NOTPRESENT,
+       IF_OPER_DOWN,
+       IF_OPER_LOWERLAYERDOWN,
+       IF_OPER_TESTING,
+       IF_OPER_DORMANT,
+       IF_OPER_UP,
+};
+
+/* link modes */
+enum {
+       IF_LINK_MODE_DEFAULT,
+       IF_LINK_MODE_DORMANT,   /* limit upward transition to dormant */
+};
+
+/*
+ *     Device mapping structure. I'd just gone off and designed a 
+ *     beautiful scheme using only loadable modules with arguments
+ *     for driver options and along come the PCMCIA people 8)
+ *
+ *     Ah well. The get() side of this is good for WDSETUP, and it'll
+ *     be handy for debugging things. The set side is fine for now and
+ *     being very small might be worth keeping for clean configuration.
+ */
+
+/* for compatibility with glibc net/if.h */
+#if __UAPI_DEF_IF_IFMAP
+struct ifmap {
+       unsigned long mem_start;
+       unsigned long mem_end;
+       unsigned short base_addr; 
+       unsigned char irq;
+       unsigned char dma;
+       unsigned char port;
+       /* 3 bytes spare */
+};
+#endif /* __UAPI_DEF_IF_IFMAP */
+
+struct if_settings {
+       unsigned int type;      /* Type of physical device or protocol */
+       unsigned int size;      /* Size of the data allocated by the caller */
+       union {
+               /* {atm/eth/dsl}_settings anyone ? */
+               raw_hdlc_proto          *raw_hdlc;
+               cisco_proto             *cisco;
+               fr_proto                *fr;
+               fr_proto_pvc            *fr_pvc;
+               fr_proto_pvc_info       *fr_pvc_info;
+
+               /* interface settings */
+               sync_serial_settings    *sync;
+               te1_settings            *te1;
+       } ifs_ifsu;
+};
+
+/*
+ * Interface request structure used for socket
+ * ioctl's.  All interface ioctl's must have parameter
+ * definitions which begin with ifr_name.  The
+ * remainder may be interface specific.
+ */
+
+/* for compatibility with glibc net/if.h */
+#if __UAPI_DEF_IF_IFREQ
+struct ifreq {
+#define IFHWADDRLEN    6
+       union
+       {
+               char    ifrn_name[IFNAMSIZ];            /* if name, e.g. "en0" */
+       } ifr_ifrn;
+       
+       union {
+               struct  sockaddr ifru_addr;
+               struct  sockaddr ifru_dstaddr;
+               struct  sockaddr ifru_broadaddr;
+               struct  sockaddr ifru_netmask;
+               struct  sockaddr ifru_hwaddr;
+               short   ifru_flags;
+               int     ifru_ivalue;
+               int     ifru_mtu;
+               struct  ifmap ifru_map;
+               char    ifru_slave[IFNAMSIZ];   /* Just fits the size */
+               char    ifru_newname[IFNAMSIZ];
+               void *  ifru_data;
+               struct  if_settings ifru_settings;
+       } ifr_ifru;
+};
+#endif /* __UAPI_DEF_IF_IFREQ */
+
+#define ifr_name       ifr_ifrn.ifrn_name      /* interface name       */
+#define ifr_hwaddr     ifr_ifru.ifru_hwaddr    /* MAC address          */
+#define        ifr_addr        ifr_ifru.ifru_addr      /* address              */
+#define        ifr_dstaddr     ifr_ifru.ifru_dstaddr   /* other end of p-p lnk */
+#define        ifr_broadaddr   ifr_ifru.ifru_broadaddr /* broadcast address    */
+#define        ifr_netmask     ifr_ifru.ifru_netmask   /* interface net mask   */
+#define        ifr_flags       ifr_ifru.ifru_flags     /* flags                */
+#define        ifr_metric      ifr_ifru.ifru_ivalue    /* metric               */
+#define        ifr_mtu         ifr_ifru.ifru_mtu       /* mtu                  */
+#define ifr_map                ifr_ifru.ifru_map       /* device map           */
+#define ifr_slave      ifr_ifru.ifru_slave     /* slave device         */
+#define        ifr_data        ifr_ifru.ifru_data      /* for use by interface */
+#define ifr_ifindex    ifr_ifru.ifru_ivalue    /* interface index      */
+#define ifr_bandwidth  ifr_ifru.ifru_ivalue    /* link bandwidth       */
+#define ifr_qlen       ifr_ifru.ifru_ivalue    /* Queue length         */
+#define ifr_newname    ifr_ifru.ifru_newname   /* New name             */
+#define ifr_settings   ifr_ifru.ifru_settings  /* Device/proto settings*/
+
+/*
+ * Structure used in SIOCGIFCONF request.
+ * Used to retrieve interface configuration
+ * for machine (useful for programs which
+ * must know all networks accessible).
+ */
+
+/* for compatibility with glibc net/if.h */
+#if __UAPI_DEF_IF_IFCONF
+struct ifconf  {
+       int     ifc_len;                        /* size of buffer       */
+       union {
+               char *ifcu_buf;
+               struct ifreq *ifcu_req;
+       } ifc_ifcu;
+};
+#endif /* __UAPI_DEF_IF_IFCONF */
+
+#define        ifc_buf ifc_ifcu.ifcu_buf               /* buffer address       */
+#define        ifc_req ifc_ifcu.ifcu_req               /* array of structures  */
+
+#endif /* _LINUX_IF_H */
diff --git a/include/uapi/linux/if_addr.h b/include/uapi/linux/if_addr.h
new file mode 100644 (file)
index 0000000..26f0ecf
--- /dev/null
@@ -0,0 +1,67 @@
+#ifndef __LINUX_IF_ADDR_H
+#define __LINUX_IF_ADDR_H
+
+#include <linux/types.h>
+#include <linux/netlink.h>
+
+struct ifaddrmsg {
+       __u8            ifa_family;
+       __u8            ifa_prefixlen;  /* The prefix length            */
+       __u8            ifa_flags;      /* Flags                        */
+       __u8            ifa_scope;      /* Address scope                */
+       __u32           ifa_index;      /* Link index                   */
+};
+
+/*
+ * Important comment:
+ * IFA_ADDRESS is prefix address, rather than local interface address.
+ * It makes no difference for normally configured broadcast interfaces,
+ * but for point-to-point IFA_ADDRESS is DESTINATION address,
+ * local address is supplied in IFA_LOCAL attribute.
+ *
+ * IFA_FLAGS is a u32 attribute that extends the u8 field ifa_flags.
+ * If present, the value from struct ifaddrmsg will be ignored.
+ */
+enum {
+       IFA_UNSPEC,
+       IFA_ADDRESS,
+       IFA_LOCAL,
+       IFA_LABEL,
+       IFA_BROADCAST,
+       IFA_ANYCAST,
+       IFA_CACHEINFO,
+       IFA_MULTICAST,
+       IFA_FLAGS,
+       __IFA_MAX,
+};
+
+#define IFA_MAX (__IFA_MAX - 1)
+
+/* ifa_flags */
+#define IFA_F_SECONDARY                0x01
+#define IFA_F_TEMPORARY                IFA_F_SECONDARY
+
+#define        IFA_F_NODAD             0x02
+#define IFA_F_OPTIMISTIC       0x04
+#define IFA_F_DADFAILED                0x08
+#define        IFA_F_HOMEADDRESS       0x10
+#define IFA_F_DEPRECATED       0x20
+#define IFA_F_TENTATIVE                0x40
+#define IFA_F_PERMANENT                0x80
+#define IFA_F_MANAGETEMPADDR   0x100
+#define IFA_F_NOPREFIXROUTE    0x200
+#define IFA_F_MCAUTOJOIN       0x400
+#define IFA_F_STABLE_PRIVACY   0x800
+
+struct ifa_cacheinfo {
+       __u32   ifa_prefered;
+       __u32   ifa_valid;
+       __u32   cstamp; /* created timestamp, hundredths of seconds */
+       __u32   tstamp; /* updated timestamp, hundredths of seconds */
+};
+
+/* backwards compatibility for userspace */
+#define IFA_RTA(r)  ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct ifaddrmsg))))
+#define IFA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct ifaddrmsg))
+
+#endif
diff --git a/include/uapi/linux/if_addrlabel.h b/include/uapi/linux/if_addrlabel.h
new file mode 100644 (file)
index 0000000..54580c2
--- /dev/null
@@ -0,0 +1,32 @@
+/*
+ * if_addrlabel.h - netlink interface for address labels
+ *
+ * Copyright (C)2007 USAGI/WIDE Project,  All Rights Reserved.
+ *
+ * Authors:
+ *     YOSHIFUJI Hideaki @ USAGI/WIDE <yoshfuji@linux-ipv6.org>
+ */
+
+#ifndef __LINUX_IF_ADDRLABEL_H
+#define __LINUX_IF_ADDRLABEL_H
+
+#include <linux/types.h>
+
+struct ifaddrlblmsg {
+       __u8            ifal_family;            /* Address family */
+       __u8            __ifal_reserved;        /* Reserved */
+       __u8            ifal_prefixlen;         /* Prefix length */
+       __u8            ifal_flags;             /* Flags */
+       __u32           ifal_index;             /* Link index */
+       __u32           ifal_seq;               /* sequence number */
+};
+
+enum {
+       IFAL_ADDRESS = 1,
+       IFAL_LABEL = 2,
+       __IFAL_MAX
+};
+
+#define IFAL_MAX       (__IFAL_MAX - 1)
+
+#endif
diff --git a/include/uapi/linux/if_alg.h b/include/uapi/linux/if_alg.h
new file mode 100644 (file)
index 0000000..f2acd2f
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * if_alg: User-space algorithm interface
+ *
+ * Copyright (c) 2010 Herbert Xu <herbert@gondor.apana.org.au>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ */
+
+#ifndef _LINUX_IF_ALG_H
+#define _LINUX_IF_ALG_H
+
+#include <linux/types.h>
+
+struct sockaddr_alg {
+       __u16   salg_family;
+       __u8    salg_type[14];
+       __u32   salg_feat;
+       __u32   salg_mask;
+       __u8    salg_name[64];
+};
+
+struct af_alg_iv {
+       __u32   ivlen;
+       __u8    iv[0];
+};
+
+/* Socket options */
+#define ALG_SET_KEY                    1
+#define ALG_SET_IV                     2
+#define ALG_SET_OP                     3
+#define ALG_SET_AEAD_ASSOCLEN          4
+#define ALG_SET_AEAD_AUTHSIZE          5
+
+/* Operations */
+#define ALG_OP_DECRYPT                 0
+#define ALG_OP_ENCRYPT                 1
+
+#endif /* _LINUX_IF_ALG_H */
diff --git a/include/uapi/linux/if_arp.h b/include/uapi/linux/if_arp.h
new file mode 100644 (file)
index 0000000..199f253
--- /dev/null
@@ -0,0 +1,163 @@
+/*
+ * INET                An implementation of the TCP/IP protocol suite for the LINUX
+ *             operating system.  INET is implemented using the  BSD Socket
+ *             interface as the means of communication with the user level.
+ *
+ *             Global definitions for the ARP (RFC 826) protocol.
+ *
+ * Version:    @(#)if_arp.h    1.0.1   04/16/93
+ *
+ * Authors:    Original taken from Berkeley UNIX 4.3, (c) UCB 1986-1988
+ *             Portions taken from the KA9Q/NOS (v2.00m PA0GRI) source.
+ *             Ross Biro
+ *             Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
+ *             Florian La Roche,
+ *             Jonathan Layes <layes@loran.com>
+ *             Arnaldo Carvalho de Melo <acme@conectiva.com.br> ARPHRD_HWX25
+ *
+ *             This program is free software; you can redistribute it and/or
+ *             modify it under the terms of the GNU General Public License
+ *             as published by the Free Software Foundation; either version
+ *             2 of the License, or (at your option) any later version.
+ */
+#ifndef _LINUX_IF_ARP_H
+#define _LINUX_IF_ARP_H
+
+#include <linux/netdevice.h>
+
+/* ARP protocol HARDWARE identifiers. */
+#define ARPHRD_NETROM  0               /* from KA9Q: NET/ROM pseudo    */
+#define ARPHRD_ETHER   1               /* Ethernet 10Mbps              */
+#define        ARPHRD_EETHER   2               /* Experimental Ethernet        */
+#define        ARPHRD_AX25     3               /* AX.25 Level 2                */
+#define        ARPHRD_PRONET   4               /* PROnet token ring            */
+#define        ARPHRD_CHAOS    5               /* Chaosnet                     */
+#define        ARPHRD_IEEE802  6               /* IEEE 802.2 Ethernet/TR/TB    */
+#define        ARPHRD_ARCNET   7               /* ARCnet                       */
+#define        ARPHRD_APPLETLK 8               /* APPLEtalk                    */
+#define ARPHRD_DLCI    15              /* Frame Relay DLCI             */
+#define ARPHRD_ATM     19              /* ATM                          */
+#define ARPHRD_METRICOM        23              /* Metricom STRIP (new IANA id) */
+#define        ARPHRD_IEEE1394 24              /* IEEE 1394 IPv4 - RFC 2734    */
+#define ARPHRD_EUI64   27              /* EUI-64                       */
+#define ARPHRD_INFINIBAND 32           /* InfiniBand                   */
+
+/* Dummy types for non ARP hardware */
+#define ARPHRD_SLIP    256
+#define ARPHRD_CSLIP   257
+#define ARPHRD_SLIP6   258
+#define ARPHRD_CSLIP6  259
+#define ARPHRD_RSRVD   260             /* Notional KISS type           */
+#define ARPHRD_ADAPT   264
+#define ARPHRD_ROSE    270
+#define ARPHRD_X25     271             /* CCITT X.25                   */
+#define ARPHRD_HWX25   272             /* Boards with X.25 in firmware */
+#define ARPHRD_CAN     280             /* Controller Area Network      */
+#define ARPHRD_PPP     512
+#define ARPHRD_CISCO   513             /* Cisco HDLC                   */
+#define ARPHRD_HDLC    ARPHRD_CISCO
+#define ARPHRD_LAPB    516             /* LAPB                         */
+#define ARPHRD_DDCMP    517            /* Digital's DDCMP protocol     */
+#define ARPHRD_RAWHDLC 518             /* Raw HDLC                     */
+#define ARPHRD_RAWIP    519            /* Raw IP                       */
+
+#define ARPHRD_TUNNEL  768             /* IPIP tunnel                  */
+#define ARPHRD_TUNNEL6 769             /* IP6IP6 tunnel                */
+#define ARPHRD_FRAD    770             /* Frame Relay Access Device    */
+#define ARPHRD_SKIP    771             /* SKIP vif                     */
+#define ARPHRD_LOOPBACK        772             /* Loopback device              */
+#define ARPHRD_LOCALTLK 773            /* Localtalk device             */
+#define ARPHRD_FDDI    774             /* Fiber Distributed Data Interface */
+#define ARPHRD_BIF      775             /* AP1000 BIF                   */
+#define ARPHRD_SIT     776             /* sit0 device - IPv6-in-IPv4   */
+#define ARPHRD_IPDDP   777             /* IP over DDP tunneller        */
+#define ARPHRD_IPGRE   778             /* GRE over IP                  */
+#define ARPHRD_PIMREG  779             /* PIMSM register interface     */
+#define ARPHRD_HIPPI   780             /* High Performance Parallel Interface */
+#define ARPHRD_ASH     781             /* Nexus 64Mbps Ash             */
+#define ARPHRD_ECONET  782             /* Acorn Econet                 */
+#define ARPHRD_IRDA    783             /* Linux-IrDA                   */
+/* ARP works differently on different FC media .. so  */
+#define ARPHRD_FCPP    784             /* Point to point fibrechannel  */
+#define ARPHRD_FCAL    785             /* Fibrechannel arbitrated loop */
+#define ARPHRD_FCPL    786             /* Fibrechannel public loop     */
+#define ARPHRD_FCFABRIC        787             /* Fibrechannel fabric          */
+       /* 787->799 reserved for fibrechannel media types */
+#define ARPHRD_IEEE802_TR 800          /* Magic type ident for TR      */
+#define ARPHRD_IEEE80211 801           /* IEEE 802.11                  */
+#define ARPHRD_IEEE80211_PRISM 802     /* IEEE 802.11 + Prism2 header  */
+#define ARPHRD_IEEE80211_RADIOTAP 803  /* IEEE 802.11 + radiotap header */
+#define ARPHRD_IEEE802154        804
+#define ARPHRD_IEEE802154_MONITOR 805  /* IEEE 802.15.4 network monitor */
+
+#define ARPHRD_PHONET  820             /* PhoNet media type            */
+#define ARPHRD_PHONET_PIPE 821         /* PhoNet pipe header           */
+#define ARPHRD_CAIF    822             /* CAIF media type              */
+#define ARPHRD_IP6GRE  823             /* GRE over IPv6                */
+#define ARPHRD_NETLINK 824             /* Netlink header               */
+#define ARPHRD_6LOWPAN 825             /* IPv6 over LoWPAN             */
+#define ARPHRD_VSOCKMON        826             /* Vsock monitor header         */
+
+#define ARPHRD_VOID      0xFFFF        /* Void type, nothing is known */
+#define ARPHRD_NONE      0xFFFE        /* zero header length */
+
+/* ARP protocol opcodes. */
+#define        ARPOP_REQUEST   1               /* ARP request                  */
+#define        ARPOP_REPLY     2               /* ARP reply                    */
+#define        ARPOP_RREQUEST  3               /* RARP request                 */
+#define        ARPOP_RREPLY    4               /* RARP reply                   */
+#define        ARPOP_InREQUEST 8               /* InARP request                */
+#define        ARPOP_InREPLY   9               /* InARP reply                  */
+#define        ARPOP_NAK       10              /* (ATM)ARP NAK                 */
+
+
+/* ARP ioctl request. */
+struct arpreq {
+  struct sockaddr      arp_pa;         /* protocol address             */
+  struct sockaddr      arp_ha;         /* hardware address             */
+  int                  arp_flags;      /* flags                        */
+  struct sockaddr       arp_netmask;    /* netmask (only for proxy arps) */
+  char                 arp_dev[16];
+};
+
+struct arpreq_old {
+  struct sockaddr      arp_pa;         /* protocol address             */
+  struct sockaddr      arp_ha;         /* hardware address             */
+  int                  arp_flags;      /* flags                        */
+  struct sockaddr       arp_netmask;    /* netmask (only for proxy arps) */
+};
+
+/* ARP Flag values. */
+#define ATF_COM                0x02            /* completed entry (ha valid)   */
+#define        ATF_PERM        0x04            /* permanent entry              */
+#define        ATF_PUBL        0x08            /* publish entry                */
+#define        ATF_USETRAILERS 0x10            /* has requested trailers       */
+#define ATF_NETMASK     0x20            /* want to use a netmask (only
+                                          for proxy entries) */
+#define ATF_DONTPUB    0x40            /* don't answer this addresses  */
+
+/*
+ *     This structure defines an ethernet arp header.
+ */
+
+struct arphdr {
+       __be16          ar_hrd;         /* format of hardware address   */
+       __be16          ar_pro;         /* format of protocol address   */
+       unsigned char   ar_hln;         /* length of hardware address   */
+       unsigned char   ar_pln;         /* length of protocol address   */
+       __be16          ar_op;          /* ARP opcode (command)         */
+
+#if 0
+        /*
+         *      Ethernet looks like this : This bit is variable sized however...
+         */
+       unsigned char           ar_sha[ETH_ALEN];       /* sender hardware address      */
+       unsigned char           ar_sip[4];              /* sender IP address            */
+       unsigned char           ar_tha[ETH_ALEN];       /* target hardware address      */
+       unsigned char           ar_tip[4];              /* target IP address            */
+#endif
+
+};
+
+
+#endif /* _LINUX_IF_ARP_H */
diff --git a/include/uapi/linux/if_bonding.h b/include/uapi/linux/if_bonding.h
new file mode 100644 (file)
index 0000000..9635a62
--- /dev/null
@@ -0,0 +1,130 @@
+/*
+ * Bond several ethernet interfaces into a Cisco, running 'Etherchannel'.
+ *
+ *
+ * Portions are (c) Copyright 1995 Simon "Guru Aleph-Null" Janes
+ * NCM: Network and Communications Management, Inc.
+ *
+ * BUT, I'm the one who modified it for ethernet, so:
+ * (c) Copyright 1999, Thomas Davis, tadavis@lbl.gov
+ *
+ *     This software may be used and distributed according to the terms
+ *     of the GNU Public License, incorporated herein by reference.
+ *
+ * 2003/03/18 - Amir Noam <amir.noam at intel dot com>
+ *     - Added support for getting slave's speed and duplex via ethtool.
+ *       Needed for 802.3ad and other future modes.
+ *
+ * 2003/03/18 - Tsippy Mendelson <tsippy.mendelson at intel dot com> and
+ *             Shmulik Hen <shmulik.hen at intel dot com>
+ *     - Enable support of modes that need to use the unique mac address of
+ *       each slave.
+ *
+ * 2003/03/18 - Tsippy Mendelson <tsippy.mendelson at intel dot com> and
+ *             Amir Noam <amir.noam at intel dot com>
+ *     - Moved driver's private data types to bonding.h
+ *
+ * 2003/03/18 - Amir Noam <amir.noam at intel dot com>,
+ *             Tsippy Mendelson <tsippy.mendelson at intel dot com> and
+ *             Shmulik Hen <shmulik.hen at intel dot com>
+ *     - Added support for IEEE 802.3ad Dynamic link aggregation mode.
+ *
+ * 2003/05/01 - Amir Noam <amir.noam at intel dot com>
+ *     - Added ABI version control to restore compatibility between
+ *       new/old ifenslave and new/old bonding.
+ *
+ * 2003/12/01 - Shmulik Hen <shmulik.hen at intel dot com>
+ *     - Code cleanup and style changes
+ *
+ * 2005/05/05 - Jason Gabler <jygabler at lbl dot gov>
+ *      - added definitions for various XOR hashing policies
+ */
+
+#ifndef _LINUX_IF_BONDING_H
+#define _LINUX_IF_BONDING_H
+
+#include <linux/if.h>
+#include <linux/types.h>
+#include <linux/if_ether.h>
+
+/* userland - kernel ABI version (2003/05/08) */
+#define BOND_ABI_VERSION 2
+
+/*
+ * We can remove these ioctl definitions in 2.5.  People should use the
+ * SIOC*** versions of them instead
+ */
+#define BOND_ENSLAVE_OLD               (SIOCDEVPRIVATE)
+#define BOND_RELEASE_OLD               (SIOCDEVPRIVATE + 1)
+#define BOND_SETHWADDR_OLD             (SIOCDEVPRIVATE + 2)
+#define BOND_SLAVE_INFO_QUERY_OLD      (SIOCDEVPRIVATE + 11)
+#define BOND_INFO_QUERY_OLD            (SIOCDEVPRIVATE + 12)
+#define BOND_CHANGE_ACTIVE_OLD         (SIOCDEVPRIVATE + 13)
+
+#define BOND_CHECK_MII_STATUS  (SIOCGMIIPHY)
+
+#define BOND_MODE_ROUNDROBIN   0
+#define BOND_MODE_ACTIVEBACKUP 1
+#define BOND_MODE_XOR          2
+#define BOND_MODE_BROADCAST    3
+#define BOND_MODE_8023AD        4
+#define BOND_MODE_TLB           5
+#define BOND_MODE_ALB          6 /* TLB + RLB (receive load balancing) */
+
+/* each slave's link has 4 states */
+#define BOND_LINK_UP    0           /* link is up and running */
+#define BOND_LINK_FAIL  1           /* link has just gone down */
+#define BOND_LINK_DOWN  2           /* link has been down for too long time */
+#define BOND_LINK_BACK  3           /* link is going back */
+
+/* each slave has several states */
+#define BOND_STATE_ACTIVE       0   /* link is active */
+#define BOND_STATE_BACKUP       1   /* link is backup */
+
+#define BOND_DEFAULT_MAX_BONDS  1   /* Default maximum number of devices to support */
+
+#define BOND_DEFAULT_TX_QUEUES 16   /* Default number of tx queues per device */
+
+#define BOND_DEFAULT_RESEND_IGMP       1 /* Default number of IGMP membership reports */
+
+/* hashing types */
+#define BOND_XMIT_POLICY_LAYER2                0 /* layer 2 (MAC only), default */
+#define BOND_XMIT_POLICY_LAYER34       1 /* layer 3+4 (IP ^ (TCP || UDP)) */
+#define BOND_XMIT_POLICY_LAYER23       2 /* layer 2+3 (IP ^ MAC) */
+#define BOND_XMIT_POLICY_ENCAP23       3 /* encapsulated layer 2+3 */
+#define BOND_XMIT_POLICY_ENCAP34       4 /* encapsulated layer 3+4 */
+
+typedef struct ifbond {
+       __s32 bond_mode;
+       __s32 num_slaves;
+       __s32 miimon;
+} ifbond;
+
+typedef struct ifslave {
+       __s32 slave_id; /* Used as an IN param to the BOND_SLAVE_INFO_QUERY ioctl */
+       char slave_name[IFNAMSIZ];
+       __s8 link;
+       __s8 state;
+       __u32  link_failure_count;
+} ifslave;
+
+struct ad_info {
+       __u16 aggregator_id;
+       __u16 ports;
+       __u16 actor_key;
+       __u16 partner_key;
+       __u8 partner_system[ETH_ALEN];
+};
+
+#endif /* _LINUX_IF_BONDING_H */
+
+/*
+ * Local variables:
+ *  version-control: t
+ *  kept-new-versions: 5
+ *  c-indent-level: 8
+ *  c-basic-offset: 8
+ *  tab-width: 8
+ * End:
+ */
+
diff --git a/include/uapi/linux/if_bridge.h b/include/uapi/linux/if_bridge.h
new file mode 100644 (file)
index 0000000..156f443
--- /dev/null
@@ -0,0 +1,294 @@
+/*
+ *     Linux ethernet bridge
+ *
+ *     Authors:
+ *     Lennert Buytenhek               <buytenh@gnu.org>
+ *
+ *     This program is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License
+ *     as published by the Free Software Foundation; either version
+ *     2 of the License, or (at your option) any later version.
+ */
+
+#ifndef _LINUX_IF_BRIDGE_H
+#define _LINUX_IF_BRIDGE_H
+
+#include <linux/types.h>
+#include <linux/if_ether.h>
+#include <linux/in6.h>
+
+#define SYSFS_BRIDGE_ATTR      "bridge"
+#define SYSFS_BRIDGE_FDB       "brforward"
+#define SYSFS_BRIDGE_PORT_SUBDIR "brif"
+#define SYSFS_BRIDGE_PORT_ATTR "brport"
+#define SYSFS_BRIDGE_PORT_LINK "bridge"
+
+#define BRCTL_VERSION 1
+
+#define BRCTL_GET_VERSION 0
+#define BRCTL_GET_BRIDGES 1
+#define BRCTL_ADD_BRIDGE 2
+#define BRCTL_DEL_BRIDGE 3
+#define BRCTL_ADD_IF 4
+#define BRCTL_DEL_IF 5
+#define BRCTL_GET_BRIDGE_INFO 6
+#define BRCTL_GET_PORT_LIST 7
+#define BRCTL_SET_BRIDGE_FORWARD_DELAY 8
+#define BRCTL_SET_BRIDGE_HELLO_TIME 9
+#define BRCTL_SET_BRIDGE_MAX_AGE 10
+#define BRCTL_SET_AGEING_TIME 11
+#define BRCTL_SET_GC_INTERVAL 12
+#define BRCTL_GET_PORT_INFO 13
+#define BRCTL_SET_BRIDGE_STP_STATE 14
+#define BRCTL_SET_BRIDGE_PRIORITY 15
+#define BRCTL_SET_PORT_PRIORITY 16
+#define BRCTL_SET_PATH_COST 17
+#define BRCTL_GET_FDB_ENTRIES 18
+
+#define BR_STATE_DISABLED 0
+#define BR_STATE_LISTENING 1
+#define BR_STATE_LEARNING 2
+#define BR_STATE_FORWARDING 3
+#define BR_STATE_BLOCKING 4
+
+struct __bridge_info {
+       __u64 designated_root;
+       __u64 bridge_id;
+       __u32 root_path_cost;
+       __u32 max_age;
+       __u32 hello_time;
+       __u32 forward_delay;
+       __u32 bridge_max_age;
+       __u32 bridge_hello_time;
+       __u32 bridge_forward_delay;
+       __u8 topology_change;
+       __u8 topology_change_detected;
+       __u8 root_port;
+       __u8 stp_enabled;
+       __u32 ageing_time;
+       __u32 gc_interval;
+       __u32 hello_timer_value;
+       __u32 tcn_timer_value;
+       __u32 topology_change_timer_value;
+       __u32 gc_timer_value;
+};
+
+struct __port_info {
+       __u64 designated_root;
+       __u64 designated_bridge;
+       __u16 port_id;
+       __u16 designated_port;
+       __u32 path_cost;
+       __u32 designated_cost;
+       __u8 state;
+       __u8 top_change_ack;
+       __u8 config_pending;
+       __u8 unused0;
+       __u32 message_age_timer_value;
+       __u32 forward_delay_timer_value;
+       __u32 hold_timer_value;
+};
+
+struct __fdb_entry {
+       __u8 mac_addr[ETH_ALEN];
+       __u8 port_no;
+       __u8 is_local;
+       __u32 ageing_timer_value;
+       __u8 port_hi;
+       __u8 pad0;
+       __u16 unused;
+};
+
+/* Bridge Flags */
+#define BRIDGE_FLAGS_MASTER    1       /* Bridge command to/from master */
+#define BRIDGE_FLAGS_SELF      2       /* Bridge command to/from lowerdev */
+
+#define BRIDGE_MODE_VEB                0       /* Default loopback mode */
+#define BRIDGE_MODE_VEPA       1       /* 802.1Qbg defined VEPA mode */
+#define BRIDGE_MODE_UNDEF      0xFFFF  /* mode undefined */
+
+/* Bridge management nested attributes
+ * [IFLA_AF_SPEC] = {
+ *     [IFLA_BRIDGE_FLAGS]
+ *     [IFLA_BRIDGE_MODE]
+ *     [IFLA_BRIDGE_VLAN_INFO]
+ * }
+ */
+enum {
+       IFLA_BRIDGE_FLAGS,
+       IFLA_BRIDGE_MODE,
+       IFLA_BRIDGE_VLAN_INFO,
+       IFLA_BRIDGE_VLAN_TUNNEL_INFO,
+       __IFLA_BRIDGE_MAX,
+};
+#define IFLA_BRIDGE_MAX (__IFLA_BRIDGE_MAX - 1)
+
+#define BRIDGE_VLAN_INFO_MASTER        (1<<0)  /* Operate on Bridge device as well */
+#define BRIDGE_VLAN_INFO_PVID  (1<<1)  /* VLAN is PVID, ingress untagged */
+#define BRIDGE_VLAN_INFO_UNTAGGED      (1<<2)  /* VLAN egresses untagged */
+#define BRIDGE_VLAN_INFO_RANGE_BEGIN   (1<<3) /* VLAN is start of vlan range */
+#define BRIDGE_VLAN_INFO_RANGE_END     (1<<4) /* VLAN is end of vlan range */
+#define BRIDGE_VLAN_INFO_BRENTRY       (1<<5) /* Global bridge VLAN entry */
+
+struct bridge_vlan_info {
+       __u16 flags;
+       __u16 vid;
+};
+
+enum {
+       IFLA_BRIDGE_VLAN_TUNNEL_UNSPEC,
+       IFLA_BRIDGE_VLAN_TUNNEL_ID,
+       IFLA_BRIDGE_VLAN_TUNNEL_VID,
+       IFLA_BRIDGE_VLAN_TUNNEL_FLAGS,
+       __IFLA_BRIDGE_VLAN_TUNNEL_MAX,
+};
+
+#define IFLA_BRIDGE_VLAN_TUNNEL_MAX (__IFLA_BRIDGE_VLAN_TUNNEL_MAX - 1)
+
+struct bridge_vlan_xstats {
+       __u64 rx_bytes;
+       __u64 rx_packets;
+       __u64 tx_bytes;
+       __u64 tx_packets;
+       __u16 vid;
+       __u16 flags;
+       __u32 pad2;
+};
+
+/* Bridge multicast database attributes
+ * [MDBA_MDB] = {
+ *     [MDBA_MDB_ENTRY] = {
+ *         [MDBA_MDB_ENTRY_INFO] {
+ *             struct br_mdb_entry
+ *             [MDBA_MDB_EATTR attributes]
+ *         }
+ *     }
+ * }
+ * [MDBA_ROUTER] = {
+ *    [MDBA_ROUTER_PORT] = {
+ *        u32 ifindex
+ *        [MDBA_ROUTER_PATTR attributes]
+ *    }
+ * }
+ */
+enum {
+       MDBA_UNSPEC,
+       MDBA_MDB,
+       MDBA_ROUTER,
+       __MDBA_MAX,
+};
+#define MDBA_MAX (__MDBA_MAX - 1)
+
+enum {
+       MDBA_MDB_UNSPEC,
+       MDBA_MDB_ENTRY,
+       __MDBA_MDB_MAX,
+};
+#define MDBA_MDB_MAX (__MDBA_MDB_MAX - 1)
+
+enum {
+       MDBA_MDB_ENTRY_UNSPEC,
+       MDBA_MDB_ENTRY_INFO,
+       __MDBA_MDB_ENTRY_MAX,
+};
+#define MDBA_MDB_ENTRY_MAX (__MDBA_MDB_ENTRY_MAX - 1)
+
+/* per mdb entry additional attributes */
+enum {
+       MDBA_MDB_EATTR_UNSPEC,
+       MDBA_MDB_EATTR_TIMER,
+       __MDBA_MDB_EATTR_MAX
+};
+#define MDBA_MDB_EATTR_MAX (__MDBA_MDB_EATTR_MAX - 1)
+
+/* multicast router types */
+enum {
+       MDB_RTR_TYPE_DISABLED,
+       MDB_RTR_TYPE_TEMP_QUERY,
+       MDB_RTR_TYPE_PERM,
+       MDB_RTR_TYPE_TEMP
+};
+
+enum {
+       MDBA_ROUTER_UNSPEC,
+       MDBA_ROUTER_PORT,
+       __MDBA_ROUTER_MAX,
+};
+#define MDBA_ROUTER_MAX (__MDBA_ROUTER_MAX - 1)
+
+/* router port attributes */
+enum {
+       MDBA_ROUTER_PATTR_UNSPEC,
+       MDBA_ROUTER_PATTR_TIMER,
+       MDBA_ROUTER_PATTR_TYPE,
+       __MDBA_ROUTER_PATTR_MAX
+};
+#define MDBA_ROUTER_PATTR_MAX (__MDBA_ROUTER_PATTR_MAX - 1)
+
+struct br_port_msg {
+       __u8  family;
+       __u32 ifindex;
+};
+
+struct br_mdb_entry {
+       __u32 ifindex;
+#define MDB_TEMPORARY 0
+#define MDB_PERMANENT 1
+       __u8 state;
+#define MDB_FLAGS_OFFLOAD      (1 << 0)
+       __u8 flags;
+       __u16 vid;
+       struct {
+               union {
+                       __be32  ip4;
+                       struct in6_addr ip6;
+               } u;
+               __be16          proto;
+       } addr;
+};
+
+enum {
+       MDBA_SET_ENTRY_UNSPEC,
+       MDBA_SET_ENTRY,
+       __MDBA_SET_ENTRY_MAX,
+};
+#define MDBA_SET_ENTRY_MAX (__MDBA_SET_ENTRY_MAX - 1)
+
+/* Embedded inside LINK_XSTATS_TYPE_BRIDGE */
+enum {
+       BRIDGE_XSTATS_UNSPEC,
+       BRIDGE_XSTATS_VLAN,
+       BRIDGE_XSTATS_MCAST,
+       BRIDGE_XSTATS_PAD,
+       __BRIDGE_XSTATS_MAX
+};
+#define BRIDGE_XSTATS_MAX (__BRIDGE_XSTATS_MAX - 1)
+
+enum {
+       BR_MCAST_DIR_RX,
+       BR_MCAST_DIR_TX,
+       BR_MCAST_DIR_SIZE
+};
+
+/* IGMP/MLD statistics */
+struct br_mcast_stats {
+       __u64 igmp_v1queries[BR_MCAST_DIR_SIZE];
+       __u64 igmp_v2queries[BR_MCAST_DIR_SIZE];
+       __u64 igmp_v3queries[BR_MCAST_DIR_SIZE];
+       __u64 igmp_leaves[BR_MCAST_DIR_SIZE];
+       __u64 igmp_v1reports[BR_MCAST_DIR_SIZE];
+       __u64 igmp_v2reports[BR_MCAST_DIR_SIZE];
+       __u64 igmp_v3reports[BR_MCAST_DIR_SIZE];
+       __u64 igmp_parse_errors;
+
+       __u64 mld_v1queries[BR_MCAST_DIR_SIZE];
+       __u64 mld_v2queries[BR_MCAST_DIR_SIZE];
+       __u64 mld_leaves[BR_MCAST_DIR_SIZE];
+       __u64 mld_v1reports[BR_MCAST_DIR_SIZE];
+       __u64 mld_v2reports[BR_MCAST_DIR_SIZE];
+       __u64 mld_parse_errors;
+
+       __u64 mcast_bytes[BR_MCAST_DIR_SIZE];
+       __u64 mcast_packets[BR_MCAST_DIR_SIZE];
+};
+#endif /* _LINUX_IF_BRIDGE_H */
diff --git a/include/uapi/linux/if_ether.h b/include/uapi/linux/if_ether.h
new file mode 100644 (file)
index 0000000..7dde037
--- /dev/null
@@ -0,0 +1,158 @@
+/*
+ * INET                An implementation of the TCP/IP protocol suite for the LINUX
+ *             operating system.  INET is implemented using the  BSD Socket
+ *             interface as the means of communication with the user level.
+ *
+ *             Global definitions for the Ethernet IEEE 802.3 interface.
+ *
+ * Version:    @(#)if_ether.h  1.0.1a  02/08/94
+ *
+ * Author:     Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
+ *             Donald Becker, <becker@super.org>
+ *             Alan Cox, <alan@lxorguk.ukuu.org.uk>
+ *             Steve Whitehouse, <gw7rrm@eeshack3.swan.ac.uk>
+ *
+ *             This program is free software; you can redistribute it and/or
+ *             modify it under the terms of the GNU General Public License
+ *             as published by the Free Software Foundation; either version
+ *             2 of the License, or (at your option) any later version.
+ */
+
+#ifndef _LINUX_IF_ETHER_H
+#define _LINUX_IF_ETHER_H
+
+#include <linux/types.h>
+
+/*
+ *     IEEE 802.3 Ethernet magic constants.  The frame sizes omit the preamble
+ *     and FCS/CRC (frame check sequence).
+ */
+
+#define ETH_ALEN       6               /* Octets in one ethernet addr   */
+#define ETH_HLEN       14              /* Total octets in header.       */
+#define ETH_ZLEN       60              /* Min. octets in frame sans FCS */
+#define ETH_DATA_LEN   1500            /* Max. octets in payload        */
+#define ETH_FRAME_LEN  1514            /* Max. octets in frame sans FCS */
+#define ETH_FCS_LEN    4               /* Octets in the FCS             */
+
+#define ETH_MIN_MTU    68              /* Min IPv4 MTU per RFC791      */
+#define ETH_MAX_MTU    0xFFFFU         /* 65535, same as IP_MAX_MTU    */
+
+/*
+ *     These are the defined Ethernet Protocol ID's.
+ */
+
+#define ETH_P_LOOP     0x0060          /* Ethernet Loopback packet     */
+#define ETH_P_PUP      0x0200          /* Xerox PUP packet             */
+#define ETH_P_PUPAT    0x0201          /* Xerox PUP Addr Trans packet  */
+#define ETH_P_TSN      0x22F0          /* TSN (IEEE 1722) packet       */
+#define ETH_P_IP       0x0800          /* Internet Protocol packet     */
+#define ETH_P_X25      0x0805          /* CCITT X.25                   */
+#define ETH_P_ARP      0x0806          /* Address Resolution packet    */
+#define        ETH_P_BPQ       0x08FF          /* G8BPQ AX.25 Ethernet Packet  [ NOT AN OFFICIALLY REGISTERED ID ] */
+#define ETH_P_IEEEPUP  0x0a00          /* Xerox IEEE802.3 PUP packet */
+#define ETH_P_IEEEPUPAT        0x0a01          /* Xerox IEEE802.3 PUP Addr Trans packet */
+#define ETH_P_BATMAN   0x4305          /* B.A.T.M.A.N.-Advanced packet [ NOT AN OFFICIALLY REGISTERED ID ] */
+#define ETH_P_DEC       0x6000          /* DEC Assigned proto           */
+#define ETH_P_DNA_DL    0x6001          /* DEC DNA Dump/Load            */
+#define ETH_P_DNA_RC    0x6002          /* DEC DNA Remote Console       */
+#define ETH_P_DNA_RT    0x6003          /* DEC DNA Routing              */
+#define ETH_P_LAT       0x6004          /* DEC LAT                      */
+#define ETH_P_DIAG      0x6005          /* DEC Diagnostics              */
+#define ETH_P_CUST      0x6006          /* DEC Customer use             */
+#define ETH_P_SCA       0x6007          /* DEC Systems Comms Arch       */
+#define ETH_P_TEB      0x6558          /* Trans Ether Bridging         */
+#define ETH_P_RARP      0x8035         /* Reverse Addr Res packet      */
+#define ETH_P_ATALK    0x809B          /* Appletalk DDP                */
+#define ETH_P_AARP     0x80F3          /* Appletalk AARP               */
+#define ETH_P_8021Q    0x8100          /* 802.1Q VLAN Extended Header  */
+#define ETH_P_ERSPAN   0x88BE          /* ERSPAN type II               */
+#define ETH_P_IPX      0x8137          /* IPX over DIX                 */
+#define ETH_P_IPV6     0x86DD          /* IPv6 over bluebook           */
+#define ETH_P_PAUSE    0x8808          /* IEEE Pause frames. See 802.3 31B */
+#define ETH_P_SLOW     0x8809          /* Slow Protocol. See 802.3ad 43B */
+#define ETH_P_WCCP     0x883E          /* Web-cache coordination protocol
+                                        * defined in draft-wilson-wrec-wccp-v2-00.txt */
+#define ETH_P_MPLS_UC  0x8847          /* MPLS Unicast traffic         */
+#define ETH_P_MPLS_MC  0x8848          /* MPLS Multicast traffic       */
+#define ETH_P_ATMMPOA  0x884c          /* MultiProtocol Over ATM       */
+#define ETH_P_PPP_DISC 0x8863          /* PPPoE discovery messages     */
+#define ETH_P_PPP_SES  0x8864          /* PPPoE session messages       */
+#define ETH_P_LINK_CTL 0x886c          /* HPNA, wlan link local tunnel */
+#define ETH_P_ATMFATE  0x8884          /* Frame-based ATM Transport
+                                        * over Ethernet
+                                        */
+#define ETH_P_PAE      0x888E          /* Port Access Entity (IEEE 802.1X) */
+#define ETH_P_AOE      0x88A2          /* ATA over Ethernet            */
+#define ETH_P_8021AD   0x88A8          /* 802.1ad Service VLAN         */
+#define ETH_P_802_EX1  0x88B5          /* 802.1 Local Experimental 1.  */
+#define ETH_P_TIPC     0x88CA          /* TIPC                         */
+#define ETH_P_MACSEC   0x88E5          /* 802.1ae MACsec */
+#define ETH_P_8021AH   0x88E7          /* 802.1ah Backbone Service Tag */
+#define ETH_P_MVRP     0x88F5          /* 802.1Q MVRP                  */
+#define ETH_P_1588     0x88F7          /* IEEE 1588 Timesync */
+#define ETH_P_NCSI     0x88F8          /* NCSI protocol                */
+#define ETH_P_PRP      0x88FB          /* IEC 62439-3 PRP/HSRv0        */
+#define ETH_P_FCOE     0x8906          /* Fibre Channel over Ethernet  */
+#define ETH_P_IBOE     0x8915          /* Infiniband over Ethernet     */
+#define ETH_P_TDLS     0x890D          /* TDLS */
+#define ETH_P_FIP      0x8914          /* FCoE Initialization Protocol */
+#define ETH_P_80221    0x8917          /* IEEE 802.21 Media Independent Handover Protocol */
+#define ETH_P_HSR      0x892F          /* IEC 62439-3 HSRv1    */
+#define ETH_P_NSH      0x894F          /* Network Service Header */
+#define ETH_P_LOOPBACK 0x9000          /* Ethernet loopback packet, per IEEE 802.3 */
+#define ETH_P_QINQ1    0x9100          /* deprecated QinQ VLAN [ NOT AN OFFICIALLY REGISTERED ID ] */
+#define ETH_P_QINQ2    0x9200          /* deprecated QinQ VLAN [ NOT AN OFFICIALLY REGISTERED ID ] */
+#define ETH_P_QINQ3    0x9300          /* deprecated QinQ VLAN [ NOT AN OFFICIALLY REGISTERED ID ] */
+#define ETH_P_EDSA     0xDADA          /* Ethertype DSA [ NOT AN OFFICIALLY REGISTERED ID ] */
+#define ETH_P_IFE      0xED3E          /* ForCES inter-FE LFB type */
+#define ETH_P_AF_IUCV   0xFBFB         /* IBM af_iucv [ NOT AN OFFICIALLY REGISTERED ID ] */
+
+#define ETH_P_802_3_MIN        0x0600          /* If the value in the ethernet type is less than this value
+                                        * then the frame is Ethernet II. Else it is 802.3 */
+
+/*
+ *     Non DIX types. Won't clash for 1500 types.
+ */
+
+#define ETH_P_802_3    0x0001          /* Dummy type for 802.3 frames  */
+#define ETH_P_AX25     0x0002          /* Dummy protocol id for AX.25  */
+#define ETH_P_ALL      0x0003          /* Every packet (be careful!!!) */
+#define ETH_P_802_2    0x0004          /* 802.2 frames                 */
+#define ETH_P_SNAP     0x0005          /* Internal only                */
+#define ETH_P_DDCMP     0x0006          /* DEC DDCMP: Internal only     */
+#define ETH_P_WAN_PPP   0x0007          /* Dummy type for WAN PPP frames*/
+#define ETH_P_PPP_MP    0x0008          /* Dummy type for PPP MP frames */
+#define ETH_P_LOCALTALK 0x0009         /* Localtalk pseudo type        */
+#define ETH_P_CAN      0x000C          /* CAN: Controller Area Network */
+#define ETH_P_CANFD    0x000D          /* CANFD: CAN flexible data rate*/
+#define ETH_P_PPPTALK  0x0010          /* Dummy type for Atalk over PPP*/
+#define ETH_P_TR_802_2 0x0011          /* 802.2 frames                 */
+#define ETH_P_MOBITEX  0x0015          /* Mobitex (kaz@cafe.net)       */
+#define ETH_P_CONTROL  0x0016          /* Card specific control frames */
+#define ETH_P_IRDA     0x0017          /* Linux-IrDA                   */
+#define ETH_P_ECONET   0x0018          /* Acorn Econet                 */
+#define ETH_P_HDLC     0x0019          /* HDLC frames                  */
+#define ETH_P_ARCNET   0x001A          /* 1A for ArcNet :-)            */
+#define ETH_P_DSA      0x001B          /* Distributed Switch Arch.     */
+#define ETH_P_TRAILER  0x001C          /* Trailer switch tagging       */
+#define ETH_P_PHONET   0x00F5          /* Nokia Phonet frames          */
+#define ETH_P_IEEE802154 0x00F6                /* IEEE802.15.4 frame           */
+#define ETH_P_CAIF     0x00F7          /* ST-Ericsson CAIF protocol    */
+#define ETH_P_XDSA     0x00F8          /* Multiplexed DSA protocol     */
+#define ETH_P_MAP      0x00F9          /* Qualcomm multiplexing and
+                                        * aggregation protocol
+                                        */
+
+/*
+ *     This is an Ethernet frame header.
+ */
+
+struct ethhdr {
+       unsigned char   h_dest[ETH_ALEN];       /* destination eth addr */
+       unsigned char   h_source[ETH_ALEN];     /* source ether addr    */
+       __be16          h_proto;                /* packet type ID field */
+} __attribute__((packed));
+
+
+#endif /* _LINUX_IF_ETHER_H */
diff --git a/include/uapi/linux/if_link.h b/include/uapi/linux/if_link.h
new file mode 100644 (file)
index 0000000..1f97d05
--- /dev/null
@@ -0,0 +1,928 @@
+#ifndef _LINUX_IF_LINK_H
+#define _LINUX_IF_LINK_H
+
+#include <linux/types.h>
+#include <linux/netlink.h>
+
+/* This struct should be in sync with struct rtnl_link_stats64 */
+struct rtnl_link_stats {
+       __u32   rx_packets;             /* total packets received       */
+       __u32   tx_packets;             /* total packets transmitted    */
+       __u32   rx_bytes;               /* total bytes received         */
+       __u32   tx_bytes;               /* total bytes transmitted      */
+       __u32   rx_errors;              /* bad packets received         */
+       __u32   tx_errors;              /* packet transmit problems     */
+       __u32   rx_dropped;             /* no space in linux buffers    */
+       __u32   tx_dropped;             /* no space available in linux  */
+       __u32   multicast;              /* multicast packets received   */
+       __u32   collisions;
+
+       /* detailed rx_errors: */
+       __u32   rx_length_errors;
+       __u32   rx_over_errors;         /* receiver ring buff overflow  */
+       __u32   rx_crc_errors;          /* recved pkt with crc error    */
+       __u32   rx_frame_errors;        /* recv'd frame alignment error */
+       __u32   rx_fifo_errors;         /* recv'r fifo overrun          */
+       __u32   rx_missed_errors;       /* receiver missed packet       */
+
+       /* detailed tx_errors */
+       __u32   tx_aborted_errors;
+       __u32   tx_carrier_errors;
+       __u32   tx_fifo_errors;
+       __u32   tx_heartbeat_errors;
+       __u32   tx_window_errors;
+
+       /* for cslip etc */
+       __u32   rx_compressed;
+       __u32   tx_compressed;
+
+       __u32   rx_nohandler;           /* dropped, no handler found    */
+};
+
+/* The main device statistics structure */
+struct rtnl_link_stats64 {
+       __u64   rx_packets;             /* total packets received       */
+       __u64   tx_packets;             /* total packets transmitted    */
+       __u64   rx_bytes;               /* total bytes received         */
+       __u64   tx_bytes;               /* total bytes transmitted      */
+       __u64   rx_errors;              /* bad packets received         */
+       __u64   tx_errors;              /* packet transmit problems     */
+       __u64   rx_dropped;             /* no space in linux buffers    */
+       __u64   tx_dropped;             /* no space available in linux  */
+       __u64   multicast;              /* multicast packets received   */
+       __u64   collisions;
+
+       /* detailed rx_errors: */
+       __u64   rx_length_errors;
+       __u64   rx_over_errors;         /* receiver ring buff overflow  */
+       __u64   rx_crc_errors;          /* recved pkt with crc error    */
+       __u64   rx_frame_errors;        /* recv'd frame alignment error */
+       __u64   rx_fifo_errors;         /* recv'r fifo overrun          */
+       __u64   rx_missed_errors;       /* receiver missed packet       */
+
+       /* detailed tx_errors */
+       __u64   tx_aborted_errors;
+       __u64   tx_carrier_errors;
+       __u64   tx_fifo_errors;
+       __u64   tx_heartbeat_errors;
+       __u64   tx_window_errors;
+
+       /* for cslip etc */
+       __u64   rx_compressed;
+       __u64   tx_compressed;
+
+       __u64   rx_nohandler;           /* dropped, no handler found    */
+};
+
+/* The struct should be in sync with struct ifmap */
+struct rtnl_link_ifmap {
+       __u64   mem_start;
+       __u64   mem_end;
+       __u64   base_addr;
+       __u16   irq;
+       __u8    dma;
+       __u8    port;
+};
+
+/*
+ * IFLA_AF_SPEC
+ *   Contains nested attributes for address family specific attributes.
+ *   Each address family may create a attribute with the address family
+ *   number as type and create its own attribute structure in it.
+ *
+ *   Example:
+ *   [IFLA_AF_SPEC] = {
+ *       [AF_INET] = {
+ *           [IFLA_INET_CONF] = ...,
+ *       },
+ *       [AF_INET6] = {
+ *           [IFLA_INET6_FLAGS] = ...,
+ *           [IFLA_INET6_CONF] = ...,
+ *       }
+ *   }
+ */
+
+enum {
+       IFLA_UNSPEC,
+       IFLA_ADDRESS,
+       IFLA_BROADCAST,
+       IFLA_IFNAME,
+       IFLA_MTU,
+       IFLA_LINK,
+       IFLA_QDISC,
+       IFLA_STATS,
+       IFLA_COST,
+#define IFLA_COST IFLA_COST
+       IFLA_PRIORITY,
+#define IFLA_PRIORITY IFLA_PRIORITY
+       IFLA_MASTER,
+#define IFLA_MASTER IFLA_MASTER
+       IFLA_WIRELESS,          /* Wireless Extension event - see wireless.h */
+#define IFLA_WIRELESS IFLA_WIRELESS
+       IFLA_PROTINFO,          /* Protocol specific information for a link */
+#define IFLA_PROTINFO IFLA_PROTINFO
+       IFLA_TXQLEN,
+#define IFLA_TXQLEN IFLA_TXQLEN
+       IFLA_MAP,
+#define IFLA_MAP IFLA_MAP
+       IFLA_WEIGHT,
+#define IFLA_WEIGHT IFLA_WEIGHT
+       IFLA_OPERSTATE,
+       IFLA_LINKMODE,
+       IFLA_LINKINFO,
+#define IFLA_LINKINFO IFLA_LINKINFO
+       IFLA_NET_NS_PID,
+       IFLA_IFALIAS,
+       IFLA_NUM_VF,            /* Number of VFs if device is SR-IOV PF */
+       IFLA_VFINFO_LIST,
+       IFLA_STATS64,
+       IFLA_VF_PORTS,
+       IFLA_PORT_SELF,
+       IFLA_AF_SPEC,
+       IFLA_GROUP,             /* Group the device belongs to */
+       IFLA_NET_NS_FD,
+       IFLA_EXT_MASK,          /* Extended info mask, VFs, etc */
+       IFLA_PROMISCUITY,       /* Promiscuity count: > 0 means acts PROMISC */
+#define IFLA_PROMISCUITY IFLA_PROMISCUITY
+       IFLA_NUM_TX_QUEUES,
+       IFLA_NUM_RX_QUEUES,
+       IFLA_CARRIER,
+       IFLA_PHYS_PORT_ID,
+       IFLA_CARRIER_CHANGES,
+       IFLA_PHYS_SWITCH_ID,
+       IFLA_LINK_NETNSID,
+       IFLA_PHYS_PORT_NAME,
+       IFLA_PROTO_DOWN,
+       IFLA_GSO_MAX_SEGS,
+       IFLA_GSO_MAX_SIZE,
+       IFLA_PAD,
+       IFLA_XDP,
+       IFLA_EVENT,
+       __IFLA_MAX
+};
+
+
+#define IFLA_MAX (__IFLA_MAX - 1)
+
+/* backwards compatibility for userspace */
+#define IFLA_RTA(r)  ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct ifinfomsg))))
+#define IFLA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct ifinfomsg))
+
+enum {
+       IFLA_INET_UNSPEC,
+       IFLA_INET_CONF,
+       __IFLA_INET_MAX,
+};
+
+#define IFLA_INET_MAX (__IFLA_INET_MAX - 1)
+
+/* ifi_flags.
+
+   IFF_* flags.
+
+   The only change is:
+   IFF_LOOPBACK, IFF_BROADCAST and IFF_POINTOPOINT are
+   more not changeable by user. They describe link media
+   characteristics and set by device driver.
+
+   Comments:
+   - Combination IFF_BROADCAST|IFF_POINTOPOINT is invalid
+   - If neither of these three flags are set;
+     the interface is NBMA.
+
+   - IFF_MULTICAST does not mean anything special:
+   multicasts can be used on all not-NBMA links.
+   IFF_MULTICAST means that this media uses special encapsulation
+   for multicast frames. Apparently, all IFF_POINTOPOINT and
+   IFF_BROADCAST devices are able to use multicasts too.
+ */
+
+/* IFLA_LINK.
+   For usual devices it is equal ifi_index.
+   If it is a "virtual interface" (f.e. tunnel), ifi_link
+   can point to real physical interface (f.e. for bandwidth calculations),
+   or maybe 0, what means, that real media is unknown (usual
+   for IPIP tunnels, when route to endpoint is allowed to change)
+ */
+
+/* Subtype attributes for IFLA_PROTINFO */
+enum {
+       IFLA_INET6_UNSPEC,
+       IFLA_INET6_FLAGS,       /* link flags                   */
+       IFLA_INET6_CONF,        /* sysctl parameters            */
+       IFLA_INET6_STATS,       /* statistics                   */
+       IFLA_INET6_MCAST,       /* MC things. What of them?     */
+       IFLA_INET6_CACHEINFO,   /* time values and max reasm size */
+       IFLA_INET6_ICMP6STATS,  /* statistics (icmpv6)          */
+       IFLA_INET6_TOKEN,       /* device token                 */
+       IFLA_INET6_ADDR_GEN_MODE, /* implicit address generator mode */
+       __IFLA_INET6_MAX
+};
+
+#define IFLA_INET6_MAX (__IFLA_INET6_MAX - 1)
+
+enum in6_addr_gen_mode {
+       IN6_ADDR_GEN_MODE_EUI64,
+       IN6_ADDR_GEN_MODE_NONE,
+       IN6_ADDR_GEN_MODE_STABLE_PRIVACY,
+       IN6_ADDR_GEN_MODE_RANDOM,
+};
+
+/* Bridge section */
+
+enum {
+       IFLA_BR_UNSPEC,
+       IFLA_BR_FORWARD_DELAY,
+       IFLA_BR_HELLO_TIME,
+       IFLA_BR_MAX_AGE,
+       IFLA_BR_AGEING_TIME,
+       IFLA_BR_STP_STATE,
+       IFLA_BR_PRIORITY,
+       IFLA_BR_VLAN_FILTERING,
+       IFLA_BR_VLAN_PROTOCOL,
+       IFLA_BR_GROUP_FWD_MASK,
+       IFLA_BR_ROOT_ID,
+       IFLA_BR_BRIDGE_ID,
+       IFLA_BR_ROOT_PORT,
+       IFLA_BR_ROOT_PATH_COST,
+       IFLA_BR_TOPOLOGY_CHANGE,
+       IFLA_BR_TOPOLOGY_CHANGE_DETECTED,
+       IFLA_BR_HELLO_TIMER,
+       IFLA_BR_TCN_TIMER,
+       IFLA_BR_TOPOLOGY_CHANGE_TIMER,
+       IFLA_BR_GC_TIMER,
+       IFLA_BR_GROUP_ADDR,
+       IFLA_BR_FDB_FLUSH,
+       IFLA_BR_MCAST_ROUTER,
+       IFLA_BR_MCAST_SNOOPING,
+       IFLA_BR_MCAST_QUERY_USE_IFADDR,
+       IFLA_BR_MCAST_QUERIER,
+       IFLA_BR_MCAST_HASH_ELASTICITY,
+       IFLA_BR_MCAST_HASH_MAX,
+       IFLA_BR_MCAST_LAST_MEMBER_CNT,
+       IFLA_BR_MCAST_STARTUP_QUERY_CNT,
+       IFLA_BR_MCAST_LAST_MEMBER_INTVL,
+       IFLA_BR_MCAST_MEMBERSHIP_INTVL,
+       IFLA_BR_MCAST_QUERIER_INTVL,
+       IFLA_BR_MCAST_QUERY_INTVL,
+       IFLA_BR_MCAST_QUERY_RESPONSE_INTVL,
+       IFLA_BR_MCAST_STARTUP_QUERY_INTVL,
+       IFLA_BR_NF_CALL_IPTABLES,
+       IFLA_BR_NF_CALL_IP6TABLES,
+       IFLA_BR_NF_CALL_ARPTABLES,
+       IFLA_BR_VLAN_DEFAULT_PVID,
+       IFLA_BR_PAD,
+       IFLA_BR_VLAN_STATS_ENABLED,
+       IFLA_BR_MCAST_STATS_ENABLED,
+       IFLA_BR_MCAST_IGMP_VERSION,
+       IFLA_BR_MCAST_MLD_VERSION,
+       __IFLA_BR_MAX,
+};
+
+#define IFLA_BR_MAX    (__IFLA_BR_MAX - 1)
+
+struct ifla_bridge_id {
+       __u8    prio[2];
+       __u8    addr[6]; /* ETH_ALEN */
+};
+
+enum {
+       BRIDGE_MODE_UNSPEC,
+       BRIDGE_MODE_HAIRPIN,
+};
+
+enum {
+       IFLA_BRPORT_UNSPEC,
+       IFLA_BRPORT_STATE,      /* Spanning tree state     */
+       IFLA_BRPORT_PRIORITY,   /* "             priority  */
+       IFLA_BRPORT_COST,       /* "             cost      */
+       IFLA_BRPORT_MODE,       /* mode (hairpin)          */
+       IFLA_BRPORT_GUARD,      /* bpdu guard              */
+       IFLA_BRPORT_PROTECT,    /* root port protection    */
+       IFLA_BRPORT_FAST_LEAVE, /* multicast fast leave    */
+       IFLA_BRPORT_LEARNING,   /* mac learning */
+       IFLA_BRPORT_UNICAST_FLOOD, /* flood unicast traffic */
+       IFLA_BRPORT_PROXYARP,   /* proxy ARP */
+       IFLA_BRPORT_LEARNING_SYNC, /* mac learning sync from device */
+       IFLA_BRPORT_PROXYARP_WIFI, /* proxy ARP for Wi-Fi */
+       IFLA_BRPORT_ROOT_ID,    /* designated root */
+       IFLA_BRPORT_BRIDGE_ID,  /* designated bridge */
+       IFLA_BRPORT_DESIGNATED_PORT,
+       IFLA_BRPORT_DESIGNATED_COST,
+       IFLA_BRPORT_ID,
+       IFLA_BRPORT_NO,
+       IFLA_BRPORT_TOPOLOGY_CHANGE_ACK,
+       IFLA_BRPORT_CONFIG_PENDING,
+       IFLA_BRPORT_MESSAGE_AGE_TIMER,
+       IFLA_BRPORT_FORWARD_DELAY_TIMER,
+       IFLA_BRPORT_HOLD_TIMER,
+       IFLA_BRPORT_FLUSH,
+       IFLA_BRPORT_MULTICAST_ROUTER,
+       IFLA_BRPORT_PAD,
+       IFLA_BRPORT_MCAST_FLOOD,
+       IFLA_BRPORT_MCAST_TO_UCAST,
+       IFLA_BRPORT_VLAN_TUNNEL,
+       IFLA_BRPORT_BCAST_FLOOD,
+       __IFLA_BRPORT_MAX
+};
+#define IFLA_BRPORT_MAX (__IFLA_BRPORT_MAX - 1)
+
+struct ifla_cacheinfo {
+       __u32   max_reasm_len;
+       __u32   tstamp;         /* ipv6InterfaceTable updated timestamp */
+       __u32   reachable_time;
+       __u32   retrans_time;
+};
+
+enum {
+       IFLA_INFO_UNSPEC,
+       IFLA_INFO_KIND,
+       IFLA_INFO_DATA,
+       IFLA_INFO_XSTATS,
+       IFLA_INFO_SLAVE_KIND,
+       IFLA_INFO_SLAVE_DATA,
+       __IFLA_INFO_MAX,
+};
+
+#define IFLA_INFO_MAX  (__IFLA_INFO_MAX - 1)
+
+/* VLAN section */
+
+enum {
+       IFLA_VLAN_UNSPEC,
+       IFLA_VLAN_ID,
+       IFLA_VLAN_FLAGS,
+       IFLA_VLAN_EGRESS_QOS,
+       IFLA_VLAN_INGRESS_QOS,
+       IFLA_VLAN_PROTOCOL,
+       __IFLA_VLAN_MAX,
+};
+
+#define IFLA_VLAN_MAX  (__IFLA_VLAN_MAX - 1)
+
+struct ifla_vlan_flags {
+       __u32   flags;
+       __u32   mask;
+};
+
+enum {
+       IFLA_VLAN_QOS_UNSPEC,
+       IFLA_VLAN_QOS_MAPPING,
+       __IFLA_VLAN_QOS_MAX
+};
+
+#define IFLA_VLAN_QOS_MAX      (__IFLA_VLAN_QOS_MAX - 1)
+
+struct ifla_vlan_qos_mapping {
+       __u32 from;
+       __u32 to;
+};
+
+/* MACVLAN section */
+enum {
+       IFLA_MACVLAN_UNSPEC,
+       IFLA_MACVLAN_MODE,
+       IFLA_MACVLAN_FLAGS,
+       IFLA_MACVLAN_MACADDR_MODE,
+       IFLA_MACVLAN_MACADDR,
+       IFLA_MACVLAN_MACADDR_DATA,
+       IFLA_MACVLAN_MACADDR_COUNT,
+       __IFLA_MACVLAN_MAX,
+};
+
+#define IFLA_MACVLAN_MAX (__IFLA_MACVLAN_MAX - 1)
+
+enum macvlan_mode {
+       MACVLAN_MODE_PRIVATE = 1, /* don't talk to other macvlans */
+       MACVLAN_MODE_VEPA    = 2, /* talk to other ports through ext bridge */
+       MACVLAN_MODE_BRIDGE  = 4, /* talk to bridge ports directly */
+       MACVLAN_MODE_PASSTHRU = 8,/* take over the underlying device */
+       MACVLAN_MODE_SOURCE  = 16,/* use source MAC address list to assign */
+};
+
+enum macvlan_macaddr_mode {
+       MACVLAN_MACADDR_ADD,
+       MACVLAN_MACADDR_DEL,
+       MACVLAN_MACADDR_FLUSH,
+       MACVLAN_MACADDR_SET,
+};
+
+#define MACVLAN_FLAG_NOPROMISC 1
+
+/* VRF section */
+enum {
+       IFLA_VRF_UNSPEC,
+       IFLA_VRF_TABLE,
+       __IFLA_VRF_MAX
+};
+
+#define IFLA_VRF_MAX (__IFLA_VRF_MAX - 1)
+
+enum {
+       IFLA_VRF_PORT_UNSPEC,
+       IFLA_VRF_PORT_TABLE,
+       __IFLA_VRF_PORT_MAX
+};
+
+#define IFLA_VRF_PORT_MAX (__IFLA_VRF_PORT_MAX - 1)
+
+/* MACSEC section */
+enum {
+       IFLA_MACSEC_UNSPEC,
+       IFLA_MACSEC_SCI,
+       IFLA_MACSEC_PORT,
+       IFLA_MACSEC_ICV_LEN,
+       IFLA_MACSEC_CIPHER_SUITE,
+       IFLA_MACSEC_WINDOW,
+       IFLA_MACSEC_ENCODING_SA,
+       IFLA_MACSEC_ENCRYPT,
+       IFLA_MACSEC_PROTECT,
+       IFLA_MACSEC_INC_SCI,
+       IFLA_MACSEC_ES,
+       IFLA_MACSEC_SCB,
+       IFLA_MACSEC_REPLAY_PROTECT,
+       IFLA_MACSEC_VALIDATION,
+       IFLA_MACSEC_PAD,
+       __IFLA_MACSEC_MAX,
+};
+
+#define IFLA_MACSEC_MAX (__IFLA_MACSEC_MAX - 1)
+
+enum macsec_validation_type {
+       MACSEC_VALIDATE_DISABLED = 0,
+       MACSEC_VALIDATE_CHECK = 1,
+       MACSEC_VALIDATE_STRICT = 2,
+       __MACSEC_VALIDATE_END,
+       MACSEC_VALIDATE_MAX = __MACSEC_VALIDATE_END - 1,
+};
+
+/* IPVLAN section */
+enum {
+       IFLA_IPVLAN_UNSPEC,
+       IFLA_IPVLAN_MODE,
+       __IFLA_IPVLAN_MAX
+};
+
+#define IFLA_IPVLAN_MAX (__IFLA_IPVLAN_MAX - 1)
+
+enum ipvlan_mode {
+       IPVLAN_MODE_L2 = 0,
+       IPVLAN_MODE_L3,
+       IPVLAN_MODE_L3S,
+       IPVLAN_MODE_MAX
+};
+
+/* VXLAN section */
+enum {
+       IFLA_VXLAN_UNSPEC,
+       IFLA_VXLAN_ID,
+       IFLA_VXLAN_GROUP,       /* group or remote address */
+       IFLA_VXLAN_LINK,
+       IFLA_VXLAN_LOCAL,
+       IFLA_VXLAN_TTL,
+       IFLA_VXLAN_TOS,
+       IFLA_VXLAN_LEARNING,
+       IFLA_VXLAN_AGEING,
+       IFLA_VXLAN_LIMIT,
+       IFLA_VXLAN_PORT_RANGE,  /* source port */
+       IFLA_VXLAN_PROXY,
+       IFLA_VXLAN_RSC,
+       IFLA_VXLAN_L2MISS,
+       IFLA_VXLAN_L3MISS,
+       IFLA_VXLAN_PORT,        /* destination port */
+       IFLA_VXLAN_GROUP6,
+       IFLA_VXLAN_LOCAL6,
+       IFLA_VXLAN_UDP_CSUM,
+       IFLA_VXLAN_UDP_ZERO_CSUM6_TX,
+       IFLA_VXLAN_UDP_ZERO_CSUM6_RX,
+       IFLA_VXLAN_REMCSUM_TX,
+       IFLA_VXLAN_REMCSUM_RX,
+       IFLA_VXLAN_GBP,
+       IFLA_VXLAN_REMCSUM_NOPARTIAL,
+       IFLA_VXLAN_COLLECT_METADATA,
+       IFLA_VXLAN_LABEL,
+       IFLA_VXLAN_GPE,
+       __IFLA_VXLAN_MAX
+};
+#define IFLA_VXLAN_MAX (__IFLA_VXLAN_MAX - 1)
+
+struct ifla_vxlan_port_range {
+       __be16  low;
+       __be16  high;
+};
+
+/* GENEVE section */
+enum {
+       IFLA_GENEVE_UNSPEC,
+       IFLA_GENEVE_ID,
+       IFLA_GENEVE_REMOTE,
+       IFLA_GENEVE_TTL,
+       IFLA_GENEVE_TOS,
+       IFLA_GENEVE_PORT,       /* destination port */
+       IFLA_GENEVE_COLLECT_METADATA,
+       IFLA_GENEVE_REMOTE6,
+       IFLA_GENEVE_UDP_CSUM,
+       IFLA_GENEVE_UDP_ZERO_CSUM6_TX,
+       IFLA_GENEVE_UDP_ZERO_CSUM6_RX,
+       IFLA_GENEVE_LABEL,
+       __IFLA_GENEVE_MAX
+};
+#define IFLA_GENEVE_MAX        (__IFLA_GENEVE_MAX - 1)
+
+/* PPP section */
+enum {
+       IFLA_PPP_UNSPEC,
+       IFLA_PPP_DEV_FD,
+       __IFLA_PPP_MAX
+};
+#define IFLA_PPP_MAX (__IFLA_PPP_MAX - 1)
+
+/* GTP section */
+
+enum ifla_gtp_role {
+       GTP_ROLE_GGSN = 0,
+       GTP_ROLE_SGSN,
+};
+
+enum {
+       IFLA_GTP_UNSPEC,
+       IFLA_GTP_FD0,
+       IFLA_GTP_FD1,
+       IFLA_GTP_PDP_HASHSIZE,
+       IFLA_GTP_ROLE,
+       __IFLA_GTP_MAX,
+};
+#define IFLA_GTP_MAX (__IFLA_GTP_MAX - 1)
+
+/* Bonding section */
+
+enum {
+       IFLA_BOND_UNSPEC,
+       IFLA_BOND_MODE,
+       IFLA_BOND_ACTIVE_SLAVE,
+       IFLA_BOND_MIIMON,
+       IFLA_BOND_UPDELAY,
+       IFLA_BOND_DOWNDELAY,
+       IFLA_BOND_USE_CARRIER,
+       IFLA_BOND_ARP_INTERVAL,
+       IFLA_BOND_ARP_IP_TARGET,
+       IFLA_BOND_ARP_VALIDATE,
+       IFLA_BOND_ARP_ALL_TARGETS,
+       IFLA_BOND_PRIMARY,
+       IFLA_BOND_PRIMARY_RESELECT,
+       IFLA_BOND_FAIL_OVER_MAC,
+       IFLA_BOND_XMIT_HASH_POLICY,
+       IFLA_BOND_RESEND_IGMP,
+       IFLA_BOND_NUM_PEER_NOTIF,
+       IFLA_BOND_ALL_SLAVES_ACTIVE,
+       IFLA_BOND_MIN_LINKS,
+       IFLA_BOND_LP_INTERVAL,
+       IFLA_BOND_PACKETS_PER_SLAVE,
+       IFLA_BOND_AD_LACP_RATE,
+       IFLA_BOND_AD_SELECT,
+       IFLA_BOND_AD_INFO,
+       IFLA_BOND_AD_ACTOR_SYS_PRIO,
+       IFLA_BOND_AD_USER_PORT_KEY,
+       IFLA_BOND_AD_ACTOR_SYSTEM,
+       IFLA_BOND_TLB_DYNAMIC_LB,
+       __IFLA_BOND_MAX,
+};
+
+#define IFLA_BOND_MAX  (__IFLA_BOND_MAX - 1)
+
+enum {
+       IFLA_BOND_AD_INFO_UNSPEC,
+       IFLA_BOND_AD_INFO_AGGREGATOR,
+       IFLA_BOND_AD_INFO_NUM_PORTS,
+       IFLA_BOND_AD_INFO_ACTOR_KEY,
+       IFLA_BOND_AD_INFO_PARTNER_KEY,
+       IFLA_BOND_AD_INFO_PARTNER_MAC,
+       __IFLA_BOND_AD_INFO_MAX,
+};
+
+#define IFLA_BOND_AD_INFO_MAX  (__IFLA_BOND_AD_INFO_MAX - 1)
+
+enum {
+       IFLA_BOND_SLAVE_UNSPEC,
+       IFLA_BOND_SLAVE_STATE,
+       IFLA_BOND_SLAVE_MII_STATUS,
+       IFLA_BOND_SLAVE_LINK_FAILURE_COUNT,
+       IFLA_BOND_SLAVE_PERM_HWADDR,
+       IFLA_BOND_SLAVE_QUEUE_ID,
+       IFLA_BOND_SLAVE_AD_AGGREGATOR_ID,
+       IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE,
+       IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE,
+       __IFLA_BOND_SLAVE_MAX,
+};
+
+#define IFLA_BOND_SLAVE_MAX    (__IFLA_BOND_SLAVE_MAX - 1)
+
+/* SR-IOV virtual function management section */
+
+enum {
+       IFLA_VF_INFO_UNSPEC,
+       IFLA_VF_INFO,
+       __IFLA_VF_INFO_MAX,
+};
+
+#define IFLA_VF_INFO_MAX (__IFLA_VF_INFO_MAX - 1)
+
+enum {
+       IFLA_VF_UNSPEC,
+       IFLA_VF_MAC,            /* Hardware queue specific attributes */
+       IFLA_VF_VLAN,           /* VLAN ID and QoS */
+       IFLA_VF_TX_RATE,        /* Max TX Bandwidth Allocation */
+       IFLA_VF_SPOOFCHK,       /* Spoof Checking on/off switch */
+       IFLA_VF_LINK_STATE,     /* link state enable/disable/auto switch */
+       IFLA_VF_RATE,           /* Min and Max TX Bandwidth Allocation */
+       IFLA_VF_RSS_QUERY_EN,   /* RSS Redirection Table and Hash Key query
+                                * on/off switch
+                                */
+       IFLA_VF_STATS,          /* network device statistics */
+       IFLA_VF_TRUST,          /* Trust VF */
+       IFLA_VF_IB_NODE_GUID,   /* VF Infiniband node GUID */
+       IFLA_VF_IB_PORT_GUID,   /* VF Infiniband port GUID */
+       IFLA_VF_VLAN_LIST,      /* nested list of vlans, option for QinQ */
+       __IFLA_VF_MAX,
+};
+
+#define IFLA_VF_MAX (__IFLA_VF_MAX - 1)
+
+struct ifla_vf_mac {
+       __u32 vf;
+       __u8 mac[32]; /* MAX_ADDR_LEN */
+};
+
+struct ifla_vf_vlan {
+       __u32 vf;
+       __u32 vlan; /* 0 - 4095, 0 disables VLAN filter */
+       __u32 qos;
+};
+
+enum {
+       IFLA_VF_VLAN_INFO_UNSPEC,
+       IFLA_VF_VLAN_INFO,      /* VLAN ID, QoS and VLAN protocol */
+       __IFLA_VF_VLAN_INFO_MAX,
+};
+
+#define IFLA_VF_VLAN_INFO_MAX (__IFLA_VF_VLAN_INFO_MAX - 1)
+#define MAX_VLAN_LIST_LEN 1
+
+struct ifla_vf_vlan_info {
+       __u32 vf;
+       __u32 vlan; /* 0 - 4095, 0 disables VLAN filter */
+       __u32 qos;
+       __be16 vlan_proto; /* VLAN protocol either 802.1Q or 802.1ad */
+};
+
+struct ifla_vf_tx_rate {
+       __u32 vf;
+       __u32 rate; /* Max TX bandwidth in Mbps, 0 disables throttling */
+};
+
+struct ifla_vf_rate {
+       __u32 vf;
+       __u32 min_tx_rate; /* Min Bandwidth in Mbps */
+       __u32 max_tx_rate; /* Max Bandwidth in Mbps */
+};
+
+struct ifla_vf_spoofchk {
+       __u32 vf;
+       __u32 setting;
+};
+
+struct ifla_vf_guid {
+       __u32 vf;
+       __u64 guid;
+};
+
+enum {
+       IFLA_VF_LINK_STATE_AUTO,        /* link state of the uplink */
+       IFLA_VF_LINK_STATE_ENABLE,      /* link always up */
+       IFLA_VF_LINK_STATE_DISABLE,     /* link always down */
+       __IFLA_VF_LINK_STATE_MAX,
+};
+
+struct ifla_vf_link_state {
+       __u32 vf;
+       __u32 link_state;
+};
+
+struct ifla_vf_rss_query_en {
+       __u32 vf;
+       __u32 setting;
+};
+
+enum {
+       IFLA_VF_STATS_RX_PACKETS,
+       IFLA_VF_STATS_TX_PACKETS,
+       IFLA_VF_STATS_RX_BYTES,
+       IFLA_VF_STATS_TX_BYTES,
+       IFLA_VF_STATS_BROADCAST,
+       IFLA_VF_STATS_MULTICAST,
+       IFLA_VF_STATS_PAD,
+       __IFLA_VF_STATS_MAX,
+};
+
+#define IFLA_VF_STATS_MAX (__IFLA_VF_STATS_MAX - 1)
+
+struct ifla_vf_trust {
+       __u32 vf;
+       __u32 setting;
+};
+
+/* VF ports management section
+ *
+ *     Nested layout of set/get msg is:
+ *
+ *             [IFLA_NUM_VF]
+ *             [IFLA_VF_PORTS]
+ *                     [IFLA_VF_PORT]
+ *                             [IFLA_PORT_*], ...
+ *                     [IFLA_VF_PORT]
+ *                             [IFLA_PORT_*], ...
+ *                     ...
+ *             [IFLA_PORT_SELF]
+ *                     [IFLA_PORT_*], ...
+ */
+
+enum {
+       IFLA_VF_PORT_UNSPEC,
+       IFLA_VF_PORT,                   /* nest */
+       __IFLA_VF_PORT_MAX,
+};
+
+#define IFLA_VF_PORT_MAX (__IFLA_VF_PORT_MAX - 1)
+
+enum {
+       IFLA_PORT_UNSPEC,
+       IFLA_PORT_VF,                   /* __u32 */
+       IFLA_PORT_PROFILE,              /* string */
+       IFLA_PORT_VSI_TYPE,             /* 802.1Qbg (pre-)standard VDP */
+       IFLA_PORT_INSTANCE_UUID,        /* binary UUID */
+       IFLA_PORT_HOST_UUID,            /* binary UUID */
+       IFLA_PORT_REQUEST,              /* __u8 */
+       IFLA_PORT_RESPONSE,             /* __u16, output only */
+       __IFLA_PORT_MAX,
+};
+
+#define IFLA_PORT_MAX (__IFLA_PORT_MAX - 1)
+
+#define PORT_PROFILE_MAX       40
+#define PORT_UUID_MAX          16
+#define PORT_SELF_VF           -1
+
+enum {
+       PORT_REQUEST_PREASSOCIATE = 0,
+       PORT_REQUEST_PREASSOCIATE_RR,
+       PORT_REQUEST_ASSOCIATE,
+       PORT_REQUEST_DISASSOCIATE,
+};
+
+enum {
+       PORT_VDP_RESPONSE_SUCCESS = 0,
+       PORT_VDP_RESPONSE_INVALID_FORMAT,
+       PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES,
+       PORT_VDP_RESPONSE_UNUSED_VTID,
+       PORT_VDP_RESPONSE_VTID_VIOLATION,
+       PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION,
+       PORT_VDP_RESPONSE_OUT_OF_SYNC,
+       /* 0x08-0xFF reserved for future VDP use */
+       PORT_PROFILE_RESPONSE_SUCCESS = 0x100,
+       PORT_PROFILE_RESPONSE_INPROGRESS,
+       PORT_PROFILE_RESPONSE_INVALID,
+       PORT_PROFILE_RESPONSE_BADSTATE,
+       PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES,
+       PORT_PROFILE_RESPONSE_ERROR,
+};
+
+struct ifla_port_vsi {
+       __u8 vsi_mgr_id;
+       __u8 vsi_type_id[3];
+       __u8 vsi_type_version;
+       __u8 pad[3];
+};
+
+
+/* IPoIB section */
+
+enum {
+       IFLA_IPOIB_UNSPEC,
+       IFLA_IPOIB_PKEY,
+       IFLA_IPOIB_MODE,
+       IFLA_IPOIB_UMCAST,
+       __IFLA_IPOIB_MAX
+};
+
+enum {
+       IPOIB_MODE_DATAGRAM  = 0, /* using unreliable datagram QPs */
+       IPOIB_MODE_CONNECTED = 1, /* using connected QPs */
+};
+
+#define IFLA_IPOIB_MAX (__IFLA_IPOIB_MAX - 1)
+
+
+/* HSR section */
+
+enum {
+       IFLA_HSR_UNSPEC,
+       IFLA_HSR_SLAVE1,
+       IFLA_HSR_SLAVE2,
+       IFLA_HSR_MULTICAST_SPEC,        /* Last byte of supervision addr */
+       IFLA_HSR_SUPERVISION_ADDR,      /* Supervision frame multicast addr */
+       IFLA_HSR_SEQ_NR,
+       IFLA_HSR_VERSION,               /* HSR version */
+       __IFLA_HSR_MAX,
+};
+
+#define IFLA_HSR_MAX (__IFLA_HSR_MAX - 1)
+
+/* STATS section */
+
+struct if_stats_msg {
+       __u8  family;
+       __u8  pad1;
+       __u16 pad2;
+       __u32 ifindex;
+       __u32 filter_mask;
+};
+
+/* A stats attribute can be netdev specific or a global stat.
+ * For netdev stats, lets use the prefix IFLA_STATS_LINK_*
+ */
+enum {
+       IFLA_STATS_UNSPEC, /* also used as 64bit pad attribute */
+       IFLA_STATS_LINK_64,
+       IFLA_STATS_LINK_XSTATS,
+       IFLA_STATS_LINK_XSTATS_SLAVE,
+       IFLA_STATS_LINK_OFFLOAD_XSTATS,
+       IFLA_STATS_AF_SPEC,
+       __IFLA_STATS_MAX,
+};
+
+#define IFLA_STATS_MAX (__IFLA_STATS_MAX - 1)
+
+#define IFLA_STATS_FILTER_BIT(ATTR)    (1 << (ATTR - 1))
+
+/* These are embedded into IFLA_STATS_LINK_XSTATS:
+ * [IFLA_STATS_LINK_XSTATS]
+ * -> [LINK_XSTATS_TYPE_xxx]
+ *    -> [rtnl link type specific attributes]
+ */
+enum {
+       LINK_XSTATS_TYPE_UNSPEC,
+       LINK_XSTATS_TYPE_BRIDGE,
+       __LINK_XSTATS_TYPE_MAX
+};
+#define LINK_XSTATS_TYPE_MAX (__LINK_XSTATS_TYPE_MAX - 1)
+
+/* These are stats embedded into IFLA_STATS_LINK_OFFLOAD_XSTATS */
+enum {
+       IFLA_OFFLOAD_XSTATS_UNSPEC,
+       IFLA_OFFLOAD_XSTATS_CPU_HIT, /* struct rtnl_link_stats64 */
+       __IFLA_OFFLOAD_XSTATS_MAX
+};
+#define IFLA_OFFLOAD_XSTATS_MAX (__IFLA_OFFLOAD_XSTATS_MAX - 1)
+
+/* XDP section */
+
+#define XDP_FLAGS_UPDATE_IF_NOEXIST    (1U << 0)
+#define XDP_FLAGS_SKB_MODE             (1U << 1)
+#define XDP_FLAGS_DRV_MODE             (1U << 2)
+#define XDP_FLAGS_HW_MODE              (1U << 3)
+#define XDP_FLAGS_MODES                        (XDP_FLAGS_SKB_MODE | \
+                                        XDP_FLAGS_DRV_MODE | \
+                                        XDP_FLAGS_HW_MODE)
+#define XDP_FLAGS_MASK                 (XDP_FLAGS_UPDATE_IF_NOEXIST | \
+                                        XDP_FLAGS_MODES)
+
+/* These are stored into IFLA_XDP_ATTACHED on dump. */
+enum {
+       XDP_ATTACHED_NONE = 0,
+       XDP_ATTACHED_DRV,
+       XDP_ATTACHED_SKB,
+       XDP_ATTACHED_HW,
+};
+
+enum {
+       IFLA_XDP_UNSPEC,
+       IFLA_XDP_FD,
+       IFLA_XDP_ATTACHED,
+       IFLA_XDP_FLAGS,
+       IFLA_XDP_PROG_ID,
+       __IFLA_XDP_MAX,
+};
+
+#define IFLA_XDP_MAX (__IFLA_XDP_MAX - 1)
+
+enum {
+       IFLA_EVENT_NONE,
+       IFLA_EVENT_REBOOT,              /* internal reset / reboot */
+       IFLA_EVENT_FEATURES,            /* change in offload features */
+       IFLA_EVENT_BONDING_FAILOVER,    /* change in active slave */
+       IFLA_EVENT_NOTIFY_PEERS,        /* re-sent grat. arp/ndisc */
+       IFLA_EVENT_IGMP_RESEND,         /* re-sent IGMP JOIN */
+       IFLA_EVENT_BONDING_OPTIONS,     /* change in bonding options */
+};
+
+#endif /* _LINUX_IF_LINK_H */
diff --git a/include/uapi/linux/if_macsec.h b/include/uapi/linux/if_macsec.h
new file mode 100644 (file)
index 0000000..22939a3
--- /dev/null
@@ -0,0 +1,171 @@
+/*
+ * include/uapi/linux/if_macsec.h - MACsec device
+ *
+ * Copyright (c) 2015 Sabrina Dubroca <sd@queasysnail.net>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ */
+
+#ifndef _MACSEC_H
+#define _MACSEC_H
+
+#include <linux/types.h>
+
+#define MACSEC_GENL_NAME "macsec"
+#define MACSEC_GENL_VERSION 1
+
+#define MACSEC_MAX_KEY_LEN 128
+
+#define MACSEC_KEYID_LEN 16
+
+#define MACSEC_DEFAULT_CIPHER_ID   0x0080020001000001ULL
+#define MACSEC_DEFAULT_CIPHER_ALT  0x0080C20001000001ULL
+
+#define MACSEC_MIN_ICV_LEN 8
+#define MACSEC_MAX_ICV_LEN 32
+/* upper limit for ICV length as recommended by IEEE802.1AE-2006 */
+#define MACSEC_STD_ICV_LEN 16
+
+enum macsec_attrs {
+       MACSEC_ATTR_UNSPEC,
+       MACSEC_ATTR_IFINDEX,     /* u32, ifindex of the MACsec netdevice */
+       MACSEC_ATTR_RXSC_CONFIG, /* config, nested macsec_rxsc_attrs */
+       MACSEC_ATTR_SA_CONFIG,   /* config, nested macsec_sa_attrs */
+       MACSEC_ATTR_SECY,        /* dump, nested macsec_secy_attrs */
+       MACSEC_ATTR_TXSA_LIST,   /* dump, nested, macsec_sa_attrs for each TXSA */
+       MACSEC_ATTR_RXSC_LIST,   /* dump, nested, macsec_rxsc_attrs for each RXSC */
+       MACSEC_ATTR_TXSC_STATS,  /* dump, nested, macsec_txsc_stats_attr */
+       MACSEC_ATTR_SECY_STATS,  /* dump, nested, macsec_secy_stats_attr */
+       __MACSEC_ATTR_END,
+       NUM_MACSEC_ATTR = __MACSEC_ATTR_END,
+       MACSEC_ATTR_MAX = __MACSEC_ATTR_END - 1,
+};
+
+enum macsec_secy_attrs {
+       MACSEC_SECY_ATTR_UNSPEC,
+       MACSEC_SECY_ATTR_SCI,
+       MACSEC_SECY_ATTR_ENCODING_SA,
+       MACSEC_SECY_ATTR_WINDOW,
+       MACSEC_SECY_ATTR_CIPHER_SUITE,
+       MACSEC_SECY_ATTR_ICV_LEN,
+       MACSEC_SECY_ATTR_PROTECT,
+       MACSEC_SECY_ATTR_REPLAY,
+       MACSEC_SECY_ATTR_OPER,
+       MACSEC_SECY_ATTR_VALIDATE,
+       MACSEC_SECY_ATTR_ENCRYPT,
+       MACSEC_SECY_ATTR_INC_SCI,
+       MACSEC_SECY_ATTR_ES,
+       MACSEC_SECY_ATTR_SCB,
+       MACSEC_SECY_ATTR_PAD,
+       __MACSEC_SECY_ATTR_END,
+       NUM_MACSEC_SECY_ATTR = __MACSEC_SECY_ATTR_END,
+       MACSEC_SECY_ATTR_MAX = __MACSEC_SECY_ATTR_END - 1,
+};
+
+enum macsec_rxsc_attrs {
+       MACSEC_RXSC_ATTR_UNSPEC,
+       MACSEC_RXSC_ATTR_SCI,     /* config/dump, u64 */
+       MACSEC_RXSC_ATTR_ACTIVE,  /* config/dump, u8 0..1 */
+       MACSEC_RXSC_ATTR_SA_LIST, /* dump, nested */
+       MACSEC_RXSC_ATTR_STATS,   /* dump, nested, macsec_rxsc_stats_attr */
+       MACSEC_RXSC_ATTR_PAD,
+       __MACSEC_RXSC_ATTR_END,
+       NUM_MACSEC_RXSC_ATTR = __MACSEC_RXSC_ATTR_END,
+       MACSEC_RXSC_ATTR_MAX = __MACSEC_RXSC_ATTR_END - 1,
+};
+
+enum macsec_sa_attrs {
+       MACSEC_SA_ATTR_UNSPEC,
+       MACSEC_SA_ATTR_AN,     /* config/dump, u8 0..3 */
+       MACSEC_SA_ATTR_ACTIVE, /* config/dump, u8 0..1 */
+       MACSEC_SA_ATTR_PN,     /* config/dump, u32 */
+       MACSEC_SA_ATTR_KEY,    /* config, data */
+       MACSEC_SA_ATTR_KEYID,  /* config/dump, 128-bit */
+       MACSEC_SA_ATTR_STATS,  /* dump, nested, macsec_sa_stats_attr */
+       MACSEC_SA_ATTR_PAD,
+       __MACSEC_SA_ATTR_END,
+       NUM_MACSEC_SA_ATTR = __MACSEC_SA_ATTR_END,
+       MACSEC_SA_ATTR_MAX = __MACSEC_SA_ATTR_END - 1,
+};
+
+enum macsec_nl_commands {
+       MACSEC_CMD_GET_TXSC,
+       MACSEC_CMD_ADD_RXSC,
+       MACSEC_CMD_DEL_RXSC,
+       MACSEC_CMD_UPD_RXSC,
+       MACSEC_CMD_ADD_TXSA,
+       MACSEC_CMD_DEL_TXSA,
+       MACSEC_CMD_UPD_TXSA,
+       MACSEC_CMD_ADD_RXSA,
+       MACSEC_CMD_DEL_RXSA,
+       MACSEC_CMD_UPD_RXSA,
+};
+
+/* u64 per-RXSC stats */
+enum macsec_rxsc_stats_attr {
+       MACSEC_RXSC_STATS_ATTR_UNSPEC,
+       MACSEC_RXSC_STATS_ATTR_IN_OCTETS_VALIDATED,
+       MACSEC_RXSC_STATS_ATTR_IN_OCTETS_DECRYPTED,
+       MACSEC_RXSC_STATS_ATTR_IN_PKTS_UNCHECKED,
+       MACSEC_RXSC_STATS_ATTR_IN_PKTS_DELAYED,
+       MACSEC_RXSC_STATS_ATTR_IN_PKTS_OK,
+       MACSEC_RXSC_STATS_ATTR_IN_PKTS_INVALID,
+       MACSEC_RXSC_STATS_ATTR_IN_PKTS_LATE,
+       MACSEC_RXSC_STATS_ATTR_IN_PKTS_NOT_VALID,
+       MACSEC_RXSC_STATS_ATTR_IN_PKTS_NOT_USING_SA,
+       MACSEC_RXSC_STATS_ATTR_IN_PKTS_UNUSED_SA,
+       MACSEC_RXSC_STATS_ATTR_PAD,
+       __MACSEC_RXSC_STATS_ATTR_END,
+       NUM_MACSEC_RXSC_STATS_ATTR = __MACSEC_RXSC_STATS_ATTR_END,
+       MACSEC_RXSC_STATS_ATTR_MAX = __MACSEC_RXSC_STATS_ATTR_END - 1,
+};
+
+/* u32 per-{RX,TX}SA stats */
+enum macsec_sa_stats_attr {
+       MACSEC_SA_STATS_ATTR_UNSPEC,
+       MACSEC_SA_STATS_ATTR_IN_PKTS_OK,
+       MACSEC_SA_STATS_ATTR_IN_PKTS_INVALID,
+       MACSEC_SA_STATS_ATTR_IN_PKTS_NOT_VALID,
+       MACSEC_SA_STATS_ATTR_IN_PKTS_NOT_USING_SA,
+       MACSEC_SA_STATS_ATTR_IN_PKTS_UNUSED_SA,
+       MACSEC_SA_STATS_ATTR_OUT_PKTS_PROTECTED,
+       MACSEC_SA_STATS_ATTR_OUT_PKTS_ENCRYPTED,
+       __MACSEC_SA_STATS_ATTR_END,
+       NUM_MACSEC_SA_STATS_ATTR = __MACSEC_SA_STATS_ATTR_END,
+       MACSEC_SA_STATS_ATTR_MAX = __MACSEC_SA_STATS_ATTR_END - 1,
+};
+
+/* u64 per-TXSC stats */
+enum macsec_txsc_stats_attr {
+       MACSEC_TXSC_STATS_ATTR_UNSPEC,
+       MACSEC_TXSC_STATS_ATTR_OUT_PKTS_PROTECTED,
+       MACSEC_TXSC_STATS_ATTR_OUT_PKTS_ENCRYPTED,
+       MACSEC_TXSC_STATS_ATTR_OUT_OCTETS_PROTECTED,
+       MACSEC_TXSC_STATS_ATTR_OUT_OCTETS_ENCRYPTED,
+       MACSEC_TXSC_STATS_ATTR_PAD,
+       __MACSEC_TXSC_STATS_ATTR_END,
+       NUM_MACSEC_TXSC_STATS_ATTR = __MACSEC_TXSC_STATS_ATTR_END,
+       MACSEC_TXSC_STATS_ATTR_MAX = __MACSEC_TXSC_STATS_ATTR_END - 1,
+};
+
+/* u64 per-SecY stats */
+enum macsec_secy_stats_attr {
+       MACSEC_SECY_STATS_ATTR_UNSPEC,
+       MACSEC_SECY_STATS_ATTR_OUT_PKTS_UNTAGGED,
+       MACSEC_SECY_STATS_ATTR_IN_PKTS_UNTAGGED,
+       MACSEC_SECY_STATS_ATTR_OUT_PKTS_TOO_LONG,
+       MACSEC_SECY_STATS_ATTR_IN_PKTS_NO_TAG,
+       MACSEC_SECY_STATS_ATTR_IN_PKTS_BAD_TAG,
+       MACSEC_SECY_STATS_ATTR_IN_PKTS_UNKNOWN_SCI,
+       MACSEC_SECY_STATS_ATTR_IN_PKTS_NO_SCI,
+       MACSEC_SECY_STATS_ATTR_IN_PKTS_OVERRUN,
+       MACSEC_SECY_STATS_ATTR_PAD,
+       __MACSEC_SECY_STATS_ATTR_END,
+       NUM_MACSEC_SECY_STATS_ATTR = __MACSEC_SECY_STATS_ATTR_END,
+       MACSEC_SECY_STATS_ATTR_MAX = __MACSEC_SECY_STATS_ATTR_END - 1,
+};
+
+#endif /* _MACSEC_H */
diff --git a/include/uapi/linux/if_packet.h b/include/uapi/linux/if_packet.h
new file mode 100644 (file)
index 0000000..4df96a7
--- /dev/null
@@ -0,0 +1,302 @@
+#ifndef __LINUX_IF_PACKET_H
+#define __LINUX_IF_PACKET_H
+
+#include <linux/types.h>
+
+struct sockaddr_pkt {
+       unsigned short spkt_family;
+       unsigned char spkt_device[14];
+       __be16 spkt_protocol;
+};
+
+struct sockaddr_ll {
+       unsigned short  sll_family;
+       __be16          sll_protocol;
+       int             sll_ifindex;
+       unsigned short  sll_hatype;
+       unsigned char   sll_pkttype;
+       unsigned char   sll_halen;
+       unsigned char   sll_addr[8];
+};
+
+/* Packet types */
+
+#define PACKET_HOST            0               /* To us                */
+#define PACKET_BROADCAST       1               /* To all               */
+#define PACKET_MULTICAST       2               /* To group             */
+#define PACKET_OTHERHOST       3               /* To someone else      */
+#define PACKET_OUTGOING                4               /* Outgoing of any type */
+#define PACKET_LOOPBACK                5               /* MC/BRD frame looped back */
+#define PACKET_USER            6               /* To user space        */
+#define PACKET_KERNEL          7               /* To kernel space      */
+/* Unused, PACKET_FASTROUTE and PACKET_LOOPBACK are invisible to user space */
+#define PACKET_FASTROUTE       6               /* Fastrouted frame     */
+
+/* Packet socket options */
+
+#define PACKET_ADD_MEMBERSHIP          1
+#define PACKET_DROP_MEMBERSHIP         2
+#define PACKET_RECV_OUTPUT             3
+/* Value 4 is still used by obsolete turbo-packet. */
+#define PACKET_RX_RING                 5
+#define PACKET_STATISTICS              6
+#define PACKET_COPY_THRESH             7
+#define PACKET_AUXDATA                 8
+#define PACKET_ORIGDEV                 9
+#define PACKET_VERSION                 10
+#define PACKET_HDRLEN                  11
+#define PACKET_RESERVE                 12
+#define PACKET_TX_RING                 13
+#define PACKET_LOSS                    14
+#define PACKET_VNET_HDR                        15
+#define PACKET_TX_TIMESTAMP            16
+#define PACKET_TIMESTAMP               17
+#define PACKET_FANOUT                  18
+#define PACKET_TX_HAS_OFF              19
+#define PACKET_QDISC_BYPASS            20
+#define PACKET_ROLLOVER_STATS          21
+#define PACKET_FANOUT_DATA             22
+
+#define PACKET_FANOUT_HASH             0
+#define PACKET_FANOUT_LB               1
+#define PACKET_FANOUT_CPU              2
+#define PACKET_FANOUT_ROLLOVER         3
+#define PACKET_FANOUT_RND              4
+#define PACKET_FANOUT_QM               5
+#define PACKET_FANOUT_CBPF             6
+#define PACKET_FANOUT_EBPF             7
+#define PACKET_FANOUT_FLAG_ROLLOVER    0x1000
+#define PACKET_FANOUT_FLAG_UNIQUEID    0x2000
+#define PACKET_FANOUT_FLAG_DEFRAG      0x8000
+
+struct tpacket_stats {
+       unsigned int    tp_packets;
+       unsigned int    tp_drops;
+};
+
+struct tpacket_stats_v3 {
+       unsigned int    tp_packets;
+       unsigned int    tp_drops;
+       unsigned int    tp_freeze_q_cnt;
+};
+
+struct tpacket_rollover_stats {
+       __aligned_u64   tp_all;
+       __aligned_u64   tp_huge;
+       __aligned_u64   tp_failed;
+};
+
+union tpacket_stats_u {
+       struct tpacket_stats stats1;
+       struct tpacket_stats_v3 stats3;
+};
+
+struct tpacket_auxdata {
+       __u32           tp_status;
+       __u32           tp_len;
+       __u32           tp_snaplen;
+       __u16           tp_mac;
+       __u16           tp_net;
+       __u16           tp_vlan_tci;
+       __u16           tp_vlan_tpid;
+};
+
+/* Rx ring - header status */
+#define TP_STATUS_KERNEL                     0
+#define TP_STATUS_USER                 (1 << 0)
+#define TP_STATUS_COPY                 (1 << 1)
+#define TP_STATUS_LOSING               (1 << 2)
+#define TP_STATUS_CSUMNOTREADY         (1 << 3)
+#define TP_STATUS_VLAN_VALID           (1 << 4) /* auxdata has valid tp_vlan_tci */
+#define TP_STATUS_BLK_TMO              (1 << 5)
+#define TP_STATUS_VLAN_TPID_VALID      (1 << 6) /* auxdata has valid tp_vlan_tpid */
+#define TP_STATUS_CSUM_VALID           (1 << 7)
+
+/* Tx ring - header status */
+#define TP_STATUS_AVAILABLE          0
+#define TP_STATUS_SEND_REQUEST (1 << 0)
+#define TP_STATUS_SENDING      (1 << 1)
+#define TP_STATUS_WRONG_FORMAT (1 << 2)
+
+/* Rx and Tx ring - header status */
+#define TP_STATUS_TS_SOFTWARE          (1 << 29)
+#define TP_STATUS_TS_SYS_HARDWARE      (1 << 30) /* deprecated, never set */
+#define TP_STATUS_TS_RAW_HARDWARE      (1 << 31)
+
+/* Rx ring - feature request bits */
+#define TP_FT_REQ_FILL_RXHASH  0x1
+
+struct tpacket_hdr {
+       unsigned long   tp_status;
+       unsigned int    tp_len;
+       unsigned int    tp_snaplen;
+       unsigned short  tp_mac;
+       unsigned short  tp_net;
+       unsigned int    tp_sec;
+       unsigned int    tp_usec;
+};
+
+#define TPACKET_ALIGNMENT      16
+#define TPACKET_ALIGN(x)       (((x)+TPACKET_ALIGNMENT-1)&~(TPACKET_ALIGNMENT-1))
+#define TPACKET_HDRLEN         (TPACKET_ALIGN(sizeof(struct tpacket_hdr)) + sizeof(struct sockaddr_ll))
+
+struct tpacket2_hdr {
+       __u32           tp_status;
+       __u32           tp_len;
+       __u32           tp_snaplen;
+       __u16           tp_mac;
+       __u16           tp_net;
+       __u32           tp_sec;
+       __u32           tp_nsec;
+       __u16           tp_vlan_tci;
+       __u16           tp_vlan_tpid;
+       __u8            tp_padding[4];
+};
+
+struct tpacket_hdr_variant1 {
+       __u32   tp_rxhash;
+       __u32   tp_vlan_tci;
+       __u16   tp_vlan_tpid;
+       __u16   tp_padding;
+};
+
+struct tpacket3_hdr {
+       __u32           tp_next_offset;
+       __u32           tp_sec;
+       __u32           tp_nsec;
+       __u32           tp_snaplen;
+       __u32           tp_len;
+       __u32           tp_status;
+       __u16           tp_mac;
+       __u16           tp_net;
+       /* pkt_hdr variants */
+       union {
+               struct tpacket_hdr_variant1 hv1;
+       };
+       __u8            tp_padding[8];
+};
+
+struct tpacket_bd_ts {
+       unsigned int ts_sec;
+       union {
+               unsigned int ts_usec;
+               unsigned int ts_nsec;
+       };
+};
+
+struct tpacket_hdr_v1 {
+       __u32   block_status;
+       __u32   num_pkts;
+       __u32   offset_to_first_pkt;
+
+       /* Number of valid bytes (including padding)
+        * blk_len <= tp_block_size
+        */
+       __u32   blk_len;
+
+       /*
+        * Quite a few uses of sequence number:
+        * 1. Make sure cache flush etc worked.
+        *    Well, one can argue - why not use the increasing ts below?
+        *    But look at 2. below first.
+        * 2. When you pass around blocks to other user space decoders,
+        *    you can see which blk[s] is[are] outstanding etc.
+        * 3. Validate kernel code.
+        */
+       __aligned_u64   seq_num;
+
+       /*
+        * ts_last_pkt:
+        *
+        * Case 1.      Block has 'N'(N >=1) packets and TMO'd(timed out)
+        *              ts_last_pkt == 'time-stamp of last packet' and NOT the
+        *              time when the timer fired and the block was closed.
+        *              By providing the ts of the last packet we can absolutely
+        *              guarantee that time-stamp wise, the first packet in the
+        *              next block will never precede the last packet of the
+        *              previous block.
+        * Case 2.      Block has zero packets and TMO'd
+        *              ts_last_pkt = time when the timer fired and the block
+        *              was closed.
+        * Case 3.      Block has 'N' packets and NO TMO.
+        *              ts_last_pkt = time-stamp of the last pkt in the block.
+        *
+        * ts_first_pkt:
+        *              Is always the time-stamp when the block was opened.
+        *              Case a) ZERO packets
+        *                      No packets to deal with but atleast you know the
+        *                      time-interval of this block.
+        *              Case b) Non-zero packets
+        *                      Use the ts of the first packet in the block.
+        *
+        */
+       struct tpacket_bd_ts    ts_first_pkt, ts_last_pkt;
+};
+
+union tpacket_bd_header_u {
+       struct tpacket_hdr_v1 bh1;
+};
+
+struct tpacket_block_desc {
+       __u32 version;
+       __u32 offset_to_priv;
+       union tpacket_bd_header_u hdr;
+};
+
+#define TPACKET2_HDRLEN                (TPACKET_ALIGN(sizeof(struct tpacket2_hdr)) + sizeof(struct sockaddr_ll))
+#define TPACKET3_HDRLEN                (TPACKET_ALIGN(sizeof(struct tpacket3_hdr)) + sizeof(struct sockaddr_ll))
+
+enum tpacket_versions {
+       TPACKET_V1,
+       TPACKET_V2,
+       TPACKET_V3
+};
+
+/*
+   Frame structure:
+
+   - Start. Frame must be aligned to TPACKET_ALIGNMENT=16
+   - struct tpacket_hdr
+   - pad to TPACKET_ALIGNMENT=16
+   - struct sockaddr_ll
+   - Gap, chosen so that packet data (Start+tp_net) alignes to TPACKET_ALIGNMENT=16
+   - Start+tp_mac: [ Optional MAC header ]
+   - Start+tp_net: Packet data, aligned to TPACKET_ALIGNMENT=16.
+   - Pad to align to TPACKET_ALIGNMENT=16
+ */
+
+struct tpacket_req {
+       unsigned int    tp_block_size;  /* Minimal size of contiguous block */
+       unsigned int    tp_block_nr;    /* Number of blocks */
+       unsigned int    tp_frame_size;  /* Size of frame */
+       unsigned int    tp_frame_nr;    /* Total number of frames */
+};
+
+struct tpacket_req3 {
+       unsigned int    tp_block_size;  /* Minimal size of contiguous block */
+       unsigned int    tp_block_nr;    /* Number of blocks */
+       unsigned int    tp_frame_size;  /* Size of frame */
+       unsigned int    tp_frame_nr;    /* Total number of frames */
+       unsigned int    tp_retire_blk_tov; /* timeout in msecs */
+       unsigned int    tp_sizeof_priv; /* offset to private data area */
+       unsigned int    tp_feature_req_word;
+};
+
+union tpacket_req_u {
+       struct tpacket_req      req;
+       struct tpacket_req3     req3;
+};
+
+struct packet_mreq {
+       int             mr_ifindex;
+       unsigned short  mr_type;
+       unsigned short  mr_alen;
+       unsigned char   mr_address[8];
+};
+
+#define PACKET_MR_MULTICAST    0
+#define PACKET_MR_PROMISC      1
+#define PACKET_MR_ALLMULTI     2
+#define PACKET_MR_UNICAST      3
+
+#endif
diff --git a/include/uapi/linux/if_tun.h b/include/uapi/linux/if_tun.h
new file mode 100644 (file)
index 0000000..d5ecb42
--- /dev/null
@@ -0,0 +1,107 @@
+/*
+ *  Universal TUN/TAP device driver.
+ *  Copyright (C) 1999-2000 Maxim Krasnyansky <max_mk@yahoo.com>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ *  GNU General Public License for more details.
+ */
+
+#ifndef __IF_TUN_H
+#define __IF_TUN_H
+
+#include <linux/types.h>
+#include <linux/if_ether.h>
+#include <linux/filter.h>
+
+/* Read queue size */
+#define TUN_READQ_SIZE 500
+/* TUN device type flags: deprecated. Use IFF_TUN/IFF_TAP instead. */
+#define TUN_TUN_DEV    IFF_TUN
+#define TUN_TAP_DEV    IFF_TAP
+#define TUN_TYPE_MASK   0x000f
+
+/* Ioctl defines */
+#define TUNSETNOCSUM  _IOW('T', 200, int) 
+#define TUNSETDEBUG   _IOW('T', 201, int) 
+#define TUNSETIFF     _IOW('T', 202, int) 
+#define TUNSETPERSIST _IOW('T', 203, int) 
+#define TUNSETOWNER   _IOW('T', 204, int)
+#define TUNSETLINK    _IOW('T', 205, int)
+#define TUNSETGROUP   _IOW('T', 206, int)
+#define TUNGETFEATURES _IOR('T', 207, unsigned int)
+#define TUNSETOFFLOAD  _IOW('T', 208, unsigned int)
+#define TUNSETTXFILTER _IOW('T', 209, unsigned int)
+#define TUNGETIFF      _IOR('T', 210, unsigned int)
+#define TUNGETSNDBUF   _IOR('T', 211, int)
+#define TUNSETSNDBUF   _IOW('T', 212, int)
+#define TUNATTACHFILTER _IOW('T', 213, struct sock_fprog)
+#define TUNDETACHFILTER _IOW('T', 214, struct sock_fprog)
+#define TUNGETVNETHDRSZ _IOR('T', 215, int)
+#define TUNSETVNETHDRSZ _IOW('T', 216, int)
+#define TUNSETQUEUE  _IOW('T', 217, int)
+#define TUNSETIFINDEX  _IOW('T', 218, unsigned int)
+#define TUNGETFILTER _IOR('T', 219, struct sock_fprog)
+#define TUNSETVNETLE _IOW('T', 220, int)
+#define TUNGETVNETLE _IOR('T', 221, int)
+/* The TUNSETVNETBE and TUNGETVNETBE ioctls are for cross-endian support on
+ * little-endian hosts. Not all kernel configurations support them, but all
+ * configurations that support SET also support GET.
+ */
+#define TUNSETVNETBE _IOW('T', 222, int)
+#define TUNGETVNETBE _IOR('T', 223, int)
+
+/* TUNSETIFF ifr flags */
+#define IFF_TUN                0x0001
+#define IFF_TAP                0x0002
+#define IFF_NO_PI      0x1000
+/* This flag has no real effect */
+#define IFF_ONE_QUEUE  0x2000
+#define IFF_VNET_HDR   0x4000
+#define IFF_TUN_EXCL   0x8000
+#define IFF_MULTI_QUEUE 0x0100
+#define IFF_ATTACH_QUEUE 0x0200
+#define IFF_DETACH_QUEUE 0x0400
+/* read-only flag */
+#define IFF_PERSIST    0x0800
+#define IFF_NOFILTER   0x1000
+
+/* Socket options */
+#define TUN_TX_TIMESTAMP 1
+
+/* Features for GSO (TUNSETOFFLOAD). */
+#define TUN_F_CSUM     0x01    /* You can hand me unchecksummed packets. */
+#define TUN_F_TSO4     0x02    /* I can handle TSO for IPv4 packets */
+#define TUN_F_TSO6     0x04    /* I can handle TSO for IPv6 packets */
+#define TUN_F_TSO_ECN  0x08    /* I can handle TSO with ECN bits. */
+#define TUN_F_UFO      0x10    /* I can handle UFO packets */
+
+/* Protocol info prepended to the packets (when IFF_NO_PI is not set) */
+#define TUN_PKT_STRIP  0x0001
+struct tun_pi {
+       __u16  flags;
+       __be16 proto;
+};
+
+/*
+ * Filter spec (used for SETXXFILTER ioctls)
+ * This stuff is applicable only to the TAP (Ethernet) devices.
+ * If the count is zero the filter is disabled and the driver accepts
+ * all packets (promisc mode).
+ * If the filter is enabled in order to accept broadcast packets
+ * broadcast addr must be explicitly included in the addr list.
+ */
+#define TUN_FLT_ALLMULTI 0x0001 /* Accept all multicast packets */
+struct tun_filter {
+       __u16  flags; /* TUN_FLT_ flags see above */
+       __u16  count; /* Number of addresses */
+       __u8   addr[0][ETH_ALEN];
+};
+
+#endif /* __IF_TUN_H */
diff --git a/include/uapi/linux/if_tunnel.h b/include/uapi/linux/if_tunnel.h
new file mode 100644 (file)
index 0000000..21834ca
--- /dev/null
@@ -0,0 +1,158 @@
+#ifndef _IF_TUNNEL_H_
+#define _IF_TUNNEL_H_
+
+#include <linux/types.h>
+#include <linux/if.h>
+#include <linux/ip.h>
+#include <linux/in6.h>
+#include <asm/byteorder.h>
+
+
+#define SIOCGETTUNNEL   (SIOCDEVPRIVATE + 0)
+#define SIOCADDTUNNEL   (SIOCDEVPRIVATE + 1)
+#define SIOCDELTUNNEL   (SIOCDEVPRIVATE + 2)
+#define SIOCCHGTUNNEL   (SIOCDEVPRIVATE + 3)
+#define SIOCGETPRL      (SIOCDEVPRIVATE + 4)
+#define SIOCADDPRL      (SIOCDEVPRIVATE + 5)
+#define SIOCDELPRL      (SIOCDEVPRIVATE + 6)
+#define SIOCCHGPRL      (SIOCDEVPRIVATE + 7)
+#define SIOCGET6RD      (SIOCDEVPRIVATE + 8)
+#define SIOCADD6RD      (SIOCDEVPRIVATE + 9)
+#define SIOCDEL6RD      (SIOCDEVPRIVATE + 10)
+#define SIOCCHG6RD      (SIOCDEVPRIVATE + 11)
+
+#define GRE_CSUM       __cpu_to_be16(0x8000)
+#define GRE_ROUTING    __cpu_to_be16(0x4000)
+#define GRE_KEY                __cpu_to_be16(0x2000)
+#define GRE_SEQ                __cpu_to_be16(0x1000)
+#define GRE_STRICT     __cpu_to_be16(0x0800)
+#define GRE_REC                __cpu_to_be16(0x0700)
+#define GRE_ACK                __cpu_to_be16(0x0080)
+#define GRE_FLAGS      __cpu_to_be16(0x0078)
+#define GRE_VERSION    __cpu_to_be16(0x0007)
+
+#define GRE_IS_CSUM(f)         ((f) & GRE_CSUM)
+#define GRE_IS_ROUTING(f)      ((f) & GRE_ROUTING)
+#define GRE_IS_KEY(f)          ((f) & GRE_KEY)
+#define GRE_IS_SEQ(f)          ((f) & GRE_SEQ)
+#define GRE_IS_STRICT(f)       ((f) & GRE_STRICT)
+#define GRE_IS_REC(f)          ((f) & GRE_REC)
+#define GRE_IS_ACK(f)          ((f) & GRE_ACK)
+
+#define GRE_VERSION_0          __cpu_to_be16(0x0000)
+#define GRE_VERSION_1          __cpu_to_be16(0x0001)
+#define GRE_PROTO_PPP          __cpu_to_be16(0x880b)
+#define GRE_PPTP_KEY_MASK      __cpu_to_be32(0xffff)
+
+struct ip_tunnel_parm {
+       char                    name[IFNAMSIZ];
+       int                     link;
+       __be16                  i_flags;
+       __be16                  o_flags;
+       __be32                  i_key;
+       __be32                  o_key;
+       struct iphdr            iph;
+};
+
+enum {
+       IFLA_IPTUN_UNSPEC,
+       IFLA_IPTUN_LINK,
+       IFLA_IPTUN_LOCAL,
+       IFLA_IPTUN_REMOTE,
+       IFLA_IPTUN_TTL,
+       IFLA_IPTUN_TOS,
+       IFLA_IPTUN_ENCAP_LIMIT,
+       IFLA_IPTUN_FLOWINFO,
+       IFLA_IPTUN_FLAGS,
+       IFLA_IPTUN_PROTO,
+       IFLA_IPTUN_PMTUDISC,
+       IFLA_IPTUN_6RD_PREFIX,
+       IFLA_IPTUN_6RD_RELAY_PREFIX,
+       IFLA_IPTUN_6RD_PREFIXLEN,
+       IFLA_IPTUN_6RD_RELAY_PREFIXLEN,
+       IFLA_IPTUN_ENCAP_TYPE,
+       IFLA_IPTUN_ENCAP_FLAGS,
+       IFLA_IPTUN_ENCAP_SPORT,
+       IFLA_IPTUN_ENCAP_DPORT,
+       IFLA_IPTUN_COLLECT_METADATA,
+       IFLA_IPTUN_FWMARK,
+       __IFLA_IPTUN_MAX,
+};
+#define IFLA_IPTUN_MAX (__IFLA_IPTUN_MAX - 1)
+
+enum tunnel_encap_types {
+       TUNNEL_ENCAP_NONE,
+       TUNNEL_ENCAP_FOU,
+       TUNNEL_ENCAP_GUE,
+};
+
+#define TUNNEL_ENCAP_FLAG_CSUM         (1<<0)
+#define TUNNEL_ENCAP_FLAG_CSUM6                (1<<1)
+#define TUNNEL_ENCAP_FLAG_REMCSUM      (1<<2)
+
+/* SIT-mode i_flags */
+#define        SIT_ISATAP      0x0001
+
+struct ip_tunnel_prl {
+       __be32                  addr;
+       __u16                   flags;
+       __u16                   __reserved;
+       __u32                   datalen;
+       __u32                   __reserved2;
+       /* data follows */
+};
+
+/* PRL flags */
+#define        PRL_DEFAULT             0x0001
+
+struct ip_tunnel_6rd {
+       struct in6_addr         prefix;
+       __be32                  relay_prefix;
+       __u16                   prefixlen;
+       __u16                   relay_prefixlen;
+};
+
+enum {
+       IFLA_GRE_UNSPEC,
+       IFLA_GRE_LINK,
+       IFLA_GRE_IFLAGS,
+       IFLA_GRE_OFLAGS,
+       IFLA_GRE_IKEY,
+       IFLA_GRE_OKEY,
+       IFLA_GRE_LOCAL,
+       IFLA_GRE_REMOTE,
+       IFLA_GRE_TTL,
+       IFLA_GRE_TOS,
+       IFLA_GRE_PMTUDISC,
+       IFLA_GRE_ENCAP_LIMIT,
+       IFLA_GRE_FLOWINFO,
+       IFLA_GRE_FLAGS,
+       IFLA_GRE_ENCAP_TYPE,
+       IFLA_GRE_ENCAP_FLAGS,
+       IFLA_GRE_ENCAP_SPORT,
+       IFLA_GRE_ENCAP_DPORT,
+       IFLA_GRE_COLLECT_METADATA,
+       IFLA_GRE_IGNORE_DF,
+       IFLA_GRE_FWMARK,
+       IFLA_GRE_ERSPAN_INDEX,
+       __IFLA_GRE_MAX,
+};
+
+#define IFLA_GRE_MAX   (__IFLA_GRE_MAX - 1)
+
+/* VTI-mode i_flags */
+#define VTI_ISVTI ((__be16)0x0001)
+
+enum {
+       IFLA_VTI_UNSPEC,
+       IFLA_VTI_LINK,
+       IFLA_VTI_IKEY,
+       IFLA_VTI_OKEY,
+       IFLA_VTI_LOCAL,
+       IFLA_VTI_REMOTE,
+       IFLA_VTI_FWMARK,
+       __IFLA_VTI_MAX,
+};
+
+#define IFLA_VTI_MAX   (__IFLA_VTI_MAX - 1)
+#endif /* _IF_TUNNEL_H_ */
diff --git a/include/uapi/linux/if_vlan.h b/include/uapi/linux/if_vlan.h
new file mode 100644 (file)
index 0000000..24ae007
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * VLAN                An implementation of 802.1Q VLAN tagging.
+ *
+ * Authors:    Ben Greear <greearb@candelatech.com>
+ *
+ *             This program is free software; you can redistribute it and/or
+ *             modify it under the terms of the GNU General Public License
+ *             as published by the Free Software Foundation; either version
+ *             2 of the License, or (at your option) any later version.
+ *
+ */
+
+#ifndef _LINUX_IF_VLAN_H_
+#define _LINUX_IF_VLAN_H_
+
+
+/* VLAN IOCTLs are found in sockios.h */
+
+/* Passed in vlan_ioctl_args structure to determine behaviour. */
+enum vlan_ioctl_cmds {
+       ADD_VLAN_CMD,
+       DEL_VLAN_CMD,
+       SET_VLAN_INGRESS_PRIORITY_CMD,
+       SET_VLAN_EGRESS_PRIORITY_CMD,
+       GET_VLAN_INGRESS_PRIORITY_CMD,
+       GET_VLAN_EGRESS_PRIORITY_CMD,
+       SET_VLAN_NAME_TYPE_CMD,
+       SET_VLAN_FLAG_CMD,
+       GET_VLAN_REALDEV_NAME_CMD, /* If this works, you know it's a VLAN device, btw */
+       GET_VLAN_VID_CMD /* Get the VID of this VLAN (specified by name) */
+};
+
+enum vlan_flags {
+       VLAN_FLAG_REORDER_HDR   = 0x1,
+       VLAN_FLAG_GVRP          = 0x2,
+       VLAN_FLAG_LOOSE_BINDING = 0x4,
+       VLAN_FLAG_MVRP          = 0x8,
+};
+
+enum vlan_name_types {
+       VLAN_NAME_TYPE_PLUS_VID, /* Name will look like:  vlan0005 */
+       VLAN_NAME_TYPE_RAW_PLUS_VID, /* name will look like:  eth1.0005 */
+       VLAN_NAME_TYPE_PLUS_VID_NO_PAD, /* Name will look like:  vlan5 */
+       VLAN_NAME_TYPE_RAW_PLUS_VID_NO_PAD, /* Name will look like:  eth0.5 */
+       VLAN_NAME_TYPE_HIGHEST
+};
+
+struct vlan_ioctl_args {
+       int cmd; /* Should be one of the vlan_ioctl_cmds enum above. */
+       char device1[24];
+
+        union {
+               char device2[24];
+               int VID;
+               unsigned int skb_priority;
+               unsigned int name_type;
+               unsigned int bind_type;
+               unsigned int flag; /* Matches vlan_dev_priv flags */
+        } u;
+
+       short vlan_qos;   
+};
+
+#endif /* _LINUX_IF_VLAN_H_ */
diff --git a/include/uapi/linux/ife.h b/include/uapi/linux/ife.h
new file mode 100644 (file)
index 0000000..2954da3
--- /dev/null
@@ -0,0 +1,18 @@
+#ifndef __UAPI_IFE_H
+#define __UAPI_IFE_H
+
+#define IFE_METAHDRLEN 2
+
+enum {
+       IFE_META_SKBMARK = 1,
+       IFE_META_HASHID,
+       IFE_META_PRIO,
+       IFE_META_QMAP,
+       IFE_META_TCINDEX,
+       __IFE_META_MAX
+};
+
+/*Can be overridden at runtime by module option*/
+#define IFE_META_MAX (__IFE_META_MAX - 1)
+
+#endif
diff --git a/include/uapi/linux/ila.h b/include/uapi/linux/ila.h
new file mode 100644 (file)
index 0000000..7e328d7
--- /dev/null
@@ -0,0 +1,45 @@
+/* ila.h - ILA Interface */
+
+#ifndef _LINUX_ILA_H
+#define _LINUX_ILA_H
+
+/* NETLINK_GENERIC related info */
+#define ILA_GENL_NAME          "ila"
+#define ILA_GENL_VERSION       0x1
+
+enum {
+       ILA_ATTR_UNSPEC,
+       ILA_ATTR_LOCATOR,                       /* u64 */
+       ILA_ATTR_IDENTIFIER,                    /* u64 */
+       ILA_ATTR_LOCATOR_MATCH,                 /* u64 */
+       ILA_ATTR_IFINDEX,                       /* s32 */
+       ILA_ATTR_DIR,                           /* u32 */
+       ILA_ATTR_PAD,
+       ILA_ATTR_CSUM_MODE,                     /* u8 */
+
+       __ILA_ATTR_MAX,
+};
+
+#define ILA_ATTR_MAX           (__ILA_ATTR_MAX - 1)
+
+enum {
+       ILA_CMD_UNSPEC,
+       ILA_CMD_ADD,
+       ILA_CMD_DEL,
+       ILA_CMD_GET,
+
+       __ILA_CMD_MAX,
+};
+
+#define ILA_CMD_MAX    (__ILA_CMD_MAX - 1)
+
+#define ILA_DIR_IN     (1 << 0)
+#define ILA_DIR_OUT    (1 << 1)
+
+enum {
+       ILA_CSUM_ADJUST_TRANSPORT,
+       ILA_CSUM_NEUTRAL_MAP,
+       ILA_CSUM_NO_ACTION,
+};
+
+#endif /* _LINUX_ILA_H */
diff --git a/include/uapi/linux/in.h b/include/uapi/linux/in.h
new file mode 100644 (file)
index 0000000..9439efa
--- /dev/null
@@ -0,0 +1,300 @@
+/*
+ * INET                An implementation of the TCP/IP protocol suite for the LINUX
+ *             operating system.  INET is implemented using the  BSD Socket
+ *             interface as the means of communication with the user level.
+ *
+ *             Definitions of the Internet Protocol.
+ *
+ * Version:    @(#)in.h        1.0.1   04/21/93
+ *
+ * Authors:    Original taken from the GNU Project <netinet/in.h> file.
+ *             Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
+ *
+ *             This program is free software; you can redistribute it and/or
+ *             modify it under the terms of the GNU General Public License
+ *             as published by the Free Software Foundation; either version
+ *             2 of the License, or (at your option) any later version.
+ */
+#ifndef _LINUX_IN_H
+#define _LINUX_IN_H
+
+#include <linux/types.h>
+#include <linux/libc-compat.h>
+#include <linux/socket.h>
+
+#if __UAPI_DEF_IN_IPPROTO
+/* Standard well-defined IP protocols.  */
+enum {
+  IPPROTO_IP = 0,              /* Dummy protocol for TCP               */
+#define IPPROTO_IP             IPPROTO_IP
+  IPPROTO_ICMP = 1,            /* Internet Control Message Protocol    */
+#define IPPROTO_ICMP           IPPROTO_ICMP
+  IPPROTO_IGMP = 2,            /* Internet Group Management Protocol   */
+#define IPPROTO_IGMP           IPPROTO_IGMP
+  IPPROTO_IPIP = 4,            /* IPIP tunnels (older KA9Q tunnels use 94) */
+#define IPPROTO_IPIP           IPPROTO_IPIP
+  IPPROTO_TCP = 6,             /* Transmission Control Protocol        */
+#define IPPROTO_TCP            IPPROTO_TCP
+  IPPROTO_EGP = 8,             /* Exterior Gateway Protocol            */
+#define IPPROTO_EGP            IPPROTO_EGP
+  IPPROTO_PUP = 12,            /* PUP protocol                         */
+#define IPPROTO_PUP            IPPROTO_PUP
+  IPPROTO_UDP = 17,            /* User Datagram Protocol               */
+#define IPPROTO_UDP            IPPROTO_UDP
+  IPPROTO_IDP = 22,            /* XNS IDP protocol                     */
+#define IPPROTO_IDP            IPPROTO_IDP
+  IPPROTO_TP = 29,             /* SO Transport Protocol Class 4        */
+#define IPPROTO_TP             IPPROTO_TP
+  IPPROTO_DCCP = 33,           /* Datagram Congestion Control Protocol */
+#define IPPROTO_DCCP           IPPROTO_DCCP
+  IPPROTO_IPV6 = 41,           /* IPv6-in-IPv4 tunnelling              */
+#define IPPROTO_IPV6           IPPROTO_IPV6
+  IPPROTO_RSVP = 46,           /* RSVP Protocol                        */
+#define IPPROTO_RSVP           IPPROTO_RSVP
+  IPPROTO_GRE = 47,            /* Cisco GRE tunnels (rfc 1701,1702)    */
+#define IPPROTO_GRE            IPPROTO_GRE
+  IPPROTO_ESP = 50,            /* Encapsulation Security Payload protocol */
+#define IPPROTO_ESP            IPPROTO_ESP
+  IPPROTO_AH = 51,             /* Authentication Header protocol       */
+#define IPPROTO_AH             IPPROTO_AH
+  IPPROTO_MTP = 92,            /* Multicast Transport Protocol         */
+#define IPPROTO_MTP            IPPROTO_MTP
+  IPPROTO_BEETPH = 94,         /* IP option pseudo header for BEET     */
+#define IPPROTO_BEETPH         IPPROTO_BEETPH
+  IPPROTO_ENCAP = 98,          /* Encapsulation Header                 */
+#define IPPROTO_ENCAP          IPPROTO_ENCAP
+  IPPROTO_PIM = 103,           /* Protocol Independent Multicast       */
+#define IPPROTO_PIM            IPPROTO_PIM
+  IPPROTO_COMP = 108,          /* Compression Header Protocol          */
+#define IPPROTO_COMP           IPPROTO_COMP
+  IPPROTO_SCTP = 132,          /* Stream Control Transport Protocol    */
+#define IPPROTO_SCTP           IPPROTO_SCTP
+  IPPROTO_UDPLITE = 136,       /* UDP-Lite (RFC 3828)                  */
+#define IPPROTO_UDPLITE                IPPROTO_UDPLITE
+  IPPROTO_MPLS = 137,          /* MPLS in IP (RFC 4023)                */
+#define IPPROTO_MPLS           IPPROTO_MPLS
+  IPPROTO_RAW = 255,           /* Raw IP packets                       */
+#define IPPROTO_RAW            IPPROTO_RAW
+  IPPROTO_MAX
+};
+#endif
+
+#if __UAPI_DEF_IN_ADDR
+/* Internet address. */
+struct in_addr {
+       __be32  s_addr;
+};
+#endif
+
+#define IP_TOS         1
+#define IP_TTL         2
+#define IP_HDRINCL     3
+#define IP_OPTIONS     4
+#define IP_ROUTER_ALERT        5
+#define IP_RECVOPTS    6
+#define IP_RETOPTS     7
+#define IP_PKTINFO     8
+#define IP_PKTOPTIONS  9
+#define IP_MTU_DISCOVER        10
+#define IP_RECVERR     11
+#define IP_RECVTTL     12
+#define        IP_RECVTOS      13
+#define IP_MTU         14
+#define IP_FREEBIND    15
+#define IP_IPSEC_POLICY        16
+#define IP_XFRM_POLICY 17
+#define IP_PASSSEC     18
+#define IP_TRANSPARENT 19
+
+/* BSD compatibility */
+#define IP_RECVRETOPTS IP_RETOPTS
+
+/* TProxy original addresses */
+#define IP_ORIGDSTADDR       20
+#define IP_RECVORIGDSTADDR   IP_ORIGDSTADDR
+
+#define IP_MINTTL       21
+#define IP_NODEFRAG     22
+#define IP_CHECKSUM    23
+#define IP_BIND_ADDRESS_NO_PORT        24
+#define IP_RECVFRAGSIZE        25
+
+/* IP_MTU_DISCOVER values */
+#define IP_PMTUDISC_DONT               0       /* Never send DF frames */
+#define IP_PMTUDISC_WANT               1       /* Use per route hints  */
+#define IP_PMTUDISC_DO                 2       /* Always DF            */
+#define IP_PMTUDISC_PROBE              3       /* Ignore dst pmtu      */
+/* Always use interface mtu (ignores dst pmtu) but don't set DF flag.
+ * Also incoming ICMP frag_needed notifications will be ignored on
+ * this socket to prevent accepting spoofed ones.
+ */
+#define IP_PMTUDISC_INTERFACE          4
+/* weaker version of IP_PMTUDISC_INTERFACE, which allos packets to get
+ * fragmented if they exeed the interface mtu
+ */
+#define IP_PMTUDISC_OMIT               5
+
+#define IP_MULTICAST_IF                        32
+#define IP_MULTICAST_TTL               33
+#define IP_MULTICAST_LOOP              34
+#define IP_ADD_MEMBERSHIP              35
+#define IP_DROP_MEMBERSHIP             36
+#define IP_UNBLOCK_SOURCE              37
+#define IP_BLOCK_SOURCE                        38
+#define IP_ADD_SOURCE_MEMBERSHIP       39
+#define IP_DROP_SOURCE_MEMBERSHIP      40
+#define IP_MSFILTER                    41
+#define MCAST_JOIN_GROUP               42
+#define MCAST_BLOCK_SOURCE             43
+#define MCAST_UNBLOCK_SOURCE           44
+#define MCAST_LEAVE_GROUP              45
+#define MCAST_JOIN_SOURCE_GROUP                46
+#define MCAST_LEAVE_SOURCE_GROUP       47
+#define MCAST_MSFILTER                 48
+#define IP_MULTICAST_ALL               49
+#define IP_UNICAST_IF                  50
+
+#define MCAST_EXCLUDE  0
+#define MCAST_INCLUDE  1
+
+/* These need to appear somewhere around here */
+#define IP_DEFAULT_MULTICAST_TTL        1
+#define IP_DEFAULT_MULTICAST_LOOP       1
+
+/* Request struct for multicast socket ops */
+
+#if __UAPI_DEF_IP_MREQ
+struct ip_mreq  {
+       struct in_addr imr_multiaddr;   /* IP multicast address of group */
+       struct in_addr imr_interface;   /* local IP address of interface */
+};
+
+struct ip_mreqn {
+       struct in_addr  imr_multiaddr;          /* IP multicast address of group */
+       struct in_addr  imr_address;            /* local IP address of interface */
+       int             imr_ifindex;            /* Interface index */
+};
+
+struct ip_mreq_source {
+       __be32          imr_multiaddr;
+       __be32          imr_interface;
+       __be32          imr_sourceaddr;
+};
+
+struct ip_msfilter {
+       __be32          imsf_multiaddr;
+       __be32          imsf_interface;
+       __u32           imsf_fmode;
+       __u32           imsf_numsrc;
+       __be32          imsf_slist[1];
+};
+
+#define IP_MSFILTER_SIZE(numsrc) \
+       (sizeof(struct ip_msfilter) - sizeof(__u32) \
+       + (numsrc) * sizeof(__u32))
+
+struct group_req {
+       __u32                            gr_interface;  /* interface index */
+       struct __kernel_sockaddr_storage gr_group;      /* group address */
+};
+
+struct group_source_req {
+       __u32                            gsr_interface; /* interface index */
+       struct __kernel_sockaddr_storage gsr_group;     /* group address */
+       struct __kernel_sockaddr_storage gsr_source;    /* source address */
+};
+
+struct group_filter {
+       __u32                            gf_interface;  /* interface index */
+       struct __kernel_sockaddr_storage gf_group;      /* multicast address */
+       __u32                            gf_fmode;      /* filter mode */
+       __u32                            gf_numsrc;     /* number of sources */
+       struct __kernel_sockaddr_storage gf_slist[1];   /* interface index */
+};
+
+#define GROUP_FILTER_SIZE(numsrc) \
+       (sizeof(struct group_filter) - sizeof(struct __kernel_sockaddr_storage) \
+       + (numsrc) * sizeof(struct __kernel_sockaddr_storage))
+#endif
+
+#if __UAPI_DEF_IN_PKTINFO
+struct in_pktinfo {
+       int             ipi_ifindex;
+       struct in_addr  ipi_spec_dst;
+       struct in_addr  ipi_addr;
+};
+#endif
+
+/* Structure describing an Internet (IP) socket address. */
+#if  __UAPI_DEF_SOCKADDR_IN
+#define __SOCK_SIZE__  16              /* sizeof(struct sockaddr)      */
+struct sockaddr_in {
+  __kernel_sa_family_t sin_family;     /* Address family               */
+  __be16               sin_port;       /* Port number                  */
+  struct in_addr       sin_addr;       /* Internet address             */
+
+  /* Pad to size of `struct sockaddr'. */
+  unsigned char                __pad[__SOCK_SIZE__ - sizeof(short int) -
+                       sizeof(unsigned short int) - sizeof(struct in_addr)];
+};
+#define sin_zero       __pad           /* for BSD UNIX comp. -FvK      */
+#endif
+
+#if __UAPI_DEF_IN_CLASS
+/*
+ * Definitions of the bits in an Internet address integer.
+ * On subnets, host and network parts are found according
+ * to the subnet mask, not these masks.
+ */
+#define        IN_CLASSA(a)            ((((long int) (a)) & 0x80000000) == 0)
+#define        IN_CLASSA_NET           0xff000000
+#define        IN_CLASSA_NSHIFT        24
+#define        IN_CLASSA_HOST          (0xffffffff & ~IN_CLASSA_NET)
+#define        IN_CLASSA_MAX           128
+
+#define        IN_CLASSB(a)            ((((long int) (a)) & 0xc0000000) == 0x80000000)
+#define        IN_CLASSB_NET           0xffff0000
+#define        IN_CLASSB_NSHIFT        16
+#define        IN_CLASSB_HOST          (0xffffffff & ~IN_CLASSB_NET)
+#define        IN_CLASSB_MAX           65536
+
+#define        IN_CLASSC(a)            ((((long int) (a)) & 0xe0000000) == 0xc0000000)
+#define        IN_CLASSC_NET           0xffffff00
+#define        IN_CLASSC_NSHIFT        8
+#define        IN_CLASSC_HOST          (0xffffffff & ~IN_CLASSC_NET)
+
+#define        IN_CLASSD(a)            ((((long int) (a)) & 0xf0000000) == 0xe0000000)
+#define        IN_MULTICAST(a)         IN_CLASSD(a)
+#define IN_MULTICAST_NET       0xF0000000
+
+#define        IN_EXPERIMENTAL(a)      ((((long int) (a)) & 0xf0000000) == 0xf0000000)
+#define        IN_BADCLASS(a)          IN_EXPERIMENTAL((a))
+
+/* Address to accept any incoming messages. */
+#define        INADDR_ANY              ((unsigned long int) 0x00000000)
+
+/* Address to send to all hosts. */
+#define        INADDR_BROADCAST        ((unsigned long int) 0xffffffff)
+
+/* Address indicating an error return. */
+#define        INADDR_NONE             ((unsigned long int) 0xffffffff)
+
+/* Network number for local host loopback. */
+#define        IN_LOOPBACKNET          127
+
+/* Address to loopback in software to local host.  */
+#define        INADDR_LOOPBACK         0x7f000001      /* 127.0.0.1   */
+#define        IN_LOOPBACK(a)          ((((long int) (a)) & 0xff000000) == 0x7f000000)
+
+/* Defines for Multicast INADDR */
+#define INADDR_UNSPEC_GROUP    0xe0000000U     /* 224.0.0.0   */
+#define INADDR_ALLHOSTS_GROUP  0xe0000001U     /* 224.0.0.1   */
+#define INADDR_ALLRTRS_GROUP    0xe0000002U    /* 224.0.0.2 */
+#define INADDR_MAX_LOCAL_GROUP  0xe00000ffU    /* 224.0.0.255 */
+#endif
+
+/* <asm/byteorder.h> contains the htonl type stuff.. */
+#include <asm/byteorder.h> 
+
+
+#endif /* _LINUX_IN_H */
diff --git a/include/uapi/linux/in6.h b/include/uapi/linux/in6.h
new file mode 100644 (file)
index 0000000..6f3bdee
--- /dev/null
@@ -0,0 +1,296 @@
+/*
+ *     Types and definitions for AF_INET6 
+ *     Linux INET6 implementation 
+ *
+ *     Authors:
+ *     Pedro Roque             <roque@di.fc.ul.pt>     
+ *
+ *     Sources:
+ *     IPv6 Program Interfaces for BSD Systems
+ *      <draft-ietf-ipngwg-bsd-api-05.txt>
+ *
+ *     Advanced Sockets API for IPv6
+ *     <draft-stevens-advanced-api-00.txt>
+ *
+ *     This program is free software; you can redistribute it and/or
+ *      modify it under the terms of the GNU General Public License
+ *      as published by the Free Software Foundation; either version
+ *      2 of the License, or (at your option) any later version.
+ */
+
+#ifndef _LINUX_IN6_H
+#define _LINUX_IN6_H
+
+#include <linux/types.h>
+#include <linux/libc-compat.h>
+
+/*
+ *     IPv6 address structure
+ */
+
+#if __UAPI_DEF_IN6_ADDR
+struct in6_addr {
+       union {
+               __u8            u6_addr8[16];
+#if __UAPI_DEF_IN6_ADDR_ALT
+               __be16          u6_addr16[8];
+               __be32          u6_addr32[4];
+#endif
+       } in6_u;
+#define s6_addr                        in6_u.u6_addr8
+#if __UAPI_DEF_IN6_ADDR_ALT
+#define s6_addr16              in6_u.u6_addr16
+#define s6_addr32              in6_u.u6_addr32
+#endif
+};
+#endif /* __UAPI_DEF_IN6_ADDR */
+
+#if __UAPI_DEF_SOCKADDR_IN6
+struct sockaddr_in6 {
+       unsigned short int      sin6_family;    /* AF_INET6 */
+       __be16                  sin6_port;      /* Transport layer port # */
+       __be32                  sin6_flowinfo;  /* IPv6 flow information */
+       struct in6_addr         sin6_addr;      /* IPv6 address */
+       __u32                   sin6_scope_id;  /* scope id (new in RFC2553) */
+};
+#endif /* __UAPI_DEF_SOCKADDR_IN6 */
+
+#if __UAPI_DEF_IPV6_MREQ
+struct ipv6_mreq {
+       /* IPv6 multicast address of group */
+       struct in6_addr ipv6mr_multiaddr;
+
+       /* local IPv6 address of interface */
+       int             ipv6mr_ifindex;
+};
+#endif /* __UAPI_DEF_IVP6_MREQ */
+
+#define ipv6mr_acaddr  ipv6mr_multiaddr
+
+struct in6_flowlabel_req {
+       struct in6_addr flr_dst;
+       __be32  flr_label;
+       __u8    flr_action;
+       __u8    flr_share;
+       __u16   flr_flags;
+       __u16   flr_expires;
+       __u16   flr_linger;
+       __u32   __flr_pad;
+       /* Options in format of IPV6_PKTOPTIONS */
+};
+
+#define IPV6_FL_A_GET  0
+#define IPV6_FL_A_PUT  1
+#define IPV6_FL_A_RENEW        2
+
+#define IPV6_FL_F_CREATE       1
+#define IPV6_FL_F_EXCL         2
+#define IPV6_FL_F_REFLECT      4
+#define IPV6_FL_F_REMOTE       8
+
+#define IPV6_FL_S_NONE         0
+#define IPV6_FL_S_EXCL         1
+#define IPV6_FL_S_PROCESS      2
+#define IPV6_FL_S_USER         3
+#define IPV6_FL_S_ANY          255
+
+
+/*
+ *     Bitmask constant declarations to help applications select out the 
+ *     flow label and priority fields.
+ *
+ *     Note that this are in host byte order while the flowinfo field of
+ *     sockaddr_in6 is in network byte order.
+ */
+
+#define IPV6_FLOWINFO_FLOWLABEL                0x000fffff
+#define IPV6_FLOWINFO_PRIORITY         0x0ff00000
+
+/* These definitions are obsolete */
+#define IPV6_PRIORITY_UNCHARACTERIZED  0x0000
+#define IPV6_PRIORITY_FILLER           0x0100
+#define IPV6_PRIORITY_UNATTENDED       0x0200
+#define IPV6_PRIORITY_RESERVED1                0x0300
+#define IPV6_PRIORITY_BULK             0x0400
+#define IPV6_PRIORITY_RESERVED2                0x0500
+#define IPV6_PRIORITY_INTERACTIVE      0x0600
+#define IPV6_PRIORITY_CONTROL          0x0700
+#define IPV6_PRIORITY_8                        0x0800
+#define IPV6_PRIORITY_9                        0x0900
+#define IPV6_PRIORITY_10               0x0a00
+#define IPV6_PRIORITY_11               0x0b00
+#define IPV6_PRIORITY_12               0x0c00
+#define IPV6_PRIORITY_13               0x0d00
+#define IPV6_PRIORITY_14               0x0e00
+#define IPV6_PRIORITY_15               0x0f00
+
+/*
+ *     IPV6 extension headers
+ */
+#if __UAPI_DEF_IPPROTO_V6
+#define IPPROTO_HOPOPTS                0       /* IPv6 hop-by-hop options      */
+#define IPPROTO_ROUTING                43      /* IPv6 routing header          */
+#define IPPROTO_FRAGMENT       44      /* IPv6 fragmentation header    */
+#define IPPROTO_ICMPV6         58      /* ICMPv6                       */
+#define IPPROTO_NONE           59      /* IPv6 no next header          */
+#define IPPROTO_DSTOPTS                60      /* IPv6 destination options     */
+#define IPPROTO_MH             135     /* IPv6 mobility header         */
+#endif /* __UAPI_DEF_IPPROTO_V6 */
+
+/*
+ *     IPv6 TLV options.
+ */
+#define IPV6_TLV_PAD1          0
+#define IPV6_TLV_PADN          1
+#define IPV6_TLV_ROUTERALERT   5
+#define IPV6_TLV_CALIPSO       7       /* RFC 5570 */
+#define IPV6_TLV_JUMBO         194
+#define IPV6_TLV_HAO           201     /* home address option */
+
+/*
+ *     IPV6 socket options
+ */
+#if __UAPI_DEF_IPV6_OPTIONS
+#define IPV6_ADDRFORM          1
+#define IPV6_2292PKTINFO       2
+#define IPV6_2292HOPOPTS       3
+#define IPV6_2292DSTOPTS       4
+#define IPV6_2292RTHDR         5
+#define IPV6_2292PKTOPTIONS    6
+#define IPV6_CHECKSUM          7
+#define IPV6_2292HOPLIMIT      8
+#define IPV6_NEXTHOP           9
+#define IPV6_AUTHHDR           10      /* obsolete */
+#define IPV6_FLOWINFO          11
+
+#define IPV6_UNICAST_HOPS      16
+#define IPV6_MULTICAST_IF      17
+#define IPV6_MULTICAST_HOPS    18
+#define IPV6_MULTICAST_LOOP    19
+#define IPV6_ADD_MEMBERSHIP    20
+#define IPV6_DROP_MEMBERSHIP   21
+#define IPV6_ROUTER_ALERT      22
+#define IPV6_MTU_DISCOVER      23
+#define IPV6_MTU               24
+#define IPV6_RECVERR           25
+#define IPV6_V6ONLY            26
+#define IPV6_JOIN_ANYCAST      27
+#define IPV6_LEAVE_ANYCAST     28
+
+/* IPV6_MTU_DISCOVER values */
+#define IPV6_PMTUDISC_DONT             0
+#define IPV6_PMTUDISC_WANT             1
+#define IPV6_PMTUDISC_DO               2
+#define IPV6_PMTUDISC_PROBE            3
+/* same as IPV6_PMTUDISC_PROBE, provided for symetry with IPv4
+ * also see comments on IP_PMTUDISC_INTERFACE
+ */
+#define IPV6_PMTUDISC_INTERFACE                4
+/* weaker version of IPV6_PMTUDISC_INTERFACE, which allows packets to
+ * get fragmented if they exceed the interface mtu
+ */
+#define IPV6_PMTUDISC_OMIT             5
+
+/* Flowlabel */
+#define IPV6_FLOWLABEL_MGR     32
+#define IPV6_FLOWINFO_SEND     33
+
+#define IPV6_IPSEC_POLICY      34
+#define IPV6_XFRM_POLICY       35
+#define IPV6_HDRINCL           36
+#endif
+
+/*
+ * Multicast:
+ * Following socket options are shared between IPv4 and IPv6.
+ *
+ * MCAST_JOIN_GROUP            42
+ * MCAST_BLOCK_SOURCE          43
+ * MCAST_UNBLOCK_SOURCE                44
+ * MCAST_LEAVE_GROUP           45
+ * MCAST_JOIN_SOURCE_GROUP     46
+ * MCAST_LEAVE_SOURCE_GROUP    47
+ * MCAST_MSFILTER              48
+ */
+
+/*
+ * Advanced API (RFC3542) (1)
+ *
+ * Note: IPV6_RECVRTHDRDSTOPTS does not exist. see net/ipv6/datagram.c.
+ */
+
+#define IPV6_RECVPKTINFO       49
+#define IPV6_PKTINFO           50
+#define IPV6_RECVHOPLIMIT      51
+#define IPV6_HOPLIMIT          52
+#define IPV6_RECVHOPOPTS       53
+#define IPV6_HOPOPTS           54
+#define IPV6_RTHDRDSTOPTS      55
+#define IPV6_RECVRTHDR         56
+#define IPV6_RTHDR             57
+#define IPV6_RECVDSTOPTS       58
+#define IPV6_DSTOPTS           59
+#define IPV6_RECVPATHMTU       60
+#define IPV6_PATHMTU           61
+#define IPV6_DONTFRAG          62
+#if 0  /* not yet */
+#define IPV6_USE_MIN_MTU       63
+#endif
+
+/*
+ * Netfilter (1)
+ *
+ * Following socket options are used in ip6_tables;
+ * see include/linux/netfilter_ipv6/ip6_tables.h.
+ *
+ * IP6T_SO_SET_REPLACE / IP6T_SO_GET_INFO              64
+ * IP6T_SO_SET_ADD_COUNTERS / IP6T_SO_GET_ENTRIES      65
+ */
+
+/*
+ * Advanced API (RFC3542) (2)
+ */
+#define IPV6_RECVTCLASS                66
+#define IPV6_TCLASS            67
+
+/*
+ * Netfilter (2)
+ *
+ * Following socket options are used in ip6_tables;
+ * see include/linux/netfilter_ipv6/ip6_tables.h.
+ *
+ * IP6T_SO_GET_REVISION_MATCH  68
+ * IP6T_SO_GET_REVISION_TARGET 69
+ * IP6T_SO_ORIGINAL_DST                80
+ */
+
+#define IPV6_AUTOFLOWLABEL     70
+/* RFC5014: Source address selection */
+#define IPV6_ADDR_PREFERENCES  72
+
+#define IPV6_PREFER_SRC_TMP            0x0001
+#define IPV6_PREFER_SRC_PUBLIC         0x0002
+#define IPV6_PREFER_SRC_PUBTMP_DEFAULT 0x0100
+#define IPV6_PREFER_SRC_COA            0x0004
+#define IPV6_PREFER_SRC_HOME           0x0400
+#define IPV6_PREFER_SRC_CGA            0x0008
+#define IPV6_PREFER_SRC_NONCGA         0x0800
+
+/* RFC5082: Generalized Ttl Security Mechanism */
+#define IPV6_MINHOPCOUNT               73
+
+#define IPV6_ORIGDSTADDR        74
+#define IPV6_RECVORIGDSTADDR    IPV6_ORIGDSTADDR
+#define IPV6_TRANSPARENT        75
+#define IPV6_UNICAST_IF         76
+#define IPV6_RECVFRAGSIZE      77
+
+/*
+ * Multicast Routing:
+ * see include/uapi/linux/mroute6.h.
+ *
+ * MRT6_BASE                   200
+ * ...
+ * MRT6_MAX
+ */
+#endif /* _LINUX_IN6_H */
diff --git a/include/uapi/linux/in_route.h b/include/uapi/linux/in_route.h
new file mode 100644 (file)
index 0000000..b261b8c
--- /dev/null
@@ -0,0 +1,32 @@
+#ifndef _LINUX_IN_ROUTE_H
+#define _LINUX_IN_ROUTE_H
+
+/* IPv4 routing cache flags */
+
+#define RTCF_DEAD      RTNH_F_DEAD
+#define RTCF_ONLINK    RTNH_F_ONLINK
+
+/* Obsolete flag. About to be deleted */
+#define RTCF_NOPMTUDISC RTM_F_NOPMTUDISC
+
+#define RTCF_NOTIFY    0x00010000
+#define RTCF_DIRECTDST 0x00020000 /* unused */
+#define RTCF_REDIRECTED        0x00040000
+#define RTCF_TPROXY    0x00080000 /* unused */
+
+#define RTCF_FAST      0x00200000 /* unused */
+#define RTCF_MASQ      0x00400000 /* unused */
+#define RTCF_SNAT      0x00800000 /* unused */
+#define RTCF_DOREDIRECT 0x01000000
+#define RTCF_DIRECTSRC 0x04000000
+#define RTCF_DNAT      0x08000000
+#define RTCF_BROADCAST 0x10000000
+#define RTCF_MULTICAST 0x20000000
+#define RTCF_REJECT    0x40000000 /* unused */
+#define RTCF_LOCAL     0x80000000
+
+#define RTCF_NAT       (RTCF_DNAT|RTCF_SNAT)
+
+#define RT_TOS(tos)    ((tos)&IPTOS_TOS_MASK)
+
+#endif /* _LINUX_IN_ROUTE_H */
diff --git a/include/uapi/linux/inet_diag.h b/include/uapi/linux/inet_diag.h
new file mode 100644 (file)
index 0000000..bada4d7
--- /dev/null
@@ -0,0 +1,196 @@
+#ifndef _INET_DIAG_H_
+#define _INET_DIAG_H_
+
+#include <linux/types.h>
+
+/* Just some random number */
+#define TCPDIAG_GETSOCK 18
+#define DCCPDIAG_GETSOCK 19
+
+#define INET_DIAG_GETSOCK_MAX 24
+
+/* Socket identity */
+struct inet_diag_sockid {
+       __be16  idiag_sport;
+       __be16  idiag_dport;
+       __be32  idiag_src[4];
+       __be32  idiag_dst[4];
+       __u32   idiag_if;
+       __u32   idiag_cookie[2];
+#define INET_DIAG_NOCOOKIE (~0U)
+};
+
+/* Request structure */
+
+struct inet_diag_req {
+       __u8    idiag_family;           /* Family of addresses. */
+       __u8    idiag_src_len;
+       __u8    idiag_dst_len;
+       __u8    idiag_ext;              /* Query extended information */
+
+       struct inet_diag_sockid id;
+
+       __u32   idiag_states;           /* States to dump */
+       __u32   idiag_dbs;              /* Tables to dump (NI) */
+};
+
+struct inet_diag_req_v2 {
+       __u8    sdiag_family;
+       __u8    sdiag_protocol;
+       __u8    idiag_ext;
+       __u8    pad;
+       __u32   idiag_states;
+       struct inet_diag_sockid id;
+};
+
+/*
+ * SOCK_RAW sockets require the underlied protocol to be
+ * additionally specified so we can use @pad member for
+ * this, but we can't rename it because userspace programs
+ * still may depend on this name. Instead lets use another
+ * structure definition as an alias for struct
+ * @inet_diag_req_v2.
+ */
+struct inet_diag_req_raw {
+       __u8    sdiag_family;
+       __u8    sdiag_protocol;
+       __u8    idiag_ext;
+       __u8    sdiag_raw_protocol;
+       __u32   idiag_states;
+       struct inet_diag_sockid id;
+};
+
+enum {
+       INET_DIAG_REQ_NONE,
+       INET_DIAG_REQ_BYTECODE,
+};
+
+#define INET_DIAG_REQ_MAX INET_DIAG_REQ_BYTECODE
+
+/* Bytecode is sequence of 4 byte commands followed by variable arguments.
+ * All the commands identified by "code" are conditional jumps forward:
+ * to offset cc+"yes" or to offset cc+"no". "yes" is supposed to be
+ * length of the command and its arguments.
+ */
+struct inet_diag_bc_op {
+       unsigned char   code;
+       unsigned char   yes;
+       unsigned short  no;
+};
+
+enum {
+       INET_DIAG_BC_NOP,
+       INET_DIAG_BC_JMP,
+       INET_DIAG_BC_S_GE,
+       INET_DIAG_BC_S_LE,
+       INET_DIAG_BC_D_GE,
+       INET_DIAG_BC_D_LE,
+       INET_DIAG_BC_AUTO,
+       INET_DIAG_BC_S_COND,
+       INET_DIAG_BC_D_COND,
+       INET_DIAG_BC_DEV_COND,   /* u32 ifindex */
+       INET_DIAG_BC_MARK_COND,
+};
+
+struct inet_diag_hostcond {
+       __u8    family;
+       __u8    prefix_len;
+       int     port;
+       __be32  addr[0];
+};
+
+struct inet_diag_markcond {
+       __u32 mark;
+       __u32 mask;
+};
+
+/* Base info structure. It contains socket identity (addrs/ports/cookie)
+ * and, alas, the information shown by netstat. */
+struct inet_diag_msg {
+       __u8    idiag_family;
+       __u8    idiag_state;
+       __u8    idiag_timer;
+       __u8    idiag_retrans;
+
+       struct inet_diag_sockid id;
+
+       __u32   idiag_expires;
+       __u32   idiag_rqueue;
+       __u32   idiag_wqueue;
+       __u32   idiag_uid;
+       __u32   idiag_inode;
+};
+
+/* Extensions */
+
+enum {
+       INET_DIAG_NONE,
+       INET_DIAG_MEMINFO,
+       INET_DIAG_INFO,
+       INET_DIAG_VEGASINFO,
+       INET_DIAG_CONG,
+       INET_DIAG_TOS,
+       INET_DIAG_TCLASS,
+       INET_DIAG_SKMEMINFO,
+       INET_DIAG_SHUTDOWN,
+       INET_DIAG_DCTCPINFO,
+       INET_DIAG_PROTOCOL,  /* response attribute only */
+       INET_DIAG_SKV6ONLY,
+       INET_DIAG_LOCALS,
+       INET_DIAG_PEERS,
+       INET_DIAG_PAD,
+       INET_DIAG_MARK,
+       INET_DIAG_BBRINFO,
+       INET_DIAG_CLASS_ID,
+       INET_DIAG_MD5SIG,
+       __INET_DIAG_MAX,
+};
+
+#define INET_DIAG_MAX (__INET_DIAG_MAX - 1)
+
+/* INET_DIAG_MEM */
+
+struct inet_diag_meminfo {
+       __u32   idiag_rmem;
+       __u32   idiag_wmem;
+       __u32   idiag_fmem;
+       __u32   idiag_tmem;
+};
+
+/* INET_DIAG_VEGASINFO */
+
+struct tcpvegas_info {
+       __u32   tcpv_enabled;
+       __u32   tcpv_rttcnt;
+       __u32   tcpv_rtt;
+       __u32   tcpv_minrtt;
+};
+
+/* INET_DIAG_DCTCPINFO */
+
+struct tcp_dctcp_info {
+       __u16   dctcp_enabled;
+       __u16   dctcp_ce_state;
+       __u32   dctcp_alpha;
+       __u32   dctcp_ab_ecn;
+       __u32   dctcp_ab_tot;
+};
+
+/* INET_DIAG_BBRINFO */
+
+struct tcp_bbr_info {
+       /* u64 bw: max-filtered BW (app throughput) estimate in Byte per sec: */
+       __u32   bbr_bw_lo;              /* lower 32 bits of bw */
+       __u32   bbr_bw_hi;              /* upper 32 bits of bw */
+       __u32   bbr_min_rtt;            /* min-filtered RTT in uSec */
+       __u32   bbr_pacing_gain;        /* pacing gain shifted left 8 bits */
+       __u32   bbr_cwnd_gain;          /* cwnd gain shifted left 8 bits */
+};
+
+union tcp_cc_info {
+       struct tcpvegas_info    vegas;
+       struct tcp_dctcp_info   dctcp;
+       struct tcp_bbr_info     bbr;
+};
+#endif /* _INET_DIAG_H_ */
diff --git a/include/uapi/linux/ip.h b/include/uapi/linux/ip.h
new file mode 100644 (file)
index 0000000..1907284
--- /dev/null
@@ -0,0 +1,175 @@
+/*
+ * INET                An implementation of the TCP/IP protocol suite for the LINUX
+ *             operating system.  INET is implemented using the  BSD Socket
+ *             interface as the means of communication with the user level.
+ *
+ *             Definitions for the IP protocol.
+ *
+ * Version:    @(#)ip.h        1.0.2   04/28/93
+ *
+ * Authors:    Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
+ *
+ *             This program is free software; you can redistribute it and/or
+ *             modify it under the terms of the GNU General Public License
+ *             as published by the Free Software Foundation; either version
+ *             2 of the License, or (at your option) any later version.
+ */
+#ifndef _LINUX_IP_H
+#define _LINUX_IP_H
+#include <linux/types.h>
+#include <asm/byteorder.h>
+
+#define IPTOS_TOS_MASK         0x1E
+#define IPTOS_TOS(tos)         ((tos)&IPTOS_TOS_MASK)
+#define        IPTOS_LOWDELAY          0x10
+#define        IPTOS_THROUGHPUT        0x08
+#define        IPTOS_RELIABILITY       0x04
+#define        IPTOS_MINCOST           0x02
+
+#define IPTOS_PREC_MASK                0xE0
+#define IPTOS_PREC(tos)                ((tos)&IPTOS_PREC_MASK)
+#define IPTOS_PREC_NETCONTROL           0xe0
+#define IPTOS_PREC_INTERNETCONTROL      0xc0
+#define IPTOS_PREC_CRITIC_ECP           0xa0
+#define IPTOS_PREC_FLASHOVERRIDE        0x80
+#define IPTOS_PREC_FLASH                0x60
+#define IPTOS_PREC_IMMEDIATE            0x40
+#define IPTOS_PREC_PRIORITY             0x20
+#define IPTOS_PREC_ROUTINE              0x00
+
+
+/* IP options */
+#define IPOPT_COPY             0x80
+#define IPOPT_CLASS_MASK       0x60
+#define IPOPT_NUMBER_MASK      0x1f
+
+#define        IPOPT_COPIED(o)         ((o)&IPOPT_COPY)
+#define        IPOPT_CLASS(o)          ((o)&IPOPT_CLASS_MASK)
+#define        IPOPT_NUMBER(o)         ((o)&IPOPT_NUMBER_MASK)
+
+#define        IPOPT_CONTROL           0x00
+#define        IPOPT_RESERVED1         0x20
+#define        IPOPT_MEASUREMENT       0x40
+#define        IPOPT_RESERVED2         0x60
+
+#define IPOPT_END      (0 |IPOPT_CONTROL)
+#define IPOPT_NOOP     (1 |IPOPT_CONTROL)
+#define IPOPT_SEC      (2 |IPOPT_CONTROL|IPOPT_COPY)
+#define IPOPT_LSRR     (3 |IPOPT_CONTROL|IPOPT_COPY)
+#define IPOPT_TIMESTAMP        (4 |IPOPT_MEASUREMENT)
+#define IPOPT_CIPSO    (6 |IPOPT_CONTROL|IPOPT_COPY)
+#define IPOPT_RR       (7 |IPOPT_CONTROL)
+#define IPOPT_SID      (8 |IPOPT_CONTROL|IPOPT_COPY)
+#define IPOPT_SSRR     (9 |IPOPT_CONTROL|IPOPT_COPY)
+#define IPOPT_RA       (20|IPOPT_CONTROL|IPOPT_COPY)
+
+#define IPVERSION      4
+#define MAXTTL         255
+#define IPDEFTTL       64
+
+#define IPOPT_OPTVAL 0
+#define IPOPT_OLEN   1
+#define IPOPT_OFFSET 2
+#define IPOPT_MINOFF 4
+#define MAX_IPOPTLEN 40
+#define IPOPT_NOP IPOPT_NOOP
+#define IPOPT_EOL IPOPT_END
+#define IPOPT_TS  IPOPT_TIMESTAMP
+
+#define        IPOPT_TS_TSONLY         0               /* timestamps only */
+#define        IPOPT_TS_TSANDADDR      1               /* timestamps and addresses */
+#define        IPOPT_TS_PRESPEC        3               /* specified modules only */
+
+#define IPV4_BEET_PHMAXLEN 8
+
+struct iphdr {
+#if defined(__LITTLE_ENDIAN_BITFIELD)
+       __u8    ihl:4,
+               version:4;
+#elif defined (__BIG_ENDIAN_BITFIELD)
+       __u8    version:4,
+               ihl:4;
+#else
+#error "Please fix <asm/byteorder.h>"
+#endif
+       __u8    tos;
+       __be16  tot_len;
+       __be16  id;
+       __be16  frag_off;
+       __u8    ttl;
+       __u8    protocol;
+       __sum16 check;
+       __be32  saddr;
+       __be32  daddr;
+       /*The options start here. */
+};
+
+
+struct ip_auth_hdr {
+       __u8  nexthdr;
+       __u8  hdrlen;           /* This one is measured in 32 bit units! */
+       __be16 reserved;
+       __be32 spi;
+       __be32 seq_no;          /* Sequence number */
+       __u8  auth_data[0];     /* Variable len but >=4. Mind the 64 bit alignment! */
+};
+
+struct ip_esp_hdr {
+       __be32 spi;
+       __be32 seq_no;          /* Sequence number */
+       __u8  enc_data[0];      /* Variable len but >=8. Mind the 64 bit alignment! */
+};
+
+struct ip_comp_hdr {
+       __u8 nexthdr;
+       __u8 flags;
+       __be16 cpi;
+};
+
+struct ip_beet_phdr {
+       __u8 nexthdr;
+       __u8 hdrlen;
+       __u8 padlen;
+       __u8 reserved;
+};
+
+/* index values for the variables in ipv4_devconf */
+enum
+{
+       IPV4_DEVCONF_FORWARDING=1,
+       IPV4_DEVCONF_MC_FORWARDING,
+       IPV4_DEVCONF_PROXY_ARP,
+       IPV4_DEVCONF_ACCEPT_REDIRECTS,
+       IPV4_DEVCONF_SECURE_REDIRECTS,
+       IPV4_DEVCONF_SEND_REDIRECTS,
+       IPV4_DEVCONF_SHARED_MEDIA,
+       IPV4_DEVCONF_RP_FILTER,
+       IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE,
+       IPV4_DEVCONF_BOOTP_RELAY,
+       IPV4_DEVCONF_LOG_MARTIANS,
+       IPV4_DEVCONF_TAG,
+       IPV4_DEVCONF_ARPFILTER,
+       IPV4_DEVCONF_MEDIUM_ID,
+       IPV4_DEVCONF_NOXFRM,
+       IPV4_DEVCONF_NOPOLICY,
+       IPV4_DEVCONF_FORCE_IGMP_VERSION,
+       IPV4_DEVCONF_ARP_ANNOUNCE,
+       IPV4_DEVCONF_ARP_IGNORE,
+       IPV4_DEVCONF_PROMOTE_SECONDARIES,
+       IPV4_DEVCONF_ARP_ACCEPT,
+       IPV4_DEVCONF_ARP_NOTIFY,
+       IPV4_DEVCONF_ACCEPT_LOCAL,
+       IPV4_DEVCONF_SRC_VMARK,
+       IPV4_DEVCONF_PROXY_ARP_PVLAN,
+       IPV4_DEVCONF_ROUTE_LOCALNET,
+       IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL,
+       IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL,
+       IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN,
+       IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST,
+       IPV4_DEVCONF_DROP_GRATUITOUS_ARP,
+       __IPV4_DEVCONF_MAX
+};
+
+#define IPV4_DEVCONF_MAX (__IPV4_DEVCONF_MAX - 1)
+
+#endif /* _LINUX_IP_H */
diff --git a/include/uapi/linux/ip6_tunnel.h b/include/uapi/linux/ip6_tunnel.h
new file mode 100644 (file)
index 0000000..425926c
--- /dev/null
@@ -0,0 +1,53 @@
+#ifndef _IP6_TUNNEL_H
+#define _IP6_TUNNEL_H
+
+#include <linux/types.h>
+#include <linux/if.h>          /* For IFNAMSIZ. */
+#include <linux/in6.h>         /* For struct in6_addr. */
+
+#define IPV6_TLV_TNL_ENCAP_LIMIT 4
+#define IPV6_DEFAULT_TNL_ENCAP_LIMIT 4
+
+/* don't add encapsulation limit if one isn't present in inner packet */
+#define IP6_TNL_F_IGN_ENCAP_LIMIT 0x1
+/* copy the traffic class field from the inner packet */
+#define IP6_TNL_F_USE_ORIG_TCLASS 0x2
+/* copy the flowlabel from the inner packet */
+#define IP6_TNL_F_USE_ORIG_FLOWLABEL 0x4
+/* being used for Mobile IPv6 */
+#define IP6_TNL_F_MIP6_DEV 0x8
+/* copy DSCP from the outer packet */
+#define IP6_TNL_F_RCV_DSCP_COPY 0x10
+/* copy fwmark from inner packet */
+#define IP6_TNL_F_USE_ORIG_FWMARK 0x20
+
+struct ip6_tnl_parm {
+       char name[IFNAMSIZ];    /* name of tunnel device */
+       int link;               /* ifindex of underlying L2 interface */
+       __u8 proto;             /* tunnel protocol */
+       __u8 encap_limit;       /* encapsulation limit for tunnel */
+       __u8 hop_limit;         /* hop limit for tunnel */
+       __be32 flowinfo;        /* traffic class and flowlabel for tunnel */
+       __u32 flags;            /* tunnel flags */
+       struct in6_addr laddr;  /* local tunnel end-point address */
+       struct in6_addr raddr;  /* remote tunnel end-point address */
+};
+
+struct ip6_tnl_parm2 {
+       char name[IFNAMSIZ];    /* name of tunnel device */
+       int link;               /* ifindex of underlying L2 interface */
+       __u8 proto;             /* tunnel protocol */
+       __u8 encap_limit;       /* encapsulation limit for tunnel */
+       __u8 hop_limit;         /* hop limit for tunnel */
+       __be32 flowinfo;        /* traffic class and flowlabel for tunnel */
+       __u32 flags;            /* tunnel flags */
+       struct in6_addr laddr;  /* local tunnel end-point address */
+       struct in6_addr raddr;  /* remote tunnel end-point address */
+
+       __be16                  i_flags;
+       __be16                  o_flags;
+       __be32                  i_key;
+       __be32                  o_key;
+};
+
+#endif
diff --git a/include/uapi/linux/ipsec.h b/include/uapi/linux/ipsec.h
new file mode 100644 (file)
index 0000000..d17a630
--- /dev/null
@@ -0,0 +1,47 @@
+#ifndef _LINUX_IPSEC_H
+#define _LINUX_IPSEC_H
+
+/* The definitions, required to talk to KAME racoon IKE. */
+
+#include <linux/pfkeyv2.h>
+
+#define IPSEC_PORT_ANY         0
+#define IPSEC_ULPROTO_ANY      255
+#define IPSEC_PROTO_ANY                255
+
+enum {
+       IPSEC_MODE_ANY          = 0,    /* We do not support this for SA */
+       IPSEC_MODE_TRANSPORT    = 1,
+       IPSEC_MODE_TUNNEL       = 2,
+       IPSEC_MODE_BEET         = 3
+};
+
+enum {
+       IPSEC_DIR_ANY           = 0,
+       IPSEC_DIR_INBOUND       = 1,
+       IPSEC_DIR_OUTBOUND      = 2,
+       IPSEC_DIR_FWD           = 3,    /* It is our own */
+       IPSEC_DIR_MAX           = 4,
+       IPSEC_DIR_INVALID       = 5
+};
+
+enum {
+       IPSEC_POLICY_DISCARD    = 0,
+       IPSEC_POLICY_NONE       = 1,
+       IPSEC_POLICY_IPSEC      = 2,
+       IPSEC_POLICY_ENTRUST    = 3,
+       IPSEC_POLICY_BYPASS     = 4
+};
+
+enum {
+       IPSEC_LEVEL_DEFAULT     = 0,
+       IPSEC_LEVEL_USE         = 1,
+       IPSEC_LEVEL_REQUIRE     = 2,
+       IPSEC_LEVEL_UNIQUE      = 3
+};
+
+#define IPSEC_MANUAL_REQID_MAX 0x3fff
+
+#define IPSEC_REPLAYWSIZE  32
+
+#endif /* _LINUX_IPSEC_H */
diff --git a/include/uapi/linux/kernel.h b/include/uapi/linux/kernel.h
new file mode 100644 (file)
index 0000000..527549f
--- /dev/null
@@ -0,0 +1,14 @@
+#ifndef _LINUX_KERNEL_H
+#define _LINUX_KERNEL_H
+
+#include <linux/sysinfo.h>
+
+/*
+ * 'kernel.h' contains some often-used function prototypes etc
+ */
+#define __ALIGN_KERNEL(x, a)           __ALIGN_KERNEL_MASK(x, (typeof(x))(a) - 1)
+#define __ALIGN_KERNEL_MASK(x, mask)   (((x) + (mask)) & ~(mask))
+
+#define __KERNEL_DIV_ROUND_UP(n, d) (((n) + (d) - 1) / (d))
+
+#endif /* _LINUX_KERNEL_H */
diff --git a/include/uapi/linux/l2tp.h b/include/uapi/linux/l2tp.h
new file mode 100644 (file)
index 0000000..8a80007
--- /dev/null
@@ -0,0 +1,199 @@
+/*
+ * L2TP-over-IP socket for L2TPv3.
+ *
+ * Author: James Chapman <jchapman@katalix.com>
+ */
+
+#ifndef _LINUX_L2TP_H_
+#define _LINUX_L2TP_H_
+
+#include <linux/types.h>
+#include <linux/socket.h>
+#include <linux/in.h>
+#include <linux/in6.h>
+
+#define IPPROTO_L2TP           115
+
+/**
+ * struct sockaddr_l2tpip - the sockaddr structure for L2TP-over-IP sockets
+ * @l2tp_family:  address family number AF_L2TPIP.
+ * @l2tp_addr:    protocol specific address information
+ * @l2tp_conn_id: connection id of tunnel
+ */
+#define __SOCK_SIZE__  16              /* sizeof(struct sockaddr)      */
+struct sockaddr_l2tpip {
+       /* The first fields must match struct sockaddr_in */
+       __kernel_sa_family_t l2tp_family; /* AF_INET */
+       __be16          l2tp_unused;    /* INET port number (unused) */
+       struct in_addr  l2tp_addr;      /* Internet address */
+
+       __u32           l2tp_conn_id;   /* Connection ID of tunnel */
+
+       /* Pad to size of `struct sockaddr'. */
+       unsigned char   __pad[__SOCK_SIZE__ -
+                             sizeof(__kernel_sa_family_t) -
+                             sizeof(__be16) - sizeof(struct in_addr) -
+                             sizeof(__u32)];
+};
+
+/**
+ * struct sockaddr_l2tpip6 - the sockaddr structure for L2TP-over-IPv6 sockets
+ * @l2tp_family:  address family number AF_L2TPIP.
+ * @l2tp_addr:    protocol specific address information
+ * @l2tp_conn_id: connection id of tunnel
+ */
+struct sockaddr_l2tpip6 {
+       /* The first fields must match struct sockaddr_in6 */
+       __kernel_sa_family_t l2tp_family; /* AF_INET6 */
+       __be16          l2tp_unused;    /* INET port number (unused) */
+       __be32          l2tp_flowinfo;  /* IPv6 flow information */
+       struct in6_addr l2tp_addr;      /* IPv6 address */
+       __u32           l2tp_scope_id;  /* scope id (new in RFC2553) */
+       __u32           l2tp_conn_id;   /* Connection ID of tunnel */
+};
+
+/*****************************************************************************
+ *  NETLINK_GENERIC netlink family.
+ *****************************************************************************/
+
+/*
+ * Commands.
+ * Valid TLVs of each command are:-
+ * TUNNEL_CREATE       - CONN_ID, pw_type, netns, ifname, ipinfo, udpinfo, udpcsum, vlanid
+ * TUNNEL_DELETE       - CONN_ID
+ * TUNNEL_MODIFY       - CONN_ID, udpcsum
+ * TUNNEL_GETSTATS     - CONN_ID, (stats)
+ * TUNNEL_GET          - CONN_ID, (...)
+ * SESSION_CREATE      - SESSION_ID, PW_TYPE, offset, data_seq, cookie, peer_cookie, offset, l2spec
+ * SESSION_DELETE      - SESSION_ID
+ * SESSION_MODIFY      - SESSION_ID, data_seq
+ * SESSION_GET         - SESSION_ID, (...)
+ * SESSION_GETSTATS    - SESSION_ID, (stats)
+ *
+ */
+enum {
+       L2TP_CMD_NOOP,
+       L2TP_CMD_TUNNEL_CREATE,
+       L2TP_CMD_TUNNEL_DELETE,
+       L2TP_CMD_TUNNEL_MODIFY,
+       L2TP_CMD_TUNNEL_GET,
+       L2TP_CMD_SESSION_CREATE,
+       L2TP_CMD_SESSION_DELETE,
+       L2TP_CMD_SESSION_MODIFY,
+       L2TP_CMD_SESSION_GET,
+       __L2TP_CMD_MAX,
+};
+
+#define L2TP_CMD_MAX                   (__L2TP_CMD_MAX - 1)
+
+/*
+ * ATTR types defined for L2TP
+ */
+enum {
+       L2TP_ATTR_NONE,                 /* no data */
+       L2TP_ATTR_PW_TYPE,              /* u16, enum l2tp_pwtype */
+       L2TP_ATTR_ENCAP_TYPE,           /* u16, enum l2tp_encap_type */
+       L2TP_ATTR_OFFSET,               /* u16 */
+       L2TP_ATTR_DATA_SEQ,             /* u16 */
+       L2TP_ATTR_L2SPEC_TYPE,          /* u8, enum l2tp_l2spec_type */
+       L2TP_ATTR_L2SPEC_LEN,           /* u8, enum l2tp_l2spec_type */
+       L2TP_ATTR_PROTO_VERSION,        /* u8 */
+       L2TP_ATTR_IFNAME,               /* string */
+       L2TP_ATTR_CONN_ID,              /* u32 */
+       L2TP_ATTR_PEER_CONN_ID,         /* u32 */
+       L2TP_ATTR_SESSION_ID,           /* u32 */
+       L2TP_ATTR_PEER_SESSION_ID,      /* u32 */
+       L2TP_ATTR_UDP_CSUM,             /* u8 */
+       L2TP_ATTR_VLAN_ID,              /* u16 */
+       L2TP_ATTR_COOKIE,               /* 0, 4 or 8 bytes */
+       L2TP_ATTR_PEER_COOKIE,          /* 0, 4 or 8 bytes */
+       L2TP_ATTR_DEBUG,                /* u32, enum l2tp_debug_flags */
+       L2TP_ATTR_RECV_SEQ,             /* u8 */
+       L2TP_ATTR_SEND_SEQ,             /* u8 */
+       L2TP_ATTR_LNS_MODE,             /* u8 */
+       L2TP_ATTR_USING_IPSEC,          /* u8 */
+       L2TP_ATTR_RECV_TIMEOUT,         /* msec */
+       L2TP_ATTR_FD,                   /* int */
+       L2TP_ATTR_IP_SADDR,             /* u32 */
+       L2TP_ATTR_IP_DADDR,             /* u32 */
+       L2TP_ATTR_UDP_SPORT,            /* u16 */
+       L2TP_ATTR_UDP_DPORT,            /* u16 */
+       L2TP_ATTR_MTU,                  /* u16 */
+       L2TP_ATTR_MRU,                  /* u16 */
+       L2TP_ATTR_STATS,                /* nested */
+       L2TP_ATTR_IP6_SADDR,            /* struct in6_addr */
+       L2TP_ATTR_IP6_DADDR,            /* struct in6_addr */
+       L2TP_ATTR_UDP_ZERO_CSUM6_TX,    /* flag */
+       L2TP_ATTR_UDP_ZERO_CSUM6_RX,    /* flag */
+       L2TP_ATTR_PAD,
+       __L2TP_ATTR_MAX,
+};
+
+#define L2TP_ATTR_MAX                  (__L2TP_ATTR_MAX - 1)
+
+/* Nested in L2TP_ATTR_STATS */
+enum {
+       L2TP_ATTR_STATS_NONE,           /* no data */
+       L2TP_ATTR_TX_PACKETS,           /* u64 */
+       L2TP_ATTR_TX_BYTES,             /* u64 */
+       L2TP_ATTR_TX_ERRORS,            /* u64 */
+       L2TP_ATTR_RX_PACKETS,           /* u64 */
+       L2TP_ATTR_RX_BYTES,             /* u64 */
+       L2TP_ATTR_RX_SEQ_DISCARDS,      /* u64 */
+       L2TP_ATTR_RX_OOS_PACKETS,       /* u64 */
+       L2TP_ATTR_RX_ERRORS,            /* u64 */
+       L2TP_ATTR_STATS_PAD,
+       __L2TP_ATTR_STATS_MAX,
+};
+
+#define L2TP_ATTR_STATS_MAX            (__L2TP_ATTR_STATS_MAX - 1)
+
+enum l2tp_pwtype {
+       L2TP_PWTYPE_NONE = 0x0000,
+       L2TP_PWTYPE_ETH_VLAN = 0x0004,
+       L2TP_PWTYPE_ETH = 0x0005,
+       L2TP_PWTYPE_PPP = 0x0007,
+       L2TP_PWTYPE_PPP_AC = 0x0008,
+       L2TP_PWTYPE_IP = 0x000b,
+       __L2TP_PWTYPE_MAX
+};
+
+enum l2tp_l2spec_type {
+       L2TP_L2SPECTYPE_NONE,
+       L2TP_L2SPECTYPE_DEFAULT,
+};
+
+enum l2tp_encap_type {
+       L2TP_ENCAPTYPE_UDP,
+       L2TP_ENCAPTYPE_IP,
+};
+
+enum l2tp_seqmode {
+       L2TP_SEQ_NONE = 0,
+       L2TP_SEQ_IP = 1,
+       L2TP_SEQ_ALL = 2,
+};
+
+/**
+ * enum l2tp_debug_flags - debug message categories for L2TP tunnels/sessions
+ *
+ * @L2TP_MSG_DEBUG: verbose debug (if compiled in)
+ * @L2TP_MSG_CONTROL: userspace - kernel interface
+ * @L2TP_MSG_SEQ: sequence numbers
+ * @L2TP_MSG_DATA: data packets
+ */
+enum l2tp_debug_flags {
+       L2TP_MSG_DEBUG          = (1 << 0),
+       L2TP_MSG_CONTROL        = (1 << 1),
+       L2TP_MSG_SEQ            = (1 << 2),
+       L2TP_MSG_DATA           = (1 << 3),
+};
+
+/*
+ * NETLINK_GENERIC related info
+ */
+#define L2TP_GENL_NAME         "l2tp"
+#define L2TP_GENL_VERSION      0x1
+#define L2TP_GENL_MCGROUP       "l2tp"
+
+#endif /* _LINUX_L2TP_H_ */
diff --git a/include/uapi/linux/libc-compat.h b/include/uapi/linux/libc-compat.h
new file mode 100644 (file)
index 0000000..f38571d
--- /dev/null
@@ -0,0 +1,213 @@
+/*
+ * Compatibility interface for userspace libc header coordination:
+ *
+ * Define compatibility macros that are used to control the inclusion or
+ * exclusion of UAPI structures and definitions in coordination with another
+ * userspace C library.
+ *
+ * This header is intended to solve the problem of UAPI definitions that
+ * conflict with userspace definitions. If a UAPI header has such conflicting
+ * definitions then the solution is as follows:
+ *
+ * * Synchronize the UAPI header and the libc headers so either one can be
+ *   used and such that the ABI is preserved. If this is not possible then
+ *   no simple compatibility interface exists (you need to write translating
+ *   wrappers and rename things) and you can't use this interface.
+ *
+ * Then follow this process:
+ *
+ * (a) Include libc-compat.h in the UAPI header.
+ *      e.g. #include <linux/libc-compat.h>
+ *     This include must be as early as possible.
+ *
+ * (b) In libc-compat.h add enough code to detect that the comflicting
+ *     userspace libc header has been included first.
+ *
+ * (c) If the userspace libc header has been included first define a set of
+ *     guard macros of the form __UAPI_DEF_FOO and set their values to 1, else
+ *     set their values to 0.
+ *
+ * (d) Back in the UAPI header with the conflicting definitions, guard the
+ *     definitions with:
+ *     #if __UAPI_DEF_FOO
+ *       ...
+ *     #endif
+ *
+ * This fixes the situation where the linux headers are included *after* the
+ * libc headers. To fix the problem with the inclusion in the other order the
+ * userspace libc headers must be fixed like this:
+ *
+ * * For all definitions that conflict with kernel definitions wrap those
+ *   defines in the following:
+ *   #if !__UAPI_DEF_FOO
+ *     ...
+ *   #endif
+ *
+ * This prevents the redefinition of a construct already defined by the kernel.
+ */
+#ifndef _LIBC_COMPAT_H
+#define _LIBC_COMPAT_H
+
+/* We have included glibc headers... */
+#if defined(__GLIBC__)
+
+/* Coordinate with glibc net/if.h header. */
+#if defined(_NET_IF_H) && defined(__USE_MISC)
+
+/* GLIBC headers included first so don't define anything
+ * that would already be defined. */
+
+#define __UAPI_DEF_IF_IFCONF 0
+#define __UAPI_DEF_IF_IFMAP 0
+#define __UAPI_DEF_IF_IFNAMSIZ 0
+#define __UAPI_DEF_IF_IFREQ 0
+/* Everything up to IFF_DYNAMIC, matches net/if.h until glibc 2.23 */
+#define __UAPI_DEF_IF_NET_DEVICE_FLAGS 0
+/* For the future if glibc adds IFF_LOWER_UP, IFF_DORMANT and IFF_ECHO */
+#ifndef __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO
+#define __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO 1
+#endif /* __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO */
+
+#else /* _NET_IF_H */
+
+/* Linux headers included first, and we must define everything
+ * we need. The expectation is that glibc will check the
+ * __UAPI_DEF_* defines and adjust appropriately. */
+
+#define __UAPI_DEF_IF_IFCONF 1
+#define __UAPI_DEF_IF_IFMAP 1
+#define __UAPI_DEF_IF_IFNAMSIZ 1
+#define __UAPI_DEF_IF_IFREQ 1
+/* Everything up to IFF_DYNAMIC, matches net/if.h until glibc 2.23 */
+#define __UAPI_DEF_IF_NET_DEVICE_FLAGS 1
+/* For the future if glibc adds IFF_LOWER_UP, IFF_DORMANT and IFF_ECHO */
+#define __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO 1
+
+#endif /* _NET_IF_H */
+
+/* Coordinate with glibc netinet/in.h header. */
+#if defined(_NETINET_IN_H)
+
+/* GLIBC headers included first so don't define anything
+ * that would already be defined. */
+#define __UAPI_DEF_IN_ADDR             0
+#define __UAPI_DEF_IN_IPPROTO          0
+#define __UAPI_DEF_IN_PKTINFO          0
+#define __UAPI_DEF_IP_MREQ             0
+#define __UAPI_DEF_SOCKADDR_IN         0
+#define __UAPI_DEF_IN_CLASS            0
+
+#define __UAPI_DEF_IN6_ADDR            0
+/* The exception is the in6_addr macros which must be defined
+ * if the glibc code didn't define them. This guard matches
+ * the guard in glibc/inet/netinet/in.h which defines the
+ * additional in6_addr macros e.g. s6_addr16, and s6_addr32. */
+#if defined(__USE_MISC) || defined (__USE_GNU)
+#define __UAPI_DEF_IN6_ADDR_ALT                0
+#else
+#define __UAPI_DEF_IN6_ADDR_ALT                1
+#endif
+#define __UAPI_DEF_SOCKADDR_IN6                0
+#define __UAPI_DEF_IPV6_MREQ           0
+#define __UAPI_DEF_IPPROTO_V6          0
+#define __UAPI_DEF_IPV6_OPTIONS                0
+#define __UAPI_DEF_IN6_PKTINFO         0
+#define __UAPI_DEF_IP6_MTUINFO         0
+
+#else
+
+/* Linux headers included first, and we must define everything
+ * we need. The expectation is that glibc will check the
+ * __UAPI_DEF_* defines and adjust appropriately. */
+#define __UAPI_DEF_IN_ADDR             1
+#define __UAPI_DEF_IN_IPPROTO          1
+#define __UAPI_DEF_IN_PKTINFO          1
+#define __UAPI_DEF_IP_MREQ             1
+#define __UAPI_DEF_SOCKADDR_IN         1
+#define __UAPI_DEF_IN_CLASS            1
+
+#define __UAPI_DEF_IN6_ADDR            1
+/* We unconditionally define the in6_addr macros and glibc must
+ * coordinate. */
+#define __UAPI_DEF_IN6_ADDR_ALT                1
+#define __UAPI_DEF_SOCKADDR_IN6                1
+#define __UAPI_DEF_IPV6_MREQ           1
+#define __UAPI_DEF_IPPROTO_V6          1
+#define __UAPI_DEF_IPV6_OPTIONS                1
+#define __UAPI_DEF_IN6_PKTINFO         1
+#define __UAPI_DEF_IP6_MTUINFO         1
+
+#endif /* _NETINET_IN_H */
+
+/* Coordinate with glibc netipx/ipx.h header. */
+#if defined(__NETIPX_IPX_H)
+
+#define __UAPI_DEF_SOCKADDR_IPX                        0
+#define __UAPI_DEF_IPX_ROUTE_DEFINITION                0
+#define __UAPI_DEF_IPX_INTERFACE_DEFINITION    0
+#define __UAPI_DEF_IPX_CONFIG_DATA             0
+#define __UAPI_DEF_IPX_ROUTE_DEF               0
+
+#else /* defined(__NETIPX_IPX_H) */
+
+#define __UAPI_DEF_SOCKADDR_IPX                        1
+#define __UAPI_DEF_IPX_ROUTE_DEFINITION                1
+#define __UAPI_DEF_IPX_INTERFACE_DEFINITION    1
+#define __UAPI_DEF_IPX_CONFIG_DATA             1
+#define __UAPI_DEF_IPX_ROUTE_DEF               1
+
+#endif /* defined(__NETIPX_IPX_H) */
+
+/* Definitions for xattr.h */
+#if defined(_SYS_XATTR_H)
+#define __UAPI_DEF_XATTR               0
+#else
+#define __UAPI_DEF_XATTR               1
+#endif
+
+/* If we did not see any headers from any supported C libraries,
+ * or we are being included in the kernel, then define everything
+ * that we need. */
+#else /* !defined(__GLIBC__) */
+
+/* Definitions for if.h */
+#define __UAPI_DEF_IF_IFCONF 1
+#define __UAPI_DEF_IF_IFMAP 1
+#define __UAPI_DEF_IF_IFNAMSIZ 1
+#define __UAPI_DEF_IF_IFREQ 1
+/* Everything up to IFF_DYNAMIC, matches net/if.h until glibc 2.23 */
+#define __UAPI_DEF_IF_NET_DEVICE_FLAGS 1
+/* For the future if glibc adds IFF_LOWER_UP, IFF_DORMANT and IFF_ECHO */
+#define __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO 1
+
+/* Definitions for in.h */
+#define __UAPI_DEF_IN_ADDR             1
+#define __UAPI_DEF_IN_IPPROTO          1
+#define __UAPI_DEF_IN_PKTINFO          1
+#define __UAPI_DEF_IP_MREQ             1
+#define __UAPI_DEF_SOCKADDR_IN         1
+#define __UAPI_DEF_IN_CLASS            1
+
+/* Definitions for in6.h */
+#define __UAPI_DEF_IN6_ADDR            1
+#define __UAPI_DEF_IN6_ADDR_ALT                1
+#define __UAPI_DEF_SOCKADDR_IN6                1
+#define __UAPI_DEF_IPV6_MREQ           1
+#define __UAPI_DEF_IPPROTO_V6          1
+#define __UAPI_DEF_IPV6_OPTIONS                1
+#define __UAPI_DEF_IN6_PKTINFO         1
+#define __UAPI_DEF_IP6_MTUINFO         1
+
+/* Definitions for ipx.h */
+#define __UAPI_DEF_SOCKADDR_IPX                        1
+#define __UAPI_DEF_IPX_ROUTE_DEFINITION                1
+#define __UAPI_DEF_IPX_INTERFACE_DEFINITION    1
+#define __UAPI_DEF_IPX_CONFIG_DATA             1
+#define __UAPI_DEF_IPX_ROUTE_DEF               1
+
+/* Definitions for xattr.h */
+#define __UAPI_DEF_XATTR               1
+
+#endif /* __GLIBC__ */
+
+#endif /* _LIBC_COMPAT_H */
diff --git a/include/uapi/linux/limits.h b/include/uapi/linux/limits.h
new file mode 100644 (file)
index 0000000..2d0f941
--- /dev/null
@@ -0,0 +1,20 @@
+#ifndef _LINUX_LIMITS_H
+#define _LINUX_LIMITS_H
+
+#define NR_OPEN                1024
+
+#define NGROUPS_MAX    65536   /* supplemental group IDs are available */
+#define ARG_MAX       131072   /* # bytes of args + environ for exec() */
+#define LINK_MAX         127   /* # links a file may have */
+#define MAX_CANON        255   /* size of the canonical input queue */
+#define MAX_INPUT        255   /* size of the type-ahead buffer */
+#define NAME_MAX         255   /* # chars in a file name */
+#define PATH_MAX        4096   /* # chars in a path name including nul */
+#define PIPE_BUF        4096   /* # bytes in atomic write to a pipe */
+#define XATTR_NAME_MAX   255   /* # chars in an extended attribute name */
+#define XATTR_SIZE_MAX 65536   /* size of an extended attribute value (64k) */
+#define XATTR_LIST_MAX 65536   /* size of extended attribute namelist (64k) */
+
+#define RTSIG_MAX        32
+
+#endif
diff --git a/include/uapi/linux/lwtunnel.h b/include/uapi/linux/lwtunnel.h
new file mode 100644 (file)
index 0000000..3298426
--- /dev/null
@@ -0,0 +1,70 @@
+#ifndef _LWTUNNEL_H_
+#define _LWTUNNEL_H_
+
+#include <linux/types.h>
+
+enum lwtunnel_encap_types {
+       LWTUNNEL_ENCAP_NONE,
+       LWTUNNEL_ENCAP_MPLS,
+       LWTUNNEL_ENCAP_IP,
+       LWTUNNEL_ENCAP_ILA,
+       LWTUNNEL_ENCAP_IP6,
+       LWTUNNEL_ENCAP_SEG6,
+       LWTUNNEL_ENCAP_BPF,
+       LWTUNNEL_ENCAP_SEG6_LOCAL,
+       __LWTUNNEL_ENCAP_MAX,
+};
+
+#define LWTUNNEL_ENCAP_MAX (__LWTUNNEL_ENCAP_MAX - 1)
+
+enum lwtunnel_ip_t {
+       LWTUNNEL_IP_UNSPEC,
+       LWTUNNEL_IP_ID,
+       LWTUNNEL_IP_DST,
+       LWTUNNEL_IP_SRC,
+       LWTUNNEL_IP_TTL,
+       LWTUNNEL_IP_TOS,
+       LWTUNNEL_IP_FLAGS,
+       LWTUNNEL_IP_PAD,
+       __LWTUNNEL_IP_MAX,
+};
+
+#define LWTUNNEL_IP_MAX (__LWTUNNEL_IP_MAX - 1)
+
+enum lwtunnel_ip6_t {
+       LWTUNNEL_IP6_UNSPEC,
+       LWTUNNEL_IP6_ID,
+       LWTUNNEL_IP6_DST,
+       LWTUNNEL_IP6_SRC,
+       LWTUNNEL_IP6_HOPLIMIT,
+       LWTUNNEL_IP6_TC,
+       LWTUNNEL_IP6_FLAGS,
+       LWTUNNEL_IP6_PAD,
+       __LWTUNNEL_IP6_MAX,
+};
+
+#define LWTUNNEL_IP6_MAX (__LWTUNNEL_IP6_MAX - 1)
+
+enum {
+       LWT_BPF_PROG_UNSPEC,
+       LWT_BPF_PROG_FD,
+       LWT_BPF_PROG_NAME,
+       __LWT_BPF_PROG_MAX,
+};
+
+#define LWT_BPF_PROG_MAX (__LWT_BPF_PROG_MAX - 1)
+
+enum {
+       LWT_BPF_UNSPEC,
+       LWT_BPF_IN,
+       LWT_BPF_OUT,
+       LWT_BPF_XMIT,
+       LWT_BPF_XMIT_HEADROOM,
+       __LWT_BPF_MAX,
+};
+
+#define LWT_BPF_MAX (__LWT_BPF_MAX - 1)
+
+#define LWT_BPF_MAX_HEADROOM 256
+
+#endif /* _LWTUNNEL_H_ */
diff --git a/include/uapi/linux/magic.h b/include/uapi/linux/magic.h
new file mode 100644 (file)
index 0000000..e439565
--- /dev/null
@@ -0,0 +1,91 @@
+#ifndef __LINUX_MAGIC_H__
+#define __LINUX_MAGIC_H__
+
+#define ADFS_SUPER_MAGIC       0xadf5
+#define AFFS_SUPER_MAGIC       0xadff
+#define AFS_SUPER_MAGIC                0x5346414F
+#define AUTOFS_SUPER_MAGIC     0x0187
+#define CODA_SUPER_MAGIC       0x73757245
+#define CRAMFS_MAGIC           0x28cd3d45      /* some random number */
+#define CRAMFS_MAGIC_WEND      0x453dcd28      /* magic number with the wrong endianess */
+#define DEBUGFS_MAGIC          0x64626720
+#define SECURITYFS_MAGIC       0x73636673
+#define SELINUX_MAGIC          0xf97cff8c
+#define SMACK_MAGIC            0x43415d53      /* "SMAC" */
+#define RAMFS_MAGIC            0x858458f6      /* some random number */
+#define TMPFS_MAGIC            0x01021994
+#define HUGETLBFS_MAGIC        0x958458f6      /* some random number */
+#define SQUASHFS_MAGIC         0x73717368
+#define ECRYPTFS_SUPER_MAGIC   0xf15f
+#define EFS_SUPER_MAGIC                0x414A53
+#define EXT2_SUPER_MAGIC       0xEF53
+#define EXT3_SUPER_MAGIC       0xEF53
+#define XENFS_SUPER_MAGIC      0xabba1974
+#define EXT4_SUPER_MAGIC       0xEF53
+#define BTRFS_SUPER_MAGIC      0x9123683E
+#define NILFS_SUPER_MAGIC      0x3434
+#define F2FS_SUPER_MAGIC       0xF2F52010
+#define HPFS_SUPER_MAGIC       0xf995e849
+#define ISOFS_SUPER_MAGIC      0x9660
+#define JFFS2_SUPER_MAGIC      0x72b6
+#define PSTOREFS_MAGIC         0x6165676C
+#define EFIVARFS_MAGIC         0xde5e81e4
+#define HOSTFS_SUPER_MAGIC     0x00c0ffee
+#define OVERLAYFS_SUPER_MAGIC  0x794c7630
+
+#define MINIX_SUPER_MAGIC      0x137F          /* minix v1 fs, 14 char names */
+#define MINIX_SUPER_MAGIC2     0x138F          /* minix v1 fs, 30 char names */
+#define MINIX2_SUPER_MAGIC     0x2468          /* minix v2 fs, 14 char names */
+#define MINIX2_SUPER_MAGIC2    0x2478          /* minix v2 fs, 30 char names */
+#define MINIX3_SUPER_MAGIC     0x4d5a          /* minix v3 fs, 60 char names */
+
+#define MSDOS_SUPER_MAGIC      0x4d44          /* MD */
+#define NCP_SUPER_MAGIC                0x564c          /* Guess, what 0x564c is :-) */
+#define NFS_SUPER_MAGIC                0x6969
+#define OCFS2_SUPER_MAGIC      0x7461636f
+#define OPENPROM_SUPER_MAGIC   0x9fa1
+#define QNX4_SUPER_MAGIC       0x002f          /* qnx4 fs detection */
+#define QNX6_SUPER_MAGIC       0x68191122      /* qnx6 fs detection */
+
+#define REISERFS_SUPER_MAGIC   0x52654973      /* used by gcc */
+                                       /* used by file system utilities that
+                                          look at the superblock, etc.  */
+#define REISERFS_SUPER_MAGIC_STRING    "ReIsErFs"
+#define REISER2FS_SUPER_MAGIC_STRING   "ReIsEr2Fs"
+#define REISER2FS_JR_SUPER_MAGIC_STRING        "ReIsEr3Fs"
+
+#define SMB_SUPER_MAGIC                0x517B
+#define CGROUP_SUPER_MAGIC     0x27e0eb
+#define CGROUP2_SUPER_MAGIC    0x63677270
+
+#define RDTGROUP_SUPER_MAGIC   0x7655821
+
+#define STACK_END_MAGIC                0x57AC6E9D
+
+#define TRACEFS_MAGIC          0x74726163
+
+#define V9FS_MAGIC             0x01021997
+
+#define BDEVFS_MAGIC            0x62646576
+#define DAXFS_MAGIC             0x64646178
+#define BINFMTFS_MAGIC          0x42494e4d
+#define DEVPTS_SUPER_MAGIC     0x1cd1
+#define FUTEXFS_SUPER_MAGIC    0xBAD1DEA
+#define PIPEFS_MAGIC            0x50495045
+#define PROC_SUPER_MAGIC       0x9fa0
+#define SOCKFS_MAGIC           0x534F434B
+#define SYSFS_MAGIC            0x62656572
+#define USBDEVICE_SUPER_MAGIC  0x9fa2
+#define MTD_INODE_FS_MAGIC      0x11307854
+#define ANON_INODE_FS_MAGIC    0x09041934
+#define BTRFS_TEST_MAGIC       0x73727279
+#define NSFS_MAGIC             0x6e736673
+#define BPF_FS_MAGIC           0xcafe4a11
+#define AAFS_MAGIC             0x5a3c69f0
+
+/* Since UDF 2.01 is ISO 13346 based... */
+#define UDF_SUPER_MAGIC                0x15013346
+#define BALLOON_KVM_MAGIC      0x13661366
+#define ZSMALLOC_MAGIC         0x58295829
+
+#endif /* __LINUX_MAGIC_H__ */
diff --git a/include/uapi/linux/mpls.h b/include/uapi/linux/mpls.h
new file mode 100644 (file)
index 0000000..bf5b625
--- /dev/null
@@ -0,0 +1,76 @@
+#ifndef _MPLS_H
+#define _MPLS_H
+
+#include <linux/types.h>
+#include <asm/byteorder.h>
+
+/* Reference: RFC 5462, RFC 3032
+ *
+ *  0                   1                   2                   3
+ *  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ * |                Label                  | TC  |S|       TTL     |
+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ *
+ *     Label:  Label Value, 20 bits
+ *     TC:     Traffic Class field, 3 bits
+ *     S:      Bottom of Stack, 1 bit
+ *     TTL:    Time to Live, 8 bits
+ */
+
+struct mpls_label {
+       __be32 entry;
+};
+
+#define MPLS_LS_LABEL_MASK      0xFFFFF000
+#define MPLS_LS_LABEL_SHIFT     12
+#define MPLS_LS_TC_MASK         0x00000E00
+#define MPLS_LS_TC_SHIFT        9
+#define MPLS_LS_S_MASK          0x00000100
+#define MPLS_LS_S_SHIFT         8
+#define MPLS_LS_TTL_MASK        0x000000FF
+#define MPLS_LS_TTL_SHIFT       0
+
+/* Reserved labels */
+#define MPLS_LABEL_IPV4NULL            0 /* RFC3032 */
+#define MPLS_LABEL_RTALERT             1 /* RFC3032 */
+#define MPLS_LABEL_IPV6NULL            2 /* RFC3032 */
+#define MPLS_LABEL_IMPLNULL            3 /* RFC3032 */
+#define MPLS_LABEL_ENTROPY             7 /* RFC6790 */
+#define MPLS_LABEL_GAL                 13 /* RFC5586 */
+#define MPLS_LABEL_OAMALERT            14 /* RFC3429 */
+#define MPLS_LABEL_EXTENSION           15 /* RFC7274 */
+
+#define MPLS_LABEL_FIRST_UNRESERVED    16 /* RFC3032 */
+
+/* These are embedded into IFLA_STATS_AF_SPEC:
+ * [IFLA_STATS_AF_SPEC]
+ * -> [AF_MPLS]
+ *    -> [MPLS_STATS_xxx]
+ *
+ * Attributes:
+ * [MPLS_STATS_LINK] = {
+ *     struct mpls_link_stats
+ * }
+ */
+enum {
+       MPLS_STATS_UNSPEC, /* also used as 64bit pad attribute */
+       MPLS_STATS_LINK,
+       __MPLS_STATS_MAX,
+};
+
+#define MPLS_STATS_MAX (__MPLS_STATS_MAX - 1)
+
+struct mpls_link_stats {
+       __u64   rx_packets;             /* total packets received       */
+       __u64   tx_packets;             /* total packets transmitted    */
+       __u64   rx_bytes;               /* total bytes received         */
+       __u64   tx_bytes;               /* total bytes transmitted      */
+       __u64   rx_errors;              /* bad packets received         */
+       __u64   tx_errors;              /* packet transmit problems     */
+       __u64   rx_dropped;             /* packet dropped on receive    */
+       __u64   tx_dropped;             /* packet dropped on transmit   */
+       __u64   rx_noroute;             /* no route for packet dest     */
+};
+
+#endif /* _MPLS_H */
diff --git a/include/uapi/linux/mpls_iptunnel.h b/include/uapi/linux/mpls_iptunnel.h
new file mode 100644 (file)
index 0000000..1a0e57b
--- /dev/null
@@ -0,0 +1,30 @@
+/*
+ *     mpls tunnel api
+ *
+ *     Authors:
+ *             Roopa Prabhu <roopa@cumulusnetworks.com>
+ *
+ *     This program is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License
+ *     as published by the Free Software Foundation; either version
+ *     2 of the License, or (at your option) any later version.
+ */
+
+#ifndef _LINUX_MPLS_IPTUNNEL_H
+#define _LINUX_MPLS_IPTUNNEL_H
+
+/* MPLS tunnel attributes
+ * [RTA_ENCAP] = {
+ *     [MPLS_IPTUNNEL_DST]
+ *     [MPLS_IPTUNNEL_TTL]
+ * }
+ */
+enum {
+       MPLS_IPTUNNEL_UNSPEC,
+       MPLS_IPTUNNEL_DST,
+       MPLS_IPTUNNEL_TTL,
+       __MPLS_IPTUNNEL_MAX,
+};
+#define MPLS_IPTUNNEL_MAX (__MPLS_IPTUNNEL_MAX - 1)
+
+#endif /* _LINUX_MPLS_IPTUNNEL_H */
diff --git a/include/uapi/linux/neighbour.h b/include/uapi/linux/neighbour.h
new file mode 100644 (file)
index 0000000..3199d28
--- /dev/null
@@ -0,0 +1,171 @@
+#ifndef __LINUX_NEIGHBOUR_H
+#define __LINUX_NEIGHBOUR_H
+
+#include <linux/types.h>
+#include <linux/netlink.h>
+
+struct ndmsg {
+       __u8            ndm_family;
+       __u8            ndm_pad1;
+       __u16           ndm_pad2;
+       __s32           ndm_ifindex;
+       __u16           ndm_state;
+       __u8            ndm_flags;
+       __u8            ndm_type;
+};
+
+enum {
+       NDA_UNSPEC,
+       NDA_DST,
+       NDA_LLADDR,
+       NDA_CACHEINFO,
+       NDA_PROBES,
+       NDA_VLAN,
+       NDA_PORT,
+       NDA_VNI,
+       NDA_IFINDEX,
+       NDA_MASTER,
+       NDA_LINK_NETNSID,
+       NDA_SRC_VNI,
+       __NDA_MAX
+};
+
+#define NDA_MAX (__NDA_MAX - 1)
+
+/*
+ *     Neighbor Cache Entry Flags
+ */
+
+#define NTF_USE                0x01
+#define NTF_SELF       0x02
+#define NTF_MASTER     0x04
+#define NTF_PROXY      0x08    /* == ATF_PUBL */
+#define NTF_EXT_LEARNED        0x10
+#define NTF_OFFLOADED   0x20
+#define NTF_ROUTER     0x80
+
+/*
+ *     Neighbor Cache Entry States.
+ */
+
+#define NUD_INCOMPLETE 0x01
+#define NUD_REACHABLE  0x02
+#define NUD_STALE      0x04
+#define NUD_DELAY      0x08
+#define NUD_PROBE      0x10
+#define NUD_FAILED     0x20
+
+/* Dummy states */
+#define NUD_NOARP      0x40
+#define NUD_PERMANENT  0x80
+#define NUD_NONE       0x00
+
+/* NUD_NOARP & NUD_PERMANENT are pseudostates, they never change
+   and make no address resolution or NUD.
+   NUD_PERMANENT also cannot be deleted by garbage collectors.
+ */
+
+struct nda_cacheinfo {
+       __u32           ndm_confirmed;
+       __u32           ndm_used;
+       __u32           ndm_updated;
+       __u32           ndm_refcnt;
+};
+
+/*****************************************************************
+ *             Neighbour tables specific messages.
+ *
+ * To retrieve the neighbour tables send RTM_GETNEIGHTBL with the
+ * NLM_F_DUMP flag set. Every neighbour table configuration is
+ * spread over multiple messages to avoid running into message
+ * size limits on systems with many interfaces. The first message
+ * in the sequence transports all not device specific data such as
+ * statistics, configuration, and the default parameter set.
+ * This message is followed by 0..n messages carrying device
+ * specific parameter sets.
+ * Although the ordering should be sufficient, NDTA_NAME can be
+ * used to identify sequences. The initial message can be identified
+ * by checking for NDTA_CONFIG. The device specific messages do
+ * not contain this TLV but have NDTPA_IFINDEX set to the
+ * corresponding interface index.
+ *
+ * To change neighbour table attributes, send RTM_SETNEIGHTBL
+ * with NDTA_NAME set. Changeable attribute include NDTA_THRESH[1-3],
+ * NDTA_GC_INTERVAL, and all TLVs in NDTA_PARMS unless marked
+ * otherwise. Device specific parameter sets can be changed by
+ * setting NDTPA_IFINDEX to the interface index of the corresponding
+ * device.
+ ****/
+
+struct ndt_stats {
+       __u64           ndts_allocs;
+       __u64           ndts_destroys;
+       __u64           ndts_hash_grows;
+       __u64           ndts_res_failed;
+       __u64           ndts_lookups;
+       __u64           ndts_hits;
+       __u64           ndts_rcv_probes_mcast;
+       __u64           ndts_rcv_probes_ucast;
+       __u64           ndts_periodic_gc_runs;
+       __u64           ndts_forced_gc_runs;
+       __u64           ndts_table_fulls;
+};
+
+enum {
+       NDTPA_UNSPEC,
+       NDTPA_IFINDEX,                  /* u32, unchangeable */
+       NDTPA_REFCNT,                   /* u32, read-only */
+       NDTPA_REACHABLE_TIME,           /* u64, read-only, msecs */
+       NDTPA_BASE_REACHABLE_TIME,      /* u64, msecs */
+       NDTPA_RETRANS_TIME,             /* u64, msecs */
+       NDTPA_GC_STALETIME,             /* u64, msecs */
+       NDTPA_DELAY_PROBE_TIME,         /* u64, msecs */
+       NDTPA_QUEUE_LEN,                /* u32 */
+       NDTPA_APP_PROBES,               /* u32 */
+       NDTPA_UCAST_PROBES,             /* u32 */
+       NDTPA_MCAST_PROBES,             /* u32 */
+       NDTPA_ANYCAST_DELAY,            /* u64, msecs */
+       NDTPA_PROXY_DELAY,              /* u64, msecs */
+       NDTPA_PROXY_QLEN,               /* u32 */
+       NDTPA_LOCKTIME,                 /* u64, msecs */
+       NDTPA_QUEUE_LENBYTES,           /* u32 */
+       NDTPA_MCAST_REPROBES,           /* u32 */
+       NDTPA_PAD,
+       __NDTPA_MAX
+};
+#define NDTPA_MAX (__NDTPA_MAX - 1)
+
+struct ndtmsg {
+       __u8            ndtm_family;
+       __u8            ndtm_pad1;
+       __u16           ndtm_pad2;
+};
+
+struct ndt_config {
+       __u16           ndtc_key_len;
+       __u16           ndtc_entry_size;
+       __u32           ndtc_entries;
+       __u32           ndtc_last_flush;        /* delta to now in msecs */
+       __u32           ndtc_last_rand;         /* delta to now in msecs */
+       __u32           ndtc_hash_rnd;
+       __u32           ndtc_hash_mask;
+       __u32           ndtc_hash_chain_gc;
+       __u32           ndtc_proxy_qlen;
+};
+
+enum {
+       NDTA_UNSPEC,
+       NDTA_NAME,                      /* char *, unchangeable */
+       NDTA_THRESH1,                   /* u32 */
+       NDTA_THRESH2,                   /* u32 */
+       NDTA_THRESH3,                   /* u32 */
+       NDTA_CONFIG,                    /* struct ndt_config, read-only */
+       NDTA_PARMS,                     /* nested TLV NDTPA_* */
+       NDTA_STATS,                     /* struct ndt_stats, read-only */
+       NDTA_GC_INTERVAL,               /* u64, msecs */
+       NDTA_PAD,
+       __NDTA_MAX
+};
+#define NDTA_MAX (__NDTA_MAX - 1)
+
+#endif
diff --git a/include/uapi/linux/net_namespace.h b/include/uapi/linux/net_namespace.h
new file mode 100644 (file)
index 0000000..9a92b7e
--- /dev/null
@@ -0,0 +1,23 @@
+/* Copyright (c) 2015 6WIND S.A.
+ * Author: Nicolas Dichtel <nicolas.dichtel@6wind.com>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms and conditions of the GNU General Public License,
+ * version 2, as published by the Free Software Foundation.
+ */
+#ifndef _LINUX_NET_NAMESPACE_H_
+#define _LINUX_NET_NAMESPACE_H_
+
+/* Attributes of RTM_NEWNSID/RTM_GETNSID messages */
+enum {
+       NETNSA_NONE,
+#define NETNSA_NSID_NOT_ASSIGNED -1
+       NETNSA_NSID,
+       NETNSA_PID,
+       NETNSA_FD,
+       __NETNSA_MAX,
+};
+
+#define NETNSA_MAX             (__NETNSA_MAX - 1)
+
+#endif /* _LINUX_NET_NAMESPACE_H_ */
diff --git a/include/uapi/linux/netconf.h b/include/uapi/linux/netconf.h
new file mode 100644 (file)
index 0000000..4afbd7d
--- /dev/null
@@ -0,0 +1,28 @@
+#ifndef _LINUX_NETCONF_H_
+#define _LINUX_NETCONF_H_
+
+#include <linux/types.h>
+#include <linux/netlink.h>
+
+struct netconfmsg {
+       __u8    ncm_family;
+};
+
+enum {
+       NETCONFA_UNSPEC,
+       NETCONFA_IFINDEX,
+       NETCONFA_FORWARDING,
+       NETCONFA_RP_FILTER,
+       NETCONFA_MC_FORWARDING,
+       NETCONFA_PROXY_NEIGH,
+       NETCONFA_IGNORE_ROUTES_WITH_LINKDOWN,
+       NETCONFA_INPUT,
+       __NETCONFA_MAX
+};
+#define NETCONFA_MAX   (__NETCONFA_MAX - 1)
+#define NETCONFA_ALL   -1
+
+#define NETCONFA_IFINDEX_ALL           -1
+#define NETCONFA_IFINDEX_DEFAULT       -2
+
+#endif /* _LINUX_NETCONF_H_ */
diff --git a/include/uapi/linux/netdevice.h b/include/uapi/linux/netdevice.h
new file mode 100644 (file)
index 0000000..66fceb4
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+ * INET                An implementation of the TCP/IP protocol suite for the LINUX
+ *             operating system.  INET is implemented using the  BSD Socket
+ *             interface as the means of communication with the user level.
+ *
+ *             Definitions for the Interfaces handler.
+ *
+ * Version:    @(#)dev.h       1.0.10  08/12/93
+ *
+ * Authors:    Ross Biro
+ *             Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
+ *             Corey Minyard <wf-rch!minyard@relay.EU.net>
+ *             Donald J. Becker, <becker@cesdis.gsfc.nasa.gov>
+ *             Alan Cox, <alan@lxorguk.ukuu.org.uk>
+ *             Bjorn Ekwall. <bj0rn@blox.se>
+ *              Pekka Riikonen <priikone@poseidon.pspt.fi>
+ *
+ *             This program is free software; you can redistribute it and/or
+ *             modify it under the terms of the GNU General Public License
+ *             as published by the Free Software Foundation; either version
+ *             2 of the License, or (at your option) any later version.
+ *
+ *             Moved to /usr/include/linux for NET3
+ */
+#ifndef _LINUX_NETDEVICE_H
+#define _LINUX_NETDEVICE_H
+
+#include <linux/if.h>
+#include <linux/if_ether.h>
+#include <linux/if_packet.h>
+#include <linux/if_link.h>
+
+
+#define MAX_ADDR_LEN   32              /* Largest hardware address length */
+
+/* Initial net device group. All devices belong to group 0 by default. */
+#define INIT_NETDEV_GROUP      0
+
+
+/* interface name assignment types (sysfs name_assign_type attribute) */
+#define NET_NAME_UNKNOWN       0       /* unknown origin (not exposed to userspace) */
+#define NET_NAME_ENUM          1       /* enumerated by kernel */
+#define NET_NAME_PREDICTABLE   2       /* predictably named by the kernel */
+#define NET_NAME_USER          3       /* provided by user-space */
+#define NET_NAME_RENAMED       4       /* renamed by user-space */
+
+/* Media selection options. */
+enum {
+        IF_PORT_UNKNOWN = 0,
+        IF_PORT_10BASE2,
+        IF_PORT_10BASET,
+        IF_PORT_AUI,
+        IF_PORT_100BASET,
+        IF_PORT_100BASETX,
+        IF_PORT_100BASEFX
+};
+
+/* hardware address assignment types */
+#define NET_ADDR_PERM          0       /* address is permanent (default) */
+#define NET_ADDR_RANDOM                1       /* address is generated randomly */
+#define NET_ADDR_STOLEN                2       /* address is stolen from other device */
+#define NET_ADDR_SET           3       /* address is set using
+                                        * dev_set_mac_address() */
+
+#endif /* _LINUX_NETDEVICE_H */
diff --git a/include/uapi/linux/netfilter.h b/include/uapi/linux/netfilter.h
new file mode 100644 (file)
index 0000000..ff4a4a5
--- /dev/null
@@ -0,0 +1,77 @@
+#ifndef __LINUX_NETFILTER_H
+#define __LINUX_NETFILTER_H
+
+#include <linux/types.h>
+
+#include <linux/in.h>
+#include <linux/in6.h>
+
+/* Responses from hook functions. */
+#define NF_DROP 0
+#define NF_ACCEPT 1
+#define NF_STOLEN 2
+#define NF_QUEUE 3
+#define NF_REPEAT 4
+#define NF_STOP 5      /* Deprecated, for userspace nf_queue compatibility. */
+#define NF_MAX_VERDICT NF_STOP
+
+/* we overload the higher bits for encoding auxiliary data such as the queue
+ * number or errno values. Not nice, but better than additional function
+ * arguments. */
+#define NF_VERDICT_MASK 0x000000ff
+
+/* extra verdict flags have mask 0x0000ff00 */
+#define NF_VERDICT_FLAG_QUEUE_BYPASS   0x00008000
+
+/* queue number (NF_QUEUE) or errno (NF_DROP) */
+#define NF_VERDICT_QMASK 0xffff0000
+#define NF_VERDICT_QBITS 16
+
+#define NF_QUEUE_NR(x) ((((x) << 16) & NF_VERDICT_QMASK) | NF_QUEUE)
+
+#define NF_DROP_ERR(x) (((-x) << 16) | NF_DROP)
+
+/* only for userspace compatibility */
+/* Generic cache responses from hook functions.
+   <= 0x2000 is used for protocol-flags. */
+#define NFC_UNKNOWN 0x4000
+#define NFC_ALTERED 0x8000
+
+/* NF_VERDICT_BITS should be 8 now, but userspace might break if this changes */
+#define NF_VERDICT_BITS 16
+
+enum nf_inet_hooks {
+       NF_INET_PRE_ROUTING,
+       NF_INET_LOCAL_IN,
+       NF_INET_FORWARD,
+       NF_INET_LOCAL_OUT,
+       NF_INET_POST_ROUTING,
+       NF_INET_NUMHOOKS
+};
+
+enum nf_dev_hooks {
+       NF_NETDEV_INGRESS,
+       NF_NETDEV_NUMHOOKS
+};
+
+enum {
+       NFPROTO_UNSPEC =  0,
+       NFPROTO_INET   =  1,
+       NFPROTO_IPV4   =  2,
+       NFPROTO_ARP    =  3,
+       NFPROTO_NETDEV =  5,
+       NFPROTO_BRIDGE =  7,
+       NFPROTO_IPV6   = 10,
+       NFPROTO_DECNET = 12,
+       NFPROTO_NUMPROTO,
+};
+
+union nf_inet_addr {
+       __u32           all[4];
+       __be32          ip;
+       __be32          ip6[4];
+       struct in_addr  in;
+       struct in6_addr in6;
+};
+
+#endif /* __LINUX_NETFILTER_H */
diff --git a/include/uapi/linux/netfilter/ipset/ip_set.h b/include/uapi/linux/netfilter/ipset/ip_set.h
new file mode 100644 (file)
index 0000000..a6c96b0
--- /dev/null
@@ -0,0 +1,304 @@
+/* Copyright (C) 2000-2002 Joakim Axelsson <gozem@linux.nu>
+ *                         Patrick Schaaf <bof@bof.de>
+ *                         Martin Josefsson <gandalf@wlug.westbo.se>
+ * Copyright (C) 2003-2011 Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+#ifndef _IP_SET_H
+#define _IP_SET_H
+
+#include <linux/types.h>
+
+/* The protocol version */
+#define IPSET_PROTOCOL         6
+
+/* The max length of strings including NUL: set and type identifiers */
+#define IPSET_MAXNAMELEN       32
+
+/* The maximum permissible comment length we will accept over netlink */
+#define IPSET_MAX_COMMENT_SIZE 255
+
+/* Message types and commands */
+enum ipset_cmd {
+       IPSET_CMD_NONE,
+       IPSET_CMD_PROTOCOL,     /* 1: Return protocol version */
+       IPSET_CMD_CREATE,       /* 2: Create a new (empty) set */
+       IPSET_CMD_DESTROY,      /* 3: Destroy a (empty) set */
+       IPSET_CMD_FLUSH,        /* 4: Remove all elements from a set */
+       IPSET_CMD_RENAME,       /* 5: Rename a set */
+       IPSET_CMD_SWAP,         /* 6: Swap two sets */
+       IPSET_CMD_LIST,         /* 7: List sets */
+       IPSET_CMD_SAVE,         /* 8: Save sets */
+       IPSET_CMD_ADD,          /* 9: Add an element to a set */
+       IPSET_CMD_DEL,          /* 10: Delete an element from a set */
+       IPSET_CMD_TEST,         /* 11: Test an element in a set */
+       IPSET_CMD_HEADER,       /* 12: Get set header data only */
+       IPSET_CMD_TYPE,         /* 13: Get set type */
+       IPSET_MSG_MAX,          /* Netlink message commands */
+
+       /* Commands in userspace: */
+       IPSET_CMD_RESTORE = IPSET_MSG_MAX, /* 14: Enter restore mode */
+       IPSET_CMD_HELP,         /* 15: Get help */
+       IPSET_CMD_VERSION,      /* 16: Get program version */
+       IPSET_CMD_QUIT,         /* 17: Quit from interactive mode */
+
+       IPSET_CMD_MAX,
+
+       IPSET_CMD_COMMIT = IPSET_CMD_MAX, /* 18: Commit buffered commands */
+};
+
+/* Attributes at command level */
+enum {
+       IPSET_ATTR_UNSPEC,
+       IPSET_ATTR_PROTOCOL,    /* 1: Protocol version */
+       IPSET_ATTR_SETNAME,     /* 2: Name of the set */
+       IPSET_ATTR_TYPENAME,    /* 3: Typename */
+       IPSET_ATTR_SETNAME2 = IPSET_ATTR_TYPENAME, /* Setname at rename/swap */
+       IPSET_ATTR_REVISION,    /* 4: Settype revision */
+       IPSET_ATTR_FAMILY,      /* 5: Settype family */
+       IPSET_ATTR_FLAGS,       /* 6: Flags at command level */
+       IPSET_ATTR_DATA,        /* 7: Nested attributes */
+       IPSET_ATTR_ADT,         /* 8: Multiple data containers */
+       IPSET_ATTR_LINENO,      /* 9: Restore lineno */
+       IPSET_ATTR_PROTOCOL_MIN, /* 10: Minimal supported version number */
+       IPSET_ATTR_REVISION_MIN = IPSET_ATTR_PROTOCOL_MIN, /* type rev min */
+       __IPSET_ATTR_CMD_MAX,
+};
+#define IPSET_ATTR_CMD_MAX     (__IPSET_ATTR_CMD_MAX - 1)
+
+/* CADT specific attributes */
+enum {
+       IPSET_ATTR_IP = IPSET_ATTR_UNSPEC + 1,
+       IPSET_ATTR_IP_FROM = IPSET_ATTR_IP,
+       IPSET_ATTR_IP_TO,       /* 2 */
+       IPSET_ATTR_CIDR,        /* 3 */
+       IPSET_ATTR_PORT,        /* 4 */
+       IPSET_ATTR_PORT_FROM = IPSET_ATTR_PORT,
+       IPSET_ATTR_PORT_TO,     /* 5 */
+       IPSET_ATTR_TIMEOUT,     /* 6 */
+       IPSET_ATTR_PROTO,       /* 7 */
+       IPSET_ATTR_CADT_FLAGS,  /* 8 */
+       IPSET_ATTR_CADT_LINENO = IPSET_ATTR_LINENO,     /* 9 */
+       IPSET_ATTR_MARK,        /* 10 */
+       IPSET_ATTR_MARKMASK,    /* 11 */
+       /* Reserve empty slots */
+       IPSET_ATTR_CADT_MAX = 16,
+       /* Create-only specific attributes */
+       IPSET_ATTR_GC,
+       IPSET_ATTR_HASHSIZE,
+       IPSET_ATTR_MAXELEM,
+       IPSET_ATTR_NETMASK,
+       IPSET_ATTR_PROBES,
+       IPSET_ATTR_RESIZE,
+       IPSET_ATTR_SIZE,
+       /* Kernel-only */
+       IPSET_ATTR_ELEMENTS,
+       IPSET_ATTR_REFERENCES,
+       IPSET_ATTR_MEMSIZE,
+
+       __IPSET_ATTR_CREATE_MAX,
+};
+#define IPSET_ATTR_CREATE_MAX  (__IPSET_ATTR_CREATE_MAX - 1)
+
+/* ADT specific attributes */
+enum {
+       IPSET_ATTR_ETHER = IPSET_ATTR_CADT_MAX + 1,
+       IPSET_ATTR_NAME,
+       IPSET_ATTR_NAMEREF,
+       IPSET_ATTR_IP2,
+       IPSET_ATTR_CIDR2,
+       IPSET_ATTR_IP2_TO,
+       IPSET_ATTR_IFACE,
+       IPSET_ATTR_BYTES,
+       IPSET_ATTR_PACKETS,
+       IPSET_ATTR_COMMENT,
+       IPSET_ATTR_SKBMARK,
+       IPSET_ATTR_SKBPRIO,
+       IPSET_ATTR_SKBQUEUE,
+       IPSET_ATTR_PAD,
+       __IPSET_ATTR_ADT_MAX,
+};
+#define IPSET_ATTR_ADT_MAX     (__IPSET_ATTR_ADT_MAX - 1)
+
+/* IP specific attributes */
+enum {
+       IPSET_ATTR_IPADDR_IPV4 = IPSET_ATTR_UNSPEC + 1,
+       IPSET_ATTR_IPADDR_IPV6,
+       __IPSET_ATTR_IPADDR_MAX,
+};
+#define IPSET_ATTR_IPADDR_MAX  (__IPSET_ATTR_IPADDR_MAX - 1)
+
+/* Error codes */
+enum ipset_errno {
+       IPSET_ERR_PRIVATE = 4096,
+       IPSET_ERR_PROTOCOL,
+       IPSET_ERR_FIND_TYPE,
+       IPSET_ERR_MAX_SETS,
+       IPSET_ERR_BUSY,
+       IPSET_ERR_EXIST_SETNAME2,
+       IPSET_ERR_TYPE_MISMATCH,
+       IPSET_ERR_EXIST,
+       IPSET_ERR_INVALID_CIDR,
+       IPSET_ERR_INVALID_NETMASK,
+       IPSET_ERR_INVALID_FAMILY,
+       IPSET_ERR_TIMEOUT,
+       IPSET_ERR_REFERENCED,
+       IPSET_ERR_IPADDR_IPV4,
+       IPSET_ERR_IPADDR_IPV6,
+       IPSET_ERR_COUNTER,
+       IPSET_ERR_COMMENT,
+       IPSET_ERR_INVALID_MARKMASK,
+       IPSET_ERR_SKBINFO,
+
+       /* Type specific error codes */
+       IPSET_ERR_TYPE_SPECIFIC = 4352,
+};
+
+/* Flags at command level or match/target flags, lower half of cmdattrs*/
+enum ipset_cmd_flags {
+       IPSET_FLAG_BIT_EXIST    = 0,
+       IPSET_FLAG_EXIST        = (1 << IPSET_FLAG_BIT_EXIST),
+       IPSET_FLAG_BIT_LIST_SETNAME = 1,
+       IPSET_FLAG_LIST_SETNAME = (1 << IPSET_FLAG_BIT_LIST_SETNAME),
+       IPSET_FLAG_BIT_LIST_HEADER = 2,
+       IPSET_FLAG_LIST_HEADER  = (1 << IPSET_FLAG_BIT_LIST_HEADER),
+       IPSET_FLAG_BIT_SKIP_COUNTER_UPDATE = 3,
+       IPSET_FLAG_SKIP_COUNTER_UPDATE =
+               (1 << IPSET_FLAG_BIT_SKIP_COUNTER_UPDATE),
+       IPSET_FLAG_BIT_SKIP_SUBCOUNTER_UPDATE = 4,
+       IPSET_FLAG_SKIP_SUBCOUNTER_UPDATE =
+               (1 << IPSET_FLAG_BIT_SKIP_SUBCOUNTER_UPDATE),
+       IPSET_FLAG_BIT_MATCH_COUNTERS = 5,
+       IPSET_FLAG_MATCH_COUNTERS = (1 << IPSET_FLAG_BIT_MATCH_COUNTERS),
+       IPSET_FLAG_BIT_RETURN_NOMATCH = 7,
+       IPSET_FLAG_RETURN_NOMATCH = (1 << IPSET_FLAG_BIT_RETURN_NOMATCH),
+       IPSET_FLAG_BIT_MAP_SKBMARK = 8,
+       IPSET_FLAG_MAP_SKBMARK = (1 << IPSET_FLAG_BIT_MAP_SKBMARK),
+       IPSET_FLAG_BIT_MAP_SKBPRIO = 9,
+       IPSET_FLAG_MAP_SKBPRIO = (1 << IPSET_FLAG_BIT_MAP_SKBPRIO),
+       IPSET_FLAG_BIT_MAP_SKBQUEUE = 10,
+       IPSET_FLAG_MAP_SKBQUEUE = (1 << IPSET_FLAG_BIT_MAP_SKBQUEUE),
+       IPSET_FLAG_CMD_MAX = 15,
+};
+
+/* Flags at CADT attribute level, upper half of cmdattrs */
+enum ipset_cadt_flags {
+       IPSET_FLAG_BIT_BEFORE   = 0,
+       IPSET_FLAG_BEFORE       = (1 << IPSET_FLAG_BIT_BEFORE),
+       IPSET_FLAG_BIT_PHYSDEV  = 1,
+       IPSET_FLAG_PHYSDEV      = (1 << IPSET_FLAG_BIT_PHYSDEV),
+       IPSET_FLAG_BIT_NOMATCH  = 2,
+       IPSET_FLAG_NOMATCH      = (1 << IPSET_FLAG_BIT_NOMATCH),
+       IPSET_FLAG_BIT_WITH_COUNTERS = 3,
+       IPSET_FLAG_WITH_COUNTERS = (1 << IPSET_FLAG_BIT_WITH_COUNTERS),
+       IPSET_FLAG_BIT_WITH_COMMENT = 4,
+       IPSET_FLAG_WITH_COMMENT = (1 << IPSET_FLAG_BIT_WITH_COMMENT),
+       IPSET_FLAG_BIT_WITH_FORCEADD = 5,
+       IPSET_FLAG_WITH_FORCEADD = (1 << IPSET_FLAG_BIT_WITH_FORCEADD),
+       IPSET_FLAG_BIT_WITH_SKBINFO = 6,
+       IPSET_FLAG_WITH_SKBINFO = (1 << IPSET_FLAG_BIT_WITH_SKBINFO),
+       IPSET_FLAG_CADT_MAX     = 15,
+};
+
+/* The flag bits which correspond to the non-extension create flags */
+enum ipset_create_flags {
+       IPSET_CREATE_FLAG_BIT_FORCEADD = 0,
+       IPSET_CREATE_FLAG_FORCEADD = (1 << IPSET_CREATE_FLAG_BIT_FORCEADD),
+       IPSET_CREATE_FLAG_BIT_MAX = 7,
+};
+
+/* Commands with settype-specific attributes */
+enum ipset_adt {
+       IPSET_ADD,
+       IPSET_DEL,
+       IPSET_TEST,
+       IPSET_ADT_MAX,
+       IPSET_CREATE = IPSET_ADT_MAX,
+       IPSET_CADT_MAX,
+};
+
+/* Sets are identified by an index in kernel space. Tweak with ip_set_id_t
+ * and IPSET_INVALID_ID if you want to increase the max number of sets.
+ */
+typedef __u16 ip_set_id_t;
+
+#define IPSET_INVALID_ID               65535
+
+enum ip_set_dim {
+       IPSET_DIM_ZERO = 0,
+       IPSET_DIM_ONE,
+       IPSET_DIM_TWO,
+       IPSET_DIM_THREE,
+       /* Max dimension in elements.
+        * If changed, new revision of iptables match/target is required.
+        */
+       IPSET_DIM_MAX = 6,
+       /* Backward compatibility: set match revision 2 */
+       IPSET_BIT_RETURN_NOMATCH = 7,
+};
+
+/* Option flags for kernel operations */
+enum ip_set_kopt {
+       IPSET_INV_MATCH = (1 << IPSET_DIM_ZERO),
+       IPSET_DIM_ONE_SRC = (1 << IPSET_DIM_ONE),
+       IPSET_DIM_TWO_SRC = (1 << IPSET_DIM_TWO),
+       IPSET_DIM_THREE_SRC = (1 << IPSET_DIM_THREE),
+       IPSET_RETURN_NOMATCH = (1 << IPSET_BIT_RETURN_NOMATCH),
+};
+
+enum {
+       IPSET_COUNTER_NONE = 0,
+       IPSET_COUNTER_EQ,
+       IPSET_COUNTER_NE,
+       IPSET_COUNTER_LT,
+       IPSET_COUNTER_GT,
+};
+
+/* Backward compatibility for set match v3 */
+struct ip_set_counter_match0 {
+       __u8 op;
+       __u64 value;
+};
+
+struct ip_set_counter_match {
+       __aligned_u64 value;
+       __u8 op;
+};
+
+/* Interface to iptables/ip6tables */
+
+#define SO_IP_SET              83
+
+union ip_set_name_index {
+       char name[IPSET_MAXNAMELEN];
+       ip_set_id_t index;
+};
+
+#define IP_SET_OP_GET_BYNAME   0x00000006      /* Get set index by name */
+struct ip_set_req_get_set {
+       unsigned int op;
+       unsigned int version;
+       union ip_set_name_index set;
+};
+
+#define IP_SET_OP_GET_BYINDEX  0x00000007      /* Get set name by index */
+/* Uses ip_set_req_get_set */
+
+#define IP_SET_OP_GET_FNAME    0x00000008      /* Get set index and family */
+struct ip_set_req_get_set_family {
+       unsigned int op;
+       unsigned int version;
+       unsigned int family;
+       union ip_set_name_index set;
+};
+
+#define IP_SET_OP_VERSION      0x00000100      /* Ask kernel version */
+struct ip_set_req_version {
+       unsigned int op;
+       unsigned int version;
+};
+
+#endif /* _IP_SET_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..4120970
--- /dev/null
@@ -0,0 +1,185 @@
+#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. */
+
+/* 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)
+
+
+/* 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 /* _X_TABLES_H */
diff --git a/include/uapi/linux/netfilter/xt_set.h b/include/uapi/linux/netfilter/xt_set.h
new file mode 100644 (file)
index 0000000..d4e0234
--- /dev/null
@@ -0,0 +1,93 @@
+#ifndef _XT_SET_H
+#define _XT_SET_H
+
+#include <linux/types.h>
+#include <linux/netfilter/ipset/ip_set.h>
+
+/* Revision 0 interface: backward compatible with netfilter/iptables */
+
+/*
+ * Option flags for kernel operations (xt_set_info_v0)
+ */
+#define IPSET_SRC              0x01    /* Source match/add */
+#define IPSET_DST              0x02    /* Destination match/add */
+#define IPSET_MATCH_INV                0x04    /* Inverse matching */
+
+struct xt_set_info_v0 {
+       ip_set_id_t index;
+       union {
+               __u32 flags[IPSET_DIM_MAX + 1];
+               struct {
+                       __u32 __flags[IPSET_DIM_MAX];
+                       __u8 dim;
+                       __u8 flags;
+               } compat;
+       } u;
+};
+
+/* match and target infos */
+struct xt_set_info_match_v0 {
+       struct xt_set_info_v0 match_set;
+};
+
+struct xt_set_info_target_v0 {
+       struct xt_set_info_v0 add_set;
+       struct xt_set_info_v0 del_set;
+};
+
+/* Revision 1  match and target */
+
+struct xt_set_info {
+       ip_set_id_t index;
+       __u8 dim;
+       __u8 flags;
+};
+
+/* match and target infos */
+struct xt_set_info_match_v1 {
+       struct xt_set_info match_set;
+};
+
+struct xt_set_info_target_v1 {
+       struct xt_set_info add_set;
+       struct xt_set_info del_set;
+};
+
+/* Revision 2 target */
+
+struct xt_set_info_target_v2 {
+       struct xt_set_info add_set;
+       struct xt_set_info del_set;
+       __u32 flags;
+       __u32 timeout;
+};
+
+/* Revision 3 match */
+
+struct xt_set_info_match_v3 {
+       struct xt_set_info match_set;
+       struct ip_set_counter_match0 packets;
+       struct ip_set_counter_match0 bytes;
+       __u32 flags;
+};
+
+/* Revision 3 target */
+
+struct xt_set_info_target_v3 {
+       struct xt_set_info add_set;
+       struct xt_set_info del_set;
+       struct xt_set_info map_set;
+       __u32 flags;
+       __u32 timeout;
+};
+
+/* Revision 4 match */
+
+struct xt_set_info_match_v4 {
+       struct xt_set_info match_set;
+       struct ip_set_counter_match packets;
+       struct ip_set_counter_match bytes;
+       __u32 flags;
+};
+
+#endif /*_XT_SET_H*/
diff --git a/include/uapi/linux/netfilter/xt_tcpudp.h b/include/uapi/linux/netfilter/xt_tcpudp.h
new file mode 100644 (file)
index 0000000..38aa7b3
--- /dev/null
@@ -0,0 +1,36 @@
+#ifndef _XT_TCPUDP_H
+#define _XT_TCPUDP_H
+
+#include <linux/types.h>
+
+/* TCP matching stuff */
+struct xt_tcp {
+       __u16 spts[2];                  /* Source port range. */
+       __u16 dpts[2];                  /* Destination port range. */
+       __u8 option;                    /* TCP Option iff non-zero*/
+       __u8 flg_mask;                  /* TCP flags mask byte */
+       __u8 flg_cmp;                   /* TCP flags compare byte */
+       __u8 invflags;                  /* Inverse flags */
+};
+
+/* Values for "inv" field in struct ipt_tcp. */
+#define XT_TCP_INV_SRCPT       0x01    /* Invert the sense of source ports. */
+#define XT_TCP_INV_DSTPT       0x02    /* Invert the sense of dest ports. */
+#define XT_TCP_INV_FLAGS       0x04    /* Invert the sense of TCP flags. */
+#define XT_TCP_INV_OPTION      0x08    /* Invert the sense of option test. */
+#define XT_TCP_INV_MASK                0x0F    /* All possible flags. */
+
+/* UDP matching stuff */
+struct xt_udp {
+       __u16 spts[2];                  /* Source port range. */
+       __u16 dpts[2];                  /* Destination port range. */
+       __u8 invflags;                  /* Inverse flags */
+};
+
+/* Values for "invflags" field in struct ipt_udp. */
+#define XT_UDP_INV_SRCPT       0x01    /* Invert the sense of source ports. */
+#define XT_UDP_INV_DSTPT       0x02    /* Invert the sense of dest ports. */
+#define XT_UDP_INV_MASK        0x03    /* All possible flags. */
+
+
+#endif
diff --git a/include/uapi/linux/netfilter_ipv4.h b/include/uapi/linux/netfilter_ipv4.h
new file mode 100644 (file)
index 0000000..a5f4dc7
--- /dev/null
@@ -0,0 +1,79 @@
+/* IPv4-specific defines for netfilter. 
+ * (C)1998 Rusty Russell -- This code is GPL.
+ */
+#ifndef __LINUX_IP_NETFILTER_H
+#define __LINUX_IP_NETFILTER_H
+
+
+#include <linux/netfilter.h>
+
+/* only for userspace compatibility */
+
+#include <limits.h> /* for INT_MIN, INT_MAX */
+
+/* IP Cache bits. */
+/* Src IP address. */
+#define NFC_IP_SRC             0x0001
+/* Dest IP address. */
+#define NFC_IP_DST             0x0002
+/* Input device. */
+#define NFC_IP_IF_IN           0x0004
+/* Output device. */
+#define NFC_IP_IF_OUT          0x0008
+/* TOS. */
+#define NFC_IP_TOS             0x0010
+/* Protocol. */
+#define NFC_IP_PROTO           0x0020
+/* IP options. */
+#define NFC_IP_OPTIONS         0x0040
+/* Frag & flags. */
+#define NFC_IP_FRAG            0x0080
+
+/* Per-protocol information: only matters if proto match. */
+/* TCP flags. */
+#define NFC_IP_TCPFLAGS                0x0100
+/* Source port. */
+#define NFC_IP_SRC_PT          0x0200
+/* Dest port. */
+#define NFC_IP_DST_PT          0x0400
+/* Something else about the proto */
+#define NFC_IP_PROTO_UNKNOWN   0x2000
+
+/* IP Hooks */
+/* After promisc drops, checksum checks. */
+#define NF_IP_PRE_ROUTING      0
+/* If the packet is destined for this box. */
+#define NF_IP_LOCAL_IN         1
+/* If the packet is destined for another interface. */
+#define NF_IP_FORWARD          2
+/* Packets coming from a local process. */
+#define NF_IP_LOCAL_OUT                3
+/* Packets about to hit the wire. */
+#define NF_IP_POST_ROUTING     4
+#define NF_IP_NUMHOOKS         5
+
+enum nf_ip_hook_priorities {
+       NF_IP_PRI_FIRST = INT_MIN,
+       NF_IP_PRI_CONNTRACK_DEFRAG = -400,
+       NF_IP_PRI_RAW = -300,
+       NF_IP_PRI_SELINUX_FIRST = -225,
+       NF_IP_PRI_CONNTRACK = -200,
+       NF_IP_PRI_MANGLE = -150,
+       NF_IP_PRI_NAT_DST = -100,
+       NF_IP_PRI_FILTER = 0,
+       NF_IP_PRI_SECURITY = 50,
+       NF_IP_PRI_NAT_SRC = 100,
+       NF_IP_PRI_SELINUX_LAST = 225,
+       NF_IP_PRI_CONNTRACK_HELPER = 300,
+       NF_IP_PRI_CONNTRACK_CONFIRM = INT_MAX,
+       NF_IP_PRI_LAST = INT_MAX,
+};
+
+/* Arguments for setsockopt SOL_IP: */
+/* 2.0 firewalling went from 64 through 71 (and +256, +512, etc). */
+/* 2.2 firewalling (+ masq) went from 64 through 76 */
+/* 2.4 firewalling went 64 through 67. */
+#define SO_ORIGINAL_DST 80
+
+
+#endif /* __LINUX_IP_NETFILTER_H */
diff --git a/include/uapi/linux/netfilter_ipv4/ip_tables.h b/include/uapi/linux/netfilter_ipv4/ip_tables.h
new file mode 100644 (file)
index 0000000..456fb86
--- /dev/null
@@ -0,0 +1,228 @@
+/*
+ * 25-Jul-1998 Major changes to allow for ip chain table
+ *
+ * 3-Jan-2000 Named tables to allow packet selection for different uses.
+ */
+
+/*
+ *     Format of an IP firewall descriptor
+ *
+ *     src, dst, src_mask, dst_mask are always stored in network byte order.
+ *     flags are stored in host byte order (of course).
+ *     Port numbers are stored in HOST byte order.
+ */
+
+#ifndef _IPTABLES_H
+#define _IPTABLES_H
+
+#include <linux/types.h>
+
+#include <linux/if.h>
+#include <linux/netfilter_ipv4.h>
+
+#include <linux/netfilter/x_tables.h>
+
+#define IPT_FUNCTION_MAXNAMELEN XT_FUNCTION_MAXNAMELEN
+#define IPT_TABLE_MAXNAMELEN XT_TABLE_MAXNAMELEN
+#define ipt_match xt_match
+#define ipt_target xt_target
+#define ipt_table xt_table
+#define ipt_get_revision xt_get_revision
+#define ipt_entry_match xt_entry_match
+#define ipt_entry_target xt_entry_target
+#define ipt_standard_target xt_standard_target
+#define ipt_error_target xt_error_target
+#define ipt_counters xt_counters
+#define IPT_CONTINUE XT_CONTINUE
+#define IPT_RETURN XT_RETURN
+
+/* This group is older than old (iptables < v1.4.0-rc1~89) */
+#include <linux/netfilter/xt_tcpudp.h>
+#define ipt_udp xt_udp
+#define ipt_tcp xt_tcp
+#define IPT_TCP_INV_SRCPT      XT_TCP_INV_SRCPT
+#define IPT_TCP_INV_DSTPT      XT_TCP_INV_DSTPT
+#define IPT_TCP_INV_FLAGS      XT_TCP_INV_FLAGS
+#define IPT_TCP_INV_OPTION     XT_TCP_INV_OPTION
+#define IPT_TCP_INV_MASK       XT_TCP_INV_MASK
+#define IPT_UDP_INV_SRCPT      XT_UDP_INV_SRCPT
+#define IPT_UDP_INV_DSTPT      XT_UDP_INV_DSTPT
+#define IPT_UDP_INV_MASK       XT_UDP_INV_MASK
+
+/* The argument to IPT_SO_ADD_COUNTERS. */
+#define ipt_counters_info xt_counters_info
+/* Standard return verdict, or do jump. */
+#define IPT_STANDARD_TARGET XT_STANDARD_TARGET
+/* Error verdict. */
+#define IPT_ERROR_TARGET XT_ERROR_TARGET
+
+/* fn returns 0 to continue iteration */
+#define IPT_MATCH_ITERATE(e, fn, args...) \
+       XT_MATCH_ITERATE(struct ipt_entry, e, fn, ## args)
+
+/* fn returns 0 to continue iteration */
+#define IPT_ENTRY_ITERATE(entries, size, fn, args...) \
+       XT_ENTRY_ITERATE(struct ipt_entry, entries, size, fn, ## args)
+
+/* Yes, Virginia, you have to zero the padding. */
+struct ipt_ip {
+       /* Source and destination IP addr */
+       struct in_addr src, dst;
+       /* Mask for src and dest IP addr */
+       struct in_addr smsk, dmsk;
+       char iniface[IFNAMSIZ], outiface[IFNAMSIZ];
+       unsigned char iniface_mask[IFNAMSIZ], outiface_mask[IFNAMSIZ];
+
+       /* Protocol, 0 = ANY */
+       __u16 proto;
+
+       /* Flags word */
+       __u8 flags;
+       /* Inverse flags */
+       __u8 invflags;
+};
+
+/* Values for "flag" field in struct ipt_ip (general ip structure). */
+#define IPT_F_FRAG             0x01    /* Set if rule is a fragment rule */
+#define IPT_F_GOTO             0x02    /* Set if jump is a goto */
+#define IPT_F_MASK             0x03    /* All possible flag bits mask. */
+
+/* Values for "inv" field in struct ipt_ip. */
+#define IPT_INV_VIA_IN         0x01    /* Invert the sense of IN IFACE. */
+#define IPT_INV_VIA_OUT                0x02    /* Invert the sense of OUT IFACE */
+#define IPT_INV_TOS            0x04    /* Invert the sense of TOS. */
+#define IPT_INV_SRCIP          0x08    /* Invert the sense of SRC IP. */
+#define IPT_INV_DSTIP          0x10    /* Invert the sense of DST OP. */
+#define IPT_INV_FRAG           0x20    /* Invert the sense of FRAG. */
+#define IPT_INV_PROTO          XT_INV_PROTO
+#define IPT_INV_MASK           0x7F    /* All possible flag bits mask. */
+
+/* This structure defines each of the firewall rules.  Consists of 3
+   parts which are 1) general IP header stuff 2) match specific
+   stuff 3) the target to perform if the rule matches */
+struct ipt_entry {
+       struct ipt_ip ip;
+
+       /* Mark with fields that we care about. */
+       unsigned int nfcache;
+
+       /* Size of ipt_entry + matches */
+       __u16 target_offset;
+       /* Size of ipt_entry + matches + target */
+       __u16 next_offset;
+
+       /* Back pointer */
+       unsigned int comefrom;
+
+       /* Packet and byte counters. */
+       struct xt_counters counters;
+
+       /* The matches (if any), then the target. */
+       unsigned char elems[0];
+};
+
+/*
+ * New IP firewall options for [gs]etsockopt at the RAW IP level.
+ * Unlike BSD Linux inherits IP options so you don't have to use a raw
+ * socket for this. Instead we check rights in the calls.
+ *
+ * ATTENTION: check linux/in.h before adding new number here.
+ */
+#define IPT_BASE_CTL           64
+
+#define IPT_SO_SET_REPLACE     (IPT_BASE_CTL)
+#define IPT_SO_SET_ADD_COUNTERS        (IPT_BASE_CTL + 1)
+#define IPT_SO_SET_MAX         IPT_SO_SET_ADD_COUNTERS
+
+#define IPT_SO_GET_INFO                        (IPT_BASE_CTL)
+#define IPT_SO_GET_ENTRIES             (IPT_BASE_CTL + 1)
+#define IPT_SO_GET_REVISION_MATCH      (IPT_BASE_CTL + 2)
+#define IPT_SO_GET_REVISION_TARGET     (IPT_BASE_CTL + 3)
+#define IPT_SO_GET_MAX                 IPT_SO_GET_REVISION_TARGET
+
+/* ICMP matching stuff */
+struct ipt_icmp {
+       __u8 type;                              /* type to match */
+       __u8 code[2];                           /* range of code */
+       __u8 invflags;                          /* Inverse flags */
+};
+
+/* Values for "inv" field for struct ipt_icmp. */
+#define IPT_ICMP_INV   0x01    /* Invert the sense of type/code test */
+
+/* The argument to IPT_SO_GET_INFO */
+struct ipt_getinfo {
+       /* Which table: caller fills this in. */
+       char name[XT_TABLE_MAXNAMELEN];
+
+       /* Kernel fills these in. */
+       /* Which hook entry points are valid: bitmask */
+       unsigned int valid_hooks;
+
+       /* Hook entry points: one per netfilter hook. */
+       unsigned int hook_entry[NF_INET_NUMHOOKS];
+
+       /* Underflow points. */
+       unsigned int underflow[NF_INET_NUMHOOKS];
+
+       /* Number of entries */
+       unsigned int num_entries;
+
+       /* Size of entries. */
+       unsigned int size;
+};
+
+/* The argument to IPT_SO_SET_REPLACE. */
+struct ipt_replace {
+       /* Which table. */
+       char name[XT_TABLE_MAXNAMELEN];
+
+       /* Which hook entry points are valid: bitmask.  You can't
+           change this. */
+       unsigned int valid_hooks;
+
+       /* Number of entries */
+       unsigned int num_entries;
+
+       /* Total size of new entries */
+       unsigned int size;
+
+       /* Hook entry points. */
+       unsigned int hook_entry[NF_INET_NUMHOOKS];
+
+       /* Underflow points. */
+       unsigned int underflow[NF_INET_NUMHOOKS];
+
+       /* Information about old entries: */
+       /* Number of counters (must be equal to current number of entries). */
+       unsigned int num_counters;
+       /* The old entries' counters. */
+       struct xt_counters *counters;
+
+       /* The entries (hang off end: not really an array). */
+       struct ipt_entry entries[0];
+};
+
+/* The argument to IPT_SO_GET_ENTRIES. */
+struct ipt_get_entries {
+       /* Which table: user fills this in. */
+       char name[XT_TABLE_MAXNAMELEN];
+
+       /* User fills this in: total entry size. */
+       unsigned int size;
+
+       /* The entries. */
+       struct ipt_entry entrytable[0];
+};
+
+/* Helper functions */
+static __inline__ struct xt_entry_target *
+ipt_get_target(struct ipt_entry *e)
+{
+       return (void *)e + e->target_offset;
+}
+
+/*
+ *     Main firewall chains definitions and global var's definitions.
+ */
+#endif /* _IPTABLES_H */
diff --git a/include/uapi/linux/netfilter_ipv6.h b/include/uapi/linux/netfilter_ipv6.h
new file mode 100644 (file)
index 0000000..8483d1d
--- /dev/null
@@ -0,0 +1,77 @@
+/* IPv6-specific defines for netfilter. 
+ * (C)1998 Rusty Russell -- This code is GPL.
+ * (C)1999 David Jeffery
+ *   this header was blatantly ripped from netfilter_ipv4.h 
+ *   it's amazing what adding a bunch of 6s can do =8^)
+ */
+#ifndef __LINUX_IP6_NETFILTER_H
+#define __LINUX_IP6_NETFILTER_H
+
+
+#include <linux/netfilter.h>
+
+/* only for userspace compatibility */
+
+#include <limits.h> /* for INT_MIN, INT_MAX */
+
+/* IP Cache bits. */
+/* Src IP address. */
+#define NFC_IP6_SRC              0x0001
+/* Dest IP address. */
+#define NFC_IP6_DST              0x0002
+/* Input device. */
+#define NFC_IP6_IF_IN            0x0004
+/* Output device. */
+#define NFC_IP6_IF_OUT           0x0008
+/* TOS. */
+#define NFC_IP6_TOS              0x0010
+/* Protocol. */
+#define NFC_IP6_PROTO            0x0020
+/* IP options. */
+#define NFC_IP6_OPTIONS          0x0040
+/* Frag & flags. */
+#define NFC_IP6_FRAG             0x0080
+
+
+/* Per-protocol information: only matters if proto match. */
+/* TCP flags. */
+#define NFC_IP6_TCPFLAGS         0x0100
+/* Source port. */
+#define NFC_IP6_SRC_PT           0x0200
+/* Dest port. */
+#define NFC_IP6_DST_PT           0x0400
+/* Something else about the proto */
+#define NFC_IP6_PROTO_UNKNOWN    0x2000
+
+/* IP6 Hooks */
+/* After promisc drops, checksum checks. */
+#define NF_IP6_PRE_ROUTING     0
+/* If the packet is destined for this box. */
+#define NF_IP6_LOCAL_IN                1
+/* If the packet is destined for another interface. */
+#define NF_IP6_FORWARD         2
+/* Packets coming from a local process. */
+#define NF_IP6_LOCAL_OUT               3
+/* Packets about to hit the wire. */
+#define NF_IP6_POST_ROUTING    4
+#define NF_IP6_NUMHOOKS                5
+
+
+enum nf_ip6_hook_priorities {
+       NF_IP6_PRI_FIRST = INT_MIN,
+       NF_IP6_PRI_CONNTRACK_DEFRAG = -400,
+       NF_IP6_PRI_RAW = -300,
+       NF_IP6_PRI_SELINUX_FIRST = -225,
+       NF_IP6_PRI_CONNTRACK = -200,
+       NF_IP6_PRI_MANGLE = -150,
+       NF_IP6_PRI_NAT_DST = -100,
+       NF_IP6_PRI_FILTER = 0,
+       NF_IP6_PRI_SECURITY = 50,
+       NF_IP6_PRI_NAT_SRC = 100,
+       NF_IP6_PRI_SELINUX_LAST = 225,
+       NF_IP6_PRI_CONNTRACK_HELPER = 300,
+       NF_IP6_PRI_LAST = INT_MAX,
+};
+
+
+#endif /* __LINUX_IP6_NETFILTER_H */
diff --git a/include/uapi/linux/netfilter_ipv6/ip6_tables.h b/include/uapi/linux/netfilter_ipv6/ip6_tables.h
new file mode 100644 (file)
index 0000000..fcc8cca
--- /dev/null
@@ -0,0 +1,269 @@
+/*
+ * 25-Jul-1998 Major changes to allow for ip chain table
+ *
+ * 3-Jan-2000 Named tables to allow packet selection for different uses.
+ */
+
+/*
+ *     Format of an IP6 firewall descriptor
+ *
+ *     src, dst, src_mask, dst_mask are always stored in network byte order.
+ *     flags are stored in host byte order (of course).
+ *     Port numbers are stored in HOST byte order.
+ */
+
+#ifndef _IP6_TABLES_H
+#define _IP6_TABLES_H
+
+#include <linux/types.h>
+
+#include <linux/if.h>
+#include <linux/netfilter_ipv6.h>
+
+#include <linux/netfilter/x_tables.h>
+
+#define IP6T_FUNCTION_MAXNAMELEN XT_FUNCTION_MAXNAMELEN
+#define IP6T_TABLE_MAXNAMELEN XT_TABLE_MAXNAMELEN
+#define ip6t_match xt_match
+#define ip6t_target xt_target
+#define ip6t_table xt_table
+#define ip6t_get_revision xt_get_revision
+#define ip6t_entry_match xt_entry_match
+#define ip6t_entry_target xt_entry_target
+#define ip6t_standard_target xt_standard_target
+#define ip6t_error_target xt_error_target
+#define ip6t_counters xt_counters
+#define IP6T_CONTINUE XT_CONTINUE
+#define IP6T_RETURN XT_RETURN
+
+/* Pre-iptables-1.4.0 */
+#include <linux/netfilter/xt_tcpudp.h>
+#define ip6t_tcp xt_tcp
+#define ip6t_udp xt_udp
+#define IP6T_TCP_INV_SRCPT     XT_TCP_INV_SRCPT
+#define IP6T_TCP_INV_DSTPT     XT_TCP_INV_DSTPT
+#define IP6T_TCP_INV_FLAGS     XT_TCP_INV_FLAGS
+#define IP6T_TCP_INV_OPTION    XT_TCP_INV_OPTION
+#define IP6T_TCP_INV_MASK      XT_TCP_INV_MASK
+#define IP6T_UDP_INV_SRCPT     XT_UDP_INV_SRCPT
+#define IP6T_UDP_INV_DSTPT     XT_UDP_INV_DSTPT
+#define IP6T_UDP_INV_MASK      XT_UDP_INV_MASK
+
+#define ip6t_counters_info xt_counters_info
+#define IP6T_STANDARD_TARGET XT_STANDARD_TARGET
+#define IP6T_ERROR_TARGET XT_ERROR_TARGET
+#define IP6T_MATCH_ITERATE(e, fn, args...) \
+       XT_MATCH_ITERATE(struct ip6t_entry, e, fn, ## args)
+#define IP6T_ENTRY_ITERATE(entries, size, fn, args...) \
+       XT_ENTRY_ITERATE(struct ip6t_entry, entries, size, fn, ## args)
+
+/* Yes, Virginia, you have to zero the padding. */
+struct ip6t_ip6 {
+       /* Source and destination IP6 addr */
+       struct in6_addr src, dst;               
+       /* Mask for src and dest IP6 addr */
+       struct in6_addr smsk, dmsk;
+       char iniface[IFNAMSIZ], outiface[IFNAMSIZ];
+       unsigned char iniface_mask[IFNAMSIZ], outiface_mask[IFNAMSIZ];
+
+       /* Upper protocol number
+        * - The allowed value is 0 (any) or protocol number of last parsable
+        *   header, which is 50 (ESP), 59 (No Next Header), 135 (MH), or
+        *   the non IPv6 extension headers.
+        * - The protocol numbers of IPv6 extension headers except of ESP and
+        *   MH do not match any packets.
+        * - You also need to set IP6T_FLAGS_PROTO to "flags" to check protocol.
+        */
+       __u16 proto;
+       /* TOS to match iff flags & IP6T_F_TOS */
+       __u8 tos;
+
+       /* Flags word */
+       __u8 flags;
+       /* Inverse flags */
+       __u8 invflags;
+};
+
+/* Values for "flag" field in struct ip6t_ip6 (general ip6 structure). */
+#define IP6T_F_PROTO           0x01    /* Set if rule cares about upper 
+                                          protocols */
+#define IP6T_F_TOS             0x02    /* Match the TOS. */
+#define IP6T_F_GOTO            0x04    /* Set if jump is a goto */
+#define IP6T_F_MASK            0x07    /* All possible flag bits mask. */
+
+/* Values for "inv" field in struct ip6t_ip6. */
+#define IP6T_INV_VIA_IN                0x01    /* Invert the sense of IN IFACE. */
+#define IP6T_INV_VIA_OUT               0x02    /* Invert the sense of OUT IFACE */
+#define IP6T_INV_TOS           0x04    /* Invert the sense of TOS. */
+#define IP6T_INV_SRCIP         0x08    /* Invert the sense of SRC IP. */
+#define IP6T_INV_DSTIP         0x10    /* Invert the sense of DST OP. */
+#define IP6T_INV_FRAG          0x20    /* Invert the sense of FRAG. */
+#define IP6T_INV_PROTO         XT_INV_PROTO
+#define IP6T_INV_MASK          0x7F    /* All possible flag bits mask. */
+
+/* This structure defines each of the firewall rules.  Consists of 3
+   parts which are 1) general IP header stuff 2) match specific
+   stuff 3) the target to perform if the rule matches */
+struct ip6t_entry {
+       struct ip6t_ip6 ipv6;
+
+       /* Mark with fields that we care about. */
+       unsigned int nfcache;
+
+       /* Size of ipt_entry + matches */
+       __u16 target_offset;
+       /* Size of ipt_entry + matches + target */
+       __u16 next_offset;
+
+       /* Back pointer */
+       unsigned int comefrom;
+
+       /* Packet and byte counters. */
+       struct xt_counters counters;
+
+       /* The matches (if any), then the target. */
+       unsigned char elems[0];
+};
+
+/* Standard entry */
+struct ip6t_standard {
+       struct ip6t_entry entry;
+       struct xt_standard_target target;
+};
+
+struct ip6t_error {
+       struct ip6t_entry entry;
+       struct xt_error_target target;
+};
+
+#define IP6T_ENTRY_INIT(__size)                                                       \
+{                                                                             \
+       .target_offset  = sizeof(struct ip6t_entry),                           \
+       .next_offset    = (__size),                                            \
+}
+
+#define IP6T_STANDARD_INIT(__verdict)                                         \
+{                                                                             \
+       .entry          = IP6T_ENTRY_INIT(sizeof(struct ip6t_standard)),       \
+       .target         = XT_TARGET_INIT(XT_STANDARD_TARGET,                   \
+                                        sizeof(struct xt_standard_target)),   \
+       .target.verdict = -(__verdict) - 1,                                    \
+}
+
+#define IP6T_ERROR_INIT                                                               \
+{                                                                             \
+       .entry          = IP6T_ENTRY_INIT(sizeof(struct ip6t_error)),          \
+       .target         = XT_TARGET_INIT(XT_ERROR_TARGET,                      \
+                                        sizeof(struct xt_error_target)),      \
+       .target.errorname = "ERROR",                                           \
+}
+
+/*
+ * New IP firewall options for [gs]etsockopt at the RAW IP level.
+ * Unlike BSD Linux inherits IP options so you don't have to use
+ * a raw socket for this. Instead we check rights in the calls.
+ *
+ * ATTENTION: check linux/in6.h before adding new number here.
+ */
+#define IP6T_BASE_CTL                  64
+
+#define IP6T_SO_SET_REPLACE            (IP6T_BASE_CTL)
+#define IP6T_SO_SET_ADD_COUNTERS       (IP6T_BASE_CTL + 1)
+#define IP6T_SO_SET_MAX                        IP6T_SO_SET_ADD_COUNTERS
+
+#define IP6T_SO_GET_INFO               (IP6T_BASE_CTL)
+#define IP6T_SO_GET_ENTRIES            (IP6T_BASE_CTL + 1)
+#define IP6T_SO_GET_REVISION_MATCH     (IP6T_BASE_CTL + 4)
+#define IP6T_SO_GET_REVISION_TARGET    (IP6T_BASE_CTL + 5)
+#define IP6T_SO_GET_MAX                        IP6T_SO_GET_REVISION_TARGET
+
+/* obtain original address if REDIRECT'd connection */
+#define IP6T_SO_ORIGINAL_DST            80
+
+/* ICMP matching stuff */
+struct ip6t_icmp {
+       __u8 type;                              /* type to match */
+       __u8 code[2];                           /* range of code */
+       __u8 invflags;                          /* Inverse flags */
+};
+
+/* Values for "inv" field for struct ipt_icmp. */
+#define IP6T_ICMP_INV  0x01    /* Invert the sense of type/code test */
+
+/* The argument to IP6T_SO_GET_INFO */
+struct ip6t_getinfo {
+       /* Which table: caller fills this in. */
+       char name[XT_TABLE_MAXNAMELEN];
+
+       /* Kernel fills these in. */
+       /* Which hook entry points are valid: bitmask */
+       unsigned int valid_hooks;
+
+       /* Hook entry points: one per netfilter hook. */
+       unsigned int hook_entry[NF_INET_NUMHOOKS];
+
+       /* Underflow points. */
+       unsigned int underflow[NF_INET_NUMHOOKS];
+
+       /* Number of entries */
+       unsigned int num_entries;
+
+       /* Size of entries. */
+       unsigned int size;
+};
+
+/* The argument to IP6T_SO_SET_REPLACE. */
+struct ip6t_replace {
+       /* Which table. */
+       char name[XT_TABLE_MAXNAMELEN];
+
+       /* Which hook entry points are valid: bitmask.  You can't
+           change this. */
+       unsigned int valid_hooks;
+
+       /* Number of entries */
+       unsigned int num_entries;
+
+       /* Total size of new entries */
+       unsigned int size;
+
+       /* Hook entry points. */
+       unsigned int hook_entry[NF_INET_NUMHOOKS];
+
+       /* Underflow points. */
+       unsigned int underflow[NF_INET_NUMHOOKS];
+
+       /* Information about old entries: */
+       /* Number of counters (must be equal to current number of entries). */
+       unsigned int num_counters;
+       /* The old entries' counters. */
+       struct xt_counters *counters;
+
+       /* The entries (hang off end: not really an array). */
+       struct ip6t_entry entries[0];
+};
+
+/* The argument to IP6T_SO_GET_ENTRIES. */
+struct ip6t_get_entries {
+       /* Which table: user fills this in. */
+       char name[XT_TABLE_MAXNAMELEN];
+
+       /* User fills this in: total entry size. */
+       unsigned int size;
+
+       /* The entries. */
+       struct ip6t_entry entrytable[0];
+};
+
+/* Helper functions */
+static __inline__ struct xt_entry_target *
+ip6t_get_target(struct ip6t_entry *e)
+{
+       return (void *)e + e->target_offset;
+}
+
+/*
+ *     Main firewall chains definitions and global var's definitions.
+ */
+
+#endif /* _IP6_TABLES_H */
diff --git a/include/uapi/linux/netlink.h b/include/uapi/linux/netlink.h
new file mode 100644 (file)
index 0000000..ec0690b
--- /dev/null
@@ -0,0 +1,246 @@
+#ifndef __LINUX_NETLINK_H
+#define __LINUX_NETLINK_H
+
+#include <linux/kernel.h>
+#include <linux/socket.h> /* for __kernel_sa_family_t */
+#include <linux/types.h>
+
+#define NETLINK_ROUTE          0       /* Routing/device hook                          */
+#define NETLINK_UNUSED         1       /* Unused number                                */
+#define NETLINK_USERSOCK       2       /* Reserved for user mode socket protocols      */
+#define NETLINK_FIREWALL       3       /* Unused number, formerly ip_queue             */
+#define NETLINK_SOCK_DIAG      4       /* socket monitoring                            */
+#define NETLINK_NFLOG          5       /* netfilter/iptables ULOG */
+#define NETLINK_XFRM           6       /* ipsec */
+#define NETLINK_SELINUX                7       /* SELinux event notifications */
+#define NETLINK_ISCSI          8       /* Open-iSCSI */
+#define NETLINK_AUDIT          9       /* auditing */
+#define NETLINK_FIB_LOOKUP     10      
+#define NETLINK_CONNECTOR      11
+#define NETLINK_NETFILTER      12      /* netfilter subsystem */
+#define NETLINK_IP6_FW         13
+#define NETLINK_DNRTMSG                14      /* DECnet routing messages */
+#define NETLINK_KOBJECT_UEVENT 15      /* Kernel messages to userspace */
+#define NETLINK_GENERIC                16
+/* leave room for NETLINK_DM (DM Events) */
+#define NETLINK_SCSITRANSPORT  18      /* SCSI Transports */
+#define NETLINK_ECRYPTFS       19
+#define NETLINK_RDMA           20
+#define NETLINK_CRYPTO         21      /* Crypto layer */
+#define NETLINK_SMC            22      /* SMC monitoring */
+
+#define NETLINK_INET_DIAG      NETLINK_SOCK_DIAG
+
+#define MAX_LINKS 32           
+
+struct sockaddr_nl {
+       __kernel_sa_family_t    nl_family;      /* AF_NETLINK   */
+       unsigned short  nl_pad;         /* zero         */
+       __u32           nl_pid;         /* port ID      */
+               __u32           nl_groups;      /* multicast groups mask */
+};
+
+struct nlmsghdr {
+       __u32           nlmsg_len;      /* Length of message including header */
+       __u16           nlmsg_type;     /* Message content */
+       __u16           nlmsg_flags;    /* Additional flags */
+       __u32           nlmsg_seq;      /* Sequence number */
+       __u32           nlmsg_pid;      /* Sending process port ID */
+};
+
+/* Flags values */
+
+#define NLM_F_REQUEST          0x01    /* It is request message.       */
+#define NLM_F_MULTI            0x02    /* Multipart message, terminated by NLMSG_DONE */
+#define NLM_F_ACK              0x04    /* Reply with ack, with zero or error code */
+#define NLM_F_ECHO             0x08    /* Echo this request            */
+#define NLM_F_DUMP_INTR                0x10    /* Dump was inconsistent due to sequence change */
+#define NLM_F_DUMP_FILTERED    0x20    /* Dump was filtered as requested */
+
+/* Modifiers to GET request */
+#define NLM_F_ROOT     0x100   /* specify tree root    */
+#define NLM_F_MATCH    0x200   /* return all matching  */
+#define NLM_F_ATOMIC   0x400   /* atomic GET           */
+#define NLM_F_DUMP     (NLM_F_ROOT|NLM_F_MATCH)
+
+/* Modifiers to NEW request */
+#define NLM_F_REPLACE  0x100   /* Override existing            */
+#define NLM_F_EXCL     0x200   /* Do not touch, if it exists   */
+#define NLM_F_CREATE   0x400   /* Create, if it does not exist */
+#define NLM_F_APPEND   0x800   /* Add to end of list           */
+
+/* Modifiers to DELETE request */
+#define NLM_F_NONREC   0x100   /* Do not delete recursively    */
+
+/* Flags for ACK message */
+#define NLM_F_CAPPED   0x100   /* request was capped */
+#define NLM_F_ACK_TLVS 0x200   /* extended ACK TVLs were included */
+
+/*
+   4.4BSD ADD          NLM_F_CREATE|NLM_F_EXCL
+   4.4BSD CHANGE       NLM_F_REPLACE
+
+   True CHANGE         NLM_F_CREATE|NLM_F_REPLACE
+   Append              NLM_F_CREATE
+   Check               NLM_F_EXCL
+ */
+
+#define NLMSG_ALIGNTO  4U
+#define NLMSG_ALIGN(len) ( ((len)+NLMSG_ALIGNTO-1) & ~(NLMSG_ALIGNTO-1) )
+#define NLMSG_HDRLEN    ((int) NLMSG_ALIGN(sizeof(struct nlmsghdr)))
+#define NLMSG_LENGTH(len) ((len) + NLMSG_HDRLEN)
+#define NLMSG_SPACE(len) NLMSG_ALIGN(NLMSG_LENGTH(len))
+#define NLMSG_DATA(nlh)  ((void*)(((char*)nlh) + NLMSG_LENGTH(0)))
+#define NLMSG_NEXT(nlh,len)     ((len) -= NLMSG_ALIGN((nlh)->nlmsg_len), \
+                                 (struct nlmsghdr*)(((char*)(nlh)) + NLMSG_ALIGN((nlh)->nlmsg_len)))
+#define NLMSG_OK(nlh,len) ((len) >= (int)sizeof(struct nlmsghdr) && \
+                          (nlh)->nlmsg_len >= sizeof(struct nlmsghdr) && \
+                          (nlh)->nlmsg_len <= (len))
+#define NLMSG_PAYLOAD(nlh,len) ((nlh)->nlmsg_len - NLMSG_SPACE((len)))
+
+#define NLMSG_NOOP             0x1     /* Nothing.             */
+#define NLMSG_ERROR            0x2     /* Error                */
+#define NLMSG_DONE             0x3     /* End of a dump        */
+#define NLMSG_OVERRUN          0x4     /* Data lost            */
+
+#define NLMSG_MIN_TYPE         0x10    /* < 0x10: reserved control messages */
+
+struct nlmsgerr {
+       int             error;
+       struct nlmsghdr msg;
+       /*
+        * followed by the message contents unless NETLINK_CAP_ACK was set
+        * or the ACK indicates success (error == 0)
+        * message length is aligned with NLMSG_ALIGN()
+        */
+       /*
+        * followed by TLVs defined in enum nlmsgerr_attrs
+        * if NETLINK_EXT_ACK was set
+        */
+};
+
+/**
+ * enum nlmsgerr_attrs - nlmsgerr attributes
+ * @NLMSGERR_ATTR_UNUSED: unused
+ * @NLMSGERR_ATTR_MSG: error message string (string)
+ * @NLMSGERR_ATTR_OFFS: offset of the invalid attribute in the original
+ *      message, counting from the beginning of the header (u32)
+ * @NLMSGERR_ATTR_COOKIE: arbitrary subsystem specific cookie to
+ *     be used - in the success case - to identify a created
+ *     object or operation or similar (binary)
+ * @__NLMSGERR_ATTR_MAX: number of attributes
+ * @NLMSGERR_ATTR_MAX: highest attribute number
+ */
+enum nlmsgerr_attrs {
+       NLMSGERR_ATTR_UNUSED,
+       NLMSGERR_ATTR_MSG,
+       NLMSGERR_ATTR_OFFS,
+       NLMSGERR_ATTR_COOKIE,
+
+       __NLMSGERR_ATTR_MAX,
+       NLMSGERR_ATTR_MAX = __NLMSGERR_ATTR_MAX - 1
+};
+
+#define NETLINK_ADD_MEMBERSHIP         1
+#define NETLINK_DROP_MEMBERSHIP                2
+#define NETLINK_PKTINFO                        3
+#define NETLINK_BROADCAST_ERROR                4
+#define NETLINK_NO_ENOBUFS             5
+#define NETLINK_RX_RING                        6
+#define NETLINK_TX_RING                        7
+#define NETLINK_LISTEN_ALL_NSID                8
+#define NETLINK_LIST_MEMBERSHIPS       9
+#define NETLINK_CAP_ACK                        10
+#define NETLINK_EXT_ACK                        11
+
+struct nl_pktinfo {
+       __u32   group;
+};
+
+struct nl_mmap_req {
+       unsigned int    nm_block_size;
+       unsigned int    nm_block_nr;
+       unsigned int    nm_frame_size;
+       unsigned int    nm_frame_nr;
+};
+
+struct nl_mmap_hdr {
+       unsigned int    nm_status;
+       unsigned int    nm_len;
+       __u32           nm_group;
+       /* credentials */
+       __u32           nm_pid;
+       __u32           nm_uid;
+       __u32           nm_gid;
+};
+
+enum nl_mmap_status {
+       NL_MMAP_STATUS_UNUSED,
+       NL_MMAP_STATUS_RESERVED,
+       NL_MMAP_STATUS_VALID,
+       NL_MMAP_STATUS_COPY,
+       NL_MMAP_STATUS_SKIP,
+};
+
+#define NL_MMAP_MSG_ALIGNMENT          NLMSG_ALIGNTO
+#define NL_MMAP_MSG_ALIGN(sz)          __ALIGN_KERNEL(sz, NL_MMAP_MSG_ALIGNMENT)
+#define NL_MMAP_HDRLEN                 NL_MMAP_MSG_ALIGN(sizeof(struct nl_mmap_hdr))
+
+#define NET_MAJOR 36           /* Major 36 is reserved for networking                                          */
+
+enum {
+       NETLINK_UNCONNECTED = 0,
+       NETLINK_CONNECTED,
+};
+
+/*
+ *  <------- NLA_HDRLEN ------> <-- NLA_ALIGN(payload)-->
+ * +---------------------+- - -+- - - - - - - - - -+- - -+
+ * |        Header       | Pad |     Payload       | Pad |
+ * |   (struct nlattr)   | ing |                   | ing |
+ * +---------------------+- - -+- - - - - - - - - -+- - -+
+ *  <-------------- nlattr->nla_len -------------->
+ */
+
+struct nlattr {
+       __u16           nla_len;
+       __u16           nla_type;
+};
+
+/*
+ * nla_type (16 bits)
+ * +---+---+-------------------------------+
+ * | N | O | Attribute Type                |
+ * +---+---+-------------------------------+
+ * N := Carries nested attributes
+ * O := Payload stored in network byte order
+ *
+ * Note: The N and O flag are mutually exclusive.
+ */
+#define NLA_F_NESTED           (1 << 15)
+#define NLA_F_NET_BYTEORDER    (1 << 14)
+#define NLA_TYPE_MASK          ~(NLA_F_NESTED | NLA_F_NET_BYTEORDER)
+
+#define NLA_ALIGNTO            4
+#define NLA_ALIGN(len)         (((len) + NLA_ALIGNTO - 1) & ~(NLA_ALIGNTO - 1))
+#define NLA_HDRLEN             ((int) NLA_ALIGN(sizeof(struct nlattr)))
+
+/* Generic 32 bitflags attribute content sent to the kernel.
+ *
+ * The value is a bitmap that defines the values being set
+ * The selector is a bitmask that defines which value is legit
+ *
+ * Examples:
+ *  value = 0x0, and selector = 0x1
+ *  implies we are selecting bit 1 and we want to set its value to 0.
+ *
+ *  value = 0x2, and selector = 0x2
+ *  implies we are selecting bit 2 and we want to set its value to 1.
+ *
+ */
+struct nla_bitfield32 {
+       __u32 value;
+       __u32 selector;
+};
+
+#endif /* __LINUX_NETLINK_H */
diff --git a/include/uapi/linux/netlink_diag.h b/include/uapi/linux/netlink_diag.h
new file mode 100644 (file)
index 0000000..c8c8c7d
--- /dev/null
@@ -0,0 +1,64 @@
+#ifndef __NETLINK_DIAG_H__
+#define __NETLINK_DIAG_H__
+
+#include <linux/types.h>
+
+struct netlink_diag_req {
+       __u8    sdiag_family;
+       __u8    sdiag_protocol;
+       __u16   pad;
+       __u32   ndiag_ino;
+       __u32   ndiag_show;
+       __u32   ndiag_cookie[2];
+};
+
+struct netlink_diag_msg {
+       __u8    ndiag_family;
+       __u8    ndiag_type;
+       __u8    ndiag_protocol;
+       __u8    ndiag_state;
+
+       __u32   ndiag_portid;
+       __u32   ndiag_dst_portid;
+       __u32   ndiag_dst_group;
+       __u32   ndiag_ino;
+       __u32   ndiag_cookie[2];
+};
+
+struct netlink_diag_ring {
+       __u32   ndr_block_size;
+       __u32   ndr_block_nr;
+       __u32   ndr_frame_size;
+       __u32   ndr_frame_nr;
+};
+
+enum {
+       /* NETLINK_DIAG_NONE, standard nl API requires this attribute!  */
+       NETLINK_DIAG_MEMINFO,
+       NETLINK_DIAG_GROUPS,
+       NETLINK_DIAG_RX_RING,
+       NETLINK_DIAG_TX_RING,
+       NETLINK_DIAG_FLAGS,
+
+       __NETLINK_DIAG_MAX,
+};
+
+#define NETLINK_DIAG_MAX (__NETLINK_DIAG_MAX - 1)
+
+#define NDIAG_PROTO_ALL                ((__u8) ~0)
+
+#define NDIAG_SHOW_MEMINFO     0x00000001 /* show memory info of a socket */
+#define NDIAG_SHOW_GROUPS      0x00000002 /* show groups of a netlink socket */
+/* deprecated since 4.6 */
+#define NDIAG_SHOW_RING_CFG    0x00000004 /* show ring configuration */
+#define NDIAG_SHOW_FLAGS       0x00000008 /* show flags of a netlink socket */
+
+/* flags */
+#define NDIAG_FLAG_CB_RUNNING          0x00000001
+#define NDIAG_FLAG_PKTINFO             0x00000002
+#define NDIAG_FLAG_BROADCAST_ERROR     0x00000004
+#define NDIAG_FLAG_NO_ENOBUFS          0x00000008
+#define NDIAG_FLAG_LISTEN_ALL_NSID     0x00000010
+#define NDIAG_FLAG_CAP_ACK             0x00000020
+
+#endif
diff --git a/include/uapi/linux/packet_diag.h b/include/uapi/linux/packet_diag.h
new file mode 100644 (file)
index 0000000..0c5d5dd
--- /dev/null
@@ -0,0 +1,80 @@
+#ifndef __PACKET_DIAG_H__
+#define __PACKET_DIAG_H__
+
+#include <linux/types.h>
+
+struct packet_diag_req {
+       __u8    sdiag_family;
+       __u8    sdiag_protocol;
+       __u16   pad;
+       __u32   pdiag_ino;
+       __u32   pdiag_show;
+       __u32   pdiag_cookie[2];
+};
+
+#define PACKET_SHOW_INFO       0x00000001 /* Basic packet_sk information */
+#define PACKET_SHOW_MCLIST     0x00000002 /* A set of packet_diag_mclist-s */
+#define PACKET_SHOW_RING_CFG   0x00000004 /* Rings configuration parameters */
+#define PACKET_SHOW_FANOUT     0x00000008
+#define PACKET_SHOW_MEMINFO    0x00000010
+#define PACKET_SHOW_FILTER     0x00000020
+
+struct packet_diag_msg {
+       __u8    pdiag_family;
+       __u8    pdiag_type;
+       __u16   pdiag_num;
+
+       __u32   pdiag_ino;
+       __u32   pdiag_cookie[2];
+};
+
+enum {
+       /* PACKET_DIAG_NONE, standard nl API requires this attribute!  */
+       PACKET_DIAG_INFO,
+       PACKET_DIAG_MCLIST,
+       PACKET_DIAG_RX_RING,
+       PACKET_DIAG_TX_RING,
+       PACKET_DIAG_FANOUT,
+       PACKET_DIAG_UID,
+       PACKET_DIAG_MEMINFO,
+       PACKET_DIAG_FILTER,
+
+       __PACKET_DIAG_MAX,
+};
+
+#define PACKET_DIAG_MAX (__PACKET_DIAG_MAX - 1)
+
+struct packet_diag_info {
+       __u32   pdi_index;
+       __u32   pdi_version;
+       __u32   pdi_reserve;
+       __u32   pdi_copy_thresh;
+       __u32   pdi_tstamp;
+       __u32   pdi_flags;
+
+#define PDI_RUNNING    0x1
+#define PDI_AUXDATA    0x2
+#define PDI_ORIGDEV    0x4
+#define PDI_VNETHDR    0x8
+#define PDI_LOSS       0x10
+};
+
+struct packet_diag_mclist {
+       __u32   pdmc_index;
+       __u32   pdmc_count;
+       __u16   pdmc_type;
+       __u16   pdmc_alen;
+       __u8    pdmc_addr[32]; /* MAX_ADDR_LEN */
+};
+
+struct packet_diag_ring {
+       __u32   pdr_block_size;
+       __u32   pdr_block_nr;
+       __u32   pdr_frame_size;
+       __u32   pdr_frame_nr;
+       __u32   pdr_retire_tmo;
+       __u32   pdr_sizeof_priv;
+       __u32   pdr_features;
+};
+
+#endif
diff --git a/include/uapi/linux/param.h b/include/uapi/linux/param.h
new file mode 100644 (file)
index 0000000..092e92f
--- /dev/null
@@ -0,0 +1,6 @@
+#ifndef _LINUX_PARAM_H
+#define _LINUX_PARAM_H
+
+#include <asm/param.h>
+
+#endif
diff --git a/include/uapi/linux/pfkeyv2.h b/include/uapi/linux/pfkeyv2.h
new file mode 100644 (file)
index 0000000..ada7f01
--- /dev/null
@@ -0,0 +1,383 @@
+/* PF_KEY user interface, this is defined by rfc2367 so
+ * do not make arbitrary modifications or else this header
+ * file will not be compliant.
+ */
+
+#ifndef _LINUX_PFKEY2_H
+#define _LINUX_PFKEY2_H
+
+#include <linux/types.h>
+
+#define PF_KEY_V2              2
+#define PFKEYV2_REVISION       199806L
+
+struct sadb_msg {
+       __u8            sadb_msg_version;
+       __u8            sadb_msg_type;
+       __u8            sadb_msg_errno;
+       __u8            sadb_msg_satype;
+       __u16   sadb_msg_len;
+       __u16   sadb_msg_reserved;
+       __u32   sadb_msg_seq;
+       __u32   sadb_msg_pid;
+} __attribute__((packed));
+/* sizeof(struct sadb_msg) == 16 */
+
+struct sadb_ext {
+       __u16   sadb_ext_len;
+       __u16   sadb_ext_type;
+} __attribute__((packed));
+/* sizeof(struct sadb_ext) == 4 */
+
+struct sadb_sa {
+       __u16   sadb_sa_len;
+       __u16   sadb_sa_exttype;
+       __be32          sadb_sa_spi;
+       __u8            sadb_sa_replay;
+       __u8            sadb_sa_state;
+       __u8            sadb_sa_auth;
+       __u8            sadb_sa_encrypt;
+       __u32   sadb_sa_flags;
+} __attribute__((packed));
+/* sizeof(struct sadb_sa) == 16 */
+
+struct sadb_lifetime {
+       __u16   sadb_lifetime_len;
+       __u16   sadb_lifetime_exttype;
+       __u32   sadb_lifetime_allocations;
+       __u64   sadb_lifetime_bytes;
+       __u64   sadb_lifetime_addtime;
+       __u64   sadb_lifetime_usetime;
+} __attribute__((packed));
+/* sizeof(struct sadb_lifetime) == 32 */
+
+struct sadb_address {
+       __u16   sadb_address_len;
+       __u16   sadb_address_exttype;
+       __u8            sadb_address_proto;
+       __u8            sadb_address_prefixlen;
+       __u16   sadb_address_reserved;
+} __attribute__((packed));
+/* sizeof(struct sadb_address) == 8 */
+
+struct sadb_key {
+       __u16   sadb_key_len;
+       __u16   sadb_key_exttype;
+       __u16   sadb_key_bits;
+       __u16   sadb_key_reserved;
+} __attribute__((packed));
+/* sizeof(struct sadb_key) == 8 */
+
+struct sadb_ident {
+       __u16   sadb_ident_len;
+       __u16   sadb_ident_exttype;
+       __u16   sadb_ident_type;
+       __u16   sadb_ident_reserved;
+       __u64   sadb_ident_id;
+} __attribute__((packed));
+/* sizeof(struct sadb_ident) == 16 */
+
+struct sadb_sens {
+       __u16   sadb_sens_len;
+       __u16   sadb_sens_exttype;
+       __u32   sadb_sens_dpd;
+       __u8            sadb_sens_sens_level;
+       __u8            sadb_sens_sens_len;
+       __u8            sadb_sens_integ_level;
+       __u8            sadb_sens_integ_len;
+       __u32   sadb_sens_reserved;
+} __attribute__((packed));
+/* sizeof(struct sadb_sens) == 16 */
+
+/* followed by:
+       __u64   sadb_sens_bitmap[sens_len];
+       __u64   sadb_integ_bitmap[integ_len];  */
+
+struct sadb_prop {
+       __u16   sadb_prop_len;
+       __u16   sadb_prop_exttype;
+       __u8            sadb_prop_replay;
+       __u8            sadb_prop_reserved[3];
+} __attribute__((packed));
+/* sizeof(struct sadb_prop) == 8 */
+
+/* followed by:
+       struct sadb_comb sadb_combs[(sadb_prop_len +
+               sizeof(__u64) - sizeof(struct sadb_prop)) /
+               sizeof(struct sadb_comb)]; */
+
+struct sadb_comb {
+       __u8            sadb_comb_auth;
+       __u8            sadb_comb_encrypt;
+       __u16   sadb_comb_flags;
+       __u16   sadb_comb_auth_minbits;
+       __u16   sadb_comb_auth_maxbits;
+       __u16   sadb_comb_encrypt_minbits;
+       __u16   sadb_comb_encrypt_maxbits;
+       __u32   sadb_comb_reserved;
+       __u32   sadb_comb_soft_allocations;
+       __u32   sadb_comb_hard_allocations;
+       __u64   sadb_comb_soft_bytes;
+       __u64   sadb_comb_hard_bytes;
+       __u64   sadb_comb_soft_addtime;
+       __u64   sadb_comb_hard_addtime;
+       __u64   sadb_comb_soft_usetime;
+       __u64   sadb_comb_hard_usetime;
+} __attribute__((packed));
+/* sizeof(struct sadb_comb) == 72 */
+
+struct sadb_supported {
+       __u16   sadb_supported_len;
+       __u16   sadb_supported_exttype;
+       __u32   sadb_supported_reserved;
+} __attribute__((packed));
+/* sizeof(struct sadb_supported) == 8 */
+
+/* followed by:
+       struct sadb_alg sadb_algs[(sadb_supported_len +
+               sizeof(__u64) - sizeof(struct sadb_supported)) /
+               sizeof(struct sadb_alg)]; */
+
+struct sadb_alg {
+       __u8            sadb_alg_id;
+       __u8            sadb_alg_ivlen;
+       __u16   sadb_alg_minbits;
+       __u16   sadb_alg_maxbits;
+       __u16   sadb_alg_reserved;
+} __attribute__((packed));
+/* sizeof(struct sadb_alg) == 8 */
+
+struct sadb_spirange {
+       __u16   sadb_spirange_len;
+       __u16   sadb_spirange_exttype;
+       __u32   sadb_spirange_min;
+       __u32   sadb_spirange_max;
+       __u32   sadb_spirange_reserved;
+} __attribute__((packed));
+/* sizeof(struct sadb_spirange) == 16 */
+
+struct sadb_x_kmprivate {
+       __u16   sadb_x_kmprivate_len;
+       __u16   sadb_x_kmprivate_exttype;
+       __u32   sadb_x_kmprivate_reserved;
+} __attribute__((packed));
+/* sizeof(struct sadb_x_kmprivate) == 8 */
+
+struct sadb_x_sa2 {
+       __u16   sadb_x_sa2_len;
+       __u16   sadb_x_sa2_exttype;
+       __u8            sadb_x_sa2_mode;
+       __u8            sadb_x_sa2_reserved1;
+       __u16   sadb_x_sa2_reserved2;
+       __u32   sadb_x_sa2_sequence;
+       __u32   sadb_x_sa2_reqid;
+} __attribute__((packed));
+/* sizeof(struct sadb_x_sa2) == 16 */
+
+struct sadb_x_policy {
+       __u16   sadb_x_policy_len;
+       __u16   sadb_x_policy_exttype;
+       __u16   sadb_x_policy_type;
+       __u8            sadb_x_policy_dir;
+       __u8            sadb_x_policy_reserved;
+       __u32   sadb_x_policy_id;
+       __u32   sadb_x_policy_priority;
+} __attribute__((packed));
+/* sizeof(struct sadb_x_policy) == 16 */
+
+struct sadb_x_ipsecrequest {
+       __u16   sadb_x_ipsecrequest_len;
+       __u16   sadb_x_ipsecrequest_proto;
+       __u8            sadb_x_ipsecrequest_mode;
+       __u8            sadb_x_ipsecrequest_level;
+       __u16   sadb_x_ipsecrequest_reserved1;
+       __u32   sadb_x_ipsecrequest_reqid;
+       __u32   sadb_x_ipsecrequest_reserved2;
+} __attribute__((packed));
+/* sizeof(struct sadb_x_ipsecrequest) == 16 */
+
+/* This defines the TYPE of Nat Traversal in use.  Currently only one
+ * type of NAT-T is supported, draft-ietf-ipsec-udp-encaps-06
+ */
+struct sadb_x_nat_t_type {
+       __u16   sadb_x_nat_t_type_len;
+       __u16   sadb_x_nat_t_type_exttype;
+       __u8            sadb_x_nat_t_type_type;
+       __u8            sadb_x_nat_t_type_reserved[3];
+} __attribute__((packed));
+/* sizeof(struct sadb_x_nat_t_type) == 8 */
+
+/* Pass a NAT Traversal port (Source or Dest port) */
+struct sadb_x_nat_t_port {
+       __u16   sadb_x_nat_t_port_len;
+       __u16   sadb_x_nat_t_port_exttype;
+       __be16          sadb_x_nat_t_port_port;
+       __u16   sadb_x_nat_t_port_reserved;
+} __attribute__((packed));
+/* sizeof(struct sadb_x_nat_t_port) == 8 */
+
+/* Generic LSM security context */
+struct sadb_x_sec_ctx {
+       __u16   sadb_x_sec_len;
+       __u16   sadb_x_sec_exttype;
+       __u8            sadb_x_ctx_alg;  /* LSMs: e.g., selinux == 1 */
+       __u8            sadb_x_ctx_doi;
+       __u16   sadb_x_ctx_len;
+} __attribute__((packed));
+/* sizeof(struct sadb_sec_ctx) = 8 */
+
+/* Used by MIGRATE to pass addresses IKE will use to perform
+ * negotiation with the peer */
+struct sadb_x_kmaddress {
+       __u16   sadb_x_kmaddress_len;
+       __u16   sadb_x_kmaddress_exttype;
+       __u32   sadb_x_kmaddress_reserved;
+} __attribute__((packed));
+/* sizeof(struct sadb_x_kmaddress) == 8 */
+
+/* To specify the SA dump filter */
+struct sadb_x_filter {
+       __u16   sadb_x_filter_len;
+       __u16   sadb_x_filter_exttype;
+       __u32   sadb_x_filter_saddr[4];
+       __u32   sadb_x_filter_daddr[4];
+       __u16   sadb_x_filter_family;
+       __u8    sadb_x_filter_splen;
+       __u8    sadb_x_filter_dplen;
+} __attribute__((packed));
+/* sizeof(struct sadb_x_filter) == 40 */
+
+/* Message types */
+#define SADB_RESERVED          0
+#define SADB_GETSPI            1
+#define SADB_UPDATE            2
+#define SADB_ADD               3
+#define SADB_DELETE            4
+#define SADB_GET               5
+#define SADB_ACQUIRE           6
+#define SADB_REGISTER          7
+#define SADB_EXPIRE            8
+#define SADB_FLUSH             9
+#define SADB_DUMP              10
+#define SADB_X_PROMISC         11
+#define SADB_X_PCHANGE         12
+#define SADB_X_SPDUPDATE       13
+#define SADB_X_SPDADD          14
+#define SADB_X_SPDDELETE       15
+#define SADB_X_SPDGET          16
+#define SADB_X_SPDACQUIRE      17
+#define SADB_X_SPDDUMP         18
+#define SADB_X_SPDFLUSH                19
+#define SADB_X_SPDSETIDX       20
+#define SADB_X_SPDEXPIRE       21
+#define SADB_X_SPDDELETE2      22
+#define SADB_X_NAT_T_NEW_MAPPING       23
+#define SADB_X_MIGRATE         24
+#define SADB_MAX               24
+
+/* Security Association flags */
+#define SADB_SAFLAGS_PFS       1
+#define SADB_SAFLAGS_NOPMTUDISC        0x20000000
+#define SADB_SAFLAGS_DECAP_DSCP        0x40000000
+#define SADB_SAFLAGS_NOECN     0x80000000
+
+/* Security Association states */
+#define SADB_SASTATE_LARVAL    0
+#define SADB_SASTATE_MATURE    1
+#define SADB_SASTATE_DYING     2
+#define SADB_SASTATE_DEAD      3
+#define SADB_SASTATE_MAX       3
+
+/* Security Association types */
+#define SADB_SATYPE_UNSPEC     0
+#define SADB_SATYPE_AH         2
+#define SADB_SATYPE_ESP                3
+#define SADB_SATYPE_RSVP       5
+#define SADB_SATYPE_OSPFV2     6
+#define SADB_SATYPE_RIPV2      7
+#define SADB_SATYPE_MIP                8
+#define SADB_X_SATYPE_IPCOMP   9
+#define SADB_SATYPE_MAX                9
+
+/* Authentication algorithms */
+#define SADB_AALG_NONE                 0
+#define SADB_AALG_MD5HMAC              2
+#define SADB_AALG_SHA1HMAC             3
+#define SADB_X_AALG_SHA2_256HMAC       5
+#define SADB_X_AALG_SHA2_384HMAC       6
+#define SADB_X_AALG_SHA2_512HMAC       7
+#define SADB_X_AALG_RIPEMD160HMAC      8
+#define SADB_X_AALG_AES_XCBC_MAC       9
+#define SADB_X_AALG_NULL               251     /* kame */
+#define SADB_AALG_MAX                  251
+
+/* Encryption algorithms */
+#define SADB_EALG_NONE                 0
+#define SADB_EALG_DESCBC               2
+#define SADB_EALG_3DESCBC              3
+#define SADB_X_EALG_CASTCBC            6
+#define SADB_X_EALG_BLOWFISHCBC                7
+#define SADB_EALG_NULL                 11
+#define SADB_X_EALG_AESCBC             12
+#define SADB_X_EALG_AESCTR             13
+#define SADB_X_EALG_AES_CCM_ICV8       14
+#define SADB_X_EALG_AES_CCM_ICV12      15
+#define SADB_X_EALG_AES_CCM_ICV16      16
+#define SADB_X_EALG_AES_GCM_ICV8       18
+#define SADB_X_EALG_AES_GCM_ICV12      19
+#define SADB_X_EALG_AES_GCM_ICV16      20
+#define SADB_X_EALG_CAMELLIACBC                22
+#define SADB_X_EALG_NULL_AES_GMAC      23
+#define SADB_EALG_MAX                   253 /* last EALG */
+/* private allocations should use 249-255 (RFC2407) */
+#define SADB_X_EALG_SERPENTCBC  252     /* draft-ietf-ipsec-ciph-aes-cbc-00 */
+#define SADB_X_EALG_TWOFISHCBC  253     /* draft-ietf-ipsec-ciph-aes-cbc-00 */
+
+/* Compression algorithms */
+#define SADB_X_CALG_NONE               0
+#define SADB_X_CALG_OUI                        1
+#define SADB_X_CALG_DEFLATE            2
+#define SADB_X_CALG_LZS                        3
+#define SADB_X_CALG_LZJH               4
+#define SADB_X_CALG_MAX                        4
+
+/* Extension Header values */
+#define SADB_EXT_RESERVED              0
+#define SADB_EXT_SA                    1
+#define SADB_EXT_LIFETIME_CURRENT      2
+#define SADB_EXT_LIFETIME_HARD         3
+#define SADB_EXT_LIFETIME_SOFT         4
+#define SADB_EXT_ADDRESS_SRC           5
+#define SADB_EXT_ADDRESS_DST           6
+#define SADB_EXT_ADDRESS_PROXY         7
+#define SADB_EXT_KEY_AUTH              8
+#define SADB_EXT_KEY_ENCRYPT           9
+#define SADB_EXT_IDENTITY_SRC          10
+#define SADB_EXT_IDENTITY_DST          11
+#define SADB_EXT_SENSITIVITY           12
+#define SADB_EXT_PROPOSAL              13
+#define SADB_EXT_SUPPORTED_AUTH                14
+#define SADB_EXT_SUPPORTED_ENCRYPT     15
+#define SADB_EXT_SPIRANGE              16
+#define SADB_X_EXT_KMPRIVATE           17
+#define SADB_X_EXT_POLICY              18
+#define SADB_X_EXT_SA2                 19
+/* The next four entries are for setting up NAT Traversal */
+#define SADB_X_EXT_NAT_T_TYPE          20
+#define SADB_X_EXT_NAT_T_SPORT         21
+#define SADB_X_EXT_NAT_T_DPORT         22
+#define SADB_X_EXT_NAT_T_OA            23
+#define SADB_X_EXT_SEC_CTX             24
+/* Used with MIGRATE to pass @ to IKE for negotiation */
+#define SADB_X_EXT_KMADDRESS           25
+#define SADB_X_EXT_FILTER              26
+#define SADB_EXT_MAX                   26
+
+/* Identity Extension values */
+#define SADB_IDENTTYPE_RESERVED        0
+#define SADB_IDENTTYPE_PREFIX  1
+#define SADB_IDENTTYPE_FQDN    2
+#define SADB_IDENTTYPE_USERFQDN        3
+#define SADB_IDENTTYPE_MAX     3
+
+#endif /* !(_LINUX_PFKEY2_H) */
diff --git a/include/uapi/linux/pkt_cls.h b/include/uapi/linux/pkt_cls.h
new file mode 100644 (file)
index 0000000..d5e2bf6
--- /dev/null
@@ -0,0 +1,569 @@
+#ifndef __LINUX_PKT_CLS_H
+#define __LINUX_PKT_CLS_H
+
+#include <linux/types.h>
+#include <linux/pkt_sched.h>
+
+#define TC_COOKIE_MAX_SIZE 16
+
+/* Action attributes */
+enum {
+       TCA_ACT_UNSPEC,
+       TCA_ACT_KIND,
+       TCA_ACT_OPTIONS,
+       TCA_ACT_INDEX,
+       TCA_ACT_STATS,
+       TCA_ACT_PAD,
+       TCA_ACT_COOKIE,
+       __TCA_ACT_MAX
+};
+
+#define TCA_ACT_MAX __TCA_ACT_MAX
+#define TCA_OLD_COMPAT (TCA_ACT_MAX+1)
+#define TCA_ACT_MAX_PRIO 32
+#define TCA_ACT_BIND   1
+#define TCA_ACT_NOBIND 0
+#define TCA_ACT_UNBIND 1
+#define TCA_ACT_NOUNBIND       0
+#define TCA_ACT_REPLACE                1
+#define TCA_ACT_NOREPLACE      0
+
+#define TC_ACT_UNSPEC  (-1)
+#define TC_ACT_OK              0
+#define TC_ACT_RECLASSIFY      1
+#define TC_ACT_SHOT            2
+#define TC_ACT_PIPE            3
+#define TC_ACT_STOLEN          4
+#define TC_ACT_QUEUED          5
+#define TC_ACT_REPEAT          6
+#define TC_ACT_REDIRECT                7
+#define TC_ACT_TRAP            8 /* For hw path, this means "trap to cpu"
+                                  * and don't further process the frame
+                                  * in hardware. For sw path, this is
+                                  * equivalent of TC_ACT_STOLEN - drop
+                                  * the skb and act like everything
+                                  * is alright.
+                                  */
+
+/* There is a special kind of actions called "extended actions",
+ * which need a value parameter. These have a local opcode located in
+ * the highest nibble, starting from 1. The rest of the bits
+ * are used to carry the value. These two parts together make
+ * a combined opcode.
+ */
+#define __TC_ACT_EXT_SHIFT 28
+#define __TC_ACT_EXT(local) ((local) << __TC_ACT_EXT_SHIFT)
+#define TC_ACT_EXT_VAL_MASK ((1 << __TC_ACT_EXT_SHIFT) - 1)
+#define TC_ACT_EXT_CMP(combined, opcode) \
+       (((combined) & (~TC_ACT_EXT_VAL_MASK)) == opcode)
+
+#define TC_ACT_JUMP __TC_ACT_EXT(1)
+#define TC_ACT_GOTO_CHAIN __TC_ACT_EXT(2)
+
+/* Action type identifiers*/
+enum {
+       TCA_ID_UNSPEC=0,
+       TCA_ID_POLICE=1,
+       /* other actions go here */
+       __TCA_ID_MAX=255
+};
+
+#define TCA_ID_MAX __TCA_ID_MAX
+
+struct tc_police {
+       __u32                   index;
+       int                     action;
+#define TC_POLICE_UNSPEC       TC_ACT_UNSPEC
+#define TC_POLICE_OK           TC_ACT_OK
+#define TC_POLICE_RECLASSIFY   TC_ACT_RECLASSIFY
+#define TC_POLICE_SHOT         TC_ACT_SHOT
+#define TC_POLICE_PIPE         TC_ACT_PIPE
+
+       __u32                   limit;
+       __u32                   burst;
+       __u32                   mtu;
+       struct tc_ratespec      rate;
+       struct tc_ratespec      peakrate;
+       int                     refcnt;
+       int                     bindcnt;
+       __u32                   capab;
+};
+
+struct tcf_t {
+       __u64   install;
+       __u64   lastuse;
+       __u64   expires;
+       __u64   firstuse;
+};
+
+struct tc_cnt {
+       int                   refcnt;
+       int                   bindcnt;
+};
+
+#define tc_gen \
+       __u32                 index; \
+       __u32                 capab; \
+       int                   action; \
+       int                   refcnt; \
+       int                   bindcnt
+
+enum {
+       TCA_POLICE_UNSPEC,
+       TCA_POLICE_TBF,
+       TCA_POLICE_RATE,
+       TCA_POLICE_PEAKRATE,
+       TCA_POLICE_AVRATE,
+       TCA_POLICE_RESULT,
+       TCA_POLICE_TM,
+       TCA_POLICE_PAD,
+       __TCA_POLICE_MAX
+#define TCA_POLICE_RESULT TCA_POLICE_RESULT
+};
+
+#define TCA_POLICE_MAX (__TCA_POLICE_MAX - 1)
+
+/* tca flags definitions */
+#define TCA_CLS_FLAGS_SKIP_HW  (1 << 0) /* don't offload filter to HW */
+#define TCA_CLS_FLAGS_SKIP_SW  (1 << 1) /* don't use filter in SW */
+#define TCA_CLS_FLAGS_IN_HW    (1 << 2) /* filter is offloaded to HW */
+#define TCA_CLS_FLAGS_NOT_IN_HW (1 << 3) /* filter isn't offloaded to HW */
+
+/* U32 filters */
+
+#define TC_U32_HTID(h) ((h)&0xFFF00000)
+#define TC_U32_USERHTID(h) (TC_U32_HTID(h)>>20)
+#define TC_U32_HASH(h) (((h)>>12)&0xFF)
+#define TC_U32_NODE(h) ((h)&0xFFF)
+#define TC_U32_KEY(h) ((h)&0xFFFFF)
+#define TC_U32_UNSPEC  0
+#define TC_U32_ROOT    (0xFFF00000)
+
+enum {
+       TCA_U32_UNSPEC,
+       TCA_U32_CLASSID,
+       TCA_U32_HASH,
+       TCA_U32_LINK,
+       TCA_U32_DIVISOR,
+       TCA_U32_SEL,
+       TCA_U32_POLICE,
+       TCA_U32_ACT,
+       TCA_U32_INDEV,
+       TCA_U32_PCNT,
+       TCA_U32_MARK,
+       TCA_U32_FLAGS,
+       TCA_U32_PAD,
+       __TCA_U32_MAX
+};
+
+#define TCA_U32_MAX (__TCA_U32_MAX - 1)
+
+struct tc_u32_key {
+       __be32          mask;
+       __be32          val;
+       int             off;
+       int             offmask;
+};
+
+struct tc_u32_sel {
+       unsigned char           flags;
+       unsigned char           offshift;
+       unsigned char           nkeys;
+
+       __be16                  offmask;
+       __u16                   off;
+       short                   offoff;
+
+       short                   hoff;
+       __be32                  hmask;
+       struct tc_u32_key       keys[0];
+};
+
+struct tc_u32_mark {
+       __u32           val;
+       __u32           mask;
+       __u32           success;
+};
+
+struct tc_u32_pcnt {
+       __u64 rcnt;
+       __u64 rhit;
+       __u64 kcnts[0];
+};
+
+/* Flags */
+
+#define TC_U32_TERMINAL                1
+#define TC_U32_OFFSET          2
+#define TC_U32_VAROFFSET       4
+#define TC_U32_EAT             8
+
+#define TC_U32_MAXDEPTH 8
+
+
+/* RSVP filter */
+
+enum {
+       TCA_RSVP_UNSPEC,
+       TCA_RSVP_CLASSID,
+       TCA_RSVP_DST,
+       TCA_RSVP_SRC,
+       TCA_RSVP_PINFO,
+       TCA_RSVP_POLICE,
+       TCA_RSVP_ACT,
+       __TCA_RSVP_MAX
+};
+
+#define TCA_RSVP_MAX (__TCA_RSVP_MAX - 1 )
+
+struct tc_rsvp_gpi {
+       __u32   key;
+       __u32   mask;
+       int     offset;
+};
+
+struct tc_rsvp_pinfo {
+       struct tc_rsvp_gpi dpi;
+       struct tc_rsvp_gpi spi;
+       __u8    protocol;
+       __u8    tunnelid;
+       __u8    tunnelhdr;
+       __u8    pad;
+};
+
+/* ROUTE filter */
+
+enum {
+       TCA_ROUTE4_UNSPEC,
+       TCA_ROUTE4_CLASSID,
+       TCA_ROUTE4_TO,
+       TCA_ROUTE4_FROM,
+       TCA_ROUTE4_IIF,
+       TCA_ROUTE4_POLICE,
+       TCA_ROUTE4_ACT,
+       __TCA_ROUTE4_MAX
+};
+
+#define TCA_ROUTE4_MAX (__TCA_ROUTE4_MAX - 1)
+
+
+/* FW filter */
+
+enum {
+       TCA_FW_UNSPEC,
+       TCA_FW_CLASSID,
+       TCA_FW_POLICE,
+       TCA_FW_INDEV, /*  used by CONFIG_NET_CLS_IND */
+       TCA_FW_ACT, /* used by CONFIG_NET_CLS_ACT */
+       TCA_FW_MASK,
+       __TCA_FW_MAX
+};
+
+#define TCA_FW_MAX (__TCA_FW_MAX - 1)
+
+/* TC index filter */
+
+enum {
+       TCA_TCINDEX_UNSPEC,
+       TCA_TCINDEX_HASH,
+       TCA_TCINDEX_MASK,
+       TCA_TCINDEX_SHIFT,
+       TCA_TCINDEX_FALL_THROUGH,
+       TCA_TCINDEX_CLASSID,
+       TCA_TCINDEX_POLICE,
+       TCA_TCINDEX_ACT,
+       __TCA_TCINDEX_MAX
+};
+
+#define TCA_TCINDEX_MAX     (__TCA_TCINDEX_MAX - 1)
+
+/* Flow filter */
+
+enum {
+       FLOW_KEY_SRC,
+       FLOW_KEY_DST,
+       FLOW_KEY_PROTO,
+       FLOW_KEY_PROTO_SRC,
+       FLOW_KEY_PROTO_DST,
+       FLOW_KEY_IIF,
+       FLOW_KEY_PRIORITY,
+       FLOW_KEY_MARK,
+       FLOW_KEY_NFCT,
+       FLOW_KEY_NFCT_SRC,
+       FLOW_KEY_NFCT_DST,
+       FLOW_KEY_NFCT_PROTO_SRC,
+       FLOW_KEY_NFCT_PROTO_DST,
+       FLOW_KEY_RTCLASSID,
+       FLOW_KEY_SKUID,
+       FLOW_KEY_SKGID,
+       FLOW_KEY_VLAN_TAG,
+       FLOW_KEY_RXHASH,
+       __FLOW_KEY_MAX,
+};
+
+#define FLOW_KEY_MAX   (__FLOW_KEY_MAX - 1)
+
+enum {
+       FLOW_MODE_MAP,
+       FLOW_MODE_HASH,
+};
+
+enum {
+       TCA_FLOW_UNSPEC,
+       TCA_FLOW_KEYS,
+       TCA_FLOW_MODE,
+       TCA_FLOW_BASECLASS,
+       TCA_FLOW_RSHIFT,
+       TCA_FLOW_ADDEND,
+       TCA_FLOW_MASK,
+       TCA_FLOW_XOR,
+       TCA_FLOW_DIVISOR,
+       TCA_FLOW_ACT,
+       TCA_FLOW_POLICE,
+       TCA_FLOW_EMATCHES,
+       TCA_FLOW_PERTURB,
+       __TCA_FLOW_MAX
+};
+
+#define TCA_FLOW_MAX   (__TCA_FLOW_MAX - 1)
+
+/* Basic filter */
+
+enum {
+       TCA_BASIC_UNSPEC,
+       TCA_BASIC_CLASSID,
+       TCA_BASIC_EMATCHES,
+       TCA_BASIC_ACT,
+       TCA_BASIC_POLICE,
+       __TCA_BASIC_MAX
+};
+
+#define TCA_BASIC_MAX (__TCA_BASIC_MAX - 1)
+
+
+/* Cgroup classifier */
+
+enum {
+       TCA_CGROUP_UNSPEC,
+       TCA_CGROUP_ACT,
+       TCA_CGROUP_POLICE,
+       TCA_CGROUP_EMATCHES,
+       __TCA_CGROUP_MAX,
+};
+
+#define TCA_CGROUP_MAX (__TCA_CGROUP_MAX - 1)
+
+/* BPF classifier */
+
+#define TCA_BPF_FLAG_ACT_DIRECT                (1 << 0)
+
+enum {
+       TCA_BPF_UNSPEC,
+       TCA_BPF_ACT,
+       TCA_BPF_POLICE,
+       TCA_BPF_CLASSID,
+       TCA_BPF_OPS_LEN,
+       TCA_BPF_OPS,
+       TCA_BPF_FD,
+       TCA_BPF_NAME,
+       TCA_BPF_FLAGS,
+       TCA_BPF_FLAGS_GEN,
+       TCA_BPF_TAG,
+       TCA_BPF_ID,
+       __TCA_BPF_MAX,
+};
+
+#define TCA_BPF_MAX (__TCA_BPF_MAX - 1)
+
+/* Flower classifier */
+
+enum {
+       TCA_FLOWER_UNSPEC,
+       TCA_FLOWER_CLASSID,
+       TCA_FLOWER_INDEV,
+       TCA_FLOWER_ACT,
+       TCA_FLOWER_KEY_ETH_DST,         /* ETH_ALEN */
+       TCA_FLOWER_KEY_ETH_DST_MASK,    /* ETH_ALEN */
+       TCA_FLOWER_KEY_ETH_SRC,         /* ETH_ALEN */
+       TCA_FLOWER_KEY_ETH_SRC_MASK,    /* ETH_ALEN */
+       TCA_FLOWER_KEY_ETH_TYPE,        /* be16 */
+       TCA_FLOWER_KEY_IP_PROTO,        /* u8 */
+       TCA_FLOWER_KEY_IPV4_SRC,        /* be32 */
+       TCA_FLOWER_KEY_IPV4_SRC_MASK,   /* be32 */
+       TCA_FLOWER_KEY_IPV4_DST,        /* be32 */
+       TCA_FLOWER_KEY_IPV4_DST_MASK,   /* be32 */
+       TCA_FLOWER_KEY_IPV6_SRC,        /* struct in6_addr */
+       TCA_FLOWER_KEY_IPV6_SRC_MASK,   /* struct in6_addr */
+       TCA_FLOWER_KEY_IPV6_DST,        /* struct in6_addr */
+       TCA_FLOWER_KEY_IPV6_DST_MASK,   /* struct in6_addr */
+       TCA_FLOWER_KEY_TCP_SRC,         /* be16 */
+       TCA_FLOWER_KEY_TCP_DST,         /* be16 */
+       TCA_FLOWER_KEY_UDP_SRC,         /* be16 */
+       TCA_FLOWER_KEY_UDP_DST,         /* be16 */
+
+       TCA_FLOWER_FLAGS,
+       TCA_FLOWER_KEY_VLAN_ID,         /* be16 */
+       TCA_FLOWER_KEY_VLAN_PRIO,       /* u8   */
+       TCA_FLOWER_KEY_VLAN_ETH_TYPE,   /* be16 */
+
+       TCA_FLOWER_KEY_ENC_KEY_ID,      /* be32 */
+       TCA_FLOWER_KEY_ENC_IPV4_SRC,    /* be32 */
+       TCA_FLOWER_KEY_ENC_IPV4_SRC_MASK,/* be32 */
+       TCA_FLOWER_KEY_ENC_IPV4_DST,    /* be32 */
+       TCA_FLOWER_KEY_ENC_IPV4_DST_MASK,/* be32 */
+       TCA_FLOWER_KEY_ENC_IPV6_SRC,    /* struct in6_addr */
+       TCA_FLOWER_KEY_ENC_IPV6_SRC_MASK,/* struct in6_addr */
+       TCA_FLOWER_KEY_ENC_IPV6_DST,    /* struct in6_addr */
+       TCA_FLOWER_KEY_ENC_IPV6_DST_MASK,/* struct in6_addr */
+
+       TCA_FLOWER_KEY_TCP_SRC_MASK,    /* be16 */
+       TCA_FLOWER_KEY_TCP_DST_MASK,    /* be16 */
+       TCA_FLOWER_KEY_UDP_SRC_MASK,    /* be16 */
+       TCA_FLOWER_KEY_UDP_DST_MASK,    /* be16 */
+       TCA_FLOWER_KEY_SCTP_SRC_MASK,   /* be16 */
+       TCA_FLOWER_KEY_SCTP_DST_MASK,   /* be16 */
+
+       TCA_FLOWER_KEY_SCTP_SRC,        /* be16 */
+       TCA_FLOWER_KEY_SCTP_DST,        /* be16 */
+
+       TCA_FLOWER_KEY_ENC_UDP_SRC_PORT,        /* be16 */
+       TCA_FLOWER_KEY_ENC_UDP_SRC_PORT_MASK,   /* be16 */
+       TCA_FLOWER_KEY_ENC_UDP_DST_PORT,        /* be16 */
+       TCA_FLOWER_KEY_ENC_UDP_DST_PORT_MASK,   /* be16 */
+
+       TCA_FLOWER_KEY_FLAGS,           /* be32 */
+       TCA_FLOWER_KEY_FLAGS_MASK,      /* be32 */
+
+       TCA_FLOWER_KEY_ICMPV4_CODE,     /* u8 */
+       TCA_FLOWER_KEY_ICMPV4_CODE_MASK,/* u8 */
+       TCA_FLOWER_KEY_ICMPV4_TYPE,     /* u8 */
+       TCA_FLOWER_KEY_ICMPV4_TYPE_MASK,/* u8 */
+       TCA_FLOWER_KEY_ICMPV6_CODE,     /* u8 */
+       TCA_FLOWER_KEY_ICMPV6_CODE_MASK,/* u8 */
+       TCA_FLOWER_KEY_ICMPV6_TYPE,     /* u8 */
+       TCA_FLOWER_KEY_ICMPV6_TYPE_MASK,/* u8 */
+
+       TCA_FLOWER_KEY_ARP_SIP,         /* be32 */
+       TCA_FLOWER_KEY_ARP_SIP_MASK,    /* be32 */
+       TCA_FLOWER_KEY_ARP_TIP,         /* be32 */
+       TCA_FLOWER_KEY_ARP_TIP_MASK,    /* be32 */
+       TCA_FLOWER_KEY_ARP_OP,          /* u8 */
+       TCA_FLOWER_KEY_ARP_OP_MASK,     /* u8 */
+       TCA_FLOWER_KEY_ARP_SHA,         /* ETH_ALEN */
+       TCA_FLOWER_KEY_ARP_SHA_MASK,    /* ETH_ALEN */
+       TCA_FLOWER_KEY_ARP_THA,         /* ETH_ALEN */
+       TCA_FLOWER_KEY_ARP_THA_MASK,    /* ETH_ALEN */
+
+       TCA_FLOWER_KEY_MPLS_TTL,        /* u8 - 8 bits */
+       TCA_FLOWER_KEY_MPLS_BOS,        /* u8 - 1 bit */
+       TCA_FLOWER_KEY_MPLS_TC,         /* u8 - 3 bits */
+       TCA_FLOWER_KEY_MPLS_LABEL,      /* be32 - 20 bits */
+
+       TCA_FLOWER_KEY_TCP_FLAGS,       /* be16 */
+       TCA_FLOWER_KEY_TCP_FLAGS_MASK,  /* be16 */
+
+       TCA_FLOWER_KEY_IP_TOS,          /* u8 */
+       TCA_FLOWER_KEY_IP_TOS_MASK,     /* u8 */
+       TCA_FLOWER_KEY_IP_TTL,          /* u8 */
+       TCA_FLOWER_KEY_IP_TTL_MASK,     /* u8 */
+
+       __TCA_FLOWER_MAX,
+};
+
+#define TCA_FLOWER_MAX (__TCA_FLOWER_MAX - 1)
+
+enum {
+       TCA_FLOWER_KEY_FLAGS_IS_FRAGMENT = (1 << 0),
+};
+
+/* Match-all classifier */
+
+enum {
+       TCA_MATCHALL_UNSPEC,
+       TCA_MATCHALL_CLASSID,
+       TCA_MATCHALL_ACT,
+       TCA_MATCHALL_FLAGS,
+       __TCA_MATCHALL_MAX,
+};
+
+#define TCA_MATCHALL_MAX (__TCA_MATCHALL_MAX - 1)
+
+/* Extended Matches */
+
+struct tcf_ematch_tree_hdr {
+       __u16           nmatches;
+       __u16           progid;
+};
+
+enum {
+       TCA_EMATCH_TREE_UNSPEC,
+       TCA_EMATCH_TREE_HDR,
+       TCA_EMATCH_TREE_LIST,
+       __TCA_EMATCH_TREE_MAX
+};
+#define TCA_EMATCH_TREE_MAX (__TCA_EMATCH_TREE_MAX - 1)
+
+struct tcf_ematch_hdr {
+       __u16           matchid;
+       __u16           kind;
+       __u16           flags;
+       __u16           pad; /* currently unused */
+};
+
+/*  0                   1
+ *  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 
+ * +-----------------------+-+-+---+
+ * |         Unused        |S|I| R |
+ * +-----------------------+-+-+---+
+ *
+ * R(2) ::= relation to next ematch
+ *          where: 0 0 END (last ematch)
+ *                 0 1 AND
+ *                 1 0 OR
+ *                 1 1 Unused (invalid)
+ * I(1) ::= invert result
+ * S(1) ::= simple payload
+ */
+#define TCF_EM_REL_END 0
+#define TCF_EM_REL_AND (1<<0)
+#define TCF_EM_REL_OR  (1<<1)
+#define TCF_EM_INVERT  (1<<2)
+#define TCF_EM_SIMPLE  (1<<3)
+
+#define TCF_EM_REL_MASK        3
+#define TCF_EM_REL_VALID(v) (((v) & TCF_EM_REL_MASK) != TCF_EM_REL_MASK)
+
+enum {
+       TCF_LAYER_LINK,
+       TCF_LAYER_NETWORK,
+       TCF_LAYER_TRANSPORT,
+       __TCF_LAYER_MAX
+};
+#define TCF_LAYER_MAX (__TCF_LAYER_MAX - 1)
+
+/* Ematch type assignments
+ *   1..32767          Reserved for ematches inside kernel tree
+ *   32768..65535      Free to use, not reliable
+ */
+#define        TCF_EM_CONTAINER        0
+#define        TCF_EM_CMP              1
+#define        TCF_EM_NBYTE            2
+#define        TCF_EM_U32              3
+#define        TCF_EM_META             4
+#define        TCF_EM_TEXT             5
+#define        TCF_EM_VLAN             6
+#define        TCF_EM_CANID            7
+#define        TCF_EM_IPSET            8
+#define        TCF_EM_MAX              8
+
+enum {
+       TCF_EM_PROG_TC
+};
+
+enum {
+       TCF_EM_OPND_EQ,
+       TCF_EM_OPND_GT,
+       TCF_EM_OPND_LT
+};
+
+#endif
diff --git a/include/uapi/linux/pkt_sched.h b/include/uapi/linux/pkt_sched.h
new file mode 100644 (file)
index 0000000..099bf55
--- /dev/null
@@ -0,0 +1,874 @@
+#ifndef __LINUX_PKT_SCHED_H
+#define __LINUX_PKT_SCHED_H
+
+#include <linux/types.h>
+
+/* Logical priority bands not depending on specific packet scheduler.
+   Every scheduler will map them to real traffic classes, if it has
+   no more precise mechanism to classify packets.
+
+   These numbers have no special meaning, though their coincidence
+   with obsolete IPv6 values is not occasional :-). New IPv6 drafts
+   preferred full anarchy inspired by diffserv group.
+
+   Note: TC_PRIO_BESTEFFORT does not mean that it is the most unhappy
+   class, actually, as rule it will be handled with more care than
+   filler or even bulk.
+ */
+
+#define TC_PRIO_BESTEFFORT             0
+#define TC_PRIO_FILLER                 1
+#define TC_PRIO_BULK                   2
+#define TC_PRIO_INTERACTIVE_BULK       4
+#define TC_PRIO_INTERACTIVE            6
+#define TC_PRIO_CONTROL                        7
+
+#define TC_PRIO_MAX                    15
+
+/* Generic queue statistics, available for all the elements.
+   Particular schedulers may have also their private records.
+ */
+
+struct tc_stats {
+       __u64   bytes;                  /* Number of enqueued bytes */
+       __u32   packets;                /* Number of enqueued packets   */
+       __u32   drops;                  /* Packets dropped because of lack of resources */
+       __u32   overlimits;             /* Number of throttle events when this
+                                        * flow goes out of allocated bandwidth */
+       __u32   bps;                    /* Current flow byte rate */
+       __u32   pps;                    /* Current flow packet rate */
+       __u32   qlen;
+       __u32   backlog;
+};
+
+struct tc_estimator {
+       signed char     interval;
+       unsigned char   ewma_log;
+};
+
+/* "Handles"
+   ---------
+
+    All the traffic control objects have 32bit identifiers, or "handles".
+
+    They can be considered as opaque numbers from user API viewpoint,
+    but actually they always consist of two fields: major and
+    minor numbers, which are interpreted by kernel specially,
+    that may be used by applications, though not recommended.
+
+    F.e. qdisc handles always have minor number equal to zero,
+    classes (or flows) have major equal to parent qdisc major, and
+    minor uniquely identifying class inside qdisc.
+
+    Macros to manipulate handles:
+ */
+
+#define TC_H_MAJ_MASK (0xFFFF0000U)
+#define TC_H_MIN_MASK (0x0000FFFFU)
+#define TC_H_MAJ(h) ((h)&TC_H_MAJ_MASK)
+#define TC_H_MIN(h) ((h)&TC_H_MIN_MASK)
+#define TC_H_MAKE(maj,min) (((maj)&TC_H_MAJ_MASK)|((min)&TC_H_MIN_MASK))
+
+#define TC_H_UNSPEC    (0U)
+#define TC_H_ROOT      (0xFFFFFFFFU)
+#define TC_H_INGRESS    (0xFFFFFFF1U)
+#define TC_H_CLSACT    TC_H_INGRESS
+
+#define TC_H_MIN_INGRESS       0xFFF2U
+#define TC_H_MIN_EGRESS                0xFFF3U
+
+/* Need to corrospond to iproute2 tc/tc_core.h "enum link_layer" */
+enum tc_link_layer {
+       TC_LINKLAYER_UNAWARE, /* Indicate unaware old iproute2 util */
+       TC_LINKLAYER_ETHERNET,
+       TC_LINKLAYER_ATM,
+};
+#define TC_LINKLAYER_MASK 0x0F /* limit use to lower 4 bits */
+
+struct tc_ratespec {
+       unsigned char   cell_log;
+       __u8            linklayer; /* lower 4 bits */
+       unsigned short  overhead;
+       short           cell_align;
+       unsigned short  mpu;
+       __u32           rate;
+};
+
+#define TC_RTAB_SIZE   1024
+
+struct tc_sizespec {
+       unsigned char   cell_log;
+       unsigned char   size_log;
+       short           cell_align;
+       int             overhead;
+       unsigned int    linklayer;
+       unsigned int    mpu;
+       unsigned int    mtu;
+       unsigned int    tsize;
+};
+
+enum {
+       TCA_STAB_UNSPEC,
+       TCA_STAB_BASE,
+       TCA_STAB_DATA,
+       __TCA_STAB_MAX
+};
+
+#define TCA_STAB_MAX (__TCA_STAB_MAX - 1)
+
+/* FIFO section */
+
+struct tc_fifo_qopt {
+       __u32   limit;  /* Queue length: bytes for bfifo, packets for pfifo */
+};
+
+/* PRIO section */
+
+#define TCQ_PRIO_BANDS 16
+#define TCQ_MIN_PRIO_BANDS 2
+
+struct tc_prio_qopt {
+       int     bands;                  /* Number of bands */
+       __u8    priomap[TC_PRIO_MAX+1]; /* Map: logical priority -> PRIO band */
+};
+
+/* MULTIQ section */
+
+struct tc_multiq_qopt {
+       __u16   bands;                  /* Number of bands */
+       __u16   max_bands;              /* Maximum number of queues */
+};
+
+/* PLUG section */
+
+#define TCQ_PLUG_BUFFER                0
+#define TCQ_PLUG_RELEASE_ONE           1
+#define TCQ_PLUG_RELEASE_INDEFINITE    2
+#define TCQ_PLUG_LIMIT                 3
+
+struct tc_plug_qopt {
+       /* TCQ_PLUG_BUFFER: Inset a plug into the queue and
+        *  buffer any incoming packets
+        * TCQ_PLUG_RELEASE_ONE: Dequeue packets from queue head
+        *   to beginning of the next plug.
+        * TCQ_PLUG_RELEASE_INDEFINITE: Dequeue all packets from queue.
+        *   Stop buffering packets until the next TCQ_PLUG_BUFFER
+        *   command is received (just act as a pass-thru queue).
+        * TCQ_PLUG_LIMIT: Increase/decrease queue size
+        */
+       int             action;
+       __u32           limit;
+};
+
+/* TBF section */
+
+struct tc_tbf_qopt {
+       struct tc_ratespec rate;
+       struct tc_ratespec peakrate;
+       __u32           limit;
+       __u32           buffer;
+       __u32           mtu;
+};
+
+enum {
+       TCA_TBF_UNSPEC,
+       TCA_TBF_PARMS,
+       TCA_TBF_RTAB,
+       TCA_TBF_PTAB,
+       TCA_TBF_RATE64,
+       TCA_TBF_PRATE64,
+       TCA_TBF_BURST,
+       TCA_TBF_PBURST,
+       TCA_TBF_PAD,
+       __TCA_TBF_MAX,
+};
+
+#define TCA_TBF_MAX (__TCA_TBF_MAX - 1)
+
+
+/* TEQL section */
+
+/* TEQL does not require any parameters */
+
+/* SFQ section */
+
+struct tc_sfq_qopt {
+       unsigned        quantum;        /* Bytes per round allocated to flow */
+       int             perturb_period; /* Period of hash perturbation */
+       __u32           limit;          /* Maximal packets in queue */
+       unsigned        divisor;        /* Hash divisor  */
+       unsigned        flows;          /* Maximal number of flows  */
+};
+
+struct tc_sfqred_stats {
+       __u32           prob_drop;      /* Early drops, below max threshold */
+       __u32           forced_drop;    /* Early drops, after max threshold */
+       __u32           prob_mark;      /* Marked packets, below max threshold */
+       __u32           forced_mark;    /* Marked packets, after max threshold */
+       __u32           prob_mark_head; /* Marked packets, below max threshold */
+       __u32           forced_mark_head;/* Marked packets, after max threshold */
+};
+
+struct tc_sfq_qopt_v1 {
+       struct tc_sfq_qopt v0;
+       unsigned int    depth;          /* max number of packets per flow */
+       unsigned int    headdrop;
+/* SFQRED parameters */
+       __u32           limit;          /* HARD maximal flow queue length (bytes) */
+       __u32           qth_min;        /* Min average length threshold (bytes) */
+       __u32           qth_max;        /* Max average length threshold (bytes) */
+       unsigned char   Wlog;           /* log(W)               */
+       unsigned char   Plog;           /* log(P_max/(qth_max-qth_min)) */
+       unsigned char   Scell_log;      /* cell size for idle damping */
+       unsigned char   flags;
+       __u32           max_P;          /* probability, high resolution */
+/* SFQRED stats */
+       struct tc_sfqred_stats stats;
+};
+
+
+struct tc_sfq_xstats {
+       __s32           allot;
+};
+
+/* RED section */
+
+enum {
+       TCA_RED_UNSPEC,
+       TCA_RED_PARMS,
+       TCA_RED_STAB,
+       TCA_RED_MAX_P,
+       __TCA_RED_MAX,
+};
+
+#define TCA_RED_MAX (__TCA_RED_MAX - 1)
+
+struct tc_red_qopt {
+       __u32           limit;          /* HARD maximal queue length (bytes)    */
+       __u32           qth_min;        /* Min average length threshold (bytes) */
+       __u32           qth_max;        /* Max average length threshold (bytes) */
+       unsigned char   Wlog;           /* log(W)               */
+       unsigned char   Plog;           /* log(P_max/(qth_max-qth_min)) */
+       unsigned char   Scell_log;      /* cell size for idle damping */
+       unsigned char   flags;
+#define TC_RED_ECN             1
+#define TC_RED_HARDDROP                2
+#define TC_RED_ADAPTATIVE      4
+};
+
+struct tc_red_xstats {
+       __u32           early;          /* Early drops */
+       __u32           pdrop;          /* Drops due to queue limits */
+       __u32           other;          /* Drops due to drop() calls */
+       __u32           marked;         /* Marked packets */
+};
+
+/* GRED section */
+
+#define MAX_DPs 16
+
+enum {
+       TCA_GRED_UNSPEC,
+       TCA_GRED_PARMS,
+       TCA_GRED_STAB,
+       TCA_GRED_DPS,
+       TCA_GRED_MAX_P,
+       TCA_GRED_LIMIT,
+       __TCA_GRED_MAX,
+};
+
+#define TCA_GRED_MAX (__TCA_GRED_MAX - 1)
+
+struct tc_gred_qopt {
+       __u32           limit;        /* HARD maximal queue length (bytes)    */
+       __u32           qth_min;      /* Min average length threshold (bytes) */
+       __u32           qth_max;      /* Max average length threshold (bytes) */
+       __u32           DP;           /* up to 2^32 DPs */
+       __u32           backlog;
+       __u32           qave;
+       __u32           forced;
+       __u32           early;
+       __u32           other;
+       __u32           pdrop;
+       __u8            Wlog;         /* log(W)               */
+       __u8            Plog;         /* log(P_max/(qth_max-qth_min)) */
+       __u8            Scell_log;    /* cell size for idle damping */
+       __u8            prio;         /* prio of this VQ */
+       __u32           packets;
+       __u32           bytesin;
+};
+
+/* gred setup */
+struct tc_gred_sopt {
+       __u32           DPs;
+       __u32           def_DP;
+       __u8            grio;
+       __u8            flags;
+       __u16           pad1;
+};
+
+/* CHOKe section */
+
+enum {
+       TCA_CHOKE_UNSPEC,
+       TCA_CHOKE_PARMS,
+       TCA_CHOKE_STAB,
+       TCA_CHOKE_MAX_P,
+       __TCA_CHOKE_MAX,
+};
+
+#define TCA_CHOKE_MAX (__TCA_CHOKE_MAX - 1)
+
+struct tc_choke_qopt {
+       __u32           limit;          /* Hard queue length (packets)  */
+       __u32           qth_min;        /* Min average threshold (packets) */
+       __u32           qth_max;        /* Max average threshold (packets) */
+       unsigned char   Wlog;           /* log(W)               */
+       unsigned char   Plog;           /* log(P_max/(qth_max-qth_min)) */
+       unsigned char   Scell_log;      /* cell size for idle damping */
+       unsigned char   flags;          /* see RED flags */
+};
+
+struct tc_choke_xstats {
+       __u32           early;          /* Early drops */
+       __u32           pdrop;          /* Drops due to queue limits */
+       __u32           other;          /* Drops due to drop() calls */
+       __u32           marked;         /* Marked packets */
+       __u32           matched;        /* Drops due to flow match */
+};
+
+/* HTB section */
+#define TC_HTB_NUMPRIO         8
+#define TC_HTB_MAXDEPTH                8
+#define TC_HTB_PROTOVER                3 /* the same as HTB and TC's major */
+
+struct tc_htb_opt {
+       struct tc_ratespec      rate;
+       struct tc_ratespec      ceil;
+       __u32   buffer;
+       __u32   cbuffer;
+       __u32   quantum;
+       __u32   level;          /* out only */
+       __u32   prio;
+};
+struct tc_htb_glob {
+       __u32 version;          /* to match HTB/TC */
+       __u32 rate2quantum;     /* bps->quantum divisor */
+       __u32 defcls;           /* default class number */
+       __u32 debug;            /* debug flags */
+
+       /* stats */
+       __u32 direct_pkts; /* count of non shaped packets */
+};
+enum {
+       TCA_HTB_UNSPEC,
+       TCA_HTB_PARMS,
+       TCA_HTB_INIT,
+       TCA_HTB_CTAB,
+       TCA_HTB_RTAB,
+       TCA_HTB_DIRECT_QLEN,
+       TCA_HTB_RATE64,
+       TCA_HTB_CEIL64,
+       TCA_HTB_PAD,
+       __TCA_HTB_MAX,
+};
+
+#define TCA_HTB_MAX (__TCA_HTB_MAX - 1)
+
+struct tc_htb_xstats {
+       __u32 lends;
+       __u32 borrows;
+       __u32 giants;   /* too big packets (rate will not be accurate) */
+       __u32 tokens;
+       __u32 ctokens;
+};
+
+/* HFSC section */
+
+struct tc_hfsc_qopt {
+       __u16   defcls;         /* default class */
+};
+
+struct tc_service_curve {
+       __u32   m1;             /* slope of the first segment in bps */
+       __u32   d;              /* x-projection of the first segment in us */
+       __u32   m2;             /* slope of the second segment in bps */
+};
+
+struct tc_hfsc_stats {
+       __u64   work;           /* total work done */
+       __u64   rtwork;         /* work done by real-time criteria */
+       __u32   period;         /* current period */
+       __u32   level;          /* class level in hierarchy */
+};
+
+enum {
+       TCA_HFSC_UNSPEC,
+       TCA_HFSC_RSC,
+       TCA_HFSC_FSC,
+       TCA_HFSC_USC,
+       __TCA_HFSC_MAX,
+};
+
+#define TCA_HFSC_MAX (__TCA_HFSC_MAX - 1)
+
+
+/* CBQ section */
+
+#define TC_CBQ_MAXPRIO         8
+#define TC_CBQ_MAXLEVEL                8
+#define TC_CBQ_DEF_EWMA                5
+
+struct tc_cbq_lssopt {
+       unsigned char   change;
+       unsigned char   flags;
+#define TCF_CBQ_LSS_BOUNDED    1
+#define TCF_CBQ_LSS_ISOLATED   2
+       unsigned char   ewma_log;
+       unsigned char   level;
+#define TCF_CBQ_LSS_FLAGS      1
+#define TCF_CBQ_LSS_EWMA       2
+#define TCF_CBQ_LSS_MAXIDLE    4
+#define TCF_CBQ_LSS_MINIDLE    8
+#define TCF_CBQ_LSS_OFFTIME    0x10
+#define TCF_CBQ_LSS_AVPKT      0x20
+       __u32           maxidle;
+       __u32           minidle;
+       __u32           offtime;
+       __u32           avpkt;
+};
+
+struct tc_cbq_wrropt {
+       unsigned char   flags;
+       unsigned char   priority;
+       unsigned char   cpriority;
+       unsigned char   __reserved;
+       __u32           allot;
+       __u32           weight;
+};
+
+struct tc_cbq_ovl {
+       unsigned char   strategy;
+#define        TC_CBQ_OVL_CLASSIC      0
+#define        TC_CBQ_OVL_DELAY        1
+#define        TC_CBQ_OVL_LOWPRIO      2
+#define        TC_CBQ_OVL_DROP         3
+#define        TC_CBQ_OVL_RCLASSIC     4
+       unsigned char   priority2;
+       __u16           pad;
+       __u32           penalty;
+};
+
+struct tc_cbq_police {
+       unsigned char   police;
+       unsigned char   __res1;
+       unsigned short  __res2;
+};
+
+struct tc_cbq_fopt {
+       __u32           split;
+       __u32           defmap;
+       __u32           defchange;
+};
+
+struct tc_cbq_xstats {
+       __u32           borrows;
+       __u32           overactions;
+       __s32           avgidle;
+       __s32           undertime;
+};
+
+enum {
+       TCA_CBQ_UNSPEC,
+       TCA_CBQ_LSSOPT,
+       TCA_CBQ_WRROPT,
+       TCA_CBQ_FOPT,
+       TCA_CBQ_OVL_STRATEGY,
+       TCA_CBQ_RATE,
+       TCA_CBQ_RTAB,
+       TCA_CBQ_POLICE,
+       __TCA_CBQ_MAX,
+};
+
+#define TCA_CBQ_MAX    (__TCA_CBQ_MAX - 1)
+
+/* dsmark section */
+
+enum {
+       TCA_DSMARK_UNSPEC,
+       TCA_DSMARK_INDICES,
+       TCA_DSMARK_DEFAULT_INDEX,
+       TCA_DSMARK_SET_TC_INDEX,
+       TCA_DSMARK_MASK,
+       TCA_DSMARK_VALUE,
+       __TCA_DSMARK_MAX,
+};
+
+#define TCA_DSMARK_MAX (__TCA_DSMARK_MAX - 1)
+
+/* ATM  section */
+
+enum {
+       TCA_ATM_UNSPEC,
+       TCA_ATM_FD,             /* file/socket descriptor */
+       TCA_ATM_PTR,            /* pointer to descriptor - later */
+       TCA_ATM_HDR,            /* LL header */
+       TCA_ATM_EXCESS,         /* excess traffic class (0 for CLP)  */
+       TCA_ATM_ADDR,           /* PVC address (for output only) */
+       TCA_ATM_STATE,          /* VC state (ATM_VS_*; for output only) */
+       __TCA_ATM_MAX,
+};
+
+#define TCA_ATM_MAX    (__TCA_ATM_MAX - 1)
+
+/* Network emulator */
+
+enum {
+       TCA_NETEM_UNSPEC,
+       TCA_NETEM_CORR,
+       TCA_NETEM_DELAY_DIST,
+       TCA_NETEM_REORDER,
+       TCA_NETEM_CORRUPT,
+       TCA_NETEM_LOSS,
+       TCA_NETEM_RATE,
+       TCA_NETEM_ECN,
+       TCA_NETEM_RATE64,
+       TCA_NETEM_PAD,
+       __TCA_NETEM_MAX,
+};
+
+#define TCA_NETEM_MAX (__TCA_NETEM_MAX - 1)
+
+struct tc_netem_qopt {
+       __u32   latency;        /* added delay (us) */
+       __u32   limit;          /* fifo limit (packets) */
+       __u32   loss;           /* random packet loss (0=none ~0=100%) */
+       __u32   gap;            /* re-ordering gap (0 for none) */
+       __u32   duplicate;      /* random packet dup  (0=none ~0=100%) */
+       __u32   jitter;         /* random jitter in latency (us) */
+};
+
+struct tc_netem_corr {
+       __u32   delay_corr;     /* delay correlation */
+       __u32   loss_corr;      /* packet loss correlation */
+       __u32   dup_corr;       /* duplicate correlation  */
+};
+
+struct tc_netem_reorder {
+       __u32   probability;
+       __u32   correlation;
+};
+
+struct tc_netem_corrupt {
+       __u32   probability;
+       __u32   correlation;
+};
+
+struct tc_netem_rate {
+       __u32   rate;   /* byte/s */
+       __s32   packet_overhead;
+       __u32   cell_size;
+       __s32   cell_overhead;
+};
+
+enum {
+       NETEM_LOSS_UNSPEC,
+       NETEM_LOSS_GI,          /* General Intuitive - 4 state model */
+       NETEM_LOSS_GE,          /* Gilbert Elliot models */
+       __NETEM_LOSS_MAX
+};
+#define NETEM_LOSS_MAX (__NETEM_LOSS_MAX - 1)
+
+/* State transition probabilities for 4 state model */
+struct tc_netem_gimodel {
+       __u32   p13;
+       __u32   p31;
+       __u32   p32;
+       __u32   p14;
+       __u32   p23;
+};
+
+/* Gilbert-Elliot models */
+struct tc_netem_gemodel {
+       __u32 p;
+       __u32 r;
+       __u32 h;
+       __u32 k1;
+};
+
+#define NETEM_DIST_SCALE       8192
+#define NETEM_DIST_MAX         16384
+
+/* DRR */
+
+enum {
+       TCA_DRR_UNSPEC,
+       TCA_DRR_QUANTUM,
+       __TCA_DRR_MAX
+};
+
+#define TCA_DRR_MAX    (__TCA_DRR_MAX - 1)
+
+struct tc_drr_stats {
+       __u32   deficit;
+};
+
+/* MQPRIO */
+#define TC_QOPT_BITMASK 15
+#define TC_QOPT_MAX_QUEUE 16
+
+enum {
+       TC_MQPRIO_HW_OFFLOAD_NONE,      /* no offload requested */
+       TC_MQPRIO_HW_OFFLOAD_TCS,       /* offload TCs, no queue counts */
+       __TC_MQPRIO_HW_OFFLOAD_MAX
+};
+
+#define TC_MQPRIO_HW_OFFLOAD_MAX (__TC_MQPRIO_HW_OFFLOAD_MAX - 1)
+
+struct tc_mqprio_qopt {
+       __u8    num_tc;
+       __u8    prio_tc_map[TC_QOPT_BITMASK + 1];
+       __u8    hw;
+       __u16   count[TC_QOPT_MAX_QUEUE];
+       __u16   offset[TC_QOPT_MAX_QUEUE];
+};
+
+/* SFB */
+
+enum {
+       TCA_SFB_UNSPEC,
+       TCA_SFB_PARMS,
+       __TCA_SFB_MAX,
+};
+
+#define TCA_SFB_MAX (__TCA_SFB_MAX - 1)
+
+/*
+ * Note: increment, decrement are Q0.16 fixed-point values.
+ */
+struct tc_sfb_qopt {
+       __u32 rehash_interval;  /* delay between hash move, in ms */
+       __u32 warmup_time;      /* double buffering warmup time in ms (warmup_time < rehash_interval) */
+       __u32 max;              /* max len of qlen_min */
+       __u32 bin_size;         /* maximum queue length per bin */
+       __u32 increment;        /* probability increment, (d1 in Blue) */
+       __u32 decrement;        /* probability decrement, (d2 in Blue) */
+       __u32 limit;            /* max SFB queue length */
+       __u32 penalty_rate;     /* inelastic flows are rate limited to 'rate' pps */
+       __u32 penalty_burst;
+};
+
+struct tc_sfb_xstats {
+       __u32 earlydrop;
+       __u32 penaltydrop;
+       __u32 bucketdrop;
+       __u32 queuedrop;
+       __u32 childdrop; /* drops in child qdisc */
+       __u32 marked;
+       __u32 maxqlen;
+       __u32 maxprob;
+       __u32 avgprob;
+};
+
+#define SFB_MAX_PROB 0xFFFF
+
+/* QFQ */
+enum {
+       TCA_QFQ_UNSPEC,
+       TCA_QFQ_WEIGHT,
+       TCA_QFQ_LMAX,
+       __TCA_QFQ_MAX
+};
+
+#define TCA_QFQ_MAX    (__TCA_QFQ_MAX - 1)
+
+struct tc_qfq_stats {
+       __u32 weight;
+       __u32 lmax;
+};
+
+/* CODEL */
+
+enum {
+       TCA_CODEL_UNSPEC,
+       TCA_CODEL_TARGET,
+       TCA_CODEL_LIMIT,
+       TCA_CODEL_INTERVAL,
+       TCA_CODEL_ECN,
+       TCA_CODEL_CE_THRESHOLD,
+       __TCA_CODEL_MAX
+};
+
+#define TCA_CODEL_MAX  (__TCA_CODEL_MAX - 1)
+
+struct tc_codel_xstats {
+       __u32   maxpacket; /* largest packet we've seen so far */
+       __u32   count;     /* how many drops we've done since the last time we
+                           * entered dropping state
+                           */
+       __u32   lastcount; /* count at entry to dropping state */
+       __u32   ldelay;    /* in-queue delay seen by most recently dequeued packet */
+       __s32   drop_next; /* time to drop next packet */
+       __u32   drop_overlimit; /* number of time max qdisc packet limit was hit */
+       __u32   ecn_mark;  /* number of packets we ECN marked instead of dropped */
+       __u32   dropping;  /* are we in dropping state ? */
+       __u32   ce_mark;   /* number of CE marked packets because of ce_threshold */
+};
+
+/* FQ_CODEL */
+
+enum {
+       TCA_FQ_CODEL_UNSPEC,
+       TCA_FQ_CODEL_TARGET,
+       TCA_FQ_CODEL_LIMIT,
+       TCA_FQ_CODEL_INTERVAL,
+       TCA_FQ_CODEL_ECN,
+       TCA_FQ_CODEL_FLOWS,
+       TCA_FQ_CODEL_QUANTUM,
+       TCA_FQ_CODEL_CE_THRESHOLD,
+       TCA_FQ_CODEL_DROP_BATCH_SIZE,
+       TCA_FQ_CODEL_MEMORY_LIMIT,
+       __TCA_FQ_CODEL_MAX
+};
+
+#define TCA_FQ_CODEL_MAX       (__TCA_FQ_CODEL_MAX - 1)
+
+enum {
+       TCA_FQ_CODEL_XSTATS_QDISC,
+       TCA_FQ_CODEL_XSTATS_CLASS,
+};
+
+struct tc_fq_codel_qd_stats {
+       __u32   maxpacket;      /* largest packet we've seen so far */
+       __u32   drop_overlimit; /* number of time max qdisc
+                                * packet limit was hit
+                                */
+       __u32   ecn_mark;       /* number of packets we ECN marked
+                                * instead of being dropped
+                                */
+       __u32   new_flow_count; /* number of time packets
+                                * created a 'new flow'
+                                */
+       __u32   new_flows_len;  /* count of flows in new list */
+       __u32   old_flows_len;  /* count of flows in old list */
+       __u32   ce_mark;        /* packets above ce_threshold */
+       __u32   memory_usage;   /* in bytes */
+       __u32   drop_overmemory;
+};
+
+struct tc_fq_codel_cl_stats {
+       __s32   deficit;
+       __u32   ldelay;         /* in-queue delay seen by most recently
+                                * dequeued packet
+                                */
+       __u32   count;
+       __u32   lastcount;
+       __u32   dropping;
+       __s32   drop_next;
+};
+
+struct tc_fq_codel_xstats {
+       __u32   type;
+       union {
+               struct tc_fq_codel_qd_stats qdisc_stats;
+               struct tc_fq_codel_cl_stats class_stats;
+       };
+};
+
+/* FQ */
+
+enum {
+       TCA_FQ_UNSPEC,
+
+       TCA_FQ_PLIMIT,          /* limit of total number of packets in queue */
+
+       TCA_FQ_FLOW_PLIMIT,     /* limit of packets per flow */
+
+       TCA_FQ_QUANTUM,         /* RR quantum */
+
+       TCA_FQ_INITIAL_QUANTUM,         /* RR quantum for new flow */
+
+       TCA_FQ_RATE_ENABLE,     /* enable/disable rate limiting */
+
+       TCA_FQ_FLOW_DEFAULT_RATE,/* obsolete, do not use */
+
+       TCA_FQ_FLOW_MAX_RATE,   /* per flow max rate */
+
+       TCA_FQ_BUCKETS_LOG,     /* log2(number of buckets) */
+
+       TCA_FQ_FLOW_REFILL_DELAY,       /* flow credit refill delay in usec */
+
+       TCA_FQ_ORPHAN_MASK,     /* mask applied to orphaned skb hashes */
+
+       TCA_FQ_LOW_RATE_THRESHOLD, /* per packet delay under this rate */
+
+       __TCA_FQ_MAX
+};
+
+#define TCA_FQ_MAX     (__TCA_FQ_MAX - 1)
+
+struct tc_fq_qd_stats {
+       __u64   gc_flows;
+       __u64   highprio_packets;
+       __u64   tcp_retrans;
+       __u64   throttled;
+       __u64   flows_plimit;
+       __u64   pkts_too_long;
+       __u64   allocation_errors;
+       __s64   time_next_delayed_flow;
+       __u32   flows;
+       __u32   inactive_flows;
+       __u32   throttled_flows;
+       __u32   unthrottle_latency_ns;
+};
+
+/* Heavy-Hitter Filter */
+
+enum {
+       TCA_HHF_UNSPEC,
+       TCA_HHF_BACKLOG_LIMIT,
+       TCA_HHF_QUANTUM,
+       TCA_HHF_HH_FLOWS_LIMIT,
+       TCA_HHF_RESET_TIMEOUT,
+       TCA_HHF_ADMIT_BYTES,
+       TCA_HHF_EVICT_TIMEOUT,
+       TCA_HHF_NON_HH_WEIGHT,
+       __TCA_HHF_MAX
+};
+
+#define TCA_HHF_MAX    (__TCA_HHF_MAX - 1)
+
+struct tc_hhf_xstats {
+       __u32   drop_overlimit; /* number of times max qdisc packet limit
+                                * was hit
+                                */
+       __u32   hh_overlimit;   /* number of times max heavy-hitters was hit */
+       __u32   hh_tot_count;   /* number of captured heavy-hitters so far */
+       __u32   hh_cur_count;   /* number of current heavy-hitters */
+};
+
+/* PIE */
+enum {
+       TCA_PIE_UNSPEC,
+       TCA_PIE_TARGET,
+       TCA_PIE_LIMIT,
+       TCA_PIE_TUPDATE,
+       TCA_PIE_ALPHA,
+       TCA_PIE_BETA,
+       TCA_PIE_ECN,
+       TCA_PIE_BYTEMODE,
+       __TCA_PIE_MAX
+};
+#define TCA_PIE_MAX   (__TCA_PIE_MAX - 1)
+
+struct tc_pie_xstats {
+       __u32 prob;             /* current probability */
+       __u32 delay;            /* current delay in ms */
+       __u32 avg_dq_rate;      /* current average dq_rate in bits/pie_time */
+       __u32 packets_in;       /* total number of packets enqueued */
+       __u32 dropped;          /* packets dropped due to pie_action */
+       __u32 overlimit;        /* dropped due to lack of space in queue */
+       __u32 maxq;             /* maximum queue size */
+       __u32 ecn_mark;         /* packets marked with ecn*/
+};
+#endif
diff --git a/include/uapi/linux/posix_types.h b/include/uapi/linux/posix_types.h
new file mode 100644 (file)
index 0000000..988f76e
--- /dev/null
@@ -0,0 +1,37 @@
+#ifndef _LINUX_POSIX_TYPES_H
+#define _LINUX_POSIX_TYPES_H
+
+#include <linux/stddef.h>
+
+/*
+ * This allows for 1024 file descriptors: if NR_OPEN is ever grown
+ * beyond that you'll have to change this too. But 1024 fd's seem to be
+ * enough even for such "real" unices like OSF/1, so hopefully this is
+ * one limit that doesn't have to be changed [again].
+ *
+ * Note that POSIX wants the FD_CLEAR(fd,fdsetp) defines to be in
+ * <sys/time.h> (and thus <linux/time.h>) - but this is a more logical
+ * place for them. Solved by having dummy defines in <sys/time.h>.
+ */
+
+/*
+ * This macro may have been defined in <gnu/types.h>. But we always
+ * use the one here.
+ */
+#undef __FD_SETSIZE
+#define __FD_SETSIZE   1024
+
+typedef struct {
+       unsigned long fds_bits[__FD_SETSIZE / (8 * sizeof(long))];
+} __kernel_fd_set;
+
+/* Type of a signal handler.  */
+typedef void (*__kernel_sighandler_t)(int);
+
+/* Type of a SYSV IPC key.  */
+typedef int __kernel_key_t;
+typedef int __kernel_mqd_t;
+
+#include <asm/posix_types.h>
+
+#endif /* _LINUX_POSIX_TYPES_H */
diff --git a/include/uapi/linux/rtnetlink.h b/include/uapi/linux/rtnetlink.h
new file mode 100644 (file)
index 0000000..813e9e0
--- /dev/null
@@ -0,0 +1,718 @@
+#ifndef __LINUX_RTNETLINK_H
+#define __LINUX_RTNETLINK_H
+
+#include <linux/types.h>
+#include <linux/netlink.h>
+#include <linux/if_link.h>
+#include <linux/if_addr.h>
+#include <linux/neighbour.h>
+
+/* rtnetlink families. Values up to 127 are reserved for real address
+ * families, values above 128 may be used arbitrarily.
+ */
+#define RTNL_FAMILY_IPMR               128
+#define RTNL_FAMILY_IP6MR              129
+#define RTNL_FAMILY_MAX                        129
+
+/****
+ *             Routing/neighbour discovery messages.
+ ****/
+
+/* Types of messages */
+
+enum {
+       RTM_BASE        = 16,
+#define RTM_BASE       RTM_BASE
+
+       RTM_NEWLINK     = 16,
+#define RTM_NEWLINK    RTM_NEWLINK
+       RTM_DELLINK,
+#define RTM_DELLINK    RTM_DELLINK
+       RTM_GETLINK,
+#define RTM_GETLINK    RTM_GETLINK
+       RTM_SETLINK,
+#define RTM_SETLINK    RTM_SETLINK
+
+       RTM_NEWADDR     = 20,
+#define RTM_NEWADDR    RTM_NEWADDR
+       RTM_DELADDR,
+#define RTM_DELADDR    RTM_DELADDR
+       RTM_GETADDR,
+#define RTM_GETADDR    RTM_GETADDR
+
+       RTM_NEWROUTE    = 24,
+#define RTM_NEWROUTE   RTM_NEWROUTE
+       RTM_DELROUTE,
+#define RTM_DELROUTE   RTM_DELROUTE
+       RTM_GETROUTE,
+#define RTM_GETROUTE   RTM_GETROUTE
+
+       RTM_NEWNEIGH    = 28,
+#define RTM_NEWNEIGH   RTM_NEWNEIGH
+       RTM_DELNEIGH,
+#define RTM_DELNEIGH   RTM_DELNEIGH
+       RTM_GETNEIGH,
+#define RTM_GETNEIGH   RTM_GETNEIGH
+
+       RTM_NEWRULE     = 32,
+#define RTM_NEWRULE    RTM_NEWRULE
+       RTM_DELRULE,
+#define RTM_DELRULE    RTM_DELRULE
+       RTM_GETRULE,
+#define RTM_GETRULE    RTM_GETRULE
+
+       RTM_NEWQDISC    = 36,
+#define RTM_NEWQDISC   RTM_NEWQDISC
+       RTM_DELQDISC,
+#define RTM_DELQDISC   RTM_DELQDISC
+       RTM_GETQDISC,
+#define RTM_GETQDISC   RTM_GETQDISC
+
+       RTM_NEWTCLASS   = 40,
+#define RTM_NEWTCLASS  RTM_NEWTCLASS
+       RTM_DELTCLASS,
+#define RTM_DELTCLASS  RTM_DELTCLASS
+       RTM_GETTCLASS,
+#define RTM_GETTCLASS  RTM_GETTCLASS
+
+       RTM_NEWTFILTER  = 44,
+#define RTM_NEWTFILTER RTM_NEWTFILTER
+       RTM_DELTFILTER,
+#define RTM_DELTFILTER RTM_DELTFILTER
+       RTM_GETTFILTER,
+#define RTM_GETTFILTER RTM_GETTFILTER
+
+       RTM_NEWACTION   = 48,
+#define RTM_NEWACTION   RTM_NEWACTION
+       RTM_DELACTION,
+#define RTM_DELACTION   RTM_DELACTION
+       RTM_GETACTION,
+#define RTM_GETACTION   RTM_GETACTION
+
+       RTM_NEWPREFIX   = 52,
+#define RTM_NEWPREFIX  RTM_NEWPREFIX
+
+       RTM_GETMULTICAST = 58,
+#define RTM_GETMULTICAST RTM_GETMULTICAST
+
+       RTM_GETANYCAST  = 62,
+#define RTM_GETANYCAST RTM_GETANYCAST
+
+       RTM_NEWNEIGHTBL = 64,
+#define RTM_NEWNEIGHTBL        RTM_NEWNEIGHTBL
+       RTM_GETNEIGHTBL = 66,
+#define RTM_GETNEIGHTBL        RTM_GETNEIGHTBL
+       RTM_SETNEIGHTBL,
+#define RTM_SETNEIGHTBL        RTM_SETNEIGHTBL
+
+       RTM_NEWNDUSEROPT = 68,
+#define RTM_NEWNDUSEROPT RTM_NEWNDUSEROPT
+
+       RTM_NEWADDRLABEL = 72,
+#define RTM_NEWADDRLABEL RTM_NEWADDRLABEL
+       RTM_DELADDRLABEL,
+#define RTM_DELADDRLABEL RTM_DELADDRLABEL
+       RTM_GETADDRLABEL,
+#define RTM_GETADDRLABEL RTM_GETADDRLABEL
+
+       RTM_GETDCB = 78,
+#define RTM_GETDCB RTM_GETDCB
+       RTM_SETDCB,
+#define RTM_SETDCB RTM_SETDCB
+
+       RTM_NEWNETCONF = 80,
+#define RTM_NEWNETCONF RTM_NEWNETCONF
+       RTM_DELNETCONF,
+#define RTM_DELNETCONF RTM_DELNETCONF
+       RTM_GETNETCONF = 82,
+#define RTM_GETNETCONF RTM_GETNETCONF
+
+       RTM_NEWMDB = 84,
+#define RTM_NEWMDB RTM_NEWMDB
+       RTM_DELMDB = 85,
+#define RTM_DELMDB RTM_DELMDB
+       RTM_GETMDB = 86,
+#define RTM_GETMDB RTM_GETMDB
+
+       RTM_NEWNSID = 88,
+#define RTM_NEWNSID RTM_NEWNSID
+       RTM_DELNSID = 89,
+#define RTM_DELNSID RTM_DELNSID
+       RTM_GETNSID = 90,
+#define RTM_GETNSID RTM_GETNSID
+
+       RTM_NEWSTATS = 92,
+#define RTM_NEWSTATS RTM_NEWSTATS
+       RTM_GETSTATS = 94,
+#define RTM_GETSTATS RTM_GETSTATS
+
+       RTM_NEWCACHEREPORT = 96,
+#define RTM_NEWCACHEREPORT RTM_NEWCACHEREPORT
+
+       __RTM_MAX,
+#define RTM_MAX                (((__RTM_MAX + 3) & ~3) - 1)
+};
+
+#define RTM_NR_MSGTYPES        (RTM_MAX + 1 - RTM_BASE)
+#define RTM_NR_FAMILIES        (RTM_NR_MSGTYPES >> 2)
+#define RTM_FAM(cmd)   (((cmd) - RTM_BASE) >> 2)
+
+/* 
+   Generic structure for encapsulation of optional route information.
+   It is reminiscent of sockaddr, but with sa_family replaced
+   with attribute type.
+ */
+
+struct rtattr {
+       unsigned short  rta_len;
+       unsigned short  rta_type;
+};
+
+/* Macros to handle rtattributes */
+
+#define RTA_ALIGNTO    4U
+#define RTA_ALIGN(len) ( ((len)+RTA_ALIGNTO-1) & ~(RTA_ALIGNTO-1) )
+#define RTA_OK(rta,len) ((len) >= (int)sizeof(struct rtattr) && \
+                        (rta)->rta_len >= sizeof(struct rtattr) && \
+                        (rta)->rta_len <= (len))
+#define RTA_NEXT(rta,attrlen)  ((attrlen) -= RTA_ALIGN((rta)->rta_len), \
+                                (struct rtattr*)(((char*)(rta)) + RTA_ALIGN((rta)->rta_len)))
+#define RTA_LENGTH(len)        (RTA_ALIGN(sizeof(struct rtattr)) + (len))
+#define RTA_SPACE(len) RTA_ALIGN(RTA_LENGTH(len))
+#define RTA_DATA(rta)   ((void*)(((char*)(rta)) + RTA_LENGTH(0)))
+#define RTA_PAYLOAD(rta) ((int)((rta)->rta_len) - RTA_LENGTH(0))
+
+
+
+
+/******************************************************************************
+ *             Definitions used in routing table administration.
+ ****/
+
+struct rtmsg {
+       unsigned char           rtm_family;
+       unsigned char           rtm_dst_len;
+       unsigned char           rtm_src_len;
+       unsigned char           rtm_tos;
+
+       unsigned char           rtm_table;      /* Routing table id */
+       unsigned char           rtm_protocol;   /* Routing protocol; see below  */
+       unsigned char           rtm_scope;      /* See below */ 
+       unsigned char           rtm_type;       /* See below    */
+
+       unsigned                rtm_flags;
+};
+
+/* rtm_type */
+
+enum {
+       RTN_UNSPEC,
+       RTN_UNICAST,            /* Gateway or direct route      */
+       RTN_LOCAL,              /* Accept locally               */
+       RTN_BROADCAST,          /* Accept locally as broadcast,
+                                  send as broadcast */
+       RTN_ANYCAST,            /* Accept locally as broadcast,
+                                  but send as unicast */
+       RTN_MULTICAST,          /* Multicast route              */
+       RTN_BLACKHOLE,          /* Drop                         */
+       RTN_UNREACHABLE,        /* Destination is unreachable   */
+       RTN_PROHIBIT,           /* Administratively prohibited  */
+       RTN_THROW,              /* Not in this table            */
+       RTN_NAT,                /* Translate this address       */
+       RTN_XRESOLVE,           /* Use external resolver        */
+       __RTN_MAX
+};
+
+#define RTN_MAX (__RTN_MAX - 1)
+
+
+/* rtm_protocol */
+
+#define RTPROT_UNSPEC  0
+#define RTPROT_REDIRECT        1       /* Route installed by ICMP redirects;
+                                  not used by current IPv4 */
+#define RTPROT_KERNEL  2       /* Route installed by kernel            */
+#define RTPROT_BOOT    3       /* Route installed during boot          */
+#define RTPROT_STATIC  4       /* Route installed by administrator     */
+
+/* Values of protocol >= RTPROT_STATIC are not interpreted by kernel;
+   they are just passed from user and back as is.
+   It will be used by hypothetical multiple routing daemons.
+   Note that protocol values should be standardized in order to
+   avoid conflicts.
+ */
+
+#define RTPROT_GATED   8       /* Apparently, GateD */
+#define RTPROT_RA      9       /* RDISC/ND router advertisements */
+#define RTPROT_MRT     10      /* Merit MRT */
+#define RTPROT_ZEBRA   11      /* Zebra */
+#define RTPROT_BIRD    12      /* BIRD */
+#define RTPROT_DNROUTED        13      /* DECnet routing daemon */
+#define RTPROT_XORP    14      /* XORP */
+#define RTPROT_NTK     15      /* Netsukuku */
+#define RTPROT_DHCP    16      /* DHCP client */
+#define RTPROT_MROUTED 17      /* Multicast daemon */
+#define RTPROT_BABEL   42      /* Babel daemon */
+
+/* rtm_scope
+
+   Really it is not scope, but sort of distance to the destination.
+   NOWHERE are reserved for not existing destinations, HOST is our
+   local addresses, LINK are destinations, located on directly attached
+   link and UNIVERSE is everywhere in the Universe.
+
+   Intermediate values are also possible f.e. interior routes
+   could be assigned a value between UNIVERSE and LINK.
+*/
+
+enum rt_scope_t {
+       RT_SCOPE_UNIVERSE=0,
+/* User defined values  */
+       RT_SCOPE_SITE=200,
+       RT_SCOPE_LINK=253,
+       RT_SCOPE_HOST=254,
+       RT_SCOPE_NOWHERE=255
+};
+
+/* rtm_flags */
+
+#define RTM_F_NOTIFY           0x100   /* Notify user of route change  */
+#define RTM_F_CLONED           0x200   /* This route is cloned         */
+#define RTM_F_EQUALIZE         0x400   /* Multipath equalizer: NI      */
+#define RTM_F_PREFIX           0x800   /* Prefix addresses             */
+#define RTM_F_LOOKUP_TABLE     0x1000  /* set rtm_table to FIB lookup result */
+#define RTM_F_FIB_MATCH                0x2000  /* return full fib lookup match */
+
+/* Reserved table identifiers */
+
+enum rt_class_t {
+       RT_TABLE_UNSPEC=0,
+/* User defined values */
+       RT_TABLE_COMPAT=252,
+       RT_TABLE_DEFAULT=253,
+       RT_TABLE_MAIN=254,
+       RT_TABLE_LOCAL=255,
+       RT_TABLE_MAX=0xFFFFFFFF
+};
+
+
+/* Routing message attributes */
+
+enum rtattr_type_t {
+       RTA_UNSPEC,
+       RTA_DST,
+       RTA_SRC,
+       RTA_IIF,
+       RTA_OIF,
+       RTA_GATEWAY,
+       RTA_PRIORITY,
+       RTA_PREFSRC,
+       RTA_METRICS,
+       RTA_MULTIPATH,
+       RTA_PROTOINFO, /* no longer used */
+       RTA_FLOW,
+       RTA_CACHEINFO,
+       RTA_SESSION, /* no longer used */
+       RTA_MP_ALGO, /* no longer used */
+       RTA_TABLE,
+       RTA_MARK,
+       RTA_MFC_STATS,
+       RTA_VIA,
+       RTA_NEWDST,
+       RTA_PREF,
+       RTA_ENCAP_TYPE,
+       RTA_ENCAP,
+       RTA_EXPIRES,
+       RTA_PAD,
+       RTA_UID,
+       RTA_TTL_PROPAGATE,
+       __RTA_MAX
+};
+
+#define RTA_MAX (__RTA_MAX - 1)
+
+#define RTM_RTA(r)  ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct rtmsg))))
+#define RTM_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct rtmsg))
+
+/* RTM_MULTIPATH --- array of struct rtnexthop.
+ *
+ * "struct rtnexthop" describes all necessary nexthop information,
+ * i.e. parameters of path to a destination via this nexthop.
+ *
+ * At the moment it is impossible to set different prefsrc, mtu, window
+ * and rtt for different paths from multipath.
+ */
+
+struct rtnexthop {
+       unsigned short          rtnh_len;
+       unsigned char           rtnh_flags;
+       unsigned char           rtnh_hops;
+       int                     rtnh_ifindex;
+};
+
+/* rtnh_flags */
+
+#define RTNH_F_DEAD            1       /* Nexthop is dead (used by multipath)  */
+#define RTNH_F_PERVASIVE       2       /* Do recursive gateway lookup  */
+#define RTNH_F_ONLINK          4       /* Gateway is forced on link    */
+#define RTNH_F_OFFLOAD         8       /* offloaded route */
+#define RTNH_F_LINKDOWN                16      /* carrier-down on nexthop */
+#define RTNH_F_UNRESOLVED      32      /* The entry is unresolved (ipmr) */
+
+#define RTNH_COMPARE_MASK      (RTNH_F_DEAD | RTNH_F_LINKDOWN | RTNH_F_OFFLOAD)
+
+/* Macros to handle hexthops */
+
+#define RTNH_ALIGNTO   4
+#define RTNH_ALIGN(len) ( ((len)+RTNH_ALIGNTO-1) & ~(RTNH_ALIGNTO-1) )
+#define RTNH_OK(rtnh,len) ((rtnh)->rtnh_len >= sizeof(struct rtnexthop) && \
+                          ((int)(rtnh)->rtnh_len) <= (len))
+#define RTNH_NEXT(rtnh)        ((struct rtnexthop*)(((char*)(rtnh)) + RTNH_ALIGN((rtnh)->rtnh_len)))
+#define RTNH_LENGTH(len) (RTNH_ALIGN(sizeof(struct rtnexthop)) + (len))
+#define RTNH_SPACE(len)        RTNH_ALIGN(RTNH_LENGTH(len))
+#define RTNH_DATA(rtnh)   ((struct rtattr*)(((char*)(rtnh)) + RTNH_LENGTH(0)))
+
+/* RTA_VIA */
+struct rtvia {
+       __kernel_sa_family_t    rtvia_family;
+       __u8                    rtvia_addr[0];
+};
+
+/* RTM_CACHEINFO */
+
+struct rta_cacheinfo {
+       __u32   rta_clntref;
+       __u32   rta_lastuse;
+       __s32   rta_expires;
+       __u32   rta_error;
+       __u32   rta_used;
+
+#define RTNETLINK_HAVE_PEERINFO 1
+       __u32   rta_id;
+       __u32   rta_ts;
+       __u32   rta_tsage;
+};
+
+/* RTM_METRICS --- array of struct rtattr with types of RTAX_* */
+
+enum {
+       RTAX_UNSPEC,
+#define RTAX_UNSPEC RTAX_UNSPEC
+       RTAX_LOCK,
+#define RTAX_LOCK RTAX_LOCK
+       RTAX_MTU,
+#define RTAX_MTU RTAX_MTU
+       RTAX_WINDOW,
+#define RTAX_WINDOW RTAX_WINDOW
+       RTAX_RTT,
+#define RTAX_RTT RTAX_RTT
+       RTAX_RTTVAR,
+#define RTAX_RTTVAR RTAX_RTTVAR
+       RTAX_SSTHRESH,
+#define RTAX_SSTHRESH RTAX_SSTHRESH
+       RTAX_CWND,
+#define RTAX_CWND RTAX_CWND
+       RTAX_ADVMSS,
+#define RTAX_ADVMSS RTAX_ADVMSS
+       RTAX_REORDERING,
+#define RTAX_REORDERING RTAX_REORDERING
+       RTAX_HOPLIMIT,
+#define RTAX_HOPLIMIT RTAX_HOPLIMIT
+       RTAX_INITCWND,
+#define RTAX_INITCWND RTAX_INITCWND
+       RTAX_FEATURES,
+#define RTAX_FEATURES RTAX_FEATURES
+       RTAX_RTO_MIN,
+#define RTAX_RTO_MIN RTAX_RTO_MIN
+       RTAX_INITRWND,
+#define RTAX_INITRWND RTAX_INITRWND
+       RTAX_QUICKACK,
+#define RTAX_QUICKACK RTAX_QUICKACK
+       RTAX_CC_ALGO,
+#define RTAX_CC_ALGO RTAX_CC_ALGO
+       __RTAX_MAX
+};
+
+#define RTAX_MAX (__RTAX_MAX - 1)
+
+#define RTAX_FEATURE_ECN       (1 << 0)
+#define RTAX_FEATURE_SACK      (1 << 1)
+#define RTAX_FEATURE_TIMESTAMP (1 << 2)
+#define RTAX_FEATURE_ALLFRAG   (1 << 3)
+
+#define RTAX_FEATURE_MASK      (RTAX_FEATURE_ECN | RTAX_FEATURE_SACK | \
+                                RTAX_FEATURE_TIMESTAMP | RTAX_FEATURE_ALLFRAG)
+
+struct rta_session {
+       __u8    proto;
+       __u8    pad1;
+       __u16   pad2;
+
+       union {
+               struct {
+                       __u16   sport;
+                       __u16   dport;
+               } ports;
+
+               struct {
+                       __u8    type;
+                       __u8    code;
+                       __u16   ident;
+               } icmpt;
+
+               __u32           spi;
+       } u;
+};
+
+struct rta_mfc_stats {
+       __u64   mfcs_packets;
+       __u64   mfcs_bytes;
+       __u64   mfcs_wrong_if;
+};
+
+/****
+ *             General form of address family dependent message.
+ ****/
+
+struct rtgenmsg {
+       unsigned char           rtgen_family;
+};
+
+/*****************************************************************
+ *             Link layer specific messages.
+ ****/
+
+/* struct ifinfomsg
+ * passes link level specific information, not dependent
+ * on network protocol.
+ */
+
+struct ifinfomsg {
+       unsigned char   ifi_family;
+       unsigned char   __ifi_pad;
+       unsigned short  ifi_type;               /* ARPHRD_* */
+       int             ifi_index;              /* Link index   */
+       unsigned        ifi_flags;              /* IFF_* flags  */
+       unsigned        ifi_change;             /* IFF_* change mask */
+};
+
+/********************************************************************
+ *             prefix information 
+ ****/
+
+struct prefixmsg {
+       unsigned char   prefix_family;
+       unsigned char   prefix_pad1;
+       unsigned short  prefix_pad2;
+       int             prefix_ifindex;
+       unsigned char   prefix_type;
+       unsigned char   prefix_len;
+       unsigned char   prefix_flags;
+       unsigned char   prefix_pad3;
+};
+
+enum 
+{
+       PREFIX_UNSPEC,
+       PREFIX_ADDRESS,
+       PREFIX_CACHEINFO,
+       __PREFIX_MAX
+};
+
+#define PREFIX_MAX     (__PREFIX_MAX - 1)
+
+struct prefix_cacheinfo {
+       __u32   preferred_time;
+       __u32   valid_time;
+};
+
+
+/*****************************************************************
+ *             Traffic control messages.
+ ****/
+
+struct tcmsg {
+       unsigned char   tcm_family;
+       unsigned char   tcm__pad1;
+       unsigned short  tcm__pad2;
+       int             tcm_ifindex;
+       __u32           tcm_handle;
+       __u32           tcm_parent;
+       __u32           tcm_info;
+};
+
+enum {
+       TCA_UNSPEC,
+       TCA_KIND,
+       TCA_OPTIONS,
+       TCA_STATS,
+       TCA_XSTATS,
+       TCA_RATE,
+       TCA_FCNT,
+       TCA_STATS2,
+       TCA_STAB,
+       TCA_PAD,
+       TCA_DUMP_INVISIBLE,
+       TCA_CHAIN,
+       __TCA_MAX
+};
+
+#define TCA_MAX (__TCA_MAX - 1)
+
+#define TCA_RTA(r)  ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct tcmsg))))
+#define TCA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct tcmsg))
+
+/********************************************************************
+ *             Neighbor Discovery userland options
+ ****/
+
+struct nduseroptmsg {
+       unsigned char   nduseropt_family;
+       unsigned char   nduseropt_pad1;
+       unsigned short  nduseropt_opts_len;     /* Total length of options */
+       int             nduseropt_ifindex;
+       __u8            nduseropt_icmp_type;
+       __u8            nduseropt_icmp_code;
+       unsigned short  nduseropt_pad2;
+       unsigned int    nduseropt_pad3;
+       /* Followed by one or more ND options */
+};
+
+enum {
+       NDUSEROPT_UNSPEC,
+       NDUSEROPT_SRCADDR,
+       __NDUSEROPT_MAX
+};
+
+#define NDUSEROPT_MAX  (__NDUSEROPT_MAX - 1)
+
+/* RTnetlink multicast groups - backwards compatibility for userspace */
+#define RTMGRP_LINK            1
+#define RTMGRP_NOTIFY          2
+#define RTMGRP_NEIGH           4
+#define RTMGRP_TC              8
+
+#define RTMGRP_IPV4_IFADDR     0x10
+#define RTMGRP_IPV4_MROUTE     0x20
+#define RTMGRP_IPV4_ROUTE      0x40
+#define RTMGRP_IPV4_RULE       0x80
+
+#define RTMGRP_IPV6_IFADDR     0x100
+#define RTMGRP_IPV6_MROUTE     0x200
+#define RTMGRP_IPV6_ROUTE      0x400
+#define RTMGRP_IPV6_IFINFO     0x800
+
+#define RTMGRP_DECnet_IFADDR    0x1000
+#define RTMGRP_DECnet_ROUTE     0x4000
+
+#define RTMGRP_IPV6_PREFIX     0x20000
+
+/* RTnetlink multicast groups */
+enum rtnetlink_groups {
+       RTNLGRP_NONE,
+#define RTNLGRP_NONE           RTNLGRP_NONE
+       RTNLGRP_LINK,
+#define RTNLGRP_LINK           RTNLGRP_LINK
+       RTNLGRP_NOTIFY,
+#define RTNLGRP_NOTIFY         RTNLGRP_NOTIFY
+       RTNLGRP_NEIGH,
+#define RTNLGRP_NEIGH          RTNLGRP_NEIGH
+       RTNLGRP_TC,
+#define RTNLGRP_TC             RTNLGRP_TC
+       RTNLGRP_IPV4_IFADDR,
+#define RTNLGRP_IPV4_IFADDR    RTNLGRP_IPV4_IFADDR
+       RTNLGRP_IPV4_MROUTE,
+#define        RTNLGRP_IPV4_MROUTE     RTNLGRP_IPV4_MROUTE
+       RTNLGRP_IPV4_ROUTE,
+#define RTNLGRP_IPV4_ROUTE     RTNLGRP_IPV4_ROUTE
+       RTNLGRP_IPV4_RULE,
+#define RTNLGRP_IPV4_RULE      RTNLGRP_IPV4_RULE
+       RTNLGRP_IPV6_IFADDR,
+#define RTNLGRP_IPV6_IFADDR    RTNLGRP_IPV6_IFADDR
+       RTNLGRP_IPV6_MROUTE,
+#define RTNLGRP_IPV6_MROUTE    RTNLGRP_IPV6_MROUTE
+       RTNLGRP_IPV6_ROUTE,
+#define RTNLGRP_IPV6_ROUTE     RTNLGRP_IPV6_ROUTE
+       RTNLGRP_IPV6_IFINFO,
+#define RTNLGRP_IPV6_IFINFO    RTNLGRP_IPV6_IFINFO
+       RTNLGRP_DECnet_IFADDR,
+#define RTNLGRP_DECnet_IFADDR  RTNLGRP_DECnet_IFADDR
+       RTNLGRP_NOP2,
+       RTNLGRP_DECnet_ROUTE,
+#define RTNLGRP_DECnet_ROUTE   RTNLGRP_DECnet_ROUTE
+       RTNLGRP_DECnet_RULE,
+#define RTNLGRP_DECnet_RULE    RTNLGRP_DECnet_RULE
+       RTNLGRP_NOP4,
+       RTNLGRP_IPV6_PREFIX,
+#define RTNLGRP_IPV6_PREFIX    RTNLGRP_IPV6_PREFIX
+       RTNLGRP_IPV6_RULE,
+#define RTNLGRP_IPV6_RULE      RTNLGRP_IPV6_RULE
+       RTNLGRP_ND_USEROPT,
+#define RTNLGRP_ND_USEROPT     RTNLGRP_ND_USEROPT
+       RTNLGRP_PHONET_IFADDR,
+#define RTNLGRP_PHONET_IFADDR  RTNLGRP_PHONET_IFADDR
+       RTNLGRP_PHONET_ROUTE,
+#define RTNLGRP_PHONET_ROUTE   RTNLGRP_PHONET_ROUTE
+       RTNLGRP_DCB,
+#define RTNLGRP_DCB            RTNLGRP_DCB
+       RTNLGRP_IPV4_NETCONF,
+#define RTNLGRP_IPV4_NETCONF   RTNLGRP_IPV4_NETCONF
+       RTNLGRP_IPV6_NETCONF,
+#define RTNLGRP_IPV6_NETCONF   RTNLGRP_IPV6_NETCONF
+       RTNLGRP_MDB,
+#define RTNLGRP_MDB            RTNLGRP_MDB
+       RTNLGRP_MPLS_ROUTE,
+#define RTNLGRP_MPLS_ROUTE     RTNLGRP_MPLS_ROUTE
+       RTNLGRP_NSID,
+#define RTNLGRP_NSID           RTNLGRP_NSID
+       RTNLGRP_MPLS_NETCONF,
+#define RTNLGRP_MPLS_NETCONF   RTNLGRP_MPLS_NETCONF
+       RTNLGRP_IPV4_MROUTE_R,
+#define RTNLGRP_IPV4_MROUTE_R  RTNLGRP_IPV4_MROUTE_R
+       RTNLGRP_IPV6_MROUTE_R,
+#define RTNLGRP_IPV6_MROUTE_R  RTNLGRP_IPV6_MROUTE_R
+       __RTNLGRP_MAX
+};
+#define RTNLGRP_MAX    (__RTNLGRP_MAX - 1)
+
+/* TC action piece */
+struct tcamsg {
+       unsigned char   tca_family;
+       unsigned char   tca__pad1;
+       unsigned short  tca__pad2;
+};
+
+enum {
+       TCA_ROOT_UNSPEC,
+       TCA_ROOT_TAB,
+#define TCA_ACT_TAB TCA_ROOT_TAB
+#define TCAA_MAX TCA_ROOT_TAB
+       TCA_ROOT_FLAGS,
+       TCA_ROOT_COUNT,
+       TCA_ROOT_TIME_DELTA, /* in msecs */
+       __TCA_ROOT_MAX,
+#define        TCA_ROOT_MAX (__TCA_ROOT_MAX - 1)
+};
+
+#define TA_RTA(r)  ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct tcamsg))))
+#define TA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct tcamsg))
+/* tcamsg flags stored in attribute TCA_ROOT_FLAGS
+ *
+ * TCA_FLAG_LARGE_DUMP_ON user->kernel to request for larger than TCA_ACT_MAX_PRIO
+ * actions in a dump. All dump responses will contain the number of actions
+ * being dumped stored in for user app's consumption in TCA_ROOT_COUNT
+ *
+ */
+#define TCA_FLAG_LARGE_DUMP_ON         (1 << 0)
+
+/* New extended info filters for IFLA_EXT_MASK */
+#define RTEXT_FILTER_VF                (1 << 0)
+#define RTEXT_FILTER_BRVLAN    (1 << 1)
+#define RTEXT_FILTER_BRVLAN_COMPRESSED (1 << 2)
+#define        RTEXT_FILTER_SKIP_STATS (1 << 3)
+
+/* End of information exported to user level */
+
+
+
+#endif /* __LINUX_RTNETLINK_H */
diff --git a/include/uapi/linux/sctp.h b/include/uapi/linux/sctp.h
new file mode 100644 (file)
index 0000000..fec24c4
--- /dev/null
@@ -0,0 +1,1085 @@
+/* SCTP kernel implementation
+ * (C) Copyright IBM Corp. 2001, 2004
+ * Copyright (c) 1999-2000 Cisco, Inc.
+ * Copyright (c) 1999-2001 Motorola, Inc.
+ * Copyright (c) 2002 Intel Corp.
+ *
+ * This file is part of the SCTP kernel implementation
+ *
+ * This header represents the structures and constants needed to support
+ * the SCTP Extension to the Sockets API.
+ *
+ * This SCTP implementation is free software;
+ * you can redistribute it and/or modify it under the terms of
+ * the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This SCTP implementation is distributed in the hope that it
+ * will be useful, but WITHOUT ANY WARRANTY; without even the implied
+ *                 ************************
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ * See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU CC; see the file COPYING.  If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ * Please send any bug reports or fixes you make to the
+ * email address(es):
+ *    lksctp developers <linux-sctp@vger.kernel.org>
+ *
+ * Or submit a bug report through the following website:
+ *    http://www.sf.net/projects/lksctp
+ *
+ * Written or modified by:
+ *    La Monte H.P. Yarroll    <piggy@acm.org>
+ *    R. Stewart               <randall@sctp.chicago.il.us>
+ *    K. Morneau               <kmorneau@cisco.com>
+ *    Q. Xie                   <qxie1@email.mot.com>
+ *    Karl Knutson             <karl@athena.chicago.il.us>
+ *    Jon Grimm                <jgrimm@us.ibm.com>
+ *    Daisy Chang              <daisyc@us.ibm.com>
+ *    Ryan Layer               <rmlayer@us.ibm.com>
+ *    Ardelle Fan              <ardelle.fan@intel.com>
+ *    Sridhar Samudrala        <sri@us.ibm.com>
+ *    Inaky Perez-Gonzalez     <inaky.gonzalez@intel.com>
+ *    Vlad Yasevich            <vladislav.yasevich@hp.com>
+ *
+ * Any bugs reported given to us we will try to fix... any fixes shared will
+ * be incorporated into the next SCTP release.
+ */
+
+#ifndef _SCTP_H
+#define _SCTP_H
+
+#include <linux/types.h>
+#include <linux/socket.h>
+
+typedef __s32 sctp_assoc_t;
+
+/* The following symbols come from the Sockets API Extensions for
+ * SCTP <draft-ietf-tsvwg-sctpsocket-07.txt>.
+ */
+#define SCTP_RTOINFO   0
+#define SCTP_ASSOCINFO  1
+#define SCTP_INITMSG   2
+#define SCTP_NODELAY   3               /* Get/set nodelay option. */
+#define SCTP_AUTOCLOSE 4
+#define SCTP_SET_PEER_PRIMARY_ADDR 5
+#define SCTP_PRIMARY_ADDR      6
+#define SCTP_ADAPTATION_LAYER  7
+#define SCTP_DISABLE_FRAGMENTS 8
+#define SCTP_PEER_ADDR_PARAMS  9
+#define SCTP_DEFAULT_SEND_PARAM        10
+#define SCTP_EVENTS    11
+#define SCTP_I_WANT_MAPPED_V4_ADDR 12  /* Turn on/off mapped v4 addresses  */
+#define SCTP_MAXSEG    13              /* Get/set maximum fragment. */
+#define SCTP_STATUS    14
+#define SCTP_GET_PEER_ADDR_INFO        15
+#define SCTP_DELAYED_ACK_TIME  16
+#define SCTP_DELAYED_ACK SCTP_DELAYED_ACK_TIME
+#define SCTP_DELAYED_SACK SCTP_DELAYED_ACK_TIME
+#define SCTP_CONTEXT   17
+#define SCTP_FRAGMENT_INTERLEAVE       18
+#define SCTP_PARTIAL_DELIVERY_POINT    19 /* Set/Get partial delivery point */
+#define SCTP_MAX_BURST 20              /* Set/Get max burst */
+#define SCTP_AUTH_CHUNK        21      /* Set only: add a chunk type to authenticate */
+#define SCTP_HMAC_IDENT        22
+#define SCTP_AUTH_KEY  23
+#define SCTP_AUTH_ACTIVE_KEY   24
+#define SCTP_AUTH_DELETE_KEY   25
+#define SCTP_PEER_AUTH_CHUNKS  26      /* Read only */
+#define SCTP_LOCAL_AUTH_CHUNKS 27      /* Read only */
+#define SCTP_GET_ASSOC_NUMBER  28      /* Read only */
+#define SCTP_GET_ASSOC_ID_LIST 29      /* Read only */
+#define SCTP_AUTO_ASCONF       30
+#define SCTP_PEER_ADDR_THLDS   31
+#define SCTP_RECVRCVINFO       32
+#define SCTP_RECVNXTINFO       33
+#define SCTP_DEFAULT_SNDINFO   34
+
+/* Internal Socket Options. Some of the sctp library functions are
+ * implemented using these socket options.
+ */
+#define SCTP_SOCKOPT_BINDX_ADD 100     /* BINDX requests for adding addrs */
+#define SCTP_SOCKOPT_BINDX_REM 101     /* BINDX requests for removing addrs. */
+#define SCTP_SOCKOPT_PEELOFF   102     /* peel off association. */
+/* Options 104-106 are deprecated and removed. Do not use this space */
+#define SCTP_SOCKOPT_CONNECTX_OLD      107     /* CONNECTX old requests. */
+#define SCTP_GET_PEER_ADDRS    108             /* Get all peer address. */
+#define SCTP_GET_LOCAL_ADDRS   109             /* Get all local address. */
+#define SCTP_SOCKOPT_CONNECTX  110             /* CONNECTX requests. */
+#define SCTP_SOCKOPT_CONNECTX3 111     /* CONNECTX requests (updated) */
+#define SCTP_GET_ASSOC_STATS   112     /* Read only */
+#define SCTP_PR_SUPPORTED      113
+#define SCTP_DEFAULT_PRINFO    114
+#define SCTP_PR_ASSOC_STATUS   115
+#define SCTP_PR_STREAM_STATUS  116
+#define SCTP_RECONFIG_SUPPORTED        117
+#define SCTP_ENABLE_STREAM_RESET       118
+#define SCTP_RESET_STREAMS     119
+#define SCTP_RESET_ASSOC       120
+#define SCTP_ADD_STREAMS       121
+#define SCTP_SOCKOPT_PEELOFF_FLAGS 122
+
+/* PR-SCTP policies */
+#define SCTP_PR_SCTP_NONE      0x0000
+#define SCTP_PR_SCTP_TTL       0x0010
+#define SCTP_PR_SCTP_RTX       0x0020
+#define SCTP_PR_SCTP_PRIO      0x0030
+#define SCTP_PR_SCTP_MAX       SCTP_PR_SCTP_PRIO
+#define SCTP_PR_SCTP_MASK      0x0030
+
+#define __SCTP_PR_INDEX(x)     ((x >> 4) - 1)
+#define SCTP_PR_INDEX(x)       __SCTP_PR_INDEX(SCTP_PR_SCTP_ ## x)
+
+#define SCTP_PR_POLICY(x)      ((x) & SCTP_PR_SCTP_MASK)
+#define SCTP_PR_SET_POLICY(flags, x)   \
+       do {                            \
+               flags &= ~SCTP_PR_SCTP_MASK;    \
+               flags |= x;             \
+       } while (0)
+
+#define SCTP_PR_TTL_ENABLED(x) (SCTP_PR_POLICY(x) == SCTP_PR_SCTP_TTL)
+#define SCTP_PR_RTX_ENABLED(x) (SCTP_PR_POLICY(x) == SCTP_PR_SCTP_RTX)
+#define SCTP_PR_PRIO_ENABLED(x)        (SCTP_PR_POLICY(x) == SCTP_PR_SCTP_PRIO)
+
+/* For enable stream reset */
+#define SCTP_ENABLE_RESET_STREAM_REQ   0x01
+#define SCTP_ENABLE_RESET_ASSOC_REQ    0x02
+#define SCTP_ENABLE_CHANGE_ASSOC_REQ   0x04
+#define SCTP_ENABLE_STRRESET_MASK      0x07
+
+#define SCTP_STREAM_RESET_INCOMING     0x01
+#define SCTP_STREAM_RESET_OUTGOING     0x02
+
+/* These are bit fields for msghdr->msg_flags.  See section 5.1.  */
+/* On user space Linux, these live in <bits/socket.h> as an enum.  */
+enum sctp_msg_flags {
+       MSG_NOTIFICATION = 0x8000,
+#define MSG_NOTIFICATION MSG_NOTIFICATION
+};
+
+/* 5.3.1 SCTP Initiation Structure (SCTP_INIT)
+ *
+ *   This cmsghdr structure provides information for initializing new
+ *   SCTP associations with sendmsg().  The SCTP_INITMSG socket option
+ *   uses this same data structure.  This structure is not used for
+ *   recvmsg().
+ *
+ *   cmsg_level    cmsg_type      cmsg_data[]
+ *   ------------  ------------   ----------------------
+ *   IPPROTO_SCTP  SCTP_INIT      struct sctp_initmsg
+ */
+struct sctp_initmsg {
+       __u16 sinit_num_ostreams;
+       __u16 sinit_max_instreams;
+       __u16 sinit_max_attempts;
+       __u16 sinit_max_init_timeo;
+};
+
+/* 5.3.2 SCTP Header Information Structure (SCTP_SNDRCV)
+ *
+ *   This cmsghdr structure specifies SCTP options for sendmsg() and
+ *   describes SCTP header information about a received message through
+ *   recvmsg().
+ *
+ *   cmsg_level    cmsg_type      cmsg_data[]
+ *   ------------  ------------   ----------------------
+ *   IPPROTO_SCTP  SCTP_SNDRCV    struct sctp_sndrcvinfo
+ */
+struct sctp_sndrcvinfo {
+       __u16 sinfo_stream;
+       __u16 sinfo_ssn;
+       __u16 sinfo_flags;
+       __u32 sinfo_ppid;
+       __u32 sinfo_context;
+       __u32 sinfo_timetolive;
+       __u32 sinfo_tsn;
+       __u32 sinfo_cumtsn;
+       sctp_assoc_t sinfo_assoc_id;
+};
+
+/* 5.3.4 SCTP Send Information Structure (SCTP_SNDINFO)
+ *
+ *   This cmsghdr structure specifies SCTP options for sendmsg().
+ *
+ *   cmsg_level    cmsg_type      cmsg_data[]
+ *   ------------  ------------   -------------------
+ *   IPPROTO_SCTP  SCTP_SNDINFO   struct sctp_sndinfo
+ */
+struct sctp_sndinfo {
+       __u16 snd_sid;
+       __u16 snd_flags;
+       __u32 snd_ppid;
+       __u32 snd_context;
+       sctp_assoc_t snd_assoc_id;
+};
+
+/* 5.3.5 SCTP Receive Information Structure (SCTP_RCVINFO)
+ *
+ *   This cmsghdr structure describes SCTP receive information
+ *   about a received message through recvmsg().
+ *
+ *   cmsg_level    cmsg_type      cmsg_data[]
+ *   ------------  ------------   -------------------
+ *   IPPROTO_SCTP  SCTP_RCVINFO   struct sctp_rcvinfo
+ */
+struct sctp_rcvinfo {
+       __u16 rcv_sid;
+       __u16 rcv_ssn;
+       __u16 rcv_flags;
+       __u32 rcv_ppid;
+       __u32 rcv_tsn;
+       __u32 rcv_cumtsn;
+       __u32 rcv_context;
+       sctp_assoc_t rcv_assoc_id;
+};
+
+/* 5.3.6 SCTP Next Receive Information Structure (SCTP_NXTINFO)
+ *
+ *   This cmsghdr structure describes SCTP receive information
+ *   of the next message that will be delivered through recvmsg()
+ *   if this information is already available when delivering
+ *   the current message.
+ *
+ *   cmsg_level    cmsg_type      cmsg_data[]
+ *   ------------  ------------   -------------------
+ *   IPPROTO_SCTP  SCTP_NXTINFO   struct sctp_nxtinfo
+ */
+struct sctp_nxtinfo {
+       __u16 nxt_sid;
+       __u16 nxt_flags;
+       __u32 nxt_ppid;
+       __u32 nxt_length;
+       sctp_assoc_t nxt_assoc_id;
+};
+
+/*
+ *  sinfo_flags: 16 bits (unsigned integer)
+ *
+ *   This field may contain any of the following flags and is composed of
+ *   a bitwise OR of these values.
+ */
+enum sctp_sinfo_flags {
+       SCTP_UNORDERED          = (1 << 0), /* Send/receive message unordered. */
+       SCTP_ADDR_OVER          = (1 << 1), /* Override the primary destination. */
+       SCTP_ABORT              = (1 << 2), /* Send an ABORT message to the peer. */
+       SCTP_SACK_IMMEDIATELY   = (1 << 3), /* SACK should be sent without delay. */
+       SCTP_NOTIFICATION       = MSG_NOTIFICATION, /* Next message is not user msg but notification. */
+       SCTP_EOF                = MSG_FIN,  /* Initiate graceful shutdown process. */
+};
+
+typedef union {
+       __u8                    raw;
+       struct sctp_initmsg     init;
+       struct sctp_sndrcvinfo  sndrcv;
+} sctp_cmsg_data_t;
+
+/* These are cmsg_types.  */
+typedef enum sctp_cmsg_type {
+       SCTP_INIT,              /* 5.2.1 SCTP Initiation Structure */
+#define SCTP_INIT      SCTP_INIT
+       SCTP_SNDRCV,            /* 5.2.2 SCTP Header Information Structure */
+#define SCTP_SNDRCV    SCTP_SNDRCV
+       SCTP_SNDINFO,           /* 5.3.4 SCTP Send Information Structure */
+#define SCTP_SNDINFO   SCTP_SNDINFO
+       SCTP_RCVINFO,           /* 5.3.5 SCTP Receive Information Structure */
+#define SCTP_RCVINFO   SCTP_RCVINFO
+       SCTP_NXTINFO,           /* 5.3.6 SCTP Next Receive Information Structure */
+#define SCTP_NXTINFO   SCTP_NXTINFO
+} sctp_cmsg_t;
+
+/*
+ * 5.3.1.1 SCTP_ASSOC_CHANGE
+ *
+ *   Communication notifications inform the ULP that an SCTP association
+ *   has either begun or ended. The identifier for a new association is
+ *   provided by this notificaion. The notification information has the
+ *   following format:
+ *
+ */
+struct sctp_assoc_change {
+       __u16 sac_type;
+       __u16 sac_flags;
+       __u32 sac_length;
+       __u16 sac_state;
+       __u16 sac_error;
+       __u16 sac_outbound_streams;
+       __u16 sac_inbound_streams;
+       sctp_assoc_t sac_assoc_id;
+       __u8 sac_info[0];
+};
+
+/*
+ *   sac_state: 32 bits (signed integer)
+ *
+ *   This field holds one of a number of values that communicate the
+ *   event that happened to the association.  They include:
+ *
+ *   Note:  The following state names deviate from the API draft as
+ *   the names clash too easily with other kernel symbols.
+ */
+enum sctp_sac_state {
+       SCTP_COMM_UP,
+       SCTP_COMM_LOST,
+       SCTP_RESTART,
+       SCTP_SHUTDOWN_COMP,
+       SCTP_CANT_STR_ASSOC,
+};
+
+/*
+ * 5.3.1.2 SCTP_PEER_ADDR_CHANGE
+ *
+ *   When a destination address on a multi-homed peer encounters a change
+ *   an interface details event is sent.  The information has the
+ *   following structure:
+ */
+struct sctp_paddr_change {
+       __u16 spc_type;
+       __u16 spc_flags;
+       __u32 spc_length;
+       struct sockaddr_storage spc_aaddr;
+       int spc_state;
+       int spc_error;
+       sctp_assoc_t spc_assoc_id;
+} __attribute__((packed, aligned(4)));
+
+/*
+ *    spc_state:  32 bits (signed integer)
+ *
+ *   This field holds one of a number of values that communicate the
+ *   event that happened to the address.  They include:
+ */
+enum sctp_spc_state {
+       SCTP_ADDR_AVAILABLE,
+       SCTP_ADDR_UNREACHABLE,
+       SCTP_ADDR_REMOVED,
+       SCTP_ADDR_ADDED,
+       SCTP_ADDR_MADE_PRIM,
+       SCTP_ADDR_CONFIRMED,
+};
+
+
+/*
+ * 5.3.1.3 SCTP_REMOTE_ERROR
+ *
+ *   A remote peer may send an Operational Error message to its peer.
+ *   This message indicates a variety of error conditions on an
+ *   association. The entire error TLV as it appears on the wire is
+ *   included in a SCTP_REMOTE_ERROR event.  Please refer to the SCTP
+ *   specification [SCTP] and any extensions for a list of possible
+ *   error formats. SCTP error TLVs have the format:
+ */
+struct sctp_remote_error {
+       __u16 sre_type;
+       __u16 sre_flags;
+       __u32 sre_length;
+       __u16 sre_error;
+       sctp_assoc_t sre_assoc_id;
+       __u8 sre_data[0];
+};
+
+
+/*
+ * 5.3.1.4 SCTP_SEND_FAILED
+ *
+ *   If SCTP cannot deliver a message it may return the message as a
+ *   notification.
+ */
+struct sctp_send_failed {
+       __u16 ssf_type;
+       __u16 ssf_flags;
+       __u32 ssf_length;
+       __u32 ssf_error;
+       struct sctp_sndrcvinfo ssf_info;
+       sctp_assoc_t ssf_assoc_id;
+       __u8 ssf_data[0];
+};
+
+/*
+ *   ssf_flags: 16 bits (unsigned integer)
+ *
+ *   The flag value will take one of the following values
+ *
+ *   SCTP_DATA_UNSENT  - Indicates that the data was never put on
+ *                       the wire.
+ *
+ *   SCTP_DATA_SENT    - Indicates that the data was put on the wire.
+ *                       Note that this does not necessarily mean that the
+ *                       data was (or was not) successfully delivered.
+ */
+enum sctp_ssf_flags {
+       SCTP_DATA_UNSENT,
+       SCTP_DATA_SENT,
+};
+
+/*
+ * 5.3.1.5 SCTP_SHUTDOWN_EVENT
+ *
+ *   When a peer sends a SHUTDOWN, SCTP delivers this notification to
+ *   inform the application that it should cease sending data.
+ */
+struct sctp_shutdown_event {
+       __u16 sse_type;
+       __u16 sse_flags;
+       __u32 sse_length;
+       sctp_assoc_t sse_assoc_id;
+};
+
+/*
+ * 5.3.1.6 SCTP_ADAPTATION_INDICATION
+ *
+ *   When a peer sends a Adaptation Layer Indication parameter , SCTP
+ *   delivers this notification to inform the application
+ *   that of the peers requested adaptation layer.
+ */
+struct sctp_adaptation_event {
+       __u16 sai_type;
+       __u16 sai_flags;
+       __u32 sai_length;
+       __u32 sai_adaptation_ind;
+       sctp_assoc_t sai_assoc_id;
+};
+
+/*
+ * 5.3.1.7 SCTP_PARTIAL_DELIVERY_EVENT
+ *
+ *   When a receiver is engaged in a partial delivery of a
+ *   message this notification will be used to indicate
+ *   various events.
+ */
+struct sctp_pdapi_event {
+       __u16 pdapi_type;
+       __u16 pdapi_flags;
+       __u32 pdapi_length;
+       __u32 pdapi_indication;
+       sctp_assoc_t pdapi_assoc_id;
+};
+
+enum { SCTP_PARTIAL_DELIVERY_ABORTED=0, };
+
+/*
+ * 5.3.1.8.  SCTP_AUTHENTICATION_EVENT
+ *
+ *  When a receiver is using authentication this message will provide
+ *  notifications regarding new keys being made active as well as errors.
+ */
+struct sctp_authkey_event {
+       __u16 auth_type;
+       __u16 auth_flags;
+       __u32 auth_length;
+       __u16 auth_keynumber;
+       __u16 auth_altkeynumber;
+       __u32 auth_indication;
+       sctp_assoc_t auth_assoc_id;
+};
+
+enum { SCTP_AUTH_NEWKEY = 0, };
+
+/*
+ * 6.1.9. SCTP_SENDER_DRY_EVENT
+ *
+ * When the SCTP stack has no more user data to send or retransmit, this
+ * notification is given to the user. Also, at the time when a user app
+ * subscribes to this event, if there is no data to be sent or
+ * retransmit, the stack will immediately send up this notification.
+ */
+struct sctp_sender_dry_event {
+       __u16 sender_dry_type;
+       __u16 sender_dry_flags;
+       __u32 sender_dry_length;
+       sctp_assoc_t sender_dry_assoc_id;
+};
+
+#define SCTP_STREAM_RESET_INCOMING_SSN 0x0001
+#define SCTP_STREAM_RESET_OUTGOING_SSN 0x0002
+#define SCTP_STREAM_RESET_DENIED       0x0004
+#define SCTP_STREAM_RESET_FAILED       0x0008
+struct sctp_stream_reset_event {
+       __u16 strreset_type;
+       __u16 strreset_flags;
+       __u32 strreset_length;
+       sctp_assoc_t strreset_assoc_id;
+       __u16 strreset_stream_list[];
+};
+
+#define SCTP_ASSOC_RESET_DENIED                0x0004
+#define SCTP_ASSOC_RESET_FAILED                0x0008
+struct sctp_assoc_reset_event {
+       __u16 assocreset_type;
+       __u16 assocreset_flags;
+       __u32 assocreset_length;
+       sctp_assoc_t assocreset_assoc_id;
+       __u32 assocreset_local_tsn;
+       __u32 assocreset_remote_tsn;
+};
+
+#define SCTP_ASSOC_CHANGE_DENIED       0x0004
+#define SCTP_ASSOC_CHANGE_FAILED       0x0008
+struct sctp_stream_change_event {
+       __u16 strchange_type;
+       __u16 strchange_flags;
+       __u32 strchange_length;
+       sctp_assoc_t strchange_assoc_id;
+       __u16 strchange_instrms;
+       __u16 strchange_outstrms;
+};
+
+/*
+ * Described in Section 7.3
+ *   Ancillary Data and Notification Interest Options
+ */
+struct sctp_event_subscribe {
+       __u8 sctp_data_io_event;
+       __u8 sctp_association_event;
+       __u8 sctp_address_event;
+       __u8 sctp_send_failure_event;
+       __u8 sctp_peer_error_event;
+       __u8 sctp_shutdown_event;
+       __u8 sctp_partial_delivery_event;
+       __u8 sctp_adaptation_layer_event;
+       __u8 sctp_authentication_event;
+       __u8 sctp_sender_dry_event;
+       __u8 sctp_stream_reset_event;
+       __u8 sctp_assoc_reset_event;
+       __u8 sctp_stream_change_event;
+};
+
+/*
+ * 5.3.1 SCTP Notification Structure
+ *
+ *   The notification structure is defined as the union of all
+ *   notification types.
+ *
+ */
+union sctp_notification {
+       struct {
+               __u16 sn_type;             /* Notification type. */
+               __u16 sn_flags;
+               __u32 sn_length;
+       } sn_header;
+       struct sctp_assoc_change sn_assoc_change;
+       struct sctp_paddr_change sn_paddr_change;
+       struct sctp_remote_error sn_remote_error;
+       struct sctp_send_failed sn_send_failed;
+       struct sctp_shutdown_event sn_shutdown_event;
+       struct sctp_adaptation_event sn_adaptation_event;
+       struct sctp_pdapi_event sn_pdapi_event;
+       struct sctp_authkey_event sn_authkey_event;
+       struct sctp_sender_dry_event sn_sender_dry_event;
+       struct sctp_stream_reset_event sn_strreset_event;
+       struct sctp_assoc_reset_event sn_assocreset_event;
+       struct sctp_stream_change_event sn_strchange_event;
+};
+
+/* Section 5.3.1
+ * All standard values for sn_type flags are greater than 2^15.
+ * Values from 2^15 and down are reserved.
+ */
+
+enum sctp_sn_type {
+       SCTP_SN_TYPE_BASE     = (1<<15),
+       SCTP_ASSOC_CHANGE,
+#define SCTP_ASSOC_CHANGE              SCTP_ASSOC_CHANGE
+       SCTP_PEER_ADDR_CHANGE,
+#define SCTP_PEER_ADDR_CHANGE          SCTP_PEER_ADDR_CHANGE
+       SCTP_SEND_FAILED,
+#define SCTP_SEND_FAILED               SCTP_SEND_FAILED
+       SCTP_REMOTE_ERROR,
+#define SCTP_REMOTE_ERROR              SCTP_REMOTE_ERROR
+       SCTP_SHUTDOWN_EVENT,
+#define SCTP_SHUTDOWN_EVENT            SCTP_SHUTDOWN_EVENT
+       SCTP_PARTIAL_DELIVERY_EVENT,
+#define SCTP_PARTIAL_DELIVERY_EVENT    SCTP_PARTIAL_DELIVERY_EVENT
+       SCTP_ADAPTATION_INDICATION,
+#define SCTP_ADAPTATION_INDICATION     SCTP_ADAPTATION_INDICATION
+       SCTP_AUTHENTICATION_EVENT,
+#define SCTP_AUTHENTICATION_INDICATION SCTP_AUTHENTICATION_EVENT
+       SCTP_SENDER_DRY_EVENT,
+#define SCTP_SENDER_DRY_EVENT          SCTP_SENDER_DRY_EVENT
+       SCTP_STREAM_RESET_EVENT,
+#define SCTP_STREAM_RESET_EVENT                SCTP_STREAM_RESET_EVENT
+       SCTP_ASSOC_RESET_EVENT,
+#define SCTP_ASSOC_RESET_EVENT         SCTP_ASSOC_RESET_EVENT
+       SCTP_STREAM_CHANGE_EVENT,
+#define SCTP_STREAM_CHANGE_EVENT       SCTP_STREAM_CHANGE_EVENT
+};
+
+/* Notification error codes used to fill up the error fields in some
+ * notifications.
+ * SCTP_PEER_ADDRESS_CHAGE     : spc_error
+ * SCTP_ASSOC_CHANGE           : sac_error
+ * These names should be potentially included in the draft 04 of the SCTP
+ * sockets API specification.
+ */
+typedef enum sctp_sn_error {
+       SCTP_FAILED_THRESHOLD,
+       SCTP_RECEIVED_SACK,
+       SCTP_HEARTBEAT_SUCCESS,
+       SCTP_RESPONSE_TO_USER_REQ,
+       SCTP_INTERNAL_ERROR,
+       SCTP_SHUTDOWN_GUARD_EXPIRES,
+       SCTP_PEER_FAULTY,
+} sctp_sn_error_t;
+
+/*
+ * 7.1.1 Retransmission Timeout Parameters (SCTP_RTOINFO)
+ *
+ *   The protocol parameters used to initialize and bound retransmission
+ *   timeout (RTO) are tunable.  See [SCTP] for more information on how
+ *   these parameters are used in RTO calculation.
+ */
+struct sctp_rtoinfo {
+       sctp_assoc_t    srto_assoc_id;
+       __u32           srto_initial;
+       __u32           srto_max;
+       __u32           srto_min;
+};
+
+/*
+ * 7.1.2 Association Parameters (SCTP_ASSOCINFO)
+ *
+ *   This option is used to both examine and set various association and
+ *   endpoint parameters.
+ */
+struct sctp_assocparams {
+       sctp_assoc_t    sasoc_assoc_id;
+       __u16           sasoc_asocmaxrxt;
+       __u16           sasoc_number_peer_destinations;
+       __u32           sasoc_peer_rwnd;
+       __u32           sasoc_local_rwnd;
+       __u32           sasoc_cookie_life;
+};
+
+/*
+ * 7.1.9 Set Peer Primary Address (SCTP_SET_PEER_PRIMARY_ADDR)
+ *
+ *  Requests that the peer mark the enclosed address as the association
+ *  primary. The enclosed address must be one of the association's
+ *  locally bound addresses. The following structure is used to make a
+ *   set primary request:
+ */
+struct sctp_setpeerprim {
+       sctp_assoc_t            sspp_assoc_id;
+       struct sockaddr_storage sspp_addr;
+} __attribute__((packed, aligned(4)));
+
+/*
+ * 7.1.10 Set Primary Address (SCTP_PRIMARY_ADDR)
+ *
+ *  Requests that the local SCTP stack use the enclosed peer address as
+ *  the association primary. The enclosed address must be one of the
+ *  association peer's addresses. The following structure is used to
+ *  make a set peer primary request:
+ */
+struct sctp_prim {
+       sctp_assoc_t            ssp_assoc_id;
+       struct sockaddr_storage ssp_addr;
+} __attribute__((packed, aligned(4)));
+
+/* For backward compatibility use, define the old name too */
+#define sctp_setprim   sctp_prim
+
+/*
+ * 7.1.11 Set Adaptation Layer Indicator (SCTP_ADAPTATION_LAYER)
+ *
+ * Requests that the local endpoint set the specified Adaptation Layer
+ * Indication parameter for all future INIT and INIT-ACK exchanges.
+ */
+struct sctp_setadaptation {
+       __u32   ssb_adaptation_ind;
+};
+
+/*
+ * 7.1.13 Peer Address Parameters  (SCTP_PEER_ADDR_PARAMS)
+ *
+ *   Applications can enable or disable heartbeats for any peer address
+ *   of an association, modify an address's heartbeat interval, force a
+ *   heartbeat to be sent immediately, and adjust the address's maximum
+ *   number of retransmissions sent before an address is considered
+ *   unreachable. The following structure is used to access and modify an
+ *   address's parameters:
+ */
+enum  sctp_spp_flags {
+       SPP_HB_ENABLE = 1<<0,           /*Enable heartbeats*/
+       SPP_HB_DISABLE = 1<<1,          /*Disable heartbeats*/
+       SPP_HB = SPP_HB_ENABLE | SPP_HB_DISABLE,
+       SPP_HB_DEMAND = 1<<2,           /*Send heartbeat immediately*/
+       SPP_PMTUD_ENABLE = 1<<3,        /*Enable PMTU discovery*/
+       SPP_PMTUD_DISABLE = 1<<4,       /*Disable PMTU discovery*/
+       SPP_PMTUD = SPP_PMTUD_ENABLE | SPP_PMTUD_DISABLE,
+       SPP_SACKDELAY_ENABLE = 1<<5,    /*Enable SACK*/
+       SPP_SACKDELAY_DISABLE = 1<<6,   /*Disable SACK*/
+       SPP_SACKDELAY = SPP_SACKDELAY_ENABLE | SPP_SACKDELAY_DISABLE,
+       SPP_HB_TIME_IS_ZERO = 1<<7,     /* Set HB delay to 0 */
+};
+
+struct sctp_paddrparams {
+       sctp_assoc_t            spp_assoc_id;
+       struct sockaddr_storage spp_address;
+       __u32                   spp_hbinterval;
+       __u16                   spp_pathmaxrxt;
+       __u32                   spp_pathmtu;
+       __u32                   spp_sackdelay;
+       __u32                   spp_flags;
+} __attribute__((packed, aligned(4)));
+
+/*
+ * 7.1.18.  Add a chunk that must be authenticated (SCTP_AUTH_CHUNK)
+ *
+ * This set option adds a chunk type that the user is requesting to be
+ * received only in an authenticated way.  Changes to the list of chunks
+ * will only effect future associations on the socket.
+ */
+struct sctp_authchunk {
+       __u8            sauth_chunk;
+};
+
+/*
+ * 7.1.19.  Get or set the list of supported HMAC Identifiers (SCTP_HMAC_IDENT)
+ *
+ * This option gets or sets the list of HMAC algorithms that the local
+ * endpoint requires the peer to use.
+ */
+/* This here is only used by user space as is. It might not be a good idea
+ * to export/reveal the whole structure with reserved fields etc.
+ */
+enum {
+       SCTP_AUTH_HMAC_ID_SHA1 = 1,
+       SCTP_AUTH_HMAC_ID_SHA256 = 3,
+};
+
+struct sctp_hmacalgo {
+       __u32           shmac_num_idents;
+       __u16           shmac_idents[];
+};
+
+/* Sadly, user and kernel space have different names for
+ * this structure member, so this is to not break anything.
+ */
+#define shmac_number_of_idents shmac_num_idents
+
+/*
+ * 7.1.20.  Set a shared key (SCTP_AUTH_KEY)
+ *
+ * This option will set a shared secret key which is used to build an
+ * association shared key.
+ */
+struct sctp_authkey {
+       sctp_assoc_t    sca_assoc_id;
+       __u16           sca_keynumber;
+       __u16           sca_keylength;
+       __u8            sca_key[];
+};
+
+/*
+ * 7.1.21.  Get or set the active shared key (SCTP_AUTH_ACTIVE_KEY)
+ *
+ * This option will get or set the active shared key to be used to build
+ * the association shared key.
+ */
+
+struct sctp_authkeyid {
+       sctp_assoc_t    scact_assoc_id;
+       __u16           scact_keynumber;
+};
+
+
+/*
+ * 7.1.23.  Get or set delayed ack timer (SCTP_DELAYED_SACK)
+ *
+ * This option will effect the way delayed acks are performed.  This
+ * option allows you to get or set the delayed ack time, in
+ * milliseconds.  It also allows changing the delayed ack frequency.
+ * Changing the frequency to 1 disables the delayed sack algorithm.  If
+ * the assoc_id is 0, then this sets or gets the endpoints default
+ * values.  If the assoc_id field is non-zero, then the set or get
+ * effects the specified association for the one to many model (the
+ * assoc_id field is ignored by the one to one model).  Note that if
+ * sack_delay or sack_freq are 0 when setting this option, then the
+ * current values will remain unchanged.
+ */
+struct sctp_sack_info {
+       sctp_assoc_t    sack_assoc_id;
+       uint32_t        sack_delay;
+       uint32_t        sack_freq;
+};
+
+struct sctp_assoc_value {
+    sctp_assoc_t            assoc_id;
+    uint32_t                assoc_value;
+};
+
+/*
+ * 7.2.2 Peer Address Information
+ *
+ *   Applications can retrieve information about a specific peer address
+ *   of an association, including its reachability state, congestion
+ *   window, and retransmission timer values.  This information is
+ *   read-only. The following structure is used to access this
+ *   information:
+ */
+struct sctp_paddrinfo {
+       sctp_assoc_t            spinfo_assoc_id;
+       struct sockaddr_storage spinfo_address;
+       __s32                   spinfo_state;
+       __u32                   spinfo_cwnd;
+       __u32                   spinfo_srtt;
+       __u32                   spinfo_rto;
+       __u32                   spinfo_mtu;
+} __attribute__((packed, aligned(4)));
+
+/* Peer addresses's state. */
+/* UNKNOWN: Peer address passed by the upper layer in sendmsg or connect[x]
+ * calls.
+ * UNCONFIRMED: Peer address received in INIT/INIT-ACK address parameters.
+ *              Not yet confirmed by a heartbeat and not available for data
+ *             transfers.
+ * ACTIVE : Peer address confirmed, active and available for data transfers.
+ * INACTIVE: Peer address inactive and not available for data transfers.
+ */
+enum sctp_spinfo_state {
+       SCTP_INACTIVE,
+       SCTP_PF,
+       SCTP_ACTIVE,
+       SCTP_UNCONFIRMED,
+       SCTP_UNKNOWN = 0xffff  /* Value used for transport state unknown */
+};
+
+/*
+ * 7.2.1 Association Status (SCTP_STATUS)
+ *
+ *   Applications can retrieve current status information about an
+ *   association, including association state, peer receiver window size,
+ *   number of unacked data chunks, and number of data chunks pending
+ *   receipt.  This information is read-only.  The following structure is
+ *   used to access this information:
+ */
+struct sctp_status {
+       sctp_assoc_t            sstat_assoc_id;
+       __s32                   sstat_state;
+       __u32                   sstat_rwnd;
+       __u16                   sstat_unackdata;
+       __u16                   sstat_penddata;
+       __u16                   sstat_instrms;
+       __u16                   sstat_outstrms;
+       __u32                   sstat_fragmentation_point;
+       struct sctp_paddrinfo   sstat_primary;
+};
+
+/*
+ * 7.2.3.  Get the list of chunks the peer requires to be authenticated
+ *         (SCTP_PEER_AUTH_CHUNKS)
+ *
+ * This option gets a list of chunks for a specified association that
+ * the peer requires to be received authenticated only.
+ */
+struct sctp_authchunks {
+       sctp_assoc_t    gauth_assoc_id;
+       __u32           gauth_number_of_chunks;
+       uint8_t         gauth_chunks[];
+};
+
+/* The broken spelling has been released already in lksctp-tools header,
+ * so don't break anyone, now that it's fixed.
+ */
+#define guth_number_of_chunks  gauth_number_of_chunks
+
+/* Association states.  */
+enum sctp_sstat_state {
+       SCTP_EMPTY                = 0,
+       SCTP_CLOSED               = 1,
+       SCTP_COOKIE_WAIT          = 2,
+       SCTP_COOKIE_ECHOED        = 3,
+       SCTP_ESTABLISHED          = 4,
+       SCTP_SHUTDOWN_PENDING     = 5,
+       SCTP_SHUTDOWN_SENT        = 6,
+       SCTP_SHUTDOWN_RECEIVED    = 7,
+       SCTP_SHUTDOWN_ACK_SENT    = 8,
+};
+
+/*
+ * 8.2.6. Get the Current Identifiers of Associations
+ *        (SCTP_GET_ASSOC_ID_LIST)
+ *
+ * This option gets the current list of SCTP association identifiers of
+ * the SCTP associations handled by a one-to-many style socket.
+ */
+struct sctp_assoc_ids {
+       __u32           gaids_number_of_ids;
+       sctp_assoc_t    gaids_assoc_id[];
+};
+
+/*
+ * 8.3, 8.5 get all peer/local addresses in an association.
+ * This parameter struct is used by SCTP_GET_PEER_ADDRS and
+ * SCTP_GET_LOCAL_ADDRS socket options used internally to implement
+ * sctp_getpaddrs() and sctp_getladdrs() API.
+ */
+struct sctp_getaddrs_old {
+       sctp_assoc_t            assoc_id;
+       int                     addr_num;
+       struct sockaddr         *addrs;
+};
+
+struct sctp_getaddrs {
+       sctp_assoc_t            assoc_id; /*input*/
+       __u32                   addr_num; /*output*/
+       __u8                    addrs[0]; /*output, variable size*/
+};
+
+/* A socket user request obtained via SCTP_GET_ASSOC_STATS that retrieves
+ * association stats. All stats are counts except sas_maxrto and
+ * sas_obs_rto_ipaddr. maxrto is the max observed rto + transport since
+ * the last call. Will return 0 when RTO was not update since last call
+ */
+struct sctp_assoc_stats {
+       sctp_assoc_t    sas_assoc_id;    /* Input */
+                                        /* Transport of observed max RTO */
+       struct sockaddr_storage sas_obs_rto_ipaddr;
+       __u64           sas_maxrto;      /* Maximum Observed RTO for period */
+       __u64           sas_isacks;      /* SACKs received */
+       __u64           sas_osacks;      /* SACKs sent */
+       __u64           sas_opackets;    /* Packets sent */
+       __u64           sas_ipackets;    /* Packets received */
+       __u64           sas_rtxchunks;   /* Retransmitted Chunks */
+       __u64           sas_outofseqtsns;/* TSN received > next expected */
+       __u64           sas_idupchunks;  /* Dups received (ordered+unordered) */
+       __u64           sas_gapcnt;      /* Gap Acknowledgements Received */
+       __u64           sas_ouodchunks;  /* Unordered data chunks sent */
+       __u64           sas_iuodchunks;  /* Unordered data chunks received */
+       __u64           sas_oodchunks;   /* Ordered data chunks sent */
+       __u64           sas_iodchunks;   /* Ordered data chunks received */
+       __u64           sas_octrlchunks; /* Control chunks sent */
+       __u64           sas_ictrlchunks; /* Control chunks received */
+};
+
+/*
+ * 8.1 sctp_bindx()
+ *
+ * The flags parameter is formed from the bitwise OR of zero or more of the
+ * following currently defined flags:
+ */
+#define SCTP_BINDX_ADD_ADDR 0x01
+#define SCTP_BINDX_REM_ADDR 0x02
+
+/* This is the structure that is passed as an argument(optval) to
+ * getsockopt(SCTP_SOCKOPT_PEELOFF).
+ */
+typedef struct {
+       sctp_assoc_t associd;
+       int sd;
+} sctp_peeloff_arg_t;
+
+typedef struct {
+       sctp_peeloff_arg_t p_arg;
+       unsigned flags;
+} sctp_peeloff_flags_arg_t;
+
+/*
+ *  Peer Address Thresholds socket option
+ */
+struct sctp_paddrthlds {
+       sctp_assoc_t spt_assoc_id;
+       struct sockaddr_storage spt_address;
+       __u16 spt_pathmaxrxt;
+       __u16 spt_pathpfthld;
+};
+
+/*
+ * Socket Option for Getting the Association/Stream-Specific PR-SCTP Status
+ */
+struct sctp_prstatus {
+       sctp_assoc_t sprstat_assoc_id;
+       __u16 sprstat_sid;
+       __u16 sprstat_policy;
+       __u64 sprstat_abandoned_unsent;
+       __u64 sprstat_abandoned_sent;
+};
+
+struct sctp_default_prinfo {
+       sctp_assoc_t pr_assoc_id;
+       __u32 pr_value;
+       __u16 pr_policy;
+};
+
+struct sctp_info {
+       __u32   sctpi_tag;
+       __u32   sctpi_state;
+       __u32   sctpi_rwnd;
+       __u16   sctpi_unackdata;
+       __u16   sctpi_penddata;
+       __u16   sctpi_instrms;
+       __u16   sctpi_outstrms;
+       __u32   sctpi_fragmentation_point;
+       __u32   sctpi_inqueue;
+       __u32   sctpi_outqueue;
+       __u32   sctpi_overall_error;
+       __u32   sctpi_max_burst;
+       __u32   sctpi_maxseg;
+       __u32   sctpi_peer_rwnd;
+       __u32   sctpi_peer_tag;
+       __u8    sctpi_peer_capable;
+       __u8    sctpi_peer_sack;
+       __u16   __reserved1;
+
+       /* assoc status info */
+       __u64   sctpi_isacks;
+       __u64   sctpi_osacks;
+       __u64   sctpi_opackets;
+       __u64   sctpi_ipackets;
+       __u64   sctpi_rtxchunks;
+       __u64   sctpi_outofseqtsns;
+       __u64   sctpi_idupchunks;
+       __u64   sctpi_gapcnt;
+       __u64   sctpi_ouodchunks;
+       __u64   sctpi_iuodchunks;
+       __u64   sctpi_oodchunks;
+       __u64   sctpi_iodchunks;
+       __u64   sctpi_octrlchunks;
+       __u64   sctpi_ictrlchunks;
+
+       /* primary transport info */
+       struct sockaddr_storage sctpi_p_address;
+       __s32   sctpi_p_state;
+       __u32   sctpi_p_cwnd;
+       __u32   sctpi_p_srtt;
+       __u32   sctpi_p_rto;
+       __u32   sctpi_p_hbinterval;
+       __u32   sctpi_p_pathmaxrxt;
+       __u32   sctpi_p_sackdelay;
+       __u32   sctpi_p_sackfreq;
+       __u32   sctpi_p_ssthresh;
+       __u32   sctpi_p_partial_bytes_acked;
+       __u32   sctpi_p_flight_size;
+       __u16   sctpi_p_error;
+       __u16   __reserved2;
+
+       /* sctp sock info */
+       __u32   sctpi_s_autoclose;
+       __u32   sctpi_s_adaptation_ind;
+       __u32   sctpi_s_pd_point;
+       __u8    sctpi_s_nodelay;
+       __u8    sctpi_s_disable_fragments;
+       __u8    sctpi_s_v4mapped;
+       __u8    sctpi_s_frag_interleave;
+       __u32   sctpi_s_type;
+       __u32   __reserved3;
+};
+
+struct sctp_reset_streams {
+       sctp_assoc_t srs_assoc_id;
+       uint16_t srs_flags;
+       uint16_t srs_number_streams;    /* 0 == ALL */
+       uint16_t srs_stream_list[];     /* list if srs_num_streams is not 0 */
+};
+
+struct sctp_add_streams {
+       sctp_assoc_t sas_assoc_id;
+       uint16_t sas_instrms;
+       uint16_t sas_outstrms;
+};
+
+#endif /* _SCTP_H */
diff --git a/include/uapi/linux/seg6.h b/include/uapi/linux/seg6.h
new file mode 100644 (file)
index 0000000..0715279
--- /dev/null
@@ -0,0 +1,54 @@
+/*
+ *  SR-IPv6 implementation
+ *
+ *  Author:
+ *  David Lebrun <david.lebrun@uclouvain.be>
+ *
+ *
+ *  This program is free software; you can redistribute it and/or
+ *      modify it under the terms of the GNU General Public License
+ *      as published by the Free Software Foundation; either version
+ *      2 of the License, or (at your option) any later version.
+ */
+
+#ifndef _LINUX_SEG6_H
+#define _LINUX_SEG6_H
+
+#include <linux/types.h>
+#include <linux/in6.h>         /* For struct in6_addr. */
+
+/*
+ * SRH
+ */
+struct ipv6_sr_hdr {
+       __u8    nexthdr;
+       __u8    hdrlen;
+       __u8    type;
+       __u8    segments_left;
+       __u8    first_segment;
+       __u8    flags;
+       __u16   reserved;
+
+       struct in6_addr segments[0];
+};
+
+#define SR6_FLAG1_PROTECTED    (1 << 6)
+#define SR6_FLAG1_OAM          (1 << 5)
+#define SR6_FLAG1_ALERT                (1 << 4)
+#define SR6_FLAG1_HMAC         (1 << 3)
+
+#define SR6_TLV_INGRESS                1
+#define SR6_TLV_EGRESS         2
+#define SR6_TLV_OPAQUE         3
+#define SR6_TLV_PADDING                4
+#define SR6_TLV_HMAC           5
+
+#define sr_has_hmac(srh) ((srh)->flags & SR6_FLAG1_HMAC)
+
+struct sr6_tlv {
+       __u8 type;
+       __u8 len;
+       __u8 data[0];
+};
+
+#endif
diff --git a/include/uapi/linux/seg6_genl.h b/include/uapi/linux/seg6_genl.h
new file mode 100644 (file)
index 0000000..99382f9
--- /dev/null
@@ -0,0 +1,32 @@
+#ifndef _LINUX_SEG6_GENL_H
+#define _LINUX_SEG6_GENL_H
+
+#define SEG6_GENL_NAME         "SEG6"
+#define SEG6_GENL_VERSION      0x1
+
+enum {
+       SEG6_ATTR_UNSPEC,
+       SEG6_ATTR_DST,
+       SEG6_ATTR_DSTLEN,
+       SEG6_ATTR_HMACKEYID,
+       SEG6_ATTR_SECRET,
+       SEG6_ATTR_SECRETLEN,
+       SEG6_ATTR_ALGID,
+       SEG6_ATTR_HMACINFO,
+       __SEG6_ATTR_MAX,
+};
+
+#define SEG6_ATTR_MAX (__SEG6_ATTR_MAX - 1)
+
+enum {
+       SEG6_CMD_UNSPEC,
+       SEG6_CMD_SETHMAC,
+       SEG6_CMD_DUMPHMAC,
+       SEG6_CMD_SET_TUNSRC,
+       SEG6_CMD_GET_TUNSRC,
+       __SEG6_CMD_MAX,
+};
+
+#define SEG6_CMD_MAX (__SEG6_CMD_MAX - 1)
+
+#endif
diff --git a/include/uapi/linux/seg6_hmac.h b/include/uapi/linux/seg6_hmac.h
new file mode 100644 (file)
index 0000000..704f93e
--- /dev/null
@@ -0,0 +1,22 @@
+#ifndef _LINUX_SEG6_HMAC_H
+#define _LINUX_SEG6_HMAC_H
+
+#include <linux/types.h>
+#include <linux/seg6.h>
+
+#define SEG6_HMAC_SECRET_LEN   64
+#define SEG6_HMAC_FIELD_LEN    32
+
+struct sr6_tlv_hmac {
+       struct sr6_tlv tlvhdr;
+       __u16 reserved;
+       __be32 hmackeyid;
+       __u8 hmac[SEG6_HMAC_FIELD_LEN];
+};
+
+enum {
+       SEG6_HMAC_ALGO_SHA1 = 1,
+       SEG6_HMAC_ALGO_SHA256 = 2,
+};
+
+#endif
diff --git a/include/uapi/linux/seg6_iptunnel.h b/include/uapi/linux/seg6_iptunnel.h
new file mode 100644 (file)
index 0000000..a5dc05a
--- /dev/null
@@ -0,0 +1,40 @@
+/*
+ *  SR-IPv6 implementation
+ *
+ *  Author:
+ *  David Lebrun <david.lebrun@uclouvain.be>
+ *
+ *
+ *  This program is free software; you can redistribute it and/or
+ *      modify it under the terms of the GNU General Public License
+ *      as published by the Free Software Foundation; either version
+ *      2 of the License, or (at your option) any later version.
+ */
+
+#ifndef _LINUX_SEG6_IPTUNNEL_H
+#define _LINUX_SEG6_IPTUNNEL_H
+
+#include <linux/seg6.h>                /* For struct ipv6_sr_hdr. */
+
+enum {
+       SEG6_IPTUNNEL_UNSPEC,
+       SEG6_IPTUNNEL_SRH,
+       __SEG6_IPTUNNEL_MAX,
+};
+#define SEG6_IPTUNNEL_MAX (__SEG6_IPTUNNEL_MAX - 1)
+
+struct seg6_iptunnel_encap {
+       int mode;
+       struct ipv6_sr_hdr srh[0];
+};
+
+#define SEG6_IPTUN_ENCAP_SIZE(x) ((sizeof(*x)) + (((x)->srh->hdrlen + 1) << 3))
+
+enum {
+       SEG6_IPTUN_MODE_INLINE,
+       SEG6_IPTUN_MODE_ENCAP,
+       SEG6_IPTUN_MODE_L2ENCAP,
+};
+
+
+#endif
diff --git a/include/uapi/linux/seg6_local.h b/include/uapi/linux/seg6_local.h
new file mode 100644 (file)
index 0000000..76b90d6
--- /dev/null
@@ -0,0 +1,68 @@
+/*
+ *  SR-IPv6 implementation
+ *
+ *  Author:
+ *  David Lebrun <david.lebrun@uclouvain.be>
+ *
+ *
+ *  This program is free software; you can redistribute it and/or
+ *      modify it under the terms of the GNU General Public License
+ *      as published by the Free Software Foundation; either version
+ *      2 of the License, or (at your option) any later version.
+ */
+
+#ifndef _LINUX_SEG6_LOCAL_H
+#define _LINUX_SEG6_LOCAL_H
+
+#include <linux/seg6.h>
+
+enum {
+       SEG6_LOCAL_UNSPEC,
+       SEG6_LOCAL_ACTION,
+       SEG6_LOCAL_SRH,
+       SEG6_LOCAL_TABLE,
+       SEG6_LOCAL_NH4,
+       SEG6_LOCAL_NH6,
+       SEG6_LOCAL_IIF,
+       SEG6_LOCAL_OIF,
+       __SEG6_LOCAL_MAX,
+};
+#define SEG6_LOCAL_MAX (__SEG6_LOCAL_MAX - 1)
+
+enum {
+       SEG6_LOCAL_ACTION_UNSPEC        = 0,
+       /* node segment */
+       SEG6_LOCAL_ACTION_END           = 1,
+       /* adjacency segment (IPv6 cross-connect) */
+       SEG6_LOCAL_ACTION_END_X         = 2,
+       /* lookup of next seg NH in table */
+       SEG6_LOCAL_ACTION_END_T         = 3,
+       /* decap and L2 cross-connect */
+       SEG6_LOCAL_ACTION_END_DX2       = 4,
+       /* decap and IPv6 cross-connect */
+       SEG6_LOCAL_ACTION_END_DX6       = 5,
+       /* decap and IPv4 cross-connect */
+       SEG6_LOCAL_ACTION_END_DX4       = 6,
+       /* decap and lookup of DA in v6 table */
+       SEG6_LOCAL_ACTION_END_DT6       = 7,
+       /* decap and lookup of DA in v4 table */
+       SEG6_LOCAL_ACTION_END_DT4       = 8,
+       /* binding segment with insertion */
+       SEG6_LOCAL_ACTION_END_B6        = 9,
+       /* binding segment with encapsulation */
+       SEG6_LOCAL_ACTION_END_B6_ENCAP  = 10,
+       /* binding segment with MPLS encap */
+       SEG6_LOCAL_ACTION_END_BM        = 11,
+       /* lookup last seg in table */
+       SEG6_LOCAL_ACTION_END_S         = 12,
+       /* forward to SR-unaware VNF with static proxy */
+       SEG6_LOCAL_ACTION_END_AS        = 13,
+       /* forward to SR-unaware VNF with masquerading */
+       SEG6_LOCAL_ACTION_END_AM        = 14,
+
+       __SEG6_LOCAL_ACTION_MAX,
+};
+
+#define SEG6_LOCAL_ACTION_MAX (__SEG6_LOCAL_ACTION_MAX - 1)
+
+#endif
diff --git a/include/uapi/linux/sock_diag.h b/include/uapi/linux/sock_diag.h
new file mode 100644 (file)
index 0000000..901231e
--- /dev/null
@@ -0,0 +1,38 @@
+#ifndef __SOCK_DIAG_H__
+#define __SOCK_DIAG_H__
+
+#include <linux/types.h>
+
+#define SOCK_DIAG_BY_FAMILY 20
+#define SOCK_DESTROY 21
+
+struct sock_diag_req {
+       __u8    sdiag_family;
+       __u8    sdiag_protocol;
+};
+
+enum {
+       SK_MEMINFO_RMEM_ALLOC,
+       SK_MEMINFO_RCVBUF,
+       SK_MEMINFO_WMEM_ALLOC,
+       SK_MEMINFO_SNDBUF,
+       SK_MEMINFO_FWD_ALLOC,
+       SK_MEMINFO_WMEM_QUEUED,
+       SK_MEMINFO_OPTMEM,
+       SK_MEMINFO_BACKLOG,
+       SK_MEMINFO_DROPS,
+
+       SK_MEMINFO_VARS,
+};
+
+enum sknetlink_groups {
+       SKNLGRP_NONE,
+       SKNLGRP_INET_TCP_DESTROY,
+       SKNLGRP_INET_UDP_DESTROY,
+       SKNLGRP_INET6_TCP_DESTROY,
+       SKNLGRP_INET6_UDP_DESTROY,
+       __SKNLGRP_MAX,
+};
+#define SKNLGRP_MAX    (__SKNLGRP_MAX - 1)
+
+#endif /* __SOCK_DIAG_H__ */
diff --git a/include/uapi/linux/socket.h b/include/uapi/linux/socket.h
new file mode 100644 (file)
index 0000000..8c1e501
--- /dev/null
@@ -0,0 +1,21 @@
+#ifndef _LINUX_SOCKET_H
+#define _LINUX_SOCKET_H
+
+/*
+ * Desired design of maximum size and alignment (see RFC2553)
+ */
+#define _K_SS_MAXSIZE  128     /* Implementation specific max size */
+#define _K_SS_ALIGNSIZE        (__alignof__ (struct sockaddr *))
+                               /* Implementation specific desired alignment */
+
+typedef unsigned short __kernel_sa_family_t;
+
+struct __kernel_sockaddr_storage {
+       __kernel_sa_family_t    ss_family;              /* address family */
+       /* Following field(s) are implementation specific */
+       char            __data[_K_SS_MAXSIZE - sizeof(unsigned short)];
+                               /* space to achieve desired size, */
+                               /* _SS_MAXSIZE value minus size of ss_family */
+} __attribute__ ((aligned(_K_SS_ALIGNSIZE)));  /* force desired alignment */
+
+#endif /* _LINUX_SOCKET_H */
diff --git a/include/uapi/linux/sockios.h b/include/uapi/linux/sockios.h
new file mode 100644 (file)
index 0000000..79d029d
--- /dev/null
@@ -0,0 +1,152 @@
+/*
+ * INET                An implementation of the TCP/IP protocol suite for the LINUX
+ *             operating system.  INET is implemented using the  BSD Socket
+ *             interface as the means of communication with the user level.
+ *
+ *             Definitions of the socket-level I/O control calls.
+ *
+ * Version:    @(#)sockios.h   1.0.2   03/09/93
+ *
+ * Authors:    Ross Biro
+ *             Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
+ *
+ *             This program is free software; you can redistribute it and/or
+ *             modify it under the terms of the GNU General Public License
+ *             as published by the Free Software Foundation; either version
+ *             2 of the License, or (at your option) any later version.
+ */
+#ifndef _LINUX_SOCKIOS_H
+#define _LINUX_SOCKIOS_H
+
+#include <asm/sockios.h>
+
+/* Linux-specific socket ioctls */
+#define SIOCINQ                FIONREAD
+#define SIOCOUTQ       TIOCOUTQ        /* output queue size (not sent + not acked) */
+
+#define SOCK_IOC_TYPE  0x89
+
+/* Routing table calls. */
+#define SIOCADDRT      0x890B          /* add routing table entry      */
+#define SIOCDELRT      0x890C          /* delete routing table entry   */
+#define SIOCRTMSG      0x890D          /* unused                       */
+
+/* Socket configuration controls. */
+#define SIOCGIFNAME    0x8910          /* get iface name               */
+#define SIOCSIFLINK    0x8911          /* set iface channel            */
+#define SIOCGIFCONF    0x8912          /* get iface list               */
+#define SIOCGIFFLAGS   0x8913          /* get flags                    */
+#define SIOCSIFFLAGS   0x8914          /* set flags                    */
+#define SIOCGIFADDR    0x8915          /* get PA address               */
+#define SIOCSIFADDR    0x8916          /* set PA address               */
+#define SIOCGIFDSTADDR 0x8917          /* get remote PA address        */
+#define SIOCSIFDSTADDR 0x8918          /* set remote PA address        */
+#define SIOCGIFBRDADDR 0x8919          /* get broadcast PA address     */
+#define SIOCSIFBRDADDR 0x891a          /* set broadcast PA address     */
+#define SIOCGIFNETMASK 0x891b          /* get network PA mask          */
+#define SIOCSIFNETMASK 0x891c          /* set network PA mask          */
+#define SIOCGIFMETRIC  0x891d          /* get metric                   */
+#define SIOCSIFMETRIC  0x891e          /* set metric                   */
+#define SIOCGIFMEM     0x891f          /* get memory address (BSD)     */
+#define SIOCSIFMEM     0x8920          /* set memory address (BSD)     */
+#define SIOCGIFMTU     0x8921          /* get MTU size                 */
+#define SIOCSIFMTU     0x8922          /* set MTU size                 */
+#define SIOCSIFNAME    0x8923          /* set interface name */
+#define        SIOCSIFHWADDR   0x8924          /* set hardware address         */
+#define SIOCGIFENCAP   0x8925          /* get/set encapsulations       */
+#define SIOCSIFENCAP   0x8926          
+#define SIOCGIFHWADDR  0x8927          /* Get hardware address         */
+#define SIOCGIFSLAVE   0x8929          /* Driver slaving support       */
+#define SIOCSIFSLAVE   0x8930
+#define SIOCADDMULTI   0x8931          /* Multicast address lists      */
+#define SIOCDELMULTI   0x8932
+#define SIOCGIFINDEX   0x8933          /* name -> if_index mapping     */
+#define SIOGIFINDEX    SIOCGIFINDEX    /* misprint compatibility :-)   */
+#define SIOCSIFPFLAGS  0x8934          /* set/get extended flags set   */
+#define SIOCGIFPFLAGS  0x8935
+#define SIOCDIFADDR    0x8936          /* delete PA address            */
+#define        SIOCSIFHWBROADCAST      0x8937  /* set hardware broadcast addr  */
+#define SIOCGIFCOUNT   0x8938          /* get number of devices */
+
+#define SIOCGIFBR      0x8940          /* Bridging support             */
+#define SIOCSIFBR      0x8941          /* Set bridging options         */
+
+#define SIOCGIFTXQLEN  0x8942          /* Get the tx queue length      */
+#define SIOCSIFTXQLEN  0x8943          /* Set the tx queue length      */
+
+/* SIOCGIFDIVERT was:  0x8944          Frame diversion support */
+/* SIOCSIFDIVERT was:  0x8945          Set frame diversion options */
+
+#define SIOCETHTOOL    0x8946          /* Ethtool interface            */
+
+#define SIOCGMIIPHY    0x8947          /* Get address of MII PHY in use. */
+#define SIOCGMIIREG    0x8948          /* Read MII PHY register.       */
+#define SIOCSMIIREG    0x8949          /* Write MII PHY register.      */
+
+#define SIOCWANDEV     0x894A          /* get/set netdev parameters    */
+
+#define SIOCOUTQNSD    0x894B          /* output queue size (not sent only) */
+#define SIOCGSKNS      0x894C          /* get socket network namespace */
+
+/* ARP cache control calls. */
+                   /*  0x8950 - 0x8952  * obsolete calls, don't re-use */
+#define SIOCDARP       0x8953          /* delete ARP table entry       */
+#define SIOCGARP       0x8954          /* get ARP table entry          */
+#define SIOCSARP       0x8955          /* set ARP table entry          */
+
+/* RARP cache control calls. */
+#define SIOCDRARP      0x8960          /* delete RARP table entry      */
+#define SIOCGRARP      0x8961          /* get RARP table entry         */
+#define SIOCSRARP      0x8962          /* set RARP table entry         */
+
+/* Driver configuration calls */
+
+#define SIOCGIFMAP     0x8970          /* Get device parameters        */
+#define SIOCSIFMAP     0x8971          /* Set device parameters        */
+
+/* DLCI configuration calls */
+
+#define SIOCADDDLCI    0x8980          /* Create new DLCI device       */
+#define SIOCDELDLCI    0x8981          /* Delete DLCI device           */
+
+#define SIOCGIFVLAN    0x8982          /* 802.1Q VLAN support          */
+#define SIOCSIFVLAN    0x8983          /* Set 802.1Q VLAN options      */
+
+/* bonding calls */
+
+#define SIOCBONDENSLAVE        0x8990          /* enslave a device to the bond */
+#define SIOCBONDRELEASE 0x8991         /* release a slave from the bond*/
+#define SIOCBONDSETHWADDR      0x8992  /* set the hw addr of the bond  */
+#define SIOCBONDSLAVEINFOQUERY 0x8993   /* rtn info about slave state   */
+#define SIOCBONDINFOQUERY      0x8994  /* rtn info about bond state    */
+#define SIOCBONDCHANGEACTIVE   0x8995   /* update to a new active slave */
+                       
+/* bridge calls */
+#define SIOCBRADDBR     0x89a0         /* create new bridge device     */
+#define SIOCBRDELBR     0x89a1         /* remove bridge device         */
+#define SIOCBRADDIF    0x89a2          /* add interface to bridge      */
+#define SIOCBRDELIF    0x89a3          /* remove interface from bridge */
+
+/* hardware time stamping: parameters in linux/net_tstamp.h */
+#define SIOCSHWTSTAMP  0x89b0          /* set and get config           */
+#define SIOCGHWTSTAMP  0x89b1          /* get config                   */
+
+/* Device private ioctl calls */
+
+/*
+ *     These 16 ioctls are available to devices via the do_ioctl() device
+ *     vector. Each device should include this file and redefine these names
+ *     as their own. Because these are device dependent it is a good idea
+ *     _NOT_ to issue them to random objects and hope.
+ *
+ *     THESE IOCTLS ARE _DEPRECATED_ AND WILL DISAPPEAR IN 2.5.X -DaveM
+ */
+#define SIOCDEVPRIVATE 0x89F0  /* to 89FF */
+
+/*
+ *     These 16 ioctl calls are protocol private
+ */
+#define SIOCPROTOPRIVATE 0x89E0 /* to 89EF */
+#endif /* _LINUX_SOCKIOS_H */
diff --git a/include/uapi/linux/stddef.h b/include/uapi/linux/stddef.h
new file mode 100644 (file)
index 0000000..4bb69de
--- /dev/null
@@ -0,0 +1,5 @@
+
+
+#ifndef __always_inline
+#define __always_inline __inline__
+#endif
diff --git a/include/uapi/linux/sysinfo.h b/include/uapi/linux/sysinfo.h
new file mode 100644 (file)
index 0000000..934335a
--- /dev/null
@@ -0,0 +1,24 @@
+#ifndef _LINUX_SYSINFO_H
+#define _LINUX_SYSINFO_H
+
+#include <linux/types.h>
+
+#define SI_LOAD_SHIFT  16
+struct sysinfo {
+       __kernel_long_t uptime;         /* Seconds since boot */
+       __kernel_ulong_t loads[3];      /* 1, 5, and 15 minute load averages */
+       __kernel_ulong_t totalram;      /* Total usable main memory size */
+       __kernel_ulong_t freeram;       /* Available memory size */
+       __kernel_ulong_t sharedram;     /* Amount of shared memory */
+       __kernel_ulong_t bufferram;     /* Memory used by buffers */
+       __kernel_ulong_t totalswap;     /* Total swap space size */
+       __kernel_ulong_t freeswap;      /* swap space still available */
+       __u16 procs;                    /* Number of current processes */
+       __u16 pad;                      /* Explicit padding for m68k */
+       __kernel_ulong_t totalhigh;     /* Total high memory size */
+       __kernel_ulong_t freehigh;      /* Available high memory size */
+       __u32 mem_unit;                 /* Memory unit size in bytes */
+       char _f[20-2*sizeof(__kernel_ulong_t)-sizeof(__u32)];   /* Padding: libc5 uses this.. */
+};
+
+#endif /* _LINUX_SYSINFO_H */
diff --git a/include/uapi/linux/tc_act/tc_bpf.h b/include/uapi/linux/tc_act/tc_bpf.h
new file mode 100644 (file)
index 0000000..8dc2ac0
--- /dev/null
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2015 Jiri Pirko <jiri@resnulli.us>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ */
+
+#ifndef __LINUX_TC_BPF_H
+#define __LINUX_TC_BPF_H
+
+#include <linux/pkt_cls.h>
+
+#define TCA_ACT_BPF 13
+
+struct tc_act_bpf {
+       tc_gen;
+};
+
+enum {
+       TCA_ACT_BPF_UNSPEC,
+       TCA_ACT_BPF_TM,
+       TCA_ACT_BPF_PARMS,
+       TCA_ACT_BPF_OPS_LEN,
+       TCA_ACT_BPF_OPS,
+       TCA_ACT_BPF_FD,
+       TCA_ACT_BPF_NAME,
+       TCA_ACT_BPF_PAD,
+       TCA_ACT_BPF_TAG,
+       TCA_ACT_BPF_ID,
+       __TCA_ACT_BPF_MAX,
+};
+#define TCA_ACT_BPF_MAX (__TCA_ACT_BPF_MAX - 1)
+
+#endif
diff --git a/include/uapi/linux/tc_act/tc_connmark.h b/include/uapi/linux/tc_act/tc_connmark.h
new file mode 100644 (file)
index 0000000..62a5e94
--- /dev/null
@@ -0,0 +1,23 @@
+#ifndef __UAPI_TC_CONNMARK_H
+#define __UAPI_TC_CONNMARK_H
+
+#include <linux/types.h>
+#include <linux/pkt_cls.h>
+
+#define TCA_ACT_CONNMARK 14
+
+struct tc_connmark {
+       tc_gen;
+       __u16 zone;
+};
+
+enum {
+       TCA_CONNMARK_UNSPEC,
+       TCA_CONNMARK_PARMS,
+       TCA_CONNMARK_TM,
+       TCA_CONNMARK_PAD,
+       __TCA_CONNMARK_MAX
+};
+#define TCA_CONNMARK_MAX (__TCA_CONNMARK_MAX - 1)
+
+#endif
diff --git a/include/uapi/linux/tc_act/tc_csum.h b/include/uapi/linux/tc_act/tc_csum.h
new file mode 100644 (file)
index 0000000..a11bb35
--- /dev/null
@@ -0,0 +1,34 @@
+#ifndef __LINUX_TC_CSUM_H
+#define __LINUX_TC_CSUM_H
+
+#include <linux/types.h>
+#include <linux/pkt_cls.h>
+
+#define TCA_ACT_CSUM 16
+
+enum {
+       TCA_CSUM_UNSPEC,
+       TCA_CSUM_PARMS,
+       TCA_CSUM_TM,
+       TCA_CSUM_PAD,
+       __TCA_CSUM_MAX
+};
+#define TCA_CSUM_MAX (__TCA_CSUM_MAX - 1)
+
+enum {
+       TCA_CSUM_UPDATE_FLAG_IPV4HDR = 1,
+       TCA_CSUM_UPDATE_FLAG_ICMP    = 2,
+       TCA_CSUM_UPDATE_FLAG_IGMP    = 4,
+       TCA_CSUM_UPDATE_FLAG_TCP     = 8,
+       TCA_CSUM_UPDATE_FLAG_UDP     = 16,
+       TCA_CSUM_UPDATE_FLAG_UDPLITE = 32,
+       TCA_CSUM_UPDATE_FLAG_SCTP    = 64,
+};
+
+struct tc_csum {
+       tc_gen;
+
+       __u32 update_flags;
+};
+
+#endif /* __LINUX_TC_CSUM_H */
diff --git a/include/uapi/linux/tc_act/tc_defact.h b/include/uapi/linux/tc_act/tc_defact.h
new file mode 100644 (file)
index 0000000..d2a3abb
--- /dev/null
@@ -0,0 +1,20 @@
+#ifndef __LINUX_TC_DEF_H
+#define __LINUX_TC_DEF_H
+
+#include <linux/pkt_cls.h>
+
+struct tc_defact {
+       tc_gen;
+};
+
+enum {
+       TCA_DEF_UNSPEC,
+       TCA_DEF_TM,
+       TCA_DEF_PARMS,
+       TCA_DEF_DATA,
+       TCA_DEF_PAD,
+       __TCA_DEF_MAX
+};
+#define TCA_DEF_MAX (__TCA_DEF_MAX - 1)
+
+#endif
diff --git a/include/uapi/linux/tc_act/tc_gact.h b/include/uapi/linux/tc_act/tc_gact.h
new file mode 100644 (file)
index 0000000..70b536a
--- /dev/null
@@ -0,0 +1,33 @@
+#ifndef __LINUX_TC_GACT_H
+#define __LINUX_TC_GACT_H
+
+#include <linux/types.h>
+#include <linux/pkt_cls.h>
+
+#define TCA_ACT_GACT 5
+struct tc_gact {
+       tc_gen;
+
+};
+
+struct tc_gact_p {
+#define PGACT_NONE              0
+#define PGACT_NETRAND           1
+#define PGACT_DETERM            2
+#define MAX_RAND                (PGACT_DETERM + 1 )
+       __u16                 ptype;
+       __u16                 pval;
+       int                   paction;
+};
+enum {
+       TCA_GACT_UNSPEC,
+       TCA_GACT_TM,
+       TCA_GACT_PARMS,
+       TCA_GACT_PROB,
+       TCA_GACT_PAD,
+       __TCA_GACT_MAX
+};
+#define TCA_GACT_MAX (__TCA_GACT_MAX - 1)
+#endif
diff --git a/include/uapi/linux/tc_act/tc_ife.h b/include/uapi/linux/tc_act/tc_ife.h
new file mode 100644 (file)
index 0000000..7c28178
--- /dev/null
@@ -0,0 +1,32 @@
+#ifndef __UAPI_TC_IFE_H
+#define __UAPI_TC_IFE_H
+
+#include <linux/types.h>
+#include <linux/pkt_cls.h>
+#include <linux/ife.h>
+
+#define TCA_ACT_IFE 25
+/* Flag bits for now just encoding/decoding; mutually exclusive */
+#define IFE_ENCODE 1
+#define IFE_DECODE 0
+
+struct tc_ife {
+       tc_gen;
+       __u16 flags;
+};
+
+/*XXX: We need to encode the total number of bytes consumed */
+enum {
+       TCA_IFE_UNSPEC,
+       TCA_IFE_PARMS,
+       TCA_IFE_TM,
+       TCA_IFE_DMAC,
+       TCA_IFE_SMAC,
+       TCA_IFE_TYPE,
+       TCA_IFE_METALST,
+       TCA_IFE_PAD,
+       __TCA_IFE_MAX
+};
+#define TCA_IFE_MAX (__TCA_IFE_MAX - 1)
+
+#endif
diff --git a/include/uapi/linux/tc_act/tc_ipt.h b/include/uapi/linux/tc_act/tc_ipt.h
new file mode 100644 (file)
index 0000000..7c6e155
--- /dev/null
@@ -0,0 +1,22 @@
+#ifndef __LINUX_TC_IPT_H
+#define __LINUX_TC_IPT_H
+
+#include <linux/pkt_cls.h>
+
+#define TCA_ACT_IPT 6
+#define TCA_ACT_XT 10
+
+enum {
+       TCA_IPT_UNSPEC,
+       TCA_IPT_TABLE,
+       TCA_IPT_HOOK,
+       TCA_IPT_INDEX,
+       TCA_IPT_CNT,
+       TCA_IPT_TM,
+       TCA_IPT_TARG,
+       TCA_IPT_PAD,
+       __TCA_IPT_MAX
+};
+#define TCA_IPT_MAX (__TCA_IPT_MAX - 1)
+                                                                                
+#endif
diff --git a/include/uapi/linux/tc_act/tc_mirred.h b/include/uapi/linux/tc_act/tc_mirred.h
new file mode 100644 (file)
index 0000000..3d7a2b3
--- /dev/null
@@ -0,0 +1,28 @@
+#ifndef __LINUX_TC_MIR_H
+#define __LINUX_TC_MIR_H
+
+#include <linux/types.h>
+#include <linux/pkt_cls.h>
+
+#define TCA_ACT_MIRRED 8
+#define TCA_EGRESS_REDIR 1  /* packet redirect to EGRESS*/
+#define TCA_EGRESS_MIRROR 2 /* mirror packet to EGRESS */
+#define TCA_INGRESS_REDIR 3  /* packet redirect to INGRESS*/
+#define TCA_INGRESS_MIRROR 4 /* mirror packet to INGRESS */
+                                                                                
+struct tc_mirred {
+       tc_gen;
+       int                     eaction;   /* one of IN/EGRESS_MIRROR/REDIR */
+       __u32                   ifindex;  /* ifindex of egress port */
+};
+                                                                                
+enum {
+       TCA_MIRRED_UNSPEC,
+       TCA_MIRRED_TM,
+       TCA_MIRRED_PARMS,
+       TCA_MIRRED_PAD,
+       __TCA_MIRRED_MAX
+};
+#define TCA_MIRRED_MAX (__TCA_MIRRED_MAX - 1)
+                                                                                
+#endif
diff --git a/include/uapi/linux/tc_act/tc_nat.h b/include/uapi/linux/tc_act/tc_nat.h
new file mode 100644 (file)
index 0000000..923457c
--- /dev/null
@@ -0,0 +1,28 @@
+#ifndef __LINUX_TC_NAT_H
+#define __LINUX_TC_NAT_H
+
+#include <linux/pkt_cls.h>
+#include <linux/types.h>
+
+#define TCA_ACT_NAT 9
+
+enum {
+       TCA_NAT_UNSPEC,
+       TCA_NAT_PARMS,
+       TCA_NAT_TM,
+       TCA_NAT_PAD,
+       __TCA_NAT_MAX
+};
+#define TCA_NAT_MAX (__TCA_NAT_MAX - 1)
+
+#define TCA_NAT_FLAG_EGRESS 1
+
+struct tc_nat {
+       tc_gen;
+       __be32 old_addr;
+       __be32 new_addr;
+       __be32 mask;
+       __u32 flags;
+};
+
+#endif
diff --git a/include/uapi/linux/tc_act/tc_pedit.h b/include/uapi/linux/tc_act/tc_pedit.h
new file mode 100644 (file)
index 0000000..143d2b3
--- /dev/null
@@ -0,0 +1,66 @@
+#ifndef __LINUX_TC_PED_H
+#define __LINUX_TC_PED_H
+
+#include <linux/types.h>
+#include <linux/pkt_cls.h>
+
+#define TCA_ACT_PEDIT 7
+
+enum {
+       TCA_PEDIT_UNSPEC,
+       TCA_PEDIT_TM,
+       TCA_PEDIT_PARMS,
+       TCA_PEDIT_PAD,
+       TCA_PEDIT_PARMS_EX,
+       TCA_PEDIT_KEYS_EX,
+       TCA_PEDIT_KEY_EX,
+       __TCA_PEDIT_MAX
+};
+#define TCA_PEDIT_MAX (__TCA_PEDIT_MAX - 1)
+                                                                                
+enum {
+       TCA_PEDIT_KEY_EX_HTYPE = 1,
+       TCA_PEDIT_KEY_EX_CMD = 2,
+       __TCA_PEDIT_KEY_EX_MAX
+};
+#define TCA_PEDIT_KEY_EX_MAX (__TCA_PEDIT_KEY_EX_MAX - 1)
+
+ /* TCA_PEDIT_KEY_EX_HDR_TYPE_NETWROK is a special case for legacy users. It
+  * means no specific header type - offset is relative to the network layer
+  */
+enum pedit_header_type {
+       TCA_PEDIT_KEY_EX_HDR_TYPE_NETWORK = 0,
+       TCA_PEDIT_KEY_EX_HDR_TYPE_ETH = 1,
+       TCA_PEDIT_KEY_EX_HDR_TYPE_IP4 = 2,
+       TCA_PEDIT_KEY_EX_HDR_TYPE_IP6 = 3,
+       TCA_PEDIT_KEY_EX_HDR_TYPE_TCP = 4,
+       TCA_PEDIT_KEY_EX_HDR_TYPE_UDP = 5,
+       __PEDIT_HDR_TYPE_MAX,
+};
+#define TCA_PEDIT_HDR_TYPE_MAX (__PEDIT_HDR_TYPE_MAX - 1)
+
+enum pedit_cmd {
+       TCA_PEDIT_KEY_EX_CMD_SET = 0,
+       TCA_PEDIT_KEY_EX_CMD_ADD = 1,
+       __PEDIT_CMD_MAX,
+};
+#define TCA_PEDIT_CMD_MAX (__PEDIT_CMD_MAX - 1)
+
+struct tc_pedit_key {
+       __u32           mask;  /* AND */
+       __u32           val;   /*XOR */
+       __u32           off;  /*offset */
+       __u32           at;
+       __u32           offmask;
+       __u32           shift;
+};
+                                                                                
+struct tc_pedit_sel {
+       tc_gen;
+       unsigned char           nkeys;
+       unsigned char           flags;
+       struct tc_pedit_key     keys[0];
+};
+#define tc_pedit tc_pedit_sel
+
+#endif
diff --git a/include/uapi/linux/tc_act/tc_sample.h b/include/uapi/linux/tc_act/tc_sample.h
new file mode 100644 (file)
index 0000000..edc9058
--- /dev/null
@@ -0,0 +1,26 @@
+#ifndef __LINUX_TC_SAMPLE_H
+#define __LINUX_TC_SAMPLE_H
+
+#include <linux/types.h>
+#include <linux/pkt_cls.h>
+#include <linux/if_ether.h>
+
+#define TCA_ACT_SAMPLE 26
+
+struct tc_sample {
+       tc_gen;
+};
+
+enum {
+       TCA_SAMPLE_UNSPEC,
+       TCA_SAMPLE_TM,
+       TCA_SAMPLE_PARMS,
+       TCA_SAMPLE_RATE,
+       TCA_SAMPLE_TRUNC_SIZE,
+       TCA_SAMPLE_PSAMPLE_GROUP,
+       TCA_SAMPLE_PAD,
+       __TCA_SAMPLE_MAX
+};
+#define TCA_SAMPLE_MAX (__TCA_SAMPLE_MAX - 1)
+
+#endif
diff --git a/include/uapi/linux/tc_act/tc_skbedit.h b/include/uapi/linux/tc_act/tc_skbedit.h
new file mode 100644 (file)
index 0000000..2884425
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+ * Copyright (c) 2008, Intel Corporation.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms and conditions of the GNU General Public License,
+ * version 2, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place - Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * Author: Alexander Duyck <alexander.h.duyck@intel.com>
+ */
+
+#ifndef __LINUX_TC_SKBEDIT_H
+#define __LINUX_TC_SKBEDIT_H
+
+#include <linux/pkt_cls.h>
+
+#define TCA_ACT_SKBEDIT 11
+
+#define SKBEDIT_F_PRIORITY             0x1
+#define SKBEDIT_F_QUEUE_MAPPING                0x2
+#define SKBEDIT_F_MARK                 0x4
+#define SKBEDIT_F_PTYPE                        0x8
+#define SKBEDIT_F_MASK                 0x10
+
+struct tc_skbedit {
+       tc_gen;
+};
+
+enum {
+       TCA_SKBEDIT_UNSPEC,
+       TCA_SKBEDIT_TM,
+       TCA_SKBEDIT_PARMS,
+       TCA_SKBEDIT_PRIORITY,
+       TCA_SKBEDIT_QUEUE_MAPPING,
+       TCA_SKBEDIT_MARK,
+       TCA_SKBEDIT_PAD,
+       TCA_SKBEDIT_PTYPE,
+       TCA_SKBEDIT_MASK,
+       __TCA_SKBEDIT_MAX
+};
+#define TCA_SKBEDIT_MAX (__TCA_SKBEDIT_MAX - 1)
+
+#endif
diff --git a/include/uapi/linux/tc_act/tc_skbmod.h b/include/uapi/linux/tc_act/tc_skbmod.h
new file mode 100644 (file)
index 0000000..10fc07d
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2016, Jamal Hadi Salim
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+*/
+
+#ifndef __LINUX_TC_SKBMOD_H
+#define __LINUX_TC_SKBMOD_H
+
+#include <linux/pkt_cls.h>
+
+#define TCA_ACT_SKBMOD 15
+
+#define SKBMOD_F_DMAC  0x1
+#define SKBMOD_F_SMAC  0x2
+#define SKBMOD_F_ETYPE 0x4
+#define SKBMOD_F_SWAPMAC 0x8
+
+struct tc_skbmod {
+       tc_gen;
+       __u64 flags;
+};
+
+enum {
+       TCA_SKBMOD_UNSPEC,
+       TCA_SKBMOD_TM,
+       TCA_SKBMOD_PARMS,
+       TCA_SKBMOD_DMAC,
+       TCA_SKBMOD_SMAC,
+       TCA_SKBMOD_ETYPE,
+       TCA_SKBMOD_PAD,
+       __TCA_SKBMOD_MAX
+};
+#define TCA_SKBMOD_MAX (__TCA_SKBMOD_MAX - 1)
+
+#endif
diff --git a/include/uapi/linux/tc_act/tc_tunnel_key.h b/include/uapi/linux/tc_act/tc_tunnel_key.h
new file mode 100644 (file)
index 0000000..afcd4be
--- /dev/null
@@ -0,0 +1,43 @@
+/*
+ * Copyright (c) 2016, Amir Vadai <amir@vadai.me>
+ * Copyright (c) 2016, Mellanox Technologies. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ */
+
+#ifndef __LINUX_TC_TUNNEL_KEY_H
+#define __LINUX_TC_TUNNEL_KEY_H
+
+#include <linux/pkt_cls.h>
+
+#define TCA_ACT_TUNNEL_KEY 17
+
+#define TCA_TUNNEL_KEY_ACT_SET     1
+#define TCA_TUNNEL_KEY_ACT_RELEASE  2
+
+struct tc_tunnel_key {
+       tc_gen;
+       int t_action;
+};
+
+enum {
+       TCA_TUNNEL_KEY_UNSPEC,
+       TCA_TUNNEL_KEY_TM,
+       TCA_TUNNEL_KEY_PARMS,
+       TCA_TUNNEL_KEY_ENC_IPV4_SRC,    /* be32 */
+       TCA_TUNNEL_KEY_ENC_IPV4_DST,    /* be32 */
+       TCA_TUNNEL_KEY_ENC_IPV6_SRC,    /* struct in6_addr */
+       TCA_TUNNEL_KEY_ENC_IPV6_DST,    /* struct in6_addr */
+       TCA_TUNNEL_KEY_ENC_KEY_ID,      /* be64 */
+       TCA_TUNNEL_KEY_PAD,
+       TCA_TUNNEL_KEY_ENC_DST_PORT,    /* be16 */
+       TCA_TUNNEL_KEY_NO_CSUM,         /* u8 */
+       __TCA_TUNNEL_KEY_MAX,
+};
+
+#define TCA_TUNNEL_KEY_MAX (__TCA_TUNNEL_KEY_MAX - 1)
+
+#endif
diff --git a/include/uapi/linux/tc_act/tc_vlan.h b/include/uapi/linux/tc_act/tc_vlan.h
new file mode 100644 (file)
index 0000000..bddb272
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2014 Jiri Pirko <jiri@resnulli.us>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ */
+
+#ifndef __LINUX_TC_VLAN_H
+#define __LINUX_TC_VLAN_H
+
+#include <linux/pkt_cls.h>
+
+#define TCA_ACT_VLAN 12
+
+#define TCA_VLAN_ACT_POP       1
+#define TCA_VLAN_ACT_PUSH      2
+#define TCA_VLAN_ACT_MODIFY    3
+
+struct tc_vlan {
+       tc_gen;
+       int v_action;
+};
+
+enum {
+       TCA_VLAN_UNSPEC,
+       TCA_VLAN_TM,
+       TCA_VLAN_PARMS,
+       TCA_VLAN_PUSH_VLAN_ID,
+       TCA_VLAN_PUSH_VLAN_PROTOCOL,
+       TCA_VLAN_PAD,
+       TCA_VLAN_PUSH_VLAN_PRIORITY,
+       __TCA_VLAN_MAX,
+};
+#define TCA_VLAN_MAX (__TCA_VLAN_MAX - 1)
+
+#endif
diff --git a/include/uapi/linux/tc_ematch/tc_em_cmp.h b/include/uapi/linux/tc_ematch/tc_em_cmp.h
new file mode 100644 (file)
index 0000000..f34bb1b
--- /dev/null
@@ -0,0 +1,25 @@
+#ifndef __LINUX_TC_EM_CMP_H
+#define __LINUX_TC_EM_CMP_H
+
+#include <linux/types.h>
+#include <linux/pkt_cls.h>
+
+struct tcf_em_cmp {
+       __u32           val;
+       __u32           mask;
+       __u16           off;
+       __u8            align:4;
+       __u8            flags:4;
+       __u8            layer:4;
+       __u8            opnd:4;
+};
+
+enum {
+       TCF_EM_ALIGN_U8  = 1,
+       TCF_EM_ALIGN_U16 = 2,
+       TCF_EM_ALIGN_U32 = 4
+};
+
+#define TCF_EM_CMP_TRANS       1
+
+#endif
diff --git a/include/uapi/linux/tc_ematch/tc_em_meta.h b/include/uapi/linux/tc_ematch/tc_em_meta.h
new file mode 100644 (file)
index 0000000..b11f8ce
--- /dev/null
@@ -0,0 +1,92 @@
+#ifndef __LINUX_TC_EM_META_H
+#define __LINUX_TC_EM_META_H
+
+#include <linux/types.h>
+#include <linux/pkt_cls.h>
+
+enum {
+       TCA_EM_META_UNSPEC,
+       TCA_EM_META_HDR,
+       TCA_EM_META_LVALUE,
+       TCA_EM_META_RVALUE,
+       __TCA_EM_META_MAX
+};
+#define TCA_EM_META_MAX (__TCA_EM_META_MAX - 1)
+
+struct tcf_meta_val {
+       __u16                   kind;
+       __u8                    shift;
+       __u8                    op;
+};
+
+#define TCF_META_TYPE_MASK     (0xf << 12)
+#define TCF_META_TYPE(kind)    (((kind) & TCF_META_TYPE_MASK) >> 12)
+#define TCF_META_ID_MASK       0x7ff
+#define TCF_META_ID(kind)      ((kind) & TCF_META_ID_MASK)
+
+enum {
+       TCF_META_TYPE_VAR,
+       TCF_META_TYPE_INT,
+       __TCF_META_TYPE_MAX
+};
+#define TCF_META_TYPE_MAX (__TCF_META_TYPE_MAX - 1)
+
+enum {
+       TCF_META_ID_VALUE,
+       TCF_META_ID_RANDOM,
+       TCF_META_ID_LOADAVG_0,
+       TCF_META_ID_LOADAVG_1,
+       TCF_META_ID_LOADAVG_2,
+       TCF_META_ID_DEV,
+       TCF_META_ID_PRIORITY,
+       TCF_META_ID_PROTOCOL,
+       TCF_META_ID_PKTTYPE,
+       TCF_META_ID_PKTLEN,
+       TCF_META_ID_DATALEN,
+       TCF_META_ID_MACLEN,
+       TCF_META_ID_NFMARK,
+       TCF_META_ID_TCINDEX,
+       TCF_META_ID_RTCLASSID,
+       TCF_META_ID_RTIIF,
+       TCF_META_ID_SK_FAMILY,
+       TCF_META_ID_SK_STATE,
+       TCF_META_ID_SK_REUSE,
+       TCF_META_ID_SK_BOUND_IF,
+       TCF_META_ID_SK_REFCNT,
+       TCF_META_ID_SK_SHUTDOWN,
+       TCF_META_ID_SK_PROTO,
+       TCF_META_ID_SK_TYPE,
+       TCF_META_ID_SK_RCVBUF,
+       TCF_META_ID_SK_RMEM_ALLOC,
+       TCF_META_ID_SK_WMEM_ALLOC,
+       TCF_META_ID_SK_OMEM_ALLOC,
+       TCF_META_ID_SK_WMEM_QUEUED,
+       TCF_META_ID_SK_RCV_QLEN,
+       TCF_META_ID_SK_SND_QLEN,
+       TCF_META_ID_SK_ERR_QLEN,
+       TCF_META_ID_SK_FORWARD_ALLOCS,
+       TCF_META_ID_SK_SNDBUF,
+       TCF_META_ID_SK_ALLOCS,
+       __TCF_META_ID_SK_ROUTE_CAPS,    /* unimplemented but in ABI already */
+       TCF_META_ID_SK_HASH,
+       TCF_META_ID_SK_LINGERTIME,
+       TCF_META_ID_SK_ACK_BACKLOG,
+       TCF_META_ID_SK_MAX_ACK_BACKLOG,
+       TCF_META_ID_SK_PRIO,
+       TCF_META_ID_SK_RCVLOWAT,
+       TCF_META_ID_SK_RCVTIMEO,
+       TCF_META_ID_SK_SNDTIMEO,
+       TCF_META_ID_SK_SENDMSG_OFF,
+       TCF_META_ID_SK_WRITE_PENDING,
+       TCF_META_ID_VLAN_TAG,
+       TCF_META_ID_RXHASH,
+       __TCF_META_ID_MAX
+};
+#define TCF_META_ID_MAX (__TCF_META_ID_MAX - 1)
+
+struct tcf_meta_hdr {
+       struct tcf_meta_val     left;
+       struct tcf_meta_val     right;
+};
+
+#endif
diff --git a/include/uapi/linux/tc_ematch/tc_em_nbyte.h b/include/uapi/linux/tc_ematch/tc_em_nbyte.h
new file mode 100644 (file)
index 0000000..7172cfb
--- /dev/null
@@ -0,0 +1,13 @@
+#ifndef __LINUX_TC_EM_NBYTE_H
+#define __LINUX_TC_EM_NBYTE_H
+
+#include <linux/types.h>
+#include <linux/pkt_cls.h>
+
+struct tcf_em_nbyte {
+       __u16           off;
+       __u16           len:12;
+       __u8            layer:4;
+};
+
+#endif
diff --git a/include/uapi/linux/tcp.h b/include/uapi/linux/tcp.h
new file mode 100644 (file)
index 0000000..8edad3f
--- /dev/null
@@ -0,0 +1,268 @@
+/*
+ * INET                An implementation of the TCP/IP protocol suite for the LINUX
+ *             operating system.  INET is implemented using the  BSD Socket
+ *             interface as the means of communication with the user level.
+ *
+ *             Definitions for the TCP protocol.
+ *
+ * Version:    @(#)tcp.h       1.0.2   04/28/93
+ *
+ * Author:     Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
+ *
+ *             This program is free software; you can redistribute it and/or
+ *             modify it under the terms of the GNU General Public License
+ *             as published by the Free Software Foundation; either version
+ *             2 of the License, or (at your option) any later version.
+ */
+#ifndef _LINUX_TCP_H
+#define _LINUX_TCP_H
+
+#include <linux/types.h>
+#include <asm/byteorder.h>
+#include <linux/socket.h>
+
+struct tcphdr {
+       __be16  source;
+       __be16  dest;
+       __be32  seq;
+       __be32  ack_seq;
+#if defined(__LITTLE_ENDIAN_BITFIELD)
+       __u16   res1:4,
+               doff:4,
+               fin:1,
+               syn:1,
+               rst:1,
+               psh:1,
+               ack:1,
+               urg:1,
+               ece:1,
+               cwr:1;
+#elif defined(__BIG_ENDIAN_BITFIELD)
+       __u16   doff:4,
+               res1:4,
+               cwr:1,
+               ece:1,
+               urg:1,
+               ack:1,
+               psh:1,
+               rst:1,
+               syn:1,
+               fin:1;
+#else
+#error "Adjust your <asm/byteorder.h> defines"
+#endif 
+       __be16  window;
+       __sum16 check;
+       __be16  urg_ptr;
+};
+
+/*
+ *     The union cast uses a gcc extension to avoid aliasing problems
+ *  (union is compatible to any of its members)
+ *  This means this part of the code is -fstrict-aliasing safe now.
+ */
+union tcp_word_hdr { 
+       struct tcphdr hdr;
+       __be32            words[5];
+}; 
+
+#define tcp_flag_word(tp) ( ((union tcp_word_hdr *)(tp))->words [3]) 
+
+enum { 
+       TCP_FLAG_CWR = __constant_cpu_to_be32(0x00800000),
+       TCP_FLAG_ECE = __constant_cpu_to_be32(0x00400000),
+       TCP_FLAG_URG = __constant_cpu_to_be32(0x00200000),
+       TCP_FLAG_ACK = __constant_cpu_to_be32(0x00100000),
+       TCP_FLAG_PSH = __constant_cpu_to_be32(0x00080000),
+       TCP_FLAG_RST = __constant_cpu_to_be32(0x00040000),
+       TCP_FLAG_SYN = __constant_cpu_to_be32(0x00020000),
+       TCP_FLAG_FIN = __constant_cpu_to_be32(0x00010000),
+       TCP_RESERVED_BITS = __constant_cpu_to_be32(0x0F000000),
+       TCP_DATA_OFFSET = __constant_cpu_to_be32(0xF0000000)
+}; 
+
+/*
+ * TCP general constants
+ */
+#define TCP_MSS_DEFAULT                 536U   /* IPv4 (RFC1122, RFC2581) */
+#define TCP_MSS_DESIRED                1220U   /* IPv6 (tunneled), EDNS0 (RFC3226) */
+
+/* TCP socket options */
+#define TCP_NODELAY            1       /* Turn off Nagle's algorithm. */
+#define TCP_MAXSEG             2       /* Limit MSS */
+#define TCP_CORK               3       /* Never send partially complete segments */
+#define TCP_KEEPIDLE           4       /* Start keeplives after this period */
+#define TCP_KEEPINTVL          5       /* Interval between keepalives */
+#define TCP_KEEPCNT            6       /* Number of keepalives before death */
+#define TCP_SYNCNT             7       /* Number of SYN retransmits */
+#define TCP_LINGER2            8       /* Life time of orphaned FIN-WAIT-2 state */
+#define TCP_DEFER_ACCEPT       9       /* Wake up listener only when data arrive */
+#define TCP_WINDOW_CLAMP       10      /* Bound advertised window */
+#define TCP_INFO               11      /* Information about this connection. */
+#define TCP_QUICKACK           12      /* Block/reenable quick acks */
+#define TCP_CONGESTION         13      /* Congestion control algorithm */
+#define TCP_MD5SIG             14      /* TCP MD5 Signature (RFC2385) */
+#define TCP_THIN_LINEAR_TIMEOUTS 16      /* Use linear timeouts for thin streams*/
+#define TCP_THIN_DUPACK         17      /* Fast retrans. after 1 dupack */
+#define TCP_USER_TIMEOUT       18      /* How long for loss retry before timeout */
+#define TCP_REPAIR             19      /* TCP sock is under repair right now */
+#define TCP_REPAIR_QUEUE       20
+#define TCP_QUEUE_SEQ          21
+#define TCP_REPAIR_OPTIONS     22
+#define TCP_FASTOPEN           23      /* Enable FastOpen on listeners */
+#define TCP_TIMESTAMP          24
+#define TCP_NOTSENT_LOWAT      25      /* limit number of unsent bytes in write queue */
+#define TCP_CC_INFO            26      /* Get Congestion Control (optional) info */
+#define TCP_SAVE_SYN           27      /* Record SYN headers for new connections */
+#define TCP_SAVED_SYN          28      /* Get SYN headers recorded for connection */
+#define TCP_REPAIR_WINDOW      29      /* Get/set window parameters */
+#define TCP_FASTOPEN_CONNECT   30      /* Attempt FastOpen with connect */
+#define TCP_ULP                        31      /* Attach a ULP to a TCP connection */
+#define TCP_MD5SIG_EXT         32      /* TCP MD5 Signature with extensions */
+
+struct tcp_repair_opt {
+       __u32   opt_code;
+       __u32   opt_val;
+};
+
+struct tcp_repair_window {
+       __u32   snd_wl1;
+       __u32   snd_wnd;
+       __u32   max_window;
+
+       __u32   rcv_wnd;
+       __u32   rcv_wup;
+};
+
+enum {
+       TCP_NO_QUEUE,
+       TCP_RECV_QUEUE,
+       TCP_SEND_QUEUE,
+       TCP_QUEUES_NR,
+};
+
+/* for TCP_INFO socket option */
+#define TCPI_OPT_TIMESTAMPS    1
+#define TCPI_OPT_SACK          2
+#define TCPI_OPT_WSCALE                4
+#define TCPI_OPT_ECN           8 /* ECN was negociated at TCP session init */
+#define TCPI_OPT_ECN_SEEN      16 /* we received at least one packet with ECT */
+#define TCPI_OPT_SYN_DATA      32 /* SYN-ACK acked data in SYN sent or rcvd */
+
+enum tcp_ca_state {
+       TCP_CA_Open = 0,
+#define TCPF_CA_Open   (1<<TCP_CA_Open)
+       TCP_CA_Disorder = 1,
+#define TCPF_CA_Disorder (1<<TCP_CA_Disorder)
+       TCP_CA_CWR = 2,
+#define TCPF_CA_CWR    (1<<TCP_CA_CWR)
+       TCP_CA_Recovery = 3,
+#define TCPF_CA_Recovery (1<<TCP_CA_Recovery)
+       TCP_CA_Loss = 4
+#define TCPF_CA_Loss   (1<<TCP_CA_Loss)
+};
+
+struct tcp_info {
+       __u8    tcpi_state;
+       __u8    tcpi_ca_state;
+       __u8    tcpi_retransmits;
+       __u8    tcpi_probes;
+       __u8    tcpi_backoff;
+       __u8    tcpi_options;
+       __u8    tcpi_snd_wscale : 4, tcpi_rcv_wscale : 4;
+       __u8    tcpi_delivery_rate_app_limited:1;
+
+       __u32   tcpi_rto;
+       __u32   tcpi_ato;
+       __u32   tcpi_snd_mss;
+       __u32   tcpi_rcv_mss;
+
+       __u32   tcpi_unacked;
+       __u32   tcpi_sacked;
+       __u32   tcpi_lost;
+       __u32   tcpi_retrans;
+       __u32   tcpi_fackets;
+
+       /* Times. */
+       __u32   tcpi_last_data_sent;
+       __u32   tcpi_last_ack_sent;     /* Not remembered, sorry. */
+       __u32   tcpi_last_data_recv;
+       __u32   tcpi_last_ack_recv;
+
+       /* Metrics. */
+       __u32   tcpi_pmtu;
+       __u32   tcpi_rcv_ssthresh;
+       __u32   tcpi_rtt;
+       __u32   tcpi_rttvar;
+       __u32   tcpi_snd_ssthresh;
+       __u32   tcpi_snd_cwnd;
+       __u32   tcpi_advmss;
+       __u32   tcpi_reordering;
+
+       __u32   tcpi_rcv_rtt;
+       __u32   tcpi_rcv_space;
+
+       __u32   tcpi_total_retrans;
+
+       __u64   tcpi_pacing_rate;
+       __u64   tcpi_max_pacing_rate;
+       __u64   tcpi_bytes_acked;    /* RFC4898 tcpEStatsAppHCThruOctetsAcked */
+       __u64   tcpi_bytes_received; /* RFC4898 tcpEStatsAppHCThruOctetsReceived */
+       __u32   tcpi_segs_out;       /* RFC4898 tcpEStatsPerfSegsOut */
+       __u32   tcpi_segs_in;        /* RFC4898 tcpEStatsPerfSegsIn */
+
+       __u32   tcpi_notsent_bytes;
+       __u32   tcpi_min_rtt;
+       __u32   tcpi_data_segs_in;      /* RFC4898 tcpEStatsDataSegsIn */
+       __u32   tcpi_data_segs_out;     /* RFC4898 tcpEStatsDataSegsOut */
+
+       __u64   tcpi_delivery_rate;
+
+       __u64   tcpi_busy_time;      /* Time (usec) busy sending data */
+       __u64   tcpi_rwnd_limited;   /* Time (usec) limited by receive window */
+       __u64   tcpi_sndbuf_limited; /* Time (usec) limited by send buffer */
+};
+
+/* netlink attributes types for SCM_TIMESTAMPING_OPT_STATS */
+enum {
+       TCP_NLA_PAD,
+       TCP_NLA_BUSY,           /* Time (usec) busy sending data */
+       TCP_NLA_RWND_LIMITED,   /* Time (usec) limited by receive window */
+       TCP_NLA_SNDBUF_LIMITED, /* Time (usec) limited by send buffer */
+       TCP_NLA_DATA_SEGS_OUT,  /* Data pkts sent including retransmission */
+       TCP_NLA_TOTAL_RETRANS,  /* Data pkts retransmitted */
+       TCP_NLA_PACING_RATE,    /* Pacing rate in bytes per second */
+       TCP_NLA_DELIVERY_RATE,  /* Delivery rate in bytes per second */
+       TCP_NLA_SND_CWND,       /* Sending congestion window */
+       TCP_NLA_REORDERING,     /* Reordering metric */
+       TCP_NLA_MIN_RTT,        /* minimum RTT */
+       TCP_NLA_RECUR_RETRANS,  /* Recurring retransmits for the current pkt */
+       TCP_NLA_DELIVERY_RATE_APP_LMT, /* delivery rate application limited ? */
+
+};
+
+/* for TCP_MD5SIG socket option */
+#define TCP_MD5SIG_MAXKEYLEN   80
+
+/* tcp_md5sig extension flags for TCP_MD5SIG_EXT */
+#define TCP_MD5SIG_FLAG_PREFIX         1       /* address prefix length */
+
+struct tcp_md5sig {
+       struct __kernel_sockaddr_storage tcpm_addr;     /* address associated */
+       __u8    tcpm_flags;                             /* extension flags */
+       __u8    tcpm_prefixlen;                         /* address prefix */
+       __u16   tcpm_keylen;                            /* key length */
+       __u32   __tcpm_pad;                             /* zero */
+       __u8    tcpm_key[TCP_MD5SIG_MAXKEYLEN];         /* key (binary) */
+};
+
+/* INET_DIAG_MD5SIG */
+struct tcp_diag_md5sig {
+       __u8    tcpm_family;
+       __u8    tcpm_prefixlen;
+       __u16   tcpm_keylen;
+       __be32  tcpm_addr[4];
+       __u8    tcpm_key[TCP_MD5SIG_MAXKEYLEN];
+};
+
+#endif /* _LINUX_TCP_H */
diff --git a/include/uapi/linux/tcp_metrics.h b/include/uapi/linux/tcp_metrics.h
new file mode 100644 (file)
index 0000000..80ad90d
--- /dev/null
@@ -0,0 +1,60 @@
+/* tcp_metrics.h - TCP Metrics Interface */
+
+#ifndef _LINUX_TCP_METRICS_H
+#define _LINUX_TCP_METRICS_H
+
+#include <linux/types.h>
+
+/* NETLINK_GENERIC related info
+ */
+#define TCP_METRICS_GENL_NAME          "tcp_metrics"
+#define TCP_METRICS_GENL_VERSION       0x1
+
+enum tcp_metric_index {
+       TCP_METRIC_RTT,         /* in ms units */
+       TCP_METRIC_RTTVAR,      /* in ms units */
+       TCP_METRIC_SSTHRESH,
+       TCP_METRIC_CWND,
+       TCP_METRIC_REORDERING,
+
+       TCP_METRIC_RTT_US,      /* in usec units */
+       TCP_METRIC_RTTVAR_US,   /* in usec units */
+
+       /* Always last.  */
+       __TCP_METRIC_MAX,
+};
+
+#define TCP_METRIC_MAX (__TCP_METRIC_MAX - 1)
+
+enum {
+       TCP_METRICS_ATTR_UNSPEC,
+       TCP_METRICS_ATTR_ADDR_IPV4,             /* u32 */
+       TCP_METRICS_ATTR_ADDR_IPV6,             /* binary */
+       TCP_METRICS_ATTR_AGE,                   /* msecs */
+       TCP_METRICS_ATTR_TW_TSVAL,              /* u32, raw, rcv tsval */
+       TCP_METRICS_ATTR_TW_TS_STAMP,           /* s32, sec age */
+       TCP_METRICS_ATTR_VALS,                  /* nested +1, u32 */
+       TCP_METRICS_ATTR_FOPEN_MSS,             /* u16 */
+       TCP_METRICS_ATTR_FOPEN_SYN_DROPS,       /* u16, count of drops */
+       TCP_METRICS_ATTR_FOPEN_SYN_DROP_TS,     /* msecs age */
+       TCP_METRICS_ATTR_FOPEN_COOKIE,          /* binary */
+       TCP_METRICS_ATTR_SADDR_IPV4,            /* u32 */
+       TCP_METRICS_ATTR_SADDR_IPV6,            /* binary */
+       TCP_METRICS_ATTR_PAD,
+
+       __TCP_METRICS_ATTR_MAX,
+};
+
+#define TCP_METRICS_ATTR_MAX   (__TCP_METRICS_ATTR_MAX - 1)
+
+enum {
+       TCP_METRICS_CMD_UNSPEC,
+       TCP_METRICS_CMD_GET,
+       TCP_METRICS_CMD_DEL,
+
+       __TCP_METRICS_CMD_MAX,
+};
+
+#define TCP_METRICS_CMD_MAX    (__TCP_METRICS_CMD_MAX - 1)
+
+#endif /* _LINUX_TCP_METRICS_H */
diff --git a/include/uapi/linux/tipc.h b/include/uapi/linux/tipc.h
new file mode 100644 (file)
index 0000000..924fb5c
--- /dev/null
@@ -0,0 +1,256 @@
+/*
+ * include/uapi/linux/tipc.h: Header for TIPC socket interface
+ *
+ * Copyright (c) 2003-2006, 2015-2016 Ericsson AB
+ * Copyright (c) 2005, 2010-2011, Wind River Systems
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the names of the copyright holders nor the names of its
+ *    contributors may be used to endorse or promote products derived from
+ *    this software without specific prior written permission.
+ *
+ * Alternatively, this software may be distributed under the terms of the
+ * GNU General Public License ("GPL") version 2 as published by the Free
+ * Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef _LINUX_TIPC_H_
+#define _LINUX_TIPC_H_
+
+#include <linux/types.h>
+#include <linux/sockios.h>
+
+/*
+ * TIPC addressing primitives
+ */
+
+struct tipc_portid {
+       __u32 ref;
+       __u32 node;
+};
+
+struct tipc_name {
+       __u32 type;
+       __u32 instance;
+};
+
+struct tipc_name_seq {
+       __u32 type;
+       __u32 lower;
+       __u32 upper;
+};
+
+/* TIPC Address Size, Offset, Mask specification for Z.C.N
+ */
+#define TIPC_NODE_BITS          12
+#define TIPC_CLUSTER_BITS       12
+#define TIPC_ZONE_BITS          8
+
+#define TIPC_NODE_OFFSET        0
+#define TIPC_CLUSTER_OFFSET     TIPC_NODE_BITS
+#define TIPC_ZONE_OFFSET        (TIPC_CLUSTER_OFFSET + TIPC_CLUSTER_BITS)
+
+#define TIPC_NODE_SIZE          ((1UL << TIPC_NODE_BITS) - 1)
+#define TIPC_CLUSTER_SIZE       ((1UL << TIPC_CLUSTER_BITS) - 1)
+#define TIPC_ZONE_SIZE          ((1UL << TIPC_ZONE_BITS) - 1)
+
+#define TIPC_NODE_MASK         (TIPC_NODE_SIZE << TIPC_NODE_OFFSET)
+#define TIPC_CLUSTER_MASK      (TIPC_CLUSTER_SIZE << TIPC_CLUSTER_OFFSET)
+#define TIPC_ZONE_MASK         (TIPC_ZONE_SIZE << TIPC_ZONE_OFFSET)
+
+#define TIPC_ZONE_CLUSTER_MASK (TIPC_ZONE_MASK | TIPC_CLUSTER_MASK)
+
+static __inline__ __u32 tipc_addr(unsigned int zone,
+                             unsigned int cluster,
+                             unsigned int node)
+{
+       return (zone << TIPC_ZONE_OFFSET) |
+               (cluster << TIPC_CLUSTER_OFFSET) |
+               node;
+}
+
+static __inline__ unsigned int tipc_zone(__u32 addr)
+{
+       return addr >> TIPC_ZONE_OFFSET;
+}
+
+static __inline__ unsigned int tipc_cluster(__u32 addr)
+{
+       return (addr & TIPC_CLUSTER_MASK) >> TIPC_CLUSTER_OFFSET;
+}
+
+static __inline__ unsigned int tipc_node(__u32 addr)
+{
+       return addr & TIPC_NODE_MASK;
+}
+
+/*
+ * Application-accessible port name types
+ */
+
+#define TIPC_CFG_SRV           0       /* configuration service name type */
+#define TIPC_TOP_SRV           1       /* topology service name type */
+#define TIPC_LINK_STATE                2       /* link state name type */
+#define TIPC_RESERVED_TYPES    64      /* lowest user-publishable name type */
+
+/*
+ * Publication scopes when binding port names and port name sequences
+ */
+
+#define TIPC_ZONE_SCOPE                1
+#define TIPC_CLUSTER_SCOPE     2
+#define TIPC_NODE_SCOPE                3
+
+/*
+ * Limiting values for messages
+ */
+
+#define TIPC_MAX_USER_MSG_SIZE 66000U
+
+/*
+ * Message importance levels
+ */
+
+#define TIPC_LOW_IMPORTANCE            0
+#define TIPC_MEDIUM_IMPORTANCE         1
+#define TIPC_HIGH_IMPORTANCE           2
+#define TIPC_CRITICAL_IMPORTANCE       3
+
+/*
+ * Msg rejection/connection shutdown reasons
+ */
+
+#define TIPC_OK                        0
+#define TIPC_ERR_NO_NAME       1
+#define TIPC_ERR_NO_PORT       2
+#define TIPC_ERR_NO_NODE       3
+#define TIPC_ERR_OVERLOAD      4
+#define TIPC_CONN_SHUTDOWN     5
+
+/*
+ * TIPC topology subscription service definitions
+ */
+
+#define TIPC_SUB_PORTS         0x01    /* filter for port availability */
+#define TIPC_SUB_SERVICE       0x02    /* filter for service availability */
+#define TIPC_SUB_CANCEL                0x04    /* cancel a subscription */
+
+#define TIPC_WAIT_FOREVER      (~0)    /* timeout for permanent subscription */
+
+struct tipc_subscr {
+       struct tipc_name_seq seq;       /* name sequence of interest */
+       __u32 timeout;                  /* subscription duration (in ms) */
+       __u32 filter;                   /* bitmask of filter options */
+       char usr_handle[8];             /* available for subscriber use */
+};
+
+#define TIPC_PUBLISHED         1       /* publication event */
+#define TIPC_WITHDRAWN         2       /* withdraw event */
+#define TIPC_SUBSCR_TIMEOUT    3       /* subscription timeout event */
+
+struct tipc_event {
+       __u32 event;                    /* event type */
+       __u32 found_lower;              /* matching name seq instances */
+       __u32 found_upper;              /*    "      "    "     "      */
+       struct tipc_portid port;        /* associated port */
+       struct tipc_subscr s;           /* associated subscription */
+};
+
+/*
+ * Socket API
+ */
+
+#ifndef AF_TIPC
+#define AF_TIPC                30
+#endif
+
+#ifndef PF_TIPC
+#define PF_TIPC                AF_TIPC
+#endif
+
+#ifndef SOL_TIPC
+#define SOL_TIPC       271
+#endif
+
+#define TIPC_ADDR_NAMESEQ      1
+#define TIPC_ADDR_MCAST                1
+#define TIPC_ADDR_NAME         2
+#define TIPC_ADDR_ID           3
+
+struct sockaddr_tipc {
+       unsigned short family;
+       unsigned char  addrtype;
+       signed   char  scope;
+       union {
+               struct tipc_portid id;
+               struct tipc_name_seq nameseq;
+               struct {
+                       struct tipc_name name;
+                       __u32 domain;
+               } name;
+       } addr;
+};
+
+/*
+ * Ancillary data objects supported by recvmsg()
+ */
+
+#define TIPC_ERRINFO   1       /* error info */
+#define TIPC_RETDATA   2       /* returned data */
+#define TIPC_DESTNAME  3       /* destination name */
+
+/*
+ * TIPC-specific socket option names
+ */
+
+#define TIPC_IMPORTANCE                127     /* Default: TIPC_LOW_IMPORTANCE */
+#define TIPC_SRC_DROPPABLE     128     /* Default: based on socket type */
+#define TIPC_DEST_DROPPABLE    129     /* Default: based on socket type */
+#define TIPC_CONN_TIMEOUT      130     /* Default: 8000 (ms)  */
+#define TIPC_NODE_RECVQ_DEPTH  131     /* Default: none (read only) */
+#define TIPC_SOCK_RECVQ_DEPTH  132     /* Default: none (read only) */
+#define TIPC_MCAST_BROADCAST    133     /* Default: TIPC selects. No arg */
+#define TIPC_MCAST_REPLICAST    134     /* Default: TIPC selects. No arg */
+
+/*
+ * Maximum sizes of TIPC bearer-related names (including terminating NULL)
+ * The string formatting for each name element is:
+ * media: media
+ * interface: media:interface name
+ * link: Z.C.N:interface-Z.C.N:interface
+ *
+ */
+
+#define TIPC_MAX_MEDIA_NAME    16
+#define TIPC_MAX_IF_NAME       16
+#define TIPC_MAX_BEARER_NAME   32
+#define TIPC_MAX_LINK_NAME     60
+
+#define SIOCGETLINKNAME                SIOCPROTOPRIVATE
+
+struct tipc_sioc_ln_req {
+       __u32 peer;
+       __u32 bearer_id;
+       char linkname[TIPC_MAX_LINK_NAME];
+};
+#endif
diff --git a/include/uapi/linux/tipc_netlink.h b/include/uapi/linux/tipc_netlink.h
new file mode 100644 (file)
index 0000000..f9edd20
--- /dev/null
@@ -0,0 +1,294 @@
+/*
+ * Copyright (c) 2014, Ericsson AB
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the names of the copyright holders nor the names of its
+ *    contributors may be used to endorse or promote products derived from
+ *    this software without specific prior written permission.
+ *
+ * Alternatively, this software may be distributed under the terms of the
+ * GNU General Public License ("GPL") version 2 as published by the Free
+ * Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef _LINUX_TIPC_NETLINK_H_
+#define _LINUX_TIPC_NETLINK_H_
+
+#define TIPC_GENL_V2_NAME      "TIPCv2"
+#define TIPC_GENL_V2_VERSION   0x1
+
+/* Netlink commands */
+enum {
+       TIPC_NL_UNSPEC,
+       TIPC_NL_LEGACY,
+       TIPC_NL_BEARER_DISABLE,
+       TIPC_NL_BEARER_ENABLE,
+       TIPC_NL_BEARER_GET,
+       TIPC_NL_BEARER_SET,
+       TIPC_NL_SOCK_GET,
+       TIPC_NL_PUBL_GET,
+       TIPC_NL_LINK_GET,
+       TIPC_NL_LINK_SET,
+       TIPC_NL_LINK_RESET_STATS,
+       TIPC_NL_MEDIA_GET,
+       TIPC_NL_MEDIA_SET,
+       TIPC_NL_NODE_GET,
+       TIPC_NL_NET_GET,
+       TIPC_NL_NET_SET,
+       TIPC_NL_NAME_TABLE_GET,
+       TIPC_NL_MON_SET,
+       TIPC_NL_MON_GET,
+       TIPC_NL_MON_PEER_GET,
+       TIPC_NL_PEER_REMOVE,
+       TIPC_NL_BEARER_ADD,
+       TIPC_NL_UDP_GET_REMOTEIP,
+
+       __TIPC_NL_CMD_MAX,
+       TIPC_NL_CMD_MAX = __TIPC_NL_CMD_MAX - 1
+};
+
+/* Top level netlink attributes */
+enum {
+       TIPC_NLA_UNSPEC,
+       TIPC_NLA_BEARER,                /* nest */
+       TIPC_NLA_SOCK,                  /* nest */
+       TIPC_NLA_PUBL,                  /* nest */
+       TIPC_NLA_LINK,                  /* nest */
+       TIPC_NLA_MEDIA,                 /* nest */
+       TIPC_NLA_NODE,                  /* nest */
+       TIPC_NLA_NET,                   /* nest */
+       TIPC_NLA_NAME_TABLE,            /* nest */
+       TIPC_NLA_MON,                   /* nest */
+       TIPC_NLA_MON_PEER,              /* nest */
+
+       __TIPC_NLA_MAX,
+       TIPC_NLA_MAX = __TIPC_NLA_MAX - 1
+};
+
+/* Bearer info */
+enum {
+       TIPC_NLA_BEARER_UNSPEC,
+       TIPC_NLA_BEARER_NAME,           /* string */
+       TIPC_NLA_BEARER_PROP,           /* nest */
+       TIPC_NLA_BEARER_DOMAIN,         /* u32 */
+       TIPC_NLA_BEARER_UDP_OPTS,       /* nest */
+
+       __TIPC_NLA_BEARER_MAX,
+       TIPC_NLA_BEARER_MAX = __TIPC_NLA_BEARER_MAX - 1
+};
+
+enum {
+       TIPC_NLA_UDP_UNSPEC,
+       TIPC_NLA_UDP_LOCAL,             /* sockaddr_storage */
+       TIPC_NLA_UDP_REMOTE,            /* sockaddr_storage */
+       TIPC_NLA_UDP_MULTI_REMOTEIP,    /* flag */
+
+       __TIPC_NLA_UDP_MAX,
+       TIPC_NLA_UDP_MAX = __TIPC_NLA_UDP_MAX - 1
+};
+/* Socket info */
+enum {
+       TIPC_NLA_SOCK_UNSPEC,
+       TIPC_NLA_SOCK_ADDR,             /* u32 */
+       TIPC_NLA_SOCK_REF,              /* u32 */
+       TIPC_NLA_SOCK_CON,              /* nest */
+       TIPC_NLA_SOCK_HAS_PUBL,         /* flag */
+
+       __TIPC_NLA_SOCK_MAX,
+       TIPC_NLA_SOCK_MAX = __TIPC_NLA_SOCK_MAX - 1
+};
+
+/* Link info */
+enum {
+       TIPC_NLA_LINK_UNSPEC,
+       TIPC_NLA_LINK_NAME,             /* string */
+       TIPC_NLA_LINK_DEST,             /* u32 */
+       TIPC_NLA_LINK_MTU,              /* u32 */
+       TIPC_NLA_LINK_BROADCAST,        /* flag */
+       TIPC_NLA_LINK_UP,               /* flag */
+       TIPC_NLA_LINK_ACTIVE,           /* flag */
+       TIPC_NLA_LINK_PROP,             /* nest */
+       TIPC_NLA_LINK_STATS,            /* nest */
+       TIPC_NLA_LINK_RX,               /* u32 */
+       TIPC_NLA_LINK_TX,               /* u32 */
+
+       __TIPC_NLA_LINK_MAX,
+       TIPC_NLA_LINK_MAX = __TIPC_NLA_LINK_MAX - 1
+};
+
+/* Media info */
+enum {
+       TIPC_NLA_MEDIA_UNSPEC,
+       TIPC_NLA_MEDIA_NAME,            /* string */
+       TIPC_NLA_MEDIA_PROP,            /* nest */
+
+       __TIPC_NLA_MEDIA_MAX,
+       TIPC_NLA_MEDIA_MAX = __TIPC_NLA_MEDIA_MAX - 1
+};
+
+/* Node info */
+enum {
+       TIPC_NLA_NODE_UNSPEC,
+       TIPC_NLA_NODE_ADDR,             /* u32 */
+       TIPC_NLA_NODE_UP,               /* flag */
+
+       __TIPC_NLA_NODE_MAX,
+       TIPC_NLA_NODE_MAX = __TIPC_NLA_NODE_MAX - 1
+};
+
+/* Net info */
+enum {
+       TIPC_NLA_NET_UNSPEC,
+       TIPC_NLA_NET_ID,                /* u32 */
+       TIPC_NLA_NET_ADDR,              /* u32 */
+
+       __TIPC_NLA_NET_MAX,
+       TIPC_NLA_NET_MAX = __TIPC_NLA_NET_MAX - 1
+};
+
+/* Name table info */
+enum {
+       TIPC_NLA_NAME_TABLE_UNSPEC,
+       TIPC_NLA_NAME_TABLE_PUBL,       /* nest */
+
+       __TIPC_NLA_NAME_TABLE_MAX,
+       TIPC_NLA_NAME_TABLE_MAX = __TIPC_NLA_NAME_TABLE_MAX - 1
+};
+
+/* Monitor info */
+enum {
+       TIPC_NLA_MON_UNSPEC,
+       TIPC_NLA_MON_ACTIVATION_THRESHOLD,      /* u32 */
+       TIPC_NLA_MON_REF,                       /* u32 */
+       TIPC_NLA_MON_ACTIVE,                    /* flag */
+       TIPC_NLA_MON_BEARER_NAME,               /* string */
+       TIPC_NLA_MON_PEERCNT,                   /* u32 */
+       TIPC_NLA_MON_LISTGEN,                   /* u32 */
+
+       __TIPC_NLA_MON_MAX,
+       TIPC_NLA_MON_MAX = __TIPC_NLA_MON_MAX - 1
+};
+
+/* Publication info */
+enum {
+       TIPC_NLA_PUBL_UNSPEC,
+
+       TIPC_NLA_PUBL_TYPE,             /* u32 */
+       TIPC_NLA_PUBL_LOWER,            /* u32 */
+       TIPC_NLA_PUBL_UPPER,            /* u32 */
+       TIPC_NLA_PUBL_SCOPE,            /* u32 */
+       TIPC_NLA_PUBL_NODE,             /* u32 */
+       TIPC_NLA_PUBL_REF,              /* u32 */
+       TIPC_NLA_PUBL_KEY,              /* u32 */
+
+       __TIPC_NLA_PUBL_MAX,
+       TIPC_NLA_PUBL_MAX = __TIPC_NLA_PUBL_MAX - 1
+};
+
+/* Monitor peer info */
+enum {
+       TIPC_NLA_MON_PEER_UNSPEC,
+
+       TIPC_NLA_MON_PEER_ADDR,                 /* u32 */
+       TIPC_NLA_MON_PEER_DOMGEN,               /* u32 */
+       TIPC_NLA_MON_PEER_APPLIED,              /* u32 */
+       TIPC_NLA_MON_PEER_UPMAP,                /* u64 */
+       TIPC_NLA_MON_PEER_MEMBERS,              /* tlv */
+       TIPC_NLA_MON_PEER_UP,                   /* flag */
+       TIPC_NLA_MON_PEER_HEAD,                 /* flag */
+       TIPC_NLA_MON_PEER_LOCAL,                /* flag */
+       TIPC_NLA_MON_PEER_PAD,                  /* flag */
+
+       __TIPC_NLA_MON_PEER_MAX,
+       TIPC_NLA_MON_PEER_MAX = __TIPC_NLA_MON_PEER_MAX - 1
+};
+
+/* Nest, connection info */
+enum {
+       TIPC_NLA_CON_UNSPEC,
+
+       TIPC_NLA_CON_FLAG,              /* flag */
+       TIPC_NLA_CON_NODE,              /* u32 */
+       TIPC_NLA_CON_SOCK,              /* u32 */
+       TIPC_NLA_CON_TYPE,              /* u32 */
+       TIPC_NLA_CON_INST,              /* u32 */
+
+       __TIPC_NLA_CON_MAX,
+       TIPC_NLA_CON_MAX = __TIPC_NLA_CON_MAX - 1
+};
+
+/* Nest, link propreties. Valid for link, media and bearer */
+enum {
+       TIPC_NLA_PROP_UNSPEC,
+
+       TIPC_NLA_PROP_PRIO,             /* u32 */
+       TIPC_NLA_PROP_TOL,              /* u32 */
+       TIPC_NLA_PROP_WIN,              /* u32 */
+
+       __TIPC_NLA_PROP_MAX,
+       TIPC_NLA_PROP_MAX = __TIPC_NLA_PROP_MAX - 1
+};
+
+/* Nest, statistics info */
+enum {
+       TIPC_NLA_STATS_UNSPEC,
+
+       TIPC_NLA_STATS_RX_INFO,         /* u32 */
+       TIPC_NLA_STATS_RX_FRAGMENTS,    /* u32 */
+       TIPC_NLA_STATS_RX_FRAGMENTED,   /* u32 */
+       TIPC_NLA_STATS_RX_BUNDLES,      /* u32 */
+       TIPC_NLA_STATS_RX_BUNDLED,      /* u32 */
+       TIPC_NLA_STATS_TX_INFO,         /* u32 */
+       TIPC_NLA_STATS_TX_FRAGMENTS,    /* u32 */
+       TIPC_NLA_STATS_TX_FRAGMENTED,   /* u32 */
+       TIPC_NLA_STATS_TX_BUNDLES,      /* u32 */
+       TIPC_NLA_STATS_TX_BUNDLED,      /* u32 */
+       TIPC_NLA_STATS_MSG_PROF_TOT,    /* u32 */
+       TIPC_NLA_STATS_MSG_LEN_CNT,     /* u32 */
+       TIPC_NLA_STATS_MSG_LEN_TOT,     /* u32 */
+       TIPC_NLA_STATS_MSG_LEN_P0,      /* u32 */
+       TIPC_NLA_STATS_MSG_LEN_P1,      /* u32 */
+       TIPC_NLA_STATS_MSG_LEN_P2,      /* u32 */
+       TIPC_NLA_STATS_MSG_LEN_P3,      /* u32 */
+       TIPC_NLA_STATS_MSG_LEN_P4,      /* u32 */
+       TIPC_NLA_STATS_MSG_LEN_P5,      /* u32 */
+       TIPC_NLA_STATS_MSG_LEN_P6,      /* u32 */
+       TIPC_NLA_STATS_RX_STATES,       /* u32 */
+       TIPC_NLA_STATS_RX_PROBES,       /* u32 */
+       TIPC_NLA_STATS_RX_NACKS,        /* u32 */
+       TIPC_NLA_STATS_RX_DEFERRED,     /* u32 */
+       TIPC_NLA_STATS_TX_STATES,       /* u32 */
+       TIPC_NLA_STATS_TX_PROBES,       /* u32 */
+       TIPC_NLA_STATS_TX_NACKS,        /* u32 */
+       TIPC_NLA_STATS_TX_ACKS,         /* u32 */
+       TIPC_NLA_STATS_RETRANSMITTED,   /* u32 */
+       TIPC_NLA_STATS_DUPLICATES,      /* u32 */
+       TIPC_NLA_STATS_LINK_CONGS,      /* u32 */
+       TIPC_NLA_STATS_MAX_QUEUE,       /* u32 */
+       TIPC_NLA_STATS_AVG_QUEUE,       /* u32 */
+
+       __TIPC_NLA_STATS_MAX,
+       TIPC_NLA_STATS_MAX = __TIPC_NLA_STATS_MAX - 1
+};
+
+#endif
diff --git a/include/uapi/linux/types.h b/include/uapi/linux/types.h
new file mode 100644 (file)
index 0000000..c640657
--- /dev/null
@@ -0,0 +1,47 @@
+#ifndef _LINUX_TYPES_H
+#define _LINUX_TYPES_H
+
+#include <asm/types.h>
+
+#ifndef __ASSEMBLY__
+
+#include <linux/posix_types.h>
+
+
+/*
+ * Below are truly Linux-specific types that should never collide with
+ * any application/library that wants linux/types.h.
+ */
+
+#ifdef __CHECKER__
+#define __bitwise__ __attribute__((bitwise))
+#else
+#define __bitwise__
+#endif
+#define __bitwise __bitwise__
+
+typedef __u16 __bitwise __le16;
+typedef __u16 __bitwise __be16;
+typedef __u32 __bitwise __le32;
+typedef __u32 __bitwise __be32;
+typedef __u64 __bitwise __le64;
+typedef __u64 __bitwise __be64;
+
+typedef __u16 __bitwise __sum16;
+typedef __u32 __bitwise __wsum;
+
+/*
+ * aligned_u64 should be used in defining kernel<->userspace ABIs to avoid
+ * common 32/64-bit compat problems.
+ * 64-bit values align to 4-byte boundaries on x86_32 (and possibly other
+ * architectures) and to 8-byte boundaries on 64-bit architectures.  The new
+ * aligned_64 type enforces 8-byte alignment so that structs containing
+ * aligned_64 values have the same alignment on 32-bit and 64-bit architectures.
+ * No conversions are necessary between 32-bit user-space and a 64-bit kernel.
+ */
+#define __aligned_u64 __u64 __attribute__((aligned(8)))
+#define __aligned_be64 __be64 __attribute__((aligned(8)))
+#define __aligned_le64 __le64 __attribute__((aligned(8)))
+
+#endif /*  __ASSEMBLY__ */
+#endif /* _LINUX_TYPES_H */
diff --git a/include/uapi/linux/unix_diag.h b/include/uapi/linux/unix_diag.h
new file mode 100644 (file)
index 0000000..1eb0b8d
--- /dev/null
@@ -0,0 +1,58 @@
+#ifndef __UNIX_DIAG_H__
+#define __UNIX_DIAG_H__
+
+#include <linux/types.h>
+
+struct unix_diag_req {
+       __u8    sdiag_family;
+       __u8    sdiag_protocol;
+       __u16   pad;
+       __u32   udiag_states;
+       __u32   udiag_ino;
+       __u32   udiag_show;
+       __u32   udiag_cookie[2];
+};
+
+#define UDIAG_SHOW_NAME                0x00000001      /* show name (not path) */
+#define UDIAG_SHOW_VFS         0x00000002      /* show VFS inode info */
+#define UDIAG_SHOW_PEER                0x00000004      /* show peer socket info */
+#define UDIAG_SHOW_ICONS       0x00000008      /* show pending connections */
+#define UDIAG_SHOW_RQLEN       0x00000010      /* show skb receive queue len */
+#define UDIAG_SHOW_MEMINFO     0x00000020      /* show memory info of a socket */
+
+struct unix_diag_msg {
+       __u8    udiag_family;
+       __u8    udiag_type;
+       __u8    udiag_state;
+       __u8    pad;
+
+       __u32   udiag_ino;
+       __u32   udiag_cookie[2];
+};
+
+enum {
+       /* UNIX_DIAG_NONE, standard nl API requires this attribute!  */
+       UNIX_DIAG_NAME,
+       UNIX_DIAG_VFS,
+       UNIX_DIAG_PEER,
+       UNIX_DIAG_ICONS,
+       UNIX_DIAG_RQLEN,
+       UNIX_DIAG_MEMINFO,
+       UNIX_DIAG_SHUTDOWN,
+
+       __UNIX_DIAG_MAX,
+};
+
+#define UNIX_DIAG_MAX (__UNIX_DIAG_MAX - 1)
+
+struct unix_diag_vfs {
+       __u32   udiag_vfs_ino;
+       __u32   udiag_vfs_dev;
+};
+
+struct unix_diag_rqlen {
+       __u32   udiag_rqueue;
+       __u32   udiag_wqueue;
+};
+
+#endif
diff --git a/include/uapi/linux/veth.h b/include/uapi/linux/veth.h
new file mode 100644 (file)
index 0000000..3354c1e
--- /dev/null
@@ -0,0 +1,12 @@
+#ifndef __NET_VETH_H_
+#define __NET_VETH_H_
+
+enum {
+       VETH_INFO_UNSPEC,
+       VETH_INFO_PEER,
+
+       __VETH_INFO_MAX
+#define VETH_INFO_MAX  (__VETH_INFO_MAX - 1)
+};
+
+#endif
diff --git a/include/uapi/linux/xfrm.h b/include/uapi/linux/xfrm.h
new file mode 100644 (file)
index 0000000..5790293
--- /dev/null
@@ -0,0 +1,536 @@
+#ifndef _LINUX_XFRM_H
+#define _LINUX_XFRM_H
+
+#include <linux/in6.h>
+#include <linux/types.h>
+
+/* All of the structures in this file may not change size as they are
+ * passed into the kernel from userspace via netlink sockets.
+ */
+
+/* Structure to encapsulate addresses. I do not want to use
+ * "standard" structure. My apologies.
+ */
+typedef union {
+       __be32          a4;
+       __be32          a6[4];
+       struct in6_addr in6;
+} xfrm_address_t;
+
+/* Ident of a specific xfrm_state. It is used on input to lookup
+ * the state by (spi,daddr,ah/esp) or to store information about
+ * spi, protocol and tunnel address on output.
+ */
+struct xfrm_id {
+       xfrm_address_t  daddr;
+       __be32          spi;
+       __u8            proto;
+};
+
+struct xfrm_sec_ctx {
+       __u8    ctx_doi;
+       __u8    ctx_alg;
+       __u16   ctx_len;
+       __u32   ctx_sid;
+       char    ctx_str[0];
+};
+
+/* Security Context Domains of Interpretation */
+#define XFRM_SC_DOI_RESERVED 0
+#define XFRM_SC_DOI_LSM 1
+
+/* Security Context Algorithms */
+#define XFRM_SC_ALG_RESERVED 0
+#define XFRM_SC_ALG_SELINUX 1
+
+/* Selector, used as selector both on policy rules (SPD) and SAs. */
+
+struct xfrm_selector {
+       xfrm_address_t  daddr;
+       xfrm_address_t  saddr;
+       __be16  dport;
+       __be16  dport_mask;
+       __be16  sport;
+       __be16  sport_mask;
+       __u16   family;
+       __u8    prefixlen_d;
+       __u8    prefixlen_s;
+       __u8    proto;
+       int     ifindex;
+       __kernel_uid32_t        user;
+};
+
+#define XFRM_INF (~(__u64)0)
+
+struct xfrm_lifetime_cfg {
+       __u64   soft_byte_limit;
+       __u64   hard_byte_limit;
+       __u64   soft_packet_limit;
+       __u64   hard_packet_limit;
+       __u64   soft_add_expires_seconds;
+       __u64   hard_add_expires_seconds;
+       __u64   soft_use_expires_seconds;
+       __u64   hard_use_expires_seconds;
+};
+
+struct xfrm_lifetime_cur {
+       __u64   bytes;
+       __u64   packets;
+       __u64   add_time;
+       __u64   use_time;
+};
+
+struct xfrm_replay_state {
+       __u32   oseq;
+       __u32   seq;
+       __u32   bitmap;
+};
+
+#define XFRMA_REPLAY_ESN_MAX   4096
+
+struct xfrm_replay_state_esn {
+       unsigned int    bmp_len;
+       __u32           oseq;
+       __u32           seq;
+       __u32           oseq_hi;
+       __u32           seq_hi;
+       __u32           replay_window;
+       __u32           bmp[0];
+};
+
+struct xfrm_algo {
+       char            alg_name[64];
+       unsigned int    alg_key_len;    /* in bits */
+       char            alg_key[0];
+};
+
+struct xfrm_algo_auth {
+       char            alg_name[64];
+       unsigned int    alg_key_len;    /* in bits */
+       unsigned int    alg_trunc_len;  /* in bits */
+       char            alg_key[0];
+};
+
+struct xfrm_algo_aead {
+       char            alg_name[64];
+       unsigned int    alg_key_len;    /* in bits */
+       unsigned int    alg_icv_len;    /* in bits */
+       char            alg_key[0];
+};
+
+struct xfrm_stats {
+       __u32   replay_window;
+       __u32   replay;
+       __u32   integrity_failed;
+};
+
+enum {
+       XFRM_POLICY_TYPE_MAIN   = 0,
+       XFRM_POLICY_TYPE_SUB    = 1,
+       XFRM_POLICY_TYPE_MAX    = 2,
+       XFRM_POLICY_TYPE_ANY    = 255
+};
+
+enum {
+       XFRM_POLICY_IN  = 0,
+       XFRM_POLICY_OUT = 1,
+       XFRM_POLICY_FWD = 2,
+       XFRM_POLICY_MASK = 3,
+       XFRM_POLICY_MAX = 3
+};
+
+enum {
+       XFRM_SHARE_ANY,         /* No limitations */
+       XFRM_SHARE_SESSION,     /* For this session only */
+       XFRM_SHARE_USER,        /* For this user only */
+       XFRM_SHARE_UNIQUE       /* Use once */
+};
+
+#define XFRM_MODE_TRANSPORT 0
+#define XFRM_MODE_TUNNEL 1
+#define XFRM_MODE_ROUTEOPTIMIZATION 2
+#define XFRM_MODE_IN_TRIGGER 3
+#define XFRM_MODE_BEET 4
+#define XFRM_MODE_MAX 5
+
+/* Netlink configuration messages.  */
+enum {
+       XFRM_MSG_BASE = 0x10,
+
+       XFRM_MSG_NEWSA = 0x10,
+#define XFRM_MSG_NEWSA XFRM_MSG_NEWSA
+       XFRM_MSG_DELSA,
+#define XFRM_MSG_DELSA XFRM_MSG_DELSA
+       XFRM_MSG_GETSA,
+#define XFRM_MSG_GETSA XFRM_MSG_GETSA
+
+       XFRM_MSG_NEWPOLICY,
+#define XFRM_MSG_NEWPOLICY XFRM_MSG_NEWPOLICY
+       XFRM_MSG_DELPOLICY,
+#define XFRM_MSG_DELPOLICY XFRM_MSG_DELPOLICY
+       XFRM_MSG_GETPOLICY,
+#define XFRM_MSG_GETPOLICY XFRM_MSG_GETPOLICY
+
+       XFRM_MSG_ALLOCSPI,
+#define XFRM_MSG_ALLOCSPI XFRM_MSG_ALLOCSPI
+       XFRM_MSG_ACQUIRE,
+#define XFRM_MSG_ACQUIRE XFRM_MSG_ACQUIRE
+       XFRM_MSG_EXPIRE,
+#define XFRM_MSG_EXPIRE XFRM_MSG_EXPIRE
+
+       XFRM_MSG_UPDPOLICY,
+#define XFRM_MSG_UPDPOLICY XFRM_MSG_UPDPOLICY
+       XFRM_MSG_UPDSA,
+#define XFRM_MSG_UPDSA XFRM_MSG_UPDSA
+
+       XFRM_MSG_POLEXPIRE,
+#define XFRM_MSG_POLEXPIRE XFRM_MSG_POLEXPIRE
+
+       XFRM_MSG_FLUSHSA,
+#define XFRM_MSG_FLUSHSA XFRM_MSG_FLUSHSA
+       XFRM_MSG_FLUSHPOLICY,
+#define XFRM_MSG_FLUSHPOLICY XFRM_MSG_FLUSHPOLICY
+
+       XFRM_MSG_NEWAE,
+#define XFRM_MSG_NEWAE XFRM_MSG_NEWAE
+       XFRM_MSG_GETAE,
+#define XFRM_MSG_GETAE XFRM_MSG_GETAE
+
+       XFRM_MSG_REPORT,
+#define XFRM_MSG_REPORT XFRM_MSG_REPORT
+
+       XFRM_MSG_MIGRATE,
+#define XFRM_MSG_MIGRATE XFRM_MSG_MIGRATE
+
+       XFRM_MSG_NEWSADINFO,
+#define XFRM_MSG_NEWSADINFO XFRM_MSG_NEWSADINFO
+       XFRM_MSG_GETSADINFO,
+#define XFRM_MSG_GETSADINFO XFRM_MSG_GETSADINFO
+
+       XFRM_MSG_NEWSPDINFO,
+#define XFRM_MSG_NEWSPDINFO XFRM_MSG_NEWSPDINFO
+       XFRM_MSG_GETSPDINFO,
+#define XFRM_MSG_GETSPDINFO XFRM_MSG_GETSPDINFO
+
+       XFRM_MSG_MAPPING,
+#define XFRM_MSG_MAPPING XFRM_MSG_MAPPING
+       __XFRM_MSG_MAX
+};
+#define XFRM_MSG_MAX (__XFRM_MSG_MAX - 1)
+
+#define XFRM_NR_MSGTYPES (XFRM_MSG_MAX + 1 - XFRM_MSG_BASE)
+
+/*
+ * Generic LSM security context for comunicating to user space
+ * NOTE: Same format as sadb_x_sec_ctx
+ */
+struct xfrm_user_sec_ctx {
+       __u16                   len;
+       __u16                   exttype;
+       __u8                    ctx_alg;  /* LSMs: e.g., selinux == 1 */
+       __u8                    ctx_doi;
+       __u16                   ctx_len;
+};
+
+struct xfrm_user_tmpl {
+       struct xfrm_id          id;
+       __u16                   family;
+       xfrm_address_t          saddr;
+       __u32                   reqid;
+       __u8                    mode;
+       __u8                    share;
+       __u8                    optional;
+       __u32                   aalgos;
+       __u32                   ealgos;
+       __u32                   calgos;
+};
+
+struct xfrm_encap_tmpl {
+       __u16           encap_type;
+       __be16          encap_sport;
+       __be16          encap_dport;
+       xfrm_address_t  encap_oa;
+};
+
+/* AEVENT flags  */
+enum xfrm_ae_ftype_t {
+       XFRM_AE_UNSPEC,
+       XFRM_AE_RTHR=1, /* replay threshold*/
+       XFRM_AE_RVAL=2, /* replay value */
+       XFRM_AE_LVAL=4, /* lifetime value */
+       XFRM_AE_ETHR=8, /* expiry timer threshold */
+       XFRM_AE_CR=16, /* Event cause is replay update */
+       XFRM_AE_CE=32, /* Event cause is timer expiry */
+       XFRM_AE_CU=64, /* Event cause is policy update */
+       __XFRM_AE_MAX
+
+#define XFRM_AE_MAX (__XFRM_AE_MAX - 1)
+};
+
+struct xfrm_userpolicy_type {
+       __u8            type;
+       __u16           reserved1;
+       __u8            reserved2;
+};
+
+/* Netlink message attributes.  */
+enum xfrm_attr_type_t {
+       XFRMA_UNSPEC,
+       XFRMA_ALG_AUTH,         /* struct xfrm_algo */
+       XFRMA_ALG_CRYPT,        /* struct xfrm_algo */
+       XFRMA_ALG_COMP,         /* struct xfrm_algo */
+       XFRMA_ENCAP,            /* struct xfrm_algo + struct xfrm_encap_tmpl */
+       XFRMA_TMPL,             /* 1 or more struct xfrm_user_tmpl */
+       XFRMA_SA,               /* struct xfrm_usersa_info  */
+       XFRMA_POLICY,           /*struct xfrm_userpolicy_info */
+       XFRMA_SEC_CTX,          /* struct xfrm_sec_ctx */
+       XFRMA_LTIME_VAL,
+       XFRMA_REPLAY_VAL,
+       XFRMA_REPLAY_THRESH,
+       XFRMA_ETIMER_THRESH,
+       XFRMA_SRCADDR,          /* xfrm_address_t */
+       XFRMA_COADDR,           /* xfrm_address_t */
+       XFRMA_LASTUSED,         /* unsigned long  */
+       XFRMA_POLICY_TYPE,      /* struct xfrm_userpolicy_type */
+       XFRMA_MIGRATE,
+       XFRMA_ALG_AEAD,         /* struct xfrm_algo_aead */
+       XFRMA_KMADDRESS,        /* struct xfrm_user_kmaddress */
+       XFRMA_ALG_AUTH_TRUNC,   /* struct xfrm_algo_auth */
+       XFRMA_MARK,             /* struct xfrm_mark */
+       XFRMA_TFCPAD,           /* __u32 */
+       XFRMA_REPLAY_ESN_VAL,   /* struct xfrm_replay_state_esn */
+       XFRMA_SA_EXTRA_FLAGS,   /* __u32 */
+       XFRMA_PROTO,            /* __u8 */
+       XFRMA_ADDRESS_FILTER,   /* struct xfrm_address_filter */
+       XFRMA_PAD,
+       XFRMA_OFFLOAD_DEV,      /* struct xfrm_state_offload */
+       XFRMA_OUTPUT_MARK,      /* __u32 */
+       __XFRMA_MAX
+
+#define XFRMA_MAX (__XFRMA_MAX - 1)
+};
+
+struct xfrm_mark {
+       __u32           v; /* value */
+       __u32           m; /* mask */
+};
+
+enum xfrm_sadattr_type_t {
+       XFRMA_SAD_UNSPEC,
+       XFRMA_SAD_CNT,
+       XFRMA_SAD_HINFO,
+       __XFRMA_SAD_MAX
+
+#define XFRMA_SAD_MAX (__XFRMA_SAD_MAX - 1)
+};
+
+struct xfrmu_sadhinfo {
+       __u32 sadhcnt; /* current hash bkts */
+       __u32 sadhmcnt; /* max allowed hash bkts */
+};
+
+enum xfrm_spdattr_type_t {
+       XFRMA_SPD_UNSPEC,
+       XFRMA_SPD_INFO,
+       XFRMA_SPD_HINFO,
+       XFRMA_SPD_IPV4_HTHRESH,
+       XFRMA_SPD_IPV6_HTHRESH,
+       __XFRMA_SPD_MAX
+
+#define XFRMA_SPD_MAX (__XFRMA_SPD_MAX - 1)
+};
+
+struct xfrmu_spdinfo {
+       __u32 incnt;
+       __u32 outcnt;
+       __u32 fwdcnt;
+       __u32 inscnt;
+       __u32 outscnt;
+       __u32 fwdscnt;
+};
+
+struct xfrmu_spdhinfo {
+       __u32 spdhcnt;
+       __u32 spdhmcnt;
+};
+
+struct xfrmu_spdhthresh {
+       __u8 lbits;
+       __u8 rbits;
+};
+
+struct xfrm_usersa_info {
+       struct xfrm_selector            sel;
+       struct xfrm_id                  id;
+       xfrm_address_t                  saddr;
+       struct xfrm_lifetime_cfg        lft;
+       struct xfrm_lifetime_cur        curlft;
+       struct xfrm_stats               stats;
+       __u32                           seq;
+       __u32                           reqid;
+       __u16                           family;
+       __u8                            mode;           /* XFRM_MODE_xxx */
+       __u8                            replay_window;
+       __u8                            flags;
+#define XFRM_STATE_NOECN       1
+#define XFRM_STATE_DECAP_DSCP  2
+#define XFRM_STATE_NOPMTUDISC  4
+#define XFRM_STATE_WILDRECV    8
+#define XFRM_STATE_ICMP                16
+#define XFRM_STATE_AF_UNSPEC   32
+#define XFRM_STATE_ALIGN4      64
+#define XFRM_STATE_ESN         128
+};
+
+#define XFRM_SA_XFLAG_DONT_ENCAP_DSCP  1
+
+struct xfrm_usersa_id {
+       xfrm_address_t                  daddr;
+       __be32                          spi;
+       __u16                           family;
+       __u8                            proto;
+};
+
+struct xfrm_aevent_id {
+       struct xfrm_usersa_id           sa_id;
+       xfrm_address_t                  saddr;
+       __u32                           flags;
+       __u32                           reqid;
+};
+
+struct xfrm_userspi_info {
+       struct xfrm_usersa_info         info;
+       __u32                           min;
+       __u32                           max;
+};
+
+struct xfrm_userpolicy_info {
+       struct xfrm_selector            sel;
+       struct xfrm_lifetime_cfg        lft;
+       struct xfrm_lifetime_cur        curlft;
+       __u32                           priority;
+       __u32                           index;
+       __u8                            dir;
+       __u8                            action;
+#define XFRM_POLICY_ALLOW      0
+#define XFRM_POLICY_BLOCK      1
+       __u8                            flags;
+#define XFRM_POLICY_LOCALOK    1       /* Allow user to override global policy */
+       /* Automatically expand selector to include matching ICMP payloads. */
+#define XFRM_POLICY_ICMP       2
+       __u8                            share;
+};
+
+struct xfrm_userpolicy_id {
+       struct xfrm_selector            sel;
+       __u32                           index;
+       __u8                            dir;
+};
+
+struct xfrm_user_acquire {
+       struct xfrm_id                  id;
+       xfrm_address_t                  saddr;
+       struct xfrm_selector            sel;
+       struct xfrm_userpolicy_info     policy;
+       __u32                           aalgos;
+       __u32                           ealgos;
+       __u32                           calgos;
+       __u32                           seq;
+};
+
+struct xfrm_user_expire {
+       struct xfrm_usersa_info         state;
+       __u8                            hard;
+};
+
+struct xfrm_user_polexpire {
+       struct xfrm_userpolicy_info     pol;
+       __u8                            hard;
+};
+
+struct xfrm_usersa_flush {
+       __u8                            proto;
+};
+
+struct xfrm_user_report {
+       __u8                            proto;
+       struct xfrm_selector            sel;
+};
+
+/* Used by MIGRATE to pass addresses IKE should use to perform
+ * SA negotiation with the peer */
+struct xfrm_user_kmaddress {
+       xfrm_address_t                  local;
+       xfrm_address_t                  remote;
+       __u32                           reserved;
+       __u16                           family;
+};
+
+struct xfrm_user_migrate {
+       xfrm_address_t                  old_daddr;
+       xfrm_address_t                  old_saddr;
+       xfrm_address_t                  new_daddr;
+       xfrm_address_t                  new_saddr;
+       __u8                            proto;
+       __u8                            mode;
+       __u16                           reserved;
+       __u32                           reqid;
+       __u16                           old_family;
+       __u16                           new_family;
+};
+
+struct xfrm_user_mapping {
+       struct xfrm_usersa_id           id;
+       __u32                           reqid;
+       xfrm_address_t                  old_saddr;
+       xfrm_address_t                  new_saddr;
+       __be16                          old_sport;
+       __be16                          new_sport;
+};
+
+struct xfrm_address_filter {
+       xfrm_address_t                  saddr;
+       xfrm_address_t                  daddr;
+       __u16                           family;
+       __u8                            splen;
+       __u8                            dplen;
+};
+
+struct xfrm_user_offload {
+       int                             ifindex;
+       __u8                            flags;
+};
+#define XFRM_OFFLOAD_IPV6      1
+#define XFRM_OFFLOAD_INBOUND   2
+
+/* backwards compatibility for userspace */
+#define XFRMGRP_ACQUIRE                1
+#define XFRMGRP_EXPIRE         2
+#define XFRMGRP_SA             4
+#define XFRMGRP_POLICY         8
+#define XFRMGRP_REPORT         0x20
+
+enum xfrm_nlgroups {
+       XFRMNLGRP_NONE,
+#define XFRMNLGRP_NONE         XFRMNLGRP_NONE
+       XFRMNLGRP_ACQUIRE,
+#define XFRMNLGRP_ACQUIRE      XFRMNLGRP_ACQUIRE
+       XFRMNLGRP_EXPIRE,
+#define XFRMNLGRP_EXPIRE       XFRMNLGRP_EXPIRE
+       XFRMNLGRP_SA,
+#define XFRMNLGRP_SA           XFRMNLGRP_SA
+       XFRMNLGRP_POLICY,
+#define XFRMNLGRP_POLICY       XFRMNLGRP_POLICY
+       XFRMNLGRP_AEVENTS,
+#define XFRMNLGRP_AEVENTS      XFRMNLGRP_AEVENTS
+       XFRMNLGRP_REPORT,
+#define XFRMNLGRP_REPORT       XFRMNLGRP_REPORT
+       XFRMNLGRP_MIGRATE,
+#define XFRMNLGRP_MIGRATE      XFRMNLGRP_MIGRATE
+       XFRMNLGRP_MAPPING,
+#define XFRMNLGRP_MAPPING      XFRMNLGRP_MAPPING
+       __XFRMNLGRP_MAX
+};
+#define XFRMNLGRP_MAX  (__XFRMNLGRP_MAX - 1)
+
+#endif /* _LINUX_XFRM_H */