Skip to content

uefi-raw: move types to new net module, improve convenience #1699

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 6 commits into
base: main
Choose a base branch
from

Conversation

phip1611
Copy link
Member

@phip1611 phip1611 commented Jun 15, 2025

This prepares my vision for #1575, a split-out from #1645, and a change to uefi-raw in the sense that some types now have slightly more higher-level logic. This "higher-level" logic is still low-level enough that I think it is perfectly fine to keep it. It will also not hinder Rust-based UEFI implementations.

TL;DR: My vision is that in uefi we only expose core::net::{IpAddr, Ipv4Addr, Ipv6Addr} and protocol implementations can use From/Into to do all the necessary work under the hood.

Let me know what you think!

List of Changes

  • refactored the IpAddress type to be more convenient, more memory-safe, and pleasant to use
  • added lots of convenient From implementations
  • relaxed some cargo xtask check-raw requirements

Checklist

  • Sensible git history (for example, squash "typo" or "fix" commits). See the Rewriting History guide for help.
  • Update the changelog (if necessary)

@phip1611 phip1611 requested a review from nicholasbishop June 15, 2025 19:25
We have enough network-related types to justify
a dedicated module:

- IpAddress
- Ipv4Address
- Ipv6Address
- MacAddress

And lots of corresponding impl{} blocks, tests, etc.
phip1611 added 3 commits June 15, 2025 21:32
The union makes some things hard to work with, and we can
simply remove it. We get multiple advantages from that:

- no more chance to have uninitialized bytes
- We can `Debug`-print the type
- Some implementations become simpler
phip1611 added 2 commits June 15, 2025 21:36
This helps to better understand why something fails.
check-raw is very strict. Relaxing it gives uefi-raw more
freedom, which is especially needed for the more high-level
IpAddress type changes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant