• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 macro_rules! unimpl {
2     () => {
3         return Err(io::const_io_error!(
4             io::ErrorKind::Unsupported,
5             "No networking available on L4Re.",
6         ));
7     };
8 }
9 
10 pub mod net {
11     #![allow(warnings)]
12     use crate::fmt;
13     use crate::io::{self, BorrowedCursor, IoSlice, IoSliceMut};
14     use crate::net::{Ipv4Addr, Ipv6Addr, Shutdown, SocketAddr};
15     use crate::os::unix::io::{AsFd, AsRawFd, BorrowedFd, FromRawFd, IntoRawFd, RawFd};
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             false
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             false
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         // This is used by sys_common code to abstract over Windows and Unix.
as_raw(&self) -> RawFd126         pub fn as_raw(&self) -> RawFd {
127             self.as_raw_fd()
128         }
129     }
130 
131     impl AsInner<FileDesc> for Socket {
132         #[inline]
as_inner(&self) -> &FileDesc133         fn as_inner(&self) -> &FileDesc {
134             &self.0
135         }
136     }
137 
138     impl FromInner<FileDesc> for Socket {
from_inner(file_desc: FileDesc) -> Socket139         fn from_inner(file_desc: FileDesc) -> Socket {
140             Socket(file_desc)
141         }
142     }
143 
144     impl IntoInner<FileDesc> for Socket {
into_inner(self) -> FileDesc145         fn into_inner(self) -> FileDesc {
146             self.0
147         }
148     }
149 
150     impl AsFd for Socket {
as_fd(&self) -> BorrowedFd<'_>151         fn as_fd(&self) -> BorrowedFd<'_> {
152             self.0.as_fd()
153         }
154     }
155 
156     impl AsRawFd for Socket {
157         #[inline]
as_raw_fd(&self) -> RawFd158         fn as_raw_fd(&self) -> RawFd {
159             self.0.as_raw_fd()
160         }
161     }
162 
163     impl IntoRawFd for Socket {
into_raw_fd(self) -> RawFd164         fn into_raw_fd(self) -> RawFd {
165             self.0.into_raw_fd()
166         }
167     }
168 
169     impl FromRawFd for Socket {
from_raw_fd(raw_fd: RawFd) -> Self170         unsafe fn from_raw_fd(raw_fd: RawFd) -> Self {
171             Self(FromRawFd::from_raw_fd(raw_fd))
172         }
173     }
174 
175     pub struct TcpStream {
176         inner: Socket,
177     }
178 
179     impl TcpStream {
connect(_: io::Result<&SocketAddr>) -> io::Result<TcpStream>180         pub fn connect(_: io::Result<&SocketAddr>) -> io::Result<TcpStream> {
181             unimpl!();
182         }
183 
connect_timeout(_: &SocketAddr, _: Duration) -> io::Result<TcpStream>184         pub fn connect_timeout(_: &SocketAddr, _: Duration) -> io::Result<TcpStream> {
185             unimpl!();
186         }
187 
188         #[inline]
socket(&self) -> &Socket189         pub fn socket(&self) -> &Socket {
190             &self.inner
191         }
192 
into_socket(self) -> Socket193         pub fn into_socket(self) -> Socket {
194             self.inner
195         }
196 
set_read_timeout(&self, _: Option<Duration>) -> io::Result<()>197         pub fn set_read_timeout(&self, _: Option<Duration>) -> io::Result<()> {
198             unimpl!();
199         }
200 
set_write_timeout(&self, _: Option<Duration>) -> io::Result<()>201         pub fn set_write_timeout(&self, _: Option<Duration>) -> io::Result<()> {
202             unimpl!();
203         }
204 
read_timeout(&self) -> io::Result<Option<Duration>>205         pub fn read_timeout(&self) -> io::Result<Option<Duration>> {
206             unimpl!();
207         }
208 
write_timeout(&self) -> io::Result<Option<Duration>>209         pub fn write_timeout(&self) -> io::Result<Option<Duration>> {
210             unimpl!();
211         }
212 
peek(&self, _: &mut [u8]) -> io::Result<usize>213         pub fn peek(&self, _: &mut [u8]) -> io::Result<usize> {
214             unimpl!();
215         }
216 
read(&self, _: &mut [u8]) -> io::Result<usize>217         pub fn read(&self, _: &mut [u8]) -> io::Result<usize> {
218             unimpl!();
219         }
220 
read_buf(&self, _: BorrowedCursor<'_>) -> io::Result<()>221         pub fn read_buf(&self, _: BorrowedCursor<'_>) -> io::Result<()> {
222             unimpl!();
223         }
224 
read_vectored(&self, _: &mut [IoSliceMut<'_>]) -> io::Result<usize>225         pub fn read_vectored(&self, _: &mut [IoSliceMut<'_>]) -> io::Result<usize> {
226             unimpl!();
227         }
228 
is_read_vectored(&self) -> bool229         pub fn is_read_vectored(&self) -> bool {
230             false
231         }
232 
write(&self, _: &[u8]) -> io::Result<usize>233         pub fn write(&self, _: &[u8]) -> io::Result<usize> {
234             unimpl!();
235         }
236 
write_vectored(&self, _: &[IoSlice<'_>]) -> io::Result<usize>237         pub fn write_vectored(&self, _: &[IoSlice<'_>]) -> io::Result<usize> {
238             unimpl!();
239         }
240 
is_write_vectored(&self) -> bool241         pub fn is_write_vectored(&self) -> bool {
242             false
243         }
244 
peer_addr(&self) -> io::Result<SocketAddr>245         pub fn peer_addr(&self) -> io::Result<SocketAddr> {
246             unimpl!();
247         }
248 
socket_addr(&self) -> io::Result<SocketAddr>249         pub fn socket_addr(&self) -> io::Result<SocketAddr> {
250             unimpl!();
251         }
252 
shutdown(&self, _: Shutdown) -> io::Result<()>253         pub fn shutdown(&self, _: Shutdown) -> io::Result<()> {
254             unimpl!();
255         }
256 
duplicate(&self) -> io::Result<TcpStream>257         pub fn duplicate(&self) -> io::Result<TcpStream> {
258             unimpl!();
259         }
260 
set_linger(&self, _: Option<Duration>) -> io::Result<()>261         pub fn set_linger(&self, _: Option<Duration>) -> io::Result<()> {
262             unimpl!();
263         }
264 
linger(&self) -> io::Result<Option<Duration>>265         pub fn linger(&self) -> io::Result<Option<Duration>> {
266             unimpl!();
267         }
268 
set_nodelay(&self, _: bool) -> io::Result<()>269         pub fn set_nodelay(&self, _: bool) -> io::Result<()> {
270             unimpl!();
271         }
272 
nodelay(&self) -> io::Result<bool>273         pub fn nodelay(&self) -> io::Result<bool> {
274             unimpl!();
275         }
276 
set_ttl(&self, _: u32) -> io::Result<()>277         pub fn set_ttl(&self, _: u32) -> io::Result<()> {
278             unimpl!();
279         }
280 
ttl(&self) -> io::Result<u32>281         pub fn ttl(&self) -> io::Result<u32> {
282             unimpl!();
283         }
284 
take_error(&self) -> io::Result<Option<io::Error>>285         pub fn take_error(&self) -> io::Result<Option<io::Error>> {
286             unimpl!();
287         }
288 
set_nonblocking(&self, _: bool) -> io::Result<()>289         pub fn set_nonblocking(&self, _: bool) -> io::Result<()> {
290             unimpl!();
291         }
292     }
293 
294     impl FromInner<Socket> for TcpStream {
from_inner(socket: Socket) -> TcpStream295         fn from_inner(socket: Socket) -> TcpStream {
296             TcpStream { inner: socket }
297         }
298     }
299 
300     impl fmt::Debug for TcpStream {
fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result301         fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
302             write!(f, "No networking support available on L4Re")
303         }
304     }
305 
306     pub struct TcpListener {
307         inner: Socket,
308     }
309 
310     impl TcpListener {
bind(_: io::Result<&SocketAddr>) -> io::Result<TcpListener>311         pub fn bind(_: io::Result<&SocketAddr>) -> io::Result<TcpListener> {
312             unimpl!();
313         }
314 
315         #[inline]
socket(&self) -> &Socket316         pub fn socket(&self) -> &Socket {
317             &self.inner
318         }
319 
into_socket(self) -> Socket320         pub fn into_socket(self) -> Socket {
321             self.inner
322         }
323 
socket_addr(&self) -> io::Result<SocketAddr>324         pub fn socket_addr(&self) -> io::Result<SocketAddr> {
325             unimpl!();
326         }
327 
accept(&self) -> io::Result<(TcpStream, SocketAddr)>328         pub fn accept(&self) -> io::Result<(TcpStream, SocketAddr)> {
329             unimpl!();
330         }
331 
duplicate(&self) -> io::Result<TcpListener>332         pub fn duplicate(&self) -> io::Result<TcpListener> {
333             unimpl!();
334         }
335 
set_ttl(&self, _: u32) -> io::Result<()>336         pub fn set_ttl(&self, _: u32) -> io::Result<()> {
337             unimpl!();
338         }
339 
ttl(&self) -> io::Result<u32>340         pub fn ttl(&self) -> io::Result<u32> {
341             unimpl!();
342         }
343 
set_only_v6(&self, _: bool) -> io::Result<()>344         pub fn set_only_v6(&self, _: bool) -> io::Result<()> {
345             unimpl!();
346         }
347 
only_v6(&self) -> io::Result<bool>348         pub fn only_v6(&self) -> io::Result<bool> {
349             unimpl!();
350         }
351 
take_error(&self) -> io::Result<Option<io::Error>>352         pub fn take_error(&self) -> io::Result<Option<io::Error>> {
353             unimpl!();
354         }
355 
set_nonblocking(&self, _: bool) -> io::Result<()>356         pub fn set_nonblocking(&self, _: bool) -> io::Result<()> {
357             unimpl!();
358         }
359     }
360 
361     impl FromInner<Socket> for TcpListener {
from_inner(socket: Socket) -> TcpListener362         fn from_inner(socket: Socket) -> TcpListener {
363             TcpListener { inner: socket }
364         }
365     }
366 
367     impl fmt::Debug for TcpListener {
fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result368         fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
369             write!(f, "No networking support available on L4Re.")
370         }
371     }
372 
373     pub struct UdpSocket {
374         inner: Socket,
375     }
376 
377     impl UdpSocket {
bind(_: io::Result<&SocketAddr>) -> io::Result<UdpSocket>378         pub fn bind(_: io::Result<&SocketAddr>) -> io::Result<UdpSocket> {
379             unimpl!();
380         }
381 
382         #[inline]
socket(&self) -> &Socket383         pub fn socket(&self) -> &Socket {
384             &self.inner
385         }
386 
into_socket(self) -> Socket387         pub fn into_socket(self) -> Socket {
388             self.inner
389         }
390 
peer_addr(&self) -> io::Result<SocketAddr>391         pub fn peer_addr(&self) -> io::Result<SocketAddr> {
392             unimpl!();
393         }
394 
socket_addr(&self) -> io::Result<SocketAddr>395         pub fn socket_addr(&self) -> io::Result<SocketAddr> {
396             unimpl!();
397         }
398 
recv_from(&self, _: &mut [u8]) -> io::Result<(usize, SocketAddr)>399         pub fn recv_from(&self, _: &mut [u8]) -> io::Result<(usize, SocketAddr)> {
400             unimpl!();
401         }
402 
peek_from(&self, _: &mut [u8]) -> io::Result<(usize, SocketAddr)>403         pub fn peek_from(&self, _: &mut [u8]) -> io::Result<(usize, SocketAddr)> {
404             unimpl!();
405         }
406 
send_to(&self, _: &[u8], _: &SocketAddr) -> io::Result<usize>407         pub fn send_to(&self, _: &[u8], _: &SocketAddr) -> io::Result<usize> {
408             unimpl!();
409         }
410 
duplicate(&self) -> io::Result<UdpSocket>411         pub fn duplicate(&self) -> io::Result<UdpSocket> {
412             unimpl!();
413         }
414 
set_read_timeout(&self, _: Option<Duration>) -> io::Result<()>415         pub fn set_read_timeout(&self, _: Option<Duration>) -> io::Result<()> {
416             unimpl!();
417         }
418 
set_write_timeout(&self, _: Option<Duration>) -> io::Result<()>419         pub fn set_write_timeout(&self, _: Option<Duration>) -> io::Result<()> {
420             unimpl!();
421         }
422 
read_timeout(&self) -> io::Result<Option<Duration>>423         pub fn read_timeout(&self) -> io::Result<Option<Duration>> {
424             unimpl!();
425         }
426 
write_timeout(&self) -> io::Result<Option<Duration>>427         pub fn write_timeout(&self) -> io::Result<Option<Duration>> {
428             unimpl!();
429         }
430 
set_broadcast(&self, _: bool) -> io::Result<()>431         pub fn set_broadcast(&self, _: bool) -> io::Result<()> {
432             unimpl!();
433         }
434 
broadcast(&self) -> io::Result<bool>435         pub fn broadcast(&self) -> io::Result<bool> {
436             unimpl!();
437         }
438 
set_multicast_loop_v4(&self, _: bool) -> io::Result<()>439         pub fn set_multicast_loop_v4(&self, _: bool) -> io::Result<()> {
440             unimpl!();
441         }
442 
multicast_loop_v4(&self) -> io::Result<bool>443         pub fn multicast_loop_v4(&self) -> io::Result<bool> {
444             unimpl!();
445         }
446 
set_multicast_ttl_v4(&self, _: u32) -> io::Result<()>447         pub fn set_multicast_ttl_v4(&self, _: u32) -> io::Result<()> {
448             unimpl!();
449         }
450 
multicast_ttl_v4(&self) -> io::Result<u32>451         pub fn multicast_ttl_v4(&self) -> io::Result<u32> {
452             unimpl!();
453         }
454 
set_multicast_loop_v6(&self, _: bool) -> io::Result<()>455         pub fn set_multicast_loop_v6(&self, _: bool) -> io::Result<()> {
456             unimpl!();
457         }
458 
multicast_loop_v6(&self) -> io::Result<bool>459         pub fn multicast_loop_v6(&self) -> io::Result<bool> {
460             unimpl!();
461         }
462 
join_multicast_v4(&self, _: &Ipv4Addr, _: &Ipv4Addr) -> io::Result<()>463         pub fn join_multicast_v4(&self, _: &Ipv4Addr, _: &Ipv4Addr) -> io::Result<()> {
464             unimpl!();
465         }
466 
join_multicast_v6(&self, _: &Ipv6Addr, _: u32) -> io::Result<()>467         pub fn join_multicast_v6(&self, _: &Ipv6Addr, _: u32) -> io::Result<()> {
468             unimpl!();
469         }
470 
leave_multicast_v4(&self, _: &Ipv4Addr, _: &Ipv4Addr) -> io::Result<()>471         pub fn leave_multicast_v4(&self, _: &Ipv4Addr, _: &Ipv4Addr) -> io::Result<()> {
472             unimpl!();
473         }
474 
leave_multicast_v6(&self, _: &Ipv6Addr, _: u32) -> io::Result<()>475         pub fn leave_multicast_v6(&self, _: &Ipv6Addr, _: u32) -> io::Result<()> {
476             unimpl!();
477         }
478 
set_ttl(&self, _: u32) -> io::Result<()>479         pub fn set_ttl(&self, _: u32) -> io::Result<()> {
480             unimpl!();
481         }
482 
ttl(&self) -> io::Result<u32>483         pub fn ttl(&self) -> io::Result<u32> {
484             unimpl!();
485         }
486 
take_error(&self) -> io::Result<Option<io::Error>>487         pub fn take_error(&self) -> io::Result<Option<io::Error>> {
488             unimpl!();
489         }
490 
set_nonblocking(&self, _: bool) -> io::Result<()>491         pub fn set_nonblocking(&self, _: bool) -> io::Result<()> {
492             unimpl!();
493         }
494 
recv(&self, _: &mut [u8]) -> io::Result<usize>495         pub fn recv(&self, _: &mut [u8]) -> io::Result<usize> {
496             unimpl!();
497         }
498 
peek(&self, _: &mut [u8]) -> io::Result<usize>499         pub fn peek(&self, _: &mut [u8]) -> io::Result<usize> {
500             unimpl!();
501         }
502 
send(&self, _: &[u8]) -> io::Result<usize>503         pub fn send(&self, _: &[u8]) -> io::Result<usize> {
504             unimpl!();
505         }
506 
connect(&self, _: io::Result<&SocketAddr>) -> io::Result<()>507         pub fn connect(&self, _: io::Result<&SocketAddr>) -> io::Result<()> {
508             unimpl!();
509         }
510     }
511 
512     impl FromInner<Socket> for UdpSocket {
from_inner(socket: Socket) -> UdpSocket513         fn from_inner(socket: Socket) -> UdpSocket {
514             UdpSocket { inner: socket }
515         }
516     }
517 
518     impl fmt::Debug for UdpSocket {
fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result519         fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
520             write!(f, "No networking support on L4Re available.")
521         }
522     }
523 
524     pub struct LookupHost {
525         original: *mut libc::addrinfo,
526         cur: *mut libc::addrinfo,
527     }
528 
529     impl Iterator for LookupHost {
530         type Item = SocketAddr;
next(&mut self) -> Option<SocketAddr>531         fn next(&mut self) -> Option<SocketAddr> {
532             None
533         }
534     }
535 
536     impl LookupHost {
port(&self) -> u16537         pub fn port(&self) -> u16 {
538             0 // unimplemented
539         }
540     }
541 
542     unsafe impl Sync for LookupHost {}
543     unsafe impl Send for LookupHost {}
544 
545     impl TryFrom<&str> for LookupHost {
546         type Error = io::Error;
547 
try_from(_v: &str) -> io::Result<LookupHost>548         fn try_from(_v: &str) -> io::Result<LookupHost> {
549             unimpl!();
550         }
551     }
552 
553     impl<'a> TryFrom<(&'a str, u16)> for LookupHost {
554         type Error = io::Error;
555 
try_from(_v: (&'a str, u16)) -> io::Result<LookupHost>556         fn try_from(_v: (&'a str, u16)) -> io::Result<LookupHost> {
557             unimpl!();
558         }
559     }
560 }
561