12#ifndef OPENVPN_SERVER_VPNSERVPOOL_H
13#define OPENVPN_SERVER_VPNSERVPOOL_H
43 std::ostringstream
os;
44 os <<
'[' <<
ip4 <<
' ' <<
ip6 <<
']';
77 unsigned int acquire(
IP46 &addr_pair,
const bool request_ipv6)
79 std::lock_guard<std::mutex> lock(
mutex);
80 unsigned int flags = 0;
83 if (request_ipv6 &&
netblock6().defined())
93 std::lock_guard<std::mutex> lock(
mutex);
111 const std::string &opt_name)
113 return opt.
exists(opt_name) || opt.
exists(opt_name +
"-ipv6");
unsigned int size() const
void add_range(const RangeType< ADDR > &range)
Adds range of addresses to pool (pool will own the addresses).
bool acquire_addr(ADDR &dest)
void release_addr(const ADDR &addr)
bool exists(const std::string &name) const
Reference count base class for objects tracked by RCPtr. Disallows copying and assignment.
const ClientNetblock & netblock6() const
const ClientNetblock & netblock4() const
IP46AutoRelease(Pool *pool_arg)
RCPtr< IP46AutoRelease > Ptr
static VPNServerNetblock init_snb_from_opt(const OptionList &opt)
unsigned int acquire(IP46 &addr_pair, const bool request_ipv6)
static bool configured(const OptionList &opt, const std::string &opt_name)
void release(IP46 &addr_pair)
Pool(const OptionList &opt)
#define OPENVPN_EXCEPTION(C)
std::string to_string() const
void add_routes(std::vector< IP::Route > &rtvec)