diff --git a/SOURCES/0001-Confirm-success-for-each-tc-batch-command.patch b/SOURCES/0001-Confirm-success-for-each-tc-batch-command.patch
index 1920f9f..844fec6 100644
--- a/SOURCES/0001-Confirm-success-for-each-tc-batch-command.patch
+++ b/SOURCES/0001-Confirm-success-for-each-tc-batch-command.patch
@@ -35,7 +35,7 @@ Signed-off-by: Phil Sutter <psutter@redhat.com>
  2 files changed, 14 insertions(+), 2 deletions(-)
 
 diff --git a/man/man8/tc.8 b/man/man8/tc.8
-index f96911a..a341a8f 100644
+index f96911ae1d77d..a341a8f995f85 100644
 --- a/man/man8/tc.8
 +++ b/man/man8/tc.8
 @@ -62,7 +62,7 @@ tc \- show / manipulate traffic control settings
@@ -47,21 +47,21 @@ index f96911a..a341a8f 100644
  \fB[ \fB-n\fR[\fIetns\fR] name \fB] \fR|
  \fB[ \fB-nm \fR| \fB-nam\fR[\fIes\fR] \fB] \fR|
  \fB[ \fR{ \fB-cf \fR| \fB-c\fR[\fIonf\fR] \fR} \fB[ filename ] \fB] \fR}
-@@ -603,6 +603,12 @@ don't terminate tc on errors in batch mode.
+@@ -602,6 +602,12 @@ First failure will cause termination of tc.
+ don't terminate tc on errors in batch mode.
  If there were any errors during execution of the commands, the application return code will be non zero.
  
- .TP
++.TP
 +.BR "\-OK"
 +in batch mode, print
 +.B OK
 +and a new line on standard output after each successfully interpreted command.
 +
-+.TP
+ .TP
  .BR "\-n" , " \-net" , " \-netns " <NETNS>
  switches
- .B tc
 diff --git a/tc/tc.c b/tc/tc.c
-index 8e64a82..360c9f1 100644
+index 8e64a82b4271c..360c9f11c235b 100644
 --- a/tc/tc.c
 +++ b/tc/tc.c
 @@ -42,6 +42,7 @@ int batch_mode;
@@ -101,5 +101,5 @@ index 8e64a82..360c9f1 100644
  			argc--;	argv++;
  			if (argc <= 1)
 -- 
-1.8.3.1
+2.21.0
 
diff --git a/SOURCES/0002-Really-fix-get_addr-and-get_prefix-error-messages.patch b/SOURCES/0002-Really-fix-get_addr-and-get_prefix-error-messages.patch
index a54aeea..34aed4d 100644
--- a/SOURCES/0002-Really-fix-get_addr-and-get_prefix-error-messages.patch
+++ b/SOURCES/0002-Really-fix-get_addr-and-get_prefix-error-messages.patch
@@ -50,7 +50,7 @@ Date:   Tue Aug 1 18:36:11 2017 +0200
  1 file changed, 9 insertions(+), 2 deletions(-)
 
 diff --git a/lib/utils.c b/lib/utils.c
-index 6d5642f..7d6ee53 100644
+index 6d5642f4f1f3f..7d6ee53ad938d 100644
 --- a/lib/utils.c
 +++ b/lib/utils.c
 @@ -613,12 +613,19 @@ done:
@@ -84,5 +84,5 @@ index 6d5642f..7d6ee53 100644
  	}
  	return 0;
 -- 
-1.8.3.1
+2.21.0
 
diff --git a/SOURCES/0003-tc-simple-Fix-documentation.patch b/SOURCES/0003-tc-simple-Fix-documentation.patch
index f7edb1e..dc79174 100644
--- a/SOURCES/0003-tc-simple-Fix-documentation.patch
+++ b/SOURCES/0003-tc-simple-Fix-documentation.patch
@@ -23,7 +23,7 @@ Date:   Thu Aug 3 17:00:51 2017 +0200
  2 files changed, 28 insertions(+), 5 deletions(-)
 
 diff --git a/man/man8/tc-simple.8 b/man/man8/tc-simple.8
-index 2206dc3..7363ab5 100644
+index 2206dc3b88614..7363ab563e189 100644
 --- a/man/man8/tc-simple.8
 +++ b/man/man8/tc-simple.8
 @@ -6,15 +6,37 @@ simple - basic example action
@@ -81,7 +81,7 @@ index 2206dc3..7363ab5 100644
  .BR tc (8)
 +.BR tc-actions (8)
 diff --git a/tc/m_simple.c b/tc/m_simple.c
-index 3a8bd91..ab63384 100644
+index 3a8bd916d3bfb..ab633849f7b45 100644
 --- a/tc/m_simple.c
 +++ b/tc/m_simple.c
 @@ -81,10 +81,10 @@
@@ -98,5 +98,5 @@ index 3a8bd91..ab63384 100644
  
  static void usage(void)
 -- 
-1.8.3.1
+2.21.0
 
diff --git a/SOURCES/0004-tc-fix-m_simple-usage.patch b/SOURCES/0004-tc-fix-m_simple-usage.patch
index f25c633..14d24ef 100644
--- a/SOURCES/0004-tc-fix-m_simple-usage.patch
+++ b/SOURCES/0004-tc-fix-m_simple-usage.patch
@@ -18,7 +18,7 @@ Date:   Thu Aug 3 16:10:18 2017 -0700
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 diff --git a/tc/m_simple.c b/tc/m_simple.c
-index ab63384..65e48ad 100644
+index ab633849f7b45..65e48addf161b 100644
 --- a/tc/m_simple.c
 +++ b/tc/m_simple.c
 @@ -83,8 +83,8 @@ static void explain(void)
@@ -33,5 +33,5 @@ index ab63384..65e48ad 100644
  
  static void usage(void)
 -- 
-1.8.3.1
+2.21.0
 
diff --git a/SOURCES/0005-bpf-Make-bytecode-file-reading-a-little-more-robust.patch b/SOURCES/0005-bpf-Make-bytecode-file-reading-a-little-more-robust.patch
index d135b59..5563224 100644
--- a/SOURCES/0005-bpf-Make-bytecode-file-reading-a-little-more-robust.patch
+++ b/SOURCES/0005-bpf-Make-bytecode-file-reading-a-little-more-robust.patch
@@ -34,7 +34,7 @@ Date:   Wed Aug 2 14:57:56 2017 +0200
  1 file changed, 24 insertions(+), 8 deletions(-)
 
 diff --git a/lib/bpf.c b/lib/bpf.c
-index 04ee1ab..73dac5c 100644
+index 04ee1ab9b2bc3..73dac5c37cc91 100644
 --- a/lib/bpf.c
 +++ b/lib/bpf.c
 @@ -160,11 +160,11 @@ static int bpf_parse_string(char *arg, bool from_file, __u16 *bpf_len,
@@ -92,5 +92,5 @@ index 04ee1ab..73dac5c 100644
  		*need_release = true;
  		*bpf_string = tmp_string;
 -- 
-1.8.3.1
+2.21.0
 
diff --git a/SOURCES/0006-ss-Fix-for-added-diag-support-check.patch b/SOURCES/0006-ss-Fix-for-added-diag-support-check.patch
index 3b2f237..009cc5f 100644
--- a/SOURCES/0006-ss-Fix-for-added-diag-support-check.patch
+++ b/SOURCES/0006-ss-Fix-for-added-diag-support-check.patch
@@ -36,7 +36,7 @@ Date:   Mon Aug 28 19:31:22 2017 +0200
  1 file changed, 16 insertions(+), 4 deletions(-)
 
 diff --git a/misc/ss.c b/misc/ss.c
-index 12763c9..b84baf3 100644
+index 12763c9f42686..b84baf3b57fe5 100644
 --- a/misc/ss.c
 +++ b/misc/ss.c
 @@ -2735,7 +2735,7 @@ static int tcp_show_netlink_file(struct filter *f)
@@ -89,5 +89,5 @@ index 12763c9..b84baf3 100644
  		sctp_show(&current_filter);
  
 -- 
-1.8.3.1
+2.21.0
 
diff --git a/SOURCES/0007-tc-simple.8-Fix-reference-to-non-existing-tc-actions.patch b/SOURCES/0007-tc-simple.8-Fix-reference-to-non-existing-tc-actions.patch
index 9028079..6a5dd67 100644
--- a/SOURCES/0007-tc-simple.8-Fix-reference-to-non-existing-tc-actions.patch
+++ b/SOURCES/0007-tc-simple.8-Fix-reference-to-non-existing-tc-actions.patch
@@ -14,7 +14,7 @@ description.
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/man/man8/tc-simple.8 b/man/man8/tc-simple.8
-index 7363ab5..a0deb0b 100644
+index 7363ab563e189..a0deb0b13a82f 100644
 --- a/man/man8/tc-simple.8
 +++ b/man/man8/tc-simple.8
 @@ -36,7 +36,7 @@ Indicate how
@@ -27,5 +27,5 @@ index 7363ab5..a0deb0b 100644
  The following example makes the kernel yell "Incoming ICMP!" every time it sees
  an incoming ICMP on eth0. Steps are:
 -- 
-1.8.3.1
+2.21.0
 
diff --git a/SOURCES/0008-lib-bpf-Fix-bytecode-file-parsing.patch b/SOURCES/0008-lib-bpf-Fix-bytecode-file-parsing.patch
index f9247d7..411953e 100644
--- a/SOURCES/0008-lib-bpf-Fix-bytecode-file-parsing.patch
+++ b/SOURCES/0008-lib-bpf-Fix-bytecode-file-parsing.patch
@@ -33,7 +33,7 @@ Date:   Tue Aug 29 17:09:45 2017 +0200
  1 file changed, 5 insertions(+), 2 deletions(-)
 
 diff --git a/lib/bpf.c b/lib/bpf.c
-index 73dac5c..3aabf44 100644
+index 73dac5c37cc91..3aabf44d1abf8 100644
 --- a/lib/bpf.c
 +++ b/lib/bpf.c
 @@ -160,8 +160,9 @@ static int bpf_parse_string(char *arg, bool from_file, __u16 *bpf_len,
@@ -70,5 +70,5 @@ index 73dac5c..3aabf44 100644
  
  		if (!feof(fp)) {
 -- 
-1.8.3.1
+2.21.0
 
diff --git a/SOURCES/0009-tc-simple.8-Fix-one-more-reference-to-non-existing-t.patch b/SOURCES/0009-tc-simple.8-Fix-one-more-reference-to-non-existing-t.patch
index 4ce8185..3f0745e 100644
--- a/SOURCES/0009-tc-simple.8-Fix-one-more-reference-to-non-existing-t.patch
+++ b/SOURCES/0009-tc-simple.8-Fix-one-more-reference-to-non-existing-t.patch
@@ -13,7 +13,7 @@ Previous fix missed to update the SEE ALSO section as well.
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/man/man8/tc-simple.8 b/man/man8/tc-simple.8
-index a0deb0b..beab313 100644
+index a0deb0b13a82f..beab3132ee90e 100644
 --- a/man/man8/tc-simple.8
 +++ b/man/man8/tc-simple.8
 @@ -96,4 +96,4 @@ display stats again and observe increment by 1
@@ -23,5 +23,5 @@ index a0deb0b..beab313 100644
 -.BR tc-actions (8)
 +.BR tc-pedit (8)
 -- 
-1.8.3.1
+2.21.0
 
diff --git a/SOURCES/0010-tc-m_xt-Prevent-a-segfault-in-libipt.patch b/SOURCES/0010-tc-m_xt-Prevent-a-segfault-in-libipt.patch
index 253d00f..d1dbfdf 100644
--- a/SOURCES/0010-tc-m_xt-Prevent-a-segfault-in-libipt.patch
+++ b/SOURCES/0010-tc-m_xt-Prevent-a-segfault-in-libipt.patch
@@ -22,7 +22,7 @@ Date:   Tue May 23 15:40:57 2017 +0200
  1 file changed, 4 insertions(+), 1 deletion(-)
 
 diff --git a/tc/m_xt.c b/tc/m_xt.c
-index e59df8e..ad52d23 100644
+index e59df8e10afef..ad52d239caf61 100644
 --- a/tc/m_xt.c
 +++ b/tc/m_xt.c
 @@ -146,6 +146,9 @@ static int parse_ipt(struct action_util *a, int *argc_p,
@@ -45,5 +45,5 @@ index e59df8e..ad52d23 100644
  			if (m != NULL && m->parse != NULL) {
  				m->parse(c - m->option_offset, argv, 0,
 -- 
-1.8.3.1
+2.21.0
 
diff --git a/SOURCES/0011-link_gre6-really-support-encaplimit-option.patch b/SOURCES/0011-link_gre6-really-support-encaplimit-option.patch
index 5a6eefa..feddc9a 100644
--- a/SOURCES/0011-link_gre6-really-support-encaplimit-option.patch
+++ b/SOURCES/0011-link_gre6-really-support-encaplimit-option.patch
@@ -24,7 +24,7 @@ Date:   Wed Jun 14 18:45:42 2017 +0200
  1 file changed, 12 insertions(+)
 
 diff --git a/ip/link_gre6.c b/ip/link_gre6.c
-index 1b4fb05..76416b2 100644
+index 1b4fb051b37f7..76416b26ff0e9 100644
 --- a/ip/link_gre6.c
 +++ b/ip/link_gre6.c
 @@ -339,6 +339,18 @@ get_failed:
@@ -47,5 +47,5 @@ index 1b4fb05..76416b2 100644
  			usage();
  		argc--; argv++;
 -- 
-1.8.3.1
+2.21.0
 
diff --git a/SOURCES/0012-tc-fix-typo-in-manpage.patch b/SOURCES/0012-tc-fix-typo-in-manpage.patch
index 6041fbe..1b6b2f1 100644
--- a/SOURCES/0012-tc-fix-typo-in-manpage.patch
+++ b/SOURCES/0012-tc-fix-typo-in-manpage.patch
@@ -20,7 +20,7 @@ Date:   Fri Jul 7 15:08:33 2017 +0200
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 diff --git a/man/man8/tc-csum.8 b/man/man8/tc-csum.8
-index 718301d..409ab71 100644
+index 718301ded069b..409ab71791cce 100644
 --- a/man/man8/tc-csum.8
 +++ b/man/man8/tc-csum.8
 @@ -29,9 +29,9 @@ csum - checksum update action
@@ -36,5 +36,5 @@ index 718301d..409ab71 100644
  .TP
  .I TARGET
 -- 
-1.8.3.1
+2.21.0
 
diff --git a/SOURCES/0013-ip-neigh-allow-flush-FAILED-neighbour-entry.patch b/SOURCES/0013-ip-neigh-allow-flush-FAILED-neighbour-entry.patch
index ed4b410..7fcbed2 100644
--- a/SOURCES/0013-ip-neigh-allow-flush-FAILED-neighbour-entry.patch
+++ b/SOURCES/0013-ip-neigh-allow-flush-FAILED-neighbour-entry.patch
@@ -28,7 +28,7 @@ Signed-off-by: Matteo Croce <mcroce@redhat.com>
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/ip/ipneigh.c b/ip/ipneigh.c
-index 4d8fc85..9c38a60 100644
+index 4d8fc85217451..9c38a60ddf4fe 100644
 --- a/ip/ipneigh.c
 +++ b/ip/ipneigh.c
 @@ -445,7 +445,6 @@ static int do_show_or_flush(int argc, char **argv, int flush)
@@ -48,5 +48,5 @@ index 4d8fc85..9c38a60 100644
  		printf("*** Flush not complete bailing out after %d rounds\n",
  			MAX_ROUNDS);
 -- 
-1.8.3.1
+2.21.0
 
diff --git a/SOURCES/0014-netns-avoid-directory-traversal.patch b/SOURCES/0014-netns-avoid-directory-traversal.patch
index fc03b02..866d9f4 100644
--- a/SOURCES/0014-netns-avoid-directory-traversal.patch
+++ b/SOURCES/0014-netns-avoid-directory-traversal.patch
@@ -26,7 +26,7 @@ Date:   Thu Jul 20 00:36:32 2017 +0200
  1 file changed, 10 insertions(+)
 
 diff --git a/ip/ipnetns.c b/ip/ipnetns.c
-index 0b0378a..4254994 100644
+index 0b0378ab6560c..4254994442ccd 100644
 --- a/ip/ipnetns.c
 +++ b/ip/ipnetns.c
 @@ -766,6 +766,11 @@ static int netns_monitor(int argc, char **argv)
@@ -54,5 +54,5 @@ index 0b0378a..4254994 100644
  	    (matches(*argv, "lst") == 0)) {
  		netns_map_init();
 -- 
-1.8.3.1
+2.21.0
 
diff --git a/SOURCES/0015-utils-return-default-family-when-rtm_family-is-not-R.patch b/SOURCES/0015-utils-return-default-family-when-rtm_family-is-not-R.patch
index 5d59c09..7cebc46 100644
--- a/SOURCES/0015-utils-return-default-family-when-rtm_family-is-not-R.patch
+++ b/SOURCES/0015-utils-return-default-family-when-rtm_family-is-not-R.patch
@@ -37,7 +37,7 @@ Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
  1 file changed, 7 insertions(+), 1 deletion(-)
 
 diff --git a/lib/utils.c b/lib/utils.c
-index 7d6ee53..9f55391 100644
+index 7d6ee53ad938d..9f55391d3c1ea 100644
 --- a/lib/utils.c
 +++ b/lib/utils.c
 @@ -1219,5 +1219,11 @@ int get_real_family(int rtm_type, int rtm_family)
@@ -54,5 +54,5 @@ index 7d6ee53..9f55391 100644
 +	return rtm_family;
  }
 -- 
-1.8.3.1
+2.21.0
 
diff --git a/SOURCES/0016-link_gre6-Fix-for-changing-tclass-flowlabel.patch b/SOURCES/0016-link_gre6-Fix-for-changing-tclass-flowlabel.patch
index f098bbe..3748fb2 100644
--- a/SOURCES/0016-link_gre6-Fix-for-changing-tclass-flowlabel.patch
+++ b/SOURCES/0016-link_gre6-Fix-for-changing-tclass-flowlabel.patch
@@ -25,7 +25,7 @@ Date:   Fri Sep 1 16:08:08 2017 +0200
  1 file changed, 2 insertions(+)
 
 diff --git a/ip/link_gre6.c b/ip/link_gre6.c
-index 76416b2..fe3ab64 100644
+index 76416b26ff0e9..fe3ab641a86c2 100644
 --- a/ip/link_gre6.c
 +++ b/ip/link_gre6.c
 @@ -282,6 +282,7 @@ get_failed:
@@ -45,5 +45,5 @@ index 76416b2..fe3ab64 100644
  				flags &= ~IP6_TNL_F_USE_ORIG_FLOWLABEL;
  			}
 -- 
-1.8.3.1
+2.21.0
 
diff --git a/SOURCES/0017-netlink-Change-rtnl_dump_done-to-always-show-error.patch b/SOURCES/0017-netlink-Change-rtnl_dump_done-to-always-show-error.patch
index c8d1956..34e220a 100644
--- a/SOURCES/0017-netlink-Change-rtnl_dump_done-to-always-show-error.patch
+++ b/SOURCES/0017-netlink-Change-rtnl_dump_done-to-always-show-error.patch
@@ -45,7 +45,7 @@ Signed-off-by: Hangbin Liu <haliu@redhat.com>
  1 file changed, 17 insertions(+), 11 deletions(-)
 
 diff --git a/lib/libnetlink.c b/lib/libnetlink.c
-index 9303b66..e91bd5a 100644
+index 9303b6686e2c8..e91bd5a02b956 100644
 --- a/lib/libnetlink.c
 +++ b/lib/libnetlink.c
 @@ -266,21 +266,27 @@ static int rtnl_dump_done(const struct rtnl_handle *rth,
@@ -88,5 +88,5 @@ index 9303b66..e91bd5a 100644
  }
  
 -- 
-1.8.3.1
+2.21.0
 
diff --git a/SOURCES/0018-libnetlink-drop-unused-parameter-to-rtnl_dump_done.patch b/SOURCES/0018-libnetlink-drop-unused-parameter-to-rtnl_dump_done.patch
index cccda65..65847b2 100644
--- a/SOURCES/0018-libnetlink-drop-unused-parameter-to-rtnl_dump_done.patch
+++ b/SOURCES/0018-libnetlink-drop-unused-parameter-to-rtnl_dump_done.patch
@@ -20,7 +20,7 @@ Signed-off-by: Hangbin Liu <haliu@redhat.com>
  1 file changed, 2 insertions(+), 3 deletions(-)
 
 diff --git a/lib/libnetlink.c b/lib/libnetlink.c
-index e91bd5a..b08518d 100644
+index e91bd5a02b956..b08518d81f2dd 100644
 --- a/lib/libnetlink.c
 +++ b/lib/libnetlink.c
 @@ -261,8 +261,7 @@ int rtnl_dump_request_n(struct rtnl_handle *rth, struct nlmsghdr *n)
@@ -43,5 +43,5 @@ index e91bd5a..b08518d 100644
  						return -1;
  
 -- 
-1.8.3.1
+2.21.0
 
diff --git a/SOURCES/0019-iproute-Add-support-for-extended-ack-to-rtnl_talk.patch b/SOURCES/0019-iproute-Add-support-for-extended-ack-to-rtnl_talk.patch
index 84cded6..7d0075e 100644
--- a/SOURCES/0019-iproute-Add-support-for-extended-ack-to-rtnl_talk.patch
+++ b/SOURCES/0019-iproute-Add-support-for-extended-ack-to-rtnl_talk.patch
@@ -30,12 +30,12 @@ squash! iproute: Add support for extended ack to rtnl_talk
 ---
  include/libnetlink.h    |   6 +++
  include/linux/netlink.h |   1 +
- lib/Makefile            |   7 ++++
- lib/libnetlink.c        | 109 ++++++++++++++++++++++++++++++++++++++++++++----
+ lib/Makefile            |   7 +++
+ lib/libnetlink.c        | 109 +++++++++++++++++++++++++++++++++++++---
  4 files changed, 116 insertions(+), 7 deletions(-)
 
 diff --git a/include/libnetlink.h b/include/libnetlink.h
-index bd0267d..654aebc 100644
+index bd0267dfcc02a..654aebc0f7632 100644
 --- a/include/libnetlink.h
 +++ b/include/libnetlink.h
 @@ -65,6 +65,9 @@ typedef int (*rtnl_listen_filter_t)(const struct sockaddr_nl *,
@@ -59,7 +59,7 @@ index bd0267d..654aebc 100644
  				   struct nlmsghdr *answer, size_t len)
  	__attribute__((warn_unused_result));
 diff --git a/include/linux/netlink.h b/include/linux/netlink.h
-index a982b3c..d1e26a2 100644
+index a982b3c004395..d1e26a2bcdcbb 100644
 --- a/include/linux/netlink.h
 +++ b/include/linux/netlink.h
 @@ -113,6 +113,7 @@ struct nlmsgerr {
@@ -71,7 +71,7 @@ index a982b3c..d1e26a2 100644
  struct nl_pktinfo {
  	__u32	group;
 diff --git a/lib/Makefile b/lib/Makefile
-index 1d24ca2..f81888c 100644
+index 1d24ca24b9a39..f81888cca974f 100644
 --- a/lib/Makefile
 +++ b/lib/Makefile
 @@ -4,6 +4,13 @@ ifeq ($(IP_CONFIG_SETNS),y)
@@ -89,7 +89,7 @@ index 1d24ca2..f81888c 100644
  
  UTILOBJ = utils.o rt_names.o ll_types.o ll_proto.o ll_addr.o \
 diff --git a/lib/libnetlink.c b/lib/libnetlink.c
-index b08518d..a057831 100644
+index b08518d81f2dd..a0578312e83f8 100644
 --- a/lib/libnetlink.c
 +++ b/lib/libnetlink.c
 @@ -36,6 +36,79 @@
@@ -251,5 +251,5 @@ index b08518d..a057831 100644
  
  int rtnl_listen_all_nsid(struct rtnl_handle *rth)
 -- 
-1.8.3.1
+2.21.0
 
diff --git a/SOURCES/0020-iplink-check-for-message-truncation-in-iplink_get.patch b/SOURCES/0020-iplink-check-for-message-truncation-in-iplink_get.patch
index 00b71ef..ab7d10d 100644
--- a/SOURCES/0020-iplink-check-for-message-truncation-in-iplink_get.patch
+++ b/SOURCES/0020-iplink-check-for-message-truncation-in-iplink_get.patch
@@ -31,7 +31,7 @@ Signed-off-by: Hangbin Liu <haliu@redhat.com>
  1 file changed, 5 insertions(+)
 
 diff --git a/ip/iplink.c b/ip/iplink.c
-index da3f9a7..2b2421f 100644
+index da3f9a779351c..2b2421f9a2281 100644
 --- a/ip/iplink.c
 +++ b/ip/iplink.c
 @@ -1031,6 +1031,11 @@ int iplink_get(unsigned int flags, char *name, __u32 filt_mask)
@@ -47,5 +47,5 @@ index da3f9a7..2b2421f 100644
  	if (brief)
  		print_linkinfo_brief(NULL, &answer.n, stdout);
 -- 
-1.8.3.1
+2.21.0
 
diff --git a/SOURCES/0021-iplink-double-the-buffer-size-also-in-iplink_get.patch b/SOURCES/0021-iplink-double-the-buffer-size-also-in-iplink_get.patch
index c6d653a..4cab164 100644
--- a/SOURCES/0021-iplink-double-the-buffer-size-also-in-iplink_get.patch
+++ b/SOURCES/0021-iplink-double-the-buffer-size-also-in-iplink_get.patch
@@ -31,7 +31,7 @@ Signed-off-by: Hangbin Liu <haliu@redhat.com>
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/ip/iplink.c b/ip/iplink.c
-index 2b2421f..5afbadf 100644
+index 2b2421f9a2281..5afbadf0ce383 100644
 --- a/ip/iplink.c
 +++ b/ip/iplink.c
 @@ -1015,7 +1015,7 @@ int iplink_get(unsigned int flags, char *name, __u32 filt_mask)
@@ -44,5 +44,5 @@ index 2b2421f..5afbadf 100644
  
  	if (name) {
 -- 
-1.8.3.1
+2.21.0
 
diff --git a/SOURCES/0022-lib-libnetlink-re-malloc-buff-if-size-is-not-enough.patch b/SOURCES/0022-lib-libnetlink-re-malloc-buff-if-size-is-not-enough.patch
index 8e429aa..f37143d 100644
--- a/SOURCES/0022-lib-libnetlink-re-malloc-buff-if-size-is-not-enough.patch
+++ b/SOURCES/0022-lib-libnetlink-re-malloc-buff-if-size-is-not-enough.patch
@@ -27,11 +27,11 @@ Date:   Thu Oct 26 09:41:46 2017 +0800
 
 Signed-off-by: Hangbin Liu <haliu@redhat.com>
 ---
- lib/libnetlink.c | 114 ++++++++++++++++++++++++++++++++++++++-----------------
+ lib/libnetlink.c | 114 +++++++++++++++++++++++++++++++++--------------
  1 file changed, 80 insertions(+), 34 deletions(-)
 
 diff --git a/lib/libnetlink.c b/lib/libnetlink.c
-index a057831..446c960 100644
+index a0578312e83f8..446c9605ba19b 100644
 --- a/lib/libnetlink.c
 +++ b/lib/libnetlink.c
 @@ -386,6 +386,64 @@ static void rtnl_dump_error(const struct rtnl_handle *rth,
@@ -248,5 +248,5 @@ index a057831..446c960 100644
  		if (msg.msg_flags & MSG_TRUNC) {
  			fprintf(stderr, "Message truncated\n");
 -- 
-1.8.3.1
+2.21.0
 
diff --git a/SOURCES/0023-lib-libnetlink-update-rtnl_talk-to-support-malloc-bu.patch b/SOURCES/0023-lib-libnetlink-update-rtnl_talk-to-support-malloc-bu.patch
index 7080671..60ed8a0 100644
--- a/SOURCES/0023-lib-libnetlink-update-rtnl_talk-to-support-malloc-bu.patch
+++ b/SOURCES/0023-lib-libnetlink-update-rtnl_talk-to-support-malloc-bu.patch
@@ -89,7 +89,7 @@ Signed-off-by: Hangbin Liu <haliu@redhat.com>
  36 files changed, 216 insertions(+), 174 deletions(-)
 
 diff --git a/bridge/fdb.c b/bridge/fdb.c
-index a71a78f..4859edb 100644
+index a71a78f23b202..4859edb2473b7 100644
 --- a/bridge/fdb.c
 +++ b/bridge/fdb.c
 @@ -529,7 +529,7 @@ static int fdb_modify(int cmd, int flags, int argc, char **argv)
@@ -102,7 +102,7 @@ index a71a78f..4859edb 100644
  
  	return 0;
 diff --git a/bridge/link.c b/bridge/link.c
-index 93472ad..cc29a2a 100644
+index 93472ad3699e3..cc29a2adb2e01 100644
 --- a/bridge/link.c
 +++ b/bridge/link.c
 @@ -426,7 +426,7 @@ static int brlink_modify(int argc, char **argv)
@@ -115,7 +115,7 @@ index 93472ad..cc29a2a 100644
  
  	return 0;
 diff --git a/bridge/mdb.c b/bridge/mdb.c
-index e60ff3e..fbd8184 100644
+index e60ff3ef3f485..fbd8184dacf85 100644
 --- a/bridge/mdb.c
 +++ b/bridge/mdb.c
 @@ -298,7 +298,7 @@ static int mdb_modify(int cmd, int flags, int argc, char **argv)
@@ -128,7 +128,7 @@ index e60ff3e..fbd8184 100644
  
  	return 0;
 diff --git a/bridge/vlan.c b/bridge/vlan.c
-index ebcdace..5d68359 100644
+index ebcdacee309bc..5d683595e0e32 100644
 --- a/bridge/vlan.c
 +++ b/bridge/vlan.c
 @@ -133,7 +133,7 @@ static int vlan_modify(int cmd, int argc, char **argv)
@@ -141,7 +141,7 @@ index ebcdace..5d68359 100644
  
  	return 0;
 diff --git a/genl/ctrl.c b/genl/ctrl.c
-index 6abd525..21e857c 100644
+index 6abd52582d0d3..21e857cfcfc25 100644
 --- a/genl/ctrl.c
 +++ b/genl/ctrl.c
 @@ -55,6 +55,7 @@ int genl_ctrl_resolve_family(const char *family)
@@ -229,7 +229,7 @@ index 6abd525..21e857c 100644
  	return ret;
  }
 diff --git a/include/libnetlink.h b/include/libnetlink.h
-index 654aebc..2136d2b 100644
+index 654aebc0f7632..2136d2bdd0379 100644
 --- a/include/libnetlink.h
 +++ b/include/libnetlink.h
 @@ -82,13 +82,13 @@ int rtnl_dump_filter_nc(struct rtnl_handle *rth,
@@ -250,7 +250,7 @@ index 654aebc..2136d2b 100644
  int rtnl_send(struct rtnl_handle *rth, const void *buf, int)
  	__attribute__((warn_unused_result));
 diff --git a/ip/ipaddress.c b/ip/ipaddress.c
-index b8d9c7d..7492075 100644
+index b8d9c7d917fe8..7492075687a9e 100644
 --- a/ip/ipaddress.c
 +++ b/ip/ipaddress.c
 @@ -1356,7 +1356,7 @@ static int restore_handler(const struct sockaddr_nl *nl,
@@ -272,7 +272,7 @@ index b8d9c7d..7492075 100644
  
  	return 0;
 diff --git a/ip/ipaddrlabel.c b/ip/ipaddrlabel.c
-index 1d324da..6ea9bff 100644
+index 1d324dac02119..6ea9bfffdd0d1 100644
 --- a/ip/ipaddrlabel.c
 +++ b/ip/ipaddrlabel.c
 @@ -176,7 +176,7 @@ static int ipaddrlabel_modify(int cmd, int argc, char **argv)
@@ -294,7 +294,7 @@ index 1d324da..6ea9bff 100644
  
  		rtnl_close(&rth2);
 diff --git a/ip/ipfou.c b/ip/ipfou.c
-index 00dbe15..23000dc 100644
+index 00dbe150710d2..23000dc696d6a 100644
 --- a/ip/ipfou.c
 +++ b/ip/ipfou.c
 @@ -116,7 +116,7 @@ static int do_add(int argc, char **argv)
@@ -316,7 +316,7 @@ index 00dbe15..23000dc 100644
  
  	return 0;
 diff --git a/ip/ipila.c b/ip/ipila.c
-index 843cc16..0403fc4 100644
+index 843cc1652589f..0403fc4238b9d 100644
 --- a/ip/ipila.c
 +++ b/ip/ipila.c
 @@ -220,7 +220,7 @@ static int do_add(int argc, char **argv)
@@ -338,7 +338,7 @@ index 843cc16..0403fc4 100644
  
  	return 0;
 diff --git a/ip/ipl2tp.c b/ip/ipl2tp.c
-index 88664c9..742adbe 100644
+index 88664c909e11f..742adbe4f9c3a 100644
 --- a/ip/ipl2tp.c
 +++ b/ip/ipl2tp.c
 @@ -129,7 +129,7 @@ static int create_tunnel(struct l2tp_parm *p)
@@ -378,7 +378,7 @@ index 88664c9..742adbe 100644
  
  	return 0;
 diff --git a/ip/iplink.c b/ip/iplink.c
-index 5afbadf..b08d227 100644
+index 5afbadf0ce383..b08d227d44bee 100644
 --- a/ip/iplink.c
 +++ b/ip/iplink.c
 @@ -247,19 +247,26 @@ static int nl_get_ll_addr_len(unsigned int dev_index)
@@ -468,7 +468,7 @@ index 5afbadf..b08d227 100644
  }
  
 diff --git a/ip/iplink_vrf.c b/ip/iplink_vrf.c
-index 917630e..370bb86 100644
+index 917630e853375..370bb86815a80 100644
 --- a/ip/iplink_vrf.c
 +++ b/ip/iplink_vrf.c
 @@ -114,10 +114,7 @@ __u32 ipvrf_get_table(const char *name)
@@ -586,7 +586,7 @@ index 917630e..370bb86 100644
  	return ifi->ifi_index;
  }
 diff --git a/ip/ipmacsec.c b/ip/ipmacsec.c
-index aa89a00..9a2d0eb 100644
+index aa89a00f5aad6..9a2d0ebf82091 100644
 --- a/ip/ipmacsec.c
 +++ b/ip/ipmacsec.c
 @@ -421,7 +421,7 @@ static int do_modify_nl(enum cmd c, enum macsec_nl_commands cmd, int ifindex,
@@ -599,7 +599,7 @@ index aa89a00..9a2d0eb 100644
  
  	return 0;
 diff --git a/ip/ipneigh.c b/ip/ipneigh.c
-index 9c38a60..32f2d55 100644
+index 9c38a60ddf4fe..32f2d553c712f 100644
 --- a/ip/ipneigh.c
 +++ b/ip/ipneigh.c
 @@ -184,7 +184,7 @@ static int ipneigh_modify(int cmd, int flags, int argc, char **argv)
@@ -612,7 +612,7 @@ index 9c38a60..32f2d55 100644
  
  	return 0;
 diff --git a/ip/ipnetns.c b/ip/ipnetns.c
-index 4254994..1c0ade9 100644
+index 4254994442ccd..1c0ade90dee5e 100644
 --- a/ip/ipnetns.c
 +++ b/ip/ipnetns.c
 @@ -95,12 +95,13 @@ static int get_netnsid_from_name(const char *name)
@@ -678,7 +678,7 @@ index 4254994..1c0ade9 100644
  
  	close(fd);
 diff --git a/ip/ipntable.c b/ip/ipntable.c
-index 879626e..6506332 100644
+index 879626ee4f491..65063321c85f8 100644
 --- a/ip/ipntable.c
 +++ b/ip/ipntable.c
 @@ -306,7 +306,7 @@ static int ipntable_modify(int cmd, int flags, int argc, char **argv)
@@ -691,7 +691,7 @@ index 879626e..6506332 100644
  
  	return 0;
 diff --git a/ip/iproute.c b/ip/iproute.c
-index 5e23613..35fdce8 100644
+index 5e23613dadbaf..35fdce8a64f35 100644
 --- a/ip/iproute.c
 +++ b/ip/iproute.c
 @@ -1271,7 +1271,7 @@ static int iproute_modify(int cmd, unsigned int flags, int argc, char **argv)
@@ -785,7 +785,7 @@ index 5e23613..35fdce8 100644
  		ret = 0;
  
 diff --git a/ip/iprule.c b/ip/iprule.c
-index 8313138..e64b4d7 100644
+index 8313138db815f..e64b4d7db2815 100644
 --- a/ip/iprule.c
 +++ b/ip/iprule.c
 @@ -393,7 +393,7 @@ static int flush_rule(const struct sockaddr_nl *who, struct nlmsghdr *n,
@@ -816,7 +816,7 @@ index 8313138..e64b4d7 100644
  
  	return 0;
 diff --git a/ip/iptoken.c b/ip/iptoken.c
-index 1869f76..0528bad 100644
+index 1869f764424ff..0528bad70a80e 100644
 --- a/ip/iptoken.c
 +++ b/ip/iptoken.c
 @@ -166,7 +166,7 @@ static int iptoken_set(int argc, char **argv, bool delete)
@@ -829,7 +829,7 @@ index 1869f76..0528bad 100644
  
  	return 0;
 diff --git a/ip/link_gre.c b/ip/link_gre.c
-index 35d437a..ced9936 100644
+index 35d437a15562c..ced993692e6f6 100644
 --- a/ip/link_gre.c
 +++ b/ip/link_gre.c
 @@ -64,7 +64,6 @@ static int gre_parse_opt(struct link_util *lu, int argc, char **argv,
@@ -882,7 +882,7 @@ index 35d437a..ced9936 100644
  
  	while (argc > 0) {
 diff --git a/ip/link_gre6.c b/ip/link_gre6.c
-index fe3ab64..932f9ee 100644
+index fe3ab641a86c2..932f9ee96124d 100644
 --- a/ip/link_gre6.c
 +++ b/ip/link_gre6.c
 @@ -76,7 +76,6 @@ static int gre_parse_opt(struct link_util *lu, int argc, char **argv,
@@ -935,7 +935,7 @@ index fe3ab64..932f9ee 100644
  
  	while (argc > 0) {
 diff --git a/ip/link_ip6tnl.c b/ip/link_ip6tnl.c
-index 6bb968d..2304364 100644
+index 6bb968d3c9189..230436437fffb 100644
 --- a/ip/link_ip6tnl.c
 +++ b/ip/link_ip6tnl.c
 @@ -74,7 +74,6 @@ static int ip6tunnel_parse_opt(struct link_util *lu, int argc, char **argv,
@@ -988,7 +988,7 @@ index 6bb968d..2304364 100644
  
  	while (argc > 0) {
 diff --git a/ip/link_iptnl.c b/ip/link_iptnl.c
-index f180b92..528e287 100644
+index f180b921e4710..528e287814f6b 100644
 --- a/ip/link_iptnl.c
 +++ b/ip/link_iptnl.c
 @@ -72,7 +72,6 @@ static int iptunnel_parse_opt(struct link_util *lu, int argc, char **argv,
@@ -1041,7 +1041,7 @@ index f180b92..528e287 100644
  
  	while (argc > 0) {
 diff --git a/ip/link_vti.c b/ip/link_vti.c
-index 95bc23e..d2aacbe 100644
+index 95bc23e928972..d2aacbe78ded1 100644
 --- a/ip/link_vti.c
 +++ b/ip/link_vti.c
 @@ -51,7 +51,6 @@ static int vti_parse_opt(struct link_util *lu, int argc, char **argv,
@@ -1094,7 +1094,7 @@ index 95bc23e..d2aacbe 100644
  
  	while (argc > 0) {
 diff --git a/ip/link_vti6.c b/ip/link_vti6.c
-index 9ca127a..aedfbea 100644
+index 9ca127af8a5d5..aedfbeaeea0e1 100644
 --- a/ip/link_vti6.c
 +++ b/ip/link_vti6.c
 @@ -46,7 +46,6 @@ static int vti6_parse_opt(struct link_util *lu, int argc, char **argv,
@@ -1147,7 +1147,7 @@ index 9ca127a..aedfbea 100644
  
  	while (argc > 0) {
 diff --git a/ip/tcp_metrics.c b/ip/tcp_metrics.c
-index 8972acd..3f9790e 100644
+index 8972acd05fb28..3f9790e8fedde 100644
 --- a/ip/tcp_metrics.c
 +++ b/ip/tcp_metrics.c
 @@ -306,6 +306,7 @@ static int process_msg(const struct sockaddr_nl *who, struct nlmsghdr *n,
@@ -1179,7 +1179,7 @@ index 8972acd..3f9790e 100644
  		req.n.nlmsg_seq = grth.dump = ++grth.seq;
  		if (rtnl_send(&grth, &req, req.n.nlmsg_len) < 0) {
 diff --git a/ip/xfrm_policy.c b/ip/xfrm_policy.c
-index de689c4..98460a0 100644
+index de689c4d86c4d..98460a072bd4e 100644
 --- a/ip/xfrm_policy.c
 +++ b/ip/xfrm_policy.c
 @@ -386,7 +386,7 @@ static int xfrm_policy_modify(int cmd, unsigned int flags, int argc, char **argv
@@ -1281,7 +1281,7 @@ index de689c4..98460a0 100644
  
  	rtnl_close(&rth);
 diff --git a/ip/xfrm_state.c b/ip/xfrm_state.c
-index ea7d4f3..04ed349 100644
+index ea7d4f3460578..04ed3492ad3b5 100644
 --- a/ip/xfrm_state.c
 +++ b/ip/xfrm_state.c
 @@ -677,7 +677,7 @@ static int xfrm_state_modify(int cmd, unsigned int flags, int argc, char **argv)
@@ -1384,7 +1384,7 @@ index ea7d4f3..04ed349 100644
  
  	rtnl_close(&rth);
 diff --git a/lib/libgenl.c b/lib/libgenl.c
-index 50d2d92..bb5fbb5 100644
+index 50d2d9217dcbc..bb5fbb5f518d2 100644
 --- a/lib/libgenl.c
 +++ b/lib/libgenl.c
 @@ -49,16 +49,21 @@ int genl_resolve_family(struct rtnl_handle *grth, const char *family)
@@ -1412,7 +1412,7 @@ index 50d2d92..bb5fbb5 100644
  
  int genl_init_handle(struct rtnl_handle *grth, const char *family,
 diff --git a/lib/libnetlink.c b/lib/libnetlink.c
-index 446c960..75e20ab 100644
+index 446c9605ba19b..75e20abf0b97f 100644
 --- a/lib/libnetlink.c
 +++ b/lib/libnetlink.c
 @@ -561,7 +561,7 @@ static void rtnl_talk_error(struct nlmsghdr *h, struct nlmsgerr *err,
@@ -1478,7 +1478,7 @@ index 446c960..75e20ab 100644
  
  int rtnl_listen_all_nsid(struct rtnl_handle *rth)
 diff --git a/misc/ss.c b/misc/ss.c
-index b84baf3..d3fb9a7 100644
+index b84baf3b57fe5..d3fb9a751b3ab 100644
 --- a/misc/ss.c
 +++ b/misc/ss.c
 @@ -2588,7 +2588,7 @@ static int kill_inet_sock(struct nlmsghdr *h, void *arg, struct sockstat *s)
@@ -1491,7 +1491,7 @@ index b84baf3..d3fb9a7 100644
  
  static int show_one_inet_sock(const struct sockaddr_nl *addr,
 diff --git a/tc/m_action.c b/tc/m_action.c
-index 6ebe85e..90b2a11 100644
+index 6ebe85e1cbe36..90b2a11e5d9e8 100644
 --- a/tc/m_action.c
 +++ b/tc/m_action.c
 @@ -506,18 +506,18 @@ static int tc_action_gd(int cmd, unsigned int flags, int *argc_p, char ***argv_p
@@ -1536,7 +1536,7 @@ index 6ebe85e..90b2a11 100644
  			return 1;
  		}
 diff --git a/tc/tc_class.c b/tc/tc_class.c
-index 1a1f1fa..0214775 100644
+index 1a1f1fa225b40..0214775b95a6c 100644
 --- a/tc/tc_class.c
 +++ b/tc/tc_class.c
 @@ -149,7 +149,7 @@ static int tc_class_modify(int cmd, unsigned int flags, int argc, char **argv)
@@ -1549,7 +1549,7 @@ index 1a1f1fa..0214775 100644
  
  	return 0;
 diff --git a/tc/tc_filter.c b/tc/tc_filter.c
-index ff8713b..e640492 100644
+index ff8713b98e315..e640492b25ba6 100644
 --- a/tc/tc_filter.c
 +++ b/tc/tc_filter.c
 @@ -181,7 +181,7 @@ static int tc_filter_modify(int cmd, unsigned int flags, int argc, char **argv)
@@ -1587,7 +1587,7 @@ index ff8713b..e640492 100644
  }
  
 diff --git a/tc/tc_qdisc.c b/tc/tc_qdisc.c
-index 3a3701c..8b0c5c7 100644
+index 3a3701c204704..8b0c5c72dbad1 100644
 --- a/tc/tc_qdisc.c
 +++ b/tc/tc_qdisc.c
 @@ -190,7 +190,7 @@ static int tc_qdisc_modify(int cmd, unsigned int flags, int argc, char **argv)
@@ -1600,5 +1600,5 @@ index 3a3701c..8b0c5c7 100644
  
  	return 0;
 -- 
-1.8.3.1
+2.21.0
 
diff --git a/SOURCES/0024-Update-linux-headers.patch b/SOURCES/0024-Update-linux-headers.patch
index a7c413c..343725e 100644
--- a/SOURCES/0024-Update-linux-headers.patch
+++ b/SOURCES/0024-Update-linux-headers.patch
@@ -8,36 +8,36 @@ Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1456539
 This updates include/linux to the state just before commit 596b1c94aa38e
 ("iproute: build more easily on Android").
 ---
- include/linux/bpf.h                  | 253 ++++++++++++++++++++++-
- include/linux/can/vxcan.h            |  12 ++
- include/linux/devlink.h              |  92 ++++++++-
+ include/linux/bpf.h                  | 253 +++++++++++++++++-
+ include/linux/can/vxcan.h            |  12 +
+ include/linux/devlink.h              |  92 ++++++-
  include/linux/elf-em.h               |   1 -
  include/linux/if_arp.h               |   2 +
  include/linux/if_ether.h             |   6 +
- include/linux/if_link.h              |  37 +++-
+ include/linux/if_link.h              |  37 ++-
  include/linux/if_packet.h            |   1 +
  include/linux/if_tunnel.h            |   4 +
  include/linux/inet_diag.h            |   2 +
- include/linux/ipsec.h                |  47 +++++
+ include/linux/ipsec.h                |  47 ++++
  include/linux/lwtunnel.h             |   1 +
  include/linux/magic.h                |   3 +
  include/linux/mpls_iptunnel.h        |   2 +
  include/linux/neighbour.h            |   1 +
- include/linux/netlink.h              |  67 +++++-
+ include/linux/netlink.h              |  67 ++++-
  include/linux/netlink_diag.h         |  10 +
- include/linux/pfkeyv2.h              | 383 +++++++++++++++++++++++++++++++++++
- include/linux/pkt_cls.h              |  37 +++-
+ include/linux/pfkeyv2.h              | 383 +++++++++++++++++++++++++++
+ include/linux/pkt_cls.h              |  37 ++-
  include/linux/pkt_sched.h            |   8 +
- include/linux/rtnetlink.h            |  36 +++-
- include/linux/sctp.h                 |  38 ++++
- include/linux/seg6.h                 |  54 +++++
+ include/linux/rtnetlink.h            |  36 ++-
+ include/linux/sctp.h                 |  38 +++
+ include/linux/seg6.h                 |  54 ++++
  include/linux/seg6_genl.h            |  32 +++
  include/linux/seg6_hmac.h            |  22 ++
- include/linux/seg6_iptunnel.h        |  40 ++++
- include/linux/seg6_local.h           |  68 +++++++
+ include/linux/seg6_iptunnel.h        |  40 +++
+ include/linux/seg6_local.h           |  68 +++++
  include/linux/tc_act/tc_bpf.h        |   1 +
  include/linux/tc_act/tc_tunnel_key.h |   1 +
- include/linux/tcp.h                  |  27 ++-
+ include/linux/tcp.h                  |  27 +-
  include/linux/xfrm.h                 |   9 +
  31 files changed, 1272 insertions(+), 25 deletions(-)
  create mode 100644 include/linux/can/vxcan.h
@@ -50,7 +50,7 @@ This updates include/linux to the state just before commit 596b1c94aa38e
  create mode 100644 include/linux/seg6_local.h
 
 diff --git a/include/linux/bpf.h b/include/linux/bpf.h
-index 178e20c..0895a52 100644
+index 178e20c388852..0895a529cc90b 100644
 --- a/include/linux/bpf.h
 +++ b/include/linux/bpf.h
 @@ -30,9 +30,14 @@
@@ -459,7 +459,7 @@ index 178e20c..0895a52 100644
  #endif /* __LINUX_BPF_H__ */
 diff --git a/include/linux/can/vxcan.h b/include/linux/can/vxcan.h
 new file mode 100644
-index 0000000..5b29e8a
+index 0000000000000..5b29e8a7bc274
 --- /dev/null
 +++ b/include/linux/can/vxcan.h
 @@ -0,0 +1,12 @@
@@ -476,7 +476,7 @@ index 0000000..5b29e8a
 +
 +#endif
 diff --git a/include/linux/devlink.h b/include/linux/devlink.h
-index 2ad3585..a62695e 100644
+index 2ad3585b417ae..a62695e2d86e8 100644
 --- a/include/linux/devlink.h
 +++ b/include/linux/devlink.h
 @@ -65,8 +65,12 @@ enum devlink_command {
@@ -598,7 +598,7 @@ index 2ad3585..a62695e 100644
 +
  #endif /* _LINUX_DEVLINK_H_ */
 diff --git a/include/linux/elf-em.h b/include/linux/elf-em.h
-index cb5d1a5..9cd1de9 100644
+index cb5d1a5192027..9cd1de954c0ac 100644
 --- a/include/linux/elf-em.h
 +++ b/include/linux/elf-em.h
 @@ -42,7 +42,6 @@
@@ -610,7 +610,7 @@ index cb5d1a5..9cd1de9 100644
  /*
   * This is an interim value that we will use until the committee comes
 diff --git a/include/linux/if_arp.h b/include/linux/if_arp.h
-index d001bdb..199f253 100644
+index d001bdb276b76..199f253bd1f66 100644
 --- a/include/linux/if_arp.h
 +++ b/include/linux/if_arp.h
 @@ -59,6 +59,7 @@
@@ -630,7 +630,7 @@ index d001bdb..199f253 100644
  #define ARPHRD_VOID	  0xFFFF	/* Void type, nothing is known */
  #define ARPHRD_NONE	  0xFFFE	/* zero header length */
 diff --git a/include/linux/if_ether.h b/include/linux/if_ether.h
-index b7d3beb..7dde037 100644
+index b7d3beb50ce2d..7dde037a0cca6 100644
 --- a/include/linux/if_ether.h
 +++ b/include/linux/if_ether.h
 @@ -66,6 +66,7 @@
@@ -666,7 +666,7 @@ index b7d3beb..7dde037 100644
  /*
   *	This is an Ethernet frame header.
 diff --git a/include/linux/if_link.h b/include/linux/if_link.h
-index b0bdbd6..1f97d05 100644
+index b0bdbd6e16c04..1f97d0560b6cb 100644
 --- a/include/linux/if_link.h
 +++ b/include/linux/if_link.h
 @@ -157,6 +157,7 @@ enum {
@@ -749,7 +749,7 @@ index b0bdbd6..1f97d05 100644
 +
  #endif /* _LINUX_IF_LINK_H */
 diff --git a/include/linux/if_packet.h b/include/linux/if_packet.h
-index 9e7edfd..4df96a7 100644
+index 9e7edfd8141e5..4df96a7dd4fae 100644
 --- a/include/linux/if_packet.h
 +++ b/include/linux/if_packet.h
 @@ -66,6 +66,7 @@ struct sockaddr_ll {
@@ -761,7 +761,7 @@ index 9e7edfd..4df96a7 100644
  
  struct tpacket_stats {
 diff --git a/include/linux/if_tunnel.h b/include/linux/if_tunnel.h
-index 4f975f5..21834ca 100644
+index 4f975f5704d8f..21834cac4c0d5 100644
 --- a/include/linux/if_tunnel.h
 +++ b/include/linux/if_tunnel.h
 @@ -75,6 +75,7 @@ enum {
@@ -790,7 +790,7 @@ index 4f975f5..21834ca 100644
  };
  
 diff --git a/include/linux/inet_diag.h b/include/linux/inet_diag.h
-index f7bf781..bada4d7 100644
+index f7bf7819e9243..bada4d7b6c8e6 100644
 --- a/include/linux/inet_diag.h
 +++ b/include/linux/inet_diag.h
 @@ -142,6 +142,8 @@ enum {
@@ -804,7 +804,7 @@ index f7bf781..bada4d7 100644
  
 diff --git a/include/linux/ipsec.h b/include/linux/ipsec.h
 new file mode 100644
-index 0000000..d17a630
+index 0000000000000..d17a6302a0e96
 --- /dev/null
 +++ b/include/linux/ipsec.h
 @@ -0,0 +1,47 @@
@@ -856,7 +856,7 @@ index 0000000..d17a630
 +
 +#endif	/* _LINUX_IPSEC_H */
 diff --git a/include/linux/lwtunnel.h b/include/linux/lwtunnel.h
-index faa6eab..3298426 100644
+index faa6eabee2040..329842627162b 100644
 --- a/include/linux/lwtunnel.h
 +++ b/include/linux/lwtunnel.h
 @@ -11,6 +11,7 @@ enum lwtunnel_encap_types {
@@ -868,7 +868,7 @@ index faa6eab..3298426 100644
  };
  
 diff --git a/include/linux/magic.h b/include/linux/magic.h
-index e230af2..e439565 100644
+index e230af2e68558..e439565df838a 100644
 --- a/include/linux/magic.h
 +++ b/include/linux/magic.h
 @@ -42,6 +42,7 @@
@@ -889,7 +889,7 @@ index e230af2..e439565 100644
  #define UDF_SUPER_MAGIC		0x15013346
  #define BALLOON_KVM_MAGIC	0x13661366
 diff --git a/include/linux/mpls_iptunnel.h b/include/linux/mpls_iptunnel.h
-index 4132c3c..1a0e57b 100644
+index 4132c3c59572b..1a0e57b45a8ce 100644
 --- a/include/linux/mpls_iptunnel.h
 +++ b/include/linux/mpls_iptunnel.h
 @@ -16,11 +16,13 @@
@@ -907,7 +907,7 @@ index 4132c3c..1a0e57b 100644
  };
  #define MPLS_IPTUNNEL_MAX (__MPLS_IPTUNNEL_MAX - 1)
 diff --git a/include/linux/neighbour.h b/include/linux/neighbour.h
-index f3d16db..3199d28 100644
+index f3d16dbe09d64..3199d28980b35 100644
 --- a/include/linux/neighbour.h
 +++ b/include/linux/neighbour.h
 @@ -41,6 +41,7 @@ enum {
@@ -919,7 +919,7 @@ index f3d16db..3199d28 100644
  
  /*
 diff --git a/include/linux/netlink.h b/include/linux/netlink.h
-index d1e26a2..ec0690b 100644
+index d1e26a2bcdcbb..ec0690b506471 100644
 --- a/include/linux/netlink.h
 +++ b/include/linux/netlink.h
 @@ -50,12 +50,12 @@ struct nlmsghdr {
@@ -1017,7 +1017,7 @@ index d1e26a2..ec0690b 100644
  
  #endif /* __LINUX_NETLINK_H */
 diff --git a/include/linux/netlink_diag.h b/include/linux/netlink_diag.h
-index defd25f..c8c8c7d 100644
+index defd25fb5f5af..c8c8c7d2e530b 100644
 --- a/include/linux/netlink_diag.h
 +++ b/include/linux/netlink_diag.h
 @@ -38,6 +38,7 @@ enum {
@@ -1045,7 +1045,7 @@ index defd25f..c8c8c7d 100644
  #endif
 diff --git a/include/linux/pfkeyv2.h b/include/linux/pfkeyv2.h
 new file mode 100644
-index 0000000..ada7f01
+index 0000000000000..ada7f0171cccd
 --- /dev/null
 +++ b/include/linux/pfkeyv2.h
 @@ -0,0 +1,383 @@
@@ -1433,7 +1433,7 @@ index 0000000..ada7f01
 +
 +#endif /* !(_LINUX_PFKEY2_H) */
 diff --git a/include/linux/pkt_cls.h b/include/linux/pkt_cls.h
-index 7a69f2a..d5e2bf6 100644
+index 7a69f2a4ca0c0..d5e2bf68d0d40 100644
 --- a/include/linux/pkt_cls.h
 +++ b/include/linux/pkt_cls.h
 @@ -37,7 +37,28 @@ enum {
@@ -1495,7 +1495,7 @@ index 7a69f2a..d5e2bf6 100644
  };
  
 diff --git a/include/linux/pkt_sched.h b/include/linux/pkt_sched.h
-index df7451d..099bf55 100644
+index df7451d351311..099bf5528fed3 100644
 --- a/include/linux/pkt_sched.h
 +++ b/include/linux/pkt_sched.h
 @@ -617,6 +617,14 @@ struct tc_drr_stats {
@@ -1514,7 +1514,7 @@ index df7451d..099bf55 100644
  	__u8	num_tc;
  	__u8	prio_tc_map[TC_QOPT_BITMASK + 1];
 diff --git a/include/linux/rtnetlink.h b/include/linux/rtnetlink.h
-index d42fe83..813e9e0 100644
+index d42fe83cec694..813e9e0767d33 100644
 --- a/include/linux/rtnetlink.h
 +++ b/include/linux/rtnetlink.h
 @@ -122,6 +122,8 @@ enum {
@@ -1605,7 +1605,7 @@ index d42fe83..813e9e0 100644
  /* New extended info filters for IFLA_EXT_MASK */
  #define RTEXT_FILTER_VF		(1 << 0)
 diff --git a/include/linux/sctp.h b/include/linux/sctp.h
-index 5e08b3d..fec24c4 100644
+index 5e08b3de809eb..fec24c41405b9 100644
 --- a/include/linux/sctp.h
 +++ b/include/linux/sctp.h
 @@ -115,10 +115,13 @@ typedef __s32 sctp_assoc_t;
@@ -1694,7 +1694,7 @@ index 5e08b3d..fec24c4 100644
   */
 diff --git a/include/linux/seg6.h b/include/linux/seg6.h
 new file mode 100644
-index 0000000..0715279
+index 0000000000000..07152792e61d2
 --- /dev/null
 +++ b/include/linux/seg6.h
 @@ -0,0 +1,54 @@
@@ -1754,7 +1754,7 @@ index 0000000..0715279
 +#endif
 diff --git a/include/linux/seg6_genl.h b/include/linux/seg6_genl.h
 new file mode 100644
-index 0000000..99382f9
+index 0000000000000..99382f94fa0a3
 --- /dev/null
 +++ b/include/linux/seg6_genl.h
 @@ -0,0 +1,32 @@
@@ -1792,7 +1792,7 @@ index 0000000..99382f9
 +#endif
 diff --git a/include/linux/seg6_hmac.h b/include/linux/seg6_hmac.h
 new file mode 100644
-index 0000000..704f93e
+index 0000000000000..704f93e80b417
 --- /dev/null
 +++ b/include/linux/seg6_hmac.h
 @@ -0,0 +1,22 @@
@@ -1820,7 +1820,7 @@ index 0000000..704f93e
 +#endif
 diff --git a/include/linux/seg6_iptunnel.h b/include/linux/seg6_iptunnel.h
 new file mode 100644
-index 0000000..a5dc05a
+index 0000000000000..a5dc05a1cbba3
 --- /dev/null
 +++ b/include/linux/seg6_iptunnel.h
 @@ -0,0 +1,40 @@
@@ -1866,7 +1866,7 @@ index 0000000..a5dc05a
 +#endif
 diff --git a/include/linux/seg6_local.h b/include/linux/seg6_local.h
 new file mode 100644
-index 0000000..76b90d6
+index 0000000000000..76b90d60c7ea7
 --- /dev/null
 +++ b/include/linux/seg6_local.h
 @@ -0,0 +1,68 @@
@@ -1939,7 +1939,7 @@ index 0000000..76b90d6
 +
 +#endif
 diff --git a/include/linux/tc_act/tc_bpf.h b/include/linux/tc_act/tc_bpf.h
-index 975b50d..8dc2ac0 100644
+index 975b50dc8d1d4..8dc2ac05eecf0 100644
 --- a/include/linux/tc_act/tc_bpf.h
 +++ b/include/linux/tc_act/tc_bpf.h
 @@ -28,6 +28,7 @@ enum {
@@ -1951,7 +1951,7 @@ index 975b50d..8dc2ac0 100644
  };
  #define TCA_ACT_BPF_MAX (__TCA_ACT_BPF_MAX - 1)
 diff --git a/include/linux/tc_act/tc_tunnel_key.h b/include/linux/tc_act/tc_tunnel_key.h
-index 84ea55e..afcd4be 100644
+index 84ea55e1076b6..afcd4be953e27 100644
 --- a/include/linux/tc_act/tc_tunnel_key.h
 +++ b/include/linux/tc_act/tc_tunnel_key.h
 @@ -34,6 +34,7 @@ enum {
@@ -1963,7 +1963,7 @@ index 84ea55e..afcd4be 100644
  };
  
 diff --git a/include/linux/tcp.h b/include/linux/tcp.h
-index d34fb5c..8edad3f 100644
+index d34fb5c5aa753..8edad3f942686 100644
 --- a/include/linux/tcp.h
 +++ b/include/linux/tcp.h
 @@ -117,6 +117,8 @@ enum {
@@ -2017,7 +2017,7 @@ index d34fb5c..8edad3f 100644
 +
  #endif /* _LINUX_TCP_H */
 diff --git a/include/linux/xfrm.h b/include/linux/xfrm.h
-index d2dd1fd..5790293 100644
+index d2dd1fd65e77a..5790293b7fc46 100644
 --- a/include/linux/xfrm.h
 +++ b/include/linux/xfrm.h
 @@ -303,6 +303,8 @@ enum xfrm_attr_type_t {
@@ -2044,5 +2044,5 @@ index d2dd1fd..5790293 100644
  #define XFRMGRP_ACQUIRE		1
  #define XFRMGRP_EXPIRE		2
 -- 
-1.8.3.1
+2.21.0
 
diff --git a/SOURCES/0025-devlink-Change-netlink-attribute-validation.patch b/SOURCES/0025-devlink-Change-netlink-attribute-validation.patch
index 832c7da..154a8ba 100644
--- a/SOURCES/0025-devlink-Change-netlink-attribute-validation.patch
+++ b/SOURCES/0025-devlink-Change-netlink-attribute-validation.patch
@@ -20,11 +20,11 @@ Date:   Wed May 3 13:25:22 2017 +0200
 
 Signed-off-by: Kamal Heib <kheib@redhat.com>
 ---
- devlink/devlink.c | 103 ++++++++++++++++--------------------------------------
+ devlink/devlink.c | 103 ++++++++++++++--------------------------------
  1 file changed, 30 insertions(+), 73 deletions(-)
 
 diff --git a/devlink/devlink.c b/devlink/devlink.c
-index e90226e..35220d8 100644
+index e90226e48369b..35220d802a618 100644
 --- a/devlink/devlink.c
 +++ b/devlink/devlink.c
 @@ -232,88 +232,45 @@ static bool dl_no_arg(struct dl *dl)
@@ -147,5 +147,5 @@ index e90226e..35220d8 100644
  	return MNL_CB_OK;
  }
 -- 
-1.8.3.1
+2.21.0
 
diff --git a/SOURCES/0026-devlink-Add-support-for-pipeline-debug-dpipe.patch b/SOURCES/0026-devlink-Add-support-for-pipeline-debug-dpipe.patch
index 7bebb6c..a22f666 100644
--- a/SOURCES/0026-devlink-Add-support-for-pipeline-debug-dpipe.patch
+++ b/SOURCES/0026-devlink-Add-support-for-pipeline-debug-dpipe.patch
@@ -88,11 +88,11 @@ Date:   Wed May 3 13:25:23 2017 +0200
 
 Signed-off-by: Kamal Heib <kheib@redhat.com>
 ---
- devlink/devlink.c | 1353 +++++++++++++++++++++++++++++++++++++++++++++++++----
+ devlink/devlink.c | 1353 +++++++++++++++++++++++++++++++++++++++++----
  1 file changed, 1254 insertions(+), 99 deletions(-)
 
 diff --git a/devlink/devlink.c b/devlink/devlink.c
-index 35220d8..e22ee0a 100644
+index 35220d802a618..e22ee0a0e8d83 100644
 --- a/devlink/devlink.c
 +++ b/devlink/devlink.c
 @@ -34,7 +34,15 @@
@@ -1593,5 +1593,5 @@ index 35220d8..e22ee0a 100644
  		default:
  			pr_err("Unknown option.\n");
 -- 
-1.8.3.1
+2.21.0
 
diff --git a/SOURCES/0027-tc-Reflect-HW-offload-status.patch b/SOURCES/0027-tc-Reflect-HW-offload-status.patch
index 5a21a4d..4668f67 100644
--- a/SOURCES/0027-tc-Reflect-HW-offload-status.patch
+++ b/SOURCES/0027-tc-Reflect-HW-offload-status.patch
@@ -36,7 +36,7 @@ Signed-off-by: Kamal Heib <kheib@redhat.com>
  4 files changed, 20 insertions(+)
 
 diff --git a/tc/f_bpf.c b/tc/f_bpf.c
-index df8a259..75c44c0 100644
+index df8a259e18712..75c44c06cc88f 100644
 --- a/tc/f_bpf.c
 +++ b/tc/f_bpf.c
 @@ -210,6 +210,11 @@ static int bpf_print_opt(struct filter_util *qu, FILE *f,
@@ -52,7 +52,7 @@ index df8a259..75c44c0 100644
  
  	if (tb[TCA_BPF_OPS] && tb[TCA_BPF_OPS_LEN])
 diff --git a/tc/f_flower.c b/tc/f_flower.c
-index 5aac4a0..ebc63ca 100644
+index 5aac4a0837f40..ebc63ca6b2a27 100644
 --- a/tc/f_flower.c
 +++ b/tc/f_flower.c
 @@ -1171,6 +1171,11 @@ static int flower_print_opt(struct filter_util *qu, FILE *f,
@@ -68,7 +68,7 @@ index 5aac4a0..ebc63ca 100644
  
  	if (tb[TCA_FLOWER_ACT])
 diff --git a/tc/f_matchall.c b/tc/f_matchall.c
-index ac48630..5a51e75 100644
+index ac4863083767d..5a51e7553e82a 100644
 --- a/tc/f_matchall.c
 +++ b/tc/f_matchall.c
 @@ -137,6 +137,11 @@ static int matchall_print_opt(struct filter_util *qu, FILE *f,
@@ -84,7 +84,7 @@ index ac48630..5a51e75 100644
  
  	if (tb[TCA_MATCHALL_ACT])
 diff --git a/tc/f_u32.c b/tc/f_u32.c
-index 92c1fcd..ff700e9 100644
+index 92c1fcd4512c0..ff700e9f4a2d7 100644
 --- a/tc/f_u32.c
 +++ b/tc/f_u32.c
 @@ -1264,6 +1264,11 @@ static int u32_print_opt(struct filter_util *qu, FILE *f, struct rtattr *opt,
@@ -100,5 +100,5 @@ index 92c1fcd..ff700e9 100644
  
  	if (tb[TCA_U32_PCNT]) {
 -- 
-1.8.3.1
+2.21.0
 
diff --git a/SOURCES/0028-pedit-Fix-a-typo-in-warning.patch b/SOURCES/0028-pedit-Fix-a-typo-in-warning.patch
index e19cd7d..bfe6d91 100644
--- a/SOURCES/0028-pedit-Fix-a-typo-in-warning.patch
+++ b/SOURCES/0028-pedit-Fix-a-typo-in-warning.patch
@@ -22,7 +22,7 @@ Signed-off-by: Kamal Heib <kheib@redhat.com>
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/tc/m_pedit.c b/tc/m_pedit.c
-index 6498dd9..7ef2acc 100644
+index 6498dd91b4710..7ef2acc52bce5 100644
 --- a/tc/m_pedit.c
 +++ b/tc/m_pedit.c
 @@ -146,7 +146,7 @@ int pack_key(struct m_pedit_sel *_sel, struct m_pedit_key *tkey)
@@ -35,5 +35,5 @@ index 6498dd9..7ef2acc 100644
  		}
  	}
 -- 
-1.8.3.1
+2.21.0
 
diff --git a/SOURCES/0029-pedit-Do-not-allow-using-retain-for-too-big-fields.patch b/SOURCES/0029-pedit-Do-not-allow-using-retain-for-too-big-fields.patch
index 8a3d95b..c563617 100644
--- a/SOURCES/0029-pedit-Do-not-allow-using-retain-for-too-big-fields.patch
+++ b/SOURCES/0029-pedit-Do-not-allow-using-retain-for-too-big-fields.patch
@@ -23,7 +23,7 @@ Signed-off-by: Kamal Heib <kheib@redhat.com>
  2 files changed, 8 insertions(+), 1 deletion(-)
 
 diff --git a/man/man8/tc-pedit.8 b/man/man8/tc-pedit.8
-index 7f482ea..9c4d57b 100644
+index 7f482eafc6c71..9c4d57b972cc8 100644
 --- a/man/man8/tc-pedit.8
 +++ b/man/man8/tc-pedit.8
 @@ -266,7 +266,8 @@ Keep the addressed data as is.
@@ -37,7 +37,7 @@ index 7f482ea..9c4d57b 100644
  .I CONTROL
  The following keywords allow to control how the tree of qdisc, classes,
 diff --git a/tc/m_pedit.c b/tc/m_pedit.c
-index 7ef2acc..9b74c96 100644
+index 7ef2acc52bce5..9b74c965932e0 100644
 --- a/tc/m_pedit.c
 +++ b/tc/m_pedit.c
 @@ -353,6 +353,12 @@ int parse_cmd(int *argc_p, char ***argv_p, __u32 len, int type, __u32 retain,
@@ -54,5 +54,5 @@ index 7ef2acc..9b74c96 100644
  		res = pack_mac(sel, tkey, (__u8 *)val);
  		goto done;
 -- 
-1.8.3.1
+2.21.0
 
diff --git a/SOURCES/0030-pedit-Check-for-extended-capability-in-protocol-pars.patch b/SOURCES/0030-pedit-Check-for-extended-capability-in-protocol-pars.patch
index 81a89ce..029fafe 100644
--- a/SOURCES/0030-pedit-Check-for-extended-capability-in-protocol-pars.patch
+++ b/SOURCES/0030-pedit-Check-for-extended-capability-in-protocol-pars.patch
@@ -23,7 +23,7 @@ Signed-off-by: Kamal Heib <kheib@redhat.com>
  2 files changed, 6 insertions(+)
 
 diff --git a/tc/p_eth.c b/tc/p_eth.c
-index ad3e28f..2d2f96c 100644
+index ad3e28f80eb64..2d2f96ca2f0fb 100644
 --- a/tc/p_eth.c
 +++ b/tc/p_eth.c
 @@ -34,6 +34,9 @@ parse_eth(int *argc_p, char ***argv_p,
@@ -37,7 +37,7 @@ index ad3e28f..2d2f96c 100644
  
  	if (strcmp(*argv, "type") == 0) {
 diff --git a/tc/p_udp.c b/tc/p_udp.c
-index a56a1b5..3916d95 100644
+index a56a1b5192542..3916d95860408 100644
 --- a/tc/p_udp.c
 +++ b/tc/p_udp.c
 @@ -34,6 +34,9 @@ parse_udp(int *argc_p, char ***argv_p,
@@ -51,5 +51,5 @@ index a56a1b5..3916d95 100644
  
  	if (strcmp(*argv, "sport") == 0) {
 -- 
-1.8.3.1
+2.21.0
 
diff --git a/SOURCES/0031-pedit-Introduce-ipv6-support.patch b/SOURCES/0031-pedit-Introduce-ipv6-support.patch
index aacdc14..6a65e73 100644
--- a/SOURCES/0031-pedit-Introduce-ipv6-support.patch
+++ b/SOURCES/0031-pedit-Introduce-ipv6-support.patch
@@ -17,16 +17,16 @@ Date:   Sun May 14 11:17:46 2017 +0300
 
 Signed-off-by: Kamal Heib <kheib@redhat.com>
 ---
- man/man8/tc-pedit.8 | 30 ++++++++++++++++++
+ man/man8/tc-pedit.8 | 30 +++++++++++++++
  tc/Makefile         |  1 +
- tc/m_pedit.c        | 43 +++++++++++++++++++++++--
- tc/p_ip.c           | 17 +---------
- tc/p_ip6.c          | 91 +++++++++++++++++++++++++++++++++++++++++++++++++++++
+ tc/m_pedit.c        | 43 ++++++++++++++++++++-
+ tc/p_ip.c           | 17 +--------
+ tc/p_ip6.c          | 91 +++++++++++++++++++++++++++++++++++++++++++++
  5 files changed, 164 insertions(+), 18 deletions(-)
  create mode 100644 tc/p_ip6.c
 
 diff --git a/man/man8/tc-pedit.8 b/man/man8/tc-pedit.8
-index 9c4d57b..82d4217 100644
+index 9c4d57b972cc8..82d4217bc9589 100644
 --- a/man/man8/tc-pedit.8
 +++ b/man/man8/tc-pedit.8
 @@ -33,6 +33,8 @@ pedit - generic packet editor action
@@ -77,18 +77,18 @@ index 9c4d57b..82d4217 100644
  .BI tcp " TCPHDR_FIELD"
  The supported keywords for
  .I TCPHDR_FIELD
-@@ -331,6 +358,9 @@ tc filter add dev eth0 parent ffff: u32 \\
- 	action pedit ex munge ip dst set 192.168.1.199
+@@ -329,6 +356,9 @@ tc filter add dev eth0 parent ffff: u32 \\
  tc filter add dev eth0 parent ffff: u32 \\
  	match ip sport 22 0xffff \\
-+	action pedit ex munge ip6 dst set fe80::dacb:8aff:fec7:320e
+ 	action pedit ex munge ip dst set 192.168.1.199
 +tc filter add dev eth0 parent ffff: u32 \\
 +	match ip sport 22 0xffff \\
- 	action pedit ex munge eth dst set 11:22:33:44:55:66
++	action pedit ex munge ip6 dst set fe80::dacb:8aff:fec7:320e
  tc filter add dev eth0 parent ffff: u32 \\
- 	match ip dport 23 0xffff \\
+ 	match ip sport 22 0xffff \\
+ 	action pedit ex munge eth dst set 11:22:33:44:55:66
 diff --git a/tc/Makefile b/tc/Makefile
-index 446a113..9a6bb1d 100644
+index 446a11391ad70..9a6bb1ddea57e 100644
 --- a/tc/Makefile
 +++ b/tc/Makefile
 @@ -53,6 +53,7 @@ TCMODULES += m_bpf.o
@@ -100,7 +100,7 @@ index 446a113..9a6bb1d 100644
  TCMODULES += p_eth.o
  TCMODULES += p_tcp.o
 diff --git a/tc/m_pedit.c b/tc/m_pedit.c
-index 9b74c96..dfa6b2c 100644
+index 9b74c965932e0..dfa6b2c4835e9 100644
 --- a/tc/m_pedit.c
 +++ b/tc/m_pedit.c
 @@ -257,6 +257,32 @@ static int pack_mac(struct m_pedit_sel *sel, struct m_pedit_key *tkey,
@@ -168,7 +168,7 @@ index 9b74c96..dfa6b2c 100644
  	tkey->mask = *m;
  
 diff --git a/tc/p_ip.c b/tc/p_ip.c
-index 22fe650..0272a6e 100644
+index 22fe6505e4271..0272a6eaaf48b 100644
 --- a/tc/p_ip.c
 +++ b/tc/p_ip.c
 @@ -1,5 +1,5 @@
@@ -204,7 +204,7 @@ index 22fe650..0272a6e 100644
 -};
 diff --git a/tc/p_ip6.c b/tc/p_ip6.c
 new file mode 100644
-index 0000000..a4824bd
+index 0000000000000..a4824bda90e81
 --- /dev/null
 +++ b/tc/p_ip6.c
 @@ -0,0 +1,91 @@
@@ -300,5 +300,5 @@ index 0000000..a4824bd
 +	parse_ip6,
 +};
 -- 
-1.8.3.1
+2.21.0
 
diff --git a/SOURCES/0032-devlink-Add-option-to-set-and-show-eswitch-encapsula.patch b/SOURCES/0032-devlink-Add-option-to-set-and-show-eswitch-encapsula.patch
index 00d638f..97fad96 100644
--- a/SOURCES/0032-devlink-Add-option-to-set-and-show-eswitch-encapsula.patch
+++ b/SOURCES/0032-devlink-Add-option-to-set-and-show-eswitch-encapsula.patch
@@ -26,12 +26,12 @@ Date:   Sun May 21 08:37:27 2017 +0300
 
 Signed-off-by: Kamal Heib <kheib@redhat.com>
 ---
- devlink/devlink.c      | 48 +++++++++++++++++++++++++++++++++++++++++++++++-
- man/man8/devlink-dev.8 | 13 +++++++++++++
+ devlink/devlink.c      | 48 +++++++++++++++++++++++++++++++++++++++++-
+ man/man8/devlink-dev.8 | 13 ++++++++++++
  2 files changed, 60 insertions(+), 1 deletion(-)
 
 diff --git a/devlink/devlink.c b/devlink/devlink.c
-index e22ee0a..f9bc16c 100644
+index e22ee0a0e8d83..f9bc16c350c40 100644
 --- a/devlink/devlink.c
 +++ b/devlink/devlink.c
 @@ -176,6 +176,7 @@ static void ifname_map_free(struct ifname_map *ifname_map)
@@ -154,7 +154,7 @@ index e22ee0a..f9bc16c 100644
  	if (err)
  		return err;
 diff --git a/man/man8/devlink-dev.8 b/man/man8/devlink-dev.8
-index 6bfe66f..b074d57 100644
+index 6bfe66f87955a..b074d57a19369 100644
 --- a/man/man8/devlink-dev.8
 +++ b/man/man8/devlink-dev.8
 @@ -34,6 +34,9 @@ devlink-dev \- devlink device configuration
@@ -185,5 +185,5 @@ index 6bfe66f..b074d57 100644
  .PP
  devlink dev show
 -- 
-1.8.3.1
+2.21.0
 
diff --git a/SOURCES/0033-tc-flower-add-support-for-tcp-flags.patch b/SOURCES/0033-tc-flower-add-support-for-tcp-flags.patch
index 333ce11..0fe432c 100644
--- a/SOURCES/0033-tc-flower-add-support-for-tcp-flags.patch
+++ b/SOURCES/0033-tc-flower-add-support-for-tcp-flags.patch
@@ -18,12 +18,12 @@ Date:   Tue May 23 23:51:39 2017 +0200
 
 Signed-off-by: Kamal Heib <kheib@redhat.com>
 ---
- man/man8/tc-flower.8 |  8 +++++++
- tc/f_flower.c        | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++
+ man/man8/tc-flower.8 |  8 ++++++
+ tc/f_flower.c        | 62 ++++++++++++++++++++++++++++++++++++++++++++
  2 files changed, 70 insertions(+)
 
 diff --git a/man/man8/tc-flower.8 b/man/man8/tc-flower.8
-index ba29065..7648079 100644
+index ba290657c2245..76480798d72f9 100644
 --- a/man/man8/tc-flower.8
 +++ b/man/man8/tc-flower.8
 @@ -35,6 +35,8 @@ flower \- flow based traffic control filter
@@ -49,7 +49,7 @@ index ba29065..7648079 100644
  .TQ
  .BI code " MASKED_CODE"
 diff --git a/tc/f_flower.c b/tc/f_flower.c
-index ebc63ca..1b6b46e 100644
+index ebc63ca6b2a27..1b6b46ea0177b 100644
 --- a/tc/f_flower.c
 +++ b/tc/f_flower.c
 @@ -57,6 +57,7 @@ static void explain(void)
@@ -150,5 +150,5 @@ index ebc63ca..1b6b46e 100644
  					FLOWER_ICMP_FIELD_TYPE);
  	nl_mask_type = flower_icmp_attr_mask_type(eth_type, ip_proto,
 -- 
-1.8.3.1
+2.21.0
 
diff --git a/SOURCES/0034-iplink-Update-usage-in-help-message.patch b/SOURCES/0034-iplink-Update-usage-in-help-message.patch
index 63422a8..7c1e19d 100644
--- a/SOURCES/0034-iplink-Update-usage-in-help-message.patch
+++ b/SOURCES/0034-iplink-Update-usage-in-help-message.patch
@@ -26,7 +26,7 @@ Signed-off-by: Kamal Heib <kheib@redhat.com>
  2 files changed, 4 insertions(+), 2 deletions(-)
 
 diff --git a/ip/iplink.c b/ip/iplink.c
-index b08d227..193997c 100644
+index b08d227d44bee..193997cad2a35 100644
 --- a/ip/iplink.c
 +++ b/ip/iplink.c
 @@ -91,6 +91,8 @@ void iplink_usage(void)
@@ -39,7 +39,7 @@ index b08d227..193997c 100644
  		"				  object FILE [ section NAME ] [ verbose ] |\n"
  		"				  pinned FILE } ]\n"
 diff --git a/man/man8/ip-link.8.in b/man/man8/ip-link.8.in
-index a5ddfe7..48417db 100644
+index a5ddfe7a106e7..48417dbce80aa 100644
 --- a/man/man8/ip-link.8.in
 +++ b/man/man8/ip-link.8.in
 @@ -1564,10 +1564,10 @@ sent by the VF.
@@ -56,5 +56,5 @@ index a5ddfe7..48417db 100644
  
  .TP
 -- 
-1.8.3.1
+2.21.0
 
diff --git a/SOURCES/0035-tc-flower-add-support-for-matching-on-ip-tos-and-ttl.patch b/SOURCES/0035-tc-flower-add-support-for-matching-on-ip-tos-and-ttl.patch
index 7aef8b0..db1f70a 100644
--- a/SOURCES/0035-tc-flower-add-support-for-matching-on-ip-tos-and-ttl.patch
+++ b/SOURCES/0035-tc-flower-add-support-for-matching-on-ip-tos-and-ttl.patch
@@ -19,12 +19,12 @@ Date:   Wed Jun 7 15:17:54 2017 +0300
 
 Signed-off-by: Kamal Heib <kheib@redhat.com>
 ---
- man/man8/tc-flower.8 | 17 +++++++++++-
- tc/f_flower.c        | 75 ++++++++++++++++++++++++++++++++++++++++++++++++++++
+ man/man8/tc-flower.8 | 17 +++++++++-
+ tc/f_flower.c        | 75 ++++++++++++++++++++++++++++++++++++++++++++
  2 files changed, 91 insertions(+), 1 deletion(-)
 
 diff --git a/man/man8/tc-flower.8 b/man/man8/tc-flower.8
-index 7648079..be46f02 100644
+index 76480798d72f9..be46f0278b4ff 100644
 --- a/man/man8/tc-flower.8
 +++ b/man/man8/tc-flower.8
 @@ -30,7 +30,11 @@ flower \- flow based traffic control filter
@@ -59,7 +59,7 @@ index 7648079..be46f02 100644
  .TQ
  .BI src_ip " PREFIX"
 diff --git a/tc/f_flower.c b/tc/f_flower.c
-index 1b6b46e..5be693a 100644
+index 1b6b46ea0177b..5be693ab7f6af 100644
 --- a/tc/f_flower.c
 +++ b/tc/f_flower.c
 @@ -53,6 +53,8 @@ static void explain(void)
@@ -173,5 +173,5 @@ index 1b6b46e..5be693a 100644
  			     tb[TCA_FLOWER_KEY_IPV4_DST],
  			     tb[TCA_FLOWER_KEY_IPV4_DST_MASK],
 -- 
-1.8.3.1
+2.21.0
 
diff --git a/SOURCES/0036-iproute-build-more-easily-on-Android.patch b/SOURCES/0036-iproute-build-more-easily-on-Android.patch
index 29c0186..e2dd7c5 100644
--- a/SOURCES/0036-iproute-build-more-easily-on-Android.patch
+++ b/SOURCES/0036-iproute-build-more-easily-on-Android.patch
@@ -41,451 +41,231 @@ Date:   Tue Oct 3 02:03:37 2017 +0900
     Signed-off-by: Elliott Hughes <enh@google.com>
     Signed-off-by: Lorenzo Colitti <lorenzo@google.com>
 ---
- Makefile                                       |    2 +-
- include/linux/atm.h                            |  241 ------
- include/linux/atmapi.h                         |   29 -
- include/linux/atmarp.h                         |   41 -
- include/linux/atmdev.h                         |  215 -----
- include/linux/atmioc.h                         |   41 -
- include/linux/atmsap.h                         |  162 ----
- include/linux/bpf.h                            |  867 -------------------
- include/linux/bpf_common.h                     |   55 --
- include/linux/can.h                            |  201 -----
- include/linux/can/netlink.h                    |  142 ----
- include/linux/can/vxcan.h                      |   12 -
- include/linux/devlink.h                        |  247 ------
- include/linux/elf-em.h                         |   60 --
- include/linux/fib_rules.h                      |   80 --
- include/linux/filter.h                         |   89 --
- include/linux/fou.h                            |   41 -
- include/linux/gen_stats.h                      |   79 --
- include/linux/genetlink.h                      |   88 --
- include/linux/hdlc/ioctl.h                     |   84 --
- include/linux/icmpv6.h                         |  166 ----
- include/linux/if.h                             |  292 -------
- include/linux/if_addr.h                        |   67 --
- include/linux/if_addrlabel.h                   |   32 -
- include/linux/if_alg.h                         |   42 -
- include/linux/if_arp.h                         |  163 ----
- include/linux/if_bonding.h                     |  130 ---
- include/linux/if_bridge.h                      |  294 -------
- include/linux/if_ether.h                       |  158 ----
- include/linux/if_link.h                        |  928 --------------------
- include/linux/if_macsec.h                      |  171 ----
- include/linux/if_packet.h                      |  302 -------
- include/linux/if_tun.h                         |  107 ---
- include/linux/if_tunnel.h                      |  158 ----
- include/linux/if_vlan.h                        |   64 --
- include/linux/ife.h                            |   18 -
- include/linux/ila.h                            |   45 -
- include/linux/in.h                             |  300 -------
- include/linux/in6.h                            |  296 -------
- include/linux/in_route.h                       |   32 -
- include/linux/inet_diag.h                      |  196 -----
- include/linux/ip.h                             |  175 ----
- include/linux/ip6_tunnel.h                     |   53 --
- include/linux/ipsec.h                          |   47 -
- include/linux/kernel.h                         |   14 -
- include/linux/l2tp.h                           |  199 -----
- include/linux/libc-compat.h                    |  213 -----
- include/linux/limits.h                         |   20 -
- include/linux/lwtunnel.h                       |   70 --
- include/linux/magic.h                          |   91 --
- include/linux/mpls.h                           |   76 --
- include/linux/mpls_iptunnel.h                  |   30 -
- include/linux/neighbour.h                      |  171 ----
- include/linux/net_namespace.h                  |   23 -
- include/linux/netconf.h                        |   28 -
- include/linux/netdevice.h                      |   65 --
- include/linux/netfilter.h                      |   77 --
- include/linux/netfilter/ipset/ip_set.h         |  304 -------
- include/linux/netfilter/x_tables.h             |  185 ----
- include/linux/netfilter/xt_set.h               |   93 --
- include/linux/netfilter/xt_tcpudp.h            |   36 -
- include/linux/netfilter_ipv4.h                 |   79 --
- include/linux/netfilter_ipv4/ip_tables.h       |  228 -----
- include/linux/netfilter_ipv6.h                 |   77 --
- include/linux/netfilter_ipv6/ip6_tables.h      |  269 ------
- include/linux/netlink.h                        |  246 ------
- include/linux/netlink_diag.h                   |   64 --
- include/linux/packet_diag.h                    |   80 --
- include/linux/param.h                          |    6 -
- include/linux/pfkeyv2.h                        |  383 ---------
- include/linux/pkt_cls.h                        |  569 -------------
- include/linux/pkt_sched.h                      |  874 -------------------
- include/linux/posix_types.h                    |   37 -
- include/linux/rtnetlink.h                      |  718 ----------------
- include/linux/sctp.h                           | 1085 ------------------------
- include/linux/seg6.h                           |   54 --
- include/linux/seg6_genl.h                      |   32 -
- include/linux/seg6_hmac.h                      |   22 -
- include/linux/seg6_iptunnel.h                  |   40 -
- include/linux/seg6_local.h                     |   68 --
- include/linux/sock_diag.h                      |   38 -
- include/linux/socket.h                         |   21 -
- include/linux/sockios.h                        |  152 ----
- include/linux/stddef.h                         |    5 -
- include/linux/sysinfo.h                        |   24 -
- include/linux/tc_act/tc_bpf.h                  |   36 -
- include/linux/tc_act/tc_connmark.h             |   23 -
- include/linux/tc_act/tc_csum.h                 |   34 -
- include/linux/tc_act/tc_defact.h               |   20 -
- include/linux/tc_act/tc_gact.h                 |   33 -
- include/linux/tc_act/tc_ife.h                  |   32 -
- include/linux/tc_act/tc_ipt.h                  |   22 -
- include/linux/tc_act/tc_mirred.h               |   28 -
- include/linux/tc_act/tc_nat.h                  |   28 -
- include/linux/tc_act/tc_pedit.h                |   66 --
- include/linux/tc_act/tc_sample.h               |   26 -
- include/linux/tc_act/tc_skbedit.h              |   51 --
- include/linux/tc_act/tc_skbmod.h               |   39 -
- include/linux/tc_act/tc_tunnel_key.h           |   43 -
- include/linux/tc_act/tc_vlan.h                 |   38 -
- include/linux/tc_ematch/tc_em_cmp.h            |   25 -
- include/linux/tc_ematch/tc_em_meta.h           |   92 --
- include/linux/tc_ematch/tc_em_nbyte.h          |   13 -
- include/linux/tcp.h                            |  268 ------
- include/linux/tcp_metrics.h                    |   60 --
- include/linux/tipc.h                           |  256 ------
- include/linux/tipc_netlink.h                   |  294 -------
- include/linux/types.h                          |   47 -
- include/linux/unix_diag.h                      |   58 --
- include/linux/veth.h                           |   12 -
- include/linux/xfrm.h                           |  536 ------------
- include/uapi/linux/atm.h                       |  241 ++++++
- include/uapi/linux/atmapi.h                    |   29 +
- include/uapi/linux/atmarp.h                    |   41 +
- include/uapi/linux/atmdev.h                    |  215 +++++
- include/uapi/linux/atmioc.h                    |   41 +
- include/uapi/linux/atmsap.h                    |  162 ++++
- include/uapi/linux/bpf.h                       |  867 +++++++++++++++++++
- include/uapi/linux/bpf_common.h                |   55 ++
- include/uapi/linux/can.h                       |  201 +++++
- include/uapi/linux/can/netlink.h               |  142 ++++
- include/uapi/linux/can/vxcan.h                 |   12 +
- include/uapi/linux/devlink.h                   |  247 ++++++
- include/uapi/linux/elf-em.h                    |   60 ++
- include/uapi/linux/fib_rules.h                 |   80 ++
- include/uapi/linux/filter.h                    |   89 ++
- include/uapi/linux/fou.h                       |   41 +
- include/uapi/linux/gen_stats.h                 |   79 ++
- include/uapi/linux/genetlink.h                 |   88 ++
- include/uapi/linux/hdlc/ioctl.h                |   84 ++
- include/uapi/linux/icmpv6.h                    |  166 ++++
- include/uapi/linux/if.h                        |  292 +++++++
- include/uapi/linux/if_addr.h                   |   67 ++
- include/uapi/linux/if_addrlabel.h              |   32 +
- include/uapi/linux/if_alg.h                    |   42 +
- include/uapi/linux/if_arp.h                    |  163 ++++
- include/uapi/linux/if_bonding.h                |  130 +++
- include/uapi/linux/if_bridge.h                 |  294 +++++++
- include/uapi/linux/if_ether.h                  |  158 ++++
- include/uapi/linux/if_link.h                   |  928 ++++++++++++++++++++
- include/uapi/linux/if_macsec.h                 |  171 ++++
- include/uapi/linux/if_packet.h                 |  302 +++++++
- include/uapi/linux/if_tun.h                    |  107 +++
- include/uapi/linux/if_tunnel.h                 |  158 ++++
- include/uapi/linux/if_vlan.h                   |   64 ++
- include/uapi/linux/ife.h                       |   18 +
- include/uapi/linux/ila.h                       |   45 +
- include/uapi/linux/in.h                        |  300 +++++++
- include/uapi/linux/in6.h                       |  296 +++++++
- include/uapi/linux/in_route.h                  |   32 +
- include/uapi/linux/inet_diag.h                 |  196 +++++
- include/uapi/linux/ip.h                        |  175 ++++
- include/uapi/linux/ip6_tunnel.h                |   53 ++
- include/uapi/linux/ipsec.h                     |   47 +
- include/uapi/linux/kernel.h                    |   14 +
- include/uapi/linux/l2tp.h                      |  199 +++++
- include/uapi/linux/libc-compat.h               |  213 +++++
- include/uapi/linux/limits.h                    |   20 +
- include/uapi/linux/lwtunnel.h                  |   70 ++
- include/uapi/linux/magic.h                     |   91 ++
- include/uapi/linux/mpls.h                      |   76 ++
- include/uapi/linux/mpls_iptunnel.h             |   30 +
- include/uapi/linux/neighbour.h                 |  171 ++++
- include/uapi/linux/net_namespace.h             |   23 +
- include/uapi/linux/netconf.h                   |   28 +
- include/uapi/linux/netdevice.h                 |   65 ++
- include/uapi/linux/netfilter.h                 |   77 ++
- include/uapi/linux/netfilter/ipset/ip_set.h    |  304 +++++++
- include/uapi/linux/netfilter/x_tables.h        |  185 ++++
- include/uapi/linux/netfilter/xt_set.h          |   93 ++
- include/uapi/linux/netfilter/xt_tcpudp.h       |   36 +
- include/uapi/linux/netfilter_ipv4.h            |   79 ++
- include/uapi/linux/netfilter_ipv4/ip_tables.h  |  228 +++++
- include/uapi/linux/netfilter_ipv6.h            |   77 ++
- include/uapi/linux/netfilter_ipv6/ip6_tables.h |  269 ++++++
- include/uapi/linux/netlink.h                   |  246 ++++++
- include/uapi/linux/netlink_diag.h              |   64 ++
- include/uapi/linux/packet_diag.h               |   80 ++
- include/uapi/linux/param.h                     |    6 +
- include/uapi/linux/pfkeyv2.h                   |  383 +++++++++
- include/uapi/linux/pkt_cls.h                   |  569 +++++++++++++
- include/uapi/linux/pkt_sched.h                 |  874 +++++++++++++++++++
- include/uapi/linux/posix_types.h               |   37 +
- include/uapi/linux/rtnetlink.h                 |  718 ++++++++++++++++
- include/uapi/linux/sctp.h                      | 1085 ++++++++++++++++++++++++
- include/uapi/linux/seg6.h                      |   54 ++
- include/uapi/linux/seg6_genl.h                 |   32 +
- include/uapi/linux/seg6_hmac.h                 |   22 +
- include/uapi/linux/seg6_iptunnel.h             |   40 +
- include/uapi/linux/seg6_local.h                |   68 ++
- include/uapi/linux/sock_diag.h                 |   38 +
- include/uapi/linux/socket.h                    |   21 +
- include/uapi/linux/sockios.h                   |  152 ++++
- include/uapi/linux/stddef.h                    |    5 +
- include/uapi/linux/sysinfo.h                   |   24 +
- include/uapi/linux/tc_act/tc_bpf.h             |   36 +
- include/uapi/linux/tc_act/tc_connmark.h        |   23 +
- include/uapi/linux/tc_act/tc_csum.h            |   34 +
- include/uapi/linux/tc_act/tc_defact.h          |   20 +
- include/uapi/linux/tc_act/tc_gact.h            |   33 +
- include/uapi/linux/tc_act/tc_ife.h             |   32 +
- include/uapi/linux/tc_act/tc_ipt.h             |   22 +
- include/uapi/linux/tc_act/tc_mirred.h          |   28 +
- include/uapi/linux/tc_act/tc_nat.h             |   28 +
- include/uapi/linux/tc_act/tc_pedit.h           |   66 ++
- include/uapi/linux/tc_act/tc_sample.h          |   26 +
- include/uapi/linux/tc_act/tc_skbedit.h         |   51 ++
- include/uapi/linux/tc_act/tc_skbmod.h          |   39 +
- include/uapi/linux/tc_act/tc_tunnel_key.h      |   43 +
- include/uapi/linux/tc_act/tc_vlan.h            |   38 +
- include/uapi/linux/tc_ematch/tc_em_cmp.h       |   25 +
- include/uapi/linux/tc_ematch/tc_em_meta.h      |   92 ++
- include/uapi/linux/tc_ematch/tc_em_nbyte.h     |   13 +
- include/uapi/linux/tcp.h                       |  268 ++++++
- include/uapi/linux/tcp_metrics.h               |   60 ++
- include/uapi/linux/tipc.h                      |  256 ++++++
- include/uapi/linux/tipc_netlink.h              |  294 +++++++
- include/uapi/linux/types.h                     |   47 +
- include/uapi/linux/unix_diag.h                 |   58 ++
- include/uapi/linux/veth.h                      |   12 +
- include/uapi/linux/xfrm.h                      |  536 ++++++++++++
- 221 files changed, 16057 insertions(+), 16057 deletions(-)
- delete mode 100644 include/linux/atm.h
- delete mode 100644 include/linux/atmapi.h
- delete mode 100644 include/linux/atmarp.h
- delete mode 100644 include/linux/atmdev.h
- delete mode 100644 include/linux/atmioc.h
- delete mode 100644 include/linux/atmsap.h
- delete mode 100644 include/linux/bpf.h
- delete mode 100644 include/linux/bpf_common.h
- delete mode 100644 include/linux/can.h
- delete mode 100644 include/linux/can/netlink.h
- delete mode 100644 include/linux/can/vxcan.h
- delete mode 100644 include/linux/devlink.h
- delete mode 100644 include/linux/elf-em.h
- delete mode 100644 include/linux/fib_rules.h
- delete mode 100644 include/linux/filter.h
- delete mode 100644 include/linux/fou.h
- delete mode 100644 include/linux/gen_stats.h
- delete mode 100644 include/linux/genetlink.h
- delete mode 100644 include/linux/hdlc/ioctl.h
- delete mode 100644 include/linux/icmpv6.h
- delete mode 100644 include/linux/if.h
- delete mode 100644 include/linux/if_addr.h
- delete mode 100644 include/linux/if_addrlabel.h
- delete mode 100644 include/linux/if_alg.h
- delete mode 100644 include/linux/if_arp.h
- delete mode 100644 include/linux/if_bonding.h
- delete mode 100644 include/linux/if_bridge.h
- delete mode 100644 include/linux/if_ether.h
- delete mode 100644 include/linux/if_link.h
- delete mode 100644 include/linux/if_macsec.h
- delete mode 100644 include/linux/if_packet.h
- delete mode 100644 include/linux/if_tun.h
- delete mode 100644 include/linux/if_tunnel.h
- delete mode 100644 include/linux/if_vlan.h
- delete mode 100644 include/linux/ife.h
- delete mode 100644 include/linux/ila.h
- delete mode 100644 include/linux/in.h
- delete mode 100644 include/linux/in6.h
- delete mode 100644 include/linux/in_route.h
- delete mode 100644 include/linux/inet_diag.h
- delete mode 100644 include/linux/ip.h
- delete mode 100644 include/linux/ip6_tunnel.h
- delete mode 100644 include/linux/ipsec.h
- delete mode 100644 include/linux/kernel.h
- delete mode 100644 include/linux/l2tp.h
- delete mode 100644 include/linux/libc-compat.h
- delete mode 100644 include/linux/limits.h
- delete mode 100644 include/linux/lwtunnel.h
- delete mode 100644 include/linux/magic.h
- delete mode 100644 include/linux/mpls.h
- delete mode 100644 include/linux/mpls_iptunnel.h
- delete mode 100644 include/linux/neighbour.h
- delete mode 100644 include/linux/net_namespace.h
- delete mode 100644 include/linux/netconf.h
- delete mode 100644 include/linux/netdevice.h
- delete mode 100644 include/linux/netfilter.h
- delete mode 100644 include/linux/netfilter/ipset/ip_set.h
- delete mode 100644 include/linux/netfilter/x_tables.h
- delete mode 100644 include/linux/netfilter/xt_set.h
- delete mode 100644 include/linux/netfilter/xt_tcpudp.h
- delete mode 100644 include/linux/netfilter_ipv4.h
- delete mode 100644 include/linux/netfilter_ipv4/ip_tables.h
- delete mode 100644 include/linux/netfilter_ipv6.h
- delete mode 100644 include/linux/netfilter_ipv6/ip6_tables.h
- delete mode 100644 include/linux/netlink.h
- delete mode 100644 include/linux/netlink_diag.h
- delete mode 100644 include/linux/packet_diag.h
- delete mode 100644 include/linux/param.h
- delete mode 100644 include/linux/pfkeyv2.h
- delete mode 100644 include/linux/pkt_cls.h
- delete mode 100644 include/linux/pkt_sched.h
- delete mode 100644 include/linux/posix_types.h
- delete mode 100644 include/linux/rtnetlink.h
- delete mode 100644 include/linux/sctp.h
- delete mode 100644 include/linux/seg6.h
- delete mode 100644 include/linux/seg6_genl.h
- delete mode 100644 include/linux/seg6_hmac.h
- delete mode 100644 include/linux/seg6_iptunnel.h
- delete mode 100644 include/linux/seg6_local.h
- delete mode 100644 include/linux/sock_diag.h
- delete mode 100644 include/linux/socket.h
- delete mode 100644 include/linux/sockios.h
- delete mode 100644 include/linux/stddef.h
- delete mode 100644 include/linux/sysinfo.h
- delete mode 100644 include/linux/tc_act/tc_bpf.h
- delete mode 100644 include/linux/tc_act/tc_connmark.h
- delete mode 100644 include/linux/tc_act/tc_csum.h
- delete mode 100644 include/linux/tc_act/tc_defact.h
- delete mode 100644 include/linux/tc_act/tc_gact.h
- delete mode 100644 include/linux/tc_act/tc_ife.h
- delete mode 100644 include/linux/tc_act/tc_ipt.h
- delete mode 100644 include/linux/tc_act/tc_mirred.h
- delete mode 100644 include/linux/tc_act/tc_nat.h
- delete mode 100644 include/linux/tc_act/tc_pedit.h
- delete mode 100644 include/linux/tc_act/tc_sample.h
- delete mode 100644 include/linux/tc_act/tc_skbedit.h
- delete mode 100644 include/linux/tc_act/tc_skbmod.h
- delete mode 100644 include/linux/tc_act/tc_tunnel_key.h
- delete mode 100644 include/linux/tc_act/tc_vlan.h
- delete mode 100644 include/linux/tc_ematch/tc_em_cmp.h
- delete mode 100644 include/linux/tc_ematch/tc_em_meta.h
- delete mode 100644 include/linux/tc_ematch/tc_em_nbyte.h
- delete mode 100644 include/linux/tcp.h
- delete mode 100644 include/linux/tcp_metrics.h
- delete mode 100644 include/linux/tipc.h
- delete mode 100644 include/linux/tipc_netlink.h
- delete mode 100644 include/linux/types.h
- delete mode 100644 include/linux/unix_diag.h
- delete mode 100644 include/linux/veth.h
- delete mode 100644 include/linux/xfrm.h
- create mode 100644 include/uapi/linux/atm.h
- create mode 100644 include/uapi/linux/atmapi.h
- create mode 100644 include/uapi/linux/atmarp.h
- create mode 100644 include/uapi/linux/atmdev.h
- create mode 100644 include/uapi/linux/atmioc.h
- create mode 100644 include/uapi/linux/atmsap.h
- create mode 100644 include/uapi/linux/bpf.h
- create mode 100644 include/uapi/linux/bpf_common.h
- create mode 100644 include/uapi/linux/can.h
- create mode 100644 include/uapi/linux/can/netlink.h
- create mode 100644 include/uapi/linux/can/vxcan.h
- create mode 100644 include/uapi/linux/devlink.h
- create mode 100644 include/uapi/linux/elf-em.h
- create mode 100644 include/uapi/linux/fib_rules.h
- create mode 100644 include/uapi/linux/filter.h
- create mode 100644 include/uapi/linux/fou.h
- create mode 100644 include/uapi/linux/gen_stats.h
- create mode 100644 include/uapi/linux/genetlink.h
- create mode 100644 include/uapi/linux/hdlc/ioctl.h
- create mode 100644 include/uapi/linux/icmpv6.h
- create mode 100644 include/uapi/linux/if.h
- create mode 100644 include/uapi/linux/if_addr.h
- create mode 100644 include/uapi/linux/if_addrlabel.h
- create mode 100644 include/uapi/linux/if_alg.h
- create mode 100644 include/uapi/linux/if_arp.h
- create mode 100644 include/uapi/linux/if_bonding.h
- create mode 100644 include/uapi/linux/if_bridge.h
- create mode 100644 include/uapi/linux/if_ether.h
- create mode 100644 include/uapi/linux/if_link.h
- create mode 100644 include/uapi/linux/if_macsec.h
- create mode 100644 include/uapi/linux/if_packet.h
- create mode 100644 include/uapi/linux/if_tun.h
- create mode 100644 include/uapi/linux/if_tunnel.h
- create mode 100644 include/uapi/linux/if_vlan.h
- create mode 100644 include/uapi/linux/ife.h
- create mode 100644 include/uapi/linux/ila.h
- create mode 100644 include/uapi/linux/in.h
- create mode 100644 include/uapi/linux/in6.h
- create mode 100644 include/uapi/linux/in_route.h
- create mode 100644 include/uapi/linux/inet_diag.h
- create mode 100644 include/uapi/linux/ip.h
- create mode 100644 include/uapi/linux/ip6_tunnel.h
- create mode 100644 include/uapi/linux/ipsec.h
- create mode 100644 include/uapi/linux/kernel.h
- create mode 100644 include/uapi/linux/l2tp.h
- create mode 100644 include/uapi/linux/libc-compat.h
- create mode 100644 include/uapi/linux/limits.h
- create mode 100644 include/uapi/linux/lwtunnel.h
- create mode 100644 include/uapi/linux/magic.h
- create mode 100644 include/uapi/linux/mpls.h
- create mode 100644 include/uapi/linux/mpls_iptunnel.h
- create mode 100644 include/uapi/linux/neighbour.h
- create mode 100644 include/uapi/linux/net_namespace.h
- create mode 100644 include/uapi/linux/netconf.h
- create mode 100644 include/uapi/linux/netdevice.h
- create mode 100644 include/uapi/linux/netfilter.h
- create mode 100644 include/uapi/linux/netfilter/ipset/ip_set.h
- create mode 100644 include/uapi/linux/netfilter/x_tables.h
- create mode 100644 include/uapi/linux/netfilter/xt_set.h
- create mode 100644 include/uapi/linux/netfilter/xt_tcpudp.h
- create mode 100644 include/uapi/linux/netfilter_ipv4.h
- create mode 100644 include/uapi/linux/netfilter_ipv4/ip_tables.h
- create mode 100644 include/uapi/linux/netfilter_ipv6.h
- create mode 100644 include/uapi/linux/netfilter_ipv6/ip6_tables.h
- create mode 100644 include/uapi/linux/netlink.h
- create mode 100644 include/uapi/linux/netlink_diag.h
- create mode 100644 include/uapi/linux/packet_diag.h
- create mode 100644 include/uapi/linux/param.h
- create mode 100644 include/uapi/linux/pfkeyv2.h
- create mode 100644 include/uapi/linux/pkt_cls.h
- create mode 100644 include/uapi/linux/pkt_sched.h
- create mode 100644 include/uapi/linux/posix_types.h
- create mode 100644 include/uapi/linux/rtnetlink.h
- create mode 100644 include/uapi/linux/sctp.h
- create mode 100644 include/uapi/linux/seg6.h
- create mode 100644 include/uapi/linux/seg6_genl.h
- create mode 100644 include/uapi/linux/seg6_hmac.h
- create mode 100644 include/uapi/linux/seg6_iptunnel.h
- create mode 100644 include/uapi/linux/seg6_local.h
- create mode 100644 include/uapi/linux/sock_diag.h
- create mode 100644 include/uapi/linux/socket.h
- create mode 100644 include/uapi/linux/sockios.h
- create mode 100644 include/uapi/linux/stddef.h
- create mode 100644 include/uapi/linux/sysinfo.h
- create mode 100644 include/uapi/linux/tc_act/tc_bpf.h
- create mode 100644 include/uapi/linux/tc_act/tc_connmark.h
- create mode 100644 include/uapi/linux/tc_act/tc_csum.h
- create mode 100644 include/uapi/linux/tc_act/tc_defact.h
- create mode 100644 include/uapi/linux/tc_act/tc_gact.h
- create mode 100644 include/uapi/linux/tc_act/tc_ife.h
- create mode 100644 include/uapi/linux/tc_act/tc_ipt.h
- create mode 100644 include/uapi/linux/tc_act/tc_mirred.h
- create mode 100644 include/uapi/linux/tc_act/tc_nat.h
- create mode 100644 include/uapi/linux/tc_act/tc_pedit.h
- create mode 100644 include/uapi/linux/tc_act/tc_sample.h
- create mode 100644 include/uapi/linux/tc_act/tc_skbedit.h
- create mode 100644 include/uapi/linux/tc_act/tc_skbmod.h
- create mode 100644 include/uapi/linux/tc_act/tc_tunnel_key.h
- create mode 100644 include/uapi/linux/tc_act/tc_vlan.h
- create mode 100644 include/uapi/linux/tc_ematch/tc_em_cmp.h
- create mode 100644 include/uapi/linux/tc_ematch/tc_em_meta.h
- create mode 100644 include/uapi/linux/tc_ematch/tc_em_nbyte.h
- create mode 100644 include/uapi/linux/tcp.h
- create mode 100644 include/uapi/linux/tcp_metrics.h
- create mode 100644 include/uapi/linux/tipc.h
- create mode 100644 include/uapi/linux/tipc_netlink.h
- create mode 100644 include/uapi/linux/types.h
- create mode 100644 include/uapi/linux/unix_diag.h
- create mode 100644 include/uapi/linux/veth.h
- create mode 100644 include/uapi/linux/xfrm.h
+ Makefile                                             | 2 +-
+ include/{ => uapi}/linux/atm.h                       | 0
+ include/{ => uapi}/linux/atmapi.h                    | 0
+ include/{ => uapi}/linux/atmarp.h                    | 0
+ include/{ => uapi}/linux/atmdev.h                    | 0
+ include/{ => uapi}/linux/atmioc.h                    | 0
+ include/{ => uapi}/linux/atmsap.h                    | 0
+ include/{ => uapi}/linux/bpf.h                       | 0
+ include/{ => uapi}/linux/bpf_common.h                | 0
+ include/{ => uapi}/linux/can.h                       | 0
+ include/{ => uapi}/linux/can/netlink.h               | 0
+ include/{ => uapi}/linux/can/vxcan.h                 | 0
+ include/{ => uapi}/linux/devlink.h                   | 0
+ include/{ => uapi}/linux/elf-em.h                    | 0
+ include/{ => uapi}/linux/fib_rules.h                 | 0
+ include/{ => uapi}/linux/filter.h                    | 0
+ include/{ => uapi}/linux/fou.h                       | 0
+ include/{ => uapi}/linux/gen_stats.h                 | 0
+ include/{ => uapi}/linux/genetlink.h                 | 0
+ include/{ => uapi}/linux/hdlc/ioctl.h                | 0
+ include/{ => uapi}/linux/icmpv6.h                    | 0
+ include/{ => uapi}/linux/if.h                        | 0
+ include/{ => uapi}/linux/if_addr.h                   | 0
+ include/{ => uapi}/linux/if_addrlabel.h              | 0
+ include/{ => uapi}/linux/if_alg.h                    | 0
+ include/{ => uapi}/linux/if_arp.h                    | 0
+ include/{ => uapi}/linux/if_bonding.h                | 0
+ include/{ => uapi}/linux/if_bridge.h                 | 0
+ include/{ => uapi}/linux/if_ether.h                  | 0
+ include/{ => uapi}/linux/if_link.h                   | 0
+ include/{ => uapi}/linux/if_macsec.h                 | 0
+ include/{ => uapi}/linux/if_packet.h                 | 0
+ include/{ => uapi}/linux/if_tun.h                    | 0
+ include/{ => uapi}/linux/if_tunnel.h                 | 0
+ include/{ => uapi}/linux/if_vlan.h                   | 0
+ include/{ => uapi}/linux/ife.h                       | 0
+ include/{ => uapi}/linux/ila.h                       | 0
+ include/{ => uapi}/linux/in.h                        | 0
+ include/{ => uapi}/linux/in6.h                       | 0
+ include/{ => uapi}/linux/in_route.h                  | 0
+ include/{ => uapi}/linux/inet_diag.h                 | 0
+ include/{ => uapi}/linux/ip.h                        | 0
+ include/{ => uapi}/linux/ip6_tunnel.h                | 0
+ include/{ => uapi}/linux/ipsec.h                     | 0
+ include/{ => uapi}/linux/kernel.h                    | 0
+ include/{ => uapi}/linux/l2tp.h                      | 0
+ include/{ => uapi}/linux/libc-compat.h               | 0
+ include/{ => uapi}/linux/limits.h                    | 0
+ include/{ => uapi}/linux/lwtunnel.h                  | 0
+ include/{ => uapi}/linux/magic.h                     | 0
+ include/{ => uapi}/linux/mpls.h                      | 0
+ include/{ => uapi}/linux/mpls_iptunnel.h             | 0
+ include/{ => uapi}/linux/neighbour.h                 | 0
+ include/{ => uapi}/linux/net_namespace.h             | 0
+ include/{ => uapi}/linux/netconf.h                   | 0
+ include/{ => uapi}/linux/netdevice.h                 | 0
+ include/{ => uapi}/linux/netfilter.h                 | 0
+ include/{ => uapi}/linux/netfilter/ipset/ip_set.h    | 0
+ include/{ => uapi}/linux/netfilter/x_tables.h        | 0
+ include/{ => uapi}/linux/netfilter/xt_set.h          | 0
+ include/{ => uapi}/linux/netfilter/xt_tcpudp.h       | 0
+ include/{ => uapi}/linux/netfilter_ipv4.h            | 0
+ include/{ => uapi}/linux/netfilter_ipv4/ip_tables.h  | 0
+ include/{ => uapi}/linux/netfilter_ipv6.h            | 0
+ include/{ => uapi}/linux/netfilter_ipv6/ip6_tables.h | 0
+ include/{ => uapi}/linux/netlink.h                   | 0
+ include/{ => uapi}/linux/netlink_diag.h              | 0
+ include/{ => uapi}/linux/packet_diag.h               | 0
+ include/{ => uapi}/linux/param.h                     | 0
+ include/{ => uapi}/linux/pfkeyv2.h                   | 0
+ include/{ => uapi}/linux/pkt_cls.h                   | 0
+ include/{ => uapi}/linux/pkt_sched.h                 | 0
+ include/{ => uapi}/linux/posix_types.h               | 0
+ include/{ => uapi}/linux/rtnetlink.h                 | 0
+ include/{ => uapi}/linux/sctp.h                      | 0
+ include/{ => uapi}/linux/seg6.h                      | 0
+ include/{ => uapi}/linux/seg6_genl.h                 | 0
+ include/{ => uapi}/linux/seg6_hmac.h                 | 0
+ include/{ => uapi}/linux/seg6_iptunnel.h             | 0
+ include/{ => uapi}/linux/seg6_local.h                | 0
+ include/{ => uapi}/linux/sock_diag.h                 | 0
+ include/{ => uapi}/linux/socket.h                    | 0
+ include/{ => uapi}/linux/sockios.h                   | 0
+ include/{ => uapi}/linux/stddef.h                    | 0
+ include/{ => uapi}/linux/sysinfo.h                   | 0
+ include/{ => uapi}/linux/tc_act/tc_bpf.h             | 0
+ include/{ => uapi}/linux/tc_act/tc_connmark.h        | 0
+ include/{ => uapi}/linux/tc_act/tc_csum.h            | 0
+ include/{ => uapi}/linux/tc_act/tc_defact.h          | 0
+ include/{ => uapi}/linux/tc_act/tc_gact.h            | 0
+ include/{ => uapi}/linux/tc_act/tc_ife.h             | 0
+ include/{ => uapi}/linux/tc_act/tc_ipt.h             | 0
+ include/{ => uapi}/linux/tc_act/tc_mirred.h          | 0
+ include/{ => uapi}/linux/tc_act/tc_nat.h             | 0
+ include/{ => uapi}/linux/tc_act/tc_pedit.h           | 0
+ include/{ => uapi}/linux/tc_act/tc_sample.h          | 0
+ include/{ => uapi}/linux/tc_act/tc_skbedit.h         | 0
+ include/{ => uapi}/linux/tc_act/tc_skbmod.h          | 0
+ include/{ => uapi}/linux/tc_act/tc_tunnel_key.h      | 0
+ include/{ => uapi}/linux/tc_act/tc_vlan.h            | 0
+ include/{ => uapi}/linux/tc_ematch/tc_em_cmp.h       | 0
+ include/{ => uapi}/linux/tc_ematch/tc_em_meta.h      | 0
+ include/{ => uapi}/linux/tc_ematch/tc_em_nbyte.h     | 0
+ include/{ => uapi}/linux/tcp.h                       | 0
+ include/{ => uapi}/linux/tcp_metrics.h               | 0
+ include/{ => uapi}/linux/tipc.h                      | 0
+ include/{ => uapi}/linux/tipc_netlink.h              | 0
+ include/{ => uapi}/linux/types.h                     | 0
+ include/{ => uapi}/linux/unix_diag.h                 | 0
+ include/{ => uapi}/linux/veth.h                      | 0
+ include/{ => uapi}/linux/xfrm.h                      | 0
+ 111 files changed, 1 insertion(+), 1 deletion(-)
+ rename include/{ => uapi}/linux/atm.h (100%)
+ rename include/{ => uapi}/linux/atmapi.h (100%)
+ rename include/{ => uapi}/linux/atmarp.h (100%)
+ rename include/{ => uapi}/linux/atmdev.h (100%)
+ rename include/{ => uapi}/linux/atmioc.h (100%)
+ rename include/{ => uapi}/linux/atmsap.h (100%)
+ rename include/{ => uapi}/linux/bpf.h (100%)
+ rename include/{ => uapi}/linux/bpf_common.h (100%)
+ rename include/{ => uapi}/linux/can.h (100%)
+ rename include/{ => uapi}/linux/can/netlink.h (100%)
+ rename include/{ => uapi}/linux/can/vxcan.h (100%)
+ rename include/{ => uapi}/linux/devlink.h (100%)
+ rename include/{ => uapi}/linux/elf-em.h (100%)
+ rename include/{ => uapi}/linux/fib_rules.h (100%)
+ rename include/{ => uapi}/linux/filter.h (100%)
+ rename include/{ => uapi}/linux/fou.h (100%)
+ rename include/{ => uapi}/linux/gen_stats.h (100%)
+ rename include/{ => uapi}/linux/genetlink.h (100%)
+ rename include/{ => uapi}/linux/hdlc/ioctl.h (100%)
+ rename include/{ => uapi}/linux/icmpv6.h (100%)
+ rename include/{ => uapi}/linux/if.h (100%)
+ rename include/{ => uapi}/linux/if_addr.h (100%)
+ rename include/{ => uapi}/linux/if_addrlabel.h (100%)
+ rename include/{ => uapi}/linux/if_alg.h (100%)
+ rename include/{ => uapi}/linux/if_arp.h (100%)
+ rename include/{ => uapi}/linux/if_bonding.h (100%)
+ rename include/{ => uapi}/linux/if_bridge.h (100%)
+ rename include/{ => uapi}/linux/if_ether.h (100%)
+ rename include/{ => uapi}/linux/if_link.h (100%)
+ rename include/{ => uapi}/linux/if_macsec.h (100%)
+ rename include/{ => uapi}/linux/if_packet.h (100%)
+ rename include/{ => uapi}/linux/if_tun.h (100%)
+ rename include/{ => uapi}/linux/if_tunnel.h (100%)
+ rename include/{ => uapi}/linux/if_vlan.h (100%)
+ rename include/{ => uapi}/linux/ife.h (100%)
+ rename include/{ => uapi}/linux/ila.h (100%)
+ rename include/{ => uapi}/linux/in.h (100%)
+ rename include/{ => uapi}/linux/in6.h (100%)
+ rename include/{ => uapi}/linux/in_route.h (100%)
+ rename include/{ => uapi}/linux/inet_diag.h (100%)
+ rename include/{ => uapi}/linux/ip.h (100%)
+ rename include/{ => uapi}/linux/ip6_tunnel.h (100%)
+ rename include/{ => uapi}/linux/ipsec.h (100%)
+ rename include/{ => uapi}/linux/kernel.h (100%)
+ rename include/{ => uapi}/linux/l2tp.h (100%)
+ rename include/{ => uapi}/linux/libc-compat.h (100%)
+ rename include/{ => uapi}/linux/limits.h (100%)
+ rename include/{ => uapi}/linux/lwtunnel.h (100%)
+ rename include/{ => uapi}/linux/magic.h (100%)
+ rename include/{ => uapi}/linux/mpls.h (100%)
+ rename include/{ => uapi}/linux/mpls_iptunnel.h (100%)
+ rename include/{ => uapi}/linux/neighbour.h (100%)
+ rename include/{ => uapi}/linux/net_namespace.h (100%)
+ rename include/{ => uapi}/linux/netconf.h (100%)
+ rename include/{ => uapi}/linux/netdevice.h (100%)
+ rename include/{ => uapi}/linux/netfilter.h (100%)
+ rename include/{ => uapi}/linux/netfilter/ipset/ip_set.h (100%)
+ rename include/{ => uapi}/linux/netfilter/x_tables.h (100%)
+ rename include/{ => uapi}/linux/netfilter/xt_set.h (100%)
+ rename include/{ => uapi}/linux/netfilter/xt_tcpudp.h (100%)
+ rename include/{ => uapi}/linux/netfilter_ipv4.h (100%)
+ rename include/{ => uapi}/linux/netfilter_ipv4/ip_tables.h (100%)
+ rename include/{ => uapi}/linux/netfilter_ipv6.h (100%)
+ rename include/{ => uapi}/linux/netfilter_ipv6/ip6_tables.h (100%)
+ rename include/{ => uapi}/linux/netlink.h (100%)
+ rename include/{ => uapi}/linux/netlink_diag.h (100%)
+ rename include/{ => uapi}/linux/packet_diag.h (100%)
+ rename include/{ => uapi}/linux/param.h (100%)
+ rename include/{ => uapi}/linux/pfkeyv2.h (100%)
+ rename include/{ => uapi}/linux/pkt_cls.h (100%)
+ rename include/{ => uapi}/linux/pkt_sched.h (100%)
+ rename include/{ => uapi}/linux/posix_types.h (100%)
+ rename include/{ => uapi}/linux/rtnetlink.h (100%)
+ rename include/{ => uapi}/linux/sctp.h (100%)
+ rename include/{ => uapi}/linux/seg6.h (100%)
+ rename include/{ => uapi}/linux/seg6_genl.h (100%)
+ rename include/{ => uapi}/linux/seg6_hmac.h (100%)
+ rename include/{ => uapi}/linux/seg6_iptunnel.h (100%)
+ rename include/{ => uapi}/linux/seg6_local.h (100%)
+ rename include/{ => uapi}/linux/sock_diag.h (100%)
+ rename include/{ => uapi}/linux/socket.h (100%)
+ rename include/{ => uapi}/linux/sockios.h (100%)
+ rename include/{ => uapi}/linux/stddef.h (100%)
+ rename include/{ => uapi}/linux/sysinfo.h (100%)
+ rename include/{ => uapi}/linux/tc_act/tc_bpf.h (100%)
+ rename include/{ => uapi}/linux/tc_act/tc_connmark.h (100%)
+ rename include/{ => uapi}/linux/tc_act/tc_csum.h (100%)
+ rename include/{ => uapi}/linux/tc_act/tc_defact.h (100%)
+ rename include/{ => uapi}/linux/tc_act/tc_gact.h (100%)
+ rename include/{ => uapi}/linux/tc_act/tc_ife.h (100%)
+ rename include/{ => uapi}/linux/tc_act/tc_ipt.h (100%)
+ rename include/{ => uapi}/linux/tc_act/tc_mirred.h (100%)
+ rename include/{ => uapi}/linux/tc_act/tc_nat.h (100%)
+ rename include/{ => uapi}/linux/tc_act/tc_pedit.h (100%)
+ rename include/{ => uapi}/linux/tc_act/tc_sample.h (100%)
+ rename include/{ => uapi}/linux/tc_act/tc_skbedit.h (100%)
+ rename include/{ => uapi}/linux/tc_act/tc_skbmod.h (100%)
+ rename include/{ => uapi}/linux/tc_act/tc_tunnel_key.h (100%)
+ rename include/{ => uapi}/linux/tc_act/tc_vlan.h (100%)
+ rename include/{ => uapi}/linux/tc_ematch/tc_em_cmp.h (100%)
+ rename include/{ => uapi}/linux/tc_ematch/tc_em_meta.h (100%)
+ rename include/{ => uapi}/linux/tc_ematch/tc_em_nbyte.h (100%)
+ rename include/{ => uapi}/linux/tcp.h (100%)
+ rename include/{ => uapi}/linux/tcp_metrics.h (100%)
+ rename include/{ => uapi}/linux/tipc.h (100%)
+ rename include/{ => uapi}/linux/tipc_netlink.h (100%)
+ rename include/{ => uapi}/linux/types.h (100%)
+ rename include/{ => uapi}/linux/unix_diag.h (100%)
+ rename include/{ => uapi}/linux/veth.h (100%)
+ rename include/{ => uapi}/linux/xfrm.h (100%)
 
 diff --git a/Makefile b/Makefile
-index 18de7dc..df2fa33 100644
+index 18de7dcb315b1..df2fa33630e65 100644
 --- a/Makefile
 +++ b/Makefile
 @@ -49,7 +49,7 @@ CCOPTS = -O2
@@ -497,33438 +277,446 @@ index 18de7dc..df2fa33 100644
  YACCFLAGS = -d -t -v
  
  SUBDIRS=lib ip tc bridge misc netem genl tipc devlink man
-diff --git a/include/linux/atm.h b/include/linux/atm.h
-deleted file mode 100644
-index 08e27be..0000000
---- a/include/linux/atm.h
-+++ /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
-index 8fe54d9..0000000
---- a/include/linux/atmapi.h
-+++ /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
-index 231f4bd..0000000
---- a/include/linux/atmarp.h
-+++ /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
-index 8faa8b9..0000000
---- a/include/linux/atmdev.h
-+++ /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
-index 37f67aa..0000000
---- a/include/linux/atmioc.h
-+++ /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
-index 799b104..0000000
---- a/include/linux/atmsap.h
-+++ /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
-index 0895a52..0000000
---- a/include/linux/bpf.h
-+++ /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
-index afe7433..0000000
---- a/include/linux/bpf_common.h
-+++ /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
-index f7a810d..0000000
---- a/include/linux/can.h
-+++ /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
-index b9214bd..0000000
---- a/include/linux/can/netlink.h
-+++ /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
-index 5b29e8a..0000000
---- a/include/linux/can/vxcan.h
-+++ /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
-index a62695e..0000000
---- a/include/linux/devlink.h
-+++ /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
-index 9cd1de9..0000000
---- a/include/linux/elf-em.h
-+++ /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
-index bbf02a6..0000000
---- a/include/linux/fib_rules.h
-+++ /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
-index e4f2f74..0000000
---- a/include/linux/filter.h
-+++ /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
-index 744c323..0000000
---- a/include/linux/fou.h
-+++ /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
-index 52deccc..0000000
---- a/include/linux/gen_stats.h
-+++ /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
-index 08239d8..0000000
---- a/include/linux/genetlink.h
-+++ /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
-index 04bc027..0000000
---- a/include/linux/hdlc/ioctl.h
-+++ /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
-index a2e839e..0000000
---- a/include/linux/icmpv6.h
-+++ /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
-index b4ba020..0000000
---- a/include/linux/if.h
-+++ /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
-index 26f0ecf..0000000
---- a/include/linux/if_addr.h
-+++ /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
-index 54580c2..0000000
---- a/include/linux/if_addrlabel.h
-+++ /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
-index f2acd2f..0000000
---- a/include/linux/if_alg.h
-+++ /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
-index 199f253..0000000
---- a/include/linux/if_arp.h
-+++ /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
-index 9635a62..0000000
---- a/include/linux/if_bonding.h
-+++ /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
-index 156f443..0000000
---- a/include/linux/if_bridge.h
-+++ /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
-index 7dde037..0000000
---- a/include/linux/if_ether.h
-+++ /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
-index 1f97d05..0000000
---- a/include/linux/if_link.h
-+++ /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
-index 22939a3..0000000
---- a/include/linux/if_macsec.h
-+++ /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
-index 4df96a7..0000000
---- a/include/linux/if_packet.h
-+++ /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
-index d5ecb42..0000000
---- a/include/linux/if_tun.h
-+++ /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
-index 21834ca..0000000
---- a/include/linux/if_tunnel.h
-+++ /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
-index 24ae007..0000000
---- a/include/linux/if_vlan.h
-+++ /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
-index 2954da3..0000000
---- a/include/linux/ife.h
-+++ /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
-index 7e328d7..0000000
---- a/include/linux/ila.h
-+++ /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
-index 9439efa..0000000
---- a/include/linux/in.h
-+++ /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
-index 6f3bdee..0000000
---- a/include/linux/in6.h
-+++ /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
-index b261b8c..0000000
---- a/include/linux/in_route.h
-+++ /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
-index bada4d7..0000000
---- a/include/linux/inet_diag.h
-+++ /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
-index 1907284..0000000
---- a/include/linux/ip.h
-+++ /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
-index 425926c..0000000
---- a/include/linux/ip6_tunnel.h
-+++ /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
-index d17a630..0000000
---- a/include/linux/ipsec.h
-+++ /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
-index 527549f..0000000
---- a/include/linux/kernel.h
-+++ /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
-index 8a80007..0000000
---- a/include/linux/l2tp.h
-+++ /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
-index f38571d..0000000
---- a/include/linux/libc-compat.h
-+++ /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
-index 2d0f941..0000000
---- a/include/linux/limits.h
-+++ /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
-index 3298426..0000000
---- a/include/linux/lwtunnel.h
-+++ /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
-index e439565..0000000
---- a/include/linux/magic.h
-+++ /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
-index bf5b625..0000000
---- a/include/linux/mpls.h
-+++ /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
-index 1a0e57b..0000000
---- a/include/linux/mpls_iptunnel.h
-+++ /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
-index 3199d28..0000000
---- a/include/linux/neighbour.h
-+++ /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
-index 9a92b7e..0000000
---- a/include/linux/net_namespace.h
-+++ /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
-index 4afbd7d..0000000
---- a/include/linux/netconf.h
-+++ /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
-index 66fceb4..0000000
---- a/include/linux/netdevice.h
-+++ /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
-index ff4a4a5..0000000
---- a/include/linux/netfilter.h
-+++ /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
-index a6c96b0..0000000
---- a/include/linux/netfilter/ipset/ip_set.h
-+++ /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
-index 4120970..0000000
---- a/include/linux/netfilter/x_tables.h
-+++ /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
-index d4e0234..0000000
---- a/include/linux/netfilter/xt_set.h
-+++ /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
-index 38aa7b3..0000000
---- a/include/linux/netfilter/xt_tcpudp.h
-+++ /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
-index a5f4dc7..0000000
---- a/include/linux/netfilter_ipv4.h
-+++ /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
-index 456fb86..0000000
---- a/include/linux/netfilter_ipv4/ip_tables.h
-+++ /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
-index 8483d1d..0000000
---- a/include/linux/netfilter_ipv6.h
-+++ /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
-index fcc8cca..0000000
---- a/include/linux/netfilter_ipv6/ip6_tables.h
-+++ /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
-index ec0690b..0000000
---- a/include/linux/netlink.h
-+++ /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
-index c8c8c7d..0000000
---- a/include/linux/netlink_diag.h
-+++ /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
-index 0c5d5dd..0000000
---- a/include/linux/packet_diag.h
-+++ /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
-index 092e92f..0000000
---- a/include/linux/param.h
-+++ /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
-index ada7f01..0000000
---- a/include/linux/pfkeyv2.h
-+++ /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
-index d5e2bf6..0000000
---- a/include/linux/pkt_cls.h
-+++ /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
-index 099bf55..0000000
---- a/include/linux/pkt_sched.h
-+++ /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
-index 988f76e..0000000
---- a/include/linux/posix_types.h
-+++ /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
-index 813e9e0..0000000
---- a/include/linux/rtnetlink.h
-+++ /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
-index fec24c4..0000000
---- a/include/linux/sctp.h
-+++ /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
-index 0715279..0000000
---- a/include/linux/seg6.h
-+++ /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
-index 99382f9..0000000
---- a/include/linux/seg6_genl.h
-+++ /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
-index 704f93e..0000000
---- a/include/linux/seg6_hmac.h
-+++ /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
-index a5dc05a..0000000
---- a/include/linux/seg6_iptunnel.h
-+++ /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
-index 76b90d6..0000000
---- a/include/linux/seg6_local.h
-+++ /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
-index 901231e..0000000
---- a/include/linux/sock_diag.h
-+++ /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
-index 8c1e501..0000000
---- a/include/linux/socket.h
-+++ /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
-index 79d029d..0000000
---- a/include/linux/sockios.h
-+++ /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
-index 4bb69de..0000000
---- a/include/linux/stddef.h
-+++ /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
-index 934335a..0000000
---- a/include/linux/sysinfo.h
-+++ /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
-index 8dc2ac0..0000000
---- a/include/linux/tc_act/tc_bpf.h
-+++ /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
-index 62a5e94..0000000
---- a/include/linux/tc_act/tc_connmark.h
-+++ /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
-index a11bb35..0000000
---- a/include/linux/tc_act/tc_csum.h
-+++ /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
-index d2a3abb..0000000
---- a/include/linux/tc_act/tc_defact.h
-+++ /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
-index 70b536a..0000000
---- a/include/linux/tc_act/tc_gact.h
-+++ /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
-index 7c28178..0000000
---- a/include/linux/tc_act/tc_ife.h
-+++ /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
-index 7c6e155..0000000
---- a/include/linux/tc_act/tc_ipt.h
-+++ /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
-index 3d7a2b3..0000000
---- a/include/linux/tc_act/tc_mirred.h
-+++ /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
-index 923457c..0000000
---- a/include/linux/tc_act/tc_nat.h
-+++ /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
-index 143d2b3..0000000
---- a/include/linux/tc_act/tc_pedit.h
-+++ /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
-index edc9058..0000000
---- a/include/linux/tc_act/tc_sample.h
-+++ /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
-index 2884425..0000000
---- a/include/linux/tc_act/tc_skbedit.h
-+++ /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
-index 10fc07d..0000000
---- a/include/linux/tc_act/tc_skbmod.h
-+++ /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
-index afcd4be..0000000
---- a/include/linux/tc_act/tc_tunnel_key.h
-+++ /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
-index bddb272..0000000
---- a/include/linux/tc_act/tc_vlan.h
-+++ /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
-index f34bb1b..0000000
---- a/include/linux/tc_ematch/tc_em_cmp.h
-+++ /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
-index b11f8ce..0000000
---- a/include/linux/tc_ematch/tc_em_meta.h
-+++ /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
-index 7172cfb..0000000
---- a/include/linux/tc_ematch/tc_em_nbyte.h
-+++ /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
-index 8edad3f..0000000
---- a/include/linux/tcp.h
-+++ /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
-index 80ad90d..0000000
---- a/include/linux/tcp_metrics.h
-+++ /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
-index 924fb5c..0000000
---- a/include/linux/tipc.h
-+++ /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
-index f9edd20..0000000
---- a/include/linux/tipc_netlink.h
-+++ /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
-index c640657..0000000
---- a/include/linux/types.h
-+++ /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
-index 1eb0b8d..0000000
---- a/include/linux/unix_diag.h
-+++ /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
-index 3354c1e..0000000
---- a/include/linux/veth.h
-+++ /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
-index 5790293..0000000
---- a/include/linux/xfrm.h
-+++ /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
-index 0000000..08e27be
---- /dev/null
-+++ b/include/uapi/linux/atm.h
-@@ -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
-index 0000000..8fe54d9
---- /dev/null
-+++ b/include/uapi/linux/atmapi.h
-@@ -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
-index 0000000..231f4bd
---- /dev/null
-+++ b/include/uapi/linux/atmarp.h
-@@ -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
-index 0000000..8faa8b9
---- /dev/null
-+++ b/include/uapi/linux/atmdev.h
-@@ -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
-index 0000000..37f67aa
---- /dev/null
-+++ b/include/uapi/linux/atmioc.h
-@@ -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
-index 0000000..799b104
---- /dev/null
-+++ b/include/uapi/linux/atmsap.h
-@@ -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
-index 0000000..0895a52
---- /dev/null
-+++ b/include/uapi/linux/bpf.h
-@@ -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
-index 0000000..afe7433
---- /dev/null
-+++ b/include/uapi/linux/bpf_common.h
-@@ -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
-index 0000000..f7a810d
---- /dev/null
-+++ b/include/uapi/linux/can.h
-@@ -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
-index 0000000..b9214bd
---- /dev/null
-+++ b/include/uapi/linux/can/netlink.h
-@@ -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
-index 0000000..5b29e8a
---- /dev/null
-+++ b/include/uapi/linux/can/vxcan.h
-@@ -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
-index 0000000..a62695e
---- /dev/null
-+++ b/include/uapi/linux/devlink.h
-@@ -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
-index 0000000..9cd1de9
---- /dev/null
-+++ b/include/uapi/linux/elf-em.h
-@@ -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
-index 0000000..bbf02a6
---- /dev/null
-+++ b/include/uapi/linux/fib_rules.h
-@@ -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
-index 0000000..e4f2f74
---- /dev/null
-+++ b/include/uapi/linux/filter.h
-@@ -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
-index 0000000..744c323
---- /dev/null
-+++ b/include/uapi/linux/fou.h
-@@ -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
-index 0000000..52deccc
---- /dev/null
-+++ b/include/uapi/linux/gen_stats.h
-@@ -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
-index 0000000..08239d8
---- /dev/null
-+++ b/include/uapi/linux/genetlink.h
-@@ -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
-index 0000000..04bc027
---- /dev/null
-+++ b/include/uapi/linux/hdlc/ioctl.h
-@@ -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
-index 0000000..a2e839e
---- /dev/null
-+++ b/include/uapi/linux/icmpv6.h
-@@ -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
-index 0000000..b4ba020
---- /dev/null
-+++ b/include/uapi/linux/if.h
-@@ -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
-index 0000000..26f0ecf
---- /dev/null
-+++ b/include/uapi/linux/if_addr.h
-@@ -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
-index 0000000..54580c2
---- /dev/null
-+++ b/include/uapi/linux/if_addrlabel.h
-@@ -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
-index 0000000..f2acd2f
---- /dev/null
-+++ b/include/uapi/linux/if_alg.h
-@@ -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
-index 0000000..199f253
---- /dev/null
-+++ b/include/uapi/linux/if_arp.h
-@@ -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
-index 0000000..9635a62
---- /dev/null
-+++ b/include/uapi/linux/if_bonding.h
-@@ -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
-index 0000000..156f443
---- /dev/null
-+++ b/include/uapi/linux/if_bridge.h
-@@ -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
-index 0000000..7dde037
---- /dev/null
-+++ b/include/uapi/linux/if_ether.h
-@@ -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
-index 0000000..1f97d05
---- /dev/null
-+++ b/include/uapi/linux/if_link.h
-@@ -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
-index 0000000..22939a3
---- /dev/null
-+++ b/include/uapi/linux/if_macsec.h
-@@ -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
-index 0000000..4df96a7
---- /dev/null
-+++ b/include/uapi/linux/if_packet.h
-@@ -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
-index 0000000..d5ecb42
---- /dev/null
-+++ b/include/uapi/linux/if_tun.h
-@@ -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
-index 0000000..21834ca
---- /dev/null
-+++ b/include/uapi/linux/if_tunnel.h
-@@ -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
-index 0000000..24ae007
---- /dev/null
-+++ b/include/uapi/linux/if_vlan.h
-@@ -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
-index 0000000..2954da3
---- /dev/null
-+++ b/include/uapi/linux/ife.h
-@@ -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
-index 0000000..7e328d7
---- /dev/null
-+++ b/include/uapi/linux/ila.h
-@@ -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
-index 0000000..9439efa
---- /dev/null
-+++ b/include/uapi/linux/in.h
-@@ -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
-index 0000000..6f3bdee
---- /dev/null
-+++ b/include/uapi/linux/in6.h
-@@ -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
-index 0000000..b261b8c
---- /dev/null
-+++ b/include/uapi/linux/in_route.h
-@@ -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
-index 0000000..bada4d7
---- /dev/null
-+++ b/include/uapi/linux/inet_diag.h
-@@ -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
-index 0000000..1907284
---- /dev/null
-+++ b/include/uapi/linux/ip.h
-@@ -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
-index 0000000..425926c
---- /dev/null
-+++ b/include/uapi/linux/ip6_tunnel.h
-@@ -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
-index 0000000..d17a630
---- /dev/null
-+++ b/include/uapi/linux/ipsec.h
-@@ -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
-index 0000000..527549f
---- /dev/null
-+++ b/include/uapi/linux/kernel.h
-@@ -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
-index 0000000..8a80007
---- /dev/null
-+++ b/include/uapi/linux/l2tp.h
-@@ -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
-index 0000000..f38571d
---- /dev/null
-+++ b/include/uapi/linux/libc-compat.h
-@@ -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
-index 0000000..2d0f941
---- /dev/null
-+++ b/include/uapi/linux/limits.h
-@@ -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
-index 0000000..3298426
---- /dev/null
-+++ b/include/uapi/linux/lwtunnel.h
-@@ -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
-index 0000000..e439565
---- /dev/null
-+++ b/include/uapi/linux/magic.h
-@@ -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
-index 0000000..bf5b625
---- /dev/null
-+++ b/include/uapi/linux/mpls.h
-@@ -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
-index 0000000..1a0e57b
---- /dev/null
-+++ b/include/uapi/linux/mpls_iptunnel.h
-@@ -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
-index 0000000..3199d28
---- /dev/null
-+++ b/include/uapi/linux/neighbour.h
-@@ -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
-index 0000000..9a92b7e
---- /dev/null
-+++ b/include/uapi/linux/net_namespace.h
-@@ -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
-index 0000000..4afbd7d
---- /dev/null
-+++ b/include/uapi/linux/netconf.h
-@@ -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
-index 0000000..66fceb4
---- /dev/null
-+++ b/include/uapi/linux/netdevice.h
-@@ -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
-index 0000000..ff4a4a5
---- /dev/null
-+++ b/include/uapi/linux/netfilter.h
-@@ -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
-index 0000000..a6c96b0
---- /dev/null
-+++ b/include/uapi/linux/netfilter/ipset/ip_set.h
-@@ -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
-index 0000000..4120970
---- /dev/null
-+++ b/include/uapi/linux/netfilter/x_tables.h
-@@ -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
-index 0000000..d4e0234
---- /dev/null
-+++ b/include/uapi/linux/netfilter/xt_set.h
-@@ -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
-index 0000000..38aa7b3
---- /dev/null
-+++ b/include/uapi/linux/netfilter/xt_tcpudp.h
-@@ -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
-index 0000000..a5f4dc7
---- /dev/null
-+++ b/include/uapi/linux/netfilter_ipv4.h
-@@ -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
-index 0000000..456fb86
---- /dev/null
-+++ b/include/uapi/linux/netfilter_ipv4/ip_tables.h
-@@ -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
-index 0000000..8483d1d
---- /dev/null
-+++ b/include/uapi/linux/netfilter_ipv6.h
-@@ -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
-index 0000000..fcc8cca
---- /dev/null
-+++ b/include/uapi/linux/netfilter_ipv6/ip6_tables.h
-@@ -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
-index 0000000..ec0690b
---- /dev/null
-+++ b/include/uapi/linux/netlink.h
-@@ -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
-index 0000000..c8c8c7d
---- /dev/null
-+++ b/include/uapi/linux/netlink_diag.h
-@@ -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
-index 0000000..0c5d5dd
---- /dev/null
-+++ b/include/uapi/linux/packet_diag.h
-@@ -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
-index 0000000..092e92f
---- /dev/null
-+++ b/include/uapi/linux/param.h
-@@ -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
-index 0000000..ada7f01
---- /dev/null
-+++ b/include/uapi/linux/pfkeyv2.h
-@@ -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
-index 0000000..d5e2bf6
---- /dev/null
-+++ b/include/uapi/linux/pkt_cls.h
-@@ -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
-index 0000000..099bf55
---- /dev/null
-+++ b/include/uapi/linux/pkt_sched.h
-@@ -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
-index 0000000..988f76e
---- /dev/null
-+++ b/include/uapi/linux/posix_types.h
-@@ -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
-index 0000000..813e9e0
---- /dev/null
-+++ b/include/uapi/linux/rtnetlink.h
-@@ -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
-index 0000000..fec24c4
---- /dev/null
-+++ b/include/uapi/linux/sctp.h
-@@ -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
-index 0000000..0715279
---- /dev/null
-+++ b/include/uapi/linux/seg6.h
-@@ -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
-index 0000000..99382f9
---- /dev/null
-+++ b/include/uapi/linux/seg6_genl.h
-@@ -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
-index 0000000..704f93e
---- /dev/null
-+++ b/include/uapi/linux/seg6_hmac.h
-@@ -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
-index 0000000..a5dc05a
---- /dev/null
-+++ b/include/uapi/linux/seg6_iptunnel.h
-@@ -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
-index 0000000..76b90d6
---- /dev/null
-+++ b/include/uapi/linux/seg6_local.h
-@@ -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
-index 0000000..901231e
---- /dev/null
-+++ b/include/uapi/linux/sock_diag.h
-@@ -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
-index 0000000..8c1e501
---- /dev/null
-+++ b/include/uapi/linux/socket.h
-@@ -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
-index 0000000..79d029d
---- /dev/null
-+++ b/include/uapi/linux/sockios.h
-@@ -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
-index 0000000..4bb69de
---- /dev/null
-+++ b/include/uapi/linux/stddef.h
-@@ -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
-index 0000000..934335a
---- /dev/null
-+++ b/include/uapi/linux/sysinfo.h
-@@ -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
-index 0000000..8dc2ac0
---- /dev/null
-+++ b/include/uapi/linux/tc_act/tc_bpf.h
-@@ -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
-index 0000000..62a5e94
---- /dev/null
-+++ b/include/uapi/linux/tc_act/tc_connmark.h
-@@ -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
-index 0000000..a11bb35
---- /dev/null
-+++ b/include/uapi/linux/tc_act/tc_csum.h
-@@ -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
-index 0000000..d2a3abb
---- /dev/null
-+++ b/include/uapi/linux/tc_act/tc_defact.h
-@@ -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
-index 0000000..70b536a
---- /dev/null
-+++ b/include/uapi/linux/tc_act/tc_gact.h
-@@ -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
-index 0000000..7c28178
---- /dev/null
-+++ b/include/uapi/linux/tc_act/tc_ife.h
-@@ -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
-index 0000000..7c6e155
---- /dev/null
-+++ b/include/uapi/linux/tc_act/tc_ipt.h
-@@ -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
-index 0000000..3d7a2b3
---- /dev/null
-+++ b/include/uapi/linux/tc_act/tc_mirred.h
-@@ -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
-index 0000000..923457c
---- /dev/null
-+++ b/include/uapi/linux/tc_act/tc_nat.h
-@@ -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
-index 0000000..143d2b3
---- /dev/null
-+++ b/include/uapi/linux/tc_act/tc_pedit.h
-@@ -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
-index 0000000..edc9058
---- /dev/null
-+++ b/include/uapi/linux/tc_act/tc_sample.h
-@@ -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
-index 0000000..2884425
---- /dev/null
-+++ b/include/uapi/linux/tc_act/tc_skbedit.h
-@@ -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
-index 0000000..10fc07d
---- /dev/null
-+++ b/include/uapi/linux/tc_act/tc_skbmod.h
-@@ -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
-index 0000000..afcd4be
---- /dev/null
-+++ b/include/uapi/linux/tc_act/tc_tunnel_key.h
-@@ -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
-index 0000000..bddb272
---- /dev/null
-+++ b/include/uapi/linux/tc_act/tc_vlan.h
-@@ -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
-index 0000000..f34bb1b
---- /dev/null
-+++ b/include/uapi/linux/tc_ematch/tc_em_cmp.h
-@@ -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
-index 0000000..b11f8ce
---- /dev/null
-+++ b/include/uapi/linux/tc_ematch/tc_em_meta.h
-@@ -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
-index 0000000..7172cfb
---- /dev/null
-+++ b/include/uapi/linux/tc_ematch/tc_em_nbyte.h
-@@ -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
-index 0000000..8edad3f
---- /dev/null
-+++ b/include/uapi/linux/tcp.h
-@@ -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
-index 0000000..80ad90d
---- /dev/null
-+++ b/include/uapi/linux/tcp_metrics.h
-@@ -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
-index 0000000..924fb5c
---- /dev/null
-+++ b/include/uapi/linux/tipc.h
-@@ -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
-index 0000000..f9edd20
---- /dev/null
-+++ b/include/uapi/linux/tipc_netlink.h
-@@ -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
-index 0000000..c640657
---- /dev/null
-+++ b/include/uapi/linux/types.h
-@@ -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
-index 0000000..1eb0b8d
---- /dev/null
-+++ b/include/uapi/linux/unix_diag.h
-@@ -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
-index 0000000..3354c1e
---- /dev/null
-+++ b/include/uapi/linux/veth.h
-@@ -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
-index 0000000..5790293
---- /dev/null
-+++ b/include/uapi/linux/xfrm.h
-@@ -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 */
+diff --git a/include/linux/atm.h b/include/uapi/linux/atm.h
+similarity index 100%
+rename from include/linux/atm.h
+rename to include/uapi/linux/atm.h
+diff --git a/include/linux/atmapi.h b/include/uapi/linux/atmapi.h
+similarity index 100%
+rename from include/linux/atmapi.h
+rename to include/uapi/linux/atmapi.h
+diff --git a/include/linux/atmarp.h b/include/uapi/linux/atmarp.h
+similarity index 100%
+rename from include/linux/atmarp.h
+rename to include/uapi/linux/atmarp.h
+diff --git a/include/linux/atmdev.h b/include/uapi/linux/atmdev.h
+similarity index 100%
+rename from include/linux/atmdev.h
+rename to include/uapi/linux/atmdev.h
+diff --git a/include/linux/atmioc.h b/include/uapi/linux/atmioc.h
+similarity index 100%
+rename from include/linux/atmioc.h
+rename to include/uapi/linux/atmioc.h
+diff --git a/include/linux/atmsap.h b/include/uapi/linux/atmsap.h
+similarity index 100%
+rename from include/linux/atmsap.h
+rename to include/uapi/linux/atmsap.h
+diff --git a/include/linux/bpf.h b/include/uapi/linux/bpf.h
+similarity index 100%
+rename from include/linux/bpf.h
+rename to include/uapi/linux/bpf.h
+diff --git a/include/linux/bpf_common.h b/include/uapi/linux/bpf_common.h
+similarity index 100%
+rename from include/linux/bpf_common.h
+rename to include/uapi/linux/bpf_common.h
+diff --git a/include/linux/can.h b/include/uapi/linux/can.h
+similarity index 100%
+rename from include/linux/can.h
+rename to include/uapi/linux/can.h
+diff --git a/include/linux/can/netlink.h b/include/uapi/linux/can/netlink.h
+similarity index 100%
+rename from include/linux/can/netlink.h
+rename to include/uapi/linux/can/netlink.h
+diff --git a/include/linux/can/vxcan.h b/include/uapi/linux/can/vxcan.h
+similarity index 100%
+rename from include/linux/can/vxcan.h
+rename to include/uapi/linux/can/vxcan.h
+diff --git a/include/linux/devlink.h b/include/uapi/linux/devlink.h
+similarity index 100%
+rename from include/linux/devlink.h
+rename to include/uapi/linux/devlink.h
+diff --git a/include/linux/elf-em.h b/include/uapi/linux/elf-em.h
+similarity index 100%
+rename from include/linux/elf-em.h
+rename to include/uapi/linux/elf-em.h
+diff --git a/include/linux/fib_rules.h b/include/uapi/linux/fib_rules.h
+similarity index 100%
+rename from include/linux/fib_rules.h
+rename to include/uapi/linux/fib_rules.h
+diff --git a/include/linux/filter.h b/include/uapi/linux/filter.h
+similarity index 100%
+rename from include/linux/filter.h
+rename to include/uapi/linux/filter.h
+diff --git a/include/linux/fou.h b/include/uapi/linux/fou.h
+similarity index 100%
+rename from include/linux/fou.h
+rename to include/uapi/linux/fou.h
+diff --git a/include/linux/gen_stats.h b/include/uapi/linux/gen_stats.h
+similarity index 100%
+rename from include/linux/gen_stats.h
+rename to include/uapi/linux/gen_stats.h
+diff --git a/include/linux/genetlink.h b/include/uapi/linux/genetlink.h
+similarity index 100%
+rename from include/linux/genetlink.h
+rename to include/uapi/linux/genetlink.h
+diff --git a/include/linux/hdlc/ioctl.h b/include/uapi/linux/hdlc/ioctl.h
+similarity index 100%
+rename from include/linux/hdlc/ioctl.h
+rename to include/uapi/linux/hdlc/ioctl.h
+diff --git a/include/linux/icmpv6.h b/include/uapi/linux/icmpv6.h
+similarity index 100%
+rename from include/linux/icmpv6.h
+rename to include/uapi/linux/icmpv6.h
+diff --git a/include/linux/if.h b/include/uapi/linux/if.h
+similarity index 100%
+rename from include/linux/if.h
+rename to include/uapi/linux/if.h
+diff --git a/include/linux/if_addr.h b/include/uapi/linux/if_addr.h
+similarity index 100%
+rename from include/linux/if_addr.h
+rename to include/uapi/linux/if_addr.h
+diff --git a/include/linux/if_addrlabel.h b/include/uapi/linux/if_addrlabel.h
+similarity index 100%
+rename from include/linux/if_addrlabel.h
+rename to include/uapi/linux/if_addrlabel.h
+diff --git a/include/linux/if_alg.h b/include/uapi/linux/if_alg.h
+similarity index 100%
+rename from include/linux/if_alg.h
+rename to include/uapi/linux/if_alg.h
+diff --git a/include/linux/if_arp.h b/include/uapi/linux/if_arp.h
+similarity index 100%
+rename from include/linux/if_arp.h
+rename to include/uapi/linux/if_arp.h
+diff --git a/include/linux/if_bonding.h b/include/uapi/linux/if_bonding.h
+similarity index 100%
+rename from include/linux/if_bonding.h
+rename to include/uapi/linux/if_bonding.h
+diff --git a/include/linux/if_bridge.h b/include/uapi/linux/if_bridge.h
+similarity index 100%
+rename from include/linux/if_bridge.h
+rename to include/uapi/linux/if_bridge.h
+diff --git a/include/linux/if_ether.h b/include/uapi/linux/if_ether.h
+similarity index 100%
+rename from include/linux/if_ether.h
+rename to include/uapi/linux/if_ether.h
+diff --git a/include/linux/if_link.h b/include/uapi/linux/if_link.h
+similarity index 100%
+rename from include/linux/if_link.h
+rename to include/uapi/linux/if_link.h
+diff --git a/include/linux/if_macsec.h b/include/uapi/linux/if_macsec.h
+similarity index 100%
+rename from include/linux/if_macsec.h
+rename to include/uapi/linux/if_macsec.h
+diff --git a/include/linux/if_packet.h b/include/uapi/linux/if_packet.h
+similarity index 100%
+rename from include/linux/if_packet.h
+rename to include/uapi/linux/if_packet.h
+diff --git a/include/linux/if_tun.h b/include/uapi/linux/if_tun.h
+similarity index 100%
+rename from include/linux/if_tun.h
+rename to include/uapi/linux/if_tun.h
+diff --git a/include/linux/if_tunnel.h b/include/uapi/linux/if_tunnel.h
+similarity index 100%
+rename from include/linux/if_tunnel.h
+rename to include/uapi/linux/if_tunnel.h
+diff --git a/include/linux/if_vlan.h b/include/uapi/linux/if_vlan.h
+similarity index 100%
+rename from include/linux/if_vlan.h
+rename to include/uapi/linux/if_vlan.h
+diff --git a/include/linux/ife.h b/include/uapi/linux/ife.h
+similarity index 100%
+rename from include/linux/ife.h
+rename to include/uapi/linux/ife.h
+diff --git a/include/linux/ila.h b/include/uapi/linux/ila.h
+similarity index 100%
+rename from include/linux/ila.h
+rename to include/uapi/linux/ila.h
+diff --git a/include/linux/in.h b/include/uapi/linux/in.h
+similarity index 100%
+rename from include/linux/in.h
+rename to include/uapi/linux/in.h
+diff --git a/include/linux/in6.h b/include/uapi/linux/in6.h
+similarity index 100%
+rename from include/linux/in6.h
+rename to include/uapi/linux/in6.h
+diff --git a/include/linux/in_route.h b/include/uapi/linux/in_route.h
+similarity index 100%
+rename from include/linux/in_route.h
+rename to include/uapi/linux/in_route.h
+diff --git a/include/linux/inet_diag.h b/include/uapi/linux/inet_diag.h
+similarity index 100%
+rename from include/linux/inet_diag.h
+rename to include/uapi/linux/inet_diag.h
+diff --git a/include/linux/ip.h b/include/uapi/linux/ip.h
+similarity index 100%
+rename from include/linux/ip.h
+rename to include/uapi/linux/ip.h
+diff --git a/include/linux/ip6_tunnel.h b/include/uapi/linux/ip6_tunnel.h
+similarity index 100%
+rename from include/linux/ip6_tunnel.h
+rename to include/uapi/linux/ip6_tunnel.h
+diff --git a/include/linux/ipsec.h b/include/uapi/linux/ipsec.h
+similarity index 100%
+rename from include/linux/ipsec.h
+rename to include/uapi/linux/ipsec.h
+diff --git a/include/linux/kernel.h b/include/uapi/linux/kernel.h
+similarity index 100%
+rename from include/linux/kernel.h
+rename to include/uapi/linux/kernel.h
+diff --git a/include/linux/l2tp.h b/include/uapi/linux/l2tp.h
+similarity index 100%
+rename from include/linux/l2tp.h
+rename to include/uapi/linux/l2tp.h
+diff --git a/include/linux/libc-compat.h b/include/uapi/linux/libc-compat.h
+similarity index 100%
+rename from include/linux/libc-compat.h
+rename to include/uapi/linux/libc-compat.h
+diff --git a/include/linux/limits.h b/include/uapi/linux/limits.h
+similarity index 100%
+rename from include/linux/limits.h
+rename to include/uapi/linux/limits.h
+diff --git a/include/linux/lwtunnel.h b/include/uapi/linux/lwtunnel.h
+similarity index 100%
+rename from include/linux/lwtunnel.h
+rename to include/uapi/linux/lwtunnel.h
+diff --git a/include/linux/magic.h b/include/uapi/linux/magic.h
+similarity index 100%
+rename from include/linux/magic.h
+rename to include/uapi/linux/magic.h
+diff --git a/include/linux/mpls.h b/include/uapi/linux/mpls.h
+similarity index 100%
+rename from include/linux/mpls.h
+rename to include/uapi/linux/mpls.h
+diff --git a/include/linux/mpls_iptunnel.h b/include/uapi/linux/mpls_iptunnel.h
+similarity index 100%
+rename from include/linux/mpls_iptunnel.h
+rename to include/uapi/linux/mpls_iptunnel.h
+diff --git a/include/linux/neighbour.h b/include/uapi/linux/neighbour.h
+similarity index 100%
+rename from include/linux/neighbour.h
+rename to include/uapi/linux/neighbour.h
+diff --git a/include/linux/net_namespace.h b/include/uapi/linux/net_namespace.h
+similarity index 100%
+rename from include/linux/net_namespace.h
+rename to include/uapi/linux/net_namespace.h
+diff --git a/include/linux/netconf.h b/include/uapi/linux/netconf.h
+similarity index 100%
+rename from include/linux/netconf.h
+rename to include/uapi/linux/netconf.h
+diff --git a/include/linux/netdevice.h b/include/uapi/linux/netdevice.h
+similarity index 100%
+rename from include/linux/netdevice.h
+rename to include/uapi/linux/netdevice.h
+diff --git a/include/linux/netfilter.h b/include/uapi/linux/netfilter.h
+similarity index 100%
+rename from include/linux/netfilter.h
+rename to include/uapi/linux/netfilter.h
+diff --git a/include/linux/netfilter/ipset/ip_set.h b/include/uapi/linux/netfilter/ipset/ip_set.h
+similarity index 100%
+rename from include/linux/netfilter/ipset/ip_set.h
+rename to include/uapi/linux/netfilter/ipset/ip_set.h
+diff --git a/include/linux/netfilter/x_tables.h b/include/uapi/linux/netfilter/x_tables.h
+similarity index 100%
+rename from include/linux/netfilter/x_tables.h
+rename to include/uapi/linux/netfilter/x_tables.h
+diff --git a/include/linux/netfilter/xt_set.h b/include/uapi/linux/netfilter/xt_set.h
+similarity index 100%
+rename from include/linux/netfilter/xt_set.h
+rename to include/uapi/linux/netfilter/xt_set.h
+diff --git a/include/linux/netfilter/xt_tcpudp.h b/include/uapi/linux/netfilter/xt_tcpudp.h
+similarity index 100%
+rename from include/linux/netfilter/xt_tcpudp.h
+rename to include/uapi/linux/netfilter/xt_tcpudp.h
+diff --git a/include/linux/netfilter_ipv4.h b/include/uapi/linux/netfilter_ipv4.h
+similarity index 100%
+rename from include/linux/netfilter_ipv4.h
+rename to include/uapi/linux/netfilter_ipv4.h
+diff --git a/include/linux/netfilter_ipv4/ip_tables.h b/include/uapi/linux/netfilter_ipv4/ip_tables.h
+similarity index 100%
+rename from include/linux/netfilter_ipv4/ip_tables.h
+rename to include/uapi/linux/netfilter_ipv4/ip_tables.h
+diff --git a/include/linux/netfilter_ipv6.h b/include/uapi/linux/netfilter_ipv6.h
+similarity index 100%
+rename from include/linux/netfilter_ipv6.h
+rename to include/uapi/linux/netfilter_ipv6.h
+diff --git a/include/linux/netfilter_ipv6/ip6_tables.h b/include/uapi/linux/netfilter_ipv6/ip6_tables.h
+similarity index 100%
+rename from include/linux/netfilter_ipv6/ip6_tables.h
+rename to include/uapi/linux/netfilter_ipv6/ip6_tables.h
+diff --git a/include/linux/netlink.h b/include/uapi/linux/netlink.h
+similarity index 100%
+rename from include/linux/netlink.h
+rename to include/uapi/linux/netlink.h
+diff --git a/include/linux/netlink_diag.h b/include/uapi/linux/netlink_diag.h
+similarity index 100%
+rename from include/linux/netlink_diag.h
+rename to include/uapi/linux/netlink_diag.h
+diff --git a/include/linux/packet_diag.h b/include/uapi/linux/packet_diag.h
+similarity index 100%
+rename from include/linux/packet_diag.h
+rename to include/uapi/linux/packet_diag.h
+diff --git a/include/linux/param.h b/include/uapi/linux/param.h
+similarity index 100%
+rename from include/linux/param.h
+rename to include/uapi/linux/param.h
+diff --git a/include/linux/pfkeyv2.h b/include/uapi/linux/pfkeyv2.h
+similarity index 100%
+rename from include/linux/pfkeyv2.h
+rename to include/uapi/linux/pfkeyv2.h
+diff --git a/include/linux/pkt_cls.h b/include/uapi/linux/pkt_cls.h
+similarity index 100%
+rename from include/linux/pkt_cls.h
+rename to include/uapi/linux/pkt_cls.h
+diff --git a/include/linux/pkt_sched.h b/include/uapi/linux/pkt_sched.h
+similarity index 100%
+rename from include/linux/pkt_sched.h
+rename to include/uapi/linux/pkt_sched.h
+diff --git a/include/linux/posix_types.h b/include/uapi/linux/posix_types.h
+similarity index 100%
+rename from include/linux/posix_types.h
+rename to include/uapi/linux/posix_types.h
+diff --git a/include/linux/rtnetlink.h b/include/uapi/linux/rtnetlink.h
+similarity index 100%
+rename from include/linux/rtnetlink.h
+rename to include/uapi/linux/rtnetlink.h
+diff --git a/include/linux/sctp.h b/include/uapi/linux/sctp.h
+similarity index 100%
+rename from include/linux/sctp.h
+rename to include/uapi/linux/sctp.h
+diff --git a/include/linux/seg6.h b/include/uapi/linux/seg6.h
+similarity index 100%
+rename from include/linux/seg6.h
+rename to include/uapi/linux/seg6.h
+diff --git a/include/linux/seg6_genl.h b/include/uapi/linux/seg6_genl.h
+similarity index 100%
+rename from include/linux/seg6_genl.h
+rename to include/uapi/linux/seg6_genl.h
+diff --git a/include/linux/seg6_hmac.h b/include/uapi/linux/seg6_hmac.h
+similarity index 100%
+rename from include/linux/seg6_hmac.h
+rename to include/uapi/linux/seg6_hmac.h
+diff --git a/include/linux/seg6_iptunnel.h b/include/uapi/linux/seg6_iptunnel.h
+similarity index 100%
+rename from include/linux/seg6_iptunnel.h
+rename to include/uapi/linux/seg6_iptunnel.h
+diff --git a/include/linux/seg6_local.h b/include/uapi/linux/seg6_local.h
+similarity index 100%
+rename from include/linux/seg6_local.h
+rename to include/uapi/linux/seg6_local.h
+diff --git a/include/linux/sock_diag.h b/include/uapi/linux/sock_diag.h
+similarity index 100%
+rename from include/linux/sock_diag.h
+rename to include/uapi/linux/sock_diag.h
+diff --git a/include/linux/socket.h b/include/uapi/linux/socket.h
+similarity index 100%
+rename from include/linux/socket.h
+rename to include/uapi/linux/socket.h
+diff --git a/include/linux/sockios.h b/include/uapi/linux/sockios.h
+similarity index 100%
+rename from include/linux/sockios.h
+rename to include/uapi/linux/sockios.h
+diff --git a/include/linux/stddef.h b/include/uapi/linux/stddef.h
+similarity index 100%
+rename from include/linux/stddef.h
+rename to include/uapi/linux/stddef.h
+diff --git a/include/linux/sysinfo.h b/include/uapi/linux/sysinfo.h
+similarity index 100%
+rename from include/linux/sysinfo.h
+rename to include/uapi/linux/sysinfo.h
+diff --git a/include/linux/tc_act/tc_bpf.h b/include/uapi/linux/tc_act/tc_bpf.h
+similarity index 100%
+rename from include/linux/tc_act/tc_bpf.h
+rename to include/uapi/linux/tc_act/tc_bpf.h
+diff --git a/include/linux/tc_act/tc_connmark.h b/include/uapi/linux/tc_act/tc_connmark.h
+similarity index 100%
+rename from include/linux/tc_act/tc_connmark.h
+rename to include/uapi/linux/tc_act/tc_connmark.h
+diff --git a/include/linux/tc_act/tc_csum.h b/include/uapi/linux/tc_act/tc_csum.h
+similarity index 100%
+rename from include/linux/tc_act/tc_csum.h
+rename to include/uapi/linux/tc_act/tc_csum.h
+diff --git a/include/linux/tc_act/tc_defact.h b/include/uapi/linux/tc_act/tc_defact.h
+similarity index 100%
+rename from include/linux/tc_act/tc_defact.h
+rename to include/uapi/linux/tc_act/tc_defact.h
+diff --git a/include/linux/tc_act/tc_gact.h b/include/uapi/linux/tc_act/tc_gact.h
+similarity index 100%
+rename from include/linux/tc_act/tc_gact.h
+rename to include/uapi/linux/tc_act/tc_gact.h
+diff --git a/include/linux/tc_act/tc_ife.h b/include/uapi/linux/tc_act/tc_ife.h
+similarity index 100%
+rename from include/linux/tc_act/tc_ife.h
+rename to include/uapi/linux/tc_act/tc_ife.h
+diff --git a/include/linux/tc_act/tc_ipt.h b/include/uapi/linux/tc_act/tc_ipt.h
+similarity index 100%
+rename from include/linux/tc_act/tc_ipt.h
+rename to include/uapi/linux/tc_act/tc_ipt.h
+diff --git a/include/linux/tc_act/tc_mirred.h b/include/uapi/linux/tc_act/tc_mirred.h
+similarity index 100%
+rename from include/linux/tc_act/tc_mirred.h
+rename to include/uapi/linux/tc_act/tc_mirred.h
+diff --git a/include/linux/tc_act/tc_nat.h b/include/uapi/linux/tc_act/tc_nat.h
+similarity index 100%
+rename from include/linux/tc_act/tc_nat.h
+rename to include/uapi/linux/tc_act/tc_nat.h
+diff --git a/include/linux/tc_act/tc_pedit.h b/include/uapi/linux/tc_act/tc_pedit.h
+similarity index 100%
+rename from include/linux/tc_act/tc_pedit.h
+rename to include/uapi/linux/tc_act/tc_pedit.h
+diff --git a/include/linux/tc_act/tc_sample.h b/include/uapi/linux/tc_act/tc_sample.h
+similarity index 100%
+rename from include/linux/tc_act/tc_sample.h
+rename to include/uapi/linux/tc_act/tc_sample.h
+diff --git a/include/linux/tc_act/tc_skbedit.h b/include/uapi/linux/tc_act/tc_skbedit.h
+similarity index 100%
+rename from include/linux/tc_act/tc_skbedit.h
+rename to include/uapi/linux/tc_act/tc_skbedit.h
+diff --git a/include/linux/tc_act/tc_skbmod.h b/include/uapi/linux/tc_act/tc_skbmod.h
+similarity index 100%
+rename from include/linux/tc_act/tc_skbmod.h
+rename to include/uapi/linux/tc_act/tc_skbmod.h
+diff --git a/include/linux/tc_act/tc_tunnel_key.h b/include/uapi/linux/tc_act/tc_tunnel_key.h
+similarity index 100%
+rename from include/linux/tc_act/tc_tunnel_key.h
+rename to include/uapi/linux/tc_act/tc_tunnel_key.h
+diff --git a/include/linux/tc_act/tc_vlan.h b/include/uapi/linux/tc_act/tc_vlan.h
+similarity index 100%
+rename from include/linux/tc_act/tc_vlan.h
+rename to include/uapi/linux/tc_act/tc_vlan.h
+diff --git a/include/linux/tc_ematch/tc_em_cmp.h b/include/uapi/linux/tc_ematch/tc_em_cmp.h
+similarity index 100%
+rename from include/linux/tc_ematch/tc_em_cmp.h
+rename to include/uapi/linux/tc_ematch/tc_em_cmp.h
+diff --git a/include/linux/tc_ematch/tc_em_meta.h b/include/uapi/linux/tc_ematch/tc_em_meta.h
+similarity index 100%
+rename from include/linux/tc_ematch/tc_em_meta.h
+rename to include/uapi/linux/tc_ematch/tc_em_meta.h
+diff --git a/include/linux/tc_ematch/tc_em_nbyte.h b/include/uapi/linux/tc_ematch/tc_em_nbyte.h
+similarity index 100%
+rename from include/linux/tc_ematch/tc_em_nbyte.h
+rename to include/uapi/linux/tc_ematch/tc_em_nbyte.h
+diff --git a/include/linux/tcp.h b/include/uapi/linux/tcp.h
+similarity index 100%
+rename from include/linux/tcp.h
+rename to include/uapi/linux/tcp.h
+diff --git a/include/linux/tcp_metrics.h b/include/uapi/linux/tcp_metrics.h
+similarity index 100%
+rename from include/linux/tcp_metrics.h
+rename to include/uapi/linux/tcp_metrics.h
+diff --git a/include/linux/tipc.h b/include/uapi/linux/tipc.h
+similarity index 100%
+rename from include/linux/tipc.h
+rename to include/uapi/linux/tipc.h
+diff --git a/include/linux/tipc_netlink.h b/include/uapi/linux/tipc_netlink.h
+similarity index 100%
+rename from include/linux/tipc_netlink.h
+rename to include/uapi/linux/tipc_netlink.h
+diff --git a/include/linux/types.h b/include/uapi/linux/types.h
+similarity index 100%
+rename from include/linux/types.h
+rename to include/uapi/linux/types.h
+diff --git a/include/linux/unix_diag.h b/include/uapi/linux/unix_diag.h
+similarity index 100%
+rename from include/linux/unix_diag.h
+rename to include/uapi/linux/unix_diag.h
+diff --git a/include/linux/veth.h b/include/uapi/linux/veth.h
+similarity index 100%
+rename from include/linux/veth.h
+rename to include/uapi/linux/veth.h
+diff --git a/include/linux/xfrm.h b/include/uapi/linux/xfrm.h
+similarity index 100%
+rename from include/linux/xfrm.h
+rename to include/uapi/linux/xfrm.h
 -- 
-1.8.3.1
+2.21.0
 
diff --git a/SOURCES/0037-uapi-add-include-linux-vm_sockets_diag.h.patch b/SOURCES/0037-uapi-add-include-linux-vm_sockets_diag.h.patch
index 46d589f..c713c95 100644
--- a/SOURCES/0037-uapi-add-include-linux-vm_sockets_diag.h.patch
+++ b/SOURCES/0037-uapi-add-include-linux-vm_sockets_diag.h.patch
@@ -16,13 +16,13 @@ Date:   Wed Oct 11 10:49:25 2017 -0700
 
 Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
 ---
- include/uapi/linux/vm_sockets_diag.h | 33 +++++++++++++++++++++++++++++++++
+ include/uapi/linux/vm_sockets_diag.h | 33 ++++++++++++++++++++++++++++
  1 file changed, 33 insertions(+)
  create mode 100644 include/uapi/linux/vm_sockets_diag.h
 
 diff --git a/include/uapi/linux/vm_sockets_diag.h b/include/uapi/linux/vm_sockets_diag.h
 new file mode 100644
-index 0000000..a732a6f
+index 0000000000000..a732a6f591b97
 --- /dev/null
 +++ b/include/uapi/linux/vm_sockets_diag.h
 @@ -0,0 +1,33 @@
@@ -60,5 +60,5 @@ index 0000000..a732a6f
 +
 +#endif /* __VM_SOCKETS_DIAG_H__ */
 -- 
-1.8.3.1
+2.21.0
 
diff --git a/SOURCES/0038-ss-allow-AF_FAMILY-constants-32.patch b/SOURCES/0038-ss-allow-AF_FAMILY-constants-32.patch
index 2c0fbfd..e039c2d 100644
--- a/SOURCES/0038-ss-allow-AF_FAMILY-constants-32.patch
+++ b/SOURCES/0038-ss-allow-AF_FAMILY-constants-32.patch
@@ -28,7 +28,7 @@ Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
  1 file changed, 28 insertions(+), 26 deletions(-)
 
 diff --git a/misc/ss.c b/misc/ss.c
-index d3fb9a7..0d64527 100644
+index d3fb9a751b3ab..0d6452777f7b6 100644
 --- a/misc/ss.c
 +++ b/misc/ss.c
 @@ -170,55 +170,57 @@ enum {
@@ -209,5 +209,5 @@ index d3fb9a7..0d64527 100644
  
  	if (groups == 0)
 -- 
-1.8.3.1
+2.21.0
 
diff --git a/SOURCES/0039-ss-add-AF_VSOCK-support.patch b/SOURCES/0039-ss-add-AF_VSOCK-support.patch
index ce5b7fb..8d7c70d 100644
--- a/SOURCES/0039-ss-add-AF_VSOCK-support.patch
+++ b/SOURCES/0039-ss-add-AF_VSOCK-support.patch
@@ -31,11 +31,11 @@ Date:   Fri Oct 6 11:48:41 2017 -0400
 Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
 ---
  man/man8/ss.8 |   8 ++-
- misc/ss.c     | 184 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
+ misc/ss.c     | 184 +++++++++++++++++++++++++++++++++++++++++++++++++-
  2 files changed, 188 insertions(+), 4 deletions(-)
 
 diff --git a/man/man8/ss.8 b/man/man8/ss.8
-index 81de69d..4323eee 100644
+index 81de69de8042e..4323eee3c8687 100644
 --- a/man/man8/ss.8
 +++ b/man/man8/ss.8
 @@ -125,14 +125,18 @@ Display Unix domain sockets (alias for -f unix).
@@ -60,7 +60,7 @@ index 81de69d..4323eee 100644
  .B \-D FILE, \-\-diag=FILE
  Do not display anything, just dump raw information about TCP sockets to FILE after applying filters. If FILE is - stdout is used.
 diff --git a/misc/ss.c b/misc/ss.c
-index 0d64527..e922665 100644
+index 0d6452777f7b6..e92266539e6b5 100644
 --- a/misc/ss.c
 +++ b/misc/ss.c
 @@ -44,6 +44,7 @@
@@ -394,5 +394,5 @@ index 0d64527..e922665 100644
  	if (show_users || show_proc_ctx || show_sock_ctx)
  		user_ent_destroy();
 -- 
-1.8.3.1
+2.21.0
 
diff --git a/SOURCES/0040-link_gre6-Detect-invalid-encaplimit-values.patch b/SOURCES/0040-link_gre6-Detect-invalid-encaplimit-values.patch
index 17ed549..996807f 100644
--- a/SOURCES/0040-link_gre6-Detect-invalid-encaplimit-values.patch
+++ b/SOURCES/0040-link_gre6-Detect-invalid-encaplimit-values.patch
@@ -22,7 +22,7 @@ Date:   Tue Nov 28 16:49:58 2017 +0100
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/ip/link_gre6.c b/ip/link_gre6.c
-index 932f9ee..a9d18ee 100644
+index 932f9ee96124d..a9d18ee954641 100644
 --- a/ip/link_gre6.c
 +++ b/ip/link_gre6.c
 @@ -351,7 +351,7 @@ get_failed:
@@ -35,5 +35,5 @@ index 932f9ee..a9d18ee 100644
  				encap_limit = uval;
  				flags &= ~IP6_TNL_F_IGN_ENCAP_LIMIT;
 -- 
-1.8.3.1
+2.21.0
 
diff --git a/SOURCES/0041-man-tc-csum.8-Fix-inconsistency-in-example-descripti.patch b/SOURCES/0041-man-tc-csum.8-Fix-inconsistency-in-example-descripti.patch
index ddd8d95..430f5d7 100644
--- a/SOURCES/0041-man-tc-csum.8-Fix-inconsistency-in-example-descripti.patch
+++ b/SOURCES/0041-man-tc-csum.8-Fix-inconsistency-in-example-descripti.patch
@@ -23,7 +23,7 @@ Date:   Wed Nov 29 18:34:09 2017 +0100
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 diff --git a/man/man8/tc-csum.8 b/man/man8/tc-csum.8
-index 409ab71..65724b8 100644
+index 409ab71791cce..65724b88d0b68 100644
 --- a/man/man8/tc-csum.8
 +++ b/man/man8/tc-csum.8
 @@ -53,8 +53,8 @@ SCTP header
@@ -38,5 +38,5 @@ index 409ab71..65724b8 100644
  
  .RS
 -- 
-1.8.3.1
+2.21.0
 
diff --git a/SOURCES/0042-tc-fix-command-tc-actions-del-hang-issue.patch b/SOURCES/0042-tc-fix-command-tc-actions-del-hang-issue.patch
index 54d524e..e8782ef 100644
--- a/SOURCES/0042-tc-fix-command-tc-actions-del-hang-issue.patch
+++ b/SOURCES/0042-tc-fix-command-tc-actions-del-hang-issue.patch
@@ -25,7 +25,7 @@ Date:   Thu Dec 14 18:09:00 2017 +0900
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/tc/m_action.c b/tc/m_action.c
-index 90b2a11..7cfd9e0 100644
+index 90b2a11e5d9e8..7cfd9e0af145f 100644
 --- a/tc/m_action.c
 +++ b/tc/m_action.c
 @@ -507,7 +507,7 @@ static int tc_action_gd(int cmd, unsigned int flags, int *argc_p, char ***argv_p
@@ -38,5 +38,5 @@ index 90b2a11..7cfd9e0 100644
  		return 1;
  	}
 -- 
-1.8.3.1
+2.21.0
 
diff --git a/SOURCES/0043-ip-link-Fix-use-after-free-in-nl_get_ll_addr_len.patch b/SOURCES/0043-ip-link-Fix-use-after-free-in-nl_get_ll_addr_len.patch
index 2eda52a..6c5497d 100644
--- a/SOURCES/0043-ip-link-Fix-use-after-free-in-nl_get_ll_addr_len.patch
+++ b/SOURCES/0043-ip-link-Fix-use-after-free-in-nl_get_ll_addr_len.patch
@@ -24,7 +24,7 @@ Date:   Thu Mar 1 10:35:12 2018 +0100
  1 file changed, 2 insertions(+), 1 deletion(-)
 
 diff --git a/ip/iplink.c b/ip/iplink.c
-index 193997c..db5b2c9 100644
+index 193997cad2a35..db5b2c9645ba8 100644
 --- a/ip/iplink.c
 +++ b/ip/iplink.c
 @@ -268,8 +268,9 @@ static int nl_get_ll_addr_len(unsigned int dev_index)
@@ -39,5 +39,5 @@ index 193997c..db5b2c9 100644
  
  static void iplink_parse_vf_vlan_info(int vf, int *argcp, char ***argvp,
 -- 
-1.8.3.1
+2.21.0
 
diff --git a/SOURCES/0044-tc-m_tunnel_key-reformat-the-usage-text.patch b/SOURCES/0044-tc-m_tunnel_key-reformat-the-usage-text.patch
index 5530aaf..34b2c08 100644
--- a/SOURCES/0044-tc-m_tunnel_key-reformat-the-usage-text.patch
+++ b/SOURCES/0044-tc-m_tunnel_key-reformat-the-usage-text.patch
@@ -21,7 +21,7 @@ Date:   Wed Jun 14 21:29:49 2017 +0200
  1 file changed, 7 insertions(+), 1 deletion(-)
 
 diff --git a/tc/m_tunnel_key.c b/tc/m_tunnel_key.c
-index 3ceec1c..5222c25 100644
+index 3ceec1cba616b..5222c25977e26 100644
 --- a/tc/m_tunnel_key.c
 +++ b/tc/m_tunnel_key.c
 @@ -22,7 +22,13 @@
@@ -40,5 +40,5 @@ index 3ceec1c..5222c25 100644
  
  static void usage(void)
 -- 
-1.8.3.1
+2.21.0
 
diff --git a/SOURCES/0045-tc-m_tunnel_key-Allow-key-less-tunnels.patch b/SOURCES/0045-tc-m_tunnel_key-Allow-key-less-tunnels.patch
index 76c2a4f..1a617b1 100644
--- a/SOURCES/0045-tc-m_tunnel_key-Allow-key-less-tunnels.patch
+++ b/SOURCES/0045-tc-m_tunnel_key-Allow-key-less-tunnels.patch
@@ -27,7 +27,7 @@ Date:   Thu Jan 10 15:03:50 2019 +0200
  2 files changed, 4 insertions(+), 6 deletions(-)
 
 diff --git a/man/man8/tc-tunnel_key.8 b/man/man8/tc-tunnel_key.8
-index 2e56973..52fa585 100644
+index 2e569730abbb3..52fa585a75c8f 100644
 --- a/man/man8/tc-tunnel_key.8
 +++ b/man/man8/tc-tunnel_key.8
 @@ -56,12 +56,12 @@ above).
@@ -46,7 +46,7 @@ index 2e56973..52fa585 100644
  is optional.
  .RS
 diff --git a/tc/m_tunnel_key.c b/tc/m_tunnel_key.c
-index 5222c25..acbcfc1 100644
+index 5222c25977e26..acbcfc15cda76 100644
 --- a/tc/m_tunnel_key.c
 +++ b/tc/m_tunnel_key.c
 @@ -25,7 +25,7 @@ static void explain(void)
@@ -84,5 +84,5 @@ index 5222c25..acbcfc1 100644
  		explain();
  		return -1;
 -- 
-1.8.3.1
+2.21.0
 
diff --git a/SOURCES/0046-tc-include-stdint.h-explicitly-for-UINT16_MAX.patch b/SOURCES/0046-tc-include-stdint.h-explicitly-for-UINT16_MAX.patch
index ed0d248..7f433a1 100644
--- a/SOURCES/0046-tc-include-stdint.h-explicitly-for-UINT16_MAX.patch
+++ b/SOURCES/0046-tc-include-stdint.h-explicitly-for-UINT16_MAX.patch
@@ -23,7 +23,7 @@ Date:   Sat May 20 14:28:46 2017 -0700
  1 file changed, 1 insertion(+)
 
 diff --git a/tc/tc_core.c b/tc/tc_core.c
-index 7bbe0d7..821b741 100644
+index 7bbe0d733fc75..821b741be17cf 100644
 --- a/tc/tc_core.c
 +++ b/tc/tc_core.c
 @@ -12,6 +12,7 @@
@@ -35,5 +35,5 @@ index 7bbe0d7..821b741 100644
  #include <syslog.h>
  #include <fcntl.h>
 -- 
-1.8.3.1
+2.21.0
 
diff --git a/SOURCES/0047-Update-kernel-headers.patch b/SOURCES/0047-Update-kernel-headers.patch
index 916d932..956c9d7 100644
--- a/SOURCES/0047-Update-kernel-headers.patch
+++ b/SOURCES/0047-Update-kernel-headers.patch
@@ -11,127 +11,127 @@ This updates kernel headers to upstream commit
 Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1641909
 Upstream Status: RHEL-only
 ---
- include/uapi/linux/atm.h                       |    1 +
- include/uapi/linux/atmapi.h                    |    1 +
- include/uapi/linux/atmarp.h                    |    1 +
- include/uapi/linux/atmdev.h                    |    1 +
- include/uapi/linux/atmioc.h                    |    1 +
- include/uapi/linux/atmsap.h                    |    1 +
- include/uapi/linux/bpf.h                       | 2481 ++++++++++++++++++++----
- include/uapi/linux/bpf_common.h                |    8 +-
- include/uapi/linux/btf.h                       |  113 ++
- include/uapi/linux/can.h                       |    1 +
- include/uapi/linux/can/netlink.h               |    2 +
- include/uapi/linux/can/vxcan.h                 |    1 +
- include/uapi/linux/devlink.h                   |   82 +
- include/uapi/linux/elf-em.h                    |    1 +
- include/uapi/linux/fib_rules.h                 |   12 +-
- include/uapi/linux/filter.h                    |    1 +
- include/uapi/linux/fou.h                       |    1 +
- include/uapi/linux/gen_stats.h                 |    1 +
- include/uapi/linux/genetlink.h                 |    1 +
- include/uapi/linux/hdlc/ioctl.h                |    1 +
- include/uapi/linux/icmpv6.h                    |    1 +
- include/uapi/linux/if.h                        |    1 +
- include/uapi/linux/if_addr.h                   |    2 +
- include/uapi/linux/if_addrlabel.h              |    1 +
- include/uapi/linux/if_alg.h                    |    1 +
- include/uapi/linux/if_arp.h                    |    1 +
- include/uapi/linux/if_bonding.h                |    1 +
- include/uapi/linux/if_bridge.h                 |    1 +
- include/uapi/linux/if_ether.h                  |   11 +
- include/uapi/linux/if_link.h                   |   59 +
- include/uapi/linux/if_macsec.h                 |   10 +-
- include/uapi/linux/if_packet.h                 |    1 +
- include/uapi/linux/if_tun.h                    |    5 +
- include/uapi/linux/if_tunnel.h                 |    5 +
- include/uapi/linux/if_vlan.h                   |    1 +
- include/uapi/linux/ife.h                       |    1 +
- include/uapi/linux/ila.h                       |   23 +
- include/uapi/linux/in.h                        |    1 +
- include/uapi/linux/in6.h                       |    2 +
- include/uapi/linux/in_route.h                  |    1 +
- include/uapi/linux/inet_diag.h                 |    3 +
- include/uapi/linux/ip.h                        |    1 +
- include/uapi/linux/ip6_tunnel.h                |    3 +
- include/uapi/linux/ipsec.h                     |    1 +
- include/uapi/linux/kernel.h                    |    1 +
- include/uapi/linux/l2tp.h                      |    7 +-
- include/uapi/linux/libc-compat.h               |   56 +-
- include/uapi/linux/limits.h                    |    1 +
- include/uapi/linux/lwtunnel.h                  |    1 +
- include/uapi/linux/magic.h                     |    2 +
- include/uapi/linux/mpls.h                      |    1 +
- include/uapi/linux/mpls_iptunnel.h             |    1 +
- include/uapi/linux/neighbour.h                 |    1 +
- include/uapi/linux/net_namespace.h             |    1 +
- include/uapi/linux/netconf.h                   |    1 +
- include/uapi/linux/netdevice.h                 |    1 +
- include/uapi/linux/netfilter.h                 |    1 +
- include/uapi/linux/netfilter/ipset/ip_set.h    |    1 +
- include/uapi/linux/netfilter/x_tables.h        |    1 +
- include/uapi/linux/netfilter/xt_set.h          |    1 +
- include/uapi/linux/netfilter/xt_tcpudp.h       |    1 +
- include/uapi/linux/netfilter_ipv4.h            |    2 +
- include/uapi/linux/netfilter_ipv4/ip_tables.h  |    1 +
- include/uapi/linux/netfilter_ipv6.h            |    2 +
- include/uapi/linux/netfilter_ipv6/ip6_tables.h |    1 +
- include/uapi/linux/netlink.h                   |    1 +
- include/uapi/linux/netlink_diag.h              |    1 +
- include/uapi/linux/packet_diag.h               |    1 +
- include/uapi/linux/param.h                     |    1 +
- include/uapi/linux/pfkeyv2.h                   |    1 +
- include/uapi/linux/pkt_cls.h                   |   15 +-
- include/uapi/linux/pkt_sched.h                 |  198 ++
- include/uapi/linux/posix_types.h               |    1 +
- include/uapi/linux/rtnetlink.h                 |   24 +
- include/uapi/linux/sctp.h                      |   71 +-
- include/uapi/linux/seg6.h                      |    5 +-
- include/uapi/linux/seg6_genl.h                 |    1 +
- include/uapi/linux/seg6_hmac.h                 |    1 +
- include/uapi/linux/seg6_iptunnel.h             |    1 +
- include/uapi/linux/seg6_local.h                |   12 +
- include/uapi/linux/sock_diag.h                 |    1 +
- include/uapi/linux/socket.h                    |    1 +
- include/uapi/linux/sockios.h                   |    1 +
- include/uapi/linux/stddef.h                    |    1 +
- include/uapi/linux/sysinfo.h                   |    1 +
- include/uapi/linux/tc_act/tc_bpf.h             |    1 +
- include/uapi/linux/tc_act/tc_connmark.h        |    1 +
- include/uapi/linux/tc_act/tc_csum.h            |    1 +
- include/uapi/linux/tc_act/tc_defact.h          |    1 +
- include/uapi/linux/tc_act/tc_gact.h            |    1 +
- include/uapi/linux/tc_act/tc_ife.h             |    1 +
- include/uapi/linux/tc_act/tc_ipt.h             |    1 +
- include/uapi/linux/tc_act/tc_mirred.h          |    7 +-
- include/uapi/linux/tc_act/tc_nat.h             |    1 +
- include/uapi/linux/tc_act/tc_pedit.h           |   10 +-
- include/uapi/linux/tc_act/tc_sample.h          |    1 +
- include/uapi/linux/tc_act/tc_skbedit.h         |    3 +
- include/uapi/linux/tc_act/tc_skbmod.h          |    1 +
- include/uapi/linux/tc_act/tc_tunnel_key.h      |   29 +
- include/uapi/linux/tc_act/tc_vlan.h            |    1 +
- include/uapi/linux/tc_ematch/tc_em_cmp.h       |    1 +
- include/uapi/linux/tc_ematch/tc_em_ipt.h       |   20 +
- include/uapi/linux/tc_ematch/tc_em_meta.h      |    1 +
- include/uapi/linux/tc_ematch/tc_em_nbyte.h     |    1 +
- include/uapi/linux/tcp.h                       |   22 +
- include/uapi/linux/tcp_metrics.h               |    1 +
- include/uapi/linux/tipc.h                      |  188 +-
- include/uapi/linux/tipc_netlink.h              |   37 +
- include/uapi/linux/tipc_sockets_diag.h         |   17 +
- include/uapi/linux/types.h                     |    3 +
- include/uapi/linux/unix_diag.h                 |    1 +
- include/uapi/linux/veth.h                      |    1 +
- include/uapi/linux/vm_sockets_diag.h           |    1 +
- include/uapi/linux/xfrm.h                      |    1 +
+ include/uapi/linux/atm.h                      |    1 +
+ include/uapi/linux/atmapi.h                   |    1 +
+ include/uapi/linux/atmarp.h                   |    1 +
+ include/uapi/linux/atmdev.h                   |    1 +
+ include/uapi/linux/atmioc.h                   |    1 +
+ include/uapi/linux/atmsap.h                   |    1 +
+ include/uapi/linux/bpf.h                      | 2481 ++++++++++++++---
+ include/uapi/linux/bpf_common.h               |    8 +-
+ include/uapi/linux/btf.h                      |  113 +
+ include/uapi/linux/can.h                      |    1 +
+ include/uapi/linux/can/netlink.h              |    2 +
+ include/uapi/linux/can/vxcan.h                |    1 +
+ include/uapi/linux/devlink.h                  |   82 +
+ include/uapi/linux/elf-em.h                   |    1 +
+ include/uapi/linux/fib_rules.h                |   12 +-
+ include/uapi/linux/filter.h                   |    1 +
+ include/uapi/linux/fou.h                      |    1 +
+ include/uapi/linux/gen_stats.h                |    1 +
+ include/uapi/linux/genetlink.h                |    1 +
+ include/uapi/linux/hdlc/ioctl.h               |    1 +
+ include/uapi/linux/icmpv6.h                   |    1 +
+ include/uapi/linux/if.h                       |    1 +
+ include/uapi/linux/if_addr.h                  |    2 +
+ include/uapi/linux/if_addrlabel.h             |    1 +
+ include/uapi/linux/if_alg.h                   |    1 +
+ include/uapi/linux/if_arp.h                   |    1 +
+ include/uapi/linux/if_bonding.h               |    1 +
+ include/uapi/linux/if_bridge.h                |    1 +
+ include/uapi/linux/if_ether.h                 |   11 +
+ include/uapi/linux/if_link.h                  |   59 +
+ include/uapi/linux/if_macsec.h                |   10 +-
+ include/uapi/linux/if_packet.h                |    1 +
+ include/uapi/linux/if_tun.h                   |    5 +
+ include/uapi/linux/if_tunnel.h                |    5 +
+ include/uapi/linux/if_vlan.h                  |    1 +
+ include/uapi/linux/ife.h                      |    1 +
+ include/uapi/linux/ila.h                      |   23 +
+ include/uapi/linux/in.h                       |    1 +
+ include/uapi/linux/in6.h                      |    2 +
+ include/uapi/linux/in_route.h                 |    1 +
+ include/uapi/linux/inet_diag.h                |    3 +
+ include/uapi/linux/ip.h                       |    1 +
+ include/uapi/linux/ip6_tunnel.h               |    3 +
+ include/uapi/linux/ipsec.h                    |    1 +
+ include/uapi/linux/kernel.h                   |    1 +
+ include/uapi/linux/l2tp.h                     |    7 +-
+ include/uapi/linux/libc-compat.h              |   56 +-
+ include/uapi/linux/limits.h                   |    1 +
+ include/uapi/linux/lwtunnel.h                 |    1 +
+ include/uapi/linux/magic.h                    |    2 +
+ include/uapi/linux/mpls.h                     |    1 +
+ include/uapi/linux/mpls_iptunnel.h            |    1 +
+ include/uapi/linux/neighbour.h                |    1 +
+ include/uapi/linux/net_namespace.h            |    1 +
+ include/uapi/linux/netconf.h                  |    1 +
+ include/uapi/linux/netdevice.h                |    1 +
+ include/uapi/linux/netfilter.h                |    1 +
+ include/uapi/linux/netfilter/ipset/ip_set.h   |    1 +
+ include/uapi/linux/netfilter/x_tables.h       |    1 +
+ include/uapi/linux/netfilter/xt_set.h         |    1 +
+ include/uapi/linux/netfilter/xt_tcpudp.h      |    1 +
+ include/uapi/linux/netfilter_ipv4.h           |    2 +
+ include/uapi/linux/netfilter_ipv4/ip_tables.h |    1 +
+ include/uapi/linux/netfilter_ipv6.h           |    2 +
+ .../uapi/linux/netfilter_ipv6/ip6_tables.h    |    1 +
+ include/uapi/linux/netlink.h                  |    1 +
+ include/uapi/linux/netlink_diag.h             |    1 +
+ include/uapi/linux/packet_diag.h              |    1 +
+ include/uapi/linux/param.h                    |    1 +
+ include/uapi/linux/pfkeyv2.h                  |    1 +
+ include/uapi/linux/pkt_cls.h                  |   15 +-
+ include/uapi/linux/pkt_sched.h                |  198 ++
+ include/uapi/linux/posix_types.h              |    1 +
+ include/uapi/linux/rtnetlink.h                |   24 +
+ include/uapi/linux/sctp.h                     |   71 +-
+ include/uapi/linux/seg6.h                     |    5 +-
+ include/uapi/linux/seg6_genl.h                |    1 +
+ include/uapi/linux/seg6_hmac.h                |    1 +
+ include/uapi/linux/seg6_iptunnel.h            |    1 +
+ include/uapi/linux/seg6_local.h               |   12 +
+ include/uapi/linux/sock_diag.h                |    1 +
+ include/uapi/linux/socket.h                   |    1 +
+ include/uapi/linux/sockios.h                  |    1 +
+ include/uapi/linux/stddef.h                   |    1 +
+ include/uapi/linux/sysinfo.h                  |    1 +
+ include/uapi/linux/tc_act/tc_bpf.h            |    1 +
+ include/uapi/linux/tc_act/tc_connmark.h       |    1 +
+ include/uapi/linux/tc_act/tc_csum.h           |    1 +
+ include/uapi/linux/tc_act/tc_defact.h         |    1 +
+ include/uapi/linux/tc_act/tc_gact.h           |    1 +
+ include/uapi/linux/tc_act/tc_ife.h            |    1 +
+ include/uapi/linux/tc_act/tc_ipt.h            |    1 +
+ include/uapi/linux/tc_act/tc_mirred.h         |    7 +-
+ include/uapi/linux/tc_act/tc_nat.h            |    1 +
+ include/uapi/linux/tc_act/tc_pedit.h          |   10 +-
+ include/uapi/linux/tc_act/tc_sample.h         |    1 +
+ include/uapi/linux/tc_act/tc_skbedit.h        |    3 +
+ include/uapi/linux/tc_act/tc_skbmod.h         |    1 +
+ include/uapi/linux/tc_act/tc_tunnel_key.h     |   29 +
+ include/uapi/linux/tc_act/tc_vlan.h           |    1 +
+ include/uapi/linux/tc_ematch/tc_em_cmp.h      |    1 +
+ include/uapi/linux/tc_ematch/tc_em_ipt.h      |   20 +
+ include/uapi/linux/tc_ematch/tc_em_meta.h     |    1 +
+ include/uapi/linux/tc_ematch/tc_em_nbyte.h    |    1 +
+ include/uapi/linux/tcp.h                      |   22 +
+ include/uapi/linux/tcp_metrics.h              |    1 +
+ include/uapi/linux/tipc.h                     |  188 +-
+ include/uapi/linux/tipc_netlink.h             |   37 +
+ include/uapi/linux/tipc_sockets_diag.h        |   17 +
+ include/uapi/linux/types.h                    |    3 +
+ include/uapi/linux/unix_diag.h                |    1 +
+ include/uapi/linux/veth.h                     |    1 +
+ include/uapi/linux/vm_sockets_diag.h          |    1 +
+ include/uapi/linux/xfrm.h                     |    1 +
  114 files changed, 3201 insertions(+), 427 deletions(-)
  create mode 100644 include/uapi/linux/btf.h
  create mode 100644 include/uapi/linux/tc_ematch/tc_em_ipt.h
  create mode 100644 include/uapi/linux/tipc_sockets_diag.h
 
 diff --git a/include/uapi/linux/atm.h b/include/uapi/linux/atm.h
-index 08e27be..e33ff6b 100644
+index 08e27bebaacfb..e33ff6b5bf152 100644
 --- a/include/uapi/linux/atm.h
 +++ b/include/uapi/linux/atm.h
 @@ -1,3 +1,4 @@
@@ -140,7 +140,7 @@ index 08e27be..e33ff6b 100644
   
  /* Written 1995-2000 by Werner Almesberger, EPFL LRC/ICA */
 diff --git a/include/uapi/linux/atmapi.h b/include/uapi/linux/atmapi.h
-index 8fe54d9..c9bf5c2 100644
+index 8fe54d90d95b1..c9bf5c23a71f6 100644
 --- a/include/uapi/linux/atmapi.h
 +++ b/include/uapi/linux/atmapi.h
 @@ -1,3 +1,4 @@
@@ -149,7 +149,7 @@ index 8fe54d9..c9bf5c2 100644
   
  /* Written 1999,2000 by Werner Almesberger, EPFL ICA */
 diff --git a/include/uapi/linux/atmarp.h b/include/uapi/linux/atmarp.h
-index 231f4bd..8e44d12 100644
+index 231f4bdec730e..8e44d121fde1a 100644
 --- a/include/uapi/linux/atmarp.h
 +++ b/include/uapi/linux/atmarp.h
 @@ -1,3 +1,4 @@
@@ -158,7 +158,7 @@ index 231f4bd..8e44d12 100644
   
  /* Written 1995-1999 by Werner Almesberger, EPFL LRC/ICA */
 diff --git a/include/uapi/linux/atmdev.h b/include/uapi/linux/atmdev.h
-index 8faa8b9..9bdb96a 100644
+index 8faa8b94091ce..9bdb96a4bbe04 100644
 --- a/include/uapi/linux/atmdev.h
 +++ b/include/uapi/linux/atmdev.h
 @@ -1,3 +1,4 @@
@@ -167,7 +167,7 @@ index 8faa8b9..9bdb96a 100644
   
  /* Written 1995-2000 by Werner Almesberger, EPFL LRC/ICA */
 diff --git a/include/uapi/linux/atmioc.h b/include/uapi/linux/atmioc.h
-index 37f67aa..cd7655e 100644
+index 37f67aa8f1c16..cd7655e40c77a 100644
 --- a/include/uapi/linux/atmioc.h
 +++ b/include/uapi/linux/atmioc.h
 @@ -1,3 +1,4 @@
@@ -176,7 +176,7 @@ index 37f67aa..cd7655e 100644
   
  /* Written 1995-1999 by Werner Almesberger, EPFL LRC/ICA */
 diff --git a/include/uapi/linux/atmsap.h b/include/uapi/linux/atmsap.h
-index 799b104..fc05248 100644
+index 799b104515d77..fc052481eae05 100644
 --- a/include/uapi/linux/atmsap.h
 +++ b/include/uapi/linux/atmsap.h
 @@ -1,3 +1,4 @@
@@ -185,7 +185,7 @@ index 799b104..fc05248 100644
  
  /* Written 1995-1999 by Werner Almesberger, EPFL LRC/ICA */
 diff --git a/include/uapi/linux/bpf.h b/include/uapi/linux/bpf.h
-index 0895a52..b9a6367 100644
+index 0895a529cc90b..b9a63672b297c 100644
 --- a/include/uapi/linux/bpf.h
 +++ b/include/uapi/linux/bpf.h
 @@ -1,3 +1,4 @@
@@ -2896,7 +2896,7 @@ index 0895a52..b9a6367 100644
 +
  #endif /* __LINUX_BPF_H__ */
 diff --git a/include/uapi/linux/bpf_common.h b/include/uapi/linux/bpf_common.h
-index afe7433..f0fe139 100644
+index afe7433b9891f..f0fe1394971d1 100644
 --- a/include/uapi/linux/bpf_common.h
 +++ b/include/uapi/linux/bpf_common.h
 @@ -1,3 +1,4 @@
@@ -2920,7 +2920,7 @@ index afe7433..f0fe139 100644
  #define		BPF_ABS		0x20
 diff --git a/include/uapi/linux/btf.h b/include/uapi/linux/btf.h
 new file mode 100644
-index 0000000..5dd580a
+index 0000000000000..5dd580a6726cd
 --- /dev/null
 +++ b/include/uapi/linux/btf.h
 @@ -0,0 +1,113 @@
@@ -3038,7 +3038,7 @@ index 0000000..5dd580a
 +
 +#endif /* __LINUX_BTF_H__ */
 diff --git a/include/uapi/linux/can.h b/include/uapi/linux/can.h
-index f7a810d..4d1ab8e 100644
+index f7a810debb0e8..4d1ab8e7a4984 100644
 --- a/include/uapi/linux/can.h
 +++ b/include/uapi/linux/can.h
 @@ -1,3 +1,4 @@
@@ -3047,7 +3047,7 @@ index f7a810d..4d1ab8e 100644
   * linux/can.h
   *
 diff --git a/include/uapi/linux/can/netlink.h b/include/uapi/linux/can/netlink.h
-index b9214bd..f0c5e58 100644
+index b9214bd7aa2bc..f0c5e58b8ee76 100644
 --- a/include/uapi/linux/can/netlink.h
 +++ b/include/uapi/linux/can/netlink.h
 @@ -1,3 +1,4 @@
@@ -3064,7 +3064,7 @@ index b9214bd..f0c5e58 100644
  };
  
 diff --git a/include/uapi/linux/can/vxcan.h b/include/uapi/linux/can/vxcan.h
-index 5b29e8a..b364d77 100644
+index 5b29e8a7bc274..b364d775553c6 100644
 --- a/include/uapi/linux/can/vxcan.h
 +++ b/include/uapi/linux/can/vxcan.h
 @@ -1,3 +1,4 @@
@@ -3073,7 +3073,7 @@ index 5b29e8a..b364d77 100644
  #define _CAN_VXCAN_H
  
 diff --git a/include/uapi/linux/devlink.h b/include/uapi/linux/devlink.h
-index a62695e..5ee0e73 100644
+index a62695e2d86e8..5ee0e7397591a 100644
 --- a/include/uapi/linux/devlink.h
 +++ b/include/uapi/linux/devlink.h
 @@ -1,3 +1,4 @@
@@ -3189,7 +3189,7 @@ index a62695e..5ee0e73 100644
 +
  #endif /* _LINUX_DEVLINK_H_ */
 diff --git a/include/uapi/linux/elf-em.h b/include/uapi/linux/elf-em.h
-index 9cd1de9..31aa101 100644
+index 9cd1de954c0ac..31aa101783351 100644
 --- a/include/uapi/linux/elf-em.h
 +++ b/include/uapi/linux/elf-em.h
 @@ -1,3 +1,4 @@
@@ -3198,7 +3198,7 @@ index 9cd1de9..31aa101 100644
  #define _LINUX_ELF_EM_H
  
 diff --git a/include/uapi/linux/fib_rules.h b/include/uapi/linux/fib_rules.h
-index bbf02a6..232df14 100644
+index bbf02a63a0113..232df14e1287a 100644
 --- a/include/uapi/linux/fib_rules.h
 +++ b/include/uapi/linux/fib_rules.h
 @@ -1,3 +1,4 @@
@@ -3239,7 +3239,7 @@ index bbf02a6..232df14 100644
  };
  
 diff --git a/include/uapi/linux/filter.h b/include/uapi/linux/filter.h
-index e4f2f74..eaef459 100644
+index e4f2f74cfc168..eaef459e7bd44 100644
 --- a/include/uapi/linux/filter.h
 +++ b/include/uapi/linux/filter.h
 @@ -1,3 +1,4 @@
@@ -3248,7 +3248,7 @@ index e4f2f74..eaef459 100644
   * Linux Socket Filter Data Structures
   */
 diff --git a/include/uapi/linux/fou.h b/include/uapi/linux/fou.h
-index 744c323..bf022c6 100644
+index 744c32380e6dc..bf022c63d5ff6 100644
 --- a/include/uapi/linux/fou.h
 +++ b/include/uapi/linux/fou.h
 @@ -1,3 +1,4 @@
@@ -3257,7 +3257,7 @@ index 744c323..bf022c6 100644
  
  #ifndef _LINUX_FOU_H
 diff --git a/include/uapi/linux/gen_stats.h b/include/uapi/linux/gen_stats.h
-index 52deccc..24a861c 100644
+index 52deccc2128ee..24a861c0d29d3 100644
 --- a/include/uapi/linux/gen_stats.h
 +++ b/include/uapi/linux/gen_stats.h
 @@ -1,3 +1,4 @@
@@ -3266,7 +3266,7 @@ index 52deccc..24a861c 100644
  #define __LINUX_GEN_STATS_H
  
 diff --git a/include/uapi/linux/genetlink.h b/include/uapi/linux/genetlink.h
-index 08239d8..1317119 100644
+index 08239d8ead41d..1317119cbff8f 100644
 --- a/include/uapi/linux/genetlink.h
 +++ b/include/uapi/linux/genetlink.h
 @@ -1,3 +1,4 @@
@@ -3275,7 +3275,7 @@ index 08239d8..1317119 100644
  #define __LINUX_GENERIC_NETLINK_H
  
 diff --git a/include/uapi/linux/hdlc/ioctl.h b/include/uapi/linux/hdlc/ioctl.h
-index 04bc027..0fe4238 100644
+index 04bc0274a1898..0fe4238e82462 100644
 --- a/include/uapi/linux/hdlc/ioctl.h
 +++ b/include/uapi/linux/hdlc/ioctl.h
 @@ -1,3 +1,4 @@
@@ -3284,7 +3284,7 @@ index 04bc027..0fe4238 100644
  #define __HDLC_IOCTL_H__
  
 diff --git a/include/uapi/linux/icmpv6.h b/include/uapi/linux/icmpv6.h
-index a2e839e..cb247a5 100644
+index a2e839ee96485..cb247a5df6ea6 100644
 --- a/include/uapi/linux/icmpv6.h
 +++ b/include/uapi/linux/icmpv6.h
 @@ -1,3 +1,4 @@
@@ -3293,7 +3293,7 @@ index a2e839e..cb247a5 100644
  #define _LINUX_ICMPV6_H
  
 diff --git a/include/uapi/linux/if.h b/include/uapi/linux/if.h
-index b4ba020..495cdd2 100644
+index b4ba020791f86..495cdd2324428 100644
 --- a/include/uapi/linux/if.h
 +++ b/include/uapi/linux/if.h
 @@ -1,3 +1,4 @@
@@ -3302,7 +3302,7 @@ index b4ba020..495cdd2 100644
   * INET		An implementation of the TCP/IP protocol suite for the LINUX
   *		operating system.  INET is implemented using the  BSD Socket
 diff --git a/include/uapi/linux/if_addr.h b/include/uapi/linux/if_addr.h
-index 26f0ecf..a924606 100644
+index 26f0ecff9f13d..a924606f36e56 100644
 --- a/include/uapi/linux/if_addr.h
 +++ b/include/uapi/linux/if_addr.h
 @@ -1,3 +1,4 @@
@@ -3319,7 +3319,7 @@ index 26f0ecf..a924606 100644
  };
  
 diff --git a/include/uapi/linux/if_addrlabel.h b/include/uapi/linux/if_addrlabel.h
-index 54580c2..d1f5974 100644
+index 54580c298187c..d1f5974c76e10 100644
 --- a/include/uapi/linux/if_addrlabel.h
 +++ b/include/uapi/linux/if_addrlabel.h
 @@ -1,3 +1,4 @@
@@ -3328,7 +3328,7 @@ index 54580c2..d1f5974 100644
   * if_addrlabel.h - netlink interface for address labels
   *
 diff --git a/include/uapi/linux/if_alg.h b/include/uapi/linux/if_alg.h
-index f2acd2f..bc2bcde 100644
+index f2acd2fde1f3a..bc2bcdec377b4 100644
 --- a/include/uapi/linux/if_alg.h
 +++ b/include/uapi/linux/if_alg.h
 @@ -1,3 +1,4 @@
@@ -3337,7 +3337,7 @@ index f2acd2f..bc2bcde 100644
   * if_alg: User-space algorithm interface
   *
 diff --git a/include/uapi/linux/if_arp.h b/include/uapi/linux/if_arp.h
-index 199f253..cd136a6 100644
+index 199f253bd1f66..cd136a6f821bb 100644
 --- a/include/uapi/linux/if_arp.h
 +++ b/include/uapi/linux/if_arp.h
 @@ -1,3 +1,4 @@
@@ -3346,7 +3346,7 @@ index 199f253..cd136a6 100644
   * INET		An implementation of the TCP/IP protocol suite for the LINUX
   *		operating system.  INET is implemented using the  BSD Socket
 diff --git a/include/uapi/linux/if_bonding.h b/include/uapi/linux/if_bonding.h
-index 9635a62..61a1bf6 100644
+index 9635a62f6f89c..61a1bf6e865e8 100644
 --- a/include/uapi/linux/if_bonding.h
 +++ b/include/uapi/linux/if_bonding.h
 @@ -1,3 +1,4 @@
@@ -3355,7 +3355,7 @@ index 9635a62..61a1bf6 100644
   * Bond several ethernet interfaces into a Cisco, running 'Etherchannel'.
   *
 diff --git a/include/uapi/linux/if_bridge.h b/include/uapi/linux/if_bridge.h
-index 156f443..bdfecf9 100644
+index 156f4434ca325..bdfecf9411320 100644
 --- a/include/uapi/linux/if_bridge.h
 +++ b/include/uapi/linux/if_bridge.h
 @@ -1,3 +1,4 @@
@@ -3364,7 +3364,7 @@ index 156f443..bdfecf9 100644
   *	Linux ethernet bridge
   *
 diff --git a/include/uapi/linux/if_ether.h b/include/uapi/linux/if_ether.h
-index 7dde037..8c36f63 100644
+index 7dde037a0cca6..8c36f63e6a38f 100644
 --- a/include/uapi/linux/if_ether.h
 +++ b/include/uapi/linux/if_ether.h
 @@ -1,3 +1,4 @@
@@ -3416,7 +3416,7 @@ index 7dde037..8c36f63 100644
  
  #endif /* _LINUX_IF_ETHER_H */
 diff --git a/include/uapi/linux/if_link.h b/include/uapi/linux/if_link.h
-index 1f97d05..1c64ed4 100644
+index 1f97d0560b6cb..1c64ed45353d5 100644
 --- a/include/uapi/linux/if_link.h
 +++ b/include/uapi/linux/if_link.h
 @@ -1,3 +1,4 @@
@@ -3544,7 +3544,7 @@ index 1f97d05..1c64ed4 100644
 +
  #endif /* _LINUX_IF_LINK_H */
 diff --git a/include/uapi/linux/if_macsec.h b/include/uapi/linux/if_macsec.h
-index 22939a3..7743993 100644
+index 22939a3ec8ea2..77439932561b9 100644
 --- a/include/uapi/linux/if_macsec.h
 +++ b/include/uapi/linux/if_macsec.h
 @@ -1,3 +1,4 @@
@@ -3569,7 +3569,7 @@ index 22939a3..7743993 100644
  #define MACSEC_MIN_ICV_LEN 8
  #define MACSEC_MAX_ICV_LEN 32
 diff --git a/include/uapi/linux/if_packet.h b/include/uapi/linux/if_packet.h
-index 4df96a7..67b61d9 100644
+index 4df96a7dd4fae..67b61d91d89bf 100644
 --- a/include/uapi/linux/if_packet.h
 +++ b/include/uapi/linux/if_packet.h
 @@ -1,3 +1,4 @@
@@ -3578,7 +3578,7 @@ index 4df96a7..67b61d9 100644
  #define __LINUX_IF_PACKET_H
  
 diff --git a/include/uapi/linux/if_tun.h b/include/uapi/linux/if_tun.h
-index d5ecb42..be9b744 100644
+index d5ecb42541819..be9b744a16458 100644
 --- a/include/uapi/linux/if_tun.h
 +++ b/include/uapi/linux/if_tun.h
 @@ -1,3 +1,4 @@
@@ -3602,7 +3602,7 @@ index d5ecb42..be9b744 100644
  /* This flag has no real effect */
  #define IFF_ONE_QUEUE	0x2000
 diff --git a/include/uapi/linux/if_tunnel.h b/include/uapi/linux/if_tunnel.h
-index 21834ca..ecdc766 100644
+index 21834cac4c0d5..ecdc76669cfdd 100644
 --- a/include/uapi/linux/if_tunnel.h
 +++ b/include/uapi/linux/if_tunnel.h
 @@ -1,3 +1,4 @@
@@ -3629,7 +3629,7 @@ index 21834ca..ecdc766 100644
  };
  
 diff --git a/include/uapi/linux/if_vlan.h b/include/uapi/linux/if_vlan.h
-index 24ae007..18a15da 100644
+index 24ae007160a17..18a15dad5547b 100644
 --- a/include/uapi/linux/if_vlan.h
 +++ b/include/uapi/linux/if_vlan.h
 @@ -1,3 +1,4 @@
@@ -3638,7 +3638,7 @@ index 24ae007..18a15da 100644
   * VLAN		An implementation of 802.1Q VLAN tagging.
   *
 diff --git a/include/uapi/linux/ife.h b/include/uapi/linux/ife.h
-index 2954da3..bdd953c 100644
+index 2954da32e012e..bdd953c67db12 100644
 --- a/include/uapi/linux/ife.h
 +++ b/include/uapi/linux/ife.h
 @@ -1,3 +1,4 @@
@@ -3647,7 +3647,7 @@ index 2954da3..bdd953c 100644
  #define __UAPI_IFE_H
  
 diff --git a/include/uapi/linux/ila.h b/include/uapi/linux/ila.h
-index 7e328d7..6a6c97c 100644
+index 7e328d72c518f..6a6c97cf2c40c 100644
 --- a/include/uapi/linux/ila.h
 +++ b/include/uapi/linux/ila.h
 @@ -1,3 +1,4 @@
@@ -3699,7 +3699,7 @@ index 7e328d7..6a6c97c 100644
  
  #endif /* _LINUX_ILA_H */
 diff --git a/include/uapi/linux/in.h b/include/uapi/linux/in.h
-index 9439efa..a4f143b 100644
+index 9439efaaa0c84..a4f143b301582 100644
 --- a/include/uapi/linux/in.h
 +++ b/include/uapi/linux/in.h
 @@ -1,3 +1,4 @@
@@ -3708,7 +3708,7 @@ index 9439efa..a4f143b 100644
   * INET		An implementation of the TCP/IP protocol suite for the LINUX
   *		operating system.  INET is implemented using the  BSD Socket
 diff --git a/include/uapi/linux/in6.h b/include/uapi/linux/in6.h
-index 6f3bdee..409bb3f 100644
+index 6f3bdee7c0aba..409bb3f3aed67 100644
 --- a/include/uapi/linux/in6.h
 +++ b/include/uapi/linux/in6.h
 @@ -1,3 +1,4 @@
@@ -3725,7 +3725,7 @@ index 6f3bdee..409bb3f 100644
  /*
   * Multicast Routing:
 diff --git a/include/uapi/linux/in_route.h b/include/uapi/linux/in_route.h
-index b261b8c..0cc2c23 100644
+index b261b8c915f01..0cc2c23b47f84 100644
 --- a/include/uapi/linux/in_route.h
 +++ b/include/uapi/linux/in_route.h
 @@ -1,3 +1,4 @@
@@ -3734,7 +3734,7 @@ index b261b8c..0cc2c23 100644
  #define _LINUX_IN_ROUTE_H
  
 diff --git a/include/uapi/linux/inet_diag.h b/include/uapi/linux/inet_diag.h
-index bada4d7..f98d82d 100644
+index bada4d7b6c8e6..f98d82d4b2c03 100644
 --- a/include/uapi/linux/inet_diag.h
 +++ b/include/uapi/linux/inet_diag.h
 @@ -1,3 +1,4 @@
@@ -3752,7 +3752,7 @@ index bada4d7..f98d82d 100644
  
  struct inet_diag_hostcond {
 diff --git a/include/uapi/linux/ip.h b/include/uapi/linux/ip.h
-index 1907284..883fd33 100644
+index 1907284cb3745..883fd334496ab 100644
 --- a/include/uapi/linux/ip.h
 +++ b/include/uapi/linux/ip.h
 @@ -1,3 +1,4 @@
@@ -3761,7 +3761,7 @@ index 1907284..883fd33 100644
   * INET		An implementation of the TCP/IP protocol suite for the LINUX
   *		operating system.  INET is implemented using the  BSD Socket
 diff --git a/include/uapi/linux/ip6_tunnel.h b/include/uapi/linux/ip6_tunnel.h
-index 425926c..0245269 100644
+index 425926c467d7a..0245269b037c8 100644
 --- a/include/uapi/linux/ip6_tunnel.h
 +++ b/include/uapi/linux/ip6_tunnel.h
 @@ -1,3 +1,4 @@
@@ -3779,7 +3779,7 @@ index 425926c..0245269 100644
  struct ip6_tnl_parm {
  	char name[IFNAMSIZ];	/* name of tunnel device */
 diff --git a/include/uapi/linux/ipsec.h b/include/uapi/linux/ipsec.h
-index d17a630..50d8ee1 100644
+index d17a6302a0e96..50d8ee1791e2a 100644
 --- a/include/uapi/linux/ipsec.h
 +++ b/include/uapi/linux/ipsec.h
 @@ -1,3 +1,4 @@
@@ -3788,7 +3788,7 @@ index d17a630..50d8ee1 100644
  #define _LINUX_IPSEC_H
  
 diff --git a/include/uapi/linux/kernel.h b/include/uapi/linux/kernel.h
-index 527549f..d99ffa1 100644
+index 527549f5db572..d99ffa1a0abdb 100644
 --- a/include/uapi/linux/kernel.h
 +++ b/include/uapi/linux/kernel.h
 @@ -1,3 +1,4 @@
@@ -3797,7 +3797,7 @@ index 527549f..d99ffa1 100644
  #define _LINUX_KERNEL_H
  
 diff --git a/include/uapi/linux/l2tp.h b/include/uapi/linux/l2tp.h
-index 8a80007..1fe52a7 100644
+index 8a80007bb1ec6..1fe52a7dd4a94 100644
 --- a/include/uapi/linux/l2tp.h
 +++ b/include/uapi/linux/l2tp.h
 @@ -1,3 +1,4 @@
@@ -3828,7 +3828,7 @@ index 8a80007..1fe52a7 100644
  	L2TP_ATTR_IFNAME,		/* string */
  	L2TP_ATTR_CONN_ID,		/* u32 */
 diff --git a/include/uapi/linux/libc-compat.h b/include/uapi/linux/libc-compat.h
-index f38571d..a159991 100644
+index f38571dabd8d8..a1599911e7a94 100644
 --- a/include/uapi/linux/libc-compat.h
 +++ b/include/uapi/linux/libc-compat.h
 @@ -1,3 +1,4 @@
@@ -3938,7 +3938,7 @@ index f38571d..a159991 100644
  #endif /* __GLIBC__ */
  
 diff --git a/include/uapi/linux/limits.h b/include/uapi/linux/limits.h
-index 2d0f941..c3547f0 100644
+index 2d0f94162fb34..c3547f07605c9 100644
 --- a/include/uapi/linux/limits.h
 +++ b/include/uapi/linux/limits.h
 @@ -1,3 +1,4 @@
@@ -3947,7 +3947,7 @@ index 2d0f941..c3547f0 100644
  #define _LINUX_LIMITS_H
  
 diff --git a/include/uapi/linux/lwtunnel.h b/include/uapi/linux/lwtunnel.h
-index 3298426..3f3fe6f 100644
+index 329842627162b..3f3fe6f30df0b 100644
 --- a/include/uapi/linux/lwtunnel.h
 +++ b/include/uapi/linux/lwtunnel.h
 @@ -1,3 +1,4 @@
@@ -3956,7 +3956,7 @@ index 3298426..3f3fe6f 100644
  #define _LWTUNNEL_H_
  
 diff --git a/include/uapi/linux/magic.h b/include/uapi/linux/magic.h
-index e439565..1a6fee9 100644
+index e439565df838a..1a6fee974116a 100644
 --- a/include/uapi/linux/magic.h
 +++ b/include/uapi/linux/magic.h
 @@ -1,3 +1,4 @@
@@ -3973,7 +3973,7 @@ index e439565..1a6fee9 100644
  #define REISERFS_SUPER_MAGIC	0x52654973	/* used by gcc */
  					/* used by file system utilities that
 diff --git a/include/uapi/linux/mpls.h b/include/uapi/linux/mpls.h
-index bf5b625..9effbf9 100644
+index bf5b6259058f1..9effbf99dde6b 100644
 --- a/include/uapi/linux/mpls.h
 +++ b/include/uapi/linux/mpls.h
 @@ -1,3 +1,4 @@
@@ -3982,7 +3982,7 @@ index bf5b625..9effbf9 100644
  #define _MPLS_H
  
 diff --git a/include/uapi/linux/mpls_iptunnel.h b/include/uapi/linux/mpls_iptunnel.h
-index 1a0e57b..2c69b7d 100644
+index 1a0e57b45a8ce..2c69b7ddbc87b 100644
 --- a/include/uapi/linux/mpls_iptunnel.h
 +++ b/include/uapi/linux/mpls_iptunnel.h
 @@ -1,3 +1,4 @@
@@ -3991,7 +3991,7 @@ index 1a0e57b..2c69b7d 100644
   *	mpls tunnel api
   *
 diff --git a/include/uapi/linux/neighbour.h b/include/uapi/linux/neighbour.h
-index 3199d28..904db61 100644
+index 3199d28980b35..904db61484766 100644
 --- a/include/uapi/linux/neighbour.h
 +++ b/include/uapi/linux/neighbour.h
 @@ -1,3 +1,4 @@
@@ -4000,7 +4000,7 @@ index 3199d28..904db61 100644
  #define __LINUX_NEIGHBOUR_H
  
 diff --git a/include/uapi/linux/net_namespace.h b/include/uapi/linux/net_namespace.h
-index 9a92b7e..6d64d07 100644
+index 9a92b7e14a199..6d64d0716800f 100644
 --- a/include/uapi/linux/net_namespace.h
 +++ b/include/uapi/linux/net_namespace.h
 @@ -1,3 +1,4 @@
@@ -4009,7 +4009,7 @@ index 9a92b7e..6d64d07 100644
   * Author: Nicolas Dichtel <nicolas.dichtel@6wind.com>
   *
 diff --git a/include/uapi/linux/netconf.h b/include/uapi/linux/netconf.h
-index 4afbd7d..86ac1eb 100644
+index 4afbd7dbd05de..86ac1eb4c06e3 100644
 --- a/include/uapi/linux/netconf.h
 +++ b/include/uapi/linux/netconf.h
 @@ -1,3 +1,4 @@
@@ -4018,7 +4018,7 @@ index 4afbd7d..86ac1eb 100644
  #define _LINUX_NETCONF_H_
  
 diff --git a/include/uapi/linux/netdevice.h b/include/uapi/linux/netdevice.h
-index 66fceb4..86d961c 100644
+index 66fceb4423392..86d961c91136c 100644
 --- a/include/uapi/linux/netdevice.h
 +++ b/include/uapi/linux/netdevice.h
 @@ -1,3 +1,4 @@
@@ -4027,7 +4027,7 @@ index 66fceb4..86d961c 100644
   * INET		An implementation of the TCP/IP protocol suite for the LINUX
   *		operating system.  INET is implemented using the  BSD Socket
 diff --git a/include/uapi/linux/netfilter.h b/include/uapi/linux/netfilter.h
-index ff4a4a5..36378a0 100644
+index ff4a4a523c128..36378a0a81399 100644
 --- a/include/uapi/linux/netfilter.h
 +++ b/include/uapi/linux/netfilter.h
 @@ -1,3 +1,4 @@
@@ -4036,7 +4036,7 @@ index ff4a4a5..36378a0 100644
  #define __LINUX_NETFILTER_H
  
 diff --git a/include/uapi/linux/netfilter/ipset/ip_set.h b/include/uapi/linux/netfilter/ipset/ip_set.h
-index a6c96b0..13eeada 100644
+index a6c96b0024250..13eeada594dbb 100644
 --- a/include/uapi/linux/netfilter/ipset/ip_set.h
 +++ b/include/uapi/linux/netfilter/ipset/ip_set.h
 @@ -1,3 +1,4 @@
@@ -4045,7 +4045,7 @@ index a6c96b0..13eeada 100644
   *                         Patrick Schaaf <bof@bof.de>
   *                         Martin Josefsson <gandalf@wlug.westbo.se>
 diff --git a/include/uapi/linux/netfilter/x_tables.h b/include/uapi/linux/netfilter/x_tables.h
-index 4120970..ae2fd12 100644
+index 4120970072771..ae2fd12799399 100644
 --- a/include/uapi/linux/netfilter/x_tables.h
 +++ b/include/uapi/linux/netfilter/x_tables.h
 @@ -1,3 +1,4 @@
@@ -4054,7 +4054,7 @@ index 4120970..ae2fd12 100644
  #define _X_TABLES_H
  #include <linux/kernel.h>
 diff --git a/include/uapi/linux/netfilter/xt_set.h b/include/uapi/linux/netfilter/xt_set.h
-index d4e0234..8c1ca66 100644
+index d4e02348384c6..8c1ca66c8a060 100644
 --- a/include/uapi/linux/netfilter/xt_set.h
 +++ b/include/uapi/linux/netfilter/xt_set.h
 @@ -1,3 +1,4 @@
@@ -4063,7 +4063,7 @@ index d4e0234..8c1ca66 100644
  #define _XT_SET_H
  
 diff --git a/include/uapi/linux/netfilter/xt_tcpudp.h b/include/uapi/linux/netfilter/xt_tcpudp.h
-index 38aa7b3..658c169 100644
+index 38aa7b399021f..658c169998197 100644
 --- a/include/uapi/linux/netfilter/xt_tcpudp.h
 +++ b/include/uapi/linux/netfilter/xt_tcpudp.h
 @@ -1,3 +1,4 @@
@@ -4072,7 +4072,7 @@ index 38aa7b3..658c169 100644
  #define _XT_TCPUDP_H
  
 diff --git a/include/uapi/linux/netfilter_ipv4.h b/include/uapi/linux/netfilter_ipv4.h
-index a5f4dc7..074e2c8 100644
+index a5f4dc784baa7..074e2c8b923ad 100644
 --- a/include/uapi/linux/netfilter_ipv4.h
 +++ b/include/uapi/linux/netfilter_ipv4.h
 @@ -1,3 +1,4 @@
@@ -4089,7 +4089,7 @@ index a5f4dc7..074e2c8 100644
  	NF_IP_PRI_RAW = -300,
  	NF_IP_PRI_SELINUX_FIRST = -225,
 diff --git a/include/uapi/linux/netfilter_ipv4/ip_tables.h b/include/uapi/linux/netfilter_ipv4/ip_tables.h
-index 456fb86..409cff7 100644
+index 456fb863e0fde..409cff71bd238 100644
 --- a/include/uapi/linux/netfilter_ipv4/ip_tables.h
 +++ b/include/uapi/linux/netfilter_ipv4/ip_tables.h
 @@ -1,3 +1,4 @@
@@ -4098,7 +4098,7 @@ index 456fb86..409cff7 100644
   * 25-Jul-1998 Major changes to allow for ip chain table
   *
 diff --git a/include/uapi/linux/netfilter_ipv6.h b/include/uapi/linux/netfilter_ipv6.h
-index 8483d1d..92701fe 100644
+index 8483d1d415199..92701fe853ada 100644
 --- a/include/uapi/linux/netfilter_ipv6.h
 +++ b/include/uapi/linux/netfilter_ipv6.h
 @@ -1,3 +1,4 @@
@@ -4115,7 +4115,7 @@ index 8483d1d..92701fe 100644
  	NF_IP6_PRI_RAW = -300,
  	NF_IP6_PRI_SELINUX_FIRST = -225,
 diff --git a/include/uapi/linux/netfilter_ipv6/ip6_tables.h b/include/uapi/linux/netfilter_ipv6/ip6_tables.h
-index fcc8cca..7ae314b 100644
+index fcc8ccaff94e9..7ae314ba260f3 100644
 --- a/include/uapi/linux/netfilter_ipv6/ip6_tables.h
 +++ b/include/uapi/linux/netfilter_ipv6/ip6_tables.h
 @@ -1,3 +1,4 @@
@@ -4124,7 +4124,7 @@ index fcc8cca..7ae314b 100644
   * 25-Jul-1998 Major changes to allow for ip chain table
   *
 diff --git a/include/uapi/linux/netlink.h b/include/uapi/linux/netlink.h
-index ec0690b..0b2c29b 100644
+index ec0690b506471..0b2c29bd081fa 100644
 --- a/include/uapi/linux/netlink.h
 +++ b/include/uapi/linux/netlink.h
 @@ -1,3 +1,4 @@
@@ -4133,7 +4133,7 @@ index ec0690b..0b2c29b 100644
  #define __LINUX_NETLINK_H
  
 diff --git a/include/uapi/linux/netlink_diag.h b/include/uapi/linux/netlink_diag.h
-index c8c8c7d..4cd0657 100644
+index c8c8c7d2e530b..4cd0657859636 100644
 --- a/include/uapi/linux/netlink_diag.h
 +++ b/include/uapi/linux/netlink_diag.h
 @@ -1,3 +1,4 @@
@@ -4142,7 +4142,7 @@ index c8c8c7d..4cd0657 100644
  #define __NETLINK_DIAG_H__
  
 diff --git a/include/uapi/linux/packet_diag.h b/include/uapi/linux/packet_diag.h
-index 0c5d5dd..349ddf0 100644
+index 0c5d5dd61b6ab..349ddf0a96af5 100644
 --- a/include/uapi/linux/packet_diag.h
 +++ b/include/uapi/linux/packet_diag.h
 @@ -1,3 +1,4 @@
@@ -4151,7 +4151,7 @@ index 0c5d5dd..349ddf0 100644
  #define __PACKET_DIAG_H__
  
 diff --git a/include/uapi/linux/param.h b/include/uapi/linux/param.h
-index 092e92f..94e0c57 100644
+index 092e92f67b500..94e0c57a75b7a 100644
 --- a/include/uapi/linux/param.h
 +++ b/include/uapi/linux/param.h
 @@ -1,3 +1,4 @@
@@ -4160,7 +4160,7 @@ index 092e92f..94e0c57 100644
  #define _LINUX_PARAM_H
  
 diff --git a/include/uapi/linux/pfkeyv2.h b/include/uapi/linux/pfkeyv2.h
-index ada7f01..d65b117 100644
+index ada7f0171cccd..d65b117852604 100644
 --- a/include/uapi/linux/pfkeyv2.h
 +++ b/include/uapi/linux/pfkeyv2.h
 @@ -1,3 +1,4 @@
@@ -4169,7 +4169,7 @@ index ada7f01..d65b117 100644
   * do not make arbitrary modifications or else this header
   * file will not be compliant.
 diff --git a/include/uapi/linux/pkt_cls.h b/include/uapi/linux/pkt_cls.h
-index d5e2bf6..b451225 100644
+index d5e2bf68d0d40..b4512254036b9 100644
 --- a/include/uapi/linux/pkt_cls.h
 +++ b/include/uapi/linux/pkt_cls.h
 @@ -1,3 +1,4 @@
@@ -4220,7 +4220,7 @@ index d5e2bf6..b451225 100644
  enum {
  	TCF_EM_PROG_TC
 diff --git a/include/uapi/linux/pkt_sched.h b/include/uapi/linux/pkt_sched.h
-index 099bf55..d9cc9dc 100644
+index 099bf5528fed3..d9cc9dc4f547c 100644
 --- a/include/uapi/linux/pkt_sched.h
 +++ b/include/uapi/linux/pkt_sched.h
 @@ -1,3 +1,4 @@
@@ -4466,7 +4466,7 @@ index 099bf55..d9cc9dc 100644
 +
  #endif
 diff --git a/include/uapi/linux/posix_types.h b/include/uapi/linux/posix_types.h
-index 988f76e..9a7a740 100644
+index 988f76e636e36..9a7a740b35a2c 100644
 --- a/include/uapi/linux/posix_types.h
 +++ b/include/uapi/linux/posix_types.h
 @@ -1,3 +1,4 @@
@@ -4475,7 +4475,7 @@ index 988f76e..9a7a740 100644
  #define _LINUX_POSIX_TYPES_H
  
 diff --git a/include/uapi/linux/rtnetlink.h b/include/uapi/linux/rtnetlink.h
-index 813e9e0..c3a7d8e 100644
+index 813e9e0767d33..c3a7d8ecc7b97 100644
 --- a/include/uapi/linux/rtnetlink.h
 +++ b/include/uapi/linux/rtnetlink.h
 @@ -1,3 +1,4 @@
@@ -4545,7 +4545,7 @@ index 813e9e0..c3a7d8e 100644
  };
  
 diff --git a/include/uapi/linux/sctp.h b/include/uapi/linux/sctp.h
-index fec24c4..dd164d7 100644
+index fec24c41405b9..dd164d7f4f41a 100644
 --- a/include/uapi/linux/sctp.h
 +++ b/include/uapi/linux/sctp.h
 @@ -1,3 +1,4 @@
@@ -4706,7 +4706,7 @@ index fec24c4..dd164d7 100644
 +
  #endif /* _SCTP_H */
 diff --git a/include/uapi/linux/seg6.h b/include/uapi/linux/seg6.h
-index 0715279..329163e 100644
+index 07152792e61d2..329163e4a08d2 100644
 --- a/include/uapi/linux/seg6.h
 +++ b/include/uapi/linux/seg6.h
 @@ -1,3 +1,4 @@
@@ -4727,7 +4727,7 @@ index 0715279..329163e 100644
  	struct in6_addr segments[0];
  };
 diff --git a/include/uapi/linux/seg6_genl.h b/include/uapi/linux/seg6_genl.h
-index 99382f9..0c23052 100644
+index 99382f94fa0a3..0c230524e0a15 100644
 --- a/include/uapi/linux/seg6_genl.h
 +++ b/include/uapi/linux/seg6_genl.h
 @@ -1,3 +1,4 @@
@@ -4736,7 +4736,7 @@ index 99382f9..0c23052 100644
  #define _LINUX_SEG6_GENL_H
  
 diff --git a/include/uapi/linux/seg6_hmac.h b/include/uapi/linux/seg6_hmac.h
-index 704f93e..3fb3412 100644
+index 704f93e80b417..3fb3412e1eb2d 100644
 --- a/include/uapi/linux/seg6_hmac.h
 +++ b/include/uapi/linux/seg6_hmac.h
 @@ -1,3 +1,4 @@
@@ -4745,7 +4745,7 @@ index 704f93e..3fb3412 100644
  #define _LINUX_SEG6_HMAC_H
  
 diff --git a/include/uapi/linux/seg6_iptunnel.h b/include/uapi/linux/seg6_iptunnel.h
-index a5dc05a..3004e98 100644
+index a5dc05a1cbba3..3004e982c23dc 100644
 --- a/include/uapi/linux/seg6_iptunnel.h
 +++ b/include/uapi/linux/seg6_iptunnel.h
 @@ -1,3 +1,4 @@
@@ -4754,7 +4754,7 @@ index a5dc05a..3004e98 100644
   *  SR-IPv6 implementation
   *
 diff --git a/include/uapi/linux/seg6_local.h b/include/uapi/linux/seg6_local.h
-index 76b90d6..5312de8 100644
+index 76b90d60c7ea7..5312de80bcfae 100644
 --- a/include/uapi/linux/seg6_local.h
 +++ b/include/uapi/linux/seg6_local.h
 @@ -25,6 +25,7 @@ enum {
@@ -4788,7 +4788,7 @@ index 76b90d6..5312de8 100644
 +
  #endif
 diff --git a/include/uapi/linux/sock_diag.h b/include/uapi/linux/sock_diag.h
-index 901231e..a69cf20 100644
+index 901231e648963..a69cf20ff174a 100644
 --- a/include/uapi/linux/sock_diag.h
 +++ b/include/uapi/linux/sock_diag.h
 @@ -1,3 +1,4 @@
@@ -4797,7 +4797,7 @@ index 901231e..a69cf20 100644
  #define __SOCK_DIAG_H__
  
 diff --git a/include/uapi/linux/socket.h b/include/uapi/linux/socket.h
-index 8c1e501..268b948 100644
+index 8c1e5017741d1..268b9482461a4 100644
 --- a/include/uapi/linux/socket.h
 +++ b/include/uapi/linux/socket.h
 @@ -1,3 +1,4 @@
@@ -4806,7 +4806,7 @@ index 8c1e501..268b948 100644
  #define _LINUX_SOCKET_H
  
 diff --git a/include/uapi/linux/sockios.h b/include/uapi/linux/sockios.h
-index 79d029d..d393e9e 100644
+index 79d029d253100..d393e9ed39642 100644
 --- a/include/uapi/linux/sockios.h
 +++ b/include/uapi/linux/sockios.h
 @@ -1,3 +1,4 @@
@@ -4815,7 +4815,7 @@ index 79d029d..d393e9e 100644
   * INET		An implementation of the TCP/IP protocol suite for the LINUX
   *		operating system.  INET is implemented using the  BSD Socket
 diff --git a/include/uapi/linux/stddef.h b/include/uapi/linux/stddef.h
-index 4bb69de..23e025f 100644
+index 4bb69decd468b..23e025fec0419 100644
 --- a/include/uapi/linux/stddef.h
 +++ b/include/uapi/linux/stddef.h
 @@ -1,3 +1,4 @@
@@ -4824,7 +4824,7 @@ index 4bb69de..23e025f 100644
  
  #ifndef __always_inline
 diff --git a/include/uapi/linux/sysinfo.h b/include/uapi/linux/sysinfo.h
-index 934335a..435d5c2 100644
+index 934335a22522c..435d5c23f0c0e 100644
 --- a/include/uapi/linux/sysinfo.h
 +++ b/include/uapi/linux/sysinfo.h
 @@ -1,3 +1,4 @@
@@ -4833,7 +4833,7 @@ index 934335a..435d5c2 100644
  #define _LINUX_SYSINFO_H
  
 diff --git a/include/uapi/linux/tc_act/tc_bpf.h b/include/uapi/linux/tc_act/tc_bpf.h
-index 8dc2ac0..6e89a5d 100644
+index 8dc2ac05eecf0..6e89a5df49a46 100644
 --- a/include/uapi/linux/tc_act/tc_bpf.h
 +++ b/include/uapi/linux/tc_act/tc_bpf.h
 @@ -1,3 +1,4 @@
@@ -4842,7 +4842,7 @@ index 8dc2ac0..6e89a5d 100644
   * Copyright (c) 2015 Jiri Pirko <jiri@resnulli.us>
   *
 diff --git a/include/uapi/linux/tc_act/tc_connmark.h b/include/uapi/linux/tc_act/tc_connmark.h
-index 62a5e94..80caa47 100644
+index 62a5e944c5548..80caa47b19334 100644
 --- a/include/uapi/linux/tc_act/tc_connmark.h
 +++ b/include/uapi/linux/tc_act/tc_connmark.h
 @@ -1,3 +1,4 @@
@@ -4851,7 +4851,7 @@ index 62a5e94..80caa47 100644
  #define __UAPI_TC_CONNMARK_H
  
 diff --git a/include/uapi/linux/tc_act/tc_csum.h b/include/uapi/linux/tc_act/tc_csum.h
-index a11bb35..0ecf4d2 100644
+index a11bb355dbfb2..0ecf4d29e2f31 100644
 --- a/include/uapi/linux/tc_act/tc_csum.h
 +++ b/include/uapi/linux/tc_act/tc_csum.h
 @@ -1,3 +1,4 @@
@@ -4860,7 +4860,7 @@ index a11bb35..0ecf4d2 100644
  #define __LINUX_TC_CSUM_H
  
 diff --git a/include/uapi/linux/tc_act/tc_defact.h b/include/uapi/linux/tc_act/tc_defact.h
-index d2a3abb..e3ecd8b 100644
+index d2a3abb77aebd..e3ecd8bf37de2 100644
 --- a/include/uapi/linux/tc_act/tc_defact.h
 +++ b/include/uapi/linux/tc_act/tc_defact.h
 @@ -1,3 +1,4 @@
@@ -4869,7 +4869,7 @@ index d2a3abb..e3ecd8b 100644
  #define __LINUX_TC_DEF_H
  
 diff --git a/include/uapi/linux/tc_act/tc_gact.h b/include/uapi/linux/tc_act/tc_gact.h
-index 70b536a..94273c3 100644
+index 70b536a8f8b26..94273c3b81b0b 100644
 --- a/include/uapi/linux/tc_act/tc_gact.h
 +++ b/include/uapi/linux/tc_act/tc_gact.h
 @@ -1,3 +1,4 @@
@@ -4878,7 +4878,7 @@ index 70b536a..94273c3 100644
  #define __LINUX_TC_GACT_H
  
 diff --git a/include/uapi/linux/tc_act/tc_ife.h b/include/uapi/linux/tc_act/tc_ife.h
-index 7c28178..2f48490 100644
+index 7c2817866c97e..2f48490ef3867 100644
 --- a/include/uapi/linux/tc_act/tc_ife.h
 +++ b/include/uapi/linux/tc_act/tc_ife.h
 @@ -1,3 +1,4 @@
@@ -4887,7 +4887,7 @@ index 7c28178..2f48490 100644
  #define __UAPI_TC_IFE_H
  
 diff --git a/include/uapi/linux/tc_act/tc_ipt.h b/include/uapi/linux/tc_act/tc_ipt.h
-index 7c6e155..b743c8b 100644
+index 7c6e155dd981d..b743c8bddd13d 100644
 --- a/include/uapi/linux/tc_act/tc_ipt.h
 +++ b/include/uapi/linux/tc_act/tc_ipt.h
 @@ -1,3 +1,4 @@
@@ -4896,7 +4896,7 @@ index 7c6e155..b743c8b 100644
  #define __LINUX_TC_IPT_H
  
 diff --git a/include/uapi/linux/tc_act/tc_mirred.h b/include/uapi/linux/tc_act/tc_mirred.h
-index 3d7a2b3..5dd671c 100644
+index 3d7a2b352a62c..5dd671cf57765 100644
 --- a/include/uapi/linux/tc_act/tc_mirred.h
 +++ b/include/uapi/linux/tc_act/tc_mirred.h
 @@ -1,3 +1,4 @@
@@ -4928,7 +4928,7 @@ index 3d7a2b3..5dd671c 100644
 +
  #endif
 diff --git a/include/uapi/linux/tc_act/tc_nat.h b/include/uapi/linux/tc_act/tc_nat.h
-index 923457c..086be84 100644
+index 923457c9ebf0c..086be842587bd 100644
 --- a/include/uapi/linux/tc_act/tc_nat.h
 +++ b/include/uapi/linux/tc_act/tc_nat.h
 @@ -1,3 +1,4 @@
@@ -4937,7 +4937,7 @@ index 923457c..086be84 100644
  #define __LINUX_TC_NAT_H
  
 diff --git a/include/uapi/linux/tc_act/tc_pedit.h b/include/uapi/linux/tc_act/tc_pedit.h
-index 143d2b3..24ec792 100644
+index 143d2b31a3166..24ec792dacc18 100644
 --- a/include/uapi/linux/tc_act/tc_pedit.h
 +++ b/include/uapi/linux/tc_act/tc_pedit.h
 @@ -1,3 +1,4 @@
@@ -4995,7 +4995,7 @@ index 143d2b3..24ec792 100644
  
  #endif
 diff --git a/include/uapi/linux/tc_act/tc_sample.h b/include/uapi/linux/tc_act/tc_sample.h
-index edc9058..bd7e9f0 100644
+index edc9058bb30d3..bd7e9f03abd2e 100644
 --- a/include/uapi/linux/tc_act/tc_sample.h
 +++ b/include/uapi/linux/tc_act/tc_sample.h
 @@ -1,3 +1,4 @@
@@ -5004,7 +5004,7 @@ index edc9058..bd7e9f0 100644
  #define __LINUX_TC_SAMPLE_H
  
 diff --git a/include/uapi/linux/tc_act/tc_skbedit.h b/include/uapi/linux/tc_act/tc_skbedit.h
-index 2884425..6de6071 100644
+index 2884425738ce7..6de6071ebed60 100644
 --- a/include/uapi/linux/tc_act/tc_skbedit.h
 +++ b/include/uapi/linux/tc_act/tc_skbedit.h
 @@ -1,3 +1,4 @@
@@ -5029,7 +5029,7 @@ index 2884425..6de6071 100644
  };
  #define TCA_SKBEDIT_MAX (__TCA_SKBEDIT_MAX - 1)
 diff --git a/include/uapi/linux/tc_act/tc_skbmod.h b/include/uapi/linux/tc_act/tc_skbmod.h
-index 10fc07d..38c072f 100644
+index 10fc07da6c699..38c072f66f2fc 100644
 --- a/include/uapi/linux/tc_act/tc_skbmod.h
 +++ b/include/uapi/linux/tc_act/tc_skbmod.h
 @@ -1,3 +1,4 @@
@@ -5038,7 +5038,7 @@ index 10fc07d..38c072f 100644
   * Copyright (c) 2016, Jamal Hadi Salim
   *
 diff --git a/include/uapi/linux/tc_act/tc_tunnel_key.h b/include/uapi/linux/tc_act/tc_tunnel_key.h
-index afcd4be..be384d6 100644
+index afcd4be953e27..be384d63e1b56 100644
 --- a/include/uapi/linux/tc_act/tc_tunnel_key.h
 +++ b/include/uapi/linux/tc_act/tc_tunnel_key.h
 @@ -1,3 +1,4 @@
@@ -5085,7 +5085,7 @@ index afcd4be..be384d6 100644
 +
  #endif
 diff --git a/include/uapi/linux/tc_act/tc_vlan.h b/include/uapi/linux/tc_act/tc_vlan.h
-index bddb272..0d7b5fd 100644
+index bddb272b843f5..0d7b5fd6605b0 100644
 --- a/include/uapi/linux/tc_act/tc_vlan.h
 +++ b/include/uapi/linux/tc_act/tc_vlan.h
 @@ -1,3 +1,4 @@
@@ -5094,7 +5094,7 @@ index bddb272..0d7b5fd 100644
   * Copyright (c) 2014 Jiri Pirko <jiri@resnulli.us>
   *
 diff --git a/include/uapi/linux/tc_ematch/tc_em_cmp.h b/include/uapi/linux/tc_ematch/tc_em_cmp.h
-index f34bb1b..2549d9d 100644
+index f34bb1bae083e..2549d9d6e0310 100644
 --- a/include/uapi/linux/tc_ematch/tc_em_cmp.h
 +++ b/include/uapi/linux/tc_ematch/tc_em_cmp.h
 @@ -1,3 +1,4 @@
@@ -5104,7 +5104,7 @@ index f34bb1b..2549d9d 100644
  
 diff --git a/include/uapi/linux/tc_ematch/tc_em_ipt.h b/include/uapi/linux/tc_ematch/tc_em_ipt.h
 new file mode 100644
-index 0000000..49a6553
+index 0000000000000..49a65530992c1
 --- /dev/null
 +++ b/include/uapi/linux/tc_ematch/tc_em_ipt.h
 @@ -0,0 +1,20 @@
@@ -5129,7 +5129,7 @@ index 0000000..49a6553
 +
 +#endif
 diff --git a/include/uapi/linux/tc_ematch/tc_em_meta.h b/include/uapi/linux/tc_ematch/tc_em_meta.h
-index b11f8ce..cf30b5b 100644
+index b11f8ce2d3c0a..cf30b5bc4eaf2 100644
 --- a/include/uapi/linux/tc_ematch/tc_em_meta.h
 +++ b/include/uapi/linux/tc_ematch/tc_em_meta.h
 @@ -1,3 +1,4 @@
@@ -5138,7 +5138,7 @@ index b11f8ce..cf30b5b 100644
  #define __LINUX_TC_EM_META_H
  
 diff --git a/include/uapi/linux/tc_ematch/tc_em_nbyte.h b/include/uapi/linux/tc_ematch/tc_em_nbyte.h
-index 7172cfb..c76333f 100644
+index 7172cfb999c15..c76333f7f6f26 100644
 --- a/include/uapi/linux/tc_ematch/tc_em_nbyte.h
 +++ b/include/uapi/linux/tc_ematch/tc_em_nbyte.h
 @@ -1,3 +1,4 @@
@@ -5147,7 +5147,7 @@ index 7172cfb..c76333f 100644
  #define __LINUX_TC_EM_NBYTE_H
  
 diff --git a/include/uapi/linux/tcp.h b/include/uapi/linux/tcp.h
-index 8edad3f..2e766cf 100644
+index 8edad3f942686..2e766cf303fbe 100644
 --- a/include/uapi/linux/tcp.h
 +++ b/include/uapi/linux/tcp.h
 @@ -1,3 +1,4 @@
@@ -5203,7 +5203,7 @@ index 8edad3f..2e766cf 100644
 +};
  #endif /* _LINUX_TCP_H */
 diff --git a/include/uapi/linux/tcp_metrics.h b/include/uapi/linux/tcp_metrics.h
-index 80ad90d..7cb4a17 100644
+index 80ad90d0cfc23..7cb4a172feeda 100644
 --- a/include/uapi/linux/tcp_metrics.h
 +++ b/include/uapi/linux/tcp_metrics.h
 @@ -1,3 +1,4 @@
@@ -5212,7 +5212,7 @@ index 80ad90d..7cb4a17 100644
  
  #ifndef _LINUX_TCP_METRICS_H
 diff --git a/include/uapi/linux/tipc.h b/include/uapi/linux/tipc.h
-index 924fb5c..7a166a0 100644
+index 924fb5cf1d468..7a166a0f93802 100644
 --- a/include/uapi/linux/tipc.h
 +++ b/include/uapi/linux/tipc.h
 @@ -1,3 +1,4 @@
@@ -5491,7 +5491,7 @@ index 924fb5c..7a166a0 100644
 +
  #endif
 diff --git a/include/uapi/linux/tipc_netlink.h b/include/uapi/linux/tipc_netlink.h
-index f9edd20..0ebe02e 100644
+index f9edd20fe9ba8..0ebe02ef1a86b 100644
 --- a/include/uapi/linux/tipc_netlink.h
 +++ b/include/uapi/linux/tipc_netlink.h
 @@ -1,3 +1,4 @@
@@ -5572,7 +5572,7 @@ index f9edd20..0ebe02e 100644
  	TIPC_NLA_PROP_MAX = __TIPC_NLA_PROP_MAX - 1
 diff --git a/include/uapi/linux/tipc_sockets_diag.h b/include/uapi/linux/tipc_sockets_diag.h
 new file mode 100644
-index 0000000..21b766e
+index 0000000000000..21b766ec7e202
 --- /dev/null
 +++ b/include/uapi/linux/tipc_sockets_diag.h
 @@ -0,0 +1,17 @@
@@ -5594,7 +5594,7 @@ index 0000000..21b766e
 +};
 +#endif /* __TIPC_SOCKETS_DIAG_H__ */
 diff --git a/include/uapi/linux/types.h b/include/uapi/linux/types.h
-index c640657..999cb0f 100644
+index c640657a7da33..999cb0fa88ebd 100644
 --- a/include/uapi/linux/types.h
 +++ b/include/uapi/linux/types.h
 @@ -1,3 +1,4 @@
@@ -5611,7 +5611,7 @@ index c640657..999cb0f 100644
  #endif /*  __ASSEMBLY__ */
  #endif /* _LINUX_TYPES_H */
 diff --git a/include/uapi/linux/unix_diag.h b/include/uapi/linux/unix_diag.h
-index 1eb0b8d..5c502fd 100644
+index 1eb0b8dd18308..5c502fdf7a42c 100644
 --- a/include/uapi/linux/unix_diag.h
 +++ b/include/uapi/linux/unix_diag.h
 @@ -1,3 +1,4 @@
@@ -5620,7 +5620,7 @@ index 1eb0b8d..5c502fd 100644
  #define __UNIX_DIAG_H__
  
 diff --git a/include/uapi/linux/veth.h b/include/uapi/linux/veth.h
-index 3354c1e..52b58e5 100644
+index 3354c1eb424e6..52b58e587e236 100644
 --- a/include/uapi/linux/veth.h
 +++ b/include/uapi/linux/veth.h
 @@ -1,3 +1,4 @@
@@ -5629,7 +5629,7 @@ index 3354c1e..52b58e5 100644
  #define __NET_VETH_H_
  
 diff --git a/include/uapi/linux/vm_sockets_diag.h b/include/uapi/linux/vm_sockets_diag.h
-index a732a6f..6da42f9 100644
+index a732a6f591b97..6da42f99a425b 100644
 --- a/include/uapi/linux/vm_sockets_diag.h
 +++ b/include/uapi/linux/vm_sockets_diag.h
 @@ -1,3 +1,4 @@
@@ -5638,7 +5638,7 @@ index a732a6f..6da42f9 100644
  
  #ifndef __VM_SOCKETS_DIAG_H__
 diff --git a/include/uapi/linux/xfrm.h b/include/uapi/linux/xfrm.h
-index 5790293..93fb192 100644
+index 5790293b7fc46..93fb1920101a2 100644
 --- a/include/uapi/linux/xfrm.h
 +++ b/include/uapi/linux/xfrm.h
 @@ -1,3 +1,4 @@
@@ -5647,5 +5647,5 @@ index 5790293..93fb192 100644
  #define _LINUX_XFRM_H
  
 -- 
-1.8.3.1
+2.21.0
 
diff --git a/SOURCES/0048-tc-flower-Add-match-on-encapsulating-tos-ttl.patch b/SOURCES/0048-tc-flower-Add-match-on-encapsulating-tos-ttl.patch
index 7c608ff..89cadb5 100644
--- a/SOURCES/0048-tc-flower-Add-match-on-encapsulating-tos-ttl.patch
+++ b/SOURCES/0048-tc-flower-Add-match-on-encapsulating-tos-ttl.patch
@@ -34,7 +34,7 @@ Date:   Thu Jul 19 14:02:15 2018 +0300
  2 files changed, 40 insertions(+), 1 deletion(-)
 
 diff --git a/man/man8/tc-flower.8 b/man/man8/tc-flower.8
-index be46f02..af19708 100644
+index be46f0278b4ff..af19708d9649e 100644
 --- a/man/man8/tc-flower.8
 +++ b/man/man8/tc-flower.8
 @@ -57,6 +57,10 @@ flower \- flow based traffic control filter
@@ -73,7 +73,7 @@ index be46f02..af19708 100644
  .BI ip_flags " IP_FLAGS"
  .I IP_FLAGS
 diff --git a/tc/f_flower.c b/tc/f_flower.c
-index 5be693a..5f5236c 100644
+index 5be693ab7f6af..5f5236ca523f8 100644
 --- a/tc/f_flower.c
 +++ b/tc/f_flower.c
 @@ -70,6 +70,8 @@ static void explain(void)
@@ -125,5 +125,5 @@ index 5be693a..5f5236c 100644
  				    FLOWER_IP_FLAGS,
  				    tb[TCA_FLOWER_KEY_FLAGS],
 -- 
-1.8.3.1
+2.21.0
 
diff --git a/SOURCES/0049-tc-act_tunnel_key-Enable-setup-of-tos-and-ttl.patch b/SOURCES/0049-tc-act_tunnel_key-Enable-setup-of-tos-and-ttl.patch
index c3a3eca..536ccac 100644
--- a/SOURCES/0049-tc-act_tunnel_key-Enable-setup-of-tos-and-ttl.patch
+++ b/SOURCES/0049-tc-act_tunnel_key-Enable-setup-of-tos-and-ttl.patch
@@ -32,12 +32,12 @@ Date:   Thu Jul 19 14:02:14 2018 +0300
     Acked-by: Jiri Pirko <jiri@mellanox.com>
     Signed-off-by: David Ahern <dsahern@gmail.com>
 ---
- man/man8/tc-tunnel_key.8 |  8 ++++++++
- tc/m_tunnel_key.c        | 49 ++++++++++++++++++++++++++++++++++++++++++++++++
+ man/man8/tc-tunnel_key.8 |  8 +++++++
+ tc/m_tunnel_key.c        | 49 ++++++++++++++++++++++++++++++++++++++++
  2 files changed, 57 insertions(+)
 
 diff --git a/man/man8/tc-tunnel_key.8 b/man/man8/tc-tunnel_key.8
-index 52fa585..5e93c59 100644
+index 52fa585a75c8f..5e93c59d49465 100644
 --- a/man/man8/tc-tunnel_key.8
 +++ b/man/man8/tc-tunnel_key.8
 @@ -16,6 +16,8 @@ tunnel_key - Tunnel metadata manipulation
@@ -63,7 +63,7 @@ index 52fa585..5e93c59 100644
  .SH EXAMPLES
  The following example encapsulates incoming ICMP packets on eth0 into a vxlan
 diff --git a/tc/m_tunnel_key.c b/tc/m_tunnel_key.c
-index acbcfc1..60fd1c4 100644
+index acbcfc15cda76..60fd1c464e531 100644
 --- a/tc/m_tunnel_key.c
 +++ b/tc/m_tunnel_key.c
 @@ -80,6 +80,22 @@ static int tunnel_key_parse_dst_port(char *str, int type, struct nlmsghdr *n)
@@ -144,5 +144,5 @@ index acbcfc1..60fd1c4 100644
  	}
  	fprintf(f, " %s", action_n2a(parm->action));
 -- 
-1.8.3.1
+2.21.0
 
diff --git a/SOURCES/0050-iproute-Abort-if-nexthop-cannot-be-parsed.patch b/SOURCES/0050-iproute-Abort-if-nexthop-cannot-be-parsed.patch
index 14774b6..309a53f 100644
--- a/SOURCES/0050-iproute-Abort-if-nexthop-cannot-be-parsed.patch
+++ b/SOURCES/0050-iproute-Abort-if-nexthop-cannot-be-parsed.patch
@@ -32,7 +32,7 @@ Date:   Wed Apr 11 11:43:11 2018 +0200
  1 file changed, 4 insertions(+), 1 deletion(-)
 
 diff --git a/ip/iproute.c b/ip/iproute.c
-index 35fdce8..759032d 100644
+index 35fdce8a64f35..759032db454ad 100644
 --- a/ip/iproute.c
 +++ b/ip/iproute.c
 @@ -817,7 +817,10 @@ static int parse_nexthops(struct nlmsghdr *n, struct rtmsg *r,
@@ -48,5 +48,5 @@ index 35fdce8..759032d 100644
  	}
  
 -- 
-1.8.3.1
+2.21.0
 
diff --git a/SOURCES/0051-ip-route-Fix-segfault-with-many-nexthops.patch b/SOURCES/0051-ip-route-Fix-segfault-with-many-nexthops.patch
index 07109f0..7622ced 100644
--- a/SOURCES/0051-ip-route-Fix-segfault-with-many-nexthops.patch
+++ b/SOURCES/0051-ip-route-Fix-segfault-with-many-nexthops.patch
@@ -37,12 +37,12 @@ Date:   Thu Sep 6 15:31:51 2018 +0200
     Signed-off-by: Phil Sutter <phil@nwl.cc>
     Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
 ---
- ip/iproute.c          | 43 +++++++++++++++++++++--------------
- ip/iproute_lwtunnel.c | 63 ++++++++++++++++++++++++++++++++-------------------
+ ip/iproute.c          | 43 +++++++++++++++++------------
+ ip/iproute_lwtunnel.c | 63 +++++++++++++++++++++++++++----------------
  2 files changed, 66 insertions(+), 40 deletions(-)
 
 diff --git a/ip/iproute.c b/ip/iproute.c
-index 759032d..d4db035 100644
+index 759032db454ad..d4db035fc7b24 100644
 --- a/ip/iproute.c
 +++ b/ip/iproute.c
 @@ -721,7 +721,7 @@ int print_route(const struct sockaddr_nl *who, struct nlmsghdr *n, void *arg)
@@ -156,7 +156,7 @@ index 759032d..d4db035 100644
  	if (req.r.rtm_family == AF_UNSPEC)
  		req.r.rtm_family = AF_INET;
 diff --git a/ip/iproute_lwtunnel.c b/ip/iproute_lwtunnel.c
-index 0fa1cab..1a68912 100644
+index 0fa1cab0a790f..1a6891267d2e1 100644
 --- a/ip/iproute_lwtunnel.c
 +++ b/ip/iproute_lwtunnel.c
 @@ -255,8 +255,9 @@ static int parse_encap_mpls(struct rtattr *rta, size_t len,
@@ -384,5 +384,5 @@ index 0fa1cab..1a68912 100644
 +	return ret;
  }
 -- 
-1.8.3.1
+2.21.0
 
diff --git a/SOURCES/0052-man-ip-route.8-Document-nexthop-limit.patch b/SOURCES/0052-man-ip-route.8-Document-nexthop-limit.patch
index cc483b9..ff69cfb 100644
--- a/SOURCES/0052-man-ip-route.8-Document-nexthop-limit.patch
+++ b/SOURCES/0052-man-ip-route.8-Document-nexthop-limit.patch
@@ -22,7 +22,7 @@ Date:   Tue Nov 13 16:55:13 2018 +0100
  1 file changed, 9 insertions(+)
 
 diff --git a/man/man8/ip-route.8.in b/man/man8/ip-route.8.in
-index d6e0664..d9a5477 100644
+index d6e06649a4640..d9a547748c017 100644
 --- a/man/man8/ip-route.8.in
 +++ b/man/man8/ip-route.8.in
 @@ -548,6 +548,15 @@ argument lists:
@@ -42,5 +42,5 @@ index d6e0664..d9a5477 100644
  .BI scope " SCOPE_VAL"
  the scope of the destinations covered by the route prefix.
 -- 
-1.8.3.1
+2.21.0
 
diff --git a/SOURCES/0053-ip-route-Fix-nexthop-encap-parsing.patch b/SOURCES/0053-ip-route-Fix-nexthop-encap-parsing.patch
index ff535eb..79083e7 100644
--- a/SOURCES/0053-ip-route-Fix-nexthop-encap-parsing.patch
+++ b/SOURCES/0053-ip-route-Fix-nexthop-encap-parsing.patch
@@ -32,7 +32,7 @@ Date:   Tue Nov 13 13:39:04 2018 +0100
  1 file changed, 5 insertions(+), 5 deletions(-)
 
 diff --git a/ip/iproute_lwtunnel.c b/ip/iproute_lwtunnel.c
-index 1a68912..b6f08f0 100644
+index 1a6891267d2e1..b6f08f073ef02 100644
 --- a/ip/iproute_lwtunnel.c
 +++ b/ip/iproute_lwtunnel.c
 @@ -343,7 +343,7 @@ static int parse_encap_ila(struct rtattr *rta, size_t len,
@@ -81,5 +81,5 @@ index 1a68912..b6f08f0 100644
  	*argcp = argc;
  	*argvp = argv;
 -- 
-1.8.3.1
+2.21.0
 
diff --git a/SOURCES/0054-ip-link-Fix-listing-of-alias-interfaces.patch b/SOURCES/0054-ip-link-Fix-listing-of-alias-interfaces.patch
index 534b391..04599bf 100644
--- a/SOURCES/0054-ip-link-Fix-listing-of-alias-interfaces.patch
+++ b/SOURCES/0054-ip-link-Fix-listing-of-alias-interfaces.patch
@@ -41,7 +41,7 @@ Date:   Thu Feb 7 10:18:16 2019 +0100
  1 file changed, 1 insertion(+)
 
 diff --git a/ip/ipaddress.c b/ip/ipaddress.c
-index 7492075..14e9e22 100644
+index 7492075687a9e..14e9e224dfa87 100644
 --- a/ip/ipaddress.c
 +++ b/ip/ipaddress.c
 @@ -1707,6 +1707,7 @@ static int ipaddr_list_flush_or_save(int argc, char **argv, int action)
@@ -53,5 +53,5 @@ index 7492075..14e9e22 100644
  			perror("Cannot send link get request");
  			exit(1);
 -- 
-1.8.3.1
+2.21.0
 
diff --git a/SOURCES/0055-ip-Add-violation-counters-to-VF-statisctics.patch b/SOURCES/0055-ip-Add-violation-counters-to-VF-statisctics.patch
index 72fd54f..f2f993d 100644
--- a/SOURCES/0055-ip-Add-violation-counters-to-VF-statisctics.patch
+++ b/SOURCES/0055-ip-Add-violation-counters-to-VF-statisctics.patch
@@ -36,7 +36,7 @@ Date:   Sun Jul 22 13:31:12 2018 +0300
  1 file changed, 12 insertions(+), 2 deletions(-)
 
 diff --git a/ip/ipaddress.c b/ip/ipaddress.c
-index 14e9e22..44111a2 100644
+index 14e9e224dfa87..44111a27501a9 100644
 --- a/ip/ipaddress.c
 +++ b/ip/ipaddress.c
 @@ -471,21 +471,31 @@ static void print_vf_stats64(FILE *fp, struct rtattr *vfstats)
@@ -74,5 +74,5 @@ index 14e9e22..44111a2 100644
  
  static void print_link_stats64(FILE *fp, const struct rtnl_link_stats64 *s,
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0056-devlink-Add-support-for-devlink-resource-abstraction.patch b/SOURCES/0056-devlink-Add-support-for-devlink-resource-abstraction.patch
index 7f3c3c4..ac2ef23 100644
--- a/SOURCES/0056-devlink-Add-support-for-devlink-resource-abstraction.patch
+++ b/SOURCES/0056-devlink-Add-support-for-devlink-resource-abstraction.patch
@@ -629,5 +629,5 @@ index 5b529dc6e5211..b2adf55578449 100644
  	for (pos = (head)->first; pos ; pos = pos->next)
  
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0057-devlink-Add-support-for-hot-reload.patch b/SOURCES/0057-devlink-Add-support-for-hot-reload.patch
index 9c804b6..3cf8b6b 100644
--- a/SOURCES/0057-devlink-Add-support-for-hot-reload.patch
+++ b/SOURCES/0057-devlink-Add-support-for-hot-reload.patch
@@ -77,5 +77,5 @@ index 7f47b79450094..fc3939e564bc8 100644
  	pr_err("Command \"%s\" not found\n", dl_argv(dl));
  	return -ENOENT;
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0058-devlink-Update-man-pages-and-add-resource-man.patch b/SOURCES/0058-devlink-Update-man-pages-and-add-resource-man.patch
index 4fe2d73..54d574a 100644
--- a/SOURCES/0058-devlink-Update-man-pages-and-add-resource-man.patch
+++ b/SOURCES/0058-devlink-Update-man-pages-and-add-resource-man.patch
@@ -161,5 +161,5 @@ index a480766cbbdbe..6bf398274a612 100644
  
  .SH REPORTING BUGS
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0059-devlink-Add-param-command-support.patch b/SOURCES/0059-devlink-Add-param-command-support.patch
index e9a174d..0cf3144 100644
--- a/SOURCES/0059-devlink-Add-param-command-support.patch
+++ b/SOURCES/0059-devlink-Add-param-command-support.patch
@@ -700,5 +700,5 @@ index 7c749ddabaeeb..d985da172aa05 100644
  .RS 4
  Performs hot reload of specified devlink device.
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0060-man-ip-route.8-ssthresh-parameter-is-NUMBER.patch b/SOURCES/0060-man-ip-route.8-ssthresh-parameter-is-NUMBER.patch
index e1bbaf3..d2f9616 100644
--- a/SOURCES/0060-man-ip-route.8-ssthresh-parameter-is-NUMBER.patch
+++ b/SOURCES/0060-man-ip-route.8-ssthresh-parameter-is-NUMBER.patch
@@ -34,5 +34,5 @@ index d9a547748c017..0616cf01740f3 100644
  .IR REALM " ] [ "
  .B  rto_min
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0061-man-tc-vlan.8-Fix-for-incorrect-example.patch b/SOURCES/0061-man-tc-vlan.8-Fix-for-incorrect-example.patch
index b299549..52a94d4 100644
--- a/SOURCES/0061-man-tc-vlan.8-Fix-for-incorrect-example.patch
+++ b/SOURCES/0061-man-tc-vlan.8-Fix-for-incorrect-example.patch
@@ -35,5 +35,5 @@ index af3de1c54e343..a526f66b60b4c 100644
  .EE
  .RE
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0062-tc-flower-Add-support-for-QinQ.patch b/SOURCES/0062-tc-flower-Add-support-for-QinQ.patch
index f17a40b..a7fedc3 100644
--- a/SOURCES/0062-tc-flower-Add-support-for-QinQ.patch
+++ b/SOURCES/0062-tc-flower-Add-support-for-QinQ.patch
@@ -2,6 +2,9 @@ From dfbec1b67fc02a5af0d5cc30328b918902f20717 Mon Sep 17 00:00:00 2001
 From: Andrea Claudi <aclaudi@redhat.com>
 Date: Mon, 25 Mar 2019 12:19:05 +0100
 Subject: [PATCH] tc: flower: Add support for QinQ
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
 
 Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1642347
 Upstream Status: iproute2.git commit 1f0a5dfd388cd
@@ -267,5 +270,5 @@ index 5f5236ca523f8..40dcfbd687a20 100644
  			      tb[TCA_FLOWER_KEY_ETH_DST_MASK]);
  	flower_print_eth_addr(f, "src_mac", tb[TCA_FLOWER_KEY_ETH_SRC],
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0063-utils-Move-BIT-macro-to-common-header.patch b/SOURCES/0063-utils-Move-BIT-macro-to-common-header.patch
index 6bfee1c..0e33f52 100644
--- a/SOURCES/0063-utils-Move-BIT-macro-to-common-header.patch
+++ b/SOURCES/0063-utils-Move-BIT-macro-to-common-header.patch
@@ -57,5 +57,5 @@ index 8c12e1e2a60c2..d707a9dacdb85 100644
  
  #define BUILD_BUG_ON(cond) ((void)sizeof(char[1 - 2 * !!(cond)]))
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0064-lib-make-resolve_hosts-variable-common.patch b/SOURCES/0064-lib-make-resolve_hosts-variable-common.patch
index 529ffcb..503773b 100644
--- a/SOURCES/0064-lib-make-resolve_hosts-variable-common.patch
+++ b/SOURCES/0064-lib-make-resolve_hosts-variable-common.patch
@@ -133,5 +133,5 @@ index 360c9f11c235b..11a364fabbbea 100644
  int force;
  int ok;
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0065-json_writer-add-new-json-handlers-null-float-with-fo.patch b/SOURCES/0065-json_writer-add-new-json-handlers-null-float-with-fo.patch
index cb5f307..8cfc885 100644
--- a/SOURCES/0065-json_writer-add-new-json-handlers-null-float-with-fo.patch
+++ b/SOURCES/0065-json_writer-add-new-json-handlers-null-float-with-fo.patch
@@ -157,5 +157,5 @@ index 9fc05e96b605f..6b77d288cce2b 100644
  #ifdef TEST
  int main(int argc, char **argv)
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0066-rdma-Add-MR-resource-tracking-information.patch b/SOURCES/0066-rdma-Add-MR-resource-tracking-information.patch
index 76c39d0..5b7f00f 100644
--- a/SOURCES/0066-rdma-Add-MR-resource-tracking-information.patch
+++ b/SOURCES/0066-rdma-Add-MR-resource-tracking-information.patch
@@ -86,5 +86,5 @@ index 6b77d288cce2b..6aaa6b4170711 100644
  {
  	jsonw_name(self, prop);
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0067-rdma-add-infrastructure-for-RDMA-tool.patch b/SOURCES/0067-rdma-add-infrastructure-for-RDMA-tool.patch
index e30744c..880a108 100644
--- a/SOURCES/0067-rdma-add-infrastructure-for-RDMA-tool.patch
+++ b/SOURCES/0067-rdma-add-infrastructure-for-RDMA-tool.patch
@@ -5283,5 +5283,5 @@ index 0000000000000..069d44fece101
 +	return;
 +}
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0068-rdma-add-man-pages-for-RDMA-tool.patch b/SOURCES/0068-rdma-add-man-pages-for-RDMA-tool.patch
index ec21dae..359615a 100644
--- a/SOURCES/0068-rdma-add-man-pages-for-RDMA-tool.patch
+++ b/SOURCES/0068-rdma-add-man-pages-for-RDMA-tool.patch
@@ -418,5 +418,5 @@ index 0000000000000..b2b5aef866ab0
 +.SH AUTHOR
 +Leon Romanovsky <leonro@mellanox.com>
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0069-tc-f_flower-Add-support-for-matching-first-frag-pack.patch b/SOURCES/0069-tc-f_flower-Add-support-for-matching-first-frag-pack.patch
index 5c83a04..87a439c 100644
--- a/SOURCES/0069-tc-f_flower-Add-support-for-matching-first-frag-pack.patch
+++ b/SOURCES/0069-tc-f_flower-Add-support-for-matching-first-frag-pack.patch
@@ -68,5 +68,5 @@ index 40dcfbd687a20..e2c7daa0b8e03 100644
  
  static int flower_parse_matching_flags(char *str,
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0070-ss-enclose-IPv6-address-in-brackets.patch b/SOURCES/0070-ss-enclose-IPv6-address-in-brackets.patch
index 6c82bd1..b0e68ba 100644
--- a/SOURCES/0070-ss-enclose-IPv6-address-in-brackets.patch
+++ b/SOURCES/0070-ss-enclose-IPv6-address-in-brackets.patch
@@ -58,5 +58,5 @@ index c0cb33e96d9ec..86defc71fabc4 100644
  
  	if (ifindex) {
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0071-ip-address-Use-correct-max-attribute-value-in-print_.patch b/SOURCES/0071-ip-address-Use-correct-max-attribute-value-in-print_.patch
index 111178e..d7b7a23 100644
--- a/SOURCES/0071-ip-address-Use-correct-max-attribute-value-in-print_.patch
+++ b/SOURCES/0071-ip-address-Use-correct-max-attribute-value-in-print_.patch
@@ -36,5 +36,5 @@ index 44111a27501a9..bed2d3801809b 100644
  	/* RX stats */
  	fprintf(fp, "%s", _SL_);
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0072-examples-Some-shell-fixes-to-cbq.init.patch b/SOURCES/0072-examples-Some-shell-fixes-to-cbq.init.patch
index 116adf8..2b8edfb 100644
--- a/SOURCES/0072-examples-Some-shell-fixes-to-cbq.init.patch
+++ b/SOURCES/0072-examples-Some-shell-fixes-to-cbq.init.patch
@@ -127,5 +127,5 @@ index 1bc0d446f8983..66448d88f0053 100644
  
  	### compile the config if the cache is invalid
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0073-ifcfg-Quote-left-hand-side-of-expression.patch b/SOURCES/0073-ifcfg-Quote-left-hand-side-of-expression.patch
index 14be257..f807555 100644
--- a/SOURCES/0073-ifcfg-Quote-left-hand-side-of-expression.patch
+++ b/SOURCES/0073-ifcfg-Quote-left-hand-side-of-expression.patch
@@ -34,5 +34,5 @@ index 083d9df36742f..30a2dc49816cd 100644
  fi
  
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0074-tipc-node-Fix-socket-fd-check-in-cmd_node_get_addr.patch b/SOURCES/0074-tipc-node-Fix-socket-fd-check-in-cmd_node_get_addr.patch
index e7192ee..0644d59 100644
--- a/SOURCES/0074-tipc-node-Fix-socket-fd-check-in-cmd_node_get_addr.patch
+++ b/SOURCES/0074-tipc-node-Fix-socket-fd-check-in-cmd_node_get_addr.patch
@@ -34,5 +34,5 @@ index 201fe1a4df3bd..fe085aec9b4ac 100644
  		return -1;
  	}
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0075-iproute_lwtunnel-Argument-to-strerror-must-be-positi.patch b/SOURCES/0075-iproute_lwtunnel-Argument-to-strerror-must-be-positi.patch
index 97c715e..1eedb0f 100644
--- a/SOURCES/0075-iproute_lwtunnel-Argument-to-strerror-must-be-positi.patch
+++ b/SOURCES/0075-iproute_lwtunnel-Argument-to-strerror-must-be-positi.patch
@@ -31,5 +31,5 @@ index b6f08f073ef02..92ea2c87787ec 100644
  	}
  	rta_nest_end(rta, nest);
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0076-iproute_lwtunnel-csum_mode-value-checking-was-ineffe.patch b/SOURCES/0076-iproute_lwtunnel-csum_mode-value-checking-was-ineffe.patch
index df39404..89b7b36 100644
--- a/SOURCES/0076-iproute_lwtunnel-csum_mode-value-checking-was-ineffe.patch
+++ b/SOURCES/0076-iproute_lwtunnel-csum_mode-value-checking-was-ineffe.patch
@@ -57,5 +57,5 @@ index 92ea2c87787ec..5da3a1b488cbd 100644
  			argc--; argv++;
  		} else {
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0077-ss-Don-t-leak-fd-in-tcp_show_netlink_file.patch b/SOURCES/0077-ss-Don-t-leak-fd-in-tcp_show_netlink_file.patch
index 3ae8c4b..e1a8abf 100644
--- a/SOURCES/0077-ss-Don-t-leak-fd-in-tcp_show_netlink_file.patch
+++ b/SOURCES/0077-ss-Don-t-leak-fd-in-tcp_show_netlink_file.patch
@@ -103,5 +103,5 @@ index 86defc71fabc4..eb46e0c4b95fb 100644
  
  static int tcp_show(struct filter *f)
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0078-tc-em_ipset-Don-t-leak-sockfd-on-error-path.patch b/SOURCES/0078-tc-em_ipset-Don-t-leak-sockfd-on-error-path.patch
index 30c146e..8059e72 100644
--- a/SOURCES/0078-tc-em_ipset-Don-t-leak-sockfd-on-error-path.patch
+++ b/SOURCES/0078-tc-em_ipset-Don-t-leak-sockfd-on-error-path.patch
@@ -30,5 +30,5 @@ index fab975f5ea563..b59756515d239 100644
  	}
  
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0079-ipvrf-Fix-error-path-of-vrf_switch.patch b/SOURCES/0079-ipvrf-Fix-error-path-of-vrf_switch.patch
index ebf3bbc..03ac8ea 100644
--- a/SOURCES/0079-ipvrf-Fix-error-path-of-vrf_switch.patch
+++ b/SOURCES/0079-ipvrf-Fix-error-path-of-vrf_switch.patch
@@ -56,5 +56,5 @@ index 0f611b44b78ab..ae3b48fa81996 100644
  	return rc;
  }
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0080-ifstat-Fix-memleak-in-error-case.patch b/SOURCES/0080-ifstat-Fix-memleak-in-error-case.patch
index aac3573..aa0b6c8 100644
--- a/SOURCES/0080-ifstat-Fix-memleak-in-error-case.patch
+++ b/SOURCES/0080-ifstat-Fix-memleak-in-error-case.patch
@@ -34,5 +34,5 @@ index a853ee6d7e3b3..8fa354265a9a1 100644
  	}
  	memset(&n->rate, 0, sizeof(n->rate));
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0081-ifstat-Fix-memleak-in-dump_kern_db-for-json-output.patch b/SOURCES/0081-ifstat-Fix-memleak-in-dump_kern_db-for-json-output.patch
index 520bac0..09e1453 100644
--- a/SOURCES/0081-ifstat-Fix-memleak-in-dump_kern_db-for-json-output.patch
+++ b/SOURCES/0081-ifstat-Fix-memleak-in-dump_kern_db-for-json-output.patch
@@ -41,5 +41,5 @@ index 8fa354265a9a1..1be21703bf14c 100644
  
  static void dump_incr_db(FILE *fp)
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0082-ss-Fix-potential-memleak-in-unix_stats_print.patch b/SOURCES/0082-ss-Fix-potential-memleak-in-unix_stats_print.patch
index 57bec49..7e34ae3 100644
--- a/SOURCES/0082-ss-Fix-potential-memleak-in-unix_stats_print.patch
+++ b/SOURCES/0082-ss-Fix-potential-memleak-in-unix_stats_print.patch
@@ -35,5 +35,5 @@ index eb46e0c4b95fb..c97f05a4c7033 100644
  
  		if (u->rport) {
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0083-tipc-bearer-Fix-resource-leak-in-error-path.patch b/SOURCES/0083-tipc-bearer-Fix-resource-leak-in-error-path.patch
index db1fd9d..dae7399 100644
--- a/SOURCES/0083-tipc-bearer-Fix-resource-leak-in-error-path.patch
+++ b/SOURCES/0083-tipc-bearer-Fix-resource-leak-in-error-path.patch
@@ -39,5 +39,5 @@ index 810344f672af1..c3d4491f8f6ef 100644
  	}
  
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0084-devlink-No-need-for-this-self-assignment.patch b/SOURCES/0084-devlink-No-need-for-this-self-assignment.patch
index 7809ca6..9e74159 100644
--- a/SOURCES/0084-devlink-No-need-for-this-self-assignment.patch
+++ b/SOURCES/0084-devlink-No-need-for-this-self-assignment.patch
@@ -35,5 +35,5 @@ index 2000db81aabb0..ae295b5632e8c 100644
  		err = dl_argv_handle_both(dl, &opts->bus_name, &opts->dev_name,
  					  &opts->port_index, &handle_bit);
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0085-ipntable-No-need-to-check-and-assign-to-parms_rta.patch b/SOURCES/0085-ipntable-No-need-to-check-and-assign-to-parms_rta.patch
index 5d26732..9aca3e5 100644
--- a/SOURCES/0085-ipntable-No-need-to-check-and-assign-to-parms_rta.patch
+++ b/SOURCES/0085-ipntable-No-need-to-check-and-assign-to-parms_rta.patch
@@ -34,5 +34,5 @@ index 65063321c85f8..ae8c74ead2cb8 100644
  				      NDTPA_QUEUE_LEN, queue);
  			parms_change = 1;
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0086-iproute-Fix-for-missing-Oifs-display.patch b/SOURCES/0086-iproute-Fix-for-missing-Oifs-display.patch
index 32254db..cd19db3 100644
--- a/SOURCES/0086-iproute-Fix-for-missing-Oifs-display.patch
+++ b/SOURCES/0086-iproute-Fix-for-missing-Oifs-display.patch
@@ -51,5 +51,5 @@ index d4db035fc7b24..6ebc6214c45ee 100644
  				fprintf(fp, "%s\tnexthop ", _SL_);
  			if (nh->rtnh_len > sizeof(*nh)) {
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0087-lib-rt_names-Drop-dead-code-in-rtnl_rttable_n2a.patch b/SOURCES/0087-lib-rt_names-Drop-dead-code-in-rtnl_rttable_n2a.patch
index 4f32b28..9a87b4d 100644
--- a/SOURCES/0087-lib-rt_names-Drop-dead-code-in-rtnl_rttable_n2a.patch
+++ b/SOURCES/0087-lib-rt_names-Drop-dead-code-in-rtnl_rttable_n2a.patch
@@ -36,5 +36,5 @@ index 04c15ff5b15f8..e5efd78e6f810 100644
  		rtnl_rttable_initialize();
  	entry = rtnl_rttable_hash[id & 255];
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0088-ss-Skip-useless-check-in-parse_hostcond.patch b/SOURCES/0088-ss-Skip-useless-check-in-parse_hostcond.patch
index ce300e1..9f6807f 100644
--- a/SOURCES/0088-ss-Skip-useless-check-in-parse_hostcond.patch
+++ b/SOURCES/0088-ss-Skip-useless-check-in-parse_hostcond.patch
@@ -35,5 +35,5 @@ index c97f05a4c7033..38f4017e4a8c8 100644
  			if (get_dns_host(&a, addr, fam)) {
  				fprintf(stderr, "Error: an inet prefix is expected rather than \"%s\".\n", addr);
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0089-ss-Drop-useless-assignment.patch b/SOURCES/0089-ss-Drop-useless-assignment.patch
index c406ed9..945ad89 100644
--- a/SOURCES/0089-ss-Drop-useless-assignment.patch
+++ b/SOURCES/0089-ss-Drop-useless-assignment.patch
@@ -32,5 +32,5 @@ index 38f4017e4a8c8..cc38fc499c210 100644
  		}
  		memcpy(b->addr.data, *ptr, len);
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0090-tc-m_gact-Drop-dead-code.patch b/SOURCES/0090-tc-m_gact-Drop-dead-code.patch
index b3702ee..f0d4a13 100644
--- a/SOURCES/0090-tc-m_gact-Drop-dead-code.patch
+++ b/SOURCES/0090-tc-m_gact-Drop-dead-code.patch
@@ -86,5 +86,5 @@ index 755a3bee2c2f2..0cb5222fd3817 100644
  	addattr_l(n, MAX_MSG, tca_id, NULL, 0);
  	addattr_l(n, MAX_MSG, TCA_GACT_PARMS, &p, sizeof(p));
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0091-ipaddress-Avoid-accessing-uninitialized-variable-lcl.patch b/SOURCES/0091-ipaddress-Avoid-accessing-uninitialized-variable-lcl.patch
index fcf2770..6256d2f 100644
--- a/SOURCES/0091-ipaddress-Avoid-accessing-uninitialized-variable-lcl.patch
+++ b/SOURCES/0091-ipaddress-Avoid-accessing-uninitialized-variable-lcl.patch
@@ -34,5 +34,5 @@ index bed2d3801809b..2c27da3a1f079 100644
  	int local_len = 0;
  	int peer_len = 0;
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0092-iplink_can-Prevent-overstepping-array-bounds.patch b/SOURCES/0092-iplink_can-Prevent-overstepping-array-bounds.patch
index 0804c5b..00bcb5d 100644
--- a/SOURCES/0092-iplink_can-Prevent-overstepping-array-bounds.patch
+++ b/SOURCES/0092-iplink_can-Prevent-overstepping-array-bounds.patch
@@ -45,5 +45,5 @@ index 20d4d37d0d087..4133a658a059e 100644
  	}
  
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0093-ipmaddr-Avoid-accessing-uninitialized-data.patch b/SOURCES/0093-ipmaddr-Avoid-accessing-uninitialized-data.patch
index 03b06ec..6671cd0 100644
--- a/SOURCES/0093-ipmaddr-Avoid-accessing-uninitialized-data.patch
+++ b/SOURCES/0093-ipmaddr-Avoid-accessing-uninitialized-data.patch
@@ -34,5 +34,5 @@ index 4f726fdd976f1..85a69e779563d 100644
  		if (buf[0] != '\t') {
  			sscanf(buf, "%d%s", &m.index, m.name);
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0094-ss-Use-C99-initializer-in-netlink_show_one.patch b/SOURCES/0094-ss-Use-C99-initializer-in-netlink_show_one.patch
index 4914cd9..b8e1e05 100644
--- a/SOURCES/0094-ss-Use-C99-initializer-in-netlink_show_one.patch
+++ b/SOURCES/0094-ss-Use-C99-initializer-in-netlink_show_one.patch
@@ -50,5 +50,5 @@ index cc38fc499c210..7a38e9d830e8d 100644
  		st.rport = -1;
  		st.lport = pid;
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0095-netem-maketable-Check-return-value-of-fstat.patch b/SOURCES/0095-netem-maketable-Check-return-value-of-fstat.patch
index 37c71a3..7361e89 100644
--- a/SOURCES/0095-netem-maketable-Check-return-value-of-fstat.patch
+++ b/SOURCES/0095-netem-maketable-Check-return-value-of-fstat.patch
@@ -35,5 +35,5 @@ index 6aff927be7040..ad660e7d457f0 100644
  	} else {
  		limit = 10000;
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0096-tc-q_multiq-Don-t-pass-garbage-in-TCA_OPTIONS.patch b/SOURCES/0096-tc-q_multiq-Don-t-pass-garbage-in-TCA_OPTIONS.patch
index eb63ef2..ec1b907 100644
--- a/SOURCES/0096-tc-q_multiq-Don-t-pass-garbage-in-TCA_OPTIONS.patch
+++ b/SOURCES/0096-tc-q_multiq-Don-t-pass-garbage-in-TCA_OPTIONS.patch
@@ -34,5 +34,5 @@ index 7823931494563..9c09c9a7748f6 100644
  	if (argc) {
  		if (strcmp(*argv, "help") == 0) {
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0097-iproute-Check-mark-value-input.patch b/SOURCES/0097-iproute-Check-mark-value-input.patch
index 73c7ae8..8a40286 100644
--- a/SOURCES/0097-iproute-Check-mark-value-input.patch
+++ b/SOURCES/0097-iproute-Check-mark-value-input.patch
@@ -42,5 +42,5 @@ index 6ebc6214c45ee..1d92530fd3421 100644
  			   strcmp(*argv, "dev") == 0) {
  			NEXT_ARG();
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0098-iplink_vrf-Complain-if-main-table-is-not-found.patch b/SOURCES/0098-iplink_vrf-Complain-if-main-table-is-not-found.patch
index e42872e..44c88ef 100644
--- a/SOURCES/0098-iplink_vrf-Complain-if-main-table-is-not-found.patch
+++ b/SOURCES/0098-iplink_vrf-Complain-if-main-table-is-not-found.patch
@@ -34,5 +34,5 @@ index 370bb86815a80..9c2de2732a88e 100644
  		return tb_id;
  	}
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0099-devlink-Check-return-code-of-strslashrsplit.patch b/SOURCES/0099-devlink-Check-return-code-of-strslashrsplit.patch
index 4aa717f..d39c355 100644
--- a/SOURCES/0099-devlink-Check-return-code-of-strslashrsplit.patch
+++ b/SOURCES/0099-devlink-Check-return-code-of-strslashrsplit.patch
@@ -58,5 +58,5 @@ index ae295b5632e8c..082eeafa1146a 100644
  }
  
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0100-lib-bpf-Don-t-leak-fp-in-bpf_find_mntpt.patch b/SOURCES/0100-lib-bpf-Don-t-leak-fp-in-bpf_find_mntpt.patch
index 2e22047..036e699 100644
--- a/SOURCES/0100-lib-bpf-Don-t-leak-fp-in-bpf_find_mntpt.patch
+++ b/SOURCES/0100-lib-bpf-Don-t-leak-fp-in-bpf_find_mntpt.patch
@@ -39,5 +39,5 @@ index 3aabf44d1abf8..33c5288e82187 100644
  
  	while (fscanf(fp, "%*s %" textify(PATH_MAX) "s %99s %*s %*d %*d\n",
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0101-ifstat-nstat-Check-fdopen-return-value.patch b/SOURCES/0101-ifstat-nstat-Check-fdopen-return-value.patch
index 792575a..ee3c06c 100644
--- a/SOURCES/0101-ifstat-nstat-Check-fdopen-return-value.patch
+++ b/SOURCES/0101-ifstat-nstat-Check-fdopen-return-value.patch
@@ -80,5 +80,5 @@ index 1212b1f2c8128..a4dd405d43a93 100644
  		if (fd >= 0)
  			close(fd);
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0102-tc-q_netem-Don-t-dereference-possibly-NULL-pointer.patch b/SOURCES/0102-tc-q_netem-Don-t-dereference-possibly-NULL-pointer.patch
index 4b35e5f..5e4162d 100644
--- a/SOURCES/0102-tc-q_netem-Don-t-dereference-possibly-NULL-pointer.patch
+++ b/SOURCES/0102-tc-q_netem-Don-t-dereference-possibly-NULL-pointer.patch
@@ -42,5 +42,5 @@ index 0975ae111de97..5a9e747411e85 100644
  		fprintf(stderr, "options size error\n");
  		return -1;
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0103-tc-tc_filter-Make-sure-filter-name-is-not-empty.patch b/SOURCES/0103-tc-tc_filter-Make-sure-filter-name-is-not-empty.patch
index d74eae8..1b3a4d6 100644
--- a/SOURCES/0103-tc-tc_filter-Make-sure-filter-name-is-not-empty.patch
+++ b/SOURCES/0103-tc-tc_filter-Make-sure-filter-name-is-not-empty.patch
@@ -35,5 +35,5 @@ index e640492b25ba6..a6bb73d12eaba 100644
  
  			q = get_filter_kind(k);
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0104-tipc-bearer-Prevent-NULL-pointer-dereference.patch b/SOURCES/0104-tipc-bearer-Prevent-NULL-pointer-dereference.patch
index d4530f3..ff49eaf 100644
--- a/SOURCES/0104-tipc-bearer-Prevent-NULL-pointer-dereference.patch
+++ b/SOURCES/0104-tipc-bearer-Prevent-NULL-pointer-dereference.patch
@@ -31,5 +31,5 @@ index c3d4491f8f6ef..0d84570150624 100644
  		if (err)
  			return err;
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0105-ipntable-Avoid-memory-allocation-for-filter.name.patch b/SOURCES/0105-ipntable-Avoid-memory-allocation-for-filter.name.patch
index da866f9..4252a50 100644
--- a/SOURCES/0105-ipntable-Avoid-memory-allocation-for-filter.name.patch
+++ b/SOURCES/0105-ipntable-Avoid-memory-allocation-for-filter.name.patch
@@ -54,5 +54,5 @@ index ae8c74ead2cb8..2f72c989f35df 100644
  			invarg("unknown", *argv);
  
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0106-lib-fs-Fix-format-string-in-find_fs_mount.patch b/SOURCES/0106-lib-fs-Fix-format-string-in-find_fs_mount.patch
index 59d8032..954ea92 100644
--- a/SOURCES/0106-lib-fs-Fix-format-string-in-find_fs_mount.patch
+++ b/SOURCES/0106-lib-fs-Fix-format-string-in-find_fs_mount.patch
@@ -35,5 +35,5 @@ index c59ac564581d0..1ff881ecfcd8c 100644
  		if (strcmp(fstype, fs_to_find) == 0) {
  			mnt = strdup(path);
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0107-lib-inet_proto-Review-inet_proto_-a2n-n2a.patch b/SOURCES/0107-lib-inet_proto-Review-inet_proto_-a2n-n2a.patch
index 3bce03d..8f063ea 100644
--- a/SOURCES/0107-lib-inet_proto-Review-inet_proto_-a2n-n2a.patch
+++ b/SOURCES/0107-lib-inet_proto-Review-inet_proto_-a2n-n2a.patch
@@ -86,5 +86,5 @@ index ceda082b12a2e..53c029039b6d5 100644
  	}
  	return -1;
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0108-lnstat_util-Simplify-alloc_and_open-a-bit.patch b/SOURCES/0108-lnstat_util-Simplify-alloc_and_open-a-bit.patch
index 4a7541c..e7cdb99 100644
--- a/SOURCES/0108-lnstat_util-Simplify-alloc_and_open-a-bit.patch
+++ b/SOURCES/0108-lnstat_util-Simplify-alloc_and_open-a-bit.patch
@@ -40,5 +40,5 @@ index cc54598fe1bef..ec19238c24b94 100644
  	/* initialize to default */
  	lf->interval.tv_sec = 1;
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0109-tc-m_xt-Fix-for-potential-string-buffer-overflows.patch b/SOURCES/0109-tc-m_xt-Fix-for-potential-string-buffer-overflows.patch
index c411268..07f2309 100644
--- a/SOURCES/0109-tc-m_xt-Fix-for-potential-string-buffer-overflows.patch
+++ b/SOURCES/0109-tc-m_xt-Fix-for-potential-string-buffer-overflows.patch
@@ -51,5 +51,5 @@ index ad52d239caf61..9218b14594403 100644
  	} else {
  		size = 1 + strlen(tname);
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0110-lib-ll_map-Choose-size-of-new-cache-items-at-run-tim.patch b/SOURCES/0110-lib-ll_map-Choose-size-of-new-cache-items-at-run-tim.patch
index 3ea22e5..3862422 100644
--- a/SOURCES/0110-lib-ll_map-Choose-size-of-new-cache-items-at-run-tim.patch
+++ b/SOURCES/0110-lib-ll_map-Choose-size-of-new-cache-items-at-run-tim.patch
@@ -44,5 +44,5 @@ index 4e4556c9ac80b..70684b02042b6 100644
  		return 0;
  	im->index = ifi->ifi_index;
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0111-ss-Make-struct-tcpstat-fields-timer-and-timeout-unsi.patch b/SOURCES/0111-ss-Make-struct-tcpstat-fields-timer-and-timeout-unsi.patch
index 0561037..8a0cf29 100644
--- a/SOURCES/0111-ss-Make-struct-tcpstat-fields-timer-and-timeout-unsi.patch
+++ b/SOURCES/0111-ss-Make-struct-tcpstat-fields-timer-and-timeout-unsi.patch
@@ -54,5 +54,5 @@ index 7a38e9d830e8d..2a981d8b06918 100644
  	minutes = secs/60;
  	secs = secs%60;
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0112-ss-Make-sure-scanned-index-value-to-unix_state_map-i.patch b/SOURCES/0112-ss-Make-sure-scanned-index-value-to-unix_state_map-i.patch
index 48630b2..b68a7b2 100644
--- a/SOURCES/0112-ss-Make-sure-scanned-index-value-to-unix_state_map-i.patch
+++ b/SOURCES/0112-ss-Make-sure-scanned-index-value-to-unix_state_map-i.patch
@@ -32,5 +32,5 @@ index 2a981d8b06918..fdb00a9f3f696 100644
  			if (u->type == SOCK_DGRAM && u->state == SS_CLOSE && u->rport)
  				u->state = SS_ESTABLISHED;
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0113-netem-maketable-Check-return-value-of-fscanf.patch b/SOURCES/0113-netem-maketable-Check-return-value-of-fscanf.patch
index bf2b9b5..b9d33de 100644
--- a/SOURCES/0113-netem-maketable-Check-return-value-of-fscanf.patch
+++ b/SOURCES/0113-netem-maketable-Check-return-value-of-fscanf.patch
@@ -33,5 +33,5 @@ index ad660e7d457f0..ccb8f0c68b062 100644
  		++n;
  	}
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0114-lib-bpf-Check-return-value-of-write.patch b/SOURCES/0114-lib-bpf-Check-return-value-of-write.patch
index 728cf10..485b2ae 100644
--- a/SOURCES/0114-lib-bpf-Check-return-value-of-write.patch
+++ b/SOURCES/0114-lib-bpf-Check-return-value-of-write.patch
@@ -36,5 +36,5 @@ index 33c5288e82187..7eb754ad7cb56 100644
  		}
  	}
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0115-lib-fs-Fix-and-simplify-make_path.patch b/SOURCES/0115-lib-fs-Fix-and-simplify-make_path.patch
index 3137352..85074f3 100644
--- a/SOURCES/0115-lib-fs-Fix-and-simplify-make_path.patch
+++ b/SOURCES/0115-lib-fs-Fix-and-simplify-make_path.patch
@@ -61,5 +61,5 @@ index 1ff881ecfcd8c..ebe05cd44e11b 100644
  
  		if (delim == NULL)
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0116-lib-libnetlink-Don-t-pass-NULL-parameter-to-memcpy.patch b/SOURCES/0116-lib-libnetlink-Don-t-pass-NULL-parameter-to-memcpy.patch
index dcbfc2f..db4d66a 100644
--- a/SOURCES/0116-lib-libnetlink-Don-t-pass-NULL-parameter-to-memcpy.patch
+++ b/SOURCES/0116-lib-libnetlink-Don-t-pass-NULL-parameter-to-memcpy.patch
@@ -45,5 +45,5 @@ index 75e20abf0b97f..ff26ddf50552b 100644
  	return 0;
  }
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0117-utils-Implement-strlcpy-and-strlcat.patch b/SOURCES/0117-utils-Implement-strlcpy-and-strlcat.patch
index 660b433..48bfa7e 100644
--- a/SOURCES/0117-utils-Implement-strlcpy-and-strlcat.patch
+++ b/SOURCES/0117-utils-Implement-strlcpy-and-strlcat.patch
@@ -61,5 +61,5 @@ index fc9c575ba0c7d..c9ba2f332c2a7 100644
 +	return dlen + strlcpy(dst + dlen, src, size - dlen);
 +}
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0118-Convert-the-obvious-cases-to-strlcpy.patch b/SOURCES/0118-Convert-the-obvious-cases-to-strlcpy.patch
index 200a2d8..958e698 100644
--- a/SOURCES/0118-Convert-the-obvious-cases-to-strlcpy.patch
+++ b/SOURCES/0118-Convert-the-obvious-cases-to-strlcpy.patch
@@ -131,5 +131,5 @@ index b59756515d239..48b287f5ba3b2 100644
  	if (res != 0)
  		return -1;
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0119-Convert-harmful-calls-to-strncpy-to-strlcpy.patch b/SOURCES/0119-Convert-harmful-calls-to-strncpy-to-strlcpy.patch
index ee6b156..b3c641d 100644
--- a/SOURCES/0119-Convert-harmful-calls-to-strncpy-to-strlcpy.patch
+++ b/SOURCES/0119-Convert-harmful-calls-to-strncpy-to-strlcpy.patch
@@ -62,5 +62,5 @@ index 04ed3492ad3b5..2222737cdd98d 100644
  	if (slen > 2 && strncmp(key, "0x", 2) == 0) {
  		/* split two chars "0x" from the top */
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0120-ipxfrm-Replace-STRBUF_CAT-macro-with-strlcat.patch b/SOURCES/0120-ipxfrm-Replace-STRBUF_CAT-macro-with-strlcat.patch
index ea251a2..8c0e27e 100644
--- a/SOURCES/0120-ipxfrm-Replace-STRBUF_CAT-macro-with-strlcat.patch
+++ b/SOURCES/0120-ipxfrm-Replace-STRBUF_CAT-macro-with-strlcat.patch
@@ -71,5 +71,5 @@ index b0cfac178f8bc..df72a0c0bf88e 100644
  	fputs(buf, fp);
  	if (xpinfo->dir >= XFRM_POLICY_MAX) {
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0121-tc_util-No-need-to-terminate-an-snprintf-ed-buffer.patch b/SOURCES/0121-tc_util-No-need-to-terminate-an-snprintf-ed-buffer.patch
index da2efeb..13e8e10 100644
--- a/SOURCES/0121-tc_util-No-need-to-terminate-an-snprintf-ed-buffer.patch
+++ b/SOURCES/0121-tc_util-No-need-to-terminate-an-snprintf-ed-buffer.patch
@@ -33,5 +33,5 @@ index 24ca1f1c1c040..296825ae174e0 100644
  	}
  }
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0122-lnstat_util-Make-sure-buffer-is-NUL-terminated.patch b/SOURCES/0122-lnstat_util-Make-sure-buffer-is-NUL-terminated.patch
index 20ccdc3..05636bf 100644
--- a/SOURCES/0122-lnstat_util-Make-sure-buffer-is-NUL-terminated.patch
+++ b/SOURCES/0122-lnstat_util-Make-sure-buffer-is-NUL-terminated.patch
@@ -36,5 +36,5 @@ index ec19238c24b94..c2dc42ec1ff12 100644
  	return __lnstat_scan_fields(lf, buf);
  }
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0123-utils-strlcpy-and-strlcat-don-t-clobber-dst.patch b/SOURCES/0123-utils-strlcpy-and-strlcat-don-t-clobber-dst.patch
index 230f3a6..7e0e723 100644
--- a/SOURCES/0123-utils-strlcpy-and-strlcat-don-t-clobber-dst.patch
+++ b/SOURCES/0123-utils-strlcpy-and-strlcat-don-t-clobber-dst.patch
@@ -58,5 +58,5 @@ index c9ba2f332c2a7..228d97bfe5e9b 100644
  
  	return dlen + strlcpy(dst + dlen, src, size - dlen);
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0124-ip-6-tunnel-Avoid-copying-user-supplied-interface-na.patch b/SOURCES/0124-ip-6-tunnel-Avoid-copying-user-supplied-interface-na.patch
index 8881924..308f8ff 100644
--- a/SOURCES/0124-ip-6-tunnel-Avoid-copying-user-supplied-interface-na.patch
+++ b/SOURCES/0124-ip-6-tunnel-Avoid-copying-user-supplied-interface-na.patch
@@ -148,5 +148,5 @@ index 105d0f5576f1a..0acfd0793d3cd 100644
  		exit(-1);
  	}
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0125-tc-flower-No-need-to-cache-indev-arg.patch b/SOURCES/0125-tc-flower-No-need-to-cache-indev-arg.patch
index d6312ea..980c513 100644
--- a/SOURCES/0125-tc-flower-No-need-to-cache-indev-arg.patch
+++ b/SOURCES/0125-tc-flower-No-need-to-cache-indev-arg.patch
@@ -38,5 +38,5 @@ index e2c7daa0b8e03..34249254603ff 100644
  			__u16 vid;
  
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0126-Check-user-supplied-interface-name-lengths.patch b/SOURCES/0126-Check-user-supplied-interface-name-lengths.patch
index ada9ba1..7ef7771 100644
--- a/SOURCES/0126-Check-user-supplied-interface-name-lengths.patch
+++ b/SOURCES/0126-Check-user-supplied-interface-name-lengths.patch
@@ -374,5 +374,5 @@ index 34249254603ff..f3f8d3427c761 100644
  		} else if (matches(*argv, "vlan_id") == 0) {
  			__u16 vid;
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0127-bpf-minor-cleanups-for-bpf_trace_pipe.patch b/SOURCES/0127-bpf-minor-cleanups-for-bpf_trace_pipe.patch
index a96efb9..7f05a35 100644
--- a/SOURCES/0127-bpf-minor-cleanups-for-bpf_trace_pipe.patch
+++ b/SOURCES/0127-bpf-minor-cleanups-for-bpf_trace_pipe.patch
@@ -69,5 +69,5 @@ index e072cba214067..f0e6c6fb732ee 100644
  
  static int bpf_gen_global(const char *bpf_sub_dir)
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0128-ip-tunnel-Use-tnl_parse_key-to-parse-tunnel-key.patch b/SOURCES/0128-ip-tunnel-Use-tnl_parse_key-to-parse-tunnel-key.patch
index 537029f..5510d37 100644
--- a/SOURCES/0128-ip-tunnel-Use-tnl_parse_key-to-parse-tunnel-key.patch
+++ b/SOURCES/0128-ip-tunnel-Use-tnl_parse_key-to-parse-tunnel-key.patch
@@ -335,5 +335,5 @@ index 7956d71aa7334..3967d5df3ca1c 100644
  	}
  	return htonl(uval);
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0129-man-ip-link-document-GRE-tunnels.patch b/SOURCES/0129-man-ip-link-document-GRE-tunnels.patch
index 76b36b3..c10f982 100644
--- a/SOURCES/0129-man-ip-link-document-GRE-tunnels.patch
+++ b/SOURCES/0129-man-ip-link-document-GRE-tunnels.patch
@@ -214,5 +214,5 @@ index 48417dbce80aa..cfea1bdfdc030 100644
  
  .TP
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0130-gre-gre6-allow-clearing-i-o-key-seq-csum-flags.patch b/SOURCES/0130-gre-gre6-allow-clearing-i-o-key-seq-csum-flags.patch
index 2d4af18..bdc406a 100644
--- a/SOURCES/0130-gre-gre6-allow-clearing-i-o-key-seq-csum-flags.patch
+++ b/SOURCES/0130-gre-gre6-allow-clearing-i-o-key-seq-csum-flags.patch
@@ -264,5 +264,5 @@ index cfea1bdfdc030..8be5d5e1e9fd6 100644
  The
  .B ocsum
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0131-tc_filter-add-support-for-chain-index.patch b/SOURCES/0131-tc_filter-add-support-for-chain-index.patch
index 4fe63f0..b5b69c3 100644
--- a/SOURCES/0131-tc_filter-add-support-for-chain-index.patch
+++ b/SOURCES/0131-tc_filter-add-support-for-chain-index.patch
@@ -246,5 +246,5 @@ index a6bb73d12eaba..8dbebf1ffa32a 100644
  		return 1;
  	}
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0132-tc-actions-add-helpers-to-parse-and-print-control-ac.patch b/SOURCES/0132-tc-actions-add-helpers-to-parse-and-print-control-ac.patch
index 7d1a3b4..c8de5de 100644
--- a/SOURCES/0132-tc-actions-add-helpers-to-parse-and-print-control-ac.patch
+++ b/SOURCES/0132-tc-actions-add-helpers-to-parse-and-print-control-ac.patch
@@ -768,5 +768,5 @@ index 4db26c6d5e25b..5c54ad384eae6 100644
  		     char ***argv_p, int tca_id, struct nlmsghdr *n);
  int print_police(struct action_util *a, FILE *f, struct rtattr *tb);
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0133-tc-actions-introduce-support-for-goto-chain-action.patch b/SOURCES/0133-tc-actions-introduce-support-for-goto-chain-action.patch
index bd60875..637f75c 100644
--- a/SOURCES/0133-tc-actions-introduce-support-for-goto-chain-action.patch
+++ b/SOURCES/0133-tc-actions-introduce-support-for-goto-chain-action.patch
@@ -243,5 +243,5 @@ index 840222832690b..194185a0fa1d8 100644
  
  int get_linklayer(unsigned int *val, const char *arg)
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0134-tc-gact-fix-control-action-parsing.patch b/SOURCES/0134-tc-gact-fix-control-action-parsing.patch
index 46e953c..bde9bf3 100644
--- a/SOURCES/0134-tc-gact-fix-control-action-parsing.patch
+++ b/SOURCES/0134-tc-gact-fix-control-action-parsing.patch
@@ -37,5 +37,5 @@ index c04c00bbded3c..73346d4e9333b 100644
  				fprintf(stderr, "Illegal probability val 0x%x\n", pp.pval);
  				return -1;
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0135-tc-don-t-print-error-message-on-miss-when-parsing-ac.patch b/SOURCES/0135-tc-don-t-print-error-message-on-miss-when-parsing-ac.patch
index 3d32538..ce98b1a 100644
--- a/SOURCES/0135-tc-don-t-print-error-message-on-miss-when-parsing-ac.patch
+++ b/SOURCES/0135-tc-don-t-print-error-message-on-miss-when-parsing-ac.patch
@@ -93,5 +93,5 @@ index 194185a0fa1d8..cdc23477ada53 100644
  }
  
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0136-tc-util-Don-t-call-NEXT_ARG_FWD-in-__parse_action_co.patch b/SOURCES/0136-tc-util-Don-t-call-NEXT_ARG_FWD-in-__parse_action_co.patch
index 1b806df..83d8db4 100644
--- a/SOURCES/0136-tc-util-Don-t-call-NEXT_ARG_FWD-in-__parse_action_co.patch
+++ b/SOURCES/0136-tc-util-Don-t-call-NEXT_ARG_FWD-in-__parse_action_co.patch
@@ -231,5 +231,5 @@ index cdc23477ada53..4584d4a448fb4 100644
  	*argv_p = argv;
  	*result_p = result;
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0137-tc-fix-parsing-of-the-control-action.patch b/SOURCES/0137-tc-fix-parsing-of-the-control-action.patch
index 78b9286..f8797f5 100644
--- a/SOURCES/0137-tc-fix-parsing-of-the-control-action.patch
+++ b/SOURCES/0137-tc-fix-parsing-of-the-control-action.patch
@@ -317,5 +317,5 @@ index 4584d4a448fb4..65695ea592ed8 100644
  }
  
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0138-m_mirred-don-t-bail-if-the-control-action-is-missing.patch b/SOURCES/0138-m_mirred-don-t-bail-if-the-control-action-is-missing.patch
index f87d77e..a56bbbb 100644
--- a/SOURCES/0138-m_mirred-don-t-bail-if-the-control-action-is-missing.patch
+++ b/SOURCES/0138-m_mirred-don-t-bail-if-the-control-action-is-missing.patch
@@ -42,5 +42,5 @@ index b1f45f1e6ecb0..90d0b633c1318 100644
  	if (argc) {
  		if (iok && matches(*argv, "index") == 0) {
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0139-tc-m_tunnel_key-add-csum-nocsum-option.patch b/SOURCES/0139-tc-m_tunnel_key-add-csum-nocsum-option.patch
index 3aa571a..7649aca 100644
--- a/SOURCES/0139-tc-m_tunnel_key-add-csum-nocsum-option.patch
+++ b/SOURCES/0139-tc-m_tunnel_key-add-csum-nocsum-option.patch
@@ -127,5 +127,5 @@ index cdde64a15b929..992adc51c28ab 100644
  					  tb[TCA_TUNNEL_KEY_ENC_TOS]);
  		tunnel_key_print_tos_ttl(f, "ttl",
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0140-gre6-add-collect-metadata-support.patch b/SOURCES/0140-gre6-add-collect-metadata-support.patch
index 38ec1d7..ac44613 100644
--- a/SOURCES/0140-gre6-add-collect-metadata-support.patch
+++ b/SOURCES/0140-gre6-add-collect-metadata-support.patch
@@ -156,5 +156,5 @@ index 8be5d5e1e9fd6..612bd8ce92696 100644
  
  .TP
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0141-tc_util-Silence-spurious-compiler-warning.patch b/SOURCES/0141-tc_util-Silence-spurious-compiler-warning.patch
index b345515..962a81c 100644
--- a/SOURCES/0141-tc_util-Silence-spurious-compiler-warning.patch
+++ b/SOURCES/0141-tc_util-Silence-spurious-compiler-warning.patch
@@ -36,5 +36,5 @@ index 65695ea592ed8..e115e5a70e3a1 100644
  	int ok = 0;
  	int ret;
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0142-ss-use-for-any-address-any-family-sockets.patch b/SOURCES/0142-ss-use-for-any-address-any-family-sockets.patch
index 8e97133..83316f4 100644
--- a/SOURCES/0142-ss-use-for-any-address-any-family-sockets.patch
+++ b/SOURCES/0142-ss-use-for-any-address-any-family-sockets.patch
@@ -1,4 +1,4 @@
-From 04453080a3a92071227fd79a039137f72fa82e15 Mon Sep 17 00:00:00 2001
+From 6837e43a9fb249e83a55a88e0523b3fab6db4dc6 Mon Sep 17 00:00:00 2001
 From: Andrea Claudi <aclaudi@redhat.com>
 Date: Wed, 12 Jun 2019 15:00:33 +0200
 Subject: [PATCH] ss: use [::] for any address/any family sockets
@@ -23,8 +23,6 @@ Date:   Wed Jun 12 14:49:07 2019 +0200
 
     Tested with
     # ss -ln -f inet6
-
-    ("ss: enclose IPv6 address in brackets")
 ---
  misc/ss.c | 29 ++++++++++++-----------------
  1 file changed, 12 insertions(+), 17 deletions(-)
@@ -72,5 +70,5 @@ index 6aaae1b5390e4..8f184fb929d31 100644
  
  	if (ifindex) {
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0143-tc-introduce-tc_qdisc_block_exists-helper.patch b/SOURCES/0143-tc-introduce-tc_qdisc_block_exists-helper.patch
index df5bbd6..4814dc8 100644
--- a/SOURCES/0143-tc-introduce-tc_qdisc_block_exists-helper.patch
+++ b/SOURCES/0143-tc-introduce-tc_qdisc_block_exists-helper.patch
@@ -106,5 +106,5 @@ index 5c54ad384eae6..8344c11833ee8 100644
 +
  #endif
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0144-tc_filter-resolve-device-name-before-parsing-filter.patch b/SOURCES/0144-tc_filter-resolve-device-name-before-parsing-filter.patch
index 66c8eaa..413f461 100644
--- a/SOURCES/0144-tc_filter-resolve-device-name-before-parsing-filter.patch
+++ b/SOURCES/0144-tc_filter-resolve-device-name-before-parsing-filter.patch
@@ -109,5 +109,5 @@ index 8dbebf1ffa32a..e479039159df6 100644
  		fprintf(stderr, "We have an error talking to the kernel\n");
  		return 2;
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0145-tc-introduce-support-for-block-handle-for-filter-ope.patch b/SOURCES/0145-tc-introduce-support-for-block-handle-for-filter-ope.patch
index 1fe56ff..51eb874 100644
--- a/SOURCES/0145-tc-introduce-support-for-block-handle-for-filter-ope.patch
+++ b/SOURCES/0145-tc-introduce-support-for-block-handle-for-filter-ope.patch
@@ -265,5 +265,5 @@ index e479039159df6..5676ed3a74383 100644
  
  	if (filter_chain_index_set)
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0146-tc-implement-ingress-egress-block-index-attributes-f.patch b/SOURCES/0146-tc-implement-ingress-egress-block-index-attributes-f.patch
index e0aa77c..52f91ca 100644
--- a/SOURCES/0146-tc-implement-ingress-egress-block-index-attributes-f.patch
+++ b/SOURCES/0146-tc-implement-ingress-egress-block-index-attributes-f.patch
@@ -117,5 +117,5 @@ index f8e06ccf205a0..26d23f43007ae 100644
  	if (strcmp("pfifo_fast", RTA_DATA(tb[TCA_KIND])) == 0)
  		q = get_qdisc_kind("prio");
 -- 
-2.20.1
+2.21.0
 
diff --git a/SOURCES/0147-netns-make-var-run-netns-bind-mount-recursive.patch b/SOURCES/0147-netns-make-var-run-netns-bind-mount-recursive.patch
new file mode 100644
index 0000000..0001595
--- /dev/null
+++ b/SOURCES/0147-netns-make-var-run-netns-bind-mount-recursive.patch
@@ -0,0 +1,41 @@
+From 1e13fc4c604f91c5d38b889824e2dfee1bd17c34 Mon Sep 17 00:00:00 2001
+From: Andrea Claudi <aclaudi@redhat.com>
+Date: Fri, 15 Nov 2019 12:02:31 +0100
+Subject: [PATCH] netns: make /var/run/netns bind-mount recursive
+
+Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1772827
+Upstream Status: iproute2.git commit d6a4076b6ba65
+
+commit d6a4076b6ba6547d7e52c377a7c58c56eb5ea16e
+Author: Casey Callendrello <casey.callendrello@coreos.com>
+Date:   Tue Aug 1 17:46:09 2017 +0200
+
+    netns: make /var/run/netns bind-mount recursive
+
+    When ip netns {add|delete} is first run, it bind-mounts /var/run/netns
+    on top of itself, then marks it as shared. However, if there are already
+    bind-mounts in the directory from other tools, these would not be
+    propagated. Fix this by recursively bind-mounting.
+
+    Signed-off-by: Casey Callendrello <casey.callendrello@coreos.com>
+    Acked-by: "Eric W. Biederman" <ebiederm@xmission.com>
+---
+ ip/ipnetns.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/ip/ipnetns.c b/ip/ipnetns.c
+index 427b59c57381d..c8e22e9b6e952 100644
+--- a/ip/ipnetns.c
++++ b/ip/ipnetns.c
+@@ -640,7 +640,7 @@ static int netns_add(int argc, char **argv)
+ 		}
+ 
+ 		/* Upgrade NETNS_RUN_DIR to a mount point */
+-		if (mount(NETNS_RUN_DIR, NETNS_RUN_DIR, "none", MS_BIND, NULL)) {
++		if (mount(NETNS_RUN_DIR, NETNS_RUN_DIR, "none", MS_BIND | MS_REC, NULL)) {
+ 			fprintf(stderr, "mount --bind %s %s failed: %s\n",
+ 				NETNS_RUN_DIR, NETNS_RUN_DIR, strerror(errno));
+ 			return -1;
+-- 
+2.21.0
+
diff --git a/SPECS/iproute.spec b/SPECS/iproute.spec
index 9c0adae..b31917a 100644
--- a/SPECS/iproute.spec
+++ b/SPECS/iproute.spec
@@ -2,7 +2,7 @@
 
 %define rpmversion 4.11.0
 %define baserelease 0.el7
-%define specrelease 25%{?dist}
+%define specrelease 25%{?dist}.2
 %define pkg_release %{specrelease}%{?buildid}
 
 Summary:            Advanced IP routing and network device configuration tools
@@ -161,6 +161,7 @@ Patch142:           0143-tc-introduce-tc_qdisc_block_exists-helper.patch
 Patch143:           0144-tc_filter-resolve-device-name-before-parsing-filter.patch
 Patch144:           0145-tc-introduce-support-for-block-handle-for-filter-ope.patch
 Patch145:           0146-tc-implement-ingress-egress-block-index-attributes-f.patch
+Patch146:           0147-netns-make-var-run-netns-bind-mount-recursive.patch
 License:            GPLv2+ and Public Domain
 BuildRequires:      bison
 BuildRequires:      flex
@@ -273,6 +274,9 @@ cat %{SOURCE3} >>%{buildroot}%{_sysconfdir}/iproute2/rt_dsfield
 %{_includedir}/iproute2/bpf_elf.h
 
 %changelog
+* Fri Nov 15 2019 Andrea Claudi <aclaudi@redhat.com> [4.11.0-25.el7_7.1]
+- netns: make /var/run/netns bind-mount recursive (Andrea Claudi) [1772827]
+
 * Fri Jun 21 2019 Andrea Claudi <aclaudi@redhat.com> [4.11.0-25.el7]
 - tc: implement ingress/egress block index attributes for qdiscs (Andrea Claudi) [1721291]
 - tc: introduce support for block-handle for filter operations (Andrea Claudi) [1721291]
@@ -301,7 +305,7 @@ cat %{SOURCE3} >>%{buildroot}%{_sysconfdir}/iproute2/rt_dsfield
 * Tue Apr 30 2019 Andrea Claudi <aclaudi@redhat.com> [4.11.0-22.el7]
 - bpf: minor cleanups for bpf_trace_pipe (Andrea Claudi) [1465646]
 
-* Mon Apr 29 2019 Andrea Claudi <aclaudi@redhat.com> [4.11.0-21.el7]
+* Tue Apr 30 2019 Andrea Claudi <aclaudi@redhat.com> [4.11.0-21.el7]
 - Check user supplied interface name lengths (Andrea Claudi) [1465646]
 - tc: flower: No need to cache indev arg (Andrea Claudi) [1465646]
 - ip{6, }tunnel: Avoid copying user-supplied interface name around (Andrea Claudi) [1465646]