
{"id":9658,"date":"2022-06-21T13:52:58","date_gmt":"2022-06-21T13:52:58","guid":{"rendered":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/documentation\/rdk_broadband_documentation\/components\/ccspsnmppa\/"},"modified":"2026-05-06T09:31:46","modified_gmt":"2026-05-06T09:31:46","slug":"ccspsnmppa","status":"publish","type":"page","link":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/ccspsnmppa\/","title":{"rendered":"CcspSnmpPa"},"content":{"rendered":"\n<p>The SNMP Protocol Agent is an RDK-B component that provides network management capabilities through the Simple Network Management Protocol. This component operates as an SNMP subagent using the AgentX protocol to communicate with a master SNMP daemon. It translates SNMP Object Identifiers (OIDs) into RDK-B data model parameters, enabling remote network management systems to monitor and configure RDK-B gateway devices through standard SNMP operations. The component supports both SNMPv2 and SNMPv3 protocols and provides comprehensive Management Information Base (MIB) implementations for various gateway subsystems.<\/p>\n\n\n\n<p>The SNMP Protocol Agent acts as a bridge between external network management systems and the internal RDK-B middleware layer. It receives SNMP GET, SET, and GETNEXT requests from network management stations, translates these requests into corresponding data model parameter operations using the CCSP message bus, and returns responses in SNMP format. The component implements MIB-to-Data-Model mappings defined in XML configuration files, which specify the relationship between SNMP OIDs and RDK-B data model parameters across multiple subsystems including WiFi, Firewall, MoCA, Device Management, Hotspot, DNS, NTP, and TR-069.<\/p>\n\n\n\n<div class=\"wp-block-merpress-mermaidjs diagram-source-mermaid\"><pre class=\"mermaid\">graph LR\n    subgraph \"External Systems\"\n        NMS[Network Management System]\n        SNMP_Tools[SNMP Monitoring Tools]\n    end\n\n    subgraph \"SNMP Layer\"\n        MasterSNMPD[Master SNMP Daemon&lt;br\/>snmpd]\n    end\n\n    subgraph \"RDK-B Middleware\"\n        SNMPAgent[SNMP Protocol Agent&lt;br\/>snmp_subagent]\n        CR[Component Registry&lt;br\/>CcspCr]\n        PAM[CcspPandM]\n        WiFi[CcspWiFiAgent\/OneWifi]\n        MoCA[CcspMoCAAgent]\n        TR069[CcspTr069Pa]\n        Firewall[CcspFirewall]\n    end\n\n    subgraph \"System Layer\"\n        MessageBus[(CCSP Message Bus&lt;br\/>RBus)]\n        SysCfg[syscfg]\n        SysEvent[sysevent]\n    end\n\n    subgraph \"Security\"\n        Privilege[Privilege Manager]\n    end\n\n    NMS -->|SNMPv2\/v3| MasterSNMPD\n    SNMP_Tools -->|SNMP GET\/SET| MasterSNMPD\n    MasterSNMPD &lt;-->|AgentX Protocol| SNMPAgent\n\n    SNMPAgent &lt;-->|RBus Component Discovery| CR\n    SNMPAgent &lt;-->|RBus Parameter Operations| MessageBus\n    SNMPAgent -->|syscfg_get\/syscfg_set| SysCfg\n    SNMPAgent -->|sysevent_get\/sysevent_set| SysEvent\n    SNMPAgent -->|drop_root_caps| Privilege\n\n    MessageBus &lt;-->|Device.* Parameters| PAM\n    MessageBus &lt;-->|Device.WiFi.* Parameters| WiFi\n    MessageBus &lt;-->|Device.MoCA.* Parameters| MoCA\n    MessageBus &lt;-->|Device.ManagementServer.* Parameters| TR069\n    MessageBus &lt;-->|Device.Firewall.* Parameters| Firewall\n\n    classDef external fill:#fff3e0,stroke:#ef6c00,stroke-width:2px;\n    classDef snmp fill:#e1f5fe,stroke:#0277bd,stroke-width:2px;\n    classDef middleware fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px;\n    classDef system fill:#e8f5e8,stroke:#2e7d32,stroke-width:2px;\n    classDef security fill:#ffebee,stroke:#c62828,stroke-width:2px;\n\n    class NMS,SNMP_Tools external;\n    class MasterSNMPD snmp;\n    class SNMPAgent,CR,PAM,WiFi,MoCA,TR069,Firewall middleware;\n    class MessageBus,SysCfg,SysEvent system;\n    class Privilege security;<\/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>SNMP Protocol Implementation<\/strong>: Operates as AgentX subagent providing SNMP GET, SET, and GETNEXT operations for remote network management with support for both SNMPv2 and SNMPv3 protocols<\/li>\n\n\n\n<li><strong>MIB-to-DataModel Translation<\/strong>: Implements dynamic MIB object handling by translating SNMP OIDs to RDK-B data model parameters through XML-defined mappings enabling consistent access across subsystems<\/li>\n\n\n\n<li><strong>Multi-Subsystem Coverage<\/strong>: Provides MIB implementations for WiFi, Firewall, MoCA, Hotspot, Device Management, DNS, NTP, TR-069, VLAN, and vendor-specific extensions through custom handler modules<\/li>\n\n\n\n<li><strong>AgentX Protocol Support<\/strong>: Integrates with master SNMP daemon via AgentX protocol enabling distributed SNMP agent architecture and supporting multiple subagents on the same device<\/li>\n\n\n\n<li><strong>Dynamic MIB Loading<\/strong>: Loads MIB mapping configurations from XML files at runtime allowing flexible MIB extensions without code recompilation<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"SNMPProtocolAgent-Design\">Design<\/h2>\n\n\n\n<p>The SNMP Protocol Agent follows a modular architecture designed around the net-snmp library&#8217;s AgentX subagent model with clear separation between protocol handling, MIB translation, and data model access. The design emphasizes extensibility through XML-driven MIB mappings and handler-based subsystem implementations. The architecture operates in three primary layers: the SNMP protocol layer handling AgentX communication with the master daemon, the translation layer processing MIB-to-DataModel conversions through XML configurations, and the integration layer managing CCSP message bus interactions for parameter access.<\/p>\n\n\n\n<p>The component initializes by establishing an AgentX connection to the master SNMP daemon, loading MIB mapping XML files, and registering MIB handlers for each supported subsystem. Communication with RDK-B components occurs through the CCSP message bus using the CcspBaseIf API set, which provides parameter discovery, get, set, and commit operations. The design implements caching strategies for frequently accessed parameters and supports both scalar and tabular SNMP objects with automatic instance management.<\/p>\n\n\n\n<p>The northbound interface accepts SNMP requests via AgentX protocol on TCP port 705 (loopback, configured as&nbsp;<code>tcp:127.0.0.1:705<\/code>&nbsp;in ccsp_snmp_subagent.c). External SNMP requests arrive on UDP port 161; trap notifications use UDP port 162. The southbound interface uses RBus message bus for RDK-B component parameter operations and syscfg\/sysevent APIs for system configuration. The component drops root capabilities after initialization via privilege manager API.<\/p>\n\n\n\n<p>MIB mapping configurations are stored in XML files located in the Mib2DmMapping directory, with CcspRDKBMibList.xml serving as the master index. Each MIB module has a corresponding XML file specifying OID-to-parameter mappings, data types, access permissions, and handler function bindings. The component supports conditional MIB loading through XML preprocessing directives enabling feature-specific MIB definitions.<\/p>\n\n\n\n<div class=\"wp-block-merpress-mermaidjs diagram-source-mermaid\"><pre class=\"mermaid\">graph TD\n    subgraph ExternalInterface [\"External Interface\"]\n        AgentXProtocol[AgentX Protocol]\n        MasterSNMPD[Master SNMP Daemon&lt;br\/>snmpd]\n    end\n\n    subgraph SNMPAgent [\"SNMP Protocol Agent (C\/net-snmp)\"]\n        subgraph MainProcess [\"Main Process\"]\n            SubAgent[SNMP Subagent Process&lt;br\/>source\/SnmpPlugin\/ccsp_snmp_subagent.c]\n            Init[Initialization&lt;br\/>init_ccsp_snmp_plugin]\n            MIBLoader[MIB XML Loader&lt;br\/>source\/SnmpPlugin\/CcspSnmpPlugin.c]\n        end\n\n        subgraph PluginCore [\"SNMP Plugin Core\"]\n            MIBHelper[MIB Helper&lt;br\/>source\/SnmpPlugin\/ccsp_mib_helper.c]\n            ScalarHelper[Scalar Handler&lt;br\/>source\/SnmpPlugin\/ccsp_scalar_helper.c]\n            TableHelper[Table Handler&lt;br\/>source\/SnmpPlugin\/ccsp_table_helper.c]\n            MIBUtil[MIB Utilities&lt;br\/>source\/SnmpPlugin\/ccsp_mib_utilities.c]\n        end\n\n        subgraph CustomHandlers [\"Custom MIB Handlers\"]\n            Handlers[Subsystem Handlers&lt;br\/>WiFi, DeviceMgmt, Firewall,&lt;br\/>MoCA, Hotspot, Diagnostics,&lt;br\/>DNS, NTP, IP Management&lt;br\/>source\/custom\/*.c]\n        end\n\n        subgraph Integration [\"CCSP Integration\"]\n            CosaAPI[COSA API&lt;br\/>source\/SnmpPlugin\/cosa_api.c]\n            SNMPCommon[SNMP Common&lt;br\/>source\/custom\/ccsp_snmp_common.c]\n        end\n\n        subgraph Configuration [\"Configuration\"]\n            MIBMappings[(MIB XML Mappings&lt;br\/>Mib2DmMapping\/*.xml)]\n            SNMPConf[SNMP Config&lt;br\/>config\/snmpd.conf]\n        end\n\n        SubAgent --> Init\n        Init --> MIBLoader\n        MIBLoader --> MIBHelper\n        MIBHelper --> ScalarHelper\n        MIBHelper --> TableHelper\n        MIBHelper --> MIBUtil\n\n        ScalarHelper --> CustomHandlers\n        TableHelper --> CustomHandlers\n\n        CustomHandlers --> CosaAPI\n        CustomHandlers --> SNMPCommon\n\n        CosaAPI --> MessageBus\n        SNMPCommon --> MessageBus\n\n        MIBLoader --> MIBMappings\n        SubAgent --> SNMPConf\n    end\n\n    MessageBus[(CCSP Message Bus&lt;br\/>RBus)]\n\n    AgentXProtocol --> MasterSNMPD\n    MasterSNMPD --> SubAgent<\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"SNMPProtocolAgent-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>DISTRO Feature<\/strong><\/td><td><strong>Build Flag<\/strong><\/td><td><strong>Purpose<\/strong><\/td><td><strong>Default<\/strong><\/td><\/tr><tr><td><code>--enable-unitTestDockerSupport<\/code><\/td><td>N\/A<\/td><td><code>UNIT_TEST_DOCKER_SUPPORT<\/code><\/td><td>Enable docker support for unit testing<\/td><td>Disabled<\/td><\/tr><tr><td>N\/A<\/td><td>N\/A<\/td><td><code>RDKB_MIB<\/code><\/td><td>Use RDKB-specific MIB list (CcspRDKBMibList.xml) instead of legacy<\/td><td>Enabled<\/td><\/tr><tr><td>N\/A<\/td><td>rdklogger<\/td><td><code>FEATURE_SUPPORT_RDKLOG<\/code><\/td><td>Enable RDK Logger integration for logging<\/td><td>Platform-dependent<\/td><\/tr><tr><td>N\/A<\/td><td>breakpad<\/td><td><code>INCLUDE_BREAKPAD<\/code><\/td><td>Enable Breakpad crash reporting<\/td><td>Platform-dependent<\/td><\/tr><tr><td>N\/A<\/td><td>wan-manager<\/td><td><code>FEATURE_RDKB_WAN_MANAGER<\/code><\/td><td>Enable WAN Manager specific parameters<\/td><td>Platform-dependent<\/td><\/tr><tr><td>N\/A<\/td><td>onewifi<\/td><td><code>RDK_ONEWIFI<\/code><\/td><td>Enable OneWiFi unified WiFi stack support<\/td><td>Platform-dependent<\/td><\/tr><tr><td>N\/A<\/td><td>Product-specific<\/td><td><code>_XB6_PRODUCT_REQ_<\/code><\/td><td>XB6 product specific features<\/td><td>Platform-dependent<\/td><\/tr><tr><td>N\/A<\/td><td>Product-specific<\/td><td><code>_XB7_PRODUCT_REQ_<\/code><\/td><td>XB7 product specific features<\/td><td>Platform-dependent<\/td><\/tr><tr><td>N\/A<\/td><td>Product-specific<\/td><td><code>_XF3_PRODUCT_REQ_<\/code><\/td><td>XF3 product specific features<\/td><td>Platform-dependent<\/td><\/tr><tr><td>N\/A<\/td><td>Product-specific<\/td><td><code>_CBR_PRODUCT_REQ_<\/code><\/td><td>CBR product specific features<\/td><td>Platform-dependent<\/td><\/tr><tr><td>N\/A<\/td><td>wifi-ax<\/td><td><code>_WIFI_AX_SUPPORT_<\/code><\/td><td>WiFi 6 (802.11ax) support<\/td><td>Platform-dependent<\/td><\/tr><tr><td>N\/A<\/td><td>puma7<\/td><td><code>INTEL_PUMA7<\/code><\/td><td>Intel Puma7 chipset specific features<\/td><td>Platform-dependent<\/td><\/tr><tr><td>N\/A<\/td><td>pcd<\/td><td><code>USE_PCD_API_EXCEPTION_HANDLING<\/code><\/td><td>PCD API exception handling<\/td><td>Platform-dependent<\/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>: CcspCommonLibrary, CcspCr (Component Registry), CcspPandM, CcspWiFiAgent\/OneWifi, CcspMoCAAgent, CcspTr069Pa<\/li>\n\n\n\n<li><strong>HAL Dependencies<\/strong>: No direct HAL dependencies<\/li>\n\n\n\n<li><strong>Systemd Services<\/strong>: Master SNMP daemon (snmpd) must be running before snmp_subagent starts<\/li>\n\n\n\n<li><strong>Message Bus<\/strong>: CCSP Message Bus (RBus) registration under component name\u00a0<code>ccsp.cisco.spvtg.ccsp.snmp<\/code>\u00a0with connection to Component Registry at\u00a0<code>eRT.com.cisco.spvtg.ccsp.CR<\/code><\/li>\n\n\n\n<li><strong>Configuration Files<\/strong>:<\/li>\n\n\n\n<li><code>\/tmp\/ccsp_msg.cfg<\/code>\u00a0for CCSP message bus configuration<\/li>\n\n\n\n<li><code>config\/snmpd.conf<\/code>\u00a0for SNMP daemon configuration<\/li>\n\n\n\n<li><code>mibs\/*.txt<\/code>\u00a0for MIB definition files<\/li>\n\n\n\n<li><code>libsnmp_plugin.so<\/code>\u00a0for core plugin library<\/li>\n\n\n\n<li><code>libsnmp_custom.so<\/code>\u00a0for custom handler library<\/li>\n\n\n\n<li><code>Mib2DmMapping\/CcspRDKBMibList.xml<\/code>\u00a0for MIB mapping index<\/li>\n\n\n\n<li>Individual MIB mapping XML files in Mib2DmMapping directory<\/li>\n\n\n\n<li><strong>Startup Order<\/strong>: Initialize after CCSP Component Registry and message bus are active<\/li>\n\n\n\n<li><strong>External Libraries<\/strong>: net-snmp (libnetsnmp, libnetsnmpagent, libnetsnmpmibs), libccsp_common, libsyscfg, libsysevent, libutapi, libutctx, libsecure_wrapper, libprivilege, libprint_uptime<\/li>\n<\/ul>\n\n\n\n<p><strong>Threading Model:<\/strong><\/p>\n\n\n\n<p>The SNMP Protocol Agent implements a single-threaded event-driven architecture based on the net-snmp library&#8217;s main event loop. All SNMP request processing, MIB operations, and CCSP message bus interactions occur within the main thread context using the net-snmp agent event processing mechanism.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Threading Architecture<\/strong>: Single-threaded with net-snmp event loop<\/li>\n\n\n\n<li><strong>Main Thread<\/strong>: Handles AgentX protocol communication, SNMP request processing, MIB handler callbacks, and CCSP message bus synchronous calls<\/li>\n\n\n\n<li><strong>Synchronization<\/strong>: No explicit synchronization required due to single-threaded design<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"SNMPProtocolAgent-ComponentStateFlow\">Component State Flow<\/h3>\n\n\n\n<p><strong>Initialization to Active State<\/strong><\/p>\n\n\n\n<p>The SNMP Protocol Agent follows a sequential initialization process establishing system connections, loading configurations, and registering MIB handlers before entering the main SNMP request processing loop. The component performs argument parsing, net-snmp initialization, CCSP message bus connection, MIB mapping XML loading, and handler registration in a fixed order to ensure all dependencies are satisfied before accepting SNMP requests.<\/p>\n\n\n\n<div class=\"wp-block-merpress-mermaidjs diagram-source-mermaid\"><pre class=\"mermaid\">sequenceDiagram\n    autonumber\n    participant System as System Startup\n    participant SubAgent as SNMP Subagent\n    participant NetSNMP as net-snmp Library\n    participant CCSP as CCSP Message Bus\n    participant MIBLoader as MIB Loader\n    participant Handlers as MIB Handlers\n\n    System->>SubAgent: Start snmp_subagent Process\n    Note over SubAgent: State: Initializing&lt;br\/>Parse command line arguments\n\n    SubAgent->>NetSNMP: netsnmp_ds_set_string(AgentX Socket)\n    Note over SubAgent: Configure AgentX connection address\n\n    SubAgent->>NetSNMP: init_agent(AGNT_NAME)\n    NetSNMP-->>SubAgent: Agent Initialized\n\n    SubAgent->>MIBLoader: init_ccsp_snmp_plugin()\n    Note over SubAgent: State: LoadingConfig&lt;br\/>Initialize plugin and load MIBs\n\n    MIBLoader->>CCSP: Cosa_Init()\n    CCSP->>CCSP: CCSP_Message_Bus_Init()\n    CCSP-->>MIBLoader: Message Bus Connected\n    Note over SubAgent: Connected to RBus\n\n    MIBLoader->>MIBLoader: Load CcspRDKBMibList.xml\n    MIBLoader->>MIBLoader: Parse XML and Load MIB Files\n\n    loop For Each MIB File\n        MIBLoader->>Handlers: Register MIB Handlers\n        Handlers->>NetSNMP: netsnmp_register_handler()\n        NetSNMP-->>Handlers: Handler Registered\n    end\n\n    MIBLoader-->>SubAgent: Plugin Initialized\n    Note over SubAgent: State: RegisteringHandlers \u2192 Connecting\n\n    SubAgent->>NetSNMP: init_snmp(AGNT_NAME)\n    NetSNMP->>NetSNMP: Connect to Master SNMP Daemon via AgentX\n    NetSNMP-->>SubAgent: AgentX Connection Established\n\n    SubAgent->>SubAgent: drop_root()\n    Note over SubAgent: Drop root privileges\n\n    Note over SubAgent: State: Active&lt;br\/>Ready to process SNMP requests\n    SubAgent->>System: Write PID to \/var\/tmp\/snmp_subagent_*.pid\n\n    loop Main Event Loop\n        SubAgent->>NetSNMP: agent_check_and_process(block=1)\n        NetSNMP->>NetSNMP: Wait for AgentX Messages\n        Note over SubAgent: Process SNMP requests as they arrive\n    end\n\n    System->>SubAgent: Signal Stop (SIGTERM\/SIGINT)\n    Note over SubAgent: State: Active \u2192 Shutdown\n    SubAgent->>NetSNMP: snmp_shutdown(AGNT_NAME)\n    NetSNMP->>NetSNMP: Disconnect AgentX\n    SubAgent->>CCSP: Cosa_Shutdown()\n    SubAgent->>System: Exit Process<\/pre><\/div>\n\n\n\n<p><strong>Runtime State Changes and Context Switching<\/strong><\/p>\n\n\n\n<p>During normal operation, the SNMP Protocol Agent remains in an active state processing incoming SNMP requests through the net-snmp event loop. State changes occur primarily in response to external events such as configuration updates, master daemon reconnection, or component restart triggers.<\/p>\n\n\n\n<p><strong>State Change Triggers:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Master SNMP daemon restart requiring AgentX reconnection<\/li>\n\n\n\n<li>CCSP message bus reconnection when Component Registry or target components restart<\/li>\n\n\n\n<li>V2Support syscfg parameter change affecting SNMPv2 availability<\/li>\n\n\n\n<li>Component stop signal (SIGTERM\/SIGINT) triggering graceful shutdown<\/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>AgentX connection failure triggering reconnection attempts with exponential backoff<\/li>\n\n\n\n<li>SNMP request handling context switch from idle to active processing state<\/li>\n\n\n\n<li>CCSP message bus call timeout handling with parameter access retry logic<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"SNMPProtocolAgent-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 Comp as SNMP Subagent\n    participant NetSNMP as net-snmp Library\n    participant Plugin as SNMP Plugin\n    participant Bus as Message Bus\n\n    Init->>Comp: Start snmp_subagent\n    Comp->>NetSNMP: Configure AgentX Parameters\n    Comp->>NetSNMP: init_agent()\n    Comp->>Plugin: init_ccsp_snmp_plugin()\n    Plugin->>Bus: Cosa_Init() \/ CCSP_Message_Bus_Init()\n    Bus-->>Plugin: Bus Handle\n    Plugin->>Plugin: Load MIB XML Files\n    Plugin->>NetSNMP: Register MIB Handlers\n    NetSNMP-->>Plugin: Handlers Registered\n    Plugin-->>Comp: Plugin Initialized\n    Comp->>NetSNMP: init_snmp() \/ Connect AgentX\n    NetSNMP-->>Comp: AgentX Connected\n    Comp->>Comp: drop_root()\n    Comp->>Init: Initialization Complete (Active State)<\/pre><\/div>\n\n\n\n<p><strong>Request Processing Call Flow:<\/strong><\/p>\n\n\n\n<div class=\"wp-block-merpress-mermaidjs diagram-source-mermaid\"><pre class=\"mermaid\">sequenceDiagram\n    participant NMS as Network Mgmt System\n    participant MasterSNMP as Master SNMP Daemon\n    participant SubAgent as SNMP Subagent\n    participant Handler as MIB Handler\n    participant CCSP as CCSP Message Bus\n    participant Component as RDK-B Component\n\n    NMS->>MasterSNMP: SNMP GET Request (OID)\n    MasterSNMP->>SubAgent: AgentX GET Request\n    Note over SubAgent: agent_check_and_process()\n\n    SubAgent->>Handler: Handler Callback Function\n    Note over Handler: Lookup OID in MIB mapping\n\n    Handler->>CCSP: Cosa_FindDestComp(parameter)\n    CCSP->>CCSP: CcspBaseIf_discComponentSupportingNamespace()\n    CCSP-->>Handler: Component Name, RBus Path\n\n    Handler->>CCSP: Cosa_GetParamValues(component, path, param)\n    CCSP->>CCSP: CcspBaseIf_getParameterValues()\n    CCSP->>Component: RBus Method Call (getParameterValues)\n    Component-->>CCSP: Parameter Value\n    CCSP-->>Handler: Parameter Value\n\n    Handler->>Handler: Convert Value to SNMP Format\n    Handler-->>SubAgent: SNMP Response Data\n\n    SubAgent->>MasterSNMP: AgentX Response\n    MasterSNMP->>NMS: SNMP Response (Value)<\/pre><\/div>\n\n\n\n<p><strong>SNMP SET Operation Flow:<\/strong><\/p>\n\n\n\n<div class=\"wp-block-merpress-mermaidjs diagram-source-mermaid\"><pre class=\"mermaid\">sequenceDiagram\n    participant NMS as Network Mgmt System\n    participant MasterSNMP as Master SNMP Daemon\n    participant SubAgent as SNMP Subagent\n    participant Handler as MIB Handler\n    participant CCSP as CCSP Message Bus\n    participant Component as RDK-B Component\n\n    NMS->>MasterSNMP: SNMP SET Request (OID, Value)\n    MasterSNMP->>SubAgent: AgentX SET Request\n\n    SubAgent->>Handler: Handler SET Callback (Reserve Phase)\n    Handler->>Handler: Validate Value Format\n    Handler-->>SubAgent: Validation Result\n\n    SubAgent->>Handler: Handler SET Callback (Commit Phase)\n    Handler->>CCSP: Cosa_FindDestComp(parameter)\n    CCSP-->>Handler: Component Name, RBus Path\n\n    Handler->>Handler: Convert SNMP Value to DataModel Type\n    Handler->>CCSP: Cosa_SetParamValues(component, path, param, value)\n    CCSP->>CCSP: CcspBaseIf_setParameterValues()\n    CCSP->>Component: RBus Method Call (setParameterValues)\n    Component-->>CCSP: Set Result\n\n    CCSP->>Component: CcspBaseIf_setCommit() if auto-commit enabled\n    Component-->>CCSP: Commit Result\n\n    CCSP-->>Handler: Operation Status\n    Handler-->>SubAgent: SET Success\/Failure\n\n    SubAgent->>MasterSNMP: AgentX Response\n    MasterSNMP->>NMS: SNMP Response (Success\/Error)<\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"SNMPProtocolAgent-InternalModules\">Internal Modules<\/h2>\n\n\n\n<p>The SNMP Protocol Agent is organized into specialized modules separating core SNMP protocol handling, MIB translation logic, custom subsystem handlers, and CCSP integration. Each module encapsulates specific functionality with defined interfaces for inter-module communication and extension.<\/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>SNMP Subagent Process<\/strong><\/td><td>Main executable implementing AgentX subagent protocol with master daemon communication, event loop management, privilege dropping, and process lifecycle control<\/td><td><code>ccsp_snmp_subagent.c<\/code><\/td><\/tr><tr><td><strong>SNMP Plugin Core<\/strong><\/td><td>Central plugin manager responsible for MIB XML loading, MIB helper object creation, handler registration coordination, and plugin lifecycle management<\/td><td><code>CcspSnmpPlugin.c<\/code><\/td><\/tr><tr><td><strong>MIB Helper Framework<\/strong><\/td><td>Core MIB processing framework providing OID registration, handler dispatch, caching infrastructure, and base implementation for scalar and table MIB objects<\/td><td><code>ccsp_mib_helper.c<\/code>,&nbsp;<code>ccsp_mib_helper.h<\/code><\/td><\/tr><tr><td><strong>Scalar Helper<\/strong><\/td><td>Implements scalar MIB object handling including GET\/SET operations, value validation, type conversion, and parameter access control for single-instance OIDs<\/td><td><code>ccsp_scalar_helper.c<\/code>,&nbsp;<code>ccsp_scalar_helper_access.c<\/code>,&nbsp;<code>ccsp_scalar_helper_control.c<\/code>,&nbsp;<code>ccsp_scalar_helper.h<\/code>,&nbsp;<code>ccsp_scalar_helper_internal.h<\/code><\/td><\/tr><tr><td><strong>Table Helper<\/strong><\/td><td>Implements tabular MIB object handling including row enumeration, index management, table caching, and multi-instance object operations for SNMP tables<\/td><td><code>ccsp_table_helper.c<\/code>,&nbsp;<code>ccsp_table_helper_access.c<\/code>,&nbsp;<code>ccsp_table_helper_control.c<\/code>,&nbsp;<code>ccsp_table_helper.h<\/code>,&nbsp;<code>ccsp_table_helper_internal.h<\/code><\/td><\/tr><tr><td><strong>MIB Utilities<\/strong><\/td><td>Utility functions for OID manipulation, data type conversion, parameter name parsing, and common MIB operation helpers<\/td><td><code>ccsp_mib_utilities.c<\/code>,&nbsp;<code>ccsp_mib_utilities.h<\/code><\/td><\/tr><tr><td><strong>MIB Definitions<\/strong><\/td><td>Common MIB-related constants, macros, and data structure definitions shared across all MIB handlers<\/td><td><code>ccsp_mib_definitions.h<\/code><\/td><\/tr><tr><td><strong>WiFi MIB Handler<\/strong><\/td><td>Handles RDKB-RG-WiFi-MIB operations for wireless access point configuration, client association, security settings, and WiFi statistics with OneWiFi and legacy WiFi stack support<\/td><td><code>rg_wifi_handler.c<\/code><\/td><\/tr><tr><td><strong>Device Management Handler<\/strong><\/td><td>Handles RDKB-RG-MIB-DeviceMgmt operations for device information, firmware management, reboot control, configuration backup\/restore, and device status monitoring<\/td><td><code>rg_devmgmt_handler.c<\/code>,&nbsp;<code>rg_devmgmt_handler.h<\/code><\/td><\/tr><tr><td><strong>Firewall MIB Handler<\/strong><\/td><td>Handles RDKB-RG-MIB-Firewall operations for firewall rule management, port forwarding, DMZ configuration, and security policy control<\/td><td><code>rg_firewall_handler.c<\/code><\/td><\/tr><tr><td><strong>MoCA MIB Handler<\/strong><\/td><td>Handles RDKB-RG-MIB-MoCA operations for MoCA interface status, node information, network topology, and MoCA performance statistics<\/td><td><code>rg_moca_handler.c<\/code><\/td><\/tr><tr><td><strong>Hotspot MIB Handler<\/strong><\/td><td>Handles RDKB-RG-MIB-Hotspot operations for public WiFi hotspot configuration, SSID management, client access control, and hotspot status<\/td><td><code>rg_hotspot_handler.c<\/code><\/td><\/tr><tr><td><strong>Diagnostics Handler<\/strong><\/td><td>Handles diagnostic MIB operations for ping tests, traceroute, device diagnostics, and network troubleshooting commands<\/td><td><code>rg_diag_handler.c<\/code><\/td><\/tr><tr><td><strong>WAN DNS Handler<\/strong><\/td><td>Handles RDKB-RG-MIB-WanDns operations for DNS server configuration, DNS forwarding settings, and DNS query statistics<\/td><td><code>rg_wandns_handler.c<\/code><\/td><\/tr><tr><td><strong>NTP Server Handler<\/strong><\/td><td>Handles RDKB-RG-MIB-NTP operations for NTP server configuration, time synchronization settings, and NTP client status<\/td><td><code>rg_ntpserver_handler.c<\/code><\/td><\/tr><tr><td><strong>IP Management Handler<\/strong><\/td><td>Handles IP address management MIB operations for IPv4\/IPv6 addressing, DHCP client\/server, and IP interface configuration<\/td><td><code>rg_ipmgmt_handler.c<\/code><\/td><\/tr><tr><td><strong>COSA API Integration<\/strong><\/td><td>CCSP Object Access API providing abstraction layer for component discovery, parameter get\/set operations, table row operations, and commit handling through CCSP message bus<\/td><td><code>cosa_api.c<\/code>,&nbsp;<code>cosa_api.h<\/code><\/td><\/tr><tr><td><strong>SNMP Common Utilities<\/strong><\/td><td>Common utility functions for data model access including wrapper functions for get\/set operations shared across multiple MIB handlers<\/td><td><code>ccsp_snmp_common.c<\/code>,&nbsp;<code>ccsp_snmp_common.h<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"SNMPProtocolAgent-ComponentInteractions\">Component Interactions<\/h2>\n\n\n\n<p>The SNMP Protocol Agent maintains interactions with network management systems, the master SNMP daemon, RDK-B middleware components, and system services. These interactions span multiple protocols including AgentX for SNMP communication, RBus for middleware integration, and direct API calls for system configuration access.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"SNMPProtocolAgent-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>External Systems<\/strong><\/td><td><\/td><td><\/td><\/tr><tr><td>Network Management System<\/td><td>SNMP-based remote monitoring and configuration of gateway device<\/td><td>SNMPv2\/v3 protocol via master daemon<\/td><\/tr><tr><td>Master SNMP Daemon (snmpd)<\/td><td>AgentX subagent protocol communication for SNMP request delegation<\/td><td>AgentX protocol over&nbsp;<code>tcp:127.0.0.1:705<\/code><\/td><\/tr><tr><td><strong>RDK-B Middleware Components<\/strong><\/td><td><\/td><td><\/td><\/tr><tr><td>Component Registry (CcspCr)<\/td><td>Component discovery to locate which component owns specific data model parameters<\/td><td><code>CcspBaseIf_discComponentSupportingNamespace()<\/code>&nbsp;via RBus path&nbsp;<code>eRT.com.cisco.spvtg.ccsp.CR<\/code><\/td><\/tr><tr><td>CcspPandM<\/td><td>Access to Device.* parameters including device information, LAN settings, and general platform configuration<\/td><td><code>CcspBaseIf_getParameterValues()<\/code>,&nbsp;<code>CcspBaseIf_setParameterValues()<\/code><\/td><\/tr><tr><td>CcspWiFiAgent\/OneWifi<\/td><td>WiFi MIB operations for access point configuration, associated devices, security settings, and wireless statistics<\/td><td><code>Device.WiFi.*<\/code>&nbsp;parameters via message bus<\/td><\/tr><tr><td>CcspMoCAAgent<\/td><td>MoCA MIB operations for interface status, associated devices, and MoCA network topology<\/td><td><code>Device.MoCA.*<\/code>&nbsp;parameters via message bus<\/td><\/tr><tr><td>CcspTr069Pa<\/td><td>TR-069 management server parameters for ACS connection, parameter attributes, and device provisioning<\/td><td><code>Device.ManagementServer.*<\/code>&nbsp;parameters via message bus<\/td><\/tr><tr><td>CcspFirewall<\/td><td>Firewall MIB operations for security rules, port forwarding, and firewall configuration<\/td><td><code>Device.Firewall.*<\/code>,&nbsp;<code>Device.NAT.*<\/code>&nbsp;parameters via message bus<\/td><\/tr><tr><td>CcspWanManager<\/td><td>WAN interface configuration and device control parameters<\/td><td><code>Device.X_CISCO_COM_DeviceControl.*<\/code>&nbsp;parameters (when&nbsp;<code>FEATURE_RDKB_WAN_MANAGER<\/code>&nbsp;enabled)<\/td><\/tr><tr><td><strong>System &amp; Platform Services<\/strong><\/td><td><\/td><td><\/td><\/tr><tr><td>CCSP Message Bus (RBus)<\/td><td>Primary IPC mechanism for all RDK-B component communication and data model access<\/td><td><code>CCSP_Message_Bus_Init()<\/code>,&nbsp;<code>CcspBaseIf_*<\/code>&nbsp;API family<\/td><\/tr><tr><td>syscfg<\/td><td>Persistent configuration storage for system settings including SNMP v2 support flags<\/td><td><code>syscfg_get()<\/code>,&nbsp;<code>syscfg_set()<\/code><\/td><\/tr><tr><td>sysevent<\/td><td>Event notification system for system state changes and inter-process communication<\/td><td><code>sysevent_get()<\/code>,&nbsp;<code>sysevent_set()<\/code><\/td><\/tr><tr><td>Privilege Manager<\/td><td>Security service for dropping root privileges after initialization<\/td><td><code>drop_root_caps()<\/code>,&nbsp;<code>init_capability()<\/code>,&nbsp;<code>update_process_caps()<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><strong>Events Published by SNMP Protocol Agent:<\/strong><\/p>\n\n\n\n<p>The SNMP Protocol Agent does not publish events to other components. It operates in response mode, processing incoming SNMP requests and translating them to data model operations. State changes in RDK-B components are reflected through standard data model change notifications subscribed by management systems through SNMP traps configured in the master daemon.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"SNMPProtocolAgent-IPCFlowPatterns\">IPC Flow Patterns<\/h3>\n\n\n\n<p><strong>Primary IPC Flow &#8211; SNMP GET Request to Data Model Parameter:<\/strong><\/p>\n\n\n\n<div class=\"wp-block-merpress-mermaidjs diagram-source-mermaid\"><pre class=\"mermaid\">sequenceDiagram\n    participant NMS as Network Mgmt System\n    participant Master as Master SNMP Daemon\n    participant SubAgent as SNMP Subagent\n    participant CR as Component Registry\n    participant Target as Target Component\n\n    NMS->>Master: SNMP GET Request (OID)\n    Master->>SubAgent: AgentX GET Request\n    Note over SubAgent: Lookup OID in XML mapping&lt;br\/>Get data model parameter name\n\n    SubAgent->>CR: CcspBaseIf_discComponentSupportingNamespace(param)\n    Note over CR: Search component database\n    CR-->>SubAgent: Component Name, RBus Path\n\n    SubAgent->>Target: CcspBaseIf_getParameterValues(param) via RBus\n    Note over Target: Access internal data&lt;br\/>Return current value\n    Target-->>SubAgent: Parameter Value, Type\n\n    Note over SubAgent: Convert value to SNMP format&lt;br\/>Apply data type transformation\n    SubAgent-->>Master: AgentX Response with Value\n    Master-->>NMS: SNMP Response<\/pre><\/div>\n\n\n\n<p><strong>IPC Flow &#8211; SNMP SET Request with Commit:<\/strong><\/p>\n\n\n\n<div class=\"wp-block-merpress-mermaidjs diagram-source-mermaid\"><pre class=\"mermaid\">sequenceDiagram\n    participant NMS as Network Mgmt System\n    participant Master as Master SNMP Daemon\n    participant SubAgent as SNMP Subagent\n    participant Target as Target Component\n\n    NMS->>Master: SNMP SET Request (OID, Value)\n    Master->>SubAgent: AgentX SET Request (Reserve Phase)\n    Note over SubAgent: Validate value format&lt;br\/>Check parameter access\n    SubAgent-->>Master: Reserve OK\n\n    Master->>SubAgent: AgentX SET Request (Commit Phase)\n    SubAgent->>Target: CcspBaseIf_setParameterValues(param, value) via RBus\n    Note over Target: Validate parameter&lt;br\/>Set new value\n    Target-->>SubAgent: Set Result\n\n    SubAgent->>Target: CcspBaseIf_setCommit() via RBus\n    Note over Target: Apply configuration changes&lt;br\/>Persist to storage if needed\n    Target-->>SubAgent: Commit Result\n\n    SubAgent-->>Master: AgentX Response (Success)\n    Master-->>NMS: SNMP Response (Success)<\/pre><\/div>\n\n\n\n<p><strong>Component Discovery Flow:<\/strong><\/p>\n\n\n\n<div class=\"wp-block-merpress-mermaidjs diagram-source-mermaid\"><pre class=\"mermaid\">sequenceDiagram\n    participant SubAgent as SNMP Subagent\n    participant Bus as Message Bus\n    participant CR as Component Registry\n\n    SubAgent->>SubAgent: Cosa_FindDestComp(parameter_name)\n    SubAgent->>Bus: Connect to RBus (if not connected)\n    Bus-->>SubAgent: Connection Handle\n\n    SubAgent->>CR: CcspBaseIf_discComponentSupportingNamespace()&lt;br\/>via RBus path: eRT.com.cisco.spvtg.ccsp.CR\n    Note over CR: Query component database&lt;br\/>Match parameter namespace\n\n    CR-->>SubAgent: Component Name (e.g., com.cisco.spvtg.ccsp.pam)&lt;br\/>RBus Path (e.g., \/com\/cisco\/spvtg\/ccsp\/pam)\n\n    Note over SubAgent: Cache component info&lt;br\/>for subsequent requests<\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"SNMPProtocolAgent-ImplementationDetails\">Implementation Details<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"SNMPProtocolAgent-MajorHALAPIsIntegration\">Major HAL APIs Integration<\/h3>\n\n\n\n<p>The SNMP Protocol Agent does not directly integrate with HAL APIs. It operates at the middleware layer translating SNMP requests to data model parameter operations. Target RDK-B components invoked through message bus calls are responsible for HAL interactions as needed.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"SNMPProtocolAgent-KeyImplementationLogic\">Key Implementation Logic<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>MIB XML Parsing and Loading<\/strong>: The component loads MIB mapping configurations at startup by parsing CcspRDKBMibList.xml to determine which MIB XML files to load, then processing each XML file to extract OID-to-parameter mappings, data types, and handler bindings using the ansc_xml_dom_parser library<\/li>\n\n\n\n<li>XML parsing implementation in\u00a0<code>source\/SnmpPlugin\/CcspSnmpPlugin.c<\/code>\u00a0function\u00a0<code>init_ccsp_snmp_plugin()<\/code><\/li>\n\n\n\n<li>MIB helper object creation and handler registration in\u00a0<code>source\/SnmpPlugin\/ccsp_mib_helper.c<\/code><\/li>\n\n\n\n<li><strong>OID Translation and Parameter Discovery<\/strong>: Each SNMP request triggers OID lookup in loaded MIB mappings to identify the corresponding data model parameter, followed by component discovery through the Component Registry to determine which RDK-B component owns that parameter<\/li>\n\n\n\n<li>OID-to-parameter mapping lookup in\u00a0<code>source\/SnmpPlugin\/ccsp_mib_utilities.c<\/code><\/li>\n\n\n\n<li>Component discovery implementation in\u00a0<code>source\/SnmpPlugin\/cosa_api.c<\/code>\u00a0function\u00a0<code>Cosa_FindDestComp()<\/code><\/li>\n\n\n\n<li>Caching of component discovery results to minimize registry queries<\/li>\n\n\n\n<li><strong>Data Type Conversion<\/strong>: The component implements bidirectional conversion between SNMP data types (INTEGER, OCTET_STR, IPADDRESS, COUNTER, GAUGE, TIMETICKS) and data model types (string, int, unsignedInt, boolean, dateTime, base64) ensuring proper value representation<\/li>\n\n\n\n<li>Type conversion logic in\u00a0<code>source\/SnmpPlugin\/ccsp_mib_utilities.c<\/code>\u00a0and\u00a0<code>source\/SnmpPlugin\/ccsp_scalar_helper.c<\/code><\/li>\n\n\n\n<li>Special handling for complex types like MAC addresses, IP addresses, and enumerations<\/li>\n\n\n\n<li><strong>Error Handling Strategy<\/strong>: SNMP error codes are generated based on CCSP message bus operation results with proper mapping of CCSP error codes to SNMP error codes (noError, noSuchName, badValue, genErr, noAccess)<\/li>\n\n\n\n<li>Error mapping implementation in MIB helper functions<\/li>\n\n\n\n<li>Timeout handling for message bus calls with configurable retry<\/li>\n\n\n\n<li>Fallback to default values when parameter access fails for read operations<\/li>\n\n\n\n<li><strong>Logging &amp; Debugging<\/strong>: The component uses RDK Logger when available, falling back to AnscTrace logging for development builds with configurable log levels through CCSPDBG environment variable<\/li>\n\n\n\n<li>Logger initialization in\u00a0<code>source\/SnmpPlugin\/CcspSnmpPlugin.c<\/code>\u00a0using\u00a0<code>RDK_LOGGER_INIT()<\/code><\/li>\n\n\n\n<li>Debug level configuration in\u00a0<code>set_debug_level()<\/code>\u00a0function<\/li>\n\n\n\n<li>net-snmp debug token registration for protocol-level debugging<\/li>\n\n\n\n<li><strong>Privilege Management<\/strong>: After initialization and AgentX connection establishment, the component drops root privileges using the privilege manager API retaining only necessary capabilities for operation<\/li>\n\n\n\n<li>Privilege dropping implementation in\u00a0<code>source\/SnmpPlugin\/ccsp_snmp_subagent.c<\/code>\u00a0function\u00a0<code>drop_root()<\/code><\/li>\n\n\n\n<li>Capability configuration through privilege manager library<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"SNMPProtocolAgent-KeyConfigurationFiles\">Key Configuration Files<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Confirguration File<\/strong><\/td><td><strong>Purpose<\/strong><\/td><td><strong>Override Mechanisms<\/strong><\/td><\/tr><tr><td><code>config\/snmpd.conf<\/code><\/td><td>Master SNMP daemon configuration including community strings, AgentX settings, and plugin loading directives<\/td><td>System integrator configuration<\/td><\/tr><tr><td><code>\/tmp\/ccsp_msg.cfg<\/code><\/td><td>CCSP message bus configuration specifying component names, RBus paths, and subsystem prefixes<\/td><td>Copied from&nbsp;<code>\/usr\/ccsp\/ccsp_msg.cfg<\/code>&nbsp;at startup<\/td><\/tr><tr><td><code>Mib2DmMapping\/CcspRDKBMibList.xml<\/code><\/td><td>Master index of MIB mapping XML files to be loaded by the plugin<\/td><td>Build-time selection between CcspRDKBMibList.xml and CcspMibList.xml via RDKB_MIB flag<\/td><\/tr><tr><td><code>Mib2DmMapping\/Ccsp_RDKB-RG-WiFi-MIB.xml<\/code><\/td><td>MIB-to-DataModel mapping for WiFi subsystem including access point and associated device parameters<\/td><td>XML preprocessing directives for feature-specific includes<\/td><\/tr><tr><td><code>Mib2DmMapping\/Ccsp_RDKB-RG-MIB-DeviceMgmt.xml<\/code><\/td><td>MIB-to-DataModel mapping for device management operations including reboot, reset, and firmware management<\/td><td>Platform-specific parameter mappings<\/td><\/tr><tr><td><code>Mib2DmMapping\/Ccsp_RDKB-RG-MIB-Firewall.xml<\/code><\/td><td>MIB-to-DataModel mapping for firewall configuration and port forwarding rules<\/td><td>Security feature flag conditionals<\/td><\/tr><tr><td><code>Mib2DmMapping\/Ccsp_RDKB-RG-MIB-MoCA.xml<\/code><\/td><td>MIB-to-DataModel mapping for MoCA interface status and network topology<\/td><td>MoCA availability conditionals<\/td><\/tr><tr><td><code>Mib2DmMapping\/Ccsp_RDKB-RG-MIB-Hotspot.xml<\/code><\/td><td>MIB-to-DataModel mapping for public WiFi hotspot configuration and management<\/td><td>Hotspot feature flag conditionals<\/td><\/tr><tr><td><code>\/var\/tmp\/snmp_subagent_v2.pid<\/code><\/td><td>Process ID file for SNMPv2 subagent instance<\/td><td>Generated at runtime<\/td><\/tr><tr><td><code>\/var\/tmp\/snmp_subagent_v3.pid<\/code><\/td><td>Process ID file for SNMPv3 subagent instance<\/td><td>Generated at runtime<\/td><\/tr><\/tbody><\/table><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>The SNMP Protocol Agent is an RDK-B component that provides network management capabilities through the [&hellip;]<\/p>\n","protected":false},"author":28,"featured_media":0,"parent":9575,"menu_order":12,"comment_status":"open","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-9658","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>CcspSnmpPa - 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\/ccspsnmppa\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"CcspSnmpPa - RDK Documentation Portal | Documentation\" \/>\n<meta property=\"og:description\" content=\"The SNMP Protocol Agent is an RDK-B component that provides network management capabilities through the [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/ccspsnmppa\/\" \/>\n<meta property=\"og:site_name\" content=\"RDK Documentation Portal | Documentation\" \/>\n<meta property=\"article:modified_time\" content=\"2026-05-06T09:31:46+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=\"11 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\/ccspsnmppa\/\",\"url\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/ccspsnmppa\/\",\"name\":\"CcspSnmpPa - RDK Documentation Portal | Documentation\",\"isPartOf\":{\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/#website\"},\"datePublished\":\"2022-06-21T13:52:58+00:00\",\"dateModified\":\"2026-05-06T09:31:46+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/ccspsnmppa\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/ccspsnmppa\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/ccspsnmppa\/#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\":\"CcspSnmpPa\"}]},{\"@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":"CcspSnmpPa - 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\/ccspsnmppa\/","og_locale":"en_US","og_type":"article","og_title":"CcspSnmpPa - RDK Documentation Portal | Documentation","og_description":"The SNMP Protocol Agent is an RDK-B component that provides network management capabilities through the [&hellip;]","og_url":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/ccspsnmppa\/","og_site_name":"RDK Documentation Portal | Documentation","article_modified_time":"2026-05-06T09:31:46+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/ccspsnmppa\/","url":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/ccspsnmppa\/","name":"CcspSnmpPa - RDK Documentation Portal | Documentation","isPartOf":{"@id":"https:\/\/developer.rdkcentral.com\/documentation\/#website"},"datePublished":"2022-06-21T13:52:58+00:00","dateModified":"2026-05-06T09:31:46+00:00","breadcrumb":{"@id":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/ccspsnmppa\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/ccspsnmppa\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/ccspsnmppa\/#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":"CcspSnmpPa"}]},{"@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\/9658","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\/28"}],"replies":[{"embeddable":true,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/comments?post=9658"}],"version-history":[{"count":4,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages\/9658\/revisions"}],"predecessor-version":[{"id":12895,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages\/9658\/revisions\/12895"}],"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=9658"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}