27 unsigned char bytes[16];
51 throw Exception(
"IP::random_subnet: template route not canonical: " + templ.
to_string());
static Addr netmask_from_prefix_len(Version v, const unsigned int prefix_len)
static Addr from_ipv6(IPv6::Addr addr)
static Addr from_ipv4(IPv4::Addr addr)
std::string to_string() const
bool is_canonical() const
static Addr from_uint32(const base_type addr)
static Addr from_byte_string(const unsigned char *bytestr)
Abstract base class for random number generators.
T rand_get()
Create a data object filled with random bytes.
void rand_fill(T &obj)
Fill a data object with random bytes.
#define OPENVPN_IP_THROW(ERR)
IPv6::Addr random_addr_v6(RandomAPI &prng)
RouteType< IP::Addr > Route
Route random_subnet(const Route &templ, const unsigned int prefix_len, RandomAPI &prng)
Addr random_addr(const Addr::Version v, RandomAPI &prng)
IPv4::Addr random_addr_v4(RandomAPI &prng)
Implementation of the base classes for random number generators.
int prefix_len(const IPv4::Addr::base_type mask)