OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
DhcpLeaseDb Class Reference

#include <dhcp_lease_db.h>

Collaboration diagram for DhcpLeaseDb:

Classes

struct  DhcpLease
 

Public Member Functions

 DhcpLeaseDb (const Ip4Address &subnet, uint8_t plen, const std::vector< Ip4Address > &reserve_addresses, const std::string &lease_filename, boost::asio::io_context &io)
 
virtual ~DhcpLeaseDb ()
 
void Update (const Ip4Address &subnet, uint8_t plen, const std::vector< Ip4Address > &reserve_addresses)
 
bool Allocate (const MacAddress &mac, Ip4Address *address, uint64_t lease)
 
bool Release (const MacAddress &mac)
 
Ip4Address subnet () const
 
uint8_t plen () const
 
const std::set< DhcpLease > & leases () const
 
void ClearLeases ()
 
void set_lease_timeout (uint32_t timeout)
 

Static Public Attributes

static const uint32_t kDhcpLeaseTimer = 300000
 

Private Types

typedef boost::dynamic_bitset Bitmap
 

Private Member Functions

bool LeaseTimerExpiry ()
 
void UpdateLease (const MacAddress &mac, const Ip4Address &ip, uint64_t expiry, bool released)
 
void ReserveAddresses (const std::vector< Ip4Address > &addresses, bool subnet_change)
 
void IndexToAddress (size_t index, Ip4Address *address) const
 
size_t AddressToIndex (const Ip4Address &address) const
 
bool IsReservedAddress (const Ip4Address &address) const
 
void UpdateLeaseFileName (const std::string &name)
 
void CreateLeaseFile ()
 
void PersistLeaseRecord (const MacAddress &mac, const Ip4Address &ip, const uint64_t &expiry, bool released)
 
void PersistLeaseRecords (const std::vector< DhcpLease > &leases)
 
void WriteLeaseRecord (std::ofstream &lease_ofstream, const MacAddress &mac, const Ip4Address &ip, const uint64_t &expiry, bool released)
 
void LoadLeaseFile ()
 
void ReadLeaseFile (std::string &leases)
 
void ParseLeaseFile (const std::string &leases)
 
void ParseLease (const pugi::xml_node &lease)
 
 DISALLOW_COPY_AND_ASSIGN (DhcpLeaseDb)
 

Private Attributes

Ip4Address subnet_
 
uint8_t plen_
 
Bitmap lease_bitmap_
 
Bitmap released_lease_bitmap_
 
std::vector< Ip4Addressreserve_addresses_
 
std::set< DhcpLeaseleases_
 
uint32_t max_lease_update_count_
 
uint32_t lease_update_count_
 
uint32_t lease_timeout_
 
Timertimer_
 
std::string lease_filename_
 

Friends

class DhcpTest
 

Detailed Description

Definition at line 33 of file dhcp_lease_db.h.

Member Typedef Documentation

typedef boost::dynamic_bitset DhcpLeaseDb::Bitmap
private

Definition at line 73 of file dhcp_lease_db.h.

Constructor & Destructor Documentation

DhcpLeaseDb::DhcpLeaseDb ( const Ip4Address subnet,
uint8_t  plen,
const std::vector< Ip4Address > &  reserve_addresses,
const std::string &  lease_filename,
boost::asio::io_context &  io 
)

Definition at line 15 of file dhcp_lease_db.cc.

Here is the call graph for this function:

DhcpLeaseDb::~DhcpLeaseDb ( )
virtual

Definition at line 32 of file dhcp_lease_db.cc.

Here is the call graph for this function:

Member Function Documentation

size_t DhcpLeaseDb::AddressToIndex ( const Ip4Address address) const
private

Definition at line 195 of file dhcp_lease_db.cc.

bool DhcpLeaseDb::Allocate ( const MacAddress mac,
Ip4Address address,
uint64_t  lease 
)

Definition at line 57 of file dhcp_lease_db.cc.

Here is the call graph for this function:

void DhcpLeaseDb::ClearLeases ( )

Definition at line 209 of file dhcp_lease_db.cc.

Here is the call graph for this function:

void DhcpLeaseDb::CreateLeaseFile ( )
private

Definition at line 228 of file dhcp_lease_db.cc.

Here is the call graph for this function:

DhcpLeaseDb::DISALLOW_COPY_AND_ASSIGN ( DhcpLeaseDb  )
private
void DhcpLeaseDb::IndexToAddress ( size_t  index,
Ip4Address address 
) const
private

Definition at line 190 of file dhcp_lease_db.cc.

bool DhcpLeaseDb::IsReservedAddress ( const Ip4Address address) const
private

Definition at line 199 of file dhcp_lease_db.cc.

const std::set<DhcpLease>& DhcpLeaseDb::leases ( ) const
inline

