Skip to content

Commit 0d5af99

Browse files
committed
uefi-test-runner: SNP: use smoltcp to UDP packet
Properly deconstruct the response. This improves the maintainability of this test and to better understand what is going on.
1 parent e99f02b commit 0d5af99

File tree

3 files changed

+59
-1
lines changed

3 files changed

+59
-1
lines changed

Cargo.lock

Lines changed: 45 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

uefi-test-runner/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ edition = "2024"
88
[dependencies]
99
uefi-raw = { path = "../uefi-raw" }
1010
uefi = { path = "../uefi", features = ["alloc", "global_allocator", "panic_handler", "logger", "qemu", "log-debugcon"] }
11+
smoltcp = { version = "0.12.0", default-features = false, features = ["medium-ethernet", "proto-ipv4", "socket-udp"] }
1112

1213
log.workspace = true
1314

uefi-test-runner/src/proto/network/snp.rs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,13 @@ fn receive(simple_network: &mut SimpleNetwork, buffer: &mut [u8]) -> uefi::Resul
7777
{
7878
// UEFI reports proper DST MAC
7979
assert_eq!(recv_dst_mac.0[0..6], EXPECTED_MAC);
80+
81+
// Ethernet frame header reports proper DST MAC
82+
let recv_frame = smoltcp::wire::EthernetFrame::new_checked(&buffer).unwrap();
83+
assert_eq!(
84+
recv_frame.dst_addr(),
85+
smoltcp::wire::EthernetAddress::from_bytes(&EXPECTED_MAC)
86+
);
8087
}
8188

8289
// Ensure that we do not accidentally get an ARP packet, which we
@@ -194,7 +201,12 @@ pub fn test() {
194201
debug!("Reply has {n} bytes");
195202

196203
// Check payload in UDP packet that was reversed by our EchoService.
197-
assert_eq!(buffer[42..47], [4, 4, 3, 2, 1]);
204+
{
205+
let recv_frame = smoltcp::wire::EthernetFrame::new_checked(&buffer).unwrap();
206+
let recv_ipv4 = smoltcp::wire::Ipv4Packet::new_checked(recv_frame.payload()).unwrap();
207+
let udp_packet = smoltcp::wire::UdpPacket::new_checked(recv_ipv4.payload()).unwrap();
208+
assert_eq!(udp_packet.payload(), &[4, 4, 3, 2, 1]);
209+
}
198210

199211
// Get stats
200212
let res = simple_network.collect_statistics();

0 commit comments

Comments
 (0)