File 0003-rtnl-pass-ifname-in-newaddr-parsing-and-logging.patch of Package wicked
From 8836bc49c657f122267b8f0135d8733225ca8c78 Mon Sep 17 00:00:00 2001
From: Marius Tomaschewski <mt@suse.com>
Date: Mon, 16 Oct 2023 16:01:45 +0200
Subject: [PATCH 2/8] rtnl: pass ifname in newaddr parsing and logging
References: gh#openSUSE/wicked#987
Upstream: submitted
---
src/ifevent.c | 2 +-
src/iflist.c | 27 ++++++++++++++-------------
src/kernel.h | 3 ++-
3 files changed, 17 insertions(+), 15 deletions(-)
diff --git a/src/ifevent.c b/src/ifevent.c
index c3dec822..c15d42af 100644
--- a/src/ifevent.c
+++ b/src/ifevent.c
@@ -512,7 +512,7 @@ __ni_rtevent_deladdr(ni_netconfig_t *nc, const struct sockaddr_nl *nladdr, struc
if (dev == NULL)
return 0;
- if (__ni_rtnl_parse_newaddr(dev->link.ifflags, h, ifa, &tmp) < 0) {
+ if (__ni_rtnl_parse_newaddr(dev->name, dev->link.ifflags, h, ifa, &tmp) < 0) {
ni_error("Problem parsing %s message for %s", dev->name,
ni_rtnl_msg_type_to_name(h->nlmsg_type, NULL));
return -1;
diff --git a/src/iflist.c b/src/iflist.c
index 217f8740..e18d8a04 100644
--- a/src/iflist.c
+++ b/src/iflist.c
@@ -2810,16 +2810,16 @@ __ni_rtnl_parse_newprefix(const char *ifname, struct nlmsghdr *h, struct prefixm
}
static inline void
-__newaddr_trace(unsigned int family, const char *name, struct nlattr *attr)
+__newaddr_trace(const char *ifname, unsigned int family, const char *name, struct nlattr *attr)
{
ni_sockaddr_t temp;
if (attr && name) {
if (__ni_nla_get_addr(family, &temp, attr))
- ni_trace("newaddr[%s]: ---", name);
+ ni_trace("%s: newaddr[%s]: ---", ifname, name);
else
- ni_trace("newaddr[%s]: %s", name, ni_sockaddr_print(&temp));
+ ni_trace("%s: newaddr[%s]: %s", ifname, name, ni_sockaddr_print(&temp));
} else if(name) {
- ni_trace("newaddr[%s]: NULL", name);
+ ni_trace("%s: newaddr[%s]: NULL", ifname, name);
}
}
@@ -2827,13 +2827,14 @@ __newaddr_trace(unsigned int family, const char *name, struct nlattr *attr)
* Update interface address list given a RTM_NEWADDR message
*/
int
-__ni_rtnl_parse_newaddr(unsigned ifflags, struct nlmsghdr *h, struct ifaddrmsg *ifa, ni_address_t *ap)
+__ni_rtnl_parse_newaddr(const char *ifname, unsigned int ifflags, struct nlmsghdr *h,
+ struct ifaddrmsg *ifa, ni_address_t *ap)
{
struct nlattr *tb[IFA_MAX+1];
memset(tb, 0, sizeof(tb));
if (nlmsg_parse(h, sizeof(*ifa), tb, IFA_MAX, NULL) < 0) {
- ni_error("unable to parse rtnl ADDR message");
+ ni_error("%s: unable to parse rtnl ADDR message", ifname);
return -1;
}
@@ -2847,13 +2848,13 @@ __ni_rtnl_parse_newaddr(unsigned ifflags, struct nlmsghdr *h, struct ifaddrmsg *
ap->flags = ifa->ifa_flags;
if (ni_log_level_at(NI_LOG_DEBUG3) && (ni_log_facility(NI_TRACE_EVENTS))) {
- ni_trace("newaddr(%s): family %d, prefixlen %u, scope %u, flags %u",
- (ifflags & NI_IFF_POINT_TO_POINT) ? "ptp" : "brd",
+ ni_trace("%s: newaddr(%s): family %d, prefixlen %u, scope %u, flags %u",
+ ifname, (ifflags & NI_IFF_POINT_TO_POINT) ? "ptp" : "brd",
ap->family, ap->prefixlen, ap->scope, ap->flags);
- __newaddr_trace(ifa->ifa_family, __ni_string(IFA_LOCAL), tb[IFA_LOCAL]);
- __newaddr_trace(ifa->ifa_family, __ni_string(IFA_ADDRESS), tb[IFA_ADDRESS]);
- __newaddr_trace(ifa->ifa_family, __ni_string(IFA_BROADCAST), tb[IFA_BROADCAST]);
- __newaddr_trace(ifa->ifa_family, __ni_string(IFA_ANYCAST), tb[IFA_ANYCAST]);
+ __newaddr_trace(ifname, ifa->ifa_family, __ni_string(IFA_LOCAL), tb[IFA_LOCAL]);
+ __newaddr_trace(ifname, ifa->ifa_family, __ni_string(IFA_ADDRESS), tb[IFA_ADDRESS]);
+ __newaddr_trace(ifname, ifa->ifa_family, __ni_string(IFA_BROADCAST), tb[IFA_BROADCAST]);
+ __newaddr_trace(ifname, ifa->ifa_family, __ni_string(IFA_ANYCAST), tb[IFA_ANYCAST]);
}
/*
@@ -2907,7 +2908,7 @@ __ni_netdev_process_newaddr_event(ni_netdev_t *dev, struct nlmsghdr *h, struct i
{
ni_address_t tmp, *ap;
- if (__ni_rtnl_parse_newaddr(dev->link.ifflags, h, ifa, &tmp) < 0)
+ if (__ni_rtnl_parse_newaddr(dev->name, dev->link.ifflags, h, ifa, &tmp) < 0)
return -1;
ap = ni_address_list_find(dev->addrs, &tmp.local_addr);
diff --git a/src/kernel.h b/src/kernel.h
index 620ab840..f883dff6 100644
--- a/src/kernel.h
+++ b/src/kernel.h
@@ -120,7 +120,8 @@ extern ni_bool_t ni_rtnl_route_filter_msg(struct rtmsg *);
extern int ni_rtnl_route_parse_msg(struct nlmsghdr *, struct rtmsg *, ni_route_t *);
extern int ni_rtnl_rule_parse_msg(struct nlmsghdr *, struct fib_rule_hdr *, ni_rule_t *);
-extern int __ni_rtnl_parse_newaddr(unsigned, struct nlmsghdr *, struct ifaddrmsg *, ni_address_t *);
+extern int __ni_rtnl_parse_newaddr(const char *, unsigned int, struct nlmsghdr *,
+ struct ifaddrmsg *, ni_address_t *);
extern int __ni_rtnl_parse_newprefix(const char *, struct nlmsghdr *, struct prefixmsg *, ni_ipv6_ra_pinfo_t *);
extern int __ni_netdev_process_newlink(ni_netdev_t *, struct nlmsghdr *, struct ifinfomsg *, ni_netconfig_t *);
--
2.35.3