...
OvsAgent serves as the southbound executor for virtual networking configuration on RDK-B platforms. Components such as BridgeUtils and MeshAgent submit configuration requests to OVSDB; OvsAgent picks them up, applies them to the Linux kernel networking layer, and reports back. This decoupling allows other middleware components to interact with the virtual switch through a well-defined database interface without needing direct knowledge of the underlying networking commands or platform-specific details.
| Markdown |
|---|
```mermaid
%%{init: {
"theme": "default",
"flowchart": { "nodeSpacing": 20, "rankSpacing": 20 },
"themeVariables": {
"fontSize": "10px"
}
}}%%
graph LR
subgraph ExternalSystems ["External Systems"]
MeshCtrl["Mesh Controller\n(Remote)"]
end
subgraph RDKBMiddleware ["RDK-B Middleware (Linux Process)"]
BridgeUtils["BridgeUtils\nComponent"]
MeshAgent["MeshAgent\nComponent"]
OvsAgent["OvsAgent\n(This Component)"]
OvsDbServer["OVSDB Server\n(ovsdb-server)"]
CcspPsm["CcspPsm\n(PSM)"]
CcspCR["Component Registry"]
end
subgraph SystemLayer ["System & Platform Layer"]
OvsTools["ovs-vsctl\novs-ofctl"]
LinuxNet["Linux Bridge\nbrctl / ifconfig"]
Syscfg["syscfg\n(NVRAM Store)"]
DeviceProps["/etc/device.properties"]
end
MeshCtrl -->|"Remote Mgmt"| MeshAgent
BridgeUtils -->|"Unix Socket\nJSON-RPC"| OvsDbServer
MeshAgent -->|"Unix Socket\nJSON-RPC"| OvsDbServer
OvsAgent -->|"Unix Socket /var/run/openvswitch/db.sock\nJSON-RPC OVSDB Protocol"| OvsDbServer
OvsAgent -->|"R-BUS"| CcspCR
OvsAgent -->|"systemd gate\nConditionPathExists=/tmp/psm_initialized"| CcspPsm
OvsAgent -->|"syscfg_get\nlan_ipaddr"| Syscfg
OvsAgent -->|"getenv MODEL_NUM\nOneWiFiEnabled"| DeviceProps
OvsAgent -->|"v_secure_system"| OvsTools
OvsAgent -->|"v_secure_system\n(non-OVS bridges)"| LinuxNet
classDef external fill:#e8f5e8,stroke:#2e7d32,stroke-width:2px;
classDef component fill:#e1f5fe,stroke:#0277bd,stroke-width:2px;
classDef system fill:#fff3e0,stroke:#ef6c00,stroke-width:2px;
classDef thisComp fill:#fce4ec,stroke:#c62828,stroke-width:2px;
class MeshCtrl external;
class BridgeUtils,MeshAgent,OvsDbServer,CcspPsm,CcspCR component;
class OvsTools,LinuxNet,Syscfg,DeviceProps system;
class OvsAgent thisComp;
``` |
...