From f765d19cb534237d5cc23262147f88fafd56e289 Mon Sep 17 00:00:00 2001 From: Gerd Hoffmann Date: Tue, 15 Apr 2025 11:12:12 +0200 Subject: [PATCH 1/5] log ovmf firmware output Signed-off-by: Gerd Hoffmann --- xtask/src/qemu.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/xtask/src/qemu.rs b/xtask/src/qemu.rs index a7e22c934..e197f1b19 100644 --- a/xtask/src/qemu.rs +++ b/xtask/src/qemu.rs @@ -359,6 +359,8 @@ pub fn run_qemu(arch: UefiArch, opt: &QemuOpt) -> Result<()> { if arch == UefiArch::IA32 || arch == UefiArch::X86_64 { cmd.args(["-debugcon", "file:./integration-test-debugcon.log"]); + cmd.args(["-chardev", "file,id=fw,path=./ovmf-firmware-debugcon.log"]); + cmd.args(["-device", "isa-debugcon,chardev=fw,iobase=0x402"]); } // Set the boot menu timeout to zero. On aarch64 in particular this speeds From 9dc2b24eb546d498aff8a2916469272e4dc41544 Mon Sep 17 00:00:00 2001 From: Gerd Hoffmann Date: Wed, 9 Apr 2025 11:41:23 +0200 Subject: [PATCH 2/5] add ip4 config2 protocol Signed-off-by: Gerd Hoffmann --- uefi/src/proto/network/ip4config2.rs | 153 +++++++++++++++++++++++++++ uefi/src/proto/network/mod.rs | 1 + 2 files changed, 154 insertions(+) create mode 100644 uefi/src/proto/network/ip4config2.rs diff --git a/uefi/src/proto/network/ip4config2.rs b/uefi/src/proto/network/ip4config2.rs new file mode 100644 index 000000000..013c659d4 --- /dev/null +++ b/uefi/src/proto/network/ip4config2.rs @@ -0,0 +1,153 @@ +// SPDX-License-Identifier: MIT OR Apache-2.0 + +#![cfg(feature = "alloc")] + +//! IP4 Config2 Protocol. + +use alloc::vec; +use alloc::vec::Vec; +use core::ffi::c_void; + +use uefi::boot::ScopedProtocol; +use uefi::prelude::*; +use uefi::proto::unsafe_protocol; +use uefi::{print, println}; +use uefi_raw::protocol::network::ip4_config2::{ + Ip4Config2DataType, Ip4Config2InterfaceInfo, Ip4Config2Policy, Ip4Config2Protocol, +}; +use uefi_raw::Ipv4Address; + +/// IP4 Config2 [`Protocol`]. Configure IPv4 networking. +/// +/// [`Protocol`]: uefi::proto::Protocol +#[derive(Debug)] +#[unsafe_protocol(Ip4Config2Protocol::GUID)] +pub struct Ip4Config2(pub Ip4Config2Protocol); + +impl Ip4Config2 { + /// Open IP4 Config2 protocol for the given NIC handle. + pub fn new(nic_handle: Handle) -> uefi::Result> { + let protocol; + unsafe { + protocol = boot::open_protocol::( + boot::OpenProtocolParams { + handle: nic_handle, + agent: boot::image_handle(), + controller: None, + }, + boot::OpenProtocolAttributes::GetProtocol, + )?; + } + Ok(protocol) + } + + /// Set configuration data. It is recommended to type-specific set_* helpers instead of calling this directly. + pub fn set_data(&mut self, data_type: Ip4Config2DataType, data: &mut [u8]) -> uefi::Result<()> { + let status = unsafe { + let data_ptr = data.as_mut_ptr().cast::(); + (self.0.set_data)(&mut self.0, data_type, data.len(), data_ptr) + }; + match status { + Status::SUCCESS => Ok(()), + _ => Err(status.into()), + } + } + + /// Get configuration data. It is recommended to type-specific get_* helpers instead of calling this directly. + pub fn get_data(&mut self, data_type: Ip4Config2DataType) -> uefi::Result> { + let mut data_size = 0; + + // call #1: figure return buffer size + let status = unsafe { + let null = core::ptr::null_mut(); + (self.0.get_data)(&mut self.0, data_type, &mut data_size, null) + }; + if status != Status::BUFFER_TOO_SMALL { + return Err(status.into()); + } + + // call #2: get data + let mut data = vec![0; data_size]; + let status = unsafe { + let data_ptr = data.as_mut_ptr().cast::(); + (self.0.get_data)(&mut self.0, data_type, &mut data_size, data_ptr) + }; + match status { + Status::SUCCESS => Ok(data), + _ => Err(status.into()), + } + } + + /// Set config policy (static vs. dhcp). + pub fn set_policy(&mut self, policy: Ip4Config2Policy) -> uefi::Result<()> { + let mut data: [u8; 4] = policy.0.to_ne_bytes(); + self.set_data(Ip4Config2DataType::POLICY, &mut data) + } + + /// Get current interface configuration. + pub fn get_interface_info(&mut self) -> uefi::Result { + let data = self.get_data(Ip4Config2DataType::INTERFACE_INFO)?; + let info: &Ip4Config2InterfaceInfo = + unsafe { &*(data.as_ptr().cast::()) }; + Ok(Ip4Config2InterfaceInfo { + name: info.name, + if_type: info.if_type, + hw_addr_size: info.hw_addr_size, + hw_addr: info.hw_addr, + station_addr: info.station_addr, + subnet_mask: info.subnet_mask, + route_table_size: 0, + route_table: core::ptr::null_mut(), + }) + } + + fn print_info(info: &Ip4Config2InterfaceInfo) { + println!( + "addr v4: {}.{}.{}.{}", + info.station_addr.0[0], + info.station_addr.0[1], + info.station_addr.0[2], + info.station_addr.0[3], + ); + } + + /// Bring up network interface. Does nothing in case the network + /// is already set up. Otherwise turns on DHCP and waits until an + /// IPv4 address has been assigned. Reports progress on the + /// console if verbose is set to true. Returns TIMEOUT error in + /// case DHCP configuration does not finish within 30 seconds. + pub fn ifup(&mut self, verbose: bool) -> uefi::Result<()> { + let no_address = Ipv4Address::default(); + + let info = self.get_interface_info()?; + if info.station_addr != no_address { + if verbose { + print!("Network is already up: "); + Self::print_info(&info); + } + return Ok(()); + } + + if verbose { + print!("DHCP "); + } + self.set_policy(Ip4Config2Policy::DHCP)?; + + for _ in 0..30 { + if verbose { + print!("."); + } + boot::stall(1_000_000); + let info = self.get_interface_info()?; + if info.station_addr != no_address { + if verbose { + print!(" OK: "); + Self::print_info(&info); + } + return Ok(()); + } + } + + Err(Status::TIMEOUT.into()) + } +} diff --git a/uefi/src/proto/network/mod.rs b/uefi/src/proto/network/mod.rs index 3be7885e0..1ef987365 100644 --- a/uefi/src/proto/network/mod.rs +++ b/uefi/src/proto/network/mod.rs @@ -4,6 +4,7 @@ //! //! These protocols can be used to interact with network resources. +pub mod ip4config2; pub mod pxe; pub mod snp; From 8585fef9de553feb57110eedbea2d32e1d5b5ba9 Mon Sep 17 00:00:00 2001 From: Gerd Hoffmann Date: Wed, 9 Apr 2025 09:28:10 +0200 Subject: [PATCH 3/5] add http protocol support Signed-off-by: Gerd Hoffmann --- uefi/src/proto/network/http.rs | 383 +++++++++++++++++++++++++++++++++ uefi/src/proto/network/mod.rs | 1 + 2 files changed, 384 insertions(+) create mode 100644 uefi/src/proto/network/http.rs diff --git a/uefi/src/proto/network/http.rs b/uefi/src/proto/network/http.rs new file mode 100644 index 000000000..c808476e2 --- /dev/null +++ b/uefi/src/proto/network/http.rs @@ -0,0 +1,383 @@ +// SPDX-License-Identifier: MIT OR Apache-2.0 + +#![cfg(feature = "alloc")] + +//! HTTP Protocol. +//! +//! See [`Http`]. + +use alloc::string::String; +use alloc::vec; +use alloc::vec::Vec; +use core::ffi::{c_char, c_void, CStr}; +use core::ptr; +use log::debug; + +use uefi::boot::ScopedProtocol; +use uefi::prelude::*; +use uefi::proto::unsafe_protocol; +use uefi_raw::protocol::driver::ServiceBindingProtocol; +use uefi_raw::protocol::network::http::{ + HttpAccessPoint, HttpConfigData, HttpHeader, HttpMessage, HttpMethod, HttpProtocol, + HttpRequestData, HttpResponseData, HttpStatusCode, HttpToken, HttpV4AccessPoint, HttpVersion, +}; + +/// HTTP [`Protocol`]. Send HTTP Requests. +/// +/// [`Protocol`]: uefi::proto::Protocol +#[derive(Debug)] +#[unsafe_protocol(HttpProtocol::GUID)] +pub struct Http(HttpProtocol); + +impl Http { + /// Receive HTTP Protocol configuration. + pub fn get_mode_data(&mut self, config_data: &mut HttpConfigData) -> uefi::Result<()> { + let status = unsafe { (self.0.get_mode_data)(&mut self.0, config_data) }; + match status { + Status::SUCCESS => Ok(()), + _ => Err(status.into()), + } + } + + /// Configure HTTP Protocol. Must be called before sending HTTP requests. + pub fn configure(&mut self, config_data: &HttpConfigData) -> uefi::Result<()> { + let status = unsafe { (self.0.configure)(&mut self.0, config_data) }; + match status { + Status::SUCCESS => Ok(()), + _ => Err(status.into()), + } + } + + /// Send HTTP request. + pub fn request(&mut self, token: &mut HttpToken) -> uefi::Result<()> { + let status = unsafe { (self.0.request)(&mut self.0, token) }; + match status { + Status::SUCCESS => Ok(()), + _ => Err(status.into()), + } + } + + /// Cancel HTTP request. + pub fn cancel(&mut self, token: &mut HttpToken) -> uefi::Result<()> { + let status = unsafe { (self.0.cancel)(&mut self.0, token) }; + match status { + Status::SUCCESS => Ok(()), + _ => Err(status.into()), + } + } + + /// Receive HTTP response. + pub fn response(&mut self, token: &mut HttpToken) -> uefi::Result<()> { + let status = unsafe { (self.0.response)(&mut self.0, token) }; + match status { + Status::SUCCESS => Ok(()), + _ => Err(status.into()), + } + } + + /// Poll network stack for updates. + pub fn poll(&mut self) -> uefi::Result<()> { + let status = unsafe { (self.0.poll)(&mut self.0) }; + match status { + Status::SUCCESS => Ok(()), + _ => Err(status.into()), + } + } +} + +/// HTTP Service Binding Protocol. +#[derive(Debug)] +#[unsafe_protocol(HttpProtocol::SERVICE_BINDING_GUID)] +pub struct HttpBinding(ServiceBindingProtocol); + +impl HttpBinding { + /// Create HTTP Protocol Handle. + pub fn create_child(&mut self) -> uefi::Result { + let mut c_handle = ptr::null_mut(); + let status; + let handle; + unsafe { + status = (self.0.create_child)(&mut self.0, &mut c_handle); + handle = Handle::from_ptr(c_handle); + }; + match status { + Status::SUCCESS => Ok(handle.unwrap()), + _ => Err(status.into()), + } + } + + /// Destroy HTTP Protocol Handle. + pub fn destroy_child(&mut self, handle: Handle) -> uefi::Result<()> { + let status = unsafe { (self.0.destroy_child)(&mut self.0, handle.as_ptr()) }; + match status { + Status::SUCCESS => Ok(()), + _ => Err(status.into()), + } + } +} + +/// HTTP Response data +#[derive(Debug)] +pub struct HttpHelperResponse { + /// HTTP Status + pub status: HttpStatusCode, + /// HTTP Response Headers + pub headers: Vec<(String, String)>, + /// HTTP Body + pub body: Vec, +} + +/// HTTP Helper, makes using the HTTP protocol more convenient. +#[derive(Debug)] +pub struct HttpHelper { + child_handle: Handle, + binding: ScopedProtocol, + protocol: Option>, +} + +impl HttpHelper { + /// Create new HTTP helper instance for the given NIC handle. + pub fn new(nic_handle: Handle) -> uefi::Result { + let mut binding = unsafe { + boot::open_protocol::( + boot::OpenProtocolParams { + handle: nic_handle, + agent: boot::image_handle(), + controller: None, + }, + boot::OpenProtocolAttributes::GetProtocol, + )? + }; + debug!("http: binding proto ok"); + + let child_handle = binding.create_child()?; + debug!("http: child handle ok"); + + let protocol_res = unsafe { + boot::open_protocol::( + boot::OpenProtocolParams { + handle: child_handle, + agent: boot::image_handle(), + controller: None, + }, + boot::OpenProtocolAttributes::GetProtocol, + ) + }; + if let Err(e) = protocol_res { + let _ = binding.destroy_child(child_handle); + return Err(e); + } + debug!("http: protocol ok"); + + Ok(Self { + child_handle, + binding, + protocol: Some(protocol_res.unwrap()), + }) + } + + /// Configure the HTTP Protocol with some sane defaults. + pub fn configure(&mut self) -> uefi::Result<()> { + let ip4 = HttpV4AccessPoint { + use_default_addr: true.into(), + ..Default::default() + }; + + let config = HttpConfigData { + http_version: HttpVersion::HTTP_VERSION_10, + time_out_millisec: 10_000, + local_addr_is_ipv6: false.into(), + access_point: HttpAccessPoint { ipv4_node: &ip4 }, + }; + + self.protocol.as_mut().unwrap().configure(&config)?; + debug!("http: configure ok"); + + Ok(()) + } + + /// Send HTTP request + pub fn request( + &mut self, + method: HttpMethod, + url: &str, + body: Option<&mut [u8]>, + ) -> uefi::Result<()> { + let url16 = uefi::CString16::try_from(url).unwrap(); + + let Some(hostname) = url.split('/').nth(2) else { + return Err(Status::INVALID_PARAMETER.into()); + }; + let mut c_hostname = String::from(hostname); + c_hostname.push('\0'); + debug!("http: host: {}", hostname); + + let mut tx_req = HttpRequestData { + method, + url: url16.as_ptr().cast::(), + }; + + let mut tx_hdr = Vec::new(); + tx_hdr.push(HttpHeader { + field_name: c"Host".as_ptr().cast::(), + field_value: c_hostname.as_ptr(), + }); + + let mut tx_msg = HttpMessage::default(); + tx_msg.data.request = &mut tx_req; + tx_msg.header_count = tx_hdr.len(); + tx_msg.header = tx_hdr.as_mut_ptr(); + if body.is_some() { + let b = body.unwrap(); + tx_msg.body_length = b.len(); + tx_msg.body = b.as_mut_ptr().cast::(); + } + + let mut tx_token = HttpToken { + status: Status::NOT_READY, + message: &mut tx_msg, + ..Default::default() + }; + + let p = self.protocol.as_mut().unwrap(); + p.request(&mut tx_token)?; + debug!("http: request sent ok"); + + loop { + if tx_token.status != Status::NOT_READY { + break; + } + p.poll()?; + } + + if tx_token.status != Status::SUCCESS { + return Err(tx_token.status.into()); + }; + + debug!("http: request status ok"); + + Ok(()) + } + + /// Send HTTP GET request + pub fn request_get(&mut self, url: &str) -> uefi::Result<()> { + self.request(HttpMethod::GET, url, None)?; + Ok(()) + } + + /// Send HTTP HEAD request + pub fn request_head(&mut self, url: &str) -> uefi::Result<()> { + self.request(HttpMethod::HEAD, url, None)?; + Ok(()) + } + + /// Receive the start of the http response, the headers and (parts of) the body. + pub fn response_first(&mut self, expect_body: bool) -> uefi::Result { + let mut rx_rsp = HttpResponseData { + status_code: HttpStatusCode::STATUS_UNSUPPORTED, + }; + + let mut body = vec![0; if expect_body { 16 * 1024 } else { 0 }]; + let mut rx_msg = HttpMessage::default(); + rx_msg.data.response = &mut rx_rsp; + rx_msg.body_length = body.len(); + rx_msg.body = if !body.is_empty() { + body.as_mut_ptr() + } else { + ptr::null() + } as *mut c_void; + + let mut rx_token = HttpToken { + status: Status::NOT_READY, + message: &mut rx_msg, + ..Default::default() + }; + + let p = self.protocol.as_mut().unwrap(); + p.response(&mut rx_token)?; + + loop { + if rx_token.status != Status::NOT_READY { + break; + } + p.poll()?; + } + + debug!( + "http: response: {} / {:?}", + rx_token.status, rx_rsp.status_code + ); + + if rx_token.status != Status::SUCCESS && rx_token.status != Status::HTTP_ERROR { + return Err(rx_token.status.into()); + }; + + debug!("http: headers: {}", rx_msg.header_count); + let mut headers: Vec<(String, String)> = Vec::new(); + for i in 0..rx_msg.header_count { + let n; + let v; + unsafe { + n = CStr::from_ptr((*rx_msg.header.add(i)).field_name.cast::()); + v = CStr::from_ptr((*rx_msg.header.add(i)).field_value.cast::()); + } + headers.push(( + n.to_str().unwrap().to_lowercase(), + String::from(v.to_str().unwrap()), + )); + } + + debug!("http: body: {}/{}", rx_msg.body_length, body.len()); + + let rsp = HttpHelperResponse { + status: rx_rsp.status_code, + headers, + body: body[0..rx_msg.body_length].to_vec(), + }; + Ok(rsp) + } + + /// Receive more body data. + pub fn response_more(&mut self) -> uefi::Result> { + let mut body = vec![0; 16 * 1024]; + let mut rx_msg = HttpMessage { + body_length: body.len(), + body: body.as_mut_ptr().cast::(), + ..Default::default() + }; + + let mut rx_token = HttpToken { + status: Status::NOT_READY, + message: &mut rx_msg, + ..Default::default() + }; + + let p = self.protocol.as_mut().unwrap(); + p.response(&mut rx_token)?; + + loop { + if rx_token.status != Status::NOT_READY { + break; + } + p.poll()?; + } + + debug!("http: response: {}", rx_token.status); + + if rx_token.status != Status::SUCCESS { + return Err(rx_token.status.into()); + }; + + debug!("http: body: {}/{}", rx_msg.body_length, body.len()); + + Ok(body[0..rx_msg.body_length].to_vec()) + } +} + +impl Drop for HttpHelper { + fn drop(&mut self) { + // protocol must go out of scope before calling destroy_child + self.protocol = None; + let _ = self.binding.destroy_child(self.child_handle); + } +} diff --git a/uefi/src/proto/network/mod.rs b/uefi/src/proto/network/mod.rs index 1ef987365..b3eb665b6 100644 --- a/uefi/src/proto/network/mod.rs +++ b/uefi/src/proto/network/mod.rs @@ -4,6 +4,7 @@ //! //! These protocols can be used to interact with network resources. +pub mod http; pub mod ip4config2; pub mod pxe; pub mod snp; From 3fc70b0df78ae3db0b765b0bd3a72c6ce5f470f1 Mon Sep 17 00:00:00 2001 From: Gerd Hoffmann Date: Thu, 10 Apr 2025 15:53:21 +0200 Subject: [PATCH 4/5] Add CA trust database to the repo. This is needed for https support (tls server certificate verification). Signed-off-by: Gerd Hoffmann --- uefi-test-runner/https/README.md | 7 +++++++ uefi-test-runner/https/cacerts.bin | Bin 0 -> 164317 bytes xtask/src/qemu.rs | 6 ++++++ 3 files changed, 13 insertions(+) create mode 100644 uefi-test-runner/https/README.md create mode 100644 uefi-test-runner/https/cacerts.bin diff --git a/uefi-test-runner/https/README.md b/uefi-test-runner/https/README.md new file mode 100644 index 000000000..caf9517f9 --- /dev/null +++ b/uefi-test-runner/https/README.md @@ -0,0 +1,7 @@ +https ca cert database in efi signature list format + +Copied over from centos stream 9 where this is available as +/etc/pki/ca-trust/extracted/edk2/cacerts.bin + +It's the Mozilla Foundation CA certificate list, shipped in +ca-certificates.rpm, licensed as "MIT AND GPL-2.0-or-later". diff --git a/uefi-test-runner/https/cacerts.bin b/uefi-test-runner/https/cacerts.bin new file mode 100644 index 0000000000000000000000000000000000000000..6a9a48ad3576467e74af0948c9564df38f16fe28 GIT binary patch literal 164317 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

Zmo*w5C^GU>?1TB6d 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

*uR(E;>(n$zd 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 z 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 Result<()> { None }; + // Pass CA certificate database to the edk2 firmware, for TLS support. + cmd.args([ + "-fw_cfg", + "name=etc/edk2/https/cacerts,file=uefi-test-runner/https/cacerts.bin", + ]); + // Set up a software TPM if requested. let _tpm = if let Some(tpm_version) = opt.tpm { let tpm = Swtpm::spawn(tpm_version)?; From e782459658bc1d40bf2d662be2466ea60289d24e Mon Sep 17 00:00:00 2001 From: Gerd Hoffmann Date: Thu, 10 Apr 2025 14:33:18 +0200 Subject: [PATCH 5/5] add test case for ip4config2 and http protocols. Signed-off-by: Gerd Hoffmann --- uefi-test-runner/src/proto/network/http.rs | 117 +++++++++++++++++++++ uefi-test-runner/src/proto/network/mod.rs | 2 + 2 files changed, 119 insertions(+) create mode 100644 uefi-test-runner/src/proto/network/http.rs diff --git a/uefi-test-runner/src/proto/network/http.rs b/uefi-test-runner/src/proto/network/http.rs new file mode 100644 index 000000000..225dbfeef --- /dev/null +++ b/uefi-test-runner/src/proto/network/http.rs @@ -0,0 +1,117 @@ +// SPDX-License-Identifier: MIT OR Apache-2.0 + +use alloc::vec::Vec; + +use uefi::proto::device_path::text::{AllowShortcuts, DisplayOnly}; +use uefi::proto::device_path::DevicePath; +use uefi::proto::network::http::{HttpBinding, HttpHelper}; +use uefi::proto::network::ip4config2::Ip4Config2; +use uefi::{boot, Handle}; + +use uefi_raw::protocol::network::http::HttpStatusCode; + +pub fn print_handle_devpath(prefix: &str, handle: &Handle) { + let Ok(dp) = boot::open_protocol_exclusive::(*handle) else { + info!("{}no device path for handle", prefix); + return; + }; + if let Ok(string) = dp.to_string(DisplayOnly(true), AllowShortcuts(true)) { + info!("{}{}", prefix, string); + } +} + +fn fetch_http(handle: Handle, url: &str) -> Option> { + info!("http: fetching {} ...", url); + + let http_res = HttpHelper::new(handle); + if let Err(e) = http_res { + error!("http new: {}", e); + return None; + } + let mut http = http_res.unwrap(); + + let res = http.configure(); + if let Err(e) = res { + error!("http configure: {}", e); + return None; + } + + let res = http.request_get(url); + if let Err(e) = res { + error!("http request: {}", e); + return None; + } + + let res = http.response_first(true); + if let Err(e) = res { + error!("http response: {}", e); + return None; + } + + let rsp = res.unwrap(); + if rsp.status != HttpStatusCode::STATUS_200_OK { + error!("http server error: {:?}", rsp.status); + return None; + } + let Some(cl_hdr) = rsp.headers.iter().find(|h| h.0 == "content-length") else { + // The only way to figure when your transfer is complete is to + // get the content length header and count the bytes you got. + // So missing header -> fatal error. + error!("no content length"); + return None; + }; + let Ok(cl) = cl_hdr.1.parse::() else { + error!("parse content length ({})", cl_hdr.1); + return None; + }; + info!("http: size is {} bytes", cl); + + let mut data = rsp.body; + loop { + if data.len() >= cl { + break; + } + + let res = http.response_more(); + if let Err(e) = res { + error!("read response: {}", e); + return None; + } + + let mut buf = res.unwrap(); + data.append(&mut buf); + } + + Some(data) +} + +pub fn test() { + info!("Testing ip4 config2 + http protocols"); + + let handles = boot::locate_handle_buffer(boot::SearchType::from_proto::()) + .expect("get nic handles"); + + for h in handles.as_ref() { + print_handle_devpath("nic: ", h); + + info!("Bring up interface (ip4 config2 protocol)"); + let mut ip4 = Ip4Config2::new(*h).expect("open ip4 config2 protocol"); + ip4.ifup(true).expect("acquire ipv4 address"); + + // hard to find web sites which still allow plain http these days ... + info!("Testing HTTP"); + fetch_http(*h, "http://example.com/").expect("http request failed"); + + // FYI: not all firmware builds support modern tls versions. + // request() -> ABORTED typically is a tls handshake error. + // check the firmware log for details. + info!("Testing HTTPS"); + fetch_http( + *h, + "https://raw.githubusercontent.com/rust-osdev/uefi-rs/refs/heads/main/Cargo.toml", + ) + .expect("https request failed"); + + info!("PASSED"); + } +} diff --git a/uefi-test-runner/src/proto/network/mod.rs b/uefi-test-runner/src/proto/network/mod.rs index 1789c3783..0e21db626 100644 --- a/uefi-test-runner/src/proto/network/mod.rs +++ b/uefi-test-runner/src/proto/network/mod.rs @@ -3,9 +3,11 @@ pub fn test() { info!("Testing Network protocols"); + http::test(); pxe::test(); snp::test(); } +mod http; mod pxe; mod snp;