Skip to content

Common DHCP Options

This page shows the typed option workflow: assign native Python values to DhcpOptions, let the registered option type do the encoding, and inspect decoded values with repr().

Single IPv4 option

from pydhcp import DhcpOptions
from pydhcp.options import DhcpOptionCode

options = DhcpOptions()
options[DhcpOptionCode.SERVER_IDENTIFIER] = "192.0.2.1"

List of IPv4 addresses

from pydhcp import DhcpOptions
from pydhcp.options import DhcpOptionCode

options = DhcpOptions()
options[DhcpOptionCode.DNS] = ["192.0.2.53", "192.0.2.54"]

Boolean option

from pydhcp import DhcpOptions
from pydhcp.options import DhcpOptionCode

options = DhcpOptions()
options[DhcpOptionCode.RAPID_COMMIT] = True

Fixed-width integer option

from pydhcp import DhcpOptions
from pydhcp.options import DhcpOptionCode

options = DhcpOptions()
options[DhcpOptionCode.IP_ADDRESS_LEASE_TIME] = 3600

String option

from pydhcp import DhcpOptions
from pydhcp.options import DhcpOptionCode

options = DhcpOptions()
options[DhcpOptionCode.HOSTNAME] = "workstation-01"

Classless static route

from ipaddress import ip_network

from pydhcp import DhcpOptions
from pydhcp.options import DhcpOptionCode
from pydhcp.network import IPv4
from pydhcp.options.type import ClasslessRoute

options = DhcpOptions()
options[DhcpOptionCode.CLASSLESS_STATIC_ROUTE] = ClasslessRoute(
    IPv4("192.0.2.1"),
    ip_network("10.0.0.0/8"),
)

Domain search list

from pydhcp import DhcpOptions
from pydhcp.options import DhcpOptionCode

options = DhcpOptions()
options[DhcpOptionCode.DOMAIN_SEARCH] = ["example.internal", "lab.example.internal"]

Decoded display

DhcpOptions.items(decoded=True) returns typed values, so repr() now shows the improved type-specific output.

from ipaddress import ip_network

from pydhcp import DhcpOptions
from pydhcp.options import DhcpOptionCode
from pydhcp.network import IPv4
from pydhcp.options.type import Boolean, ClasslessRoute

options = DhcpOptions()
options[DhcpOptionCode.RAPID_COMMIT] = True
options[DhcpOptionCode.CLASSLESS_STATIC_ROUTE] = ClasslessRoute(
    IPv4("192.0.2.1"),
    ip_network("10.0.0.0/8"),
)

for code, value in options.items(decoded=True):
    print(code, repr(value))