From 362643a847710affcb7906033c8e8629e7e1ebe4 Mon Sep 17 00:00:00 2001 From: Michal Privoznik Date: Thu, 2 Dec 2021 13:04:05 +0100 Subject: [PATCH] virnetdevveth: Do report error if creating veth fails For some weird reason we are ignoring errors when creating veth pair that netlink reports. This affects the LXC driver which creates interfaces for container in virLXCProcessSetupInterfaces(). If creating a veth pair fails, no error is reported and the control jumps onto cleanup label where some cryptic error message is reported instead (something about inability to remove veth pair). Let's report error that netlink returned - it's probably the most accurate reason anyways. Resolves: https://gitlab.com/libvirt/libvirt/-/issues/225 Signed-off-by: Michal Privoznik Reviewed-by: Martin Kletzander --- src/util/virnetdevveth.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/util/virnetdevveth.c b/src/util/virnetdevveth.c index 7133af44a2..b580e105ac 100644 --- a/src/util/virnetdevveth.c +++ b/src/util/virnetdevveth.c @@ -38,10 +38,19 @@ VIR_LOG_INIT("util.netdevveth"); static int virNetDevVethCreateInternal(const char *veth1, const char *veth2) { - int status; /* Just ignore it */ + int error = 0; virNetlinkNewLinkData data = { .veth_peer = veth2 }; - return virNetlinkNewLink(veth1, "veth", &data, &status); + if (virNetlinkNewLink(veth1, "veth", &data, &error) < 0) { + if (error != 0) { + virReportSystemError(-error, + _("unable to create %s <-> %s veth pair"), + veth1, veth2); + } + return -1; + } + + return 0; } static int -- 2.47.2