#include "libudev-private.h"
#include "util.h"
#include "bus-util.h"
-#include "net-util.h"
+#include "network-internal.h"
#include "dhcp-lease-internal.h"
if (r < 0)
return r;
+ link->udev_device = udev_device_ref(device);
+
*ret = link;
link = NULL;
free(link->ifname);
free(link->state_file);
+ udev_device_unref(link->udev_device);
+
free(link);
}
return r;
if (link->network->ipv4ll) {
+ uint8_t seed[8];
r = sd_ipv4ll_new(&link->ipv4ll);
if (r < 0)
return r;
+ 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;
link_state_to_string(link->state));
if (link->dhcp_lease) {
- char *lease_file;
+ _cleanup_free_ char *lease_file = NULL;
r = asprintf(&lease_file, "/run/systemd/network/leases/%"PRIu64,
link->ifindex);