Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
17f1cec
Changed vlan to link_exts
JulianSchmid Mar 23, 2025
9f42f25
Add vlan & vlan id methods for backwards compat
JulianSchmid Mar 23, 2025
36de795
Add tests for further code coverage
JulianSchmid Mar 23, 2025
89d58d8
Add tests for further code coverage
JulianSchmid Mar 23, 2025
1031875
Add intial MACsec parsing implementation
JulianSchmid Mar 24, 2025
43395d0
Reworked macsec header
JulianSchmid Mar 25, 2025
26eed4c
Add missing macsec files
JulianSchmid Mar 25, 2025
fcd8b77
Added macsec to LinkExts
JulianSchmid Mar 25, 2025
ce03d68
Add macsec support fo PacketHeaders & SlicedPacket
JulianSchmid Mar 25, 2025
ac1f02a
Added lax macsec parsing
JulianSchmid Apr 6, 2025
cc0bd62
Correct macsec impl & add tests
JulianSchmid Apr 8, 2025
147e153
Extend tests
JulianSchmid Apr 19, 2025
9a931d0
Fix bug in NetHeader::try_set_next_headers & more tests
JulianSchmid Apr 19, 2025
24bbb10
Fixed typos & added more tests
JulianSchmid Apr 20, 2025
89397b2
Further typo fixes
JulianSchmid Apr 20, 2025
5a548bf
Resolved clippy warnings
JulianSchmid Apr 20, 2025
4498a5c
Update index of documentation, tests & placholder for read
JulianSchmid Apr 20, 2025
16a80d5
Add MacsecHeader::read implementation & tests
JulianSchmid Apr 20, 2025
edcb98e
Extend linux sll tests
JulianSchmid Apr 20, 2025
5983677
Add getter test
JulianSchmid Apr 20, 2025
254851f
Further tests
JulianSchmid Apr 20, 2025
991569a
Removed unused double vlan errors
JulianSchmid Apr 20, 2025
2034c52
Additional tests
JulianSchmid Apr 20, 2025
36af9d9
Additional tests
JulianSchmid Apr 20, 2025
2767d02
Adapted test for coverage
JulianSchmid Apr 20, 2025
cb585ae
Adapted test for coverage
JulianSchmid Apr 20, 2025
941970a
Fix test
JulianSchmid Apr 20, 2025
1ccaf44
Adapted test for coverage
JulianSchmid Apr 20, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 12 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ A zero allocation supporting library for parsing & writing a bunch of packet bas
Currently supported are:
* Ethernet II
* IEEE 802.1Q VLAN Tagging Header
* MACsec (IEEE 802.1AE)
* ARP
* IPv4
* IPv6 (supporting the most common extension headers, but not all)
Expand Down Expand Up @@ -49,11 +50,11 @@ match SlicedPacket::from_ethernet(&packet) {
Err(value) => println!("Err {:?}", value),
Ok(value) => {
println!("link: {:?}", value.link);
println!("vlan: {:?}", value.vlan);
println!("link_exts: {:?}", value.link_exts); // contains vlan & macsec
println!("net: {:?}", value.net); // contains ip & arp
println!("transport: {:?}", value.transport);
}
}
};
```
This is the faster option if your code is not interested in all fields of all the headers. It is a good choice if you just want filter or find packets based on a subset of the headers and/or their fields.

Expand All @@ -77,11 +78,11 @@ match PacketHeaders::from_ethernet_slice(&packet) {
Err(value) => println!("Err {:?}", value),
Ok(value) => {
println!("link: {:?}", value.link);
println!("vlan: {:?}", value.vlan);
println!("link_exts: {:?}", value.link_exts); // contains vlan & macsec
println!("net: {:?}", value.net); // contains ip & arp
println!("transport: {:?}", value.transport);
}
}
};
```
This option is slower then slicing when only few fields are accessed. But it can be the faster option or useful if you are interested in most fields anyways or if you want to re-serialize the headers with modified values.

Expand All @@ -103,7 +104,8 @@ It is also possible to only slice one packet layer:

