yggquic

package module
v0.0.0-...-0b7dc40 Latest Latest
Warning

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

Go to latest
Published: Nov 19, 2025 License: MPL-2.0 Imports: 16 Imported by: 0

README

QUIC over Yggdrasil

This package allows you to set up QUIC sessions natively over the Yggdrasil Network. This is in place of using a TUN adapter or IPv6 and allows Yggdrasil-native applications to be built easily.

See yggquic_test.go for example usage.

To build a library for Mimir use:

# One time:
go install golang.org/x/mobile/cmd/gomobile@latest
gomobile init
# And then every rebuild:
gomobile bind -target=android -androidapi 23 -javapkg=com.revertron.mimir -o yggquic.aar ./mobile
# If gomobile complains to build, do these two:
go install golang.org/x/mobile/cmd/gobind@latest
go get golang.org/x/mobile/bind@latest

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Conn

type Conn struct {
	Stream net.Conn
	Public []byte // 32-byte remote public key
}

func (*Conn) Close

func (c *Conn) Close()

func (*Conn) IsAlive

func (c *Conn) IsAlive() bool

type Messenger

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

func NewMessenger

func NewMessenger(peerAddr string) (*Messenger, error)

NewMessenger creates a node and connects to the given bootstrap peer. peerAddr format: "tls://host:port" or any string accepted by yggdrasil.

func NewWithNode

func NewWithNode(node *core.Core, cert *tls.Certificate, peerAddrs []string, timeout int64) (*Messenger, error)

NewWithNode lets callers supply their own *core.Core.

func (*Messenger) Accept

func (m *Messenger) Accept() (*Conn, error)

func (*Messenger) AddPeer

func (m *Messenger) AddPeer(addr string) error

AddPeer adds a persistent peer from a string URI.

func (*Messenger) Close

func (m *Messenger) Close() error

func (*Messenger) Connect

func (m *Messenger) Connect(publicKey []byte) (*Conn, error)

func (*Messenger) GetPathsJSON

func (m *Messenger) GetPathsJSON() string

GetPathsJSON returns JSON path list.

func (*Messenger) GetPeersJSON

func (m *Messenger) GetPeersJSON() string

GetPeersJSON returns JSON peer list (same format as the old mobile helper).

func (*Messenger) GetTransport

func (m *Messenger) GetTransport() *YggdrasilTransport

func (*Messenger) GetTreeJSON

func (m *Messenger) GetTreeJSON() string

GetTreeJSON returns JSON tree info.

func (*Messenger) PublicKey

func (m *Messenger) PublicKey() []byte

func (*Messenger) RemovePeer

func (m *Messenger) RemovePeer(addr string) error

RemovePeer removes a persistent peer from a string URI.

func (*Messenger) RetryPeersNow

func (m *Messenger) RetryPeersNow()

RetryPeersNow forwards to the underlying Yggdrasil node.

type YggdrasilTransport

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

func New

func New(ygg *core.Core, cert tls.Certificate, qc *quic.Config, timeout int64) (*YggdrasilTransport, error)

func (*YggdrasilTransport) Accept

func (t *YggdrasilTransport) Accept() (net.Conn, error)

func (*YggdrasilTransport) Addr

func (t *YggdrasilTransport) Addr() net.Addr

func (*YggdrasilTransport) Close

func (t *YggdrasilTransport) Close() error

func (*YggdrasilTransport) Dial

func (t *YggdrasilTransport) Dial(network, host string) (net.Conn, error)

func (*YggdrasilTransport) DialContext

func (t *YggdrasilTransport) DialContext(ctx context.Context, network, host string) (net.Conn, error)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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