X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fnetwork%2Fnetworkd-link.c;h=0fb323b9a54b7299d48b7bf7e6225bdea8bfd0a6;hb=9ff48d0982fcb97923955685fe9fa4e0e67cb238;hp=9e057ce0ff8bae0b7f6ea23c7e80dc0fd26af8c5;hpb=edb85f0d8d0a84f27308a3728f3fde3c52b9dce2;p=elogind.git diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c index 9e057ce0f..0fb323b9a 100644 --- a/src/network/networkd-link.c +++ b/src/network/networkd-link.c @@ -24,6 +24,7 @@ #include #include "networkd.h" +#include "networkd-netdev.h" #include "libudev-private.h" #include "udev-util.h" #include "util.h" @@ -1732,14 +1733,14 @@ static int link_up(Link *link) { return 0; } -static int link_enslaved(Link *link) { +static int link_joined(Link *link) { int r; assert(link); assert(link->state == LINK_STATE_ENSLAVING); assert(link->network); - log_debug_link(link, "enslaved"); + log_debug_link(link, "joined netdev"); if (!(link->flags & IFF_UP)) { r = link_up(link); @@ -1752,7 +1753,7 @@ static int link_enslaved(Link *link) { return link_enter_set_addresses(link); } -static int enslave_handler(sd_rtnl *rtnl, sd_rtnl_message *m, void *userdata) { +static int netdev_join_handler(sd_rtnl *rtnl, sd_rtnl_message *m, void *userdata) { _cleanup_link_unref_ Link *link = userdata; int r; @@ -1769,7 +1770,7 @@ static int enslave_handler(sd_rtnl *rtnl, sd_rtnl_message *m, void *userdata) { r = sd_rtnl_message_get_errno(m); if (r < 0 && r != -EEXIST) { log_struct_link(LOG_ERR, link, - "MESSAGE=%-*s: could not enslave: %s", + "MESSAGE=%-*s: could not join netdev: %s", IFNAMSIZ, link->ifname, strerror(-r), "ERRNO=%d", -r, @@ -1779,12 +1780,12 @@ static int enslave_handler(sd_rtnl *rtnl, sd_rtnl_message *m, void *userdata) { } if (link->enslaving <= 0) - link_enslaved(link); + link_joined(link); return 1; } -static int link_enter_enslave(Link *link) { +static int link_enter_join_netdev(Link *link) { NetDev *vlan, *macvlan, *vxlan; Iterator i; int r; @@ -1803,7 +1804,7 @@ static int link_enter_enslave(Link *link) { hashmap_isempty(link->network->vlans) && hashmap_isempty(link->network->macvlans) && hashmap_isempty(link->network->vxlans)) - return link_enslaved(link); + return link_joined(link); if (link->network->bond) { log_struct_link(LOG_DEBUG, link, @@ -1813,10 +1814,10 @@ static int link_enter_enslave(Link *link) { NETDEV(link->network->bond), NULL); - r = netdev_enslave(link->network->bond, link, &enslave_handler); + r = netdev_join(link->network->bond, link, &netdev_join_handler); if (r < 0) { log_struct_link(LOG_WARNING, link, - "MESSAGE=%-*s: could not enslave by '%s': %s", + "MESSAGE=%-*s: could not join netdev '%s': %s", IFNAMSIZ, link->ifname, link->network->bond->ifname, strerror(-r), NETDEV(link->network->bond), @@ -1836,10 +1837,10 @@ static int link_enter_enslave(Link *link) { NETDEV(link->network->bridge), NULL); - r = netdev_enslave(link->network->bridge, link, &enslave_handler); + r = netdev_join(link->network->bridge, link, &netdev_join_handler); if (r < 0) { log_struct_link(LOG_WARNING, link, - "MESSAGE=%-*s: could not enslave by '%s': %s", + "MESSAGE=%-*s: could not join netdev '%s': %s", IFNAMSIZ, link->ifname, link->network->bridge->ifname, strerror(-r), NETDEV(link->network->bridge), @@ -1859,10 +1860,10 @@ static int link_enter_enslave(Link *link) { NETDEV(link->network->tunnel), NULL); - r = netdev_enslave(link->network->tunnel, link, &enslave_handler); + r = netdev_join(link->network->tunnel, link, &netdev_join_handler); if (r < 0) { log_struct_link(LOG_WARNING, link, - "MESSAGE=%-*s: could not enslave by '%s': %s", + "MESSAGE=%-*s: could not join netdev '%s': %s", IFNAMSIZ, link->ifname, link->network->tunnel->ifname, strerror(-r), NETDEV(link->network->tunnel), @@ -1880,10 +1881,10 @@ static int link_enter_enslave(Link *link) { IFNAMSIZ, link->ifname, vlan->ifname, NETDEV(vlan), NULL); - r = netdev_enslave(vlan, link, &enslave_handler); + r = netdev_join(vlan, link, &netdev_join_handler); if (r < 0) { log_struct_link(LOG_WARNING, link, - "MESSAGE=%-*s: could not enslave by '%s': %s", + "MESSAGE=%-*s: could not join netdev '%s': %s", IFNAMSIZ, link->ifname, vlan->ifname, strerror(-r), NETDEV(vlan), NULL); @@ -1900,10 +1901,10 @@ static int link_enter_enslave(Link *link) { IFNAMSIZ, link->ifname, macvlan->ifname, NETDEV(macvlan), NULL); - r = netdev_enslave(macvlan, link, &enslave_handler); + r = netdev_join(macvlan, link, &netdev_join_handler); if (r < 0) { log_struct_link(LOG_WARNING, link, - "MESSAGE=%-*s: could not enslave by '%s': %s", + "MESSAGE=%-*s: could not join netdev '%s': %s", IFNAMSIZ, link->ifname, macvlan->ifname, strerror(-r), NETDEV(macvlan), NULL); @@ -1920,10 +1921,10 @@ static int link_enter_enslave(Link *link) { IFNAMSIZ, link->ifname, vxlan->ifname, NETDEV(vxlan), NULL); - r = netdev_enslave(vxlan, link, &enslave_handler); + r = netdev_join(vxlan, link, &netdev_join_handler); if (r < 0) { log_struct_link(LOG_WARNING, link, - "MESSAGE=%*s: could not enslave by '%s': %s", + "MESSAGE=%*s: could not join netdev '%s': %s", IFNAMSIZ, link->ifname, vxlan->ifname, strerror(-r), NETDEV(vxlan), NULL); @@ -1997,6 +1998,10 @@ static int link_configure(Link *link) { if (r < 0) return r; + r = sd_dhcp_client_set_request_broadcast(link->dhcp_client, link->network->dhcp_broadcast); + if (r < 0) + return r; + if (link->network->dhcp_mtu) { r = sd_dhcp_client_set_request_option(link->dhcp_client, 26); if (r < 0) @@ -2074,7 +2079,7 @@ static int link_configure(Link *link) { return r; } - return link_enter_enslave(link); + return link_enter_join_netdev(link); } static int link_initialized_and_synced(sd_rtnl *rtnl, sd_rtnl_message *m, void *userdata) { @@ -2121,6 +2126,9 @@ int link_initialized(Link *link, struct udev_device *device) { if (link->state != LINK_STATE_INITIALIZING) return 0; + if (link->udev_device) + return 0; + log_debug_link(link, "udev initialized link"); link->udev_device = udev_device_ref(device);