Versions in this module Expand all Collapse all v1 v1.6.1-alpha-7 Apr 13, 2023 v1.6.1-alpha-6 Mar 30, 2023 v1.6.1-alpha-5 Mar 14, 2023 v1.6.1-alpha-4 Mar 14, 2023 v1.6.1-alpha-3 Mar 14, 2023 v1.6.1-alpha-2 Mar 14, 2023 v1.6.1-alpha-1 Mar 14, 2023 v1.4.4 Oct 22, 2021 v1.4.3 Oct 22, 2021 v1.4.2 Oct 21, 2021 Changes in this version type Config + func (c *Config) Reload() v1.4.1 Oct 21, 2021 Changes in this version + const DEFAULT_MTU + const DefaultHandshakeRetries + const DefaultHandshakeTriggerBuffer + const DefaultHandshakeTryInterval + const HeaderLen + const MaxRemotes + const PromoteEvery + const ReQueryEvery + const ReplayWindow + const RoamingSuppressSeconds + const Version + var ErrAlreadySeen = errors.New("already seen") + var ErrExistingHandshake = errors.New("existing handshake") + var ErrExistingHostInfo = errors.New("existing hostinfo") + var ErrHostNotKnown = errors.New("host not known") + var ErrIntOverflowNebula = fmt.Errorf("proto: integer overflow") + var ErrInvalidLengthNebula = fmt.Errorf("proto: negative length found during unmarshaling") + var ErrInvalidLocalIP = errors.New("local IP is not in list of handled local IPs") + var ErrInvalidRemoteIP = errors.New("remote IP is not in remote certificate subnets") + var ErrLocalIndexCollision = errors.New("local index collision") + var ErrNoMatchingRule = errors.New("no matching rule in firewall table") + var ErrUnexpectedEndOfGroupNebula = fmt.Errorf("proto: unexpected end of group") + var NebulaMeta_MessageType_name = map[int32]string + var NebulaMeta_MessageType_value = map[string]int32 + var NebulaPing_MessageType_name = map[int32]string + var NebulaPing_MessageType_value = map[string]int32 + func AddFirewallRulesFromConfig(l *logrus.Logger, inbound bool, config *Config, fw FirewallInterface) error + func HandleIncomingHandshake(f *Interface, addr *udpAddr, packet []byte, h *Header, hostinfo *HostInfo) + func HeaderEncode(b []byte, v uint8, t uint8, st uint8, ri uint32, c uint64) []byte + func NewListenConfig(multi bool) net.ListenConfig — darwin/amd64, windows/amd64 + func NewListener(l *logrus.Logger, ip string, port int, multi bool) (*udpConn, error) + func NewUDPAddr(ip net.IP, port uint16) *udpAddr + func NewUDPAddrFromLH4(ipp *Ip4AndPort) *udpAddr + func NewUDPAddrFromLH6(ipp *Ip6AndPort) *udpAddr + func NewUDPAddrFromString(s string) *udpAddr + func NewUDPStatsEmitter(udpConns []*udpConn) func() + func RecombineCertAndValidate(h *noise.HandshakeState, rawCertBytes []byte, caPool *cert.NebulaCAPool) (*cert.NebulaCertificate, error) + func SubTypeName(t NebulaMessageType, s NebulaMessageSubType) string + func TypeName(t NebulaMessageType) string + type AllowList struct + func (al *AllowList) Allow(ip net.IP) bool + func (al *AllowList) AllowIpV4(ip uint32) bool + func (al *AllowList) AllowIpV6(hi, lo uint64) bool + type AllowListNameRule struct + Allow bool + Name *regexp.Regexp + type Bits struct + func NewBits(bits uint64) *Bits + func (b *Bits) Check(l logrus.FieldLogger, i uint64) bool + func (b *Bits) Update(l *logrus.Logger, i uint64) bool + type CIDR6Tree struct + func NewCIDR6Tree() *CIDR6Tree + func (tree *CIDR6Tree) AddCIDR(cidr *net.IPNet, val interface{}) + func (tree *CIDR6Tree) MostSpecificContains(ip net.IP) (value interface{}) + func (tree *CIDR6Tree) MostSpecificContainsIpV4(ip uint32) (value interface{}) + func (tree *CIDR6Tree) MostSpecificContainsIpV6(hi, lo uint64) (value interface{}) + type CIDRNode struct + type CIDRTree struct + func NewCIDRTree() *CIDRTree + func (tree *CIDRTree) AddCIDR(cidr *net.IPNet, val interface{}) + func (tree *CIDRTree) Contains(ip uint32) (value interface{}) + func (tree *CIDRTree) Match(ip uint32) (value interface{}) + func (tree *CIDRTree) MostSpecificContains(ip uint32) (value interface{}) + type Cache struct + Learned []*udpAddr + Reported []*udpAddr + type CacheMap map[string]*Cache + type CertState struct + func NewCertState(certificate *cert.NebulaCertificate, privateKey []byte) (*CertState, error) + func NewCertStateFromConfig(c *Config) (*CertState, error) + type Config struct + Settings map[interface{}]interface{} + func NewConfig(l *logrus.Logger) *Config + func (c *Config) CatchHUP() + func (c *Config) Get(k string) interface{} + func (c *Config) GetAllowList(k string, handleKey func(key string, value interface{}) (bool, error)) (*AllowList, error) + func (c *Config) GetBool(k string, d bool) bool + func (c *Config) GetDuration(k string, d time.Duration) time.Duration + func (c *Config) GetInt(k string, d int) int + func (c *Config) GetLocalAllowList(k string) (*LocalAllowList, error) + func (c *Config) GetMap(k string, d map[interface{}]interface{}) map[interface{}]interface{} + func (c *Config) GetRemoteAllowList(k, rangesKey string) (*RemoteAllowList, error) + func (c *Config) GetString(k, d string) string + func (c *Config) GetStringSlice(k string, d []string) []string + func (c *Config) HasChanged(k string) bool + func (c *Config) IsSet(k string) bool + func (c *Config) Load(path string) error + func (c *Config) LoadString(raw string) error + func (c *Config) RegisterReloadCallback(f func(*Config)) + func (c *Config) ReloadConfig() + type ConnectionState struct + H *noise.HandshakeState + func (cs *ConnectionState) MarshalJSON() ([]byte, error) + type ConntrackCache map[FirewallPacket]struct + type ConntrackCacheTicker struct + func NewConntrackCacheTicker(d time.Duration) *ConntrackCacheTicker + func (c *ConntrackCacheTicker) Get(l *logrus.Logger) ConntrackCache + type ContextualError struct + Context string + Fields map[string]interface{} + RealError error + func NewContextualError(msg string, fields map[string]interface{}, realError error) ContextualError + func (ce *ContextualError) Log(lr *logrus.Logger) + func (ce ContextualError) Error() string + func (ce ContextualError) Unwrap() error + type Control struct + func Main(config *Config, configTest bool, buildVersion string, logger *logrus.Logger, ...) (*Control, error) + func (c *Control) CloseAllTunnels(excludeLighthouses bool) (closed int) + func (c *Control) CloseTunnel(vpnIP uint32, localOnly bool) bool + func (c *Control) GetHostInfoByVpnIP(vpnIP uint32, pending bool) *ControlHostInfo + func (c *Control) ListHostmap(pendingMap bool) []ControlHostInfo + func (c *Control) RebindUDPServer() + func (c *Control) SetRemoteForTunnel(vpnIP uint32, addr udpAddr) *ControlHostInfo + func (c *Control) ShutdownBlock() + func (c *Control) Start() + func (c *Control) Stop() + type ControlHostInfo struct + CachedPackets int + Cert *cert.NebulaCertificate + CurrentRemote *udpAddr + LocalIndex uint32 + MessageCounter uint64 + RemoteAddrs []*udpAddr + RemoteIndex uint32 + VpnIP net.IP + type EncWriter interface + SendMessageToVpnIp func(t NebulaMessageType, st NebulaMessageSubType, vpnIp uint32, p, nb, out []byte) + type Firewall struct + Conntrack *FirewallConntrack + DefaultTimeout time.Duration + InRules *FirewallTable + OutRules *FirewallTable + TCPTimeout time.Duration + UDPTimeout time.Duration + func NewFirewall(l *logrus.Logger, tcpTimeout, UDPTimeout, defaultTimeout time.Duration, ...) *Firewall + func NewFirewallFromConfig(l *logrus.Logger, nc *cert.NebulaCertificate, c *Config) (*Firewall, error) + func (f *Firewall) AddRule(incoming bool, proto uint8, startPort int32, endPort int32, groups []string, ...) error + func (f *Firewall) Destroy() + func (f *Firewall) Drop(packet []byte, fp FirewallPacket, incoming bool, h *HostInfo, ...) error + func (f *Firewall) EmitStats() + func (f *Firewall) GetRuleHash() string + type FirewallCA struct + Any *FirewallRule + CANames map[string]*FirewallRule + CAShas map[string]*FirewallRule + type FirewallConntrack struct + Conns map[FirewallPacket]*conn + TimerWheel *TimerWheel + type FirewallInterface interface + AddRule func(incoming bool, proto uint8, startPort int32, endPort int32, groups []string, ...) error + type FirewallPacket struct + Fragment bool + LocalIP uint32 + LocalPort uint16 + Protocol uint8 + RemoteIP uint32 + RemotePort uint16 + func (fp *FirewallPacket) Copy() *FirewallPacket + func (fp FirewallPacket) MarshalJSON() ([]byte, error) + type FirewallRule struct + Any bool + CIDR *CIDRTree + Groups [][]string + Hosts map[string]struct{} + type FirewallTable struct + AnyProto firewallPort + ICMP firewallPort + TCP firewallPort + UDP firewallPort + type HandshakeConfig struct + type HandshakeManager struct + OutboundHandshakeTimer *SystemTimerWheel + func NewHandshakeManager(l *logrus.Logger, tunCidr *net.IPNet, preferredRanges []*net.IPNet, ...) *HandshakeManager + func (c *HandshakeManager) AddIndexHostInfo(h *HostInfo) error + func (c *HandshakeManager) AddVpnIP(vpnIP uint32) *HostInfo + func (c *HandshakeManager) CheckAndComplete(hostinfo *HostInfo, handshakePacket uint8, overwrite bool, f *Interface) (*HostInfo, error) + func (c *HandshakeManager) Complete(hostinfo *HostInfo, f *Interface) + func (c *HandshakeManager) DeleteHostInfo(hostinfo *HostInfo) + func (c *HandshakeManager) EmitStats() + func (c *HandshakeManager) NextOutboundHandshakeTimerTick(now time.Time, f EncWriter) + func (c *HandshakeManager) QueryIndex(index uint32) (*HostInfo, error) + func (c *HandshakeManager) Run(f EncWriter) + type Header struct + MessageCounter uint64 + RemoteIndex uint32 + Reserved uint16 + Subtype NebulaMessageSubType + Type NebulaMessageType + Version uint8 + func NewHeader(b []byte) (*Header, error) + func (h *Header) Encode(b []byte) ([]byte, error) + func (h *Header) MarshalJSON() ([]byte, error) + func (h *Header) Parse(b []byte) error + func (h *Header) String() string + func (h *Header) SubTypeName() string + func (h *Header) TypeName() string + type HostInfo struct + ConnectionState *ConnectionState + HandshakeComplete bool + HandshakeCounter int + HandshakePacket map[uint8][]byte + HandshakeReady bool + func (i *HostInfo) BindConnectionState(cs *ConnectionState) + func (i *HostInfo) ClearConnectionState() + func (i *HostInfo) CreateRemoteCIDR(c *cert.NebulaCertificate) + func (i *HostInfo) GetCert() *cert.NebulaCertificate + func (i *HostInfo) RecvErrorExceeded() bool + func (i *HostInfo) SetRemote(remote *udpAddr) + func (i *HostInfo) SetRemoteIfPreferred(hm *HostMap, newRemote *udpAddr) bool + func (i *HostInfo) TryPromoteBest(preferredRanges []*net.IPNet, ifce *Interface) + type HostMap struct + Hosts map[uint32]*HostInfo + Indexes map[uint32]*HostInfo + RemoteIndexes map[uint32]*HostInfo + func NewHostMap(l *logrus.Logger, name string, vpnCIDR *net.IPNet, ...) *HostMap + func (hm *HostMap) Add(ip uint32, hostinfo *HostInfo) + func (hm *HostMap) AddVpnIP(vpnIP uint32) *HostInfo + func (hm *HostMap) AddVpnIPHostInfo(vpnIP uint32, h *HostInfo) + func (hm *HostMap) DeleteHostInfo(hostinfo *HostInfo) + func (hm *HostMap) DeleteIndex(index uint32) + func (hm *HostMap) DeleteReverseIndex(index uint32) + func (hm *HostMap) DeleteVpnIP(vpnIP uint32) + func (hm *HostMap) EmitStats(name string) + func (hm *HostMap) GetIndexByVpnIP(vpnIP uint32) (uint32, error) + func (hm *HostMap) PromoteBestQueryVpnIP(vpnIp uint32, ifce *Interface) (*HostInfo, error) + func (hm *HostMap) Punchy(conn *udpConn) + func (hm *HostMap) QueryIndex(index uint32) (*HostInfo, error) + func (hm *HostMap) QueryReverseIndex(index uint32) (*HostInfo, error) + func (hm *HostMap) QueryVpnIP(vpnIp uint32) (*HostInfo, error) + type Inside interface + Activate func() error + CidrNet func() *net.IPNet + DeviceName func() string + NewMultiQueueReader func() (io.ReadWriteCloser, error) + WriteRaw func([]byte) error + type IntIp uint32 + func (ip IntIp) MarshalJSON() ([]byte, error) + func (ip IntIp) String() string + type Interface struct + func NewInterface(c *InterfaceConfig) (*Interface, error) + func (f *Interface) RegisterConfigChangeCallbacks(c *Config) + func (f *Interface) SendMessageToVpnIp(t NebulaMessageType, st NebulaMessageSubType, vpnIp uint32, p, nb, out []byte) + type InterfaceConfig struct + Cipher string + ConntrackCacheTimeout time.Duration + DropLocalBroadcast bool + DropMulticast bool + Firewall *Firewall + HandshakeManager *HandshakeManager + HostMap *HostMap + Inside Inside + MessageMetrics *MessageMetrics + Outside *udpConn + ServeDns bool + UDPBatchSize int + type Ip4AndPort struct + Ip uint32 + Port uint32 + func NewIp4AndPort(ip net.IP, port uint32) *Ip4AndPort + func (*Ip4AndPort) Descriptor() ([]byte, []int) + func (*Ip4AndPort) ProtoMessage() + func (m *Ip4AndPort) GetIp() uint32 + func (m *Ip4AndPort) GetPort() uint32 + func (m *Ip4AndPort) Marshal() (dAtA []byte, err error) + func (m *Ip4AndPort) MarshalTo(dAtA []byte) (int, error) + func (m *Ip4AndPort) MarshalToSizedBuffer(dAtA []byte) (int, error) + func (m *Ip4AndPort) Reset() + func (m *Ip4AndPort) Size() (n int) + func (m *Ip4AndPort) String() string + func (m *Ip4AndPort) Unmarshal(dAtA []byte) error + func (m *Ip4AndPort) XXX_DiscardUnknown() + func (m *Ip4AndPort) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) + func (m *Ip4AndPort) XXX_Merge(src proto.Message) + func (m *Ip4AndPort) XXX_Size() int + func (m *Ip4AndPort) XXX_Unmarshal(b []byte) error + type Ip6AndPort struct + Hi uint64 + Lo uint64 + Port uint32 + func NewIp6AndPort(ip net.IP, port uint32) *Ip6AndPort + func (*Ip6AndPort) Descriptor() ([]byte, []int) + func (*Ip6AndPort) ProtoMessage() + func (m *Ip6AndPort) GetHi() uint64 + func (m *Ip6AndPort) GetLo() uint64 + func (m *Ip6AndPort) GetPort() uint32 + func (m *Ip6AndPort) Marshal() (dAtA []byte, err error) + func (m *Ip6AndPort) MarshalTo(dAtA []byte) (int, error) + func (m *Ip6AndPort) MarshalToSizedBuffer(dAtA []byte) (int, error) + func (m *Ip6AndPort) Reset() + func (m *Ip6AndPort) Size() (n int) + func (m *Ip6AndPort) String() string + func (m *Ip6AndPort) Unmarshal(dAtA []byte) error + func (m *Ip6AndPort) XXX_DiscardUnknown() + func (m *Ip6AndPort) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) + func (m *Ip6AndPort) XXX_Merge(src proto.Message) + func (m *Ip6AndPort) XXX_Size() int + func (m *Ip6AndPort) XXX_Unmarshal(b []byte) error + type LightHouse struct + func NewLightHouse(l *logrus.Logger, amLighthouse bool, myVpnIpNet *net.IPNet, ips []uint32, ...) *LightHouse + func (lh *LightHouse) AddStaticRemote(vpnIp uint32, toAddr *udpAddr) + func (lh *LightHouse) DeleteVpnIP(vpnIP uint32) + func (lh *LightHouse) IsLighthouseIP(vpnIP uint32) bool + func (lh *LightHouse) LhUpdateWorker(f EncWriter) + func (lh *LightHouse) NewRequestHandler() *LightHouseHandler + func (lh *LightHouse) Query(ip uint32, f EncWriter) *RemoteList + func (lh *LightHouse) QueryCache(ip uint32) *RemoteList + func (lh *LightHouse) QueryServer(ip uint32, f EncWriter) + func (lh *LightHouse) SendUpdate(f EncWriter) + func (lh *LightHouse) SetLocalAllowList(allowList *LocalAllowList) + func (lh *LightHouse) SetRemoteAllowList(allowList *RemoteAllowList) + func (lh *LightHouse) ValidateLHStaticEntries() error + type LightHouseHandler struct + func (lhh *LightHouseHandler) HandleRequest(rAddr *udpAddr, vpnIp uint32, p []byte, w EncWriter) + type LocalAllowList struct + AllowList *AllowList + func (al *LocalAllowList) Allow(ip net.IP) bool + func (al *LocalAllowList) AllowName(name string) bool + type MessageMetrics struct + func (m *MessageMetrics) Rx(t NebulaMessageType, s NebulaMessageSubType, i int64) + func (m *MessageMetrics) Tx(t NebulaMessageType, s NebulaMessageSubType, i int64) + type NebulaCipherState struct + func NewNebulaCipherState(s *noise.CipherState) *NebulaCipherState + func (s *NebulaCipherState) DecryptDanger(out, ad, ciphertext []byte, n uint64, nb []byte) ([]byte, error) + func (s *NebulaCipherState) EncryptDanger(out, ad, plaintext []byte, n uint64, nb []byte) ([]byte, error) + type NebulaHandshake struct + Details *NebulaHandshakeDetails + Hmac []byte + func (*NebulaHandshake) Descriptor() ([]byte, []int) + func (*NebulaHandshake) ProtoMessage() + func (m *NebulaHandshake) GetDetails() *NebulaHandshakeDetails + func (m *NebulaHandshake) GetHmac() []byte + func (m *NebulaHandshake) Marshal() (dAtA []byte, err error) + func (m *NebulaHandshake) MarshalTo(dAtA []byte) (int, error) + func (m *NebulaHandshake) MarshalToSizedBuffer(dAtA []byte) (int, error) + func (m *NebulaHandshake) Reset() + func (m *NebulaHandshake) Size() (n int) + func (m *NebulaHandshake) String() string + func (m *NebulaHandshake) Unmarshal(dAtA []byte) error + func (m *NebulaHandshake) XXX_DiscardUnknown() + func (m *NebulaHandshake) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) + func (m *NebulaHandshake) XXX_Merge(src proto.Message) + func (m *NebulaHandshake) XXX_Size() int + func (m *NebulaHandshake) XXX_Unmarshal(b []byte) error + type NebulaHandshakeDetails struct + Cert []byte + Cookie uint64 + InitiatorIndex uint32 + ResponderIndex uint32 + Time uint64 + func (*NebulaHandshakeDetails) Descriptor() ([]byte, []int) + func (*NebulaHandshakeDetails) ProtoMessage() + func (m *NebulaHandshakeDetails) GetCert() []byte + func (m *NebulaHandshakeDetails) GetCookie() uint64 + func (m *NebulaHandshakeDetails) GetInitiatorIndex() uint32 + func (m *NebulaHandshakeDetails) GetResponderIndex() uint32 + func (m *NebulaHandshakeDetails) GetTime() uint64 + func (m *NebulaHandshakeDetails) Marshal() (dAtA []byte, err error) + func (m *NebulaHandshakeDetails) MarshalTo(dAtA []byte) (int, error) + func (m *NebulaHandshakeDetails) MarshalToSizedBuffer(dAtA []byte) (int, error) + func (m *NebulaHandshakeDetails) Reset() + func (m *NebulaHandshakeDetails) Size() (n int) + func (m *NebulaHandshakeDetails) String() string + func (m *NebulaHandshakeDetails) Unmarshal(dAtA []byte) error + func (m *NebulaHandshakeDetails) XXX_DiscardUnknown() + func (m *NebulaHandshakeDetails) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) + func (m *NebulaHandshakeDetails) XXX_Merge(src proto.Message) + func (m *NebulaHandshakeDetails) XXX_Size() int + func (m *NebulaHandshakeDetails) XXX_Unmarshal(b []byte) error + type NebulaMessageSubType uint8 + type NebulaMessageType uint8 + type NebulaMeta struct + Details *NebulaMetaDetails + Type NebulaMeta_MessageType + func NewLhQueryByInt(VpnIp uint32) *NebulaMeta + func (*NebulaMeta) Descriptor() ([]byte, []int) + func (*NebulaMeta) ProtoMessage() + func (m *NebulaMeta) GetDetails() *NebulaMetaDetails + func (m *NebulaMeta) GetType() NebulaMeta_MessageType + func (m *NebulaMeta) Marshal() (dAtA []byte, err error) + func (m *NebulaMeta) MarshalTo(dAtA []byte) (int, error) + func (m *NebulaMeta) MarshalToSizedBuffer(dAtA []byte) (int, error) + func (m *NebulaMeta) Reset() + func (m *NebulaMeta) Size() (n int) + func (m *NebulaMeta) String() string + func (m *NebulaMeta) Unmarshal(dAtA []byte) error + func (m *NebulaMeta) XXX_DiscardUnknown() + func (m *NebulaMeta) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) + func (m *NebulaMeta) XXX_Merge(src proto.Message) + func (m *NebulaMeta) XXX_Size() int + func (m *NebulaMeta) XXX_Unmarshal(b []byte) error + type NebulaMetaDetails struct + Counter uint32 + Ip4AndPorts []*Ip4AndPort + Ip6AndPorts []*Ip6AndPort + VpnIp uint32 + func (*NebulaMetaDetails) Descriptor() ([]byte, []int) + func (*NebulaMetaDetails) ProtoMessage() + func (m *NebulaMetaDetails) GetCounter() uint32 + func (m *NebulaMetaDetails) GetIp4AndPorts() []*Ip4AndPort + func (m *NebulaMetaDetails) GetIp6AndPorts() []*Ip6AndPort + func (m *NebulaMetaDetails) GetVpnIp() uint32 + func (m *NebulaMetaDetails) Marshal() (dAtA []byte, err error) + func (m *NebulaMetaDetails) MarshalTo(dAtA []byte) (int, error) + func (m *NebulaMetaDetails) MarshalToSizedBuffer(dAtA []byte) (int, error) + func (m *NebulaMetaDetails) Reset() + func (m *NebulaMetaDetails) Size() (n int) + func (m *NebulaMetaDetails) String() string + func (m *NebulaMetaDetails) Unmarshal(dAtA []byte) error + func (m *NebulaMetaDetails) XXX_DiscardUnknown() + func (m *NebulaMetaDetails) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) + func (m *NebulaMetaDetails) XXX_Merge(src proto.Message) + func (m *NebulaMetaDetails) XXX_Size() int + func (m *NebulaMetaDetails) XXX_Unmarshal(b []byte) error + type NebulaMeta_MessageType int32 + const NebulaMeta_HostMovedNotification + const NebulaMeta_HostPunchNotification + const NebulaMeta_HostQuery + const NebulaMeta_HostQueryReply + const NebulaMeta_HostUpdateNotification + const NebulaMeta_HostWhoami + const NebulaMeta_HostWhoamiReply + const NebulaMeta_None + const NebulaMeta_PathCheck + const NebulaMeta_PathCheckReply + func (NebulaMeta_MessageType) EnumDescriptor() ([]byte, []int) + func (x NebulaMeta_MessageType) String() string + type NebulaPing struct + Time uint64 + Type NebulaPing_MessageType + func (*NebulaPing) Descriptor() ([]byte, []int) + func (*NebulaPing) ProtoMessage() + func (m *NebulaPing) GetTime() uint64 + func (m *NebulaPing) GetType() NebulaPing_MessageType + func (m *NebulaPing) Marshal() (dAtA []byte, err error) + func (m *NebulaPing) MarshalTo(dAtA []byte) (int, error) + func (m *NebulaPing) MarshalToSizedBuffer(dAtA []byte) (int, error) + func (m *NebulaPing) Reset() + func (m *NebulaPing) Size() (n int) + func (m *NebulaPing) String() string + func (m *NebulaPing) Unmarshal(dAtA []byte) error + func (m *NebulaPing) XXX_DiscardUnknown() + func (m *NebulaPing) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) + func (m *NebulaPing) XXX_Merge(src proto.Message) + func (m *NebulaPing) XXX_Size() int + func (m *NebulaPing) XXX_Unmarshal(b []byte) error + type NebulaPing_MessageType int32 + const NebulaPing_Ping + const NebulaPing_Reply + func (NebulaPing_MessageType) EnumDescriptor() ([]byte, []int) + func (x NebulaPing_MessageType) String() string + type Punchy struct + Delay time.Duration + Punch bool + Respond bool + func NewPunchyFromConfig(c *Config) *Punchy + type RemoteAllowList struct + AllowList *AllowList + func (al *RemoteAllowList) Allow(vpnIp uint32, ip net.IP) bool + func (al *RemoteAllowList) AllowIpV4(vpnIp uint32, ip uint32) bool + func (al *RemoteAllowList) AllowIpV6(vpnIp uint32, hi, lo uint64) bool + func (al *RemoteAllowList) AllowUnknownVpnIp(ip net.IP) bool + type RemoteList struct + func NewRemoteList() *RemoteList + func (r *RemoteList) BlockRemote(bad *udpAddr) + func (r *RemoteList) CopyAddrs(preferredRanges []*net.IPNet) []*udpAddr + func (r *RemoteList) CopyBlockedRemotes() []*udpAddr + func (r *RemoteList) CopyCache() *CacheMap + func (r *RemoteList) ForEach(preferredRanges []*net.IPNet, forEach forEachFunc) + func (r *RemoteList) LearnRemote(ownerVpnIp uint32, addr *udpAddr) + func (r *RemoteList) Len(preferredRanges []*net.IPNet) int + func (r *RemoteList) Rebuild(preferredRanges []*net.IPNet) + func (r *RemoteList) ResetBlockedRemotes() + type SystemTimeoutItem struct + Item uint32 + Next *SystemTimeoutItem + type SystemTimeoutList struct + Head *SystemTimeoutItem + Tail *SystemTimeoutItem + type SystemTimerWheel struct + func NewSystemTimerWheel(min, max time.Duration) *SystemTimerWheel + func (tw *SystemTimerWheel) Add(v uint32, timeout time.Duration) *SystemTimeoutItem + func (tw *SystemTimerWheel) Purge() interface{} + type TimeoutItem struct + Next *TimeoutItem + Packet FirewallPacket + type TimeoutList struct + Head *TimeoutItem + Tail *TimeoutItem + type TimerWheel struct + func NewTimerWheel(min, max time.Duration) *TimerWheel + func (tw *TimerWheel) Add(v FirewallPacket, timeout time.Duration) *TimeoutItem + func (tw *TimerWheel) Purge() (FirewallPacket, bool) + type Tun struct — darwin/amd64, linux/amd64, windows/amd64 + Cidr *net.IPNet + DefaultMTU int + Device string + MTU int + MaxMTU int + Routes []route + TXQueueLen int + UnsafeRoutes []route + func (c *Tun) Activate() error + func (c *Tun) CidrNet() *net.IPNet + func (c *Tun) DeviceName() string + func (c *Tun) NewMultiQueueReader() (io.ReadWriteCloser, error) + func (c *Tun) Write(b []byte) (int, error) + func (c *Tun) WriteRaw(b []byte) error + func (c Tun) Activate() error + func (t *Tun) NewMultiQueueReader() (io.ReadWriteCloser, error)