aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHimbeerserverDE <himbeerserverde@gmail.com>2023-11-15 19:38:07 +0100
committerHimbeerserverDE <himbeerserverde@gmail.com>2023-11-15 19:38:07 +0100
commit3e08d30fa6f149ef275db4ffb40a8d57c2003851 (patch)
tree75a3fea7ca7f4361124e226bf20cb11913c08294
parentaede537b776084a45cc9e756c01930fffab6145e (diff)
shutdown: give LCP a chance to send a Terminate-Request + PPPoE PADT
-rw-r--r--src/supervisor.rs15
1 files changed, 9 insertions, 6 deletions
diff --git a/src/supervisor.rs b/src/supervisor.rs
index 07daa5f..585d265 100644
--- a/src/supervisor.rs
+++ b/src/supervisor.rs
@@ -75,7 +75,7 @@ pub struct Client {
local: MacAddr,
remote: MacAddr,
- preserve_lease: bool,
+ shutdown: bool,
authenticated: bool,
last_id_remote: u8,
@@ -141,7 +141,7 @@ impl Client {
.into(),
remote: MacAddr::BROADCAST,
- preserve_lease: false,
+ shutdown: false,
authenticated: false,
last_id_remote: 0,
@@ -305,11 +305,10 @@ impl Client {
biased;
_ = sigterm.recv() => {
- self.preserve_lease = true;
+ self.shutdown = true;
self.lcp.close();
println!("[info] <> disconnect: sigterm");
- return Ok(());
}
packet = self.pppoe.to_send() => self.send_pppoe(&sock_disc, packet).await?,
@@ -352,6 +351,10 @@ impl Client {
self.lcp.down();
println!("[info] <> terminate pppoe session");
+
+ if self.shutdown {
+ return Ok(());
+ }
}
}
result = lcp_rx.changed() => {
@@ -473,7 +476,7 @@ impl Client {
println!("[info] <> open ipcp");
} else {
- if !self.preserve_lease {
+ if !self.shutdown {
v4_tx.send(None)?;
}
@@ -502,7 +505,7 @@ impl Client {
println!("[info] <> open ipv6cp");
} else {
- if !self.preserve_lease {
+ if !self.shutdown {
v6_tx.send(None)?;
}