commit: d69c7d5739dd7d6cd7ae1bb2e38ce3e570a8acab
parent 6cf42d4e86d90e0d1cd23fe3af2502a164f31e9a
Author: Michael Forney <mforney@mforney.org>
Date: Thu, 17 Feb 2022 22:57:03 -0800
iproute2: Update to 5.16.0
Diffstat:
12 files changed, 163 insertions(+), 133 deletions(-)
diff --git a/pkg/iproute2/gen.lua b/pkg/iproute2/gen.lua
@@ -23,7 +23,10 @@ lib('libnetlink.a', [[lib/(
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
+ ax25_ntop.c
+ rose_ntop.c
mpls_ntop.c mpls_pton.c
+ netrom_ntop.c
)]])
exe('bin/ip', [[ip/(
@@ -40,6 +43,7 @@ exe('bin/ip', [[ip/(
iplink_geneve.c iplink_vrf.c iproute_lwtunnel.c ipmacsec.c ipila.c
ipvrf.c iplink_xstats.c ipseg6.c iplink_netdevsim.c iplink_rmnet.c
ipnexthop.c ipmptcp.c iplink_bareudp.c iplink_wwan.c ipioam6.c
+ iplink_amt.c
) libnetlink.a]])
file('bin/ip', '755', '$outdir/bin/ip')
diff --git a/pkg/iproute2/patch/0001-Fix-includes-for-musl-libc.patch b/pkg/iproute2/patch/0001-Fix-includes-for-musl-libc.patch
@@ -1,4 +1,4 @@
-From ac1e00512cb1de424918be08c3d8c7f6d2fd8832 Mon Sep 17 00:00:00 2001
+From fd0745e3e85d892520ca9d7ba42bb2603c969900 Mon Sep 17 00:00:00 2001
From: Michael Forney <mforney@mforney.org>
Date: Sat, 25 Apr 2015 17:37:46 +0000
Subject: [PATCH] Fix includes for musl libc
@@ -21,7 +21,7 @@ Subject: [PATCH] Fix includes for musl libc
14 files changed, 14 insertions(+), 14 deletions(-)
diff --git a/bridge/fdb.c b/bridge/fdb.c
-index 4dbc894c..a558b26d 100644
+index 8912f092..78f69cec 100644
--- a/bridge/fdb.c
+++ b/bridge/fdb.c
@@ -18,7 +18,6 @@
@@ -33,7 +33,7 @@ index 4dbc894c..a558b26d 100644
#include <string.h>
#include <limits.h>
diff --git a/bridge/mdb.c b/bridge/mdb.c
-index f38dc67c..66c51cca 100644
+index 7b5863d3..e62bfce3 100644
--- a/bridge/mdb.c
+++ b/bridge/mdb.c
@@ -11,7 +11,6 @@
@@ -45,7 +45,7 @@ index f38dc67c..66c51cca 100644
#include <arpa/inet.h>
diff --git a/bridge/vlan.c b/bridge/vlan.c
-index 19a36b80..30bfb55a 100644
+index 8300f353..793d95d1 100644
--- a/bridge/vlan.c
+++ b/bridge/vlan.c
@@ -7,7 +7,6 @@
@@ -54,10 +54,10 @@ index 19a36b80..30bfb55a 100644
#include <linux/if_bridge.h>
-#include <linux/if_ether.h>
#include <string.h>
+ #include <errno.h>
- #include "json_print.h"
diff --git a/include/uapi/linux/if_bridge.h b/include/uapi/linux/if_bridge.h
-index bdfecf94..db1da884 100644
+index d1b5fdee..b5a9217d 100644
--- a/include/uapi/linux/if_bridge.h
+++ b/include/uapi/linux/if_bridge.h
@@ -14,8 +14,9 @@
@@ -72,7 +72,7 @@ index bdfecf94..db1da884 100644
#define SYSFS_BRIDGE_ATTR "bridge"
diff --git a/include/uapi/linux/if_tunnel.h b/include/uapi/linux/if_tunnel.h
-index ecdc7666..6047915a 100644
+index c7f0a5e6..4cfcf216 100644
--- a/include/uapi/linux/if_tunnel.h
+++ b/include/uapi/linux/if_tunnel.h
@@ -2,8 +2,9 @@
@@ -116,7 +116,7 @@ index 86d961c9..cbe835e4 100644
#include <linux/if_packet.h>
#include <linux/if_link.h>
diff --git a/ip/ip6tunnel.c b/ip/ip6tunnel.c
-index 999408ed..35492503 100644
+index 5399f91d..c712d664 100644
--- a/ip/ip6tunnel.c
+++ b/ip/ip6tunnel.c
@@ -27,8 +27,8 @@
@@ -130,7 +130,7 @@ index 999408ed..35492503 100644
#include <linux/if_tunnel.h>
#include <linux/ip6_tunnel.h>
diff --git a/ip/ipl2tp.c b/ip/ipl2tp.c
-index 05e96387..e61bff9a 100644
+index 77bc3249..f090390f 100644
--- a/ip/ipl2tp.c
+++ b/ip/ipl2tp.c
@@ -19,7 +19,7 @@
@@ -143,7 +143,7 @@ index 05e96387..e61bff9a 100644
#include <linux/ip.h>
diff --git a/ip/iplink_hsr.c b/ip/iplink_hsr.c
-index c673ccf7..b2cde9e1 100644
+index da2d03d4..8c63293a 100644
--- a/ip/iplink_hsr.c
+++ b/ip/iplink_hsr.c
@@ -15,7 +15,7 @@
@@ -156,7 +156,7 @@ index c673ccf7..b2cde9e1 100644
#include "rt_names.h"
#include "utils.h"
diff --git a/ip/ipmaddr.c b/ip/ipmaddr.c
-index a4849902..270b26fb 100644
+index d41ac63a..b7600424 100644
--- a/ip/ipmaddr.c
+++ b/ip/ipmaddr.c
@@ -19,9 +19,9 @@
@@ -171,7 +171,7 @@ index a4849902..270b26fb 100644
#include <linux/sockios.h>
diff --git a/ip/ipmroute.c b/ip/ipmroute.c
-index cdb4d898..0077c176 100644
+index 981baf2a..2dfa83f8 100644
--- a/ip/ipmroute.c
+++ b/ip/ipmroute.c
@@ -20,9 +20,9 @@
@@ -186,7 +186,7 @@ index cdb4d898..0077c176 100644
#include <linux/sockios.h>
diff --git a/ip/iptuntap.c b/ip/iptuntap.c
-index 58996e6c..c2cc8c19 100644
+index 385d2bd8..9837b37e 100644
--- a/ip/iptuntap.c
+++ b/ip/iptuntap.c
@@ -18,7 +18,6 @@
@@ -198,7 +198,7 @@ index 58996e6c..c2cc8c19 100644
#include <linux/if_arp.h>
#include <pwd.h>
diff --git a/ip/tunnel.c b/ip/tunnel.c
-index 79de7f24..3736f100 100644
+index 88585cf3..f77ecde7 100644
--- a/ip/tunnel.c
+++ b/ip/tunnel.c
@@ -30,7 +30,7 @@
@@ -211,5 +211,5 @@ index 79de7f24..3736f100 100644
#include <linux/if_tunnel.h>
#include <linux/if_arp.h>
--
-2.18.0
+2.34.1
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 182b5b66b931b6aca9e546f758be6cd73ec50d61 Mon Sep 17 00:00:00 2001
+From f322d5077bb45dffaa384be4c78e4cf218767bf5 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 *`
@@ -106,10 +106,10 @@ index bf48e8b5..eecb7e48 100644
fprintf(stderr, "incomplete dump message\n");
return -1;
diff --git a/ip/ipmptcp.c b/ip/ipmptcp.c
-index fd042da8..46227e27 100644
+index 85700444..bbdd06e7 100644
--- a/ip/ipmptcp.c
+++ b/ip/ipmptcp.c
-@@ -250,7 +250,7 @@ static int print_mptcp_addr(struct nlmsghdr *n, void *arg)
+@@ -256,7 +256,7 @@ static int print_mptcp_addr(struct nlmsghdr *n, void *arg)
return -1;
ghdr = NLMSG_DATA(n);
@@ -118,7 +118,7 @@ index fd042da8..46227e27 100644
len, NLA_F_NESTED);
addrinfo = tb[MPTCP_PM_ATTR_ADDR];
if (!addrinfo)
-@@ -361,7 +361,7 @@ static int print_mptcp_limit(struct nlmsghdr *n, void *arg)
+@@ -371,7 +371,7 @@ static int print_mptcp_limit(struct nlmsghdr *n, void *arg)
return -1;
ghdr = NLMSG_DATA(n);
@@ -127,7 +127,7 @@ index fd042da8..46227e27 100644
open_json_object(NULL);
if (tb[MPTCP_PM_ATTR_RCV_ADD_ADDRS]) {
-@@ -450,7 +450,7 @@ static int mptcp_monitor_msg(struct rtnl_ctrl_data *ctrl,
+@@ -460,7 +460,7 @@ static int mptcp_monitor_msg(struct rtnl_ctrl_data *ctrl,
printf("[%14s]", event_to_str[ghdr->cmd]);
@@ -228,5 +228,5 @@ index 53d31006..0f683f9c 100644
len = size;
--
-2.34.0
+2.34.1
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,6 +1,6 @@
-From 7a039255b8c7e8d7dee6c01f93d0cef5eb817cdf Mon Sep 17 00:00:00 2001
+From 4ec571346e57d7c0259a48b561a1742d028d5fb2 Mon Sep 17 00:00:00 2001
From: Michael Forney <mforney@mforney.org>
-Date: Sun, 16 Jun 2019 12:21:05 -0700
+Date: Thu, 17 Feb 2022 22:51:00 -0800
Subject: [PATCH] Don't use empty initializer lists
---
@@ -88,7 +88,7 @@ Subject: [PATCH] Don't use empty initializer lists
81 files changed, 286 insertions(+), 287 deletions(-)
diff --git a/bridge/mdb.c b/bridge/mdb.c
-index 55b86c31..23c52ba4 100644
+index e62bfce3..f28783a1 100644
--- a/bridge/mdb.c
+++ b/bridge/mdb.c
@@ -484,7 +484,7 @@ static int mdb_modify(int cmd, int flags, int argc, char **argv)
@@ -101,10 +101,10 @@ index 55b86c31..23c52ba4 100644
while (argc > 0) {
diff --git a/bridge/vlan.c b/bridge/vlan.c
-index aed28b28..47ae659a 100644
+index 793d95d1..4b857daa 100644
--- a/bridge/vlan.c
+++ b/bridge/vlan.c
-@@ -109,7 +109,7 @@ static int add_tunnel_info_range(struct nlmsghdr *n, int reqsize,
+@@ -125,7 +125,7 @@ static int add_tunnel_info_range(struct nlmsghdr *n, int reqsize,
static int add_vlan_info_range(struct nlmsghdr *n, int reqsize, __u16 vid_start,
int16_t vid_end, __u16 flags)
{
@@ -113,7 +113,7 @@ index aed28b28..47ae659a 100644
vinfo.flags = flags;
vinfo.vid = vid_start;
-@@ -148,7 +148,7 @@ static int vlan_modify(int cmd, int argc, char **argv)
+@@ -164,7 +164,7 @@ static int vlan_modify(int cmd, int argc, char **argv)
short vid = -1;
short vid_end = -1;
struct rtattr *afspec;
@@ -122,17 +122,17 @@ index aed28b28..47ae659a 100644
bool tunnel_info_set = false;
unsigned short flags = 0;
__u32 tun_id_start = 0;
-@@ -254,7 +254,7 @@ static int vlan_option_set(int argc, char **argv)
+@@ -270,7 +270,7 @@ static int vlan_option_set(int argc, char **argv)
.n.nlmsg_type = RTM_NEWVLAN,
.bvm.family = PF_BRIDGE,
};
- struct bridge_vlan_info vinfo = {};
+ struct bridge_vlan_info vinfo = {0};
struct rtattr *afspec;
- short vid_end = -1;
char *d = NULL;
+ short vid = -1;
diff --git a/devlink/devlink.c b/devlink/devlink.c
-index 2f2142ed..8d0c8c18 100644
+index d39792ec..d56f2706 100644
--- a/devlink/devlink.c
+++ b/devlink/devlink.c
@@ -763,7 +763,7 @@ static int function_attr_cb(const struct nlattr *attr, void *data)
@@ -180,7 +180,7 @@ index 2f2142ed..8d0c8c18 100644
struct dl *dl = data;
mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
-@@ -3048,8 +3048,8 @@ struct param_ctx {
+@@ -3049,8 +3049,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);
@@ -191,7 +191,7 @@ index 2f2142ed..8d0c8c18 100644
struct nlattr *param_value_attr;
enum devlink_param_cmode cmode;
struct param_ctx *ctx = data;
-@@ -3073,7 +3073,7 @@ static int cmd_dev_param_set_cb(const struct nlmsghdr *nlh, void *data)
+@@ -3074,7 +3074,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]) {
@@ -200,7 +200,7 @@ index 2f2142ed..8d0c8c18 100644
struct nlattr *val_attr;
err = mnl_attr_parse_nested(param_value_attr,
-@@ -3115,7 +3115,7 @@ static int cmd_dev_param_set_cb(const struct nlmsghdr *nlh, void *data)
+@@ -3117,7 +3117,7 @@ static int cmd_dev_param_set_cb(const struct nlmsghdr *nlh, void *data)
static int cmd_dev_param_set(struct dl *dl)
{
@@ -209,7 +209,7 @@ index 2f2142ed..8d0c8c18 100644
struct nlmsghdr *nlh;
bool conv_exists;
uint32_t val_u32 = 0;
-@@ -3285,7 +3285,7 @@ static int cmd_dev_param(struct dl *dl)
+@@ -3291,7 +3291,7 @@ static int cmd_dev_param(struct dl *dl)
static void pr_out_action_stats(struct dl *dl, struct nlattr *action_stats)
{
@@ -218,7 +218,7 @@ index 2f2142ed..8d0c8c18 100644
struct nlattr *nla_reload_stats_entry, *nla_limit, *nla_value;
enum devlink_reload_limit limit;
uint32_t value;
-@@ -3500,7 +3500,7 @@ static void pr_out_versions_single(struct dl *dl, const struct nlmsghdr *nlh,
+@@ -3506,7 +3506,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)) {
@@ -227,7 +227,7 @@ index 2f2142ed..8d0c8c18 100644
const char *ver_value;
const char *ver_name;
int err;
-@@ -3590,7 +3590,7 @@ static void pr_out_info(struct dl *dl, const struct nlmsghdr *nlh,
+@@ -3596,7 +3596,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);
@@ -236,7 +236,7 @@ index 2f2142ed..8d0c8c18 100644
bool has_versions, has_info;
struct dl *dl = data;
-@@ -4176,7 +4176,7 @@ static void pr_out_port(struct dl *dl, struct nlattr **tb)
+@@ -4182,7 +4182,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;
@@ -245,7 +245,7 @@ index 2f2142ed..8d0c8c18 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
-@@ -4939,7 +4939,7 @@ static void pr_out_sb(struct dl *dl, struct nlattr **tb)
+@@ -4945,7 +4945,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;
@@ -254,7 +254,7 @@ index 2f2142ed..8d0c8c18 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
-@@ -5018,7 +5018,7 @@ static void pr_out_sb_pool(struct dl *dl, struct nlattr **tb)
+@@ -5024,7 +5024,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;
@@ -263,7 +263,7 @@ index 2f2142ed..8d0c8c18 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
-@@ -5104,7 +5104,7 @@ static void pr_out_sb_port_pool(struct dl *dl, struct nlattr **tb)
+@@ -5110,7 +5110,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;
@@ -272,7 +272,7 @@ index 2f2142ed..8d0c8c18 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
-@@ -5207,7 +5207,7 @@ static void pr_out_sb_tc_bind(struct dl *dl, struct nlattr **tb)
+@@ -5213,7 +5213,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;
@@ -281,7 +281,7 @@ index 2f2142ed..8d0c8c18 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
-@@ -5495,7 +5495,7 @@ static void cmd_sb_occ_port_pool_process(struct occ_show *occ_show,
+@@ -5501,7 +5501,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;
@@ -290,7 +290,7 @@ index 2f2142ed..8d0c8c18 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
-@@ -5546,7 +5546,7 @@ static void cmd_sb_occ_tc_pool_process(struct occ_show *occ_show,
+@@ -5552,7 +5552,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;
@@ -299,7 +299,7 @@ index 2f2142ed..8d0c8c18 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
-@@ -5841,7 +5841,7 @@ static void pr_out_trap_policer(struct dl *dl, struct nlattr **tb, bool array);
+@@ -5847,7 +5847,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;
@@ -308,7 +308,7 @@ index 2f2142ed..8d0c8c18 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
uint8_t cmd = genl->cmd;
-@@ -6370,7 +6370,7 @@ static void pr_out_dpipe_headers(struct dpipe_ctx *ctx,
+@@ -6376,7 +6376,7 @@ static void pr_out_dpipe_headers(struct dpipe_ctx *ctx,
static int dpipe_header_field_get(struct nlattr *nl, struct dpipe_field *field)
{
@@ -317,7 +317,7 @@ index 2f2142ed..8d0c8c18 100644
const char *name;
int err;
-@@ -6421,7 +6421,7 @@ static unsigned int dpipe_header_field_count_get(struct nlattr *nla_fields)
+@@ -6427,7 +6427,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)
{
@@ -326,7 +326,7 @@ index 2f2142ed..8d0c8c18 100644
struct dpipe_header *header;
unsigned int fields_count;
const char *header_name;
-@@ -6477,7 +6477,7 @@ static int dpipe_headers_get(struct dpipe_ctx *ctx, struct nlattr **tb)
+@@ -6483,7 +6483,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;
@@ -335,7 +335,7 @@ index 2f2142ed..8d0c8c18 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
int err;
-@@ -6499,7 +6499,7 @@ static int cmd_dpipe_header_cb(const struct nlmsghdr *nlh, void *data)
+@@ -6505,7 +6505,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;
@@ -344,7 +344,7 @@ index 2f2142ed..8d0c8c18 100644
uint16_t flags = NLM_F_REQUEST | NLM_F_ACK;
int err;
-@@ -6594,7 +6594,7 @@ static void pr_out_dpipe_action(struct dpipe_action *action,
+@@ -6600,7 +6600,7 @@ static void pr_out_dpipe_action(struct dpipe_action *action,
static int dpipe_action_parse(struct dpipe_action *action, struct nlattr *nl)
{
@@ -353,7 +353,7 @@ index 2f2142ed..8d0c8c18 100644
int err;
err = mnl_attr_parse_nested(nl, attr_cb, nla_action);
-@@ -6679,7 +6679,7 @@ static int dpipe_match_parse(struct dpipe_match *match,
+@@ -6685,7 +6685,7 @@ static int dpipe_match_parse(struct dpipe_match *match,
struct nlattr *nl)
{
@@ -362,7 +362,7 @@ index 2f2142ed..8d0c8c18 100644
int err;
err = mnl_attr_parse_nested(nl, attr_cb, nla_match);
-@@ -6784,7 +6784,7 @@ resource_path_print(struct dl *dl, struct resources *resources,
+@@ -6790,7 +6790,7 @@ resource_path_print(struct dl *dl, struct resources *resources,
static int dpipe_table_show(struct dpipe_ctx *ctx, struct nlattr *nl)
{
@@ -371,7 +371,7 @@ index 2f2142ed..8d0c8c18 100644
struct dpipe_table *table;
uint32_t resource_units;
bool counters_enabled;
-@@ -6878,7 +6878,7 @@ err_table_show:
+@@ -6884,7 +6884,7 @@ err_table_show:
static int cmd_dpipe_table_show_cb(const struct nlmsghdr *nlh, void *data)
{
struct dpipe_ctx *ctx = data;
@@ -380,7 +380,7 @@ index 2f2142ed..8d0c8c18 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
-@@ -6896,8 +6896,8 @@ static int cmd_resource_dump_cb(const struct nlmsghdr *nlh, void *data);
+@@ -6902,8 +6902,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;
@@ -391,7 +391,7 @@ index 2f2142ed..8d0c8c18 100644
uint16_t flags = NLM_F_REQUEST;
int err;
-@@ -7154,7 +7154,7 @@ static void pr_out_dpipe_entry_value(struct dpipe_ctx *ctx,
+@@ -7160,7 +7160,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)
{
@@ -400,7 +400,7 @@ index 2f2142ed..8d0c8c18 100644
struct dpipe_match match;
int err;
-@@ -7185,7 +7185,7 @@ err_match_parse:
+@@ -7191,7 +7191,7 @@ err_match_parse:
static int dpipe_entry_action_value_show(struct dpipe_ctx *ctx,
struct nlattr *nl)
{
@@ -409,7 +409,7 @@ index 2f2142ed..8d0c8c18 100644
struct dpipe_action action;
int err;
-@@ -7241,7 +7241,7 @@ dpipe_tables_match_values_show(struct dpipe_ctx *ctx,
+@@ -7247,7 +7247,7 @@ dpipe_tables_match_values_show(struct dpipe_ctx *ctx,
static int dpipe_entry_show(struct dpipe_ctx *ctx, struct nlattr *nl)
{
@@ -418,7 +418,7 @@ index 2f2142ed..8d0c8c18 100644
uint32_t entry_index;
uint64_t counter;
int err;
-@@ -7305,7 +7305,7 @@ err_entry_show:
+@@ -7311,7 +7311,7 @@ err_entry_show:
static int cmd_dpipe_table_entry_dump_cb(const struct nlmsghdr *nlh, void *data)
{
struct dpipe_ctx *ctx = data;
@@ -427,7 +427,7 @@ index 2f2142ed..8d0c8c18 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
-@@ -7321,7 +7321,7 @@ static int cmd_dpipe_table_entry_dump_cb(const struct nlmsghdr *nlh, void *data)
+@@ -7327,7 +7327,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;
@@ -436,7 +436,7 @@ index 2f2142ed..8d0c8c18 100644
uint16_t flags = NLM_F_REQUEST;
int err;
-@@ -7430,7 +7430,7 @@ static int
+@@ -7436,7 +7436,7 @@ static int
resource_get(struct resource_ctx *ctx, struct resource *resource,
struct resource *parent_resource, struct nlattr *nl)
{
@@ -445,7 +445,7 @@ index 2f2142ed..8d0c8c18 100644
struct nlattr *nla_child_resource;
struct nlattr *nla_resources;
bool top = false;
-@@ -7578,7 +7578,7 @@ static int resources_get(struct resource_ctx *ctx, struct nlattr **tb)
+@@ -7584,7 +7584,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;
@@ -454,7 +454,7 @@ index 2f2142ed..8d0c8c18 100644
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
int err;
-@@ -7602,8 +7602,8 @@ static int cmd_resource_dump_cb(const struct nlmsghdr *nlh, void *data)
+@@ -7608,8 +7608,8 @@ static int cmd_resource_dump_cb(const struct nlmsghdr *nlh, void *data)
static int cmd_resource_show(struct dl *dl)
{
struct nlmsghdr *nlh;
@@ -465,7 +465,7 @@ index 2f2142ed..8d0c8c18 100644
int err;
err = dl_argv_parse(dl, DL_OPT_HANDLE, 0);
-@@ -7698,7 +7698,7 @@ err_resource_lookup:
+@@ -7704,7 +7704,7 @@ err_resource_lookup:
static int cmd_resource_set(struct dl *dl)
{
struct nlmsghdr *nlh;
@@ -474,7 +474,7 @@ index 2f2142ed..8d0c8c18 100644
int err;
err = resource_ctx_init(&ctx, dl);
-@@ -7810,7 +7810,7 @@ static void pr_out_region_snapshots_id(struct dl *dl, struct nlattr **tb, int in
+@@ -7816,7 +7816,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)
{
@@ -483,7 +483,7 @@ index 2f2142ed..8d0c8c18 100644
struct nlattr *nla_sanpshot;
int err, index = 0;
-@@ -7851,7 +7851,7 @@ static void pr_out_region(struct dl *dl, struct nlattr **tb)
+@@ -7861,7 +7861,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);
@@ -492,7 +492,7 @@ index 2f2142ed..8d0c8c18 100644
struct dl *dl = data;
mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
-@@ -7907,8 +7907,8 @@ static int cmd_region_read_cb(const struct nlmsghdr *nlh, void *data)
+@@ -7917,8 +7917,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);
@@ -503,7 +503,7 @@ index 2f2142ed..8d0c8c18 100644
struct dl *dl = data;
int err;
-@@ -8255,7 +8255,7 @@ static int cmd_fmsg_nest(struct fmsg_cb_data *fmsg_data, uint8_t nest_value,
+@@ -8265,7 +8265,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);
@@ -512,7 +512,7 @@ index 2f2142ed..8d0c8c18 100644
struct fmsg_cb_data *fmsg_data = data;
struct dl *dl = fmsg_data->dl;
struct nlattr *nla_object;
-@@ -8446,7 +8446,7 @@ static void pr_out_dump_report_timestamp(struct dl *dl, const struct nlattr *att
+@@ -8456,7 +8456,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)
{
@@ -521,7 +521,7 @@ index 2f2142ed..8d0c8c18 100644
enum devlink_health_reporter_state state;
int err;
-@@ -8517,7 +8517,7 @@ struct health_ctx {
+@@ -8527,7 +8527,7 @@ struct health_ctx {
static int cmd_health_show_cb(const struct nlmsghdr *nlh, void *data)
{
struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
@@ -566,10 +566,10 @@ index c712d664..318e54b1 100644
if (tnl_get_ioctl(*argv, &old_p))
return -1;
diff --git a/ip/ipaddress.c b/ip/ipaddress.c
-index 85534aaf..0cd48fbe 100644
+index 4109d8bd..cfd21f9a 100644
--- a/ip/ipaddress.c
+++ b/ip/ipaddress.c
-@@ -164,7 +164,7 @@ static void print_queuelen(FILE *f, struct rtattr *tb[IFLA_MAX + 1])
+@@ -165,7 +165,7 @@ static void print_queuelen(FILE *f, struct rtattr *tb[IFLA_MAX + 1])
if (tb[IFLA_TXQLEN])
qlen = rta_getattr_u32(tb[IFLA_TXQLEN]);
else {
@@ -578,7 +578,7 @@ index 85534aaf..0cd48fbe 100644
int s = socket(AF_INET, SOCK_STREAM, 0);
if (s < 0)
-@@ -352,7 +352,7 @@ static void print_vfinfo(FILE *fp, struct ifinfomsg *ifi, struct rtattr *vfinfo)
+@@ -353,7 +353,7 @@ static void print_vfinfo(FILE *fp, struct ifinfomsg *ifi, struct rtattr *vfinfo)
struct ifla_vf_mac *vf_mac;
struct ifla_vf_broadcast *vf_broadcast;
struct ifla_vf_tx_rate *vf_tx_rate;
@@ -587,7 +587,7 @@ index 85534aaf..0cd48fbe 100644
SPRINT_BUF(b1);
-@@ -2367,7 +2367,7 @@ static int ipaddr_modify(int cmd, int flags, int argc, char **argv)
+@@ -2370,7 +2370,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;
@@ -596,7 +596,7 @@ index 85534aaf..0cd48fbe 100644
inet_prefix peer;
int local_len = 0;
int peer_len = 0;
-@@ -2542,7 +2542,7 @@ static int ipaddr_modify(int cmd, int flags, int argc, char **argv)
+@@ -2545,7 +2545,7 @@ static int ipaddr_modify(int cmd, int flags, int argc, char **argv)
return nodev(d);
if (valid_lftp || preferred_lftp) {
@@ -619,10 +619,10 @@ index beb08da3..c8a14940 100644
char *p = NULL;
char *l = NULL;
diff --git a/ip/iplink.c b/ip/iplink.c
-index 18b2ea25..3b146881 100644
+index a3ea775d..10f6c2c6 100644
--- a/ip/iplink.c
+++ b/ip/iplink.c
-@@ -1253,7 +1253,7 @@ static int set_mtu(const char *dev, int mtu)
+@@ -1261,7 +1261,7 @@ static int set_mtu(const char *dev, int mtu)
static int get_address(const char *dev, int *htype)
{
@@ -632,18 +632,18 @@ index 18b2ea25..3b146881 100644
.sll_family = AF_PACKET,
.sll_protocol = htons(ETH_P_LOOP),
diff --git a/ip/iplink_can.c b/ip/iplink_can.c
-index 6a26f3ff..1a9cd610 100644
+index f4b37528..2d3c1fc8 100644
--- a/ip/iplink_can.c
+++ b/ip/iplink_can.c
-@@ -114,7 +114,7 @@ static void print_ctrlmode(FILE *f, __u32 cm)
+@@ -130,7 +130,7 @@ static void print_ctrlmode(enum output_type t, __u32 flags, const char* key)
static int can_parse_opt(struct link_util *lu, int argc, char **argv,
struct nlmsghdr *n)
{
- struct can_bittiming bt = {}, dbt = {};
+ struct can_bittiming bt = {0}, dbt = {0};
- struct can_ctrlmode cm = {0, 0};
-
- while (argc > 0) {
+ struct can_ctrlmode cm = { 0 };
+ struct rtattr *tdc;
+ __u32 tdcv = -1, tdco = -1, tdcf = -1;
diff --git a/ip/ipmaddr.c b/ip/ipmaddr.c
index b7600424..3084b462 100644
--- a/ip/ipmaddr.c
@@ -795,10 +795,10 @@ index 8eb5551f..11b32767 100644
while (1) {
diff --git a/ip/xfrm_policy.c b/ip/xfrm_policy.c
-index 7cc00e7c..fc593008 100644
+index 4d825025..37b1b88a 100644
--- a/ip/xfrm_policy.c
+++ b/ip/xfrm_policy.c
-@@ -257,14 +257,14 @@ static int xfrm_policy_modify(int cmd, unsigned int flags, int argc, char **argv
+@@ -259,14 +259,14 @@ static int xfrm_policy_modify(int cmd, unsigned int flags, int argc, char **argv
char *selp = NULL;
char *ptypep = NULL;
char *sctxp = NULL;
@@ -816,7 +816,7 @@ index 7cc00e7c..fc593008 100644
bool is_if_id_set = false;
__u32 if_id = 0;
-@@ -577,12 +577,12 @@ static int xfrm_policy_get_or_delete(int argc, char **argv, int delete,
+@@ -579,12 +579,12 @@ static int xfrm_policy_get_or_delete(int argc, char **argv, int delete,
char *indexp = NULL;
char *ptypep = NULL;
char *sctxp = NULL;
@@ -831,7 +831,7 @@ index 7cc00e7c..fc593008 100644
bool is_if_id_set = false;
__u32 if_id = 0;
-@@ -1136,7 +1136,7 @@ static int xfrm_policy_flush(int argc, char **argv)
+@@ -1265,7 +1265,7 @@ static int xfrm_policy_flush(int argc, char **argv)
.n.nlmsg_type = XFRM_MSG_FLUSHPOLICY,
};
char *ptypep = NULL;
@@ -885,7 +885,7 @@ index 6fee7efd..628aeffd 100644
__u32 icvlen, trunclen;
char *name;
diff --git a/lib/bpf_legacy.c b/lib/bpf_legacy.c
-index 23854f17..d01c3b89 100644
+index 6e3891c9..614ee1c6 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)
@@ -924,7 +924,7 @@ index 23854f17..d01c3b89 100644
uint32_t len = sizeof(info);
int fd, ret, dump_ok = 0;
SPRINT_BUF(tmp);
-@@ -449,7 +449,7 @@ static int bpf_map_selfcheck_pinned(int fd, const struct bpf_elf_map *map,
+@@ -467,7 +467,7 @@ static int bpf_map_selfcheck_pinned(int fd, const struct bpf_elf_map *map,
struct bpf_map_ext *ext, int length,
enum bpf_prog_type type)
{
@@ -933,7 +933,7 @@ index 23854f17..d01c3b89 100644
int ret;
ret = bpf_derive_elf_map_from_fdinfo(fd, &tmp, ext);
-@@ -691,7 +691,7 @@ static int bpf_gen_slave(const char *base, const char *name,
+@@ -709,7 +709,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];
@@ -942,7 +942,7 @@ index 23854f17..d01c3b89 100644
int ret;
snprintf(bpf_lnk_dir, sizeof(bpf_lnk_dir), "%s%s/", base, link);
-@@ -798,7 +798,7 @@ out:
+@@ -816,7 +816,7 @@ out:
static int bpf_obj_get(const char *pathname, enum bpf_prog_type type)
{
@@ -951,7 +951,7 @@ index 23854f17..d01c3b89 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,
+@@ -990,7 +990,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)
{
@@ -960,7 +960,7 @@ index 23854f17..d01c3b89 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)
+@@ -1033,7 +1033,7 @@ int bpf_graft_map(const char *map_path, uint32_t *key, int argc, char **argv)
.argc = argc,
.argv = argv,
};
@@ -969,7 +969,7 @@ index 23854f17..d01c3b89 100644
int ret, prog_fd, map_fd;
uint32_t map_key;
-@@ -1068,7 +1068,7 @@ out_prog:
+@@ -1086,7 +1086,7 @@ out_prog:
int bpf_prog_attach_fd(int prog_fd, int target_fd, enum bpf_attach_type type)
{
@@ -978,7 +978,7 @@ index 23854f17..d01c3b89 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)
+@@ -1097,7 +1097,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)
{
@@ -987,7 +987,7 @@ index 23854f17..d01c3b89 100644
attr.target_fd = target_fd;
attr.attach_type = type;
-@@ -1091,7 +1091,7 @@ int bpf_prog_load_dev(enum bpf_prog_type type, const struct bpf_insn *insns,
+@@ -1109,7 +1109,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)
{
@@ -996,7 +996,7 @@ index 23854f17..d01c3b89 100644
attr.prog_type = type;
attr.insns = bpf_ptr_to_u64(insns);
-@@ -1246,7 +1246,7 @@ static int bpf_map_create(enum bpf_map_type type, uint32_t size_key,
+@@ -1264,7 +1264,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)
{
@@ -1005,7 +1005,7 @@ index 23854f17..d01c3b89 100644
attr.map_type = type;
attr.key_size = size_key;
-@@ -1265,7 +1265,7 @@ static int bpf_map_create(enum bpf_map_type type, uint32_t size_key,
+@@ -1283,7 +1283,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)
{
@@ -1014,7 +1014,7 @@ index 23854f17..d01c3b89 100644
attr.btf = bpf_ptr_to_u64(btf);
attr.btf_size = size_btf;
-@@ -1281,7 +1281,7 @@ static int bpf_btf_load(void *btf, size_t size_btf,
+@@ -1299,7 +1299,7 @@ static int bpf_btf_load(void *btf, size_t size_btf,
static int bpf_obj_pin(int fd, const char *pathname)
{
@@ -1023,7 +1023,7 @@ index 23854f17..d01c3b89 100644
attr.pathname = bpf_ptr_to_u64(pathname);
attr.bpf_fd = fd;
-@@ -1966,7 +1966,7 @@ static int bpf_map_verify_all_offs(struct bpf_elf_ctx *ctx, int end)
+@@ -1984,7 +1984,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)
{
@@ -1032,7 +1032,7 @@ index 23854f17..d01c3b89 100644
int i, sym_num = bpf_map_num_sym(ctx);
__u8 *buff;
-@@ -2472,7 +2472,7 @@ static int bpf_fetch_prog_relo(struct bpf_elf_ctx *ctx, const char *section,
+@@ -2490,7 +2490,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++) {
@@ -1041,7 +1041,7 @@ index 23854f17..d01c3b89 100644
ret = bpf_fill_section_data(ctx, i, &data_relo);
if (ret < 0 || data_relo.sec_hdr.sh_type != SHT_REL)
-@@ -2647,7 +2647,7 @@ static int bpf_fill_prog_arrays(struct bpf_elf_ctx *ctx)
+@@ -2665,7 +2665,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) {
@@ -1050,7 +1050,7 @@ index 23854f17..d01c3b89 100644
ret = -errno;
if (errno == E2BIG) {
-@@ -2738,7 +2738,7 @@ static bool bpf_pinning_reserved(uint32_t pinning)
+@@ -2756,7 +2756,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;
@@ -1059,7 +1059,7 @@ index 23854f17..d01c3b89 100644
uint32_t pinning;
FILE *fp;
int ret;
-@@ -2836,7 +2836,7 @@ static void bpf_get_cfg(struct bpf_elf_ctx *ctx)
+@@ -2854,7 +2854,7 @@ static void bpf_get_cfg(struct bpf_elf_ctx *ctx)
fd = open(path_jit, O_RDONLY);
if (fd >= 0) {
@@ -1790,7 +1790,7 @@ index ca0dff11..4d97b38d 100644
int argc = *argc_p;
struct rtattr *tail;
diff --git a/tc/m_vlan.c b/tc/m_vlan.c
-index 221083df..20ed57f0 100644
+index 1b2b1d51..ba7db457 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,
@@ -2536,5 +2536,5 @@ index 597ffd91..19258b8c 100644
mnl_attr_parse_nested(attrs[TIPC_NLA_SOCK_CON], parse_attrs, con);
node = mnl_attr_get_u32(con[TIPC_NLA_CON_NODE]);
--
-2.34.0
+2.34.1
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 572e84091a11295ad0ba8a7722016306ae510763 Mon Sep 17 00:00:00 2001
+From f30befee39d2f8cf06158bfd5b37b675e2287f3f 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
@@ -13,10 +13,10 @@ Subject: [PATCH] Don't omit second operand to '?' operator
6 files changed, 33 insertions(+), 15 deletions(-)
diff --git a/ip/iproute_lwtunnel.c b/ip/iproute_lwtunnel.c
-index 218d5086..937c3278 100644
+index b05dffc6..a2d868db 100644
--- a/ip/iproute_lwtunnel.c
+++ b/ip/iproute_lwtunnel.c
-@@ -253,7 +253,7 @@ static const char *format_action_type(int action)
+@@ -291,7 +291,7 @@ static const char *format_action_type(int action)
if (action < 0 || action > SEG6_LOCAL_ACTION_MAX)
return "<invalid>";
@@ -25,7 +25,7 @@ index 218d5086..937c3278 100644
}
static int read_action_type(const char *name)
-@@ -284,7 +284,7 @@ static void print_encap_bpf_prog(FILE *fp, struct rtattr *encap,
+@@ -322,7 +322,7 @@ static void print_encap_bpf_prog(FILE *fp, struct rtattr *encap,
if (is_json_context())
print_string(PRINT_JSON, str, NULL,
@@ -70,10 +70,10 @@ index f3167858..5095e0f8 100644
print_uint(PRINT_ANY, "pid",
"(%d)", pid);
diff --git a/lib/bpf_legacy.c b/lib/bpf_legacy.c
-index d01c3b89..023a096b 100644
+index 614ee1c6..21853635 100644
--- a/lib/bpf_legacy.c
+++ b/lib/bpf_legacy.c
-@@ -768,7 +768,7 @@ static const char *bpf_get_work_dir(enum bpf_prog_type type)
+@@ -786,7 +786,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) {
@@ -197,5 +197,5 @@ index eda95552..202e5385 100644
}
--
-2.34.0
+2.34.1
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 3ee799ca4d64cc852b0443d7cb62e659ec24f25a Mon Sep 17 00:00:00 2001
+From d01fedaf6124f77cee82d8023e8ed0aa1cec345a 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, 90 insertions(+), 10 deletions(-)
diff --git a/ip/iplink.c b/ip/iplink.c
-index 3b146881..f2e18c0b 100644
+index 10f6c2c6..de7f21d6 100644
--- a/ip/iplink.c
+++ b/ip/iplink.c
-@@ -150,7 +150,6 @@ static int on_off(const char *msg, const char *realval)
+@@ -151,7 +151,6 @@ static int on_off(const char *msg, const char *realval)
return -1;
}
@@ -19,7 +19,7 @@ index 3b146881..f2e18c0b 100644
static struct link_util *linkutil_list;
struct link_util *get_link_kind(const char *id)
-@@ -159,21 +158,102 @@ struct link_util *get_link_kind(const char *id)
+@@ -160,21 +159,102 @@ struct link_util *get_link_kind(const char *id)
char buf[256];
struct link_util *l;
@@ -132,5 +132,5 @@ index 3b146881..f2e18c0b 100644
snprintf(buf, sizeof(buf), "%s_link_util", id);
l = dlsym(dlh, buf);
--
-2.34.0
+2.34.1
diff --git a/pkg/iproute2/patch/0011-Use-alloca-instead-of-VLA-when-VLA-is-not-available.patch b/pkg/iproute2/patch/0011-Use-alloca-instead-of-VLA-when-VLA-is-not-available.patch
@@ -1,4 +1,4 @@
-From 699a445be9c703e33d86073c0fd6a60ea04a73cb Mon Sep 17 00:00:00 2001
+From 116f98de6f16f9c8891b910e6e47ffbd86652100 Mon Sep 17 00:00:00 2001
From: Michael Forney <mforney@mforney.org>
Date: Mon, 24 Jun 2019 16:48:56 -0700
Subject: [PATCH] Use alloca instead of VLA when VLA is not available
@@ -8,10 +8,10 @@ Subject: [PATCH] Use alloca instead of VLA when VLA is not available
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/ip/ipaddress.c b/ip/ipaddress.c
-index 0cd48fbe..8a8fa9d6 100644
+index cfd21f9a..8472499e 100644
--- a/ip/ipaddress.c
+++ b/ip/ipaddress.c
-@@ -245,7 +245,12 @@ static void print_linktype(FILE *fp, struct rtattr *tb)
+@@ -246,7 +246,12 @@ static void print_linktype(FILE *fp, struct rtattr *tb)
lu = get_link_kind(kind);
if (lu && lu->print_opt) {
@@ -25,7 +25,7 @@ index 0cd48fbe..8a8fa9d6 100644
if (linkinfo[IFLA_INFO_DATA]) {
parse_rtattr_nested(attr, lu->maxattr,
-@@ -279,7 +284,12 @@ static void print_linktype(FILE *fp, struct rtattr *tb)
+@@ -280,7 +285,12 @@ static void print_linktype(FILE *fp, struct rtattr *tb)
slave_lu = get_link_kind(slave);
if (slave_lu && slave_lu->print_opt) {
@@ -40,5 +40,5 @@ index 0cd48fbe..8a8fa9d6 100644
if (linkinfo[IFLA_INFO_SLAVE_DATA]) {
parse_rtattr_nested(attr, slave_lu->maxattr,
--
-2.34.0
+2.34.1
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 04a1a40ac12d194de7f4077e7af02fa7564b070e Mon Sep 17 00:00:00 2001
+From 610a720da48cb1b4de2364d70215450275edebcb 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 c9849461..7fb33bb7 100644
+index b6c468e9..8bdbb369 100644
--- a/include/utils.h
+++ b/include/utils.h
-@@ -267,13 +267,10 @@ unsigned int print_name_and_link(const char *fmt,
+@@ -273,13 +273,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 c9849461..7fb33bb7 100644
#ifndef __check_format_string
# define __check_format_string(pos_str, pos_args) \
--
-2.34.0
+2.34.1
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 7da0d09e39fc29878927b9e03bed68b1991c4150 Mon Sep 17 00:00:00 2001
+From 47376a101469e5f559dba47066255af6f06dbe04 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 177cdc57..262001e4 100644
+index 0c3a514a..964719f9 100644
--- a/include/uapi/linux/bpf.h
+++ b/include/uapi/linux/bpf.h
-@@ -5120,12 +5120,10 @@ enum {
+@@ -5185,12 +5185,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 177cdc57..262001e4 100644
/* Current network namespace */
enum {
--
-2.34.0
+2.34.1
diff --git a/pkg/iproute2/patch/0016-Make-struct-bpf_timer-include-a-named-member.patch b/pkg/iproute2/patch/0016-Make-struct-bpf_timer-include-a-named-member.patch
@@ -1,4 +1,4 @@
-From 37ed0cb1540616327c82760f921b4846b6789bfc Mon Sep 17 00:00:00 2001
+From 5a2587077e91d489ad9708cf5614bb5fecbb02aa Mon Sep 17 00:00:00 2001
From: Michael Forney <mforney@mforney.org>
Date: Thu, 2 Dec 2021 14:49:08 -0800
Subject: [PATCH] Make struct bpf_timer include a named member
@@ -12,10 +12,10 @@ Signed-off-by: Michael Forney <mforney@mforney.org>
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/include/uapi/linux/bpf.h b/include/uapi/linux/bpf.h
-index 262001e4..6884f5f2 100644
+index 964719f9..f71d7e90 100644
--- a/include/uapi/linux/bpf.h
+++ b/include/uapi/linux/bpf.h
-@@ -6180,9 +6180,8 @@ struct bpf_spin_lock {
+@@ -6250,9 +6250,8 @@ struct bpf_spin_lock {
};
struct bpf_timer {
@@ -28,5 +28,5 @@ index 262001e4..6884f5f2 100644
struct bpf_sysctl {
__u32 write; /* Sysctl is being read (= 0) or written (= 1).
--
-2.34.0
+2.34.1
diff --git a/pkg/iproute2/patch/0019-Include-linux-ax25.h-header.patch b/pkg/iproute2/patch/0019-Include-linux-ax25.h-header.patch
@@ -0,0 +1,26 @@
+From 81bd67e0e190b01266d12e98f4feb41766b7fcfb Mon Sep 17 00:00:00 2001
+From: Michael Forney <mforney@mforney.org>
+Date: Thu, 17 Feb 2022 23:07:55 -0800
+Subject: [PATCH] Include linux ax25.h header
+
+Fixes the build with musl libc.
+---
+ lib/ax25_ntop.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/lib/ax25_ntop.c b/lib/ax25_ntop.c
+index cfd0e04b..3a72a43e 100644
+--- a/lib/ax25_ntop.c
++++ b/lib/ax25_ntop.c
+@@ -2,7 +2,7 @@
+
+ #include <errno.h>
+ #include <sys/socket.h>
+-#include <netax25/ax25.h>
++#include <linux/ax25.h>
+
+ #include "utils.h"
+
+--
+2.34.1
+
diff --git a/pkg/iproute2/ver b/pkg/iproute2/ver
@@ -1 +1 @@
-5.15.0 r0
+5.16.0 r0