sctp

package
v0.3.0 Latest Latest
Warning

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

Go to latest
Published: Sep 24, 2025 License: Apache-2.0 Imports: 14 Imported by: 0

Documentation

Index

Constants

View Source
const (
	SolSCTP = 132

	SCTPBindxAddAddr = 0x01
	SCTPBindxRemAddr = 0x02

	MsgNotification = 0x8000
)
View Source
const (
	SCTPRtoInfo = iota
	SCTPAssocInfo
	SCTPInitMsg
	SCTPNoDelay
	SCTPAutoClose
	SCTPSetPeerPrimaryAddr
	SCTPPrimaryAddr
	SCTPAdaptationLayer
	SCTPDisableFragments
	SCTPPeerAddrParams
	SCTPDefaultSentParam
	SCTPEvents
	SCTPIWantMappedV4Addr
	SCTPMaxSeg
	SCTPStatus
	SCTPGetPeerAddrInfo
	SCTPDelayedAckTime
	SCTPDelayedAck  = SCTPDelayedAckTime
	SCTPDelayedSack = SCTPDelayedAckTime

	SCTPSockOptBindxAdd  = 100
	SCTPSockOptBindxRem  = 101
	SCTPSockOptPeelOff   = 102
	SCTPGetPeerAddrs     = 108
	SCTPGetLocalAddrs    = 109
	SCTPSockOptConnectx  = 110
	SCTPSockOptConnectx3 = 111
)
View Source
const (
	SCTPEventDataIO = 1 << iota
	SCTPEventAssociation
	SCTPEventAddress
	SCTPEventSendFailure
	SCTPEventSendPeerError
	SCTPEventShutdown
	SCTPEventPartialDelivery
	SCTPEventAdaptationLayer
	SCTPEventAuthentication
	SCTPEventSenderDry

	SCTPEventAll = SCTPEventDataIO | SCTPEventAssociation | SCTPEventAddress | SCTPEventSendFailure | SCTPEventSendPeerError | SCTPEventShutdown | SCTPEventPartialDelivery | SCTPEventAdaptationLayer | SCTPEventAuthentication | SCTPEventSenderDry
)
View Source
const (
	SCTPSnTypeBase = SCTPNotificationType(iota + (1 << 15))
	SCTPAssocChange
	SCTPPeerAddrChange
	SCTPSendFailed
	SCTPRemoteError
	SCTPShutdownEvent
	SCTPPartialDeliveryEvent
	SCTPAdaptationIndication
	SCTPAuthenticationIndication
	SCTPSenderDryEvent
)
View Source
const (
	SCTPCMsgInit = iota
	SCTPCMsgSndRcv
	SCTPCMsgSndInfo
	SCTPCMsgRcvInfo
	SCTPCMsgNxtInfo
)
View Source
const (
	SCTPUnordered = 1 << iota
	SCTPAddrOver
	SCTPAbort
	SCTPSackImmediately
	SCTPEof
)
View Source
const (
	SCTPCommUp = SCTPState(iota)
	SCTPCommLost
	SCTPRestart
	SCTPShutdownComp
	SCTPCantStrAssoc
)

Variables

This section is empty.

Functions

func SCTPBind

func SCTPBind(fd int, addr *SCTPAddr, flags int) error

Types

type AssocInfo

type AssocInfo struct {
	AssocID SCTPAssocID
	// maximum retransmission attempts to make for the association
	AsocMaxRxt uint16
	// number of destination addresses that the peer has
	NumberPeerDestinations uint16
	// current value of the peer's rwnd (reported in the last selective acknowledgment (SACK)) minus any outstanding data
	PeerRwnd uint32
	// the last reported rwnd that was sent to the peer
	LocalRwnd uint32
	// the association's cookie life value used when issuing cookies
	CookieLife uint32
}

Association Parameters defined in RFC 6458 8.1

type EventSubscribe

