Add a ping message to help wireguard initialize connections

This commit is contained in:
Alex 2023-03-16 14:03:31 +01:00
parent c7dbb05be2
commit a02cb2bb43

View file

@ -173,6 +173,8 @@ struct PeerInfo {
#[derive(Serialize, Deserialize, Debug)] #[derive(Serialize, Deserialize, Debug)]
enum Gossip { enum Gossip {
Ping,
Pong,
Announce { Announce {
pubkey: Pubkey, pubkey: Pubkey,
endpoints: Vec<(SocketAddr, u64)>, endpoints: Vec<(SocketAddr, u64)>,
@ -329,6 +331,11 @@ impl Daemon {
} }
} }
} }
Gossip::Ping => {
let packet = self.make_packet(&Gossip::Pong)?;
self.socket.send_to(&packet, from)?;
}
Gossip::Pong => (),
} }
Ok(()) Ok(())
} }
@ -666,6 +673,11 @@ impl State {
&format!("{}/32", peer_cfg.address), &format!("{}/32", peer_cfg.address),
]) ])
.output()?; .output()?;
let packet = daemon.make_packet(&Gossip::Ping)?;
daemon.socket.send_to(
&packet,
SocketAddr::new(peer_cfg.address, daemon.config.gossip_port),
)?;
} else { } else {
info!("Configure {} with no known endpoint", peer_cfg.pubkey); info!("Configure {} with no known endpoint", peer_cfg.pubkey);
Command::new("wg") Command::new("wg")