net-ppp: return error when PPP link gets terminated by the peer.

This commit is contained in:
Dario Nieuwenhuis 2023-08-30 01:04:43 +02:00
parent a4d78a6552
commit 975f2f23c0
2 changed files with 6 additions and 1 deletions

View file

@ -18,7 +18,7 @@ log = { version = "0.4.14", optional = true }
embedded-io-async = { version = "0.5.0" } embedded-io-async = { version = "0.5.0" }
embassy-net-driver-channel = { version = "0.1.0", path = "../embassy-net-driver-channel" } embassy-net-driver-channel = { version = "0.1.0", path = "../embassy-net-driver-channel" }
embassy-futures = { version = "0.1.0", path = "../embassy-futures" } embassy-futures = { version = "0.1.0", path = "../embassy-futures" }
ppproto = { version = "0.1.1"} ppproto = { version = "0.1.2"}
embassy-sync = { version = "0.2.0", path = "../embassy-sync" } embassy-sync = { version = "0.2.0", path = "../embassy-sync" }
[package.metadata.embassy_docs] [package.metadata.embassy_docs]

View file

@ -53,6 +53,8 @@ pub enum RunError<E> {
WriteZero, WriteZero,
/// Writing to the serial got EOF. /// Writing to the serial got EOF.
Eof, Eof,
/// PPP protocol was terminated by the peer
Terminated,
} }
impl<E> From<WriteAllError<E>> for RunError<E> { impl<E> From<WriteAllError<E>> for RunError<E> {
@ -128,6 +130,9 @@ impl<'d> Runner<'d> {
let status = ppp.status(); let status = ppp.status();
match status.phase { match status.phase {
ppproto::Phase::Dead => {
return Err(RunError::Terminated);
}
ppproto::Phase::Open => { ppproto::Phase::Open => {
if !was_up { if !was_up {
on_ipv4_up(status.ipv4.unwrap()); on_ipv4_up(status.ipv4.unwrap());