type EventSubscribe struct {
	DataIO          uint8
	Association     uint8
	Address         uint8
	SendFailure     uint8
	PeerError       uint8
	Shutdown        uint8
	PartialDelivery uint8
	AdaptationLayer uint8
	Authentication  uint8
	SenderDry       uint8
}

type GetAddrsOld

type GetAddrsOld struct {
	AssocID int32
	AddrNum int32
	Addrs   uintptr
}

type InitMsg

type InitMsg struct {
	NumOstreams    uint16
	MaxInstreams   uint16
	MaxAttempts    uint16
	MaxInitTimeout uint16
}

type Notification

type Notification interface {
	Type() SCTPNotificationType
	Flags() uint16
	Length() uint32
}

type NotificationHandler

type NotificationHandler func([]byte) error

type NotificationHeader

type NotificationHeader struct {
	Type   uint16
	Flags  uint16
	Length uint32
}

type RtoInfo

type RtoInfo struct {
	SrtoAssocID int32
	SrtoInitial uint32
	SrtoMax     uint32
	StroMin     uint32
}

Retransmission Timeout Parameters defined in RFC 6458 8.1

type SCTPAddr

type SCTPAddr struct {
	IPAddrs []net.IPAddr
	Port    int
}

func (*SCTPAddr) Network

func (a *SCTPAddr) Network() string

func (*SCTPAddr) String

func (a *SCTPAddr) String() string

func (*SCTPAddr) ToRawSockAddrBuf

func (a *SCTPAddr) ToRawSockAddrBuf() []byte

type SCTPAssocChangeEvent

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

SCTPAssocChangeEvent is an implementation of Notification interface

func (*SCTPAssocChangeEvent) AssocID

func (s *SCTPAssocChangeEvent) AssocID() SCTPAssocID

func (*SCTPAssocChangeEvent) Flags

func (s *SCTPAssocChangeEvent) Flags() uint16

func (*SCTPAssocChangeEvent) InboundStreams

func (s *SCTPAssocChangeEvent) InboundStreams() uint16

func (*SCTPAssocChangeEvent) Info

func (s *SCTPAssocChangeEvent) Info() []uint8

func (*SCTPAssocChangeEvent) Length

func (s *SCTPAssocChangeEvent) Length() uint32

func (*SCTPAssocChangeEvent) OutboundStreams

func (s *SCTPAssocChangeEvent) OutboundStreams() uint16

func (*SCTPAssocChangeEvent) State

func (s *SCTPAssocChangeEvent) State() SCTPState

func (*SCTPAssocChangeEvent) Type

type SCTPAssocID

type SCTPAssocID int32

type SCTPConn

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

func NewSCTPConn

func NewSCTPConn(fd int, handler NotificationHandler) *SCTPConn

func (*SCTPConn) Close

func (c *SCTPConn) Close() error

func (*SCTPConn) GetAssocInfo

func (c *SCTPConn) GetAssocInfo() (*AssocInfo, error)

func (*SCTPConn) GetDefaultSentParam

func (c *SCTPConn) GetDefaultSentParam() (*SndRcvInfo, error)

func (*SCTPConn) GetReadBuffer

func (c *SCTPConn) GetReadBuffer() (int, error)

func (*SCTPConn) GetRtoInfo

func (c *SCTPConn) GetRtoInfo() (*RtoInfo, error)

func (*SCTPConn) GetWriteBuffer

func (c *SCTPConn) GetWriteBuffer() (int, error)

func (*SCTPConn) LocalAddr

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

func (*SCTPConn) Read

func (c *SCTPConn) Read(b []byte) (int, error)

func (*SCTPConn) RemoteAddr

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

func (*SCTPConn) SCTPRead

func (c *SCTPConn) SCTPRead(b []byte) (int, *SndRcvInfo, Notification, error)

SCTPRead use syscall.Recvmsg to receive SCTP message and return sctp sndrcvinfo/notification if need

