networkd: link - don't fail if master netdev already exists

This allows restarts to work gracefully.
This commit is contained in:
Tom Gundersen 2014-07-01 13:30:23 +02:00
parent d5b3d845f0
commit 856f962c7a

View file

@ -1723,6 +1723,8 @@ static int link_enslaved(Link *link) {
assert(link->state == LINK_STATE_ENSLAVING); assert(link->state == LINK_STATE_ENSLAVING);
assert(link->network); assert(link->network);
log_debug_link(link, "enslaved");
if (!(link->flags & IFF_UP)) { if (!(link->flags & IFF_UP)) {
r = link_up(link); r = link_up(link);
if (r < 0) { if (r < 0) {
@ -1749,7 +1751,7 @@ static int enslave_handler(sd_rtnl *rtnl, sd_rtnl_message *m, void *userdata) {
return 1; return 1;
r = sd_rtnl_message_get_errno(m); r = sd_rtnl_message_get_errno(m);
if (r < 0) { if (r < 0 && r != -EEXIST) {
log_struct_link(LOG_ERR, link, log_struct_link(LOG_ERR, link,
"MESSAGE=%-*s: could not enslave: %s", "MESSAGE=%-*s: could not enslave: %s",
IFNAMSIZ, IFNAMSIZ,
@ -1760,9 +1762,7 @@ static int enslave_handler(sd_rtnl *rtnl, sd_rtnl_message *m, void *userdata) {
return 1; return 1;
} }
log_debug_link(link, "enslaved"); if (link->enslaving <= 0)
if (link->enslaving == 0)
link_enslaved(link); link_enslaved(link);
return 1; return 1;