DHCP option 43 is a vendor‑specific DHCP option defined in RFC 2132 that returns one or more WLC management IP addresses to lightweight APs during discovery.
! Cisco IOS DHCP pool configuration
ip dhcp pool <pool-name>
network <network-address> <subnet-mask>
default-router <default-gateway>
dns-server <dns-ip>
! Add option 43 with hex-encoded WLC IPs
option 43 hex <hexadecimal-string>
Syntax
Configure DHCP option 43 on a Cisco IOS DHCP server:
! Create a DHCP pool
ip dhcp pool <pool-name>
network <network-address> <subnet-mask>
default-router <default-gateway>
dns-server <dns-ip>
! Add option 43 with hex-encoded WLC IPs
option 43 hex <hexadecimal-string>
On a Microsoft DHCP server, define a custom option with type String and enter the hex value. On Linux ISC DHCP, use:
option space Cisco_LWAPP_AP;
option Cisco_LWAPP_AP.server-address code 241 = array of ip-address;
subnet 192.168.247.0 netmask 255.255.255.0 {
option routers 192.168.247.1;
option subnet-mask 255.255.255.0;
option Cisco_LWAPP_AP.server-address 192.168.10.5, 192.168.10.20; # DHCP option 43 via space
}
Options and Flags
| Flag / Parameter | Type | Default | Description |
|---|---|---|---|
option 43 hex |
String (hex) | N/A | Raw hex string containing the TLV‑encoded sub‑options (vendor code + length + IPs) |
option Cisco_LWAPP_AP.server-address |
IP array | N/A | ISC DHCP vendor‑space shorthand; automatically formats option 43 as sub‑option 241 |
sub‑option code |
Integer (1 byte) | 241 (Cisco) | Vendor‑specific sub‑option code; Cisco uses 0xf1 (241) for LWAPP, RUCKUS uses other codes |
length |
Integer (1 byte) | Derived from IP count | Number of bytes in the sub‑option data (4 bytes per IP) |
Usage Examples
Example 1: Cisco LWAPP – two WLCs (192.168.10.5 and 192.168.10.20)
Construct hex: Type=0xf1, Length=0x08 (2 × 4 bytes), Data=0xc0a80a05c0a80a14.
! Cisco IOS DHCP pool
ip dhcp pool WIRELESS_CLIENTS
network 192.168.20.0 255.255.255.0
default-router 192.168.20.1
dns-server 192.168.20.10
option 43 hex f108c0a80a05c0a80a14
The hex string f108c0a80a05c0a80a14 breaks down as f1 (sub‑option 241), 08 (length 8 bytes), then two IPs in hex (c0a80a05 = 192.168.10.5, c0a80a14 = 192.168.10.20).
Example 2: RUCKUS AP – single controller (10.0.0.1) with vendor code
RUCKUS requires a masked option 43; vendor code varies. Below uses vendor code 0x00 and sub‑option code 0x01 (common for RUCKUS). For a single IP, hex: 00 01 04 0a000001.
! RUCKUS format on ISC DHCP (using vendor space)
option space Ruckus_AP;
option Ruckus_AP.server-address code 1 = array of ip-address;
subnet 10.0.0.0 netmask 255.255.255.0 {
option routers 10.0.0.1;
option Ruckus_AP.server-address 10.0.0.1; # auto-encodes option 43
}
Example 3: Cisco EWC (Embedded Wireless Controller) – conversion method
EWC uses sub‑option code 0xf2. For a single WLC at 192.168.1.100, the hex is f204c0a80164.
! Cisco IOS
option 43 hex f204c0a80164
Here f2 is the EWC sub‑option, 04 length, c0a80164 = 192.168.1.100.
Troubleshooting & Common Errors
| Error / Symptom | Root Cause | Resolution Command / Action |
|---|---|---|
| AP shows “Option 43 not received” in logs | DHCP server not configured to send option 43, or AP VCI not matched | Verify DHCP pool includes option 43 hex …. Use debug: debug ip dhcp server events on Cisco IOS. |
| AP gets IP but no WLC join – hex mis‑format | Incorrect sub‑option code or length; IPs in wrong order | Recalculate hex manually: printf '%02x' <subopt> <len> <ip1> <ip2>…. Test with online generator. |
| Microsoft DHCP – option 43 not applied to clients | Option configured as scope option instead of server option; AP not matching class | In DHCP MMC, add option 43 as a scope option (String, hex entered as byte pairs without spaces). |
| ISC DHCP – “option 43” untrusted | Vendor class not defined or option space mismatch | Define vendor option space before subnet: option space Cisco_LWAPP_AP; option Cisco_LWAPP_AP.server-address code 241 = ip-address; |
| RUCKUS AP ignores option 43 | Vendor code mask missing or wrong sub‑option | Use hex format 00 01 04 <IP> (vendor code 0x00, sub‑option 0x01). See RUCKUS KB. |
Frequently Asked Questions
What is the difference between hex-encoded and ASCII-encoded DHCP option 43 values?
Answer: Hex-encoded stores raw binary bytes; ASCII uses human-readable characters.
Hex encoding is mandatory for vendor-specific suboptions (e.g., type-length-value format). ASCII encoding is simpler but limited to printable characters and lacks precise byte control. For Cisco lightweight APs, use hex with separate type and length bytes, e.g.,
option 43 hex f1040a0a0a0a
where f1 is suboption type 1, 04 is length, and 0a0a0a0a is the IP.
When should I use the “vendor-encapsulated-options” subcommand in ISC DHCP?
Answer: Use it inside a vendor class block (matching option 60) to send option 43 only to devices of that vendor, avoiding network-wide broadcast.
This provides granular control. Example for Cisco APs:
class "Cisco" {
match if option vendor-class-identifier = "Cisco AP c1300";
option vendor-encapsulated-options f1:04:0a:0a:0a:0a;
}
This ensures only Cisco devices receive the AP controller IP.
Does DHCP option 43 work on AWS VPC DHCP Options Sets?
Answer: No.
Custom options like 43 are unsupported. Workarounds: deploy a DHCP relay agent on an EC2 instance (e.g., ISC DHCP in relay mode) or run a standalone DHCP server on a subnet. For cloud-native provisioning, consider DNS SRV records or cloud-init.
What is the fastest way to encode DHCP option 43 hex for Cisco APs using CLI?
Answer: Use printf to convert ASCII to hex, then prepend type (0xf1) and length bytes.
Complete one-liner for a controller IP 10.0.0.1:
echo -n '01040a000001' | xxd -r -p | xxd -p
Or use python3 -c "import binascii; print(binascii.hexlify(b'xf1x04x0ax00x00x01'))" for full TLV. Validate with tcpdump or dhcping.

Command Line Expert & Software Engineer
Welcome! I’m Thomas Heinrich, a software engineer and system administrator with a deep passion for the Command Line Interface (CLI). With years of experience navigating the terminal, building backend architectures, and automating server deployments, I created this space to share practical, real-world terminal knowledge.
Whether you are a beginner taking your first steps in a Linux environment or a seasoned DevOps engineer looking to optimize your deployment scripts, you will find actionable solutions here. My goal is to help you ditch the mouse, speed up your workflow, and harness the full power of the command line.