Skip to content

Commit

Permalink
network: Makes vlan network interfaces set mtu before upscript called
Browse files Browse the repository at this point in the history
This is consistent with veth and ipvlan types.

Also makes the debug message for success occur after up script has run.

Also makes device clean up on error more thorough and consistent.

Signed-off-by: tomponline <thomas.parrott@canonical.com>
  • Loading branch information
tomponline committed May 7, 2019
1 parent 19a5032 commit 3e2a7b0
Showing 1 changed file with 22 additions and 21 deletions.
43 changes: 22 additions & 21 deletions src/lxc/network.c
Expand Up @@ -555,8 +555,23 @@ static int instantiate_vlan(struct lxc_handler *handler, struct lxc_netdev *netd
netdev->ifindex = if_nametoindex(peer);
if (!netdev->ifindex) {
ERROR("Failed to retrieve ifindex for \"%s\"", peer);
lxc_netdev_delete_by_name(peer);
return -1;
goto on_error;
}

if (netdev->mtu) {
err = lxc_safe_uint(netdev->mtu, &mtu);
if (err < 0) {
errno = -err;
SYSERROR("Failed to parse mtu \"%s\" for interface \"%s\"", netdev->mtu, peer);
goto on_error;
}

err = lxc_netdev_set_mtu(peer, mtu);
if (err) {
errno = -err;
SYSERROR("Failed to set mtu \"%s\" for interface \"%s\"", netdev->mtu, peer);
goto on_error;
}
}

if (netdev->upscript) {
Expand All @@ -570,32 +585,18 @@ static int instantiate_vlan(struct lxc_handler *handler, struct lxc_netdev *netd
handler->conf->hooks_version, "net",
netdev->upscript, "up", argv);
if (err < 0) {
lxc_netdev_delete_by_name(peer);
return -1;
goto on_error;
}
}

DEBUG("Instantiated vlan \"%s\" with ifindex is \"%d\" (vlan1000)",
peer, netdev->ifindex);
if (netdev->mtu) {
if (lxc_safe_uint(netdev->mtu, &mtu) < 0) {
ERROR("Failed to retrieve mtu from \"%d\"/\"%s\".",
netdev->ifindex,
netdev->name[0] != '\0' ? netdev->name : "(null)");
return -1;
}

err = lxc_netdev_set_mtu(peer, mtu);
if (err) {
errno = -err;
SYSERROR("Failed to set mtu \"%s\" for \"%s\"",
netdev->mtu, peer);
lxc_netdev_delete_by_name(peer);
return -1;
}
}

return 0;

on_error:
lxc_netdev_delete_by_name(peer);
return -1;
}

static int instantiate_phys(struct lxc_handler *handler, struct lxc_netdev *netdev)
Expand Down

0 comments on commit 3e2a7b0

Please sign in to comment.