package net

import "github.com/plgd-dev/go-coap/v3/net"

Index

Variables

var (
	ErrListenerIsClosed   = io.EOF
	ErrConnectionIsClosed = io.EOF
	ErrWriteInterrupted   = errors.New("only part data was written to socket")
)
var DefaultUDPConnConfig = UDPConnConfig{
	Errors: func(error) {

	},
}

Functions

func IsCancelOrCloseError

func IsCancelOrCloseError(err error) bool

func IsConnectionBrokenError

func IsConnectionBrokenError(err error) bool

Check if error returned by operation on a socket failed because the other side has closed the connection.

func IsIPv6

func IsIPv6(addr net.IP) bool

IsIPv6 return's true if addr is IPV6.

Types

type Conn

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

Conn is a generic stream-oriented network connection that provides Read/Write with context.

Multiple goroutines may invoke methods on a Conn simultaneously.

func NewConn

func NewConn(c net.Conn) *Conn

NewConn creates connection over net.Conn.

func (*Conn) Close

func (c *Conn) Close() error

Close closes the connection.

func (*Conn) LocalAddr

func (c *Conn) LocalAddr() net.Addr

LocalAddr returns the local network address. The Addr returned is shared by all invocations of LocalAddr, so do not modify it.

func (*Conn) NetConn

func (c *Conn) NetConn() net.Conn

NetConn returns the underlying connection that is wrapped by c. The Conn returned is shared by all invocations of Connection, so do not modify it.

func (*Conn) ReadFullWithContext

func (c *Conn) ReadFullWithContext(ctx context.Context, buffer []byte) error

ReadFullWithContext reads stream with context until whole buffer is satisfied.

func (*Conn) ReadWithContext

func (c *Conn) ReadWithContext(ctx context.Context, buffer []byte) (int, error)

ReadWithContext reads stream with context.

func (*Conn) RemoteAddr

func (c *Conn) RemoteAddr() net.Addr

RemoteAddr returns the remote network address. The Addr returned is shared by all invocations of RemoteAddr, so do not modify it.

func (*Conn) WriteWithContext

func (c *Conn) WriteWithContext(ctx context.Context, data []byte) error

WriteWithContext writes data with context.

type ContextOption

type ContextOption struct {
	Ctx context.Context
}

func WithContext

func WithContext(ctx context.Context) ContextOption

WithContext sets the context of operation.

func (ContextOption) ApplyRead

func (o ContextOption) ApplyRead(cfg *UDPReadCfg)

func (ContextOption) ApplyWrite

func (o ContextOption) ApplyWrite(cfg *UDPWriteCfg)

type ControlMessage

type ControlMessage struct {
	Dst     net.IP // destination address of the packet
	Src     net.IP // source address of the packet
	IfIndex int    // interface index, 0 means any interface
}

func (*ControlMessage) GetIfIndex

func (c *ControlMessage) GetIfIndex() int

GetIfIndex returns the interface index of the network interface. 0 means no interface index specified.

func (*ControlMessage) String

func (c *ControlMessage) String() string

type DTLSListener

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

DTLSListener is a DTLS listener that provides accept with context.

func NewDTLSListener

func NewDTLSListener(network string, addr string, dtlsCfg *dtls.Config) (*DTLSListener, error)

NewDTLSListener creates dtls listener. Known networks are "udp", "udp4" (IPv4-only), "udp6" (IPv6-only).

func (*DTLSListener) Accept

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

Accept waits for a generic Conn.

func (*DTLSListener) AcceptWithContext

func (l *DTLSListener) AcceptWithContext(ctx context.Context) (net.Conn, error)

AcceptWithContext waits with context for a generic Conn.

func (*DTLSListener) Addr

func (l *DTLSListener) Addr() net.Addr

Addr represents a network end point address.

func (*DTLSListener) Close

func (l *DTLSListener) Close() error

Close closes the connection.

type ErrorsOpt

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

func WithErrors

func WithErrors(v func(err error)) ErrorsOpt

func (ErrorsOpt) ApplyUDP

func (h ErrorsOpt) ApplyUDP(o *UDPConnConfig)

type InterfaceError

type InterfaceError = func(iface *net.Interface, err error)

type MulticastHoplimitOpt

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

type MulticastInterfaceErrorOpt

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

type MulticastInterfaceMode

type MulticastInterfaceMode int
const (
	MulticastAllInterface      MulticastInterfaceMode = 0
	MulticastAnyInterface      MulticastInterfaceMode = 1
	MulticastSpecificInterface MulticastInterfaceMode = 2
)

type MulticastInterfaceModeOpt

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

type MulticastInterfaceOpt

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

