Blame SOURCES/0037-Update-kernel-headers.patch

930fb9
From 94b44c8f431c8d159fee6c067aded7b9c4e71104 Mon Sep 17 00:00:00 2001
930fb9
From: Phil Sutter <psutter@redhat.com>
930fb9
Date: Thu, 25 Oct 2018 17:00:00 +0200
930fb9
Subject: [PATCH] Update kernel headers
930fb9
930fb9
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1637440
930fb9
Upstream Status: RHEL-only
930fb9
930fb9
This updates include/uapi/linux to the state of upstream commit
930fb9
d9c0be4e9795473a73793058674c34d56cdb5eea.
930fb9
---
930fb9
 include/uapi/linux/bpf.h       | 121 ++++++++++++++++++++++++++++++++++++++++-
930fb9
 include/uapi/linux/btf.h       |   2 +-
930fb9
 include/uapi/linux/can.h       |   2 +-
930fb9
 include/uapi/linux/gen_stats.h |   1 +
930fb9
 include/uapi/linux/if_addr.h   |   1 +
930fb9
 include/uapi/linux/if_arp.h    |  18 +++---
930fb9
 include/uapi/linux/if_link.h   |  15 +++++
930fb9
 include/uapi/linux/if_packet.h |   1 +
930fb9
 include/uapi/linux/in6.h       |   1 +
930fb9
 include/uapi/linux/ip.h        |   1 +
930fb9
 include/uapi/linux/l2tp.h      |  15 ++---
930fb9
 include/uapi/linux/neighbour.h |   1 +
930fb9
 include/uapi/linux/netconf.h   |   1 +
930fb9
 include/uapi/linux/pkt_cls.h   |  34 +++++++++++-
930fb9
 include/uapi/linux/pkt_sched.h |  21 ++++++-
930fb9
 include/uapi/linux/rtnetlink.h |   7 +++
930fb9
 include/uapi/linux/tcp.h       |  14 ++++-
930fb9
 include/uapi/linux/xfrm.h      |   5 +-
930fb9
 18 files changed, 235 insertions(+), 26 deletions(-)
930fb9
930fb9
diff --git a/include/uapi/linux/bpf.h b/include/uapi/linux/bpf.h
930fb9
index b9a6367..abb7f77 100644
930fb9
--- a/include/uapi/linux/bpf.h
930fb9
+++ b/include/uapi/linux/bpf.h
930fb9
@@ -75,6 +75,11 @@ struct bpf_lpm_trie_key {
930fb9
 	__u8	data[0];	/* Arbitrary size */
930fb9
 };
930fb9
 
930fb9
+struct bpf_cgroup_storage_key {
930fb9
+	__u64	cgroup_inode_id;	/* cgroup inode id */
930fb9
+	__u32	attach_type;		/* program attach type */
930fb9
+};
930fb9
+
930fb9
 /* BPF syscall commands, see bpf(2) man-page for details. */
