We are likely to track more than the flags in the future.
return 0;
}
-int link_update_flags(Link *link, unsigned flags) {
+int link_update(Link *link, sd_rtnl_message *m) {
+ unsigned flags;
+ int r;
+
assert(link);
+ assert(m);
+
+ r = sd_rtnl_message_link_get_flags(m, &flags);
+ if (r < 0) {
+ log_warning("Could not get link flags of '%s'", link->ifname);
+ return r;
+ }
if (link->flags & IFF_UP && !(flags & IFF_UP))
log_info("Interface '%s' is down", link->ifname);
static int manager_rtnl_process_link(sd_rtnl *rtnl, sd_rtnl_message *message, void *userdata) {
Manager *m = userdata;
Link *link;
- unsigned flags;
int r, ifindex;
r = sd_rtnl_message_link_get_ifindex(message, &ifindex);
if (!link)
return 0;
- r = sd_rtnl_message_link_get_flags(message, &flags);
- if (r < 0)
- return 0;
-
- r = link_update_flags(link, flags);
+ r = link_update(link, message);
if (r < 0)
return 0;
int link_add(Manager *manager, struct udev_device *device);
int link_configure(Link *link);
-int link_update_flags(Link *link, unsigned flags);
+int link_update(Link *link, sd_rtnl_message *message);
DEFINE_TRIVIAL_CLEANUP_FUNC(Link*, link_free);
#define _cleanup_link_free_ _cleanup_(link_freep)