server

package
v0.0.0-...-5d09e29 Latest Latest
Warning

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

Go to latest
Published: May 15, 2021 License: MIT Imports: 20 Imported by: 0

Documentation

Index

Constants

View Source
const (
	BFD_PORT = 3784
)
View Source
const (
	// 20 seconds defined as micro seconds
	OFFLINE_TIMEOUT = 20 * 1000 * 1000
)

Variables

View Source
var ErrAddressNotChangeable = errors.New("Unable to change peer address")
View Source
var ErrInvalidAddress = errors.New("Invalid address passed")
View Source
var ErrInvalidDetectMultiplier = errors.New("Invalid detect multiplier")
View Source
var ErrInvalidDetectionMultiplierSupplied = errors.New("Invalid Detection Multiplier supplied")
View Source
var ErrInvalidIP = errors.New("Invalid IP passed")
View Source
var ErrInvalidMultiPoint = errors.New("Invalid Multipoint value")
View Source
var ErrInvalidMyDiscriminator = errors.New("Invalid MyDiscriminator value")
View Source
var ErrInvalidPacket = errors.New("Discarded Packet: Packet invalid")
View Source
var ErrInvalidPort = errors.New("Invalid port passed, should be between 1 and 65535")
View Source
var ErrInvalidTTL = errors.New("Invalid TTL received")
View Source
var ErrInvalidVersion = errors.New("Invalid Version")
View Source
var ErrInvalidYourDiscriminator = errors.New("Invalid YourDiscriminator (=0) for state")
View Source
var ErrMultiphopNotChangeable = errors.New("Unable to change multi hop")
View Source
var ErrNotImplemented = errors.New("Function not implemented")
View Source
var ErrPeerNotFound = errors.New("Unable to find peer")
View Source
var ErrSessionAdminDown = errors.New("Peer is state is admin down")
View Source
var ErrYourDiscriminatorNotFound = errors.New("Discarded Packet: YourDiscriminator not found")

Functions

func NewWatcher

func NewWatcher() *watcher

Types

type BfdApiServer

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

func NewBfdApiServer

func NewBfdApiServer(server BfdServerApi, grpc *grpc.Server) *BfdApiServer

func (*BfdApiServer) AddPeer

func (*BfdApiServer) DeletePeer

func (a *BfdApiServer) DeletePeer(ctx context.Context, req *api.DeletePeerRequest) (*empty.Empty, error)

func (*BfdApiServer) DisablePeer

func (a *BfdApiServer) DisablePeer(ctx context.Context, req *api.DisablePeerRequest) (*empty.Empty, error)

func (*BfdApiServer) EnablePeer

func (a *BfdApiServer) EnablePeer(ctx context.Context, req *api.EnablePeerRequest) (*empty.Empty, error)

func (*BfdApiServer) GetPeerState

func (*BfdApiServer) ListPeer

func (a *BfdApiServer) ListPeer(req *api.ListPeerRequest, stream api.BfdApi_ListPeerServer) error

func (*BfdApiServer) MonitorPeer

func (*BfdApiServer) ServeApi

func (a *BfdApiServer) ServeApi(address string) error

func (*BfdApiServer) Start

func (a *BfdApiServer) Start(ctx context.Context, req *api.StartRequest) (*empty.Empty, error)

func (*BfdApiServer) Stop

func (a *BfdApiServer) Stop(ctx context.Context, req *api.StopRequest) (*empty.Empty, error)

func (*BfdApiServer) StopApi

func (a *BfdApiServer) StopApi()

func (*BfdApiServer) UpdatePeer

func (a *BfdApiServer) UpdatePeer(ctx context.Context, req *api.UpdatePeerRequest) (*empty.Empty, error)

type BfdServer

type BfdServer struct {
	sync.RWMutex

	Sessions map[uint32]*Peer
	// contains filtered or unexported fields
}

func NewBfdServer

func NewBfdServer() *BfdServer

func (*BfdServer) AddPeer

func (s *BfdServer) AddPeer(api_peer *api.Peer) (*Peer, error)

func (*BfdServer) DeletePeer

func (s *BfdServer) DeletePeer(uuid []byte) error

func (*BfdServer) GetPeerByUuid

func (s *BfdServer) GetPeerByUuid(uuid []byte) (*Peer, error)

func (*BfdServer) ListPeer

