Remove CopyEndpointToPeer_Locked
This commit is contained in:
parent
b52d8f3d70
commit
852b0c5373
|
@ -651,6 +651,7 @@ bool WireguardProcessor::IsMainThreadPacket(Packet *packet) {
|
||||||
// Handles an incoming WireGuard packet from the UDP side, decrypt etc.
|
// Handles an incoming WireGuard packet from the UDP side, decrypt etc.
|
||||||
void WireguardProcessor::HandleUdpPacket(Packet *packet, bool overload) {
|
void WireguardProcessor::HandleUdpPacket(Packet *packet, bool overload) {
|
||||||
uint32 type;
|
uint32 type;
|
||||||
|
assert(packet->protocol != 0xCD && (uint16)packet->addr.sin.sin_family != 0xCDCD); // catch msvc uninit mem
|
||||||
|
|
||||||
// Unscramble incoming packets
|
// Unscramble incoming packets
|
||||||
#if WITH_HEADER_OBFUSCATION
|
#if WITH_HEADER_OBFUSCATION
|
||||||
|
@ -699,19 +700,6 @@ invalid_size:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void WgPeer::CopyEndpointToPeer_Locked(WgKeypair *keypair, const IpAddr *addr) {
|
|
||||||
// Remember how to send packets to this peer
|
|
||||||
if (keypair->peer->allow_endpoint_change_ &&
|
|
||||||
CompareIpAddr(&keypair->peer->endpoint_, addr) && addr->sin.sin_family != 0) {
|
|
||||||
#if WITH_SHORT_HEADERS
|
|
||||||
// When the endpoint changes, forget about using the short key.
|
|
||||||
keypair->broadcast_short_key = 0;
|
|
||||||
keypair->can_use_short_key_for_outgoing = false;
|
|
||||||
#endif // WITH_SHORT_HEADERS
|
|
||||||
keypair->peer->endpoint_ = *addr;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#if WITH_SHORT_HEADERS
|
#if WITH_SHORT_HEADERS
|
||||||
void WireguardProcessor::HandleShortHeaderFormatPacket(uint32 tag, Packet *packet) {
|
void WireguardProcessor::HandleShortHeaderFormatPacket(uint32 tag, Packet *packet) {
|
||||||
assert(dev_.IsMainOrDataThread());
|
assert(dev_.IsMainOrDataThread());
|
||||||
|
@ -809,8 +797,6 @@ void WireguardProcessor::HandleShortHeaderFormatPacket(uint32 tag, Packet *packe
|
||||||
|
|
||||||
keypair->send_ctr_acked = std::max<uint64>(keypair->send_ctr_acked, acked_counter);
|
keypair->send_ctr_acked = std::max<uint64>(keypair->send_ctr_acked, acked_counter);
|
||||||
|
|
||||||
WgPeer::CopyEndpointToPeer_Locked(keypair, &packet->addr);
|
|
||||||
|
|
||||||
// Periodically broadcast out the short key
|
// Periodically broadcast out the short key
|
||||||
if ((tag & WG_SHORT_HEADER_KEY_ID_MASK) == 0x00 && !keypair->did_attempt_remember_ip_port) {
|
if ((tag & WG_SHORT_HEADER_KEY_ID_MASK) == 0x00 && !keypair->did_attempt_remember_ip_port) {
|
||||||
keypair->did_attempt_remember_ip_port = true;
|
keypair->did_attempt_remember_ip_port = true;
|
||||||
|
@ -848,6 +834,19 @@ void WireguardProcessor::NotifyHandshakeComplete() {
|
||||||
void WireguardProcessor::HandleAuthenticatedDataPacket_WillUnlock(WgKeypair *keypair, Packet *packet) {
|
void WireguardProcessor::HandleAuthenticatedDataPacket_WillUnlock(WgKeypair *keypair, Packet *packet) {
|
||||||
WgPeer *peer = keypair->peer;
|
WgPeer *peer = keypair->peer;
|
||||||
assert(peer->IsPeerLocked());
|
assert(peer->IsPeerLocked());
|
||||||
|
assert(packet->addr.sin.sin_family != 0);
|
||||||
|
|
||||||
|
// Remember the endpoint of the peer
|
||||||
|
if (peer->allow_endpoint_change_ &&
|
||||||
|
(CompareIpAddr(&peer->endpoint_, &packet->addr) | (peer->endpoint_protocol_ ^ packet->protocol)) != 0) {
|
||||||
|
#if WITH_SHORT_HEADERS
|
||||||
|
// When the endpoint changes, forget about using the short key.
|
||||||
|
keypair->broadcast_short_key = 0;
|
||||||
|
keypair->can_use_short_key_for_outgoing = false;
|
||||||
|
#endif // WITH_SHORT_HEADERS
|
||||||
|
peer->endpoint_ = packet->addr;
|
||||||
|
peer->endpoint_protocol_ = packet->protocol;
|
||||||
|
}
|
||||||
|
|
||||||
// Remember how many incoming packets we've seen so we can approximate loss
|
// Remember how many incoming packets we've seen so we can approximate loss
|
||||||
keypair->incoming_packet_count++;
|
keypair->incoming_packet_count++;
|
||||||
|
@ -969,9 +968,6 @@ getout:
|
||||||
goto getout;
|
goto getout;
|
||||||
} else {
|
} else {
|
||||||
assert(!keypair->peer->marked_for_delete_);
|
assert(!keypair->peer->marked_for_delete_);
|
||||||
|
|
||||||
WgPeer::CopyEndpointToPeer_Locked(keypair, &packet->addr);
|
|
||||||
|
|
||||||
HandleAuthenticatedDataPacket_WillUnlock(keypair, packet);
|
HandleAuthenticatedDataPacket_WillUnlock(keypair, packet);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -509,7 +509,6 @@ private:
|
||||||
void WriteMacToPacket(const uint8 *data, MessageMacs *mac);
|
void WriteMacToPacket(const uint8 *data, MessageMacs *mac);
|
||||||
void CheckAndUpdateTimeOfNextKeyEvent(uint64 now);
|
void CheckAndUpdateTimeOfNextKeyEvent(uint64 now);
|
||||||
static void DeleteKeypair(WgKeypair **kp);
|
static void DeleteKeypair(WgKeypair **kp);
|
||||||
static void CopyEndpointToPeer_Locked(WgKeypair *keypair, const IpAddr *addr);
|
|
||||||
static void DelayedDelete(void *x);
|
static void DelayedDelete(void *x);
|
||||||
size_t WriteHandshakeExtension(uint8 *dst, WgKeypair *keypair);
|
size_t WriteHandshakeExtension(uint8 *dst, WgKeypair *keypair);
|
||||||
void InsertKeypairInPeer_Locked(WgKeypair *keypair);
|
void InsertKeypairInPeer_Locked(WgKeypair *keypair);
|
||||||
|
|
Loading…
Reference in a new issue