From f14a6e7f48aaca75de69b31d39467bd12b41222e Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Wed, 8 Dec 2021 05:37:42 +0900 Subject: [PATCH 1/2] network: route: tighten variable scope Follow-up for 5e82a6137546d3a2ac403df261732076130356a8. --- src/network/networkd-route.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/network/networkd-route.c b/src/network/networkd-route.c index 8e4081a8e3..82873e9a91 100644 --- a/src/network/networkd-route.c +++ b/src/network/networkd-route.c @@ -1646,7 +1646,6 @@ int manager_rtnl_process_route(sd_netlink *rtnl, sd_netlink_message *message, Ma Link *link = NULL; uint32_t ifindex; uint16_t type; - unsigned char table; size_t rta_len; int r; @@ -1785,6 +1784,8 @@ int manager_rtnl_process_route(sd_netlink *rtnl, sd_netlink_message *message, Ma r = sd_netlink_message_read_u32(message, RTA_TABLE, &tmp->table); if (r == -ENODATA) { + unsigned char table; + r = sd_rtnl_message_route_get_table(message, &table); if (r >= 0) tmp->table = table; From 8ed68422e1bafc84afe524bc5020d343bc6163ca Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Wed, 8 Dec 2021 05:35:37 +0900 Subject: [PATCH 2/2] network: address: read flags from message header when IFA_FLAGS is not supported by kernel Follow-up for 0828a38605975b68c14c9194a1ee2c5c2ff7038f. Fixes #21670. --- src/network/networkd-address.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/network/networkd-address.c b/src/network/networkd-address.c index 826b061f24..6eea4ff0bd 100644 --- a/src/network/networkd-address.c +++ b/src/network/networkd-address.c @@ -1314,6 +1314,14 @@ int manager_rtnl_process_address(sd_netlink *rtnl, sd_netlink_message *message, } r = sd_netlink_message_read_u32(message, IFA_FLAGS, &tmp->flags); + if (r == -ENODATA) { + unsigned char flags; + + /* For old kernels. */ + r = sd_rtnl_message_addr_get_flags(message, &flags); + if (r >= 0) + tmp->flags = flags; + } if (r < 0) { log_link_warning_errno(link, r, "rtnl: received address message without flags, ignoring: %m"); return 0;