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}
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
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
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
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
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
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
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
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
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
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
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
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
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