DTC: DHCP Transaction Cache

The system provides a Python object alc.dtc that allows data to be cached temporarily between DHCP packets.

A DHCP transaction cache (DTC) is a short-lived cache during a DHCPv4/v6 transaction. The cache can be used to store user-chosen information or return ESM attributes. The DTC’s lifetime is only during a single DHCP transaction (for example, only between discovery and offer, or request and reply). This includes both alc.dtc.store() data and alc.dtc.setESM() data. DTC is also a transaction-specific cache, which means the cached information can only be accessed by the Python script running in the same DHCP transaction.

The alc.dtc object

Attributes

alc.dtc.derivedId

The derivedId attribute is an attribute which can be set by a Python script and be used as a LUDB match criterion. The current value can be read from this attribute. A new value for the derivedId can be set by assigning a new value to this attribute.

The type of this attribute is str.

If the derivedId is not supported, a RuntimeException is raised when retrieving or setting this attribute.

If no derivedId has been set, None is returned. This behavior has changed with respect to the Python 2 implementation.

Methods

alc.dtc.store(key, value, /)

Stores a value associated with a key.

Parameters
  • str (key) – key to associate the value with

  • bytes (value) – value to cache

Raises

RuntimeError – if the value cannot be stored.

alc.dtc.retrieve(key, /)

Retrieves a previously stored value.

Parameters

str (key) – key the value was associated with

Raises

KeyError – if no value is associated with the specified key

alc.dtc.setESM(key, value, /)

Sets an attribute on the current subscriber to the specified value.

Parameters
  • int (key) – Integer representing which attribute to set. See Constants for an enumeration of all supported attributes.

  • value – value to set the attribute to

Raises

KeyError if the key is not valid

Raises

ValueError if the type of the value or the actual value is not valid for the specified key.

alc.dtc.setDhcpv6LinkAddr(value, /)

Sets the DHCPv6 link-address.

Parameters

bytes (value) – the bytes-representation of an IPv6-address to set as link-address

alc.dtc.setDhcpv6ServerAddr(value, /)

Sets the DHCPv6 server-address.

Parameters

bytes (value) – the bytes-representation of an IPv6-address to set as server-address

Constants

The alc.dtc object provides a list of constants which can be used as a key parameter to choose which attribute to set. The following table lists all attributes and the supported object-types for the corresponding value.

Attribute

Types

subIdent

str

subProfileString

str

slaProfileString

str

ancpString

str

appProfileString

str

intDestId

str

catMapString

str

msapGroupInterface

str

msapPolicy

str

msapServiceId

str | int

retailServiceId

str | int

ipAddress

str

ipv6Address

str

ipv6DelegatedPrefix

str

ipv6DelegatedPrefixLength

int

ipv6SlaacPrefix

str

ipv6WanPool

str

ipv6PrefixPool

str

accountingPolicy

str

dhcpv4ServerAddr

str

dhcpv4GIAddr

str

dhcpv4SrcAddr

str

dhcpv4Pool

str

dhcpv6LinkAddr

str

dhcpv6ServerAddr

str

dhcpv6SrcAddr

str

defGw

str

subnetMask

str

ipv4LeaseTime

int

ipv4PrimDns

str

ipv4SecDns

str

primNbns

str

secNbns

str

ipv6PrimDns

str

ipv6SecDns

str

dhcpv6PreferredLifetime

int

dhcpv6RebindTimer

int

dhcpv6RenewTimer

int

dhcpv6ValidLifetime

int

spiSharingGroupId

int

Breaking changes

Derived Id

Warning

With Python 2 API, reading a derived-id which is not yet set raises a RuntimeError. With Python 3, the value None is returned.