type MulticastOption

type MulticastOption interface {
	// contains filtered or unexported methods
}

A MulticastOption sets options such as hop limit, etc.

func WithAllMulticastInterface

func WithAllMulticastInterface() MulticastOption

func WithAnyMulticastInterface

func WithAnyMulticastInterface() MulticastOption

func WithMulticastHoplimit

func WithMulticastHoplimit(hoplimit int) MulticastOption

func WithMulticastInterface

func WithMulticastInterface(iface net.Interface) MulticastOption

func WithMulticastInterfaceError

func WithMulticastInterfaceError(interfaceError InterfaceError) MulticastOption

WithMulticastInterfaceError sets the callback for interface errors. If it is set error is not propagated as result of WriteMulticast.

func WithMulticastSource

func WithMulticastSource(source net.IP) MulticastOption

type MulticastOptions

type MulticastOptions struct {
	IFaceMode      MulticastInterfaceMode
	Iface          *net.Interface
	Source         *net.IP
	HopLimit       int
	InterfaceError InterfaceError
}

func DefaultMulticastOptions

func DefaultMulticastOptions() MulticastOptions

func (*MulticastOptions) Apply

func (m *MulticastOptions) Apply(o MulticastOption)

type MulticastSourceOpt

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

type ReadWriteOptionHandler

type ReadWriteOptionHandler[F UDPWriteApplyFunc | UDPReadApplyFunc] struct {
	Func F
}

func (ReadWriteOptionHandler[F]) ApplyRead

func (o ReadWriteOptionHandler[F]) ApplyRead(cfg *UDPReadCfg)

func (ReadWriteOptionHandler[F]) ApplyWrite

func (o ReadWriteOptionHandler[F]) ApplyWrite(cfg *UDPWriteCfg)

type TCPListener

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

TCPListener is a TCP network listener that provides accept with context.

func NewTCPListener

func NewTCPListener(network string, addr string) (*TCPListener, error)

NewTCPListener creates tcp listener. Known networks are "tcp", "tcp4" (IPv4-only), "tcp6" (IPv6-only).

func (*TCPListener) Accept

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

Accept waits for a generic Conn.

func (*TCPListener) AcceptWithContext

func (l *TCPListener) AcceptWithContext(ctx context.Context) (net.Conn, error)

AcceptWithContext waits with context for a generic Conn.

func (*TCPListener) Addr

func (l *TCPListener) Addr() net.Addr

Addr represents a network end point address.

func (*TCPListener) Close

func (l *TCPListener) Close() error

Close closes the connection.

type TLSListener

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

TLSListener is a TLS listener that provides accept with context.

func NewTLSListener

func NewTLSListener(network string, addr string, tlsCfg *tls.Config) (*TLSListener, error)

NewTLSListener creates tcp listener. Known networks are "tcp", "tcp4" (IPv4-only), "tcp6" (IPv6-only).

func (*TLSListener) Accept

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

Accept waits for a generic Conn.

func (*TLSListener) AcceptWithContext

func (l *TLSListener) AcceptWithContext(ctx context.Context) (net.Conn, error)

AcceptWithContext waits with context for a generic Conn.

func (*TLSListener) Addr

func (l *TLSListener) Addr() net.Addr

Addr represents a network end point address.

func (*TLSListener) Close

func (l *TLSListener) Close() error

Close closes the connection.

type UDPConn

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

UDPConn is a udp connection provides Read/Write with context.

Multiple goroutines may invoke methods on a UDPConn simultaneously.

func NewListenUDP

func NewListenUDP(network, addr string, opts ...UDPOption) (*UDPConn, error)

func NewUDPConn

func NewUDPConn(network string, c *net.UDPConn, opts ...UDPOption) *UDPConn

NewUDPConn creates connection over net.UDPConn.

func (*UDPConn) Close

func (c *UDPConn) Close() error

Close closes the connection.

func (*UDPConn) JoinGroup

func (c *UDPConn) JoinGroup(ifi *net.Interface, group net.Addr) error

JoinGroup joins the group address group on the interface ifi. By default all sources that can cast data to group are accepted. It's possible to mute and unmute data transmission from a specific source by using ExcludeSourceSpecificGroup and IncludeSourceSpecificGroup. JoinGroup uses the system assigned multicast interface when ifi is nil, although this is not recommended because the assignment depends on platforms and sometimes it might require routing configuration.

func (*UDPConn) LeaveGroup

func (c *UDPConn) LeaveGroup(ifi *net.Interface, group net.Addr) error

LeaveGroup leaves the group address group on the interface ifi regardless of whether the group is any-source group or source-specific group.

func (*UDPConn) LocalAddr

