OpenSDN source code
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

◆ Bitmap

typedef boost::dynamic_bitset DhcpLeaseDb::Bitmap
private

Definition at line 73 of file dhcp_lease_db.h.

Constructor & Destructor Documentation

◆ DhcpLeaseDb()

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::~DhcpLeaseDb ( )
virtual

Definition at line 32 of file dhcp_lease_db.cc.

Here is the call graph for this function:

Member Function Documentation

◆ AddressToIndex()

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

Definition at line 195 of file dhcp_lease_db.cc.

◆ Allocate()

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:

◆ ClearLeases()

void DhcpLeaseDb::ClearLeases ( )

Definition at line 209 of file dhcp_lease_db.cc.

Here is the call graph for this function:

◆ CreateLeaseFile()

void DhcpLeaseDb::CreateLeaseFile ( )
private

Definition at line 228 of file dhcp_lease_db.cc.

Here is the call graph for this function:

◆ DISALLOW_COPY_AND_ASSIGN()

DhcpLeaseDb::DISALLOW_COPY_AND_ASSIGN ( DhcpLeaseDb  )
private

◆ IndexToAddress()

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

Definition at line 190 of file dhcp_lease_db.cc.

◆ IsReservedAddress()

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

Definition at line 199 of file dhcp_lease_db.cc.

◆ leases()

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

Definition at line 67 of file dhcp_lease_db.h.

◆ LeaseTimerExpiry()

bool DhcpLeaseDb::LeaseTimerExpiry ( )
private

Definition at line 111 of file dhcp_lease_db.cc.

Here is the call graph for this function:

◆ LoadLeaseFile()

void DhcpLeaseDb::LoadLeaseFile ( )
private

Definition at line 306 of file dhcp_lease_db.cc.

Here is the call graph for this function:

◆ ParseLease()

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:

◆ ParseLeaseFile()

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:

◆ PersistLeaseRecord()

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:

◆ PersistLeaseRecords()

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:

◆ plen()

uint8_t DhcpLeaseDb::plen ( ) const
inline

Definition at line 66 of file dhcp_lease_db.h.

◆ ReadLeaseFile()

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

Definition at line 312 of file dhcp_lease_db.cc.

Here is the call graph for this function:

◆ Release()

bool DhcpLeaseDb::Release ( const MacAddress mac)

Definition at line 98 of file dhcp_lease_db.cc.

Here is the call graph for this function:

◆ ReserveAddresses()

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:

◆ set_lease_timeout()

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:

◆ subnet()

Ip4Address DhcpLeaseDb::subnet ( ) const
inline

Definition at line 65 of file dhcp_lease_db.h.

◆ Update()

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:

◆ UpdateLease()

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:

◆ UpdateLeaseFileName()

void DhcpLeaseDb::UpdateLeaseFileName ( const std::string &  name)
private

◆ WriteLeaseRecord()

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

◆ DhcpTest

friend class DhcpTest
friend

Definition at line 72 of file dhcp_lease_db.h.

Member Data Documentation

◆ kDhcpLeaseTimer

const uint32_t DhcpLeaseDb::kDhcpLeaseTimer = 300000
static

Definition at line 35 of file dhcp_lease_db.h.

◆ lease_bitmap_

Bitmap DhcpLeaseDb::lease_bitmap_
private

Definition at line 98 of file dhcp_lease_db.h.

◆ lease_filename_

std::string DhcpLeaseDb::lease_filename_
private

Definition at line 107 of file dhcp_lease_db.h.

◆ lease_timeout_

uint32_t DhcpLeaseDb::lease_timeout_
private

Definition at line 105 of file dhcp_lease_db.h.

◆ lease_update_count_

uint32_t DhcpLeaseDb::lease_update_count_
private

Definition at line 104 of file dhcp_lease_db.h.

◆ leases_

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

Definition at line 101 of file dhcp_lease_db.h.

◆ max_lease_update_count_

uint32_t DhcpLeaseDb::max_lease_update_count_
private

Definition at line 103 of file dhcp_lease_db.h.

◆ plen_

uint8_t DhcpLeaseDb::plen_
private

Definition at line 97 of file dhcp_lease_db.h.

◆ released_lease_bitmap_

Bitmap DhcpLeaseDb::released_lease_bitmap_
private

Definition at line 99 of file dhcp_lease_db.h.

◆ reserve_addresses_

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

Definition at line 100 of file dhcp_lease_db.h.

◆ subnet_

Ip4Address DhcpLeaseDb::subnet_
private

Definition at line 96 of file dhcp_lease_db.h.

◆ timer_

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: