lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Tue, 25 Oct 2022 19:17:06 -0700 From: Stephen Hemminger <stephen@...workplumber.org> To: Benjamin Poirier <bpoirier@...dia.com> Cc: netdev@...r.kernel.org, David Ahern <dsahern@...nel.org>, Ido Schimmel <idosch@...dia.com> Subject: Re: [PATCH iproute2] ip-monitor: Do not error out when RTNLGRP_STATS is not available On Wed, 26 Oct 2022 07:29:09 +0900 Benjamin Poirier <bpoirier@...dia.com> wrote: > Following commit 4e8a9914c4d4 ("ip-monitor: Include stats events in default > and "all" cases"), `ip monitor` fails to start on kernels which do not > contain linux.git commit 5fd0b838efac ("net: rtnetlink: Add UAPI toggle for > IFLA_OFFLOAD_XSTATS_L3_STATS") because the netlink group RTNLGRP_STATS > doesn't exist: > > $ ip monitor > Failed to add stats group to list > > When "stats" is not explicitly requested, change the error to a warning so > that `ip monitor` and `ip monitor all` continue to work on older kernels. > > Note that the same change is not done for RTNLGRP_NEXTHOP because its value > is 32 and group numbers <= 32 are always supported; see the comment above > netlink_change_ngroups() in the kernel source. Therefore > NETLINK_ADD_MEMBERSHIP 32 does not error out even on kernels which do not > support RTNLGRP_NEXTHOP. > > Reported-by: Stephen Hemminger <stephen@...workplumber.org> > Fixes: 4e8a9914c4d4 ("ip-monitor: Include stats events in default and "all" cases") > Signed-off-by: Benjamin Poirier <bpoirier@...dia.com> > --- > ip/ipmonitor.c | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/ip/ipmonitor.c b/ip/ipmonitor.c > index 8a72ea42..45e4e8f1 100644 > --- a/ip/ipmonitor.c > +++ b/ip/ipmonitor.c > @@ -195,6 +195,8 @@ static int accept_msg(struct rtnl_ctrl_data *ctrl, > int do_ipmonitor(int argc, char **argv) > { > unsigned int groups = 0, lmask = 0; > + /* "needed" mask */ > + unsigned int nmask; > char *file = NULL; > int ifindex = 0; > > @@ -253,6 +255,7 @@ int do_ipmonitor(int argc, char **argv) > ipneigh_reset_filter(ifindex); > ipnetconf_reset_filter(ifindex); > > + nmask = lmask; > if (!lmask) > lmask = IPMON_L_ALL; > > @@ -328,8 +331,11 @@ int do_ipmonitor(int argc, char **argv) > > if (lmask & IPMON_LSTATS && > rtnl_add_nl_group(&rth, RTNLGRP_STATS) < 0) { > + if (!(nmask & IPMON_LSTATS)) > + fprintf(stderr, "Warning: "); > fprintf(stderr, "Failed to add stats group to list\n"); > - exit(1); > + if (nmask & IPMON_LSTATS) > + exit(1); > } > > if (listen_all_nsid && rtnl_listen_all_nsid(&rth) < 0) You still end up warning on older kernels. My version is simpler. All needs to not include lstats
Powered by blists - more mailing lists