commit: 6ed53b8dbe14b7c0381f696721f4f80e3b1bb930
parent 951755fcd54be357dded3a096fef7bb67d845042
Author: Michael Forney <mforney@mforney.org>
Date: Tue, 2 Mar 2021 02:38:11 -0800
iproute2: Update to 5.11.0
Diffstat:
8 files changed, 185 insertions(+), 179 deletions(-)
diff --git a/pkg/iproute2/gen.lua b/pkg/iproute2/gen.lua
@@ -19,9 +19,9 @@ pkg.deps = {
lib('libnetlink.a', [[lib/(
libgenl.c libnetlink.c
- utils.c rt_names.c ll_map.c ll_types.c ll_proto.c ll_addr.c
- inet_proto.c namespace.c json_writer.c json_print.c
- names.c color.c bpf.c exec.c fs.c cg_map.c
+ utils.c utils_math.c rt_names.c ll_map.c ll_types.c ll_proto.c ll_addr.c
+ inet_proto.c namespace.c json_writer.c json_print.c json_print_math.c
+ names.c color.c bpf_legacy.c bpf_glue.c exec.c fs.c cg_map.c
mpls_ntop.c mpls_pton.c
)]])
diff --git a/pkg/iproute2/patch/0005-Don-t-use-empty-initializer-lists.patch b/pkg/iproute2/patch/0005-Don-t-use-empty-initializer-lists.patch
@@ -1,4 +1,4 @@
-From cdd4e1770e86f077391f18dbcb6d6a3bb004aa64 Mon Sep 17 00:00:00 2001
+From cac87197fbb6fbcc1b4ee0ceb62a2f060e426841 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
@@ -22,9 +22,10 @@ Subject: [PATCH] Don't use empty initializer lists
ip/ipxfrm.c | 14 +++----
ip/xfrm_policy.c | 12 +++---
ip/xfrm_state.c | 12 +++---
- lib/bpf.c | 42 ++++++++++-----------
+ lib/bpf_legacy.c | 40 ++++++++++----------
lib/libnetlink.c | 4 +-
lib/ll_map.c | 2 +-
+ lib/rt_names.c | 3 +-
misc/arpd.c | 4 +-
misc/ss.c | 38 +++++++++----------
rdma/dev.c | 2 +-
@@ -87,13 +88,13 @@ Subject: [PATCH] Don't use empty initializer lists
tipc/nametable.c | 6 +--
tipc/node.c | 14 +++----
tipc/socket.c | 10 ++---
- 83 files changed, 287 insertions(+), 287 deletions(-)
+ 84 files changed, 287 insertions(+), 288 deletions(-)
diff --git a/bridge/mdb.c b/bridge/mdb.c
-index 2d653682..88b5a660 100644
+index 5b357151..f1ebbf97 100644
--- a/bridge/mdb.c
+++ b/bridge/mdb.c
-@@ -452,7 +452,7 @@ static int mdb_modify(int cmd, int flags, int argc, char **argv)
+@@ -484,7 +484,7 @@ static int mdb_modify(int cmd, int flags, int argc, char **argv)
.bpm.family = PF_BRIDGE,
};
char *d = NULL, *p = NULL, *grp = NULL, *src = NULL;
@@ -125,10 +126,10 @@ index cc1c34cf..231f8543 100644
unsigned short flags = 0;
__u32 tun_id_start = 0;
diff --git a/devlink/devlink.c b/devlink/devlink.c
-index 43549965..4b2ac5b4 100644
+index a2e06644..cb05ac2b 100644
--- a/devlink/devlink.c
+++ b/devlink/devlink.c
-@@ -751,7 +751,7 @@ static int function_attr_cb(const struct nlattr *attr, void *data)
+@@ -764,7 +764,7 @@ static int function_attr_cb(const struct nlattr *attr, void *data)
static int ifname_map_cb(const struct nlmsghdr *nlh, void *data)
{
@@ -137,7 +138,7 @@ index 43549965..4b2ac5b4 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
struct dl *dl = data;
struct ifname_map *ifname_map;
-@@ -2355,7 +2355,7 @@ static void pr_out_eswitch(struct dl *dl, struct nlattr **tb)
+@@ -2458,7 +2458,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;
@@ -146,7 +147,7 @@ index 43549965..4b2ac5b4 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
-@@ -2523,7 +2523,7 @@ static const struct param_val_conv param_val_conv[] = {
+@@ -2626,7 +2626,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)
{
@@ -155,7 +156,7 @@ index 43549965..4b2ac5b4 100644
struct nlattr *val_attr;
const char *vstr;
bool conv_exists;
-@@ -2605,7 +2605,7 @@ static void pr_out_param_value(struct dl *dl, const char *nla_name,
+@@ -2708,7 +2708,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)
{
@@ -164,7 +165,7 @@ index 43549965..4b2ac5b4 100644
struct nlattr *param_value_attr;
const char *nla_name;
int nla_type;
-@@ -2648,7 +2648,7 @@ static void pr_out_param(struct dl *dl, struct nlattr **tb, bool array)
+@@ -2751,7 +2751,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);
@@ -173,7 +174,7 @@ index 43549965..4b2ac5b4 100644
struct dl *dl = data;
mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
-@@ -2674,8 +2674,8 @@ struct param_ctx {
+@@ -2777,8 +2777,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);
@@ -184,7 +185,7 @@ index 43549965..4b2ac5b4 100644
struct nlattr *param_value_attr;
enum devlink_param_cmode cmode;
struct param_ctx *ctx = data;
-@@ -2699,7 +2699,7 @@ static int cmd_dev_param_set_cb(const struct nlmsghdr *nlh, void *data)
+@@ -2802,7 +2802,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]) {
@@ -193,7 +194,7 @@ index 43549965..4b2ac5b4 100644
struct nlattr *val_attr;
err = mnl_attr_parse_nested(param_value_attr,
-@@ -2741,7 +2741,7 @@ static int cmd_dev_param_set_cb(const struct nlmsghdr *nlh, void *data)
+@@ -2844,7 +2844,7 @@ static int cmd_dev_param_set_cb(const struct nlmsghdr *nlh, void *data)
static int cmd_dev_param_set(struct dl *dl)
{
@@ -202,16 +203,16 @@ index 43549965..4b2ac5b4 100644
struct nlmsghdr *nlh;
bool conv_exists;
uint32_t val_u32 = 0;
-@@ -2896,7 +2896,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;
-- struct nlattr *tb[DEVLINK_ATTR_MAX + 1] = {};
-+ struct nlattr *tb[DEVLINK_ATTR_MAX + 1] = {0};
- struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
- uint8_t reload_failed = 0;
+@@ -2999,7 +2999,7 @@ static int cmd_dev_param(struct dl *dl)
-@@ -2968,7 +2968,7 @@ static void pr_out_versions_single(struct dl *dl, const struct nlmsghdr *nlh,
+ static void pr_out_action_stats(struct dl *dl, struct nlattr *action_stats)
+ {
+- struct nlattr *tb_stats_entry[DEVLINK_ATTR_MAX + 1] = {};
++ struct nlattr *tb_stats_entry[DEVLINK_ATTR_MAX + 1] = {0};
+ struct nlattr *nla_reload_stats_entry, *nla_limit, *nla_value;
+ enum devlink_reload_limit limit;
+ uint32_t value;
+@@ -3214,7 +3214,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)) {
@@ -220,7 +221,7 @@ index 43549965..4b2ac5b4 100644
const char *ver_value;
const char *ver_name;
int err;
-@@ -3058,7 +3058,7 @@ static void pr_out_info(struct dl *dl, const struct nlmsghdr *nlh,
+@@ -3304,7 +3304,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);
@@ -229,7 +230,7 @@ index 43549965..4b2ac5b4 100644
bool has_versions, has_info;
struct dl *dl = data;
-@@ -3610,7 +3610,7 @@ static void pr_out_port(struct dl *dl, struct nlattr **tb)
+@@ -3856,7 +3856,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;
@@ -238,7 +239,7 @@ index 43549965..4b2ac5b4 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
-@@ -3801,7 +3801,7 @@ static void pr_out_sb(struct dl *dl, struct nlattr **tb)
+@@ -4047,7 +4047,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;
@@ -247,7 +248,7 @@ index 43549965..4b2ac5b4 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
-@@ -3880,7 +3880,7 @@ static void pr_out_sb_pool(struct dl *dl, struct nlattr **tb)
+@@ -4126,7 +4126,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;
@@ -256,7 +257,7 @@ index 43549965..4b2ac5b4 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
-@@ -3966,7 +3966,7 @@ static void pr_out_sb_port_pool(struct dl *dl, struct nlattr **tb)
+@@ -4212,7 +4212,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;
@@ -265,7 +266,7 @@ index 43549965..4b2ac5b4 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
-@@ -4069,7 +4069,7 @@ static void pr_out_sb_tc_bind(struct dl *dl, struct nlattr **tb)
+@@ -4315,7 +4315,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;
@@ -274,7 +275,7 @@ index 43549965..4b2ac5b4 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
-@@ -4357,7 +4357,7 @@ static void cmd_sb_occ_port_pool_process(struct occ_show *occ_show,
+@@ -4603,7 +4603,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;
@@ -283,7 +284,7 @@ index 43549965..4b2ac5b4 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
-@@ -4408,7 +4408,7 @@ static void cmd_sb_occ_tc_pool_process(struct occ_show *occ_show,
+@@ -4654,7 +4654,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;
@@ -292,7 +293,7 @@ index 43549965..4b2ac5b4 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
-@@ -4695,7 +4695,7 @@ static void pr_out_trap_policer(struct dl *dl, struct nlattr **tb, bool array);
+@@ -4941,7 +4941,7 @@ static void pr_out_trap_policer(struct dl *dl, struct nlattr **tb, bool array);
static int cmd_mon_show_cb(const struct nlmsghdr *nlh, void *data)
{
struct dl *dl = data;
@@ -301,7 +302,7 @@ index 43549965..4b2ac5b4 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
uint8_t cmd = genl->cmd;
-@@ -5223,7 +5223,7 @@ static void pr_out_dpipe_headers(struct dpipe_ctx *ctx,
+@@ -5470,7 +5470,7 @@ static void pr_out_dpipe_headers(struct dpipe_ctx *ctx,
static int dpipe_header_field_get(struct nlattr *nl, struct dpipe_field *field)
{
@@ -310,7 +311,7 @@ index 43549965..4b2ac5b4 100644
const char *name;
int err;
-@@ -5274,7 +5274,7 @@ static unsigned int dpipe_header_field_count_get(struct nlattr *nla_fields)
+@@ -5521,7 +5521,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)
{
@@ -319,7 +320,7 @@ index 43549965..4b2ac5b4 100644
struct dpipe_header *header;
unsigned int fields_count;
const char *header_name;
-@@ -5330,7 +5330,7 @@ static int dpipe_headers_get(struct dpipe_ctx *ctx, struct nlattr **tb)
+@@ -5577,7 +5577,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;
@@ -328,7 +329,7 @@ index 43549965..4b2ac5b4 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
int err;
-@@ -5352,7 +5352,7 @@ static int cmd_dpipe_header_cb(const struct nlmsghdr *nlh, void *data)
+@@ -5599,7 +5599,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;
@@ -337,7 +338,7 @@ index 43549965..4b2ac5b4 100644
uint16_t flags = NLM_F_REQUEST | NLM_F_ACK;
int err;
-@@ -5447,7 +5447,7 @@ static void pr_out_dpipe_action(struct dpipe_action *action,
+@@ -5694,7 +5694,7 @@ static void pr_out_dpipe_action(struct dpipe_action *action,
static int dpipe_action_parse(struct dpipe_action *action, struct nlattr *nl)
{
@@ -346,7 +347,7 @@ index 43549965..4b2ac5b4 100644
int err;
err = mnl_attr_parse_nested(nl, attr_cb, nla_action);
-@@ -5532,7 +5532,7 @@ static int dpipe_match_parse(struct dpipe_match *match,
+@@ -5779,7 +5779,7 @@ static int dpipe_match_parse(struct dpipe_match *match,
struct nlattr *nl)
{
@@ -355,7 +356,7 @@ index 43549965..4b2ac5b4 100644
int err;
err = mnl_attr_parse_nested(nl, attr_cb, nla_match);
-@@ -5637,7 +5637,7 @@ resource_path_print(struct dl *dl, struct resources *resources,
+@@ -5884,7 +5884,7 @@ resource_path_print(struct dl *dl, struct resources *resources,
static int dpipe_table_show(struct dpipe_ctx *ctx, struct nlattr *nl)
{
@@ -364,7 +365,7 @@ index 43549965..4b2ac5b4 100644
struct dpipe_table *table;
uint32_t resource_units;
bool counters_enabled;
-@@ -5731,7 +5731,7 @@ err_table_show:
+@@ -5978,7 +5978,7 @@ err_table_show:
static int cmd_dpipe_table_show_cb(const struct nlmsghdr *nlh, void *data)
{
struct dpipe_ctx *ctx = data;
@@ -373,7 +374,7 @@ index 43549965..4b2ac5b4 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
-@@ -5749,8 +5749,8 @@ static int cmd_resource_dump_cb(const struct nlmsghdr *nlh, void *data);
+@@ -5996,8 +5996,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;
@@ -384,7 +385,7 @@ index 43549965..4b2ac5b4 100644
uint16_t flags = NLM_F_REQUEST;
int err;
-@@ -6007,7 +6007,7 @@ static void pr_out_dpipe_entry_value(struct dpipe_ctx *ctx,
+@@ -6254,7 +6254,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)
{
@@ -393,7 +394,7 @@ index 43549965..4b2ac5b4 100644
struct dpipe_match match;
int err;
-@@ -6038,7 +6038,7 @@ err_match_parse:
+@@ -6285,7 +6285,7 @@ err_match_parse:
static int dpipe_entry_action_value_show(struct dpipe_ctx *ctx,
struct nlattr *nl)
{
@@ -402,7 +403,7 @@ index 43549965..4b2ac5b4 100644
struct dpipe_action action;
int err;
-@@ -6094,7 +6094,7 @@ dpipe_tables_match_values_show(struct dpipe_ctx *ctx,
+@@ -6341,7 +6341,7 @@ dpipe_tables_match_values_show(struct dpipe_ctx *ctx,
static int dpipe_entry_show(struct dpipe_ctx *ctx, struct nlattr *nl)
{
@@ -411,7 +412,7 @@ index 43549965..4b2ac5b4 100644
uint32_t entry_index;
uint64_t counter;
int err;
-@@ -6158,7 +6158,7 @@ err_entry_show:
+@@ -6405,7 +6405,7 @@ err_entry_show:
static int cmd_dpipe_table_entry_dump_cb(const struct nlmsghdr *nlh, void *data)
{
struct dpipe_ctx *ctx = data;
@@ -420,7 +421,7 @@ index 43549965..4b2ac5b4 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
-@@ -6174,7 +6174,7 @@ static int cmd_dpipe_table_entry_dump_cb(const struct nlmsghdr *nlh, void *data)
+@@ -6421,7 +6421,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;
@@ -429,7 +430,7 @@ index 43549965..4b2ac5b4 100644
uint16_t flags = NLM_F_REQUEST;
int err;
-@@ -6283,7 +6283,7 @@ static int
+@@ -6530,7 +6530,7 @@ static int
resource_get(struct resource_ctx *ctx, struct resource *resource,
struct resource *parent_resource, struct nlattr *nl)
{
@@ -438,7 +439,7 @@ index 43549965..4b2ac5b4 100644
struct nlattr *nla_child_resource;
struct nlattr *nla_resources;
bool top = false;
-@@ -6431,7 +6431,7 @@ static int resources_get(struct resource_ctx *ctx, struct nlattr **tb)
+@@ -6678,7 +6678,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;
@@ -447,7 +448,7 @@ index 43549965..4b2ac5b4 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
int err;
-@@ -6455,8 +6455,8 @@ static int cmd_resource_dump_cb(const struct nlmsghdr *nlh, void *data)
+@@ -6702,8 +6702,8 @@ static int cmd_resource_dump_cb(const struct nlmsghdr *nlh, void *data)
static int cmd_resource_show(struct dl *dl)
{
struct nlmsghdr *nlh;
@@ -458,7 +459,7 @@ index 43549965..4b2ac5b4 100644
int err;
err = dl_argv_parse(dl, DL_OPT_HANDLE, 0);
-@@ -6551,7 +6551,7 @@ err_resource_lookup:
+@@ -6798,7 +6798,7 @@ err_resource_lookup:
static int cmd_resource_set(struct dl *dl)
{
struct nlmsghdr *nlh;
@@ -467,7 +468,7 @@ index 43549965..4b2ac5b4 100644
int err;
err = resource_ctx_init(&ctx, dl);
-@@ -6663,7 +6663,7 @@ static void pr_out_region_snapshots_id(struct dl *dl, struct nlattr **tb, int in
+@@ -6910,7 +6910,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)
{
@@ -476,7 +477,7 @@ index 43549965..4b2ac5b4 100644
struct nlattr *nla_sanpshot;
int err, index = 0;
-@@ -6704,7 +6704,7 @@ static void pr_out_region(struct dl *dl, struct nlattr **tb)
+@@ -6951,7 +6951,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);
@@ -485,7 +486,7 @@ index 43549965..4b2ac5b4 100644
struct dl *dl = data;
mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
-@@ -6760,8 +6760,8 @@ static int cmd_region_read_cb(const struct nlmsghdr *nlh, void *data)
+@@ -7007,8 +7007,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);
@@ -496,7 +497,7 @@ index 43549965..4b2ac5b4 100644
struct dl *dl = data;
int err;
-@@ -7108,7 +7108,7 @@ static int cmd_fmsg_nest(struct fmsg_cb_data *fmsg_data, uint8_t nest_value,
+@@ -7355,7 +7355,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);
@@ -505,7 +506,7 @@ index 43549965..4b2ac5b4 100644
struct fmsg_cb_data *fmsg_data = data;
struct dl *dl = fmsg_data->dl;
struct nlattr *nla_object;
-@@ -7299,7 +7299,7 @@ static void pr_out_dump_report_timestamp(struct dl *dl, const struct nlattr *att
+@@ -7546,7 +7546,7 @@ static void pr_out_dump_report_timestamp(struct dl *dl, const struct nlattr *att
static void pr_out_health(struct dl *dl, struct nlattr **tb_health,
bool print_device, bool print_port)
{
@@ -514,7 +515,7 @@ index 43549965..4b2ac5b4 100644
enum devlink_health_reporter_state state;
int err;
-@@ -7370,7 +7370,7 @@ struct health_ctx {
+@@ -7617,7 +7617,7 @@ struct health_ctx {
static int cmd_health_show_cb(const struct nlmsghdr *nlh, void *data)
{
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
@@ -524,10 +525,10 @@ index 43549965..4b2ac5b4 100644
struct dl *dl = ctx->dl;
diff --git a/devlink/mnlg.c b/devlink/mnlg.c
-index c7d25e87..baeda3d8 100644
+index 21b10c5a..809efc5a 100644
--- a/devlink/mnlg.c
+++ b/devlink/mnlg.c
-@@ -154,7 +154,7 @@ static void parse_genl_mc_grps(struct nlattr *nested,
+@@ -97,7 +97,7 @@ static void parse_genl_mc_grps(struct nlattr *nested,
const char *name;
mnl_attr_for_each_nested(pos, nested) {
@@ -536,7 +537,7 @@ index c7d25e87..baeda3d8 100644
mnl_attr_parse_nested(pos, parse_mc_grps_cb, tb);
if (!tb[CTRL_ATTR_MCAST_GRP_NAME] ||
-@@ -188,7 +188,7 @@ static int get_group_id_attr_cb(const struct nlattr *attr, void *data)
+@@ -131,7 +131,7 @@ static int get_group_id_attr_cb(const struct nlattr *attr, void *data)
static int get_group_id_cb(const struct nlmsghdr *nlh, void *data)
{
struct group_info *group_info = data;
@@ -545,7 +546,7 @@ index c7d25e87..baeda3d8 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
mnl_attr_parse(nlh, sizeof(*genl), get_group_id_attr_cb, tb);
-@@ -249,7 +249,7 @@ static int get_family_id_attr_cb(const struct nlattr *attr, void *data)
+@@ -192,7 +192,7 @@ static int get_family_id_attr_cb(const struct nlattr *attr, void *data)
static int get_family_id_cb(const struct nlmsghdr *nlh, void *data)
{
uint32_t *p_id = data;
@@ -568,7 +569,7 @@ index c712d664..318e54b1 100644
if (tnl_get_ioctl(*argv, &old_p))
return -1;
diff --git a/ip/ipaddress.c b/ip/ipaddress.c
-index 571346b1..f8cea9cb 100644
+index 0bbcee2b..0760a769 100644
--- a/ip/ipaddress.c
+++ b/ip/ipaddress.c
@@ -167,7 +167,7 @@ static void print_queuelen(FILE *f, struct rtattr *tb[IFLA_MAX + 1])
@@ -589,7 +590,7 @@ index 571346b1..f8cea9cb 100644
SPRINT_BUF(b1);
-@@ -2284,7 +2284,7 @@ static int ipaddr_modify(int cmd, int flags, int argc, char **argv)
+@@ -2291,7 +2291,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;
@@ -598,7 +599,7 @@ index 571346b1..f8cea9cb 100644
inet_prefix peer;
int local_len = 0;
int peer_len = 0;
-@@ -2459,7 +2459,7 @@ static int ipaddr_modify(int cmd, int flags, int argc, char **argv)
+@@ -2466,7 +2466,7 @@ static int ipaddr_modify(int cmd, int flags, int argc, char **argv)
return nodev(d);
if (valid_lftp || preferred_lftp) {
@@ -634,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 d6b766de..4bd8c3cd 100644
+index 27c9be44..1a88c8be 100644
--- a/ip/iplink.c
+++ b/ip/iplink.c
-@@ -1256,7 +1256,7 @@ static int set_mtu(const char *dev, int mtu)
+@@ -1240,7 +1240,7 @@ static int set_mtu(const char *dev, int mtu)
static int get_address(const char *dev, int *htype)
{
@@ -660,10 +661,10 @@ index 735ab941..82060bf4 100644
while (argc > 0) {
diff --git a/ip/ipmacsec.c b/ip/ipmacsec.c
-index 18289ecd..1349e54e 100644
+index bf48e8b5..eecb7e48 100644
--- a/ip/ipmacsec.c
+++ b/ip/ipmacsec.c
-@@ -1023,7 +1023,7 @@ static int process(struct nlmsghdr *n, void *arg)
+@@ -1001,7 +1001,7 @@ static int process(struct nlmsghdr *n, void *arg)
if (ghdr->cmd != MACSEC_CMD_GET_TXSC)
return 0;
@@ -757,7 +758,7 @@ index 696f3b92..92b86c17 100644
const char *medium = NULL;
inet_prefix prefix;
diff --git a/ip/iptuntap.c b/ip/iptuntap.c
-index 91d3512b..f1bf0b18 100644
+index e0f76c66..061a3312 100644
--- a/ip/iptuntap.c
+++ b/ip/iptuntap.c
@@ -290,7 +290,7 @@ static char *pid_name(pid_t pid)
@@ -912,10 +913,10 @@ index a4f452fa..dad6e53f 100644
int len;
__u32 icvlen, trunclen;
char *name;
-diff --git a/lib/bpf.c b/lib/bpf.c
-index c7d45077..5d620f40 100644
---- a/lib/bpf.c
-+++ b/lib/bpf.c
+diff --git a/lib/bpf_legacy.c b/lib/bpf_legacy.c
+index 8a03b9c2..86790fe8 100644
+--- a/lib/bpf_legacy.c
++++ b/lib/bpf_legacy.c
@@ -148,7 +148,7 @@ static int bpf(int cmd, union bpf_attr *attr, unsigned int size)
static int bpf_map_update(int fd, const void *key, const void *value,
uint64_t flags)
@@ -961,16 +962,7 @@ index c7d45077..5d620f40 100644
int ret;
ret = bpf_derive_elf_map_from_fdinfo(fd, &tmp, ext);
-@@ -510,7 +510,7 @@ static int bpf_mnt_fs(const char *target)
-
- static int bpf_mnt_check_target(const char *target)
- {
-- struct stat sb = {};
-+ struct stat sb = {0};
- int ret;
-
- ret = stat(target, &sb);
-@@ -694,7 +694,7 @@ static int bpf_gen_slave(const char *base, const char *name,
+@@ -688,7 +688,7 @@ static int bpf_gen_slave(const char *base, const char *name,
{
char bpf_lnk_dir[PATH_MAX + NAME_MAX + 1];
char bpf_sub_dir[PATH_MAX + NAME_MAX];
@@ -979,7 +971,7 @@ index c7d45077..5d620f40 100644
int ret;
snprintf(bpf_lnk_dir, sizeof(bpf_lnk_dir), "%s%s/", base, link);
-@@ -801,7 +801,7 @@ out:
+@@ -795,7 +795,7 @@ out:
static int bpf_obj_get(const char *pathname, enum bpf_prog_type type)
{
@@ -988,7 +980,7 @@ index c7d45077..5d620f40 100644
char tmp[PATH_MAX];
if (strlen(pathname) > 2 && pathname[0] == 'm' &&
-@@ -972,7 +972,7 @@ int bpf_load_common(struct bpf_cfg_in *cfg, const struct bpf_cfg_ops *ops,
+@@ -969,7 +969,7 @@ int bpf_load_common(struct bpf_cfg_in *cfg, const struct bpf_cfg_ops *ops,
int bpf_parse_common(struct bpf_cfg_in *cfg, const struct bpf_cfg_ops *ops)
{
@@ -997,7 +989,7 @@ index c7d45077..5d620f40 100644
if (ops->cbpf_cb) {
opt_tbl[CBPF_BYTECODE] = true;
-@@ -1015,7 +1015,7 @@ int bpf_graft_map(const char *map_path, uint32_t *key, int argc, char **argv)
+@@ -1012,7 +1012,7 @@ int bpf_graft_map(const char *map_path, uint32_t *key, int argc, char **argv)
.argc = argc,
.argv = argv,
};
@@ -1006,7 +998,7 @@ index c7d45077..5d620f40 100644
int ret, prog_fd, map_fd;
uint32_t map_key;
-@@ -1068,7 +1068,7 @@ out_prog:
+@@ -1065,7 +1065,7 @@ out_prog:
int bpf_prog_attach_fd(int prog_fd, int target_fd, enum bpf_attach_type type)
{
@@ -1015,7 +1007,7 @@ index c7d45077..5d620f40 100644
attr.target_fd = target_fd;
attr.attach_bpf_fd = prog_fd;
-@@ -1079,7 +1079,7 @@ int bpf_prog_attach_fd(int prog_fd, int target_fd, enum bpf_attach_type type)
+@@ -1076,7 +1076,7 @@ int bpf_prog_attach_fd(int prog_fd, int target_fd, enum bpf_attach_type type)
int bpf_prog_detach_fd(int target_fd, enum bpf_attach_type type)
{
@@ -1024,16 +1016,16 @@ index c7d45077..5d620f40 100644
attr.target_fd = target_fd;
attr.attach_type = type;
-@@ -1092,7 +1092,7 @@ static int bpf_prog_load_dev(enum bpf_prog_type type,
- const char *license, __u32 ifindex,
- char *log, size_t size_log)
+@@ -1088,7 +1088,7 @@ int bpf_prog_load_dev(enum bpf_prog_type type, const struct bpf_insn *insns,
+ size_t size_insns, const char *license, __u32 ifindex,
+ char *log, size_t size_log)
{
- union bpf_attr attr = {};
+ union bpf_attr attr = {0};
attr.prog_type = type;
attr.insns = bpf_ptr_to_u64(insns);
-@@ -1255,7 +1255,7 @@ static int bpf_map_create(enum bpf_map_type type, uint32_t size_key,
+@@ -1243,7 +1243,7 @@ static int bpf_map_create(enum bpf_map_type type, uint32_t size_key,
uint32_t ifindex, uint32_t btf_id_key,
uint32_t btf_id_val)
{
@@ -1042,7 +1034,7 @@ index c7d45077..5d620f40 100644
attr.map_type = type;
attr.key_size = size_key;
-@@ -1274,7 +1274,7 @@ static int bpf_map_create(enum bpf_map_type type, uint32_t size_key,
+@@ -1262,7 +1262,7 @@ static int bpf_map_create(enum bpf_map_type type, uint32_t size_key,
static int bpf_btf_load(void *btf, size_t size_btf,
char *log, size_t size_log)
{
@@ -1051,7 +1043,7 @@ index c7d45077..5d620f40 100644
attr.btf = bpf_ptr_to_u64(btf);
attr.btf_size = size_btf;
-@@ -1290,7 +1290,7 @@ static int bpf_btf_load(void *btf, size_t size_btf,
+@@ -1278,7 +1278,7 @@ static int bpf_btf_load(void *btf, size_t size_btf,
static int bpf_obj_pin(int fd, const char *pathname)
{
@@ -1060,7 +1052,7 @@ index c7d45077..5d620f40 100644
attr.pathname = bpf_ptr_to_u64(pathname);
attr.bpf_fd = fd;
-@@ -1975,7 +1975,7 @@ static int bpf_map_verify_all_offs(struct bpf_elf_ctx *ctx, int end)
+@@ -1963,7 +1963,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)
{
@@ -1069,7 +1061,7 @@ index c7d45077..5d620f40 100644
int i, sym_num = bpf_map_num_sym(ctx);
__u8 *buff;
-@@ -2481,7 +2481,7 @@ static int bpf_fetch_prog_relo(struct bpf_elf_ctx *ctx, const char *section,
+@@ -2469,7 +2469,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++) {
@@ -1078,7 +1070,7 @@ index c7d45077..5d620f40 100644
ret = bpf_fill_section_data(ctx, i, &data_relo);
if (ret < 0 || data_relo.sec_hdr.sh_type != SHT_REL)
-@@ -2656,7 +2656,7 @@ static int bpf_fill_prog_arrays(struct bpf_elf_ctx *ctx)
+@@ -2644,7 +2644,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) {
@@ -1087,7 +1079,7 @@ index c7d45077..5d620f40 100644
ret = -errno;
if (errno == E2BIG) {
-@@ -2747,7 +2747,7 @@ static bool bpf_pinning_reserved(uint32_t pinning)
+@@ -2735,7 +2735,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;
@@ -1096,7 +1088,7 @@ index c7d45077..5d620f40 100644
uint32_t pinning;
FILE *fp;
int ret;
-@@ -2845,7 +2845,7 @@ static void bpf_get_cfg(struct bpf_elf_ctx *ctx)
+@@ -2833,7 +2833,7 @@ static void bpf_get_cfg(struct bpf_elf_ctx *ctx)
fd = open(path_jit, O_RDONLY);
if (fd > 0) {
@@ -1140,6 +1132,20 @@ index 70ea3d49..36320f77 100644
struct nlmsghdr *answer;
int rc = 0;
+diff --git a/lib/rt_names.c b/lib/rt_names.c
+index ca0680a1..3217f383 100644
+--- a/lib/rt_names.c
++++ b/lib/rt_names.c
+@@ -684,8 +684,7 @@ int nl_proto_a2n(__u32 *id, const char *arg)
+ }
+
+ #define PROTODOWN_REASON_NUM_BITS 32
+-static char *protodown_reason_tab[PROTODOWN_REASON_NUM_BITS] = {
+-};
++static char *protodown_reason_tab[PROTODOWN_REASON_NUM_BITS];
+
+ static int protodown_reason_init;
+
diff --git a/misc/arpd.c b/misc/arpd.c
index 504961cb..ac412e29 100644
--- a/misc/arpd.c
@@ -1163,7 +1169,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 0593627b..8c7fcb0c 100644
+index ad46f9db..8dbb5d75 100644
--- a/misc/ss.c
+++ b/misc/ss.c
@@ -2682,7 +2682,7 @@ static void sctp_timer_print(struct tcpstat *s)
@@ -1202,7 +1208,7 @@ index 0593627b..8c7fcb0c 100644
if (!(diag_arg->f->families & FAMILY_MASK(r->idiag_family)))
return 0;
-@@ -3661,7 +3661,7 @@ static int tcp_show_netlink_file(struct filter *f)
+@@ -3669,7 +3669,7 @@ static int tcp_show_netlink_file(struct filter *f)
int err2;
size_t status, nitems;
struct nlmsghdr *h = (struct nlmsghdr *)buf;
@@ -1211,7 +1217,7 @@ index 0593627b..8c7fcb0c 100644
status = fread(buf, 1, sizeof(*h), fp);
if (status != sizeof(*h)) {
-@@ -3818,7 +3818,7 @@ static int sctp_show(struct filter *f)
+@@ -3826,7 +3826,7 @@ static int sctp_show(struct filter *f)
static int dgram_show_line(char *line, const struct filter *f, int family)
{
@@ -1220,7 +1226,7 @@ index 0593627b..8c7fcb0c 100644
char *loc, *rem, *data;
char opt[256];
int n;
-@@ -3958,7 +3958,7 @@ static bool unix_type_skip(struct sockstat *s, struct filter *f)
+@@ -3966,7 +3966,7 @@ static bool unix_type_skip(struct sockstat *s, struct filter *f)
static void unix_stats_print(struct sockstat *s, struct filter *f)
{
@@ -1229,7 +1235,7 @@ index 0593627b..8c7fcb0c 100644
sock_state_print(s);
-@@ -4271,7 +4271,7 @@ static int packet_show_sock(struct nlmsghdr *nlh, void *arg)
+@@ -4279,7 +4279,7 @@ static int packet_show_sock(struct nlmsghdr *nlh, void *arg)
struct packet_diag_info *pinfo = NULL;
struct packet_diag_ring *ring_rx = NULL, *ring_tx = NULL;
struct rtattr *tb[PACKET_DIAG_MAX+1];
@@ -1238,7 +1244,7 @@ index 0593627b..8c7fcb0c 100644
uint32_t fanout = 0;
bool has_fanout = false;
-@@ -4420,7 +4420,7 @@ static int packet_show_netlink(struct filter *f)
+@@ -4428,7 +4428,7 @@ static int packet_show_netlink(struct filter *f)
static int packet_show_line(char *buf, const struct filter *f, int fam)
{
unsigned long long sk;
@@ -1247,7 +1253,7 @@ index 0593627b..8c7fcb0c 100644
int type, prot, iface, state, rq, uid, ino;
sscanf(buf, "%llx %*d %d %x %d %d %u %u %u",
-@@ -4560,7 +4560,7 @@ static int xdp_show_sock(struct nlmsghdr *nlh, void *arg)
+@@ -4568,7 +4568,7 @@ static int xdp_show_sock(struct nlmsghdr *nlh, void *arg)
struct xdp_diag_umem *umem = NULL;
struct xdp_diag_stats *stats = NULL;
const struct filter *f = arg;
@@ -1256,7 +1262,7 @@ index 0593627b..8c7fcb0c 100644
parse_rtattr(tb, XDP_DIAG_MAX, (struct rtattr *)(msg + 1),
nlh->nlmsg_len - NLMSG_LENGTH(sizeof(*msg)));
-@@ -4645,9 +4645,9 @@ static int netlink_show_one(struct filter *f,
+@@ -4653,9 +4653,9 @@ static int netlink_show_one(struct filter *f,
.remote.family = AF_NETLINK,
};
@@ -1268,7 +1274,7 @@ index 0593627b..8c7fcb0c 100644
if (f->f) {
st.rport = -1;
-@@ -4894,8 +4894,8 @@ static void tipc_sock_addr_print(struct rtattr *net_addr, struct rtattr *id)
+@@ -4902,8 +4902,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);
@@ -1279,7 +1285,7 @@ index 0593627b..8c7fcb0c 100644
sprintf(addr, "%u", node);
sprintf(port, "%u", identity);
-@@ -4905,12 +4905,12 @@ static void tipc_sock_addr_print(struct rtattr *net_addr, struct rtattr *id)
+@@ -4913,12 +4913,12 @@ static void tipc_sock_addr_print(struct rtattr *net_addr, struct rtattr *id)
static int tipc_show_sock(struct nlmsghdr *nlh, void *arg)
{
@@ -1298,7 +1304,7 @@ index 0593627b..8c7fcb0c 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 a11081b8..27290218 100644
+index c684dde4..92397f23 100644
--- a/rdma/dev.c
+++ b/rdma/dev.c
@@ -191,7 +191,7 @@ static void dev_print_node_type(struct rd *rd, struct nlattr **tb)
@@ -1324,10 +1330,10 @@ index bf24b849..620485f1 100644
uint32_t port, idx;
const char *name;
diff --git a/rdma/rdma.c b/rdma/rdma.c
-index 9ea2d17f..4ead3a53 100644
+index 8dc2d3e3..cd72b9f2 100644
--- a/rdma/rdma.c
+++ b/rdma/rdma.c
-@@ -123,7 +123,7 @@ int main(int argc, char **argv)
+@@ -99,7 +99,7 @@ int main(int argc, char **argv)
bool json_output = false;
bool show_raw = false;
bool force = false;
@@ -1368,7 +1374,7 @@ index bfaa47b5..6e07f048 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 313f929a..9b394a88 100644
+index 9e7c4f51..8c875a1c 100644
--- a/rdma/res-cq.c
+++ b/rdma/res-cq.c
@@ -130,7 +130,7 @@ out: if (nla_line[RDMA_NLDEV_ATTR_RES_PID])
@@ -1514,10 +1520,10 @@ index dc12bbe4..2d6393d6 100644
const char *name;
uint32_t idx;
diff --git a/rdma/utils.c b/rdma/utils.c
-index 4d3de4fa..ed493a62 100644
+index f84b102d..20c9bca3 100644
--- a/rdma/utils.c
+++ b/rdma/utils.c
-@@ -489,7 +489,7 @@ int rd_attr_cb(const struct nlattr *attr, void *data)
+@@ -496,7 +496,7 @@ int rd_attr_cb(const struct nlattr *attr, void *data)
int rd_dev_init_cb(const struct nlmsghdr *nlh, void *data)
{
@@ -1677,7 +1683,7 @@ index 2ed5254a..6354400a 100644
argc--;
argv++;
diff --git a/tc/m_bpf.c b/tc/m_bpf.c
-index e8d704b5..7ecd86ef 100644
+index af5ba5ce..ec11be6d 100644
--- a/tc/m_bpf.c
+++ b/tc/m_bpf.c
@@ -77,8 +77,8 @@ static int bpf_parse_opt(struct action_util *a, int *ptr_argc, char ***ptr_argv,
@@ -1692,7 +1698,7 @@ index e8d704b5..7ecd86ef 100644
struct rtattr *tail;
int argc, ret = 0;
diff --git a/tc/m_connmark.c b/tc/m_connmark.c
-index 4b2dc4e2..3d5a203e 100644
+index 640bba9d..877d6e35 100644
--- a/tc/m_connmark.c
+++ b/tc/m_connmark.c
@@ -46,7 +46,7 @@ static int
@@ -1705,7 +1711,7 @@ index 4b2dc4e2..3d5a203e 100644
int argc = *argc_p;
int ok = 0;
diff --git a/tc/m_csum.c b/tc/m_csum.c
-index afbee9c8..bfe0468e 100644
+index 23c59725..9115a2d9 100644
--- a/tc/m_csum.c
+++ b/tc/m_csum.c
@@ -88,7 +88,7 @@ static int
@@ -1718,7 +1724,7 @@ index afbee9c8..bfe0468e 100644
int argc = *argc_p;
char **argv = *argv_p;
diff --git a/tc/m_mirred.c b/tc/m_mirred.c
-index d2bdf407..deb4ce5e 100644
+index 38d8043b..30111430 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,
@@ -1734,7 +1740,7 @@ index d2bdf407..deb4ce5e 100644
while (argc > 0) {
diff --git a/tc/m_nat.c b/tc/m_nat.c
-index 56e8f47c..ef8f75fb 100644
+index 654f9a3b..9ed1613c 100644
--- a/tc/m_nat.c
+++ b/tc/m_nat.c
@@ -83,7 +83,7 @@ bad_val:
@@ -1747,7 +1753,7 @@ index 56e8f47c..ef8f75fb 100644
int argc = *argc_p;
char **argv = *argv_p;
diff --git a/tc/m_pedit.c b/tc/m_pedit.c
-index aa874408..c99e53f3 100644
+index 74c91e8d..5badf4dc 100644
--- a/tc/m_pedit.c
+++ b/tc/m_pedit.c
@@ -511,7 +511,7 @@ done:
@@ -1769,7 +1775,7 @@ index aa874408..c99e53f3 100644
int argc = *argc_p;
char **argv = *argv_p;
diff --git a/tc/m_simple.c b/tc/m_simple.c
-index 70897d6b..6793e6f5 100644
+index bc86be27..79d1c786 100644
--- a/tc/m_simple.c
+++ b/tc/m_simple.c
@@ -97,7 +97,7 @@ static int
@@ -1782,7 +1788,7 @@ index 70897d6b..6793e6f5 100644
char **argv = *argv_p;
int ok = 0;
diff --git a/tc/m_tunnel_key.c b/tc/m_tunnel_key.c
-index bfec9072..3c850f40 100644
+index ca0dff11..4d97b38d 100644
--- a/tc/m_tunnel_key.c
+++ b/tc/m_tunnel_key.c
@@ -317,7 +317,7 @@ static int tunnel_key_parse_tos_ttl(char *str, int type, struct nlmsghdr *n)
@@ -1795,7 +1801,7 @@ index bfec9072..3c850f40 100644
int argc = *argc_p;
struct rtattr *tail;
diff --git a/tc/m_vlan.c b/tc/m_vlan.c
-index 57722b73..d4f0e993 100644
+index 221083df..20ed57f0 100644
--- a/tc/m_vlan.c
+++ b/tc/m_vlan.c
@@ -77,7 +77,7 @@ static int parse_vlan(struct action_util *a, int *argc_p, char ***argv_p,
@@ -1808,7 +1814,7 @@ index 57722b73..d4f0e993 100644
if (matches(*argv, "vlan") != 0)
return -1;
diff --git a/tc/m_xt.c b/tc/m_xt.c
-index 487ba25a..66655a28 100644
+index deaf96a2..af250574 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,
@@ -1834,7 +1840,7 @@ index 77b56825..c0acf492 100644
struct atm_sap sap;
unsigned char hdr[MAX_HDR_LEN];
diff --git a/tc/q_cbq.c b/tc/q_cbq.c
-index 6518ef46..9bee7c1b 100644
+index 4619a37b..965f5ffa 100644
--- a/tc/q_cbq.c
+++ b/tc/q_cbq.c
@@ -50,8 +50,8 @@ static void explain1(char *arg)
@@ -1903,7 +1909,7 @@ index c72a5779..a000bcdd 100644
SPRINT_BUF(b1);
diff --git a/tc/q_fifo.c b/tc/q_fifo.c
-index 61493fbb..b4fa76ae 100644
+index ce82e74d..183878d9 100644
--- a/tc/q_fifo.c
+++ b/tc/q_fifo.c
@@ -31,7 +31,7 @@ static int fifo_parse_opt(struct qdisc_util *qu, int argc, char **argv,
@@ -1916,10 +1922,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 1a51302e..6d94af44 100644
+index 30098065..deba3f85 100644
--- a/tc/q_fq_codel.c
+++ b/tc/q_fq_codel.c
-@@ -244,7 +244,7 @@ static int fq_codel_print_opt(struct qdisc_util *qu, FILE *f, struct rtattr *opt
+@@ -243,7 +243,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)
{
@@ -1929,7 +1935,7 @@ index 1a51302e..6d94af44 100644
SPRINT_BUF(b1);
diff --git a/tc/q_gred.c b/tc/q_gred.c
-index 8a1cecff..7a39281f 100644
+index 89aeb086..0202ce33 100644
--- a/tc/q_gred.c
+++ b/tc/q_gred.c
@@ -304,8 +304,8 @@ gred_parse_vqs(struct tc_gred_info *info, struct rtattr *vqs)
@@ -1943,7 +1949,7 @@ index 8a1cecff..7a39281f 100644
struct rtattr *entry;
unsigned int len;
unsigned int dp;
-@@ -422,7 +422,7 @@ gred_print_stats(struct tc_gred_info *info, struct tc_gred_qopt *qopt)
+@@ -413,7 +413,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)
{
@@ -1953,7 +1959,7 @@ index 8a1cecff..7a39281f 100644
struct tc_gred_sopt *sopt;
struct tc_gred_qopt *qopt;
diff --git a/tc/q_hfsc.c b/tc/q_hfsc.c
-index f34b1b2f..9612df40 100644
+index 81c10210..8180b284 100644
--- a/tc/q_hfsc.c
+++ b/tc/q_hfsc.c
@@ -73,7 +73,7 @@ static int
@@ -1975,7 +1981,7 @@ index f34b1b2f..9612df40 100644
struct rtattr *tail;
diff --git a/tc/q_htb.c b/tc/q_htb.c
-index 52052226..2806c7f1 100644
+index c609e974..a9392afc 100644
--- a/tc/q_htb.c
+++ b/tc/q_htb.c
@@ -109,7 +109,7 @@ static int htb_parse_opt(struct qdisc_util *qu, int argc,
@@ -2001,7 +2007,7 @@ index 8ad9e0b2..7319b1bf 100644
if (argc) {
if (strcmp(*argv, "help") == 0) {
diff --git a/tc/q_netem.c b/tc/q_netem.c
-index d01450fc..42677a29 100644
+index d93e1c73..ccfc62b9 100644
--- a/tc/q_netem.c
+++ b/tc/q_netem.c
@@ -200,17 +200,17 @@ static int netem_parse_opt(struct qdisc_util *qu, int argc, char **argv,
@@ -2029,7 +2035,7 @@ index d01450fc..42677a29 100644
for ( ; argc > 0; --argc, ++argv) {
diff --git a/tc/q_red.c b/tc/q_red.c
-index df788f8f..0b300958 100644
+index fd50d37d..d40b2696 100644
--- a/tc/q_red.c
+++ b/tc/q_red.c
@@ -51,7 +51,7 @@ static int red_parse_opt(struct qdisc_util *qu, int argc, char **argv,
@@ -2042,7 +2048,7 @@ index df788f8f..0b300958 100644
unsigned int avpkt = 0;
double probability = 0.02;
diff --git a/tc/q_sfq.c b/tc/q_sfq.c
-index 2b9bbcd2..a0b84f41 100644
+index d04a440c..be426f51 100644
--- a/tc/q_sfq.c
+++ b/tc/q_sfq.c
@@ -38,7 +38,7 @@ static void explain(void)
@@ -2068,7 +2074,7 @@ index ca81a72c..c792ebf0 100644
while (argc > 0) {
if (strcmp(*argv, "limit") == 0) {
diff --git a/tc/q_tbf.c b/tc/q_tbf.c
-index 5135b1d6..9bbe6b37 100644
+index 4e5bf382..040d8987 100644
--- a/tc/q_tbf.c
+++ b/tc/q_tbf.c
@@ -40,7 +40,7 @@ static int tbf_parse_opt(struct qdisc_util *qu, int argc, char **argv,
@@ -2149,7 +2155,7 @@ index 9b912ceb..edc6c205 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 c591a19f..4adf8bdb 100644
+index 71be2e81..d6aa4605 100644
--- a/tc/tc_filter.c
+++ b/tc/tc_filter.c
@@ -78,9 +78,9 @@ static int tc_filter_modify(int cmd, unsigned int flags, int argc, char **argv)
@@ -2230,7 +2236,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 b7ff911b..ee1140c3 100644
+index 48065897..45b572ec 100644
--- a/tc/tc_util.c
+++ b/tc/tc_util.c
@@ -129,7 +129,7 @@ ok:
@@ -2251,7 +2257,7 @@ index b7ff911b..ee1140c3 100644
if (id_to_name(cls_names, h, clname))
snprintf(buf, blen, "%s#%s", clname, handle);
-@@ -900,7 +900,7 @@ void print_tcstats_attr(FILE *fp, struct rtattr *tb[], char *prefix,
+@@ -740,7 +740,7 @@ void print_tcstats_attr(FILE *fp, struct rtattr *tb[], char *prefix,
}
/* backward compatibility */
if (tb[TCA_STATS]) {
@@ -2554,5 +2560,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.29.2
+2.30.0
diff --git a/pkg/iproute2/patch/0007-Remove-semicolon-after-function-definitions.patch b/pkg/iproute2/patch/0007-Remove-semicolon-after-function-definitions.patch
@@ -1,4 +1,4 @@
-From f75cda0aa33f331ce78eb3a5f9ef150a474534c6 Mon Sep 17 00:00:00 2001
+From 1b949a2da0e4fa94625faebeb3f0e62246be39d0 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
@@ -8,10 +8,10 @@ Subject: [PATCH] Remove semicolon after function definitions
1 file changed, 11 insertions(+), 11 deletions(-)
diff --git a/lib/json_print.c b/lib/json_print.c
-index fe0705bf..ecaab98b 100644
+index 994a2f8d..9bc77e3c 100644
--- a/lib/json_print.c
+++ b/lib/json_print.c
-@@ -140,15 +140,15 @@ void close_json_array(enum output_type type, const char *str)
+@@ -137,15 +137,15 @@ void close_json_array(enum output_type type, const char *str)
} \
return ret; \
}
@@ -36,7 +36,7 @@ index fe0705bf..ecaab98b 100644
#undef _PRINT_FUNC
#define _PRINT_NAME_VALUE_FUNC(type_name, type, format_char) \
-@@ -160,8 +160,8 @@ _PRINT_FUNC(float, double);
+@@ -157,8 +157,8 @@ _PRINT_FUNC(float, double);
"%s %%"#format_char, name); \
print_##type_name(PRINT_ANY, name, format, value); \
}
@@ -48,5 +48,5 @@ index fe0705bf..ecaab98b 100644
int print_color_string(enum output_type type,
--
-2.27.0
+2.30.0
diff --git a/pkg/iproute2/patch/0008-Don-t-omit-second-operand-to-operator.patch b/pkg/iproute2/patch/0008-Don-t-omit-second-operand-to-operator.patch
@@ -1,4 +1,4 @@
-From 2157d8d8a8195c693b33715b4473920a5d5a0574 Mon Sep 17 00:00:00 2001
+From 60fe0f1fee7ddc97eb6a136beaaeb218cb497441 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 omit second operand to '?' operator
@@ -7,13 +7,13 @@ Subject: [PATCH] Don't omit second operand to '?' operator
ip/iproute_lwtunnel.c | 4 ++--
ip/iptunnel.c | 7 ++++++-
ip/iptuntap.c | 2 +-
- lib/bpf.c | 2 +-
+ lib/bpf_legacy.c | 2 +-
lib/utils.c | 7 +++++--
misc/ss.c | 26 ++++++++++++++++++--------
6 files changed, 33 insertions(+), 15 deletions(-)
diff --git a/ip/iproute_lwtunnel.c b/ip/iproute_lwtunnel.c
-index 9b4f0885..81d55521 100644
+index 566fc7ea..df9df4ca 100644
--- a/ip/iproute_lwtunnel.c
+++ b/ip/iproute_lwtunnel.c
@@ -227,7 +227,7 @@ static const char *format_action_type(int action)
@@ -57,7 +57,7 @@ index 92b86c17..6a2da548 100644
static void print_tunnel(const void *t)
diff --git a/ip/iptuntap.c b/ip/iptuntap.c
-index f1bf0b18..41fa1649 100644
+index 061a3312..4d1fd55f 100644
--- a/ip/iptuntap.c
+++ b/ip/iptuntap.c
@@ -348,7 +348,7 @@ static void show_processes(const char *name)
@@ -69,11 +69,11 @@ index f1bf0b18..41fa1649 100644
print_uint(PRINT_ANY, "pid",
"(%d)", pid);
-diff --git a/lib/bpf.c b/lib/bpf.c
-index 5d620f40..223fb232 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)
+diff --git a/lib/bpf_legacy.c b/lib/bpf_legacy.c
+index 86790fe8..05824e52 100644
+--- a/lib/bpf_legacy.c
++++ b/lib/bpf_legacy.c
+@@ -765,7 +765,7 @@ static const char *bpf_get_work_dir(enum bpf_prog_type type)
mnt = bpf_find_mntpt("bpf", BPF_FS_MAGIC, bpf_tmp,
sizeof(bpf_tmp), bpf_known_mnts);
if (!mnt) {
@@ -83,7 +83,7 @@ index 5d620f40..223fb232 100644
if (!ret)
ret = bpf_mnt_fs(mnt);
diff --git a/lib/utils.c b/lib/utils.c
-index 063a0611..b863af6f 100644
+index b324096a..b2338cfd 100644
--- a/lib/utils.c
+++ b/lib/utils.c
@@ -943,8 +943,10 @@ int __get_hz(void)
@@ -108,7 +108,7 @@ index 063a0611..b863af6f 100644
return hz;
return HZ;
diff --git a/misc/ss.c b/misc/ss.c
-index 8c7fcb0c..1a6a4a80 100644
+index 8dbb5d75..c4f37660 100644
--- a/misc/ss.c
+++ b/misc/ss.c
@@ -482,7 +482,9 @@ static FILE *generic_proc_open(const char *env, const char *name)
@@ -154,7 +154,7 @@ index 8c7fcb0c..1a6a4a80 100644
}
if (is_port)
-@@ -3962,9 +3971,9 @@ static void unix_stats_print(struct sockstat *s, struct filter *f)
+@@ -3970,9 +3979,9 @@ static void unix_stats_print(struct sockstat *s, struct filter *f)
sock_state_print(s);
@@ -166,7 +166,7 @@ index 8c7fcb0c..1a6a4a80 100644
int_to_str(s->rport, port_name), NULL);
proc_ctx_print(s);
-@@ -4167,7 +4176,7 @@ static int unix_show(struct filter *f)
+@@ -4175,7 +4184,7 @@ static int unix_show(struct filter *f)
if (!p)
u->peer_name = "?";
else
@@ -175,7 +175,7 @@ index 8c7fcb0c..1a6a4a80 100644
}
if (f->f) {
-@@ -4671,9 +4680,10 @@ static int netlink_show_one(struct filter *f,
+@@ -4679,9 +4688,10 @@ static int netlink_show_one(struct filter *f,
strncpy(procname, "kernel", 7);
} else if (pid > 0) {
FILE *fp;
@@ -187,7 +187,7 @@ index 8c7fcb0c..1a6a4a80 100644
if ((fp = fopen(procname, "r")) != NULL) {
if (fscanf(fp, "%*d (%[^)])", procname) == 1) {
snprintf(procname+strlen(procname),
-@@ -4716,7 +4726,7 @@ static int netlink_show_one(struct filter *f,
+@@ -4724,7 +4734,7 @@ static int netlink_show_one(struct filter *f,
else if (pid > 0)
getpidcon(pid, &pid_context);
@@ -197,5 +197,5 @@ index 8c7fcb0c..1a6a4a80 100644
}
--
-2.29.2
+2.30.0
diff --git a/pkg/iproute2/patch/0010-ip-Fix-get_link_kind-when-linked-statically.patch b/pkg/iproute2/patch/0010-ip-Fix-get_link_kind-when-linked-statically.patch
@@ -1,4 +1,4 @@
-From 9a6fd13d2d2a51ea1f0dd42f8f3d7306a3711180 Mon Sep 17 00:00:00 2001
+From 566697dc815cbc6121892303dc9588fcd77a1ace 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(+), 10 deletions(-)
diff --git a/ip/iplink.c b/ip/iplink.c
-index 4bd8c3cd..f40c8ccc 100644
+index 1a88c8be..caa8aa01 100644
--- a/ip/iplink.c
+++ b/ip/iplink.c
-@@ -144,7 +144,6 @@ static int on_off(const char *msg, const char *realval)
+@@ -141,7 +141,6 @@ static int on_off(const char *msg, const char *realval)
return -1;
}
@@ -19,7 +19,7 @@ index 4bd8c3cd..f40c8ccc 100644
static struct link_util *linkutil_list;
struct link_util *get_link_kind(const char *id)
-@@ -153,21 +152,98 @@ struct link_util *get_link_kind(const char *id)
+@@ -150,21 +149,98 @@ struct link_util *get_link_kind(const char *id)
char buf[256];
struct link_util *l;
@@ -111,7 +111,7 @@ index 4bd8c3cd..f40c8ccc 100644
if (strcmp(l->id, id) == 0)
return l;
- snprintf(buf, sizeof(buf), LIBDIR "/ip/link_%s.so", id);
+ snprintf(buf, sizeof(buf), "%s/link_%s.so", get_ip_lib_dir(), id);
dlh = dlopen(buf, RTLD_LAZY);
- if (dlh == NULL) {
- /* look in current binary, only open once */
@@ -128,5 +128,5 @@ index 4bd8c3cd..f40c8ccc 100644
snprintf(buf, sizeof(buf), "%s_link_util", id);
l = dlsym(dlh, buf);
--
-2.29.2
+2.30.0
diff --git a/pkg/iproute2/patch/0012-Use-static-inline-function-for-min.patch b/pkg/iproute2/patch/0012-Use-static-inline-function-for-min.patch
@@ -1,4 +1,4 @@
-From 6d637159a5d439f45e4e5574f6f267a7d258daae Mon Sep 17 00:00:00 2001
+From ede857b624d5f9002c512565ccc46c99ad61343f Mon Sep 17 00:00:00 2001
From: Michael Forney <mforney@mforney.org>
Date: Mon, 24 Jun 2019 17:38:56 -0700
Subject: [PATCH] Use static inline function for min()
@@ -10,10 +10,10 @@ It is only called to calculate a minimum `int`, so specialize for
1 file changed, 4 insertions(+), 7 deletions(-)
diff --git a/include/utils.h b/include/utils.h
-index 001491a1..3e4bd02e 100644
+index 17043925..0ca480f9 100644
--- a/include/utils.h
+++ b/include/utils.h
-@@ -272,13 +272,10 @@ unsigned int print_name_and_link(const char *fmt,
+@@ -274,13 +274,10 @@ unsigned int print_name_and_link(const char *fmt,
# define offsetof(type, member) ((size_t) &((type *)0)->member)
#endif
@@ -32,5 +32,5 @@ index 001491a1..3e4bd02e 100644
#ifndef __check_format_string
# define __check_format_string(pos_str, pos_args) \
--
-2.25.0
+2.30.0
diff --git a/pkg/iproute2/patch/0015-Revert-change-of-BPF_F_-to-enum-constants.patch b/pkg/iproute2/patch/0015-Revert-change-of-BPF_F_-to-enum-constants.patch
@@ -1,4 +1,4 @@
-From ee80eb674b8bd64d3c0b131037bdfed42993863c Mon Sep 17 00:00:00 2001
+From 554c58f6655fa0158e1ac437f2b9eb25e5fc1f5b Mon Sep 17 00:00:00 2001
From: Michael Forney <mforney@mforney.org>
Date: Tue, 2 Jun 2020 03:56:03 -0700
Subject: [PATCH] Revert change of BPF_F_* to enum constants
@@ -8,10 +8,10 @@ Subject: [PATCH] Revert change of BPF_F_* to enum constants
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/include/uapi/linux/bpf.h b/include/uapi/linux/bpf.h
-index 21f967a2..7506520c 100644
+index bd28bc76..c52a30d7 100644
--- a/include/uapi/linux/bpf.h
+++ b/include/uapi/linux/bpf.h
-@@ -3965,12 +3965,10 @@ enum {
+@@ -4060,12 +4060,10 @@ enum {
/* BPF_FUNC_perf_event_output, BPF_FUNC_perf_event_read and
* BPF_FUNC_perf_event_read_value flags.
*/
@@ -28,5 +28,5 @@ index 21f967a2..7506520c 100644
/* Current network namespace */
enum {
--
-2.29.2
+2.30.0
diff --git a/pkg/iproute2/ver b/pkg/iproute2/ver
@@ -1 +1 @@
-5.10.0 r0
+5.11.0 r0