Skip to content

Commit f76595c

Browse files
uefi: Convert some uses of IpAddress to uefi_raw::IpAddress in pxe::BaseCode
This is an intermediate step towards using the uefi-raw definition of the protocol.
1 parent ca0315a commit f76595c

File tree

2 files changed

+19
-12
lines changed

2 files changed

+19
-12
lines changed

uefi/src/proto/network/mod.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,13 @@ impl IpAddress {
3333
pub const fn new_v6(ip_addr: [u8; 16]) -> Self {
3434
Self(ip_addr)
3535
}
36+
37+
#[must_use]
38+
const fn as_raw_ptr(&self) -> *const uefi_raw::IpAddress {
39+
// The uefi-raw type is defined differently, but the layout is
40+
// compatible.
41+
self.0.as_ptr().cast()
42+
}
3643
}
3744

3845
impl From<core::net::Ipv4Addr> for IpAddress {

uefi/src/proto/network/pxe.rs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -46,15 +46,15 @@ pub struct BaseCode {
4646
overwrite: Boolean,
4747
buffer_size: &mut u64,
4848
block_size: Option<&usize>,
49-
server_ip: &IpAddress,
49+
server_ip: *const uefi_raw::IpAddress,
5050
filename: *const Char8,
5151
info: Option<&MtftpInfo>,
5252
dont_use_buffer: Boolean,
5353
) -> Status,
5454
udp_write: unsafe extern "efiapi" fn(
5555
this: &Self,
5656
op_flags: UdpOpFlags,
57-
dest_ip: &IpAddress,
57+
dest_ip: *const uefi_raw::IpAddress,
5858
dest_port: &u16,
5959
gateway_ip: Option<&IpAddress>,
6060
src_ip: Option<&IpAddress>,
@@ -79,7 +79,7 @@ pub struct BaseCode {
7979
set_ip_filter: unsafe extern "efiapi" fn(this: &Self, new_filter: &IpFilter) -> Status,
8080
arp: unsafe extern "efiapi" fn(
8181
this: &Self,
82-
ip_addr: &IpAddress,
82+
ip_addr: *const uefi_raw::IpAddress,
8383
mac_addr: Option<&mut MacAddress>,
8484
) -> Status,
8585
set_parameters: unsafe extern "efiapi" fn(
@@ -161,7 +161,7 @@ impl BaseCode {
161161
Boolean::FALSE,
162162
&mut buffer_size,
163163
None,
164-
server_ip,
164+
server_ip.as_raw_ptr(),
165165
filename.as_ptr(),
166166
None,
167167
Boolean::FALSE,
@@ -192,7 +192,7 @@ impl BaseCode {
192192
Boolean::FALSE,
193193
&mut buffer_size,
194194
None,
195-
server_ip,
195+
server_ip.as_raw_ptr(),
196196
filename.as_ptr(),
197197
None,
198198
dont_use_buffer,
@@ -220,7 +220,7 @@ impl BaseCode {
220220
overwrite.into(),
221221
&mut buffer_size,
222222
None,
223-
server_ip,
223+
server_ip.as_raw_ptr(),
224224
filename.as_ptr(),
225225
None,
226226
Boolean::FALSE,
@@ -248,7 +248,7 @@ impl BaseCode {
248248
Boolean::FALSE,
249249
&mut buffer_size,
250250
None,
251-
server_ip,
251+
server_ip.as_raw_ptr(),
252252
directory_name.as_ptr(),
253253
None,
254254
Boolean::FALSE,
@@ -321,7 +321,7 @@ impl BaseCode {
321321
Boolean::FALSE,
322322
&mut buffer_size,
323323
None,
324-
server_ip,
324+
server_ip.as_raw_ptr(),
325325
filename.as_ptr(),
326326
Some(info),
327327
Boolean::FALSE,
@@ -353,7 +353,7 @@ impl BaseCode {
353353
Boolean::FALSE,
354354
&mut buffer_size,
355355
None,
356-
server_ip,
356+
server_ip.as_raw_ptr(),
357357
filename.as_ptr(),
358358
Some(info),
359359
dont_use_buffer,
@@ -381,7 +381,7 @@ impl BaseCode {
381381
Boolean::FALSE,
382382
&mut buffer_size,
383383
None,
384-
server_ip,
384+
server_ip.as_raw_ptr(),
385385
null_mut(),
386386
Some(info),
387387
Boolean::FALSE,
@@ -479,7 +479,7 @@ impl BaseCode {
479479
(self.udp_write)(
480480
self,
481481
op_flags,
482-
dest_ip,
482+
dest_ip.as_raw_ptr(),
483483
&dest_port,
484484
gateway_ip,
485485
src_ip,
@@ -540,7 +540,7 @@ impl BaseCode {
540540

541541
/// Uses the ARP protocol to resolve a MAC address.
542542
pub fn arp(&mut self, ip_addr: &IpAddress, mac_addr: Option<&mut MacAddress>) -> Result {
543-
unsafe { (self.arp)(self, ip_addr, mac_addr) }.to_result()
543+
unsafe { (self.arp)(self, ip_addr.as_raw_ptr(), mac_addr) }.to_result()
544544
}
545545

546546
/// Updates the parameters that affect the operation of the PXE Base Code

0 commit comments

Comments
 (0)