| 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
 
- }
 
 
  |