From 6df1768244cafc695dffd85d7abacf472410d45e Mon Sep 17 00:00:00 2001 From: Vivek Kumar Dutta Date: Fri, 2 May 2025 17:56:29 +0530 Subject: [PATCH] netmode: datamodel vendor extension --- netmode/Makefile | 21 ++++- netmode/bbfdm_service.json | 16 ++++ netmode/files/datamodel.json | 82 +++++++++++++++++++ netmode/files/etc/init.d/netmode | 1 - .../40-netmode-set-supported-modes | 24 ++++++ 5 files changed, 141 insertions(+), 3 deletions(-) create mode 100644 netmode/bbfdm_service.json create mode 100644 netmode/files/datamodel.json create mode 100644 netmode/files/etc/uci-defaults/40-netmode-set-supported-modes diff --git a/netmode/Makefile b/netmode/Makefile index d29d639f8..7217a275c 100644 --- a/netmode/Makefile +++ b/netmode/Makefile @@ -8,11 +8,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=netmode -PKG_VERSION:=1.0.1 +PKG_VERSION:=1.0.2 PKG_RELEASE:=1 PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION) PKG_LICENSE:=GPL-2.0-only include $(INCLUDE_DIR)/package.mk +include $(TOPDIR)/feeds/iopsys/bbfdm/bbfdm.mk define Package/netmode CATEGORY:=Utilities @@ -23,11 +24,27 @@ define Package/netmode/description Network Modes and Utils endef +define Package/$(PKG_NAME)/config + config NETMODE_VENDOR_PREFIX + depends on PACKAGE_netmode + string "Vendor Extension used for netmode datamodel" + default "" +endef + +ifeq ($(CONFIG_NETMODE_VENDOR_PREFIX),"") +VENDOR_PREFIX = $(CONFIG_BBF_VENDOR_PREFIX) +else +VENDOR_PREFIX = $(CONFIG_NETMODE_VENDOR_PREFIX) +endif + define Build/Compile endef define Package/netmode/install - $(CP) ./files/* $(1)/ + $(INSTALL_DIR) $(1)/etc + $(CP) ./files/etc/* $(1)/etc/ + $(BBFDM_REGISTER_SERVICES) -v ${VENDOR_PREFIX} ./bbfdm_service.json $(1) $(PKG_NAME) + $(BBFDM_INSTALL_MS_DM) -v ${VENDOR_PREFIX} ./files/datamodel.json $(1) $(PKG_NAME) endef $(eval $(call BuildPackage,netmode)) diff --git a/netmode/bbfdm_service.json b/netmode/bbfdm_service.json new file mode 100644 index 000000000..10e68a20f --- /dev/null +++ b/netmode/bbfdm_service.json @@ -0,0 +1,16 @@ +{ + "daemon": { + "enable": "1", + "service_name": "netmode", + "unified_daemon": false, + "services": [ + { + "parent_dm": "Device.", + "object": "{BBF_VENDOR_PREFIX}NetMode" + } + ], + "config": { + "loglevel": "3" + } + } +} diff --git a/netmode/files/datamodel.json b/netmode/files/datamodel.json new file mode 100644 index 000000000..d374033c9 --- /dev/null +++ b/netmode/files/datamodel.json @@ -0,0 +1,82 @@ +{ + "json_plugin_version": 2, + "Device.{BBF_VENDOR_PREFIX}NetMode.": { + "type": "object", + "protocols": [ + "cwmp", + "usp" + ], + "access": false, + "array": false, + "dependency": "file:/etc/config/netmode", + "Enable": { + "type": "boolean", + "read": true, + "write": true, + "protocols": [ + "cwmp", + "usp" + ], + "mapping": [ + { + "type": "uci", + "uci": { + "file": "netmode", + "section": { + "name": "global" + }, + "option": { + "name": "enabled" + } + } + } + ] + }, + "Mode": { + "type": "string", + "read": true, + "write": true, + "protocols": [ + "cwmp", + "usp" + ], + "mapping": [ + { + "type": "uci", + "uci": { + "file": "netmode", + "section": { + "name": "global" + }, + "option": { + "name": "mode" + } + } + } + ] + }, + "SupportedModes": { + "type": "string", + "read": true, + "write": false, + "protocols": [ + "cwmp", + "usp" + ], + "mapping": [ + { + "type": "uci", + "uci": { + "file": "netmode", + "section": { + "name": "global" + }, + "list": { + "name": "supported_modes" + } + } + } + ] + } + } +} diff --git a/netmode/files/etc/init.d/netmode b/netmode/files/etc/init.d/netmode index 5e3ea942d..ddd87a129 100755 --- a/netmode/files/etc/init.d/netmode +++ b/netmode/files/etc/init.d/netmode @@ -22,7 +22,6 @@ start_service() { [ -f /etc/config/netmode ] || return config_load netmode - config_get_bool enabled global enabled '0' [ $enabled -eq 0 ] && return diff --git a/netmode/files/etc/uci-defaults/40-netmode-set-supported-modes b/netmode/files/etc/uci-defaults/40-netmode-set-supported-modes new file mode 100644 index 000000000..5501d65a2 --- /dev/null +++ b/netmode/files/etc/uci-defaults/40-netmode-set-supported-modes @@ -0,0 +1,24 @@ +#!/bin/sh + +. /lib/functions.sh +MODEDIR="/etc/netmodes" + +[ -f "/etc/config/netmode" ] || exit 0 +[ -d "${MODEDIR}" ] || exit 0 + +set_supported_modes() { + val="$(find "${MODEDIR}" -maxdepth 1 -mindepth 1 -type d -exec basename {} +)" + + for mode in ${val}; do + uci add_list netmode.global.supported_modes="${mode}" + done +} + +config_load netmode +config_get supported_modes global supported_modes '' + +if [ -z "${supported_modes}" ]; then + set_supported_modes +fi + +exit 0