Create a sockaddr_in from an IPv4 address, and expose it as an opaque sockaddr suitable for usage by socket ioctls.
(ip_addr: net::Ipv4Addr)
| 60 | /// Create a sockaddr_in from an IPv4 address, and expose it as |
| 61 | /// an opaque sockaddr suitable for usage by socket ioctls. |
| 62 | fn create_sockaddr(ip_addr: net::Ipv4Addr) -> libc::sockaddr { |
| 63 | let addr_in = libc::sockaddr_in { |
| 64 | sin_family: libc::AF_INET as u16, |
| 65 | sin_port: 0, |
| 66 | sin_addr: libc::in_addr { |
| 67 | // Use network byte order (big endian). |
| 68 | s_addr: ip_addr.to_bits().to_be(), |
| 69 | }, |
| 70 | sin_zero: [0; 8], |
| 71 | }; |
| 72 | |
| 73 | // SAFETY: addr_in can be safely transmute to sockaddr |
| 74 | unsafe { mem::transmute(addr_in) } |
| 75 | } |
| 76 | |
| 77 | fn create_inet_socket(addr: IpAddr) -> Result<net::UdpSocket> { |
| 78 | let domain = match addr { |
no outgoing calls