* [`Ethernet2Slice::from_slice_without_fcs`](https://docs.rs/etherparse/~0/etherparse/struct.Ethernet2Slice.html#method.from_slice_without_fcs) & [`Ethernet2Slice::from_slice_with_crc32_fcs`](https://docs.rs/etherparse/~0/etherparse/struct.Ethernet2Slice.html#method.from_slice_with_crc32_fcs)
* [`LinuxSllSlice::from_slice`](https://docs.rs/etherparse/~0/etherparse/struct.LinuxSllSlice.html#method.from_slice)
* [`SingleVlanSlice::from_slice`](https://docs.rs/etherparse/~0/etherparse/struct.SingleVlanSlice.html#method.from_slice) & [`DoubleVlanSlice::from_slice`](https://docs.rs/etherparse/~0/etherparse/struct.DoubleVlanSlice.html#method.from_slice)
* [`SingleVlanSlice::from_slice`](https://docs.rs/etherparse/~0/etherparse/struct.SingleVlanSlice.html#method.from_slice)
* [`MacsecSlice::from_slice`](https://docs.rs/etherparse/~0/etherparse/struct.MacsecSlice.html#method.from_slice)
* [`ArpPacketSlice::from_slice`](https://docs.rs/etherparse/~0/etherparse/struct.ArpPacketSlice.html#method.from_slice)
* [`IpSlice::from_slice`](https://docs.rs/etherparse/~0/etherparse/enum.IpSlice.html#method.from_slice) & [`LaxIpSlice::from_slice`](https://docs.rs/etherparse/~0/etherparse/enum.LaxIpSlice.html#method.from_slice)
* [`Ipv4Slice::from_slice`](https://docs.rs/etherparse/~0/etherparse/struct.Ipv4Slice.html#method.from_slice) & [`LaxIpv4Slice::from_slice`](https://docs.rs/etherparse/~0/etherparse/struct.LaxIpv4Slice.html#method.from_slice)
Expand All @@ -126,7 +128,7 @@ following \[NAME\]HeaderSlice.from_slice methods, if you want to just slice the
* [`Ethernet2HeaderSlice::from_slice`](https://docs.rs/etherparse/~0/etherparse/struct.Ethernet2HeaderSlice.html#method.from_slice)
* [`LinuxSllHeaderSlice::from_slice`](https://docs.rs/etherparse/~0/etherparse/struct.LinuxSllHeaderSlice.html#method.from_slice)
* [`SingleVlanHeaderSlice::from_slice`](https://docs.rs/etherparse/~0/etherparse/struct.SingleVlanHeaderSlice.html#method.from_slice)
* [`DoubleVlanHeaderSlice::from_slice`](https://docs.rs/etherparse/~0/etherparse/struct.DoubleVlanHeaderSlice.html#method.from_slice)
* [`MacsecHeaderSlice::from_slice`](https://docs.rs/etherparse/~0/etherparse/struct.MacsecHeaderSlice.html#method.from_slice)
* [`Ipv4HeaderSlice::from_slice`](https://docs.rs/etherparse/~0/etherparse/struct.Ipv4HeaderSlice.html#method.from_slice)
* [`Ipv4ExtensionsSlice::from_slice`](https://docs.rs/etherparse/~0/etherparse/struct.Ipv4ExtensionsSlice.html#method.from_slice)
* [`Ipv6HeaderSlice::from_slice`](https://docs.rs/etherparse/~0/etherparse/struct.Ipv6HeaderSlice.html#method.from_slice)
Expand All @@ -142,7 +144,7 @@ And for deserialization into the corresponding header structs have a look at:
* [`Ethernet2Header::read`](https://docs.rs/etherparse/~0/etherparse/struct.Ethernet2Header.html#method.read) & [`Ethernet2Header::from_slice`](https://docs.rs/etherparse/~0/etherparse/struct.Ethernet2Header.html#method.from_slice)
* [`LinuxSllHeader::read`](https://docs.rs/etherparse/~0/etherparse/struct.LinuxSllHeader.html#method.read) & [`LinuxSllHeader::from_slice`](https://docs.rs/etherparse/~0/etherparse/struct.LinuxSllHeader.html#method.from_slice)
* [`SingleVlanHeader::read`](https://docs.rs/etherparse/~0/etherparse/struct.SingleVlanHeader.html#method.read) & [`SingleVlanHeader::from_slice`](https://docs.rs/etherparse/~0/etherparse/struct.SingleVlanHeader.html#method.from_slice)
* [`DoubleVlanHeader::read`](https://docs.rs/etherparse/~0/etherparse/struct.DoubleVlanHeader.html#method.read) & [`DoubleVlanHeader::from_slice`](https://docs.rs/etherparse/~0/etherparse/struct.DoubleVlanHeader.html#method.from_slice)
* [`MacsecHeader::read`](https://docs.rs/etherparse/~0/etherparse/struct.MacsecHeader.html#method.read) & [`MacsecHeader::from_slice`](https://docs.rs/etherparse/~0/etherparse/struct.MacsecHeader.html#method.from_slice)
* [`ArpPacket::read`](https://docs.rs/etherparse/~0/etherparse/struct.ArpPacket.html#method.read) & [`ArpPacket::from_slice`](https://docs.rs/etherparse/~0/etherparse/struct.ArpPacket.html#method.from_slice)
* [`IpHeaders::read`](https://docs.rs/etherparse/~0/etherparse/enum.IpHeaders.html#method.read) & [`IpHeaders::from_slice`](https://docs.rs/etherparse/~0/etherparse/enum.IpHeaders.html#method.from_slice)
* [`Ipv4Header::read`](https://docs.rs/etherparse/~0/etherparse/struct.Ipv4Header.html#method.read) & [`Ipv4Header::from_slice`](https://docs.rs/etherparse/~0/etherparse/struct.Ipv4Header.html#method.from_slice)
Expand Down Expand Up @@ -200,7 +202,7 @@ Read the documentations of the different methods for a more details:
* [`Ethernet2Header::to_bytes`](https://docs.rs/etherparse/~0/etherparse/struct.Ethernet2Header.html#method.to_bytes) & [`Ethernet2Header::write`](https://docs.rs/etherparse/~0/etherparse/struct.Ethernet2Header.html#method.write)
* [`LinuxSllHeader::to_bytes`](https://docs.rs/etherparse/~0/etherparse/struct.LinuxSllHeader.html#method.to_bytes) & [`LinuxSllHeader::write`](https://docs.rs/etherparse/~0/etherparse/struct.LinuxSllHeader.html#method.write)
* [`SingleVlanHeader::to_bytes`](https://docs.rs/etherparse/~0/etherparse/struct.SingleVlanHeader.html#method.to_bytes) & [`SingleVlanHeader::write`](https://docs.rs/etherparse/~0/etherparse/struct.SingleVlanHeader.html#method.write)
* [`DoubleVlanHeader::to_bytes`](https://docs.rs/etherparse/~0/etherparse/struct.DoubleVlanHeader.html#method.to_bytes) & [`DoubleVlanHeader::write`](https://docs.rs/etherparse/~0/etherparse/struct.DoubleVlanHeader.html#method.write)
* [`MacsecHeader::to_bytes`](https://docs.rs/etherparse/~0/etherparse/struct.MacsecHeader.html#method.to_bytes) & [`MacsecHeader::write`](https://docs.rs/etherparse/~0/etherparse/struct.MacsecHeader.html#method.write)
* [`ArpPacket::to_bytes`](https://docs.rs/etherparse/~0/etherparse/struct.ArpPacket.html#method.to_bytes) & [`ArpPacket::write`](https://docs.rs/etherparse/~0/etherparse/struct.ArpPacket.html#method.write)
* [`ArpEthIpv4Packet::to_bytes`](https://docs.rs/etherparse/~0/etherparse/struct.ArpEthIpv4Packet.html#method.to_bytes)
* [`Ipv4Header::to_bytes`](https://docs.rs/etherparse/~0/etherparse/struct.Ipv4Header.html#method.to_bytes) & [`Ipv4Header::write`](https://docs.rs/etherparse/~0/etherparse/struct.Ipv4Header.html#method.write) & [`Ipv4Header::write_raw`](https://docs.rs/etherparse/~0/etherparse/struct.Ipv4Header.html#method.write_raw)
Expand Down Expand Up @@ -245,6 +247,8 @@ Read the documentations of the different methods for a more details:
* [Linux packet types definitions](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/plain/include/uapi/linux/if_packet.h?id=e33c4963bf536900f917fb65a687724d5539bc21) on the Linux kernel
* Address Resolution Protocol (ARP) Parameters [Harware Types](https://www.iana.org/assignments/arp-parameters/arp-parameters.xhtml#arp-parameters-2)
* [Arp hardware identifiers definitions](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/plain/include/uapi/linux/if_arp.h?id=e33c4963bf536900f917fb65a687724d5539bc21) on the Linux kernel
* ["IEEE Standard for Local and metropolitan area networks-Media Access Control (MAC) Security," in IEEE Std 802.1AE-2018 (Revision of IEEE Std 802.1AE-2006) , vol., no., pp.1-239, 26 Dec. 2018, doi: 10.1109/IEEESTD.2018.8585421.](https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=8585421&isnumber=8585420)
* ["IEEE Standard for Local and metropolitan area networks--Media Access Control (MAC) Security Corrigendum 1: Tag Control Information Figure," in IEEE Std 802.1AE-2018/Cor 1-2020 (Corrigendum to IEEE Std 802.1AE-2018) , vol., no., pp.1-14, 21 July 2020, doi: 10.1109/IEEESTD.2020.9144679.](https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9144679&isnumber=9144678)

## License
Licensed under either of Apache License, Version 2.0 or MIT license at your option. The corresponding license texts can be found in the LICENSE-APACHE file and the LICENSE-MIT file.
Expand Down
19 changes: 8 additions & 11 deletions etherparse/examples/read_by_slicing.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ fn main() {
)
.udp(
21, //source port
1234, //desitnation port
1234, //destination port
);

//payload of the udp packet
Expand All @@ -31,12 +31,12 @@ fn main() {
//slice the packet into the different header components
let sliced_packet = SlicedPacket::from_ethernet(&serialized);

//print some informations about the sliced packet
//print some information about the sliced packet
match sliced_packet {
Err(value) => println!("Err {:?}", value),
Ok(value) => {
println!("Ok");
use etherparse::{LinkSlice::*, NetSlice::*, TransportSlice::*, VlanSlice::*};
use etherparse::{LinkExtSlice::*, LinkSlice::*, NetSlice::*, TransportSlice::*};

match value.link {
Some(Ethernet2(value)) => println!(
Expand All @@ -61,14 +61,11 @@ fn main() {
None => {}
}

match value.vlan {
Some(SingleVlan(value)) => println!(" SingleVlan {:?}", value.vlan_identifier()),
Some(DoubleVlan(value)) => println!(
" DoubleVlan {:?}, {:?}",
value.outer().vlan_identifier(),
value.inner().vlan_identifier()
),
None => {}
for link_ext in &value.link_exts {
match link_ext {
Vlan(s) => println!(" Vlan {:?}", s.vlan_identifier()),
Macsec(m) => println!(" Macsec {:?}", m.header.ptype()),
}
}

match value.net {
Expand Down
1 change: 1 addition & 0 deletions etherparse/proptest-regressions/compositions_tests.txt

Large diffs are not rendered by default.

7 changes: 7 additions & 0 deletions etherparse/proptest-regressions/link/lax_link_ext_slice.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Seeds for failure cases proptest has generated in the past. It is
# automatically read and these particular cases re-run before any
# novel cases are generated.
#
# It is recommended to check this file in to source control so that
# everyone who runs the test benefits from these saved cases.
cc d6c35d4295255dbddecc82e6fa137d7a138d869cdade93165b972bd23217edfa # shrinks to vlan = SingleVlanHeader { pcp: VlanPcp(0), drop_eligible_indicator: false, vlan_id: VlanId(0), ether_type: 0x0000 }, macsec = MacsecHeader { ptype: Unmodified(0x0000), endstation_id: false, scb: false, an: MacsecAn(0), short_len: MacsecShortLen(0), packet_nr: 0, sci: None }, ethertype = 0x0000
7 changes: 7 additions & 0 deletions etherparse/proptest-regressions/link/lax_macsec_slice.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Seeds for failure cases proptest has generated in the past. It is
# automatically read and these particular cases re-run before any
# novel cases are generated.
#
# It is recommended to check this file in to source control so that
# everyone who runs the test benefits from these saved cases.
cc 445d2cb2bb5b24a1094bb52f109956b7608ba2910bdd11bb8e32115976398660 # shrinks to macsec = MacsecHeader { ptype: Unmodified(0x0000), endstation_id: false, scb: false, an: MacsecAn(0), short_len: MacsecShortLen(0), packet_nr: 0, sci: None }
7 changes: 7 additions & 0 deletions etherparse/proptest-regressions/link/link_ext_slice.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Seeds for failure cases proptest has generated in the past. It is
# automatically read and these particular cases re-run before any
# novel cases are generated.
#
# It is recommended to check this file in to source control so that
# everyone who runs the test benefits from these saved cases.
cc b9680cab0923704b74563ac762bf321510faf67286af3ba221f6ca1537dd69b9 # shrinks to vlan = SingleVlanHeader { pcp: VlanPcp(0), drop_eligible_indicator: false, vlan_id: VlanId(0), ether_type: 0x0000 }, macsec = MacsecHeader { ptype: Unmodified(0x0000), endstation_id: false, scb: false, an: MacsecAn(0), short_len: MacsecShortLen(0), packet_nr: 0, sci: Some(0) }, ether_type = 0x0000
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Seeds for failure cases proptest has generated in the past. It is
# automatically read and these particular cases re-run before any
# novel cases are generated.
#
# It is recommended to check this file in to source control so that
# everyone who runs the test benefits from these saved cases.
cc e14e4c7280be51164b675912e97895f4919b07792e7fd41ab8c9bad5356465e1 # shrinks to input = LinuxSllHeader { packet_type: 0 (Sent to us), arp_hrd_type: 824 (Netlink header), sender_address_valid_length: 0, sender_address: [0, 0, 0, 0, 0, 0, 0, 0], protocol_type: NetlinkProtocolType(0) }
7 changes: 7 additions & 0 deletions etherparse/proptest-regressions/link/mac_sec_an.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Seeds for failure cases proptest has generated in the past. It is
# automatically read and these particular cases re-run before any
# novel cases are generated.
#
# It is recommended to check this file in to source control so that
# everyone who runs the test benefits from these saved cases.
cc bede3366c70950fac8a449294adc500d9f5ee5c956c66896ab6ea14c1b0bef45 # shrinks to valid_value = 4
8 changes: 8 additions & 0 deletions etherparse/proptest-regressions/link/mac_sec_header.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# Seeds for failure cases proptest has generated in the past. It is
# automatically read and these particular cases re-run before any
# novel cases are generated.
#
# It is recommended to check this file in to source control so that
# everyone who runs the test benefits from these saved cases.
cc 66ab8c1dc7f1c333bd90c5289bdef647537372b1b9ce894d34b3a23422abc54f # shrinks to header = MacSecHeader { ptype: Unmodified(0x0001), endstation_id: false, scb: false, an: MacSecAn(0), short_len: MacSecShortLen(0), packet_nr: 0, sci: None }
cc 604f124b27176f7ff3c97f86d16e36928f51f7daa79c30eea702e5248f9f2abe # shrinks to header = MacSecHeader { ptype: Unmodified(0x0001), endstation_id: false, scb: false, an: MacSecAn(0), short_len: MacSecShortLen(0), packet_nr: 0, sci: None }
8 changes: 8 additions & 0 deletions etherparse/proptest-regressions/link/mac_sec_sl.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# Seeds for failure cases proptest has generated in the past. It is
# automatically read and these particular cases re-run before any
# novel cases are generated.
#
# It is recommended to check this file in to source control so that
# everyone who runs the test benefits from these saved cases.
cc f970f91fec10c3eed54d6eb268b9e5cf6e32e19a5dff1586bf78ca99362a7b23 # shrinks to valid_value = 0, invalid_value = 8
cc 614402f8cc83702195d27bfee2bc8b56aaf904f8dd858773cb9f9d6c093d426a # shrinks to valid_value = 0, invalid_value = 8
9 changes: 9 additions & 0 deletions etherparse/proptest-regressions/link/macsec_header.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Seeds for failure cases proptest has generated in the past. It is
# automatically read and these particular cases re-run before any
# novel cases are generated.
#
# It is recommended to check this file in to source control so that
# everyone who runs the test benefits from these saved cases.
cc d15fc6bd85097c58f9ba998fc10940a19ab7307798cb469b426460228be06ab2 # shrinks to header = MacsecHeader { ptype: Unmodified(0x0000), endstation_id: false, scb: false, an: MacsecAn(0), short_len: MacsecShortLen(0), packet_nr: 0, sci: None }, ether_type = 0x0000, valid_unmodified_len = 2, invalid_unmodified_len_0 = 0, invalid_unmodified_len_1 = 64, valid_modified_len = 1, invalid_modified_len = 64
cc 5c365eb47d1c5896957cd70b55708aab545924c84dba5de6d1d8ae7855a850f4 # shrinks to header = MacsecHeader { ptype: Unmodified(0x0000), endstation_id: false, scb: false, an: MacsecAn(0), short_len: MacsecShortLen(1), packet_nr: 0, sci: None }
cc f5537f4646b939dfa8168d93a1be25c58d326acda8604af3ae382fbf14fd0a2f # shrinks to header = MacsecHeader { ptype: Unmodified(0x0000), endstation_id: false, scb: false, an: MacsecAn(0), short_len: MacsecShortLen(0), packet_nr: 0, sci: None }, ether_type = 0x0000, valid_unmodified_len = 62, invalid_unmodified_len = 64, valid_modified_len = 1, invalid_modified_len = 64
7 changes: 7 additions & 0 deletions etherparse/proptest-regressions/link/macsec_header_slice.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Seeds for failure cases proptest has generated in the past. It is
# automatically read and these particular cases re-run before any
# novel cases are generated.
#
# It is recommended to check this file in to source control so that
# everyone who runs the test benefits from these saved cases.
cc 4a82fa88308d823cc3bb0d7da35d367c7475990dc8daaa4c1a5455445ccd41ff # shrinks to macsec = MacsecHeader { ptype: Unmodified(0x0000), endstation_id: false, scb: false, an: MacsecAn(0), short_len: MacsecShortLen(0), packet_nr: 0, sci: None }, ethertype = 0x0000, sci = 0
7 changes: 7 additions & 0 deletions etherparse/proptest-regressions/link/macsec_slice.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Seeds for failure cases proptest has generated in the past. It is
# automatically read and these particular cases re-run before any
# novel cases are generated.
#
# It is recommended to check this file in to source control so that
# everyone who runs the test benefits from these saved cases.
cc 32e7fe8e0e32be55152e2d893aff9099856ba4f19b1babb9a767fb4b44979167 # shrinks to macsec = MacsecHeader { ptype: Unmodified(0x0000), endstation_id: false, scb: false, an: MacsecAn(0), short_len: MacsecShortLen(0), packet_nr: 0, sci: None }, ethertype = 0x0000, non_zero_sl = 1
7 changes: 7 additions & 0 deletions etherparse/proptest-regressions/link/vlan_slice.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Seeds for failure cases proptest has generated in the past. It is
# automatically read and these particular cases re-run before any
# novel cases are generated.
#
# It is recommended to check this file in to source control so that
# everyone who runs the test benefits from these saved cases.
cc dadc8babb24c7b9b8eaf2e0c4e75312dd9704c267a33c8a68906ccec14fa8b92 # shrinks to single = SingleVlanHeader { pcp: VlanPcp(0), drop_eligible_indicator: false, vlan_id: VlanId(0), ether_type: 0x0000 }, double = DoubleVlanHeader { outer: SingleVlanHeader { pcp: VlanPcp(0), drop_eligible_indicator: false, vlan_id: VlanId(61), ether_type: 0x88A8 (IEEE Std 802.1Q - Service VLAN tag identifier (S-Tag)) }, inner: SingleVlanHeader { pcp: VlanPcp(2), drop_eligible_indicator: true, vlan_id: VlanId(472), ether_type: 0x0001 } }
Loading
Loading