mirror of
https://github.com/slackhq/nebula.git
synced 2026-06-30 18:40:29 +02:00
Relay log fix (#1765)
* ensure CreateRelayRequest gets logged correctly * ensure CreateRelayResponse gets logged correctly
This commit is contained in:
@@ -298,8 +298,8 @@ func (cm *connectionManager) migrateRelayUsed(oldhostinfo, newhostinfo *HostInfo
|
|||||||
} else {
|
} else {
|
||||||
cm.intf.SendMessageToHostInfo(header.Control, 0, newhostinfo, msg, make([]byte, 12), make([]byte, mtu))
|
cm.intf.SendMessageToHostInfo(header.Control, 0, newhostinfo, msg, make([]byte, 12), make([]byte, mtu))
|
||||||
cm.l.Info("send CreateRelayRequest",
|
cm.l.Info("send CreateRelayRequest",
|
||||||
"relayFrom", req.RelayFromAddr,
|
"relayFrom", relayFrom,
|
||||||
"relayTo", req.RelayToAddr,
|
"relayTo", relayTo,
|
||||||
"initiatorRelayIndex", req.InitiatorRelayIndex,
|
"initiatorRelayIndex", req.InitiatorRelayIndex,
|
||||||
"responderRelayIndex", req.ResponderRelayIndex,
|
"responderRelayIndex", req.ResponderRelayIndex,
|
||||||
"vpnAddrs", newhostinfo.vpnAddrs,
|
"vpnAddrs", newhostinfo.vpnAddrs,
|
||||||
|
|||||||
+15
-16
@@ -318,17 +318,16 @@ func (rm *relayManager) HandleControlMsg(h *HostInfo, d []byte, f *Interface) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (rm *relayManager) handleCreateRelayResponse(v cert.Version, h *HostInfo, f *Interface, m *NebulaControl) {
|
func (rm *relayManager) handleCreateRelayResponse(v cert.Version, h *HostInfo, f *Interface, m *NebulaControl) {
|
||||||
|
relayFrom := protoAddrToNetAddr(m.RelayFromAddr)
|
||||||
|
relayTo := protoAddrToNetAddr(m.RelayToAddr)
|
||||||
rm.l.Info("handleCreateRelayResponse",
|
rm.l.Info("handleCreateRelayResponse",
|
||||||
"relayFrom", protoAddrToNetAddr(m.RelayFromAddr),
|
"relayFrom", relayFrom,
|
||||||
"relayTo", protoAddrToNetAddr(m.RelayToAddr),
|
"relayTo", relayTo,
|
||||||
"initiatorRelayIndex", m.InitiatorRelayIndex,
|
"initiatorRelayIndex", m.InitiatorRelayIndex,
|
||||||
"responderRelayIndex", m.ResponderRelayIndex,
|
"responderRelayIndex", m.ResponderRelayIndex,
|
||||||
"vpnAddrs", h.vpnAddrs,
|
"vpnAddrs", h.vpnAddrs,
|
||||||
)
|
)
|
||||||
|
|
||||||
target := m.RelayToAddr
|
|
||||||
targetAddr := protoAddrToNetAddr(target)
|
|
||||||
|
|
||||||
relay, err := rm.EstablishRelay(h, m)
|
relay, err := rm.EstablishRelay(h, m)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
rm.l.Error("Failed to update relay for relayTo", "error", err)
|
rm.l.Error("Failed to update relay for relayTo", "error", err)
|
||||||
@@ -344,7 +343,7 @@ func (rm *relayManager) handleCreateRelayResponse(v cert.Version, h *HostInfo, f
|
|||||||
rm.l.Error("Can't find a HostInfo for peer", "relayTo", relay.PeerAddr)
|
rm.l.Error("Can't find a HostInfo for peer", "relayTo", relay.PeerAddr)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
peerRelay, ok := peerHostInfo.relayState.QueryRelayForByIp(targetAddr)
|
peerRelay, ok := peerHostInfo.relayState.QueryRelayForByIp(relayTo)
|
||||||
if !ok {
|
if !ok {
|
||||||
rm.l.Error("peerRelay does not have Relay state for relayTo", "relayTo", peerHostInfo.vpnAddrs[0])
|
rm.l.Error("peerRelay does not have Relay state for relayTo", "relayTo", peerHostInfo.vpnAddrs[0])
|
||||||
return
|
return
|
||||||
@@ -354,19 +353,19 @@ func (rm *relayManager) handleCreateRelayResponse(v cert.Version, h *HostInfo, f
|
|||||||
// I initiated the request to this peer, but haven't heard back from the peer yet. I must wait for this peer
|
// I initiated the request to this peer, but haven't heard back from the peer yet. I must wait for this peer
|
||||||
// to respond to complete the connection.
|
// to respond to complete the connection.
|
||||||
case PeerRequested, Disestablished, Established:
|
case PeerRequested, Disestablished, Established:
|
||||||
peerHostInfo.relayState.UpdateRelayForByIpState(targetAddr, Established)
|
peerHostInfo.relayState.UpdateRelayForByIpState(relayTo, Established)
|
||||||
resp := NebulaControl{
|
resp := NebulaControl{
|
||||||
Type: NebulaControl_CreateRelayResponse,
|
Type: NebulaControl_CreateRelayResponse,
|
||||||
ResponderRelayIndex: peerRelay.LocalIndex,
|
ResponderRelayIndex: peerRelay.LocalIndex,
|
||||||
InitiatorRelayIndex: peerRelay.RemoteIndex,
|
InitiatorRelayIndex: peerRelay.RemoteIndex,
|
||||||
}
|
}
|
||||||
|
|
||||||
if v == cert.Version1 {
|
|
||||||
peer := peerHostInfo.vpnAddrs[0]
|
peer := peerHostInfo.vpnAddrs[0]
|
||||||
|
if v == cert.Version1 {
|
||||||
if !peer.Is4() {
|
if !peer.Is4() {
|
||||||
rm.l.Error("Refusing to CreateRelayResponse for a v1 relay with an ipv6 address",
|
rm.l.Error("Refusing to CreateRelayResponse for a v1 relay with an ipv6 address",
|
||||||
"relayFrom", peer,
|
"relayFrom", peer,
|
||||||
"relayTo", target,
|
"relayTo", relayTo,
|
||||||
"initiatorRelayIndex", resp.InitiatorRelayIndex,
|
"initiatorRelayIndex", resp.InitiatorRelayIndex,
|
||||||
"responderRelayIndex", resp.ResponderRelayIndex,
|
"responderRelayIndex", resp.ResponderRelayIndex,
|
||||||
"vpnAddrs", peerHostInfo.vpnAddrs,
|
"vpnAddrs", peerHostInfo.vpnAddrs,
|
||||||
@@ -376,28 +375,28 @@ func (rm *relayManager) handleCreateRelayResponse(v cert.Version, h *HostInfo, f
|
|||||||
|
|
||||||
b := peer.As4()
|
b := peer.As4()
|
||||||
resp.OldRelayFromAddr = binary.BigEndian.Uint32(b[:])
|
resp.OldRelayFromAddr = binary.BigEndian.Uint32(b[:])
|
||||||
b = targetAddr.As4()
|
b = relayTo.As4()
|
||||||
resp.OldRelayToAddr = binary.BigEndian.Uint32(b[:])
|
resp.OldRelayToAddr = binary.BigEndian.Uint32(b[:])
|
||||||
} else {
|
} else {
|
||||||
resp.RelayFromAddr = netAddrToProtoAddr(peerHostInfo.vpnAddrs[0])
|
resp.RelayFromAddr = netAddrToProtoAddr(peer)
|
||||||
resp.RelayToAddr = target
|
resp.RelayToAddr = m.RelayToAddr
|
||||||
}
|
}
|
||||||
|
|
||||||
msg, err := resp.Marshal()
|
msg, err := resp.Marshal()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
rm.l.Error("relayManager Failed to marshal Control CreateRelayResponse message to create relay", "error", err)
|
rm.l.Error("relayManager Failed to marshal Control CreateRelayResponse message to create relay", "error", err)
|
||||||
} else {
|
return
|
||||||
|
}
|
||||||
f.SendMessageToHostInfo(header.Control, 0, peerHostInfo, msg, make([]byte, 12), make([]byte, mtu))
|
f.SendMessageToHostInfo(header.Control, 0, peerHostInfo, msg, make([]byte, 12), make([]byte, mtu))
|
||||||
rm.l.Info("send CreateRelayResponse",
|
rm.l.Info("send CreateRelayResponse",
|
||||||
"relayFrom", resp.RelayFromAddr,
|
"relayFrom", peer,
|
||||||
"relayTo", resp.RelayToAddr,
|
"relayTo", relayTo,
|
||||||
"initiatorRelayIndex", resp.InitiatorRelayIndex,
|
"initiatorRelayIndex", resp.InitiatorRelayIndex,
|
||||||
"responderRelayIndex", resp.ResponderRelayIndex,
|
"responderRelayIndex", resp.ResponderRelayIndex,
|
||||||
"vpnAddrs", peerHostInfo.vpnAddrs,
|
"vpnAddrs", peerHostInfo.vpnAddrs,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
func (rm *relayManager) handleCreateRelayRequest(v cert.Version, h *HostInfo, f *Interface, m *NebulaControl) {
|
func (rm *relayManager) handleCreateRelayRequest(v cert.Version, h *HostInfo, f *Interface, m *NebulaControl) {
|
||||||
from := protoAddrToNetAddr(m.RelayFromAddr)
|
from := protoAddrToNetAddr(m.RelayFromAddr)
|
||||||
|
|||||||
Reference in New Issue
Block a user