mirror of
https://github.com/cwinfo/yggdrasil-go.git
synced 2024-11-26 06:01:37 +00:00
Move nodeinfo into router
This commit is contained in:
parent
5cde3b5efc
commit
9e486ed4fe
@ -352,7 +352,7 @@ func (a *admin) init(c *Core) {
|
|||||||
if in["box_pub_key"] == nil && in["coords"] == nil {
|
if in["box_pub_key"] == nil && in["coords"] == nil {
|
||||||
var nodeinfo []byte
|
var nodeinfo []byte
|
||||||
a.core.router.doAdmin(func() {
|
a.core.router.doAdmin(func() {
|
||||||
nodeinfo = []byte(a.core.nodeinfo.getNodeInfo())
|
nodeinfo = []byte(a.core.router.nodeinfo.getNodeInfo())
|
||||||
})
|
})
|
||||||
var jsoninfo interface{}
|
var jsoninfo interface{}
|
||||||
if err := json.Unmarshal(nodeinfo, &jsoninfo); err != nil {
|
if err := json.Unmarshal(nodeinfo, &jsoninfo); err != nil {
|
||||||
@ -864,7 +864,7 @@ func (a *admin) admin_getNodeInfo(keyString, coordString string, nocache bool) (
|
|||||||
copy(key[:], keyBytes)
|
copy(key[:], keyBytes)
|
||||||
}
|
}
|
||||||
if !nocache {
|
if !nocache {
|
||||||
if response, err := a.core.nodeinfo.getCachedNodeInfo(key); err == nil {
|
if response, err := a.core.router.nodeinfo.getCachedNodeInfo(key); err == nil {
|
||||||
return response, nil
|
return response, nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -882,14 +882,14 @@ func (a *admin) admin_getNodeInfo(keyString, coordString string, nocache bool) (
|
|||||||
}
|
}
|
||||||
response := make(chan *nodeinfoPayload, 1)
|
response := make(chan *nodeinfoPayload, 1)
|
||||||
sendNodeInfoRequest := func() {
|
sendNodeInfoRequest := func() {
|
||||||
a.core.nodeinfo.addCallback(key, func(nodeinfo *nodeinfoPayload) {
|
a.core.router.nodeinfo.addCallback(key, func(nodeinfo *nodeinfoPayload) {
|
||||||
defer func() { recover() }()
|
defer func() { recover() }()
|
||||||
select {
|
select {
|
||||||
case response <- nodeinfo:
|
case response <- nodeinfo:
|
||||||
default:
|
default:
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
a.core.nodeinfo.sendNodeInfo(key, coords, false)
|
a.core.router.nodeinfo.sendNodeInfo(key, coords, false)
|
||||||
}
|
}
|
||||||
a.core.router.doAdmin(sendNodeInfoRequest)
|
a.core.router.doAdmin(sendNodeInfoRequest)
|
||||||
go func() {
|
go func() {
|
||||||
|
@ -44,7 +44,6 @@ type Core struct {
|
|||||||
admin admin
|
admin admin
|
||||||
searches searches
|
searches searches
|
||||||
multicast multicast
|
multicast multicast
|
||||||
nodeinfo nodeinfo
|
|
||||||
tcp tcpInterface
|
tcp tcpInterface
|
||||||
awdl awdl
|
awdl awdl
|
||||||
log *log.Logger
|
log *log.Logger
|
||||||
@ -83,7 +82,6 @@ func (c *Core) init() error {
|
|||||||
copy(c.sigPriv[:], sigPrivHex)
|
copy(c.sigPriv[:], sigPrivHex)
|
||||||
|
|
||||||
c.admin.init(c)
|
c.admin.init(c)
|
||||||
c.nodeinfo.init(c)
|
|
||||||
c.searches.init(c)
|
c.searches.init(c)
|
||||||
c.dht.init(c)
|
c.dht.init(c)
|
||||||
c.sessions.init(c)
|
c.sessions.init(c)
|
||||||
@ -197,8 +195,6 @@ func (c *Core) Start(nc *config.NodeConfig, log *log.Logger) error {
|
|||||||
|
|
||||||
c.init()
|
c.init()
|
||||||
|
|
||||||
c.nodeinfo.setNodeInfo(nc.NodeInfo, nc.NodeInfoPrivacy)
|
|
||||||
|
|
||||||
if err := c.tcp.init(c); err != nil {
|
if err := c.tcp.init(c); err != nil {
|
||||||
c.log.Println("Failed to start TCP interface")
|
c.log.Println("Failed to start TCP interface")
|
||||||
return err
|
return err
|
||||||
@ -297,12 +293,12 @@ func (c *Core) GetSubnet() *net.IPNet {
|
|||||||
|
|
||||||
// Gets the nodeinfo.
|
// Gets the nodeinfo.
|
||||||
func (c *Core) GetNodeInfo() nodeinfoPayload {
|
func (c *Core) GetNodeInfo() nodeinfoPayload {
|
||||||
return c.nodeinfo.getNodeInfo()
|
return c.router.nodeinfo.getNodeInfo()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sets the nodeinfo.
|
// Sets the nodeinfo.
|
||||||
func (c *Core) SetNodeInfo(nodeinfo interface{}, nodeinfoprivacy bool) {
|
func (c *Core) SetNodeInfo(nodeinfo interface{}, nodeinfoprivacy bool) {
|
||||||
c.nodeinfo.setNodeInfo(nodeinfo, nodeinfoprivacy)
|
c.router.nodeinfo.setNodeInfo(nodeinfo, nodeinfoprivacy)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sets the output logger of the Yggdrasil node after startup. This may be
|
// Sets the output logger of the Yggdrasil node after startup. This may be
|
||||||
|
@ -170,7 +170,7 @@ func (m *nodeinfo) sendNodeInfo(key crypto.BoxPubKey, coords []byte, isResponse
|
|||||||
nodeinfo := nodeinfoReqRes{
|
nodeinfo := nodeinfoReqRes{
|
||||||
SendCoords: table.self.getCoords(),
|
SendCoords: table.self.getCoords(),
|
||||||
IsResponse: isResponse,
|
IsResponse: isResponse,
|
||||||
NodeInfo: m.core.nodeinfo.getNodeInfo(),
|
NodeInfo: m.getNodeInfo(),
|
||||||
}
|
}
|
||||||
bs := nodeinfo.encode()
|
bs := nodeinfo.encode()
|
||||||
shared := m.core.sessions.getSharedKey(&m.core.boxPriv, &key)
|
shared := m.core.sessions.getSharedKey(&m.core.boxPriv, &key)
|
||||||
|
@ -51,6 +51,7 @@ type router struct {
|
|||||||
reset chan struct{} // signal that coords changed (re-init sessions/dht)
|
reset chan struct{} // signal that coords changed (re-init sessions/dht)
|
||||||
admin chan func() // pass a lambda for the admin socket to query stuff
|
admin chan func() // pass a lambda for the admin socket to query stuff
|
||||||
cryptokey cryptokey
|
cryptokey cryptokey
|
||||||
|
nodeinfo nodeinfo
|
||||||
}
|
}
|
||||||
|
|
||||||
// Packet and session info, used to check that the packet matches a valid IP range or CKR prefix before sending to the tun.
|
// Packet and session info, used to check that the packet matches a valid IP range or CKR prefix before sending to the tun.
|
||||||
@ -85,6 +86,9 @@ func (r *router) init(core *Core) {
|
|||||||
r.send = send
|
r.send = send
|
||||||
r.reset = make(chan struct{}, 1)
|
r.reset = make(chan struct{}, 1)
|
||||||
r.admin = make(chan func(), 32)
|
r.admin = make(chan func(), 32)
|
||||||
|
r.core.configMutex.RLock()
|
||||||
|
r.nodeinfo.setNodeInfo(r.core.config.NodeInfo, r.core.config.NodeInfoPrivacy)
|
||||||
|
r.core.configMutex.RUnlock()
|
||||||
r.cryptokey.init(r.core)
|
r.cryptokey.init(r.core)
|
||||||
r.tun.init(r.core, send, recv)
|
r.tun.init(r.core, send, recv)
|
||||||
}
|
}
|
||||||
@ -128,7 +132,7 @@ func (r *router) mainLoop() {
|
|||||||
f()
|
f()
|
||||||
case e := <-r.reconfigure:
|
case e := <-r.reconfigure:
|
||||||
r.core.configMutex.RLock()
|
r.core.configMutex.RLock()
|
||||||
e <- r.core.nodeinfo.setNodeInfo(r.core.config.NodeInfo, r.core.config.NodeInfoPrivacy)
|
e <- r.nodeinfo.setNodeInfo(r.core.config.NodeInfo, r.core.config.NodeInfoPrivacy)
|
||||||
r.core.configMutex.RUnlock()
|
r.core.configMutex.RUnlock()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -469,7 +473,7 @@ func (r *router) handleNodeInfo(bs []byte, fromKey *crypto.BoxPubKey) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
req.SendPermPub = *fromKey
|
req.SendPermPub = *fromKey
|
||||||
r.core.nodeinfo.handleNodeInfo(&req)
|
r.nodeinfo.handleNodeInfo(&req)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Passed a function to call.
|
// Passed a function to call.
|
||||||
|
Loading…
Reference in New Issue
Block a user