Changes for version 0.9 - 2026-05-18

  • Standardise POD formatting across all modules
  • Implement round-trip pack/unpack for clientid, sipserv, csr
  • Extract magic numbers into named constants across all modules
  • Add PCAP-based tests with README documentation for relay DORA, LEASEQUERY
  • Fix gaps in PCAP-based tests: add op/secs checks, missing options, correct names
  • Add PCAP-based test for DHCPINFORM, RELEASE, and User-Class (77)
  • Implement option 52 overload handling (RFC 2132 §9.3) and fix suboption bugs
  • Extract _nonempty helper for defined+length guards
  • Add structured option 82 suboption formatting with Cisco Circuit ID/Remote ID decoding
  • Add DHO_PACKETCABLE_DEPRECATED format entry (hexa)
  • Add DHO_GEOCONF format entry and suboption formats (int/byte)
  • Add DHO_NWIP_SUBOPTIONS format entries (byte/inet) for option 63
  • Add DHO_CCC format entries (inet/string/byte/int/hexa) for option 122
  • Fix packsuboptions double-packing and redundant outer length
  • Add DHO_USER_CLASS (77) support with userclass format type per RFC 3004
  • Add DHO_VENDOR_ENCAPSULATED_OPTIONS (43) suboption support with CableLabs DOCSIS codes
  • Fix CSR default route test: restore missing prefix assertion
  • Document packsuboptions canonical TLV wire format in POD
  • Use Ref::Util instead of bare ref for type checks
  • Tweak imports, standardise shebangs, clean up test pragma ordering
  • Remove Travis CI config (service defunct), TODO file, and PLAN from tracking
  • RFC 3396: chunk options >255 bytes on serialize, concatenate duplicates on parse
  • Add $Net::DHCP::multi_value_array_ref for arrayref option values
  • Bump minimum Perl to 5.10.0
  • Rename addOption* / addOptionValue to setOption*/setOptionValue; add pushOptionValue with accumulation and backward-compat deprecation aliases
  • Add hexa format support to top-level setOptionValue/getOptionValue dispatch
  • Fix suboption vs suboptions string mismatch in setOptionValue/pushOptionValue
  • Add inets2 to is_list_format for pushOptionValue compatibility
  • Fix packsipserv force_type ip to use packinets() instead of raw string
  • Fix serialize suboption chunking: guard empty chunk push, croak on oversized entry
  • Clear sub_options_order in marshall() to prevent stale state
  • Add odd-length hex warning in _pack_circuit_id/_pack_remote_id
  • Update POD for renamed methods with deprecation notices; use RFC 5737 addresses

Documentation

Modules

Object methods to create a DHCP packet
Constants for DHCP codes and options
Object methods to create a DHCP packet.
Attribute methods for Net::DHCP::Packet
Object methods for IPv4 in Net::DHCP
Option ordering quirks for Net::DHCP