
{"id":12803,"date":"2026-03-13T07:30:20","date_gmt":"2026-03-13T07:30:20","guid":{"rendered":"https:\/\/developer.rdkcentral.com\/documentation\/?page_id=12803"},"modified":"2026-03-13T07:31:19","modified_gmt":"2026-03-13T07:31:19","slug":"dhcp-lease-handlers","status":"publish","type":"page","link":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/dhcp-client-manager\/dhcp-lease-handlers\/","title":{"rendered":"DHCP Lease Handlers"},"content":{"rendered":"\n<p>The DHCP Lease Handlers are specialized components responsible for processing lease information received from DHCP clients and updating the system accordingly. The implementation consists of separate handlers for DHCPv4 and DHCPv6, each tailored to the specific requirements and characteristics of their respective protocols.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"DHCPLeaseHandlers-Architecture\">Architecture<\/h2>\n\n\n\n<p>The lease handlers implement a multi-layered processing architecture:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510     \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510     \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502   Lease Monitor     \u2502\u2500\u2500\u2500\u2500\u25ba\u2502  Lease Handlers     \u2502\u2500\u2500\u2500\u2500\u25ba\u2502  System Updates     \u2502\n\u2502                     \u2502     \u2502                     \u2502     \u2502                     \u2502\n\u2502 \u2022 Message Router    \u2502     \u2502 \u2022 DHCPv4 Handler    \u2502     \u2502 \u2022 TR-181 DML        \u2502\n\u2502 \u2022 Protocol Detect   \u2502     \u2502 \u2022 DHCPv6 Handler    \u2502     \u2502 \u2022 Network Config    \u2502\n\u2502 \u2022 Data Validation   \u2502     \u2502 \u2022 Lease Processing  \u2502     \u2502 \u2022 Event Generation  \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518     \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518     \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n                                      \u2502\n                                      \u25bc\n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510     \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510     \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502   Recovery System   \u2502\u25c4\u2500\u2500\u2500\u2500\u2502  Persistence Layer  \u2502\u2500\u2500\u2500\u2500\u25ba\u2502  External Systems   \u2502\n\u2502                     \u2502     \u2502                     \u2502     \u2502                     \u2502\n\u2502 \u2022 State Backup      \u2502     \u2502 \u2022 Lease Storage     \u2502     \u2502 \u2022 WAN Manager       \u2502\n\u2502 \u2022 Crash Recovery    \u2502     \u2502 \u2022 Configuration     \u2502     \u2502 \u2022 System Events     \u2502\n\u2502 \u2022 Data Integrity    \u2502     \u2502 \u2022 Recovery Data     \u2502     \u2502 \u2022 RBUS\/DBUS         \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518     \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518     \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n<\/pre>\n\n\n\n<p>DHCPv4 Lease Handler<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"DHCPLeaseHandlers-Files\">Files<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Source<\/strong>:\u00a0<code>source\/DHCPMgrUtils\/dhcpmgr_v4_lease_handler.c<\/code><\/li>\n\n\n\n<li><strong>Related<\/strong>: Functions in\u00a0<code>dhcpmgr_controller.c<\/code><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"DHCPLeaseHandlers-KeyFunctions\">Key Functions<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"DHCPLeaseHandlers-DhcpMgr_ProcessV4Lease(PCOSA_DML_DHCPC_FULLpDhcpc)\"><code>DhcpMgr_ProcessV4Lease(PCOSA_DML_DHCPC_FULL pDhcpc)<\/code><\/h4>\n\n\n\n<p><strong>Purpose<\/strong>: Processes new DHCPv4 leases and updates system state<\/p>\n\n\n\n<p><strong>Processing Flow<\/strong>:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Lease Retrieval<\/strong>: Extract lease from pending queue<\/li>\n\n\n\n<li><strong>Comparison<\/strong>: Compare with current lease to detect changes<\/li>\n\n\n\n<li><strong>Validation<\/strong>: Verify lease data integrity and consistency<\/li>\n\n\n\n<li><strong>TR-181 Update<\/strong>: Update data model with new lease information<\/li>\n\n\n\n<li><strong>Network Configuration<\/strong>: Apply network settings to interface<\/li>\n\n\n\n<li><strong>Event Generation<\/strong>: Generate system events for lease changes<\/li>\n\n\n\n<li><strong>Persistence<\/strong>: Store lease data for recovery purposes<\/li>\n\n\n\n<li><strong>Cleanup<\/strong>: Free processed lease memory<\/li>\n<\/ol>\n\n\n\n<p><strong>Critical Processing Steps<\/strong>:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">while (pDhcpc->NewLeases != NULL) {\n    DHCPv4_PLUGIN_MSG *processingLease = pDhcpc->NewLeases;\n    pDhcpc->NewLeases = processingLease->next;\n    \n    \/\/ Process lease data\n    if (lease_changed) {\n        DhcpMgr_updateDHCPv4DML(pDhcpc);\n        configureNetworkInterface(pDhcpc);\n        DHCPMgr_storeDhcpv4Lease(pDhcpc);\n    }\n    \n    free(processingLease);\n}\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"DHCPLeaseHandlers-DhcpMgr_updateDHCPv4DML(PCOSA_DML_DHCPC_FULLpDhcpc)\"><code>DhcpMgr_updateDHCPv4DML(PCOSA_DML_DHCPC_FULL pDhcpc)<\/code><\/h4>\n\n\n\n<p><strong>Purpose<\/strong>: Updates TR-181 Data Model with DHCPv4 lease information<\/p>\n\n\n\n<p><strong>Updated Parameters<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>IP Address<\/strong>:\u00a0<code>pDhcpc->Info.IPAddress<\/code><\/li>\n\n\n\n<li><strong>Subnet Mask<\/strong>:\u00a0<code>pDhcpc->Info.SubnetMask<\/code><\/li>\n\n\n\n<li><strong>Default Gateway<\/strong>:\u00a0<code>pDhcpc->Info.IPRouters<\/code><\/li>\n\n\n\n<li><strong>DNS Servers<\/strong>:\u00a0<code>pDhcpc->Info.DNSServers<\/code><\/li>\n\n\n\n<li><strong>DHCP Server<\/strong>:\u00a0<code>pDhcpc->Info.DHCPServer<\/code><\/li>\n\n\n\n<li><strong>Lease Time<\/strong>:\u00a0<code>pDhcpc->Info.LeaseTimeRemaining<\/code><\/li>\n\n\n\n<li><strong>Status<\/strong>:\u00a0<code>pDhcpc->Info.Status<\/code><\/li>\n<\/ul>\n\n\n\n<p><strong>Special Handling<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>MTA Options<\/strong>: Support for EROUTER_DHCP_OPTION_MTA<\/li>\n\n\n\n<li><strong>Custom Options<\/strong>: Vendor-specific option processing<\/li>\n\n\n\n<li><strong>Status Validation<\/strong>: Ensure lease status consistency<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"DHCPLeaseHandlers-configureNetworkInterface(PCOSA_DML_DHCPC_FULLpDhcpc)\"><code>configureNetworkInterface(PCOSA_DML_DHCPC_FULL pDhcpc)<\/code><\/h4>\n\n\n\n<p><strong>Purpose<\/strong>: Applies network configuration to the interface<\/p>\n\n\n\n<p><strong>Configuration Steps<\/strong>:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>IP Address Assignment<\/strong>: Set interface IP address<\/li>\n\n\n\n<li><strong>Subnet Configuration<\/strong>: Apply subnet mask<\/li>\n\n\n\n<li><strong>Gateway Setup<\/strong>: Configure default gateway<\/li>\n\n\n\n<li><strong>DNS Configuration<\/strong>: Set DNS server addresses<\/li>\n\n\n\n<li><strong>Route Management<\/strong>: Update routing table<\/li>\n\n\n\n<li><strong>Broadcast Address<\/strong>: Calculate and set broadcast address<\/li>\n<\/ol>\n\n\n\n<p><strong>Network Operations<\/strong>:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ Example network configuration\nstruct ifreq ifr;\nstruct sockaddr_in *addr;\n\n\/\/ Set IP address\naddr = (struct sockaddr_in *)&amp;ifr.ifr_addr;\naddr->sin_family = AF_INET;\naddr->sin_addr.s_addr = inet_addr(current->ipAddr);\nioctl(sockfd, SIOCSIFADDR, &amp;ifr);\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"DHCPLeaseHandlers-set_inf_sysevents()\"><code>set_inf_sysevents()<\/code><\/h4>\n\n\n\n<p><strong>Purpose<\/strong>: Updates system events based on lease changes<\/p>\n\n\n\n<p><strong>Event Updates<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>DHCP Server ID<\/strong>: Interface-specific server identification<\/li>\n\n\n\n<li><strong>Lease Time<\/strong>: Remaining lease duration<\/li>\n\n\n\n<li><strong>DHCP State<\/strong>: Current client state (bound, renewing, etc.)<\/li>\n\n\n\n<li><strong>Start Time<\/strong>: Lease acquisition timestamp<\/li>\n<\/ul>\n\n\n\n<p><strong>Event Format<\/strong>:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ Example sysevent updates\nsnprintf(syseventParam, sizeof(syseventParam), \"ipv4_%s_dhcp_server\", interface);\nifl_set_event(syseventParam, newLease->dhcpServerId);\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"DHCPLeaseHandlers-DhcpMgr_clearDHCPv4Lease(PCOSA_DML_DHCPC_FULLpDhcpc)\"><code>DhcpMgr_clearDHCPv4Lease(PCOSA_DML_DHCPC_FULL pDhcpc)<\/code><\/h4>\n\n\n\n<p><strong>Purpose<\/strong>: Clears current lease information and resets interface<\/p>\n\n\n\n<p><strong>Cleanup Operations<\/strong>:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Memory Cleanup<\/strong>: Free current lease structure<\/li>\n\n\n\n<li><strong>TR-181 Reset<\/strong>: Clear data model parameters<\/li>\n\n\n\n<li><strong>Interface Reset<\/strong>: Remove IP configuration<\/li>\n\n\n\n<li><strong>Event Cleanup<\/strong>: Generate lease release events<\/li>\n\n\n\n<li><strong>State Reset<\/strong>: Reset client operational state<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"DHCPLeaseHandlers-DHCPv6LeaseHandler\">DHCPv6 Lease Handler<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"DHCPLeaseHandlers-Files.1\">Files<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Source<\/strong>:\u00a0<code>source\/DHCPMgrUtils\/dhcpmgr_v6_lease_handler.c<\/code><\/li>\n\n\n\n<li><strong>Related<\/strong>: Functions in\u00a0<code>dhcpmgr_controller.c<\/code><\/li>\n<\/ul>\n\n\n\n<p><strong>Key Functions<\/strong><\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"DHCPLeaseHandlers-DhcpMgr_ProcessV6Lease(PCOSA_DML_DHCPCV6_FULLpDhcp6c)\"><code>DhcpMgr_ProcessV6Lease(PCOSA_DML_DHCPCV6_FULL pDhcp6c)<\/code><\/h4>\n\n\n\n<p><strong>Purpose<\/strong>: Processes new DHCPv6 leases with support for IANA and IAPD<\/p>\n\n\n\n<p><strong>IPv6-Specific Processing<\/strong>:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Dual Association Handling<\/strong>: Process IANA and IAPD separately<\/li>\n\n\n\n<li><strong>Lease Comparison<\/strong>: Detect changes in address\/prefix assignments<\/li>\n\n\n\n<li><strong>Validation<\/strong>: Verify IPv6 address formats and prefixes<\/li>\n\n\n\n<li><strong>TR-181 Update<\/strong>: Update IPv6-specific data model parameters<\/li>\n\n\n\n<li><strong>Network Configuration<\/strong>: Apply IPv6 addresses and routes for the interface<\/li>\n\n\n\n<li><strong>Event Generation<\/strong>: Generate IPv6-specific system events<\/li>\n\n\n\n<li><strong>Persistence<\/strong>: Store IPv6 lease data for recovery<\/li>\n<\/ol>\n\n\n\n<p><strong>Processing Logic<\/strong>:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">while (pDhcp6c->NewLeases != NULL) {\n    DHCPv6_PLUGIN_MSG *processingLease = pDhcp6c->NewLeases;\n    \n    \/\/ Compare with current lease\n    if (!compare_dhcpv6_plugin_msg(pDhcp6c->currentLease, processingLease)) {\n        leaseChanged = true;\n        \n        \/\/ Update current lease\n        if (pDhcp6c->currentLease) {\n            free(pDhcp6c->currentLease);\n        }\n        pDhcp6c->currentLease = processingLease;\n        \n        \/\/ Configure system\n        configureNetworkInterface(pDhcp6c);\n        ConfigureIpv6Sysevents(pDhcp6c);\n        DHCPMgr_storeDhcpv6Lease(pDhcp6c);\n    }\n}\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"DHCPLeaseHandlers-compare_dhcpv6_plugin_msg()\"><code>compare_dhcpv6_plugin_msg()<\/code><\/h4>\n\n\n\n<p><strong>Purpose<\/strong>: Compares two DHCPv6 lease messages to detect changes<\/p>\n\n\n\n<p><strong>Comparison Fields<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Expiration Status<\/strong>:\u00a0<code>isExpired<\/code>\u00a0flag<\/li>\n\n\n\n<li><strong>IANA Information<\/strong>: Non-temporary address data<\/li>\n\n\n\n<li><strong>IAPD Information<\/strong>: Prefix delegation data<\/li>\n\n\n\n<li><strong>Timing Parameters<\/strong>: T1, T2, preferred\/valid lifetimes<\/li>\n\n\n\n<li><strong>Server Information<\/strong>: DHCP server details<\/li>\n\n\n\n<li><strong>Options<\/strong>: Custom DHCPv6 options<\/li>\n<\/ul>\n\n\n\n<p><strong>Return Value<\/strong>:&nbsp;<code>true<\/code>&nbsp;if leases are identical,&nbsp;<code>false<\/code>&nbsp;if changes detected<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"DHCPLeaseHandlers-ConfigureIpv6Sysevents(PCOSA_DML_DHCPCV6_FULLpDhcp6c)\"><code>ConfigureIpv6Sysevents(PCOSA_DML_DHCPCV6_FULL pDhcp6c)<\/code><\/h4>\n\n\n\n<p><strong>Purpose<\/strong>: Sets IPv6-specific system events<\/p>\n\n\n\n<p><strong>IAPD Events<\/strong>&nbsp;(Prefix Delegation):<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Prefix<\/strong>:\u00a0<code>tr_%s_dhcpv6_client_v6pref<\/code><\/li>\n\n\n\n<li><strong>IAID<\/strong>:\u00a0<code>tr_%s_dhcpv6_client_pref_iaid<\/code><\/li>\n\n\n\n<li><strong>T1 Timer<\/strong>:\u00a0<code>tr_%s_dhcpv6_client_pref_t1<\/code><\/li>\n\n\n\n<li><strong>T2 Timer<\/strong>:\u00a0<code>tr_%s_dhcpv6_client_pref_t2<\/code><\/li>\n\n\n\n<li><strong>Preferred Time<\/strong>:\u00a0<code>tr_%s_dhcpv6_client_pref_pretm<\/code><\/li>\n\n\n\n<li><strong>Valid Time<\/strong>:\u00a0<code>tr_%s_dhcpv6_client_pref_vldtm<\/code><\/li>\n<\/ul>\n\n\n\n<p><strong>IANA Events<\/strong>&nbsp;(Address Assignment):<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Address<\/strong>:\u00a0<code>tr_%s_dhcpv6_client_v6addr<\/code><\/li>\n\n\n\n<li><strong>IAID<\/strong>:\u00a0<code>tr_%s_dhcpv6_client_addr_iaid<\/code><\/li>\n\n\n\n<li><strong>T1 Timer<\/strong>:\u00a0<code>tr_%s_dhcpv6_client_addr_t1<\/code><\/li>\n\n\n\n<li><strong>T2 Timer<\/strong>:\u00a0<code>tr_%s_dhcpv6_client_addr_t2<\/code><\/li>\n\n\n\n<li><strong>Preferred Time<\/strong>:\u00a0<code>tr_%s_dhcpv6_client_addr_pretm<\/code><\/li>\n\n\n\n<li><strong>Valid Time<\/strong>:\u00a0<code>tr_%s_dhcpv6_client_addr_vldtm<\/code><\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"DHCPLeaseHandlers-configureNetworkInterface(PCOSA_DML_DHCPCV6_FULLpDhcp6c)\"><code>configureNetworkInterface(PCOSA_DML_DHCPCV6_FULL pDhcp6c)<\/code><\/h4>\n\n\n\n<p><strong>Purpose<\/strong>: Applies IPv6 network configuration<\/p>\n\n\n\n<p><strong>IPv6 Configuration<\/strong>:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Address Assignment<\/strong>: Add IPv6 addresses to interface<\/li>\n\n\n\n<li><strong>Prefix Configuration<\/strong>: (Handled by WAN Manager)<\/li>\n\n\n\n<li><strong>Route Setup<\/strong>: (Handled by WAN Manager)<\/li>\n\n\n\n<li><strong>Neighbor Discovery<\/strong>: (Handled by WAN Manager)<\/li>\n\n\n\n<li><strong>DNS Setup<\/strong>: (Handled by WAN Manager)<\/li>\n<\/ol>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><strong>Note:<\/strong>&nbsp;These configuration steps are performed by the WAN Manager component, not directly by the DHCPv6 lease handler.<\/p>\n<\/blockquote>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"DHCPLeaseHandlers-DhcpMgr_clearDHCPv6Lease(PCOSA_DML_DHCPCV6_FULLpDhcp6c)\"><code>DhcpMgr_clearDHCPv6Lease(PCOSA_DML_DHCPCV6_FULL pDhcp6c)<\/code><\/h4>\n\n\n\n<p><strong>Purpose<\/strong>: Clears IPv6 lease information and resets configuration<\/p>\n\n\n\n<p><strong>IPv6 Cleanup<\/strong>:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Address Removal<\/strong>: Remove IPv6 addresses from interface<\/li>\n\n\n\n<li><strong>Route Cleanup<\/strong>: Remove IPv6 routes<\/li>\n\n\n\n<li><strong>Prefix Cleanup<\/strong>:(Handled by WAN Manager)<\/li>\n\n\n\n<li><strong>Memory Cleanup<\/strong>: Free lease structures<\/li>\n\n\n\n<li><strong>Event Cleanup<\/strong>: Clear IPv6 system events<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"DHCPLeaseHandlers-LeaseDataStructures\">Lease Data Structures<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"DHCPLeaseHandlers-DHCPv4PluginMessage\">DHCPv4 Plugin Message<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">typedef struct {\n    int addressAssigned;           \/\/ Address assignment status\n    char ipAddr[INET_ADDRSTRLEN];  \/\/ Assigned IP address\n    char subnetMask[INET_ADDRSTRLEN]; \/\/ Subnet mask\n    char gateway[INET_ADDRSTRLEN]; \/\/ Default gateway\n    char dnsServer[INET_ADDRSTRLEN]; \/\/ Primary DNS server\n    char dhcpServerId[INET_ADDRSTRLEN]; \/\/ DHCP server ID\n    char dhcpState[32];           \/\/ DHCP client state\n    uint32_t leaseTime;           \/\/ Lease duration\n    \/\/ ... additional fields\n} DHCPv4_PLUGIN_MSG;\n<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"DHCPLeaseHandlers-DHCPv6PluginMessage\">DHCPv6 Plugin Message<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">typedef struct {\n    int isExpired;                \/\/ Lease expiration status\n    \n    struct {\n        int assigned;             \/\/ IANA assignment status\n        char ipAddr[INET6_ADDRSTRLEN]; \/\/ IPv6 address\n        uint32_t t1;             \/\/ T1 timer\n        uint32_t t2;             \/\/ T2 timer\n        uint32_t preferredTime;   \/\/ Preferred lifetime\n        uint32_t validTime;      \/\/ Valid lifetime\n    } ia_na;\n    \n    struct {\n        int assigned;             \/\/ IAPD assignment status\n        char prefix[INET6_ADDRSTRLEN]; \/\/ IPv6 prefix\n        int prefixLen;           \/\/ Prefix length\n        uint32_t t1;             \/\/ T1 timer\n        uint32_t t2;             \/\/ T2 timer\n        uint32_t preferredTime;   \/\/ Preferred lifetime\n        uint32_t validTime;      \/\/ Valid lifetime\n    } ia_pd;\n    \n    \/\/ ... additional fields\n} DHCPv6_PLUGIN_MSG;\n<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"DHCPLeaseHandlers-SystemIntegration\">System Integration<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"DHCPLeaseHandlers-TR-181DataModelUpdates\">TR-181 Data Model Updates<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"DHCPLeaseHandlers-DHCPv4Parameters\">DHCPv4 Parameters<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>Device.DHCPv4.Client.{i}.IPAddress<\/code><\/li>\n\n\n\n<li><code>Device.DHCPv4.Client.{i}.SubnetMask<\/code><\/li>\n\n\n\n<li><code>Device.DHCPv4.Client.{i}.IPRouters<\/code><\/li>\n\n\n\n<li><code>Device.DHCPv4.Client.{i}.DNSServers<\/code><\/li>\n\n\n\n<li><code>Device.DHCPv4.Client.{i}.DHCPServer<\/code><\/li>\n\n\n\n<li><code>Device.DHCPv4.Client.{i}.LeaseTimeRemaining<\/code><\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"DHCPLeaseHandlers-DHCPv6Parameters\">DHCPv6 Parameters<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>Device.DHCPv6.Client.{i}.PrefixDelegation<\/code><\/li>\n\n\n\n<li><code>Device.DHCPv6.Client.{i}.ReceivedOptions<\/code><\/li>\n\n\n\n<li><code>Device.DHCPv6.Client.{i}.SentOptions<\/code><\/li>\n\n\n\n<li><code>Device.DHCPv6.Client.{i}.Status<\/code><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"DHCPLeaseHandlers-SystemEventIntegration\">System Event Integration<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"DHCPLeaseHandlers-EventTypes\">Event Types<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Lease Acquisition<\/strong>: New lease obtained<\/li>\n\n\n\n<li><strong>Lease Renewal<\/strong>: Existing lease renewed<\/li>\n\n\n\n<li><strong>Lease Release<\/strong>: Lease terminated<\/li>\n\n\n\n<li><strong>Address Change<\/strong>: IP address modified<\/li>\n\n\n\n<li><strong>Configuration Change<\/strong>: Network settings updated<\/li>\n<\/ol>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"DHCPLeaseHandlers-EventConsumers\">Event Consumers<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>WAN Manager<\/strong>: Network status updates<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"DHCPLeaseHandlers-ErrorHandling\">Error Handling<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"DHCPLeaseHandlers-ValidationProcedures\">Validation Procedures<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"DHCPLeaseHandlers-DHCPv4Validation\">DHCPv4 Validation<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>IP Address Format<\/strong>: Valid IPv4 address format<\/li>\n\n\n\n<li><strong>Subnet Mask<\/strong>: Valid subnet mask values<\/li>\n\n\n\n<li><strong>Gateway Reachability<\/strong>: Gateway within subnet<\/li>\n\n\n\n<li><strong>DNS Server Format<\/strong>: Valid DNS server addresses<\/li>\n\n\n\n<li><strong>Lease Time<\/strong>: Reasonable lease duration<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"DHCPLeaseHandlers-DHCPv6Validation\">DHCPv6 Validation<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Address Format<\/strong>: Valid IPv6 address format<\/li>\n\n\n\n<li><strong>Prefix Validation<\/strong>: Valid IPv6 prefix format<\/li>\n\n\n\n<li><strong>Lifetime Validation<\/strong>: Reasonable timer values<\/li>\n\n\n\n<li><strong>Scope Validation<\/strong>: Appropriate address scope<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"DHCPLeaseHandlers-ErrorRecovery\">Error Recovery<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"DHCPLeaseHandlers-LeaseProcessingErrors\">Lease Processing Errors<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Invalid Data<\/strong>: Log error and discard lease<\/li>\n\n\n\n<li><strong>Configuration Failure<\/strong>: Retry with previous configuration<\/li>\n\n\n\n<li><strong>Memory Allocation<\/strong>: Implement graceful degradation<\/li>\n\n\n\n<li><strong>System Call Failure<\/strong>: Log error and continue operation<\/li>\n<\/ol>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"DHCPLeaseHandlers-NetworkConfigurationErrors\">Network Configuration Errors<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Interface Down<\/strong>: Wait for interface to become available<\/li>\n\n\n\n<li><strong>Permission Denied<\/strong>: Log error and continue<\/li>\n\n\n\n<li><strong>Address Conflict<\/strong>: Implement conflict resolution<\/li>\n\n\n\n<li><strong>Route Installation<\/strong>: Retry with exponential backoff<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"DHCPLeaseHandlers-PerformanceOptimization\">Performance Optimization<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"DHCPLeaseHandlers-MemoryManagement\">Memory Management<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"DHCPLeaseHandlers-EfficientProcessing\">Efficient Processing<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Zero-copy Operations<\/strong>: Minimize data copying<\/li>\n\n\n\n<li><strong>Memory Pooling<\/strong>: Reuse lease structures<\/li>\n\n\n\n<li><strong>Lazy Evaluation<\/strong>: Process only changed parameters<\/li>\n\n\n\n<li><strong>Garbage Collection<\/strong>: Timely cleanup of expired leases<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"DHCPLeaseHandlers-MemoryLeakPrevention\">Memory Leak Prevention<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Automatic Cleanup<\/strong>: Free memory on all code paths<\/li>\n\n\n\n<li><strong>Reference Counting<\/strong>: Track structure usage<\/li>\n\n\n\n<li><strong>Timeout Cleanup<\/strong>: Remove stale references<\/li>\n\n\n\n<li><strong>Debug Tracking<\/strong>: Monitor memory usage<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"DHCPLeaseHandlers-ProcessingEfficiency\">Processing Efficiency<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"DHCPLeaseHandlers-FastPathProcessing\">Fast Path Processing<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Change Detection<\/strong>: Quick comparison algorithms<\/li>\n\n\n\n<li><strong>Batch Updates<\/strong>: Group related updates<\/li>\n\n\n\n<li><strong>Parallel Processing<\/strong>: Process multiple leases concurrently<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"DHCPLeaseHandlers-NetworkOptimization\">Network Optimization<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Minimal Syscalls<\/strong>: Reduce system call overhead<\/li>\n\n\n\n<li><strong>Batch Network Operations<\/strong>: Group network configuration<\/li>\n\n\n\n<li><strong>Interface Polling<\/strong>: Efficient status monitoring<\/li>\n\n\n\n<li><strong>Event Aggregation<\/strong>: Combine related events<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"DHCPLeaseHandlers-TestingandDebugging\">Testing and Debugging<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"DHCPLeaseHandlers-TestCoverage\">Test Coverage<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"DHCPLeaseHandlers-IntegrationTests\">Integration Tests<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>End-to-end lease processing<\/li>\n\n\n\n<li>Network configuration verification<\/li>\n\n\n\n<li>TR-181 update validation<\/li>\n\n\n\n<li>Event generation testing<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"DHCPLeaseHandlers-PerformanceTests\">Performance Tests<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Lease processing throughput<\/li>\n\n\n\n<li>Memory usage analysis<\/li>\n\n\n\n<li>Network configuration timing<\/li>\n\n\n\n<li>Concurrent operation testing<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"DHCPLeaseHandlers-DebuggingFeatures\">Debugging Features<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"DHCPLeaseHandlers-LoggingIntegration\">Logging Integration<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Detailed Tracing<\/strong>: Step-by-step processing logs<\/li>\n\n\n\n<li><strong>Error Reporting<\/strong>: Comprehensive error messages<\/li>\n\n\n\n<li><strong>Performance Metrics<\/strong>: Processing time measurements<\/li>\n\n\n\n<li><strong>State Dumping<\/strong>: Runtime state inspection<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"DHCPLeaseHandlers-CommonDebugScenarios\">Common Debug Scenarios<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Lease Not Applied<\/strong>: Check validation and configuration steps<\/li>\n\n\n\n<li><strong>Memory Leaks<\/strong>: Monitor allocation and cleanup<\/li>\n\n\n\n<li><strong>Performance Issues<\/strong>: Profile processing bottlenecks<\/li>\n\n\n\n<li><strong>Configuration Errors<\/strong>: Verify network setup commands<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>The DHCP Lease Handlers are specialized components responsible for processing lease information received from DHCP [&hellip;]<\/p>\n","protected":false},"author":659,"featured_media":0,"parent":12785,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0,"footnotes":""},"class_list":["post-12803","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.9 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>DHCP Lease Handlers - RDK Documentation Portal | Documentation<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/dhcp-client-manager\/dhcp-lease-handlers\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"DHCP Lease Handlers - RDK Documentation Portal | Documentation\" \/>\n<meta property=\"og:description\" content=\"The DHCP Lease Handlers are specialized components responsible for processing lease information received from DHCP [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/dhcp-client-manager\/dhcp-lease-handlers\/\" \/>\n<meta property=\"og:site_name\" content=\"RDK Documentation Portal | Documentation\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-13T07:31:19+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/dhcp-client-manager\/dhcp-lease-handlers\/\",\"url\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/dhcp-client-manager\/dhcp-lease-handlers\/\",\"name\":\"DHCP Lease Handlers - RDK Documentation Portal | Documentation\",\"isPartOf\":{\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/#website\"},\"datePublished\":\"2026-03-13T07:30:20+00:00\",\"dateModified\":\"2026-03-13T07:31:19+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/dhcp-client-manager\/dhcp-lease-handlers\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/dhcp-client-manager\/dhcp-lease-handlers\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/dhcp-client-manager\/dhcp-lease-handlers\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/developer.rdkcentral.com\/documentation\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Documentation\",\"item\":\"https:\/\/developer.rdkcentral.com\/documentation\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"RDK Broadband\",\"item\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Components\",\"item\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/\"},{\"@type\":\"ListItem\",\"position\":5,\"name\":\"DHCP Client Manager\",\"item\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/dhcp-client-manager\/\"},{\"@type\":\"ListItem\",\"position\":6,\"name\":\"DHCP Lease Handlers\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/#website\",\"url\":\"https:\/\/developer.rdkcentral.com\/documentation\/\",\"name\":\"RDK Documentation Portal | Documentation\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/developer.rdkcentral.com\/documentation\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"DHCP Lease Handlers - RDK Documentation Portal | Documentation","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/dhcp-client-manager\/dhcp-lease-handlers\/","og_locale":"en_US","og_type":"article","og_title":"DHCP Lease Handlers - RDK Documentation Portal | Documentation","og_description":"The DHCP Lease Handlers are specialized components responsible for processing lease information received from DHCP [&hellip;]","og_url":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/dhcp-client-manager\/dhcp-lease-handlers\/","og_site_name":"RDK Documentation Portal | Documentation","article_modified_time":"2026-03-13T07:31:19+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/dhcp-client-manager\/dhcp-lease-handlers\/","url":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/dhcp-client-manager\/dhcp-lease-handlers\/","name":"DHCP Lease Handlers - RDK Documentation Portal | Documentation","isPartOf":{"@id":"https:\/\/developer.rdkcentral.com\/documentation\/#website"},"datePublished":"2026-03-13T07:30:20+00:00","dateModified":"2026-03-13T07:31:19+00:00","breadcrumb":{"@id":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/dhcp-client-manager\/dhcp-lease-handlers\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/dhcp-client-manager\/dhcp-lease-handlers\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/dhcp-client-manager\/dhcp-lease-handlers\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/developer.rdkcentral.com\/documentation\/"},{"@type":"ListItem","position":2,"name":"Documentation","item":"https:\/\/developer.rdkcentral.com\/documentation\/"},{"@type":"ListItem","position":3,"name":"RDK Broadband","item":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/"},{"@type":"ListItem","position":4,"name":"Components","item":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/"},{"@type":"ListItem","position":5,"name":"DHCP Client Manager","item":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/dhcp-client-manager\/"},{"@type":"ListItem","position":6,"name":"DHCP Lease Handlers"}]},{"@type":"WebSite","@id":"https:\/\/developer.rdkcentral.com\/documentation\/#website","url":"https:\/\/developer.rdkcentral.com\/documentation\/","name":"RDK Documentation Portal | Documentation","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/developer.rdkcentral.com\/documentation\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages\/12803","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/users\/659"}],"replies":[{"embeddable":true,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/comments?post=12803"}],"version-history":[{"count":1,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages\/12803\/revisions"}],"predecessor-version":[{"id":12804,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages\/12803\/revisions\/12804"}],"up":[{"embeddable":true,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages\/12785"}],"wp:attachment":[{"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/media?parent=12803"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}