mirror of
https://git.proxmox.com/git/mirror_lxc
synced 2025-07-27 11:13:50 +00:00
network: Makes vlan network interfaces set mtu before upscript called
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>
This commit is contained in:
parent
19a503200d
commit
3e2a7b083b
@ -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) {
|
||||
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user