chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
networkd: netdev - improve logging when setting ifindex
[elogind.git]
/
src
/
network
/
networkd-link.c
diff --git
a/src/network/networkd-link.c
b/src/network/networkd-link.c
index 14cc8715ce844224ae2cd30b3c865504e5a4bdcf..aa59dd7cf44efb735ef07c5395f5bfc36b491994 100644
(file)
--- a/
src/network/networkd-link.c
+++ b/
src/network/networkd-link.c
@@
-26,7
+26,7
@@
#include "libudev-private.h"
#include "util.h"
#include "bus-util.h"
#include "libudev-private.h"
#include "util.h"
#include "bus-util.h"
-#include "net
-uti
l.h"
+#include "net
work-interna
l.h"
#include "dhcp-lease-internal.h"
#include "dhcp-lease-internal.h"
@@
-63,6
+63,8
@@
int link_new(Manager *manager, struct udev_device *device, Link **ret) {
if (r < 0)
return r;
if (r < 0)
return r;
+ link->udev_device = udev_device_ref(device);
+
*ret = link;
link = NULL;
*ret = link;
link = NULL;
@@
-85,6
+87,8
@@
void link_free(Link *link) {
free(link->ifname);
free(link->state_file);
free(link->ifname);
free(link->state_file);
+ udev_device_unref(link->udev_device);
+
free(link);
}
free(link);
}
@@
-1283,10
+1287,18
@@
int link_add(Manager *m, struct udev_device *device, Link **ret) {
return r;
if (link->network->ipv4ll) {
return r;
if (link->network->ipv4ll) {
+ uint8_t seed[8];
r = sd_ipv4ll_new(&link->ipv4ll);
if (r < 0)
return r;
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;
r = sd_ipv4ll_attach_event(link->ipv4ll, NULL, 0);
if (r < 0)
return r;