0
0
mirror of https://github.com/OpenVPN/openvpn3.git synced 2024-09-20 20:13:05 +02:00
openvpn3/test/misc/pool.cpp

51 lines
1.2 KiB
C++

#include <iostream>
#include <openvpn/addr/ip.hpp>
#include <openvpn/addr/pool.hpp>
using namespace openvpn;
int main()
{
try {
IP::Pool pool;
pool.add_range(IP::Range(IP::Addr::from_string("1.2.3.4"), 16));
pool.add_range(IP::Range(IP::Addr::from_string("Fe80::23a1:b152"), 4));
pool.add_addr(IP::Addr::from_string("10.10.1.1"));
std::cout << "LF " << pool.load_factor() << std::endl;
const bool b = pool.acquire_specific_addr(IP::Addr::from_string("1.2.3.10"));
std::cout << "GET 10: " << b << std::endl;
for (int i = 0; ; ++i)
{
IP::Addr addr;
if (i == 7)
{
std::cout << "REL 7" << std::endl;
pool.release_addr(IP::Addr::from_string("1.2.3.7"));
}
else if (i == 11)
{
std::cout << "REL 3,4,5" << std::endl;
pool.release_addr(IP::Addr::from_string("1.2.3.3"));
pool.release_addr(IP::Addr::from_string("1.2.3.4"));
pool.release_addr(IP::Addr::from_string("1.2.3.5"));
}
else
{
if (pool.acquire_addr(addr))
{
std::cout << addr << " (" << pool.n_in_use() << ")" << std::endl;
}
else
break;
}
}
}
catch (const std::exception& e)
{
std::cerr << "Exception: " << e.what() << std::endl;
return 1;
}
return 0;
}