diff options
author | HimbeerserverDE <himbeerserverde@gmail.com> | 2023-11-12 19:30:06 +0100 |
---|---|---|
committer | HimbeerserverDE <himbeerserverde@gmail.com> | 2023-11-12 19:30:06 +0100 |
commit | 45622271652d53662c53981bcaa79e4b79a1d52d (patch) | |
tree | 7b95c396509c41ac4d71019dba5d4d76462e2da7 /src | |
parent | 232e8f4bb0fad3c947c5ac20008fd2861cebf777 (diff) |
wait for pppoe on startup
Diffstat (limited to 'src')
-rw-r--r-- | src/main.rs | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/src/main.rs b/src/main.rs index d5aec7f..3bf1c46 100644 --- a/src/main.rs +++ b/src/main.rs @@ -4,12 +4,13 @@ use rsdsl_dhcp6::{Error, Result}; use std::fs::{self, File}; use std::net::{IpAddr, Ipv6Addr, SocketAddr, SocketAddrV6}; +use std::path::Path; use std::str::FromStr; use std::time::SystemTime; use tokio::net::UdpSocket; use tokio::signal::unix::{signal, SignalKind}; -use tokio::time::Duration; +use tokio::time::{sleep, Duration}; use dhcproto::v6::{duid::Duid, DhcpOption, IAPrefix, Message, MessageType, OptionCode, IAPD, ORO}; use dhcproto::{Decodable, Decoder, Encodable, Encoder, Name}; @@ -113,6 +114,20 @@ async fn main() -> Result<()> { let mut sigusr1 = signal(SignalKind::user_defined1())?; + println!("[info] wait for pppoe"); + + let ds_config_path = Path::new(rsdsl_ip_config::LOCATION); + let mut already_up = false; + while !ds_config_path.exists() { + already_up = true; + sleep(Duration::from_secs(8)).await; + } + + if already_up { + println!("[info] <> ipv6 link already up"); + dhcp6c.up(); + } + let sock = Socket::new(Domain::IPV6, Type::DGRAM, None)?; sock.set_only_v6(true)?; |