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