commit 16f2b7d

Michael Forney  ·  2024-03-16 07:17:10 +0000 UTC
parent c4b34c2
iproute2: Update to 6.8.0
19 files changed,  +465, -623
+15, -6
 1@@ -1,12 +1,16 @@
 2 cflags{
 3 	'-Wall', '-Wformat=2', '-Wmissing-declarations', '-Wmissing-prototypes',
 4 	'-Wold-style-definition', '-Wstrict-prototypes', '-Wno-maybe-uninitialized',
 5-	'-Wno-format-truncation',
 6+	'-Wno-format-truncation', '-Wno-stringop-overflow',
 7 	'-Wno-cpp',  -- we don't have libmnl
 8 	'-D _GNU_SOURCE',
 9 	'-D HAVE_SETNS',
10 	'-D HAVE_HANDLE_AT',
11+	[[-D 'CONF_USR_DIR="/share/iproute2"']],
12+	[[-D 'CONF_ETC_DIR="/etc/iproute2"']],
13 	[[-D 'NETNS_RUN_DIR="/run/netns"']],
14+	[[-D 'NETNS_ETC_DIR="/etc/netns"']],
15+	'-D CONF_COLOR=COLOR_OPT_AUTO',
16 	'-I $srcdir/include',
17 	'-I $srcdir/include/uapi',
18 	'-I $srcdir/misc',
19@@ -22,7 +26,10 @@ lib('libnetlink.a', [[lib/(
20 
21 	utils.c utils_math.c rt_names.c ll_map.c ll_types.c ll_proto.c ll_addr.c
22 	inet_proto.c namespace.c json_writer.c json_print.c json_print_math.c
23-	names.c color.c bpf_legacy.c bpf_glue.c exec.c fs.c cg_map.c
24+	names.c color.c bpf_legacy.c bpf_glue.c exec.c fs.c cg_map.c ppp_proto.c
25+
26+	selinux.c
27+
28 	ax25_ntop.c
29 	rose_ntop.c
30 	mpls_ntop.c mpls_pton.c
31@@ -39,16 +46,17 @@ exe('bin/ip', [[ip/(
32 	iplink_macvlan.c ipl2tp.c link_vti.c link_vti6.c link_xfrm.c
33 	iplink_vxlan.c tcp_metrics.c iplink_ipoib.c ipnetconf.c link_ip6tnl.c
34 	link_iptnl.c link_gre6.c iplink_bond.c iplink_bond_slave.c iplink_hsr.c
35-	iplink_bridge.c iplink_bridge_slave.c ipfou.c iplink_ipvlan.c
36+	iplink_bridge.c iplink_bridge_slave.c iplink_dsa.c ipfou.c iplink_ipvlan.c
37 	iplink_geneve.c iplink_vrf.c iproute_lwtunnel.c ipmacsec.c ipila.c
38 	ipvrf.c iplink_xstats.c ipseg6.c iplink_netdevsim.c iplink_rmnet.c
39 	ipnexthop.c ipmptcp.c iplink_bareudp.c iplink_wwan.c ipioam6.c
40-	iplink_amt.c
41+	iplink_amt.c iplink_batadv.c iplink_gtp.c iplink_virt_wifi.c
42+	iplink_netkit.c ipstats.c
43 ) libnetlink.a]])
44 file('bin/ip', '755', '$outdir/bin/ip')
45 
46 exe('bin/bridge', [[
47-	bridge/(bridge.c fdb.c monitor.c link.c mdb.c vlan.c)
48+	bridge/(bridge.c fdb.c monitor.c link.c mdb.c vlan.c vni.c)
49 	libnetlink.a
50 ]])
51 file('bin/bridge', '755', '$outdir/bin/bridge')
52@@ -68,9 +76,10 @@ for _, name in ipairs{'ip-address', 'ip-link', 'ip-netns', 'ip-route'} do
53 	local out = '$outdir/'..name..'.8'
54 	build('sed', out, '$srcdir/man/man8/'..name..'.8.in', {
55 		expr={
56-			'-e s,@SYSCONFDIR@,/etc,g',
57 			'-e s,@NETNS_ETC_DIR@,/etc/netns,g',
58 			'-e s,@NETNS_RUN_DIR@,/run/netns,g',
59+			'-e s,@SYSCONF_ETC_DIR@,/etc/iproute2,g',
60+			'-e s,@SYSCONF_USR_DIR@,/share/iproute2,g',
61 		},
62 	})
63 	man{out}
+22, -22
  1@@ -1,4 +1,4 @@
  2-From fd0745e3e85d892520ca9d7ba42bb2603c969900 Mon Sep 17 00:00:00 2001
  3+From 17a43a947323ea84d9ca633f488ca6eab8e3bfd8 Mon Sep 17 00:00:00 2001
  4 From: Michael Forney <mforney@mforney.org>
  5 Date: Sat, 25 Apr 2015 17:37:46 +0000
  6 Subject: [PATCH] Fix includes for musl libc
  7@@ -21,7 +21,7 @@ Subject: [PATCH] Fix includes for musl libc
  8  14 files changed, 14 insertions(+), 14 deletions(-)
  9 
 10 diff --git a/bridge/fdb.c b/bridge/fdb.c
 11-index 8912f092..78f69cec 100644
 12+index 7b444366..17487c69 100644
 13 --- a/bridge/fdb.c
 14 +++ b/bridge/fdb.c
 15 @@ -18,7 +18,6 @@
 16@@ -33,7 +33,7 @@ index 8912f092..78f69cec 100644
 17  #include <string.h>
 18  #include <limits.h>
 19 diff --git a/bridge/mdb.c b/bridge/mdb.c
 20-index 7b5863d3..e62bfce3 100644
 21+index 196363a5..ba499e49 100644
 22 --- a/bridge/mdb.c
 23 +++ b/bridge/mdb.c
 24 @@ -11,7 +11,6 @@
 25@@ -43,9 +43,9 @@ index 7b5863d3..e62bfce3 100644
 26 -#include <linux/if_ether.h>
 27  #include <string.h>
 28  #include <arpa/inet.h>
 29- 
 30+ #include <netdb.h>
 31 diff --git a/bridge/vlan.c b/bridge/vlan.c
 32-index 8300f353..793d95d1 100644
 33+index 5352eb24..a5035ab1 100644
 34 --- a/bridge/vlan.c
 35 +++ b/bridge/vlan.c
 36 @@ -7,7 +7,6 @@
 37@@ -57,7 +57,7 @@ index 8300f353..793d95d1 100644
 38  #include <errno.h>
 39  
 40 diff --git a/include/uapi/linux/if_bridge.h b/include/uapi/linux/if_bridge.h
 41-index d1b5fdee..b5a9217d 100644
 42+index c206cf6d..5ba206b5 100644
 43 --- a/include/uapi/linux/if_bridge.h
 44 +++ b/include/uapi/linux/if_bridge.h
 45 @@ -14,8 +14,9 @@
 46@@ -72,7 +72,7 @@ index d1b5fdee..b5a9217d 100644
 47  
 48  #define SYSFS_BRIDGE_ATTR	"bridge"
 49 diff --git a/include/uapi/linux/if_tunnel.h b/include/uapi/linux/if_tunnel.h
 50-index c7f0a5e6..4cfcf216 100644
 51+index edaea41c..d28d9d12 100644
 52 --- a/include/uapi/linux/if_tunnel.h
 53 +++ b/include/uapi/linux/if_tunnel.h
 54 @@ -2,8 +2,9 @@
 55@@ -116,10 +116,10 @@ index 86d961c9..cbe835e4 100644
 56  #include <linux/if_packet.h>
 57  #include <linux/if_link.h>
 58 diff --git a/ip/ip6tunnel.c b/ip/ip6tunnel.c
 59-index 5399f91d..c712d664 100644
 60+index 347bd46a..5e55e3ea 100644
 61 --- a/ip/ip6tunnel.c
 62 +++ b/ip/ip6tunnel.c
 63-@@ -27,8 +27,8 @@
 64+@@ -14,8 +14,8 @@
 65  #include <sys/socket.h>
 66  #include <arpa/inet.h>
 67  #include <sys/ioctl.h>
 68@@ -130,10 +130,10 @@ index 5399f91d..c712d664 100644
 69  #include <linux/if_tunnel.h>
 70  #include <linux/ip6_tunnel.h>
 71 diff --git a/ip/ipl2tp.c b/ip/ipl2tp.c
 72-index 77bc3249..f090390f 100644
 73+index 87a4b898..9d1e566c 100644
 74 --- a/ip/ipl2tp.c
 75 +++ b/ip/ipl2tp.c
 76-@@ -19,7 +19,7 @@
 77+@@ -14,7 +14,7 @@
 78  #include <sys/socket.h>
 79  #include <arpa/inet.h>
 80  #include <sys/ioctl.h>
 81@@ -143,10 +143,10 @@ index 77bc3249..f090390f 100644
 82  #include <linux/ip.h>
 83  
 84 diff --git a/ip/iplink_hsr.c b/ip/iplink_hsr.c
 85-index da2d03d4..8c63293a 100644
 86+index 76f24a6a..599d487e 100644
 87 --- a/ip/iplink_hsr.c
 88 +++ b/ip/iplink_hsr.c
 89-@@ -15,7 +15,7 @@
 90+@@ -11,7 +11,7 @@
 91  #include <stdlib.h>
 92  #include <string.h>
 93  #include <sys/socket.h>  /* Needed by linux/if.h for some reason */
 94@@ -156,10 +156,10 @@ index da2d03d4..8c63293a 100644
 95  #include "rt_names.h"
 96  #include "utils.h"
 97 diff --git a/ip/ipmaddr.c b/ip/ipmaddr.c
 98-index d41ac63a..b7600424 100644
 99+index 2418b303..3e7afa91 100644
100 --- a/ip/ipmaddr.c
101 +++ b/ip/ipmaddr.c
102-@@ -19,9 +19,9 @@
103+@@ -14,9 +14,9 @@
104  #include <netinet/in.h>
105  #include <arpa/inet.h>
106  #include <string.h>
107@@ -171,10 +171,10 @@ index d41ac63a..b7600424 100644
108  #include <linux/sockios.h>
109  
110 diff --git a/ip/ipmroute.c b/ip/ipmroute.c
111-index 981baf2a..2dfa83f8 100644
112+index b6d9e618..33e66fc8 100644
113 --- a/ip/ipmroute.c
114 +++ b/ip/ipmroute.c
115-@@ -20,9 +20,9 @@
116+@@ -15,9 +15,9 @@
117  #include <netinet/in.h>
118  #include <arpa/inet.h>
119  #include <string.h>
120@@ -186,10 +186,10 @@ index 981baf2a..2dfa83f8 100644
121  #include <linux/sockios.h>
122  
123 diff --git a/ip/iptuntap.c b/ip/iptuntap.c
124-index 385d2bd8..9837b37e 100644
125+index b7018a6f..0b63f53d 100644
126 --- a/ip/iptuntap.c
127 +++ b/ip/iptuntap.c
128-@@ -18,7 +18,6 @@
129+@@ -13,7 +13,6 @@
130  #include <sys/socket.h>
131  #include <arpa/inet.h>
132  #include <sys/ioctl.h>
133@@ -198,10 +198,10 @@ index 385d2bd8..9837b37e 100644
134  #include <linux/if_arp.h>
135  #include <pwd.h>
136 diff --git a/ip/tunnel.c b/ip/tunnel.c
137-index 88585cf3..f77ecde7 100644
138+index c5c7a31f..e7b2ffab 100644
139 --- a/ip/tunnel.c
140 +++ b/ip/tunnel.c
141-@@ -30,7 +30,7 @@
142+@@ -16,7 +16,7 @@
143  #include <sys/socket.h>
144  #include <sys/ioctl.h>
145  #include <netinet/in.h>
146@@ -211,5 +211,5 @@ index 88585cf3..f77ecde7 100644
147  #include <linux/if_tunnel.h>
148  #include <linux/if_arp.h>
149 -- 
150-2.34.1
151+2.44.0
152 
+32, -32
  1@@ -1,4 +1,4 @@
  2-From f322d5077bb45dffaa384be4c78e4cf218767bf5 Mon Sep 17 00:00:00 2001
  3+From a5c387d23c3309296d852e6f7fae8eb6ca99bd47 Mon Sep 17 00:00:00 2001
  4 From: Michael Forney <mforney@mforney.org>
  5 Date: Tue, 12 Mar 2019 19:12:31 -0700
  6 Subject: [PATCH] Avoid pointer arithmetic on `void *`
  7@@ -18,10 +18,10 @@ Subject: [PATCH] Avoid pointer arithmetic on `void *`
  8  11 files changed, 20 insertions(+), 19 deletions(-)
  9 
 10 diff --git a/include/libnetlink.h b/include/libnetlink.h
 11-index 9e4cc101..6925de43 100644
 12+index ad7e7127..09145d77 100644
 13 --- a/include/libnetlink.h
 14 +++ b/include/libnetlink.h
 15-@@ -206,7 +206,7 @@ struct rtattr *rta_nest(struct rtattr *rta, int maxlen, int type);
 16+@@ -219,7 +219,7 @@ struct rtattr *rta_nest(struct rtattr *rta, int maxlen, int type);
 17  int rta_nest_end(struct rtattr *rta, struct rtattr *nest);
 18  
 19  #define RTA_TAIL(rta) \
 20@@ -30,7 +30,7 @@ index 9e4cc101..6925de43 100644
 21  				    RTA_ALIGN((rta)->rta_len)))
 22  
 23  #define parse_rtattr_nested(tb, max, rta) \
 24-@@ -270,7 +270,7 @@ int rtnl_from_file(FILE *, rtnl_listen_filter_t handler,
 25+@@ -287,7 +287,7 @@ int rtnl_from_file(FILE *, rtnl_listen_filter_t handler,
 26  		   void *jarg);
 27  
 28  #define NLMSG_TAIL(nmsg) \
 29@@ -40,10 +40,10 @@ index 9e4cc101..6925de43 100644
 30  #ifndef IFA_RTA
 31  #define IFA_RTA(r) \
 32 diff --git a/ip/ipfou.c b/ip/ipfou.c
 33-index 9c697770..539e7ab7 100644
 34+index 760cfee2..8b9dde00 100644
 35 --- a/ip/ipfou.c
 36 +++ b/ip/ipfou.c
 37-@@ -232,7 +232,7 @@ static int print_fou_mapping(struct nlmsghdr *n, void *arg)
 38+@@ -228,7 +228,7 @@ static int print_fou_mapping(struct nlmsghdr *n, void *arg)
 39  		return -1;
 40  
 41  	ghdr = NLMSG_DATA(n);
 42@@ -53,10 +53,10 @@ index 9c697770..539e7ab7 100644
 43  	open_json_object(NULL);
 44  	if (tb[FOU_ATTR_PORT])
 45 diff --git a/ip/ipila.c b/ip/ipila.c
 46-index 475c35b5..0540d1d9 100644
 47+index f4387e03..c12aa23f 100644
 48 --- a/ip/ipila.c
 49 +++ b/ip/ipila.c
 50-@@ -96,7 +96,7 @@ static int print_ila_mapping(struct nlmsghdr *n, void *arg)
 51+@@ -97,7 +97,7 @@ static int print_ila_mapping(struct nlmsghdr *n, void *arg)
 52  		return -1;
 53  
 54  	ghdr = NLMSG_DATA(n);
 55@@ -80,10 +80,10 @@ index b63d7d5c..c7c9aceb 100644
 56  	open_json_object(NULL);
 57  	switch (ghdr->cmd) {
 58 diff --git a/ip/ipl2tp.c b/ip/ipl2tp.c
 59-index f090390f..edbe0f2f 100644
 60+index 9d1e566c..76ba20c0 100644
 61 --- a/ip/ipl2tp.c
 62 +++ b/ip/ipl2tp.c
 63-@@ -345,7 +345,7 @@ static int get_response(struct nlmsghdr *n, void *arg)
 64+@@ -341,7 +341,7 @@ static int get_response(struct nlmsghdr *n, void *arg)
 65  	if (len < 0)
 66  		return -1;
 67  
 68@@ -93,10 +93,10 @@ index f090390f..edbe0f2f 100644
 69  	if (attrs[L2TP_ATTR_PW_TYPE])
 70  		p->pw_type = rta_getattr_u16(attrs[L2TP_ATTR_PW_TYPE]);
 71 diff --git a/ip/ipmacsec.c b/ip/ipmacsec.c
 72-index bf48e8b5..eecb7e48 100644
 73+index fc4c8631..3e65e11f 100644
 74 --- a/ip/ipmacsec.c
 75 +++ b/ip/ipmacsec.c
 76-@@ -1001,7 +1001,7 @@ static int process(struct nlmsghdr *n, void *arg)
 77+@@ -1083,7 +1083,7 @@ static int process(struct nlmsghdr *n, void *arg)
 78  	if (ghdr->cmd != MACSEC_CMD_GET_TXSC)
 79  		return 0;
 80  
 81@@ -106,10 +106,10 @@ index bf48e8b5..eecb7e48 100644
 82  		fprintf(stderr, "incomplete dump message\n");
 83  		return -1;
 84 diff --git a/ip/ipmptcp.c b/ip/ipmptcp.c
 85-index 85700444..bbdd06e7 100644
 86+index 9847f95b..d37f1269 100644
 87 --- a/ip/ipmptcp.c
 88 +++ b/ip/ipmptcp.c
 89-@@ -256,7 +256,7 @@ static int print_mptcp_addr(struct nlmsghdr *n, void *arg)
 90+@@ -286,7 +286,7 @@ static int print_mptcp_addr(struct nlmsghdr *n, void *arg)
 91  		return -1;
 92  
 93  	ghdr = NLMSG_DATA(n);
 94@@ -118,7 +118,7 @@ index 85700444..bbdd06e7 100644
 95  			   len, NLA_F_NESTED);
 96  	addrinfo = tb[MPTCP_PM_ATTR_ADDR];
 97  	if (!addrinfo)
 98-@@ -371,7 +371,7 @@ static int print_mptcp_limit(struct nlmsghdr *n, void *arg)
 99+@@ -402,7 +402,7 @@ static int print_mptcp_limit(struct nlmsghdr *n, void *arg)
100  		return -1;
101  
102  	ghdr = NLMSG_DATA(n);
103@@ -127,20 +127,20 @@ index 85700444..bbdd06e7 100644
104  
105  	open_json_object(NULL);
106  	if (tb[MPTCP_PM_ATTR_RCV_ADD_ADDRS]) {
107-@@ -460,7 +460,7 @@ static int mptcp_monitor_msg(struct rtnl_ctrl_data *ctrl,
108+@@ -497,7 +497,7 @@ static int mptcp_monitor_msg(struct rtnl_ctrl_data *ctrl,
109  
110- 	printf("[%14s]", event_to_str[ghdr->cmd]);
111+ 	printf("[%16s]", event_to_str[ghdr->cmd]);
112  
113 -	parse_rtattr(tb, MPTCP_ATTR_MAX, (void *) ghdr + GENL_HDRLEN, len);
114 +	parse_rtattr(tb, MPTCP_ATTR_MAX, (struct rtattr *) ((char *) ghdr + GENL_HDRLEN), len);
115  
116- 	printf(" token=%08x", rta_getattr_u32(tb[MPTCP_ATTR_TOKEN]));
117- 
118+ 	if (tb[MPTCP_ATTR_TOKEN])
119+ 		printf(" token=%08x", rta_getattr_u32(tb[MPTCP_ATTR_TOKEN]));
120 diff --git a/ip/ipseg6.c b/ip/ipseg6.c
121-index 4f541ae4..b9baf38c 100644
122+index 305b8961..4103a1c6 100644
123 --- a/ip/ipseg6.c
124 +++ b/ip/ipseg6.c
125-@@ -115,7 +115,7 @@ static int process_msg(struct nlmsghdr *n, void *arg)
126+@@ -112,7 +112,7 @@ static int process_msg(struct nlmsghdr *n, void *arg)
127  
128  	ghdr = NLMSG_DATA(n);
129  
130@@ -150,10 +150,10 @@ index 4f541ae4..b9baf38c 100644
131  	open_json_object(NULL);
132  	switch (ghdr->cmd) {
133 diff --git a/ip/tcp_metrics.c b/ip/tcp_metrics.c
134-index acbd745a..051ddc63 100644
135+index 9c8fb072..f451c8f2 100644
136 --- a/ip/tcp_metrics.c
137 +++ b/ip/tcp_metrics.c
138-@@ -178,7 +178,7 @@ static int process_msg(struct nlmsghdr *n, void *arg)
139+@@ -175,7 +175,7 @@ static int process_msg(struct nlmsghdr *n, void *arg)
140  	if (ghdr->cmd != TCP_METRICS_CMD_GET)
141  		return 0;
142  
143@@ -163,10 +163,10 @@ index acbd745a..051ddc63 100644
144  
145  	if (attrs[TCP_METRICS_ATTR_ADDR_IPV4]) {
146 diff --git a/lib/libnetlink.c b/lib/libnetlink.c
147-index 7e977a67..7068750f 100644
148+index 01648229..80adabf4 100644
149 --- a/lib/libnetlink.c
150 +++ b/lib/libnetlink.c
151-@@ -1365,7 +1365,7 @@ int addraw_l(struct nlmsghdr *n, int maxlen, const void *data, int len)
152+@@ -1396,7 +1396,7 @@ int addraw_l(struct nlmsghdr *n, int maxlen, const void *data, int len)
153  	}
154  
155  	memcpy(NLMSG_TAIL(n), data, len);
156@@ -175,7 +175,7 @@ index 7e977a67..7068750f 100644
157  	n->nlmsg_len = NLMSG_ALIGN(n->nlmsg_len) + NLMSG_ALIGN(len);
158  	return 0;
159  }
160-@@ -1380,7 +1380,7 @@ struct rtattr *addattr_nest(struct nlmsghdr *n, int maxlen, int type)
161+@@ -1411,7 +1411,7 @@ struct rtattr *addattr_nest(struct nlmsghdr *n, int maxlen, int type)
162  
163  int addattr_nest_end(struct nlmsghdr *n, struct rtattr *nest)
164  {
165@@ -184,7 +184,7 @@ index 7e977a67..7068750f 100644
166  	return n->nlmsg_len;
167  }
168  
169-@@ -1396,9 +1396,9 @@ struct rtattr *addattr_nest_compat(struct nlmsghdr *n, int maxlen, int type,
170+@@ -1427,9 +1427,9 @@ struct rtattr *addattr_nest_compat(struct nlmsghdr *n, int maxlen, int type,
171  
172  int addattr_nest_compat_end(struct nlmsghdr *n, struct rtattr *start)
173  {
174@@ -196,7 +196,7 @@ index 7e977a67..7068750f 100644
175  	addattr_nest_end(n, nest);
176  	return n->nlmsg_len;
177  }
178-@@ -1470,7 +1470,7 @@ struct rtattr *rta_nest(struct rtattr *rta, int maxlen, int type)
179+@@ -1501,7 +1501,7 @@ struct rtattr *rta_nest(struct rtattr *rta, int maxlen, int type)
180  
181  int rta_nest_end(struct rtattr *rta, struct rtattr *nest)
182  {
183@@ -205,7 +205,7 @@ index 7e977a67..7068750f 100644
184  
185  	return rta->rta_len;
186  }
187-@@ -1519,7 +1519,7 @@ int __parse_rtattr_nested_compat(struct rtattr *tb[], int max,
188+@@ -1550,7 +1550,7 @@ int __parse_rtattr_nested_compat(struct rtattr *tb[], int max,
189  	if (RTA_PAYLOAD(rta) < len)
190  		return -1;
191  	if (RTA_PAYLOAD(rta) >= RTA_ALIGN(len) + sizeof(struct rtattr)) {
192@@ -215,10 +215,10 @@ index 7e977a67..7068750f 100644
193  	}
194  	memset(tb, 0, sizeof(struct rtattr *) * (max + 1));
195 diff --git a/lib/utils.c b/lib/utils.c
196-index 53d31006..0f683f9c 100644
197+index 6c1c1a8d..040b935c 100644
198 --- a/lib/utils.c
199 +++ b/lib/utils.c
200-@@ -1514,7 +1514,7 @@ int get_rtnl_link_stats_rta(struct rtnl_link_stats64 *stats64,
201+@@ -1543,7 +1543,7 @@ int get_rtnl_link_stats_rta(struct rtnl_link_stats64 *stats64,
202  
203  	len = RTA_PAYLOAD(rta);
204  	if (len < size)
205@@ -228,5 +228,5 @@ index 53d31006..0f683f9c 100644
206  		len = size;
207  
208 -- 
209-2.34.1
210+2.44.0
211 
+6, -6
 1@@ -1,4 +1,4 @@
 2-From 73e1cde9f80294c730b02c1eb217a4bc82d0168b Mon Sep 17 00:00:00 2001
 3+From 1b0100dc4efba66f64b64ff86cb25c9312da2848 Mon Sep 17 00:00:00 2001
 4 From: Michael Forney <mforney@mforney.org>
 5 Date: Sun, 16 Jun 2019 12:14:23 -0700
 6 Subject: [PATCH] Don't return expression in function returning void
 7@@ -9,10 +9,10 @@ Subject: [PATCH] Don't return expression in function returning void
 8  2 files changed, 6 insertions(+), 4 deletions(-)
 9 
10 diff --git a/ip/iplink_xdp.c b/ip/iplink_xdp.c
11-index 4a490bc8..0d52bfac 100644
12+index 5928dff7..8fe35def 100644
13 --- a/ip/iplink_xdp.c
14 +++ b/ip/iplink_xdp.c
15-@@ -168,9 +168,11 @@ void xdp_dump(FILE *fp, struct rtattr *xdp, bool link, bool details)
16+@@ -164,9 +164,11 @@ void xdp_dump(FILE *fp, struct rtattr *xdp, bool link, bool details)
17  	mode = rta_getattr_u8(tb[IFLA_XDP_ATTACHED]);
18  	if (mode == XDP_ATTACHED_NONE)
19  		return;
20@@ -28,10 +28,10 @@ index 4a490bc8..0d52bfac 100644
21  	else if (mode == XDP_ATTACHED_DRV)
22  		fprintf(fp, "xdp");
23 diff --git a/ip/ipxfrm.c b/ip/ipxfrm.c
24-index fec206ab..92afb7f8 100644
25+index b78c712d..c3a5986f 100644
26 --- a/ip/ipxfrm.c
27 +++ b/ip/ipxfrm.c
28-@@ -542,7 +542,7 @@ static void __xfrm_algo_print(struct xfrm_algo *algo, int type, int len,
29+@@ -526,7 +526,7 @@ static void __xfrm_algo_print(struct xfrm_algo *algo, int type, int len,
30  static inline void xfrm_algo_print(struct xfrm_algo *algo, int type, int len,
31  				   FILE *fp, const char *prefix, bool nokeys)
32  {
33@@ -41,5 +41,5 @@ index fec206ab..92afb7f8 100644
34  
35  static void xfrm_aead_print(struct xfrm_algo_aead *algo, int len,
36 -- 
37-2.26.0
38+2.44.0
39 
+316, -401
   1@@ -1,4 +1,4 @@
   2-From 4ec571346e57d7c0259a48b561a1742d028d5fb2 Mon Sep 17 00:00:00 2001
   3+From af3a2d4ed7e7bb4dcf9ec448c017d1e9824b3d1e Mon Sep 17 00:00:00 2001
   4 From: Michael Forney <mforney@mforney.org>
   5 Date: Thu, 17 Feb 2022 22:51:00 -0800
   6 Subject: [PATCH] Don't use empty initializer lists
   7@@ -11,14 +11,13 @@ Subject: [PATCH] Don't use empty initializer lists
   8  ip/ip6tunnel.c    |  2 +-
   9  ip/ipaddress.c    |  8 ++--
  10  ip/ipaddrlabel.c  |  2 +-
  11- ip/iplink.c       |  2 +-
  12  ip/iplink_can.c   |  2 +-
  13  ip/ipmaddr.c      |  2 +-
  14  ip/ipntable.c     |  4 +-
  15  ip/iptunnel.c     | 10 ++---
  16  ip/iptuntap.c     |  2 +-
  17  ip/ipxfrm.c       | 14 +++----
  18- ip/xfrm_policy.c  | 12 +++---
  19+ ip/xfrm_policy.c  | 14 +++----
  20  ip/xfrm_state.c   | 12 +++---
  21  lib/bpf_legacy.c  | 40 ++++++++++----------
  22  lib/libnetlink.c  |  8 ++--
  23@@ -44,7 +43,6 @@ Subject: [PATCH] Don't use empty initializer lists
  24  tc/em_u32.c       |  2 +-
  25  tc/f_bpf.c        |  2 +-
  26  tc/f_fw.c         |  2 +-
  27- tc/f_rsvp.c       |  2 +-
  28  tc/f_u32.c        |  6 +--
  29  tc/m_bpf.c        |  4 +-
  30  tc/m_connmark.c   |  2 +-
  31@@ -55,9 +53,6 @@ Subject: [PATCH] Don't use empty initializer lists
  32  tc/m_simple.c     |  2 +-
  33  tc/m_tunnel_key.c |  2 +-
  34  tc/m_vlan.c       |  2 +-
  35- tc/m_xt.c         |  2 +-
  36- tc/q_atm.c        |  2 +-
  37- tc/q_cbq.c        | 12 +++---
  38  tc/q_cbs.c        |  2 +-
  39  tc/q_choke.c      |  2 +-
  40  tc/q_codel.c      |  2 +-
  41@@ -85,26 +80,26 @@ Subject: [PATCH] Don't use empty initializer lists
  42  tipc/nametable.c  |  6 +--
  43  tipc/node.c       | 14 +++----
  44  tipc/socket.c     | 10 ++---
  45- 81 files changed, 286 insertions(+), 287 deletions(-)
  46+ 76 files changed, 277 insertions(+), 278 deletions(-)
  47 
  48 diff --git a/bridge/mdb.c b/bridge/mdb.c
  49-index e62bfce3..f28783a1 100644
  50+index ba499e49..63302110 100644
  51 --- a/bridge/mdb.c
  52 +++ b/bridge/mdb.c
  53-@@ -484,7 +484,7 @@ static int mdb_modify(int cmd, int flags, int argc, char **argv)
  54- 		.bpm.family = PF_BRIDGE,
  55- 	};
  56- 	char *d = NULL, *p = NULL, *grp = NULL, *src = NULL;
  57+@@ -702,7 +702,7 @@ static int mdb_modify(int cmd, int flags, int argc, char **argv)
  58+ 	char *d = NULL, *p = NULL, *grp = NULL, *src = NULL, *mode = NULL;
  59+ 	char *dst_port = NULL, *vni = NULL, *src_vni = NULL, *via = NULL;
  60+ 	char *src_list = NULL, *proto = NULL, *dst = NULL;
  61 -	struct br_mdb_entry entry = {};
  62 +	struct br_mdb_entry entry = {0};
  63+ 	bool set_attrs = false;
  64  	short vid = 0;
  65  
  66- 	while (argc > 0) {
  67 diff --git a/bridge/vlan.c b/bridge/vlan.c
  68-index 793d95d1..4b857daa 100644
  69+index a5035ab1..22e4554a 100644
  70 --- a/bridge/vlan.c
  71 +++ b/bridge/vlan.c
  72-@@ -125,7 +125,7 @@ static int add_tunnel_info_range(struct nlmsghdr *n, int reqsize,
  73+@@ -128,7 +128,7 @@ static int add_tunnel_info_range(struct nlmsghdr *n, int reqsize,
  74  static int add_vlan_info_range(struct nlmsghdr *n, int reqsize, __u16 vid_start,
  75  			       int16_t vid_end, __u16 flags)
  76  {
  77@@ -113,7 +108,7 @@ index 793d95d1..4b857daa 100644
  78  
  79  	vinfo.flags = flags;
  80  	vinfo.vid = vid_start;
  81-@@ -164,7 +164,7 @@ static int vlan_modify(int cmd, int argc, char **argv)
  82+@@ -167,7 +167,7 @@ static int vlan_modify(int cmd, int argc, char **argv)
  83  	short vid = -1;
  84  	short vid_end = -1;
  85  	struct rtattr *afspec;
  86@@ -122,7 +117,7 @@ index 793d95d1..4b857daa 100644
  87  	bool tunnel_info_set = false;
  88  	unsigned short flags = 0;
  89  	__u32 tun_id_start = 0;
  90-@@ -270,7 +270,7 @@ static int vlan_option_set(int argc, char **argv)
  91+@@ -273,7 +273,7 @@ static int vlan_option_set(int argc, char **argv)
  92  		.n.nlmsg_type = RTM_NEWVLAN,
  93  		.bvm.family = PF_BRIDGE,
  94  	};
  95@@ -132,10 +127,10 @@ index 793d95d1..4b857daa 100644
  96  	char *d = NULL;
  97  	short vid = -1;
  98 diff --git a/devlink/devlink.c b/devlink/devlink.c
  99-index d39792ec..d56f2706 100644
 100+index dbeb6e39..10803c1c 100644
 101 --- a/devlink/devlink.c
 102 +++ b/devlink/devlink.c
 103-@@ -763,7 +763,7 @@ static int function_attr_cb(const struct nlattr *attr, void *data)
 104+@@ -890,7 +890,7 @@ out:
 105  
 106  static int ifname_map_cb(const struct nlmsghdr *nlh, void *data)
 107  {
 108@@ -143,8 +138,8 @@ index d39792ec..d56f2706 100644
 109 +	struct nlattr *tb[DEVLINK_ATTR_MAX + 1] = {0};
 110  	struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
 111  	struct dl *dl = data;
 112- 	struct ifname_map *ifname_map;
 113-@@ -2719,7 +2719,7 @@ static void pr_out_eswitch(struct dl *dl, struct nlattr **tb)
 114+ 	const char *bus_name;
 115+@@ -3201,7 +3201,7 @@ static void pr_out_eswitch(struct dl *dl, struct nlattr **tb)
 116  static int cmd_dev_eswitch_show_cb(const struct nlmsghdr *nlh, void *data)
 117  {
 118  	struct dl *dl = data;
 119@@ -153,7 +148,7 @@ index d39792ec..d56f2706 100644
 120  	struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
 121  
 122  	mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
 123-@@ -2887,7 +2887,7 @@ static const struct param_val_conv param_val_conv[] = {
 124+@@ -3372,7 +3372,7 @@ static const struct param_val_conv param_val_conv[] = {
 125  static void pr_out_param_value(struct dl *dl, const char *nla_name,
 126  			       int nla_type, struct nlattr *nl)
 127  {
 128@@ -162,7 +157,7 @@ index d39792ec..d56f2706 100644
 129  	struct nlattr *val_attr;
 130  	const char *vstr;
 131  	bool conv_exists;
 132-@@ -2970,7 +2970,7 @@ static void pr_out_param_value(struct dl *dl, const char *nla_name,
 133+@@ -3455,7 +3455,7 @@ static void pr_out_param_value(struct dl *dl, const char *nla_name,
 134  static void pr_out_param(struct dl *dl, struct nlattr **tb, bool array,
 135  			 bool is_port_param)
 136  {
 137@@ -171,7 +166,7 @@ index d39792ec..d56f2706 100644
 138  	struct nlattr *param_value_attr;
 139  	const char *nla_name;
 140  	int nla_type;
 141-@@ -3022,7 +3022,7 @@ static void pr_out_param(struct dl *dl, struct nlattr **tb, bool array,
 142+@@ -3507,7 +3507,7 @@ static void pr_out_param(struct dl *dl, struct nlattr **tb, bool array,
 143  static int cmd_dev_param_show_cb(const struct nlmsghdr *nlh, void *data)
 144  {
 145  	struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
 146@@ -180,7 +175,7 @@ index d39792ec..d56f2706 100644
 147  	struct dl *dl = data;
 148  
 149  	mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
 150-@@ -3049,8 +3049,8 @@ struct param_ctx {
 151+@@ -3534,8 +3534,8 @@ struct param_ctx {
 152  static int cmd_dev_param_set_cb(const struct nlmsghdr *nlh, void *data)
 153  {
 154  	struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
 155@@ -191,7 +186,7 @@ index d39792ec..d56f2706 100644
 156  	struct nlattr *param_value_attr;
 157  	enum devlink_param_cmode cmode;
 158  	struct param_ctx *ctx = data;
 159-@@ -3074,7 +3074,7 @@ static int cmd_dev_param_set_cb(const struct nlmsghdr *nlh, void *data)
 160+@@ -3559,7 +3559,7 @@ static int cmd_dev_param_set_cb(const struct nlmsghdr *nlh, void *data)
 161  	nla_type = mnl_attr_get_u8(nla_param[DEVLINK_ATTR_PARAM_TYPE]);
 162  	mnl_attr_for_each_nested(param_value_attr,
 163  				 nla_param[DEVLINK_ATTR_PARAM_VALUES_LIST]) {
 164@@ -200,7 +195,7 @@ index d39792ec..d56f2706 100644
 165  		struct nlattr *val_attr;
 166  
 167  		err = mnl_attr_parse_nested(param_value_attr,
 168-@@ -3117,7 +3117,7 @@ static int cmd_dev_param_set_cb(const struct nlmsghdr *nlh, void *data)
 169+@@ -3602,7 +3602,7 @@ static int cmd_dev_param_set_cb(const struct nlmsghdr *nlh, void *data)
 170  
 171  static int cmd_dev_param_set(struct dl *dl)
 172  {
 173@@ -209,7 +204,7 @@ index d39792ec..d56f2706 100644
 174  	struct nlmsghdr *nlh;
 175  	bool conv_exists;
 176  	uint32_t val_u32 = 0;
 177-@@ -3291,7 +3291,7 @@ static int cmd_dev_param(struct dl *dl)
 178+@@ -3774,7 +3774,7 @@ static int cmd_dev_param(struct dl *dl)
 179  
 180  static void pr_out_action_stats(struct dl *dl, struct nlattr *action_stats)
 181  {
 182@@ -218,7 +213,7 @@ index d39792ec..d56f2706 100644
 183  	struct nlattr *nla_reload_stats_entry, *nla_limit, *nla_value;
 184  	enum devlink_reload_limit limit;
 185  	uint32_t value;
 186-@@ -3506,7 +3506,7 @@ static void pr_out_versions_single(struct dl *dl, const struct nlmsghdr *nlh,
 187+@@ -4015,7 +4015,7 @@ static void pr_out_versions_single(struct dl *dl, const struct nlmsghdr *nlh,
 188  	struct nlattr *version;
 189  
 190  	mnl_attr_for_each(version, nlh, sizeof(struct genlmsghdr)) {
 191@@ -227,7 +222,7 @@ index d39792ec..d56f2706 100644
 192  		const char *ver_value;
 193  		const char *ver_name;
 194  		int err;
 195-@@ -3596,7 +3596,7 @@ static void pr_out_info(struct dl *dl, const struct nlmsghdr *nlh,
 196+@@ -4105,7 +4105,7 @@ static void pr_out_info(struct dl *dl, const struct nlmsghdr *nlh,
 197  static int cmd_versions_show_cb(const struct nlmsghdr *nlh, void *data)
 198  {
 199  	struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
 200@@ -236,7 +231,7 @@ index d39792ec..d56f2706 100644
 201  	bool has_versions, has_info;
 202  	struct dl *dl = data;
 203  
 204-@@ -4182,7 +4182,7 @@ static void pr_out_port(struct dl *dl, struct nlattr **tb)
 205+@@ -4958,7 +4958,7 @@ static void pr_out_port(struct dl *dl, struct nlattr **tb)
 206  static int cmd_port_show_cb(const struct nlmsghdr *nlh, void *data)
 207  {
 208  	struct dl *dl = data;
 209@@ -245,7 +240,7 @@ index d39792ec..d56f2706 100644
 210  	struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
 211  
 212  	mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
 213-@@ -4945,7 +4945,7 @@ static void pr_out_sb(struct dl *dl, struct nlattr **tb)
 214+@@ -5896,7 +5896,7 @@ static void pr_out_sb(struct dl *dl, struct nlattr **tb)
 215  static int cmd_sb_show_cb(const struct nlmsghdr *nlh, void *data)
 216  {
 217  	struct dl *dl = data;
 218@@ -254,7 +249,7 @@ index d39792ec..d56f2706 100644
 219  	struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
 220  
 221  	mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
 222-@@ -5024,7 +5024,7 @@ static void pr_out_sb_pool(struct dl *dl, struct nlattr **tb)
 223+@@ -5974,7 +5974,7 @@ static void pr_out_sb_pool(struct dl *dl, struct nlattr **tb)
 224  static int cmd_sb_pool_show_cb(const struct nlmsghdr *nlh, void *data)
 225  {
 226  	struct dl *dl = data;
 227@@ -263,7 +258,7 @@ index d39792ec..d56f2706 100644
 228  	struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
 229  
 230  	mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
 231-@@ -5110,7 +5110,7 @@ static void pr_out_sb_port_pool(struct dl *dl, struct nlattr **tb)
 232+@@ -6061,7 +6061,7 @@ static void pr_out_sb_port_pool(struct dl *dl, struct nlattr **tb)
 233  static int cmd_sb_port_pool_show_cb(const struct nlmsghdr *nlh, void *data)
 234  {
 235  	struct dl *dl = data;
 236@@ -272,7 +267,7 @@ index d39792ec..d56f2706 100644
 237  	struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
 238  
 239  	mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
 240-@@ -5213,7 +5213,7 @@ static void pr_out_sb_tc_bind(struct dl *dl, struct nlattr **tb)
 241+@@ -6165,7 +6165,7 @@ static void pr_out_sb_tc_bind(struct dl *dl, struct nlattr **tb)
 242  static int cmd_sb_tc_bind_show_cb(const struct nlmsghdr *nlh, void *data)
 243  {
 244  	struct dl *dl = data;
 245@@ -281,7 +276,7 @@ index d39792ec..d56f2706 100644
 246  	struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
 247  
 248  	mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
 249-@@ -5501,7 +5501,7 @@ static void cmd_sb_occ_port_pool_process(struct occ_show *occ_show,
 250+@@ -6456,7 +6456,7 @@ static void cmd_sb_occ_port_pool_process(struct occ_show *occ_show,
 251  static int cmd_sb_occ_port_pool_process_cb(const struct nlmsghdr *nlh, void *data)
 252  {
 253  	struct occ_show *occ_show = data;
 254@@ -290,7 +285,7 @@ index d39792ec..d56f2706 100644
 255  	struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
 256  
 257  	mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
 258-@@ -5552,7 +5552,7 @@ static void cmd_sb_occ_tc_pool_process(struct occ_show *occ_show,
 259+@@ -6507,7 +6507,7 @@ static void cmd_sb_occ_tc_pool_process(struct occ_show *occ_show,
 260  static int cmd_sb_occ_tc_pool_process_cb(const struct nlmsghdr *nlh, void *data)
 261  {
 262  	struct occ_show *occ_show = data;
 263@@ -299,7 +294,7 @@ index d39792ec..d56f2706 100644
 264  	struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
 265  
 266  	mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
 267-@@ -5847,7 +5847,7 @@ static void pr_out_trap_policer(struct dl *dl, struct nlattr **tb, bool array);
 268+@@ -6815,7 +6815,7 @@ static void pr_out_trap_policer(struct dl *dl, struct nlattr **tb, bool array);
 269  static int cmd_mon_show_cb(const struct nlmsghdr *nlh, void *data)
 270  {
 271  	struct dl *dl = data;
 272@@ -308,7 +303,7 @@ index d39792ec..d56f2706 100644
 273  	struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
 274  	uint8_t cmd = genl->cmd;
 275  
 276-@@ -6376,7 +6376,7 @@ static void pr_out_dpipe_headers(struct dpipe_ctx *ctx,
 277+@@ -7358,7 +7358,7 @@ static void pr_out_dpipe_headers(struct dpipe_ctx *ctx,
 278  
 279  static int dpipe_header_field_get(struct nlattr *nl, struct dpipe_field *field)
 280  {
 281@@ -317,7 +312,7 @@ index d39792ec..d56f2706 100644
 282  	const char *name;
 283  	int err;
 284  
 285-@@ -6427,7 +6427,7 @@ static unsigned int dpipe_header_field_count_get(struct nlattr *nla_fields)
 286+@@ -7409,7 +7409,7 @@ static unsigned int dpipe_header_field_count_get(struct nlattr *nla_fields)
 287  
 288  static int dpipe_header_get(struct dpipe_ctx *ctx, struct nlattr *nl)
 289  {
 290@@ -326,7 +321,7 @@ index d39792ec..d56f2706 100644
 291  	struct dpipe_header *header;
 292  	unsigned int fields_count;
 293  	const char *header_name;
 294-@@ -6483,7 +6483,7 @@ static int dpipe_headers_get(struct dpipe_ctx *ctx, struct nlattr **tb)
 295+@@ -7465,7 +7465,7 @@ static int dpipe_headers_get(struct dpipe_ctx *ctx, struct nlattr **tb)
 296  static int cmd_dpipe_header_cb(const struct nlmsghdr *nlh, void *data)
 297  {
 298  	struct dpipe_ctx *ctx = data;
 299@@ -335,7 +330,7 @@ index d39792ec..d56f2706 100644
 300  	struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
 301  	int err;
 302  
 303-@@ -6505,7 +6505,7 @@ static int cmd_dpipe_header_cb(const struct nlmsghdr *nlh, void *data)
 304+@@ -7487,7 +7487,7 @@ static int cmd_dpipe_header_cb(const struct nlmsghdr *nlh, void *data)
 305  static int cmd_dpipe_headers_show(struct dl *dl)
 306  {
 307  	struct nlmsghdr *nlh;
 308@@ -344,7 +339,7 @@ index d39792ec..d56f2706 100644
 309  	uint16_t flags = NLM_F_REQUEST | NLM_F_ACK;
 310  	int err;
 311  
 312-@@ -6600,7 +6600,7 @@ static void pr_out_dpipe_action(struct dpipe_action *action,
 313+@@ -7584,7 +7584,7 @@ static void pr_out_dpipe_action(struct dpipe_action *action,
 314  
 315  static int dpipe_action_parse(struct dpipe_action *action, struct nlattr *nl)
 316  {
 317@@ -353,7 +348,7 @@ index d39792ec..d56f2706 100644
 318  	int err;
 319  
 320  	err = mnl_attr_parse_nested(nl, attr_cb, nla_action);
 321-@@ -6685,7 +6685,7 @@ static int dpipe_match_parse(struct dpipe_match *match,
 322+@@ -7669,7 +7669,7 @@ static int dpipe_match_parse(struct dpipe_match *match,
 323  			     struct nlattr *nl)
 324  
 325  {
 326@@ -362,7 +357,7 @@ index d39792ec..d56f2706 100644
 327  	int err;
 328  
 329  	err = mnl_attr_parse_nested(nl, attr_cb, nla_match);
 330-@@ -6790,7 +6790,7 @@ resource_path_print(struct dl *dl, struct resources *resources,
 331+@@ -7774,7 +7774,7 @@ resource_path_print(struct dl *dl, struct resources *resources,
 332  
 333  static int dpipe_table_show(struct dpipe_ctx *ctx, struct nlattr *nl)
 334  {
 335@@ -371,7 +366,7 @@ index d39792ec..d56f2706 100644
 336  	struct dpipe_table *table;
 337  	uint32_t resource_units;
 338  	bool counters_enabled;
 339-@@ -6884,7 +6884,7 @@ err_table_show:
 340+@@ -7868,7 +7868,7 @@ err_table_show:
 341  static int cmd_dpipe_table_show_cb(const struct nlmsghdr *nlh, void *data)
 342  {
 343  	struct dpipe_ctx *ctx = data;
 344@@ -380,7 +375,7 @@ index d39792ec..d56f2706 100644
 345  	struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
 346  
 347  	mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
 348-@@ -6902,8 +6902,8 @@ static int cmd_resource_dump_cb(const struct nlmsghdr *nlh, void *data);
 349+@@ -7886,8 +7886,8 @@ static int cmd_resource_dump_cb(const struct nlmsghdr *nlh, void *data);
 350  static int cmd_dpipe_table_show(struct dl *dl)
 351  {
 352  	struct nlmsghdr *nlh;
 353@@ -391,7 +386,7 @@ index d39792ec..d56f2706 100644
 354  	uint16_t flags = NLM_F_REQUEST;
 355  	int err;
 356  
 357-@@ -7160,7 +7160,7 @@ static void pr_out_dpipe_entry_value(struct dpipe_ctx *ctx,
 358+@@ -8145,7 +8145,7 @@ static void pr_out_dpipe_entry_value(struct dpipe_ctx *ctx,
 359  static int dpipe_entry_match_value_show(struct dpipe_ctx *ctx,
 360  					struct nlattr *nl)
 361  {
 362@@ -400,7 +395,7 @@ index d39792ec..d56f2706 100644
 363  	struct dpipe_match match;
 364  	int err;
 365  
 366-@@ -7191,7 +7191,7 @@ err_match_parse:
 367+@@ -8176,7 +8176,7 @@ err_match_parse:
 368  static int dpipe_entry_action_value_show(struct dpipe_ctx *ctx,
 369  					 struct nlattr *nl)
 370  {
 371@@ -409,7 +404,7 @@ index d39792ec..d56f2706 100644
 372  	struct dpipe_action action;
 373  	int err;
 374  
 375-@@ -7247,7 +7247,7 @@ dpipe_tables_match_values_show(struct dpipe_ctx *ctx,
 376+@@ -8232,7 +8232,7 @@ dpipe_tables_match_values_show(struct dpipe_ctx *ctx,
 377  
 378  static int dpipe_entry_show(struct dpipe_ctx *ctx, struct nlattr *nl)
 379  {
 380@@ -418,7 +413,7 @@ index d39792ec..d56f2706 100644
 381  	uint32_t entry_index;
 382  	uint64_t counter;
 383  	int err;
 384-@@ -7311,7 +7311,7 @@ err_entry_show:
 385+@@ -8296,7 +8296,7 @@ err_entry_show:
 386  static int cmd_dpipe_table_entry_dump_cb(const struct nlmsghdr *nlh, void *data)
 387  {
 388  	struct dpipe_ctx *ctx = data;
 389@@ -427,7 +422,7 @@ index d39792ec..d56f2706 100644
 390  	struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
 391  
 392  	mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
 393-@@ -7327,7 +7327,7 @@ static int cmd_dpipe_table_entry_dump_cb(const struct nlmsghdr *nlh, void *data)
 394+@@ -8312,7 +8312,7 @@ static int cmd_dpipe_table_entry_dump_cb(const struct nlmsghdr *nlh, void *data)
 395  static int cmd_dpipe_table_dump(struct dl *dl)
 396  {
 397  	struct nlmsghdr *nlh;
 398@@ -436,7 +431,7 @@ index d39792ec..d56f2706 100644
 399  	uint16_t flags = NLM_F_REQUEST;
 400  	int err;
 401  
 402-@@ -7436,7 +7436,7 @@ static int
 403+@@ -8421,7 +8421,7 @@ static int
 404  resource_get(struct resource_ctx *ctx, struct resource *resource,
 405  	     struct resource *parent_resource, struct nlattr *nl)
 406  {
 407@@ -445,7 +440,7 @@ index d39792ec..d56f2706 100644
 408  	struct nlattr *nla_child_resource;
 409  	struct nlattr *nla_resources;
 410  	bool top = false;
 411-@@ -7584,7 +7584,7 @@ static int resources_get(struct resource_ctx *ctx, struct nlattr **tb)
 412+@@ -8569,7 +8569,7 @@ static int resources_get(struct resource_ctx *ctx, struct nlattr **tb)
 413  static int cmd_resource_dump_cb(const struct nlmsghdr *nlh, void *data)
 414  {
 415  	struct resource_ctx *ctx = data;
 416@@ -454,7 +449,7 @@ index d39792ec..d56f2706 100644
 417  	struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
 418  	int err;
 419  
 420-@@ -7608,8 +7608,8 @@ static int cmd_resource_dump_cb(const struct nlmsghdr *nlh, void *data)
 421+@@ -8593,8 +8593,8 @@ static int cmd_resource_dump_cb(const struct nlmsghdr *nlh, void *data)
 422  static int cmd_resource_show(struct dl *dl)
 423  {
 424  	struct nlmsghdr *nlh;
 425@@ -465,7 +460,7 @@ index d39792ec..d56f2706 100644
 426  	int err;
 427  
 428  	err = dl_argv_parse(dl, DL_OPT_HANDLE, 0);
 429-@@ -7704,7 +7704,7 @@ err_resource_lookup:
 430+@@ -8689,7 +8689,7 @@ err_resource_lookup:
 431  static int cmd_resource_set(struct dl *dl)
 432  {
 433  	struct nlmsghdr *nlh;
 434@@ -474,7 +469,7 @@ index d39792ec..d56f2706 100644
 435  	int err;
 436  
 437  	err = resource_ctx_init(&ctx, dl);
 438-@@ -7816,7 +7816,7 @@ static void pr_out_region_snapshots_id(struct dl *dl, struct nlattr **tb, int in
 439+@@ -8801,7 +8801,7 @@ static void pr_out_region_snapshots_id(struct dl *dl, struct nlattr **tb, int in
 440  
 441  static void pr_out_snapshots(struct dl *dl, struct nlattr **tb)
 442  {
 443@@ -483,7 +478,7 @@ index d39792ec..d56f2706 100644
 444  	struct nlattr *nla_sanpshot;
 445  	int err, index = 0;
 446  
 447-@@ -7861,7 +7861,7 @@ static void pr_out_region(struct dl *dl, struct nlattr **tb)
 448+@@ -8846,7 +8846,7 @@ static void pr_out_region(struct dl *dl, struct nlattr **tb)
 449  static int cmd_region_show_cb(const struct nlmsghdr *nlh, void *data)
 450  {
 451  	struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
 452@@ -492,7 +487,7 @@ index d39792ec..d56f2706 100644
 453  	struct dl *dl = data;
 454  
 455  	mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
 456-@@ -7917,8 +7917,8 @@ static int cmd_region_read_cb(const struct nlmsghdr *nlh, void *data)
 457+@@ -8903,8 +8903,8 @@ static int cmd_region_read_cb(const struct nlmsghdr *nlh, void *data)
 458  {
 459  	struct nlattr *nla_entry, *nla_chunk_data, *nla_chunk_addr;
 460  	struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
 461@@ -503,7 +498,7 @@ index d39792ec..d56f2706 100644
 462  	struct dl *dl = data;
 463  	int err;
 464  
 465-@@ -8265,7 +8265,7 @@ static int cmd_fmsg_nest(struct fmsg_cb_data *fmsg_data, uint8_t nest_value,
 466+@@ -9266,7 +9266,7 @@ static int cmd_fmsg_nest(struct fmsg_cb_data *fmsg_data, uint8_t nest_value,
 467  static int cmd_fmsg_object_cb(const struct nlmsghdr *nlh, void *data)
 468  {
 469  	struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
 470@@ -512,7 +507,7 @@ index d39792ec..d56f2706 100644
 471  	struct fmsg_cb_data *fmsg_data = data;
 472  	struct dl *dl = fmsg_data->dl;
 473  	struct nlattr *nla_object;
 474-@@ -8456,7 +8456,7 @@ static void pr_out_dump_report_timestamp(struct dl *dl, const struct nlattr *att
 475+@@ -9461,7 +9461,7 @@ static void pr_out_dump_report_timestamp(struct dl *dl, const struct nlattr *att
 476  static void pr_out_health(struct dl *dl, struct nlattr **tb_health,
 477  			  bool print_device, bool print_port)
 478  {
 479@@ -521,7 +516,7 @@ index d39792ec..d56f2706 100644
 480  	enum devlink_health_reporter_state state;
 481  	int err;
 482  
 483-@@ -8527,7 +8527,7 @@ struct health_ctx {
 484+@@ -9532,7 +9532,7 @@ struct health_ctx {
 485  static int cmd_health_show_cb(const struct nlmsghdr *nlh, void *data)
 486  {
 487  	struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
 488@@ -531,10 +526,10 @@ index d39792ec..d56f2706 100644
 489  	struct dl *dl = ctx->dl;
 490  
 491 diff --git a/devlink/mnlg.c b/devlink/mnlg.c
 492-index e6d92742..f906b252 100644
 493+index d049eb5a..c9782a7b 100644
 494 --- a/devlink/mnlg.c
 495 +++ b/devlink/mnlg.c
 496-@@ -70,7 +70,7 @@ static void parse_genl_mc_grps(struct nlattr *nested,
 497+@@ -58,7 +58,7 @@ static void parse_genl_mc_grps(struct nlattr *nested,
 498  	const char *name;
 499  
 500  	mnl_attr_for_each_nested(pos, nested) {
 501@@ -543,7 +538,7 @@ index e6d92742..f906b252 100644
 502  
 503  		mnl_attr_parse_nested(pos, parse_mc_grps_cb, tb);
 504  		if (!tb[CTRL_ATTR_MCAST_GRP_NAME] ||
 505-@@ -104,7 +104,7 @@ static int get_group_id_attr_cb(const struct nlattr *attr, void *data)
 506+@@ -92,7 +92,7 @@ static int get_group_id_attr_cb(const struct nlattr *attr, void *data)
 507  static int get_group_id_cb(const struct nlmsghdr *nlh, void *data)
 508  {
 509  	struct group_info *group_info = data;
 510@@ -553,10 +548,10 @@ index e6d92742..f906b252 100644
 511  
 512  	mnl_attr_parse(nlh, sizeof(*genl), get_group_id_attr_cb, tb);
 513 diff --git a/ip/ip6tunnel.c b/ip/ip6tunnel.c
 514-index c712d664..318e54b1 100644
 515+index 5e55e3ea..f74eb9b1 100644
 516 --- a/ip/ip6tunnel.c
 517 +++ b/ip/ip6tunnel.c
 518-@@ -286,7 +286,7 @@ static int parse_args(int argc, char **argv, int cmd, struct ip6_tnl_parm2 *p)
 519+@@ -273,7 +273,7 @@ static int parse_args(int argc, char **argv, int cmd, struct ip6_tnl_parm2 *p)
 520  			if (get_ifname(p->name, *argv))
 521  				invarg("\"name\" not a valid ifname", *argv);
 522  			if (cmd == SIOCCHGTUNNEL && count == 0) {
 523@@ -566,10 +561,10 @@ index c712d664..318e54b1 100644
 524  				if (tnl_get_ioctl(*argv, &old_p))
 525  					return -1;
 526 diff --git a/ip/ipaddress.c b/ip/ipaddress.c
 527-index 4109d8bd..cfd21f9a 100644
 528+index e536912f..9f062217 100644
 529 --- a/ip/ipaddress.c
 530 +++ b/ip/ipaddress.c
 531-@@ -165,7 +165,7 @@ static void print_queuelen(FILE *f, struct rtattr *tb[IFLA_MAX + 1])
 532+@@ -164,7 +164,7 @@ static void print_queuelen(FILE *f, struct rtattr *tb[IFLA_MAX + 1])
 533  	if (tb[IFLA_TXQLEN])
 534  		qlen = rta_getattr_u32(tb[IFLA_TXQLEN]);
 535  	else {
 536@@ -578,7 +573,7 @@ index 4109d8bd..cfd21f9a 100644
 537  		int s = socket(AF_INET, SOCK_STREAM, 0);
 538  
 539  		if (s < 0)
 540-@@ -353,7 +353,7 @@ static void print_vfinfo(FILE *fp, struct ifinfomsg *ifi, struct rtattr *vfinfo)
 541+@@ -352,7 +352,7 @@ static void print_vfinfo(FILE *fp, struct ifinfomsg *ifi, struct rtattr *vfinfo)
 542  	struct ifla_vf_mac *vf_mac;
 543  	struct ifla_vf_broadcast *vf_broadcast;
 544  	struct ifla_vf_tx_rate *vf_tx_rate;
 545@@ -587,7 +582,7 @@ index 4109d8bd..cfd21f9a 100644
 546  
 547  	SPRINT_BUF(b1);
 548  
 549-@@ -2370,7 +2370,7 @@ static int ipaddr_modify(int cmd, int flags, int argc, char **argv)
 550+@@ -2444,7 +2444,7 @@ static int ipaddr_modify(int cmd, int flags, int argc, char **argv)
 551  	char  *lcl_arg = NULL;
 552  	char  *valid_lftp = NULL;
 553  	char  *preferred_lftp = NULL;
 554@@ -596,7 +591,7 @@ index 4109d8bd..cfd21f9a 100644
 555  	inet_prefix peer;
 556  	int local_len = 0;
 557  	int peer_len = 0;
 558-@@ -2545,7 +2545,7 @@ static int ipaddr_modify(int cmd, int flags, int argc, char **argv)
 559+@@ -2621,7 +2621,7 @@ static int ipaddr_modify(int cmd, int flags, int argc, char **argv)
 560  		return nodev(d);
 561  
 562  	if (valid_lftp || preferred_lftp) {
 563@@ -606,10 +601,10 @@ index 4109d8bd..cfd21f9a 100644
 564  		if (!valid_lft) {
 565  			fprintf(stderr, "valid_lft is zero\n");
 566 diff --git a/ip/ipaddrlabel.c b/ip/ipaddrlabel.c
 567-index beb08da3..c8a14940 100644
 568+index b045827a..1d398524 100644
 569 --- a/ip/ipaddrlabel.c
 570 +++ b/ip/ipaddrlabel.c
 571-@@ -148,7 +148,7 @@ static int ipaddrlabel_modify(int cmd, int argc, char **argv)
 572+@@ -135,7 +135,7 @@ static int ipaddrlabel_modify(int cmd, int argc, char **argv)
 573  		.ifal.ifal_family = preferred_family,
 574  	};
 575  
 576@@ -618,24 +613,11 @@ index beb08da3..c8a14940 100644
 577  	uint32_t label = 0xffffffffUL;
 578  	char *p = NULL;
 579  	char *l = NULL;
 580-diff --git a/ip/iplink.c b/ip/iplink.c
 581-index a3ea775d..10f6c2c6 100644
 582---- a/ip/iplink.c
 583-+++ b/ip/iplink.c
 584-@@ -1261,7 +1261,7 @@ static int set_mtu(const char *dev, int mtu)
 585- 
 586- static int get_address(const char *dev, int *htype)
 587- {
 588--	struct ifreq ifr = {};
 589-+	struct ifreq ifr = {0};
 590- 	struct sockaddr_ll me = {
 591- 		.sll_family = AF_PACKET,
 592- 		.sll_protocol = htons(ETH_P_LOOP),
 593 diff --git a/ip/iplink_can.c b/ip/iplink_can.c
 594-index f4b37528..2d3c1fc8 100644
 595+index f2967db5..07309495 100644
 596 --- a/ip/iplink_can.c
 597 +++ b/ip/iplink_can.c
 598-@@ -130,7 +130,7 @@ static void print_ctrlmode(enum output_type t, __u32 flags, const char* key)
 599+@@ -126,7 +126,7 @@ static void print_ctrlmode(enum output_type t, __u32 flags, const char* key)
 600  static int can_parse_opt(struct link_util *lu, int argc, char **argv,
 601  			 struct nlmsghdr *n)
 602  {
 603@@ -645,10 +627,10 @@ index f4b37528..2d3c1fc8 100644
 604  	struct rtattr *tdc;
 605  	__u32 tdcv = -1, tdco = -1, tdcf = -1;
 606 diff --git a/ip/ipmaddr.c b/ip/ipmaddr.c
 607-index b7600424..3084b462 100644
 608+index 3e7afa91..c059e2c7 100644
 609 --- a/ip/ipmaddr.c
 610 +++ b/ip/ipmaddr.c
 611-@@ -289,7 +289,7 @@ static int multiaddr_list(int argc, char **argv)
 612+@@ -302,7 +302,7 @@ static int multiaddr_list(int argc, char **argv)
 613  
 614  static int multiaddr_modify(int cmd, int argc, char **argv)
 615  {
 616@@ -658,10 +640,10 @@ index b7600424..3084b462 100644
 617  	int fd, len;
 618  
 619 diff --git a/ip/ipntable.c b/ip/ipntable.c
 620-index 762c790d..2fa11a25 100644
 621+index 4ce02a31..11794ce8 100644
 622 --- a/ip/ipntable.c
 623 +++ b/ip/ipntable.c
 624-@@ -76,7 +76,7 @@ static int ipntable_modify(int cmd, int flags, int argc, char **argv)
 625+@@ -62,7 +62,7 @@ static int ipntable_modify(int cmd, int flags, int argc, char **argv)
 626  	char *namep = NULL;
 627  	char *threshsp = NULL;
 628  	char *gc_intp = NULL;
 629@@ -670,7 +652,7 @@ index 762c790d..2fa11a25 100644
 630  	struct rtattr *parms_rta = (struct rtattr *)parms_buf;
 631  	int parms_change = 0;
 632  
 633-@@ -312,7 +312,7 @@ static int ipntable_modify(int cmd, int flags, int argc, char **argv)
 634+@@ -298,7 +298,7 @@ static int ipntable_modify(int cmd, int flags, int argc, char **argv)
 635  static const char *ntable_strtime_delta(__u32 msec)
 636  {
 637  	static char str[32];
 638@@ -680,19 +662,19 @@ index 762c790d..2fa11a25 100644
 639  	struct tm *tp;
 640  
 641 diff --git a/ip/iptunnel.c b/ip/iptunnel.c
 642-index 7a0e7237..c6c99118 100644
 643+index b6da1459..46c5f894 100644
 644 --- a/ip/iptunnel.c
 645 +++ b/ip/iptunnel.c
 646-@@ -177,7 +177,7 @@ static int parse_args(int argc, char **argv, int cmd, struct ip_tunnel_parm *p)
 647- 			if (get_ifname(p->name, *argv))
 648- 				invarg("\"name\" not a valid ifname", *argv);
 649- 			if (cmd == SIOCCHGTUNNEL && count == 0) {
 650--				struct ip_tunnel_parm old_p = {};
 651-+				struct ip_tunnel_parm old_p = {0};
 652+@@ -176,7 +176,7 @@ static int parse_args(int argc, char **argv, int cmd, struct ip_tunnel_parm *p)
 653+ 				union {
 654+ 					struct ip_tunnel_parm ip_tnl;
 655+ 					struct ip6_tnl_parm2 ip6_tnl;
 656+-				} old_p = {};
 657++				} old_p = {0};
 658  
 659  				if (tnl_get_ioctl(*argv, &old_p))
 660  					return -1;
 661-@@ -289,7 +289,7 @@ static int do_del(int argc, char **argv)
 662+@@ -294,7 +294,7 @@ static int do_del(int argc, char **argv)
 663  static void print_tunnel(const void *t)
 664  {
 665  	const struct ip_tunnel_parm *p = t;
 666@@ -701,7 +683,7 @@ index 7a0e7237..c6c99118 100644
 667  	SPRINT_BUF(b1);
 668  
 669  	/* Do not use format_host() for local addr,
 670-@@ -311,7 +311,7 @@ static void print_tunnel(const void *t)
 671+@@ -316,7 +316,7 @@ static void print_tunnel(const void *t)
 672  				: "any");
 673  
 674  	if (p->iph.protocol == IPPROTO_IPV6 && (p->i_flags & SIT_ISATAP)) {
 675@@ -710,7 +692,7 @@ index 7a0e7237..c6c99118 100644
 676  		int i;
 677  
 678  		prl[0].datalen = sizeof(prl) - sizeof(prl[0]);
 679-@@ -434,7 +434,7 @@ static int do_show(int argc, char **argv)
 680+@@ -439,7 +439,7 @@ static int do_show(int argc, char **argv)
 681  
 682  static int do_prl(int argc, char **argv)
 683  {
 684@@ -719,7 +701,7 @@ index 7a0e7237..c6c99118 100644
 685  	int count = 0;
 686  	int cmd = 0;
 687  	const char *medium = NULL;
 688-@@ -483,7 +483,7 @@ static int do_prl(int argc, char **argv)
 689+@@ -488,7 +488,7 @@ static int do_prl(int argc, char **argv)
 690  
 691  static int do_6rd(int argc, char **argv)
 692  {
 693@@ -729,10 +711,10 @@ index 7a0e7237..c6c99118 100644
 694  	const char *medium = NULL;
 695  	inet_prefix prefix;
 696 diff --git a/ip/iptuntap.c b/ip/iptuntap.c
 697-index 9837b37e..f3167858 100644
 698+index 0b63f53d..3cf55055 100644
 699 --- a/ip/iptuntap.c
 700 +++ b/ip/iptuntap.c
 701-@@ -265,7 +265,7 @@ static void print_flags(long flags)
 702+@@ -257,7 +257,7 @@ static void print_flags(long flags)
 703  
 704  static void show_processes(const char *name)
 705  {
 706@@ -742,10 +724,10 @@ index 9837b37e..f3167858 100644
 707  	int err;
 708  
 709 diff --git a/ip/ipxfrm.c b/ip/ipxfrm.c
 710-index 8eb5551f..11b32767 100644
 711+index c3a5986f..7b78712f 100644
 712 --- a/ip/ipxfrm.c
 713 +++ b/ip/ipxfrm.c
 714-@@ -919,7 +919,7 @@ void xfrm_xfrma_print(struct rtattr *tb[], __u16 family,
 715+@@ -908,7 +908,7 @@ void xfrm_xfrma_print(struct rtattr *tb[], __u16 family, FILE *fp,
 716  
 717  static int xfrm_selector_iszero(struct xfrm_selector *s)
 718  {
 719@@ -754,7 +736,7 @@ index 8eb5551f..11b32767 100644
 720  
 721  	return (memcmp(&s0, s, sizeof(s0)) == 0);
 722  }
 723-@@ -941,7 +941,7 @@ void xfrm_state_info_print(struct xfrm_usersa_info *xsinfo,
 724+@@ -930,7 +930,7 @@ void xfrm_state_info_print(struct xfrm_usersa_info *xsinfo,
 725  			    struct rtattr *tb[], FILE *fp, const char *prefix,
 726  			    const char *title, bool nokeys)
 727  {
 728@@ -763,7 +745,7 @@ index 8eb5551f..11b32767 100644
 729  	int force_spi = xfrm_xfrmproto_is_ipsec(xsinfo->id.proto);
 730  
 731  	xfrm_id_info_print(&xsinfo->saddr, &xsinfo->id, xsinfo->mode,
 732-@@ -1012,7 +1012,7 @@ void xfrm_policy_info_print(struct xfrm_userpolicy_info *xpinfo,
 733+@@ -1001,7 +1001,7 @@ void xfrm_policy_info_print(struct xfrm_userpolicy_info *xpinfo,
 734  			    struct rtattr *tb[], FILE *fp, const char *prefix,
 735  			    const char *title)
 736  {
 737@@ -772,7 +754,7 @@ index 8eb5551f..11b32767 100644
 738  
 739  	xfrm_selector_print(&xpinfo->sel, preferred_family, fp, title);
 740  
 741-@@ -1102,8 +1102,8 @@ int xfrm_id_parse(xfrm_address_t *saddr, struct xfrm_id *id, __u16 *family,
 742+@@ -1091,8 +1091,8 @@ int xfrm_id_parse(xfrm_address_t *saddr, struct xfrm_id *id, __u16 *family,
 743  {
 744  	int argc = *argcp;
 745  	char **argv = *argvp;
 746@@ -783,7 +765,7 @@ index 8eb5551f..11b32767 100644
 747  
 748  	while (1) {
 749  		if (strcmp(*argv, "src") == 0) {
 750-@@ -1410,8 +1410,8 @@ int xfrm_selector_parse(struct xfrm_selector *sel, int *argcp, char ***argvp)
 751+@@ -1399,8 +1399,8 @@ int xfrm_selector_parse(struct xfrm_selector *sel, int *argcp, char ***argvp)
 752  {
 753  	int argc = *argcp;
 754  	char **argv = *argvp;
 755@@ -795,16 +777,18 @@ index 8eb5551f..11b32767 100644
 756  
 757  	while (1) {
 758 diff --git a/ip/xfrm_policy.c b/ip/xfrm_policy.c
 759-index 4d825025..37b1b88a 100644
 760+index 8687ced3..161cec66 100644
 761 --- a/ip/xfrm_policy.c
 762 +++ b/ip/xfrm_policy.c
 763-@@ -259,14 +259,14 @@ static int xfrm_policy_modify(int cmd, unsigned int flags, int argc, char **argv
 764+@@ -244,15 +244,15 @@ static int xfrm_policy_modify(int cmd, unsigned int flags, int argc, char **argv
 765  	char *selp = NULL;
 766  	char *ptypep = NULL;
 767  	char *sctxp = NULL;
 768 -	struct xfrm_userpolicy_type upt = {};
 769+-	struct xfrm_user_offload xuo = {};
 770 -	char tmpls_buf[XFRM_TMPLS_BUF_SIZE] = {};
 771 +	struct xfrm_userpolicy_type upt = {0};
 772++	struct xfrm_user_offload xuo = {0};
 773 +	char tmpls_buf[XFRM_TMPLS_BUF_SIZE] = {0};
 774  	int tmpls_len = 0;
 775  	struct xfrm_mark mark = {0, 0};
 776@@ -814,9 +798,9 @@ index 4d825025..37b1b88a 100644
 777 -	} ctx = {};
 778 +	} ctx = {0};
 779  	bool is_if_id_set = false;
 780- 	__u32 if_id = 0;
 781- 
 782-@@ -579,12 +579,12 @@ static int xfrm_policy_get_or_delete(int argc, char **argv, int delete,
 783+ 	unsigned int ifindex = 0;
 784+ 	bool is_offload = false;
 785+@@ -589,12 +589,12 @@ static int xfrm_policy_get_or_delete(int argc, char **argv, int delete,
 786  	char *indexp = NULL;
 787  	char *ptypep = NULL;
 788  	char *sctxp = NULL;
 789@@ -831,7 +815,7 @@ index 4d825025..37b1b88a 100644
 790  	bool is_if_id_set = false;
 791  	__u32 if_id = 0;
 792  
 793-@@ -1265,7 +1265,7 @@ static int xfrm_policy_flush(int argc, char **argv)
 794+@@ -1276,7 +1276,7 @@ static int xfrm_policy_flush(int argc, char **argv)
 795  		.n.nlmsg_type = XFRM_MSG_FLUSHPOLICY,
 796  	};
 797  	char *ptypep = NULL;
 798@@ -841,10 +825,10 @@ index 4d825025..37b1b88a 100644
 799  	while (argc > 0) {
 800  		if (strcmp(*argv, "ptype") == 0) {
 801 diff --git a/ip/xfrm_state.c b/ip/xfrm_state.c
 802-index 6fee7efd..628aeffd 100644
 803+index 9be65b2f..6e141335 100644
 804 --- a/ip/xfrm_state.c
 805 +++ b/ip/xfrm_state.c
 806-@@ -307,9 +307,9 @@ static int xfrm_state_modify(int cmd, unsigned int flags, int argc, char **argv)
 807+@@ -286,9 +286,9 @@ static int xfrm_state_modify(int cmd, unsigned int flags, int argc, char **argv)
 808  		.xsinfo.lft.soft_packet_limit = XFRM_INF,
 809  		.xsinfo.lft.hard_packet_limit = XFRM_INF,
 810  	};
 811@@ -856,8 +840,8 @@ index 6fee7efd..628aeffd 100644
 812 +	struct xfrm_user_offload xuo = {0};
 813  	unsigned int ifindex = 0;
 814  	__u8 dir = 0;
 815- 	bool is_offload = false;
 816-@@ -327,7 +327,7 @@ static int xfrm_state_modify(int cmd, unsigned int flags, int argc, char **argv)
 817+ 	bool is_offload = false, is_packet_offload = false;
 818+@@ -306,7 +306,7 @@ static int xfrm_state_modify(int cmd, unsigned int flags, int argc, char **argv)
 819  	struct {
 820  		struct xfrm_user_sec_ctx sctx;
 821  		char    str[CTX_BUF_SIZE];
 822@@ -866,7 +850,7 @@ index 6fee7efd..628aeffd 100644
 823  	struct xfrm_mark output_mark = {0, 0};
 824  	bool is_if_id_set = false;
 825  	__u32 if_id = 0;
 826-@@ -397,7 +397,7 @@ static int xfrm_state_modify(int cmd, unsigned int flags, int argc, char **argv)
 827+@@ -376,7 +376,7 @@ static int xfrm_state_modify(int cmd, unsigned int flags, int argc, char **argv)
 828  				  (void *)&encap, sizeof(encap));
 829  		} else if (strcmp(*argv, "coa") == 0) {
 830  			inet_prefix coa;
 831@@ -875,7 +859,7 @@ index 6fee7efd..628aeffd 100644
 832  
 833  			if (coap)
 834  				duparg("coa", *argv);
 835-@@ -489,7 +489,7 @@ static int xfrm_state_modify(int cmd, unsigned int flags, int argc, char **argv)
 836+@@ -481,7 +481,7 @@ static int xfrm_state_modify(int cmd, unsigned int flags, int argc, char **argv)
 837  						struct xfrm_algo_auth auth;
 838  					} u;
 839  					char buf[XFRM_ALGO_KEY_BUF_SIZE];
 840@@ -885,10 +869,10 @@ index 6fee7efd..628aeffd 100644
 841  				__u32 icvlen, trunclen;
 842  				char *name;
 843 diff --git a/lib/bpf_legacy.c b/lib/bpf_legacy.c
 844-index 6e3891c9..614ee1c6 100644
 845+index c8da4a3e..253e8240 100644
 846 --- a/lib/bpf_legacy.c
 847 +++ b/lib/bpf_legacy.c
 848-@@ -148,7 +148,7 @@ static int bpf(int cmd, union bpf_attr *attr, unsigned int size)
 849+@@ -133,7 +133,7 @@ static inline __u64 bpf_ptr_to_u64(const void *ptr)
 850  static int bpf_map_update(int fd, const void *key, const void *value,
 851  			  uint64_t flags)
 852  {
 853@@ -897,7 +881,7 @@ index 6e3891c9..614ee1c6 100644
 854  
 855  	attr.map_fd = fd;
 856  	attr.key = bpf_ptr_to_u64(key);
 857-@@ -160,7 +160,7 @@ static int bpf_map_update(int fd, const void *key, const void *value,
 858+@@ -145,7 +145,7 @@ static int bpf_map_update(int fd, const void *key, const void *value,
 859  
 860  static int bpf_prog_fd_by_id(uint32_t id)
 861  {
 862@@ -906,7 +890,7 @@ index 6e3891c9..614ee1c6 100644
 863  
 864  	attr.prog_id = id;
 865  
 866-@@ -170,7 +170,7 @@ static int bpf_prog_fd_by_id(uint32_t id)
 867+@@ -155,7 +155,7 @@ static int bpf_prog_fd_by_id(uint32_t id)
 868  static int bpf_prog_info_by_fd(int fd, struct bpf_prog_info *info,
 869  			       uint32_t *info_len)
 870  {
 871@@ -915,7 +899,7 @@ index 6e3891c9..614ee1c6 100644
 872  	int ret;
 873  
 874  	attr.info.bpf_fd = fd;
 875-@@ -187,7 +187,7 @@ static int bpf_prog_info_by_fd(int fd, struct bpf_prog_info *info,
 876+@@ -172,7 +172,7 @@ static int bpf_prog_info_by_fd(int fd, struct bpf_prog_info *info,
 877  
 878  int bpf_dump_prog_info(FILE *f, uint32_t id)
 879  {
 880@@ -924,7 +908,7 @@ index 6e3891c9..614ee1c6 100644
 881  	uint32_t len = sizeof(info);
 882  	int fd, ret, dump_ok = 0;
 883  	SPRINT_BUF(tmp);
 884-@@ -467,7 +467,7 @@ static int bpf_map_selfcheck_pinned(int fd, const struct bpf_elf_map *map,
 885+@@ -452,7 +452,7 @@ static int bpf_map_selfcheck_pinned(int fd, const struct bpf_elf_map *map,
 886  				    struct bpf_map_ext *ext, int length,
 887  				    enum bpf_prog_type type)
 888  {
 889@@ -933,7 +917,7 @@ index 6e3891c9..614ee1c6 100644
 890  	int ret;
 891  
 892  	ret = bpf_derive_elf_map_from_fdinfo(fd, &tmp, ext);
 893-@@ -709,7 +709,7 @@ static int bpf_gen_slave(const char *base, const char *name,
 894+@@ -694,7 +694,7 @@ static int bpf_gen_slave(const char *base, const char *name,
 895  {
 896  	char bpf_lnk_dir[PATH_MAX + NAME_MAX + 1];
 897  	char bpf_sub_dir[PATH_MAX + NAME_MAX];
 898@@ -942,7 +926,7 @@ index 6e3891c9..614ee1c6 100644
 899  	int ret;
 900  
 901  	snprintf(bpf_lnk_dir, sizeof(bpf_lnk_dir), "%s%s/", base, link);
 902-@@ -816,7 +816,7 @@ out:
 903+@@ -801,7 +801,7 @@ out:
 904  
 905  static int bpf_obj_get(const char *pathname, enum bpf_prog_type type)
 906  {
 907@@ -951,7 +935,7 @@ index 6e3891c9..614ee1c6 100644
 908  	char tmp[PATH_MAX];
 909  
 910  	if (strlen(pathname) > 2 && pathname[0] == 'm' &&
 911-@@ -990,7 +990,7 @@ int bpf_load_common(struct bpf_cfg_in *cfg, const struct bpf_cfg_ops *ops,
 912+@@ -982,7 +982,7 @@ int bpf_load_common(struct bpf_cfg_in *cfg, const struct bpf_cfg_ops *ops,
 913  
 914  int bpf_parse_common(struct bpf_cfg_in *cfg, const struct bpf_cfg_ops *ops)
 915  {
 916@@ -960,7 +944,7 @@ index 6e3891c9..614ee1c6 100644
 917  
 918  	if (ops->cbpf_cb) {
 919  		opt_tbl[CBPF_BYTECODE] = true;
 920-@@ -1033,7 +1033,7 @@ int bpf_graft_map(const char *map_path, uint32_t *key, int argc, char **argv)
 921+@@ -1025,7 +1025,7 @@ int bpf_graft_map(const char *map_path, uint32_t *key, int argc, char **argv)
 922  		.argc		= argc,
 923  		.argv		= argv,
 924  	};
 925@@ -969,7 +953,7 @@ index 6e3891c9..614ee1c6 100644
 926  	int ret, prog_fd, map_fd;
 927  	uint32_t map_key;
 928  
 929-@@ -1086,7 +1086,7 @@ out_prog:
 930+@@ -1078,7 +1078,7 @@ out_prog:
 931  
 932  int bpf_prog_attach_fd(int prog_fd, int target_fd, enum bpf_attach_type type)
 933  {
 934@@ -978,7 +962,7 @@ index 6e3891c9..614ee1c6 100644
 935  
 936  	attr.target_fd = target_fd;
 937  	attr.attach_bpf_fd = prog_fd;
 938-@@ -1097,7 +1097,7 @@ int bpf_prog_attach_fd(int prog_fd, int target_fd, enum bpf_attach_type type)
 939+@@ -1089,7 +1089,7 @@ int bpf_prog_attach_fd(int prog_fd, int target_fd, enum bpf_attach_type type)
 940  
 941  int bpf_prog_detach_fd(int target_fd, enum bpf_attach_type type)
 942  {
 943@@ -987,16 +971,16 @@ index 6e3891c9..614ee1c6 100644
 944  
 945  	attr.target_fd = target_fd;
 946  	attr.attach_type = type;
 947-@@ -1109,7 +1109,7 @@ int bpf_prog_load_dev(enum bpf_prog_type type, const struct bpf_insn *insns,
 948+@@ -1101,7 +1101,7 @@ int bpf_prog_load_dev(enum bpf_prog_type type, const struct bpf_insn *insns,
 949  		      size_t size_insns, const char *license, __u32 ifindex,
 950- 		      char *log, size_t size_log)
 951+ 		      char *log, size_t size_log, bool verbose)
 952  {
 953 -	union bpf_attr attr = {};
 954 +	union bpf_attr attr = {0};
 955  
 956  	attr.prog_type = type;
 957  	attr.insns = bpf_ptr_to_u64(insns);
 958-@@ -1264,7 +1264,7 @@ static int bpf_map_create(enum bpf_map_type type, uint32_t size_key,
 959+@@ -1265,7 +1265,7 @@ static int bpf_map_create(enum bpf_map_type type, uint32_t size_key,
 960  			  uint32_t ifindex, uint32_t btf_id_key,
 961  			  uint32_t btf_id_val)
 962  {
 963@@ -1005,7 +989,7 @@ index 6e3891c9..614ee1c6 100644
 964  
 965  	attr.map_type = type;
 966  	attr.key_size = size_key;
 967-@@ -1283,7 +1283,7 @@ static int bpf_map_create(enum bpf_map_type type, uint32_t size_key,
 968+@@ -1284,7 +1284,7 @@ static int bpf_map_create(enum bpf_map_type type, uint32_t size_key,
 969  static int bpf_btf_load(void *btf, size_t size_btf,
 970  			char *log, size_t size_log)
 971  {
 972@@ -1014,7 +998,7 @@ index 6e3891c9..614ee1c6 100644
 973  
 974  	attr.btf = bpf_ptr_to_u64(btf);
 975  	attr.btf_size = size_btf;
 976-@@ -1299,7 +1299,7 @@ static int bpf_btf_load(void *btf, size_t size_btf,
 977+@@ -1300,7 +1300,7 @@ static int bpf_btf_load(void *btf, size_t size_btf,
 978  
 979  static int bpf_obj_pin(int fd, const char *pathname)
 980  {
 981@@ -1023,7 +1007,7 @@ index 6e3891c9..614ee1c6 100644
 982  
 983  	attr.pathname = bpf_ptr_to_u64(pathname);
 984  	attr.bpf_fd = fd;
 985-@@ -1984,7 +1984,7 @@ static int bpf_map_verify_all_offs(struct bpf_elf_ctx *ctx, int end)
 986+@@ -1985,7 +1985,7 @@ static int bpf_map_verify_all_offs(struct bpf_elf_ctx *ctx, int end)
 987  
 988  static int bpf_fetch_maps_end(struct bpf_elf_ctx *ctx)
 989  {
 990@@ -1032,7 +1016,7 @@ index 6e3891c9..614ee1c6 100644
 991  	int i, sym_num = bpf_map_num_sym(ctx);
 992  	__u8 *buff;
 993  
 994-@@ -2490,7 +2490,7 @@ static int bpf_fetch_prog_relo(struct bpf_elf_ctx *ctx, const char *section,
 995+@@ -2491,7 +2491,7 @@ static int bpf_fetch_prog_relo(struct bpf_elf_ctx *ctx, const char *section,
 996  	int ret, idx, i, fd = -1;
 997  
 998  	for (i = 1; i < ctx->elf_hdr.e_shnum; i++) {
 999@@ -1041,7 +1025,7 @@ index 6e3891c9..614ee1c6 100644
1000  
1001  		ret = bpf_fill_section_data(ctx, i, &data_relo);
1002  		if (ret < 0 || data_relo.sec_hdr.sh_type != SHT_REL)
1003-@@ -2665,7 +2665,7 @@ static int bpf_fill_prog_arrays(struct bpf_elf_ctx *ctx)
1004+@@ -2666,7 +2666,7 @@ static int bpf_fill_prog_arrays(struct bpf_elf_ctx *ctx)
1005  		ret = bpf_map_update(ctx->map_fds[idx], &key_id,
1006  				     &fd, BPF_ANY);
1007  		if (ret < 0) {
1008@@ -1050,8 +1034,8 @@ index 6e3891c9..614ee1c6 100644
1009  
1010  			ret = -errno;
1011  			if (errno == E2BIG) {
1012-@@ -2756,7 +2756,7 @@ static bool bpf_pinning_reserved(uint32_t pinning)
1013- static void bpf_hash_init(struct bpf_elf_ctx *ctx, const char *db_file)
1014+@@ -2757,7 +2757,7 @@ static bool bpf_pinning_reserved(uint32_t pinning)
1015+ static int bpf_hash_init(struct bpf_elf_ctx *ctx, const char *db_file)
1016  {
1017  	struct bpf_hash_entry *entry;
1018 -	char subpath[PATH_MAX] = {};
1019@@ -1059,7 +1043,7 @@ index 6e3891c9..614ee1c6 100644
1020  	uint32_t pinning;
1021  	FILE *fp;
1022  	int ret;
1023-@@ -2854,7 +2854,7 @@ static void bpf_get_cfg(struct bpf_elf_ctx *ctx)
1024+@@ -2857,7 +2857,7 @@ static void bpf_get_cfg(struct bpf_elf_ctx *ctx)
1025  
1026  	fd = open(path_jit, O_RDONLY);
1027  	if (fd >= 0) {
1028@@ -1069,10 +1053,10 @@ index 6e3891c9..614ee1c6 100644
1029  		if (read(fd, tmp, sizeof(tmp)) > 0)
1030  			ctx->cfg.jit_enabled = atoi(tmp);
1031 diff --git a/lib/libnetlink.c b/lib/libnetlink.c
1032-index 7068750f..ea7e322e 100644
1033+index 80adabf4..db613e8d 100644
1034 --- a/lib/libnetlink.c
1035 +++ b/lib/libnetlink.c
1036-@@ -84,7 +84,7 @@ static void print_ext_ack_msg(bool is_err, const char *msg)
1037+@@ -79,7 +79,7 @@ static void print_ext_ack_msg(bool is_err, const char *msg)
1038  /* dump netlink extended ack error message */
1039  int nl_dump_ext_ack(const struct nlmsghdr *nlh, nl_ext_ack_fn_t errfn)
1040  {
1041@@ -1081,16 +1065,16 @@ index 7068750f..ea7e322e 100644
1042  	const struct nlmsgerr *err = mnl_nlmsg_get_payload(nlh);
1043  	const struct nlmsghdr *err_nlh = NULL;
1044  	unsigned int hlen = sizeof(*err);
1045-@@ -131,7 +131,7 @@ int nl_dump_ext_ack(const struct nlmsghdr *nlh, nl_ext_ack_fn_t errfn)
1046+@@ -126,7 +126,7 @@ int nl_dump_ext_ack(const struct nlmsghdr *nlh, nl_ext_ack_fn_t errfn)
1047  
1048- int nl_dump_ext_ack_done(const struct nlmsghdr *nlh, int error)
1049+ int nl_dump_ext_ack_done(const struct nlmsghdr *nlh, unsigned int offset, int error)
1050  {
1051 -	struct nlattr *tb[NLMSGERR_ATTR_MAX + 1] = {};
1052 +	struct nlattr *tb[NLMSGERR_ATTR_MAX + 1] = {0};
1053- 	unsigned int hlen = sizeof(int);
1054  	const char *msg = NULL;
1055  
1056-@@ -951,7 +951,7 @@ int rtnl_dump_filter_nc(struct rtnl_handle *rth,
1057+ 	if (mnl_attr_parse(nlh, offset, err_attr_cb, tb) != MNL_CB_OK)
1058+@@ -959,7 +959,7 @@ int rtnl_dump_filter_nc(struct rtnl_handle *rth,
1059  			.filter = filter, .arg1 = arg1,
1060  			.nc_flags = nc_flags,
1061  		},
1062@@ -1099,7 +1083,7 @@ index 7068750f..ea7e322e 100644
1063  	};
1064  
1065  	return rtnl_dump_filter_l(rth, a);
1066-@@ -970,7 +970,7 @@ int rtnl_dump_filter_errhndlr_nc(struct rtnl_handle *rth,
1067+@@ -978,7 +978,7 @@ int rtnl_dump_filter_errhndlr_nc(struct rtnl_handle *rth,
1068  			.errhndlr = errhndlr, .arg2 = arg2,
1069  			.nc_flags = nc_flags,
1070  		},
1071@@ -1109,10 +1093,10 @@ index 7068750f..ea7e322e 100644
1072  
1073  	return rtnl_dump_filter_l(rth, a);
1074 diff --git a/lib/ll_map.c b/lib/ll_map.c
1075-index 70ea3d49..36320f77 100644
1076+index 8970c20f..7fe5f0bc 100644
1077 --- a/lib/ll_map.c
1078 +++ b/lib/ll_map.c
1079-@@ -279,7 +279,7 @@ static int ll_link_get(const char *name, int index)
1080+@@ -274,7 +274,7 @@ static int ll_link_get(const char *name, int index)
1081  		.ifm.ifi_index = index,
1082  	};
1083  	__u32 filt_mask = RTEXT_FILTER_VF | RTEXT_FILTER_SKIP_STATS;
1084@@ -1122,10 +1106,10 @@ index 70ea3d49..36320f77 100644
1085  	int rc = 0;
1086  
1087 diff --git a/lib/rt_names.c b/lib/rt_names.c
1088-index b976471d..0b13c66f 100644
1089+index dafef3f1..c3b121fe 100644
1090 --- a/lib/rt_names.c
1091 +++ b/lib/rt_names.c
1092-@@ -696,8 +696,7 @@ int nl_proto_a2n(__u32 *id, const char *arg)
1093+@@ -825,8 +825,7 @@ int nl_proto_a2n(__u32 *id, const char *arg)
1094  }
1095  
1096  #define PROTODOWN_REASON_NUM_BITS 32
1097@@ -1136,10 +1120,10 @@ index b976471d..0b13c66f 100644
1098  static int protodown_reason_init;
1099  
1100 diff --git a/misc/arpd.c b/misc/arpd.c
1101-index 504961cb..ac412e29 100644
1102+index 1ef837c6..71524bd4 100644
1103 --- a/misc/arpd.c
1104 +++ b/misc/arpd.c
1105-@@ -435,7 +435,7 @@ static void get_kern_msg(void)
1106+@@ -431,7 +431,7 @@ static void get_kern_msg(void)
1107  {
1108  	int status;
1109  	struct nlmsghdr *h;
1110@@ -1148,7 +1132,7 @@ index 504961cb..ac412e29 100644
1111  	struct iovec iov;
1112  	char   buf[8192];
1113  	struct msghdr msg = {
1114-@@ -659,7 +659,7 @@ int main(int argc, char **argv)
1115+@@ -655,7 +655,7 @@ int main(int argc, char **argv)
1116  
1117  	if (ifnum) {
1118  		int i;
1119@@ -1158,10 +1142,10 @@ index 504961cb..ac412e29 100644
1120  		for (i = 0; i < ifnum; i++) {
1121  			if (get_ifname(ifr.ifr_name, ifnames[i]))
1122 diff --git a/misc/ss.c b/misc/ss.c
1123-index b39f63fe..eda95552 100644
1124+index fb560a55..e5d97d95 100644
1125 --- a/misc/ss.c
1126 +++ b/misc/ss.c
1127-@@ -2682,7 +2682,7 @@ static void sctp_timer_print(struct tcpstat *s)
1128+@@ -2760,7 +2760,7 @@ static void sctp_timer_print(struct tcpstat *s)
1129  static int tcp_show_line(char *line, const struct filter *f, int family)
1130  {
1131  	int rto = 0, ato = 0;
1132@@ -1170,7 +1154,7 @@ index b39f63fe..eda95552 100644
1133  	char *loc, *rem, *data;
1134  	char opt[256];
1135  	int n;
1136-@@ -2949,7 +2949,7 @@ static void tcp_show_info(const struct nlmsghdr *nlh, struct inet_diag_msg *r,
1137+@@ -3041,7 +3041,7 @@ static void tcp_show_info(const struct nlmsghdr *nlh, struct inet_diag_msg *r,
1138  		struct rtattr *tb[])
1139  {
1140  	double rtt = 0;
1141@@ -1179,7 +1163,7 @@ index b39f63fe..eda95552 100644
1142  
1143  	s.ss.state = r->idiag_state;
1144  
1145-@@ -3295,7 +3295,7 @@ static int inet_show_sock(struct nlmsghdr *nlh,
1146+@@ -3414,7 +3414,7 @@ static int inet_show_sock(struct nlmsghdr *nlh,
1147  	inet_stats_print(s, v6only);
1148  
1149  	if (show_options) {
1150@@ -1188,7 +1172,7 @@ index b39f63fe..eda95552 100644
1151  
1152  		t.timer = r->idiag_timer;
1153  		t.timeout = r->idiag_expires;
1154-@@ -3572,7 +3572,7 @@ static int show_one_inet_sock(struct nlmsghdr *h, void *arg)
1155+@@ -3691,7 +3691,7 @@ static int show_one_inet_sock(struct nlmsghdr *h, void *arg)
1156  	int err;
1157  	struct inet_diag_arg *diag_arg = arg;
1158  	struct inet_diag_msg *r = NLMSG_DATA(h);
1159@@ -1197,7 +1181,7 @@ index b39f63fe..eda95552 100644
1160  
1161  	if (!(diag_arg->f->families & FAMILY_MASK(r->idiag_family)))
1162  		return 0;
1163-@@ -3669,7 +3669,7 @@ static int tcp_show_netlink_file(struct filter *f)
1164+@@ -3788,7 +3788,7 @@ static int tcp_show_netlink_file(struct filter *f)
1165  		int err2;
1166  		size_t status, nitems;
1167  		struct nlmsghdr *h = (struct nlmsghdr *)buf;
1168@@ -1206,7 +1190,7 @@ index b39f63fe..eda95552 100644
1169  
1170  		status = fread(buf, 1, sizeof(*h), fp);
1171  		if (status != sizeof(*h)) {
1172-@@ -3826,7 +3826,7 @@ static int sctp_show(struct filter *f)
1173+@@ -3945,7 +3945,7 @@ static int sctp_show(struct filter *f)
1174  
1175  static int dgram_show_line(char *line, const struct filter *f, int family)
1176  {
1177@@ -1215,7 +1199,7 @@ index b39f63fe..eda95552 100644
1178  	char *loc, *rem, *data;
1179  	char opt[256];
1180  	int n;
1181-@@ -3966,7 +3966,7 @@ static bool unix_type_skip(struct sockstat *s, struct filter *f)
1182+@@ -4085,7 +4085,7 @@ static bool unix_type_skip(struct sockstat *s, struct filter *f)
1183  
1184  static void unix_stats_print(struct sockstat *s, struct filter *f)
1185  {
1186@@ -1224,7 +1208,7 @@ index b39f63fe..eda95552 100644
1187  
1188  	sock_state_print(s);
1189  
1190-@@ -4279,7 +4279,7 @@ static int packet_show_sock(struct nlmsghdr *nlh, void *arg)
1191+@@ -4398,7 +4398,7 @@ static int packet_show_sock(struct nlmsghdr *nlh, void *arg)
1192  	struct packet_diag_info *pinfo = NULL;
1193  	struct packet_diag_ring *ring_rx = NULL, *ring_tx = NULL;
1194  	struct rtattr *tb[PACKET_DIAG_MAX+1];
1195@@ -1233,7 +1217,7 @@ index b39f63fe..eda95552 100644
1196  	uint32_t fanout = 0;
1197  	bool has_fanout = false;
1198  
1199-@@ -4428,7 +4428,7 @@ static int packet_show_netlink(struct filter *f)
1200+@@ -4547,7 +4547,7 @@ static int packet_show_netlink(struct filter *f)
1201  static int packet_show_line(char *buf, const struct filter *f, int fam)
1202  {
1203  	unsigned long long sk;
1204@@ -1242,7 +1226,7 @@ index b39f63fe..eda95552 100644
1205  	int type, prot, iface, state, rq, uid, ino;
1206  
1207  	sscanf(buf, "%llx %*d %d %x %d %d %u %u %u",
1208-@@ -4568,7 +4568,7 @@ static int xdp_show_sock(struct nlmsghdr *nlh, void *arg)
1209+@@ -4687,7 +4687,7 @@ static int xdp_show_sock(struct nlmsghdr *nlh, void *arg)
1210  	struct xdp_diag_umem *umem = NULL;
1211  	struct xdp_diag_stats *stats = NULL;
1212  	const struct filter *f = arg;
1213@@ -1251,7 +1235,7 @@ index b39f63fe..eda95552 100644
1214  
1215  	parse_rtattr(tb, XDP_DIAG_MAX, (struct rtattr *)(msg + 1),
1216  		     nlh->nlmsg_len - NLMSG_LENGTH(sizeof(*msg)));
1217-@@ -4653,9 +4653,9 @@ static int netlink_show_one(struct filter *f,
1218+@@ -4772,9 +4772,9 @@ static int netlink_show_one(struct filter *f,
1219  		.remote.family	= AF_NETLINK,
1220  	};
1221  
1222@@ -1263,7 +1247,7 @@ index b39f63fe..eda95552 100644
1223  
1224  	if (f->f) {
1225  		st.rport = -1;
1226-@@ -4902,8 +4902,8 @@ static void tipc_sock_addr_print(struct rtattr *net_addr, struct rtattr *id)
1227+@@ -5021,8 +5021,8 @@ static void tipc_sock_addr_print(struct rtattr *net_addr, struct rtattr *id)
1228  	uint32_t node = rta_getattr_u32(net_addr);
1229  	uint32_t identity = rta_getattr_u32(id);
1230  
1231@@ -1274,7 +1258,7 @@ index b39f63fe..eda95552 100644
1232  
1233  	sprintf(addr, "%u", node);
1234  	sprintf(port, "%u", identity);
1235-@@ -4913,12 +4913,12 @@ static void tipc_sock_addr_print(struct rtattr *net_addr, struct rtattr *id)
1236+@@ -5032,12 +5032,12 @@ static void tipc_sock_addr_print(struct rtattr *net_addr, struct rtattr *id)
1237  
1238  static int tipc_show_sock(struct nlmsghdr *nlh, void *arg)
1239  {
1240@@ -1293,10 +1277,10 @@ index b39f63fe..eda95552 100644
1241  	parse_rtattr(info, TIPC_NLA_MAX, NLMSG_DATA(nlh),
1242  		     NLMSG_PAYLOAD(nlh, 0));
1243 diff --git a/rdma/dev.c b/rdma/dev.c
1244-index c684dde4..92397f23 100644
1245+index f495b713..dfc886bb 100644
1246 --- a/rdma/dev.c
1247 +++ b/rdma/dev.c
1248-@@ -191,7 +191,7 @@ static void dev_print_node_type(struct rd *rd, struct nlattr **tb)
1249+@@ -201,7 +201,7 @@ static void dev_print_dev_proto(struct nlattr **tb)
1250  
1251  static int dev_parse_cb(const struct nlmsghdr *nlh, void *data)
1252  {
1253@@ -1306,10 +1290,10 @@ index c684dde4..92397f23 100644
1254  	const char *name;
1255  	uint32_t idx;
1256 diff --git a/rdma/link.c b/rdma/link.c
1257-index bf24b849..620485f1 100644
1258+index 85318173..9b3125d6 100644
1259 --- a/rdma/link.c
1260 +++ b/rdma/link.c
1261-@@ -224,7 +224,7 @@ static void link_print_netdev(struct rd *rd, struct nlattr **tb)
1262+@@ -220,7 +220,7 @@ static void link_print_netdev(const struct rd * rd, struct nlattr **tb)
1263  
1264  static int link_parse_cb(const struct nlmsghdr *nlh, void *data)
1265  {
1266@@ -1319,23 +1303,23 @@ index bf24b849..620485f1 100644
1267  	uint32_t port, idx;
1268  	const char *name;
1269 diff --git a/rdma/rdma.c b/rdma/rdma.c
1270-index 8dc2d3e3..cd72b9f2 100644
1271+index 131c6b2a..90bf3ed5 100644
1272 --- a/rdma/rdma.c
1273 +++ b/rdma/rdma.c
1274-@@ -99,7 +99,7 @@ int main(int argc, char **argv)
1275- 	bool json_output = false;
1276+@@ -103,7 +103,7 @@ int main(int argc, char **argv)
1277  	bool show_raw = false;
1278  	bool force = false;
1279+ 	bool oneline = false;
1280 -	struct rd rd = {};
1281 +	struct rd rd = {0};
1282  	char *filename;
1283  	int opt;
1284  	int err;
1285 diff --git a/rdma/res-cmid.c b/rdma/res-cmid.c
1286-index bfaa47b5..6e07f048 100644
1287+index 17a89cc4..7d348d45 100644
1288 --- a/rdma/res-cmid.c
1289 +++ b/rdma/res-cmid.c
1290-@@ -206,7 +206,7 @@ out:	if (nla_line[RDMA_NLDEV_ATTR_RES_PID])
1291+@@ -202,7 +202,7 @@ out:
1292  
1293  int res_cm_id_idx_parse_cb(const struct nlmsghdr *nlh, void *data)
1294  {
1295@@ -1344,7 +1328,7 @@ index bfaa47b5..6e07f048 100644
1296  	struct rd *rd = data;
1297  	const char *name;
1298  	int idx;
1299-@@ -223,7 +223,7 @@ int res_cm_id_idx_parse_cb(const struct nlmsghdr *nlh, void *data)
1300+@@ -219,7 +219,7 @@ int res_cm_id_idx_parse_cb(const struct nlmsghdr *nlh, void *data)
1301  
1302  int res_cm_id_parse_cb(const struct nlmsghdr *nlh, void *data)
1303  {
1304@@ -1353,7 +1337,7 @@ index bfaa47b5..6e07f048 100644
1305  	struct nlattr *nla_table, *nla_entry;
1306  	struct rd *rd = data;
1307  	int ret = MNL_CB_OK;
1308-@@ -240,7 +240,7 @@ int res_cm_id_parse_cb(const struct nlmsghdr *nlh, void *data)
1309+@@ -236,7 +236,7 @@ int res_cm_id_parse_cb(const struct nlmsghdr *nlh, void *data)
1310  	nla_table = tb[RDMA_NLDEV_ATTR_RES_CM_ID];
1311  
1312  	mnl_attr_for_each_nested(nla_entry, nla_table) {
1313@@ -1363,10 +1347,10 @@ index bfaa47b5..6e07f048 100644
1314  		ret = mnl_attr_parse_nested(nla_entry, rd_attr_cb, nla_line);
1315  		if (ret != MNL_CB_OK)
1316 diff --git a/rdma/res-cq.c b/rdma/res-cq.c
1317-index 9e7c4f51..8c875a1c 100644
1318+index 0cab3fe0..a8ee00dc 100644
1319 --- a/rdma/res-cq.c
1320 +++ b/rdma/res-cq.c
1321-@@ -130,7 +130,7 @@ out:	if (nla_line[RDMA_NLDEV_ATTR_RES_PID])
1322+@@ -130,7 +130,7 @@ out:
1323  
1324  int res_cq_idx_parse_cb(const struct nlmsghdr *nlh, void *data)
1325  {
1326@@ -1394,10 +1378,10 @@ index 9e7c4f51..8c875a1c 100644
1327  		ret = mnl_attr_parse_nested(nla_entry, rd_attr_cb, nla_line);
1328  		if (ret != MNL_CB_OK)
1329 diff --git a/rdma/res-mr.c b/rdma/res-mr.c
1330-index 1bf73f3a..1d060614 100644
1331+index f6c2534a..024f5994 100644
1332 --- a/rdma/res-mr.c
1333 +++ b/rdma/res-mr.c
1334-@@ -94,7 +94,7 @@ out:
1335+@@ -96,7 +96,7 @@ out:
1336  
1337  int res_mr_idx_parse_cb(const struct nlmsghdr *nlh, void *data)
1338  {
1339@@ -1406,7 +1390,7 @@ index 1bf73f3a..1d060614 100644
1340  	struct rd *rd = data;
1341  	const char *name;
1342  	uint32_t idx;
1343-@@ -112,7 +112,7 @@ int res_mr_idx_parse_cb(const struct nlmsghdr *nlh, void *data)
1344+@@ -114,7 +114,7 @@ int res_mr_idx_parse_cb(const struct nlmsghdr *nlh, void *data)
1345  
1346  int res_mr_parse_cb(const struct nlmsghdr *nlh, void *data)
1347  {
1348@@ -1415,7 +1399,7 @@ index 1bf73f3a..1d060614 100644
1349  	struct nlattr *nla_table, *nla_entry;
1350  	struct rd *rd = data;
1351  	int ret = MNL_CB_OK;
1352-@@ -129,7 +129,7 @@ int res_mr_parse_cb(const struct nlmsghdr *nlh, void *data)
1353+@@ -131,7 +131,7 @@ int res_mr_parse_cb(const struct nlmsghdr *nlh, void *data)
1354  	nla_table = tb[RDMA_NLDEV_ATTR_RES_MR];
1355  
1356  	mnl_attr_for_each_nested(nla_entry, nla_table) {
1357@@ -1425,10 +1409,10 @@ index 1bf73f3a..1d060614 100644
1358  		ret = mnl_attr_parse_nested(nla_entry, rd_attr_cb, nla_line);
1359  		if (ret != MNL_CB_OK)
1360 diff --git a/rdma/res-pd.c b/rdma/res-pd.c
1361-index df538010..6179d788 100644
1362+index 8b9f7aa6..e45b1d0d 100644
1363 --- a/rdma/res-pd.c
1364 +++ b/rdma/res-pd.c
1365-@@ -83,7 +83,7 @@ out:	if (nla_line[RDMA_NLDEV_ATTR_RES_PID])
1366+@@ -82,7 +82,7 @@ out:
1367  
1368  int res_pd_idx_parse_cb(const struct nlmsghdr *nlh, void *data)
1369  {
1370@@ -1437,7 +1421,7 @@ index df538010..6179d788 100644
1371  	struct rd *rd = data;
1372  	const char *name;
1373  	uint32_t idx;
1374-@@ -100,7 +100,7 @@ int res_pd_idx_parse_cb(const struct nlmsghdr *nlh, void *data)
1375+@@ -99,7 +99,7 @@ int res_pd_idx_parse_cb(const struct nlmsghdr *nlh, void *data)
1376  
1377  int res_pd_parse_cb(const struct nlmsghdr *nlh, void *data)
1378  {
1379@@ -1446,7 +1430,7 @@ index df538010..6179d788 100644
1380  	struct nlattr *nla_table, *nla_entry;
1381  	struct rd *rd = data;
1382  	int ret = MNL_CB_OK;
1383-@@ -117,7 +117,7 @@ int res_pd_parse_cb(const struct nlmsghdr *nlh, void *data)
1384+@@ -116,7 +116,7 @@ int res_pd_parse_cb(const struct nlmsghdr *nlh, void *data)
1385  	nla_table = tb[RDMA_NLDEV_ATTR_RES_PD];
1386  
1387  	mnl_attr_for_each_nested(nla_entry, nla_table) {
1388@@ -1456,10 +1440,10 @@ index df538010..6179d788 100644
1389  		ret = mnl_attr_parse_nested(nla_entry, rd_attr_cb, nla_line);
1390  		if (ret != MNL_CB_OK)
1391 diff --git a/rdma/res-qp.c b/rdma/res-qp.c
1392-index a38be399..48b9ee1c 100644
1393+index 65ff54ab..49a3d549 100644
1394 --- a/rdma/res-qp.c
1395 +++ b/rdma/res-qp.c
1396-@@ -186,7 +186,7 @@ out:
1397+@@ -183,7 +183,7 @@ out:
1398  
1399  int res_qp_idx_parse_cb(const struct nlmsghdr *nlh, void *data)
1400  {
1401@@ -1468,7 +1452,7 @@ index a38be399..48b9ee1c 100644
1402  	struct rd *rd = data;
1403  	const char *name;
1404  	uint32_t idx;
1405-@@ -204,7 +204,7 @@ int res_qp_idx_parse_cb(const struct nlmsghdr *nlh, void *data)
1406+@@ -201,7 +201,7 @@ int res_qp_idx_parse_cb(const struct nlmsghdr *nlh, void *data)
1407  
1408  int res_qp_parse_cb(const struct nlmsghdr *nlh, void *data)
1409  {
1410@@ -1477,7 +1461,7 @@ index a38be399..48b9ee1c 100644
1411  	struct nlattr *nla_table, *nla_entry;
1412  	struct rd *rd = data;
1413  	int ret = MNL_CB_OK;
1414-@@ -221,7 +221,7 @@ int res_qp_parse_cb(const struct nlmsghdr *nlh, void *data)
1415+@@ -218,7 +218,7 @@ int res_qp_parse_cb(const struct nlmsghdr *nlh, void *data)
1416  	nla_table = tb[RDMA_NLDEV_ATTR_RES_QP];
1417  
1418  	mnl_attr_for_each_nested(nla_entry, nla_table) {
1419@@ -1487,10 +1471,10 @@ index a38be399..48b9ee1c 100644
1420  		ret = mnl_attr_parse_nested(nla_entry, rd_attr_cb, nla_line);
1421  		if (ret != MNL_CB_OK)
1422 diff --git a/rdma/res.c b/rdma/res.c
1423-index 9aae5d4b..a56a09f0 100644
1424+index 3e024134..fac047f2 100644
1425 --- a/rdma/res.c
1426 +++ b/rdma/res.c
1427-@@ -38,7 +38,7 @@ static int res_print_summary(struct rd *rd, struct nlattr **tb)
1428+@@ -38,7 +38,7 @@ static int res_print_summary(struct nlattr **tb)
1429  	int err;
1430  
1431  	mnl_attr_for_each_nested(nla_entry, nla_table) {
1432@@ -1499,20 +1483,20 @@ index 9aae5d4b..a56a09f0 100644
1433  
1434  		err = mnl_attr_parse_nested(nla_entry, rd_attr_cb, nla_line);
1435  		if (err != MNL_CB_OK)
1436-@@ -65,7 +65,7 @@ static int res_no_args_idx_parse_cb(const struct nlmsghdr *nlh, void *data)
1437+@@ -63,7 +63,7 @@ static int res_no_args_idx_parse_cb(const struct nlmsghdr *nlh, void *data)
1438  
1439  static int res_no_args_parse_cb(const struct nlmsghdr *nlh, void *data)
1440  {
1441 -	struct nlattr *tb[RDMA_NLDEV_ATTR_MAX] = {};
1442 +	struct nlattr *tb[RDMA_NLDEV_ATTR_MAX] = {0};
1443- 	struct rd *rd = data;
1444  	const char *name;
1445  	uint32_t idx;
1446+ 
1447 diff --git a/rdma/utils.c b/rdma/utils.c
1448-index 21177b56..b57dddd1 100644
1449+index 27595a38..9ac34a0d 100644
1450 --- a/rdma/utils.c
1451 +++ b/rdma/utils.c
1452-@@ -504,7 +504,7 @@ int rd_attr_cb(const struct nlattr *attr, void *data)
1453+@@ -512,7 +512,7 @@ int rd_attr_cb(const struct nlattr *attr, void *data)
1454  
1455  int rd_dev_init_cb(const struct nlmsghdr *nlh, void *data)
1456  {
1457@@ -1522,10 +1506,10 @@ index 21177b56..b57dddd1 100644
1458  	struct rd *rd = data;
1459  	const char *dev_name;
1460 diff --git a/tc/e_bpf.c b/tc/e_bpf.c
1461-index 517ee5b3..daf673f9 100644
1462+index 79cddace..9ab76e26 100644
1463 --- a/tc/e_bpf.c
1464 +++ b/tc/e_bpf.c
1465-@@ -58,8 +58,8 @@ static int parse_bpf(struct exec_util *eu, int argc, char **argv)
1466+@@ -54,8 +54,8 @@ static int parse_bpf(struct exec_util *eu, int argc, char **argv)
1467  	char **argv_run = argv_default, **envp_run, *tmp;
1468  	int ret, i, env_old, env_num, env_map;
1469  	const char *bpf_uds_name = NULL;
1470@@ -1537,10 +1521,10 @@ index 517ee5b3..daf673f9 100644
1471  	if (argc == 0)
1472  		return 0;
1473 diff --git a/tc/em_cmp.c b/tc/em_cmp.c
1474-index e051656f..abe2cd93 100644
1475+index dfd123df..75a39990 100644
1476 --- a/tc/em_cmp.c
1477 +++ b/tc/em_cmp.c
1478-@@ -43,7 +43,7 @@ static int cmp_parse_eopt(struct nlmsghdr *n, struct tcf_ematch_hdr *hdr,
1479+@@ -39,7 +39,7 @@ static int cmp_parse_eopt(struct nlmsghdr *n, struct tcf_ematch_hdr *hdr,
1480  	int align, opnd = 0;
1481  	unsigned long offset = 0, layer = TCF_LAYER_NETWORK, mask = 0, value = 0;
1482  	int offset_present = 0, value_present = 0;
1483@@ -1550,10 +1534,10 @@ index e051656f..abe2cd93 100644
1484  #define PARSE_ERR(CARG, FMT, ARGS...) \
1485  	em_parse_error(EINVAL, args, CARG, &cmp_ematch_util, FMT, ##ARGS)
1486 diff --git a/tc/em_ipset.c b/tc/em_ipset.c
1487-index 48b287f5..08d83401 100644
1488+index f97abaf3..c80c429e 100644
1489 --- a/tc/em_ipset.c
1490 +++ b/tc/em_ipset.c
1491-@@ -198,7 +198,7 @@ static void ipset_print_usage(FILE *fd)
1492+@@ -195,7 +195,7 @@ static void ipset_print_usage(FILE *fd)
1493  static int ipset_parse_eopt(struct nlmsghdr *n, struct tcf_ematch_hdr *hdr,
1494  			    struct bstr *args)
1495  {
1496@@ -1563,10 +1547,10 @@ index 48b287f5..08d83401 100644
1497  
1498  #define PARSE_ERR(CARG, FMT, ARGS...) \
1499 diff --git a/tc/em_meta.c b/tc/em_meta.c
1500-index 2ddc65ed..6d0755c5 100644
1501+index 6a5654f3..b0ba5ba2 100644
1502 --- a/tc/em_meta.c
1503 +++ b/tc/em_meta.c
1504-@@ -360,7 +360,7 @@ static int meta_parse_eopt(struct nlmsghdr *n, struct tcf_ematch_hdr *hdr,
1505+@@ -356,7 +356,7 @@ static int meta_parse_eopt(struct nlmsghdr *n, struct tcf_ematch_hdr *hdr,
1506  {
1507  	int opnd;
1508  	struct bstr *a;
1509@@ -1576,10 +1560,10 @@ index 2ddc65ed..6d0755c5 100644
1510  
1511  	if (args == NULL)
1512 diff --git a/tc/em_nbyte.c b/tc/em_nbyte.c
1513-index 274d713f..1e72bdf4 100644
1514+index 9f421fb4..c6afd298 100644
1515 --- a/tc/em_nbyte.c
1516 +++ b/tc/em_nbyte.c
1517-@@ -43,7 +43,7 @@ static int nbyte_parse_eopt(struct nlmsghdr *n, struct tcf_ematch_hdr *hdr,
1518+@@ -39,7 +39,7 @@ static int nbyte_parse_eopt(struct nlmsghdr *n, struct tcf_ematch_hdr *hdr,
1519  	struct bstr *needle = args;
1520  	unsigned long offset = 0, layer = TCF_LAYER_NETWORK;
1521  	int offset_present = 0;
1522@@ -1589,10 +1573,10 @@ index 274d713f..1e72bdf4 100644
1523  #define PARSE_ERR(CARG, FMT, ARGS...) \
1524  	em_parse_error(EINVAL, args, CARG, &nbyte_ematch_util, FMT, ##ARGS)
1525 diff --git a/tc/em_u32.c b/tc/em_u32.c
1526-index bc284af4..efebb2dc 100644
1527+index a83382ba..604a0caf 100644
1528 --- a/tc/em_u32.c
1529 +++ b/tc/em_u32.c
1530-@@ -38,7 +38,7 @@ static int u32_parse_eopt(struct nlmsghdr *n, struct tcf_ematch_hdr *hdr,
1531+@@ -34,7 +34,7 @@ static int u32_parse_eopt(struct nlmsghdr *n, struct tcf_ematch_hdr *hdr,
1532  	struct bstr *a;
1533  	int align, nh_len;
1534  	unsigned long key, mask, offmask = 0, offset;
1535@@ -1602,10 +1586,10 @@ index bc284af4..efebb2dc 100644
1536  #define PARSE_ERR(CARG, FMT, ARGS...) \
1537  	em_parse_error(EINVAL, args, CARG, &u32_ematch_util, FMT, ##ARGS)
1538 diff --git a/tc/f_bpf.c b/tc/f_bpf.c
1539-index fa3552ae..33462d0b 100644
1540+index a6d4875f..b71b24e9 100644
1541 --- a/tc/f_bpf.c
1542 +++ b/tc/f_bpf.c
1543-@@ -82,7 +82,7 @@ static int bpf_parse_opt(struct filter_util *qu, char *handle,
1544+@@ -78,7 +78,7 @@ static int bpf_parse_opt(struct filter_util *qu, char *handle,
1545  	struct tcmsg *t = NLMSG_DATA(n);
1546  	unsigned int bpf_gen_flags = 0;
1547  	unsigned int bpf_flags = 0;
1548@@ -1615,10 +1599,10 @@ index fa3552ae..33462d0b 100644
1549  	bool skip_sw = false;
1550  	struct rtattr *tail;
1551 diff --git a/tc/f_fw.c b/tc/f_fw.c
1552-index 688364f5..55fcc3cc 100644
1553+index 5e72e526..e2a11847 100644
1554 --- a/tc/f_fw.c
1555 +++ b/tc/f_fw.c
1556-@@ -93,7 +93,7 @@ static int fw_parse_opt(struct filter_util *qu, char *handle, int argc, char **a
1557+@@ -88,7 +88,7 @@ static int fw_parse_opt(struct filter_util *qu, char *handle, int argc, char **a
1558  			}
1559  			continue;
1560  		} else if (strcmp(*argv, "indev") == 0) {
1561@@ -1627,24 +1611,11 @@ index 688364f5..55fcc3cc 100644
1562  
1563  			argc--;
1564  			argv++;
1565-diff --git a/tc/f_rsvp.c b/tc/f_rsvp.c
1566-index 388e9ee5..e6eb0147 100644
1567---- a/tc/f_rsvp.c
1568-+++ b/tc/f_rsvp.c
1569-@@ -174,7 +174,7 @@ static int rsvp_parse_opt(struct filter_util *qu, char *handle, int argc,
1570- 			  char **argv, struct nlmsghdr *n)
1571- {
1572- 	int family = strcmp(qu->id, "rsvp") == 0 ? AF_INET : AF_INET6;
1573--	struct tc_rsvp_pinfo pinfo = {};
1574-+	struct tc_rsvp_pinfo pinfo = {0};
1575- 	struct tcmsg *t = NLMSG_DATA(n);
1576- 	int pinfo_ok = 0;
1577- 	struct rtattr *tail;
1578 diff --git a/tc/f_u32.c b/tc/f_u32.c
1579-index a5747f67..062e67c4 100644
1580+index 59aa4e3a..19f035d0 100644
1581 --- a/tc/f_u32.c
1582 +++ b/tc/f_u32.c
1583-@@ -991,7 +991,7 @@ static int u32_parse_opt(struct filter_util *qu, char *handle,
1584+@@ -1024,7 +1024,7 @@ static int u32_parse_opt(struct filter_util *qu, char *handle,
1585  	struct {
1586  		struct tc_u32_sel sel;
1587  		struct tc_u32_key keys[128];
1588@@ -1653,7 +1624,7 @@ index a5747f67..062e67c4 100644
1589  	struct tcmsg *t = NLMSG_DATA(n);
1590  	struct rtattr *tail;
1591  	int sel_ok = 0, terminal_ok = 0;
1592-@@ -1096,7 +1096,7 @@ static int u32_parse_opt(struct filter_util *qu, char *handle,
1593+@@ -1129,7 +1129,7 @@ static int u32_parse_opt(struct filter_util *qu, char *handle,
1594  			struct {
1595  				struct tc_u32_sel sel;
1596  				struct tc_u32_key keys[4];
1597@@ -1662,7 +1633,7 @@ index a5747f67..062e67c4 100644
1598  
1599  			NEXT_ARG();
1600  			if (parse_selector(&argc, &argv, &sel2.sel, n)) {
1601-@@ -1122,7 +1122,7 @@ static int u32_parse_opt(struct filter_util *qu, char *handle,
1602+@@ -1155,7 +1155,7 @@ static int u32_parse_opt(struct filter_util *qu, char *handle,
1603  			sample_ok = 1;
1604  			continue;
1605  		} else if (strcmp(*argv, "indev") == 0) {
1606@@ -1672,10 +1643,10 @@ index a5747f67..062e67c4 100644
1607  			argc--;
1608  			argv++;
1609 diff --git a/tc/m_bpf.c b/tc/m_bpf.c
1610-index af5ba5ce..ec11be6d 100644
1611+index da50c05e..81866e55 100644
1612 --- a/tc/m_bpf.c
1613 +++ b/tc/m_bpf.c
1614-@@ -77,8 +77,8 @@ static int bpf_parse_opt(struct action_util *a, int *ptr_argc, char ***ptr_argv,
1615+@@ -73,8 +73,8 @@ static int bpf_parse_opt(struct action_util *a, int *ptr_argc, char ***ptr_argv,
1616  			 int tca_id, struct nlmsghdr *n)
1617  {
1618  	const char *bpf_obj = NULL, *bpf_uds_name = NULL;
1619@@ -1687,10 +1658,10 @@ index af5ba5ce..ec11be6d 100644
1620  	struct rtattr *tail;
1621  	int argc, ret = 0;
1622 diff --git a/tc/m_connmark.c b/tc/m_connmark.c
1623-index 640bba9d..877d6e35 100644
1624+index 8506d95a..9cc911b8 100644
1625 --- a/tc/m_connmark.c
1626 +++ b/tc/m_connmark.c
1627-@@ -46,7 +46,7 @@ static int
1628+@@ -35,7 +35,7 @@ static int
1629  parse_connmark(struct action_util *a, int *argc_p, char ***argv_p, int tca_id,
1630  	      struct nlmsghdr *n)
1631  {
1632@@ -1700,10 +1671,10 @@ index 640bba9d..877d6e35 100644
1633  	int argc = *argc_p;
1634  	int ok = 0;
1635 diff --git a/tc/m_csum.c b/tc/m_csum.c
1636-index 23c59725..9115a2d9 100644
1637+index f5fe8f55..b29353b1 100644
1638 --- a/tc/m_csum.c
1639 +++ b/tc/m_csum.c
1640-@@ -88,7 +88,7 @@ static int
1641+@@ -84,7 +84,7 @@ static int
1642  parse_csum(struct action_util *a, int *argc_p,
1643  	   char ***argv_p, int tca_id, struct nlmsghdr *n)
1644  {
1645@@ -1713,10 +1684,10 @@ index 23c59725..9115a2d9 100644
1646  	int argc = *argc_p;
1647  	char **argv = *argv_p;
1648 diff --git a/tc/m_mirred.c b/tc/m_mirred.c
1649-index 38d8043b..30111430 100644
1650+index e5653e67..6aca86ad 100644
1651 --- a/tc/m_mirred.c
1652 +++ b/tc/m_mirred.c
1653-@@ -96,9 +96,9 @@ parse_direction(struct action_util *a, int *argc_p, char ***argv_p,
1654+@@ -91,9 +91,9 @@ parse_direction(struct action_util *a, int *argc_p, char ***argv_p,
1655  	int argc = *argc_p;
1656  	char **argv = *argv_p;
1657  	int ok = 0, iok = 0, mirror = 0, redir = 0, ingress = 0, egress = 0;
1658@@ -1729,10 +1700,10 @@ index 38d8043b..30111430 100644
1659  	while (argc > 0) {
1660  
1661 diff --git a/tc/m_nat.c b/tc/m_nat.c
1662-index 654f9a3b..9ed1613c 100644
1663+index 95b35584..b8869141 100644
1664 --- a/tc/m_nat.c
1665 +++ b/tc/m_nat.c
1666-@@ -83,7 +83,7 @@ bad_val:
1667+@@ -78,7 +78,7 @@ bad_val:
1668  static int
1669  parse_nat(struct action_util *a, int *argc_p, char ***argv_p, int tca_id, struct nlmsghdr *n)
1670  {
1671@@ -1742,10 +1713,10 @@ index 654f9a3b..9ed1613c 100644
1672  	int argc = *argc_p;
1673  	char **argv = *argv_p;
1674 diff --git a/tc/m_pedit.c b/tc/m_pedit.c
1675-index 54949e43..85085c8b 100644
1676+index 32f03415..f65fcedf 100644
1677 --- a/tc/m_pedit.c
1678 +++ b/tc/m_pedit.c
1679-@@ -524,7 +524,7 @@ done:
1680+@@ -519,7 +519,7 @@ done:
1681  
1682  static int parse_munge(int *argc_p, char ***argv_p, struct m_pedit_sel *sel)
1683  {
1684@@ -1754,7 +1725,7 @@ index 54949e43..85085c8b 100644
1685  	int argc = *argc_p;
1686  	char **argv = *argv_p;
1687  	int res = -1;
1688-@@ -628,7 +628,7 @@ static int pedit_keys_ex_addattr(struct m_pedit_sel *sel, struct nlmsghdr *n)
1689+@@ -623,7 +623,7 @@ static int pedit_keys_ex_addattr(struct m_pedit_sel *sel, struct nlmsghdr *n)
1690  static int parse_pedit(struct action_util *a, int *argc_p, char ***argv_p,
1691  		       int tca_id, struct nlmsghdr *n)
1692  {
1693@@ -1764,10 +1735,10 @@ index 54949e43..85085c8b 100644
1694  	int argc = *argc_p;
1695  	char **argv = *argv_p;
1696 diff --git a/tc/m_simple.c b/tc/m_simple.c
1697-index bc86be27..79d1c786 100644
1698+index fe2bca21..765fef96 100644
1699 --- a/tc/m_simple.c
1700 +++ b/tc/m_simple.c
1701-@@ -97,7 +97,7 @@ static int
1702+@@ -93,7 +93,7 @@ static int
1703  parse_simple(struct action_util *a, int *argc_p, char ***argv_p, int tca_id,
1704  	     struct nlmsghdr *n)
1705  {
1706@@ -1777,10 +1748,10 @@ index bc86be27..79d1c786 100644
1707  	char **argv = *argv_p;
1708  	int ok = 0;
1709 diff --git a/tc/m_tunnel_key.c b/tc/m_tunnel_key.c
1710-index ca0dff11..4d97b38d 100644
1711+index ff699cc8..c6aabb0c 100644
1712 --- a/tc/m_tunnel_key.c
1713 +++ b/tc/m_tunnel_key.c
1714-@@ -317,7 +317,7 @@ static int tunnel_key_parse_tos_ttl(char *str, int type, struct nlmsghdr *n)
1715+@@ -314,7 +314,7 @@ static int tunnel_key_parse_tos_ttl(char *str, int type, struct nlmsghdr *n)
1716  static int parse_tunnel_key(struct action_util *a, int *argc_p, char ***argv_p,
1717  			    int tca_id, struct nlmsghdr *n)
1718  {
1719@@ -1790,10 +1761,10 @@ index ca0dff11..4d97b38d 100644
1720  	int argc = *argc_p;
1721  	struct rtattr *tail;
1722 diff --git a/tc/m_vlan.c b/tc/m_vlan.c
1723-index 1b2b1d51..ba7db457 100644
1724+index c1dc8b42..3293aae6 100644
1725 --- a/tc/m_vlan.c
1726 +++ b/tc/m_vlan.c
1727-@@ -77,7 +77,7 @@ static int parse_vlan(struct action_util *a, int *argc_p, char ***argv_p,
1728+@@ -73,7 +73,7 @@ static int parse_vlan(struct action_util *a, int *argc_p, char ***argv_p,
1729  	int proto_set = 0;
1730  	__u8 prio;
1731  	int prio_set = 0;
1732@@ -1802,67 +1773,11 @@ index 1b2b1d51..ba7db457 100644
1733  
1734  	if (matches(*argv, "vlan") != 0)
1735  		return -1;
1736-diff --git a/tc/m_xt.c b/tc/m_xt.c
1737-index deaf96a2..af250574 100644
1738---- a/tc/m_xt.c
1739-+++ b/tc/m_xt.c
1740-@@ -147,7 +147,7 @@ static int parse_ipt(struct action_util *a, int *argc_p,
1741- {
1742- 	struct xtables_target *m = NULL;
1743- #if XTABLES_VERSION_CODE >= 6
1744--	struct ipt_entry fw = {};
1745-+	struct ipt_entry fw = {0};
1746- #endif
1747- 	struct rtattr *tail;
1748- 
1749-diff --git a/tc/q_atm.c b/tc/q_atm.c
1750-index 77b56825..c0acf492 100644
1751---- a/tc/q_atm.c
1752-+++ b/tc/q_atm.c
1753-@@ -49,7 +49,7 @@ static void explain(void)
1754- static int atm_parse_class_opt(struct qdisc_util *qu, int argc, char **argv,
1755- 	struct nlmsghdr *n, const char *dev)
1756- {
1757--	struct sockaddr_atmsvc addr = {};
1758-+	struct sockaddr_atmsvc addr = {0};
1759- 	struct atm_qos qos;
1760- 	struct atm_sap sap;
1761- 	unsigned char hdr[MAX_HDR_LEN];
1762-diff --git a/tc/q_cbq.c b/tc/q_cbq.c
1763-index 4619a37b..965f5ffa 100644
1764---- a/tc/q_cbq.c
1765-+++ b/tc/q_cbq.c
1766-@@ -50,8 +50,8 @@ static void explain1(char *arg)
1767- 
1768- static int cbq_parse_opt(struct qdisc_util *qu, int argc, char **argv, struct nlmsghdr *n, const char *dev)
1769- {
1770--	struct tc_ratespec r = {};
1771--	struct tc_cbq_lssopt lss = {};
1772-+	struct tc_ratespec r = {0};
1773-+	struct tc_cbq_lssopt lss = {0};
1774- 	__u32 rtab[256];
1775- 	unsigned mpu = 0, avpkt = 0, allot = 0;
1776- 	unsigned short overhead = 0;
1777-@@ -185,10 +185,10 @@ static int cbq_parse_opt(struct qdisc_util *qu, int argc, char **argv, struct nl
1778- static int cbq_parse_class_opt(struct qdisc_util *qu, int argc, char **argv, struct nlmsghdr *n, const char *dev)
1779- {
1780- 	int wrr_ok = 0, fopt_ok = 0;
1781--	struct tc_ratespec r = {};
1782--	struct tc_cbq_lssopt lss = {};
1783--	struct tc_cbq_wrropt wrr = {};
1784--	struct tc_cbq_fopt fopt = {};
1785-+	struct tc_ratespec r = {0};
1786-+	struct tc_cbq_lssopt lss = {0};
1787-+	struct tc_cbq_wrropt wrr = {0};
1788-+	struct tc_cbq_fopt fopt = {0};
1789- 	__u32 rtab[256];
1790- 	unsigned mpu = 0;
1791- 	int cell_log =  -1;
1792 diff --git a/tc/q_cbs.c b/tc/q_cbs.c
1793-index 13bb08e9..a32aa6c1 100644
1794+index 788535c6..072b393a 100644
1795 --- a/tc/q_cbs.c
1796 +++ b/tc/q_cbs.c
1797-@@ -37,7 +37,7 @@ static void explain1(const char *arg, const char *val)
1798+@@ -32,7 +32,7 @@ static void explain1(const char *arg, const char *val)
1799  static int cbs_parse_opt(struct qdisc_util *qu, int argc,
1800  			 char **argv, struct nlmsghdr *n, const char *dev)
1801  {
1802@@ -1872,10 +1787,10 @@ index 13bb08e9..a32aa6c1 100644
1803  
1804  	while (argc > 0) {
1805 diff --git a/tc/q_choke.c b/tc/q_choke.c
1806-index 570c3599..aa354d5d 100644
1807+index 7653eb7e..4a69fdff 100644
1808 --- a/tc/q_choke.c
1809 +++ b/tc/q_choke.c
1810-@@ -34,7 +34,7 @@ static void explain(void)
1811+@@ -30,7 +30,7 @@ static void explain(void)
1812  static int choke_parse_opt(struct qdisc_util *qu, int argc, char **argv,
1813  			   struct nlmsghdr *n, const char *dev)
1814  {
1815@@ -1885,10 +1800,10 @@ index 570c3599..aa354d5d 100644
1816  	unsigned int avpkt = 1000;
1817  	double probability = 0.02;
1818 diff --git a/tc/q_codel.c b/tc/q_codel.c
1819-index c72a5779..a000bcdd 100644
1820+index 03b6f92f..37e31495 100644
1821 --- a/tc/q_codel.c
1822 +++ b/tc/q_codel.c
1823-@@ -180,7 +180,7 @@ static int codel_print_opt(struct qdisc_util *qu, FILE *f, struct rtattr *opt)
1824+@@ -150,7 +150,7 @@ static int codel_print_opt(struct qdisc_util *qu, FILE *f, struct rtattr *opt)
1825  static int codel_print_xstats(struct qdisc_util *qu, FILE *f,
1826  			      struct rtattr *xstats)
1827  {
1828@@ -1898,10 +1813,10 @@ index c72a5779..a000bcdd 100644
1829  	SPRINT_BUF(b1);
1830  
1831 diff --git a/tc/q_fifo.c b/tc/q_fifo.c
1832-index ce82e74d..183878d9 100644
1833+index 9b2c5348..2db11c7c 100644
1834 --- a/tc/q_fifo.c
1835 +++ b/tc/q_fifo.c
1836-@@ -31,7 +31,7 @@ static int fifo_parse_opt(struct qdisc_util *qu, int argc, char **argv,
1837+@@ -26,7 +26,7 @@ static int fifo_parse_opt(struct qdisc_util *qu, int argc, char **argv,
1838  			  struct nlmsghdr *n, const char *dev)
1839  {
1840  	int ok = 0;
1841@@ -1911,10 +1826,10 @@ index ce82e74d..183878d9 100644
1842  	while (argc > 0) {
1843  		if (strcmp(*argv, "limit") == 0) {
1844 diff --git a/tc/q_fq_codel.c b/tc/q_fq_codel.c
1845-index 30098065..deba3f85 100644
1846+index 9c9d7bc1..ac52c160 100644
1847 --- a/tc/q_fq_codel.c
1848 +++ b/tc/q_fq_codel.c
1849-@@ -243,7 +243,7 @@ static int fq_codel_print_opt(struct qdisc_util *qu, FILE *f, struct rtattr *opt
1850+@@ -253,7 +253,7 @@ static int fq_codel_print_opt(struct qdisc_util *qu, FILE *f, struct rtattr *opt
1851  static int fq_codel_print_xstats(struct qdisc_util *qu, FILE *f,
1852  				 struct rtattr *xstats)
1853  {
1854@@ -1924,10 +1839,10 @@ index 30098065..deba3f85 100644
1855  	SPRINT_BUF(b1);
1856  
1857 diff --git a/tc/q_gred.c b/tc/q_gred.c
1858-index 89aeb086..0202ce33 100644
1859+index f6a3f05e..85387e2b 100644
1860 --- a/tc/q_gred.c
1861 +++ b/tc/q_gred.c
1862-@@ -304,8 +304,8 @@ gred_parse_vqs(struct tc_gred_info *info, struct rtattr *vqs)
1863+@@ -299,8 +299,8 @@ gred_parse_vqs(struct tc_gred_info *info, struct rtattr *vqs)
1864  	unsigned int offset = 0;
1865  
1866  	while (rem > offset) {
1867@@ -1938,7 +1853,7 @@ index 89aeb086..0202ce33 100644
1868  		struct rtattr *entry;
1869  		unsigned int len;
1870  		unsigned int dp;
1871-@@ -413,7 +413,7 @@ gred_print_stats(struct tc_gred_info *info, struct tc_gred_qopt *qopt)
1872+@@ -408,7 +408,7 @@ gred_print_stats(struct tc_gred_info *info, struct tc_gred_qopt *qopt)
1873  
1874  static int gred_print_opt(struct qdisc_util *qu, FILE *f, struct rtattr *opt)
1875  {
1876@@ -1948,10 +1863,10 @@ index 89aeb086..0202ce33 100644
1877  	struct tc_gred_sopt *sopt;
1878  	struct tc_gred_qopt *qopt;
1879 diff --git a/tc/q_hfsc.c b/tc/q_hfsc.c
1880-index 81c10210..8180b284 100644
1881+index 609d925a..b4bb78f2 100644
1882 --- a/tc/q_hfsc.c
1883 +++ b/tc/q_hfsc.c
1884-@@ -73,7 +73,7 @@ static int
1885+@@ -68,7 +68,7 @@ static int
1886  hfsc_parse_opt(struct qdisc_util *qu, int argc, char **argv,
1887  	       struct nlmsghdr *n, const char *dev)
1888  {
1889@@ -1960,7 +1875,7 @@ index 81c10210..8180b284 100644
1890  
1891  	while (argc > 0) {
1892  		if (matches(*argv, "default") == 0) {
1893-@@ -144,7 +144,7 @@ static int
1894+@@ -139,7 +139,7 @@ static int
1895  hfsc_parse_class_opt(struct qdisc_util *qu, int argc, char **argv,
1896  		     struct nlmsghdr *n, const char *dev)
1897  {
1898@@ -1970,12 +1885,12 @@ index 81c10210..8180b284 100644
1899  	struct rtattr *tail;
1900  
1901 diff --git a/tc/q_htb.c b/tc/q_htb.c
1902-index b5f95f67..fea78992 100644
1903+index 9afb293d..83401cde 100644
1904 --- a/tc/q_htb.c
1905 +++ b/tc/q_htb.c
1906-@@ -115,7 +115,7 @@ static int htb_parse_opt(struct qdisc_util *qu, int argc,
1907- 
1908- static int htb_parse_class_opt(struct qdisc_util *qu, int argc, char **argv, struct nlmsghdr *n, const char *dev)
1909+@@ -110,7 +110,7 @@ static int htb_parse_opt(struct qdisc_util *qu, int argc,
1910+ static int htb_parse_class_opt(struct qdisc_util *qu, int argc, char **argv,
1911+ 			       struct nlmsghdr *n, const char *dev)
1912  {
1913 -	struct tc_htb_opt opt = {};
1914 +	struct tc_htb_opt opt = {0};
1915@@ -1983,10 +1898,10 @@ index b5f95f67..fea78992 100644
1916  	unsigned buffer = 0, cbuffer = 0;
1917  	int cell_log =  -1, ccell_log = -1;
1918 diff --git a/tc/q_multiq.c b/tc/q_multiq.c
1919-index 8ad9e0b2..7319b1bf 100644
1920+index b1e6c9a8..12027bc8 100644
1921 --- a/tc/q_multiq.c
1922 +++ b/tc/q_multiq.c
1923-@@ -42,7 +42,7 @@ static void explain(void)
1924+@@ -31,7 +31,7 @@ static void explain(void)
1925  static int multiq_parse_opt(struct qdisc_util *qu, int argc, char **argv,
1926  			    struct nlmsghdr *n, const char *dev)
1927  {
1928@@ -1996,10 +1911,10 @@ index 8ad9e0b2..7319b1bf 100644
1929  	if (argc) {
1930  		if (strcmp(*argv, "help") == 0) {
1931 diff --git a/tc/q_netem.c b/tc/q_netem.c
1932-index 2e5a46ab..1c9c5966 100644
1933+index 4ce9ab6e..9fa40cc4 100644
1934 --- a/tc/q_netem.c
1935 +++ b/tc/q_netem.c
1936-@@ -200,17 +200,17 @@ static int netem_parse_opt(struct qdisc_util *qu, int argc, char **argv,
1937+@@ -197,17 +197,17 @@ static int netem_parse_opt(struct qdisc_util *qu, int argc, char **argv,
1938  	int slot_dist_size = 0;
1939  	struct rtattr *tail;
1940  	struct tc_netem_qopt opt = { .limit = 1000 };
1941@@ -2021,13 +1936,13 @@ index 2e5a46ab..1c9c5966 100644
1942 -	int present[__TCA_NETEM_MAX] = {};
1943 +	int present[__TCA_NETEM_MAX] = {0};
1944  	__u64 rate64 = 0;
1945+ 	__u64 seed = 0;
1946  
1947- 	for ( ; argc > 0; --argc, ++argv) {
1948 diff --git a/tc/q_red.c b/tc/q_red.c
1949-index fd50d37d..d40b2696 100644
1950+index f760253d..5c523a16 100644
1951 --- a/tc/q_red.c
1952 +++ b/tc/q_red.c
1953-@@ -51,7 +51,7 @@ static int red_parse_opt(struct qdisc_util *qu, int argc, char **argv,
1954+@@ -46,7 +46,7 @@ static int red_parse_opt(struct qdisc_util *qu, int argc, char **argv,
1955  	struct nla_bitfield32 flags_bf = {
1956  		.selector = RED_SUPPORTED_FLAGS,
1957  	};
1958@@ -2037,10 +1952,10 @@ index fd50d37d..d40b2696 100644
1959  	unsigned int avpkt = 0;
1960  	double probability = 0.02;
1961 diff --git a/tc/q_sfq.c b/tc/q_sfq.c
1962-index d04a440c..be426f51 100644
1963+index 17bf8f63..62911069 100644
1964 --- a/tc/q_sfq.c
1965 +++ b/tc/q_sfq.c
1966-@@ -38,7 +38,7 @@ static void explain(void)
1967+@@ -33,7 +33,7 @@ static void explain(void)
1968  static int sfq_parse_opt(struct qdisc_util *qu, int argc, char **argv, struct nlmsghdr *n, const char *dev)
1969  {
1970  	int ok = 0, red = 0;
1971@@ -2050,10 +1965,10 @@ index d04a440c..be426f51 100644
1972  	int wlog;
1973  	unsigned int avpkt = 1000;
1974 diff --git a/tc/q_skbprio.c b/tc/q_skbprio.c
1975-index ca81a72c..c792ebf0 100644
1976+index b0ba180a..cdb174ff 100644
1977 --- a/tc/q_skbprio.c
1978 +++ b/tc/q_skbprio.c
1979-@@ -32,7 +32,7 @@ static int skbprio_parse_opt(struct qdisc_util *qu, int argc, char **argv,
1980+@@ -27,7 +27,7 @@ static int skbprio_parse_opt(struct qdisc_util *qu, int argc, char **argv,
1981  			     struct nlmsghdr *n, const char *dev)
1982  {
1983  	int ok = 0;
1984@@ -2063,23 +1978,23 @@ index ca81a72c..c792ebf0 100644
1985  	while (argc > 0) {
1986  		if (strcmp(*argv, "limit") == 0) {
1987 diff --git a/tc/q_tbf.c b/tc/q_tbf.c
1988-index 4e5bf382..040d8987 100644
1989+index f621756d..7b149228 100644
1990 --- a/tc/q_tbf.c
1991 +++ b/tc/q_tbf.c
1992-@@ -40,7 +40,7 @@ static int tbf_parse_opt(struct qdisc_util *qu, int argc, char **argv,
1993+@@ -34,7 +34,7 @@ static void explain1(const char *arg, const char *val)
1994+ static int tbf_parse_opt(struct qdisc_util *qu, int argc, char **argv,
1995  			 struct nlmsghdr *n, const char *dev)
1996  {
1997- 	int ok = 0;
1998 -	struct tc_tbf_qopt opt = {};
1999 +	struct tc_tbf_qopt opt = {0};
2000  	__u32 rtab[256];
2001  	__u32 ptab[256];
2002  	unsigned buffer = 0, mtu = 0, mpu = 0, latency = 0;
2003 diff --git a/tc/tc_class.c b/tc/tc_class.c
2004-index 39bea971..e6f91207 100644
2005+index f6a3d134..31712a8a 100644
2006 --- a/tc/tc_class.c
2007 +++ b/tc/tc_class.c
2008-@@ -36,8 +36,8 @@ struct graph_node {
2009+@@ -31,8 +31,8 @@ struct graph_node {
2010  	int nodes_count;
2011  };
2012  
2013@@ -2090,7 +2005,7 @@ index 39bea971..e6f91207 100644
2014  
2015  static void usage(void);
2016  
2017-@@ -67,9 +67,9 @@ static int tc_class_modify(int cmd, unsigned int flags, int argc, char **argv)
2018+@@ -62,9 +62,9 @@ static int tc_class_modify(int cmd, unsigned int flags, int argc, char **argv)
2019  		.t.tcm_family = AF_UNSPEC,
2020  	};
2021  	struct qdisc_util *q = NULL;
2022@@ -2103,7 +2018,7 @@ index 39bea971..e6f91207 100644
2023  
2024  	while (argc > 0) {
2025  		if (strcmp(*argv, "dev") == 0) {
2026-@@ -216,14 +216,14 @@ static void graph_cls_show(FILE *fp, char *buf, struct hlist_head *root_list,
2027+@@ -211,14 +211,14 @@ static void graph_cls_show(FILE *fp, char *buf, struct hlist_head *root_list,
2028  		int level)
2029  {
2030  	struct hlist_node *n, *tmp_cls;
2031@@ -2131,10 +2046,10 @@ index 39bea971..e6f91207 100644
2032  
2033  	filter_qdisc = 0;
2034 diff --git a/tc/tc_exec.c b/tc/tc_exec.c
2035-index 9b912ceb..edc6c205 100644
2036+index 182fbb4c..0893aa03 100644
2037 --- a/tc/tc_exec.c
2038 +++ b/tc/tc_exec.c
2039-@@ -85,7 +85,7 @@ noexist:
2040+@@ -81,7 +81,7 @@ noexist:
2041  int do_exec(int argc, char **argv)
2042  {
2043  	struct exec_util *eu;
2044@@ -2144,11 +2059,11 @@ index 9b912ceb..edc6c205 100644
2045  	if (argc < 1) {
2046  		fprintf(stderr, "No command given, try \"tc exec help\".\n");
2047 diff --git a/tc/tc_filter.c b/tc/tc_filter.c
2048-index 71be2e81..d6aa4605 100644
2049+index eb45c588..31c9788c 100644
2050 --- a/tc/tc_filter.c
2051 +++ b/tc/tc_filter.c
2052-@@ -78,9 +78,9 @@ static int tc_filter_modify(int cmd, unsigned int flags, int argc, char **argv)
2053- 	__u32 chain_index;
2054+@@ -73,9 +73,9 @@ static int tc_filter_modify(int cmd, unsigned int flags, int argc, char **argv)
2055+ 	__u32 chain_index = 0;
2056  	int chain_index_set = 0;
2057  	char *fhandle = NULL;
2058 -	char  d[IFNAMSIZ] = {};
2059@@ -2160,7 +2075,7 @@ index 71be2e81..d6aa4605 100644
2060  
2061  	if (cmd == RTM_NEWTFILTER && flags & NLM_F_CREATE)
2062  		protocol = htons(ETH_P_ALL);
2063-@@ -405,8 +405,8 @@ static int tc_filter_get(int cmd, unsigned int flags, int argc, char **argv)
2064+@@ -401,8 +401,8 @@ static int tc_filter_get(int cmd, unsigned int flags, int argc, char **argv)
2065  	__u32 block_index = 0;
2066  	__u32 parent_handle = 0;
2067  	char *fhandle = NULL;
2068@@ -2171,7 +2086,7 @@ index 71be2e81..d6aa4605 100644
2069  
2070  	while (argc > 0) {
2071  		if (strcmp(*argv, "dev") == 0) {
2072-@@ -595,7 +595,7 @@ static int tc_filter_list(int cmd, int argc, char **argv)
2073+@@ -591,7 +591,7 @@ static int tc_filter_list(int cmd, int argc, char **argv)
2074  		.t.tcm_parent = TC_H_UNSPEC,
2075  		.t.tcm_family = AF_UNSPEC,
2076  	};
2077@@ -2179,12 +2094,12 @@ index 71be2e81..d6aa4605 100644
2078 +	char d[IFNAMSIZ] = {0};
2079  	__u32 prio = 0;
2080  	__u32 protocol = 0;
2081- 	__u32 chain_index;
2082+ 	__u32 block_index = 0;
2083 diff --git a/tc/tc_qdisc.c b/tc/tc_qdisc.c
2084-index b79029d9..97e8693e 100644
2085+index 84fd659f..175b7fab 100644
2086 --- a/tc/tc_qdisc.c
2087 +++ b/tc/tc_qdisc.c
2088-@@ -47,13 +47,13 @@ static int usage(void)
2089+@@ -43,13 +43,13 @@ static int usage(void)
2090  static int tc_qdisc_modify(int cmd, unsigned int flags, int argc, char **argv)
2091  {
2092  	struct qdisc_util *q = NULL;
2093@@ -2202,7 +2117,7 @@ index b79029d9..97e8693e 100644
2094  	struct {
2095  		struct nlmsghdr	n;
2096  		struct tcmsg		t;
2097-@@ -363,7 +363,7 @@ static int tc_qdisc_list(int argc, char **argv)
2098+@@ -360,7 +360,7 @@ static int tc_qdisc_list(int argc, char **argv)
2099  		.t.tcm_family = AF_UNSPEC,
2100  	};
2101  
2102@@ -2212,10 +2127,10 @@ index b79029d9..97e8693e 100644
2103  	__u32 handle;
2104  
2105 diff --git a/tc/tc_stab.c b/tc/tc_stab.c
2106-index c0f1f160..45a6b184 100644
2107+index a7733726..32f649f5 100644
2108 --- a/tc/tc_stab.c
2109 +++ b/tc/tc_stab.c
2110-@@ -51,7 +51,7 @@ int parse_size_table(int *argcp, char ***argvp, struct tc_sizespec *sp)
2111+@@ -46,7 +46,7 @@ int parse_size_table(int *argcp, char ***argvp, struct tc_sizespec *sp)
2112  {
2113  	char **argv = *argvp;
2114  	int argc = *argcp;
2115@@ -2225,10 +2140,10 @@ index c0f1f160..45a6b184 100644
2116  	NEXT_ARG();
2117  	if (matches(*argv, "help") == 0) {
2118 diff --git a/tc/tc_util.c b/tc/tc_util.c
2119-index 48065897..45b572ec 100644
2120+index aa7cf60f..83026c65 100644
2121 --- a/tc/tc_util.c
2122 +++ b/tc/tc_util.c
2123-@@ -129,7 +129,7 @@ ok:
2124+@@ -132,7 +132,7 @@ ok:
2125  
2126  int print_tc_classid(char *buf, int blen, __u32 h)
2127  {
2128@@ -2237,7 +2152,7 @@ index 48065897..45b572ec 100644
2129  	int hlen = SPRINT_BSIZE - 1;
2130  
2131  	if (h == TC_H_ROOT)
2132-@@ -144,7 +144,7 @@ int print_tc_classid(char *buf, int blen, __u32 h)
2133+@@ -147,7 +147,7 @@ int print_tc_classid(char *buf, int blen, __u32 h)
2134  		snprintf(handle, hlen, "%x:%x", TC_H_MAJ(h) >> 16, TC_H_MIN(h));
2135  
2136  	if (use_names) {
2137@@ -2246,7 +2161,7 @@ index 48065897..45b572ec 100644
2138  
2139  		if (id_to_name(cls_names, h, clname))
2140  			snprintf(buf, blen, "%s#%s", clname, handle);
2141-@@ -740,7 +740,7 @@ void print_tcstats_attr(FILE *fp, struct rtattr *tb[], char *prefix,
2142+@@ -798,7 +798,7 @@ void print_tcstats_attr(FILE *fp, struct rtattr *tb[], const char *prefix,
2143  	}
2144  	/* backward compatibility */
2145  	if (tb[TCA_STATS]) {
2146@@ -2256,10 +2171,10 @@ index 48065897..45b572ec 100644
2147  		/* handle case where kernel returns more/less than we know about */
2148  		memcpy(&st, RTA_DATA(tb[TCA_STATS]),
2149 diff --git a/tipc/bearer.c b/tipc/bearer.c
2150-index 968293bc..febd9c2a 100644
2151+index bb434f5f..3f703066 100644
2152 --- a/tipc/bearer.c
2153 +++ b/tipc/bearer.c
2154-@@ -83,8 +83,8 @@ static void cmd_bearer_enable_udp_help(struct cmdl *cmdl, char *media)
2155+@@ -79,8 +79,8 @@ static void cmd_bearer_enable_udp_help(struct cmdl *cmdl, char *media)
2156  static int get_netid_cb(const struct nlmsghdr *nlh, void *data)
2157  {
2158  	struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
2159@@ -2270,7 +2185,7 @@ index 968293bc..febd9c2a 100644
2160  	int *netid = (int*)data;
2161  
2162  	mnl_attr_parse(nlh, sizeof(*genl), parse_attrs, info);
2163-@@ -754,7 +754,7 @@ static int bearer_dump_udp_cb(const struct nlmsghdr *nlh, void *data)
2164+@@ -750,7 +750,7 @@ static int bearer_dump_udp_cb(const struct nlmsghdr *nlh, void *data)
2165  {
2166  	struct sockaddr_storage *addr;
2167  	struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
2168@@ -2279,7 +2194,7 @@ index 968293bc..febd9c2a 100644
2169  
2170  	mnl_attr_parse(nlh, sizeof(*genl), parse_attrs, info);
2171  
2172-@@ -790,9 +790,9 @@ static int bearer_get_udp_cb(const struct nlmsghdr *nlh, void *data)
2173+@@ -786,9 +786,9 @@ static int bearer_get_udp_cb(const struct nlmsghdr *nlh, void *data)
2174  	struct cb_data *cb_data = (struct cb_data *) data;
2175  	struct sockaddr_storage *addr;
2176  	struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
2177@@ -2292,7 +2207,7 @@ index 968293bc..febd9c2a 100644
2178  
2179  	mnl_attr_parse(nlh, sizeof(*genl), parse_attrs, info);
2180  	if (!info[TIPC_NLA_BEARER])
2181-@@ -887,9 +887,9 @@ static int bearer_get_cb(const struct nlmsghdr *nlh, void *data)
2182+@@ -883,9 +883,9 @@ static int bearer_get_cb(const struct nlmsghdr *nlh, void *data)
2183  {
2184  	int *prop = data;
2185  	struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
2186@@ -2305,7 +2220,7 @@ index 968293bc..febd9c2a 100644
2187  
2188  	mnl_attr_parse(nlh, sizeof(*genl), parse_attrs, info);
2189  	if (!info[TIPC_NLA_BEARER])
2190-@@ -1070,8 +1070,8 @@ static int cmd_bearer_get(struct nlmsghdr *nlh, const struct cmd *cmd,
2191+@@ -1066,8 +1066,8 @@ static int cmd_bearer_get(struct nlmsghdr *nlh, const struct cmd *cmd,
2192  static int bearer_list_cb(const struct nlmsghdr *nlh, void *data)
2193  {
2194  	struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
2195@@ -2317,10 +2232,10 @@ index 968293bc..febd9c2a 100644
2196  	mnl_attr_parse(nlh, sizeof(*genl), parse_attrs, info);
2197  	if (!info[TIPC_NLA_BEARER]) {
2198 diff --git a/tipc/link.c b/tipc/link.c
2199-index 9994ada2..9c8e1e8d 100644
2200+index f91c3000..15805757 100644
2201 --- a/tipc/link.c
2202 +++ b/tipc/link.c
2203-@@ -36,8 +36,8 @@ static const char tipc_bclink_name[] = "broadcast-link";
2204+@@ -32,8 +32,8 @@ static const char tipc_bclink_name[] = "broadcast-link";
2205  static int link_list_cb(const struct nlmsghdr *nlh, void *data)
2206  {
2207  	struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
2208@@ -2331,7 +2246,7 @@ index 9994ada2..9c8e1e8d 100644
2209  
2210  	mnl_attr_parse(nlh, sizeof(*genl), parse_attrs, info);
2211  	if (!info[TIPC_NLA_LINK])
2212-@@ -86,9 +86,9 @@ static int link_get_cb(const struct nlmsghdr *nlh, void *data)
2213+@@ -82,9 +82,9 @@ static int link_get_cb(const struct nlmsghdr *nlh, void *data)
2214  {
2215  	int *prop = data;
2216  	struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
2217@@ -2344,7 +2259,7 @@ index 9994ada2..9c8e1e8d 100644
2218  
2219  	mnl_attr_parse(nlh, sizeof(*genl), parse_attrs, info);
2220  	if (!info[TIPC_NLA_LINK])
2221-@@ -505,10 +505,10 @@ static int link_stat_show_cb(const struct nlmsghdr *nlh, void *data)
2222+@@ -501,10 +501,10 @@ static int link_stat_show_cb(const struct nlmsghdr *nlh, void *data)
2223  	const char *name;
2224  	const char *link = data;
2225  	struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
2226@@ -2359,7 +2274,7 @@ index 9994ada2..9c8e1e8d 100644
2227  
2228  	mnl_attr_parse(nlh, sizeof(*genl), parse_attrs, info);
2229  	if (!info[TIPC_NLA_LINK])
2230-@@ -807,8 +807,8 @@ static int cmd_link_mon_set_prop(struct nlmsghdr *nlh, const struct cmd *cmd,
2231+@@ -803,8 +803,8 @@ static int cmd_link_mon_set_prop(struct nlmsghdr *nlh, const struct cmd *cmd,
2232  static int link_mon_summary_cb(const struct nlmsghdr *nlh, void *data)
2233  {
2234  	struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
2235@@ -2370,7 +2285,7 @@ index 9994ada2..9c8e1e8d 100644
2236  
2237  	mnl_attr_parse(nlh, sizeof(*genl), parse_attrs, info);
2238  	if (!info[TIPC_NLA_MON])
2239-@@ -939,8 +939,8 @@ static void link_mon_print_peer_state(const uint32_t addr, const char *status,
2240+@@ -935,8 +935,8 @@ static void link_mon_print_peer_state(const uint32_t addr, const char *status,
2241  static int link_mon_peer_list_cb(const struct nlmsghdr *nlh, void *data)
2242  {
2243  	struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
2244@@ -2381,7 +2296,7 @@ index 9994ada2..9c8e1e8d 100644
2245  	uint16_t member_cnt;
2246  	uint32_t applied;
2247  	uint32_t dom_gen;
2248-@@ -1025,8 +1025,8 @@ static int link_mon_peer_list(uint32_t mon_ref)
2249+@@ -1021,8 +1021,8 @@ static int link_mon_peer_list(uint32_t mon_ref)
2250  static int link_mon_list_cb(const struct nlmsghdr *nlh, void *data)
2251  {
2252  	struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
2253@@ -2392,7 +2307,7 @@ index 9994ada2..9c8e1e8d 100644
2254  	char *req_bearer = data;
2255  	const char *bname;
2256  	const char title[] =
2257-@@ -1153,8 +1153,8 @@ static void cmd_link_mon_get_help(struct cmdl *cmdl)
2258+@@ -1149,8 +1149,8 @@ static void cmd_link_mon_get_help(struct cmdl *cmdl)
2259  static int link_mon_get_cb(const struct nlmsghdr *nlh, void *data)
2260  {
2261  	struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
2262@@ -2404,10 +2319,10 @@ index 9994ada2..9c8e1e8d 100644
2263  	mnl_attr_parse(nlh, sizeof(*genl), parse_attrs, info);
2264  	if (!info[TIPC_NLA_MON])
2265 diff --git a/tipc/media.c b/tipc/media.c
2266-index a3fec681..7bcef4b0 100644
2267+index 5ff0c8c4..b5c03bae 100644
2268 --- a/tipc/media.c
2269 +++ b/tipc/media.c
2270-@@ -24,8 +24,8 @@
2271+@@ -20,8 +20,8 @@
2272  static int media_list_cb(const struct nlmsghdr *nlh, void *data)
2273  {
2274  	struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
2275@@ -2418,7 +2333,7 @@ index a3fec681..7bcef4b0 100644
2276  
2277  	mnl_attr_parse(nlh, sizeof(*genl), parse_attrs, info);
2278  	if (!info[TIPC_NLA_MEDIA])
2279-@@ -61,9 +61,9 @@ static int media_get_cb(const struct nlmsghdr *nlh, void *data)
2280+@@ -57,9 +57,9 @@ static int media_get_cb(const struct nlmsghdr *nlh, void *data)
2281  {
2282  	int *prop = data;
2283  	struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
2284@@ -2432,10 +2347,10 @@ index a3fec681..7bcef4b0 100644
2285  	mnl_attr_parse(nlh, sizeof(*genl), parse_attrs, info);
2286  	if (!info[TIPC_NLA_MEDIA])
2287 diff --git a/tipc/misc.c b/tipc/misc.c
2288-index 909975d8..1843ee03 100644
2289+index 32d4a5e0..a4870762 100644
2290 --- a/tipc/misc.c
2291 +++ b/tipc/misc.c
2292-@@ -157,7 +157,7 @@ void nodeid2str(uint8_t *id, char *str)
2293+@@ -152,7 +152,7 @@ void nodeid2str(uint8_t *id, char *str)
2294  
2295  void hash2nodestr(uint32_t hash, char *str)
2296  {
2297@@ -2445,10 +2360,10 @@ index 909975d8..1843ee03 100644
2298  
2299  	sd = socket(AF_TIPC, SOCK_RDM, 0);
2300 diff --git a/tipc/nametable.c b/tipc/nametable.c
2301-index b09ed5fc..3536fbe3 100644
2302+index 5162f7fc..fedae24e 100644
2303 --- a/tipc/nametable.c
2304 +++ b/tipc/nametable.c
2305-@@ -28,9 +28,9 @@ static int nametable_show_cb(const struct nlmsghdr *nlh, void *data)
2306+@@ -24,9 +24,9 @@ static int nametable_show_cb(const struct nlmsghdr *nlh, void *data)
2307  {
2308  	int *iteration = data;
2309  	struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
2310@@ -2462,10 +2377,10 @@ index b09ed5fc..3536fbe3 100644
2311  	char str[33] = {0,};
2312  
2313 diff --git a/tipc/node.c b/tipc/node.c
2314-index bf592a07..45d95bdb 100644
2315+index e645d374..6d86043f 100644
2316 --- a/tipc/node.c
2317 +++ b/tipc/node.c
2318-@@ -25,9 +25,9 @@
2319+@@ -21,9 +21,9 @@
2320  
2321  static int node_list_cb(const struct nlmsghdr *nlh, void *data)
2322  {
2323@@ -2478,7 +2393,7 @@ index bf592a07..45d95bdb 100644
2324  	uint32_t addr;
2325  
2326  	mnl_attr_parse(nlh, sizeof(struct genlmsghdr), parse_attrs, info);
2327-@@ -304,8 +304,8 @@ static int cmd_node_flush_key(struct nlmsghdr *nlh, const struct cmd *cmd,
2328+@@ -300,8 +300,8 @@ static int cmd_node_flush_key(struct nlmsghdr *nlh, const struct cmd *cmd,
2329  
2330  static int nodeid_get_cb(const struct nlmsghdr *nlh, void *data)
2331  {
2332@@ -2489,7 +2404,7 @@ index bf592a07..45d95bdb 100644
2333  	char str[33] = {0,};
2334  	uint8_t id[16] = {0,};
2335  	uint64_t *w0 = (uint64_t *) &id[0];
2336-@@ -348,8 +348,8 @@ static int cmd_node_get_nodeid(struct nlmsghdr *nlh, const struct cmd *cmd,
2337+@@ -344,8 +344,8 @@ static int cmd_node_get_nodeid(struct nlmsghdr *nlh, const struct cmd *cmd,
2338  
2339  static int netid_get_cb(const struct nlmsghdr *nlh, void *data)
2340  {
2341@@ -2501,10 +2416,10 @@ index bf592a07..45d95bdb 100644
2342  	mnl_attr_parse(nlh, sizeof(struct genlmsghdr), parse_attrs, info);
2343  	if (!info[TIPC_NLA_NET])
2344 diff --git a/tipc/socket.c b/tipc/socket.c
2345-index 597ffd91..19258b8c 100644
2346+index 4d376e07..178ecd8e 100644
2347 --- a/tipc/socket.c
2348 +++ b/tipc/socket.c
2349-@@ -27,8 +27,8 @@
2350+@@ -23,8 +23,8 @@
2351  static int publ_list_cb(const struct nlmsghdr *nlh, void *data)
2352  {
2353  	struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
2354@@ -2515,7 +2430,7 @@ index 597ffd91..19258b8c 100644
2355  
2356  	mnl_attr_parse(nlh, sizeof(*genl), parse_attrs, info);
2357  	if (!info[TIPC_NLA_PUBL])
2358-@@ -76,8 +76,8 @@ static int publ_list(uint32_t sock)
2359+@@ -72,8 +72,8 @@ static int publ_list(uint32_t sock)
2360  static int sock_list_cb(const struct nlmsghdr *nlh, void *data)
2361  {
2362  	struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
2363@@ -2526,7 +2441,7 @@ index 597ffd91..19258b8c 100644
2364  
2365  	mnl_attr_parse(nlh, sizeof(*genl), parse_attrs, info);
2366  	if (!info[TIPC_NLA_SOCK])
2367-@@ -91,7 +91,7 @@ static int sock_list_cb(const struct nlmsghdr *nlh, void *data)
2368+@@ -87,7 +87,7 @@ static int sock_list_cb(const struct nlmsghdr *nlh, void *data)
2369  
2370  	if (attrs[TIPC_NLA_SOCK_CON]) {
2371  		uint32_t node;
2372@@ -2536,5 +2451,5 @@ index 597ffd91..19258b8c 100644
2373  		mnl_attr_parse_nested(attrs[TIPC_NLA_SOCK_CON], parse_attrs, con);
2374  		node = mnl_attr_get_u32(con[TIPC_NLA_CON_NODE]);
2375 -- 
2376-2.34.1
2377+2.44.0
2378 
+5, -5
 1@@ -1,4 +1,4 @@
 2-From 1b949a2da0e4fa94625faebeb3f0e62246be39d0 Mon Sep 17 00:00:00 2001
 3+From 12c947c84f95faac8d951804d097eed6bd5a2570 Mon Sep 17 00:00:00 2001
 4 From: Michael Forney <mforney@mforney.org>
 5 Date: Sun, 16 Jun 2019 12:39:04 -0700
 6 Subject: [PATCH] Remove semicolon after function definitions
 7@@ -8,10 +8,10 @@ Subject: [PATCH] Remove semicolon after function definitions
 8  1 file changed, 11 insertions(+), 11 deletions(-)
 9 
10 diff --git a/lib/json_print.c b/lib/json_print.c
11-index 994a2f8d..9bc77e3c 100644
12+index 810d496e..97d7defe 100644
13 --- a/lib/json_print.c
14 +++ b/lib/json_print.c
15-@@ -137,15 +137,15 @@ void close_json_array(enum output_type type, const char *str)
16+@@ -133,15 +133,15 @@ void close_json_array(enum output_type type, const char *str)
17  		}							\
18  		return ret;						\
19  	}
20@@ -36,7 +36,7 @@ index 994a2f8d..9bc77e3c 100644
21  #undef _PRINT_FUNC
22  
23  #define _PRINT_NAME_VALUE_FUNC(type_name, type, format_char)		 \
24-@@ -157,8 +157,8 @@ _PRINT_FUNC(float, double);
25+@@ -153,8 +153,8 @@ _PRINT_FUNC(float, double);
26  			 "%s %%"#format_char, name);			 \
27  		print_##type_name(PRINT_ANY, name, format, value);	 \
28  	}
29@@ -48,5 +48,5 @@ index 994a2f8d..9bc77e3c 100644
30  
31  int print_color_string(enum output_type type,
32 -- 
33-2.30.0
34+2.44.0
35 
+29, -45
  1@@ -1,4 +1,4 @@
  2-From f30befee39d2f8cf06158bfd5b37b675e2287f3f Mon Sep 17 00:00:00 2001
  3+From ee4b85a5edf36b320e521707810cc69f1efad5d2 Mon Sep 17 00:00:00 2001
  4 From: Michael Forney <mforney@mforney.org>
  5 Date: Sun, 16 Jun 2019 12:39:40 -0700
  6 Subject: [PATCH] Don't omit second operand to '?' operator
  7@@ -6,17 +6,16 @@ Subject: [PATCH] Don't omit second operand to '?' operator
  8 ---
  9  ip/iproute_lwtunnel.c |  4 ++--
 10  ip/iptunnel.c         |  7 ++++++-
 11- ip/iptuntap.c         |  2 +-
 12  lib/bpf_legacy.c      |  2 +-
 13  lib/utils.c           |  7 +++++--
 14  misc/ss.c             | 26 ++++++++++++++++++--------
 15- 6 files changed, 33 insertions(+), 15 deletions(-)
 16+ 5 files changed, 32 insertions(+), 14 deletions(-)
 17 
 18 diff --git a/ip/iproute_lwtunnel.c b/ip/iproute_lwtunnel.c
 19-index b05dffc6..a2d868db 100644
 20+index 94985972..7f3982aa 100644
 21 --- a/ip/iproute_lwtunnel.c
 22 +++ b/ip/iproute_lwtunnel.c
 23-@@ -291,7 +291,7 @@ static const char *format_action_type(int action)
 24+@@ -394,7 +394,7 @@ static const char *format_action_type(int action)
 25  	if (action < 0 || action > SEG6_LOCAL_ACTION_MAX)
 26  		return "<invalid>";
 27  
 28@@ -25,7 +24,7 @@ index b05dffc6..a2d868db 100644
 29  }
 30  
 31  static int read_action_type(const char *name)
 32-@@ -322,7 +322,7 @@ static void print_encap_bpf_prog(FILE *fp, struct rtattr *encap,
 33+@@ -425,7 +425,7 @@ static void print_encap_bpf_prog(FILE *fp, struct rtattr *encap,
 34  
 35  	if (is_json_context())
 36  		print_string(PRINT_JSON, str, NULL,
 37@@ -35,10 +34,10 @@ index b05dffc6..a2d868db 100644
 38  		fprintf(fp, "%s ", str);
 39  		if (progname)
 40 diff --git a/ip/iptunnel.c b/ip/iptunnel.c
 41-index c6c99118..cc5cbbc7 100644
 42+index 46c5f894..f84e25ed 100644
 43 --- a/ip/iptunnel.c
 44 +++ b/ip/iptunnel.c
 45-@@ -279,11 +279,16 @@ static int do_add(int cmd, int argc, char **argv)
 46+@@ -284,11 +284,16 @@ static int do_add(int cmd, int argc, char **argv)
 47  static int do_del(int argc, char **argv)
 48  {
 49  	struct ip_tunnel_parm p;
 50@@ -56,24 +55,11 @@ index c6c99118..cc5cbbc7 100644
 51  }
 52  
 53  static void print_tunnel(const void *t)
 54-diff --git a/ip/iptuntap.c b/ip/iptuntap.c
 55-index f3167858..5095e0f8 100644
 56---- a/ip/iptuntap.c
 57-+++ b/ip/iptuntap.c
 58-@@ -323,7 +323,7 @@ static void show_processes(const char *name)
 59- 				char *pname = get_task_name(pid);
 60- 
 61- 				print_string(PRINT_ANY, "name",
 62--					     "%s", pname ? : "<NULL>");
 63-+					     "%s", pname ? pname : "<NULL>");
 64- 
 65- 				print_uint(PRINT_ANY, "pid",
 66- 					   "(%d)", pid);
 67 diff --git a/lib/bpf_legacy.c b/lib/bpf_legacy.c
 68-index 614ee1c6..21853635 100644
 69+index 253e8240..a0afe0bc 100644
 70 --- a/lib/bpf_legacy.c
 71 +++ b/lib/bpf_legacy.c
 72-@@ -786,7 +786,7 @@ static const char *bpf_get_work_dir(enum bpf_prog_type type)
 73+@@ -771,7 +771,7 @@ static const char *bpf_get_work_dir(enum bpf_prog_type type)
 74  		mnt = bpf_find_mntpt("bpf", BPF_FS_MAGIC, bpf_tmp,
 75  				     sizeof(bpf_tmp), bpf_known_mnts);
 76  	if (!mnt) {
 77@@ -83,10 +69,10 @@ index 614ee1c6..21853635 100644
 78  		if (!ret)
 79  			ret = bpf_mnt_fs(mnt);
 80 diff --git a/lib/utils.c b/lib/utils.c
 81-index 0f683f9c..e862e1d4 100644
 82+index 040b935c..cfe0e2e9 100644
 83 --- a/lib/utils.c
 84 +++ b/lib/utils.c
 85-@@ -929,8 +929,10 @@ int __get_hz(void)
 86+@@ -953,8 +953,10 @@ int __get_hz(void)
 87  	int hz = 0;
 88  	FILE *fp;
 89  
 90@@ -99,7 +85,7 @@ index 0f683f9c..e862e1d4 100644
 91  
 92  	if (getenv("PROC_NET_PSCHED"))
 93  		snprintf(name, sizeof(name)-1,
 94-@@ -951,6 +953,7 @@ int __get_hz(void)
 95+@@ -975,6 +977,7 @@ int __get_hz(void)
 96  				hz = denom;
 97  		fclose(fp);
 98  	}
 99@@ -108,10 +94,10 @@ index 0f683f9c..e862e1d4 100644
100  		return hz;
101  	return HZ;
102 diff --git a/misc/ss.c b/misc/ss.c
103-index eda95552..202e5385 100644
104+index e5d97d95..3ed6ac18 100644
105 --- a/misc/ss.c
106 +++ b/misc/ss.c
107-@@ -482,7 +482,9 @@ static FILE *generic_proc_open(const char *env, const char *name)
108+@@ -464,7 +464,9 @@ static FILE *generic_proc_open(const char *env, const char *name)
109  	char store[128];
110  
111  	if (!p) {
112@@ -122,27 +108,25 @@ index eda95552..202e5385 100644
113  		snprintf(store, sizeof(store)-1, "%s/%s", p, name);
114  		p = store;
115  	}
116-@@ -574,7 +576,7 @@ static void user_ent_destroy(void)
117+@@ -634,12 +636,16 @@ static void user_ent_destroy(void)
118  
119  static void user_ent_hash_build(void)
120  {
121 -	const char *root = getenv("PROC_ROOT") ? : "/proc/";
122 +	const char *root;
123+ 	char name[MAX_PATH_LEN];
124  	struct dirent *d;
125- 	char name[1024];
126  	int nameoff;
127-@@ -584,6 +586,10 @@ static void user_ent_hash_build(void)
128- 	const char *no_ctx = "unavailable";
129- 	static int user_ent_hash_build_init;
130+ 	DIR *dir;
131  
132 +	root = getenv("PROC_ROOT");
133 +	if (!root)
134 +		root = "/proc/";
135 +
136- 	/* If show_users & show_proc_ctx set only do this once */
137- 	if (user_ent_hash_build_init != 0)
138- 		return;
139-@@ -2235,7 +2241,10 @@ void *parse_hostcond(char *addr, bool is_port)
140+ 	strlcpy(name, root, sizeof(name));
141+ 
142+ 	if (strlen(name) == 0 || name[strlen(name) - 1] != '/')
143+@@ -2301,7 +2307,10 @@ void *parse_hostcond(char *addr, bool is_port)
144  	} else if (addr[0] == '*') {
145  		port = addr+1;
146  	} else {
147@@ -154,19 +138,19 @@ index eda95552..202e5385 100644
148  	}
149  
150  	if (is_port)
151-@@ -3970,9 +3979,9 @@ static void unix_stats_print(struct sockstat *s, struct filter *f)
152+@@ -4089,9 +4098,9 @@ static void unix_stats_print(struct sockstat *s, struct filter *f)
153  
154  	sock_state_print(s);
155  
156 -	sock_addr_print(s->name ?: "*", " ",
157 +	sock_addr_print(s->name ? s->name : "*", " ",
158- 			int_to_str(s->lport, port_name), NULL);
159+ 			uint_to_str(s->lport, port_name), NULL);
160 -	sock_addr_print(s->peer_name ?: "*", " ",
161 +	sock_addr_print(s->peer_name ? s->peer_name : "*", " ",
162- 			int_to_str(s->rport, port_name), NULL);
163+ 			uint_to_str(s->rport, port_name), NULL);
164  
165  	proc_ctx_print(s);
166-@@ -4175,7 +4184,7 @@ static int unix_show(struct filter *f)
167+@@ -4294,7 +4303,7 @@ static int unix_show(struct filter *f)
168  			if (!p)
169  				u->peer_name = "?";
170  			else
171@@ -175,7 +159,7 @@ index eda95552..202e5385 100644
172  		}
173  
174  		if (f->f) {
175-@@ -4679,9 +4688,10 @@ static int netlink_show_one(struct filter *f,
176+@@ -4798,9 +4807,10 @@ static int netlink_show_one(struct filter *f,
177  			strncpy(procname, "kernel", 7);
178  		} else if (pid > 0) {
179  			FILE *fp;
180@@ -187,15 +171,15 @@ index eda95552..202e5385 100644
181  			if ((fp = fopen(procname, "r")) != NULL) {
182  				if (fscanf(fp, "%*d (%[^)])", procname) == 1) {
183  					snprintf(procname+strlen(procname),
184-@@ -4724,7 +4734,7 @@ static int netlink_show_one(struct filter *f,
185+@@ -4843,7 +4853,7 @@ static int netlink_show_one(struct filter *f,
186  		else if (pid > 0)
187  			getpidcon(pid, &pid_context);
188  
189 -		out(" proc_ctx=%s", pid_context ? : "unavailable");
190 +		out(" proc_ctx=%s", pid_context ? pid_context : "unavailable");
191- 		free(pid_context);
192+ 		freecon(pid_context);
193  	}
194  
195 -- 
196-2.34.1
197+2.44.0
198 
+8, -16
 1@@ -1,12 +1,12 @@
 2-From a5a3b56a204b398f6ae2e1144c73ec819e23426f Mon Sep 17 00:00:00 2001
 3+From ab8a58c777d6bc3e33b1f28c80fa5bbada804a4b Mon Sep 17 00:00:00 2001
 4 From: Michael Forney <mforney@mforney.org>
 5 Date: Sun, 16 Jun 2019 13:38:59 -0700
 6 Subject: [PATCH] Avoid unnecessary VLAs
 7 
 8 ---
 9  include/bpf_scm.h | 2 +-
10- ip/iptuntap.c     | 8 +++-----
11- 2 files changed, 4 insertions(+), 6 deletions(-)
12+ ip/iptuntap.c     | 5 ++---
13+ 2 files changed, 3 insertions(+), 4 deletions(-)
14 
15 diff --git a/include/bpf_scm.h b/include/bpf_scm.h
16 index 669f0538..9e456030 100644
17@@ -22,21 +22,20 @@ index 669f0538..9e456030 100644
18  
19  	msg->iov.iov_base = &msg->aux;
20 diff --git a/ip/iptuntap.c b/ip/iptuntap.c
21-index 5095e0f8..8928e503 100644
22+index 3cf55055..e149ae16 100644
23 --- a/ip/iptuntap.c
24 +++ b/ip/iptuntap.c
25-@@ -278,9 +278,7 @@ static void show_processes(const char *name)
26+@@ -270,8 +270,7 @@ static void show_processes(const char *name)
27  
28  	fd_path = globbuf.gl_pathv;
29  	while (*fd_path) {
30--		const char *dev_net_tun = "/dev/net/tun";
31--		const size_t linkbuf_len = strlen(dev_net_tun) + 2;
32+-		const size_t linkbuf_len = strlen(TUNDEV) + 2;
33 -		char linkbuf[linkbuf_len], *fdinfo;
34 +		char linkbuf[sizeof(TUNDEV) + 1], *fdinfo;
35  		int pid, fd;
36  		FILE *f;
37  
38-@@ -290,13 +288,13 @@ static void show_processes(const char *name)
39+@@ -281,7 +280,7 @@ static void show_processes(const char *name)
40  		if (pid == getpid())
41  			goto next;
42  
43@@ -45,13 +44,6 @@ index 5095e0f8..8928e503 100644
44  		if (err < 0) {
45  			perror("readlink");
46  			goto next;
47- 		}
48- 		linkbuf[err] = '\0';
49--		if (strcmp(dev_net_tun, linkbuf))
50-+		if (strcmp(TUNDEV, linkbuf))
51- 			goto next;
52- 
53- 		if (asprintf(&fdinfo, "/proc/%d/fdinfo/%d", pid, fd) < 0)
54 -- 
55-2.34.0
56+2.44.0
57 
 1@@ -1,4 +1,4 @@
 2-From d01fedaf6124f77cee82d8023e8ed0aa1cec345a Mon Sep 17 00:00:00 2001
 3+From 2ce43bae10979eb95b42432eec4c6589ee1676a1 Mon Sep 17 00:00:00 2001
 4 From: Michael Forney <mforney@mforney.org>
 5 Date: Mon, 24 Jun 2019 16:03:55 -0700
 6 Subject: [PATCH] ip: Fix get_link_kind when linked statically
 7@@ -8,10 +8,10 @@ Subject: [PATCH] ip: Fix get_link_kind when linked statically
 8  1 file changed, 90 insertions(+), 10 deletions(-)
 9 
10 diff --git a/ip/iplink.c b/ip/iplink.c
11-index 10f6c2c6..de7f21d6 100644
12+index 95314af5..b3ee3eef 100644
13 --- a/ip/iplink.c
14 +++ b/ip/iplink.c
15-@@ -151,7 +151,6 @@ static int on_off(const char *msg, const char *realval)
16+@@ -141,7 +141,6 @@ static int on_off(const char *msg, const char *realval)
17  	return -1;
18  }
19  
20@@ -19,7 +19,7 @@ index 10f6c2c6..de7f21d6 100644
21  static struct link_util *linkutil_list;
22  
23  struct link_util *get_link_kind(const char *id)
24-@@ -160,21 +159,102 @@ struct link_util *get_link_kind(const char *id)
25+@@ -150,21 +149,102 @@ struct link_util *get_link_kind(const char *id)
26  	char buf[256];
27  	struct link_util *l;
28  
29@@ -132,5 +132,5 @@ index 10f6c2c6..de7f21d6 100644
30  	snprintf(buf, sizeof(buf), "%s_link_util", id);
31  	l = dlsym(dlh, buf);
32 -- 
33-2.34.1
34+2.44.0
35 
+5, -5
 1@@ -1,4 +1,4 @@
 2-From 116f98de6f16f9c8891b910e6e47ffbd86652100 Mon Sep 17 00:00:00 2001
 3+From e4114a995209c39d5a65aa2114d82b195ced17b2 Mon Sep 17 00:00:00 2001
 4 From: Michael Forney <mforney@mforney.org>
 5 Date: Mon, 24 Jun 2019 16:48:56 -0700
 6 Subject: [PATCH] Use alloca instead of VLA when VLA is not available
 7@@ -8,10 +8,10 @@ Subject: [PATCH] Use alloca instead of VLA when VLA is not available
 8  1 file changed, 12 insertions(+), 2 deletions(-)
 9 
10 diff --git a/ip/ipaddress.c b/ip/ipaddress.c
11-index cfd21f9a..8472499e 100644
12+index 9f062217..3c195bb8 100644
13 --- a/ip/ipaddress.c
14 +++ b/ip/ipaddress.c
15-@@ -246,7 +246,12 @@ static void print_linktype(FILE *fp, struct rtattr *tb)
16+@@ -245,7 +245,12 @@ static void print_linktype(FILE *fp, struct rtattr *tb)
17  
18  		lu = get_link_kind(kind);
19  		if (lu && lu->print_opt) {
20@@ -25,7 +25,7 @@ index cfd21f9a..8472499e 100644
21  
22  			if (linkinfo[IFLA_INFO_DATA]) {
23  				parse_rtattr_nested(attr, lu->maxattr,
24-@@ -280,7 +285,12 @@ static void print_linktype(FILE *fp, struct rtattr *tb)
25+@@ -279,7 +284,12 @@ static void print_linktype(FILE *fp, struct rtattr *tb)
26  
27  		slave_lu = get_link_kind(slave);
28  		if (slave_lu && slave_lu->print_opt) {
29@@ -40,5 +40,5 @@ index cfd21f9a..8472499e 100644
30  			if (linkinfo[IFLA_INFO_SLAVE_DATA]) {
31  				parse_rtattr_nested(attr, slave_lu->maxattr,
32 -- 
33-2.34.1
34+2.44.0
35 
+6, -6
 1@@ -1,4 +1,4 @@
 2-From 610a720da48cb1b4de2364d70215450275edebcb Mon Sep 17 00:00:00 2001
 3+From eb780d31a912363846e54266db7395a82f14ebb2 Mon Sep 17 00:00:00 2001
 4 From: Michael Forney <mforney@mforney.org>
 5 Date: Mon, 24 Jun 2019 17:38:56 -0700
 6 Subject: [PATCH] Use static inline function for min()
 7@@ -10,10 +10,10 @@ It is only called to calculate a minimum `int`, so specialize for
 8  1 file changed, 4 insertions(+), 7 deletions(-)
 9 
10 diff --git a/include/utils.h b/include/utils.h
11-index b6c468e9..8bdbb369 100644
12+index 9ba129b8..a8a56fca 100644
13 --- a/include/utils.h
14 +++ b/include/utils.h
15-@@ -273,13 +273,10 @@ unsigned int print_name_and_link(const char *fmt,
16+@@ -279,13 +279,10 @@ unsigned int print_name_and_link(const char *fmt,
17  # define offsetof(type, member) ((size_t) &((type *)0)->member)
18  #endif
19  
20@@ -29,8 +29,8 @@ index b6c468e9..8bdbb369 100644
21 +	return a < b ? a : b;
22 +}
23  
24- #ifndef __check_format_string
25- # define __check_format_string(pos_str, pos_args) \
26+ #ifndef max
27+ # define max(x, y) ({			\
28 -- 
29-2.34.1
30+2.44.0
31 
+4, -4
 1@@ -1,4 +1,4 @@
 2-From 2a25102281f4863cba9a0f76246006a2dd545cf7 Mon Sep 17 00:00:00 2001
 3+From 0d20d0e247e074dd3e8892053387295062c3c666 Mon Sep 17 00:00:00 2001
 4 From: Michael Forney <mforney@mforney.org>
 5 Date: Wed, 29 Jan 2020 15:36:37 -0800
 6 Subject: [PATCH] Use __typeof__ instead of typeof
 7@@ -69,10 +69,10 @@ index 7108cea7..36d73d96 100644
 8  
 9  #endif /* __LIST_H__ */
10 diff --git a/lib/ll_map.c b/lib/ll_map.c
11-index 36320f77..f0a6d494 100644
12+index 7fe5f0bc..0f7305ab 100644
13 --- a/lib/ll_map.c
14 +++ b/lib/ll_map.c
15-@@ -173,7 +173,7 @@ static void ll_altname_entries_update(struct ll_cache *parent_im,
16+@@ -168,7 +168,7 @@ static void ll_altname_entries_update(struct ll_cache *parent_im,
17  	 * and if it does not fit 1:1, recreate the cached list
18  	 * from scratch.
19  	 */
20@@ -82,5 +82,5 @@ index 36320f77..f0a6d494 100644
21  	rem = RTA_PAYLOAD(proplist);
22  	for (i = RTA_DATA(proplist); RTA_OK(i, rem);
23 -- 
24-2.25.0
25+2.44.0
26 
+4, -4
 1@@ -1,4 +1,4 @@
 2-From 47376a101469e5f559dba47066255af6f06dbe04 Mon Sep 17 00:00:00 2001
 3+From e53788b231f05d0383fa8433e972384028340bb4 Mon Sep 17 00:00:00 2001
 4 From: Michael Forney <mforney@mforney.org>
 5 Date: Tue, 2 Jun 2020 03:56:03 -0700
 6 Subject: [PATCH] Revert change of BPF_F_* to enum constants
 7@@ -8,10 +8,10 @@ Subject: [PATCH] Revert change of BPF_F_* to enum constants
 8  1 file changed, 3 insertions(+), 5 deletions(-)
 9 
10 diff --git a/include/uapi/linux/bpf.h b/include/uapi/linux/bpf.h
11-index 0c3a514a..964719f9 100644
12+index 0a2380a1..4a0d5760 100644
13 --- a/include/uapi/linux/bpf.h
14 +++ b/include/uapi/linux/bpf.h
15-@@ -5185,12 +5185,10 @@ enum {
16+@@ -5970,12 +5970,10 @@ enum {
17  /* BPF_FUNC_perf_event_output, BPF_FUNC_perf_event_read and
18   * BPF_FUNC_perf_event_read_value flags.
19   */
20@@ -28,5 +28,5 @@ index 0c3a514a..964719f9 100644
21  /* Current network namespace */
22  enum {
23 -- 
24-2.34.1
25+2.44.0
26 
R pkg/iproute2/patch/0017-Fix-overflow-check-for-strtod-and-strtoul.patch => pkg/iproute2/patch/0016-Fix-overflow-check-for-strtod-and-strtoul.patch
+6, -6
 1@@ -1,4 +1,4 @@
 2-From 203c2dcd7742802a8b7c21ab94251787377556bb Mon Sep 17 00:00:00 2001
 3+From dcedda3fb2b1c07b1e144aa309ff524f2d919ea3 Mon Sep 17 00:00:00 2001
 4 From: Michael Forney <mforney@mforney.org>
 5 Date: Thu, 2 Dec 2021 16:28:42 -0800
 6 Subject: [PATCH] Fix overflow check for strtod and strtoul
 7@@ -8,10 +8,10 @@ Subject: [PATCH] Fix overflow check for strtod and strtoul
 8  1 file changed, 4 insertions(+), 2 deletions(-)
 9 
10 diff --git a/lib/utils.c b/lib/utils.c
11-index e862e1d4..d5c2f4e3 100644
12+index cfe0e2e9..f4109413 100644
13 --- a/lib/utils.c
14 +++ b/lib/utils.c
15-@@ -221,6 +221,7 @@ int get_time_rtt(unsigned int *val, const char *arg, int *raw)
16+@@ -228,6 +228,7 @@ int get_time_rtt(unsigned int *val, const char *arg, int *raw)
17  	char *p;
18  
19  	if (strchr(arg, '.') != NULL) {
20@@ -19,7 +19,7 @@ index e862e1d4..d5c2f4e3 100644
21  		t = strtod(arg, &p);
22  		if (t < 0.0)
23  			return -1;
24-@@ -230,9 +231,10 @@ int get_time_rtt(unsigned int *val, const char *arg, int *raw)
25+@@ -237,9 +238,10 @@ int get_time_rtt(unsigned int *val, const char *arg, int *raw)
26  			return -1;
27  
28  		/* over/underflow */
29@@ -31,7 +31,7 @@ index e862e1d4..d5c2f4e3 100644
30  		res = strtoul(arg, &p, 0);
31  
32  		/* empty string? */
33-@@ -240,7 +242,7 @@ int get_time_rtt(unsigned int *val, const char *arg, int *raw)
34+@@ -247,7 +249,7 @@ int get_time_rtt(unsigned int *val, const char *arg, int *raw)
35  			return -1;
36  
37  		/* overflow */
38@@ -41,5 +41,5 @@ index e862e1d4..d5c2f4e3 100644
39  
40  		t = (double)res;
41 -- 
42-2.34.0
43+2.44.0
44 
+0, -32
 1@@ -1,32 +0,0 @@
 2-From 5a2587077e91d489ad9708cf5614bb5fecbb02aa Mon Sep 17 00:00:00 2001
 3-From: Michael Forney <mforney@mforney.org>
 4-Date: Thu, 2 Dec 2021 14:49:08 -0800
 5-Subject: [PATCH] Make struct bpf_timer include a named member
 6-
 7-A struct without any named members is undefined behavior by C11
 8-6.7.2.1p8.
 9-
10-Signed-off-by: Michael Forney <mforney@mforney.org>
11----
12- include/uapi/linux/bpf.h | 5 ++---
13- 1 file changed, 2 insertions(+), 3 deletions(-)
14-
15-diff --git a/include/uapi/linux/bpf.h b/include/uapi/linux/bpf.h
16-index 964719f9..f71d7e90 100644
17---- a/include/uapi/linux/bpf.h
18-+++ b/include/uapi/linux/bpf.h
19-@@ -6250,9 +6250,8 @@ struct bpf_spin_lock {
20- };
21- 
22- struct bpf_timer {
23--	__u64 :64;
24--	__u64 :64;
25--} __attribute__((aligned(8)));
26-+	__u64	reserved[2];
27-+};
28- 
29- struct bpf_sysctl {
30- 	__u32	write;		/* Sysctl is being read (= 0) or written (= 1).
31--- 
32-2.34.1
33-
R pkg/iproute2/patch/0018-Remove-flexible-array-member-in-embedded-struct.patch => pkg/iproute2/patch/0017-Remove-flexible-array-member-in-embedded-struct.patch
+0, -0
+0, -26
 1@@ -1,26 +0,0 @@
 2-From 81bd67e0e190b01266d12e98f4feb41766b7fcfb Mon Sep 17 00:00:00 2001
 3-From: Michael Forney <mforney@mforney.org>
 4-Date: Thu, 17 Feb 2022 23:07:55 -0800
 5-Subject: [PATCH] Include linux ax25.h header
 6-
 7-Fixes the build with musl libc.
 8----
 9- lib/ax25_ntop.c | 2 +-
10- 1 file changed, 1 insertion(+), 1 deletion(-)
11-
12-diff --git a/lib/ax25_ntop.c b/lib/ax25_ntop.c
13-index cfd0e04b..3a72a43e 100644
14---- a/lib/ax25_ntop.c
15-+++ b/lib/ax25_ntop.c
16-@@ -2,7 +2,7 @@
17- 
18- #include <errno.h>
19- #include <sys/socket.h>
20--#include <netax25/ax25.h>
21-+#include <linux/ax25.h>
22- 
23- #include "utils.h"
24- 
25--- 
26-2.34.1
27-
+1, -1
1@@ -1 +1 @@
2-Subproject commit ade99e208c1843ed3b6eb9d138aa15a6a5eb5219
3+Subproject commit e5fd785830671180e934a84a44da93c51cce839d
+1, -1
1@@ -1 +1 @@
2-5.16.0 r0
3+6.8.0 r0