Kea 2.7.6
isc::dhcp::Lease Struct Referenceabstract

a common structure for IPv4 and IPv6 leases More...

#include <lease.h>

+ Inheritance diagram for isc::dhcp::Lease:

Public Types

enum  Type { TYPE_NA = 0 , TYPE_TA = 1 , TYPE_PD = 2 , TYPE_V4 = 3 }
 Type of lease or pool. More...
 

Static Public Member Functions

static std::string lifetimeToText (uint32_t lifetime)
 Print lifetime.
 
static Type textToType (const std::string &text)
 Converts type name to the actual type.
 
static std::string typeToText (Type type)
 returns text representation of a lease type
 
- Static Public Member Functions inherited from isc::data::UserContext
static data::ElementPtr toElement (data::ConstElementPtr map)
 Copy an Element map.
 

Static Public Attributes

static const uint32_t INFINITY_LFT = 0xffffffff
 Infinity (means static, i.e. never expire)
 

Common lease states constants.

static const uint32_t STATE_DEFAULT = 0
 A lease in the default state.
 
static const uint32_t STATE_DECLINED = 1
 Declined lease.
 
static const uint32_t STATE_EXPIRED_RECLAIMED = 2
 Expired and reclaimed lease.
 
static const uint32_t STATE_RELEASED = 3
 Released lease held in the database for lease affinity.
 
isc::asiolink::IOAddress addr_
 IPv4 ot IPv6 address.
 
uint32_t valid_lft_
 Valid lifetime.
 
uint32_t current_valid_lft_
 Current valid lifetime.
 
uint32_t reuseable_valid_lft_
 Remaining valid lifetime.
 
time_t cltt_
 Client last transmission time.
 
time_t current_cltt_
 Current client last transmission time.
 
SubnetID subnet_id_
 Subnet identifier.
 
uint32_t pool_id_
 The pool id.
 
std::string hostname_
 Client hostname.
 
bool fqdn_fwd_
 Forward zone updated?
 
bool fqdn_rev_
 Reverse zone updated?
 
HWAddrPtr hwaddr_
 Client's MAC/hardware address.
 
uint32_t state_
 Holds the lease state(s).
 
static std::string basicStatesToText (const uint32_t state)
 Returns name(s) of the basic lease state(s).
 
static void syncCurrentExpirationTime (const Lease &from, Lease &to)
 Sync lease current expiration time with new value from another lease, so that additional operations can be done without performing extra read from the database.
 
 Lease (const isc::asiolink::IOAddress &addr, uint32_t valid_lft, SubnetID subnet_id, time_t cltt, const bool fqdn_fwd, const bool fqdn_rev, const std::string &hostname, const HWAddrPtr &hwaddr)
 Constructor.
 
virtual ~Lease ()
 Destructor.
 
virtual Lease::Type getType () const =0
 Returns Lease type.
 
virtual std::string toText () const =0
 Convert Lease to Printable Form.
 
bool expired () const
 returns true if the lease is expired
 
bool stateExpiredReclaimed () const
 Indicates if the lease is in the "expired-reclaimed" state.
 
bool stateDeclined () const
 Indicates if the lease is in the "declined" state.
 
bool hasIdenticalFqdn (const Lease &other) const
 Returns true if the other lease has equal FQDN data.
 
const std::vector< uint8_t > & getHWAddrVector () const
 Returns raw (as vector) hardware address.
 
int64_t getExpirationTime () const
 Returns lease expiration time.
 
virtual void decline (uint32_t probation_period)=0
 Sets lease to DECLINED state.
 
void updateCurrentExpirationTime ()
 Update lease current expiration time with new value, so that additional operations can be done without performing extra read from the database.
 
static void fromElementCommon (const LeasePtr &lease, const data::ConstElementPtr &element)
 Sets common (for v4 and v6) properties of the lease object.
 

Additional Inherited Members

- Public Member Functions inherited from isc::data::UserContext
void contextToElement (data::ElementPtr map) const
 Merge unparse a user_context object.
 
data::ConstElementPtr getContext () const
 Returns const pointer to the user context.
 
void setContext (const data::ConstElementPtr &ctx)
 Sets user context.
 
- Public Member Functions inherited from isc::data::CfgToElement
virtual ~CfgToElement ()
 Destructor.
 
