aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorHimbeerserverDE <himbeerserverde@gmail.com>2023-11-12 19:30:06 +0100
committerHimbeerserverDE <himbeerserverde@gmail.com>2023-11-12 19:30:06 +0100
commit45622271652d53662c53981bcaa79e4b79a1d52d (patch)
tree7b95c396509c41ac4d71019dba5d4d76462e2da7 /src
parent232e8f4bb0fad3c947c5ac20008fd2861cebf777 (diff)
wait for pppoe on startup
Diffstat (limited to 'src')
-rw-r--r--src/main.rs17
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)?;