1234567891011121314151617181920212223242526 |
- package libbox
- import (
- "fmt"
- "syscall"
- "unsafe"
- "golang.org/x/sys/unix"
- )
- const ifReqSize = unix.IFNAMSIZ + 64
- func getTunnelName(fd int32) (string, error) {
- var ifr [ifReqSize]byte
- var errno syscall.Errno
- _, _, errno = unix.Syscall(
- unix.SYS_IOCTL,
- uintptr(fd),
- uintptr(unix.TUNGETIFF),
- uintptr(unsafe.Pointer(&ifr[0])),
- )
- if errno != 0 {
- return "", fmt.Errorf("failed to get name of TUN device: %w", errno)
- }
- return unix.ByteSliceToString(ifr[:]), nil
- }
|