virtual isc::data::ElementPtr toElement () const =0
 Unparse a configuration object.
 
- Protected Attributes inherited from isc::data::UserContext
data::ConstElementPtr user_context_
 Pointer to the user context (may be NULL)
 

Detailed Description

a common structure for IPv4 and IPv6 leases

This structure holds all information that is common between IPv4 and IPv6 leases.

Definition at line 31 of file lease.h.

Member Enumeration Documentation

◆ Type

Type of lease or pool.

Enumerator
TYPE_NA 

the lease contains non-temporary IPv6 address

TYPE_TA 

the lease contains temporary IPv6 address

TYPE_PD 

the lease contains IPv6 prefix (for prefix delegation)

TYPE_V4 

IPv4 lease.

Definition at line 46 of file lease.h.

Constructor & Destructor Documentation

◆ Lease()

isc::dhcp::Lease::Lease ( const isc::asiolink::IOAddress & addr,
uint32_t valid_lft,
SubnetID subnet_id,
time_t cltt,
const bool fqdn_fwd,
const bool fqdn_rev,
const std::string & hostname,
const HWAddrPtr & hwaddr )

Constructor.

Parameters
addrIP address
valid_lftLifetime of the lease
subnet_idSubnet identification
clttClient last transmission time
fqdn_fwdIf true, forward DNS update is performed for a lease.
fqdn_revIf true, reverse DNS update is performed for a lease.
hostnameFQDN of the client which gets the lease.
hwaddrHardware/MAC address
Note
When creating a new Lease object, current_cltt_ matches cltt_ and current_valid_lft_ matches valid_lft_. Any update operation that changes cltt_ or valid_lft_ in the database must also update the current_cltt_ and current_valid_lft_ after the database response so that additional operations can be performed on the same object. Failing to do so will result in the new actions to be rejected by the database.

Definition at line 43 of file lease.cc.

◆ ~Lease()

virtual isc::dhcp::Lease::~Lease ( )
inlinevirtual

Destructor.

Definition at line 113 of file lease.h.

Member Function Documentation

◆ basicStatesToText()

std::string isc::dhcp::Lease::basicStatesToText ( const uint32_t state)
static

Returns name(s) of the basic lease state(s).

Parameters
stateA numeric value holding a state information. Some states may be composite, i.e. the single state value maps to multiple logical states of the lease.
Returns
Comma separated list of state names.

Definition at line 93 of file lease.cc.

References STATE_DECLINED, STATE_DEFAULT, STATE_EXPIRED_RECLAIMED, and STATE_RELEASED.

Referenced by isc::dhcp::CSVLeaseFile4::append(), isc::dhcp::CSVLeaseFile6::append(), isc::dhcp::CSVLeaseFile4::next(), isc::dhcp::Lease4::statesToText(), and isc::dhcp::Lease6::statesToText().

◆ decline()

virtual void isc::dhcp::Lease::decline ( uint32_t probation_period)
pure virtual

Sets lease to DECLINED state.

All client identifying parameters will be stripped off (HWaddr, client_id, hostname), cltt will be set to current time and valid_lft to parameter specified as probation period. Note that This method only sets fields in the structure. It is caller's responsibility to clean up DDNS, bump up stats, log, call hooks ets.

Parameters
probation_periodlease lifetime will be set to this value

Implemented in isc::dhcp::Lease4, and isc::dhcp::Lease6.

◆ expired()

bool isc::dhcp::Lease::expired ( ) const

returns true if the lease is expired

Returns
true if the lease is expired

Definition at line 113 of file lease.cc.

References getExpirationTime(), INFINITY_LFT, and valid_lft_.

+ Here is the call graph for this function:

◆ fromElementCommon()

void isc::dhcp::Lease::fromElementCommon ( const LeasePtr & lease,
const data::ConstElementPtr & element )
staticprotected

Sets common (for v4 and v6) properties of the lease object.

This method is called by the fromElement methods of the Lease class derivations.

Parameters
[out]leasepointer to the lease object for which common properties should be set.
elementpointer to the data element object to be parsed.

Definition at line 140 of file lease.cc.

