Skip to content

Kea DHCPv4: Support option-def and vendor spaces (extends #9942) #267

Description

@Roskoov

Important notices

Is your feature request related to a problem? Please describe.

This extends opnsense/core#9942 (MVP for custom options, delivered in 26.1). The current Options tab supports standard DHCP options with custom encoding, but does not support Kea's option-def framework or vendor spaces.

Concrete use case: replacing an Orange (French ISP) Livebox with OPNsense requires sending DHCP option 125 (VIVSO, RFC 3925) with vendor sub-options in a vendor-3561 space. This needs:

  1. Custom option-def entries to define sub-options in a vendor space
  2. A space field in the option editor to target a vendor space instead of dhcp4
  3. Support for vivso-suboptions to declare the enterprise number

Without these, Kea's VIVSO framework cannot be used from the GUI. Encoding option 125 as raw hex in the current Options tab does not work — Kea parses only the enterprise number and drops the sub-option payload (confirmed via tcpdump: Unknown (125), length 5: 0.0.13.233.0 instead of the full vendor data).

The only workaround is the manual configuration file, which disables all GUI management.

Describe the solution you like

  • A section to define option-def entries (name, code, type, space)
  • A space dropdown or text field in the Option editor
  • These would allow the GUI to generate:
"option-def": [
  { "name": "vc-opt4", "code": 4, "type": "binary", "space": "vendor-3561" }
],
"option-data": [
  { "name": "vivso-suboptions", "data": "3561" },
  { "name": "vc-opt4", "space": "vendor-3561", "csv-format": false, "data": "343444343534" }
]

Additional context

This affects all French users replacing their Orange Livebox with OPNsense (common setup). Same limitation applies to any ISP or environment using DHCP option 125 with vendor sub-options (RFC 3925).

Metadata

Metadata

Assignees

Labels

featureAdding new functionality

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions