peer

package
v0.23.3 Latest Latest
Warning

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

Go to latest
Published: Sep 23, 2023 License: BSD-3-Clause Imports: 19 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewConnectionAlreadyClosed

func NewConnectionAlreadyClosed(peer string) error

NewConnectionAlreadyClosed creates a new ConnectionAlreadyClosedError error

func NewConnectionClosedError

func NewConnectionClosedError(peer string) error

NewConnectionClosedError creates a new ConnectionClosedError error

func NewConnectionDisconnectedError

func NewConnectionDisconnectedError(peer string) error

NewConnectionDisconnectedError creates a new ConnectionDisconnectedError error

func NewConnectionTimeoutError

func NewConnectionTimeoutError(peer string, timeout time.Duration) error

NewConnectionTimeoutError creates a new ConnectionTimeoutError error

Types

type Conn

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

func NewConn

func NewConn(config ConnConfig, statusRecorder *Status, wgProxyFactory *wgproxy.Factory, adapter iface.TunAdapter, iFaceDiscover stdnet.ExternalIFaceDiscover) (*Conn, error)

NewConn creates a new not opened Conn to the remote peer. To establish a connection run Conn.Open

func (*Conn) Close

func (conn *Conn) Close() error

Close closes this peer Conn issuing a close event to the Conn closeCh

func (*Conn) GetConf added in v0.6.3

func (conn *Conn) GetConf() ConnConfig

GetConf returns the connection config

func (*Conn) GetKey

func (conn *Conn) GetKey() string

func (*Conn) OnRemoteAnswer

func (conn *Conn) OnRemoteAnswer(answer OfferAnswer) bool

OnRemoteAnswer handles an offer from the remote peer and returns true if the message was accepted, false otherwise doesn't block, discards the message if connection wasn't ready

func (*Conn) OnRemoteCandidate

func (conn *Conn) OnRemoteCandidate(candidate ice.Candidate)

OnRemoteCandidate Handles ICE connection Candidate provided by the remote peer.

func (*Conn) OnRemoteOffer

func (conn *Conn) OnRemoteOffer(offer OfferAnswer) bool

OnRemoteOffer handles an offer from the remote peer and returns true if the message was accepted, false otherwise doesn't block, discards the message if connection wasn't ready

func (*Conn) Open

func (conn *Conn) Open() error

Open opens connection to the remote peer starting ICE candidate gathering process. Blocks until connection has been closed or connection timeout. ConnStatus will be set accordingly

func (*Conn) RegisterProtoSupportMeta added in v0.14.5

func (conn *Conn) RegisterProtoSupportMeta(support []uint32)

RegisterProtoSupportMeta register supported proto message in the connection metadata

func (*Conn) SetSendSignalMessage added in v0.14.5

func (conn *Conn) SetSendSignalMessage(handler func(message *sProto.Message) error)

SetSendSignalMessage sets a handler function to be triggered by Conn when there is new message to send via signal

func (*Conn) SetSignalAnswer

func (conn *Conn) SetSignalAnswer(handler func(answer OfferAnswer) error)

SetSignalAnswer sets a handler function to be triggered by Conn when a new connection answer has to be signalled to the remote peer

func (*Conn) SetSignalCandidate

func (conn *Conn) SetSignalCandidate(handler func(candidate ice.Candidate) error)

SetSignalCandidate sets a handler function to be triggered by Conn when a new ICE local connection candidate has to be signalled to the remote peer

func (*Conn) SetSignalOffer

func (conn *Conn) SetSignalOffer(handler func(offer OfferAnswer) error)

SetSignalOffer sets a handler function to be triggered by Conn when a new connection offer has to be signalled to the remote peer

func (*Conn) Status

func (conn *Conn) Status() ConnStatus

Status returns current status of the Conn

func (*Conn) UpdateStunTurn added in v0.22.0

func (conn *Conn) UpdateStunTurn(turnStun []*ice.URL)

UpdateStunTurn update the turn and stun addresses

func (*Conn) WgConfig added in v0.22.0

func (conn *Conn) WgConfig() WgConfig

WgConfig returns the WireGuard config

type ConnConfig