References isc::data::Element::boolean, isc::dhcp::HWAddr::fromText(), isc::dhcp::HTYPE_ETHER, isc::dhcp::HWAddr::hwaddr_, isc::data::Element::integer, isc_throw, isc::data::Element::map, STATE_EXPIRED_RECLAIMED, and isc::data::Element::string.

Referenced by isc::dhcp::Lease4::fromElement(), and isc::dhcp::Lease6::fromElement().

+ Here is the call graph for this function:

◆ getExpirationTime()

int64_t isc::dhcp::Lease::getExpirationTime ( ) const

Returns lease expiration time.

The lease expiration time is a sum of a client last transmission time and valid lifetime.

Definition at line 128 of file lease.cc.

References cltt_, and valid_lft_.

Referenced by expired().

◆ getHWAddrVector()

const std::vector< uint8_t > & isc::dhcp::Lease::getHWAddrVector ( ) const

Returns raw (as vector) hardware address.

This method is needed in multi-index container as key extractor. The const reference is only valid as long as the object that returned it. In the unlikely case when Lease4 does not have a hardware address, the function will return an empty vector.

Returns
const reference to the hardware address

Definition at line 351 of file lease.cc.

References hwaddr_.

◆ getType()

virtual Lease::Type isc::dhcp::Lease::getType ( ) const
pure virtual

Returns Lease type.

One of normal address, temporary address, or prefix, or V4

Implemented in isc::dhcp::Lease4, and isc::dhcp::Lease6.

◆ hasIdenticalFqdn()

bool isc::dhcp::Lease::hasIdenticalFqdn ( const Lease & other) const

Returns true if the other lease has equal FQDN data.

The comparison of the hostname is case insensitive.

Parameters
otherLease which FQDN data is to be compared with our lease.
Returns
Boolean value which indicates whether FQDN data of the other lease is equal to the FQDN data of our lease (true) or not (false).

Definition at line 133 of file lease.cc.

References fqdn_fwd_, fqdn_rev_, and hostname_.

◆ lifetimeToText()

std::string isc::dhcp::Lease::lifetimeToText ( uint32_t lifetime)
static

Print lifetime.

This converts a lifetime to a string taking into account the infinity special value.

Parameters
lifetimelifetime to print
Returns
a string representing the finite value or "infinity"

Definition at line 33 of file lease.cc.

References INFINITY_LFT.

Referenced by isc::dhcp::Dhcpv6Srv::assignIA_NA(), isc::dhcp::Dhcpv6Srv::assignIA_PD(), isc::dhcp::Dhcpv4Srv::assignLease(), isc::dhcp::Dhcpv6Srv::extendIA_NA(), isc::dhcp::Dhcpv6Srv::extendIA_PD(), isc::dhcp::Lease4::toText(), and isc::dhcp::Lease6::toText().

◆ stateDeclined()

bool isc::dhcp::Lease::stateDeclined ( ) const

Indicates if the lease is in the "declined" state.

Returns
true if the lease is in the "declined" state, false otherwise.

Definition at line 123 of file lease.cc.

References state_, and STATE_DECLINED.

◆ stateExpiredReclaimed()

bool isc::dhcp::Lease::stateExpiredReclaimed ( ) const

Indicates if the lease is in the "expired-reclaimed" state.

Returns
true if the lease is in the "expired-reclaimed" state, false otherwise.

Definition at line 118 of file lease.cc.

References state_, and STATE_EXPIRED_RECLAIMED.

◆ syncCurrentExpirationTime()

void isc::dhcp::Lease::syncCurrentExpirationTime ( const Lease & from,
Lease & to )
static

Sync lease current expiration time with new value from another lease, so that additional operations can be done without performing extra read from the database.

Note
The lease current expiration time is represented by the current_cltt_ and current_valid_lft_ and the new value by cltt_ and valid_lft_
Parameters
fromThe lease with latest value of expiration time.
[out]toThe lease that needs to be updated.

Definition at line 313 of file lease.cc.

References cltt_, current_cltt_, current_valid_lft_, and valid_lft_.

Referenced by isc::lease_cmds::LeaseCmdsImpl::addOrUpdate4(), isc::lease_cmds::LeaseCmdsImpl::addOrUpdate6(), and updateCurrentExpirationTime().

◆ textToType()

Lease::Type isc::dhcp::Lease::textToType ( const std::string & text)
static

Converts type name to the actual type.

Parameters
textlease type as text.
Returns
converted type.
Exceptions
BadValueif the text contains unsupported value.

Definition at line 75 of file lease.cc.

References isc_throw, TYPE_NA, TYPE_PD, TYPE_TA, and TYPE_V4.

Referenced by isc::dhcp::Lease6::fromElement().

◆ toText()

virtual std::string isc::dhcp::Lease::toText ( ) const
pure virtual

Convert Lease to Printable Form.

Returns
String form of the lease

Implemented in isc::dhcp::Lease4, and isc::dhcp::Lease6.

Referenced by isc::dhcp::operator<<().

◆ typeToText()

◆ updateCurrentExpirationTime()

void isc::dhcp::Lease::updateCurrentExpirationTime ( )

Update lease current expiration time with new value, so that additional operations can be done without performing extra read from the database.

Note
The lease current expiration time is represented by the current_cltt_ and current_valid_lft_ and the new value by cltt_ and valid_lft_

Definition at line 308 of file lease.cc.

References syncCurrentExpirationTime().

+ Here is the call graph for this function:

Member Data Documentation

◆ addr_

◆ cltt_

◆ current_cltt_

time_t isc::dhcp::Lease::current_cltt_

Current client last transmission time.

Specifies a timestamp giving the time when the last transmission from a client was received before update.

Definition at line 152 of file lease.h.

Referenced by isc::dhcp::Lease6::Lease6(), isc::dhcp::Lease6::Lease6(), isc::dhcp::Lease4::operator==(), isc::dhcp::Lease6::operator==(), and syncCurrentExpirationTime().

◆ current_valid_lft_

uint32_t isc::dhcp::Lease::current_valid_lft_

Current valid lifetime.

Expressed as number of seconds since cltt before update.

Definition at line 133 of file lease.h.

Referenced by isc::dhcp::Lease4::operator==(), isc::dhcp::Lease6::operator==(), and syncCurrentExpirationTime().

◆ fqdn_fwd_

bool isc::dhcp::Lease::fqdn_fwd_

◆ fqdn_rev_

bool isc::dhcp::Lease::fqdn_rev_

◆ hostname_

◆ hwaddr_

◆ INFINITY_LFT

const uint32_t isc::dhcp::Lease::INFINITY_LFT = 0xffffffff
static

◆ pool_id_

uint32_t isc::dhcp::Lease::pool_id_

◆ reuseable_valid_lft_

uint32_t isc::dhcp::Lease::reuseable_valid_lft_

Remaining valid lifetime.

Expressed as number of seconds since current time, also valid lifetime - age where age is old cltt - new cltt. The value 0 is used for the "cannot be reused" condition.

Definition at line 140 of file lease.h.

Referenced by isc::dhcp::Lease4::operator==(), and isc::dhcp::Lease6::operator==().

◆ state_

uint32_t isc::dhcp::Lease::state_

Holds the lease state(s).

This is the field that holds the lease state(s). Typically, a lease remains in a single states. However, it is possible to define a value for state which indicates that the lease remains in multiple logical states.

The defined states are represented by the "STATE_*" constants belonging to this class.

Definition at line 193 of file lease.h.

Referenced by isc::dhcp::CSVLeaseFile4::append(), isc::dhcp::CSVLeaseFile6::append(), isc::dhcp::Lease4::decline(), isc::dhcp::Lease6::decline(), isc::dhcp::Lease4::operator==(), isc::dhcp::Lease6::operator==(), stateDeclined(), stateExpiredReclaimed(), isc::dhcp::Lease4::toElement(), isc::dhcp::Lease6::toElement(), isc::dhcp::Lease4::toText(), and isc::dhcp::Lease6::toText().

◆ STATE_DECLINED

◆ STATE_DEFAULT

◆ STATE_EXPIRED_RECLAIMED

const uint32_t isc::dhcp::Lease::STATE_EXPIRED_RECLAIMED = 2
static

Expired and reclaimed lease.

Definition at line 75 of file lease.h.

Referenced by basicStatesToText(), fromElementCommon(), and stateExpiredReclaimed().

◆ STATE_RELEASED

const uint32_t isc::dhcp::Lease::STATE_RELEASED = 3
static

◆ subnet_id_

SubnetID isc::dhcp::Lease::subnet_id_

◆ valid_lft_


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