commit: dd1ce8024a48bb3a68d5b64dd9454889916e1cbf
parent c3408fd3b9691c7fedac47844d8be92c4d3fb125
Author: Michael Forney <mforney@mforney.org>
Date: Tue, 9 Jul 2019 22:38:43 -0700
iproute2: Update to 5.2.0
Diffstat:
8 files changed, 114 insertions(+), 141 deletions(-)
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 b6dcbe554a0c174360bb1e01a95a43a867dcc9cb Mon Sep 17 00:00:00 2001
+From a343504a3158d52e58161c5f0f87962595250809 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 503b3ec1..867a1a23 100644
+index 0205af80..ec2eea30 100644
--- a/include/libnetlink.h
+++ b/include/libnetlink.h
-@@ -162,7 +162,7 @@ struct rtattr *rta_nest(struct rtattr *rta, int maxlen, int type);
+@@ -163,7 +163,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 503b3ec1..867a1a23 100644
RTA_ALIGN((rta)->rta_len)))
#define parse_rtattr_nested(tb, max, rta) \
-@@ -225,7 +225,7 @@ int rtnl_from_file(FILE *, rtnl_listen_filter_t handler,
+@@ -226,7 +226,7 @@ int rtnl_from_file(FILE *, rtnl_listen_filter_t handler,
void *jarg);
#define NLMSG_TAIL(nmsg) \
@@ -35,10 +35,10 @@ index 503b3ec1..867a1a23 100644
#ifndef IFA_RTA
#define IFA_RTA(r) \
diff --git a/ip/ipfou.c b/ip/ipfou.c
-index 346522dd..da5c23fb 100644
+index ea126b08..f24586d4 100644
--- a/ip/ipfou.c
+++ b/ip/ipfou.c
-@@ -151,7 +151,7 @@ static int print_fou_mapping(struct nlmsghdr *n, void *arg)
+@@ -228,7 +228,7 @@ static int print_fou_mapping(struct nlmsghdr *n, void *arg)
return -1;
ghdr = NLMSG_DATA(n);
@@ -74,7 +74,7 @@ index 33076e72..72ee01bf 100644
open_json_object(NULL);
switch (ghdr->cmd) {
diff --git a/lib/libnetlink.c b/lib/libnetlink.c
-index 0d48a3d4..ef0793dc 100644
+index 028d5502..5a13898c 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)
@@ -126,10 +126,10 @@ index 0d48a3d4..ef0793dc 100644
}
memset(tb, 0, sizeof(struct rtattr *) * (max + 1));
diff --git a/lib/utils.c b/lib/utils.c
-index a81c0700..70cefb93 100644
+index be0f11b0..7f8a7da1 100644
--- a/lib/utils.c
+++ b/lib/utils.c
-@@ -1561,7 +1561,7 @@ int get_rtnl_link_stats_rta(struct rtnl_link_stats64 *stats64,
+@@ -1534,7 +1534,7 @@ int get_rtnl_link_stats_rta(struct rtnl_link_stats64 *stats64,
len = RTA_PAYLOAD(rta);
if (len < size)
@@ -139,5 +139,5 @@ index a81c0700..70cefb93 100644
len = size;
--
-2.20.1
+2.22.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 5268eef8ee54b54f2d1e6fb3c44f2135385f637f Mon Sep 17 00:00:00 2001
+From 20cfae0f14e0fe4fd40e8e79841c981b586985a3 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,7 +91,7 @@ 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 2f28d186..18e30e8a 100644
+index 6edb98b8..dd32daf0 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)
@@ -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 6a4ce58b..834e9c5d 100644
+index 5618ba26..aaca50bc 100644
--- a/devlink/devlink.c
+++ b/devlink/devlink.c
-@@ -434,7 +434,7 @@ static int attr_cb(const struct nlattr *attr, void *data)
+@@ -457,7 +457,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 6a4ce58b..834e9c5d 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
struct dl *dl = data;
struct ifname_map *ifname_map;
-@@ -1989,7 +1989,7 @@ static void pr_out_eswitch(struct dl *dl, struct nlattr **tb)
+@@ -2012,7 +2012,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 6a4ce58b..834e9c5d 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
-@@ -2127,7 +2127,7 @@ static const struct param_val_conv param_val_conv[] = {
+@@ -2150,7 +2150,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 6a4ce58b..834e9c5d 100644
struct nlattr *val_attr;
const char *vstr;
bool conv_exists;
-@@ -2203,7 +2203,7 @@ static void pr_out_param_value(struct dl *dl, const char *nla_name,
+@@ -2226,7 +2226,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 6a4ce58b..834e9c5d 100644
struct nlattr *param_value_attr;
const char *nla_name;
int nla_type;
-@@ -2246,7 +2246,7 @@ static void pr_out_param(struct dl *dl, struct nlattr **tb, bool array)
+@@ -2269,7 +2269,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 6a4ce58b..834e9c5d 100644
struct dl *dl = data;
mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
-@@ -2272,8 +2272,8 @@ struct param_ctx {
+@@ -2295,8 +2295,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 6a4ce58b..834e9c5d 100644
struct nlattr *param_value_attr;
enum devlink_param_cmode cmode;
struct param_ctx *ctx = data;
-@@ -2297,7 +2297,7 @@ static int cmd_dev_param_set_cb(const struct nlmsghdr *nlh, void *data)
+@@ -2320,7 +2320,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 6a4ce58b..834e9c5d 100644
struct nlattr *val_attr;
err = mnl_attr_parse_nested(param_value_attr,
-@@ -2339,7 +2339,7 @@ static int cmd_dev_param_set_cb(const struct nlmsghdr *nlh, void *data)
+@@ -2362,7 +2362,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 6a4ce58b..834e9c5d 100644
struct nlmsghdr *nlh;
bool conv_exists;
uint32_t val_u32;
-@@ -2494,7 +2494,7 @@ static int cmd_dev_param(struct dl *dl)
+@@ -2517,7 +2517,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 6a4ce58b..834e9c5d 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
-@@ -2558,7 +2558,7 @@ static void pr_out_versions_single(struct dl *dl, const struct nlmsghdr *nlh,
+@@ -2581,7 +2581,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 6a4ce58b..834e9c5d 100644
const char *ver_value;
const char *ver_name;
int err;
-@@ -2633,7 +2633,7 @@ static void pr_out_info(struct dl *dl, const struct nlmsghdr *nlh,
+@@ -2656,7 +2656,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 6a4ce58b..834e9c5d 100644
bool has_versions, has_info;
struct dl *dl = data;
-@@ -2815,7 +2815,7 @@ static void pr_out_port(struct dl *dl, struct nlattr **tb)
+@@ -2838,7 +2838,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 6a4ce58b..834e9c5d 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
-@@ -2958,7 +2958,7 @@ static void pr_out_sb(struct dl *dl, struct nlattr **tb)
+@@ -2981,7 +2981,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 6a4ce58b..834e9c5d 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
-@@ -3036,7 +3036,7 @@ static void pr_out_sb_pool(struct dl *dl, struct nlattr **tb)
+@@ -3059,7 +3059,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 6a4ce58b..834e9c5d 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
-@@ -3121,7 +3121,7 @@ static void pr_out_sb_port_pool(struct dl *dl, struct nlattr **tb)
+@@ -3144,7 +3144,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 6a4ce58b..834e9c5d 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
-@@ -3223,7 +3223,7 @@ static void pr_out_sb_tc_bind(struct dl *dl, struct nlattr **tb)
+@@ -3246,7 +3246,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 6a4ce58b..834e9c5d 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
-@@ -3513,7 +3513,7 @@ static void cmd_sb_occ_port_pool_process(struct occ_show *occ_show,
+@@ -3536,7 +3536,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 6a4ce58b..834e9c5d 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
-@@ -3564,7 +3564,7 @@ static void cmd_sb_occ_tc_pool_process(struct occ_show *occ_show,
+@@ -3587,7 +3587,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 6a4ce58b..834e9c5d 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
-@@ -3769,7 +3769,7 @@ static void pr_out_region(struct dl *dl, struct nlattr **tb);
+@@ -3792,7 +3792,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 6a4ce58b..834e9c5d 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
uint8_t cmd = genl->cmd;
-@@ -4220,7 +4220,7 @@ static void pr_out_dpipe_headers(struct dpipe_ctx *ctx,
+@@ -4243,7 +4243,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 6a4ce58b..834e9c5d 100644
const char *name;
int err;
-@@ -4271,7 +4271,7 @@ static unsigned int dpipe_header_field_count_get(struct nlattr *nla_fields)
+@@ -4294,7 +4294,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 6a4ce58b..834e9c5d 100644
struct dpipe_header *header;
unsigned int fields_count;
const char *header_name;
-@@ -4327,7 +4327,7 @@ static int dpipe_headers_get(struct dpipe_ctx *ctx, struct nlattr **tb)
+@@ -4350,7 +4350,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 6a4ce58b..834e9c5d 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
int err;
-@@ -4349,7 +4349,7 @@ static int cmd_dpipe_header_cb(const struct nlmsghdr *nlh, void *data)
+@@ -4372,7 +4372,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 6a4ce58b..834e9c5d 100644
uint16_t flags = NLM_F_REQUEST | NLM_F_ACK;
int err;
-@@ -4439,7 +4439,7 @@ static void pr_out_dpipe_action(struct dpipe_action *action,
+@@ -4462,7 +4462,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 6a4ce58b..834e9c5d 100644
int err;
err = mnl_attr_parse_nested(nl, attr_cb, nla_action);
-@@ -4523,7 +4523,7 @@ static int dpipe_match_parse(struct dpipe_match *match,
+@@ -4546,7 +4546,7 @@ static int dpipe_match_parse(struct dpipe_match *match,
struct nlattr *nl)
{
@@ -356,7 +356,7 @@ index 6a4ce58b..834e9c5d 100644
int err;
err = mnl_attr_parse_nested(nl, attr_cb, nla_match);
-@@ -4627,7 +4627,7 @@ resource_path_print(struct dl *dl, struct resources *resources,
+@@ -4650,7 +4650,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 6a4ce58b..834e9c5d 100644
struct dpipe_table *table;
uint32_t resource_units;
bool counters_enabled;
-@@ -4720,7 +4720,7 @@ err_table_show:
+@@ -4743,7 +4743,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 6a4ce58b..834e9c5d 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
-@@ -4738,8 +4738,8 @@ static int cmd_resource_dump_cb(const struct nlmsghdr *nlh, void *data);
+@@ -4761,8 +4761,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 6a4ce58b..834e9c5d 100644
uint16_t flags = NLM_F_REQUEST;
int err;
-@@ -4991,7 +4991,7 @@ static void pr_out_dpipe_entry_value(struct dpipe_ctx *ctx,
+@@ -5014,7 +5014,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 6a4ce58b..834e9c5d 100644
struct dpipe_match match;
int err;
-@@ -5022,7 +5022,7 @@ err_match_parse:
+@@ -5045,7 +5045,7 @@ err_match_parse:
static int dpipe_entry_action_value_show(struct dpipe_ctx *ctx,
struct nlattr *nl)
{
@@ -403,7 +403,7 @@ index 6a4ce58b..834e9c5d 100644
struct dpipe_action action;
int err;
-@@ -5078,7 +5078,7 @@ dpipe_tables_match_values_show(struct dpipe_ctx *ctx,
+@@ -5101,7 +5101,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 6a4ce58b..834e9c5d 100644
uint32_t entry_index;
uint64_t counter;
int err;
-@@ -5141,7 +5141,7 @@ err_entry_show:
+@@ -5164,7 +5164,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 6a4ce58b..834e9c5d 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
-@@ -5157,7 +5157,7 @@ static int cmd_dpipe_table_entry_dump_cb(const struct nlmsghdr *nlh, void *data)
+@@ -5180,7 +5180,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 6a4ce58b..834e9c5d 100644
uint16_t flags = NLM_F_REQUEST;
int err;
-@@ -5278,7 +5278,7 @@ static int
+@@ -5301,7 +5301,7 @@ static int
resource_get(struct resource_ctx *ctx, struct resource *resource,
struct resource *parent_resource, struct nlattr *nl)
{
@@ -439,7 +439,7 @@ index 6a4ce58b..834e9c5d 100644
struct nlattr *nla_child_resource;
struct nlattr *nla_resources;
bool top = false;
-@@ -5417,7 +5417,7 @@ static int resources_get(struct resource_ctx *ctx, struct nlattr **tb)
+@@ -5440,7 +5440,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 6a4ce58b..834e9c5d 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
int err;
-@@ -5441,8 +5441,8 @@ static int cmd_resource_dump_cb(const struct nlmsghdr *nlh, void *data)
+@@ -5464,8 +5464,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 6a4ce58b..834e9c5d 100644
int err;
err = dl_argv_parse(dl, DL_OPT_HANDLE, 0);
-@@ -5537,7 +5537,7 @@ err_resource_lookup:
+@@ -5560,7 +5560,7 @@ err_resource_lookup:
static int cmd_resource_set(struct dl *dl)
{
struct nlmsghdr *nlh;
@@ -468,7 +468,7 @@ index 6a4ce58b..834e9c5d 100644
int err;
err = resource_ctx_init(&ctx, dl);
-@@ -5655,7 +5655,7 @@ static void pr_out_region_snapshots_id(struct dl *dl, struct nlattr **tb, int in
+@@ -5678,7 +5678,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 6a4ce58b..834e9c5d 100644
struct nlattr *nla_sanpshot;
int err, index = 0;
-@@ -5696,7 +5696,7 @@ static void pr_out_region(struct dl *dl, struct nlattr **tb)
+@@ -5719,7 +5719,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 6a4ce58b..834e9c5d 100644
struct dl *dl = data;
mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
-@@ -5752,8 +5752,8 @@ static int cmd_region_read_cb(const struct nlmsghdr *nlh, void *data)
+@@ -5775,8 +5775,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 6a4ce58b..834e9c5d 100644
struct dl *dl = data;
int err;
-@@ -6004,7 +6004,7 @@ static int cmd_fmsg_nest(struct fmsg_cb_data *fmsg_data, uint8_t nest_value,
+@@ -6027,7 +6027,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 6a4ce58b..834e9c5d 100644
struct fmsg_cb_data *fmsg_data = data;
struct dl *dl = fmsg_data->dl;
struct nlattr *nla_object;
-@@ -6137,7 +6137,7 @@ out:
+@@ -6160,7 +6160,7 @@ out:
static void pr_out_health(struct dl *dl, struct nlattr **tb_health)
{
@@ -515,7 +515,7 @@ index 6a4ce58b..834e9c5d 100644
enum devlink_health_reporter_state state;
const struct nlattr *attr;
uint64_t time_ms;
-@@ -6193,7 +6193,7 @@ static void pr_out_health(struct dl *dl, struct nlattr **tb_health)
+@@ -6216,7 +6216,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);
@@ -525,10 +525,10 @@ index 6a4ce58b..834e9c5d 100644
mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
diff --git a/devlink/mnlg.c b/devlink/mnlg.c
-index 37cc25dd..eeb38324 100644
+index ee125df0..72db0dc6 100644
--- a/devlink/mnlg.c
+++ b/devlink/mnlg.c
-@@ -147,7 +147,7 @@ static void parse_genl_mc_grps(struct nlattr *nested,
+@@ -154,7 +154,7 @@ static void parse_genl_mc_grps(struct nlattr *nested,
const char *name;
mnl_attr_for_each_nested(pos, nested) {
@@ -537,7 +537,7 @@ index 37cc25dd..eeb38324 100644
mnl_attr_parse_nested(pos, parse_mc_grps_cb, tb);
if (!tb[CTRL_ATTR_MCAST_GRP_NAME] ||
-@@ -181,7 +181,7 @@ static int get_group_id_attr_cb(const struct nlattr *attr, void *data)
+@@ -188,7 +188,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;
@@ -546,7 +546,7 @@ index 37cc25dd..eeb38324 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
mnl_attr_parse(nlh, sizeof(*genl), get_group_id_attr_cb, tb);
-@@ -242,7 +242,7 @@ static int get_family_id_attr_cb(const struct nlattr *attr, void *data)
+@@ -249,7 +249,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;
@@ -556,7 +556,7 @@ index 37cc25dd..eeb38324 100644
mnl_attr_parse(nlh, sizeof(*genl), get_family_id_attr_cb, tb);
diff --git a/ip/ip6tunnel.c b/ip/ip6tunnel.c
-index 35492503..4f733f0a 100644
+index 27d9f4fc..68321136 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)
@@ -569,7 +569,7 @@ index 35492503..4f733f0a 100644
if (tnl_get_ioctl(*argv, &old_p))
return -1;
diff --git a/ip/ipaddress.c b/ip/ipaddress.c
-index b504200b..e440fac4 100644
+index 733f7d9d..2dc7d834 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])
@@ -599,7 +599,7 @@ index b504200b..e440fac4 100644
inet_prefix peer;
int local_len = 0;
int peer_len = 0;
-@@ -2331,7 +2331,7 @@ static int ipaddr_modify(int cmd, int flags, int argc, char **argv)
+@@ -2340,7 +2340,7 @@ static int ipaddr_modify(int cmd, int flags, int argc, char **argv)
return nodev(d);
if (valid_lftp || preferred_lftp) {
@@ -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 7952cb2b..3e86ec5a 100644
+index d275efa9..0e8f4b24 100644
--- a/ip/iplink.c
+++ b/ip/iplink.c
-@@ -1228,7 +1228,7 @@ static int set_mtu(const char *dev, int mtu)
+@@ -1229,7 +1229,7 @@ static int set_mtu(const char *dev, int mtu)
static int get_address(const char *dev, int *htype)
{
@@ -661,10 +661,10 @@ index 5bf490a9..009be0e5 100644
while (argc > 0) {
diff --git a/ip/ipmacsec.c b/ip/ipmacsec.c
-index 54cd2b8c..cc8d5906 100644
+index ad6ad7d6..1512823a 100644
--- a/ip/ipmacsec.c
+++ b/ip/ipmacsec.c
-@@ -952,7 +952,7 @@ static int process(struct nlmsghdr *n, void *arg)
+@@ -958,7 +958,7 @@ static int process(struct nlmsghdr *n, void *arg)
if (ghdr->cmd != MACSEC_CMD_GET_TXSC)
return 0;
@@ -1120,7 +1120,7 @@ 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 ef0793dc..f249cda1 100644
+index 5a13898c..8d4031e9 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)
@@ -1134,7 +1134,7 @@ index ef0793dc..f249cda1 100644
unsigned int hlen = sizeof(*err);
@@ -127,7 +127,7 @@ int nl_dump_ext_ack(const struct nlmsghdr *nlh, nl_ext_ack_fn_t errfn)
- static int nl_dump_ext_ack_done(const struct nlmsghdr *nlh, int error)
+ int nl_dump_ext_ack_done(const struct nlmsghdr *nlh, int error)
{
- struct nlattr *tb[NLMSGERR_ATTR_MAX + 1] = {};
+ struct nlattr *tb[NLMSGERR_ATTR_MAX + 1] = {0};
@@ -1142,7 +1142,7 @@ index ef0793dc..f249cda1 100644
const char *msg = NULL;
diff --git a/lib/ll_map.c b/lib/ll_map.c
-index 2d7b65dc..cf5f924b 100644
+index e0ed54bf..54a279ca 100644
--- a/lib/ll_map.c
+++ b/lib/ll_map.c
@@ -165,7 +165,7 @@ static int ll_link_get(const char *name, int index)
@@ -1177,10 +1177,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 9cb3ee19..6a6dae44 100644
+index 3d9d1d8f..7ba483f3 100644
--- a/misc/ss.c
+++ b/misc/ss.c
-@@ -2606,7 +2606,7 @@ static void sctp_timer_print(struct tcpstat *s)
+@@ -2609,7 +2609,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;
@@ -1189,7 +1189,7 @@ index 9cb3ee19..6a6dae44 100644
char *loc, *rem, *data;
char opt[256];
int n;
-@@ -2754,7 +2754,7 @@ static void tcp_show_info(const struct nlmsghdr *nlh, struct inet_diag_msg *r,
+@@ -2757,7 +2757,7 @@ static void tcp_show_info(const struct nlmsghdr *nlh, struct inet_diag_msg *r,
struct rtattr *tb[])
{
double rtt = 0;
@@ -1198,7 +1198,7 @@ index 9cb3ee19..6a6dae44 100644
s.ss.state = r->idiag_state;
-@@ -3018,7 +3018,7 @@ static int inet_show_sock(struct nlmsghdr *nlh,
+@@ -3021,7 +3021,7 @@ static int inet_show_sock(struct nlmsghdr *nlh,
inet_stats_print(s, v6only);
if (show_options) {
@@ -1207,7 +1207,7 @@ index 9cb3ee19..6a6dae44 100644
t.timer = r->idiag_timer;
t.timeout = r->idiag_expires;
-@@ -3239,7 +3239,7 @@ static int show_one_inet_sock(struct nlmsghdr *h, void *arg)
+@@ -3243,7 +3243,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);
@@ -1216,7 +1216,7 @@ index 9cb3ee19..6a6dae44 100644
if (!(diag_arg->f->families & FAMILY_MASK(r->idiag_family)))
return 0;
-@@ -3327,7 +3327,7 @@ static int tcp_show_netlink_file(struct filter *f)
+@@ -3331,7 +3331,7 @@ static int tcp_show_netlink_file(struct filter *f)
while (1) {
int status, err2;
struct nlmsghdr *h = (struct nlmsghdr *)buf;
@@ -1225,7 +1225,7 @@ index 9cb3ee19..6a6dae44 100644
status = fread(buf, 1, sizeof(*h), fp);
if (status < 0) {
-@@ -3473,7 +3473,7 @@ static int sctp_show(struct filter *f)
+@@ -3477,7 +3477,7 @@ static int sctp_show(struct filter *f)
static int dgram_show_line(char *line, const struct filter *f, int family)
{
@@ -1234,7 +1234,7 @@ index 9cb3ee19..6a6dae44 100644
char *loc, *rem, *data;
char opt[256];
int n;
-@@ -3613,7 +3613,7 @@ static bool unix_type_skip(struct sockstat *s, struct filter *f)
+@@ -3617,7 +3617,7 @@ static bool unix_type_skip(struct sockstat *s, struct filter *f)
static void unix_stats_print(struct sockstat *s, struct filter *f)
{
@@ -1243,7 +1243,7 @@ index 9cb3ee19..6a6dae44 100644
sock_state_print(s);
-@@ -3926,7 +3926,7 @@ static int packet_show_sock(struct nlmsghdr *nlh, void *arg)
+@@ -3930,7 +3930,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];
@@ -1252,7 +1252,7 @@ index 9cb3ee19..6a6dae44 100644
uint32_t fanout = 0;
bool has_fanout = false;
-@@ -4060,7 +4060,7 @@ static int packet_show_netlink(struct filter *f)
+@@ -4079,7 +4079,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;
@@ -1261,7 +1261,7 @@ index 9cb3ee19..6a6dae44 100644
int type, prot, iface, state, rq, uid, ino;
sscanf(buf, "%llx %*d %d %x %d %d %u %u %u",
-@@ -4178,7 +4178,7 @@ static int xdp_show_sock(struct nlmsghdr *nlh, void *arg)
+@@ -4203,7 +4203,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;
@@ -1270,7 +1270,7 @@ index 9cb3ee19..6a6dae44 100644
parse_rtattr(tb, XDP_DIAG_MAX, (struct rtattr *)(msg + 1),
nlh->nlmsg_len - NLMSG_LENGTH(sizeof(*msg)));
-@@ -4259,9 +4259,9 @@ static int netlink_show_one(struct filter *f,
+@@ -4284,9 +4284,9 @@ static int netlink_show_one(struct filter *f,
.remote.family = AF_NETLINK,
};
@@ -1282,7 +1282,7 @@ index 9cb3ee19..6a6dae44 100644
if (f->f) {
st.rport = -1;
-@@ -4511,8 +4511,8 @@ static void tipc_sock_addr_print(struct rtattr *net_addr, struct rtattr *id)
+@@ -4536,8 +4536,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 9cb3ee19..6a6dae44 100644
sprintf(addr, "%u", node);
sprintf(port, "%u", identity);
-@@ -4522,12 +4522,12 @@ static void tipc_sock_addr_print(struct rtattr *net_addr, struct rtattr *id)
+@@ -4547,12 +4547,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 9cb3ee19..6a6dae44 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 954e0015..cc64dc99 100644
+index 90483622..8233620d 100644
--- a/rdma/dev.c
+++ b/rdma/dev.c
-@@ -194,7 +194,7 @@ static void dev_print_node_type(struct rd *rd, struct nlattr **tb)
+@@ -195,7 +195,7 @@ static void dev_print_node_type(struct rd *rd, struct nlattr **tb)
static int dev_parse_cb(const struct nlmsghdr *nlh, void *data)
{
@@ -1325,10 +1325,10 @@ index 954e0015..cc64dc99 100644
const char *name;
uint32_t idx;
diff --git a/rdma/link.c b/rdma/link.c
-index 89e81b84..7e801e33 100644
+index 10b2e513..caec479a 100644
--- a/rdma/link.c
+++ b/rdma/link.c
-@@ -254,7 +254,7 @@ static void link_print_netdev(struct rd *rd, struct nlattr **tb)
+@@ -257,7 +257,7 @@ static void link_print_netdev(struct rd *rd, struct nlattr **tb)
static int link_parse_cb(const struct nlmsghdr *nlh, void *data)
{
@@ -1528,7 +1528,7 @@ index ef863f14..e0b70eb3 100644
const char *name;
uint32_t idx;
diff --git a/rdma/utils.c b/rdma/utils.c
-index 1f6bf330..d620a111 100644
+index 11ed8a73..9571fa7f 100644
--- a/rdma/utils.c
+++ b/rdma/utils.c
@@ -473,7 +473,7 @@ int rd_attr_cb(const struct nlattr *attr, void *data)
@@ -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 c7f7318b..0ea46583 100644
+index 23ba638a..a622432f 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,
@@ -1783,7 +1783,7 @@ 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 886606f9..927b3a45 100644
+index e3c8a60f..4a93e1c1 100644
--- a/tc/m_simple.c
+++ b/tc/m_simple.c
@@ -96,7 +96,7 @@ static int
@@ -2015,7 +2015,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 6e0e8a8c..91074973 100644
+index d1cd17f8..e70d1a14 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,
@@ -2337,10 +2337,10 @@ index 05dc84aa..d7cb2477 100644
mnl_attr_parse(nlh, sizeof(*genl), parse_attrs, info);
if (!info[TIPC_NLA_BEARER]) {
diff --git a/tipc/link.c b/tipc/link.c
-index 43e26da3..5f2f722e 100644
+index e123c186..196a4fe4 100644
--- a/tipc/link.c
+++ b/tipc/link.c
-@@ -32,8 +32,8 @@
+@@ -35,8 +35,8 @@ static const char tipc_bclink_name[] = "broadcast-link";
static int link_list_cb(const struct nlmsghdr *nlh, void *data)
{
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
@@ -2351,7 +2351,7 @@ index 43e26da3..5f2f722e 100644
mnl_attr_parse(nlh, sizeof(*genl), parse_attrs, info);
if (!info[TIPC_NLA_LINK])
-@@ -83,9 +83,9 @@ static int link_get_cb(const struct nlmsghdr *nlh, void *data)
+@@ -86,9 +86,9 @@ static int link_get_cb(const struct nlmsghdr *nlh, void *data)
{
int *prop = data;
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
@@ -2364,7 +2364,7 @@ index 43e26da3..5f2f722e 100644
mnl_attr_parse(nlh, sizeof(*genl), parse_attrs, info);
if (!info[TIPC_NLA_LINK])
-@@ -422,10 +422,10 @@ static int link_stat_show_cb(const struct nlmsghdr *nlh, void *data)
+@@ -508,10 +508,10 @@ static int link_stat_show_cb(const struct nlmsghdr *nlh, void *data)
const char *name;
const char *link = data;
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
@@ -2379,7 +2379,7 @@ index 43e26da3..5f2f722e 100644
mnl_attr_parse(nlh, sizeof(*genl), parse_attrs, info);
if (!info[TIPC_NLA_LINK])
-@@ -628,8 +628,8 @@ static int cmd_link_mon_set_prop(struct nlmsghdr *nlh, const struct cmd *cmd,
+@@ -805,8 +805,8 @@ static int cmd_link_mon_set_prop(struct nlmsghdr *nlh, const struct cmd *cmd,
static int link_mon_summary_cb(const struct nlmsghdr *nlh, void *data)
{
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
@@ -2390,7 +2390,7 @@ index 43e26da3..5f2f722e 100644
mnl_attr_parse(nlh, sizeof(*genl), parse_attrs, info);
if (!info[TIPC_NLA_MON])
-@@ -761,8 +761,8 @@ static void link_mon_print_peer_state(const uint32_t addr, const char *status,
+@@ -938,8 +938,8 @@ static void link_mon_print_peer_state(const uint32_t addr, const char *status,
static int link_mon_peer_list_cb(const struct nlmsghdr *nlh, void *data)
{
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
@@ -2401,7 +2401,7 @@ index 43e26da3..5f2f722e 100644
uint16_t member_cnt;
uint32_t applied;
uint32_t dom_gen;
-@@ -839,8 +839,8 @@ static int link_mon_peer_list(uint32_t mon_ref)
+@@ -1016,8 +1016,8 @@ static int link_mon_peer_list(uint32_t mon_ref)
static int link_mon_list_cb(const struct nlmsghdr *nlh, void *data)
{
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
@@ -2412,7 +2412,7 @@ index 43e26da3..5f2f722e 100644
char *req_bearer = data;
const char *bname;
const char title[] =
-@@ -968,8 +968,8 @@ static void cmd_link_mon_get_help(struct cmdl *cmdl)
+@@ -1145,8 +1145,8 @@ static void cmd_link_mon_get_help(struct cmdl *cmdl)
static int link_mon_get_cb(const struct nlmsghdr *nlh, void *data)
{
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
@@ -2569,5 +2569,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.20.1
+2.22.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 4ca152ce3ec9473183f4a0bf50eea91f95028fa2 Mon Sep 17 00:00:00 2001
+From a4b297a9b25a6d93d23640a3676e604b6d0b9022 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
@@ -83,7 +83,7 @@ index a18e2ae9..d12b42bd 100644
if (!ret)
ret = bpf_mnt_fs(mnt);
diff --git a/lib/utils.c b/lib/utils.c
-index 70cefb93..150d4105 100644
+index 7f8a7da1..cf1b1c6f 100644
--- a/lib/utils.c
+++ b/lib/utils.c
@@ -945,8 +945,10 @@ int __get_hz(void)
@@ -108,10 +108,10 @@ index 70cefb93..150d4105 100644
return hz;
return HZ;
diff --git a/misc/ss.c b/misc/ss.c
-index 6a6dae44..05327fdc 100644
+index 7ba483f3..ab5a75c8 100644
--- a/misc/ss.c
+++ b/misc/ss.c
-@@ -479,7 +479,9 @@ static FILE *generic_proc_open(const char *env, const char *name)
+@@ -480,7 +480,9 @@ static FILE *generic_proc_open(const char *env, const char *name)
char store[128];
if (!p) {
@@ -122,7 +122,7 @@ index 6a6dae44..05327fdc 100644
snprintf(store, sizeof(store)-1, "%s/%s", p, name);
p = store;
}
-@@ -571,7 +573,7 @@ static void user_ent_destroy(void)
+@@ -572,7 +574,7 @@ static void user_ent_destroy(void)
static void user_ent_hash_build(void)
{
@@ -131,7 +131,7 @@ index 6a6dae44..05327fdc 100644
struct dirent *d;
char name[1024];
int nameoff;
-@@ -581,6 +583,10 @@ static void user_ent_hash_build(void)
+@@ -582,6 +584,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 6a6dae44..05327fdc 100644
/* If show_users & show_proc_ctx set only do this once */
if (user_ent_hash_build_init != 0)
return;
-@@ -2186,7 +2192,10 @@ void *parse_hostcond(char *addr, bool is_port)
+@@ -2187,7 +2193,10 @@ void *parse_hostcond(char *addr, bool is_port)
} else if (addr[0] == '*') {
port = addr+1;
} else {
@@ -154,7 +154,7 @@ index 6a6dae44..05327fdc 100644
}
if (is_port)
-@@ -3617,9 +3626,9 @@ static void unix_stats_print(struct sockstat *s, struct filter *f)
+@@ -3621,9 +3630,9 @@ static void unix_stats_print(struct sockstat *s, struct filter *f)
sock_state_print(s);
@@ -166,7 +166,7 @@ index 6a6dae44..05327fdc 100644
int_to_str(s->rport, port_name), NULL);
proc_ctx_print(s);
-@@ -3822,7 +3831,7 @@ static int unix_show(struct filter *f)
+@@ -3826,7 +3835,7 @@ static int unix_show(struct filter *f)
if (!p)
u->peer_name = "?";
else
@@ -175,7 +175,7 @@ index 6a6dae44..05327fdc 100644
}
if (f->f) {
-@@ -4288,9 +4297,10 @@ static int netlink_show_one(struct filter *f,
+@@ -4313,9 +4322,10 @@ static int netlink_show_one(struct filter *f,
strncpy(procname, "kernel", 7);
} else if (pid > 0) {
FILE *fp;
@@ -187,7 +187,7 @@ index 6a6dae44..05327fdc 100644
if ((fp = fopen(procname, "r")) != NULL) {
if (fscanf(fp, "%*d (%[^)])", procname) == 1) {
snprintf(procname+strlen(procname),
-@@ -4333,7 +4343,7 @@ static int netlink_show_one(struct filter *f,
+@@ -4358,7 +4368,7 @@ static int netlink_show_one(struct filter *f,
else if (pid > 0)
getpidcon(pid, &pid_context);
@@ -197,5 +197,5 @@ index 6a6dae44..05327fdc 100644
}
--
-2.20.1
+2.22.0
diff --git a/pkg/iproute2/patch/0011-Prevent-overlapping-storage-of-global-variables.patch b/pkg/iproute2/patch/0011-Prevent-overlapping-storage-of-global-variables.patch
@@ -1,27 +0,0 @@
-From ee5947ca010a7d4e1206579b5450566e2601f84f Mon Sep 17 00:00:00 2001
-From: Michael Forney <mforney@mforney.org>
-Date: Sun, 16 Jun 2019 13:50:06 -0700
-Subject: [PATCH] Prevent overlapping storage of global variables
-
-This variable has the same name as `struct xfrm_filter filter` in
-ip/ipxfrm.c
----
- ip/ipmroute.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/ip/ipmroute.c b/ip/ipmroute.c
-index 6239e4c3..65b878bb 100644
---- a/ip/ipmroute.c
-+++ b/ip/ipmroute.c
-@@ -44,7 +44,7 @@ static void usage(void)
- exit(-1);
- }
-
--struct rtfilter {
-+static struct rtfilter {
- int tb;
- int af;
- int iif;
---
-2.20.1
-
diff --git a/pkg/iproute2/patch/0012-ip-Fix-get_link_kind-when-linked-statically.patch b/pkg/iproute2/patch/0011-ip-Fix-get_link_kind-when-linked-statically.patch
diff --git a/pkg/iproute2/patch/0013-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
diff --git a/pkg/iproute2/patch/0014-Use-static-inline-function-for-min.patch b/pkg/iproute2/patch/0013-Use-static-inline-function-for-min.patch
diff --git a/pkg/iproute2/ver b/pkg/iproute2/ver
@@ -1 +1 @@
-5.1.0 r3
+5.2.0 r0