]> git.ipfire.org Git - thirdparty/wireguard-go.git/commitdiff
tun: freebsd: allow empty names
authorKay Diam <kay.diam@gmail.com>
Sun, 7 Mar 2021 16:21:31 +0000 (17:21 +0100)
committerJason A. Donenfeld <Jason@zx2c4.com>
Tue, 9 Mar 2021 04:32:27 +0000 (21:32 -0700)
This change allows omitting the tun interface name setting. When the
name is not set, the kernel automatically picks up the tun name and
index.

Signed-off-by: Kay Diam <kay.diam@gmail.com>
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
tun/tun_freebsd.go

index 12b44da05e18e0d56558064081076d8e4b05d2c0..1883aad589156398ac8d0b1f3b041c138926da18 100644 (file)
@@ -346,22 +346,24 @@ func CreateTUN(name string, mtu int) (Device, error) {
                return nil, fmt.Errorf("Unable to set nd6 flags for %s: %w", assignedName, errno)
        }
 
-       // Rename the interface
-       var newnp [unix.IFNAMSIZ]byte
-       copy(newnp[:], name)
-       var ifr ifreq_ptr
-       copy(ifr.Name[:], assignedName)
-       ifr.Data = uintptr(unsafe.Pointer(&newnp[0]))
-       _, _, errno = unix.Syscall(
-               unix.SYS_IOCTL,
-               uintptr(confd),
-               uintptr(unix.SIOCSIFNAME),
-               uintptr(unsafe.Pointer(&ifr)),
-       )
-       if errno != 0 {
-               tunFile.Close()
-               tunDestroy(assignedName)
-               return nil, fmt.Errorf("Failed to rename %s to %s: %w", assignedName, name, errno)
+       if name != "" {
+               // Rename the interface
+               var newnp [unix.IFNAMSIZ]byte
+               copy(newnp[:], name)
+               var ifr ifreq_ptr
+               copy(ifr.Name[:], assignedName)
+               ifr.Data = uintptr(unsafe.Pointer(&newnp[0]))
+               _, _, errno = unix.Syscall(
+                       unix.SYS_IOCTL,
+                       uintptr(confd),
+                       uintptr(unix.SIOCSIFNAME),
+                       uintptr(unsafe.Pointer(&ifr)),
+               )
+               if errno != 0 {
+                       tunFile.Close()
+                       tunDestroy(assignedName)
+                       return nil, fmt.Errorf("Failed to rename %s to %s: %w", assignedName, name, errno)
+               }
        }
 
        return CreateTUNFromFile(tunFile, mtu)