commit: 8e68690eee717c09d006d5e73c780e3d4316b36a
parent 3729c4b843c9d02947fa63dafca3f1df37598f75
Author: Michael Forney <mforney@mforney.org>
Date: Thu, 3 Oct 2019 23:38:39 -0700
iproute2: Update to 5.3.0
Diffstat:
11 files changed, 259 insertions(+), 274 deletions(-)
diff --git a/pkg/iproute2/gen.lua b/pkg/iproute2/gen.lua
@@ -30,6 +30,7 @@ exe('bin/ip', [[ip/(
iplink_bridge.c iplink_bridge_slave.c ipfou.c iplink_ipvlan.c
iplink_geneve.c iplink_vrf.c iproute_lwtunnel.c ipmacsec.c ipila.c
ipvrf.c iplink_xstats.c ipseg6.c iplink_netdevsim.c iplink_rmnet.c
+ ipnexthop.c
) libnetlink.a]])
file('bin/ip', '755', '$outdir/bin/ip')
diff --git a/pkg/iproute2/patch/0002-Avoid-pointer-arithmetic-on-void.patch b/pkg/iproute2/patch/0002-Avoid-pointer-arithmetic-on-void.patch
@@ -1,4 +1,4 @@
-From a343504a3158d52e58161c5f0f87962595250809 Mon Sep 17 00:00:00 2001
+From fc4d606317d20f72c929e01a60adbbe21f28d0a3 Mon Sep 17 00:00:00 2001
From: Michael Forney <mforney@mforney.org>
Date: Tue, 12 Mar 2019 19:12:31 -0700
Subject: [PATCH] Avoid pointer arithmetic on `void *`
@@ -13,10 +13,10 @@ Subject: [PATCH] Avoid pointer arithmetic on `void *`
6 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/include/libnetlink.h b/include/libnetlink.h
-index 0205af80..ec2eea30 100644
+index 311cf3fc..2f80d4c4 100644
--- a/include/libnetlink.h
+++ b/include/libnetlink.h
-@@ -163,7 +163,7 @@ struct rtattr *rta_nest(struct rtattr *rta, int maxlen, int type);
+@@ -168,7 +168,7 @@ struct rtattr *rta_nest(struct rtattr *rta, int maxlen, int type);
int rta_nest_end(struct rtattr *rta, struct rtattr *nest);
#define RTA_TAIL(rta) \
@@ -25,7 +25,7 @@ index 0205af80..ec2eea30 100644
RTA_ALIGN((rta)->rta_len)))
#define parse_rtattr_nested(tb, max, rta) \
-@@ -226,7 +226,7 @@ int rtnl_from_file(FILE *, rtnl_listen_filter_t handler,
+@@ -231,7 +231,7 @@ int rtnl_from_file(FILE *, rtnl_listen_filter_t handler,
void *jarg);
#define NLMSG_TAIL(nmsg) \
@@ -48,7 +48,7 @@ index ea126b08..f24586d4 100644
open_json_object(NULL);
if (tb[FOU_ATTR_PORT])
diff --git a/ip/ipila.c b/ip/ipila.c
-index 11fbb5fa..563ce9cb 100644
+index 739ee4e1..50c8c300 100644
--- a/ip/ipila.c
+++ b/ip/ipila.c
@@ -95,7 +95,7 @@ static int print_ila_mapping(struct nlmsghdr *n, void *arg)
@@ -61,10 +61,10 @@ index 11fbb5fa..563ce9cb 100644
open_json_object(NULL);
print_ila_locid("locator_match", ILA_ATTR_LOCATOR_MATCH, tb);
diff --git a/ip/ipseg6.c b/ip/ipseg6.c
-index 33076e72..72ee01bf 100644
+index 56a76996..1c3c3bf5 100644
--- a/ip/ipseg6.c
+++ b/ip/ipseg6.c
-@@ -114,7 +114,7 @@ static int process_msg(struct nlmsghdr *n, void *arg)
+@@ -115,7 +115,7 @@ static int process_msg(struct nlmsghdr *n, void *arg)
ghdr = NLMSG_DATA(n);
@@ -74,10 +74,10 @@ index 33076e72..72ee01bf 100644
open_json_object(NULL);
switch (ghdr->cmd) {
diff --git a/lib/libnetlink.c b/lib/libnetlink.c
-index 028d5502..5a13898c 100644
+index 8c490f89..8fbdfeee 100644
--- a/lib/libnetlink.c
+++ b/lib/libnetlink.c
-@@ -1238,7 +1238,7 @@ int addraw_l(struct nlmsghdr *n, int maxlen, const void *data, int len)
+@@ -1271,7 +1271,7 @@ int addraw_l(struct nlmsghdr *n, int maxlen, const void *data, int len)
}
memcpy(NLMSG_TAIL(n), data, len);
@@ -86,7 +86,7 @@ index 028d5502..5a13898c 100644
n->nlmsg_len = NLMSG_ALIGN(n->nlmsg_len) + NLMSG_ALIGN(len);
return 0;
}
-@@ -1253,7 +1253,7 @@ struct rtattr *addattr_nest(struct nlmsghdr *n, int maxlen, int type)
+@@ -1286,7 +1286,7 @@ struct rtattr *addattr_nest(struct nlmsghdr *n, int maxlen, int type)
int addattr_nest_end(struct nlmsghdr *n, struct rtattr *nest)
{
@@ -95,7 +95,7 @@ index 028d5502..5a13898c 100644
return n->nlmsg_len;
}
-@@ -1269,9 +1269,9 @@ struct rtattr *addattr_nest_compat(struct nlmsghdr *n, int maxlen, int type,
+@@ -1302,9 +1302,9 @@ struct rtattr *addattr_nest_compat(struct nlmsghdr *n, int maxlen, int type,
int addattr_nest_compat_end(struct nlmsghdr *n, struct rtattr *start)
{
@@ -107,7 +107,7 @@ index 028d5502..5a13898c 100644
addattr_nest_end(n, nest);
return n->nlmsg_len;
}
-@@ -1342,7 +1342,7 @@ struct rtattr *rta_nest(struct rtattr *rta, int maxlen, int type)
+@@ -1376,7 +1376,7 @@ struct rtattr *rta_nest(struct rtattr *rta, int maxlen, int type)
int rta_nest_end(struct rtattr *rta, struct rtattr *nest)
{
@@ -116,7 +116,7 @@ index 028d5502..5a13898c 100644
return rta->rta_len;
}
-@@ -1391,7 +1391,7 @@ int __parse_rtattr_nested_compat(struct rtattr *tb[], int max,
+@@ -1425,7 +1425,7 @@ int __parse_rtattr_nested_compat(struct rtattr *tb[], int max,
if (RTA_PAYLOAD(rta) < len)
return -1;
if (RTA_PAYLOAD(rta) >= RTA_ALIGN(len) + sizeof(struct rtattr)) {
@@ -126,10 +126,10 @@ index 028d5502..5a13898c 100644
}
memset(tb, 0, sizeof(struct rtattr *) * (max + 1));
diff --git a/lib/utils.c b/lib/utils.c
-index be0f11b0..7f8a7da1 100644
+index 95d46ff2..21a87b7c 100644
--- a/lib/utils.c
+++ b/lib/utils.c
-@@ -1534,7 +1534,7 @@ int get_rtnl_link_stats_rta(struct rtnl_link_stats64 *stats64,
+@@ -1523,7 +1523,7 @@ int get_rtnl_link_stats_rta(struct rtnl_link_stats64 *stats64,
len = RTA_PAYLOAD(rta);
if (len < size)
@@ -139,5 +139,5 @@ index be0f11b0..7f8a7da1 100644
len = size;
--
-2.22.0
+2.23.0
diff --git a/pkg/iproute2/patch/0005-Make-RT_TABLE_MAX-a-preprocessor-define-since-it-doe.patch b/pkg/iproute2/patch/0005-Make-RT_TABLE_MAX-a-preprocessor-define-since-it-doe.patch
@@ -1,4 +1,4 @@
-From f96642925899c3ac61b158ad98868ef9b65c2326 Mon Sep 17 00:00:00 2001
+From 9393c2b9178288f084e8f46550db2089d8295e42 Mon Sep 17 00:00:00 2001
From: Michael Forney <mforney@mforney.org>
Date: Sun, 16 Jun 2019 12:16:50 -0700
Subject: [PATCH] Make RT_TABLE_MAX a preprocessor define, since it doesn't fit
@@ -9,10 +9,10 @@ Subject: [PATCH] Make RT_TABLE_MAX a preprocessor define, since it doesn't fit
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/include/uapi/linux/rtnetlink.h b/include/uapi/linux/rtnetlink.h
-index 8c1d600b..50236ab5 100644
+index 358e83ee..d993e195 100644
--- a/include/uapi/linux/rtnetlink.h
+++ b/include/uapi/linux/rtnetlink.h
-@@ -305,9 +305,10 @@ enum rt_class_t {
+@@ -312,9 +312,10 @@ enum rt_class_t {
RT_TABLE_DEFAULT=253,
RT_TABLE_MAIN=254,
RT_TABLE_LOCAL=255,
@@ -25,5 +25,5 @@ index 8c1d600b..50236ab5 100644
/* Routing message attributes */
--
-2.20.1
+2.23.0
diff --git a/pkg/iproute2/patch/0006-Don-t-use-empty-initializer-lists.patch b/pkg/iproute2/patch/0006-Don-t-use-empty-initializer-lists.patch
@@ -1,4 +1,4 @@
-From 20cfae0f14e0fe4fd40e8e79841c981b586985a3 Mon Sep 17 00:00:00 2001
+From e439e1254386d639085bae186b39c3cbd691af9b Mon Sep 17 00:00:00 2001
From: Michael Forney <mforney@mforney.org>
Date: Sun, 16 Jun 2019 12:21:05 -0700
Subject: [PATCH] Don't use empty initializer lists
@@ -91,10 +91,10 @@ Subject: [PATCH] Don't use empty initializer lists
84 files changed, 288 insertions(+), 288 deletions(-)
diff --git a/bridge/mdb.c b/bridge/mdb.c
-index 6edb98b8..dd32daf0 100644
+index 1f2cebd8..124fef49 100644
--- a/bridge/mdb.c
+++ b/bridge/mdb.c
-@@ -376,7 +376,7 @@ static int mdb_modify(int cmd, int flags, int argc, char **argv)
+@@ -377,7 +377,7 @@ static int mdb_modify(int cmd, int flags, int argc, char **argv)
.n.nlmsg_type = cmd,
.bpm.family = PF_BRIDGE,
};
@@ -126,10 +126,10 @@ index 5dd9a82e..8ea553d4 100644
unsigned short flags = 0;
__u32 tun_id_start = 0;
diff --git a/devlink/devlink.c b/devlink/devlink.c
-index 5618ba26..aaca50bc 100644
+index 02933739..e456c067 100644
--- a/devlink/devlink.c
+++ b/devlink/devlink.c
-@@ -457,7 +457,7 @@ static int attr_cb(const struct nlattr *attr, void *data)
+@@ -456,7 +456,7 @@ static int attr_cb(const struct nlattr *attr, void *data)
static int ifname_map_cb(const struct nlmsghdr *nlh, void *data)
{
@@ -138,7 +138,7 @@ index 5618ba26..aaca50bc 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
struct dl *dl = data;
struct ifname_map *ifname_map;
-@@ -2012,7 +2012,7 @@ static void pr_out_eswitch(struct dl *dl, struct nlattr **tb)
+@@ -2008,7 +2008,7 @@ static void pr_out_eswitch(struct dl *dl, struct nlattr **tb)
static int cmd_dev_eswitch_show_cb(const struct nlmsghdr *nlh, void *data)
{
struct dl *dl = data;
@@ -147,7 +147,7 @@ index 5618ba26..aaca50bc 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
-@@ -2150,7 +2150,7 @@ static const struct param_val_conv param_val_conv[] = {
+@@ -2146,7 +2146,7 @@ static const struct param_val_conv param_val_conv[] = {
static void pr_out_param_value(struct dl *dl, const char *nla_name,
int nla_type, struct nlattr *nl)
{
@@ -156,7 +156,7 @@ index 5618ba26..aaca50bc 100644
struct nlattr *val_attr;
const char *vstr;
bool conv_exists;
-@@ -2226,7 +2226,7 @@ static void pr_out_param_value(struct dl *dl, const char *nla_name,
+@@ -2222,7 +2222,7 @@ static void pr_out_param_value(struct dl *dl, const char *nla_name,
static void pr_out_param(struct dl *dl, struct nlattr **tb, bool array)
{
@@ -165,7 +165,7 @@ index 5618ba26..aaca50bc 100644
struct nlattr *param_value_attr;
const char *nla_name;
int nla_type;
-@@ -2269,7 +2269,7 @@ static void pr_out_param(struct dl *dl, struct nlattr **tb, bool array)
+@@ -2265,7 +2265,7 @@ static void pr_out_param(struct dl *dl, struct nlattr **tb, bool array)
static int cmd_dev_param_show_cb(const struct nlmsghdr *nlh, void *data)
{
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
@@ -174,7 +174,7 @@ index 5618ba26..aaca50bc 100644
struct dl *dl = data;
mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
-@@ -2295,8 +2295,8 @@ struct param_ctx {
+@@ -2291,8 +2291,8 @@ struct param_ctx {
static int cmd_dev_param_set_cb(const struct nlmsghdr *nlh, void *data)
{
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
@@ -185,7 +185,7 @@ index 5618ba26..aaca50bc 100644
struct nlattr *param_value_attr;
enum devlink_param_cmode cmode;
struct param_ctx *ctx = data;
-@@ -2320,7 +2320,7 @@ static int cmd_dev_param_set_cb(const struct nlmsghdr *nlh, void *data)
+@@ -2316,7 +2316,7 @@ static int cmd_dev_param_set_cb(const struct nlmsghdr *nlh, void *data)
nla_type = mnl_attr_get_u8(nla_param[DEVLINK_ATTR_PARAM_TYPE]);
mnl_attr_for_each_nested(param_value_attr,
nla_param[DEVLINK_ATTR_PARAM_VALUES_LIST]) {
@@ -194,7 +194,7 @@ index 5618ba26..aaca50bc 100644
struct nlattr *val_attr;
err = mnl_attr_parse_nested(param_value_attr,
-@@ -2362,7 +2362,7 @@ static int cmd_dev_param_set_cb(const struct nlmsghdr *nlh, void *data)
+@@ -2358,7 +2358,7 @@ static int cmd_dev_param_set_cb(const struct nlmsghdr *nlh, void *data)
static int cmd_dev_param_set(struct dl *dl)
{
@@ -203,7 +203,7 @@ index 5618ba26..aaca50bc 100644
struct nlmsghdr *nlh;
bool conv_exists;
uint32_t val_u32;
-@@ -2517,7 +2517,7 @@ static int cmd_dev_param(struct dl *dl)
+@@ -2513,7 +2513,7 @@ static int cmd_dev_param(struct dl *dl)
static int cmd_dev_show_cb(const struct nlmsghdr *nlh, void *data)
{
struct dl *dl = data;
@@ -212,7 +212,7 @@ index 5618ba26..aaca50bc 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
-@@ -2581,7 +2581,7 @@ static void pr_out_versions_single(struct dl *dl, const struct nlmsghdr *nlh,
+@@ -2577,7 +2577,7 @@ static void pr_out_versions_single(struct dl *dl, const struct nlmsghdr *nlh,
struct nlattr *version;
mnl_attr_for_each(version, nlh, sizeof(struct genlmsghdr)) {
@@ -221,7 +221,7 @@ index 5618ba26..aaca50bc 100644
const char *ver_value;
const char *ver_name;
int err;
-@@ -2656,7 +2656,7 @@ static void pr_out_info(struct dl *dl, const struct nlmsghdr *nlh,
+@@ -2652,7 +2652,7 @@ static void pr_out_info(struct dl *dl, const struct nlmsghdr *nlh,
static int cmd_versions_show_cb(const struct nlmsghdr *nlh, void *data)
{
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
@@ -230,7 +230,7 @@ index 5618ba26..aaca50bc 100644
bool has_versions, has_info;
struct dl *dl = data;
-@@ -2838,7 +2838,7 @@ static void pr_out_port(struct dl *dl, struct nlattr **tb)
+@@ -2867,7 +2867,7 @@ static void pr_out_port(struct dl *dl, struct nlattr **tb)
static int cmd_port_show_cb(const struct nlmsghdr *nlh, void *data)
{
struct dl *dl = data;
@@ -239,7 +239,7 @@ index 5618ba26..aaca50bc 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
-@@ -2981,7 +2981,7 @@ static void pr_out_sb(struct dl *dl, struct nlattr **tb)
+@@ -3010,7 +3010,7 @@ static void pr_out_sb(struct dl *dl, struct nlattr **tb)
static int cmd_sb_show_cb(const struct nlmsghdr *nlh, void *data)
{
struct dl *dl = data;
@@ -248,7 +248,7 @@ index 5618ba26..aaca50bc 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
-@@ -3059,7 +3059,7 @@ static void pr_out_sb_pool(struct dl *dl, struct nlattr **tb)
+@@ -3088,7 +3088,7 @@ static void pr_out_sb_pool(struct dl *dl, struct nlattr **tb)
static int cmd_sb_pool_show_cb(const struct nlmsghdr *nlh, void *data)
{
struct dl *dl = data;
@@ -257,7 +257,7 @@ index 5618ba26..aaca50bc 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
-@@ -3144,7 +3144,7 @@ static void pr_out_sb_port_pool(struct dl *dl, struct nlattr **tb)
+@@ -3173,7 +3173,7 @@ static void pr_out_sb_port_pool(struct dl *dl, struct nlattr **tb)
static int cmd_sb_port_pool_show_cb(const struct nlmsghdr *nlh, void *data)
{
struct dl *dl = data;
@@ -266,7 +266,7 @@ index 5618ba26..aaca50bc 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
-@@ -3246,7 +3246,7 @@ static void pr_out_sb_tc_bind(struct dl *dl, struct nlattr **tb)
+@@ -3275,7 +3275,7 @@ static void pr_out_sb_tc_bind(struct dl *dl, struct nlattr **tb)
static int cmd_sb_tc_bind_show_cb(const struct nlmsghdr *nlh, void *data)
{
struct dl *dl = data;
@@ -275,7 +275,7 @@ index 5618ba26..aaca50bc 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
-@@ -3536,7 +3536,7 @@ static void cmd_sb_occ_port_pool_process(struct occ_show *occ_show,
+@@ -3565,7 +3565,7 @@ static void cmd_sb_occ_port_pool_process(struct occ_show *occ_show,
static int cmd_sb_occ_port_pool_process_cb(const struct nlmsghdr *nlh, void *data)
{
struct occ_show *occ_show = data;
@@ -284,7 +284,7 @@ index 5618ba26..aaca50bc 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
-@@ -3587,7 +3587,7 @@ static void cmd_sb_occ_tc_pool_process(struct occ_show *occ_show,
+@@ -3616,7 +3616,7 @@ static void cmd_sb_occ_tc_pool_process(struct occ_show *occ_show,
static int cmd_sb_occ_tc_pool_process_cb(const struct nlmsghdr *nlh, void *data)
{
struct occ_show *occ_show = data;
@@ -293,7 +293,7 @@ index 5618ba26..aaca50bc 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
-@@ -3792,7 +3792,7 @@ static void pr_out_region(struct dl *dl, struct nlattr **tb);
+@@ -3821,7 +3821,7 @@ static void pr_out_region(struct dl *dl, struct nlattr **tb);
static int cmd_mon_show_cb(const struct nlmsghdr *nlh, void *data)
{
struct dl *dl = data;
@@ -302,7 +302,7 @@ index 5618ba26..aaca50bc 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
uint8_t cmd = genl->cmd;
-@@ -4243,7 +4243,7 @@ static void pr_out_dpipe_headers(struct dpipe_ctx *ctx,
+@@ -4272,7 +4272,7 @@ static void pr_out_dpipe_headers(struct dpipe_ctx *ctx,
static int dpipe_header_field_get(struct nlattr *nl, struct dpipe_field *field)
{
@@ -311,7 +311,7 @@ index 5618ba26..aaca50bc 100644
const char *name;
int err;
-@@ -4294,7 +4294,7 @@ static unsigned int dpipe_header_field_count_get(struct nlattr *nla_fields)
+@@ -4323,7 +4323,7 @@ static unsigned int dpipe_header_field_count_get(struct nlattr *nla_fields)
static int dpipe_header_get(struct dpipe_ctx *ctx, struct nlattr *nl)
{
@@ -320,7 +320,7 @@ index 5618ba26..aaca50bc 100644
struct dpipe_header *header;
unsigned int fields_count;
const char *header_name;
-@@ -4350,7 +4350,7 @@ static int dpipe_headers_get(struct dpipe_ctx *ctx, struct nlattr **tb)
+@@ -4379,7 +4379,7 @@ static int dpipe_headers_get(struct dpipe_ctx *ctx, struct nlattr **tb)
static int cmd_dpipe_header_cb(const struct nlmsghdr *nlh, void *data)
{
struct dpipe_ctx *ctx = data;
@@ -329,7 +329,7 @@ index 5618ba26..aaca50bc 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
int err;
-@@ -4372,7 +4372,7 @@ static int cmd_dpipe_header_cb(const struct nlmsghdr *nlh, void *data)
+@@ -4401,7 +4401,7 @@ static int cmd_dpipe_header_cb(const struct nlmsghdr *nlh, void *data)
static int cmd_dpipe_headers_show(struct dl *dl)
{
struct nlmsghdr *nlh;
@@ -338,7 +338,7 @@ index 5618ba26..aaca50bc 100644
uint16_t flags = NLM_F_REQUEST | NLM_F_ACK;
int err;
-@@ -4462,7 +4462,7 @@ static void pr_out_dpipe_action(struct dpipe_action *action,
+@@ -4491,7 +4491,7 @@ static void pr_out_dpipe_action(struct dpipe_action *action,
static int dpipe_action_parse(struct dpipe_action *action, struct nlattr *nl)
{
@@ -347,7 +347,7 @@ index 5618ba26..aaca50bc 100644
int err;
err = mnl_attr_parse_nested(nl, attr_cb, nla_action);
-@@ -4546,7 +4546,7 @@ static int dpipe_match_parse(struct dpipe_match *match,
+@@ -4575,7 +4575,7 @@ static int dpipe_match_parse(struct dpipe_match *match,
struct nlattr *nl)
{
@@ -356,7 +356,7 @@ index 5618ba26..aaca50bc 100644
int err;
err = mnl_attr_parse_nested(nl, attr_cb, nla_match);
-@@ -4650,7 +4650,7 @@ resource_path_print(struct dl *dl, struct resources *resources,
+@@ -4679,7 +4679,7 @@ resource_path_print(struct dl *dl, struct resources *resources,
static int dpipe_table_show(struct dpipe_ctx *ctx, struct nlattr *nl)
{
@@ -365,7 +365,7 @@ index 5618ba26..aaca50bc 100644
struct dpipe_table *table;
uint32_t resource_units;
bool counters_enabled;
-@@ -4743,7 +4743,7 @@ err_table_show:
+@@ -4772,7 +4772,7 @@ err_table_show:
static int cmd_dpipe_table_show_cb(const struct nlmsghdr *nlh, void *data)
{
struct dpipe_ctx *ctx = data;
@@ -374,7 +374,7 @@ index 5618ba26..aaca50bc 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
-@@ -4761,8 +4761,8 @@ static int cmd_resource_dump_cb(const struct nlmsghdr *nlh, void *data);
+@@ -4790,8 +4790,8 @@ static int cmd_resource_dump_cb(const struct nlmsghdr *nlh, void *data);
static int cmd_dpipe_table_show(struct dl *dl)
{
struct nlmsghdr *nlh;
@@ -385,7 +385,7 @@ index 5618ba26..aaca50bc 100644
uint16_t flags = NLM_F_REQUEST;
int err;
-@@ -5014,7 +5014,7 @@ static void pr_out_dpipe_entry_value(struct dpipe_ctx *ctx,
+@@ -5043,7 +5043,7 @@ static void pr_out_dpipe_entry_value(struct dpipe_ctx *ctx,
static int dpipe_entry_match_value_show(struct dpipe_ctx *ctx,
struct nlattr *nl)
{
@@ -394,7 +394,7 @@ index 5618ba26..aaca50bc 100644
struct dpipe_match match;
int err;
-@@ -5045,7 +5045,7 @@ err_match_parse:
+@@ -5074,7 +5074,7 @@ err_match_parse:
static int dpipe_entry_action_value_show(struct dpipe_ctx *ctx,
struct nlattr *nl)
{
@@ -403,7 +403,7 @@ index 5618ba26..aaca50bc 100644
struct dpipe_action action;
int err;
-@@ -5101,7 +5101,7 @@ dpipe_tables_match_values_show(struct dpipe_ctx *ctx,
+@@ -5130,7 +5130,7 @@ dpipe_tables_match_values_show(struct dpipe_ctx *ctx,
static int dpipe_entry_show(struct dpipe_ctx *ctx, struct nlattr *nl)
{
@@ -412,7 +412,7 @@ index 5618ba26..aaca50bc 100644
uint32_t entry_index;
uint64_t counter;
int err;
-@@ -5164,7 +5164,7 @@ err_entry_show:
+@@ -5193,7 +5193,7 @@ err_entry_show:
static int cmd_dpipe_table_entry_dump_cb(const struct nlmsghdr *nlh, void *data)
{
struct dpipe_ctx *ctx = data;
@@ -421,7 +421,7 @@ index 5618ba26..aaca50bc 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
-@@ -5180,7 +5180,7 @@ static int cmd_dpipe_table_entry_dump_cb(const struct nlmsghdr *nlh, void *data)
+@@ -5209,7 +5209,7 @@ static int cmd_dpipe_table_entry_dump_cb(const struct nlmsghdr *nlh, void *data)
static int cmd_dpipe_table_dump(struct dl *dl)
{
struct nlmsghdr *nlh;
@@ -430,7 +430,7 @@ index 5618ba26..aaca50bc 100644
uint16_t flags = NLM_F_REQUEST;
int err;
-@@ -5301,7 +5301,7 @@ static int
+@@ -5330,7 +5330,7 @@ static int
resource_get(struct resource_ctx *ctx, struct resource *resource,
struct resource *parent_resource, struct nlattr *nl)
{
@@ -439,7 +439,7 @@ index 5618ba26..aaca50bc 100644
struct nlattr *nla_child_resource;
struct nlattr *nla_resources;
bool top = false;
-@@ -5440,7 +5440,7 @@ static int resources_get(struct resource_ctx *ctx, struct nlattr **tb)
+@@ -5469,7 +5469,7 @@ static int resources_get(struct resource_ctx *ctx, struct nlattr **tb)
static int cmd_resource_dump_cb(const struct nlmsghdr *nlh, void *data)
{
struct resource_ctx *ctx = data;
@@ -448,7 +448,7 @@ index 5618ba26..aaca50bc 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
int err;
-@@ -5464,8 +5464,8 @@ static int cmd_resource_dump_cb(const struct nlmsghdr *nlh, void *data)
+@@ -5493,8 +5493,8 @@ static int cmd_resource_dump_cb(const struct nlmsghdr *nlh, void *data)
static int cmd_resource_show(struct dl *dl)
{
struct nlmsghdr *nlh;
@@ -459,7 +459,7 @@ index 5618ba26..aaca50bc 100644
int err;
err = dl_argv_parse(dl, DL_OPT_HANDLE, 0);
-@@ -5560,7 +5560,7 @@ err_resource_lookup:
+@@ -5589,7 +5589,7 @@ err_resource_lookup:
static int cmd_resource_set(struct dl *dl)
{
struct nlmsghdr *nlh;
@@ -468,7 +468,7 @@ index 5618ba26..aaca50bc 100644
int err;
err = resource_ctx_init(&ctx, dl);
-@@ -5678,7 +5678,7 @@ static void pr_out_region_snapshots_id(struct dl *dl, struct nlattr **tb, int in
+@@ -5707,7 +5707,7 @@ static void pr_out_region_snapshots_id(struct dl *dl, struct nlattr **tb, int in
static void pr_out_snapshots(struct dl *dl, struct nlattr **tb)
{
@@ -477,7 +477,7 @@ index 5618ba26..aaca50bc 100644
struct nlattr *nla_sanpshot;
int err, index = 0;
-@@ -5719,7 +5719,7 @@ static void pr_out_region(struct dl *dl, struct nlattr **tb)
+@@ -5748,7 +5748,7 @@ static void pr_out_region(struct dl *dl, struct nlattr **tb)
static int cmd_region_show_cb(const struct nlmsghdr *nlh, void *data)
{
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
@@ -486,7 +486,7 @@ index 5618ba26..aaca50bc 100644
struct dl *dl = data;
mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
-@@ -5775,8 +5775,8 @@ static int cmd_region_read_cb(const struct nlmsghdr *nlh, void *data)
+@@ -5804,8 +5804,8 @@ static int cmd_region_read_cb(const struct nlmsghdr *nlh, void *data)
{
struct nlattr *nla_entry, *nla_chunk_data, *nla_chunk_addr;
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
@@ -497,7 +497,7 @@ index 5618ba26..aaca50bc 100644
struct dl *dl = data;
int err;
-@@ -6027,7 +6027,7 @@ static int cmd_fmsg_nest(struct fmsg_cb_data *fmsg_data, uint8_t nest_value,
+@@ -6057,7 +6057,7 @@ static int cmd_fmsg_nest(struct fmsg_cb_data *fmsg_data, uint8_t nest_value,
static int cmd_fmsg_object_cb(const struct nlmsghdr *nlh, void *data)
{
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
@@ -506,7 +506,7 @@ index 5618ba26..aaca50bc 100644
struct fmsg_cb_data *fmsg_data = data;
struct dl *dl = fmsg_data->dl;
struct nlattr *nla_object;
-@@ -6160,7 +6160,7 @@ out:
+@@ -6194,7 +6194,7 @@ out:
static void pr_out_health(struct dl *dl, struct nlattr **tb_health)
{
@@ -515,7 +515,7 @@ index 5618ba26..aaca50bc 100644
enum devlink_health_reporter_state state;
const struct nlattr *attr;
uint64_t time_ms;
-@@ -6216,7 +6216,7 @@ static void pr_out_health(struct dl *dl, struct nlattr **tb_health)
+@@ -6250,7 +6250,7 @@ static void pr_out_health(struct dl *dl, struct nlattr **tb_health)
static int cmd_health_show_cb(const struct nlmsghdr *nlh, void *data)
{
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
@@ -556,10 +556,10 @@ index ee125df0..72db0dc6 100644
mnl_attr_parse(nlh, sizeof(*genl), get_family_id_attr_cb, tb);
diff --git a/ip/ip6tunnel.c b/ip/ip6tunnel.c
-index 27d9f4fc..68321136 100644
+index d35072d4..88340835 100644
--- a/ip/ip6tunnel.c
+++ b/ip/ip6tunnel.c
-@@ -284,7 +284,7 @@ static int parse_args(int argc, char **argv, int cmd, struct ip6_tnl_parm2 *p)
+@@ -285,7 +285,7 @@ static int parse_args(int argc, char **argv, int cmd, struct ip6_tnl_parm2 *p)
if (get_ifname(p->name, *argv))
invarg("\"name\" not a valid ifname", *argv);
if (cmd == SIOCCHGTUNNEL && count == 0) {
@@ -569,10 +569,10 @@ index 27d9f4fc..68321136 100644
if (tnl_get_ioctl(*argv, &old_p))
return -1;
diff --git a/ip/ipaddress.c b/ip/ipaddress.c
-index 733f7d9d..2dc7d834 100644
+index bc8f5ba1..4b1fba8f 100644
--- a/ip/ipaddress.c
+++ b/ip/ipaddress.c
-@@ -166,7 +166,7 @@ static void print_queuelen(FILE *f, struct rtattr *tb[IFLA_MAX + 1])
+@@ -168,7 +168,7 @@ static void print_queuelen(FILE *f, struct rtattr *tb[IFLA_MAX + 1])
if (tb[IFLA_TXQLEN])
qlen = rta_getattr_u32(tb[IFLA_TXQLEN]);
else {
@@ -581,16 +581,16 @@ index 733f7d9d..2dc7d834 100644
int s = socket(AF_INET, SOCK_STREAM, 0);
if (s < 0)
-@@ -353,7 +353,7 @@ static void print_vfinfo(FILE *fp, struct rtattr *vfinfo)
- {
+@@ -356,7 +356,7 @@ static void print_vfinfo(FILE *fp, struct ifinfomsg *ifi, struct rtattr *vfinfo)
struct ifla_vf_mac *vf_mac;
+ struct ifla_vf_broadcast *vf_broadcast;
struct ifla_vf_tx_rate *vf_tx_rate;
- struct rtattr *vf[IFLA_VF_MAX + 1] = {};
+ struct rtattr *vf[IFLA_VF_MAX + 1] = {0};
SPRINT_BUF(b1);
-@@ -2155,7 +2155,7 @@ static int ipaddr_modify(int cmd, int flags, int argc, char **argv)
+@@ -2186,7 +2186,7 @@ static int ipaddr_modify(int cmd, int flags, int argc, char **argv)
char *lcl_arg = NULL;
char *valid_lftp = NULL;
char *preferred_lftp = NULL;
@@ -599,7 +599,7 @@ index 733f7d9d..2dc7d834 100644
inet_prefix peer;
int local_len = 0;
int peer_len = 0;
-@@ -2340,7 +2340,7 @@ static int ipaddr_modify(int cmd, int flags, int argc, char **argv)
+@@ -2371,7 +2371,7 @@ static int ipaddr_modify(int cmd, int flags, int argc, char **argv)
return nodev(d);
if (valid_lftp || preferred_lftp) {
@@ -609,10 +609,10 @@ index 733f7d9d..2dc7d834 100644
if (!valid_lft) {
fprintf(stderr, "valid_lft is zero\n");
diff --git a/ip/ipaddrlabel.c b/ip/ipaddrlabel.c
-index f06ed1e7..53766036 100644
+index beb08da3..c8a14940 100644
--- a/ip/ipaddrlabel.c
+++ b/ip/ipaddrlabel.c
-@@ -147,7 +147,7 @@ static int ipaddrlabel_modify(int cmd, int argc, char **argv)
+@@ -148,7 +148,7 @@ static int ipaddrlabel_modify(int cmd, int argc, char **argv)
.ifal.ifal_family = preferred_family,
};
@@ -635,10 +635,10 @@ index f090390f..edbe0f2f 100644
if (attrs[L2TP_ATTR_PW_TYPE])
p->pw_type = rta_getattr_u16(attrs[L2TP_ATTR_PW_TYPE]);
diff --git a/ip/iplink.c b/ip/iplink.c
-index d275efa9..0e8f4b24 100644
+index 212a0885..43f86189 100644
--- a/ip/iplink.c
+++ b/ip/iplink.c
-@@ -1229,7 +1229,7 @@ static int set_mtu(const char *dev, int mtu)
+@@ -1230,7 +1230,7 @@ static int set_mtu(const char *dev, int mtu)
static int get_address(const char *dev, int *htype)
{
@@ -648,7 +648,7 @@ index d275efa9..0e8f4b24 100644
.sll_family = AF_PACKET,
.sll_protocol = htons(ETH_P_LOOP),
diff --git a/ip/iplink_can.c b/ip/iplink_can.c
-index 5bf490a9..009be0e5 100644
+index 735ab941..82060bf4 100644
--- a/ip/iplink_can.c
+++ b/ip/iplink_can.c
@@ -112,7 +112,7 @@ static void print_ctrlmode(FILE *f, __u32 cm)
@@ -674,10 +674,10 @@ index ad6ad7d6..1512823a 100644
fprintf(stderr, "incomplete dump message\n");
return -1;
diff --git a/ip/ipmaddr.c b/ip/ipmaddr.c
-index 6327100e..c92a4753 100644
+index 02e923bf..44699b9e 100644
--- a/ip/ipmaddr.c
+++ b/ip/ipmaddr.c
-@@ -288,7 +288,7 @@ static int multiaddr_list(int argc, char **argv)
+@@ -289,7 +289,7 @@ static int multiaddr_list(int argc, char **argv)
static int multiaddr_modify(int cmd, int argc, char **argv)
{
@@ -687,7 +687,7 @@ index 6327100e..c92a4753 100644
int fd;
diff --git a/ip/ipntable.c b/ip/ipntable.c
-index 50fc949f..fbf76f52 100644
+index ddee4905..a56c71e5 100644
--- a/ip/ipntable.c
+++ b/ip/ipntable.c
@@ -76,7 +76,7 @@ static int ipntable_modify(int cmd, int flags, int argc, char **argv)
@@ -709,10 +709,10 @@ index 50fc949f..fbf76f52 100644
struct tm *tp;
diff --git a/ip/iptunnel.c b/ip/iptunnel.c
-index d597908f..281def0a 100644
+index 92a5cb92..3efae379 100644
--- a/ip/iptunnel.c
+++ b/ip/iptunnel.c
-@@ -175,7 +175,7 @@ static int parse_args(int argc, char **argv, int cmd, struct ip_tunnel_parm *p)
+@@ -176,7 +176,7 @@ static int parse_args(int argc, char **argv, int cmd, struct ip_tunnel_parm *p)
if (get_ifname(p->name, *argv))
invarg("\"name\" not a valid ifname", *argv);
if (cmd == SIOCCHGTUNNEL && count == 0) {
@@ -721,7 +721,7 @@ index d597908f..281def0a 100644
if (tnl_get_ioctl(*argv, &old_p))
return -1;
-@@ -287,7 +287,7 @@ static int do_del(int argc, char **argv)
+@@ -288,7 +288,7 @@ static int do_del(int argc, char **argv)
static void print_tunnel(const void *t)
{
const struct ip_tunnel_parm *p = t;
@@ -730,7 +730,7 @@ index d597908f..281def0a 100644
char s1[1024];
char s2[1024];
-@@ -301,7 +301,7 @@ static void print_tunnel(const void *t)
+@@ -302,7 +302,7 @@ static void print_tunnel(const void *t)
p->iph.saddr ? rt_addr_n2a_r(AF_INET, 4, &p->iph.saddr, s2, sizeof(s2)) : "any");
if (p->iph.protocol == IPPROTO_IPV6 && (p->i_flags & SIT_ISATAP)) {
@@ -739,7 +739,7 @@ index d597908f..281def0a 100644
int i;
prl[0].datalen = sizeof(prl) - sizeof(prl[0]);
-@@ -423,7 +423,7 @@ static int do_show(int argc, char **argv)
+@@ -424,7 +424,7 @@ static int do_show(int argc, char **argv)
static int do_prl(int argc, char **argv)
{
@@ -748,7 +748,7 @@ index d597908f..281def0a 100644
int count = 0;
int cmd = 0;
const char *medium = NULL;
-@@ -472,7 +472,7 @@ static int do_prl(int argc, char **argv)
+@@ -473,7 +473,7 @@ static int do_prl(int argc, char **argv)
static int do_6rd(int argc, char **argv)
{
@@ -758,10 +758,10 @@ index d597908f..281def0a 100644
const char *medium = NULL;
inet_prefix prefix;
diff --git a/ip/iptuntap.c b/ip/iptuntap.c
-index dad82f56..0b3adde1 100644
+index 91d3512b..f1bf0b18 100644
--- a/ip/iptuntap.c
+++ b/ip/iptuntap.c
-@@ -289,7 +289,7 @@ static char *pid_name(pid_t pid)
+@@ -290,7 +290,7 @@ static char *pid_name(pid_t pid)
static void show_processes(const char *name)
{
@@ -824,10 +824,10 @@ index 55d38d65..a2427bbf 100644
while (1) {
diff --git a/ip/tcp_metrics.c b/ip/tcp_metrics.c
-index 72ef3ab5..eabe0738 100644
+index acbd745a..051ddc63 100644
--- a/ip/tcp_metrics.c
+++ b/ip/tcp_metrics.c
-@@ -177,7 +177,7 @@ static int process_msg(struct nlmsghdr *n, void *arg)
+@@ -178,7 +178,7 @@ static int process_msg(struct nlmsghdr *n, void *arg)
if (ghdr->cmd != TCP_METRICS_CMD_GET)
return 0;
@@ -837,10 +837,10 @@ index 72ef3ab5..eabe0738 100644
if (attrs[TCP_METRICS_ATTR_ADDR_IPV4]) {
diff --git a/ip/xfrm_policy.c b/ip/xfrm_policy.c
-index 98984350..e9bdcb20 100644
+index 7c0233c1..9fa11464 100644
--- a/ip/xfrm_policy.c
+++ b/ip/xfrm_policy.c
-@@ -262,14 +262,14 @@ static int xfrm_policy_modify(int cmd, unsigned int flags, int argc, char **argv
+@@ -271,14 +271,14 @@ static int xfrm_policy_modify(int cmd, unsigned int flags, int argc, char **argv
char *selp = NULL;
char *ptypep = NULL;
char *sctxp = NULL;
@@ -858,7 +858,7 @@ index 98984350..e9bdcb20 100644
bool is_if_id_set = false;
__u32 if_id = 0;
-@@ -582,12 +582,12 @@ static int xfrm_policy_get_or_delete(int argc, char **argv, int delete,
+@@ -591,12 +591,12 @@ static int xfrm_policy_get_or_delete(int argc, char **argv, int delete,
char *indexp = NULL;
char *ptypep = NULL;
char *sctxp = NULL;
@@ -873,7 +873,7 @@ index 98984350..e9bdcb20 100644
while (argc > 0) {
if (strcmp(*argv, "dir") == 0) {
-@@ -1127,7 +1127,7 @@ static int xfrm_policy_flush(int argc, char **argv)
+@@ -1136,7 +1136,7 @@ static int xfrm_policy_flush(int argc, char **argv)
.n.nlmsg_type = XFRM_MSG_FLUSHPOLICY,
};
char *ptypep = NULL;
@@ -883,10 +883,10 @@ index 98984350..e9bdcb20 100644
while (argc > 0) {
if (strcmp(*argv, "ptype") == 0) {
diff --git a/ip/xfrm_state.c b/ip/xfrm_state.c
-index f2727070..c1002418 100644
+index b03ccc58..1e1c58f5 100644
--- a/ip/xfrm_state.c
+++ b/ip/xfrm_state.c
-@@ -305,9 +305,9 @@ static int xfrm_state_modify(int cmd, unsigned int flags, int argc, char **argv)
+@@ -323,9 +323,9 @@ static int xfrm_state_modify(int cmd, unsigned int flags, int argc, char **argv)
.xsinfo.lft.soft_packet_limit = XFRM_INF,
.xsinfo.lft.hard_packet_limit = XFRM_INF,
};
@@ -899,7 +899,7 @@ index f2727070..c1002418 100644
unsigned int ifindex = 0;
__u8 dir = 0;
bool is_offload = false;
-@@ -325,7 +325,7 @@ static int xfrm_state_modify(int cmd, unsigned int flags, int argc, char **argv)
+@@ -343,7 +343,7 @@ static int xfrm_state_modify(int cmd, unsigned int flags, int argc, char **argv)
struct {
struct xfrm_user_sec_ctx sctx;
char str[CTX_BUF_SIZE];
@@ -908,7 +908,7 @@ index f2727070..c1002418 100644
__u32 output_mark = 0;
bool is_if_id_set = false;
__u32 if_id = 0;
-@@ -394,7 +394,7 @@ static int xfrm_state_modify(int cmd, unsigned int flags, int argc, char **argv)
+@@ -412,7 +412,7 @@ static int xfrm_state_modify(int cmd, unsigned int flags, int argc, char **argv)
(void *)&encap, sizeof(encap));
} else if (strcmp(*argv, "coa") == 0) {
inet_prefix coa;
@@ -917,7 +917,7 @@ index f2727070..c1002418 100644
if (coap)
duparg("coa", *argv);
-@@ -472,7 +472,7 @@ static int xfrm_state_modify(int cmd, unsigned int flags, int argc, char **argv)
+@@ -490,7 +490,7 @@ static int xfrm_state_modify(int cmd, unsigned int flags, int argc, char **argv)
struct xfrm_algo_auth auth;
} u;
char buf[XFRM_ALGO_KEY_BUF_SIZE];
@@ -927,7 +927,7 @@ index f2727070..c1002418 100644
__u32 icvlen, trunclen;
char *name;
diff --git a/lib/bpf.c b/lib/bpf.c
-index 7d2a322f..a18e2ae9 100644
+index 23cb0d96..7b9b7523 100644
--- a/lib/bpf.c
+++ b/lib/bpf.c
@@ -148,7 +148,7 @@ static int bpf(int cmd, union bpf_attr *attr, unsigned int size)
@@ -1074,7 +1074,7 @@ index 7d2a322f..a18e2ae9 100644
attr.pathname = bpf_ptr_to_u64(pathname);
attr.bpf_fd = fd;
-@@ -1965,7 +1965,7 @@ static int bpf_map_verify_all_offs(struct bpf_elf_ctx *ctx, int end)
+@@ -1971,7 +1971,7 @@ static int bpf_map_verify_all_offs(struct bpf_elf_ctx *ctx, int end)
static int bpf_fetch_maps_end(struct bpf_elf_ctx *ctx)
{
@@ -1083,7 +1083,7 @@ index 7d2a322f..a18e2ae9 100644
int i, sym_num = bpf_map_num_sym(ctx);
__u8 *buff;
-@@ -2471,7 +2471,7 @@ static int bpf_fetch_prog_relo(struct bpf_elf_ctx *ctx, const char *section,
+@@ -2477,7 +2477,7 @@ static int bpf_fetch_prog_relo(struct bpf_elf_ctx *ctx, const char *section,
int ret, idx, i, fd = -1;
for (i = 1; i < ctx->elf_hdr.e_shnum; i++) {
@@ -1092,7 +1092,7 @@ index 7d2a322f..a18e2ae9 100644
ret = bpf_fill_section_data(ctx, i, &data_relo);
if (ret < 0 || data_relo.sec_hdr.sh_type != SHT_REL)
-@@ -2646,7 +2646,7 @@ static int bpf_fill_prog_arrays(struct bpf_elf_ctx *ctx)
+@@ -2652,7 +2652,7 @@ static int bpf_fill_prog_arrays(struct bpf_elf_ctx *ctx)
ret = bpf_map_update(ctx->map_fds[idx], &key_id,
&fd, BPF_ANY);
if (ret < 0) {
@@ -1101,7 +1101,7 @@ index 7d2a322f..a18e2ae9 100644
ret = -errno;
if (errno == E2BIG) {
-@@ -2737,7 +2737,7 @@ static bool bpf_pinning_reserved(uint32_t pinning)
+@@ -2743,7 +2743,7 @@ static bool bpf_pinning_reserved(uint32_t pinning)
static void bpf_hash_init(struct bpf_elf_ctx *ctx, const char *db_file)
{
struct bpf_hash_entry *entry;
@@ -1110,7 +1110,7 @@ index 7d2a322f..a18e2ae9 100644
uint32_t pinning;
FILE *fp;
int ret;
-@@ -2835,7 +2835,7 @@ static void bpf_get_cfg(struct bpf_elf_ctx *ctx)
+@@ -2841,7 +2841,7 @@ static void bpf_get_cfg(struct bpf_elf_ctx *ctx)
fd = open(path_jit, O_RDONLY);
if (fd > 0) {
@@ -1120,10 +1120,10 @@ index 7d2a322f..a18e2ae9 100644
if (read(fd, tmp, sizeof(tmp)) > 0)
ctx->cfg.jit_enabled = atoi(tmp);
diff --git a/lib/libnetlink.c b/lib/libnetlink.c
-index 5a13898c..8d4031e9 100644
+index 8fbdfeee..cb347d7d 100644
--- a/lib/libnetlink.c
+++ b/lib/libnetlink.c
-@@ -80,7 +80,7 @@ static void print_ext_ack_msg(bool is_err, const char *msg)
+@@ -81,7 +81,7 @@ static void print_ext_ack_msg(bool is_err, const char *msg)
/* dump netlink extended ack error message */
int nl_dump_ext_ack(const struct nlmsghdr *nlh, nl_ext_ack_fn_t errfn)
{
@@ -1132,7 +1132,7 @@ index 5a13898c..8d4031e9 100644
const struct nlmsgerr *err = mnl_nlmsg_get_payload(nlh);
const struct nlmsghdr *err_nlh = NULL;
unsigned int hlen = sizeof(*err);
-@@ -127,7 +127,7 @@ int nl_dump_ext_ack(const struct nlmsghdr *nlh, nl_ext_ack_fn_t errfn)
+@@ -128,7 +128,7 @@ int nl_dump_ext_ack(const struct nlmsghdr *nlh, nl_ext_ack_fn_t errfn)
int nl_dump_ext_ack_done(const struct nlmsghdr *nlh, int error)
{
@@ -1177,7 +1177,7 @@ index 504961cb..ac412e29 100644
for (i = 0; i < ifnum; i++) {
if (get_ifname(ifr.ifr_name, ifnames[i]))
diff --git a/misc/ss.c b/misc/ss.c
-index 3d9d1d8f..7ba483f3 100644
+index 363b4c8d..3a3a61ec 100644
--- a/misc/ss.c
+++ b/misc/ss.c
@@ -2609,7 +2609,7 @@ static void sctp_timer_print(struct tcpstat *s)
@@ -1282,7 +1282,7 @@ index 3d9d1d8f..7ba483f3 100644
if (f->f) {
st.rport = -1;
-@@ -4536,8 +4536,8 @@ static void tipc_sock_addr_print(struct rtattr *net_addr, struct rtattr *id)
+@@ -4533,8 +4533,8 @@ static void tipc_sock_addr_print(struct rtattr *net_addr, struct rtattr *id)
uint32_t node = rta_getattr_u32(net_addr);
uint32_t identity = rta_getattr_u32(id);
@@ -1293,7 +1293,7 @@ index 3d9d1d8f..7ba483f3 100644
sprintf(addr, "%u", node);
sprintf(port, "%u", identity);
-@@ -4547,12 +4547,12 @@ static void tipc_sock_addr_print(struct rtattr *net_addr, struct rtattr *id)
+@@ -4544,12 +4544,12 @@ static void tipc_sock_addr_print(struct rtattr *net_addr, struct rtattr *id)
static int tipc_show_sock(struct nlmsghdr *nlh, void *arg)
{
@@ -1312,10 +1312,10 @@ index 3d9d1d8f..7ba483f3 100644
parse_rtattr(info, TIPC_NLA_MAX, NLMSG_DATA(nlh),
NLMSG_PAYLOAD(nlh, 0));
diff --git a/rdma/dev.c b/rdma/dev.c
-index 90483622..8233620d 100644
+index c597cba5..d0ddf69d 100644
--- a/rdma/dev.c
+++ b/rdma/dev.c
-@@ -195,7 +195,7 @@ static void dev_print_node_type(struct rd *rd, struct nlattr **tb)
+@@ -213,7 +213,7 @@ static void dev_print_node_type(struct rd *rd, struct nlattr **tb)
static int dev_parse_cb(const struct nlmsghdr *nlh, void *data)
{
@@ -1338,10 +1338,10 @@ index 10b2e513..caec479a 100644
uint32_t port, idx;
char name[32];
diff --git a/rdma/rdma.c b/rdma/rdma.c
-index 676e03c2..9859ecd8 100644
+index 4e34da92..4f15b1c6 100644
--- a/rdma/rdma.c
+++ b/rdma/rdma.c
-@@ -130,7 +130,7 @@ int main(int argc, char **argv)
+@@ -132,7 +132,7 @@ int main(int argc, char **argv)
bool show_details = false;
bool json_output = false;
bool force = false;
@@ -1382,10 +1382,10 @@ index 0b830088..1978e2c9 100644
ret = mnl_attr_parse_nested(nla_entry, rd_attr_cb, nla_line);
if (ret != MNL_CB_OK)
diff --git a/rdma/res-cq.c b/rdma/res-cq.c
-index 5afb97c5..c98dcbd4 100644
+index d2591fbe..717c39a7 100644
--- a/rdma/res-cq.c
+++ b/rdma/res-cq.c
-@@ -111,7 +111,7 @@ out: if (nla_line[RDMA_NLDEV_ATTR_RES_PID])
+@@ -126,7 +126,7 @@ out: if (nla_line[RDMA_NLDEV_ATTR_RES_PID])
int res_cq_idx_parse_cb(const struct nlmsghdr *nlh, void *data)
{
@@ -1394,7 +1394,7 @@ index 5afb97c5..c98dcbd4 100644
struct rd *rd = data;
const char *name;
uint32_t idx;
-@@ -128,7 +128,7 @@ int res_cq_idx_parse_cb(const struct nlmsghdr *nlh, void *data)
+@@ -143,7 +143,7 @@ int res_cq_idx_parse_cb(const struct nlmsghdr *nlh, void *data)
int res_cq_parse_cb(const struct nlmsghdr *nlh, void *data)
{
@@ -1403,7 +1403,7 @@ index 5afb97c5..c98dcbd4 100644
struct nlattr *nla_table, *nla_entry;
struct rd *rd = data;
int ret = MNL_CB_OK;
-@@ -145,7 +145,7 @@ int res_cq_parse_cb(const struct nlmsghdr *nlh, void *data)
+@@ -160,7 +160,7 @@ int res_cq_parse_cb(const struct nlmsghdr *nlh, void *data)
nla_table = tb[RDMA_NLDEV_ATTR_RES_CQ];
mnl_attr_for_each_nested(nla_entry, nla_table) {
@@ -1506,7 +1506,7 @@ index 954e465d..d687710c 100644
ret = mnl_attr_parse_nested(nla_entry, rd_attr_cb, nla_line);
if (ret != MNL_CB_OK)
diff --git a/rdma/res.c b/rdma/res.c
-index ef863f14..e0b70eb3 100644
+index c5e8ba1d..6388f3e4 100644
--- a/rdma/res.c
+++ b/rdma/res.c
@@ -34,7 +34,7 @@ static int res_print_summary(struct rd *rd, struct nlattr **tb)
@@ -1528,10 +1528,10 @@ index ef863f14..e0b70eb3 100644
const char *name;
uint32_t idx;
diff --git a/rdma/utils.c b/rdma/utils.c
-index 11ed8a73..9571fa7f 100644
+index 37659011..152096c9 100644
--- a/rdma/utils.c
+++ b/rdma/utils.c
-@@ -473,7 +473,7 @@ int rd_attr_cb(const struct nlattr *attr, void *data)
+@@ -488,7 +488,7 @@ int rd_attr_cb(const struct nlattr *attr, void *data)
int rd_dev_init_cb(const struct nlmsghdr *nlh, void *data)
{
@@ -1541,10 +1541,10 @@ index 11ed8a73..9571fa7f 100644
struct rd *rd = data;
const char *dev_name;
diff --git a/tc/e_bpf.c b/tc/e_bpf.c
-index 84f43e6c..65db703c 100644
+index a48393b7..6fbcd339 100644
--- a/tc/e_bpf.c
+++ b/tc/e_bpf.c
-@@ -56,8 +56,8 @@ static int parse_bpf(struct exec_util *eu, int argc, char **argv)
+@@ -58,8 +58,8 @@ static int parse_bpf(struct exec_util *eu, int argc, char **argv)
char **argv_run = argv_default, **envp_run, *tmp;
int ret, i, env_old, env_num, env_map;
const char *bpf_uds_name = NULL;
@@ -1621,10 +1621,10 @@ index bc284af4..efebb2dc 100644
#define PARSE_ERR(CARG, FMT, ARGS...) \
em_parse_error(EINVAL, args, CARG, &u32_ematch_util, FMT, ##ARGS)
diff --git a/tc/f_bpf.c b/tc/f_bpf.c
-index 948d9051..1875f215 100644
+index 135271aa..a9523d0f 100644
--- a/tc/f_bpf.c
+++ b/tc/f_bpf.c
-@@ -80,7 +80,7 @@ static int bpf_parse_opt(struct filter_util *qu, char *handle,
+@@ -82,7 +82,7 @@ static int bpf_parse_opt(struct filter_util *qu, char *handle,
struct tcmsg *t = NLMSG_DATA(n);
unsigned int bpf_gen_flags = 0;
unsigned int bpf_flags = 0;
@@ -1634,10 +1634,10 @@ index 948d9051..1875f215 100644
bool skip_sw = false;
struct rtattr *tail;
diff --git a/tc/f_fw.c b/tc/f_fw.c
-index adce2bdb..30b51f8f 100644
+index 688364f5..55fcc3cc 100644
--- a/tc/f_fw.c
+++ b/tc/f_fw.c
-@@ -98,7 +98,7 @@ static int fw_parse_opt(struct filter_util *qu, char *handle, int argc, char **a
+@@ -93,7 +93,7 @@ static int fw_parse_opt(struct filter_util *qu, char *handle, int argc, char **a
}
continue;
} else if (strcmp(*argv, "indev") == 0) {
@@ -1647,10 +1647,10 @@ index adce2bdb..30b51f8f 100644
argc--;
argv++;
diff --git a/tc/f_rsvp.c b/tc/f_rsvp.c
-index bddd4740..75a2b3b4 100644
+index 388e9ee5..e6eb0147 100644
--- a/tc/f_rsvp.c
+++ b/tc/f_rsvp.c
-@@ -173,7 +173,7 @@ static int rsvp_parse_opt(struct filter_util *qu, char *handle, int argc,
+@@ -174,7 +174,7 @@ static int rsvp_parse_opt(struct filter_util *qu, char *handle, int argc,
char **argv, struct nlmsghdr *n)
{
int family = strcmp(qu->id, "rsvp") == 0 ? AF_INET : AF_INET6;
@@ -1691,10 +1691,10 @@ index e0a322d5..483c4685 100644
argc--;
argv++;
diff --git a/tc/m_bpf.c b/tc/m_bpf.c
-index 3e8468c6..90cebed1 100644
+index e8d704b5..7ecd86ef 100644
--- a/tc/m_bpf.c
+++ b/tc/m_bpf.c
-@@ -75,8 +75,8 @@ static int bpf_parse_opt(struct action_util *a, int *ptr_argc, char ***ptr_argv,
+@@ -77,8 +77,8 @@ static int bpf_parse_opt(struct action_util *a, int *ptr_argc, char ***ptr_argv,
int tca_id, struct nlmsghdr *n)
{
const char *bpf_obj = NULL, *bpf_uds_name = NULL;
@@ -1706,10 +1706,10 @@ index 3e8468c6..90cebed1 100644
struct rtattr *tail;
int argc, ret = 0;
diff --git a/tc/m_connmark.c b/tc/m_connmark.c
-index 13543d33..d3165f7a 100644
+index eac23489..dc353a44 100644
--- a/tc/m_connmark.c
+++ b/tc/m_connmark.c
-@@ -45,7 +45,7 @@ static int
+@@ -46,7 +46,7 @@ static int
parse_connmark(struct action_util *a, int *argc_p, char ***argv_p, int tca_id,
struct nlmsghdr *n)
{
@@ -1719,7 +1719,7 @@ index 13543d33..d3165f7a 100644
int argc = *argc_p;
int ok = 0;
diff --git a/tc/m_csum.c b/tc/m_csum.c
-index 84396d6a..c6547396 100644
+index 3e3dc251..c19d27f4 100644
--- a/tc/m_csum.c
+++ b/tc/m_csum.c
@@ -88,7 +88,7 @@ static int
@@ -1732,7 +1732,7 @@ index 84396d6a..c6547396 100644
int argc = *argc_p;
char **argv = *argv_p;
diff --git a/tc/m_mirred.c b/tc/m_mirred.c
-index 23ba638a..a622432f 100644
+index 13209523..c178d43b 100644
--- a/tc/m_mirred.c
+++ b/tc/m_mirred.c
@@ -96,9 +96,9 @@ parse_direction(struct action_util *a, int *argc_p, char ***argv_p,
@@ -1748,7 +1748,7 @@ index 23ba638a..a622432f 100644
while (argc > 0) {
diff --git a/tc/m_nat.c b/tc/m_nat.c
-index ee0b7520..06bb926c 100644
+index c4b02a83..59af9894 100644
--- a/tc/m_nat.c
+++ b/tc/m_nat.c
@@ -83,7 +83,7 @@ bad_val:
@@ -1761,7 +1761,7 @@ index ee0b7520..06bb926c 100644
int argc = *argc_p;
char **argv = *argv_p;
diff --git a/tc/m_pedit.c b/tc/m_pedit.c
-index 6f8d078b..60b50051 100644
+index 1cd2d162..1b714cea 100644
--- a/tc/m_pedit.c
+++ b/tc/m_pedit.c
@@ -511,7 +511,7 @@ done:
@@ -1783,10 +1783,10 @@ index 6f8d078b..60b50051 100644
int argc = *argc_p;
char **argv = *argv_p;
diff --git a/tc/m_simple.c b/tc/m_simple.c
-index e3c8a60f..4a93e1c1 100644
+index 49e25047..2e645b08 100644
--- a/tc/m_simple.c
+++ b/tc/m_simple.c
-@@ -96,7 +96,7 @@ static int
+@@ -97,7 +97,7 @@ static int
parse_simple(struct action_util *a, int *argc_p, char ***argv_p, int tca_id,
struct nlmsghdr *n)
{
@@ -1796,7 +1796,7 @@ index e3c8a60f..4a93e1c1 100644
char **argv = *argv_p;
int ok = 0;
diff --git a/tc/m_tunnel_key.c b/tc/m_tunnel_key.c
-index 9449287e..6215f996 100644
+index 4e65e444..7cbfdfe9 100644
--- a/tc/m_tunnel_key.c
+++ b/tc/m_tunnel_key.c
@@ -209,7 +209,7 @@ static int tunnel_key_parse_tos_ttl(char *str, int type, struct nlmsghdr *n)
@@ -1809,7 +1809,7 @@ index 9449287e..6215f996 100644
int argc = *argc_p;
struct rtattr *tail;
diff --git a/tc/m_vlan.c b/tc/m_vlan.c
-index 412f6aa1..e7cb9f98 100644
+index 9c8071e9..cdfe0d3d 100644
--- a/tc/m_vlan.c
+++ b/tc/m_vlan.c
@@ -69,7 +69,7 @@ static int parse_vlan(struct action_util *a, int *argc_p, char ***argv_p,
@@ -1822,7 +1822,7 @@ index 412f6aa1..e7cb9f98 100644
if (matches(*argv, "vlan") != 0)
return -1;
diff --git a/tc/m_xt.c b/tc/m_xt.c
-index 29574bd4..ca99397b 100644
+index bf0db2be..59255d5b 100644
--- a/tc/m_xt.c
+++ b/tc/m_xt.c
@@ -147,7 +147,7 @@ static int parse_ipt(struct action_util *a, int *argc_p,
@@ -1835,10 +1835,10 @@ index 29574bd4..ca99397b 100644
struct rtattr *tail;
diff --git a/tc/q_atm.c b/tc/q_atm.c
-index f8215f06..b8f1b492 100644
+index 77b56825..c0acf492 100644
--- a/tc/q_atm.c
+++ b/tc/q_atm.c
-@@ -48,7 +48,7 @@ static void explain(void)
+@@ -49,7 +49,7 @@ static void explain(void)
static int atm_parse_class_opt(struct qdisc_util *qu, int argc, char **argv,
struct nlmsghdr *n, const char *dev)
{
@@ -1848,10 +1848,10 @@ index f8215f06..b8f1b492 100644
struct atm_sap sap;
unsigned char hdr[MAX_HDR_LEN];
diff --git a/tc/q_cbq.c b/tc/q_cbq.c
-index e7f1a3bf..a8082cbf 100644
+index 6518ef46..9bee7c1b 100644
--- a/tc/q_cbq.c
+++ b/tc/q_cbq.c
-@@ -48,8 +48,8 @@ static void explain1(char *arg)
+@@ -50,8 +50,8 @@ static void explain1(char *arg)
static int cbq_parse_opt(struct qdisc_util *qu, int argc, char **argv, struct nlmsghdr *n, const char *dev)
{
@@ -1862,7 +1862,7 @@ index e7f1a3bf..a8082cbf 100644
__u32 rtab[256];
unsigned mpu = 0, avpkt = 0, allot = 0;
unsigned short overhead = 0;
-@@ -183,10 +183,10 @@ static int cbq_parse_opt(struct qdisc_util *qu, int argc, char **argv, struct nl
+@@ -185,10 +185,10 @@ static int cbq_parse_opt(struct qdisc_util *qu, int argc, char **argv, struct nl
static int cbq_parse_class_opt(struct qdisc_util *qu, int argc, char **argv, struct nlmsghdr *n, const char *dev)
{
int wrr_ok = 0, fopt_ok = 0;
@@ -1878,7 +1878,7 @@ index e7f1a3bf..a8082cbf 100644
unsigned mpu = 0;
int cell_log = -1;
diff --git a/tc/q_cbs.c b/tc/q_cbs.c
-index a2ffb1db..c931bd1d 100644
+index 9515a1f7..1df37bbc 100644
--- a/tc/q_cbs.c
+++ b/tc/q_cbs.c
@@ -37,7 +37,7 @@ static void explain1(const char *arg, const char *val)
@@ -1891,10 +1891,10 @@ index a2ffb1db..c931bd1d 100644
while (argc > 0) {
diff --git a/tc/q_choke.c b/tc/q_choke.c
-index 1353c80c..ce70a010 100644
+index 648d9ad7..473c64b0 100644
--- a/tc/q_choke.c
+++ b/tc/q_choke.c
-@@ -33,7 +33,7 @@ static void explain(void)
+@@ -34,7 +34,7 @@ static void explain(void)
static int choke_parse_opt(struct qdisc_util *qu, int argc, char **argv,
struct nlmsghdr *n, const char *dev)
{
@@ -1904,10 +1904,10 @@ index 1353c80c..ce70a010 100644
unsigned int avpkt = 1000;
double probability = 0.02;
diff --git a/tc/q_codel.c b/tc/q_codel.c
-index 8a2a8716..02269ab5 100644
+index 849cc040..a0ede8a6 100644
--- a/tc/q_codel.c
+++ b/tc/q_codel.c
-@@ -173,7 +173,7 @@ static int codel_print_opt(struct qdisc_util *qu, FILE *f, struct rtattr *opt)
+@@ -174,7 +174,7 @@ static int codel_print_opt(struct qdisc_util *qu, FILE *f, struct rtattr *opt)
static int codel_print_xstats(struct qdisc_util *qu, FILE *f,
struct rtattr *xstats)
{
@@ -1930,10 +1930,10 @@ index 61493fbb..b4fa76ae 100644
while (argc > 0) {
if (strcmp(*argv, "limit") == 0) {
diff --git a/tc/q_fq_codel.c b/tc/q_fq_codel.c
-index 02ad2214..800cb86c 100644
+index 376ac50d..5f77d24b 100644
--- a/tc/q_fq_codel.c
+++ b/tc/q_fq_codel.c
-@@ -226,7 +226,7 @@ static int fq_codel_print_opt(struct qdisc_util *qu, FILE *f, struct rtattr *opt
+@@ -227,7 +227,7 @@ static int fq_codel_print_opt(struct qdisc_util *qu, FILE *f, struct rtattr *opt
static int fq_codel_print_xstats(struct qdisc_util *qu, FILE *f,
struct rtattr *xstats)
{
@@ -1943,10 +1943,10 @@ index 02ad2214..800cb86c 100644
SPRINT_BUF(b1);
diff --git a/tc/q_gred.c b/tc/q_gred.c
-index e297b866..17263eb7 100644
+index 8a1cecff..7a39281f 100644
--- a/tc/q_gred.c
+++ b/tc/q_gred.c
-@@ -303,8 +303,8 @@ gred_parse_vqs(struct tc_gred_info *info, struct rtattr *vqs)
+@@ -304,8 +304,8 @@ gred_parse_vqs(struct tc_gred_info *info, struct rtattr *vqs)
unsigned int offset = 0;
while (rem > offset) {
@@ -1957,7 +1957,7 @@ index e297b866..17263eb7 100644
struct rtattr *entry;
unsigned int len;
unsigned int dp;
-@@ -421,7 +421,7 @@ gred_print_stats(struct tc_gred_info *info, struct tc_gred_qopt *qopt)
+@@ -422,7 +422,7 @@ gred_print_stats(struct tc_gred_info *info, struct tc_gred_qopt *qopt)
static int gred_print_opt(struct qdisc_util *qu, FILE *f, struct rtattr *opt)
{
@@ -2015,10 +2015,10 @@ index 8ad9e0b2..7319b1bf 100644
if (argc) {
if (strcmp(*argv, "help") == 0) {
diff --git a/tc/q_netem.c b/tc/q_netem.c
-index d1cd17f8..e70d1a14 100644
+index d01450fc..42677a29 100644
--- a/tc/q_netem.c
+++ b/tc/q_netem.c
-@@ -164,17 +164,17 @@ static int netem_parse_opt(struct qdisc_util *qu, int argc, char **argv,
+@@ -200,17 +200,17 @@ static int netem_parse_opt(struct qdisc_util *qu, int argc, char **argv,
int slot_dist_size = 0;
struct rtattr *tail;
struct tc_netem_qopt opt = { .limit = 1000 };
@@ -2043,10 +2043,10 @@ index d1cd17f8..e70d1a14 100644
for ( ; argc > 0; --argc, ++argv) {
diff --git a/tc/q_red.c b/tc/q_red.c
-index 3b3a1204..4254f2ff 100644
+index 6256420f..13e68714 100644
--- a/tc/q_red.c
+++ b/tc/q_red.c
-@@ -35,7 +35,7 @@ static void explain(void)
+@@ -36,7 +36,7 @@ static void explain(void)
static int red_parse_opt(struct qdisc_util *qu, int argc, char **argv,
struct nlmsghdr *n, const char *dev)
{
@@ -2056,10 +2056,10 @@ index 3b3a1204..4254f2ff 100644
unsigned int avpkt = 0;
double probability = 0.02;
diff --git a/tc/q_sfq.c b/tc/q_sfq.c
-index eee31ec5..58681cb5 100644
+index 4998921d..d56c3e01 100644
--- a/tc/q_sfq.c
+++ b/tc/q_sfq.c
-@@ -37,7 +37,7 @@ static void explain(void)
+@@ -38,7 +38,7 @@ static void explain(void)
static int sfq_parse_opt(struct qdisc_util *qu, int argc, char **argv, struct nlmsghdr *n, const char *dev)
{
int ok = 0, red = 0;
@@ -2082,10 +2082,10 @@ index 2e65a589..09099077 100644
while (argc > 0) {
if (strcmp(*argv, "limit") == 0) {
diff --git a/tc/q_tbf.c b/tc/q_tbf.c
-index b9465b20..12c47506 100644
+index 57a9736c..b0cdcaad 100644
--- a/tc/q_tbf.c
+++ b/tc/q_tbf.c
-@@ -39,7 +39,7 @@ static int tbf_parse_opt(struct qdisc_util *qu, int argc, char **argv,
+@@ -40,7 +40,7 @@ static int tbf_parse_opt(struct qdisc_util *qu, int argc, char **argv,
struct nlmsghdr *n, const char *dev)
{
int ok = 0;
@@ -2095,7 +2095,7 @@ index b9465b20..12c47506 100644
__u32 ptab[256];
unsigned buffer = 0, mtu = 0, mpu = 0, latency = 0;
diff --git a/tc/tc_class.c b/tc/tc_class.c
-index 7ac700d7..0ad832d4 100644
+index c7e3cfdf..2ef4765b 100644
--- a/tc/tc_class.c
+++ b/tc/tc_class.c
@@ -36,8 +36,8 @@ struct graph_node {
@@ -2109,7 +2109,7 @@ index 7ac700d7..0ad832d4 100644
static void usage(void);
-@@ -66,9 +66,9 @@ static int tc_class_modify(int cmd, unsigned int flags, int argc, char **argv)
+@@ -67,9 +67,9 @@ static int tc_class_modify(int cmd, unsigned int flags, int argc, char **argv)
.t.tcm_family = AF_UNSPEC,
};
struct qdisc_util *q = NULL;
@@ -2122,7 +2122,7 @@ index 7ac700d7..0ad832d4 100644
while (argc > 0) {
if (strcmp(*argv, "dev") == 0) {
-@@ -215,14 +215,14 @@ static void graph_cls_show(FILE *fp, char *buf, struct hlist_head *root_list,
+@@ -216,14 +216,14 @@ static void graph_cls_show(FILE *fp, char *buf, struct hlist_head *root_list,
int level)
{
struct hlist_node *n, *tmp_cls;
@@ -2140,7 +2140,7 @@ index 7ac700d7..0ad832d4 100644
struct graph_node *cls = container_of(n, struct graph_node,
hlist);
-@@ -387,7 +387,7 @@ int print_class(struct nlmsghdr *n, void *arg)
+@@ -388,7 +388,7 @@ int print_class(struct nlmsghdr *n, void *arg)
static int tc_class_list(int argc, char **argv)
{
struct tcmsg t = { .tcm_family = AF_UNSPEC };
@@ -2150,10 +2150,10 @@ index 7ac700d7..0ad832d4 100644
filter_qdisc = 0;
diff --git a/tc/tc_exec.c b/tc/tc_exec.c
-index 0151af7b..4080ff8a 100644
+index 9b912ceb..edc6c205 100644
--- a/tc/tc_exec.c
+++ b/tc/tc_exec.c
-@@ -84,7 +84,7 @@ noexist:
+@@ -85,7 +85,7 @@ noexist:
int do_exec(int argc, char **argv)
{
struct exec_util *eu;
@@ -2163,24 +2163,23 @@ index 0151af7b..4080ff8a 100644
if (argc < 1) {
fprintf(stderr, "No command given, try \"tc exec help\".\n");
diff --git a/tc/tc_filter.c b/tc/tc_filter.c
-index e5c7bc46..0994a787 100644
+index f7d2e4a6..347c1be4 100644
--- a/tc/tc_filter.c
+++ b/tc/tc_filter.c
-@@ -63,10 +63,10 @@ static int tc_filter_modify(int cmd, unsigned int flags, int argc, char **argv,
- {
- struct tc_filter_req *req, filter_req;
- struct filter_util *q = NULL;
-- struct tc_estimator est = {};
-- char k[FILTER_NAMESZ] = {};
-+ struct tc_estimator est = {0};
-+ char k[FILTER_NAMESZ] = {0};
+@@ -78,9 +78,9 @@ static int tc_filter_modify(int cmd, unsigned int flags, int argc, char **argv)
+ __u32 chain_index;
int chain_index_set = 0;
-- char d[IFNAMSIZ] = {};
-+ char d[IFNAMSIZ] = {0};
- int protocol_set = 0;
- __u32 block_index = 0;
char *fhandle = NULL;
-@@ -421,8 +421,8 @@ static int tc_filter_get(int cmd, unsigned int flags, int argc, char **argv)
+- char d[IFNAMSIZ] = {};
+- char k[FILTER_NAMESZ] = {};
+- struct tc_estimator est = {};
++ char d[IFNAMSIZ] = {0};
++ char k[FILTER_NAMESZ] = {0};
++ struct tc_estimator est = {0};
+
+ if (cmd == RTM_NEWTFILTER && flags & NLM_F_CREATE)
+ protocol = htons(ETH_P_ALL);
+@@ -405,8 +405,8 @@ static int tc_filter_get(int cmd, unsigned int flags, int argc, char **argv)
__u32 block_index = 0;
__u32 parent_handle = 0;
char *fhandle = NULL;
@@ -2191,7 +2190,7 @@ index e5c7bc46..0994a787 100644
while (argc > 0) {
if (strcmp(*argv, "dev") == 0) {
-@@ -611,7 +611,7 @@ static int tc_filter_list(int cmd, int argc, char **argv)
+@@ -595,7 +595,7 @@ static int tc_filter_list(int cmd, int argc, char **argv)
.t.tcm_parent = TC_H_UNSPEC,
.t.tcm_family = AF_UNSPEC,
};
@@ -2201,10 +2200,10 @@ index e5c7bc46..0994a787 100644
__u32 protocol = 0;
__u32 chain_index;
diff --git a/tc/tc_qdisc.c b/tc/tc_qdisc.c
-index c5da5b5c..c6f1e285 100644
+index 17e39983..cda0a564 100644
--- a/tc/tc_qdisc.c
+++ b/tc/tc_qdisc.c
-@@ -45,13 +45,13 @@ static int usage(void)
+@@ -46,13 +46,13 @@ static int usage(void)
static int tc_qdisc_modify(int cmd, unsigned int flags, int argc, char **argv)
{
struct qdisc_util *q = NULL;
@@ -2245,7 +2244,7 @@ index c0f1f160..45a6b184 100644
NEXT_ARG();
if (matches(*argv, "help") == 0) {
diff --git a/tc/tc_util.c b/tc/tc_util.c
-index e5d15281..52fc5b5a 100644
+index b90d256c..d639f1b1 100644
--- a/tc/tc_util.c
+++ b/tc/tc_util.c
@@ -129,7 +129,7 @@ ok:
@@ -2266,7 +2265,7 @@ index e5d15281..52fc5b5a 100644
if (id_to_name(cls_names, h, clname))
snprintf(buf, blen, "%s#%s", clname, handle);
-@@ -865,7 +865,7 @@ void print_tcstats_attr(FILE *fp, struct rtattr *tb[], char *prefix, struct rtat
+@@ -882,7 +882,7 @@ void print_tcstats_attr(FILE *fp, struct rtattr *tb[], char *prefix, struct rtat
}
/* backward compatibility */
if (tb[TCA_STATS]) {
@@ -2276,7 +2275,7 @@ index e5d15281..52fc5b5a 100644
/* handle case where kernel returns more/less than we know about */
memcpy(&st, RTA_DATA(tb[TCA_STATS]), MIN(RTA_PAYLOAD(tb[TCA_STATS]), sizeof(st)));
diff --git a/tipc/bearer.c b/tipc/bearer.c
-index 05dc84aa..d7cb2477 100644
+index 4470819e..0bc8ed9e 100644
--- a/tipc/bearer.c
+++ b/tipc/bearer.c
@@ -84,8 +84,8 @@ static void cmd_bearer_enable_udp_help(struct cmdl *cmdl, char *media)
@@ -2290,7 +2289,7 @@ index 05dc84aa..d7cb2477 100644
int *netid = (int*)data;
mnl_attr_parse(nlh, sizeof(*genl), parse_attrs, info);
-@@ -660,7 +660,7 @@ static int bearer_dump_udp_cb(const struct nlmsghdr *nlh, void *data)
+@@ -742,7 +742,7 @@ static int bearer_dump_udp_cb(const struct nlmsghdr *nlh, void *data)
{
struct sockaddr_storage *addr;
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
@@ -2299,7 +2298,7 @@ index 05dc84aa..d7cb2477 100644
mnl_attr_parse(nlh, sizeof(*genl), parse_attrs, info);
-@@ -696,9 +696,9 @@ static int bearer_get_udp_cb(const struct nlmsghdr *nlh, void *data)
+@@ -778,9 +778,9 @@ static int bearer_get_udp_cb(const struct nlmsghdr *nlh, void *data)
struct cb_data *cb_data = (struct cb_data *) data;
struct sockaddr_storage *addr;
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
@@ -2312,7 +2311,7 @@ index 05dc84aa..d7cb2477 100644
mnl_attr_parse(nlh, sizeof(*genl), parse_attrs, info);
if (!info[TIPC_NLA_BEARER])
-@@ -768,9 +768,9 @@ static int bearer_get_cb(const struct nlmsghdr *nlh, void *data)
+@@ -850,9 +850,9 @@ static int bearer_get_cb(const struct nlmsghdr *nlh, void *data)
{
int *prop = data;
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
@@ -2325,7 +2324,7 @@ index 05dc84aa..d7cb2477 100644
mnl_attr_parse(nlh, sizeof(*genl), parse_attrs, info);
if (!info[TIPC_NLA_BEARER])
-@@ -951,8 +951,8 @@ static int cmd_bearer_get(struct nlmsghdr *nlh, const struct cmd *cmd,
+@@ -1033,8 +1033,8 @@ static int cmd_bearer_get(struct nlmsghdr *nlh, const struct cmd *cmd,
static int bearer_list_cb(const struct nlmsghdr *nlh, void *data)
{
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
@@ -2569,5 +2568,5 @@ index 852984ec..c6bf518b 100644
mnl_attr_parse_nested(attrs[TIPC_NLA_SOCK_CON], parse_attrs, con);
node = mnl_attr_get_u32(con[TIPC_NLA_CON_NODE]);
--
-2.22.0
+2.23.0
diff --git a/pkg/iproute2/patch/0008-Remove-semicolon-after-function-definitions.patch b/pkg/iproute2/patch/0008-Remove-semicolon-after-function-definitions.patch
@@ -1,54 +1,14 @@
-From 440e3f2e32a58af3343c6f654aacfcb7d2cec5f6 Mon Sep 17 00:00:00 2001
+From 6519169b2d0cfee2093b3bfa52321152ba4541a7 Mon Sep 17 00:00:00 2001
From: Michael Forney <mforney@mforney.org>
Date: Sun, 16 Jun 2019 12:39:04 -0700
Subject: [PATCH] Remove semicolon after function definitions
---
- include/json_print.h | 28 ++++++++++++++--------------
- lib/json_print.c | 18 +++++++++---------
- 2 files changed, 23 insertions(+), 23 deletions(-)
+ lib/json_print.c | 18 +++++++++---------
+ 1 file changed, 9 insertions(+), 9 deletions(-)
-diff --git a/include/json_print.h b/include/json_print.h
-index dbdc90e2..ae2be059 100644
---- a/include/json_print.h
-+++ b/include/json_print.h
-@@ -57,20 +57,20 @@ void print_nl(void);
- { \
- print_color_##type_name(t, COLOR_NONE, key, fmt, value); \
- }
--_PRINT_FUNC(int, int);
--_PRINT_FUNC(s64, int64_t);
--_PRINT_FUNC(bool, bool);
--_PRINT_FUNC(null, const char*);
--_PRINT_FUNC(string, const char*);
--_PRINT_FUNC(uint, unsigned int);
--_PRINT_FUNC(u64, uint64_t);
--_PRINT_FUNC(hhu, unsigned char);
--_PRINT_FUNC(hu, unsigned short);
--_PRINT_FUNC(hex, unsigned int);
--_PRINT_FUNC(0xhex, unsigned long long);
--_PRINT_FUNC(luint, unsigned long);
--_PRINT_FUNC(lluint, unsigned long long);
--_PRINT_FUNC(float, double);
-+_PRINT_FUNC(int, int)
-+_PRINT_FUNC(s64, int64_t)
-+_PRINT_FUNC(bool, bool)
-+_PRINT_FUNC(null, const char*)
-+_PRINT_FUNC(string, const char*)
-+_PRINT_FUNC(uint, unsigned int)
-+_PRINT_FUNC(u64, uint64_t)
-+_PRINT_FUNC(hhu, unsigned char)
-+_PRINT_FUNC(hu, unsigned short)
-+_PRINT_FUNC(hex, unsigned int)
-+_PRINT_FUNC(0xhex, unsigned long long)
-+_PRINT_FUNC(luint, unsigned long)
-+_PRINT_FUNC(lluint, unsigned long long)
-+_PRINT_FUNC(float, double)
- #undef _PRINT_FUNC
-
- #endif /* _JSON_PRINT_H_ */
diff --git a/lib/json_print.c b/lib/json_print.c
-index 4eb2d0dc..cc43031c 100644
+index 43ea69bb..3d5c28eb 100644
--- a/lib/json_print.c
+++ b/lib/json_print.c
@@ -116,15 +116,15 @@ void close_json_array(enum output_type type, const char *str)
@@ -77,5 +37,5 @@ index 4eb2d0dc..cc43031c 100644
void print_color_string(enum output_type type,
--
-2.20.1
+2.23.0
diff --git a/pkg/iproute2/patch/0009-Don-t-emit-second-operand-to-operator.patch b/pkg/iproute2/patch/0009-Don-t-emit-second-operand-to-operator.patch
@@ -1,4 +1,4 @@
-From a4b297a9b25a6d93d23640a3676e604b6d0b9022 Mon Sep 17 00:00:00 2001
+From 50448fbc36b843b9ccd69b93b1a05ec5a954579d Mon Sep 17 00:00:00 2001
From: Michael Forney <mforney@mforney.org>
Date: Sun, 16 Jun 2019 12:39:40 -0700
Subject: [PATCH] Don't emit second operand to '?' operator
@@ -13,7 +13,7 @@ Subject: [PATCH] Don't emit second operand to '?' operator
6 files changed, 33 insertions(+), 15 deletions(-)
diff --git a/ip/iproute_lwtunnel.c b/ip/iproute_lwtunnel.c
-index 03217b8f..83f92984 100644
+index 60f34a32..b47a65aa 100644
--- a/ip/iproute_lwtunnel.c
+++ b/ip/iproute_lwtunnel.c
@@ -185,7 +185,7 @@ static const char *format_action_type(int action)
@@ -35,10 +35,10 @@ index 03217b8f..83f92984 100644
fprintf(fp, "%s ", str);
if (progname)
diff --git a/ip/iptunnel.c b/ip/iptunnel.c
-index 281def0a..eb1a8148 100644
+index 3efae379..2d5b8161 100644
--- a/ip/iptunnel.c
+++ b/ip/iptunnel.c
-@@ -277,11 +277,16 @@ static int do_add(int cmd, int argc, char **argv)
+@@ -278,11 +278,16 @@ static int do_add(int cmd, int argc, char **argv)
static int do_del(int argc, char **argv)
{
struct ip_tunnel_parm p;
@@ -57,10 +57,10 @@ index 281def0a..eb1a8148 100644
static void print_tunnel(const void *t)
diff --git a/ip/iptuntap.c b/ip/iptuntap.c
-index 0b3adde1..d19e5531 100644
+index f1bf0b18..41fa1649 100644
--- a/ip/iptuntap.c
+++ b/ip/iptuntap.c
-@@ -347,7 +347,7 @@ static void show_processes(const char *name)
+@@ -348,7 +348,7 @@ static void show_processes(const char *name)
char *pname = pid_name(pid);
print_string(PRINT_ANY, "name",
@@ -70,7 +70,7 @@ index 0b3adde1..d19e5531 100644
print_uint(PRINT_ANY, "pid",
"(%d)", pid);
diff --git a/lib/bpf.c b/lib/bpf.c
-index a18e2ae9..d12b42bd 100644
+index 7b9b7523..f6d20cb7 100644
--- a/lib/bpf.c
+++ b/lib/bpf.c
@@ -771,7 +771,7 @@ static const char *bpf_get_work_dir(enum bpf_prog_type type)
@@ -83,10 +83,10 @@ index a18e2ae9..d12b42bd 100644
if (!ret)
ret = bpf_mnt_fs(mnt);
diff --git a/lib/utils.c b/lib/utils.c
-index 7f8a7da1..cf1b1c6f 100644
+index 21a87b7c..e0af2179 100644
--- a/lib/utils.c
+++ b/lib/utils.c
-@@ -945,8 +945,10 @@ int __get_hz(void)
+@@ -934,8 +934,10 @@ int __get_hz(void)
int hz = 0;
FILE *fp;
@@ -99,7 +99,7 @@ index 7f8a7da1..cf1b1c6f 100644
if (getenv("PROC_NET_PSCHED"))
snprintf(name, sizeof(name)-1,
-@@ -967,6 +969,7 @@ int __get_hz(void)
+@@ -956,6 +958,7 @@ int __get_hz(void)
hz = denom;
fclose(fp);
}
@@ -108,7 +108,7 @@ index 7f8a7da1..cf1b1c6f 100644
return hz;
return HZ;
diff --git a/misc/ss.c b/misc/ss.c
-index 7ba483f3..ab5a75c8 100644
+index 3a3a61ec..725ad915 100644
--- a/misc/ss.c
+++ b/misc/ss.c
@@ -480,7 +480,9 @@ static FILE *generic_proc_open(const char *env, const char *name)
@@ -175,7 +175,7 @@ index 7ba483f3..ab5a75c8 100644
}
if (f->f) {
-@@ -4313,9 +4322,10 @@ static int netlink_show_one(struct filter *f,
+@@ -4310,9 +4319,10 @@ static int netlink_show_one(struct filter *f,
strncpy(procname, "kernel", 7);
} else if (pid > 0) {
FILE *fp;
@@ -187,7 +187,7 @@ index 7ba483f3..ab5a75c8 100644
if ((fp = fopen(procname, "r")) != NULL) {
if (fscanf(fp, "%*d (%[^)])", procname) == 1) {
snprintf(procname+strlen(procname),
-@@ -4358,7 +4368,7 @@ static int netlink_show_one(struct filter *f,
+@@ -4355,7 +4365,7 @@ static int netlink_show_one(struct filter *f,
else if (pid > 0)
getpidcon(pid, &pid_context);
@@ -197,5 +197,5 @@ index 7ba483f3..ab5a75c8 100644
}
--
-2.22.0
+2.23.0
diff --git a/pkg/iproute2/patch/0010-Avoid-unnecessary-VLAs.patch b/pkg/iproute2/patch/0010-Avoid-unnecessary-VLAs.patch
@@ -1,4 +1,4 @@
-From 958ece4ca4331f215f4517c3363ada4359dc149c Mon Sep 17 00:00:00 2001
+From 7d8d4edc0bbfc3fa1b99c6491577465c9bc4a350 Mon Sep 17 00:00:00 2001
From: Michael Forney <mforney@mforney.org>
Date: Sun, 16 Jun 2019 13:38:59 -0700
Subject: [PATCH] Avoid unnecessary VLAs
@@ -22,10 +22,10 @@ index 669f0538..9e456030 100644
msg->iov.iov_base = &msg->aux;
diff --git a/ip/iptuntap.c b/ip/iptuntap.c
-index d19e5531..6928737e 100644
+index 41fa1649..d2e305ae 100644
--- a/ip/iptuntap.c
+++ b/ip/iptuntap.c
-@@ -302,9 +302,7 @@ static void show_processes(const char *name)
+@@ -303,9 +303,7 @@ static void show_processes(const char *name)
fd_path = globbuf.gl_pathv;
while (*fd_path) {
@@ -36,7 +36,7 @@ index d19e5531..6928737e 100644
int pid, fd;
FILE *f;
-@@ -314,13 +312,13 @@ static void show_processes(const char *name)
+@@ -315,13 +313,13 @@ static void show_processes(const char *name)
if (pid == getpid())
goto next;
@@ -53,5 +53,5 @@ index d19e5531..6928737e 100644
if (asprintf(&fdinfo, "/proc/%d/fdinfo/%d", pid, fd) < 0)
--
-2.20.1
+2.23.0
diff --git a/pkg/iproute2/patch/0011-ip-Fix-get_link_kind-when-linked-statically.patch b/pkg/iproute2/patch/0011-ip-Fix-get_link_kind-when-linked-statically.patch
@@ -1,4 +1,4 @@
-From cced9508238bd4ea087986ad683661cd7f27df27 Mon Sep 17 00:00:00 2001
+From f69248c97b449709b54d4f431ff965c0dc7e2148 Mon Sep 17 00:00:00 2001
From: Michael Forney <mforney@mforney.org>
Date: Mon, 24 Jun 2019 16:03:55 -0700
Subject: [PATCH] ip: Fix get_link_kind when linked statically
@@ -8,10 +8,10 @@ Subject: [PATCH] ip: Fix get_link_kind when linked statically
1 file changed, 86 insertions(+), 9 deletions(-)
diff --git a/ip/iplink.c b/ip/iplink.c
-index 3e86ec5a..27a33591 100644
+index 43f86189..a9fc9b11 100644
--- a/ip/iplink.c
+++ b/ip/iplink.c
-@@ -149,21 +149,98 @@ struct link_util *get_link_kind(const char *id)
+@@ -150,21 +150,98 @@ struct link_util *get_link_kind(const char *id)
char buf[256];
struct link_util *l;
@@ -120,5 +120,5 @@ index 3e86ec5a..27a33591 100644
snprintf(buf, sizeof(buf), "%s_link_util", id);
l = dlsym(dlh, buf);
--
-2.22.0
+2.23.0
diff --git a/pkg/iproute2/patch/0012-Use-alloca-instead-of-VLA-when-VLA-is-not-available.patch b/pkg/iproute2/patch/0012-Use-alloca-instead-of-VLA-when-VLA-is-not-available.patch
@@ -1,4 +1,4 @@
-From cbdee3bebdd860293f5c6803e4afebfea307e205 Mon Sep 17 00:00:00 2001
+From 073eca7960250e99c4c6d8c135491c4c85269652 Mon Sep 17 00:00:00 2001
From: Michael Forney <mforney@mforney.org>
Date: Mon, 24 Jun 2019 16:48:56 -0700
Subject: [PATCH] Use alloca instead of VLA when VLA is not available
@@ -8,10 +8,10 @@ Subject: [PATCH] Use alloca instead of VLA when VLA is not available
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/ip/ipaddress.c b/ip/ipaddress.c
-index e440fac4..2fb82076 100644
+index 4b1fba8f..648df0fb 100644
--- a/ip/ipaddress.c
+++ b/ip/ipaddress.c
-@@ -247,7 +247,12 @@ static void print_linktype(FILE *fp, struct rtattr *tb)
+@@ -249,7 +249,12 @@ static void print_linktype(FILE *fp, struct rtattr *tb)
lu = get_link_kind(kind);
if (lu && lu->print_opt) {
@@ -25,7 +25,7 @@ index e440fac4..2fb82076 100644
if (linkinfo[IFLA_INFO_DATA]) {
parse_rtattr_nested(attr, lu->maxattr,
-@@ -281,7 +286,12 @@ static void print_linktype(FILE *fp, struct rtattr *tb)
+@@ -283,7 +288,12 @@ static void print_linktype(FILE *fp, struct rtattr *tb)
slave_lu = get_link_kind(slave);
if (slave_lu && slave_lu->print_opt) {
@@ -40,5 +40,5 @@ index e440fac4..2fb82076 100644
if (linkinfo[IFLA_INFO_SLAVE_DATA]) {
parse_rtattr_nested(attr, slave_lu->maxattr,
--
-2.22.0
+2.23.0
diff --git a/pkg/iproute2/patch/0014-Prevent-multiple-definitions-of-global.patch b/pkg/iproute2/patch/0014-Prevent-multiple-definitions-of-global.patch
@@ -0,0 +1,25 @@
+From b6e8de281dc67c4d12eaf54d39bfc056a8c1056b Mon Sep 17 00:00:00 2001
+From: Michael Forney <mforney@mforney.org>
+Date: Thu, 3 Oct 2019 23:36:32 -0700
+Subject: [PATCH] Prevent multiple definitions of global
+
+---
+ lib/rt_names.c | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/lib/rt_names.c b/lib/rt_names.c
+index 41cccfb8..66f2d984 100644
+--- a/lib/rt_names.c
++++ b/lib/rt_names.c
+@@ -27,8 +27,6 @@
+
+ #define NAME_MAX_LEN 512
+
+-int numeric;
+-
+ struct rtnl_hash_entry {
+ struct rtnl_hash_entry *next;
+ const char *name;
+--
+2.23.0
+
diff --git a/pkg/iproute2/ver b/pkg/iproute2/ver
@@ -1 +1 @@
-5.2.0 r0
+5.3.0 r0