Skip to content
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

sys: net: Add UEFI stubs #136615

Merged
merged 1 commit into from
Feb 8, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
369 changes: 369 additions & 0 deletions library/std/src/sys/net/connection/uefi/mod.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,369 @@
use crate::fmt;
use crate::io::{self, BorrowedCursor, IoSlice, IoSliceMut};
use crate::net::{Ipv4Addr, Ipv6Addr, Shutdown, SocketAddr};
use crate::sys::unsupported;
use crate::time::Duration;

pub struct TcpStream(!);

impl TcpStream {
pub fn connect(_: io::Result<&SocketAddr>) -> io::Result<TcpStream> {
unsupported()
}

pub fn connect_timeout(_: &SocketAddr, _: Duration) -> io::Result<TcpStream> {
unsupported()
}

pub fn set_read_timeout(&self, _: Option<Duration>) -> io::Result<()> {
self.0
}

pub fn set_write_timeout(&self, _: Option<Duration>) -> io::Result<()> {
self.0
}

pub fn read_timeout(&self) -> io::Result<Option<Duration>> {
self.0
}

pub fn write_timeout(&self) -> io::Result<Option<Duration>> {
self.0
}

pub fn peek(&self, _: &mut [u8]) -> io::Result<usize> {
self.0
}

pub fn read(&self, _: &mut [u8]) -> io::Result<usize> {
self.0
}

pub fn read_buf(&self, _buf: BorrowedCursor<'_>) -> io::Result<()> {
self.0
}

pub fn read_vectored(&self, _: &mut [IoSliceMut<'_>]) -> io::Result<usize> {
self.0
}

pub fn is_read_vectored(&self) -> bool {
self.0
}

pub fn write(&self, _: &[u8]) -> io::Result<usize> {
self.0
}

pub fn write_vectored(&self, _: &[IoSlice<'_>]) -> io::Result<usize> {
self.0
}

pub fn is_write_vectored(&self) -> bool {
self.0
}

pub fn peer_addr(&self) -> io::Result<SocketAddr> {
self.0
}

pub fn socket_addr(&self) -> io::Result<SocketAddr> {
self.0
}

pub fn shutdown(&self, _: Shutdown) -> io::Result<()> {
self.0
}

pub fn duplicate(&self) -> io::Result<TcpStream> {
self.0
}

pub fn set_linger(&self, _: Option<Duration>) -> io::Result<()> {
self.0
}

pub fn linger(&self) -> io::Result<Option<Duration>> {
self.0
}

pub fn set_nodelay(&self, _: bool) -> io::Result<()> {
self.0
}

pub fn nodelay(&self) -> io::Result<bool> {
self.0
}

pub fn set_ttl(&self, _: u32) -> io::Result<()> {
self.0
}

pub fn ttl(&self) -> io::Result<u32> {
self.0
}

pub fn take_error(&self) -> io::Result<Option<io::Error>> {
self.0
}

pub fn set_nonblocking(&self, _: bool) -> io::Result<()> {
self.0
}
}

impl fmt::Debug for TcpStream {
fn fmt(&self, _f: &mut fmt::Formatter<'_>) -> fmt::Result {
self.0
}
}

pub struct TcpListener(!);

impl TcpListener {
pub fn bind(_: io::Result<&SocketAddr>) -> io::Result<TcpListener> {
unsupported()
}

pub fn socket_addr(&self) -> io::Result<SocketAddr> {
self.0
}

pub fn accept(&self) -> io::Result<(TcpStream, SocketAddr)> {
self.0
}

pub fn duplicate(&self) -> io::Result<TcpListener> {
self.0
}

pub fn set_ttl(&self, _: u32) -> io::Result<()> {
self.0
}

pub fn ttl(&self) -> io::Result<u32> {
self.0
}

pub fn set_only_v6(&self, _: bool) -> io::Result<()> {
self.0
}

pub fn only_v6(&self) -> io::Result<bool> {
self.0
}

pub fn take_error(&self) -> io::Result<Option<io::Error>> {
self.0
}

pub fn set_nonblocking(&self, _: bool) -> io::Result<()> {
self.0
}
}

impl fmt::Debug for TcpListener {
fn fmt(&self, _f: &mut fmt::Formatter<'_>) -> fmt::Result {
self.0
}
}

pub struct UdpSocket(!);

impl UdpSocket {
pub fn bind(_: io::Result<&SocketAddr>) -> io::Result<UdpSocket> {
unsupported()
}

pub fn peer_addr(&self) -> io::Result<SocketAddr> {
self.0
}

pub fn socket_addr(&self) -> io::Result<SocketAddr> {
self.0
}

pub fn recv_from(&self, _: &mut [u8]) -> io::Result<(usize, SocketAddr)> {
self.0
}

pub fn peek_from(&self, _: &mut [u8]) -> io::Result<(usize, SocketAddr)> {
self.0
}

pub fn send_to(&self, _: &[u8], _: &SocketAddr) -> io::Result<usize> {
self.0
}

pub fn duplicate(&self) -> io::Result<UdpSocket> {
self.0
}

pub fn set_read_timeout(&self, _: Option<Duration>) -> io::Result<()> {
self.0
}

pub fn set_write_timeout(&self, _: Option<Duration>) -> io::Result<()> {
self.0
}

pub fn read_timeout(&self) -> io::Result<Option<Duration>> {
self.0
}

pub fn write_timeout(&self) -> io::Result<Option<Duration>> {
self.0
}

pub fn set_broadcast(&self, _: bool) -> io::Result<()> {
self.0
}

pub fn broadcast(&self) -> io::Result<bool> {
self.0
}

pub fn set_multicast_loop_v4(&self, _: bool) -> io::Result<()> {
self.0
}

pub fn multicast_loop_v4(&self) -> io::Result<bool> {
self.0
}

pub fn set_multicast_ttl_v4(&self, _: u32) -> io::Result<()> {
self.0
}

pub fn multicast_ttl_v4(&self) -> io::Result<u32> {
self.0
}

pub fn set_multicast_loop_v6(&self, _: bool) -> io::Result<()> {
self.0
}

pub fn multicast_loop_v6(&self) -> io::Result<bool> {
self.0
}

pub fn join_multicast_v4(&self, _: &Ipv4Addr, _: &Ipv4Addr) -> io::Result<()> {
self.0
}

pub fn join_multicast_v6(&self, _: &Ipv6Addr, _: u32) -> io::Result<()> {
self.0
}

pub fn leave_multicast_v4(&self, _: &Ipv4Addr, _: &Ipv4Addr) -> io::Result<()> {
self.0
}

pub fn leave_multicast_v6(&self, _: &Ipv6Addr, _: u32) -> io::Result<()> {
self.0
}

pub fn set_ttl(&self, _: u32) -> io::Result<()> {
self.0
}

pub fn ttl(&self) -> io::Result<u32> {
self.0
}

pub fn take_error(&self) -> io::Result<Option<io::Error>> {
self.0
}

pub fn set_nonblocking(&self, _: bool) -> io::Result<()> {
self.0
}

pub fn recv(&self, _: &mut [u8]) -> io::Result<usize> {
self.0
}

pub fn peek(&self, _: &mut [u8]) -> io::Result<usize> {
self.0
}

pub fn send(&self, _: &[u8]) -> io::Result<usize> {
self.0
}

pub fn connect(&self, _: io::Result<&SocketAddr>) -> io::Result<()> {
self.0
}
}

impl fmt::Debug for UdpSocket {
fn fmt(&self, _f: &mut fmt::Formatter<'_>) -> fmt::Result {
self.0
}
}

pub struct LookupHost(!);

impl LookupHost {
pub fn port(&self) -> u16 {
self.0
}
}

impl Iterator for LookupHost {
type Item = SocketAddr;
fn next(&mut self) -> Option<SocketAddr> {
self.0
}
}

impl TryFrom<&str> for LookupHost {
type Error = io::Error;

fn try_from(_v: &str) -> io::Result<LookupHost> {
unsupported()
}
}

impl<'a> TryFrom<(&'a str, u16)> for LookupHost {
type Error = io::Error;

fn try_from(_v: (&'a str, u16)) -> io::Result<LookupHost> {
unsupported()
}
}

#[allow(nonstandard_style)]
pub mod netc {
pub const AF_INET: u8 = 0;
pub const AF_INET6: u8 = 1;
pub type sa_family_t = u8;

#[derive(Copy, Clone)]
pub struct in_addr {
pub s_addr: u32,
}

#[derive(Copy, Clone)]
pub struct sockaddr_in {
#[allow(dead_code)]
pub sin_family: sa_family_t,
pub sin_port: u16,
pub sin_addr: in_addr,
}

#[derive(Copy, Clone)]
pub struct in6_addr {
pub s6_addr: [u8; 16],
}

#[derive(Copy, Clone)]
pub struct sockaddr_in6 {
#[allow(dead_code)]
pub sin6_family: sa_family_t,
pub sin6_port: u16,
pub sin6_addr: in6_addr,
pub sin6_flowinfo: u32,
pub sin6_scope_id: u32,
}
}
5 changes: 5 additions & 0 deletions library/std/src/sys/net/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,11 @@ cfg_if::cfg_if! {
mod xous;
pub use xous::*;
}
} else if #[cfg(target_os = "uefi")] {
mod connection {
mod uefi;
pub use uefi::*;
}
} else {
mod connection {
mod unsupported;
Expand Down
Loading