commit: cac232f56ce841a4bebcd1e8f567d1c52fea2b1c
parent 78c9216c9048d4d45f7906cf41cb29663a7367e1
Author: Michael Forney <mforney@mforney.org>
Date: Fri, 16 Oct 2020 18:35:16 -0700
iproute2: Update to 5.9.0
Diffstat:
5 files changed, 117 insertions(+), 116 deletions(-)
diff --git a/pkg/iproute2/gen.lua b/pkg/iproute2/gen.lua
@@ -1,6 +1,7 @@
cflags{
'-Wall', '-Wformat=2', '-Wmissing-declarations', '-Wmissing-prototypes',
'-Wold-style-definition', '-Wstrict-prototypes', '-Wno-maybe-uninitialized',
+ '-Wno-format-truncation',
'-Wno-cpp', -- we don't have libmnl
'-D _GNU_SOURCE',
'-D HAVE_SETNS',
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 e3bf09403c668462a062c9c7ec4a428540cc969a Mon Sep 17 00:00:00 2001
+From 15d284ff179b0af83e13bba21912cf9aadf422aa 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
@@ -125,10 +125,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 0982faef..5de5b068 100644
+index 007677a5..bcdc700c 100644
--- a/devlink/devlink.c
+++ b/devlink/devlink.c
-@@ -596,7 +596,7 @@ static int attr_stats_cb(const struct nlattr *attr, void *data)
+@@ -748,7 +748,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 +137,7 @@ index 0982faef..5de5b068 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
struct dl *dl = data;
struct ifname_map *ifname_map;
-@@ -2227,7 +2227,7 @@ static void pr_out_eswitch(struct dl *dl, struct nlattr **tb)
+@@ -2310,7 +2310,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 +146,7 @@ index 0982faef..5de5b068 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
-@@ -2395,7 +2395,7 @@ static const struct param_val_conv param_val_conv[] = {
+@@ -2478,7 +2478,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 +155,7 @@ index 0982faef..5de5b068 100644
struct nlattr *val_attr;
const char *vstr;
bool conv_exists;
-@@ -2477,7 +2477,7 @@ static void pr_out_param_value(struct dl *dl, const char *nla_name,
+@@ -2560,7 +2560,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 +164,7 @@ index 0982faef..5de5b068 100644
struct nlattr *param_value_attr;
const char *nla_name;
int nla_type;
-@@ -2520,7 +2520,7 @@ static void pr_out_param(struct dl *dl, struct nlattr **tb, bool array)
+@@ -2603,7 +2603,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 +173,7 @@ index 0982faef..5de5b068 100644
struct dl *dl = data;
mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
-@@ -2546,8 +2546,8 @@ struct param_ctx {
+@@ -2629,8 +2629,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 +184,7 @@ index 0982faef..5de5b068 100644
struct nlattr *param_value_attr;
enum devlink_param_cmode cmode;
struct param_ctx *ctx = data;
-@@ -2571,7 +2571,7 @@ static int cmd_dev_param_set_cb(const struct nlmsghdr *nlh, void *data)
+@@ -2654,7 +2654,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 +193,7 @@ index 0982faef..5de5b068 100644
struct nlattr *val_attr;
err = mnl_attr_parse_nested(param_value_attr,
-@@ -2613,7 +2613,7 @@ static int cmd_dev_param_set_cb(const struct nlmsghdr *nlh, void *data)
+@@ -2696,7 +2696,7 @@ static int cmd_dev_param_set_cb(const struct nlmsghdr *nlh, void *data)
static int cmd_dev_param_set(struct dl *dl)
{
@@ -202,7 +202,7 @@ index 0982faef..5de5b068 100644
struct nlmsghdr *nlh;
bool conv_exists;
uint32_t val_u32;
-@@ -2768,7 +2768,7 @@ static int cmd_dev_param(struct dl *dl)
+@@ -2851,7 +2851,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;
@@ -211,7 +211,7 @@ index 0982faef..5de5b068 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
uint8_t reload_failed = 0;
-@@ -2840,7 +2840,7 @@ static void pr_out_versions_single(struct dl *dl, const struct nlmsghdr *nlh,
+@@ -2923,7 +2923,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 +220,7 @@ index 0982faef..5de5b068 100644
const char *ver_value;
const char *ver_name;
int err;
-@@ -2920,7 +2920,7 @@ static void pr_out_info(struct dl *dl, const struct nlmsghdr *nlh,
+@@ -3013,7 +3013,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 +229,7 @@ index 0982faef..5de5b068 100644
bool has_versions, has_info;
struct dl *dl = data;
-@@ -3316,7 +3316,7 @@ static void pr_out_port(struct dl *dl, struct nlattr **tb)
+@@ -3451,7 +3451,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 +238,7 @@ index 0982faef..5de5b068 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
-@@ -3460,7 +3460,7 @@ static void pr_out_sb(struct dl *dl, struct nlattr **tb)
+@@ -3642,7 +3642,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 +247,7 @@ index 0982faef..5de5b068 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
-@@ -3539,7 +3539,7 @@ static void pr_out_sb_pool(struct dl *dl, struct nlattr **tb)
+@@ -3721,7 +3721,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 +256,7 @@ index 0982faef..5de5b068 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
-@@ -3625,7 +3625,7 @@ static void pr_out_sb_port_pool(struct dl *dl, struct nlattr **tb)
+@@ -3807,7 +3807,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 +265,7 @@ index 0982faef..5de5b068 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
-@@ -3728,7 +3728,7 @@ static void pr_out_sb_tc_bind(struct dl *dl, struct nlattr **tb)
+@@ -3910,7 +3910,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 +274,7 @@ index 0982faef..5de5b068 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
-@@ -4016,7 +4016,7 @@ static void cmd_sb_occ_port_pool_process(struct occ_show *occ_show,
+@@ -4198,7 +4198,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 +283,7 @@ index 0982faef..5de5b068 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
-@@ -4067,7 +4067,7 @@ static void cmd_sb_occ_tc_pool_process(struct occ_show *occ_show,
+@@ -4249,7 +4249,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 +292,7 @@ index 0982faef..5de5b068 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
-@@ -4353,7 +4353,7 @@ static void pr_out_trap_policer(struct dl *dl, struct nlattr **tb, bool array);
+@@ -4536,7 +4536,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 +301,7 @@ index 0982faef..5de5b068 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
uint8_t cmd = genl->cmd;
-@@ -4880,7 +4880,7 @@ static void pr_out_dpipe_headers(struct dpipe_ctx *ctx,
+@@ -5064,7 +5064,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 +310,7 @@ index 0982faef..5de5b068 100644
const char *name;
int err;
-@@ -4931,7 +4931,7 @@ static unsigned int dpipe_header_field_count_get(struct nlattr *nla_fields)
+@@ -5115,7 +5115,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 +319,7 @@ index 0982faef..5de5b068 100644
struct dpipe_header *header;
unsigned int fields_count;
const char *header_name;
-@@ -4987,7 +4987,7 @@ static int dpipe_headers_get(struct dpipe_ctx *ctx, struct nlattr **tb)
+@@ -5171,7 +5171,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 +328,7 @@ index 0982faef..5de5b068 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
int err;
-@@ -5009,7 +5009,7 @@ static int cmd_dpipe_header_cb(const struct nlmsghdr *nlh, void *data)
+@@ -5193,7 +5193,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 +337,7 @@ index 0982faef..5de5b068 100644
uint16_t flags = NLM_F_REQUEST | NLM_F_ACK;
int err;
-@@ -5104,7 +5104,7 @@ static void pr_out_dpipe_action(struct dpipe_action *action,
+@@ -5288,7 +5288,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 +346,7 @@ index 0982faef..5de5b068 100644
int err;
err = mnl_attr_parse_nested(nl, attr_cb, nla_action);
-@@ -5189,7 +5189,7 @@ static int dpipe_match_parse(struct dpipe_match *match,
+@@ -5373,7 +5373,7 @@ static int dpipe_match_parse(struct dpipe_match *match,
struct nlattr *nl)
{
@@ -355,7 +355,7 @@ index 0982faef..5de5b068 100644
int err;
err = mnl_attr_parse_nested(nl, attr_cb, nla_match);
-@@ -5294,7 +5294,7 @@ resource_path_print(struct dl *dl, struct resources *resources,
+@@ -5478,7 +5478,7 @@ resource_path_print(struct dl *dl, struct resources *resources,
static int dpipe_table_show(struct dpipe_ctx *ctx, struct nlattr *nl)
{
@@ -364,7 +364,7 @@ index 0982faef..5de5b068 100644
struct dpipe_table *table;
uint32_t resource_units;
bool counters_enabled;
-@@ -5388,7 +5388,7 @@ err_table_show:
+@@ -5572,7 +5572,7 @@ err_table_show:
static int cmd_dpipe_table_show_cb(const struct nlmsghdr *nlh, void *data)
{
struct dpipe_ctx *ctx = data;
@@ -373,7 +373,7 @@ index 0982faef..5de5b068 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
-@@ -5406,8 +5406,8 @@ static int cmd_resource_dump_cb(const struct nlmsghdr *nlh, void *data);
+@@ -5590,8 +5590,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 +384,7 @@ index 0982faef..5de5b068 100644
uint16_t flags = NLM_F_REQUEST;
int err;
-@@ -5664,7 +5664,7 @@ static void pr_out_dpipe_entry_value(struct dpipe_ctx *ctx,
+@@ -5848,7 +5848,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 +393,7 @@ index 0982faef..5de5b068 100644
struct dpipe_match match;
int err;
-@@ -5695,7 +5695,7 @@ err_match_parse:
+@@ -5879,7 +5879,7 @@ err_match_parse:
static int dpipe_entry_action_value_show(struct dpipe_ctx *ctx,
struct nlattr *nl)
{
@@ -402,7 +402,7 @@ index 0982faef..5de5b068 100644
struct dpipe_action action;
int err;
-@@ -5751,7 +5751,7 @@ dpipe_tables_match_values_show(struct dpipe_ctx *ctx,
+@@ -5935,7 +5935,7 @@ dpipe_tables_match_values_show(struct dpipe_ctx *ctx,
static int dpipe_entry_show(struct dpipe_ctx *ctx, struct nlattr *nl)
{
@@ -411,7 +411,7 @@ index 0982faef..5de5b068 100644
uint32_t entry_index;
uint64_t counter;
int err;
-@@ -5815,7 +5815,7 @@ err_entry_show:
+@@ -5999,7 +5999,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 +420,7 @@ index 0982faef..5de5b068 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
-@@ -5831,7 +5831,7 @@ static int cmd_dpipe_table_entry_dump_cb(const struct nlmsghdr *nlh, void *data)
+@@ -6015,7 +6015,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 +429,7 @@ index 0982faef..5de5b068 100644
uint16_t flags = NLM_F_REQUEST;
int err;
-@@ -5940,7 +5940,7 @@ static int
+@@ -6124,7 +6124,7 @@ static int
resource_get(struct resource_ctx *ctx, struct resource *resource,
struct resource *parent_resource, struct nlattr *nl)
{
@@ -438,7 +438,7 @@ index 0982faef..5de5b068 100644
struct nlattr *nla_child_resource;
struct nlattr *nla_resources;
bool top = false;
-@@ -6088,7 +6088,7 @@ static int resources_get(struct resource_ctx *ctx, struct nlattr **tb)
+@@ -6272,7 +6272,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 +447,7 @@ index 0982faef..5de5b068 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
int err;
-@@ -6112,8 +6112,8 @@ static int cmd_resource_dump_cb(const struct nlmsghdr *nlh, void *data)
+@@ -6296,8 +6296,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 +458,7 @@ index 0982faef..5de5b068 100644
int err;
err = dl_argv_parse(dl, DL_OPT_HANDLE, 0);
-@@ -6208,7 +6208,7 @@ err_resource_lookup:
+@@ -6392,7 +6392,7 @@ err_resource_lookup:
static int cmd_resource_set(struct dl *dl)
{
struct nlmsghdr *nlh;
@@ -467,7 +467,7 @@ index 0982faef..5de5b068 100644
int err;
err = resource_ctx_init(&ctx, dl);
-@@ -6320,7 +6320,7 @@ static void pr_out_region_snapshots_id(struct dl *dl, struct nlattr **tb, int in
+@@ -6504,7 +6504,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 +476,7 @@ index 0982faef..5de5b068 100644
struct nlattr *nla_sanpshot;
int err, index = 0;
-@@ -6361,7 +6361,7 @@ static void pr_out_region(struct dl *dl, struct nlattr **tb)
+@@ -6545,7 +6545,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 +485,7 @@ index 0982faef..5de5b068 100644
struct dl *dl = data;
mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
-@@ -6417,8 +6417,8 @@ static int cmd_region_read_cb(const struct nlmsghdr *nlh, void *data)
+@@ -6601,8 +6601,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 +496,7 @@ index 0982faef..5de5b068 100644
struct dl *dl = data;
int err;
-@@ -6764,7 +6764,7 @@ static int cmd_fmsg_nest(struct fmsg_cb_data *fmsg_data, uint8_t nest_value,
+@@ -6949,7 +6949,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,24 +505,24 @@ index 0982faef..5de5b068 100644
struct fmsg_cb_data *fmsg_data = data;
struct dl *dl = fmsg_data->dl;
struct nlattr *nla_object;
-@@ -6945,7 +6945,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)
+@@ -7133,7 +7133,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)
{
- struct nlattr *tb[DEVLINK_ATTR_MAX + 1] = {};
+ struct nlattr *tb[DEVLINK_ATTR_MAX + 1] = {0};
enum devlink_health_reporter_state state;
int err;
-@@ -6997,7 +6997,7 @@ static void pr_out_health(struct dl *dl, struct nlattr **tb_health)
+@@ -7204,7 +7204,7 @@ struct health_ctx {
static int cmd_health_show_cb(const struct nlmsghdr *nlh, void *data)
{
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
- struct nlattr *tb[DEVLINK_ATTR_MAX + 1] = {};
+ struct nlattr *tb[DEVLINK_ATTR_MAX + 1] = {0};
- struct dl *dl = data;
+ struct health_ctx *ctx = data;
+ struct dl *dl = ctx->dl;
- mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
diff --git a/devlink/mnlg.c b/devlink/mnlg.c
index c7d25e87..baeda3d8 100644
--- a/devlink/mnlg.c
@@ -568,7 +568,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 ccf67d1d..f1dea4de 100644
+index 2b4cb48a..3a8884b4 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])
@@ -634,7 +634,7 @@ 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 7d4b244d..f0a9c57b 100644
+index 5ec33a98..dc294a20 100644
--- a/ip/iplink.c
+++ b/ip/iplink.c
@@ -1233,7 +1233,7 @@ static int set_mtu(const char *dev, int mtu)
@@ -673,7 +673,7 @@ index 18289ecd..1349e54e 100644
fprintf(stderr, "incomplete dump message\n");
return -1;
diff --git a/ip/ipmaddr.c b/ip/ipmaddr.c
-index 02e923bf..44699b9e 100644
+index b7600424..3084b462 100644
--- a/ip/ipmaddr.c
+++ b/ip/ipmaddr.c
@@ -289,7 +289,7 @@ static int multiaddr_list(int argc, char **argv)
@@ -683,10 +683,10 @@ index 02e923bf..44699b9e 100644
- struct ifreq ifr = {};
+ struct ifreq ifr = {0};
int family;
- int fd;
+ int fd, len;
diff --git a/ip/ipntable.c b/ip/ipntable.c
-index ddee4905..a56c71e5 100644
+index b5b06a3b..fb7119d9 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)
@@ -770,7 +770,7 @@ index 91d3512b..f1bf0b18 100644
int err;
diff --git a/ip/ipxfrm.c b/ip/ipxfrm.c
-index 92afb7f8..4043a07c 100644
+index bae568f8..68aea0cb 100644
--- a/ip/ipxfrm.c
+++ b/ip/ipxfrm.c
@@ -907,7 +907,7 @@ void xfrm_xfrma_print(struct rtattr *tb[], __u16 family,
@@ -791,7 +791,7 @@ index 92afb7f8..4043a07c 100644
int force_spi = xfrm_xfrmproto_is_ipsec(xsinfo->id.proto);
xfrm_id_info_print(&xsinfo->saddr, &xsinfo->id, xsinfo->mode,
-@@ -995,7 +995,7 @@ void xfrm_policy_info_print(struct xfrm_userpolicy_info *xpinfo,
+@@ -998,7 +998,7 @@ void xfrm_policy_info_print(struct xfrm_userpolicy_info *xpinfo,
struct rtattr *tb[], FILE *fp, const char *prefix,
const char *title)
{
@@ -800,7 +800,7 @@ index 92afb7f8..4043a07c 100644
xfrm_selector_print(&xpinfo->sel, preferred_family, fp, title);
-@@ -1096,8 +1096,8 @@ int xfrm_id_parse(xfrm_address_t *saddr, struct xfrm_id *id, __u16 *family,
+@@ -1099,8 +1099,8 @@ int xfrm_id_parse(xfrm_address_t *saddr, struct xfrm_id *id, __u16 *family,
{
int argc = *argcp;
char **argv = *argvp;
@@ -811,7 +811,7 @@ index 92afb7f8..4043a07c 100644
while (1) {
if (strcmp(*argv, "src") == 0) {
-@@ -1404,8 +1404,8 @@ int xfrm_selector_parse(struct xfrm_selector *sel, int *argcp, char ***argvp)
+@@ -1407,8 +1407,8 @@ int xfrm_selector_parse(struct xfrm_selector *sel, int *argcp, char ***argvp)
{
int argc = *argcp;
char **argv = *argvp;
@@ -869,10 +869,10 @@ index 7cc00e7c..fc593008 100644
while (argc > 0) {
if (strcmp(*argv, "ptype") == 0) {
diff --git a/ip/xfrm_state.c b/ip/xfrm_state.c
-index f4bf3356..821763f3 100644
+index ddf784ca..cea6033f 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)
+@@ -307,9 +307,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,
};
@@ -885,7 +885,7 @@ index f4bf3356..821763f3 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)
+@@ -327,7 +327,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];
@@ -894,7 +894,7 @@ index f4bf3356..821763f3 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)
+@@ -396,7 +396,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;
@@ -903,7 +903,7 @@ index f4bf3356..821763f3 100644
if (coap)
duparg("coa", *argv);
-@@ -472,7 +472,7 @@ static int xfrm_state_modify(int cmd, unsigned int flags, int argc, char **argv)
+@@ -474,7 +474,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];
@@ -1163,10 +1163,10 @@ 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 35066bf6..e2e3f1ec 100644
+index e5565725..cfc430cc 100644
--- a/misc/ss.c
+++ b/misc/ss.c
-@@ -2669,7 +2669,7 @@ static void sctp_timer_print(struct tcpstat *s)
+@@ -2681,7 +2681,7 @@ static void sctp_timer_print(struct tcpstat *s)
static int tcp_show_line(char *line, const struct filter *f, int family)
{
int rto = 0, ato = 0;
@@ -1175,7 +1175,7 @@ index 35066bf6..e2e3f1ec 100644
char *loc, *rem, *data;
char opt[256];
int n;
-@@ -2936,7 +2936,7 @@ static void tcp_show_info(const struct nlmsghdr *nlh, struct inet_diag_msg *r,
+@@ -2948,7 +2948,7 @@ static void tcp_show_info(const struct nlmsghdr *nlh, struct inet_diag_msg *r,
struct rtattr *tb[])
{
double rtt = 0;
@@ -1184,7 +1184,7 @@ index 35066bf6..e2e3f1ec 100644
s.ss.state = r->idiag_state;
-@@ -3233,7 +3233,7 @@ static int inet_show_sock(struct nlmsghdr *nlh,
+@@ -3294,7 +3294,7 @@ static int inet_show_sock(struct nlmsghdr *nlh,
inet_stats_print(s, v6only);
if (show_options) {
@@ -1193,7 +1193,7 @@ index 35066bf6..e2e3f1ec 100644
t.timer = r->idiag_timer;
t.timeout = r->idiag_expires;
-@@ -3460,7 +3460,7 @@ static int show_one_inet_sock(struct nlmsghdr *h, void *arg)
+@@ -3536,7 +3536,7 @@ static int show_one_inet_sock(struct nlmsghdr *h, void *arg)
int err;
struct inet_diag_arg *diag_arg = arg;
struct inet_diag_msg *r = NLMSG_DATA(h);
@@ -1202,7 +1202,7 @@ index 35066bf6..e2e3f1ec 100644
if (!(diag_arg->f->families & FAMILY_MASK(r->idiag_family)))
return 0;
-@@ -3549,7 +3549,7 @@ static int tcp_show_netlink_file(struct filter *f)
+@@ -3625,7 +3625,7 @@ static int tcp_show_netlink_file(struct filter *f)
int err2;
size_t status, nitems;
struct nlmsghdr *h = (struct nlmsghdr *)buf;
@@ -1211,7 +1211,7 @@ index 35066bf6..e2e3f1ec 100644
status = fread(buf, 1, sizeof(*h), fp);
if (status != sizeof(*h)) {
-@@ -3694,7 +3694,7 @@ static int sctp_show(struct filter *f)
+@@ -3782,7 +3782,7 @@ static int sctp_show(struct filter *f)
static int dgram_show_line(char *line, const struct filter *f, int family)
{
@@ -1220,7 +1220,7 @@ index 35066bf6..e2e3f1ec 100644
char *loc, *rem, *data;
char opt[256];
int n;
-@@ -3834,7 +3834,7 @@ static bool unix_type_skip(struct sockstat *s, struct filter *f)
+@@ -3922,7 +3922,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 +1229,7 @@ index 35066bf6..e2e3f1ec 100644
sock_state_print(s);
-@@ -4147,7 +4147,7 @@ static int packet_show_sock(struct nlmsghdr *nlh, void *arg)
+@@ -4235,7 +4235,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 +1238,7 @@ index 35066bf6..e2e3f1ec 100644
uint32_t fanout = 0;
bool has_fanout = false;
-@@ -4296,7 +4296,7 @@ static int packet_show_netlink(struct filter *f)
+@@ -4384,7 +4384,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 +1247,7 @@ index 35066bf6..e2e3f1ec 100644
int type, prot, iface, state, rq, uid, ino;
sscanf(buf, "%llx %*d %d %x %d %d %u %u %u",
-@@ -4420,7 +4420,7 @@ static int xdp_show_sock(struct nlmsghdr *nlh, void *arg)
+@@ -4508,7 +4508,7 @@ static int xdp_show_sock(struct nlmsghdr *nlh, void *arg)
struct xdp_diag_info *info = NULL;
struct xdp_diag_umem *umem = NULL;
const struct filter *f = arg;
@@ -1256,7 +1256,7 @@ index 35066bf6..e2e3f1ec 100644
parse_rtattr(tb, XDP_DIAG_MAX, (struct rtattr *)(msg + 1),
nlh->nlmsg_len - NLMSG_LENGTH(sizeof(*msg)));
-@@ -4501,9 +4501,9 @@ static int netlink_show_one(struct filter *f,
+@@ -4589,9 +4589,9 @@ static int netlink_show_one(struct filter *f,
.remote.family = AF_NETLINK,
};
@@ -1268,7 +1268,7 @@ index 35066bf6..e2e3f1ec 100644
if (f->f) {
st.rport = -1;
-@@ -4750,8 +4750,8 @@ static void tipc_sock_addr_print(struct rtattr *net_addr, struct rtattr *id)
+@@ -4838,8 +4838,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 +1279,7 @@ index 35066bf6..e2e3f1ec 100644
sprintf(addr, "%u", node);
sprintf(port, "%u", identity);
-@@ -4761,12 +4761,12 @@ static void tipc_sock_addr_print(struct rtattr *net_addr, struct rtattr *id)
+@@ -4849,12 +4849,12 @@ static void tipc_sock_addr_print(struct rtattr *net_addr, struct rtattr *id)
static int tipc_show_sock(struct nlmsghdr *nlh, void *arg)
{
@@ -1324,12 +1324,12 @@ index bf24b849..620485f1 100644
uint32_t port, idx;
const char *name;
diff --git a/rdma/rdma.c b/rdma/rdma.c
-index d1957465..0a8e87b5 100644
+index 9ea2d17f..4ead3a53 100644
--- a/rdma/rdma.c
+++ b/rdma/rdma.c
-@@ -121,7 +121,7 @@ int main(int argc, char **argv)
- bool show_details = false;
+@@ -123,7 +123,7 @@ int main(int argc, char **argv)
bool json_output = false;
+ bool show_raw = false;
bool force = false;
- struct rd rd = {};
+ struct rd rd = {0};
@@ -1337,10 +1337,10 @@ index d1957465..0a8e87b5 100644
int opt;
int err;
diff --git a/rdma/res-cmid.c b/rdma/res-cmid.c
-index f167800f..59c68495 100644
+index bfaa47b5..6e07f048 100644
--- a/rdma/res-cmid.c
+++ b/rdma/res-cmid.c
-@@ -212,7 +212,7 @@ out: if (nla_line[RDMA_NLDEV_ATTR_RES_PID])
+@@ -206,7 +206,7 @@ out: if (nla_line[RDMA_NLDEV_ATTR_RES_PID])
int res_cm_id_idx_parse_cb(const struct nlmsghdr *nlh, void *data)
{
@@ -1349,7 +1349,7 @@ index f167800f..59c68495 100644
struct rd *rd = data;
const char *name;
int idx;
-@@ -229,7 +229,7 @@ int res_cm_id_idx_parse_cb(const struct nlmsghdr *nlh, void *data)
+@@ -223,7 +223,7 @@ int res_cm_id_idx_parse_cb(const struct nlmsghdr *nlh, void *data)
int res_cm_id_parse_cb(const struct nlmsghdr *nlh, void *data)
{
@@ -1358,7 +1358,7 @@ index f167800f..59c68495 100644
struct nlattr *nla_table, *nla_entry;
struct rd *rd = data;
int ret = MNL_CB_OK;
-@@ -246,7 +246,7 @@ int res_cm_id_parse_cb(const struct nlmsghdr *nlh, void *data)
+@@ -240,7 +240,7 @@ int res_cm_id_parse_cb(const struct nlmsghdr *nlh, void *data)
nla_table = tb[RDMA_NLDEV_ATTR_RES_CM_ID];
mnl_attr_for_each_nested(nla_entry, nla_table) {
@@ -1368,10 +1368,10 @@ index f167800f..59c68495 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 e1efe3ba..d3fd01fb 100644
+index 313f929a..9b394a88 100644
--- a/rdma/res-cq.c
+++ b/rdma/res-cq.c
-@@ -116,7 +116,7 @@ out: if (nla_line[RDMA_NLDEV_ATTR_RES_PID])
+@@ -130,7 +130,7 @@ out: if (nla_line[RDMA_NLDEV_ATTR_RES_PID])
int res_cq_idx_parse_cb(const struct nlmsghdr *nlh, void *data)
{
@@ -1380,7 +1380,7 @@ index e1efe3ba..d3fd01fb 100644
struct rd *rd = data;
const char *name;
uint32_t idx;
-@@ -133,7 +133,7 @@ int res_cq_idx_parse_cb(const struct nlmsghdr *nlh, void *data)
+@@ -148,7 +148,7 @@ int res_cq_idx_parse_cb(const struct nlmsghdr *nlh, void *data)
int res_cq_parse_cb(const struct nlmsghdr *nlh, void *data)
{
@@ -1389,7 +1389,7 @@ index e1efe3ba..d3fd01fb 100644
struct nlattr *nla_table, *nla_entry;
struct rd *rd = data;
int ret = MNL_CB_OK;
-@@ -150,7 +150,7 @@ int res_cq_parse_cb(const struct nlmsghdr *nlh, void *data)
+@@ -165,7 +165,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) {
@@ -1399,10 +1399,10 @@ index e1efe3ba..d3fd01fb 100644
ret = mnl_attr_parse_nested(nla_entry, rd_attr_cb, nla_line);
if (ret != MNL_CB_OK)
diff --git a/rdma/res-mr.c b/rdma/res-mr.c
-index c1366035..2b19a5d7 100644
+index 1bf73f3a..1d060614 100644
--- a/rdma/res-mr.c
+++ b/rdma/res-mr.c
-@@ -79,7 +79,7 @@ out:
+@@ -94,7 +94,7 @@ out:
int res_mr_idx_parse_cb(const struct nlmsghdr *nlh, void *data)
{
@@ -1411,7 +1411,7 @@ index c1366035..2b19a5d7 100644
struct rd *rd = data;
const char *name;
uint32_t idx;
-@@ -96,7 +96,7 @@ int res_mr_idx_parse_cb(const struct nlmsghdr *nlh, void *data)
+@@ -112,7 +112,7 @@ int res_mr_idx_parse_cb(const struct nlmsghdr *nlh, void *data)
int res_mr_parse_cb(const struct nlmsghdr *nlh, void *data)
{
@@ -1420,7 +1420,7 @@ index c1366035..2b19a5d7 100644
struct nlattr *nla_table, *nla_entry;
struct rd *rd = data;
int ret = MNL_CB_OK;
-@@ -113,7 +113,7 @@ int res_mr_parse_cb(const struct nlmsghdr *nlh, void *data)
+@@ -129,7 +129,7 @@ int res_mr_parse_cb(const struct nlmsghdr *nlh, void *data)
nla_table = tb[RDMA_NLDEV_ATTR_RES_MR];
mnl_attr_for_each_nested(nla_entry, nla_table) {
@@ -1461,10 +1461,10 @@ index df538010..6179d788 100644
ret = mnl_attr_parse_nested(nla_entry, rd_attr_cb, nla_line);
if (ret != MNL_CB_OK)
diff --git a/rdma/res-qp.c b/rdma/res-qp.c
-index 801cfca9..e01e94ff 100644
+index a38be399..48b9ee1c 100644
--- a/rdma/res-qp.c
+++ b/rdma/res-qp.c
-@@ -172,7 +172,7 @@ out:
+@@ -186,7 +186,7 @@ out:
int res_qp_idx_parse_cb(const struct nlmsghdr *nlh, void *data)
{
@@ -1473,7 +1473,7 @@ index 801cfca9..e01e94ff 100644
struct rd *rd = data;
const char *name;
uint32_t idx;
-@@ -189,7 +189,7 @@ int res_qp_idx_parse_cb(const struct nlmsghdr *nlh, void *data)
+@@ -204,7 +204,7 @@ int res_qp_idx_parse_cb(const struct nlmsghdr *nlh, void *data)
int res_qp_parse_cb(const struct nlmsghdr *nlh, void *data)
{
@@ -1482,7 +1482,7 @@ index 801cfca9..e01e94ff 100644
struct nlattr *nla_table, *nla_entry;
struct rd *rd = data;
int ret = MNL_CB_OK;
-@@ -206,7 +206,7 @@ int res_qp_parse_cb(const struct nlmsghdr *nlh, void *data)
+@@ -221,7 +221,7 @@ int res_qp_parse_cb(const struct nlmsghdr *nlh, void *data)
nla_table = tb[RDMA_NLDEV_ATTR_RES_QP];
mnl_attr_for_each_nested(nla_entry, nla_table) {
@@ -1492,7 +1492,7 @@ index 801cfca9..e01e94ff 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 251f5041..7eee7e0f 100644
+index dc12bbe4..2d6393d6 100644
--- a/rdma/res.c
+++ b/rdma/res.c
@@ -34,7 +34,7 @@ static int res_print_summary(struct rd *rd, struct nlattr **tb)
@@ -1514,10 +1514,10 @@ index 251f5041..7eee7e0f 100644
const char *name;
uint32_t idx;
diff --git a/rdma/utils.c b/rdma/utils.c
-index e25c3adf..25648a30 100644
+index 4d3de4fa..ed493a62 100644
--- a/rdma/utils.c
+++ b/rdma/utils.c
-@@ -488,7 +488,7 @@ int rd_attr_cb(const struct nlattr *attr, void *data)
+@@ -489,7 +489,7 @@ int rd_attr_cb(const struct nlattr *attr, void *data)
int rd_dev_init_cb(const struct nlmsghdr *nlh, void *data)
{
@@ -2029,10 +2029,10 @@ index d01450fc..42677a29 100644
for ( ; argc > 0; --argc, ++argv) {
diff --git a/tc/q_red.c b/tc/q_red.c
-index 53181c82..30008c68 100644
+index df788f8f..0b300958 100644
--- a/tc/q_red.c
+++ b/tc/q_red.c
-@@ -41,7 +41,7 @@ static int red_parse_opt(struct qdisc_util *qu, int argc, char **argv,
+@@ -51,7 +51,7 @@ static int red_parse_opt(struct qdisc_util *qu, int argc, char **argv,
struct nla_bitfield32 flags_bf = {
.selector = RED_SUPPORTED_FLAGS,
};
@@ -2186,7 +2186,7 @@ index c591a19f..4adf8bdb 100644
__u32 protocol = 0;
__u32 chain_index;
diff --git a/tc/tc_qdisc.c b/tc/tc_qdisc.c
-index 8eb08c34..11ccec42 100644
+index b79029d9..97e8693e 100644
--- a/tc/tc_qdisc.c
+++ b/tc/tc_qdisc.c
@@ -47,13 +47,13 @@ static int usage(void)
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 8926901e33cd9e213cf2a6267e4620989ebafc8b Mon Sep 17 00:00:00 2001
+From 62ee678cb79c05af51c4ab511e479b61b9279669 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
@@ -108,10 +108,10 @@ index 063a0611..b863af6f 100644
return hz;
return HZ;
diff --git a/misc/ss.c b/misc/ss.c
-index e2e3f1ec..8bf66482 100644
+index cfc430cc..9ebc9d4b 100644
--- a/misc/ss.c
+++ b/misc/ss.c
-@@ -471,7 +471,9 @@ static FILE *generic_proc_open(const char *env, const char *name)
+@@ -481,7 +481,9 @@ static FILE *generic_proc_open(const char *env, const char *name)
char store[128];
if (!p) {
@@ -122,7 +122,7 @@ index e2e3f1ec..8bf66482 100644
snprintf(store, sizeof(store)-1, "%s/%s", p, name);
p = store;
}
-@@ -563,7 +565,7 @@ static void user_ent_destroy(void)
+@@ -573,7 +575,7 @@ static void user_ent_destroy(void)
static void user_ent_hash_build(void)
{
@@ -131,7 +131,7 @@ index e2e3f1ec..8bf66482 100644
struct dirent *d;
char name[1024];
int nameoff;
-@@ -573,6 +575,10 @@ static void user_ent_hash_build(void)
+@@ -583,6 +585,10 @@ static void user_ent_hash_build(void)
const char *no_ctx = "unavailable";
static int user_ent_hash_build_init;
@@ -142,7 +142,7 @@ index e2e3f1ec..8bf66482 100644
/* If show_users & show_proc_ctx set only do this once */
if (user_ent_hash_build_init != 0)
return;
-@@ -2222,7 +2228,10 @@ void *parse_hostcond(char *addr, bool is_port)
+@@ -2234,7 +2240,10 @@ void *parse_hostcond(char *addr, bool is_port)
} else if (addr[0] == '*') {
port = addr+1;
} else {
@@ -154,7 +154,7 @@ index e2e3f1ec..8bf66482 100644
}
if (is_port)
-@@ -3838,9 +3847,9 @@ static void unix_stats_print(struct sockstat *s, struct filter *f)
+@@ -3926,9 +3935,9 @@ static void unix_stats_print(struct sockstat *s, struct filter *f)
sock_state_print(s);
@@ -166,7 +166,7 @@ index e2e3f1ec..8bf66482 100644
int_to_str(s->rport, port_name), NULL);
proc_ctx_print(s);
-@@ -4043,7 +4052,7 @@ static int unix_show(struct filter *f)
+@@ -4131,7 +4140,7 @@ static int unix_show(struct filter *f)
if (!p)
u->peer_name = "?";
else
@@ -175,7 +175,7 @@ index e2e3f1ec..8bf66482 100644
}
if (f->f) {
-@@ -4527,9 +4536,10 @@ static int netlink_show_one(struct filter *f,
+@@ -4615,9 +4624,10 @@ static int netlink_show_one(struct filter *f,
strncpy(procname, "kernel", 7);
} else if (pid > 0) {
FILE *fp;
@@ -187,7 +187,7 @@ index e2e3f1ec..8bf66482 100644
if ((fp = fopen(procname, "r")) != NULL) {
if (fscanf(fp, "%*d (%[^)])", procname) == 1) {
snprintf(procname+strlen(procname),
-@@ -4572,7 +4582,7 @@ static int netlink_show_one(struct filter *f,
+@@ -4660,7 +4670,7 @@ static int netlink_show_one(struct filter *f,
else if (pid > 0)
getpidcon(pid, &pid_context);
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 a75126deec6e404eae829f5e2a7a5bec6d89f02b Mon Sep 17 00:00:00 2001
+From 0d9b191f4494ecf8c15aca1a466f5ef2548f4157 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 f21232ed..825256a9 100644
+index b21cc6af..7cda41c3 100644
--- a/include/uapi/linux/bpf.h
+++ b/include/uapi/linux/bpf.h
-@@ -3455,12 +3455,10 @@ enum {
+@@ -3604,12 +3604,10 @@ enum {
/* BPF_FUNC_perf_event_output, BPF_FUNC_perf_event_read and
* BPF_FUNC_perf_event_read_value flags.
*/
diff --git a/pkg/iproute2/ver b/pkg/iproute2/ver
@@ -1 +1 @@
-5.8.0 r1
+5.9.0 r0