930fb9
 enum bpf_cmd {
930fb9
 	BPF_MAP_CREATE,
930fb9
@@ -120,6 +125,8 @@ enum bpf_map_type {
930fb9
 	BPF_MAP_TYPE_CPUMAP,
930fb9
 	BPF_MAP_TYPE_XSKMAP,
930fb9
 	BPF_MAP_TYPE_SOCKHASH,
930fb9
+	BPF_MAP_TYPE_CGROUP_STORAGE,
930fb9
+	BPF_MAP_TYPE_REUSEPORT_SOCKARRAY,
930fb9
 };
930fb9
 
930fb9
 enum bpf_prog_type {
930fb9
@@ -144,6 +151,8 @@ enum bpf_prog_type {
930fb9
 	BPF_PROG_TYPE_CGROUP_SOCK_ADDR,
930fb9
 	BPF_PROG_TYPE_LWT_SEG6LOCAL,
930fb9
 	BPF_PROG_TYPE_LIRC_MODE2,
930fb9
+	BPF_PROG_TYPE_SK_REUSEPORT,
930fb9
+	BPF_PROG_TYPE_FLOW_DISSECTOR,
930fb9
 };
930fb9
 
930fb9
 enum bpf_attach_type {
930fb9
@@ -164,6 +173,7 @@ enum bpf_attach_type {
930fb9
 	BPF_CGROUP_UDP4_SENDMSG,
930fb9
 	BPF_CGROUP_UDP6_SENDMSG,
930fb9
 	BPF_LIRC_MODE2,
930fb9
+	BPF_FLOW_DISSECTOR,
930fb9
 	__MAX_BPF_ATTACH_TYPE
930fb9
 };
930fb9
 
930fb9
@@ -1371,6 +1381,20 @@ union bpf_attr {
930fb9
  * 		A 8-byte long non-decreasing number on success, or 0 if the
930fb9
  * 		socket field is missing inside *skb*.
930fb9
  *
930fb9
+ * u64 bpf_get_socket_cookie(struct bpf_sock_addr *ctx)
930fb9
+ * 	Description
930fb9
+ * 		Equivalent to bpf_get_socket_cookie() helper that accepts
930fb9
+ * 		*skb*, but gets socket from **struct bpf_sock_addr** contex.
930fb9
+ * 	Return
930fb9
+ * 		A 8-byte long non-decreasing number.
930fb9
+ *
930fb9
+ * u64 bpf_get_socket_cookie(struct bpf_sock_ops *ctx)
930fb9
+ * 	Description
930fb9
+ * 		Equivalent to bpf_get_socket_cookie() helper that accepts
930fb9
+ * 		*skb*, but gets socket from **struct bpf_sock_ops** contex.
930fb9
+ * 	Return
930fb9
+ * 		A 8-byte long non-decreasing number.
930fb9
+ *
930fb9
  * u32 bpf_get_socket_uid(struct sk_buff *skb)
930fb9
  * 	Return
930fb9
  * 		The owner UID of the socket associated to *skb*. If the socket
930fb9
@@ -2071,10 +2095,54 @@ union bpf_attr {
930fb9
  * 	Return
930fb9
  * 		The id is returned or 0 in case the id could not be retrieved.
930fb9
  *
930fb9
+ * u64 bpf_skb_ancestor_cgroup_id(struct sk_buff *skb, int ancestor_level)
930fb9
+ *	Description
930fb9
+ *		Return id of cgroup v2 that is ancestor of cgroup associated
930fb9
+ *		with the *skb* at the *ancestor_level*.  The root cgroup is at
930fb9
+ *		*ancestor_level* zero and each step down the hierarchy
930fb9
+ *		increments the level. If *ancestor_level* == level of cgroup
930fb9
+ *		associated with *skb*, then return value will be same as that
930fb9
+ *		of **bpf_skb_cgroup_id**\ ().
930fb9
+ *
930fb9
+ *		The helper is useful to implement policies based on cgroups
930fb9
+ *		that are upper in hierarchy than immediate cgroup associated
930fb9
+ *		with *skb*.
930fb9
+ *
930fb9
+ *		The format of returned id and helper limitations are same as in
930fb9
+ *		**bpf_skb_cgroup_id**\ ().
930fb9
+ *	Return
930fb9
+ *		The id is returned or 0 in case the id could not be retrieved.
930fb9
+ *
930fb9
  * u64 bpf_get_current_cgroup_id(void)
930fb9
  * 	Return
930fb9
  * 		A 64-bit integer containing the current cgroup id based
930fb9
  * 		on the cgroup within which the current task is running.
930fb9
+ *
930fb9
+ * void* get_local_storage(void *map, u64 flags)
930fb9
+ *	Description
930fb9
+ *		Get the pointer to the local storage area.
930fb9
+ *		The type and the size of the local storage is defined
930fb9
+ *		by the *map* argument.
930fb9
+ *		The *flags* meaning is specific for each map type,
930fb9
+ *		and has to be 0 for cgroup local storage.
930fb9
+ *
930fb9
+ *		Depending on the bpf program type, a local storage area
930fb9
+ *		can be shared between multiple instances of the bpf program,
930fb9
+ *		running simultaneously.
930fb9
+ *
930fb9
+ *		A user should care about the synchronization by himself.
930fb9
+ *		For example, by using the BPF_STX_XADD instruction to alter
930fb9
+ *		the shared data.
930fb9
+ *	Return
930fb9
+ *		Pointer to the local storage area.
930fb9
+ *
930fb9
+ * int bpf_sk_select_reuseport(struct sk_reuseport_md *reuse, struct bpf_map *map, void *key, u64 flags)
930fb9
+ *	Description
930fb9
+ *		Select a SO_REUSEPORT sk from a	BPF_MAP_TYPE_REUSEPORT_ARRAY map
930fb9
+ *		It checks the selected sk is matching the incoming
930fb9
+ *		request in the skb.
930fb9
+ *	Return
930fb9
+ *		0 on success, or a negative error in case of failure.
930fb9
  */
930fb9
 #define __BPF_FUNC_MAPPER(FN)		\
930fb9
 	FN(unspec),			\
930fb9
@@ -2157,7 +2225,10 @@ union bpf_attr {
930fb9
 	FN(rc_repeat),			\
930fb9
 	FN(rc_keydown),			\
930fb9
 	FN(skb_cgroup_id),		\
930fb9
-	FN(get_current_cgroup_id),
930fb9
+	FN(get_current_cgroup_id),	\
930fb9
+	FN(get_local_storage),		\
930fb9
+	FN(sk_select_reuseport),	\
930fb9
+	FN(skb_ancestor_cgroup_id),
930fb9
 
930fb9
 /* integer value in 'imm' field of BPF_CALL instruction selects which helper
930fb9
  * function eBPF program intends to call
930fb9
@@ -2264,6 +2335,7 @@ struct __sk_buff {
930fb9
 	/* ... here. */
930fb9
 
930fb9
 	__u32 data_meta;
930fb9
+	struct bpf_flow_keys *flow_keys;
930fb9
 };
930fb9
 
930fb9
 struct bpf_tunnel_key {
930fb9
@@ -2374,6 +2446,30 @@ struct sk_msg_md {
930fb9
 	__u32 local_port;	/* stored in host byte order */
930fb9
 };
930fb9
 
930fb9
+struct sk_reuseport_md {
930fb9
+	/*
930fb9
+	 * Start of directly accessible data. It begins from
930fb9
+	 * the tcp/udp header.
930fb9
+	 */
930fb9
+	void *data;
930fb9
+	void *data_end;		/* End of directly accessible data */
930fb9
+	/*
930fb9
+	 * Total length of packet (starting from the tcp/udp header).
930fb9
+	 * Note that the directly accessible bytes (data_end - data)
930fb9
+	 * could be less than this "len".  Those bytes could be
930fb9
+	 * indirectly read by a helper "bpf_skb_load_bytes()".
930fb9
+	 */
930fb9
+	__u32 len;
930fb9
+	/*
930fb9
+	 * Eth protocol in the mac header (network byte order). e.g.
930fb9
+	 * ETH_P_IP(0x0800) and ETH_P_IPV6(0x86DD)
930fb9
+	 */
930fb9
+	__u32 eth_protocol;
930fb9
+	__u32 ip_protocol;	/* IP protocol. e.g. IPPROTO_TCP, IPPROTO_UDP */
930fb9
+	__u32 bind_inany;	/* Is sock bound to an INANY address? */
930fb9
+	__u32 hash;		/* A hash of the packet 4 tuples */
930fb9
+};
930fb9
+
930fb9
 #define BPF_TAG_SIZE	8
930fb9
 
930fb9
 struct bpf_prog_info {
930fb9
@@ -2685,4 +2781,27 @@ enum bpf_task_fd_type {
930fb9
 	BPF_FD_TYPE_URETPROBE,		/* filename + offset */
930fb9
 };
930fb9
 
930fb9
+struct bpf_flow_keys {
930fb9
+	__u16	nhoff;
930fb9
+	__u16	thoff;
930fb9
+	__u16	addr_proto;			/* ETH_P_* of valid addrs */
930fb9
+	__u8	is_frag;
930fb9
+	__u8	is_first_frag;
930fb9
+	__u8	is_encap;
930fb9
+	__u8	ip_proto;
930fb9
+	__be16	n_proto;
930fb9
+	__be16	sport;
930fb9
+	__be16	dport;
930fb9
+	union {
930fb9
+		struct {
930fb9
+			__be32	ipv4_src;
930fb9
+			__be32	ipv4_dst;
930fb9
+		};
930fb9
+		struct {
930fb9
+			__u32	ipv6_src[4];	/* in6_addr; network order */
930fb9
+			__u32	ipv6_dst[4];	/* in6_addr; network order */
930fb9
+		};
930fb9
+	};
930fb9
+};
930fb9
+
930fb9
 #endif /* __LINUX_BPF_H__ */
930fb9
diff --git a/include/uapi/linux/btf.h b/include/uapi/linux/btf.h
930fb9
index 5dd580a..8d2a8ff 100644
930fb9
--- a/include/uapi/linux/btf.h
930fb9
+++ b/include/uapi/linux/btf.h
930fb9
@@ -76,7 +76,7 @@ struct btf_type {
930fb9
  */
930fb9
 #define BTF_INT_ENCODING(VAL)	(((VAL) & 0x0f000000) >> 24)
930fb9
 #define BTF_INT_OFFSET(VAL)	(((VAL  & 0x00ff0000)) >> 16)
930fb9
-#define BTF_INT_BITS(VAL)	((VAL)  & 0x0000ffff)
930fb9
+#define BTF_INT_BITS(VAL)	((VAL)  & 0x000000ff)
930fb9
 
930fb9
 /* Attributes stored in the BTF_INT_ENCODING */
930fb9
 #define BTF_INT_SIGNED	(1 << 0)
930fb9
diff --git a/include/uapi/linux/can.h b/include/uapi/linux/can.h
930fb9
index 4d1ab8e..9009f0b 100644
930fb9
--- a/include/uapi/linux/can.h
930fb9
+++ b/include/uapi/linux/can.h
930fb9
@@ -77,7 +77,7 @@ typedef __u32 canid_t;
930fb9
 /*
930fb9
  * Controller Area Network Error Message Frame Mask structure
930fb9
  *
930fb9
- * bit 0-28	: error class mask (see include/linux/can/error.h)
930fb9
+ * bit 0-28	: error class mask (see include/uapi/linux/can/error.h)
930fb9
  * bit 29-31	: set to zero
930fb9
  */
930fb9
 typedef __u32 can_err_mask_t;
930fb9
diff --git a/include/uapi/linux/gen_stats.h b/include/uapi/linux/gen_stats.h
930fb9
index 24a861c..065408e 100644
930fb9
--- a/include/uapi/linux/gen_stats.h
930fb9
+++ b/include/uapi/linux/gen_stats.h
930fb9
@@ -12,6 +12,7 @@ enum {
930fb9
 	TCA_STATS_APP,
930fb9
 	TCA_STATS_RATE_EST64,
930fb9
 	TCA_STATS_PAD,
930fb9
+	TCA_STATS_BASIC_HW,
930fb9
 	__TCA_STATS_MAX,
930fb9
 };
930fb9
 #define TCA_STATS_MAX (__TCA_STATS_MAX - 1)
930fb9
diff --git a/include/uapi/linux/if_addr.h b/include/uapi/linux/if_addr.h
930fb9
index a924606..c4dd87f 100644
930fb9
--- a/include/uapi/linux/if_addr.h
930fb9
+++ b/include/uapi/linux/if_addr.h
930fb9
@@ -34,6 +34,7 @@ enum {
930fb9
 	IFA_MULTICAST,
930fb9
 	IFA_FLAGS,
930fb9
 	IFA_RT_PRIORITY,  /* u32, priority/metric for prefix route */
930fb9
+	IFA_TARGET_NETNSID,
930fb9
 	__IFA_MAX,
930fb9
 };
930fb9
 
930fb9
diff --git a/include/uapi/linux/if_arp.h b/include/uapi/linux/if_arp.h
930fb9
index cd136a6..dbfbc22 100644
930fb9
--- a/include/uapi/linux/if_arp.h
930fb9
+++ b/include/uapi/linux/if_arp.h
930fb9
@@ -114,18 +114,18 @@
930fb9
 
930fb9
 /* ARP ioctl request. */
930fb9
 struct arpreq {
930fb9
-  struct sockaddr	arp_pa;		/* protocol address		*/
930fb9
-  struct sockaddr	arp_ha;		/* hardware address		*/
930fb9
-  int			arp_flags;	/* flags			*/
930fb9
-  struct sockaddr       arp_netmask;    /* netmask (only for proxy arps) */
930fb9
-  char			arp_dev[16];
930fb9
+	struct sockaddr	arp_pa;		/* protocol address		 */
930fb9
+	struct sockaddr	arp_ha;		/* hardware address		 */
930fb9
+	int		arp_flags;	/* flags			 */
930fb9
+	struct sockaddr arp_netmask;    /* netmask (only for proxy arps) */
930fb9
+	char		arp_dev[IFNAMSIZ];
930fb9
 };
930fb9
 
930fb9
 struct arpreq_old {
930fb9
-  struct sockaddr	arp_pa;		/* protocol address		*/
930fb9
-  struct sockaddr	arp_ha;		/* hardware address		*/
930fb9
-  int			arp_flags;	/* flags			*/
930fb9
-  struct sockaddr       arp_netmask;    /* netmask (only for proxy arps) */
930fb9
+	struct sockaddr	arp_pa;		/* protocol address		 */
930fb9
+	struct sockaddr	arp_ha;		/* hardware address		 */
930fb9
+	int		arp_flags;	/* flags			 */
930fb9
+	struct sockaddr	arp_netmask;    /* netmask (only for proxy arps) */
930fb9
 };
930fb9
 
930fb9
 /* ARP Flag values. */
930fb9
diff --git a/include/uapi/linux/if_link.h b/include/uapi/linux/if_link.h
930fb9
index 1c64ed4..9c25460 100644
930fb9
--- a/include/uapi/linux/if_link.h
930fb9
+++ b/include/uapi/linux/if_link.h
930fb9
@@ -161,9 +161,12 @@ enum {
930fb9
 	IFLA_EVENT,
930fb9
 	IFLA_NEW_NETNSID,
930fb9
 	IFLA_IF_NETNSID,
930fb9
+	IFLA_TARGET_NETNSID = IFLA_IF_NETNSID, /* new alias */
930fb9
 	IFLA_CARRIER_UP_COUNT,
930fb9
 	IFLA_CARRIER_DOWN_COUNT,
930fb9
 	IFLA_NEW_IFINDEX,
930fb9
+	IFLA_MIN_MTU,
930fb9
+	IFLA_MAX_MTU,
930fb9
 	__IFLA_MAX
930fb9
 };
930fb9
 
930fb9
@@ -332,6 +335,7 @@ enum {
930fb9
 	IFLA_BRPORT_GROUP_FWD_MASK,
930fb9
 	IFLA_BRPORT_NEIGH_SUPPRESS,
930fb9
 	IFLA_BRPORT_ISOLATED,
930fb9
+	IFLA_BRPORT_BACKUP_PORT,
930fb9
 	__IFLA_BRPORT_MAX
930fb9
 };
930fb9
 #define IFLA_BRPORT_MAX (__IFLA_BRPORT_MAX - 1)
930fb9
@@ -457,6 +461,16 @@ enum {
930fb9
 
930fb9
 #define IFLA_MACSEC_MAX (__IFLA_MACSEC_MAX - 1)
930fb9
 
930fb9
+/* XFRM section */
930fb9
+enum {
930fb9
+	IFLA_XFRM_UNSPEC,
930fb9
+	IFLA_XFRM_LINK,
930fb9
+	IFLA_XFRM_IF_ID,
930fb9
+	__IFLA_XFRM_MAX
930fb9
+};
930fb9
+
930fb9
+#define IFLA_XFRM_MAX (__IFLA_XFRM_MAX - 1)
930fb9
+
930fb9
 enum macsec_validation_type {
930fb9
 	MACSEC_VALIDATE_DISABLED = 0,
930fb9
 	MACSEC_VALIDATE_CHECK = 1,
930fb9
@@ -539,6 +553,7 @@ enum {
930fb9
 	IFLA_GENEVE_UDP_ZERO_CSUM6_TX,
930fb9
 	IFLA_GENEVE_UDP_ZERO_CSUM6_RX,
930fb9
 	IFLA_GENEVE_LABEL,
930fb9
+	IFLA_GENEVE_TTL_INHERIT,
930fb9
 	__IFLA_GENEVE_MAX
930fb9
 };
930fb9
 #define IFLA_GENEVE_MAX	(__IFLA_GENEVE_MAX - 1)
930fb9
diff --git a/include/uapi/linux/if_packet.h b/include/uapi/linux/if_packet.h
930fb9
index 67b61d9..467b654 100644
930fb9
--- a/include/uapi/linux/if_packet.h
930fb9
+++ b/include/uapi/linux/if_packet.h
930fb9
@@ -57,6 +57,7 @@ struct sockaddr_ll {
930fb9
 #define PACKET_QDISC_BYPASS		20
930fb9
 #define PACKET_ROLLOVER_STATS		21
930fb9
 #define PACKET_FANOUT_DATA		22
930fb9
+#define PACKET_IGNORE_OUTGOING		23
930fb9
 
930fb9
 #define PACKET_FANOUT_HASH		0
930fb9
 #define PACKET_FANOUT_LB		1
930fb9
diff --git a/include/uapi/linux/in6.h b/include/uapi/linux/in6.h
930fb9
index 409bb3f..2bb132a 100644
930fb9
--- a/include/uapi/linux/in6.h
930fb9
+++ b/include/uapi/linux/in6.h
930fb9
@@ -177,6 +177,7 @@ struct in6_flowlabel_req {
930fb9
 #define IPV6_V6ONLY		26
930fb9
 #define IPV6_JOIN_ANYCAST	27
930fb9
 #define IPV6_LEAVE_ANYCAST	28
930fb9
+#define IPV6_MULTICAST_ALL	29
930fb9
 
930fb9
 /* IPV6_MTU_DISCOVER values */
930fb9
 #define IPV6_PMTUDISC_DONT		0
930fb9
diff --git a/include/uapi/linux/ip.h b/include/uapi/linux/ip.h
930fb9
index 883fd33..f4ecd2f 100644
930fb9
--- a/include/uapi/linux/ip.h
930fb9
+++ b/include/uapi/linux/ip.h
930fb9
@@ -168,6 +168,7 @@ enum
930fb9
 	IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN,
930fb9
 	IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST,
930fb9
 	IPV4_DEVCONF_DROP_GRATUITOUS_ARP,
930fb9
+	IPV4_DEVCONF_BC_FORWARDING,
930fb9
 	__IPV4_DEVCONF_MAX
930fb9
 };
930fb9
 
930fb9
diff --git a/include/uapi/linux/l2tp.h b/include/uapi/linux/l2tp.h
930fb9
index 1fe52a7..131c3a2 100644
930fb9
--- a/include/uapi/linux/l2tp.h
930fb9
+++ b/include/uapi/linux/l2tp.h
930fb9
@@ -60,14 +60,14 @@ struct sockaddr_l2tpip6 {
930fb9
 /*
930fb9
  * Commands.
930fb9
  * Valid TLVs of each command are:-
930fb9
- * TUNNEL_CREATE	- CONN_ID, pw_type, netns, ifname, ipinfo, udpinfo, udpcsum, vlanid
930fb9
+ * TUNNEL_CREATE	- CONN_ID, pw_type, netns, ifname, ipinfo, udpinfo, udpcsum
930fb9
  * TUNNEL_DELETE	- CONN_ID
930fb9
  * TUNNEL_MODIFY	- CONN_ID, udpcsum
930fb9
  * TUNNEL_GETSTATS	- CONN_ID, (stats)
930fb9
  * TUNNEL_GET		- CONN_ID, (...)
930fb9
- * SESSION_CREATE	- SESSION_ID, PW_TYPE, data_seq, cookie, peer_cookie, l2spec
930fb9
+ * SESSION_CREATE	- SESSION_ID, PW_TYPE, cookie, peer_cookie, l2spec
930fb9
  * SESSION_DELETE	- SESSION_ID
930fb9
- * SESSION_MODIFY	- SESSION_ID, data_seq
930fb9
+ * SESSION_MODIFY	- SESSION_ID
930fb9
  * SESSION_GET		- SESSION_ID, (...)
930fb9
  * SESSION_GETSTATS	- SESSION_ID, (stats)
930fb9
  *
930fb9
@@ -95,7 +95,7 @@ enum {
930fb9
 	L2TP_ATTR_PW_TYPE,		/* u16, enum l2tp_pwtype */
930fb9
 	L2TP_ATTR_ENCAP_TYPE,		/* u16, enum l2tp_encap_type */
930fb9
 	L2TP_ATTR_OFFSET,		/* u16 (not used) */
930fb9
-	L2TP_ATTR_DATA_SEQ,		/* u16 */
930fb9
+	L2TP_ATTR_DATA_SEQ,		/* u16 (not used) */
930fb9
 	L2TP_ATTR_L2SPEC_TYPE,		/* u8, enum l2tp_l2spec_type */
930fb9
 	L2TP_ATTR_L2SPEC_LEN,		/* u8 (not used) */
930fb9
 	L2TP_ATTR_PROTO_VERSION,	/* u8 */
930fb9
@@ -105,7 +105,7 @@ enum {
930fb9
 	L2TP_ATTR_SESSION_ID,		/* u32 */
930fb9
 	L2TP_ATTR_PEER_SESSION_ID,	/* u32 */
930fb9
 	L2TP_ATTR_UDP_CSUM,		/* u8 */
930fb9
-	L2TP_ATTR_VLAN_ID,		/* u16 */
930fb9
+	L2TP_ATTR_VLAN_ID,		/* u16 (not used) */
930fb9
 	L2TP_ATTR_COOKIE,		/* 0, 4 or 8 bytes */
930fb9
 	L2TP_ATTR_PEER_COOKIE,		/* 0, 4 or 8 bytes */
930fb9
 	L2TP_ATTR_DEBUG,		/* u32, enum l2tp_debug_flags */
930fb9
@@ -119,8 +119,8 @@ enum {
930fb9
 	L2TP_ATTR_IP_DADDR,		/* u32 */
930fb9
 	L2TP_ATTR_UDP_SPORT,		/* u16 */
930fb9
 	L2TP_ATTR_UDP_DPORT,		/* u16 */
930fb9
-	L2TP_ATTR_MTU,			/* u16 */
930fb9
-	L2TP_ATTR_MRU,			/* u16 */
930fb9
+	L2TP_ATTR_MTU,			/* u16 (not used) */
930fb9
+	L2TP_ATTR_MRU,			/* u16 (not used) */
930fb9
 	L2TP_ATTR_STATS,		/* nested */
930fb9
 	L2TP_ATTR_IP6_SADDR,		/* struct in6_addr */
930fb9
 	L2TP_ATTR_IP6_DADDR,		/* struct in6_addr */
930fb9
@@ -169,6 +169,7 @@ enum l2tp_encap_type {
930fb9
 	L2TP_ENCAPTYPE_IP,
930fb9
 };
930fb9
 
930fb9
+/* For L2TP_ATTR_DATA_SEQ. Unused. */
930fb9
 enum l2tp_seqmode {
930fb9
 	L2TP_SEQ_NONE = 0,
930fb9
 	L2TP_SEQ_IP = 1,
930fb9
diff --git a/include/uapi/linux/neighbour.h b/include/uapi/linux/neighbour.h
930fb9
index 904db61..9981554 100644
930fb9
--- a/include/uapi/linux/neighbour.h
930fb9
+++ b/include/uapi/linux/neighbour.h
930fb9
@@ -43,6 +43,7 @@ enum {
930fb9
 #define NTF_PROXY	0x08	/* == ATF_PUBL */
930fb9
 #define NTF_EXT_LEARNED	0x10
930fb9
 #define NTF_OFFLOADED   0x20
930fb9
+#define NTF_STICKY	0x40
930fb9
 #define NTF_ROUTER	0x80
930fb9
 
930fb9
 /*
930fb9
diff --git a/include/uapi/linux/netconf.h b/include/uapi/linux/netconf.h
930fb9
index 86ac1eb..229e885 100644
930fb9
--- a/include/uapi/linux/netconf.h
930fb9
+++ b/include/uapi/linux/netconf.h
930fb9
@@ -18,6 +18,7 @@ enum {
930fb9
 	NETCONFA_PROXY_NEIGH,
930fb9
 	NETCONFA_IGNORE_ROUTES_WITH_LINKDOWN,
930fb9
 	NETCONFA_INPUT,
930fb9
+	NETCONFA_BC_FORWARDING,
930fb9
 	__NETCONFA_MAX
930fb9
 };
930fb9
 #define NETCONFA_MAX	(__NETCONFA_MAX - 1)
930fb9
diff --git a/include/uapi/linux/pkt_cls.h b/include/uapi/linux/pkt_cls.h
930fb9
index b451225..401d0c1 100644
930fb9
--- a/include/uapi/linux/pkt_cls.h
930fb9
+++ b/include/uapi/linux/pkt_cls.h
930fb9
@@ -45,6 +45,7 @@ enum {
930fb9
 				   * the skb and act like everything
930fb9
 				   * is alright.
930fb9
 				   */
930fb9
+#define TC_ACT_VALUE_MAX	TC_ACT_TRAP
930fb9
 
930fb9
 /* There is a special kind of actions called "extended actions",
930fb9
  * which need a value parameter. These have a local opcode located in
930fb9
@@ -55,11 +56,12 @@ enum {
930fb9
 #define __TC_ACT_EXT_SHIFT 28
930fb9
 #define __TC_ACT_EXT(local) ((local) << __TC_ACT_EXT_SHIFT)
930fb9
 #define TC_ACT_EXT_VAL_MASK ((1 << __TC_ACT_EXT_SHIFT) - 1)
930fb9
-#define TC_ACT_EXT_CMP(combined, opcode) \
930fb9
-	(((combined) & (~TC_ACT_EXT_VAL_MASK)) == opcode)
930fb9
+#define TC_ACT_EXT_OPCODE(combined) ((combined) & (~TC_ACT_EXT_VAL_MASK))
930fb9
+#define TC_ACT_EXT_CMP(combined, opcode) (TC_ACT_EXT_OPCODE(combined) == opcode)
930fb9
 
930fb9
 #define TC_ACT_JUMP __TC_ACT_EXT(1)
930fb9
 #define TC_ACT_GOTO_CHAIN __TC_ACT_EXT(2)
930fb9
+#define TC_ACT_EXT_OPCODE_MAX	TC_ACT_GOTO_CHAIN
930fb9
 
930fb9
 /* Action type identifiers*/
930fb9
 enum {
930fb9
@@ -478,12 +480,40 @@ enum {
930fb9
 	TCA_FLOWER_KEY_ENC_IP_TTL,	/* u8 */
930fb9
 	TCA_FLOWER_KEY_ENC_IP_TTL_MASK,	/* u8 */
930fb9
 
930fb9
+	TCA_FLOWER_KEY_ENC_OPTS,
930fb9
+	TCA_FLOWER_KEY_ENC_OPTS_MASK,
930fb9
+
930fb9
+	TCA_FLOWER_IN_HW_COUNT,
930fb9
+
930fb9
 	__TCA_FLOWER_MAX,
930fb9
 };
930fb9
 
930fb9
 #define TCA_FLOWER_MAX (__TCA_FLOWER_MAX - 1)
930fb9
 
930fb9
 enum {
930fb9
+	TCA_FLOWER_KEY_ENC_OPTS_UNSPEC,
930fb9
+	TCA_FLOWER_KEY_ENC_OPTS_GENEVE, /* Nested
930fb9
+					 * TCA_FLOWER_KEY_ENC_OPT_GENEVE_
930fb9
+					 * attributes
930fb9
+					 */
930fb9
+	__TCA_FLOWER_KEY_ENC_OPTS_MAX,
930fb9
+};
930fb9
+
930fb9
+#define TCA_FLOWER_KEY_ENC_OPTS_MAX (__TCA_FLOWER_KEY_ENC_OPTS_MAX - 1)
930fb9
+
930fb9
+enum {
930fb9
+	TCA_FLOWER_KEY_ENC_OPT_GENEVE_UNSPEC,
930fb9
+	TCA_FLOWER_KEY_ENC_OPT_GENEVE_CLASS,            /* u16 */
930fb9
+	TCA_FLOWER_KEY_ENC_OPT_GENEVE_TYPE,             /* u8 */
930fb9
+	TCA_FLOWER_KEY_ENC_OPT_GENEVE_DATA,             /* 4 to 128 bytes */
930fb9
+
930fb9
+	__TCA_FLOWER_KEY_ENC_OPT_GENEVE_MAX,
930fb9
+};
930fb9
+
930fb9
+#define TCA_FLOWER_KEY_ENC_OPT_GENEVE_MAX \
930fb9
+		(__TCA_FLOWER_KEY_ENC_OPT_GENEVE_MAX - 1)
930fb9
+
930fb9
+enum {
930fb9
 	TCA_FLOWER_KEY_FLAGS_IS_FRAGMENT = (1 << 0),
930fb9
 	TCA_FLOWER_KEY_FLAGS_FRAG_IS_FIRST = (1 << 1),
930fb9
 };
930fb9
diff --git a/include/uapi/linux/pkt_sched.h b/include/uapi/linux/pkt_sched.h
930fb9
index d9cc9dc..e9b7244 100644
930fb9
--- a/include/uapi/linux/pkt_sched.h
930fb9
+++ b/include/uapi/linux/pkt_sched.h
930fb9
@@ -124,6 +124,21 @@ struct tc_fifo_qopt {
930fb9
 	__u32	limit;	/* Queue length: bytes for bfifo, packets for pfifo */
930fb9
 };
930fb9
 
930fb9
+/* SKBPRIO section */
930fb9
+
930fb9
+/*
930fb9
+ * Priorities go from zero to (SKBPRIO_MAX_PRIORITY - 1).
930fb9
+ * SKBPRIO_MAX_PRIORITY should be at least 64 in order for skbprio to be able
930fb9
+ * to map one to one the DS field of IPV4 and IPV6 headers.
930fb9
+ * Memory allocation grows linearly with SKBPRIO_MAX_PRIORITY.
930fb9
+ */
930fb9
+
930fb9
+#define SKBPRIO_MAX_PRIORITY 64
930fb9
+
930fb9
+struct tc_skbprio_qopt {
930fb9
+	__u32	limit;		/* Queue length in packets. */
930fb9
+};
930fb9
+
930fb9
 /* PRIO section */
930fb9
 
930fb9
 #define TCQ_PRIO_BANDS	16
930fb9
@@ -380,9 +395,9 @@ enum {
930fb9
 struct tc_htb_xstats {
930fb9
 	__u32 lends;
930fb9
 	__u32 borrows;
930fb9
-	__u32 giants;	/* too big packets (rate will not be accurate) */
930fb9
-	__u32 tokens;
930fb9
-	__u32 ctokens;
930fb9
+	__u32 giants;	/* unused since 'Make HTB scheduler work with TSO.' */
930fb9
+	__s32 tokens;
930fb9
+	__s32 ctokens;
930fb9
 };
930fb9
 
930fb9
 /* HFSC section */
930fb9
diff --git a/include/uapi/linux/rtnetlink.h b/include/uapi/linux/rtnetlink.h
930fb9
index c3a7d8e..8c1d600 100644
930fb9
--- a/include/uapi/linux/rtnetlink.h
930fb9
+++ b/include/uapi/linux/rtnetlink.h
930fb9
@@ -150,6 +150,13 @@ enum {
930fb9
 	RTM_NEWCACHEREPORT = 96,
930fb9
 #define RTM_NEWCACHEREPORT RTM_NEWCACHEREPORT
930fb9
 
930fb9
+	RTM_NEWCHAIN = 100,
930fb9
+#define RTM_NEWCHAIN RTM_NEWCHAIN
930fb9
+	RTM_DELCHAIN,
930fb9
+#define RTM_DELCHAIN RTM_DELCHAIN
930fb9
+	RTM_GETCHAIN,
930fb9
+#define RTM_GETCHAIN RTM_GETCHAIN
930fb9
+
930fb9
 	__RTM_MAX,
930fb9
 #define RTM_MAX		(((__RTM_MAX + 3) & ~3) - 1)
930fb9
 };
930fb9
diff --git a/include/uapi/linux/tcp.h b/include/uapi/linux/tcp.h
930fb9
index 2e766cf..6ec7766 100644
930fb9
--- a/include/uapi/linux/tcp.h
930fb9
+++ b/include/uapi/linux/tcp.h
930fb9
@@ -127,6 +127,10 @@ enum {
930fb9
 
930fb9
 #define TCP_CM_INQ		TCP_INQ
930fb9
 
930fb9
+#define TCP_REPAIR_ON		1
930fb9
+#define TCP_REPAIR_OFF		0
930fb9
+#define TCP_REPAIR_OFF_NO_WP	-1	/* Turn off without window probes */
930fb9
+
930fb9
 struct tcp_repair_opt {
930fb9
 	__u32	opt_code;
930fb9
 	__u32	opt_val;
930fb9
@@ -231,6 +235,11 @@ struct tcp_info {
930fb9
 
930fb9
 	__u32	tcpi_delivered;
930fb9
 	__u32	tcpi_delivered_ce;
930fb9
+
930fb9
+	__u64	tcpi_bytes_sent;     /* RFC4898 tcpEStatsPerfHCDataOctetsOut */
930fb9
+	__u64	tcpi_bytes_retrans;  /* RFC4898 tcpEStatsPerfOctetsRetrans */
930fb9
+	__u32	tcpi_dsack_dups;     /* RFC4898 tcpEStatsStackDSACKDups */
930fb9
+	__u32	tcpi_reord_seen;     /* reordering events seen */
930fb9
 };
930fb9
 
930fb9
 /* netlink attributes types for SCM_TIMESTAMPING_OPT_STATS */
930fb9
@@ -253,7 +262,10 @@ enum {
930fb9
 	TCP_NLA_SND_SSTHRESH,	/* Slow start size threshold */
930fb9
 	TCP_NLA_DELIVERED,	/* Data pkts delivered incl. out-of-order */
930fb9
 	TCP_NLA_DELIVERED_CE,	/* Like above but only ones w/ CE marks */
930fb9
-
930fb9
+	TCP_NLA_BYTES_SENT,	/* Data bytes sent including retransmission */
930fb9
+	TCP_NLA_BYTES_RETRANS,	/* Data bytes retransmitted */
930fb9
+	TCP_NLA_DSACK_DUPS,	/* DSACK blocks received */
930fb9
+	TCP_NLA_REORD_SEEN,	/* reordering events seen */
930fb9
 };
930fb9
 
930fb9
 /* for TCP_MD5SIG socket option */
930fb9
diff --git a/include/uapi/linux/xfrm.h b/include/uapi/linux/xfrm.h
930fb9
index 93fb192..5cdda9d 100644
930fb9
--- a/include/uapi/linux/xfrm.h
930fb9
+++ b/include/uapi/linux/xfrm.h
930fb9
@@ -305,9 +305,12 @@ enum xfrm_attr_type_t {
930fb9
 	XFRMA_ADDRESS_FILTER,	/* struct xfrm_address_filter */
930fb9
 	XFRMA_PAD,
930fb9
 	XFRMA_OFFLOAD_DEV,	/* struct xfrm_state_offload */
930fb9
-	XFRMA_OUTPUT_MARK,	/* __u32 */
930fb9
+	XFRMA_SET_MARK,		/* __u32 */
930fb9
+	XFRMA_SET_MARK_MASK,	/* __u32 */
930fb9
+	XFRMA_IF_ID,		/* __u32 */
930fb9
 	__XFRMA_MAX
930fb9
 
930fb9
+#define XFRMA_OUTPUT_MARK XFRMA_SET_MARK	/* Compatibility */
930fb9
 #define XFRMA_MAX (__XFRMA_MAX - 1)
930fb9
 };
930fb9
 
930fb9
-- 
930fb9
1.8.3.1
930fb9