mirror of
https://github.com/OpenVPN/openvpn3.git
synced 2024-09-20 20:13:05 +02:00
51 lines
1.2 KiB
C++
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;
|
|
}
|