type ConnConfig struct {

	// Key is a public key of a remote peer
	Key string
	// LocalKey is a public key of a local peer
	LocalKey string

	// StunTurn is a list of STUN and TURN URLs
	StunTurn []*ice.URL

	// InterfaceBlackList is a list of machine interfaces that should be filtered out by ICE Candidate gathering
	// (e.g. if eth0 is in the list, host candidate of this interface won't be used)
	InterfaceBlackList   []string
	DisableIPv6Discovery bool

	Timeout time.Duration

	WgConfig WgConfig

	UDPMux      ice.UDPMux
	UDPMuxSrflx ice.UniversalUDPMux

	LocalWgPort int

	NATExternalIPs []string

	// UsesBind indicates whether the WireGuard interface is userspace and uses bind.ICEBind
	UserspaceBind bool
}

ConnConfig is a peer Connection configuration

type ConnStatus

type ConnStatus int

ConnStatus describe the status of a peer's connection

const (
	// StatusConnected indicate the peer is in connected state
	StatusConnected ConnStatus = iota
	// StatusConnecting indicate the peer is in connecting state
	StatusConnecting
	// StatusDisconnected indicate the peer is in disconnected state
	StatusDisconnected
)

func (ConnStatus) String

func (s ConnStatus) String() string

type ConnectionAlreadyClosedError

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

ConnectionAlreadyClosedError is an error indicating that a peer Conn has been already closed and the invocation of the Close() method has been performed over a closed connection

func (*ConnectionAlreadyClosedError) Error

type ConnectionClosedError

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

ConnectionClosedError is an error indicating that a peer Conn has been forcefully closed

func (*ConnectionClosedError) Error

func (e *ConnectionClosedError) Error() string

type ConnectionDisconnectedError

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

ConnectionDisconnectedError is an error indicating that a peer Conn has ctx from the remote

func (*ConnectionDisconnectedError) Error

type ConnectionTimeoutError

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

ConnectionTimeoutError is an error indicating that a peer Conn has been timed out

func (*ConnectionTimeoutError) Error

func (e *ConnectionTimeoutError) Error() string

type FullStatus added in v0.14.3

type FullStatus struct {
	Peers           []State
	ManagementState ManagementState
	SignalState     SignalState
	LocalPeerState  LocalPeerState
}

FullStatus contains the full state held by the Status instance

type IceCredentials

type IceCredentials struct {
	UFrag string
	Pwd   string
}

IceCredentials ICE protocol credentials struct

type Listener added in v0.14.5

type Listener interface {
	OnConnected()
	OnDisconnected()
	OnConnecting()
	OnDisconnecting()
	OnAddressChanged(string, string)
	OnPeersListChanged(int)
}

Listener is a callback type about the NetBird network connection state

type LocalPeerState added in v0.14.3

type LocalPeerState struct {
	IP              string
	PubKey          string
	KernelInterface bool
	FQDN            string
}

LocalPeerState contains the latest state of the local peer

type ManagementState added in v0.14.3

type ManagementState struct {
	URL       string
	Connected bool
}

ManagementState contains the latest state of a management connection

type ModeMessage added in v0.14.5

type ModeMessage struct {
	// Direct indicates that it decided to use a direct connection
	Direct bool
}

ModeMessage represents a connection mode chosen by the peer

type OfferAnswer added in v0.8.12

type OfferAnswer struct {
	IceCredentials IceCredentials
	// WgListenPort is a remote WireGuard listen port.
	// This field is used when establishing a direct WireGuard connection without any proxy.
	// We can set the remote peer's endpoint with this port.
	WgListenPort int

	// Version of NetBird Agent
	Version string
}

OfferAnswer represents a session establishment offer or answer

type SignalState added in v0.14.3

type SignalState struct {
	URL       string
	Connected bool
}

SignalState contains the latest state of a signal connection

type State added in v0.14.3

type State struct {
	IP                     string
	PubKey                 string
	FQDN                   string
	ConnStatus             ConnStatus
	ConnStatusUpdate       time.Time
	Relayed                bool
	Direct                 bool
	LocalIceCandidateType  string
	RemoteIceCandidateType string
}

State contains the latest state of a peer

type Status added in v0.14.3

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

Status holds a state of peers, signal and management connections

func NewRecorder added in v0.14.3

func NewRecorder(mgmAddress string) *Status

NewRecorder returns a new Status instance

func (*Status) AddPeer added in v0.14.3

func (d *Status) AddPeer(peerPubKey string, fqdn string) error

AddPeer adds peer to Daemon status map

func (*Status) CleanLocalPeerState added in v0.14.3

func (d *Status) CleanLocalPeerState()

CleanLocalPeerState cleans local peer status

func (*Status) ClientStart added in v0.14.5

func (d *Status) ClientStart()

ClientStart will notify all listeners about the new service state

func (*Status) ClientStop added in v0.14.5

func (d *Status) ClientStop()

ClientStop will notify all listeners about the new service state

func (*Status) ClientTeardown added in v0.14.6

func (d *Status) ClientTeardown()

ClientTeardown will notify all listeners about the service is under teardown

func (*Status) FinishPeerListModifications added in v0.21.5

func (d *Status) FinishPeerListModifications()

FinishPeerListModifications this event invoke the notification

func (*Status) GetFullStatus added in v0.14.3

func (d *Status) GetFullStatus() FullStatus

GetFullStatus gets full status

func (*Status) GetPeer added in v0.14.3

func (d *Status) GetPeer(peerPubKey string) (State, error)

GetPeer adds peer to Daemon status map

func (*Status) GetPeerStateChangeNotifier added in v0.14.3

func (d *Status) GetPeerStateChangeNotifier(peer string) <-chan struct{}

GetPeerStateChangeNotifier returns a change notifier channel for a peer

func (*Status) MarkManagementConnected added in v0.14.3

func (d *Status) MarkManagementConnected()

MarkManagementConnected sets ManagementState to connected

func (*Status) MarkManagementDisconnected added in v0.14.3

func (d *Status) MarkManagementDisconnected()

MarkManagementDisconnected sets ManagementState to disconnected

func (*Status) MarkSignalConnected added in v0.14.3

func (d *Status) MarkSignalConnected()

MarkSignalConnected sets SignalState to connected

func (*Status) MarkSignalDisconnected added in v0.14.3

func (d *Status) MarkSignalDisconnected()

MarkSignalDisconnected sets SignalState to disconnected

func (*Status) RemoveConnectionListener added in v0.14.5

func (d *Status) RemoveConnectionListener()

RemoveConnectionListener remove the listener from the notifier

func (*Status) RemovePeer added in v0.14.3

func (d *Status) RemovePeer(peerPubKey string) error

RemovePeer removes peer from Daemon status map

func (*Status) ReplaceOfflinePeers added in v0.14.3

func (d *Status) ReplaceOfflinePeers(replacement []State)

ReplaceOfflinePeers replaces

func (*Status) SetConnectionListener added in v0.15.0

func (d *Status) SetConnectionListener(listener Listener)

SetConnectionListener set a listener to the notifier

func (*Status) UpdateLocalPeerState added in v0.14.3

func (d *Status) UpdateLocalPeerState(localPeerState LocalPeerState)

UpdateLocalPeerState updates local peer status

func (*Status) UpdateManagementAddress added in v0.14.5

func (d *Status) UpdateManagementAddress(mgmAddress string)

UpdateManagementAddress update the address of the management server

func (*Status) UpdatePeerFQDN added in v0.14.3

func (d *Status) UpdatePeerFQDN(peerPubKey, fqdn string) error

UpdatePeerFQDN update peer's state fqdn only

func (*Status) UpdatePeerState added in v0.14.3

func (d *Status) UpdatePeerState(receivedState State) error

UpdatePeerState updates peer status

func (*Status) UpdateSignalAddress added in v0.14.5

func (d *Status) UpdateSignalAddress(signalURL string)

UpdateSignalAddress update the address of the signal server

type WgConfig added in v0.22.0

type WgConfig struct {
	WgListenPort int
	RemoteKey    string
	WgInterface  *iface.WGIface
	AllowedIps   string
	PreSharedKey *wgtypes.Key
}

Jump to

Keyboard shortcuts

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