diff --git a/add-a-test-test-add-route.patch b/add-a-test-test-add-route.patch deleted file mode 100644 index ceba74f..0000000 --- a/add-a-test-test-add-route.patch +++ /dev/null @@ -1,44 +0,0 @@ -From 92d64e75d74aa7343769f9923d0a9294caa0cadd Mon Sep 17 00:00:00 2001 -From: chengyechun -Date: Thu, 16 Dec 2021 22:13:04 +0800 -Subject: [PATCH] add a test:test add route - ---- - tests/test-add-route.c | 25 +++++++++++++++++++++++++ - 1 file changed, 25 insertions(+) - create mode 100644 tests/test-add-route.c - -diff --git a/tests/test-add-route.c b/tests/test-add-route.c -new file mode 100644 -index 0000000..b93db60 ---- /dev/null -+++ b/tests/test-add-route.c -@@ -0,0 +1,25 @@ -+#include -+#include -+#include -+#include -+ -+ -+int main(int argc, char *argv[]) -+{ -+ struct nl_sock *sk; -+ struct rtnl_route *route; -+ struct nl_cache *link_cache, *route_cache; -+ char dst_addr[] = "10.10.10.0/23"; -+ char nexthop[] = "dev=eth0, via=10.10.10.10.1"; -+ int err; -+ sk = nl_cli_alloc_socket(); -+ nl_cli_connect(sk, NETLINK_ROUTE); -+ link_cache = nl_cli_link_alloc_cache(sk); -+ route_cache = nl_cli_route_alloc_cache(sk); -+ route = nl_cli_route_alloc(); -+ nl_Cli_route_parse_dst(route, dst_addr); -+ nl_cli_route_parse_nexthop(route, nexthop, link_cache); -+ if ((err = rtnl_route_add(sk, route, NLM_F_EXCL)) < 0) -+ nl_cli_fatal(err, "Unable to add route: %s", nl_geterror(err)); -+ return 0; -+} --- -2.23.0 - diff --git a/add-some-tests-about-addr-class-rule-neigh-qdisc.patch b/add-some-tests-about-addr-class-rule-neigh-qdisc.patch deleted file mode 100644 index 81703dd..0000000 --- a/add-some-tests-about-addr-class-rule-neigh-qdisc.patch +++ /dev/null @@ -1,533 +0,0 @@ -From f595a06ee2e7048b02bbdd4d69a9dd160f1819ef Mon Sep 17 00:00:00 2001 -From: chengyechun -Date: Sat, 18 Dec 2021 22:03:11 +0800 -Subject: [PATCH] add some tests - ---- - test-add-rule.c | 54 +++++++++++++++++++++++++++++++++++++++++++++++ - test-addr-add.c | 23 ++++++++++++++++++++ - test-addr-delete.c | 23 ++++++++++++++++++++ - test-class-add.c | 40 +++++++++++++++++++++++++++++++++++ - test-class-delete.c | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++++ - test-genl-connect.c | 29 ++++++++++++++++++++++++++ - test-link.c | 50 ++++++++++++++++++++++++++++++++++++++++++++ - test-neigh-add.c | 26 +++++++++++++++++++++++ - test-neigh-delete.c | 26 +++++++++++++++++++++++ - test-qdisc-add.c | 35 +++++++++++++++++++++++++++++++ - test-qdisc-delete.c | 35 +++++++++++++++++++++++++++++++ - test-route-delete.c | 25 ++++++++++++++++++++++ - 13 files changed, 434 insertions(+), 1 deletion(-) - create mode 100644 test-add-rule.c - create mode 100644 test-addr-add.c - create mode 100644 test-addr-delete.c - create mode 100644 test-class-add.c - create mode 100644 test-class-delete.c - create mode 100644 test-genl-connect.c - create mode 100644 test-link.c - create mode 100644 test-neigh-add.c - create mode 100644 test-neigh-delete.c - create mode 100644 test-qdisc-add.c - create mode 100644 test-qdisc-delete.c - create mode 100644 test-route-delete.c - -diff --git a/test-add-rule.c b/test-add-rule.c -new file mode 100644 -index 0000000..f18a520 ---- /dev/null -+++ b/test-add-rule.c -@@ -0,0 +1,54 @@ -+#include -+#include -+#include -+ -+ -+#define IPv6 -+ -+int main(int argc, char *argv[]) -+{ -+ struct nl_sock *sk; -+ struct rtnl_rule *rule; -+ struct nl_addr *src, *dst; -+ char baddr[4] = { 0x1, 0x2, 0x3, 0x4 }; -+ char baddr2[6] = { 0x1, 0x2, 0x3, 0x4, 0x5, 0x6 }; -+ int err; -+ -+ src = nl_addr_build(AF_UNSPEC, baddr, 4); -+ dst = nl_addr_build(AF_UNSPEC, baddr2, 6); -+ -+ sk = nl_socket_alloc(); -+ if ((err = nl_connect(sk, NETLINK_ROUTE)) < 0) { -+ nl_perror(err, "Unable to connect socket"); -+ return err; -+ } -+ rule = rtnl_rule_alloc(); -+ rtnl_rule_set_family(rule, AF_INET); -+ rtnl_rule_set_prio(rule, 12); -+ rtnl_rule_set_mark(rule, 12); -+ rtnl_rule_set_mask(rule, 16); -+ rtnl_rule_set_table(rule, 254); -+ rtnl_rule_set_dsfield(rule, 4); -+ rtnl_rule_set_src(rule, src); -+ rtnl_rule_set_dst(rule, dst); -+ rtnl_rule_set_iif(rule, "enp2s2"); -+ rtnl_rule_set_oif(rule, "enp2s7") -+ rtnl_rule_set_action(rule, 2); -+ rtnl_rule_set_l3mdev(rule, 1); -+ rtnl_rule_set_protocol(rule, 4); -+ rtnl_rule_get_family(rule); -+ rtnl_rule_get_prio(rule); -+ rtnl_rule_get_mark(rule); -+ rtnl_rule_get_mask(rule); -+ rtnl_rule_get_table(rule); -+ rtnl_rule_get_dsfield(rule); -+ rtnl_rule_get_src(rule); -+ rtnl_rule_get_dst(rule); -+ rtnl_rule_get_iif(rule); -+ rtnl_rule_get_oif(rule) -+ rtnl_rule_get_action(rule); -+ rtnl_rule_get_l3mdev(rule); -+ rtnl_rule_get_protocol(rule); -+ rtnl_rule_add(sk, rule, 4); -+ return 0; -+} -diff --git a/test-addr-add.c b/test-addr-add.c -new file mode 100644 -index 0000000..e7a8483 ---- /dev/null -+++ b/test-addr-add.c -@@ -0,0 +1,23 @@ -+#include -+#include -+#include -+#include -+ -+ -+int main(int argc, char *argv[]) -+{ -+ struct nl_sock *sock; -+ struct rtnl_addr *addr; -+ struct nl_cache *link_cache; -+ int err, nlflags = NLM_F_CREATE; -+ sock = nl_cli_alloc_socket(); -+ nl_cli_connect(sock, NETLINK_ROUTE); -+ link_cache = nl_cli_link_alloc_cache(sock); -+ addr = nl_cli_addr_alloc(); -+ nl_cli_addr_parse_local(addr, "10.10.16.2"); -+ nl_cli_addr_parse_dev(addr, link_cache, "eth0"); -+ nl_cli_addr_parse_family(addr, "AF_INET"); -+ if ((err = rtnl_addr_add(sock, addr, nlflags)) < 0) -+ nl_cli_fatal(err, "Unable to add address: %s", nl_geterror(err)); -+ return 0; -+} -diff --git a/test-addr-delete.c b/test-addr-delete.c -new file mode 100644 -index 0000000..e1e392b ---- /dev/null -+++ b/test-addr-delete.c -@@ -0,0 +1,23 @@ -+#include -+#include -+#include -+#include -+ -+ -+int main(int argc, char *argv[]) -+{ -+ struct nl_sock *sock; -+ struct rtnl_addr *addr; -+ struct nl_cache *link_cache; -+ int err, nlflags = NLM_F_CREATE; -+ sock = nl_cli_alloc_socket(); -+ nl_cli_connect(sock, NETLINK_ROUTE); -+ link_cache = nl_cli_link_alloc_cache(sock); -+ addr = nl_cli_addr_alloc(); -+ nl_cli_addr_parse_local(addr, "10.10.16.2"); -+ nl_cli_addr_parse_dev(addr, link_cache, "eth0"); -+ nl_cli_addr_parse_family(addr, "AF_INET"); -+ if ((err = rtnl_addr_delete(sock, addr, nlflags)) < 0) -+ nl_cli_fatal(err, "Unable to delete address: %s", nl_geterror(err)); -+ return 0; -+} -diff --git a/test-class-add.c b/test-class-add.c -new file mode 100644 -index 0000000..3ab3449 ---- /dev/null -+++ b/test-class-add.c -@@ -0,0 +1,40 @@ -+#include -+#include -+#include -+#include -+#include -+#include -+ -+ -+int main(int argc, char *argv[]) -+{ -+ struct nl_sock *sk; -+ struct rtnl_class *class; -+ struct rtnl_tc *tc; -+ struct nl_cache *link_cache; -+ struct nl_cli_tc_module *tm; -+ struct rtnl_tc_ops *ops; -+ int err, flags = NLM_C_CREATE | NLM_F_EXCL; -+ char kind[] = "htb"; -+ char *rate[] = {"--rate=100mbit"}; -+ sk = nl_cli_alloc_socket(); -+ nl_cli_connect(sk, NETLINK_ROUTE); -+ link_cache = nl_cli_link_alloc_cache(sk); -+ class = nl_cli_class_alloc(); -+ tc = (struct rtnl_tc *) class; -+ nl_cli_tc_prase_dev(tc, link_cache, "eth0"); -+ nl_cli_tc_parse_parent(tc, "root"); -+ if (!rtnl_tc_get_ifindex(tc)) -+ nl_cli_fatal(EINVAL, "You must specify a network device XXX"); -+ if (!rtnl_tc_get_parent(tc)) -+ nl_cli_fatal(EINVAL, "You must specify a parent XXX"); -+ rtnl_tc_set_kind(tc, kind); -+ if (!(ops = rtnl_tc_get_ops(tc))) -+ nl_cli_fatal(ENOENT, "Unknown class %s", kind); -+ if (!(tm = nl_cli_tc_lookup(ops))) -+ nl_cli_fatal(ENOTSUP, "class type %s not supported", kind); -+ tm->tm_parse_argv(tc, 1, rate); -+ if ((err = rtnl_class_add(sk, class, flags)) < 0) -+ nl_cli_fatal(EINVAL, "Unable to add class: %s", nl_geterror(err)); -+ return 0; -+} -diff --git a/test-class-delete.c b/test-class-delete.c -new file mode 100644 -index 0000000..0443b96 ---- /dev/null -+++ b/test-class-delete.c -@@ -0,0 +1,60 @@ -+#include -+#include -+#include -+#include -+#include -+#include -+ -+ -+static int quiet = 0, default_yes = 0, deleted = 0, interactive = 0; -+static struct nl_sock *sock; -+ -+ -+static void delete_cb(struct nl_object *obj, void *arg) -+{ -+ struct rtnl_class *class = nl_object_priv(obj); -+ struct nl_dump_params params = { -+ .dp_type = NL_DUMP_LIVE, -+ .pd_fd = stdout, -+ }; -+ int err; -+ if (interactive && !nl_cli_confirm(obj, ¶ms, default_yes)); -+ return; -+ if ((err = rtnl_class_delete(sock, class)) < 0) -+ nl_cli_fatal(err, "Unable to delete class :%s\n", nl_geterror(err)); -+ if (!quiet){ -+ printf("deleted\n"); -+ nl_object_dump(obj, ¶ms); -+ }; -+ deleted++; -+} -+ -+int main(int argc, char *argv[]) -+{ -+ struct nl_sock *sk; -+ struct rtnl_class *class; -+ struct rtnl_tc *tc; -+ struct nl_cache *link_cache, class_cache; -+ struct rtnl_tc_ops *ops; -+ struct nl_cli_tc_module *tm; -+ char kind[] = "htb"; -+ sk = nl_cli_alloc_socket(); -+ nl_cli_connect(sk, NETLINK_ROUTE); -+ link_cache = nl_cli_link_alloc_cache(sk); -+ class = nl_cli_class_alloc(); -+ tc = (struct rtnl_tc *) class; -+ nl_cli_tc_prase_dev(tc, link_cache, "eth0"); -+ nl_cli_tc_parse_parent(tc, "root"); -+ if (!rtnl_tc_get_ifindex(tc)) -+ nl_cli_fatal(EINVAL, "You must specify a network device XXX"); -+ if (!rtnl_tc_get_parent(tc)) -+ nl_cli_fatal(EINVAL, "You must specify a parent XXX"); -+ rtnl_tc_set_kind(tc, kind); -+ if (!(ops = rtnl_tc_get_ops(tc))) -+ nl_cli_fatal(ENOENT, "Unknown class %s", kind); -+ if (!(tm = nl_cli_tc_lookup(ops))) -+ nl_cli_fatal(ENOTSUP, "class type %s not supported", kind); -+ class_cache = nl_cli_class_alloc(sk, rtnl_tc_get_ifindex(tc)); -+ nl_cache_foreach_filter(class_cache, OBJ_CAST(class), delete_b, NULL); -+ return 0; -+} -diff --git a/test-genl-connect.c b/test-genl-connect.c -new file mode 100644 -index 0000000..f1d9690 ---- /dev/null -+++ b/test-genl-connect.c -@@ -0,0 +1,29 @@ -+#include -+#include -+#include -+#include -+ -+ -+int main(int argc, char *argv[]) -+{ -+ struct nl_sock *sk; -+ struct nl_cache *family_cache; -+ struct nl_dump_params params = { -+ .dp_type = NL_DUMP_LINE, -+ .dp_fd = stdout, -+ }; -+ int err; -+ -+ sk = nl_socket_alloc(); -+ if ((err = genl_connect(sk)) < 0) -+ printf("Unable create socket: %s", nl_geterror(err)); -+ nl_socket_enable_auto_ack(sk); -+ nl_socket_disable_auto_ack(sk); -+ nl_socket_set_buffer_size(sk, 2000, 2000); -+ nl_socket_get_fd(sk); -+ if ((err = nl_socket_add_membership(sk, 3456)) < 0) -+ printf("Unable join group 3456 %s", nl_geterror(err)); -+ family_cache = nl_cli_alloc_cache(sk, "generic netlink family", genl_ctrl_alloc_cache); -+ nl_cache_dump(family_cache, ¶ms); -+ return 0; -+} -diff --git a/test-link.c b/test-link.c -new file mode 100644 -index 0000000..87af00f ---- /dev/null -+++ b/test-link.c -@@ -0,0 +1,50 @@ -+#include -+#include -+#include -+#include -+#include -+#include -+ -+static int self_def_cb = NL_CB_DEBUG -+ -+int main(int argc, char *argv[]) -+{ -+ struct nl_sock *sk; -+ struct nl_cache *link_cache; -+ struct rtnl_link *link; -+ struct nl_addr *addr; -+ struct nl_cb *cb; -+ int err, ifindex, pid; -+ char *buf; -+ cb = nl_cb_alloc(self_def_cb); -+ if (!(sk = nl_socket_alloc_cb(cb))) -+ nl_cli_fatal(ENOBUFS, "Unable to allocate netlink socket"); -+ nl_cli_connect(sk, NETLINK_ROUTE); -+ nl_socket_disable_seq_check(sk); -+ nl_socket_disable_auto_ack(sk); -+ pid = getpid(); -+ nl_socket_set_local_port(sk, pid); -+ nl_join_groups(sk, pid); -+ nl_socket_drop_membership(sk, pid); -+ nl_socket_set_peer_port(sk, 0); -+ if (err = nl_socket_get_peer_port(sk)) -+ printf("peer_port:%d", err); -+ if (err = nl_socket_use_seq(sk)) -+ printf("sk->s_seq_next:%d", err); -+ link_cache = nl_cli_link_alloc_cache(sk); -+ link = nl_cli_link_alloc(); -+ if ((ifindex = rntl_link_get_ifindex(link)) == 0){ -+ printf("ifindex is not set, %d", ifindex); -+ rtnl_link_set_ifindex(link, 1); -+ }; -+ if (rtnl_link_get(link_cache, 1)){ -+ printf("now, link is cached"); -+ }else{ -+ nl_cache_add(link_cache, (struct nl_object *)link); -+ }; -+ rtnl_link_add(sk, link, AF_INET); -+ addr = rtnl_link_get_addr(link); -+ rtnl_link_get_type(link); -+ rtnl_link_put(link); -+ return 0; -+} -diff --git a/test-neigh-add.c b/test-neigh-add.c -new file mode 100644 -index 0000000..185edb4 ---- /dev/null -+++ b/test-neigh-add.c -@@ -0,0 +1,26 @@ -+#include -+#include -+#include -+#include -+ -+ -+int main(int argc, char *argv[]) -+{ -+ struct nl_sock *sk; -+ struct rtnl_neigh *neigh; -+ struct nl_cache *link_cache; -+ int err, 0k = 0, nlflags = NLM_F_REPLACE | NLM_F_CREATE; -+ char dst_addr[] = "10.0.0.1"; -+ char dev[] = "eth0"; -+ char lladdr[] = "AA:BB:CC:DD:EE:FF"; -+ sk = nl_cli_alloc_socket(); -+ nl_cli_connect(sk, NETLINK_ROUTE); -+ link_cache = nl_cli_link_alloc_cache(sk); -+ neigh = nl_cli_neigh_alloc(); -+ nl_cli_neigh_parse_dst(neigh, dst_addr); -+ nl_cli_neigh_parse_lladdr(neigh, lladdr); -+ nl_cli_neigh_parse_dev(neigh, link_cache, dev); -+ if ((err = rtnl_neigh_add(sk, neigh, nlflags)) < 0) -+ nl_cli_fatal(err, "Unable to add neighbour: %s", nl_geterror(rrr)); -+ return 0; -+} -diff --git a/test-neigh-delete.c b/test-neigh-delete.c -new file mode 100644 -index 0000000..e4eeb4e ---- /dev/null -+++ b/test-neigh-delete.c -@@ -0,0 +1,26 @@ -+#include -+#include -+#include -+#include -+ -+ -+int main(int argc, char *argv[]) -+{ -+ struct nl_sock *sk; -+ struct rtnl_neigh *neigh; -+ struct nl_cache *link_cache; -+ int err, 0k = 0, nlflags = NLM_F_REPLACE | NLM_F_CREATE; -+ char dst_addr[] = "10.0.0.1"; -+ char dev[] = "eth0"; -+ char lladdr[] = "AA:BB:CC:DD:EE:FF"; -+ sk = nl_cli_alloc_socket(); -+ nl_cli_connect(sk, NETLINK_ROUTE); -+ link_cache = nl_cli_link_alloc_cache(sk); -+ neigh = nl_cli_neigh_alloc(); -+ nl_cli_neigh_parse_dst(neigh, dst_addr); -+ nl_cli_neigh_parse_lladdr(neigh, lladdr); -+ nl_cli_neigh_parse_dev(neigh, link_cache, dev); -+ if ((err = rtnl_neigh_delete(sk, neigh, nlflags)) < 0) -+ nl_cli_fatal(err, "Unable to add neighbour: %s", nl_geterror(rrr)); -+ return 0; -+} -diff --git a/test-qdisc-add.c b/test-qdisc-add.c -new file mode 100644 -index 0000000..2e48ef5 ---- /dev/null -+++ b/test-qdisc-add.c -@@ -0,0 +1,35 @@ -+#include -+#include -+#include -+#include -+#include -+#include -+ -+int main(int argc, char *argv[]) -+{ -+ struct nlk_sock *sk; -+ struct rtnl_qdisc *qdisc; -+ struct rtnl_tc *tc; -+ struct nl_cache *link_cache; -+ int err, flags = NLM_F_CREATE | NLM_F_EXCL; -+ struct nl_cli_tc_module *tm; -+ struct rtnl_tc_ops *ops; -+ char kind[] = "htb"; -+ sk = nl_cli_alloc_socket(); -+ nl_cli_connect(sk, NETLINK_ROUTE); -+ link_cache = nl_cli_link_alloc_cache(sk); -+ qdisc = nl_cli_qdisc_alloc(); -+ tc = (struct rtnl_tc *) qdisc; -+ nl_cli_tc_parse_dev(tc, link_cache, "eth0"); -+ nl_cli_tc_parse_parent(tc, "root"); -+ rtnl_tc_get_ifindex(tc); -+ rtnl_tc_get_handle(tc); -+ rtnl_tc_set_kind(tc, kind); -+ if (!(ops = rtnl_tc_get_ops(tc))) -+ nl_cli_fatal(ENOENT, "Unknown qdisc %s", kind); -+ if (!(tm - nl_cli_tc_lookup(ops))) -+ nl_cli_fatal(ENOTSUP, "qdisc type %s not supported", kind); -+ if ((err = rtnl_qdisc_add(sk, qdisc, flags)) < 0) -+ nl_cli_fatal(EINVAL, "Unable to add qdisc %s", nl_geterror(err)); -+ return 0; -+} -diff --git a/test-qdisc-delete.c b/test-qdisc-delete.c -new file mode 100644 -index 0000000..ab170e1 ---- /dev/null -+++ b/test-qdisc-delete.c -@@ -0,0 +1,35 @@ -+#include -+#include -+#include -+#include -+#include -+#include -+ -+int main(int argc, char *argv[]) -+{ -+ struct nlk_sock *sk; -+ struct rtnl_qdisc *qdisc; -+ struct rtnl_tc *tc; -+ struct nl_cache *link_cache; -+ int err, flags = NLM_F_CREATE | NLM_F_EXCL; -+ struct nl_cli_tc_module *tm; -+ struct rtnl_tc_ops *ops; -+ char kind[] = "htb"; -+ sk = nl_cli_alloc_socket(); -+ nl_cli_connect(sk, NETLINK_ROUTE); -+ link_cache = nl_cli_link_alloc_cache(sk); -+ qdisc = nl_cli_qdisc_alloc(); -+ tc = (struct rtnl_tc *) qdisc; -+ nl_cli_tc_parse_dev(tc, link_cache, "eth0"); -+ nl_cli_tc_parse_parent(tc, "root"); -+ rtnl_tc_get_ifindex(tc); -+ rtnl_tc_get_handle(tc); -+ rtnl_tc_set_kind(tc, kind); -+ if (!(ops = rtnl_tc_get_ops(tc))) -+ nl_cli_fatal(ENOENT, "Unknown qdisc %s", kind); -+ if (!(tm - nl_cli_tc_lookup(ops))) -+ nl_cli_fatal(ENOTSUP, "qdisc type %s not supported", kind); -+ if ((err = rtnl_qdisc_delete(sk, qdisc)) < 0) -+ nl_cli_fatal(EINVAL, "Unable to delete qdisc %s", nl_geterror(err)); -+ return 0; -+} -diff --git a/test-route-delete.c b/test-route-delete.c -new file mode 100644 -index 0000000..a3b76c2 ---- /dev/null -+++ b/test-route-delete.c -@@ -0,0 +1,25 @@ -+#include -+#include -+#include -+#include -+ -+ -+int main(int argc, char *argv[]) -+{ -+ struct nl_sock *sk; -+ struct rtnl_route *route; -+ struct nl_cache *link_cache; -+ char dst_addr[] = "10.10.16.0/23"; -+ char nexthop[] = "dev=eth0,via=10.10.16.1"; -+ int err; -+ -+ sk = nl_cli_allco_socket(); -+ nl_cli_connect(sk, NETLINK_ROUTE); -+ link_cahce = nl_cli_link_alloc_cache(sk); -+ route = nl_cli_route_alloc(); -+ nl_cli_route_parse_dst(route, dst_addr); -+ nl_cli_route_parse_nexthop(route, nexthop, link_cache); -+ if ((err = rtnl_route_delete(sk, route, NLM_F_EXCL)) < 0) -+ nl_cli_fatal(err, "Unable to add route: %s", nl_geterror(err)); -+ return 0; -+} --- -1.8.3.1 - diff --git a/backport-lib-add-include-netlink-private-nl-auto-h-header.patch b/backport-lib-add-include-netlink-private-nl-auto-h-header.patch deleted file mode 100644 index 43f95c6..0000000 --- a/backport-lib-add-include-netlink-private-nl-auto-h-header.patch +++ /dev/null @@ -1,123 +0,0 @@ -From abb7391f38893af7d6108f97ac8597468f113a41 Mon Sep 17 00:00:00 2001 -From: Thomas Haller -Date: Wed, 15 Apr 2020 12:42:05 +0200 -Subject: [PATCH] lib: add "include/netlink-private/nl-auto.h" header - -Conflict:NA -Reference:https://github.com/thom311/libnl/commit/abb7391f38893af7d6108f97ac8597468f113a41 - ---- - Makefile.am | 1 + - include/netlink-private/nl-auto.h | 60 +++++++++++++++++++++++++++++++ - include/netlink-private/utils.h | 14 ++------ - 3 files changed, 63 insertions(+), 12 deletions(-) - create mode 100644 include/netlink-private/nl-auto.h - -diff --git a/Makefile.am b/Makefile.am -index b2e87379..085da53f 100644 ---- a/Makefile.am -+++ b/Makefile.am -@@ -261,6 +261,7 @@ noinst_HEADERS = \ - include/netlink-private/cache-api.h \ - include/netlink-private/genl.h \ - include/netlink-private/netlink.h \ -+ include/netlink-private/nl-auto.h \ - include/netlink-private/object-api.h \ - include/netlink-private/route/link/api.h \ - include/netlink-private/route/link/sriov.h \ -diff --git a/include/netlink-private/nl-auto.h b/include/netlink-private/nl-auto.h -new file mode 100644 -index 00000000..7b923f26 ---- /dev/null -+++ b/include/netlink-private/nl-auto.h -@@ -0,0 +1,60 @@ -+// SPDX-License-Identifier: LGPL-2.1+ -+ -+#ifndef NETLINK_NL_AUTO_H_ -+#define NETLINK_NL_AUTO_H_ -+ -+#define _nl_auto(fcn) __attribute__ ((__cleanup__(fcn))) -+ -+#define _NL_AUTO_DEFINE_FCN_VOID0(CastType, name, func) \ -+static inline void name(void *v) \ -+{ \ -+ if (*((CastType *) v)) \ -+ func(*((CastType *) v)); \ -+} -+ -+#define _NL_AUTO_DEFINE_FCN_TYPED0(CastType, name, func) \ -+static inline void name(CastType *v) \ -+{ \ -+ if (*v) \ -+ func(*v); \ -+} -+ -+#define _nl_auto_free _nl_auto(_nl_auto_free_fcn) -+_NL_AUTO_DEFINE_FCN_VOID0(void *, _nl_auto_free_fcn, free) -+ -+struct nl_addr; -+void nl_addr_put(struct nl_addr *); -+#define _nl_auto_nl_addr _nl_auto(_nl_auto_nl_addr_fcn) -+_NL_AUTO_DEFINE_FCN_TYPED0(struct nl_addr *, _nl_auto_nl_addr_fcn, nl_addr_put) -+ -+struct nl_msg; -+void nlmsg_free(struct nl_msg *); -+#define _nl_auto_nl_msg _nl_auto(_nl_auto_nl_msg_fcn) -+_NL_AUTO_DEFINE_FCN_TYPED0(struct nl_msg *, _nl_auto_nl_msg_fcn, nlmsg_free) -+ -+struct rtnl_link; -+void rtnl_link_put(struct rtnl_link *); -+#define _nl_auto_rtnl_link _nl_auto(_nl_auto_rtnl_link_fcn) -+_NL_AUTO_DEFINE_FCN_TYPED0(struct rtnl_link *, _nl_auto_rtnl_link_fcn, rtnl_link_put) -+ -+struct rtnl_route; -+void rtnl_route_put(struct rtnl_route *); -+#define _nl_auto_rtnl_route _nl_auto(_nl_auto_rtnl_route_fcn) -+_NL_AUTO_DEFINE_FCN_TYPED0(struct rtnl_route *, _nl_auto_rtnl_route_fcn, rtnl_route_put) -+ -+struct rtnl_nexthop; -+void rtnl_route_nh_free(struct rtnl_nexthop *); -+#define _nl_auto_rtnl_nexthop _nl_auto(_nl_auto_rtnl_nexthop_fcn) -+_NL_AUTO_DEFINE_FCN_TYPED0(struct rtnl_nexthop *, _nl_auto_rtnl_nexthop_fcn, rtnl_route_nh_free) -+ -+struct nl_cache; -+void nl_cache_put(struct nl_cache *); -+#define _nl_auto_nl_cache _nl_auto(_nl_auto_nl_cache_fcn) -+_NL_AUTO_DEFINE_FCN_TYPED0(struct nl_cache *, _nl_auto_nl_cache_fcn, nl_cache_put) -+ -+struct rtnl_link_af_ops; -+void rtnl_link_af_ops_put(struct rtnl_link_af_ops *); -+#define _nl_auto_rtnl_link_af_ops _nl_auto(_nl_auto_rtnl_link_af_ops_fcn) -+_NL_AUTO_DEFINE_FCN_TYPED0(struct rtnl_link_af_ops *, _nl_auto_rtnl_link_af_ops_fcn, rtnl_link_af_ops_put) -+ -+#endif /* NETLINK_NL_AUTO_H_ */ -diff --git a/include/netlink-private/utils.h b/include/netlink-private/utils.h -index 9c5a3d82..46e77451 100644 ---- a/include/netlink-private/utils.h -+++ b/include/netlink-private/utils.h -@@ -85,18 +85,6 @@ - - /*****************************************************************************/ - --#define _NL_AUTO_DEFINE_FCN_VOID0(CastType, name, func) \ --static inline void name (void *v) \ --{ \ -- if (*((CastType *) v)) \ -- func (*((CastType *) v)); \ --} -- --#define _nl_auto_free _nl_auto(_nl_auto_free_fcn) --_NL_AUTO_DEFINE_FCN_VOID0 (void *, _nl_auto_free_fcn, free) -- --/*****************************************************************************/ -- - extern const char *nl_strerror_l(int err); - - /*****************************************************************************/ -@@ -222,4 +210,6 @@ _nl_strncpy(char *dst, const char *src, size_t len) - return dst; - } - -+#include "nl-auto.h" -+ - #endif diff --git a/backport-lib-use-proper-int-type-for-id-attributes-in-nl_object_identical.patch b/backport-lib-use-proper-int-type-for-id-attributes-in-nl_object_identical.patch deleted file mode 100644 index bb6e7ff..0000000 --- a/backport-lib-use-proper-int-type-for-id-attributes-in-nl_object_identical.patch +++ /dev/null @@ -1,29 +0,0 @@ -From f9d0181ceb2fc7c54abf89eff4c6b57e8fe6dd97 Mon Sep 17 00:00:00 2001 -From: Thomas Haller -Date: Fri, 17 Apr 2020 16:31:10 +0200 -Subject: [PATCH] lib: use proper int type for id attributes in - nl_object_identical() - -Conflict:NA -Reference:https://github.com/thom311/libnl/commit/f9d0181ceb2fc7c54abf89eff4c6b57e8fe6dd97 - ---- - lib/object.c | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - -diff --git a/lib/object.c b/lib/object.c -index d15cd152..07a21d22 100644 ---- a/lib/object.c -+++ b/lib/object.c -@@ -314,8 +314,9 @@ int nl_object_identical(struct nl_object *a, struct nl_object *b) - return 0; - - if (ops->oo_id_attrs_get) { -- int req_attrs_a = ops->oo_id_attrs_get(a); -- int req_attrs_b = ops->oo_id_attrs_get(b); -+ uint32_t req_attrs_a = ops->oo_id_attrs_get(a); -+ uint32_t req_attrs_b = ops->oo_id_attrs_get(b); -+ - if (req_attrs_a != req_attrs_b) - return 0; - req_attrs = req_attrs_a; diff --git a/backport-route-link-Check-for-null-pointer-in-macvlan.patch b/backport-route-link-Check-for-null-pointer-in-macvlan.patch deleted file mode 100644 index f98be4b..0000000 --- a/backport-route-link-Check-for-null-pointer-in-macvlan.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 01ea9a6224b77292e8506bf179729aeeaac30398 Mon Sep 17 00:00:00 2001 -From: Jan Slomski -Date: Wed, 21 Mar 2018 10:23:57 +0100 -Subject: [PATCH] route/link: Check for null pointer in macvlan - -In cases where link->l_info is not set, a null-ptr-exception -will be invoked. - -https://github.com/thom311/libnl/pull/238 - -Conflict:NA -Reference:https://github.com/thom311/libnl/commit/01ea9a6224b77292e8506bf179729aeeaac30398 -Reference:https://github.com/thom311/libnl/commit/9cc38dcaeb55b5729c6c97b47884cebbda72b693 ---- - lib/route/link/macvlan.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/lib/route/link/macvlan.c b/lib/route/link/macvlan.c -index a23fe6d8..3ccebf45 100644 ---- a/lib/route/link/macvlan.c -+++ b/lib/route/link/macvlan.c -@@ -149,6 +149,8 @@ static void macvlan_free(struct rtnl_link *link) - uint32_t i; - - mvi = link->l_info; -+ if (!mvi) -+ return; - - for (i = 0; i < mvi->mvi_maccount; i++) - nl_addr_put(mvi->mvi_macaddr[i]); diff --git a/backport-route-link-add-RTNL_LINK_REASM_OVERLAPS-stat.patch b/backport-route-link-add-RTNL_LINK_REASM_OVERLAPS-stat.patch deleted file mode 100644 index 488a12b..0000000 --- a/backport-route-link-add-RTNL_LINK_REASM_OVERLAPS-stat.patch +++ /dev/null @@ -1,66 +0,0 @@ -From bab9e77c87d3b596e77d669b0a827b50e725bb62 Mon Sep 17 00:00:00 2001 -From: Ilya Pronin -Date: Fri, 3 Apr 2020 20:00:37 -0700 -Subject: [PATCH] route/link: add RTNL_LINK_REASM_OVERLAPS stat - -The new stat exposes IPSTATS_MIB_REASM_OVERLAPS link stat. However, the -original motivation for this change was fixing the issue with missing RX -packets link stat. - -The regression was introduced in version 3.5.0 with commit 73c1d047, -that added a new enum constant IPSTATS_MIB_REASM_OVERLAPS. Without this -patch, IPSTATS_MIB_REASM_OVERLAPS is missing from -map_stat_id_from_IPSTATS_MIB_v2 and is mapped by it to 0. This tricks -inet6_parse_protinfo() into erroneously overwriting RTNL_LINK_RX_PACKETS -stat, which happens to have value 0, when it tries to set -IPSTATS_MIB_REASM_OVERLAPS. - -Fixes: 73c1d0479643 ('Sync linux headers to 4.19.66') - -https://github.com/thom311/libnl/pull/235 - -Conflict:NA -Reference:https://github.com/thom311/libnl/commit/bab9e77c87d3b596e77d669b0a827b50e725bb62 - ---- - include/netlink/route/link.h | 1 + - lib/route/link.c | 1 + - lib/route/link/inet6.c | 1 + - 3 files changed, 3 insertions(+) - -diff --git a/include/netlink/route/link.h b/include/netlink/route/link.h -index 516d8e16..d0d6d2b5 100644 ---- a/include/netlink/route/link.h -+++ b/include/netlink/route/link.h -@@ -93,6 +93,7 @@ typedef enum { - RTNL_LINK_IP6_ECT0PKTS, /*!< IPv6 SNMP InECT0Pkts */ - RTNL_LINK_IP6_CEPKTS, /*!< IPv6 SNMP InCEPkts */ - RTNL_LINK_RX_NOHANDLER, /*!< Received packets dropped on inactive device */ -+ RTNL_LINK_REASM_OVERLAPS, /*!< SNMP ReasmOverlaps */ - __RTNL_LINK_STATS_MAX, - } rtnl_link_stat_id_t; - -diff --git a/lib/route/link.c b/lib/route/link.c -index 9439fe6d..ed6f4558 100644 ---- a/lib/route/link.c -+++ b/lib/route/link.c -@@ -3007,6 +3007,7 @@ static const struct trans_tbl link_stats[] = { - __ADD(RTNL_LINK_IP6_ECT0PKTS, Ip6_InECT0Pkts), - __ADD(RTNL_LINK_IP6_CEPKTS, Ip6_InCEPkts), - __ADD(RTNL_LINK_RX_NOHANDLER, rx_nohandler), -+ __ADD(RTNL_LINK_REASM_OVERLAPS, ReasmOverlaps), - }; - - char *rtnl_link_stat2str(int st, char *buf, size_t len) -diff --git a/lib/route/link/inet6.c b/lib/route/link/inet6.c -index c977b617..1ad49bf1 100644 ---- a/lib/route/link/inet6.c -+++ b/lib/route/link/inet6.c -@@ -135,6 +135,7 @@ static const uint8_t map_stat_id_from_IPSTATS_MIB_v2[__IPSTATS_MIB_MAX] = { - [33] = RTNL_LINK_IP6_ECT1PKTS, /* IPSTATS_MIB_ECT1PKTS */ - [34] = RTNL_LINK_IP6_ECT0PKTS, /* IPSTATS_MIB_ECT0PKTS */ - [35] = RTNL_LINK_IP6_CEPKTS, /* IPSTATS_MIB_CEPKTS */ -+ [36] = RTNL_LINK_REASM_OVERLAPS, /* IPSTATS_MIB_REASM_OVERLAPS */ - }; - - static int inet6_parse_protinfo(struct rtnl_link *link, struct nlattr *attr, diff --git a/backport-rtnl-link-fix-leaking-rtnl_link_af_ops-in-link_msg_parser.patch b/backport-rtnl-link-fix-leaking-rtnl_link_af_ops-in-link_msg_parser.patch deleted file mode 100644 index cc8cbb9..0000000 --- a/backport-rtnl-link-fix-leaking-rtnl_link_af_ops-in-link_msg_parser.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 2957d8f6c8bf1189545a7b0c1a49c4ccb26984a1 Mon Sep 17 00:00:00 2001 -From: Thomas Haller -Date: Wed, 15 Apr 2020 14:01:09 +0200 -Subject: [PATCH] rtnl/link: fix leaking rtnl_link_af_ops in link_msg_parser() - -Conflict:NA -Reference:https://github.com/thom311/libnl/commit/2957d8f6c8bf1189545a7b0c1a49c4ccb26984a1 - ---- - lib/route/link.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/lib/route/link.c b/lib/route/link.c -index 0ce4b0ab..b73a8c5f 100644 ---- a/lib/route/link.c -+++ b/lib/route/link.c -@@ -722,6 +722,8 @@ static int link_msg_parser(struct nl_cache_ops *ops, struct sockaddr_nl *who, - int remaining; - - nla_for_each_nested(af_attr, tb[IFLA_AF_SPEC], remaining) { -+ _nl_auto_rtnl_link_af_ops struct rtnl_link_af_ops *af_ops = NULL; -+ - af_ops = af_lookup_and_alloc(link, nla_type(af_attr)); - if (af_ops && af_ops->ao_parse_af) { - char *af_data = link->l_af_data[nla_type(af_attr)]; diff --git a/backport-rtnl-route-fix-NLE_NOMEM-handling-in-parse_multipath.patch b/backport-rtnl-route-fix-NLE_NOMEM-handling-in-parse_multipath.patch deleted file mode 100644 index 77d5c61..0000000 --- a/backport-rtnl-route-fix-NLE_NOMEM-handling-in-parse_multipath.patch +++ /dev/null @@ -1,40 +0,0 @@ -From fca338b9f453295037f96e8fe9236ebb4763dd25 Mon Sep 17 00:00:00 2001 -From: Thomas Haller -Date: Wed, 15 Apr 2020 13:17:40 +0200 -Subject: [PATCH] rtnl/route: fix NLE_NOMEM handling in parse_multipath() - -Conflict:NA -Reference:https://github.com/thom311/libnl/commit/fca338b9f453295037f96e8fe9236ebb4763dd25 - ---- - lib/route/route_obj.c | 8 ++++++-- - 1 file changed, 6 insertions(+), 2 deletions(-) - -diff --git a/lib/route/route_obj.c b/lib/route/route_obj.c -index b5cc4ed4..de56a76b 100644 ---- a/lib/route/route_obj.c -+++ b/lib/route/route_obj.c -@@ -1072,8 +1072,10 @@ static int parse_multipath(struct rtnl_route *route, struct nlattr *attr) - - addr = nl_addr_alloc_attr(ntb[RTA_NEWDST], - route->rt_family); -- if (!addr) -+ if (!addr) { -+ err = -NLE_NOMEM; - goto errout; -+ } - - err = rtnl_route_nh_set_newdst(nh, addr); - nl_addr_put(addr); -@@ -1085,8 +1087,10 @@ static int parse_multipath(struct rtnl_route *route, struct nlattr *attr) - struct nl_addr *addr; - - addr = rtnl_route_parse_via(ntb[RTA_VIA]); -- if (!addr) -+ if (!addr) { -+ err = -NLE_NOMEM; - goto errout; -+ } - - err = rtnl_route_nh_set_via(nh, addr); - nl_addr_put(addr); diff --git a/libnl-3.5.0.tar.gz b/libnl-3.5.0.tar.gz deleted file mode 100644 index 049b1ca..0000000 Binary files a/libnl-3.5.0.tar.gz and /dev/null differ diff --git a/libnl-3.7.0.tar.gz b/libnl-3.7.0.tar.gz new file mode 100644 index 0000000..f7ab177 Binary files /dev/null and b/libnl-3.7.0.tar.gz differ diff --git a/libnl3.spec b/libnl3.spec index 4b45310..81601d4 100644 --- a/libnl3.spec +++ b/libnl3.spec @@ -1,20 +1,10 @@ Name: libnl3 -Version: 3.5.0 -Release: 6 +Version: 3.7.0 +Release: 1 Summary: Providing APIs to netlink protocol based Linux kernel interfaces License: LGPLv2 URL: http://www.infradead.org/~tgr/libnl/ -Source: https://github.com/thom311/libnl/releases/download/libnl3_5_0/libnl-3.5.0.tar.gz - -Patch6000: backport-lib-add-include-netlink-private-nl-auto-h-header.patch -Patch6001: backport-lib-use-proper-int-type-for-id-attributes-in-nl_object_identical.patch -Patch6002: backport-route-link-add-RTNL_LINK_REASM_OVERLAPS-stat.patch -Patch6003: backport-route-link-Check-for-null-pointer-in-macvlan.patch -Patch6004: backport-rtnl-link-fix-leaking-rtnl_link_af_ops-in-link_msg_parser.patch -Patch6005: backport-rtnl-route-fix-NLE_NOMEM-handling-in-parse_multipath.patch -Patch9000: solve-redefinition-of-struct-ipv6_mreq.patch -Patch9001: add-a-test-test-add-route.patch -Patch9002: add-some-tests-about-addr-class-rule-neigh-qdisc.patch +Source: https://github.com/thom311/libnl/releases/download/libnl3_7_0/libnl-3.7.0.tar.gz BuildRequires: flex bison libtool autoconf automake swig Requires: %{name} = %{version}-%{release} @@ -99,6 +89,12 @@ cd python %{python3_sitearch}/netlink-*.egg-info %changelog +* Wed Nov 9 2022 chengyechun - 3.7.0-1 +- Type:enhancement +- ID:NA +- SUG:NA +- DESC:update to libnl-3.7.0 + * Sat Dec 18 2021 chengyechun - 3.5.0-6 - Type:bugfix - ID:NA diff --git a/solve-redefinition-of-struct-ipv6_mreq.patch b/solve-redefinition-of-struct-ipv6_mreq.patch deleted file mode 100644 index af3b66c..0000000 --- a/solve-redefinition-of-struct-ipv6_mreq.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -uNrp libnl-3.2.28/include/linux-private/linux/if_bridge.h libnl-3.2.28-new//include/linux-private/linux/if_bridge.h ---- libnl-3.2.28/include/linux-private/linux/if_bridge.h 2016-06-29 17:04:28.000000000 +0800 -+++ libnl-3.2.28-new//include/linux-private/linux/if_bridge.h 2016-11-26 13:46:11.000000000 +0800 -@@ -15,7 +15,7 @@ - - #include - #include --#include -+#include - - #define SYSFS_BRIDGE_ATTR "bridge" - #define SYSFS_BRIDGE_FDB "brforward"