Documentation ¶
Index ¶
- type AddHandler
- type AddHandlerFunc
- type Core
- func (c *Core) Address() net.IP
- func (c *Core) CallPeer(u *url.URL, sintf string) error
- func (c *Core) Close() error
- func (c *Core) GetDHT() []DHTEntry
- func (c *Core) GetPaths() []PathEntry
- func (c *Core) GetPeers() []Peer
- func (c *Core) GetSelf() Self
- func (c *Core) GetSessions() []Session
- func (c *Core) Listen(u *url.URL, sintf string) (*TcpListener, error)
- func (c *Core) MTU() uint64
- func (c *Core) PublicKey() ed25519.PublicKey
- func (c *Core) ReadFrom(p []byte) (n int, from net.Addr, err error)
- func (c *Core) SetAdmin(a AddHandler) error
- func (c *Core) SetLogger(log *log.Logger)
- func (c *Core) Start(nc *config.NodeConfig, log *log.Logger) (err error)
- func (c *Core) Stop()
- func (c *Core) Subnet() net.IPNet
- func (c *Core) WriteTo(p []byte, addr net.Addr) (n int, err error)
- type DHTEntry
- type DebugGetDHTRequest
- type DebugGetDHTResponse
- type DebugGetPeersRequest
- type DebugGetPeersResponse
- type DebugGetSelfRequest
- type DebugGetSelfResponse
- type GetNodeInfoRequest
- type GetNodeInfoResponse
- type NodeInfoPayload
- type PathEntry
- type Peer
- type Self
- type Session
- type TcpListener
- type TcpUpgrade
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AddHandler ¶
type AddHandler interface {
AddHandler(name string, args []string, handlerfunc AddHandlerFunc) error
}
type AddHandlerFunc ¶
type AddHandlerFunc func(json.RawMessage) (interface{}, error)
type Core ¶
type Core struct { // This is the main data structure that holds everything else for a node // We're going to keep our own copy of the provided config - that way we can // guarantee that it will be covered by the mutex phony.Inbox *iwe.PacketConn // contains filtered or unexported fields }
The Core object represents the Yggdrasil node. You should create a Core object for each Yggdrasil node you plan to run.
func (*Core) Address ¶
Address gets the IPv6 address of the Yggdrasil node. This is always a /128 address. The IPv6 address is only relevant when the node is operating as an IP router and often is meaningless when embedded into an application, unless that application also implements either VPN functionality or deals with IP packets specifically.
func (*Core) CallPeer ¶
CallPeer calls a peer once. This should be specified in the peer URI format, e.g.:
tcp://a.b.c.d:e socks://a.b.c.d:e/f.g.h.i:j
This does not add the peer to the peer list, so if the connection drops, the peer will not be called again automatically.
func (*Core) GetSessions ¶
func (*Core) Listen ¶
Listen starts a new listener (either TCP or TLS). The input should be a url.URL parsed from a string of the form e.g. "tcp://a.b.c.d:e". In the case of a link-local address, the interface should be provided as the second argument.
func (*Core) SetAdmin ¶
func (c *Core) SetAdmin(a AddHandler) error
SetAdmin must be called after Init and before Start. It sets the admin handler for NodeInfo and the Debug admin functions.
func (*Core) SetLogger ¶
SetLogger sets the output logger of the Yggdrasil node after startup. This may be useful if you want to redirect the output later. Note that this expects a Logger from the github.com/gologme/log package and not from Go's built-in log package.
func (*Core) Start ¶
Start starts up Yggdrasil using the provided config.NodeConfig, and outputs debug logging through the provided log.Logger. The started stack will include TCP and UDP sockets, a multicast discovery socket, an admin socket, router, switch and DHT node. A config.NodeState is returned which contains both the current and previous configurations (from reconfigures).
func (*Core) Subnet ¶
Subnet gets the routed IPv6 subnet of the Yggdrasil node. This is always a /64 subnet. The IPv6 subnet is only relevant when the node is operating as an IP router and often is meaningless when embedded into an application, unless that application also implements either VPN functionality or deals with IP packets specifically.
type DebugGetDHTRequest ¶
type DebugGetDHTRequest struct {
Key string `json:"key"`
}
type DebugGetDHTResponse ¶
type DebugGetDHTResponse map[string]interface{}
type DebugGetPeersRequest ¶
type DebugGetPeersRequest struct {
Key string `json:"key"`
}
type DebugGetPeersResponse ¶
type DebugGetPeersResponse map[string]interface{}
type DebugGetSelfRequest ¶
type DebugGetSelfRequest struct {
Key string `json:"key"`
}
type DebugGetSelfResponse ¶
type DebugGetSelfResponse map[string]interface{}
type GetNodeInfoRequest ¶
type GetNodeInfoRequest struct {
Key string `json:"key"`
}
type GetNodeInfoResponse ¶
type GetNodeInfoResponse map[string]interface{}
type NodeInfoPayload ¶
type NodeInfoPayload []byte
NodeInfoPayload represents a RequestNodeInfo response, in bytes.
type TcpListener ¶
TcpListener is a stoppable TCP listener interface. These are typically returned from calls to the ListenTCP() function and are also used internally to represent listeners created by the "Listen" configuration option and for multicast interfaces.
func (*TcpListener) Stop ¶
func (l *TcpListener) Stop()
type TcpUpgrade ¶
type TcpUpgrade struct {
// contains filtered or unexported fields
}