mirror of
https://github.com/asterinas/asterinas.git
synced 2025-06-27 11:23:25 +00:00
Use From<IpEndpoint>
for SockAddr
(not TryFrom
)
This commit is contained in:
committed by
Tate, Hongliang Tian
parent
b53980da25
commit
8b094454aa
@ -17,7 +17,7 @@ pub use any_socket::{
|
||||
AnyBoundSocket, AnyUnboundSocket, RawTcpSocket, RawUdpSocket, RECV_BUF_LEN, SEND_BUF_LEN,
|
||||
};
|
||||
pub use loopback::IfaceLoopback;
|
||||
pub use smoltcp::wire::{EthernetAddress, IpAddress, IpEndpoint, IpListenEndpoint, Ipv4Address};
|
||||
pub use smoltcp::wire::{EthernetAddress, IpAddress, IpEndpoint, Ipv4Address};
|
||||
pub use util::{spawn_background_poll_thread, BindPortConfig};
|
||||
pub use virtio::IfaceVirtio;
|
||||
|
||||
|
@ -115,7 +115,7 @@ impl DatagramSocket {
|
||||
};
|
||||
let (recv_bytes, remote_endpoint) = bound_datagram.try_recvfrom(buf, flags)?;
|
||||
bound_datagram.update_io_events(&self.pollee);
|
||||
Ok((recv_bytes, remote_endpoint.try_into()?))
|
||||
Ok((recv_bytes, remote_endpoint.into()))
|
||||
}
|
||||
|
||||
fn try_sendto(
|
||||
@ -240,7 +240,7 @@ impl Socket for DatagramSocket {
|
||||
let Inner::Bound(bound_datagram) = inner.as_ref() else {
|
||||
return_errno_with_message!(Errno::EINVAL, "the socket is not bound");
|
||||
};
|
||||
bound_datagram.local_endpoint().try_into()
|
||||
Ok(bound_datagram.local_endpoint().into())
|
||||
}
|
||||
|
||||
fn peer_addr(&self) -> Result<SocketAddr> {
|
||||
@ -248,7 +248,7 @@ impl Socket for DatagramSocket {
|
||||
let Inner::Bound(bound_datagram) = inner.as_ref() else {
|
||||
return_errno_with_message!(Errno::EINVAL, "the socket is not bound");
|
||||
};
|
||||
bound_datagram.remote_endpoint()?.try_into()
|
||||
Ok(bound_datagram.remote_endpoint()?.into())
|
||||
}
|
||||
|
||||
// FIXME: respect RecvFromFlags
|
||||
|
@ -177,7 +177,7 @@ impl StreamSocket {
|
||||
|
||||
let remote_endpoint = connected_stream.remote_endpoint();
|
||||
let accepted_socket = Self::new_connected(connected_stream);
|
||||
Ok((accepted_socket, remote_endpoint.try_into()?))
|
||||
Ok((accepted_socket, remote_endpoint.into()))
|
||||
}
|
||||
|
||||
fn try_recvfrom(&self, buf: &mut [u8], flags: SendRecvFlags) -> Result<(usize, SocketAddr)> {
|
||||
@ -188,7 +188,7 @@ impl StreamSocket {
|
||||
};
|
||||
let recv_bytes = connected_stream.try_recvfrom(buf, flags)?;
|
||||
connected_stream.update_io_events(&self.pollee);
|
||||
Ok((recv_bytes, connected_stream.remote_endpoint().try_into()?))
|
||||
Ok((recv_bytes, connected_stream.remote_endpoint().into()))
|
||||
}
|
||||
|
||||
fn try_sendto(&self, buf: &[u8], flags: SendRecvFlags) -> Result<usize> {
|
||||
@ -390,7 +390,7 @@ impl Socket for StreamSocket {
|
||||
State::Listen(listen_stream) => listen_stream.local_endpoint(),
|
||||
State::Connected(connected_stream) => connected_stream.local_endpoint(),
|
||||
};
|
||||
local_endpoint.try_into()
|
||||
Ok(local_endpoint.into())
|
||||
}
|
||||
|
||||
fn peer_addr(&self) -> Result<SocketAddr> {
|
||||
@ -405,7 +405,7 @@ impl Socket for StreamSocket {
|
||||
}
|
||||
State::Connected(connected_stream) => connected_stream.remote_endpoint(),
|
||||
};
|
||||
remote_endpoint.try_into()
|
||||
Ok(remote_endpoint.into())
|
||||
}
|
||||
|
||||
fn recvfrom(&self, buf: &mut [u8], flags: SendRecvFlags) -> Result<(usize, SocketAddr)> {
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
use crate::{
|
||||
net::{
|
||||
iface::{IpAddress, IpEndpoint, IpListenEndpoint, Ipv4Address},
|
||||
iface::{IpAddress, IpEndpoint, Ipv4Address},
|
||||
socket::unix::UnixSocketAddr,
|
||||
},
|
||||
prelude::*,
|
||||
@ -24,34 +24,19 @@ impl TryFrom<SocketAddr> for IpEndpoint {
|
||||
match value {
|
||||
SocketAddr::IPv4(addr, port) => Ok(IpEndpoint::new(addr.into_address(), port)),
|
||||
_ => return_errno_with_message!(
|
||||
Errno::EINVAL,
|
||||
"sock addr cannot be converted as IpEndpoint"
|
||||
Errno::EAFNOSUPPORT,
|
||||
"the address is in an unsupported address family"
|
||||
),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl TryFrom<IpEndpoint> for SocketAddr {
|
||||
type Error = Error;
|
||||
|
||||
fn try_from(endpoint: IpEndpoint) -> Result<Self> {
|
||||
impl From<IpEndpoint> for SocketAddr {
|
||||
fn from(endpoint: IpEndpoint) -> Self {
|
||||
let port = endpoint.port;
|
||||
let socket_addr = match endpoint.addr {
|
||||
IpAddress::Ipv4(addr) => SocketAddr::IPv4(addr, port), // TODO: support IPv6
|
||||
};
|
||||
Ok(socket_addr)
|
||||
match endpoint.addr {
|
||||
IpAddress::Ipv4(addr) => SocketAddr::IPv4(addr, port),
|
||||
// TODO: support IPv6
|
||||
}
|
||||
}
|
||||
|
||||
impl TryFrom<IpListenEndpoint> for SocketAddr {
|
||||
type Error = Error;
|
||||
|
||||
fn try_from(value: IpListenEndpoint) -> Result<Self> {
|
||||
let port = value.port;
|
||||
let socket_addr = match value.addr {
|
||||
None => return_errno_with_message!(Errno::EINVAL, "address is unspecified"),
|
||||
Some(IpAddress::Ipv4(address)) => SocketAddr::IPv4(address, port),
|
||||
};
|
||||
Ok(socket_addr)
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user