NAME

Net::DHCP::Constants - Constants for DHCP codes and options

VERSION

version 0.9

SYNOPSIS

use Net::DHCP::Constants;
print "DHCP option SUBNET_MASK is ", DHO_SUBNET_MASK();

DESCRIPTION

Represents constants used in DHCP protocol, defined in RFC 1533, RFC 2132, RFC 2241, RFC 2485, RFC 2563, RFC 2937, RFC 3004, RFC 3011, RFC 3046.

TAGS

Constants can either be imported individually or in sets grouped by tag names. The tag names are:

  • bootp_codes

    Imports all of the basic BOOTP constants.

    (01) BOOTREQUEST
    (02) BOOTREPLY
  • htype_codes

    Imports all HTYPE (hardware address type) codes.

    (01) HTYPE_ETHER
    (06) HTYPE_IEEE802
    (08) HTYPE_FDDI

    Most common value is HTYPE_ETHER for Ethernet.

  • dhcp_message

    Import all DHCP Message codes.

    (rfc2132)

    (01) DHCPDISCOVER
    (02) DHCPOFFER
    (03) DHCPREQUEST
    (04) DHCPDECLINE
    (05) DHCPACK
    (06) DHCPNAK
    (07) DHCPRELEASE
    (08) DHCPINFORM
    (09) DHCPFORCERENEW

    (rfc4388)

    (10) DHCPLEASEQUERY
    (11) DHCPLEASEUNASSIGNED
    (12) DHCPLEASEUNKNOWN
    (13) DHCPLEASEACTIVE

    Nb. Previously Cisco used 13 for DHCPLEASEQUERY. If you need to decode or encode packets to communicate with such a system, you might simply use the integer rather than the constant - or use the updated constant and comment in your code appropriately.

  • nwip_codes

    Import all NWIP suboption codes for option 63 (rfc 2242). Format types are shown in parentheses.

    (001) NWIP_DOES_NOT_EXIST        (byte)
    (002) NWIP_EXIST_IN_OPTIONS_AREA (byte)
    (003) NWIP_EXIST_IN_SNAME_FILE   (byte)
    (004) NWIP_EXIST_BUT_TOO_BIG     (byte)
    (005) NWIP_NSQ_BROADCAST         (byte)
    (006) NWIP_PREFERRED_DSS         (inet)
    (007) NWIP_NEAREST_NWIP_SERVER   (inet)
    (008) NWIP_AUTORETRIES           (byte)
    (009) NWIP_AUTORETRY_SECS        (byte)
    (010) NWIP_1_1                   (byte)
    (011) NWIP_PRIMARY_DSS           (inet)
  • geoconf_codes

    Import all GEOCONF suboption codes for option 123 (rfc 6225). Format types are shown in parentheses.

    (001) GEO_METERS (int)
    (002) GEO_FLOORS (byte)
  • dho_codes

    Import all DHCP option codes.

    (000) DHO_PAD
    (001) DHO_SUBNET_MASK
    (002) DHO_TIME_OFFSET
    (003) DHO_ROUTERS
    (004) DHO_TIME_SERVERS
    (005) DHO_NAME_SERVERS
    (006) DHO_DOMAIN_NAME_SERVERS
    (007) DHO_LOG_SERVERS
    (008) DHO_COOKIE_SERVERS
    (009) DHO_LPR_SERVERS
    (010) DHO_IMPRESS_SERVERS
    (011) DHO_RESOURCE_LOCATION_SERVERS
    (012) DHO_HOST_NAME
    (013) DHO_BOOT_SIZE
    (014) DHO_MERIT_DUMP
    (015) DHO_DOMAIN_NAME
    (016) DHO_SWAP_SERVER
    (017) DHO_ROOT_PATH
    (018) DHO_EXTENSIONS_PATH
    (019) DHO_IP_FORWARDING
    (020) DHO_NON_LOCAL_SOURCE_ROUTING
    (021) DHO_POLICY_FILTER
    (022) DHO_MAX_DGRAM_REASSEMBLY
    (023) DHO_DEFAULT_IP_TTL
    (024) DHO_PATH_MTU_AGING_TIMEOUT
    (025) DHO_PATH_MTU_PLATEAU_TABLE
    (026) DHO_INTERFACE_MTU
    (027) DHO_ALL_SUBNETS_LOCAL
    (028) DHO_BROADCAST_ADDRESS
    (029) DHO_PERFORM_MASK_DISCOVERY
    (030) DHO_MASK_SUPPLIER
    (031) DHO_ROUTER_DISCOVERY
    (032) DHO_ROUTER_SOLICITATION_ADDRESS
    (033) DHO_STATIC_ROUTES
    (034) DHO_TRAILER_ENCAPSULATION
    (035) DHO_ARP_CACHE_TIMEOUT
    (036) DHO_IEEE802_3_ENCAPSULATION
    (037) DHO_DEFAULT_TCP_TTL
    (038) DHO_TCP_KEEPALIVE_INTERVAL
    (039) DHO_TCP_KEEPALIVE_GARBAGE
    (040) DHO_NIS_DOMAIN
    (041) DHO_NIS_SERVERS
    (042) DHO_NTP_SERVERS
    (043) DHO_VENDOR_ENCAPSULATED_OPTIONS
    (044) DHO_NETBIOS_NAME_SERVERS
    (045) DHO_NETBIOS_DD_SERVER
    (046) DHO_NETBIOS_NODE_TYPE
    (047) DHO_NETBIOS_SCOPE
    (048) DHO_FONT_SERVERS
    (049) DHO_X_DISPLAY_MANAGER
    (050) DHO_DHCP_REQUESTED_ADDRESS
    (051) DHO_DHCP_LEASE_TIME
    (052) DHO_DHCP_OPTION_OVERLOAD
    (053) DHO_DHCP_MESSAGE_TYPE
    (054) DHO_DHCP_SERVER_IDENTIFIER
    (055) DHO_DHCP_PARAMETER_REQUEST_LIST
    (056) DHO_DHCP_MESSAGE
    (057) DHO_DHCP_MAX_MESSAGE_SIZE
    (058) DHO_DHCP_RENEWAL_TIME
    (059) DHO_DHCP_REBINDING_TIME
    (060) DHO_VENDOR_CLASS_IDENTIFIER
    (061) DHO_DHCP_CLIENT_IDENTIFIER
    (062) DHO_NWIP_DOMAIN_NAME
    (063) DHO_NWIP_SUBOPTIONS
    (064) DHO_NISV3_DOMAIN
    (065) DHO_NISV3_SERVER
    (066) DHO_TFTP_SERVER
    (067) DHO_BOOTFILE
    (068) DHO_MOBILE_IP_HOME_AGENT
    (069) DHO_SMTP_SERVER
    (070) DHO_POP3_SERVER
    (071) DHO_NNTP_SERVER
    (072) DHO_WWW_SERVER
    (073) DHO_FINGER_SERVER
    (074) DHO_IRC_SERVER
    (075) DHO_STREETTALK_SERVER
    (076) DHO_STDA_SERVER
    (077) DHO_USER_CLASS
    (078) DHO_DIRECTORY_AGENT
    (079) DHO_SERVICE_SCOPE
    (080) DHO_RAPID_COMMIT
    (081) DHO_FQDN
    (082) DHO_DHCP_AGENT_OPTIONS
    (083) DHO_ISNS
    (085) DHO_NDS_SERVERS
    (086) DHO_NDS_TREE_NAME
    (087) DHO_NDS_CONTEXT
    (088) DHO_BCMCS_CONTROLLER_DOMAIN_NAME_LIST
    (089) DHO_BCMCS_CONTROLLER_IPV4_ADDRESS
    (090) DHO_AUTHENTICATION
    (091) DHO_CLIENT_LAST_TRANSACTION_TIME
    (092) DHO_ASSOCIATED_IP
    (093) DHO_CLIENT_SYSTEM
    (094) DHO_CLIENT_NDI
    (095) DHO_LDAP
    (097) DHO_UUID_GUID
    (098) DHO_USER_AUTHENTICATION_PROTOCOL
    (099) DHO_GEOCONF_CIVIC
    (100) DHO_PCODE
    (101) DHO_TCODE
    (112) DHO_NETINFO_ADDRESS
    (113) DHO_NETINFO_TAG
    (114) DHO_URL
    (116) DHO_AUTO_CONFIGURE
    (117) DHO_NAME_SERVICE_SEARCH
    (118) DHO_SUBNET_SELECTION
    (119) DHO_DOMAIN_SEARCH
    (120) DHO_SIP_SERVERS
    (121) DHO_CLASSLESS_STATIC_ROUTE
    (122) DHO_CCC
    (123) DHO_GEOCONF
    (124) DHO_VI_VENDOR_CLASS
    (125) DHO_VI_VENDOR_SPECIFIC_INFOMATION
    (128) DHO_ETHERBOOT_SIGNATURE
    (129) DHO_CALL_SERVER_ADDRESS
    (130) DHO_DISCRIMINATION_STRING
    (131) DHO_REMOTE_STATISTICS_SERVER
    (132) DHO_VLAN_ID
    (133) DHO_L2_PRIORITY
    (134) DHO_DSCP
    (135) DHO_HTTP_PROXY_FORPHONES
    (136) DHO_OPTION_PANA_AGENT
    (137) DHO_OPTION_PANA_V4_LOST
    (138) DHO_OPTION_CAPWAP_AC_V4
    (139) DHO_OPTION_IPV4_ADDRESS_MOS
    (140) DHO_OPTION_IPV4_FQDN_MOS
    (141) DHO_SIP_UA_CONFIGURATION_SERVICE_DOMAINS
    (150) DHO_ETHERBOOT
    (176) DHO_IP_TELEPHONE
    (177) DHO_PACKETCABLE_DEPRECATED
    (208) DHO_PXELINUX_MAGIC
    (209) DHO_CONFIGURATION_FILE
    (210) DHO_PATH_PREFIX
    (211) DHO_REBOOT_TIME
    (212) DHO_OPTION_6RD
    (213) DHO_OPTION_V4_ACCESS_DOMAIN
    (220) DHO_SUBNET_ALLOCATION
    (221) DHO_VIRTUAL_SUBNET
    (249) DHO_CLASSLESS_STATIC_ROUTE_MS
    (255) DHO_END
  • ccc_codes

    Import all CableLabs Client Configuration (CCC) suboption codes for option 122. Format types are shown in parentheses.

    (001) CCC_PRIMARY_DHCP_SERVER        (inet)
    (002) CCC_SECONDARY_DHCP_SERVER      (inet)
    (003) CCC_PROVISIONING_SERVER        (inet)
    (004) CCC_AS_REQ_AS_REP_BACKOFFRETRY (hexa)
    (005) CCC_AP_REQ_AS_REP_BACKOFFRETRY (hexa)
    (006) CCC_KERBEROS_REALM             (string)
    (007) CCC_TICKET_SERVER_UTILIZATION  (byte)
    (008) CCC_PROVISIONING_TIMER         (int)
    (009) CCC_SECURITY_TICKET_CONTROL    (byte)
    (010) CCC_KDC_SERVER                 (inet)
  • ra_codes

    Import all DHCP Agent (Relay Agent) suboption codes for option 82. Format types are shown in parentheses.

    (001) RAI_CIRCUIT_ID                              (circuit_id)
    (002) RAI_REMOTE_ID                               (remote_id)
    (003) RAI_AGENT_ID                                (hexa)
    (004) RAI_DOCSIS_CLASS                            (hexa)
    (005) RAI_LINK_SELECTION                          (inet)
    (006) RAI_SUBSCRIBER_ID                           (string)
    (007) RAI_RADIUS_ATTRIBUTES                       (hexa)
    (008) RAI_AUTHENTICATION                          (hexa)
    (009) RAI_VENDOR_INFO                             (hexa)
    (010) RAI_FLAGS                                   (byte)
    (011) RAI_SERVER_ID_OVERRIDE                      (inet)
    (151) RAI_DHCPV4_VIRTUAL_SUBNET_SELECTION         (hexa)
    (152) RAI_DHCPV4_VIRTUAL_SUBNET_SELECTION_CONTROL (hexa)
  • vendor43_codes

    Import all CableLabs DOCSIS suboption codes for option 43 (vendor encapsulated options). Format types are shown in parentheses.

    (002) VENDOR43_DEVICE_TYPE       (byte)
    (003) VENDOR43_ECM               (byte)
    (004) VENDOR43_SERIAL_NUMBER     (string)
    (005) VENDOR43_HW_VERSION        (string)
    (006) VENDOR43_SW_VERSION        (string)
    (007) VENDOR43_BOOT_ROM_VERSION  (string)
    (008) VENDOR43_OUI               (hexa)
    (009) VENDOR43_MODEL_NUMBER      (string)
    (010) VENDOR43_VENDOR_NAME       (string)
    (011) VENDOR43_PS_WAN_MAN_DATA   (hexa)
    (012) VENDOR43_CM_PS_SYSTEM_DESC (string)
    (013) VENDOR43_CM_PS_FIRMWARE_REV(string)
    (014) VENDOR43_FIREWALL_POLICY_FILE(string)
    (015) VENDOR43_ESAFES            (hexa)
    (016) VENDOR43_DEVICE_TPID       (hexa)
    (017) VENDOR43_DEVICE_SMID       (hexa)
    (018) VENDOR43_VIDEOSECURITYELEMENT(hexa)
    (031) VENDOR43_MTA_MAC_ADDRESS   (hexa)
    (032) VENDOR43_MTA_CORRELATION_ID(string)
    (051) VENDOR43_CARD_VENDOR_NAME  (string)
    (052) VENDOR43_CARD_CAPABILITY   (hexa)
    (053) VENDOR43_CARD_VENDOR_DEVICE_ID(hexa)
    (054) VENDOR43_CARD_ID           (string)

DHO_FORMATS

Format strings used by the option code to format mapping in %DHO_FORMATS. Each key is a DHCP option code; each value describes how that option is encoded on the wire.

The following formats are supported:

userclass

Encodes/decodes option 77 (DHO_USER_CLASS) per RFC 3004. Each [len][data] block represents one user class identifier. setOptionValue accepts either a scalar (single class) or an arrayref (multiple classes):

$packet->setOptionValue(77, 'ipxe');
# wire: \x04ipxe

$packet->setOptionValue(77, ['ipxe', 'BIOS']);
# wire: \x04ipxe\x04BIOS

getOptionValue returns a comma-separated string of all decoded blocks.

To supply pre-encoded RFC 3004 data, use setOptionRaw.

TO DO, LIMITATIONS

DHO_AUTHENTICATION (code 90, rfc 3118) has a structured format (protocol/algorithm/RDM/replay/auth-info) and is not parsed — returns raw bytes.

SEE ALSO

Net::DHCP::Packet, Net::DHCP::Options

AUTHOR

Dean Hamstead <dean@fragfest.com.au>

COPYRIGHT AND LICENSE

This software is Copyright (c) 2026 by Dean Hamstead.

This is free software, licensed under:

The MIT (X11) License