summary refs log tree commit diff
path: root/nixos
diff options
context:
space:
mode:
authorFranz Pletz <fpletz@fnordicwalking.de>2017-02-18 13:37:50 +0100
committerGitHub <noreply@github.com>2017-02-18 13:37:50 +0100
commitc4c23f36caf91261ee316d763890a4684ef22771 (patch)
treef25661b0e3b16155f2bbd2f97e4535a201543501 /nixos
parent47c214cc2ac2bf83dac05b96f6807610a6743fe4 (diff)
parent741770c99abbd6a165b5a7b0d8206aebba671de7 (diff)
downloadnixlib-c4c23f36caf91261ee316d763890a4684ef22771.tar
nixlib-c4c23f36caf91261ee316d763890a4684ef22771.tar.gz
nixlib-c4c23f36caf91261ee316d763890a4684ef22771.tar.bz2
nixlib-c4c23f36caf91261ee316d763890a4684ef22771.tar.lz
nixlib-c4c23f36caf91261ee316d763890a4684ef22771.tar.xz
nixlib-c4c23f36caf91261ee316d763890a4684ef22771.tar.zst
nixlib-c4c23f36caf91261ee316d763890a4684ef22771.zip
Merge pull request #22727 from mayflower/fix/netdev-master-bindsto
network-interfaces service: fix bindsTo deps for masters
Diffstat (limited to 'nixos')
-rw-r--r--nixos/modules/tasks/network-interfaces-scripted.nix35
1 files changed, 16 insertions, 19 deletions
diff --git a/nixos/modules/tasks/network-interfaces-scripted.nix b/nixos/modules/tasks/network-interfaces-scripted.nix
index d94d9db54ca5..179300ef1667 100644
--- a/nixos/modules/tasks/network-interfaces-scripted.nix
+++ b/nixos/modules/tasks/network-interfaces-scripted.nix
@@ -60,21 +60,18 @@ let
       let
 
         deviceDependency = dev:
-          if (config.boot.isContainer == false)
-          then
-            # Trust udev when not in the container
-            optional (dev != null) (subsystemDevice dev)
-          else
-            # When in the container, check whether the interface is built from other definitions
-            if (hasAttr dev cfg.bridges) ||
-               (hasAttr dev cfg.bonds) ||
-               (hasAttr dev cfg.macvlans) ||
-               (hasAttr dev cfg.sits) ||
-               (hasAttr dev cfg.vlans) ||
-               (hasAttr dev cfg.vswitches) ||
-               (hasAttr dev cfg.wlanInterfaces)
-            then [ "${dev}-netdev.service" ]
-            else [];
+          # Use systemd service if we manage device creation, else
+          # trust udev when not in a container
+          if (hasAttr dev (filterAttrs (k: v: v.virtual) cfg.interfaces)) ||
+             (hasAttr dev cfg.bridges) ||
+             (hasAttr dev cfg.bonds) ||
+             (hasAttr dev cfg.macvlans) ||
+             (hasAttr dev cfg.sits) ||
+             (hasAttr dev cfg.vlans) ||
+             (hasAttr dev cfg.vswitches) ||
+             (hasAttr dev cfg.wlanInterfaces)
+          then [ "${dev}-netdev.service" ]
+          else optional (dev != null && !config.boot.isContainer) (subsystemDevice dev);
 
         networkLocalCommands = {
           after = [ "network-setup.service" ];
@@ -211,7 +208,7 @@ let
               user "${i.virtualOwner}"
             '';
             postStop = ''
-              ip link del ${i.name}
+              ip link del ${i.name} || true
             '';
           };
 
@@ -349,7 +346,7 @@ let
               ip link set "${n}" up
             '';
             postStop = ''
-              ip link delete "${n}"
+              ip link delete "${n}" || true
             '';
           });
 
@@ -377,7 +374,7 @@ let
               ip link set "${n}" up
             '';
             postStop = ''
-              ip link delete "${n}"
+              ip link delete "${n}" || true
             '';
           });
 
@@ -401,7 +398,7 @@ let
               ip link set "${n}" up
             '';
             postStop = ''
-              ip link delete "${n}"
+              ip link delete "${n}" || true
             '';
           });