naccyde / rpms / iproute

Forked from rpms/iproute 8 months ago
Clone

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

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