int link_new(Manager *manager, struct udev_device *device, Link **ret) {
_cleanup_link_free_ Link *link = NULL;
- uint64_t ifindex;
const char *mac;
int r;
if (!link)
return -ENOMEM;
- ifindex = udev_device_get_ifindex(device);
- if (ifindex <= 0)
+ link->ifindex = udev_device_get_ifindex(device);
+ if (link->ifindex <= 0)
return -EINVAL;
mac = udev_device_get_sysattr_value(device, "address");
return -EINVAL;
memcpy(&link->mac.ether_addr_octet[0], ether_aton(mac), ETH_ALEN);
- link->ifindex = ifindex;
link->manager = manager;
link->state = _LINK_STATE_INVALID;
- r = hashmap_put(manager->links, &ifindex, link);
+ r = hashmap_put(manager->links, &link->ifindex, link);
if (r < 0)
return r;
if (!link)
return;
- network_free(link->network);
+ assert(link->manager);
- hashmap_remove(link->manager->links, link);
+ hashmap_remove(link->manager->links, &link->ifindex);
free(link);
}
}
static int link_enter_routes_set(Link *link) {
- log_info("Routes set for link %d", link->ifindex);
+ log_info("Routes set for link %u", (unsigned)link->ifindex);
if (link_is_up(link))
return link_enter_configured(link);
r = sd_rtnl_message_get_errno(m);
if (r < 0 && r != -EEXIST) {
- log_warning("Could not set route on interface %d: %s",
- link->ifindex, strerror(-r));
+ log_warning("Could not set route on interface %u: %s",
+ (unsigned)link->ifindex, strerror(-r));
return link_enter_failed(link);
}
}
static int link_enter_addresses_set(Link *link) {
- log_info("Addresses set for link %d", link->ifindex);
+ log_info("Addresses set for link %u", (unsigned)link->ifindex);
link->state = LINK_STATE_ADDRESSES_SET;
r = sd_rtnl_message_get_errno(m);
if (r < 0 && r != -EEXIST) {
- log_warning("Could not set address on interface %d: %s",
- link->ifindex, strerror(-r));
+ log_warning("Could not set address on interface %u: %s",
+ (unsigned)link->ifindex, strerror(-r));
link_enter_failed(link);
}
r = sd_rtnl_message_get_errno(m);
if (r < 0) {
- log_warning("Could not bring up interface %d: %s",
- link->ifindex, strerror(-r));
+ log_warning("Could not bring up interface %u: %s",
+ (unsigned)link->ifindex, strerror(-r));
return link_enter_failed(link);
}