#![allow(warnings)]
use std::env;
use net::{SocketAddr, SocketAddrV4, SocketAddrV6, Ipv4Addr, Ipv6Addr, ToSocketAddrs};
use std::sync::atomic::{AtomicUsize, Ordering};
static mut PORT: u16 = 0;
pub fn next_test_ip4() -> SocketAddr {
unsafe { PORT = PORT + 1; }
SocketAddr::V4(SocketAddrV4::new(Ipv4Addr::new(127, 0, 0, 1), unsafe { PORT + base_port() }))
}
pub fn next_test_ip6() -> SocketAddr {
unsafe { PORT = PORT + 1; }
SocketAddr::V6(SocketAddrV6::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1),
unsafe { PORT + base_port() }, 0, 0))
}
pub fn sa4(a: Ipv4Addr, p: u16) -> SocketAddr {
SocketAddr::V4(SocketAddrV4::new(a, p))
}
pub fn sa6(a: Ipv6Addr, p: u16) -> SocketAddr {
SocketAddr::V6(SocketAddrV6::new(a, p, 0, 0))
}
pub fn tsa<A: ToSocketAddrs>(a: A) -> Result<Vec<SocketAddr>, String> {
match a.to_socket_addrs() {
Ok(a) => Ok(a.collect()),
Err(e) => Err(e.to_string()),
}
}
fn base_port() -> u16 {
19600
}