aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHimbeerserverDE <himbeerserverde@gmail.com>2023-03-11 13:03:26 +0100
committerHimbeerserverDE <himbeerserverde@gmail.com>2023-03-11 13:03:26 +0100
commitdfeaefb5737c3e06c45a2a4e7537922d07bffdbd (patch)
tree38c856fc68da793ad98db4cdd3c7e8646435c3a8
parentc23982983bea3762a6818f13ba4aa0c661dc890c (diff)
fix lcp configuration-ack construction, namely size calculation
-rw-r--r--Cargo.lock4
-rw-r--r--src/client.rs15
2 files changed, 11 insertions, 8 deletions
diff --git a/Cargo.lock b/Cargo.lock
index 7f66e2c..0704472 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -230,7 +230,7 @@ checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099"
[[package]]
name = "pppoe"
version = "0.1.0"
-source = "git+https://github.com/rsdsl/pppoe-rs#ed1e3c720940bc0a4f592a75d9e1269a04e4f460"
+source = "git+https://github.com/rsdsl/pppoe-rs#6be94b66f0825b32cd81be546af1a70feb6b65e7"
dependencies = [
"byteorder",
"libc",
@@ -241,7 +241,7 @@ dependencies = [
[[package]]
name = "pppoe-sys"
version = "0.1.0"
-source = "git+https://github.com/rsdsl/pppoe-rs#ed1e3c720940bc0a4f592a75d9e1269a04e4f460"
+source = "git+https://github.com/rsdsl/pppoe-rs#6be94b66f0825b32cd81be546af1a70feb6b65e7"
dependencies = [
"bindgen",
"cc",
diff --git a/src/client.rs b/src/client.rs
index f1d5fda..47cec16 100644
--- a/src/client.rs
+++ b/src/client.rs
@@ -1,6 +1,5 @@
use crate::error::{Error, Result};
-use std::cmp::min;
use std::num::NonZeroU16;
use std::sync::{Arc, Mutex};
use std::thread;
@@ -166,12 +165,16 @@ impl Client {
println!("received configuration request, options: {:?}", opts);
- let mut ack = [0; 1024];
- let limit = min(ack.len() - 26, lcp.payload().len());
+ let limit = lcp.payload().len();
+
+ let mut ack = Vec::new();
+ ack.resize(14 + 6 + 2 + 4 + 2 * limit, 0);
+
+ let ack = ack.as_mut_slice();
ack[26..26 + limit].copy_from_slice(lcp.payload());
pppoe::lcp::HeaderBuilder::create_configure_ack(
- &mut ack[22..],
+ &mut ack[22..26 + limit],
lcp.identifier(),
)?;
@@ -185,8 +188,8 @@ impl Client {
HeaderBuilder::create_ppp(&mut ack[14..], session)?;
- self.new_session_packet(remote_mac, &mut ack)?;
- self.send(&ack)?;
+ self.new_session_packet(remote_mac, ack)?;
+ self.send(ack)?;
println!("ackknowledged configuration");
Ok(())