int ipv4ll_configure(Link *link) { uint8_t seed[8]; int r; assert(link); assert(link->network); assert(link->network->link_local & ADDRESS_FAMILY_IPV4); if (!link->ipv4ll) { r = sd_ipv4ll_new(&link->ipv4ll); if (r < 0) return r; } if (link->udev_device) { r = net_get_unique_predictable_data(link->udev_device, seed); if (r >= 0) { assert_cc(sizeof(unsigned) <= 8); r = sd_ipv4ll_set_address_seed(link->ipv4ll, *(unsigned *)seed); if (r < 0) return r; } } r = sd_ipv4ll_attach_event(link->ipv4ll, NULL, 0); if (r < 0) return r; r = sd_ipv4ll_set_mac(link->ipv4ll, &link->mac); if (r < 0) return r; r = sd_ipv4ll_set_index(link->ipv4ll, link->ifindex); if (r < 0) return r; r = sd_ipv4ll_set_callback(link->ipv4ll, ipv4ll_handler, link); if (r < 0) return r; return 0; }
int ipv4ll_configure(Link *link) { uint8_t seed[8]; int r; assert(link); assert(link->network); assert(link->network->ipv4ll); r = sd_ipv4ll_new(&link->ipv4ll); if (r < 0) return r; if (link->udev_device) { r = net_get_unique_predictable_data(link->udev_device, seed); if (r >= 0) { r = sd_ipv4ll_set_address_seed(link->ipv4ll, seed); if (r < 0) return r; } } r = sd_ipv4ll_attach_event(link->ipv4ll, NULL, 0); if (r < 0) return r; r = sd_ipv4ll_set_mac(link->ipv4ll, &link->mac); if (r < 0) return r; r = sd_ipv4ll_set_index(link->ipv4ll, link->ifindex); if (r < 0) return r; r = sd_ipv4ll_set_callback(link->ipv4ll, ipv4ll_handler, link); if (r < 0) return r; return 0; }
int ipv4ll_configure(Link *link) { uint64_t seed; int r; assert(link); assert(link->network); assert(link->network->link_local & ADDRESS_FAMILY_IPV4); if (!link->ipv4ll) { r = sd_ipv4ll_new(&link->ipv4ll); if (r < 0) return r; } if (link->sd_device && net_get_unique_predictable_data(link->sd_device, &seed) >= 0) { r = sd_ipv4ll_set_address_seed(link->ipv4ll, seed); if (r < 0) return r; } r = sd_ipv4ll_attach_event(link->ipv4ll, NULL, 0); if (r < 0) return r; r = sd_ipv4ll_set_mac(link->ipv4ll, &link->mac); if (r < 0) return r; r = sd_ipv4ll_set_ifindex(link->ipv4ll, link->ifindex); if (r < 0) return r; r = sd_ipv4ll_set_callback(link->ipv4ll, ipv4ll_handler, link); if (r < 0) return r; return 0; }