func (c *UDPConn) LocalAddr() net.Addr

LocalAddr returns the local network address. The Addr returned is shared by all invocations of LocalAddr, so do not modify it.

func (*UDPConn) NetConn

func (c *UDPConn) NetConn() net.Conn

NetConn returns the underlying connection that is wrapped by c. The Conn returned is shared by all invocations of NetConn, so do not modify it.

func (*UDPConn) Network

func (c *UDPConn) Network() string

Network name of the network (for example, udp4, udp6, udp)

func (*UDPConn) ReadWithContext

func (c *UDPConn) ReadWithContext(ctx context.Context, buffer []byte) (int, *net.UDPAddr, error)

ReadWithContext reads packet with context.

func (*UDPConn) ReadWithOptions

func (c *UDPConn) ReadWithOptions(buffer []byte, opts ...UDPReadOption) (int, error)

ReadWithOptions reads packet with options. Via opts you can get also the remote address and control message.

func (*UDPConn) RemoteAddr

func (c *UDPConn) RemoteAddr() net.Addr

RemoteAddr returns the remote network address. The Addr returned is shared by all invocations of RemoteAddr, so do not modify it.

func (*UDPConn) SetMulticastLoopback

func (c *UDPConn) SetMulticastLoopback(on bool) error

SetMulticastLoopback sets whether transmitted multicast packets should be copied and send back to the originator.

func (*UDPConn) WriteMulticast

func (c *UDPConn) WriteMulticast(ctx context.Context, raddr *net.UDPAddr, buffer []byte, opts ...MulticastOption) error

WriteMulticast sends multicast to the remote multicast address. By default it is sent over all network interfaces and all compatible source IP addresses with hop limit 1. Via opts you can specify the network interface, source IP address, and hop limit.

func (*UDPConn) WriteWithContext

func (c *UDPConn) WriteWithContext(ctx context.Context, raddr *net.UDPAddr, buffer []byte) error

WriteWithContext writes data with context.

func (*UDPConn) WriteWithOptions

func (c *UDPConn) WriteWithOptions(buffer []byte, opts ...UDPWriteOption) error

WriteWithOptions writes data with options. Via opts you can specify the remote address and control message.

type UDPConnConfig

type UDPConnConfig struct {
	Errors func(err error)
}

type UDPOption

type UDPOption interface {
	ApplyUDP(*UDPConnConfig)
}

A UDPOption sets options such as errors parameters, etc.

type UDPReadApplyFunc

type UDPReadApplyFunc func(cfg *UDPReadCfg)

type UDPReadCfg

type UDPReadCfg struct {
	Ctx            context.Context
	RemoteAddr     **net.UDPAddr
	ControlMessage **ControlMessage
}

func (*UDPReadCfg) ApplyRead

func (c *UDPReadCfg) ApplyRead(cfg *UDPReadCfg)

type UDPReadOption

type UDPReadOption interface {
	ApplyRead(cfg *UDPReadCfg)
}

func WithGetControlMessage

func WithGetControlMessage(cm **ControlMessage) UDPReadOption

WithGetControlMessage fills the control message when reading succeeds.

func WithGetRemoteAddr

func WithGetRemoteAddr(raddr **net.UDPAddr) UDPReadOption

WithGetRemoteAddr fills the remote address when reading succeeds.

type UDPWriteApplyFunc

type UDPWriteApplyFunc func(cfg *UDPWriteCfg)

type UDPWriteCfg

type UDPWriteCfg struct {
	Ctx            context.Context
	RemoteAddr     *net.UDPAddr
	ControlMessage *ControlMessage
}

func (*UDPWriteCfg) ApplyWrite

func (c *UDPWriteCfg) ApplyWrite(cfg *UDPWriteCfg)

type UDPWriteOption

type UDPWriteOption interface {
	ApplyWrite(cfg *UDPWriteCfg)
}

func WithControlMessage

func WithControlMessage(cm *ControlMessage) UDPWriteOption

WithControlMessage sets the control message to packet.

func WithRemoteAddr

func WithRemoteAddr(raddr *net.UDPAddr) UDPWriteOption

WithRemoteAddr sets the remote address to packet.

Source Files

conn.go connUDP.go dtlslistener.go error.go error_unix.go options.go supportsOverrideRemoteAddr.go tcplistener.go tlslistener.go

Directories

PathSynopsis
net/blockwise
net/client
net/client/limitParallelRequests
net/monitor
net/monitor/inactivity
net/observation
net/responsewriter
Version
v3.3.6 (latest)
Published
Sep 18, 2024
Platform
linux/amd64
Imports
14 packages
Last checked
1 week ago

Tools for package owners.