aboutsummaryrefslogtreecommitdiff
path: root/src/lib.rs
diff options
context:
space:
mode:
authorIstvan Ruzman <istvan@ruzman.eu>2019-12-17 21:44:05 +0100
committerIstvan Ruzman <istvan@ruzman.eu>2019-12-17 21:44:05 +0100
commite328aa9b17cc10caec5cf632062d49d50cbc435c (patch)
treed0e96b12280f17597f01a04db89da28ef9bb2840 /src/lib.rs
parentea8cbf5a153f2612da906a579bef70fbe5420175 (diff)
restructure code and introduce builders
before the structs used a `&mut` directly, this was kind of unflexible. The code is changed to use builders for the `mutable` part. Parsing can only be done on the immutable struct versions.
Diffstat (limited to 'src/lib.rs')
-rw-r--r--src/lib.rs30
1 files changed, 17 insertions, 13 deletions
diff --git a/src/lib.rs b/src/lib.rs
index de1015e..823838d 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -4,10 +4,10 @@ pub mod socket;
pub use socket::Socket;
pub mod header;
-pub use header::{Code, Header};
+pub use header::{Code, Header, HeaderBuilder};
pub mod packet;
-pub use packet::Packet;
+pub use packet::{Packet, PacketBuilder};
pub mod error;
pub mod eth;
@@ -29,7 +29,7 @@ mod tests {
let mut receive_buffer = [0u8; 1450];
let mut buffer = [0u8; 1450];
- let mut packet = Packet::new_discovery_packet(
+ let mut packet = PacketBuilder::new_discovery_packet(
&mut buffer[..],
[0xfe, 0xb9, 0x04, 0x2a, 0xb2, 0x35],
[0xff, 0xff, 0xff, 0xff, 0xff, 0xff],
@@ -37,15 +37,19 @@ mod tests {
.unwrap();
{
- let pppoe_header = packet.pppoe_header_mut();
+ let pppoe_header = packet.pppoe_header();
pppoe_header.add_tag(Tag::PppMaxMtu(2000)).unwrap();
pppoe_header.add_tag(Tag::ServiceName(b"\0")).unwrap();
pppoe_header.add_tag(Tag::RelaySessionId(b"abc")).unwrap();
- pppoe_header.add_tag(Tag::HostUniq(b"abcanretadi\0arnedt")).unwrap();
- pppoe_header.add_vendor_tag_with_callback(|buffer| {
- Tr101Information::with_both_ids("circuit", "remoteid")
- .and_then(|tr101| tr101.write(buffer))
- }).unwrap();
+ pppoe_header
+ .add_tag(Tag::HostUniq(b"abcanretadi\0arnedt"))
+ .unwrap();
+ pppoe_header
+ .add_vendor_tag_with_callback(|buffer| {
+ Tr101Information::with_both_ids("circuit", "remoteid")
+ .and_then(|tr101| tr101.write(buffer))
+ })
+ .unwrap();
pppoe_header.add_tag(Tag::EndOfList).unwrap();
}
@@ -53,12 +57,12 @@ mod tests {
assert!(ret.is_ok());
let len = sock.recv(&mut receive_buffer[..]).unwrap();
- let pado = Packet::from_buffer(&mut receive_buffer[..len]).unwrap();
+ let pado = Packet::with_buffer(&mut receive_buffer[..len]).unwrap();
{
let dst = pado.ethernet_header().src_address();
- packet.ethernet_header_mut().set_dst_address(dst);
- let pppoe_header = packet.pppoe_header_mut();
+ packet.ethernet_header().set_dst_address(dst);
+ let pppoe_header = packet.pppoe_header();
pppoe_header.set_code(Code::Padr);
pppoe_header.clear_eol();
@@ -74,6 +78,6 @@ mod tests {
let ret = sock.send(packet.as_bytes());
assert!(ret.is_ok());
- let len = sock.recv(&mut receive_buffer[..]).unwrap();
+ let _len = sock.recv(&mut receive_buffer[..]).unwrap();
}
}