transport

package
v1.0.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 24, 2025 License: AGPL-3.0 Imports: 28 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var DefaultPacketListener = &dlhelper.SocketSetting{}
View Source
var SecurityNameToConfigType = make(map[string]reflect.Type)
View Source
var TransportNameToConfigType = make(map[string]reflect.Type)

Functions

func Listen

func Listen(addr net1.Destination, config *Config) (net.Listener, error)

Keeps accepting and use h to handle the conn.

func NewDialer

func NewDialer(protocolConfig, securityConfig interface{}, dl i.DialerListener, dnsServer i.ECHResolver) (i.Dialer, error)

Types

type BindToDefaultNICDialer

type BindToDefaultNICDialer struct {
	// contains filtered or unexported fields
}

func NewBindToDefaultNICDialer

func NewBindToDefaultNICDialer(defaultNICMonitor i.DefaultInterfaceInfo, socketSetting *dlhelper.SocketSetting) *BindToDefaultNICDialer

func (*BindToDefaultNICDialer) Dial

func (*BindToDefaultNICDialer) ListenPacket

func (d *BindToDefaultNICDialer) ListenPacket(ctx context.Context, network, address string) (net.PacketConn, error)

type Config

type Config struct {
	Security interface{}
	Protocol interface{}
	Socket   *dlhelper.SocketSetting
	// used to lookup ech config
	DnsServer i.ECHResolver
	// dialer
	DomainStrategy domain.DomainStrategy
	Address        net1.Address
	PortSelector   i.PortSelector
}

func (*Config) Listen

func (config *Config) Listen(ctx context.Context, netAddr net.Addr) (net.Listener, error)

type DialerFactory

type DialerFactory interface {
	GetDialer(*Config) (i.Dialer, error)
	GetPacketListener(*Config) (i.PacketListener, error)
}

type DialerFactoryImp

type DialerFactoryImp struct {
	DialerFactoryOption
}

To prevent route loop

func DefaultDialerFactory

func DefaultDialerFactory() *DialerFactoryImp

func NewDialerFactoryImp

func NewDialerFactoryImp(options DialerFactoryOption) *DialerFactoryImp

func (*DialerFactoryImp) GetDialer

func (d *DialerFactoryImp) GetDialer(config *Config) (i.Dialer, error)

func (*DialerFactoryImp) GetPacketListener

func (d *DialerFactoryImp) GetPacketListener(config *Config) (i.PacketListener, error)

type DialerFactoryOption

type DialerFactoryOption struct {
	Retry                   bool
	BindToDefaultNIC        bool
	IpResolver              i.IPResolver
	DefaultInterfaceMonitor i.DefaultInterfaceInfo
	// used to bind to default nic
	FdFunc FdFunc
}

type FdFunc

type FdFunc func(fd uintptr) error

type HandlerDialerFactory

type HandlerDialerFactory struct {
	Handler   i.Handler
	DnsServer i.ECHResolver
}

use a handler to dial and listen

func (*HandlerDialerFactory) GetDialer

func (d *HandlerDialerFactory) GetDialer(config *Config) (i.Dialer, error)

func (*HandlerDialerFactory) GetPacketListener

func (d *HandlerDialerFactory) GetPacketListener(config *Config) (i.PacketListener, error)

type Listener

type Listener interface {
	Close() error
	Addr() net.Addr
}

type ListenerAdapter

type ListenerAdapter struct {
	Listener
	// contains filtered or unexported fields
}

func (*ListenerAdapter) Accept

func (l *ListenerAdapter) Accept() (net.Conn, error)

func (*ListenerAdapter) Close

func (l *ListenerAdapter) Close() error

type ListenerImpl

type ListenerImpl struct {
	Socket         *dlhelper.SocketSetting
	SecurityConfig interface{}
	// contains filtered or unexported fields
}

func (*ListenerImpl) Listen

func (l *ListenerImpl) Listen(ctx context.Context, addr net.Addr) (net.Listener, error)

type PreConnectDialer

type PreConnectDialer struct {
	i.Dialer

	PortSelector i.PortSelector
	// contains filtered or unexported fields
}

func NewPreConnectDialer

func NewPreConnectDialer(ctx context.Context, dialer i.Dialer, addr net.Address,
	portSelector i.PortSelector) *PreConnectDialer

NewPreConnectDialer creates a new PreConnectDialer with connection pooling

func (*PreConnectDialer) Dial

Dial returns a pre-established connection from the pool, or creates a new one if pool is empty

type Prefer4Dialer

type Prefer4Dialer struct {
	i.Dialer
	IpResolver i.IPResolver
}

func (*Prefer4Dialer) Dial

func (p *Prefer4Dialer) Dial(ctx context.Context, dst net1.Destination) (net.Conn, error)

type ResolveDomainDialer

type ResolveDomainDialer struct {
	i.DialerListener
	Dns i.IPResolver
	// if nil, use lookupIP to lookup domain
	// when not-nil, Dialer tyically use default nic to dial.
	DefaultInterfaceInfo i.DefaultInterfaceInfo
	Strategy             domain.DomainStrategy
}

This dialer will resolve domain to ip address before dial. If the default interface does not support ipv6, it will only lookup ipv4.

func (*ResolveDomainDialer) Dial

beaware that when DefaultInterfaceInfo is nil, LookupIP might return ipv6 address while the default nic does not support ipv6.

type RetryDialer

type RetryDialer struct {
	i.Dialer
}

func (*RetryDialer) Dial

func (d *RetryDialer) Dial(ctx context.Context, target net1.Destination) (net.Conn, error)

type UdpDialer

type UdpDialer struct {
	// contains filtered or unexported fields
}

func (*UdpDialer) Dial

func (d *UdpDialer) Dial(ctx context.Context, dest net1.Destination) (net.Conn, error)

Directories

Path Synopsis
tls
utp
protocols
kcp
Package kcp - A Fast and Reliable ARQ Protocol
Package kcp - A Fast and Reliable ARQ Protocol
tcp
udp
websocket
Package websocket implements Websocket transport
Package websocket implements Websocket transport
tls

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL