From d30c0927bcb25dd6ba63a8362b0209d181105705 Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Nov 26 2019 10:41:04 +0000 Subject: import iproute-4.11.0-25.el7_7.2 --- 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 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 " 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(¤t_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 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 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 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 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 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 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 --- - 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 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 --- - 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 --- - 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 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 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 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 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 --- - 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 --- - 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 --- - 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 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 --- - 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 Signed-off-by: Lorenzo Colitti --- - 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 directly. -- * Instead, #include -- */ -- --#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 --#include --#include --#include -- -- --/* 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 --#include --#include -- -- --#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 --#include --#include -- -- --#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 -- /* 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 -- --/* -- * 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 --#include -- --/* 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 -- * Urs Thuermann -- * 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 --#include -- --/* 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 -- * -- * & 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 -- * -- * 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 -- --/* -- * 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 -- * -- * 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 --#include -- --/* 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 --#include -- --/* -- * 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 -- --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 --#include -- --#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 --#include -- --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 " --#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 " --#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, -- * -- * 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 /* for compatibility with glibc */ --#include /* for "__kernel_caddr_t" et al */ --#include /* for "struct sockaddr" et al */ -- /* for "__user" et al */ -- --#include /* for struct sockaddr. */ -- --#if __UAPI_DEF_IF_IFNAMSIZ --#define IFNAMSIZ 16 --#endif /* __UAPI_DEF_IF_IFNAMSIZ */ --#define IFALIASZ 256 --#include -- --/* 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//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 --#include -- --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 -- */ -- --#ifndef __LINUX_IF_ADDRLABEL_H --#define __LINUX_IF_ADDRLABEL_H -- --#include -- --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 -- * -- * 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 -- --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, -- * Florian La Roche, -- * Jonathan Layes -- * Arnaldo Carvalho de Melo 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 -- --/* 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 -- * - Added support for getting slave's speed and duplex via ethtool. -- * Needed for 802.3ad and other future modes. -- * -- * 2003/03/18 - Tsippy Mendelson and -- * Shmulik Hen -- * - Enable support of modes that need to use the unique mac address of -- * each slave. -- * -- * 2003/03/18 - Tsippy Mendelson and -- * Amir Noam -- * - Moved driver's private data types to bonding.h -- * -- * 2003/03/18 - Amir Noam , -- * Tsippy Mendelson and -- * Shmulik Hen -- * - Added support for IEEE 802.3ad Dynamic link aggregation mode. -- * -- * 2003/05/01 - Amir Noam -- * - Added ABI version control to restore compatibility between -- * new/old ifenslave and new/old bonding. -- * -- * 2003/12/01 - Shmulik Hen -- * - Code cleanup and style changes -- * -- * 2005/05/05 - Jason Gabler -- * - added definitions for various XOR hashing policies -- */ -- --#ifndef _LINUX_IF_BONDING_H --#define _LINUX_IF_BONDING_H -- --#include --#include --#include -- --/* 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 -- * -- * 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 --#include --#include -- --#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, -- * Donald Becker, -- * Alan Cox, -- * Steve Whitehouse, -- * -- * 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 -- --/* -- * 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 --#include -- --/* 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 -- * -- * 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 -- --#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 -- --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 -- * -- * 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 --#include --#include -- --/* 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 --#include --#include --#include --#include -- -- --#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 -- * -- * 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 file. -- * Fred N. van Kempen, -- * -- * 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 --#include --#include -- --#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 -- --/* contains the htonl type stuff.. */ --#include -- -- --#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 -- * -- * Sources: -- * IPv6 Program Interfaces for BSD Systems -- * -- * -- * Advanced Sockets API for IPv6 -- * -- * -- * 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 --#include -- --/* -- * 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 -- --/* 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, -- * -- * 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 --#include -- --#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 " --#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 --#include /* For IFNAMSIZ. */ --#include /* 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 -- --#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 -- --/* -- * '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 -- */ -- --#ifndef _LINUX_L2TP_H_ --#define _LINUX_L2TP_H_ -- --#include --#include --#include --#include -- --#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 -- * 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 -- --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 --#include -- --/* 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 -- * -- * 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 --#include -- --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 -- * -- * 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 --#include -- --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, -- * Corey Minyard -- * Donald J. Becker, -- * Alan Cox, -- * Bjorn Ekwall. -- * Pekka Riikonen -- * -- * 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 --#include --#include --#include -- -- --#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 -- --#include --#include -- --/* 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 -- * Patrick Schaaf -- * Martin Josefsson -- * Copyright (C) 2003-2011 Jozsef Kadlecsik -- * -- * 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 -- --/* 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 --#include -- --#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 --#include -- --/* 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 -- --/* 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 -- --/* only for userspace compatibility */ -- --#include /* 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 -- --#include --#include -- --#include -- --#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 --#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 -- --/* only for userspace compatibility */ -- --#include /* 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 -- --#include --#include -- --#include -- --#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 --#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 --#include /* for __kernel_sa_family_t */ --#include -- --#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 -- --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 -- --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 -- --#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 -- --#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 --#include -- --#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 -- --/* 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 -- --/* -- * 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 -- * (and thus ) - but this is a more logical -- * place for them. Solved by having dummy defines in . -- */ -- --/* -- * This macro may have been defined in . 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 -- --#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 --#include --#include --#include --#include -- --/* 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 -- * . -- * -- * Please send any bug reports or fixes you make to the -- * email address(es): -- * lksctp developers -- * -- * Or submit a bug report through the following website: -- * http://www.sf.net/projects/lksctp -- * -- * Written or modified by: -- * La Monte H.P. Yarroll -- * R. Stewart -- * K. Morneau -- * Q. Xie -- * Karl Knutson -- * Jon Grimm -- * Daisy Chang -- * Ryan Layer -- * Ardelle Fan -- * Sridhar Samudrala -- * Inaky Perez-Gonzalez -- * Vlad Yasevich -- * -- * 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 --#include -- --typedef __s32 sctp_assoc_t; -- --/* The following symbols come from the Sockets API Extensions for -- * SCTP . -- */ --#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 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 -- * -- * -- * 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 --#include /* 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 --#include -- --#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 -- * -- * -- * 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 /* 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 -- * -- * -- * 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 -- --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 -- --#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, -- * -- * 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 -- --/* 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 -- --#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 -- * -- * 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 -- --#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 --#include -- --#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 --#include -- --#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 -- --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 --#include -- --#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 --#include --#include -- --#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 -- --#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 --#include -- --#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 --#include -- --#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 --#include -- --#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 --#include --#include -- --#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 -- */ -- --#ifndef __LINUX_TC_SKBEDIT_H --#define __LINUX_TC_SKBEDIT_H -- --#include -- --#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 -- --#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 -- * 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 -- --#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 -- * -- * 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 -- --#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 --#include -- --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 --#include -- --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 --#include -- --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, -- * -- * 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 --#include --#include -- --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 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< -- --/* 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 --#include -- --/* -- * 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 -- --#ifndef __ASSEMBLY__ -- --#include -- -- --/* -- * 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 -- --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 --#include -- --/* 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 directly. -+ * Instead, #include -+ */ -+ -+#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 -+#include -+#include -+#include -+ -+ -+/* 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 -+#include -+#include -+ -+ -+#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 -+#include -+#include -+ -+ -+#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 -+ /* 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 -+ -+/* -+ * 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 -+#include -+ -+/* 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 -+ * Urs Thuermann -+ * 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 -+#include -+ -+/* 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 -+ * -+ * & 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 -+ * -+ * 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 -+ -+/* -+ * 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 -+ * -+ * 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 -+#include -+ -+/* 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 -+#include -+ -+/* -+ * 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 -+ -+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 -+#include -+ -+#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 -+#include -+ -+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 " -+#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 " -+#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, -+ * -+ * 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 /* for compatibility with glibc */ -+#include /* for "__kernel_caddr_t" et al */ -+#include /* for "struct sockaddr" et al */ -+ /* for "__user" et al */ -+ -+#include /* for struct sockaddr. */ -+ -+#if __UAPI_DEF_IF_IFNAMSIZ -+#define IFNAMSIZ 16 -+#endif /* __UAPI_DEF_IF_IFNAMSIZ */ -+#define IFALIASZ 256 -+#include -+ -+/* 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//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 -+#include -+ -+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 -+ */ -+ -+#ifndef __LINUX_IF_ADDRLABEL_H -+#define __LINUX_IF_ADDRLABEL_H -+ -+#include -+ -+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 -+ * -+ * 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 -+ -+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, -+ * Florian La Roche, -+ * Jonathan Layes -+ * Arnaldo Carvalho de Melo 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 -+ -+/* 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 -+ * - Added support for getting slave's speed and duplex via ethtool. -+ * Needed for 802.3ad and other future modes. -+ * -+ * 2003/03/18 - Tsippy Mendelson and -+ * Shmulik Hen -+ * - Enable support of modes that need to use the unique mac address of -+ * each slave. -+ * -+ * 2003/03/18 - Tsippy Mendelson and -+ * Amir Noam -+ * - Moved driver's private data types to bonding.h -+ * -+ * 2003/03/18 - Amir Noam , -+ * Tsippy Mendelson and -+ * Shmulik Hen -+ * - Added support for IEEE 802.3ad Dynamic link aggregation mode. -+ * -+ * 2003/05/01 - Amir Noam -+ * - Added ABI version control to restore compatibility between -+ * new/old ifenslave and new/old bonding. -+ * -+ * 2003/12/01 - Shmulik Hen -+ * - Code cleanup and style changes -+ * -+ * 2005/05/05 - Jason Gabler -+ * - added definitions for various XOR hashing policies -+ */ -+ -+#ifndef _LINUX_IF_BONDING_H -+#define _LINUX_IF_BONDING_H -+ -+#include -+#include -+#include -+ -+/* 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 -+ * -+ * 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 -+#include -+#include -+ -+#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, -+ * Donald Becker, -+ * Alan Cox, -+ * Steve Whitehouse, -+ * -+ * 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 -+ -+/* -+ * 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 -+#include -+ -+/* 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 -+ * -+ * 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 -+ -+#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 -+ -+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 -+ * -+ * 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 -+#include -+#include -+ -+/* 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 -+#include -+#include -+#include -+#include -+ -+ -+#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 -+ * -+ * 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 file. -+ * Fred N. van Kempen, -+ * -+ * 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 -+#include -+#include -+ -+#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 -+ -+/* contains the htonl type stuff.. */ -+#include -+ -+ -+#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 -+ * -+ * Sources: -+ * IPv6 Program Interfaces for BSD Systems -+ * -+ * -+ * Advanced Sockets API for IPv6 -+ * -+ * -+ * 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 -+#include -+ -+/* -+ * 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 -+ -+/* 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, -+ * -+ * 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 -+#include -+ -+#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 " -+#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 -+#include /* For IFNAMSIZ. */ -+#include /* 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 -+ -+#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 -+ -+/* -+ * '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 -+ */ -+ -+#ifndef _LINUX_L2TP_H_ -+#define _LINUX_L2TP_H_ -+ -+#include -+#include -+#include -+#include -+ -+#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 -+ * 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 -+ -+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 -+#include -+ -+/* 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 -+ * -+ * 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 -+#include -+ -+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 -+ * -+ * 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 -+#include -+ -+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, -+ * Corey Minyard -+ * Donald J. Becker, -+ * Alan Cox, -+ * Bjorn Ekwall. -+ * Pekka Riikonen -+ * -+ * 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 -+#include -+#include -+#include -+ -+ -+#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 -+ -+#include -+#include -+ -+/* 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 -+ * Patrick Schaaf -+ * Martin Josefsson -+ * Copyright (C) 2003-2011 Jozsef Kadlecsik -+ * -+ * 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 -+ -+/* 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 -+#include -+ -+#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 -+#include -+ -+/* 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 -+ -+/* 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 -+ -+/* only for userspace compatibility */ -+ -+#include /* 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 -+ -+#include -+#include -+ -+#include -+ -+#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 -+#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 -+ -+/* only for userspace compatibility */ -+ -+#include /* 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 -+ -+#include -+#include -+ -+#include -+ -+#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 -+#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 -+#include /* for __kernel_sa_family_t */ -+#include -+ -+#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 -+ -+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 -+ -+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 -+ -+#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 -+ -+#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 -+#include -+ -+#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 -+ -+/* 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 -+ -+/* -+ * 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 -+ * (and thus ) - but this is a more logical -+ * place for them. Solved by having dummy defines in . -+ */ -+ -+/* -+ * This macro may have been defined in . 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 -+ -+#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 -+#include -+#include -+#include -+#include -+ -+/* 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 -+ * . -+ * -+ * Please send any bug reports or fixes you make to the -+ * email address(es): -+ * lksctp developers -+ * -+ * Or submit a bug report through the following website: -+ * http://www.sf.net/projects/lksctp -+ * -+ * Written or modified by: -+ * La Monte H.P. Yarroll -+ * R. Stewart -+ * K. Morneau -+ * Q. Xie -+ * Karl Knutson -+ * Jon Grimm -+ * Daisy Chang -+ * Ryan Layer -+ * Ardelle Fan -+ * Sridhar Samudrala -+ * Inaky Perez-Gonzalez -+ * Vlad Yasevich -+ * -+ * 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 -+#include -+ -+typedef __s32 sctp_assoc_t; -+ -+/* The following symbols come from the Sockets API Extensions for -+ * SCTP . -+ */ -+#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 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 -+ * -+ * -+ * 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 -+#include /* 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 -+#include -+ -+#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 -+ * -+ * -+ * 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 /* 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 -+ * -+ * -+ * 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 -+ -+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 -+ -+#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, -+ * -+ * 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 -+ -+/* 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 -+ -+#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 -+ * -+ * 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 -+ -+#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 -+#include -+ -+#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 -+#include -+ -+#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 -+ -+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 -+#include -+ -+#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 -+#include -+#include -+ -+#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 -+ -+#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 -+#include -+ -+#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 -+#include -+ -+#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 -+#include -+ -+#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 -+#include -+#include -+ -+#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 -+ */ -+ -+#ifndef __LINUX_TC_SKBEDIT_H -+#define __LINUX_TC_SKBEDIT_H -+ -+#include -+ -+#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 -+ -+#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 -+ * 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 -+ -+#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 -+ * -+ * 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 -+ -+#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 -+#include -+ -+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 -+#include -+ -+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 -+#include -+ -+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, -+ * -+ * 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 -+#include -+#include -+ -+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 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< -+ -+/* 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 -+#include -+ -+/* -+ * 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 -+ -+#ifndef __ASSEMBLY__ -+ -+#include -+ -+ -+/* -+ * 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 -+ -+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 -+#include -+ -+/* 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 --- - 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 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 --- 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 #include -- -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 * 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 * Martin Josefsson 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 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 * 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 * 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 Signed-off-by: David Ahern --- - 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 Signed-off-by: Stephen Hemminger --- - 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 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 -- -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 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 +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 +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 + Acked-by: "Eric W. Biederman" +--- + 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 [4.11.0-25.el7_7.1] +- netns: make /var/run/netns bind-mount recursive (Andrea Claudi) [1772827] + * Fri Jun 21 2019 Andrea Claudi [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 [4.11.0-22.el7] - bpf: minor cleanups for bpf_trace_pipe (Andrea Claudi) [1465646] -* Mon Apr 29 2019 Andrea Claudi [4.11.0-21.el7] +* Tue Apr 30 2019 Andrea Claudi [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]