chiark / gitweb /
nspawn: copy /dev/net/tun from host
authorTom Gundersen <teg@jklm.no>
Wed, 8 Oct 2014 13:01:07 +0000 (15:01 +0200)
committerTom Gundersen <teg@jklm.no>
Wed, 8 Oct 2014 13:52:07 +0000 (15:52 +0200)
This enables tuntap support in the container (assumning the necessary capabilities are in place).

src/nspawn/nspawn.c

index 34436b82a2879b3778bce44dcb27f59298740a11..da4c116f363368888ad42360f228842b8105fa17 100644 (file)
@@ -1101,7 +1101,8 @@ static int copy_devnodes(const char *dest) {
                 "full\0"
                 "random\0"
                 "urandom\0"
-                "tty\0";
+                "tty\0"
+                "net/tun\0";
 
         const char *d;
         int r = 0;
@@ -1132,10 +1133,17 @@ static int copy_devnodes(const char *dest) {
                         log_error("%s is not a char or block device, cannot copy", from);
                         return -EIO;
 
-                } else if (mknod(to, st.st_mode, st.st_rdev) < 0) {
+                } else {
+                        r = mkdir_parents(to, 0775);
+                        if (r < 0) {
+                                log_error("Failed to create parent directory of %s: %s", to, strerror(-r));
+                                return -r;
+                        }
 
-                        log_error("mknod(%s) failed: %m", dest);
-                        return  -errno;
+                        if (mknod(to, st.st_mode, st.st_rdev) < 0) {
+                                log_error("mknod(%s) failed: %m", dest);
+                                return  -errno;
+                        }
                 }
         }