X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fnetwork%2Fnetworkd-link.c;h=d83c4cef8bf5f4db5263bc0fa1fedb7ebb368ab4;hb=ee3a6a51e5b098aa0c9641ed71d275c459ad2f5a;hp=867baa6dee78a8f2adf3b19a039726e28f42b957;hpb=ecd2f2c5947d9e2f4d6792c2a3a90b8ced6a5b3e;p=elogind.git diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c index 867baa6de..d83c4cef8 100644 --- a/src/network/networkd-link.c +++ b/src/network/networkd-link.c @@ -426,7 +426,7 @@ static int set_mtu_handler(sd_rtnl *rtnl, sd_rtnl_message *m, void *userdata) { } static int link_set_mtu(Link *link, uint32_t mtu) { - _cleanup_sd_rtnl_message_unref_ sd_rtnl_message *req = NULL; + _cleanup_rtnl_message_unref_ sd_rtnl_message *req = NULL; int r; assert(link); @@ -435,7 +435,7 @@ static int link_set_mtu(Link *link, uint32_t mtu) { log_debug_link(link, "setting MTU: %" PRIu32, mtu); - r = sd_rtnl_message_link_new(RTM_SETLINK, link->ifindex, &req); + r = sd_rtnl_message_new_link(RTM_SETLINK, link->ifindex, &req); if (r < 0) { log_error_link(link, "Could not allocate RTM_SETLINK message"); return r; @@ -562,6 +562,8 @@ static int dhcp_lease_acquired(sd_dhcp_client *client, Link *link) { ADDRESS_FMT_VAL(gateway), NULL); + link->dhcp_lease = lease; + if (link->network->dhcp_dns) { r = sd_dhcp_lease_get_dns(lease, &nameservers, &nameservers_size); if (r >= 0) { @@ -595,8 +597,6 @@ static int dhcp_lease_acquired(sd_dhcp_client *client, Link *link) { } } - link->dhcp_lease = lease; - link_enter_set_addresses(link); return 0; @@ -783,7 +783,7 @@ static int link_up_handler(sd_rtnl *rtnl, sd_rtnl_message *m, void *userdata) { } static int link_up(Link *link) { - _cleanup_sd_rtnl_message_unref_ sd_rtnl_message *req = NULL; + _cleanup_rtnl_message_unref_ sd_rtnl_message *req = NULL; int r; assert(link); @@ -792,7 +792,7 @@ static int link_up(Link *link) { log_debug_link(link, "bringing link up"); - r = sd_rtnl_message_link_new(RTM_SETLINK, link->ifindex, &req); + r = sd_rtnl_message_new_link(RTM_SETLINK, link->ifindex, &req); if (r < 0) { log_error_link(link, "Could not allocate RTM_SETLINK message"); return r; @@ -866,6 +866,8 @@ static int enslave_handler(sd_rtnl *rtnl, sd_rtnl_message *m, void *userdata) { } static int link_enter_enslave(Link *link) { + NetDev *vlan; + Iterator i; int r; assert(link); @@ -874,7 +876,8 @@ static int link_enter_enslave(Link *link) { link->state = LINK_STATE_ENSLAVING; - if (!link->network->bridge && !link->network->bond && !link->network->vlan) + if (!link->network->bridge && !link->network->bond && + hashmap_isempty(link->network->vlans)) return link_enslaved(link); if (link->network->bridge) { @@ -898,20 +901,17 @@ static int link_enter_enslave(Link *link) { link->enslaving ++; } - if (link->network->vlan) { + HASHMAP_FOREACH(vlan, link->network->vlans, i) { log_struct_link(LOG_DEBUG, link, "MESSAGE=%s: enslaving by '%s'", - link->ifname, link->network->vlan->name, - NETDEV(link->network->vlan), - NULL); + link->ifname, vlan->name, NETDEV(vlan), NULL); - r = netdev_enslave(link->network->vlan, link, &enslave_handler); + r = netdev_enslave(vlan, link, &enslave_handler); if (r < 0) { log_struct_link(LOG_WARNING, link, "MESSAGE=%s: could not enslave by '%s': %s", - link->ifname, link->network->vlan->name, - strerror(-r), NETDEV(link->network->vlan), - NULL); + link->ifname, vlan->name, strerror(-r), + NETDEV(vlan), NULL); link_enter_failed(link); return r; } @@ -950,7 +950,7 @@ static int link_get_handler(sd_rtnl *rtnl, sd_rtnl_message *m, void *userdata) { } static int link_get(Link *link) { - _cleanup_sd_rtnl_message_unref_ sd_rtnl_message *req = NULL; + _cleanup_rtnl_message_unref_ sd_rtnl_message *req = NULL; int r; assert(link); @@ -959,7 +959,7 @@ static int link_get(Link *link) { log_debug_link(link, "requesting link status"); - r = sd_rtnl_message_link_new(RTM_GETLINK, link->ifindex, &req); + r = sd_rtnl_message_new_link(RTM_GETLINK, link->ifindex, &req); if (r < 0) { log_error_link(link, "Could not allocate RTM_GETLINK message"); return r;