func (*SCTPConn) SCTPWrite

func (c *SCTPConn) SCTPWrite(b []byte, info *SndRcvInfo) (int, error)

func (*SCTPConn) SetAssocInfo

func (c *SCTPConn) SetAssocInfo(info AssocInfo) error

func (*SCTPConn) SetDeadline

func (c *SCTPConn) SetDeadline(t time.Time) error

func (*SCTPConn) SetDefaultSentParam

func (c *SCTPConn) SetDefaultSentParam(info *SndRcvInfo) error

func (*SCTPConn) SetNonBlock

func (c *SCTPConn) SetNonBlock(nonBlock bool) error

func (*SCTPConn) SetReadBuffer

func (c *SCTPConn) SetReadBuffer(bytes int) error

func (*SCTPConn) SetReadDeadline

func (c *SCTPConn) SetReadDeadline(t time.Time) error

func (*SCTPConn) SetReadTimeout

func (c *SCTPConn) SetReadTimeout(tv syscall.Timeval) error

func (*SCTPConn) SetRtoInfo

func (c *SCTPConn) SetRtoInfo(rtoInfo RtoInfo) error

func (*SCTPConn) SetWriteBuffer

func (c *SCTPConn) SetWriteBuffer(bytes int) error

func (*SCTPConn) SetWriteDeadline

func (c *SCTPConn) SetWriteDeadline(t time.Time) error

func (*SCTPConn) SetWriteTimeout

func (c *SCTPConn) SetWriteTimeout(tv syscall.Timeval) error

func (*SCTPConn) SubscribeEvents

func (c *SCTPConn) SubscribeEvents(flags int) error

func (*SCTPConn) SubscribedEvents

func (c *SCTPConn) SubscribedEvents() (int, error)

func (*SCTPConn) Write

func (c *SCTPConn) Write(b []byte) (int, error)

type SCTPListener

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

func (*SCTPListener) AcceptSCTP

func (ln *SCTPListener) AcceptSCTP() (*SCTPConn, error)

AcceptSCTP waits for and returns the next SCTP connection to the listener. it will use EpollWait to wait for a incoming connection then call syscall.Accept4 to accept

func (*SCTPListener) Close

func (ln *SCTPListener) Close() error

type SCTPNotificationType

type SCTPNotificationType int

type SCTPShutdownEventNotification added in v0.0.12

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

SCTPShutdownEvent is an implementation of Notification interface

func (*SCTPShutdownEventNotification) AssocID added in v0.0.12

func (*SCTPShutdownEventNotification) Flags added in v0.0.12

func (*SCTPShutdownEventNotification) Length added in v0.0.12

func (*SCTPShutdownEventNotification) Type added in v0.0.12

type SCTPState

type SCTPState uint16

type SndInfo

type SndInfo struct {
	SID     uint16
	Flags   uint16
	PPID    uint32
	Context uint32
	AssocID int32
}

type SndRcvInfo

type SndRcvInfo struct {
	Stream uint16
	SSN    uint16
	Flags  uint16

	PPID    uint32
	Context uint32
	TTL     uint32
	TSN     uint32
	CumTSN  uint32
	AssocID int32
	// contains filtered or unexported fields
}

type SocketConfig

type SocketConfig struct {
	// If Control is not nil it is called after the socket is created but before
	// it is bound or connected.
	Control func(network, address string, c syscall.RawConn) error

	// InitMsg is the options to send in the initial SCTP message
	InitMsg InitMsg

	// RtoInfo
	RtoInfo *RtoInfo

	// AssocInfo (RFC 6458)
	AssocInfo *AssocInfo
}

SocketConfig contains options for the SCTP socket.

func (*SocketConfig) Listen

func (cfg *SocketConfig) Listen(net string, laddr *SCTPAddr) (*SCTPListener, error)

Jump to

Keyboard shortcuts

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