Documentation ¶
Index ¶
- Constants
- Variables
- func BroadcastAddr(inet4Address []netip.Prefix) netip.Addr
- func CalculateInterfaceName(name string) (tunName string)
- func NetworkFromName(name string) uint8
- func NetworkName(network uint8) string
- type DefaultInterfaceMonitor
- type DefaultInterfaceMonitorOptions
- type DefaultInterfaceUpdateCallback
- type Handler
- type LinuxTUN
- type NativeTun
- func (t *NativeTun) BatchRead(buffers [][]byte, offset int, readN []int) (n int, err error)
- func (t *NativeTun) BatchSize() int
- func (t *NativeTun) BatchWrite(buffers [][]byte, offset int) error
- func (t *NativeTun) Close() error
- func (t *NativeTun) FrontHeadroom() int
- func (t *NativeTun) Read(p []byte) (n int, err error)
- func (t *NativeTun) TXChecksumOffload() bool
- func (t *NativeTun) Write(p []byte) (n int, err error)
- func (t *NativeTun) WriteVectorised(buffers []*buf.Buffer) error
- type NetworkUpdateCallback
- type NetworkUpdateMonitor
- type Options
- type PackageManager
- type PackageManagerCallback
- type Session
- type Stack
- type StackOptions
- type System
- type TCPNat
- type TCPSession
- type Tun
- type WinTun
Constants ¶
View Source
const ( EventInterfaceUpdate = 1 EventAndroidVPNUpdate = 2 EventNoRoute = 4 )
View Source
const PacketOffset = 0
View Source
const WithGVisor = false
Variables ¶
View Source
var ErrGVisorNotIncluded = E.New(`gVisor is not included in this build, rebuild with -tags with_gvisor`)
View Source
var ErrNetlinkBanned = E.New(
"netlink socket in Android is banned by Google, " +
"use the root or system (ADB) user to run sing-box, " +
"or switch to the sing-box Adnroid graphical interface client",
)
View Source
var ErrNoRoute = E.New("no route to internet")
View Source
var ErrTooManySegments = E.New("too many segments")
Functions ¶
func CalculateInterfaceName ¶
func NetworkFromName ¶ added in v0.1.3
func NetworkName ¶ added in v0.1.3
Types ¶
type DefaultInterfaceMonitor ¶
type DefaultInterfaceMonitor interface { Start() error Close() error DefaultInterfaceName(destination netip.Addr) string DefaultInterfaceIndex(destination netip.Addr) int DefaultInterface(destination netip.Addr) (string, int) OverrideAndroidVPN() bool AndroidVPNEnabled() bool RegisterCallback(callback DefaultInterfaceUpdateCallback) *list.Element[DefaultInterfaceUpdateCallback] UnregisterCallback(element *list.Element[DefaultInterfaceUpdateCallback]) }
func NewDefaultInterfaceMonitor ¶
func NewDefaultInterfaceMonitor(networkMonitor NetworkUpdateMonitor, logger logger.Logger, options DefaultInterfaceMonitorOptions) (DefaultInterfaceMonitor, error)
type DefaultInterfaceUpdateCallback ¶
type DefaultInterfaceUpdateCallback = func(event int)
type Handler ¶
type Handler interface { N.TCPConnectionHandler N.UDPConnectionHandler E.Handler }
type NativeTun ¶
type NativeTun struct {
// contains filtered or unexported fields
}
func (*NativeTun) BatchWrite ¶ added in v0.2.0
func (*NativeTun) FrontHeadroom ¶ added in v0.2.0
func (*NativeTun) TXChecksumOffload ¶ added in v0.2.0
type NetworkUpdateCallback ¶
type NetworkUpdateCallback = func()
type NetworkUpdateMonitor ¶
type NetworkUpdateMonitor interface { Start() error Close() error RegisterCallback(callback NetworkUpdateCallback) *list.Element[NetworkUpdateCallback] UnregisterCallback(element *list.Element[NetworkUpdateCallback]) }
func NewNetworkUpdateMonitor ¶
func NewNetworkUpdateMonitor(logger logger.Logger) (NetworkUpdateMonitor, error)
type Options ¶
type Options struct { Name string Inet4Address []netip.Prefix Inet6Address []netip.Prefix MTU uint32 GSO bool AutoRoute bool StrictRoute bool Inet4RouteAddress []netip.Prefix Inet6RouteAddress []netip.Prefix Inet4RouteExcludeAddress []netip.Prefix Inet6RouteExcludeAddress []netip.Prefix IncludeInterface []string ExcludeInterface []string IncludeUID []ranges.Range[uint32] ExcludeUID []ranges.Range[uint32] IncludeAndroidUser []int IncludePackage []string ExcludePackage []string InterfaceMonitor DefaultInterfaceMonitor TableIndex int FileDescriptor int Logger logger.Logger // contains filtered or unexported fields }
func (*Options) BuildAndroidRules ¶
func (o *Options) BuildAndroidRules(packageManager PackageManager, errorHandler E.Handler)
func (*Options) BuildAutoRouteRanges ¶ added in v0.2.0
type PackageManager ¶
type PackageManager interface { Start() error Close() error IDByPackage(packageName string) (uint32, bool) PackageByID(id uint32) (string, bool) }
func NewPackageManager ¶
func NewPackageManager(callback PackageManagerCallback) (PackageManager, error)
type PackageManagerCallback ¶
type Stack ¶
func NewGVisor ¶
func NewGVisor( options StackOptions, ) (Stack, error)
func NewMixed ¶ added in v0.1.11
func NewMixed( options StackOptions, ) (Stack, error)
func NewSystem ¶
func NewSystem(options StackOptions) (Stack, error)
type StackOptions ¶
type TCPNat ¶
type TCPNat struct {
// contains filtered or unexported fields
}
func (*TCPNat) LookupBack ¶
func (n *TCPNat) LookupBack(port uint16) *TCPSession
type TCPSession ¶
type Tun ¶
type Tun interface { io.ReadWriter N.VectorisedWriter Close() error }
Source Files ¶
- monitor.go
- monitor_linux.go
- monitor_linux_default.go
- monitor_shared.go
- network_name.go
- packages.go
- packages_stub.go
- stack.go
- stack_gvisor_stub.go
- stack_system.go
- stack_system_nat.go
- stack_system_nonwindows.go
- tun.go
- tun_linux.go
- tun_linux_flags.go
- tun_linux_offload.go
- tun_linux_offload_errors.go
- tun_nondarwin.go
- tun_rules.go
Click to show internal directories.
Click to hide internal directories.