diff options
| author | Luqman Aden <laden@csclub.uwaterloo.ca> | 2012-10-19 19:28:58 -0400 |
|---|---|---|
| committer | Brian Anderson <banderson@mozilla.com> | 2012-10-20 17:17:10 -0700 |
| commit | 0e2437bf5d4a1f863888d4b0b5995a695f966e73 (patch) | |
| tree | a9c07251373f138edc32883556e6ea62cd8e5ad2 /src/libstd/net_ip.rs | |
| parent | 15777de957642ebace789bec747b4269ca9883b7 (diff) | |
| download | rust-0e2437bf5d4a1f863888d4b0b5995a695f966e73.tar.gz rust-0e2437bf5d4a1f863888d4b0b5995a695f966e73.zip | |
uv: implement a way to get client's ip/port.
Diffstat (limited to 'src/libstd/net_ip.rs')
| -rw-r--r-- | src/libstd/net_ip.rs | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/src/libstd/net_ip.rs b/src/libstd/net_ip.rs index cf5323c498b..5d78fb19bab 100644 --- a/src/libstd/net_ip.rs +++ b/src/libstd/net_ip.rs @@ -10,8 +10,10 @@ use addrinfo = uv::ll::addrinfo; use uv_getaddrinfo_t = uv::ll::uv_getaddrinfo_t; use uv_ip4_addr = uv::ll::ip4_addr; use uv_ip4_name = uv::ll::ip4_name; +use uv_ip4_port = uv::ll::ip4_port; use uv_ip6_addr = uv::ll::ip6_addr; use uv_ip6_name = uv::ll::ip6_name; +use uv_ip6_port = uv::ll::ip6_port; use uv_getaddrinfo = uv::ll::getaddrinfo; use uv_freeaddrinfo = uv::ll::freeaddrinfo; use create_uv_getaddrinfo_t = uv::ll::getaddrinfo_t; @@ -33,11 +35,11 @@ type ParseAddrErr = { }; /** - * Convert a `ip_addr` to a str + * Convert a `IpAddr` to a str * * # Arguments * - * * ip - a `std::net::ip::ip_addr` + * * ip - a `std::net::ip::IpAddr` */ pub fn format_addr(ip: &IpAddr) -> ~str { match *ip { @@ -58,6 +60,23 @@ pub fn format_addr(ip: &IpAddr) -> ~str { } } +/** + * Get the associated port + * + * # Arguments + * * ip - a `std::net::ip::IpAddr` + */ +pub fn get_port(ip: &IpAddr) -> uint { + match *ip { + Ipv4(ref addr) => unsafe { + uv_ip4_port(addr) + }, + Ipv6(ref addr) => unsafe { + uv_ip6_port(addr) + } + } +} + /// Represents errors returned from `net::ip::get_addr()` enum IpGetAddrErr { GetAddrUnknownError |