Definition at line 67 of file dhcp_lease_db.h.

bool DhcpLeaseDb::LeaseTimerExpiry ( )
private

Definition at line 111 of file dhcp_lease_db.cc.

Here is the call graph for this function:

void DhcpLeaseDb::LoadLeaseFile ( )
private

Definition at line 306 of file dhcp_lease_db.cc.

Here is the call graph for this function:

void DhcpLeaseDb::ParseLease ( const pugi::xml_node &  lease)
private

Definition at line 350 of file dhcp_lease_db.cc.

Here is the call graph for this function:

void DhcpLeaseDb::ParseLeaseFile ( const std::string &  leases)
private

Definition at line 330 of file dhcp_lease_db.cc.

Here is the call graph for this function:

void DhcpLeaseDb::PersistLeaseRecord ( const MacAddress mac,
const Ip4Address ip,
const uint64_t &  expiry,
bool  released 
)
private

Definition at line 249 of file dhcp_lease_db.cc.

Here is the call graph for this function:

void DhcpLeaseDb::PersistLeaseRecords ( const std::vector< DhcpLease > &  leases)
private

Definition at line 268 of file dhcp_lease_db.cc.

Here is the call graph for this function:

uint8_t DhcpLeaseDb::plen ( ) const
inline

Definition at line 66 of file dhcp_lease_db.h.

void DhcpLeaseDb::ReadLeaseFile ( std::string &  leases)
private

Definition at line 312 of file dhcp_lease_db.cc.

bool DhcpLeaseDb::Release ( const MacAddress mac)

Definition at line 98 of file dhcp_lease_db.cc.

Here is the call graph for this function:

void DhcpLeaseDb::ReserveAddresses ( const std::vector< Ip4Address > &  addresses,
bool  subnet_change 
)
private

Definition at line 165 of file dhcp_lease_db.cc.

Here is the call graph for this function:

void DhcpLeaseDb::set_lease_timeout ( uint32_t  timeout)

Definition at line 218 of file dhcp_lease_db.cc.

Here is the call graph for this function:

Ip4Address DhcpLeaseDb::subnet ( ) const
inline

Definition at line 65 of file dhcp_lease_db.h.

void DhcpLeaseDb::Update ( const Ip4Address subnet,
uint8_t  plen,
const std::vector< Ip4Address > &  reserve_addresses 
)

Definition at line 40 of file dhcp_lease_db.cc.

Here is the call graph for this function:

void DhcpLeaseDb::UpdateLease ( const MacAddress mac,
const Ip4Address ip,
uint64_t  expiry,
bool  released 
)
private

Definition at line 145 of file dhcp_lease_db.cc.

Here is the call graph for this function:

void DhcpLeaseDb::UpdateLeaseFileName ( const std::string &  name)
private
void DhcpLeaseDb::WriteLeaseRecord ( std::ofstream &  lease_ofstream,
const MacAddress mac,
const Ip4Address ip,
const uint64_t &  expiry,
bool  released 
)
private

Definition at line 288 of file dhcp_lease_db.cc.

Here is the call graph for this function:

Friends And Related Function Documentation

friend class DhcpTest
friend

Definition at line 72 of file dhcp_lease_db.h.

Member Data Documentation

const uint32_t DhcpLeaseDb::kDhcpLeaseTimer = 300000
static

Definition at line 35 of file dhcp_lease_db.h.

Bitmap DhcpLeaseDb::lease_bitmap_
private

Definition at line 98 of file dhcp_lease_db.h.

std::string DhcpLeaseDb::lease_filename_
private

Definition at line 107 of file dhcp_lease_db.h.

uint32_t DhcpLeaseDb::lease_timeout_
private

Definition at line 105 of file dhcp_lease_db.h.

uint32_t DhcpLeaseDb::lease_update_count_
private

Definition at line 104 of file dhcp_lease_db.h.

std::set<DhcpLease> DhcpLeaseDb::leases_
private

Definition at line 101 of file dhcp_lease_db.h.

uint32_t DhcpLeaseDb::max_lease_update_count_
private

Definition at line 103 of file dhcp_lease_db.h.

uint8_t DhcpLeaseDb::plen_
private

Definition at line 97 of file dhcp_lease_db.h.

Bitmap DhcpLeaseDb::released_lease_bitmap_
private

Definition at line 99 of file dhcp_lease_db.h.

std::vector<Ip4Address> DhcpLeaseDb::reserve_addresses_
private

Definition at line 100 of file dhcp_lease_db.h.

Ip4Address DhcpLeaseDb::subnet_
private

Definition at line 96 of file dhcp_lease_db.h.

Timer* DhcpLeaseDb::timer_
private

Definition at line 106 of file dhcp_lease_db.h.


The documentation for this class was generated from the following files: