pex: track indirect hosts (reachable via gateway) as peers without adding them to wg
[project/unetd.git] / wg.c
diff --git a/wg.c b/wg.c
index 9ac647f21a6f7b8f7a5db8c624e7b837aafb470b..1f80e00826c354e4558a60e8dbf970134d158bde 100644 (file)
--- a/wg.c
+++ b/wg.c
@@ -47,7 +47,7 @@ struct network_peer *wg_peer_update_start(struct network *net, const uint8_t *ke
        struct network_peer *peer;
 
        peer = vlist_find(&net->peers, key, peer, node);
-       if (!peer)
+       if (!peer || peer->indirect)
                return NULL;
 
        peer->state.handshake = false;
@@ -79,6 +79,7 @@ void wg_peer_set_last_handshake(struct network *net, struct network_peer *peer,
                if (peer->state.idle > sec)
                        peer->state.idle = sec;
                wg_peer_set_connected(net, peer, true);
+               peer->state.pinged = false;
        }
 }