aboutsummaryrefslogtreecommitdiff
path: root/embassy-net-ppp
diff options
context:
space:
mode:
authorDario Nieuwenhuis <[email protected]>2023-08-30 01:04:43 +0200
committerDario Nieuwenhuis <[email protected]>2023-08-30 01:04:43 +0200
commit975f2f23c0256f192838a5a5cd995faa9ad88f34 (patch)
tree8c3646e16e838a6bdc7b32ad8448248e68f71abf /embassy-net-ppp
parenta4d78a655217fadcf005b0ae835eb115594dc2b2 (diff)
net-ppp: return error when PPP link gets terminated by the peer.
Diffstat (limited to 'embassy-net-ppp')
-rw-r--r--embassy-net-ppp/Cargo.toml2
-rw-r--r--embassy-net-ppp/src/lib.rs5
2 files changed, 6 insertions, 1 deletions
diff --git a/embassy-net-ppp/Cargo.toml b/embassy-net-ppp/Cargo.toml
index b2874c683..191577b5c 100644
--- a/embassy-net-ppp/Cargo.toml
+++ b/embassy-net-ppp/Cargo.toml
@@ -18,7 +18,7 @@ log = { version = "0.4.14", optional = true }
18embedded-io-async = { version = "0.5.0" } 18embedded-io-async = { version = "0.5.0" }
19embassy-net-driver-channel = { version = "0.1.0", path = "../embassy-net-driver-channel" } 19embassy-net-driver-channel = { version = "0.1.0", path = "../embassy-net-driver-channel" }
20embassy-futures = { version = "0.1.0", path = "../embassy-futures" } 20embassy-futures = { version = "0.1.0", path = "../embassy-futures" }
21ppproto = { version = "0.1.1"} 21ppproto = { version = "0.1.2"}
22embassy-sync = { version = "0.2.0", path = "../embassy-sync" } 22embassy-sync = { version = "0.2.0", path = "../embassy-sync" }
23 23
24[package.metadata.embassy_docs] 24[package.metadata.embassy_docs]
diff --git a/embassy-net-ppp/src/lib.rs b/embassy-net-ppp/src/lib.rs
index ca87fbaea..66496ee0a 100644
--- a/embassy-net-ppp/src/lib.rs
+++ b/embassy-net-ppp/src/lib.rs
@@ -53,6 +53,8 @@ pub enum RunError<E> {
53 WriteZero, 53 WriteZero,
54 /// Writing to the serial got EOF. 54 /// Writing to the serial got EOF.
55 Eof, 55 Eof,
56 /// PPP protocol was terminated by the peer
57 Terminated,
56} 58}
57 59
58impl<E> From<WriteAllError<E>> for RunError<E> { 60impl<E> From<WriteAllError<E>> for RunError<E> {
@@ -128,6 +130,9 @@ impl<'d> Runner<'d> {
128 130
129 let status = ppp.status(); 131 let status = ppp.status();
130 match status.phase { 132 match status.phase {
133 ppproto::Phase::Dead => {
134 return Err(RunError::Terminated);
135 }
131 ppproto::Phase::Open => { 136 ppproto::Phase::Open => {
132 if !was_up { 137 if !was_up {
133 on_ipv4_up(status.ipv4.unwrap()); 138 on_ipv4_up(status.ipv4.unwrap());