func (s *BfdServer) ListPeer(ctx context.Context, cb func([]byte, *api.Peer) error) error

func (*BfdServer) Listen

func (s *BfdServer) Listen(address string) error

func (*BfdServer) MonitorPeer

func (s *BfdServer) MonitorPeer(ctx context.Context, uuid []byte, cb func(*api.PeerStateResponse) error) error

func (*BfdServer) Serve

func (s *BfdServer) Serve() error

func (*BfdServer) Shutdown

func (s *BfdServer) Shutdown()

type BfdServerApi

type BfdServerApi interface {
	Serve() error
	Shutdown()
	AddPeer(*api.Peer) (*Peer, error)
	GetPeerByUuid([]byte) (*Peer, error)
	DeletePeer([]byte) error
	ListPeer(context.Context, func([]byte, *api.Peer) error) error
	MonitorPeer(context.Context, []byte, func(*api.PeerStateResponse) error) error
}

type Connection

type Connection interface {
	File() (f *os.File, err error)
	ReadMsgUDP(b, oob []byte) (n, oobn, flags int, addr *net.UDPAddr, err error)
	Write(b []byte) (int, error)
}

type Peer

type Peer struct {
	sync.RWMutex

	Name       string
	Address    *net.UDPAddr
	SourcePort int

	// Set up interval
	Interval uint32

	AuthType             bfd.AuthenticationType // 0 = no authentication
	ReceivedAuthSequence uint32
	XmitAuthSeq          uint32 // needs to be initialized with random 32 bit value
	AuthSequenceKnown    uint32 // reset to 0 if no packets are received in 2 * DetectionTime (Interval * Multiplier)
	PollActive           bool
	IsMultiHop           bool
	// contains filtered or unexported fields
}

func NewPeer

func NewPeer(address net.IP, port int) (*Peer, error)

func (*Peer) ApplyLocalState

func (p *Peer) ApplyLocalState(updates []PeerStateUpdate)

func (*Peer) ApplyRemoteState

func (p *Peer) ApplyRemoteState(updates []PeerStateUpdate)

func (*Peer) Disable

func (p *Peer) Disable()

func (*Peer) Enable

func (p *Peer) Enable()

func (*Peer) GetAuthenticationType

func (p *Peer) GetAuthenticationType() bfd.AuthenticationType

func (*Peer) GetLocal

func (p *Peer) GetLocal() *PeerState

func (*Peer) GetRemote

func (p *Peer) GetRemote() *PeerState

func (*Peer) GetUuid

func (p *Peer) GetUuid() []byte

func (*Peer) NewPacket

func (p *Peer) NewPacket(poll bfd.Bool, final bfd.Bool) *bfd.ControlPacket

func (*Peer) NotifyWatchers

func (p *Peer) NotifyWatchers(state *api.PeerStateResponse)

func (*Peer) Send

func (p *Peer) Send(packet *bfd.ControlPacket) error

func (*Peer) SetDesiredMinTxInterval

func (p *Peer) SetDesiredMinTxInterval(desiredMinTx uint32)

func (*Peer) SetDetectMultiplier

func (p *Peer) SetDetectMultiplier(detectMultiplier uint8)

func (*Peer) SetRequiredMinRxInterval

func (p *Peer) SetRequiredMinRxInterval(requiredMinRx uint32)

func (*Peer) Shutdown

func (p *Peer) Shutdown()

func (*Peer) Start

func (p *Peer) Start()

func (*Peer) Watch

func (p *Peer) Watch() *watcher

type PeerState

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

func (*PeerState) Clone

func (state *PeerState) Clone(updates []PeerStateUpdate) *PeerState

Clone creates a copy and applies the passed state updates

func (*PeerState) GetDesiredMinTxInterval

func (state *PeerState) GetDesiredMinTxInterval() uint32

func (*PeerState) GetDetectMultiplier

func (state *PeerState) GetDetectMultiplier() uint8

func (*PeerState) GetDiscriminator

func (state *PeerState) GetDiscriminator() uint32

func (*PeerState) GetRequiredMinRxInterval

func (state *PeerState) GetRequiredMinRxInterval() uint32

func (*PeerState) ToApi

func (state *PeerState) ToApi() *api.PeerState

type PeerStateUpdate

type PeerStateUpdate func(*PeerState)

Jump to

Keyboard shortcuts

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