about summary refs log tree commit diff
path: root/src/libstd/rt
diff options
context:
space:
mode:
authorEric Reed <ereed@mozilla.com>2013-06-17 12:33:10 -0700
committerEric Reed <ereed@mozilla.com>2013-06-17 12:33:10 -0700
commit7e022c590fb0fb6083be7825df90045505e6fe47 (patch)
treef828b2b71080108fb0cd091027afb5bf35d9e346 /src/libstd/rt
parentb51d1885befe2779fa3fdc9e2a9bafa4ef3d5cf2 (diff)
downloadrust-7e022c590fb0fb6083be7825df90045505e6fe47.tar.gz
rust-7e022c590fb0fb6083be7825df90045505e6fe47.zip
added a function to convert C's ipv4 data structure into the Rust ipv4 data structure.
Diffstat (limited to 'src/libstd/rt')
-rw-r--r--src/libstd/rt/uv/net.rs8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/libstd/rt/uv/net.rs b/src/libstd/rt/uv/net.rs
index 4079a2f7b77..0b77bd83958 100644
--- a/src/libstd/rt/uv/net.rs
+++ b/src/libstd/rt/uv/net.rs
@@ -38,6 +38,14 @@ fn ip4_as_uv_ip4<T>(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);