|
@@ -300,6 +300,8 @@ func (hm *HandshakeManager) handleOutbound(vpnIp netip.Addr, lighthouseTriggered
|
|
|
InitiatorRelayIndex: idx,
|
|
InitiatorRelayIndex: idx,
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ relayFrom := hm.f.myVpnAddrs[0]
|
|
|
|
|
+
|
|
|
switch relayHostInfo.GetCert().Certificate.Version() {
|
|
switch relayHostInfo.GetCert().Certificate.Version() {
|
|
|
case cert.Version1:
|
|
case cert.Version1:
|
|
|
if !hm.f.myVpnAddrs[0].Is4() {
|
|
if !hm.f.myVpnAddrs[0].Is4() {
|
|
@@ -317,7 +319,13 @@ func (hm *HandshakeManager) handleOutbound(vpnIp netip.Addr, lighthouseTriggered
|
|
|
b = vpnIp.As4()
|
|
b = vpnIp.As4()
|
|
|
m.OldRelayToAddr = binary.BigEndian.Uint32(b[:])
|
|
m.OldRelayToAddr = binary.BigEndian.Uint32(b[:])
|
|
|
case cert.Version2:
|
|
case cert.Version2:
|
|
|
- m.RelayFromAddr = netAddrToProtoAddr(hm.f.myVpnAddrs[0])
|
|
|
|
|
|
|
+ if vpnIp.Is4() {
|
|
|
|
|
+ relayFrom = hm.f.myVpnAddrs[0]
|
|
|
|
|
+ } else {
|
|
|
|
|
+ //todo do this smarter
|
|
|
|
|
+ relayFrom = hm.f.myVpnAddrs[len(hm.f.myVpnAddrs)-1]
|
|
|
|
|
+ }
|
|
|
|
|
+ m.RelayFromAddr = netAddrToProtoAddr(relayFrom)
|
|
|
m.RelayToAddr = netAddrToProtoAddr(vpnIp)
|
|
m.RelayToAddr = netAddrToProtoAddr(vpnIp)
|
|
|
default:
|
|
default:
|
|
|
hostinfo.logger(hm.l).Error("Unknown certificate version found while creating relay")
|
|
hostinfo.logger(hm.l).Error("Unknown certificate version found while creating relay")
|
|
@@ -332,7 +340,7 @@ func (hm *HandshakeManager) handleOutbound(vpnIp netip.Addr, lighthouseTriggered
|
|
|
} else {
|
|
} else {
|
|
|
hm.f.SendMessageToHostInfo(header.Control, 0, relayHostInfo, msg, make([]byte, 12), make([]byte, mtu))
|
|
hm.f.SendMessageToHostInfo(header.Control, 0, relayHostInfo, msg, make([]byte, 12), make([]byte, mtu))
|
|
|
hm.l.WithFields(logrus.Fields{
|
|
hm.l.WithFields(logrus.Fields{
|
|
|
- "relayFrom": hm.f.myVpnAddrs[0],
|
|
|
|
|
|
|
+ "relayFrom": relayFrom,
|
|
|
"relayTo": vpnIp,
|
|
"relayTo": vpnIp,
|
|
|
"initiatorRelayIndex": idx,
|
|
"initiatorRelayIndex": idx,
|
|
|
"relay": relay}).
|
|
"relay": relay}).
|
|
@@ -358,6 +366,8 @@ func (hm *HandshakeManager) handleOutbound(vpnIp netip.Addr, lighthouseTriggered
|
|
|
InitiatorRelayIndex: existingRelay.LocalIndex,
|
|
InitiatorRelayIndex: existingRelay.LocalIndex,
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ relayFrom := hm.f.myVpnAddrs[0]
|
|
|
|
|
+
|
|
|
switch relayHostInfo.GetCert().Certificate.Version() {
|
|
switch relayHostInfo.GetCert().Certificate.Version() {
|
|
|
case cert.Version1:
|
|
case cert.Version1:
|
|
|
if !hm.f.myVpnAddrs[0].Is4() {
|
|
if !hm.f.myVpnAddrs[0].Is4() {
|
|
@@ -375,7 +385,14 @@ func (hm *HandshakeManager) handleOutbound(vpnIp netip.Addr, lighthouseTriggered
|
|
|
b = vpnIp.As4()
|
|
b = vpnIp.As4()
|
|
|
m.OldRelayToAddr = binary.BigEndian.Uint32(b[:])
|
|
m.OldRelayToAddr = binary.BigEndian.Uint32(b[:])
|
|
|
case cert.Version2:
|
|
case cert.Version2:
|
|
|
- m.RelayFromAddr = netAddrToProtoAddr(hm.f.myVpnAddrs[0])
|
|
|
|
|
|
|
+ if vpnIp.Is4() {
|
|
|
|
|
+ relayFrom = hm.f.myVpnAddrs[0]
|
|
|
|
|
+ } else {
|
|
|
|
|
+ //todo do this smarter
|
|
|
|
|
+ relayFrom = hm.f.myVpnAddrs[len(hm.f.myVpnAddrs)-1]
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ m.RelayFromAddr = netAddrToProtoAddr(relayFrom)
|
|
|
m.RelayToAddr = netAddrToProtoAddr(vpnIp)
|
|
m.RelayToAddr = netAddrToProtoAddr(vpnIp)
|
|
|
default:
|
|
default:
|
|
|
hostinfo.logger(hm.l).Error("Unknown certificate version found while creating relay")
|
|
hostinfo.logger(hm.l).Error("Unknown certificate version found while creating relay")
|
|
@@ -390,7 +407,7 @@ func (hm *HandshakeManager) handleOutbound(vpnIp netip.Addr, lighthouseTriggered
|
|
|
// This must send over the hostinfo, not over hm.Hosts[ip]
|
|
// This must send over the hostinfo, not over hm.Hosts[ip]
|
|
|
hm.f.SendMessageToHostInfo(header.Control, 0, relayHostInfo, msg, make([]byte, 12), make([]byte, mtu))
|
|
hm.f.SendMessageToHostInfo(header.Control, 0, relayHostInfo, msg, make([]byte, 12), make([]byte, mtu))
|
|
|
hm.l.WithFields(logrus.Fields{
|
|
hm.l.WithFields(logrus.Fields{
|
|
|
- "relayFrom": hm.f.myVpnAddrs[0],
|
|
|
|
|
|
|
+ "relayFrom": relayFrom,
|
|
|
"relayTo": vpnIp,
|
|
"relayTo": vpnIp,
|
|
|
"initiatorRelayIndex": existingRelay.LocalIndex,
|
|
"initiatorRelayIndex": existingRelay.LocalIndex,
|
|
|
"relay": relay}).
|
|
"relay": relay}).
|