begin fixing routing problems

This commit is contained in:
mykola2312 2025-01-14 10:11:24 +02:00
parent 88761f0719
commit d7d5c44ced
3 changed files with 11 additions and 7 deletions

View file

@ -64,5 +64,5 @@ func (host *LuxHost) Heartbeat() error {
} }
state.Write(&packet.Buffer) state.Write(&packet.Buffer)
return host.router.Multicast(packet) return host.router.Multicast(packet, proto.LuxTypeNode)
} }

View file

@ -17,6 +17,8 @@ type LuxRoute struct {
Nonces LuxNonceList Nonces LuxNonceList
} }
// !!!!!
// TODO: map key can be destination ID, while Key (+ ID) in route struct would be SOURCE
type LuxRouter struct { type LuxRouter struct {
thisKey crypto.LuxKey thisKey crypto.LuxKey
keyStore crypto.LuxKeyStore keyStore crypto.LuxKeyStore
@ -301,9 +303,9 @@ func (r *LuxRouter) Send(packet LuxPacket) error {
return route.Associated.Send(dgram) return route.Associated.Send(dgram)
} }
func (r *LuxRouter) Multicast(packet LuxPacket) error { func (r *LuxRouter) Multicast(packet LuxPacket, group proto.LuxType) error {
for _, route := range r.routes { for _, route := range r.routes {
if bytes.Equal(route.Key.Id.UUID[:], packet.Target.UUID[:]) { if route.Key.Type == group {
packet.Nonce = GenerateLuxNonce() packet.Nonce = GenerateLuxNonce()
dgram, err := EncryptLuxPacket(packet, route.Key, route.Destination) dgram, err := EncryptLuxPacket(packet, route.Key, route.Destination)
if err != nil { if err != nil {

View file

@ -20,17 +20,19 @@ func (*DummyWANProvider) Provide() (host.LuxOption, error) {
func TestHeartbeatMulticast(t *testing.T) { func TestHeartbeatMulticast(t *testing.T) {
ks := crypto.NewLuxKeyStore("/tmp/keystore.dat") ks := crypto.NewLuxKeyStore("/tmp/keystore.dat")
keyNode, _ := crypto.NewLuxKey(proto.LuxTypeNode) keyNodeA, _ := crypto.NewLuxKey(proto.LuxTypeNode)
ks.Put(keyNode) ks.Put(keyNodeA)
keyNodeB, _ := crypto.NewLuxKey(proto.LuxTypeNode)
ks.Put(keyNodeB)
keyHost, _ := crypto.NewLuxKey(proto.LuxTypeHost) keyHost, _ := crypto.NewLuxKey(proto.LuxTypeHost)
ks.Put(keyHost) ks.Put(keyHost)
nodeA := net.NewLuxRouter(keyNode, ks) nodeA := net.NewLuxRouter(keyNodeA, ks)
nodeA.CreateInboundChannel(net.LuxChannelInterior, "127.0.0.1:9979") nodeA.CreateInboundChannel(net.LuxChannelInterior, "127.0.0.1:9979")
nodeA.Start() nodeA.Start()
defer nodeA.Stop() defer nodeA.Stop()
nodeB := net.NewLuxRouter(keyNode, ks) nodeB := net.NewLuxRouter(keyNodeB, ks)
nodeB.CreateInboundChannel(net.LuxChannelInterior, "127.0.0.2:9979") nodeB.CreateInboundChannel(net.LuxChannelInterior, "127.0.0.2:9979")
nodeB.Start() nodeB.Start()
defer nodeB.Stop() defer nodeB.Stop()