From 7e022c590fb0fb6083be7825df90045505e6fe47 Mon Sep 17 00:00:00 2001 From: Eric Reed Date: Mon, 17 Jun 2013 12:33:10 -0700 Subject: [PATCH] added a function to convert C's ipv4 data structure into the Rust ipv4 data structure. --- src/libstd/rt/uv/net.rs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/libstd/rt/uv/net.rs b/src/libstd/rt/uv/net.rs index 4079a2f7b770..0b77bd83958e 100644 --- a/src/libstd/rt/uv/net.rs +++ b/src/libstd/rt/uv/net.rs @@ -38,6 +38,14 @@ fn ip4_as_uv_ip4(addr: IpAddr, f: &fn(*sockaddr_in) -> T) -> T { } } +pub fn uv_ip4_to_ip4(addr: *sockaddr_in) -> IpAddr { + let ip4_size = 16; + let buf = vec::from_elem(ip4_size, 0u8); + unsafe { ip4_name(addr, &buf[0], ip4_size as u64) }; + let port = unsafe { ip4_port(addr) }; + Ipv4(buf[0], buf[1], buf[2], buf[3], port as u16) +} + // uv_stream t is the parent class of uv_tcp_t, uv_pipe_t, uv_tty_t // and uv_file_t pub struct StreamWatcher(*uvll::uv_stream_t);