
{"id":12898,"date":"2026-05-06T12:26:12","date_gmt":"2026-05-06T12:26:12","guid":{"rendered":"https:\/\/developer.rdkcentral.com\/documentation\/?page_id=12898"},"modified":"2026-05-06T12:30:59","modified_gmt":"2026-05-06T12:30:59","slug":"ethernet-agent","status":"publish","type":"page","link":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/ethernet-agent\/","title":{"rendered":"Ethernet Agent"},"content":{"rendered":"\n<p>The Ethernet Agent is an RDK-B middleware component responsible for managing Ethernet interface configurations, monitoring interface status, and handling WAN failover operations in broadband gateway devices. This component provides comprehensive Ethernet interface management services including interface discovery, configuration management, status monitoring, and integration with WAN management subsystems.<\/p>\n\n\n\n<p>The component serves as the primary interface between the RDK-B middleware stack and the underlying Ethernet hardware abstraction layer (HAL), enabling dynamic configuration of Ethernet interfaces for LAN and WAN operations. It supports advanced features like Ethernet WAN operation mode selection, interface bridging control, and real-time status monitoring with event-driven notifications.<\/p>\n\n\n\n<p>The Ethernet Agent integrates seamlessly with other RDK-B components including the WAN Manager, VLAN Agent, and Component Registry, providing a unified interface for Ethernet interface management across different deployment scenarios. It supports both traditional WAN agent integration and modern WAN manager architectures based on compile-time feature flags.<\/p>\n\n\n\n<div class=\"wp-block-merpress-mermaidjs diagram-source-mermaid\"><pre class=\"mermaid\">graph LR\n    subgraph \"External Systems\"\n        RemoteMgmt[\"Remote Management\"]\n        LocalUI[\"Local Web UI\"]\n        CloudMgmt[\"Cloud Management\"]\n    end\n\n    subgraph \"RDK-B Platform\"\n        subgraph \"Remote Management Agents\"\n            ProtocolAgents[\"TR-069\/WebPA\/TR-369&lt;br\/>Protocol Agents\"]\n        end\n\n        subgraph \"Ethernet Middleware\"\n            EthAgent[\"CcspEthAgent&lt;br\/>(Ethernet Agent)\"]\n        end\n\n        subgraph \"RDK-B Core Components\"\n            PSM[\"PSM&lt;br\/>(Parameter Storage)\"]\n            CR[\"Component Registry\"]\n            WanMgr[\"WAN Manager\"]\n            VlanAgent[\"VLAN Agent\"]\n        end\n\n        subgraph \"System Layer\"\n            HAL[\"Ethernet HAL\"]\n            Linux[\"Linux Kernel&lt;br\/>(Network Stack)\"]\n        end\n    end\n\n    %% External connections\n    RemoteMgmt -->|TR-069\/WebPA\/TR-369| ProtocolAgents\n    LocalUI -->|HTTP\/HTTPS| ProtocolAgents\n    CloudMgmt -->|WebConfig| ProtocolAgents\n\n    %% Upper layer to Ethernet Agent\n    ProtocolAgents -->|R-BUS\/DBUS| EthAgent\n\n    %% Ethernet Agent to Other RDK-B Components\n    EthAgent -->|Configuration| PSM\n    EthAgent -->|Registration| CR\n    EthAgent &lt;-->|WAN Events| WanMgr\n    EthAgent &lt;-->|VLAN Config| VlanAgent\n\n    %% System Layer interactions\n    EthAgent &lt;-->|HAL APIs| HAL\n    HAL &lt;-->|Driver Interfaces| Linux\n\n    classDef external fill:#fff3e0,stroke:#ef6c00,stroke-width:2px;\n    classDef ethAgent fill:#e3f2fd,stroke:#1976d2,stroke-width:3px;\n    classDef rdkbComponent fill:#e8f5e8,stroke:#2e7d32,stroke-width:2px;\n    classDef system fill:#fce4ec,stroke:#c2185b,stroke-width:2px;\n\n    class RemoteMgmt,LocalUI,CloudMgmt external;\n    class EthAgent ethAgent;\n    class ProtocolAgents,PSM,CR,WanMgr,VlanAgent rdkbComponent;\n    class HAL,Linux system;<\/pre><\/div>\n\n\n\n<p><strong>Key Features &amp; Responsibilities<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Ethernet Interface Management<\/strong>: Provides comprehensive management of Ethernet interfaces including discovery, configuration, and status monitoring for both LAN and WAN operations<\/li>\n\n\n\n<li><strong>TR-181 Data Model Support<\/strong>: Implements Device.Ethernet object hierarchy with support for interface configuration, statistics collection, and WAN mode selection parameters<\/li>\n\n\n\n<li><strong>WAN Failover Integration<\/strong>: Supports Ethernet WAN operation with automatic failover capabilities and integration with WAN Manager for multi-WAN scenarios<\/li>\n\n\n\n<li><strong>Dynamic Interface Configuration<\/strong>: Enables runtime configuration of Ethernet interface parameters including enable\/disable, upstream designation, and bridge membership control<\/li>\n\n\n\n<li><strong>Real-time Status Monitoring<\/strong>: Provides continuous monitoring of interface status with event-driven notifications for link state changes and operational mode transitions<\/li>\n\n\n\n<li><strong>HAL Abstraction Layer<\/strong>: Abstracts underlying Ethernet hardware through standardized HAL interfaces enabling platform-independent operation across different hardware implementations<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"EthernetAgent-Design\">Design<\/h2>\n\n\n\n<p>The Ethernet Agent employs a layered architecture design that separates interface abstraction, data model management, and platform integration concerns. The core design follows the RDK-B component pattern with a Service Provider (SSP) layer for process management, a middle layer for TR-181 data model implementation, and a board-specific abstraction layer for HAL integration. This design ensures maintainability while providing flexible deployment options across different hardware platforms.<\/p>\n\n\n\n<p>The component&#8217;s architecture supports multiple operational modes through compile-time feature flags, enabling integration with either traditional WAN Agent architecture (FEATURE_RDKB_WAN_AGENT) or modern WAN Manager systems (FEATURE_RDKB_WAN_MANAGER). The design emphasizes event-driven communication patterns with other middleware components, utilizing R-BUS for inter-component messaging and HAL callbacks for hardware event processing.<\/p>\n\n\n\n<p>The data persistence strategy leverages the Persistent Storage Manager (PSM) for configuration storage while maintaining runtime state in memory for performance. The component implements a robust error handling and recovery mechanism with comprehensive logging for troubleshooting and system diagnostics. The runtime architecture is event-driven but multi-threaded, with a main control path complemented by dedicated pthreads for responsibilities such as event handling, telemetry\/logging, and state management. Interface state coordination is therefore designed to rely on clear thread ownership and synchronization rather than assuming single-threaded execution.<\/p>\n\n\n\n<div class=\"wp-block-merpress-mermaidjs diagram-source-mermaid\"><pre class=\"mermaid\">graph TD\n    subgraph EthAgentContainer [\"Ethernet Agent Process (CcspEthAgent)\"]\n        subgraph SSP [\"Service Provider Layer\"]\n            SSPMain[SSP Main Process]\n            MsgBusIntf[R-BUS Interface]\n            ServiceReg[Service Registration]\n        end\n\n        subgraph MiddleLayer [\"Middle Layer (TR-181 DML)\"]\n            EthDML[Ethernet DML Handler]\n            InterfaceDML[Interface DML Handler]\n            StatsModule[Statistics Module]\n            R-BUSHandler[R-BUS Event Handler]\n        end\n\n        subgraph BoardAPI [\"Board API Layer\"]\n            EthManager[Ethernet Manager]\n            HALInterface[HAL Interface Module]\n            ConfigMgr[Configuration Manager]\n        end\n    end\n\n    subgraph ExternalDeps [\"External Dependencies\"]\n        HAL[Ethernet HAL]\n        PSMStore[PSM Storage]\n        WanMgrSvc[WAN Manager Service]\n    end\n\n    SSPMain --> MsgBusIntf\n    MsgBusIntf --> ServiceReg\n    ServiceReg --> EthDML\n\n    EthDML --> InterfaceDML\n    EthDML --> StatsModule\n    InterfaceDML --> R-BUSHandler\n\n    R-BUSHandler --> EthManager\n    EthManager --> HALInterface\n    HALInterface --> ConfigMgr\n\n    HALInterface -->|HAL API Calls| HAL\n    ConfigMgr -->|PSM Get\/Set| PSMStore\n    R-BUSHandler -->|R-BUS Events| WanMgrSvc\n\n    classDef ssp fill:#e3f2fd,stroke:#1976d2,stroke-width:2px;\n    classDef middle fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px;\n    classDef board fill:#fff8e1,stroke:#f57c00,stroke-width:2px;\n    classDef external fill:#e8f5e8,stroke:#388e3c,stroke-width:2px;\n\n    class SSPMain,MsgBusIntf,ServiceReg ssp;\n    class EthDML,InterfaceDML,StatsModule,R-BUSHandler middle;\n    class EthManager,HALInterface,ConfigMgr board;\n    class HAL,PSMStore,WanMgrSvc external;<\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"EthernetAgent-PrerequisitesandDependencies\">Prerequisites and Dependencies<\/h3>\n\n\n\n<p><strong>Build-Time Flags and Configuration:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Configure Option<\/strong><\/td><td><strong>Build Flag<\/strong><\/td><td><strong>Purpose<\/strong><\/td><td><strong>Default<\/strong><\/td><\/tr><tr><td><code>--enable-wanfailover<\/code><\/td><td><code>FEATURE_WAN_FAIL_OVER<\/code><\/td><td>Enable WAN failover capabilities and R-BUS integration<\/td><td>Disabled<\/td><\/tr><tr><td><code>--enable-core_net_lib_feature_support<\/code><\/td><td><code>CORE_NET_LIB_FEATURE_SUPPORT<\/code>&nbsp;(Makefile),&nbsp;<code>CORE_NET_LIB<\/code>&nbsp;(code guard)<\/td><td>Enable linking against&nbsp;<code>-lnet<\/code>&nbsp;library. Sets&nbsp;<code>CORE_NET_LIB_FEATURE_SUPPORT<\/code>&nbsp;in Makefile for linking; code uses&nbsp;<code>#ifdef CORE_NET_LIB<\/code>&nbsp;which must be separately defined via CFLAGS<\/td><td>Disabled<\/td><\/tr><tr><td><code>--enable-dropearly<\/code><\/td><td><code>DROP_ROOT_EARLY<\/code><\/td><td>Enable non-root execution by dropping root privileges early in process lifecycle<\/td><td>Disabled<\/td><\/tr><tr><td><code>--enable-notify<\/code><\/td><td><code>ENABLE_SD_NOTIFY<\/code><\/td><td>Define systemd notification flag (note: currently defined but not used in codebase)<\/td><td>Disabled<\/td><\/tr><tr><td><code>--enable-unitTestDockerSupport<\/code><\/td><td><code>UNIT_TEST_DOCKER_SUPPORT<\/code><\/td><td>Enable Docker-based unit testing support with static function visibility<\/td><td>Disabled<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><strong>RDK-B Platform and Integration Requirements<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>RDK-B Components<\/strong>: Component Registry, Persistent Storage Manager (PSM), WAN Manager (if FEATURE_RDKB_WAN_MANAGER enabled), VLAN Agent (if FEATURE_RDKB_WAN_AGENT enabled)<\/li>\n\n\n\n<li><strong>HAL Dependencies<\/strong>: ccsp_hal_ethsw.h interface with minimum HAL specification compliance for Ethernet switching operations; platform-specific statistics support (ETH_STATS_ENABLED) may be available on some platforms<\/li>\n\n\n\n<li><strong>Systemd Services<\/strong>: ccsp-cr.service must be active, psm.service for configuration persistence, dbus.service for inter-process communication<\/li>\n\n\n\n<li><strong>Hardware Requirements<\/strong>: Ethernet switching hardware with HAL support, minimum 1 Ethernet interface, WAN-capable Ethernet port for WAN failover features<\/li>\n\n\n\n<li><strong>Message Bus<\/strong>: R-BUS component registration with Device.Ethernet namespace reservation for TR-181 support and inter-component communication<\/li>\n\n\n\n<li><strong>TR-181 Data Model<\/strong>: Device.Ethernet object hierarchy support, Device.DeviceInfo parameters for AutoWAN feature discovery<\/li>\n\n\n\n<li><strong>Configuration Files<\/strong>: TR181-EthAgent.xml for data model definitions (dynamically modified based on DISTRO features), PSM database initialization for default interface configurations<\/li>\n\n\n\n<li><strong>Startup Order<\/strong>: Component Registry \u2192 PSM \u2192 Ethernet Agent \u2192 WAN Manager (if enabled), HAL initialization must complete before Ethernet Agent startup<\/li>\n<\/ul>\n\n\n\n<p><strong>Threading Model<\/strong><\/p>\n\n\n\n<p>The Ethernet Agent uses a multi-threaded design with dedicated execution contexts for core control flow, asynchronous event handling, and background activities such as telemetry\/logging. The agent spawns multiple pthreads including a state machine thread (CcspEthManager_StateMachineThread), event handler threads (SysEventHandlerThrd, CosaDmlEthEventHandlerThread), monitoring threads (ThreadMonitorPhyAndNotify, CcspHalExtSw_AssociatedDeviceMonitorThread), message update threads (ThreadUpdateInformMsg, ThreadBootInformMsg), and configuration threads (ThreadConfigEthWan, CosaDmlEthWanChangeHandling). Work is distributed across these threads, so the implementation treats interface state, configuration data, and published status as shared resources requiring proper synchronization.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Threading Architecture<\/strong>: Multi-threaded with event-driven processing across dedicated worker threads for state machine operations, event handling, monitoring, and background tasks<\/li>\n\n\n\n<li><strong>Primary Responsibilities<\/strong>: TR-181 DML operations execute in the main thread, while state-machine transitions, HAL event notifications, status polling, telemetry\/logging, and WAN configuration changes execute in dedicated pthread contexts<\/li>\n\n\n\n<li><strong>Event Processing<\/strong>: Asynchronous events from HAL, R-BUS method calls, timers, and internal worker threads are coordinated so that updates are serialized where required before mutating shared component state<\/li>\n\n\n\n<li><strong>Synchronization \/ Ownership Rules<\/strong>: Shared mutable state must only be accessed under the component&#8217;s synchronization primitives or via explicit thread ownership and hand-off mechanisms. Threads that do not own a piece of state should communicate changes through the agent&#8217;s event\/dispatch path rather than updating shared structures directly<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"EthernetAgent-ComponentStateFlow\">Component State Flow<\/h3>\n\n\n\n<p><strong>Initialization to Active State<\/strong><\/p>\n\n\n\n<p>The Ethernet Agent follows a structured initialization sequence from system startup to full operational state. The component initializes its service provider layer, registers with the Component Registry, loads interface configurations from persistent storage, establishes HAL connections, and transitions to active monitoring mode.<\/p>\n\n\n\n<div class=\"wp-block-merpress-mermaidjs diagram-source-mermaid\"><pre class=\"mermaid\">sequenceDiagram\n    participant System as System Startup\n    participant EthAgent as Ethernet Agent\n    participant CR as Component Registry\n    participant PSM as PSM\n    participant HAL as Ethernet HAL\n    participant WanMgr as WAN Manager\n\n    System->>EthAgent: Start CcspEthAgent Process\n    Note over EthAgent: State: Initializing&lt;br\/>Load configuration, setup logging\n\n    EthAgent->>CR: Register Component &amp; Namespace\n    CR-->>EthAgent: Registration Complete\n    Note over EthAgent: State: Initializing \u2192 LoadingConfig\n\n    EthAgent->>PSM: Load Persistent Configuration\n    PSM-->>EthAgent: Interface Configs Retrieved\n    Note over EthAgent: State: LoadingConfig \u2192 InitializingHAL\n\n    EthAgent->>HAL: Initialize Ethernet HAL\n    HAL-->>EthAgent: HAL Ready &amp; Interface Discovery\n    Note over EthAgent: State: InitializingHAL \u2192 ConnectingServices\n\n    EthAgent->>WanMgr: Establish R-BUS Connection (if WAN Manager enabled)\n    WanMgr-->>EthAgent: Connection Established\n    Note over EthAgent: State: ConnectingServices \u2192 Active\n\n    EthAgent->>System: Initialization Complete (Active State)\n\n    loop Runtime Operations\n        Note over EthAgent: State: Active&lt;br\/>Monitor interfaces, process events\n        EthAgent->>EthAgent: Process HAL Events &amp; R-BUS Methods\n        EthAgent->>HAL: Poll Interface Status\n        HAL-->>EthAgent: Status Updates\n        EthAgent->>WanMgr: Publish Interface Events\n    end\n\n    System->>EthAgent: Stop Request\n    Note over EthAgent: State: Active \u2192 Shutdown\n    EthAgent->>PSM: Persist Configuration\n    EthAgent->>HAL: Cleanup HAL Resources\n    EthAgent->>System: Shutdown Complete<\/pre><\/div>\n\n\n\n<p><strong>Runtime State Changes and Context Switching<\/strong><\/p>\n\n\n\n<p>The Ethernet Agent manages several runtime state transitions based on interface events, configuration changes, and WAN operational mode switching. These state changes are triggered by HAL events, TR-181 parameter modifications, and external component requests.<\/p>\n\n\n\n<p><strong>State Change Triggers:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Interface link state changes (up\/down) trigger immediate status updates and event notifications to subscribing components<\/li>\n\n\n\n<li>WAN operational mode changes trigger interface reconfiguration and notification to WAN Manager for failover coordination<\/li>\n\n\n\n<li>Configuration parameter updates trigger validation, persistence to PSM, and application of new settings to HAL interfaces<\/li>\n\n\n\n<li>HAL error conditions trigger error state transitions with automatic recovery attempts and comprehensive error logging<\/li>\n<\/ul>\n\n\n\n<p><strong>Context Switching Scenarios:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>WAN Failover Context<\/strong>: Component switches between monitoring primary and backup WAN interfaces based on WAN Manager requests<\/li>\n\n\n\n<li><strong>Bridge Mode Context<\/strong>: Interfaces dynamically added\/removed from bridge configurations based on LAN\/WAN role assignments<\/li>\n\n\n\n<li><strong>AutoWAN Mode Context<\/strong>: Automatic detection and configuration of optimal WAN interface based on connectivity validation<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"EthernetAgent-CallFlow\">Call Flow<\/h3>\n\n\n\n<p><strong>Initialization Call Flow:<\/strong><\/p>\n\n\n\n<div class=\"wp-block-merpress-mermaidjs diagram-source-mermaid\"><pre class=\"mermaid\">sequenceDiagram\n    participant Init as Initialization Process\n    participant SSP as SSP Main\n    participant DML as Ethernet DML\n    participant HAL as Ethernet HAL\n    participant PSM as PSM\n\n    Init->>SSP: Start CcspEthAgent\n    SSP->>SSP: Initialize Logging &amp; Signal Handlers\n    SSP->>DML: Load TR-181 Data Model\n    DML->>DML: Register Parameter Handlers\n    DML->>PSM: Load Persistent Interface Configs\n    PSM-->>DML: Configuration Data\n    DML->>HAL: Initialize Ethernet HAL\n    HAL-->>DML: Interface Discovery &amp; Status\n    DML->>SSP: DML Initialization Complete\n    SSP->>Init: Component Ready (Active State)<\/pre><\/div>\n\n\n\n<p><strong>Interface Configuration Call Flow:<\/strong><\/p>\n\n\n\n<p>The most critical operational flow involves processing TR-181 parameter changes and applying them to the underlying Ethernet interfaces through the HAL layer.<\/p>\n\n\n\n<div class=\"wp-block-merpress-mermaidjs diagram-source-mermaid\"><pre class=\"mermaid\">sequenceDiagram\n    participant Client as External Client\n    participant DML as Ethernet DML\n    participant Manager as Ethernet Manager  \n    participant HAL as Ethernet HAL\n    participant PSM as PSM\n    participant WanMgr as WAN Manager\n\n    Client->>DML: Set TR-181 Parameter (R-BUS)\n    Note over DML: Validate parameter value &amp; constraints\n    DML->>Manager: Process Configuration Change\n    Manager->>HAL: Apply Interface Configuration\n    HAL-->>Manager: Configuration Applied\/Error\n    alt Configuration Success\n        Manager->>PSM: Persist Configuration\n        PSM-->>Manager: Storage Complete\n        Manager->>WanMgr: Notify Interface Change (if WAN interface)\n        WanMgr-->>Manager: Acknowledgment\n        Manager-->>DML: Success Response\n        DML-->>Client: Parameter Set Complete\n    else Configuration Error  \n        Manager-->>DML: Error Response\n        DML-->>Client: Error - Invalid Configuration\n    end<\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"EthernetAgent-TR\u2011181DataModels\">TR\u2011181 Data Models<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"EthernetAgent-SupportedTR-181Parameters\">Supported TR-181 Parameters<\/h3>\n\n\n\n<p>The Ethernet Agent implements comprehensive TR-181 parameter support following BBF TR-181 Issue 2 specifications with RDK-Central extensions for enhanced Ethernet interface management and WAN failover capabilities. The implementation covers the Device.Ethernet object hierarchy with custom extensions for AutoWAN feature support and interface bridging control.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><strong>Build Configuration Note<\/strong>: The Ethernet Agent&#8217;s TR-181 data model varies based on compile-time feature flags defined in the build configuration:<\/p>\n\n\n\n<p><strong>Interface Table Implementation (mutually exclusive):<\/strong>&nbsp;&#8211;&nbsp;<strong>FEATURE_RDKB_WAN_MANAGER<\/strong>: Implements standard TR-181&nbsp;<code>Device.Ethernet.Interface.{i}<\/code>&nbsp;table with full parameter support (Enable, Status, Alias, etc.) and Stats sub-object. This is the modern WAN Manager integration mode. &#8211;&nbsp;<strong>FEATURE_RDKB_WAN_AGENT<\/strong>: Implements RDK-Central custom&nbsp;<code>Device.Ethernet.X_RDKCENTRAL-COM_Interface.{i}<\/code>&nbsp;table with vendor-specific parameters (X_RDKCENTRAL-COM_Upstream, X_RDKCENTRAL-COM_Status, etc.). This is the legacy WAN Agent integration mode.<\/p>\n\n\n\n<p><strong>Optional AutoWAN Feature (independent flag):<\/strong>&nbsp;&#8211;&nbsp;<strong>AUTOWAN_ENABLE<\/strong>: When enabled, adds the&nbsp;<code>Device.Ethernet.X_RDKCENTRAL-COM_EthernetWAN<\/code>&nbsp;object with automatic WAN interface selection capabilities. This object can be present in either WAN_MANAGER or WAN_AGENT builds.<\/p>\n\n\n\n<p>Only one interface table implementation is active in a given build. The object hierarchies shown below indicate which build configuration each applies to.<\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"EthernetAgent-ObjectHierarchy\">Object Hierarchy<\/h3>\n\n\n\n<p><strong>When FEATURE_RDKB_WAN_MANAGER is enabled:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">Device.\n\u251c\u2500\u2500 DeviceInfo.\n\u2502   \u2514\u2500\u2500 X_RDKCENTRAL-COM_AutowanFeatureSupport (boolean, R)\n\u2514\u2500\u2500 Ethernet.\n    \u251c\u2500\u2500 X_RDKCENTRAL-COM_EthHost_Sync (boolean, R\/W)\n    \u251c\u2500\u2500 X_RDKCENTRAL-COM_WAN.\n    \u2502   \u251c\u2500\u2500 Enabled (boolean, R\/W)\n    \u2502   \u2514\u2500\u2500 Port (unsignedInt, R)\n    \u251c\u2500\u2500 Interface.{i}.                                         [Standard TR-181]\n    \u2502   \u251c\u2500\u2500 Enable (boolean, R\/W)\n    \u2502   \u251c\u2500\u2500 Status (string, R)\n    \u2502   \u251c\u2500\u2500 Alias (string, R\/W)\n    \u2502   \u251c\u2500\u2500 Name (string, R)\n    \u2502   \u251c\u2500\u2500 LastChange (unsignedInt, R)\n    \u2502   \u251c\u2500\u2500 LowerLayers (string, R\/W)\n    \u2502   \u251c\u2500\u2500 Upstream (boolean, R\/W)                            [R\/W if FEATURE_RDKB_WAN_UPSTREAM]\n    \u2502   \u251c\u2500\u2500 MACAddress (string, R)\n    \u2502   \u251c\u2500\u2500 MaxBitRate (int, R)\n    \u2502   \u251c\u2500\u2500 CurrentBitRate (unsignedInt, R)\n    \u2502   \u251c\u2500\u2500 DuplexMode (string, R\/W)\n    \u2502   \u251c\u2500\u2500 X_RDKCENTRAL-COM_AssociatedDevice.{i}.\n    \u2502   \u2502   \u2514\u2500\u2500 MACAddress (string, R\/W)\n    \u2502   \u2514\u2500\u2500 Stats.\n    \u2502       \u251c\u2500\u2500 BytesSent (string, R)                          [64-bit counter as string]\n    \u2502       \u251c\u2500\u2500 BytesReceived (string, R)                      [64-bit counter as string]\n    \u2502       \u251c\u2500\u2500 PacketsSent (unsignedInt, R)\n    \u2502       \u251c\u2500\u2500 PacketsReceived (unsignedInt, R)\n    \u2502       \u251c\u2500\u2500 ErrorsSent (unsignedInt, R)\n    \u2502       \u251c\u2500\u2500 ErrorsReceived (unsignedInt, R)\n    \u2502       \u251c\u2500\u2500 UnicastPacketsSent (unsignedInt, R)\n    \u2502       \u251c\u2500\u2500 UnicastPacketsReceived (unsignedInt, R)\n    \u2502       \u251c\u2500\u2500 DiscardPacketsSent (unsignedInt, R)\n    \u2502       \u251c\u2500\u2500 DiscardPacketsReceived (unsignedInt, R)\n    \u2502       \u251c\u2500\u2500 MulticastPacketsSent (unsignedInt, R)\n    \u2502       \u251c\u2500\u2500 MulticastPacketsReceived (unsignedInt, R)\n    \u2502       \u251c\u2500\u2500 BroadcastPacketsSent (unsignedInt, R)\n    \u2502       \u251c\u2500\u2500 BroadcastPacketsReceived (unsignedInt, R)\n    \u2502       \u2514\u2500\u2500 UnknownProtoPacketsReceived (unsignedInt, R)\n    \u2514\u2500\u2500 X_RDKCENTRAL-COM_EthernetWAN.                          [Only if AUTOWAN_ENABLE]\n        \u251c\u2500\u2500 SelectedOperationalMode (string, R\/W)\n        \u251c\u2500\u2500 CurrentOperationalMode (string, R)\n        \u251c\u2500\u2500 LastKnownOperationalMode (string, R)\n        \u251c\u2500\u2500 ConfigureWan (boolean, R\/W)\n        \u251c\u2500\u2500 PostCfgWanFinalize (string, R\/W)\n        \u2514\u2500\u2500 RequestPhyStatus (string, R\/W)<\/pre>\n\n\n\n<p><strong>When FEATURE_RDKB_WAN_AGENT is enabled:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">Device.\n\u251c\u2500\u2500 DeviceInfo.\n\u2502   \u2514\u2500\u2500 X_RDKCENTRAL-COM_AutowanFeatureSupport (boolean, R)\n\u2514\u2500\u2500 Ethernet.\n    \u251c\u2500\u2500 X_RDKCENTRAL-COM_EthHost_Sync (boolean, R\/W)\n    \u251c\u2500\u2500 X_RDKCENTRAL-COM_WAN.\n    \u2502   \u251c\u2500\u2500 Enabled (boolean, R\/W)\n    \u2502   \u2514\u2500\u2500 Port (unsignedInt, R)\n    \u251c\u2500\u2500 X_RDKCENTRAL-COM_Interface.{i}.                        [RDK-Central Custom]\n    \u2502   \u251c\u2500\u2500 X_RDKCENTRAL-COM_Upstream (boolean, R\/W)\n    \u2502   \u251c\u2500\u2500 X_RDKCENTRAL-COM_WanValidated (boolean, R\/W)\n    \u2502   \u251c\u2500\u2500 X_RDKCENTRAL-COM_Name (string, R)\n    \u2502   \u251c\u2500\u2500 X_RDKCENTRAL-COM_Status (string, R)                [Up(1), Down(2)]\n    \u2502   \u2514\u2500\u2500 X_RDKCENTRAL-COM_WanStatus (string, R\/W)          [Up(1), Down(2)]\n    \u2514\u2500\u2500 X_RDKCENTRAL-COM_EthernetWAN.                          [Only if AUTOWAN_ENABLE]\n        \u251c\u2500\u2500 SelectedOperationalMode (string, R\/W)\n        \u251c\u2500\u2500 CurrentOperationalMode (string, R)\n        \u251c\u2500\u2500 LastKnownOperationalMode (string, R)\n        \u251c\u2500\u2500 ConfigureWan (boolean, R\/W)\n        \u251c\u2500\u2500 PostCfgWanFinalize (string, R\/W)\n        \u2514\u2500\u2500 RequestPhyStatus (string, R\/W)<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"EthernetAgent-ParameterDefinitions\">Parameter Definitions<\/h3>\n\n\n\n<p><strong>Common Parameters (all build configurations):<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Parameter Path<\/strong><\/td><td><strong>Data Type<\/strong><\/td><td><strong>Access<\/strong><\/td><td><strong>Default Value<\/strong><\/td><td><strong>Description<\/strong><\/td><td><strong>BBF Compliance<\/strong><\/td><\/tr><tr><td><code>Device.DeviceInfo.X_RDKCENTRAL-COM_AutowanFeatureSupport<\/code><\/td><td>boolean<\/td><td>R<\/td><td><code>false<\/code><\/td><td>Indicates whether the device supports AutoWAN feature for automatic WAN interface selection and failover capabilities<\/td><td>RDK-Central Extension<\/td><\/tr><tr><td><code>Device.Ethernet.X_RDKCENTRAL-COM_EthHost_Sync<\/code><\/td><td>boolean<\/td><td>R\/W<\/td><td><code>false<\/code><\/td><td>Controls synchronization of Ethernet host device information with connected devices for network topology discovery<\/td><td>RDK-Central Extension<\/td><\/tr><tr><td><code>Device.Ethernet.X_RDKCENTRAL-COM_WAN.Enabled<\/code><\/td><td>boolean<\/td><td>R\/W<\/td><td><code>false<\/code><\/td><td>Enables Ethernet WAN functionality allowing Ethernet interfaces to operate as WAN connections<\/td><td>RDK-Central Extension<\/td><\/tr><tr><td><code>Device.Ethernet.X_RDKCENTRAL-COM_WAN.Port<\/code><\/td><td>unsignedInt<\/td><td>R<\/td><td><code>0<\/code><\/td><td>Indicates the physical port number currently configured for Ethernet WAN operation<\/td><td>RDK-Central Extension<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><strong>FEATURE_RDKB_WAN_MANAGER Interface Parameters:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Parameter Path<\/strong><\/td><td><strong>Data Type<\/strong><\/td><td><strong>Access<\/strong><\/td><td><strong>Default Value<\/strong><\/td><td><strong>Description<\/strong><\/td><td><strong>BBF Compliance<\/strong><\/td><\/tr><tr><td><code>Device.Ethernet.Interface.{i}.Enable<\/code><\/td><td>boolean<\/td><td>R\/W<\/td><td><code>true<\/code><\/td><td>Enables or disables the Ethernet interface. When disabled, interface is administratively down<\/td><td>TR-181 Issue 2<\/td><\/tr><tr><td><code>Device.Ethernet.Interface.{i}.Status<\/code><\/td><td>string<\/td><td>R<\/td><td><code>\"Down\"<\/code><\/td><td>Current operational status: Up(1), Down(2), Unknown(3), Dormant(4), NotPresent(5), LowerLayerDown(6), Error(7)<\/td><td>TR-181 Issue 2<\/td><\/tr><tr><td><code>Device.Ethernet.Interface.{i}.Alias<\/code><\/td><td>string<\/td><td>R\/W<\/td><td><code>\"\"<\/code><\/td><td>User-assigned name for the interface. Alternative identifier for interface reference<\/td><td>TR-181 Issue 2<\/td><\/tr><tr><td><code>Device.Ethernet.Interface.{i}.Name<\/code><\/td><td>string<\/td><td>R<\/td><td>System-assigned<\/td><td>System-assigned interface name (e.g., eth0, eth1). Read-only identifier<\/td><td>TR-181 Issue 2<\/td><\/tr><tr><td><code>Device.Ethernet.Interface.{i}.LastChange<\/code><\/td><td>unsignedInt<\/td><td>R<\/td><td><code>0<\/code><\/td><td>Time in seconds since last interface state change. Used for monitoring interface stability<\/td><td>TR-181 Issue 2<\/td><\/tr><tr><td><code>Device.Ethernet.Interface.{i}.LowerLayers<\/code><\/td><td>string<\/td><td>R\/W<\/td><td><code>\"\"<\/code><\/td><td>Comma-separated list of lower-layer interface references for layered interface stack<\/td><td>TR-181 Issue 2<\/td><\/tr><tr><td><code>Device.Ethernet.Interface.{i}.Upstream<\/code><\/td><td>boolean<\/td><td>R\/W\u00b9<\/td><td><code>false<\/code><\/td><td>Indicates whether interface is designated as upstream (WAN) connection. Controls routing and bridge membership<\/td><td>TR-181 Issue 2<\/td><\/tr><tr><td><code>Device.Ethernet.Interface.{i}.MACAddress<\/code><\/td><td>string<\/td><td>R<\/td><td>System-assigned<\/td><td>Physical MAC address of the Ethernet interface in colon-separated hexadecimal notation<\/td><td>TR-181 Issue 2<\/td><\/tr><tr><td><code>Device.Ethernet.Interface.{i}.MaxBitRate<\/code><\/td><td>int<\/td><td>R<\/td><td><code>-1<\/code><\/td><td>Maximum supported bit rate in Mbps. -1 indicates unknown or auto-negotiation<\/td><td>TR-181 Issue 2<\/td><\/tr><tr><td><code>Device.Ethernet.Interface.{i}.CurrentBitRate<\/code><\/td><td>unsignedInt<\/td><td>R<\/td><td><code>0<\/code><\/td><td>Current negotiated bit rate in Mbps. Reflects active link speed<\/td><td>TR-181 Issue 2<\/td><\/tr><tr><td><code>Device.Ethernet.Interface.{i}.DuplexMode<\/code><\/td><td>string<\/td><td>R\/W<\/td><td><code>\"Auto\"<\/code><\/td><td>Interface duplex mode: Half(1), Full(2), Auto(3). Auto enables automatic negotiation<\/td><td>TR-181 Issue 2<\/td><\/tr><tr><td><code>Device.Ethernet.Interface.{i}.Stats.BytesSent<\/code><\/td><td>string<\/td><td>R<\/td><td><code>\"0\"<\/code><\/td><td>Total bytes transmitted. Represented as string to support 64-bit counter values<\/td><td>TR-181 Issue 2<\/td><\/tr><tr><td><code>Device.Ethernet.Interface.{i}.Stats.BytesReceived<\/code><\/td><td>string<\/td><td>R<\/td><td><code>\"0\"<\/code><\/td><td>Total bytes received. Represented as string to support 64-bit counter values<\/td><td>TR-181 Issue 2<\/td><\/tr><tr><td><code>Device.Ethernet.Interface.{i}.Stats.PacketsSent<\/code><\/td><td>unsignedInt<\/td><td>R<\/td><td><code>0<\/code><\/td><td>Total packets transmitted<\/td><td>TR-181 Issue 2<\/td><\/tr><tr><td><code>Device.Ethernet.Interface.{i}.Stats.PacketsReceived<\/code><\/td><td>unsignedInt<\/td><td>R<\/td><td><code>0<\/code><\/td><td>Total packets received<\/td><td>TR-181 Issue 2<\/td><\/tr><tr><td><code>Device.Ethernet.Interface.{i}.Stats.ErrorsSent<\/code><\/td><td>unsignedInt<\/td><td>R<\/td><td><code>0<\/code><\/td><td>Total packets transmitted with errors<\/td><td>TR-181 Issue 2<\/td><\/tr><tr><td><code>Device.Ethernet.Interface.{i}.Stats.ErrorsReceived<\/code><\/td><td>unsignedInt<\/td><td>R<\/td><td><code>0<\/code><\/td><td>Total packets received with errors<\/td><td>TR-181 Issue 2<\/td><\/tr><tr><td><code>Device.Ethernet.Interface.{i}.Stats.UnicastPacketsSent<\/code><\/td><td>unsignedInt<\/td><td>R<\/td><td><code>0<\/code><\/td><td>Total unicast packets transmitted<\/td><td>TR-181 Issue 2<\/td><\/tr><tr><td><code>Device.Ethernet.Interface.{i}.Stats.UnicastPacketsReceived<\/code><\/td><td>unsignedInt<\/td><td>R<\/td><td><code>0<\/code><\/td><td>Total unicast packets received<\/td><td>TR-181 Issue 2<\/td><\/tr><tr><td><code>Device.Ethernet.Interface.{i}.Stats.DiscardPacketsSent<\/code><\/td><td>unsignedInt<\/td><td>R<\/td><td><code>0<\/code><\/td><td>Total outbound packets discarded (e.g., buffer full, policy)<\/td><td>TR-181 Issue 2<\/td><\/tr><tr><td><code>Device.Ethernet.Interface.{i}.Stats.DiscardPacketsReceived<\/code><\/td><td>unsignedInt<\/td><td>R<\/td><td><code>0<\/code><\/td><td>Total inbound packets discarded (e.g., buffer full, policy)<\/td><td>TR-181 Issue 2<\/td><\/tr><tr><td><code>Device.Ethernet.Interface.{i}.Stats.MulticastPacketsSent<\/code><\/td><td>unsignedInt<\/td><td>R<\/td><td><code>0<\/code><\/td><td>Total multicast packets transmitted<\/td><td>TR-181 Issue 2<\/td><\/tr><tr><td><code>Device.Ethernet.Interface.{i}.Stats.MulticastPacketsReceived<\/code><\/td><td>unsignedInt<\/td><td>R<\/td><td><code>0<\/code><\/td><td>Total multicast packets received<\/td><td>TR-181 Issue 2<\/td><\/tr><tr><td><code>Device.Ethernet.Interface.{i}.Stats.BroadcastPacketsSent<\/code><\/td><td>unsignedInt<\/td><td>R<\/td><td><code>0<\/code><\/td><td>Total broadcast packets transmitted<\/td><td>TR-181 Issue 2<\/td><\/tr><tr><td><code>Device.Ethernet.Interface.{i}.Stats.BroadcastPacketsReceived<\/code><\/td><td>unsignedInt<\/td><td>R<\/td><td><code>0<\/code><\/td><td>Total broadcast packets received<\/td><td>TR-181 Issue 2<\/td><\/tr><tr><td><code>Device.Ethernet.Interface.{i}.Stats.UnknownProtoPacketsReceived<\/code><\/td><td>unsignedInt<\/td><td>R<\/td><td><code>0<\/code><\/td><td>Total packets received with unknown or unsupported protocol<\/td><td>TR-181 Issue 2<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>\u00b9&nbsp;<em>Writable only when FEATURE_RDKB_WAN_UPSTREAM is enabled, otherwise read-only<\/em><\/p>\n\n\n\n<p><strong>FEATURE_RDKB_WAN_AGENT Interface Parameters:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Parameter Path<\/strong><\/td><td><strong>Data Type<\/strong><\/td><td><strong>Access<\/strong><\/td><td><strong>Default Value<\/strong><\/td><td><strong>Description<\/strong><\/td><td><strong>BBF Compliance<\/strong><\/td><\/tr><tr><td><code>Device.Ethernet.X_RDKCENTRAL-COM_Interface.{i}.X_RDKCENTRAL-COM_Upstream<\/code><\/td><td>boolean<\/td><td>R\/W<\/td><td><code>false<\/code><\/td><td>Indicates whether interface is designated as upstream (WAN) connection for legacy WAN Agent integration<\/td><td>RDK-Central Extension<\/td><\/tr><tr><td><code>Device.Ethernet.X_RDKCENTRAL-COM_Interface.{i}.X_RDKCENTRAL-COM_WanValidated<\/code><\/td><td>boolean<\/td><td>R\/W<\/td><td><code>false<\/code><\/td><td>Indicates whether WAN connectivity validation has passed for this interface<\/td><td>RDK-Central Extension<\/td><\/tr><tr><td><code>Device.Ethernet.X_RDKCENTRAL-COM_Interface.{i}.X_RDKCENTRAL-COM_Name<\/code><\/td><td>string<\/td><td>R<\/td><td>System-assigned<\/td><td>System-assigned interface name for legacy WAN Agent mode<\/td><td>RDK-Central Extension<\/td><\/tr><tr><td><code>Device.Ethernet.X_RDKCENTRAL-COM_Interface.{i}.X_RDKCENTRAL-COM_Status<\/code><\/td><td>string<\/td><td>R<\/td><td><code>\"Down\"<\/code><\/td><td>Current operational status for legacy mode: Up(1), Down(2)<\/td><td>RDK-Central Extension<\/td><\/tr><tr><td><code>Device.Ethernet.X_RDKCENTRAL-COM_Interface.{i}.X_RDKCENTRAL-COM_WanStatus<\/code><\/td><td>string<\/td><td>R\/W<\/td><td><code>\"Down\"<\/code><\/td><td>WAN operational status for legacy mode: Up(1), Down(2)<\/td><td>RDK-Central Extension<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><strong>AUTOWAN_ENABLE Parameters (optional feature &#8211; only present when AUTOWAN_ENABLE is defined):<\/strong><\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><strong>Note<\/strong>: The&nbsp;<code>Device.Ethernet.X_RDKCENTRAL-COM_EthernetWAN<\/code>&nbsp;object and its parameters are only available in builds where the AUTOWAN_ENABLE compile-time flag is enabled. This feature is independent of the WAN_MANAGER\/WAN_AGENT choice and can be combined with either integration mode.<\/p>\n<\/blockquote>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Parameter Path<\/strong><\/td><td><strong>Data Type<\/strong><\/td><td><strong>Access<\/strong><\/td><td><strong>Default Value<\/strong><\/td><td><strong>Description<\/strong><\/td><td><strong>BBF Compliance<\/strong><\/td><\/tr><tr><td><code>Device.Ethernet.X_RDKCENTRAL-COM_EthernetWAN.SelectedOperationalMode<\/code><\/td><td>string<\/td><td>R\/W<\/td><td><code>\"\"<\/code><\/td><td>User-selected WAN operational mode for automatic interface selection in multi-WAN scenarios<\/td><td>RDK-Central Extension<\/td><\/tr><tr><td><code>Device.Ethernet.X_RDKCENTRAL-COM_EthernetWAN.CurrentOperationalMode<\/code><\/td><td>string<\/td><td>R<\/td><td><code>\"\"<\/code><\/td><td>Currently active WAN operational mode reflecting actual system configuration<\/td><td>RDK-Central Extension<\/td><\/tr><tr><td><code>Device.Ethernet.X_RDKCENTRAL-COM_EthernetWAN.LastKnownOperationalMode<\/code><\/td><td>string<\/td><td>R<\/td><td><code>\"\"<\/code><\/td><td>Previously active WAN operational mode before current mode. Used for failback operations<\/td><td>RDK-Central Extension<\/td><\/tr><tr><td><code>Device.Ethernet.X_RDKCENTRAL-COM_EthernetWAN.ConfigureWan<\/code><\/td><td>boolean<\/td><td>R\/W<\/td><td><code>false<\/code><\/td><td>Triggers WAN interface configuration process when set to true. Self-clearing after processing<\/td><td>RDK-Central Extension<\/td><\/tr><tr><td><code>Device.Ethernet.X_RDKCENTRAL-COM_EthernetWAN.PostCfgWanFinalize<\/code><\/td><td>string<\/td><td>R\/W<\/td><td><code>\"\"<\/code><\/td><td>Post-configuration finalization command string for WAN setup completion<\/td><td>RDK-Central Extension<\/td><\/tr><tr><td><code>Device.Ethernet.X_RDKCENTRAL-COM_EthernetWAN.RequestPhyStatus<\/code><\/td><td>string<\/td><td>R\/W<\/td><td><code>\"\"<\/code><\/td><td>Request physical interface status query. Write interface name to trigger status update<\/td><td>RDK-Central Extension<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"EthernetAgent-InternalModules\">Internal Modules<\/h2>\n\n\n\n<p>The Ethernet Agent is structured into distinct functional modules that handle different aspects of Ethernet interface management. Each module has specific responsibilities and interacts through well-defined interfaces to maintain system modularity and testability.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Module\/Class<\/strong><\/td><td><strong>Description<\/strong><\/td><td><strong>Key Files<\/strong><\/td><\/tr><tr><td><strong>SSP Main Process<\/strong><\/td><td>Service provider layer handling process lifecycle, signal management, and R-BUS integration for component startup and shutdown coordination<\/td><td><code>ssp_main.c<\/code>,&nbsp;<code>ssp_messagebus_interface.c<\/code>,&nbsp;<code>ssp_action.c<\/code><\/td><\/tr><tr><td><strong>Ethernet DML Handler<\/strong><\/td><td>TR-181 data model implementation providing parameter access, validation, and event handling for Device.Ethernet object hierarchy<\/td><td><code>cosa_ethernet_dml.c<\/code>,&nbsp;<code>cosa_ethernet_dml.h<\/code><\/td><\/tr><tr><td><strong>Interface DML Handler<\/strong><\/td><td>Specialized handler for Device.Ethernet.Interface table operations including dynamic interface discovery, configuration management, and statistics collection<\/td><td><code>cosa_ethernet_interface_dml.c<\/code>,&nbsp;<code>cosa_ethernet_interface_dml.h<\/code><\/td><\/tr><tr><td><strong>Ethernet Manager<\/strong><\/td><td>Core business logic module managing interface state, configuration persistence, and coordination between HAL layer and upper middleware components<\/td><td><code>cosa_ethernet_manager.c<\/code>,&nbsp;<code>cosa_ethernet_apis.c<\/code><\/td><\/tr><tr><td><strong>HAL Interface Module<\/strong><\/td><td>Hardware abstraction layer integration providing platform-independent access to Ethernet hardware capabilities and event handling<\/td><td><code>eth_hal_interface.c<\/code>,&nbsp;<code>cosa_ethernet_apis.h<\/code><\/td><\/tr><tr><td><strong>R-BUS Handler<\/strong><\/td><td>Event-driven communication module managing R-BUS method registration, event publishing, and inter-component messaging for real-time interface status updates<\/td><td><code>cosa_rbus_handler_apis.c<\/code>,&nbsp;<code>cosa_rbus_handler_apis.h<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"EthernetAgent-ComponentInteractions\">Component Interactions<\/h2>\n\n\n\n<p>The Ethernet Agent integrates with multiple RDK-B middleware components and external systems to provide comprehensive Ethernet interface management. These interactions include TR-181 parameter access, event notifications, HAL hardware integration, and coordination with WAN management systems.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"EthernetAgent-InteractionMatrix\">Interaction Matrix<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Target Component\/Layer<\/strong><\/td><td><strong>Interaction Purpose<\/strong><\/td><td><strong>Key APIs\/Endpoints<\/strong><\/td><\/tr><tr><td><strong>RDK-B Middleware Components<\/strong><\/td><td><\/td><td><\/td><\/tr><tr><td>WAN Manager<\/td><td>Interface status events and WAN failover coordination<\/td><td><code>Device.Ethernet.X_RDKCENTRAL-COM_WAN.Enabled<\/code>,&nbsp;<code>Device.Ethernet.Interface.{i}.Upstream<\/code><\/td><\/tr><tr><td>VLAN Agent<\/td><td>Ethernet link configuration and VLAN interface creation<\/td><td><code>Device.X_RDKCENTRAL-COM_Ethernet.Link.{i}.*<\/code>&nbsp;parameters via R-BUS<\/td><\/tr><tr><td>PSM<\/td><td>Configuration persistence for interface settings<\/td><td><code>dmsb.ethagent.if.{i}.Upstream<\/code>,&nbsp;<code>dmsb.ethagent.if.{i}.AddToLanBridge<\/code><\/td><\/tr><tr><td>Component Registry<\/td><td>Service registration and namespace management<\/td><td>Component registration with&nbsp;<code>eRT.com.cisco.spvtg.ccsp.ethagent<\/code>&nbsp;identifier<\/td><\/tr><tr><td>Telemetry Agent<\/td><td>Interface statistics reporting<\/td><td>R-BUS events for statistics data: BytesSent, PacketsReceived, ErrorsReceived<\/td><\/tr><tr><td><strong>System &amp; HAL Layers<\/strong><\/td><td><\/td><td><\/td><\/tr><tr><td>Ethernet HAL<\/td><td>Hardware interface control and status monitoring<\/td><td><code>CcspHalEthSwSetPortAdminStatus()<\/code>,&nbsp;<code>CcspHalEthSwGetPortStatus()<\/code>,&nbsp;<code>CcspHalEthSwGetEthPortStats()<\/code><\/td><\/tr><tr><td>Linux Network Stack<\/td><td>Direct interface manipulation for advanced configurations<\/td><td><code>\/sys\/class\/net\/{interface}\/operstate<\/code>,&nbsp;<code>ioctl()<\/code>&nbsp;system calls<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><strong>Events Published by Ethernet Agent:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Event Name<\/strong><\/td><td><strong>Event Topic\/Path<\/strong><\/td><td><strong>Trigger Condition<\/strong><\/td><td><strong>Subscriber Components<\/strong><\/td><\/tr><tr><td>Interface Status Change<\/td><td><code>Device.Ethernet.Interface.{i}.Status<\/code><\/td><td>Link up\/down, operational state changes<\/td><td>WAN Manager, Telemetry Agent, Web UI<\/td><\/tr><tr><td>WAN Interface Change<\/td><td><code>Device.Ethernet.X_RDKCENTRAL-COM_WAN.Enabled<\/code><\/td><td>WAN interface enable\/disable, port changes<\/td><td>WAN Manager, VLAN Agent<\/td><\/tr><tr><td>Interface Statistics Update<\/td><td><code>Device.Ethernet.Interface.{i}.Stats.*<\/code><\/td><td>Periodic statistics collection (configurable interval)<\/td><td>Telemetry Agent, SNMP Agent<\/td><\/tr><tr><td>AutoWAN Mode Change\u00b9<\/td><td><code>Device.Ethernet.X_RDKCENTRAL-COM_EthernetWAN.CurrentOperationalMode<\/code><\/td><td>WAN operational mode transitions<\/td><td>WAN Manager, Event logging systems<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>\u00b9&nbsp;<em>Only published when AUTOWAN_ENABLE is defined<\/em><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"EthernetAgent-IPCFlowPatterns\">IPC Flow Patterns<\/h3>\n\n\n\n<p><strong>Primary IPC Flow &#8211; Interface Configuration:<\/strong><\/p>\n\n\n\n<div class=\"wp-block-merpress-mermaidjs diagram-source-mermaid\"><pre class=\"mermaid\">sequenceDiagram\n    participant Client as Management Client\n    participant EthAgent as Ethernet Agent\n    participant HAL as Ethernet HAL\n    participant PSM as PSM\n\n    Client->>EthAgent: Set Device.Ethernet.Interface.1.Enable=true (R-BUS)\n    Note over EthAgent: Validate parameter &amp; check dependencies\n    EthAgent->>HAL: CcspHalEthSwSetPortAdminStatus(1, true)\n    HAL-->>EthAgent: SUCCESS\/ERROR status\n    alt Configuration Success\n        EthAgent->>PSM: Set dmsb.ethagent.if.1.Enable=true\n        PSM-->>EthAgent: Storage confirmation\n        EthAgent-->>Client: R-BUS method response (SUCCESS)\n    else Configuration Error\n        Note over EthAgent: Log error &amp; maintain previous state\n        EthAgent-->>Client: R-BUS method response (ERROR)\n    end<\/pre><\/div>\n\n\n\n<p><strong>Event Notification Flow &#8211; Interface Status Change:<\/strong><\/p>\n\n\n\n<div class=\"wp-block-merpress-mermaidjs diagram-source-mermaid\"><pre class=\"mermaid\">sequenceDiagram\n    participant HAL as Ethernet HAL\n    participant EthAgent as Ethernet Agent\n    participant WanMgr as WAN Manager\n    participant Telemetry as Telemetry Agent\n\n    HAL->>EthAgent: Interface callback: Link Down Event\n    Note over EthAgent: Update internal state &amp; validate change\n    EthAgent->>WanMgr: R-BUS Event: Device.Ethernet.Interface.1.Status=Down\n    EthAgent->>Telemetry: R-BUS Event: Interface statistics update\n    WanMgr-->>EthAgent: Event acknowledgment (if required)\n    Telemetry-->>EthAgent: Event acknowledgment (if required)<\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"EthernetAgent-ImplementationDetails\">Implementation Details<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"EthernetAgent-MajorHALAPIsIntegration\">Major HAL APIs Integration<\/h3>\n\n\n\n<p>The Ethernet Agent integrates with the Ethernet HAL through the ccsp_hal_ethsw.h interface, providing platform-independent access to Ethernet switching hardware. The HAL integration supports comprehensive interface management including administrative control, status monitoring, and statistics collection.<\/p>\n\n\n\n<p><strong>Core HAL APIs:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>HAL API<\/strong><\/td><td><strong>Purpose<\/strong><\/td><td><strong>Implementation File<\/strong><\/td><\/tr><tr><td><code>CcspHalEthSwSetPortAdminStatus()<\/code><\/td><td>Set interface administrative status (enable\/disable)<\/td><td><code>source\/TR-181\/board_sbapi\/source-arm\/cosa_ethernet_apis_arm.c<\/code><\/td><\/tr><tr><td><code>CcspHalEthSwGetPortStatus()<\/code><\/td><td>Retrieve current interface operational status including link state, link rate, and duplex mode<\/td><td><code>source\/TR-181\/board_sbapi\/source-arm\/cosa_ethernet_apis_arm.c<\/code><\/td><\/tr><tr><td><code>CcspHalEthSwGetEthPortStats()<\/code><\/td><td>Collect comprehensive interface statistics (bytes, packets, errors)<\/td><td><code>source\/TR-181\/board_sbapi\/source-arm\/cosa_ethernet_apis_arm.c<\/code><\/td><\/tr><tr><td><code>CcspHalEthSwGetPortCfg()<\/code><\/td><td>Get interface configuration including link rate and duplex mode settings<\/td><td><code>source\/TR-181\/board_sbapi\/source-arm\/cosa_ethernet_apis_arm.c<\/code><\/td><\/tr><tr><td><code>CcspHalEthSwGetPortAdminStatus()<\/code><\/td><td>Get interface administrative status (up\/down)<\/td><td><code>source\/TR-181\/board_sbapi\/source-arm\/cosa_ethernet_apis_arm.c<\/code><\/td><\/tr><tr><td><code>CcspHalEthSw_RegisterLinkEventCallback()<\/code><\/td><td>Register callback for asynchronous interface link status change notifications<\/td><td><code>source\/TR-181\/middle_layer_src\/cosa_ethernet_internal.c<\/code><\/td><\/tr><tr><td><code>GWP_RegisterEthWan_Callback()<\/code><\/td><td>Register callbacks for Ethernet WAN link up\/down events<\/td><td><code>source\/TR-181\/middle_layer_src\/cosa_ethernet_internal.c<\/code><\/td><\/tr><tr><td><code>CcspHalExtSw_getAssociatedDevice()<\/code><\/td><td>Retrieve list of devices associated with Ethernet interfaces<\/td><td><code>source\/TR-181\/board_sbapi\/source-arm\/cosa_ethernet_apis_arm.c<\/code>,&nbsp;<code>source\/TR-181\/board_sbapi\/eth_hal_interface.c<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"EthernetAgent-KeyImplementationLogic\">Key Implementation Logic<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Interface State Management<\/strong>: The core state machine is implemented in&nbsp;<code>cosa_ethernet_manager.c<\/code>&nbsp;with interface state tracking, configuration validation, and event-driven status updates\n<ul class=\"wp-block-list\">\n<li>Main state machine thread execution in&nbsp;<code>CcspEthManager_StateMachineThread()<\/code>&nbsp;function started by&nbsp;<code>CosaEthManager_Start_StateMachine()<\/code><\/li>\n\n\n\n<li>Interface configuration and retrieval logic in&nbsp;<code>CosaDmlEthPortGetEntry()<\/code>&nbsp;and&nbsp;<code>CosaDmlEthPortSetCfg()<\/code>&nbsp;functions (source-arm\/cosa_ethernet_apis_arm.c)<\/li>\n\n\n\n<li>State transition handlers in&nbsp;<code>EthInterface_SetParamBoolValue()<\/code>&nbsp;and&nbsp;<code>EthInterface_Validate()<\/code>&nbsp;functions (cosa_ethernet_dml.c)<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Event Processing<\/strong>: Hardware events from the HAL layer are processed asynchronously through multiple event handler threads and mapped to appropriate TR-181 parameter changes and R-BUS notifications\n<ul class=\"wp-block-list\">\n<li>Link status callback handling in&nbsp;<code>CosaDmlEthPortLinkStatusCallback()<\/code>&nbsp;function registered via&nbsp;<code>CcspHalEthSw_RegisterLinkEventCallback()<\/code><\/li>\n\n\n\n<li>WAN link event callbacks&nbsp;<code>EthWanLinkUp_callback()<\/code>&nbsp;and&nbsp;<code>EthWanLinkDown_callback()<\/code>&nbsp;registered via&nbsp;<code>GWP_RegisterEthWan_Callback()<\/code><\/li>\n\n\n\n<li>Event handler threads&nbsp;<code>SysEventHandlerThrd()<\/code>&nbsp;and&nbsp;<code>CosaDmlEthEventHandlerThread()<\/code>&nbsp;for processing queued events<\/li>\n\n\n\n<li>Asynchronous R-BUS event publishing in&nbsp;<code>cosa_rbus_handler_apis.c<\/code><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Error Handling Strategy<\/strong>: Comprehensive error detection and recovery with HAL error code mapping, automatic retry mechanisms, and detailed logging for troubleshooting\n<ul class=\"wp-block-list\">\n<li>HAL error code mapping in&nbsp;<code>CosaDmlEthPortGetDinfo()<\/code>&nbsp;and HAL status query functions with ANSC_STATUS\/RETURN_OK return codes<\/li>\n\n\n\n<li>Recovery mechanisms for failed HAL operations with detailed error logging and fallback to previous known good state<\/li>\n\n\n\n<li>Interface availability checking with&nbsp;<code>getIfAvailability()<\/code>&nbsp;to handle NotPresent status for missing physical interfaces<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Logging &amp; Debugging<\/strong>: Multi-level logging with interface-specific debug categories, HAL API tracing, and runtime configuration for troubleshooting\n<ul class=\"wp-block-list\">\n<li>Interface state transition logging with COSA_LOG_LEVEL_INFO for normal operations<\/li>\n\n\n\n<li>HAL API call tracing with entry\/exit logging for all HAL function calls<\/li>\n\n\n\n<li>Debug hooks for runtime troubleshooting including interface dump capabilities and state inspection<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"EthernetAgent-KeyConfigurationFiles\">Key Configuration Files<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Configuration File<\/strong><\/td><td><strong>Purpose<\/strong><\/td><td><strong>Override Mechanisms<\/strong><\/td><\/tr><tr><td><code>config\/TR181-EthAgent.xml<\/code><\/td><td>TR-181 data model definitions and function mappings<\/td><td>Compile-time feature flags: FEATURE_RDKB_WAN_MANAGER, AUTOWAN_ENABLE<\/td><\/tr><tr><td><code>CcspEthAgent.cfg<\/code><\/td><td>Component registration and R-BUS configuration; typically provided by the platform image or integration layer, not stored in this repository<\/td><td>Environment variables: CCSP_MSG_BUS_CFG, CCSP_CFG_PATH<\/td><\/tr><tr><td><code>system_defaults<\/code><\/td><td>Default interface configurations and PSM parameter values; typically provided by the platform image, build system, or companion repos, not stored in this repository<\/td><td>Build-time\/integration configuration: &#8211;enable-wanfailover, &#8211;enable-dropearly<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><strong>Note:<\/strong>&nbsp;In this repository, the documented configuration artifact present is&nbsp;<code>config\/TR181-EthAgent.xml<\/code>. Files such as&nbsp;<code>CcspEthAgent.cfg<\/code>&nbsp;and&nbsp;<code>system_defaults<\/code>&nbsp;are deployment\/platform integration artifacts and may be supplied by the target image, build environment, or other repositories.<\/p>\n<\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>The Ethernet Agent is an RDK-B middleware component responsible for managing Ethernet interface configurations, monitoring [&hellip;]<\/p>\n","protected":false},"author":659,"featured_media":0,"parent":9575,"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-12898","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>Ethernet Agent - 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\/ethernet-agent\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Ethernet Agent - RDK Documentation Portal | Documentation\" \/>\n<meta property=\"og:description\" content=\"The Ethernet Agent is an RDK-B middleware component responsible for managing Ethernet interface configurations, monitoring [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/ethernet-agent\/\" \/>\n<meta property=\"og:site_name\" content=\"RDK Documentation Portal | Documentation\" \/>\n<meta property=\"article:modified_time\" content=\"2026-05-06T12:30:59+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=\"12 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\/ethernet-agent\/\",\"url\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/ethernet-agent\/\",\"name\":\"Ethernet Agent - RDK Documentation Portal | Documentation\",\"isPartOf\":{\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/#website\"},\"datePublished\":\"2026-05-06T12:26:12+00:00\",\"dateModified\":\"2026-05-06T12:30:59+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/ethernet-agent\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/ethernet-agent\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/ethernet-agent\/#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\":\"Ethernet Agent\"}]},{\"@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":"Ethernet Agent - 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\/ethernet-agent\/","og_locale":"en_US","og_type":"article","og_title":"Ethernet Agent - RDK Documentation Portal | Documentation","og_description":"The Ethernet Agent is an RDK-B middleware component responsible for managing Ethernet interface configurations, monitoring [&hellip;]","og_url":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/ethernet-agent\/","og_site_name":"RDK Documentation Portal | Documentation","article_modified_time":"2026-05-06T12:30:59+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"12 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/ethernet-agent\/","url":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/ethernet-agent\/","name":"Ethernet Agent - RDK Documentation Portal | Documentation","isPartOf":{"@id":"https:\/\/developer.rdkcentral.com\/documentation\/#website"},"datePublished":"2026-05-06T12:26:12+00:00","dateModified":"2026-05-06T12:30:59+00:00","breadcrumb":{"@id":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/ethernet-agent\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/ethernet-agent\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/ethernet-agent\/#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":"Ethernet Agent"}]},{"@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\/12898","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=12898"}],"version-history":[{"count":2,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages\/12898\/revisions"}],"predecessor-version":[{"id":12901,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages\/12898\/revisions\/12901"}],"up":[{"embeddable":true,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages\/9575"}],"wp:attachment":[{"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/media?parent=12898"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}