The following pull request was submitted through Github.
It can be accessed and reviewed at: https://github.com/lxc/lxc/pull/2979

This e-mail was sent by the LXC bot, direct replies will not reach the author
unless they happen to be subscribed to this list.

=== Description (from pull-request) ===
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 <[email protected]>
From 3e2a7b083b9eb472f95ba8ed45313745f5a10f0f Mon Sep 17 00:00:00 2001
From: tomponline <[email protected]>
Date: Tue, 7 May 2019 12:34:34 +0100
Subject: [PATCH] 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 <[email protected]>
---
 src/lxc/network.c | 43 ++++++++++++++++++++++---------------------
 1 file changed, 22 insertions(+), 21 deletions(-)

diff --git a/src/lxc/network.c b/src/lxc/network.c
index 5edd822b48..8a0a0439eb 100644
--- a/src/lxc/network.c
+++ b/src/lxc/network.c
@@ -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)
_______________________________________________
lxc-devel mailing list
[email protected]
http://lists.linuxcontainers.org/listinfo/lxc-devel

Reply via email to