// Copyright 2013 The Rust Project Developers. See the COPYRIGHT // file at the top-level directory of this distribution and at // http://rust-lang.org/COPYRIGHT. // // Licensed under the Apache License, Version 2.0 or the MIT license // , at your // option. This file may not be copied, modified, or distributed // except according to those terms. use option::{Option, Some, None}; use result::{Ok, Err}; use rt::io::io_error; use rt::io::net::ip::IpAddr; use rt::rtio::{IoFactory, IoFactoryObject}; use rt::local::Local; pub mod tcp; pub mod udp; pub mod ip; #[cfg(unix)] pub mod unix; /// Simplistic name resolution pub fn get_host_addresses(host: &str) -> Option<~[IpAddr]> { /*! * Get the IP addresses for a given host name. * * Raises io_error on failure. */ let ipaddrs = unsafe { let io: *mut IoFactoryObject = Local::unsafe_borrow(); (*io).get_host_addresses(host) }; match ipaddrs { Ok(i) => Some(i), Err(ioerr) => { io_error::cond.raise(ioerr); None } } } #[cfg(test)] mod test { use option::Some; use rt::io::net::ip::Ipv4Addr; use super::*; #[test] fn dns_smoke_test() { let ipaddrs = get_host_addresses("localhost").unwrap(); let mut found_local = false; let local_addr = &Ipv4Addr(127, 0, 0, 1); for addr in ipaddrs.iter() { found_local = found_local || addr == local_addr; } assert!(found_local); } }