No description
Find a file
2025-02-13 13:46:12 +00:00
bbfdmd log when max instance reached 2025-02-05 17:01:29 +05:30
dm-service log when max instance reached 2025-02-05 17:01:29 +05:30
docs Update Documentation 2024-12-18 12:27:26 +00:00
gitlab-ci Include more DM from gnx feed 2025-02-10 09:02:35 +00:00
libbbfdm log when max instance reached 2025-02-05 17:01:29 +05:30
libbbfdm-api log when max instance reached 2025-02-05 17:01:29 +05:30
libbbfdm-ubus Delete Instance refresh handler 2025-02-13 13:46:12 +00:00
test Delete Instance refresh handler 2025-02-13 13:46:12 +00:00
tools Include more DM from gnx feed 2025-02-10 09:02:35 +00:00
utilities Update Documentation 2024-12-18 12:27:26 +00:00
.gitignore Fix pipeline 2024-11-15 16:14:42 +05:30
.gitlab-ci.yml Include more DM from gnx feed 2025-02-10 09:02:35 +00:00
CMakeLists.txt Split 'bbfdmd' into two binaries: 'bbfdmd' (main tree) and 'dm-service' (micro-service tree) 2024-09-10 09:30:50 +00:00
LICENSE LICENSE: change license to BSD 3-Clause 2023-04-17 11:31:48 +02:00
mkdocs.yml Update documentation 2023-04-18 12:42:29 +05:30
README.md Update Documentation 2024-12-18 12:27:26 +00:00

BroadBand Forum Data Models (BBFDM)

bbfdm is a suite to provide TR181 datamodel backend for Higher layer management protocols like TR-069/CWMP or TR-369/USP. It is designed in a hardware agnostic way and provides the available datamodel parameters over ubus on the northbound interface and creates the datamodel mapping based on uci and ubus on southbound interface.

bbfdm has five main components:

Component Description
bbfdmd A daemon to expose data model objects over ubus
dm-service A daemon to expose data model objects as micro-service over ubus
libbbfdm-api API library to create and parse datamodel tree
libbbfdm-ubus API library to expose datamodel over ubus
libbbfdm A static library that contains the core data model of TR181

Directory Structure

bbfdm package is structured as follow:

├── bbfdmd            --  This directory contains daemon code to expose the datamodel tree on northbound
│   └── ubus              - Daemon to expose datamodel over ubus
├── dm-service        --  This directory contains daemon code to expose the datamodel tree as micro-service
├── docs              --  More detailed explanation of datamodel and user guide
├── gitlab-ci         --  Used for CI/CD pipeline test
├── libbbfdm          --  Minimal TR181 core datamodel implementation
├── libbbfdm-api      --  API library to create datamodel definition and parse the datamodel definition to form a datamodel tree
├── libbbfdm-ubus     --  API library to expose datamodel over ubus
├── tools             --  Tools to convert xml datamodel definition to json, generate c code and many more
└── utilities         --  Small helper utilities to complete/optimize the datamodel deployment

Important Topics

Good To Know

  • The current data model implementation follows the latest version of the data model, version `2.18``.

  • Instance alias handling has been moved to the icwmp repository since bbfdm repository only supports the common functionality provided by CWMP and USP protocols.

  • The current data model implementation does not support the delete method for all instances (e.g., Device.Users.User.) since CWMP and USP protocols do not provide support for this operation.

  • The data model implementation uses different directories to store temporary UCI configurations based on the protocol being used. The details are as follows:

| Protocol | Save Config Directory | Config Directory | Save Dmmap Directory | Dmmap Directory | | -------- | ------------------------ ---------------- | ---------------------- | ---------------- | | cwmp | /tmp/bbfdm/.cwmp/config | /etc/config | /tmp/bbfdm/.cwmp/dmmap | /etc/bbfdm/dmmap | | usp | /tmp/bbfdm/.usp/config | /etc/config | /tmp/bbfdm/.usp/dmmap | /etc/bbfdm/dmmap | | both | /tmp/bbfdm/.bbfdm/config | /etc/config | /tmp/bbfdm/.cwmp/dmmap | /etc/bbfdm/dmmap |

Compilation helper utilities

Additional datamodel objects

This repository has bare minimal TR181 datamodel integrated, each service has their own datamodel additions, which they expose using plugins and micro-services. List of IOWRT provided service datamodel set available in tools_input.json

Dependencies

Build-Time Dependencies

To successfully build bbfdmd, following libraries are needed:

Dependency Link License
libuci https://git.openwrt.org/project/uci.git LGPL 2.1
libubox https://git.openwrt.org/project/libubox.git BSD
libubus https://git.openwrt.org/project/ubus.git LGPL 2.1
libjson-c https://s3.amazonaws.com/json-c_releases MIT
libbbfdm-api https://dev.iopsys.eu/bbf/bbfdm.git BSD-3
libbbfdm-ubus https://dev.iopsys.eu/bbf/bbfdm.git BSD-3
libbbfdm https://dev.iopsys.eu/bbf/bbfdm.git BSD-3

Run-Time Dependencies

In order to run the bbfdmd, following dependencies are needed to be running/available before bbfdmd.

Dependency Link License
ubusd https://git.openwrt.org/project/ubus.git LGPL 2.1
libbbfdm-api https://dev.iopsys.eu/bbf/bbfdm.git BSD-3
libbbfdm-ubus https://dev.iopsys.eu/bbf/bbfdm.git BSD-3
libbbfdm https://dev.iopsys.eu/bbf/bbfdm.git BSD-3

In order to run the dm-service, following dependencies are needed to be running/available before dm-service.

Dependency Link License
ubusd https://git.openwrt.org/project/ubus.git LGPL 2.1
libbbfdm-api https://dev.iopsys.eu/bbf/bbfdm.git BSD-3
libbbfdm-ubus https://dev.iopsys.eu/bbf/bbfdm.git BSD-3