1 macro_rules! unimpl { 2 () => { 3 return Err(io::Error::new_const( 4 io::ErrorKind::Unsupported, 5 &"No networking available on L4Re.", 6 )); 7 }; 8 } 9 10 pub mod net { 11 #![allow(warnings)] 12 use crate::convert::TryFrom; 13 use crate::fmt; 14 use crate::io::{self, IoSlice, IoSliceMut}; 15 use crate::net::{Ipv4Addr, Ipv6Addr, Shutdown, SocketAddr}; 16 use crate::sys::fd::FileDesc; 17 use crate::sys_common::{AsInner, FromInner, IntoInner}; 18 use crate::time::Duration; 19 20 #[allow(unused_extern_crates)] 21 pub extern crate libc as netc; 22 23 pub struct Socket(FileDesc); 24 impl Socket { new(_: &SocketAddr, _: libc::c_int) -> io::Result<Socket>25 pub fn new(_: &SocketAddr, _: libc::c_int) -> io::Result<Socket> { 26 unimpl!(); 27 } 28 new_raw(_: libc::c_int, _: libc::c_int) -> io::Result<Socket>29 pub fn new_raw(_: libc::c_int, _: libc::c_int) -> io::Result<Socket> { 30 unimpl!(); 31 } 32 new_pair(_: libc::c_int, _: libc::c_int) -> io::Result<(Socket, Socket)>33 pub fn new_pair(_: libc::c_int, _: libc::c_int) -> io::Result<(Socket, Socket)> { 34 unimpl!(); 35 } 36 connect_timeout(&self, _: &SocketAddr, _: Duration) -> io::Result<()>37 pub fn connect_timeout(&self, _: &SocketAddr, _: Duration) -> io::Result<()> { 38 unimpl!(); 39 } 40 accept( &self, _: *mut libc::sockaddr, _: *mut libc::socklen_t, ) -> io::Result<Socket>41 pub fn accept( 42 &self, 43 _: *mut libc::sockaddr, 44 _: *mut libc::socklen_t, 45 ) -> io::Result<Socket> { 46 unimpl!(); 47 } 48 duplicate(&self) -> io::Result<Socket>49 pub fn duplicate(&self) -> io::Result<Socket> { 50 unimpl!(); 51 } 52 read(&self, _: &mut [u8]) -> io::Result<usize>53 pub fn read(&self, _: &mut [u8]) -> io::Result<usize> { 54 unimpl!(); 55 } 56 read_vectored(&self, _: &mut [IoSliceMut<'_>]) -> io::Result<usize>57 pub fn read_vectored(&self, _: &mut [IoSliceMut<'_>]) -> io::Result<usize> { 58 unimpl!(); 59 } 60 is_read_vectored(&self) -> bool61 pub fn is_read_vectored(&self) -> bool { 62 unimpl!(); 63 } 64 peek(&self, _: &mut [u8]) -> io::Result<usize>65 pub fn peek(&self, _: &mut [u8]) -> io::Result<usize> { 66 unimpl!(); 67 } 68 recv_from(&self, _: &mut [u8]) -> io::Result<(usize, SocketAddr)>69 pub fn recv_from(&self, _: &mut [u8]) -> io::Result<(usize, SocketAddr)> { 70 unimpl!(); 71 } 72 peek_from(&self, _: &mut [u8]) -> io::Result<(usize, SocketAddr)>73 pub fn peek_from(&self, _: &mut [u8]) -> io::Result<(usize, SocketAddr)> { 74 unimpl!(); 75 } 76 write(&self, _: &[u8]) -> io::Result<usize>77 pub fn write(&self, _: &[u8]) -> io::Result<usize> { 78 unimpl!(); 79 } 80 write_vectored(&self, _: &[IoSlice<'_>]) -> io::Result<usize>81 pub fn write_vectored(&self, _: &[IoSlice<'_>]) -> io::Result<usize> { 82 unimpl!(); 83 } 84 is_write_vectored(&self) -> bool85 pub fn is_write_vectored(&self) -> bool { 86 unimpl!(); 87 } 88 set_timeout(&self, _: Option<Duration>, _: libc::c_int) -> io::Result<()>89 pub fn set_timeout(&self, _: Option<Duration>, _: libc::c_int) -> io::Result<()> { 90 unimpl!(); 91 } 92 timeout(&self, _: libc::c_int) -> io::Result<Option<Duration>>93 pub fn timeout(&self, _: libc::c_int) -> io::Result<Option<Duration>> { 94 unimpl!(); 95 } 96 shutdown(&self, _: Shutdown) -> io::Result<()>97 pub fn shutdown(&self, _: Shutdown) -> io::Result<()> { 98 unimpl!(); 99 } 100 set_linger(&self, _: Option<Duration>) -> io::Result<()>101 pub fn set_linger(&self, _: Option<Duration>) -> io::Result<()> { 102 unimpl!(); 103 } 104 linger(&self) -> io::Result<Option<Duration>>105 pub fn linger(&self) -> io::Result<Option<Duration>> { 106 unimpl!(); 107 } 108 set_nodelay(&self, _: bool) -> io::Result<()>109 pub fn set_nodelay(&self, _: bool) -> io::Result<()> { 110 unimpl!(); 111 } 112 nodelay(&self) -> io::Result<bool>113 pub fn nodelay(&self) -> io::Result<bool> { 114 unimpl!(); 115 } 116 set_nonblocking(&self, _: bool) -> io::Result<()>117 pub fn set_nonblocking(&self, _: bool) -> io::Result<()> { 118 unimpl!(); 119 } 120 take_error(&self) -> io::Result<Option<io::Error>>121 pub fn take_error(&self) -> io::Result<Option<io::Error>> { 122 unimpl!(); 123 } 124 } 125 126 impl AsInner<libc::c_int> for Socket { as_inner(&self) -> &libc::c_int127 fn as_inner(&self) -> &libc::c_int { 128 self.0.as_inner() 129 } 130 } 131 132 impl FromInner<libc::c_int> for Socket { from_inner(fd: libc::c_int) -> Socket133 fn from_inner(fd: libc::c_int) -> Socket { 134 Socket(FileDesc::new(fd)) 135 } 136 } 137 138 impl IntoInner<libc::c_int> for Socket { into_inner(self) -> libc::c_int139 fn into_inner(self) -> libc::c_int { 140 self.0.into_raw() 141 } 142 } 143 144 pub struct TcpStream { 145 inner: Socket, 146 } 147 148 impl TcpStream { connect(_: io::Result<&SocketAddr>) -> io::Result<TcpStream>149 pub fn connect(_: io::Result<&SocketAddr>) -> io::Result<TcpStream> { 150 unimpl!(); 151 } 152 connect_timeout(_: &SocketAddr, _: Duration) -> io::Result<TcpStream>153 pub fn connect_timeout(_: &SocketAddr, _: Duration) -> io::Result<TcpStream> { 154 unimpl!(); 155 } 156 socket(&self) -> &Socket157 pub fn socket(&self) -> &Socket { 158 &self.inner 159 } 160 into_socket(self) -> Socket161 pub fn into_socket(self) -> Socket { 162 self.inner 163 } 164 set_read_timeout(&self, _: Option<Duration>) -> io::Result<()>165 pub fn set_read_timeout(&self, _: Option<Duration>) -> io::Result<()> { 166 unimpl!(); 167 } 168 set_write_timeout(&self, _: Option<Duration>) -> io::Result<()>169 pub fn set_write_timeout(&self, _: Option<Duration>) -> io::Result<()> { 170 unimpl!(); 171 } 172 read_timeout(&self) -> io::Result<Option<Duration>>173 pub fn read_timeout(&self) -> io::Result<Option<Duration>> { 174 unimpl!(); 175 } 176 write_timeout(&self) -> io::Result<Option<Duration>>177 pub fn write_timeout(&self) -> io::Result<Option<Duration>> { 178 unimpl!(); 179 } 180 peek(&self, _: &mut [u8]) -> io::Result<usize>181 pub fn peek(&self, _: &mut [u8]) -> io::Result<usize> { 182 unimpl!(); 183 } 184 read(&self, _: &mut [u8]) -> io::Result<usize>185 pub fn read(&self, _: &mut [u8]) -> io::Result<usize> { 186 unimpl!(); 187 } 188 read_vectored(&self, _: &mut [IoSliceMut<'_>]) -> io::Result<usize>189 pub fn read_vectored(&self, _: &mut [IoSliceMut<'_>]) -> io::Result<usize> { 190 unimpl!(); 191 } 192 is_read_vectored(&self) -> bool193 pub fn is_read_vectored(&self) -> bool { 194 unimpl!(); 195 } 196 write(&self, _: &[u8]) -> io::Result<usize>197 pub fn write(&self, _: &[u8]) -> io::Result<usize> { 198 unimpl!(); 199 } 200 write_vectored(&self, _: &[IoSlice<'_>]) -> io::Result<usize>201 pub fn write_vectored(&self, _: &[IoSlice<'_>]) -> io::Result<usize> { 202 unimpl!(); 203 } 204 is_write_vectored(&self) -> bool205 pub fn is_write_vectored(&self) -> bool { 206 unimpl!(); 207 } 208 peer_addr(&self) -> io::Result<SocketAddr>209 pub fn peer_addr(&self) -> io::Result<SocketAddr> { 210 unimpl!(); 211 } 212 socket_addr(&self) -> io::Result<SocketAddr>213 pub fn socket_addr(&self) -> io::Result<SocketAddr> { 214 unimpl!(); 215 } 216 shutdown(&self, _: Shutdown) -> io::Result<()>217 pub fn shutdown(&self, _: Shutdown) -> io::Result<()> { 218 unimpl!(); 219 } 220 duplicate(&self) -> io::Result<TcpStream>221 pub fn duplicate(&self) -> io::Result<TcpStream> { 222 unimpl!(); 223 } 224 set_linger(&self, _: Option<Duration>) -> io::Result<()>225 pub fn set_linger(&self, _: Option<Duration>) -> io::Result<()> { 226 unimpl!(); 227 } 228 linger(&self) -> io::Result<Option<Duration>>229 pub fn linger(&self) -> io::Result<Option<Duration>> { 230 unimpl!(); 231 } 232 set_nodelay(&self, _: bool) -> io::Result<()>233 pub fn set_nodelay(&self, _: bool) -> io::Result<()> { 234 unimpl!(); 235 } 236 nodelay(&self) -> io::Result<bool>237 pub fn nodelay(&self) -> io::Result<bool> { 238 unimpl!(); 239 } 240 set_ttl(&self, _: u32) -> io::Result<()>241 pub fn set_ttl(&self, _: u32) -> io::Result<()> { 242 unimpl!(); 243 } 244 ttl(&self) -> io::Result<u32>245 pub fn ttl(&self) -> io::Result<u32> { 246 unimpl!(); 247 } 248 take_error(&self) -> io::Result<Option<io::Error>>249 pub fn take_error(&self) -> io::Result<Option<io::Error>> { 250 unimpl!(); 251 } 252 set_nonblocking(&self, _: bool) -> io::Result<()>253 pub fn set_nonblocking(&self, _: bool) -> io::Result<()> { 254 unimpl!(); 255 } 256 } 257 258 impl FromInner<Socket> for TcpStream { from_inner(socket: Socket) -> TcpStream259 fn from_inner(socket: Socket) -> TcpStream { 260 TcpStream { inner: socket } 261 } 262 } 263 264 impl fmt::Debug for TcpStream { fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result265 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { 266 write!(f, "No networking support available on L4Re") 267 } 268 } 269 270 pub struct TcpListener { 271 inner: Socket, 272 } 273 274 impl TcpListener { bind(_: io::Result<&SocketAddr>) -> io::Result<TcpListener>275 pub fn bind(_: io::Result<&SocketAddr>) -> io::Result<TcpListener> { 276 unimpl!(); 277 } 278 socket(&self) -> &Socket279 pub fn socket(&self) -> &Socket { 280 &self.inner 281 } 282 into_socket(self) -> Socket283 pub fn into_socket(self) -> Socket { 284 self.inner 285 } 286 socket_addr(&self) -> io::Result<SocketAddr>287 pub fn socket_addr(&self) -> io::Result<SocketAddr> { 288 unimpl!(); 289 } 290 accept(&self) -> io::Result<(TcpStream, SocketAddr)>291 pub fn accept(&self) -> io::Result<(TcpStream, SocketAddr)> { 292 unimpl!(); 293 } 294 duplicate(&self) -> io::Result<TcpListener>295 pub fn duplicate(&self) -> io::Result<TcpListener> { 296 unimpl!(); 297 } 298 set_ttl(&self, _: u32) -> io::Result<()>299 pub fn set_ttl(&self, _: u32) -> io::Result<()> { 300 unimpl!(); 301 } 302 ttl(&self) -> io::Result<u32>303 pub fn ttl(&self) -> io::Result<u32> { 304 unimpl!(); 305 } 306 set_only_v6(&self, _: bool) -> io::Result<()>307 pub fn set_only_v6(&self, _: bool) -> io::Result<()> { 308 unimpl!(); 309 } 310 only_v6(&self) -> io::Result<bool>311 pub fn only_v6(&self) -> io::Result<bool> { 312 unimpl!(); 313 } 314 take_error(&self) -> io::Result<Option<io::Error>>315 pub fn take_error(&self) -> io::Result<Option<io::Error>> { 316 unimpl!(); 317 } 318 set_nonblocking(&self, _: bool) -> io::Result<()>319 pub fn set_nonblocking(&self, _: bool) -> io::Result<()> { 320 unimpl!(); 321 } 322 } 323 324 impl FromInner<Socket> for TcpListener { from_inner(socket: Socket) -> TcpListener325 fn from_inner(socket: Socket) -> TcpListener { 326 TcpListener { inner: socket } 327 } 328 } 329 330 impl fmt::Debug for TcpListener { fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result331 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { 332 write!(f, "No networking support available on L4Re.") 333 } 334 } 335 336 pub struct UdpSocket { 337 inner: Socket, 338 } 339 340 impl UdpSocket { bind(_: io::Result<&SocketAddr>) -> io::Result<UdpSocket>341 pub fn bind(_: io::Result<&SocketAddr>) -> io::Result<UdpSocket> { 342 unimpl!(); 343 } 344 socket(&self) -> &Socket345 pub fn socket(&self) -> &Socket { 346 &self.inner 347 } 348 into_socket(self) -> Socket349 pub fn into_socket(self) -> Socket { 350 self.inner 351 } 352 peer_addr(&self) -> io::Result<SocketAddr>353 pub fn peer_addr(&self) -> io::Result<SocketAddr> { 354 unimpl!(); 355 } 356 socket_addr(&self) -> io::Result<SocketAddr>357 pub fn socket_addr(&self) -> io::Result<SocketAddr> { 358 unimpl!(); 359 } 360 recv_from(&self, _: &mut [u8]) -> io::Result<(usize, SocketAddr)>361 pub fn recv_from(&self, _: &mut [u8]) -> io::Result<(usize, SocketAddr)> { 362 unimpl!(); 363 } 364 peek_from(&self, _: &mut [u8]) -> io::Result<(usize, SocketAddr)>365 pub fn peek_from(&self, _: &mut [u8]) -> io::Result<(usize, SocketAddr)> { 366 unimpl!(); 367 } 368 send_to(&self, _: &[u8], _: &SocketAddr) -> io::Result<usize>369 pub fn send_to(&self, _: &[u8], _: &SocketAddr) -> io::Result<usize> { 370 unimpl!(); 371 } 372 duplicate(&self) -> io::Result<UdpSocket>373 pub fn duplicate(&self) -> io::Result<UdpSocket> { 374 unimpl!(); 375 } 376 set_read_timeout(&self, _: Option<Duration>) -> io::Result<()>377 pub fn set_read_timeout(&self, _: Option<Duration>) -> io::Result<()> { 378 unimpl!(); 379 } 380 set_write_timeout(&self, _: Option<Duration>) -> io::Result<()>381 pub fn set_write_timeout(&self, _: Option<Duration>) -> io::Result<()> { 382 unimpl!(); 383 } 384 read_timeout(&self) -> io::Result<Option<Duration>>385 pub fn read_timeout(&self) -> io::Result<Option<Duration>> { 386 unimpl!(); 387 } 388 write_timeout(&self) -> io::Result<Option<Duration>>389 pub fn write_timeout(&self) -> io::Result<Option<Duration>> { 390 unimpl!(); 391 } 392 set_broadcast(&self, _: bool) -> io::Result<()>393 pub fn set_broadcast(&self, _: bool) -> io::Result<()> { 394 unimpl!(); 395 } 396 broadcast(&self) -> io::Result<bool>397 pub fn broadcast(&self) -> io::Result<bool> { 398 unimpl!(); 399 } 400 set_multicast_loop_v4(&self, _: bool) -> io::Result<()>401 pub fn set_multicast_loop_v4(&self, _: bool) -> io::Result<()> { 402 unimpl!(); 403 } 404 multicast_loop_v4(&self) -> io::Result<bool>405 pub fn multicast_loop_v4(&self) -> io::Result<bool> { 406 unimpl!(); 407 } 408 set_multicast_ttl_v4(&self, _: u32) -> io::Result<()>409 pub fn set_multicast_ttl_v4(&self, _: u32) -> io::Result<()> { 410 unimpl!(); 411 } 412 multicast_ttl_v4(&self) -> io::Result<u32>413 pub fn multicast_ttl_v4(&self) -> io::Result<u32> { 414 unimpl!(); 415 } 416 set_multicast_loop_v6(&self, _: bool) -> io::Result<()>417 pub fn set_multicast_loop_v6(&self, _: bool) -> io::Result<()> { 418 unimpl!(); 419 } 420 multicast_loop_v6(&self) -> io::Result<bool>421 pub fn multicast_loop_v6(&self) -> io::Result<bool> { 422 unimpl!(); 423 } 424 join_multicast_v4(&self, _: &Ipv4Addr, _: &Ipv4Addr) -> io::Result<()>425 pub fn join_multicast_v4(&self, _: &Ipv4Addr, _: &Ipv4Addr) -> io::Result<()> { 426 unimpl!(); 427 } 428 join_multicast_v6(&self, _: &Ipv6Addr, _: u32) -> io::Result<()>429 pub fn join_multicast_v6(&self, _: &Ipv6Addr, _: u32) -> io::Result<()> { 430 unimpl!(); 431 } 432 leave_multicast_v4(&self, _: &Ipv4Addr, _: &Ipv4Addr) -> io::Result<()>433 pub fn leave_multicast_v4(&self, _: &Ipv4Addr, _: &Ipv4Addr) -> io::Result<()> { 434 unimpl!(); 435 } 436 leave_multicast_v6(&self, _: &Ipv6Addr, _: u32) -> io::Result<()>437 pub fn leave_multicast_v6(&self, _: &Ipv6Addr, _: u32) -> io::Result<()> { 438 unimpl!(); 439 } 440 set_ttl(&self, _: u32) -> io::Result<()>441 pub fn set_ttl(&self, _: u32) -> io::Result<()> { 442 unimpl!(); 443 } 444 ttl(&self) -> io::Result<u32>445 pub fn ttl(&self) -> io::Result<u32> { 446 unimpl!(); 447 } 448 take_error(&self) -> io::Result<Option<io::Error>>449 pub fn take_error(&self) -> io::Result<Option<io::Error>> { 450 unimpl!(); 451 } 452 set_nonblocking(&self, _: bool) -> io::Result<()>453 pub fn set_nonblocking(&self, _: bool) -> io::Result<()> { 454 unimpl!(); 455 } 456 recv(&self, _: &mut [u8]) -> io::Result<usize>457 pub fn recv(&self, _: &mut [u8]) -> io::Result<usize> { 458 unimpl!(); 459 } 460 peek(&self, _: &mut [u8]) -> io::Result<usize>461 pub fn peek(&self, _: &mut [u8]) -> io::Result<usize> { 462 unimpl!(); 463 } 464 send(&self, _: &[u8]) -> io::Result<usize>465 pub fn send(&self, _: &[u8]) -> io::Result<usize> { 466 unimpl!(); 467 } 468 connect(&self, _: io::Result<&SocketAddr>) -> io::Result<()>469 pub fn connect(&self, _: io::Result<&SocketAddr>) -> io::Result<()> { 470 unimpl!(); 471 } 472 } 473 474 impl FromInner<Socket> for UdpSocket { from_inner(socket: Socket) -> UdpSocket475 fn from_inner(socket: Socket) -> UdpSocket { 476 UdpSocket { inner: socket } 477 } 478 } 479 480 impl fmt::Debug for UdpSocket { fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result481 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { 482 write!(f, "No networking support on L4Re available.") 483 } 484 } 485 486 pub struct LookupHost { 487 original: *mut libc::addrinfo, 488 cur: *mut libc::addrinfo, 489 } 490 491 impl Iterator for LookupHost { 492 type Item = SocketAddr; next(&mut self) -> Option<SocketAddr>493 fn next(&mut self) -> Option<SocketAddr> { 494 None 495 } 496 } 497 498 impl LookupHost { port(&self) -> u16499 pub fn port(&self) -> u16 { 500 unimpl!(); 501 } 502 } 503 504 unsafe impl Sync for LookupHost {} 505 unsafe impl Send for LookupHost {} 506 507 impl TryFrom<&str> for LookupHost { 508 type Error = io::Error; 509 try_from(_v: &str) -> io::Result<LookupHost>510 fn try_from(_v: &str) -> io::Result<LookupHost> { 511 unimpl!(); 512 } 513 } 514 515 impl<'a> TryFrom<(&'a str, u16)> for LookupHost { 516 type Error = io::Error; 517 try_from(_v: (&'a str, u16)) -> io::Result<LookupHost>518 fn try_from(_v: (&'a str, u16)) -> io::Result<LookupHost> { 519 unimpl!(); 520 } 521 } 522 } 523