Initial pass at mDNS support (receiving does not work yet)

This commit is contained in:
Neil Alexander 2020-05-09 16:44:10 +01:00
parent dd548fc0fa
commit 8d00461cf8
No known key found for this signature in database
GPG key ID: A02A2019A2BB0944
3 changed files with 350 additions and 2 deletions

View file

@ -25,6 +25,7 @@ import (
"github.com/yggdrasil-network/yggdrasil-go/src/admin"
"github.com/yggdrasil-network/yggdrasil-go/src/config"
"github.com/yggdrasil-network/yggdrasil-go/src/crypto"
"github.com/yggdrasil-network/yggdrasil-go/src/mdns"
"github.com/yggdrasil-network/yggdrasil-go/src/module"
"github.com/yggdrasil-network/yggdrasil-go/src/multicast"
"github.com/yggdrasil-network/yggdrasil-go/src/tuntap"
@ -37,6 +38,7 @@ type node struct {
state *config.NodeState
tuntap module.Module // tuntap.TunAdapter
multicast module.Module // multicast.Multicast
mdns module.Module // mdns.MDNS
admin module.Module // admin.AdminSocket
}
@ -283,6 +285,7 @@ func main() {
// Allocate our modules
n.admin = &admin.AdminSocket{}
n.multicast = &multicast.Multicast{}
n.mdns = &mdns.MDNS{}
n.tuntap = &tuntap.TunAdapter{}
// Start the admin socket
n.admin.Init(&n.core, n.state, logger, nil)
@ -296,6 +299,12 @@ func main() {
logger.Errorln("An error occurred starting multicast:", err)
}
n.multicast.SetupAdminHandlers(n.admin.(*admin.AdminSocket))
// Start the mDNS interface
n.mdns.Init(&n.core, n.state, logger, nil)
if err := n.mdns.Start(); err != nil {
logger.Errorln("An error occurred starting mDNS:", err)
}
n.mdns.SetupAdminHandlers(n.admin.(*admin.AdminSocket))
// Start the TUN/TAP interface
if listener, err := n.core.ConnListen(); err == nil {
if dialer, err := n.core.ConnDialer(); err == nil {
@ -337,6 +346,7 @@ func main() {
n.core.UpdateConfig(cfg)
n.tuntap.UpdateConfig(cfg)
n.multicast.UpdateConfig(cfg)
n.mdns.UpdateConfig(cfg)
} else {
logger.Errorln("Reloading config at runtime is only possible with -useconffile")
}