Skip to content

Commit

Permalink
add test for any-ip-for-arp feature
Browse files Browse the repository at this point in the history
  • Loading branch information
thvdveld committed Jan 8, 2024
1 parent 4e4eb0d commit b2c7b44
Showing 1 changed file with 58 additions and 0 deletions.
58 changes: 58 additions & 0 deletions src/iface/interface/tests/ipv4.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,63 @@
use super::*;

#[rstest]
#[case(Medium::Ethernet)]
#[cfg(feature = "medium-ethernet")]
fn test_any_ip_accept_arp(#[case] medium: Medium) {
#[allow(non_snake_case)]
fn ETHERNET_FRAME_ARP() -> Vec<u8> {
let ethernet_repr = EthernetRepr {
src_addr: EthernetAddress::from_bytes(&[0x02, 0x02, 0x02, 0x02, 0x02, 0x03]),
dst_addr: EthernetAddress::from_bytes(&[0x02, 0x02, 0x02, 0x02, 0x02, 0x02]),
ethertype: EthernetProtocol::Arp,
};
let frame_repr = ArpRepr::EthernetIpv4 {
operation: ArpOperation::Request,
source_hardware_addr: EthernetAddress::from_bytes(&[
0x02, 0x02, 0x02, 0x02, 0x02, 0x03,
]),
source_protocol_addr: Ipv4Address::from_bytes(&[192, 168, 1, 2]),
target_hardware_addr: EthernetAddress::from_bytes(&[
0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
]),
target_protocol_addr: Ipv4Address::from_bytes(&[192, 168, 1, 3]),
};
let mut buffer = vec![0u8; ethernet_repr.buffer_len() + frame_repr.buffer_len()];
let mut frame = EthernetFrame::new_unchecked(&mut buffer[..]);
ethernet_repr.emit(&mut frame);

let mut frame = ArpPacket::new_unchecked(&mut buffer[ethernet_repr.buffer_len()..]);
frame_repr.emit(&mut frame);

buffer
}

let (mut iface, mut sockets, _) = setup(medium);

assert!(iface
.inner
.process_ethernet(
&mut sockets,
PacketMeta::default(),
&ETHERNET_FRAME_ARP(),
&mut iface.fragments,
)
.is_none());

// Accept any IP address
iface.set_any_ip(true);

assert!(iface
.inner
.process_ethernet(
&mut sockets,
PacketMeta::default(),
&ETHERNET_FRAME_ARP(),
&mut iface.fragments,
)
.is_some());
}

#[rstest]
#[case(Medium::Ip)]
#[cfg(feature = "medium-ip")]
Expand Down

0 comments on commit b2c7b44

Please sign in to comment.