//go:build linux package transport import ( "fmt" "syscall" ) // udpBindDeviceControl 返回一个 Control 函数,用于在 Linux 上将 UDP socket 绑定到指定网卡设备。 func udpBindDeviceControl(device string) (func(string, string, syscall.RawConn) error, error) { return func(_, _ string, rawConn syscall.RawConn) error { var bindErr error if err := rawConn.Control(func(fd uintptr) { bindErr = syscall.BindToDevice(int(fd), device) }); err != nil { return err } if bindErr != nil { return fmt.Errorf("transport: bind device %s: %w", device, bindErr) } return nil }, nil }