diff options
author | HimbeerserverDE <himbeerserverde@gmail.com> | 2023-11-15 19:38:07 +0100 |
---|---|---|
committer | HimbeerserverDE <himbeerserverde@gmail.com> | 2023-11-15 19:38:07 +0100 |
commit | 3e08d30fa6f149ef275db4ffb40a8d57c2003851 (patch) | |
tree | 75a3fea7ca7f4361124e226bf20cb11913c08294 | |
parent | aede537b776084a45cc9e756c01930fffab6145e (diff) |
shutdown: give LCP a chance to send a Terminate-Request + PPPoE PADT
-rw-r--r-- | src/supervisor.rs | 15 |
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)?; } |