# rdkcentral/vlan-manager architecture

> Architecture diagram of the GitHub repository rdkcentral/vlan-manager, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/rdkcentral/vlan-manager
- Repository: https://github.com/rdkcentral/vlan-manager
- Video tour (about a minute): https://gitdiagram.com/rdkcentral/vlan-manager/video

## Overview

RdkVlanBridgingManager is a CCSP/TR-181 component for managing Ethernet links and VLAN interfaces on RDK devices. Its main workflow is to load VLAN configuration, expose and update Ethernet/VLAN data-model entries, then apply interface changes through networking APIs. The excerpts support the daemon/message-bus startup, data-model handlers, configuration loading, and parts of interface creation; wiring for unsampled plugin and HAL internals is left out. The README provides no further product description.

Main entry points: [`source/TR-181/middle_layer_src/ethernet_apis.c`](https://github.com/rdkcentral/vlan-manager/blob/main/source/TR-181/middle_layer_src/ethernet_apis.c) (Ethernet Operations), [`source/TR-181/middle_layer_src/plugin_main.c`](https://github.com/rdkcentral/vlan-manager/blob/main/source/TR-181/middle_layer_src/plugin_main.c) (TR-181 Plugin), [`source/TR-181/middle_layer_src/vlan_apis.c`](https://github.com/rdkcentral/vlan-manager/blob/main/source/TR-181/middle_layer_src/vlan_apis.c) (VLAN Operations), [`source/RdkVlanManager/ssp_main.c`](https://github.com/rdkcentral/vlan-manager/blob/main/source/RdkVlanManager/ssp_main.c) (Manager Daemon)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["CCSP Runtime"]
  node_daemon["Manager Daemon<br/>[ssp_main.c]"]
  node_bus["Message Bus"]
  node_actions["Component Actions<br/>[ssp_action.c]"]
end

subgraph group_model["TR-181 Data Model"]
  node_plugin["TR-181 Plugin<br/>[plugin_main.c]"]
  node_pluginapi["Plugin APIs<br/>[plugin_main_apis.c]"]
  node_vlandml["VLAN Data Model<br/>[vlan_dml.c]"]
  node_ethdml["Ethernet Data Model<br/>[ethernet_dml.c]"]
end

subgraph group_network["Interface Management"]
  node_vlanapi["VLAN Operations<br/>[vlan_apis.c]"]
  node_ethapi["Ethernet Operations<br/>[ethernet_apis.c]"]
  node_hal["VLAN Ethernet HAL<br/>[vlan_eth_hal.c]"]
end

subgraph group_state["Platform State"]
  node_vlaninit["VLAN Initialization<br/>[vlan_internal.c]"]
  node_psm[("Persistent Config")]
  node_platformhal["Platform HAL"]
  node_syscfg[("System Config")]
  node_sysevent["System Events"]
end

node_client(("Management Client"))
node_kernel["Linux Networking"]

node_client -->|"manages"| node_bus
node_daemon -->|"connects"| node_bus
node_daemon -->|"starts"| node_actions
node_actions -->|"engages"| node_plugin
node_plugin -->|"registers"| node_pluginapi
node_plugin -->|"exposes"| node_vlandml
node_plugin -->|"exposes"| node_ethdml
node_vlandml -->|"reads status"| node_vlanapi
node_ethdml -->|"reads status"| node_ethapi
node_vlaninit -->|"loads config"| node_psm
node_vlaninit -->|"reads region"| node_platformhal
node_vlanapi -->|"uses link APIs"| node_ethapi
node_vlanapi -.->|"uses HAL"| node_hal
node_vlanapi -->|"reads WAN"| node_sysevent
node_ethapi -->|"reads config"| node_psm
node_ethapi -->|"reads settings"| node_syscfg
node_ethapi -->|"creates interfaces"| node_kernel
node_hal -.->|"configures interfaces"| node_kernel

click node_daemon "https://github.com/rdkcentral/vlan-manager/blob/main/source/RdkVlanManager/ssp_main.c"
click node_bus "https://github.com/rdkcentral/vlan-manager/blob/main/source/RdkVlanManager/ssp_messagebus_interface.c"
click node_actions "https://github.com/rdkcentral/vlan-manager/blob/main/source/RdkVlanManager/ssp_action.c"
click node_plugin "https://github.com/rdkcentral/vlan-manager/blob/main/source/TR-181/middle_layer_src/plugin_main.c"
click node_pluginapi "https://github.com/rdkcentral/vlan-manager/blob/main/source/TR-181/middle_layer_src/plugin_main_apis.c"
click node_vlandml "https://github.com/rdkcentral/vlan-manager/blob/main/source/TR-181/middle_layer_src/vlan_dml.c"
click node_ethdml "https://github.com/rdkcentral/vlan-manager/blob/main/source/TR-181/middle_layer_src/ethernet_dml.c"
click node_vlaninit "https://github.com/rdkcentral/vlan-manager/blob/main/source/TR-181/middle_layer_src/vlan_internal.c"
click node_vlanapi "https://github.com/rdkcentral/vlan-manager/blob/main/source/TR-181/middle_layer_src/vlan_apis.c"
click node_ethapi "https://github.com/rdkcentral/vlan-manager/blob/main/source/TR-181/middle_layer_src/ethernet_apis.c"
click node_hal "https://github.com/rdkcentral/vlan-manager/blob/main/source/TR-181/middle_layer_src/vlan_eth_hal.c"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_daemon,node_bus,node_actions,node_client toneBlue
class node_plugin,node_pluginapi,node_vlandml,node_ethdml toneAmber
class node_vlanapi,node_ethapi,node_hal toneMint
class node_vlaninit,node_psm,node_platformhal,node_syscfg,node_sysevent toneRose
class node_kernel toneIndigo
```

## Components

### CCSP Runtime

- [Manager Daemon](https://github.com/rdkcentral/vlan-manager/blob/main/source/RdkVlanManager/ssp_main.c): `source/RdkVlanManager/ssp_main.c`
- [Message Bus](https://github.com/rdkcentral/vlan-manager/blob/main/source/RdkVlanManager/ssp_messagebus_interface.c): `source/RdkVlanManager/ssp_messagebus_interface.c`
- [Component Actions](https://github.com/rdkcentral/vlan-manager/blob/main/source/RdkVlanManager/ssp_action.c): `source/RdkVlanManager/ssp_action.c`

### TR-181 Data Model

- [TR-181 Plugin](https://github.com/rdkcentral/vlan-manager/blob/main/source/TR-181/middle_layer_src/plugin_main.c): `source/TR-181/middle_layer_src/plugin_main.c`
- [Plugin APIs](https://github.com/rdkcentral/vlan-manager/blob/main/source/TR-181/middle_layer_src/plugin_main_apis.c): `source/TR-181/middle_layer_src/plugin_main_apis.c`
- [VLAN Data Model](https://github.com/rdkcentral/vlan-manager/blob/main/source/TR-181/middle_layer_src/vlan_dml.c): `source/TR-181/middle_layer_src/vlan_dml.c`
- [Ethernet Data Model](https://github.com/rdkcentral/vlan-manager/blob/main/source/TR-181/middle_layer_src/ethernet_dml.c): `source/TR-181/middle_layer_src/ethernet_dml.c`

### Interface Management

- [VLAN Operations](https://github.com/rdkcentral/vlan-manager/blob/main/source/TR-181/middle_layer_src/vlan_apis.c): `source/TR-181/middle_layer_src/vlan_apis.c`
- [Ethernet Operations](https://github.com/rdkcentral/vlan-manager/blob/main/source/TR-181/middle_layer_src/ethernet_apis.c): `source/TR-181/middle_layer_src/ethernet_apis.c`
- [VLAN Ethernet HAL](https://github.com/rdkcentral/vlan-manager/blob/main/source/TR-181/middle_layer_src/vlan_eth_hal.c): `source/TR-181/middle_layer_src/vlan_eth_hal.c`

### Platform State

- [VLAN Initialization](https://github.com/rdkcentral/vlan-manager/blob/main/source/TR-181/middle_layer_src/vlan_internal.c): `source/TR-181/middle_layer_src/vlan_internal.c`
- **Persistent Config**
- **Platform HAL**
- **System Config**
- **System Events**

### Other components

- **Management Client**
- **Linux Networking**

## Connections

- Management Client → Message Bus: manages
- Manager Daemon → Message Bus: connects
- Manager Daemon → Component Actions: starts
- Component Actions → TR-181 Plugin: engages
- TR-181 Plugin → Plugin APIs: registers
- TR-181 Plugin → VLAN Data Model: exposes
- TR-181 Plugin → Ethernet Data Model: exposes
- VLAN Data Model → VLAN Operations: reads status
- Ethernet Data Model → Ethernet Operations: reads status
- VLAN Initialization → Persistent Config: loads config
- VLAN Initialization → Platform HAL: reads region
- VLAN Operations → Ethernet Operations: uses link APIs
- VLAN Operations → VLAN Ethernet HAL: uses HAL
- VLAN Operations → System Events: reads WAN
- Ethernet Operations → Persistent Config: reads config
- Ethernet Operations → System Config: reads settings
- Ethernet Operations → Linux Networking: creates interfaces
- VLAN Ethernet HAL → Linux Networking: configures interfaces
