From 70065660870a96a73666c2a7d3aa7e480a6597ea Mon Sep 17 00:00:00 2001 From: Amin Ben Romdhane <amin.benromdhane@iopsys.eu> Date: Fri, 14 Apr 2023 12:21:46 +0200 Subject: [PATCH] bbfdm: Add bbfdmd deamon --- {bbf => bbfdm}/Config_bbfdm.in | 0 {bbf => bbfdm}/Makefile | 34 +++++++- bbfdm/files/etc/config/bbfdmd | 6 ++ {bbf => bbfdm}/files/etc/config/userinterface | 0 .../files/etc/firewall.userinterface | 0 bbfdm/files/etc/init.d/bbfdmd | 82 +++++++++++++++++++ {bbf => bbfdm}/files/etc/init.d/userinterface | 2 +- .../uci-defaults/93-userinterface-firewall | 0 .../etc/uci-defaults/94-userinterface-json | 0 {bbf => bbfdm}/files/lib/upgrade/keep.d/bbf | 0 .../files/lib/upgrade/keep.d/userinterface | 0 11 files changed, 119 insertions(+), 5 deletions(-) rename {bbf => bbfdm}/Config_bbfdm.in (100%) rename {bbf => bbfdm}/Makefile (85%) create mode 100644 bbfdm/files/etc/config/bbfdmd rename {bbf => bbfdm}/files/etc/config/userinterface (100%) rename {bbf => bbfdm}/files/etc/firewall.userinterface (100%) create mode 100644 bbfdm/files/etc/init.d/bbfdmd rename {bbf => bbfdm}/files/etc/init.d/userinterface (93%) rename {bbf => bbfdm}/files/etc/uci-defaults/93-userinterface-firewall (100%) rename {bbf => bbfdm}/files/etc/uci-defaults/94-userinterface-json (100%) rename {bbf => bbfdm}/files/lib/upgrade/keep.d/bbf (100%) rename {bbf => bbfdm}/files/lib/upgrade/keep.d/userinterface (100%) diff --git a/bbf/Config_bbfdm.in b/bbfdm/Config_bbfdm.in similarity index 100% rename from bbf/Config_bbfdm.in rename to bbfdm/Config_bbfdm.in diff --git a/bbf/Makefile b/bbfdm/Makefile similarity index 85% rename from bbf/Makefile rename to bbfdm/Makefile index faca3b1ab..46acb9324 100644 --- a/bbf/Makefile +++ b/bbfdm/Makefile @@ -4,16 +4,17 @@ include $(TOPDIR)/rules.mk -PKG_NAME:=libbbf_dm -PKG_VERSION:=7.0.1 +PKG_NAME:=bbfdm +PKG_VERSION:=1.0.0 PKG_SOURCE_PROTO:=git -PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/bbf.git -PKG_SOURCE_VERSION:=4515b6319870aaa4b415bb66a4c60a91a1fa6592 +PKG_SOURCE_URL:=https://dev.iopsys.eu/bbf/bbfdm.git +PKG_SOURCE_VERSION:=0a4105c931f2cba8fec2ffdc813f170903ea3e90 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz PKG_MIRROR_HASH:=skip PKG_RELEASE=$(PKG_SOURCE_VERSION) +PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION) PKG_LICENSE:=LGPL-2.1 PKG_LICENSE_FILES:=LICENSE @@ -69,6 +70,15 @@ define Package/libbbf_dm-wolfssl VARIANT:=wolfssl endef +define Package/bbfdmd + SECTION:=utils + CATEGORY:=Utilities + SUBMENU:=TRx69 + TITLE:=Datamodel ubus backend + DEPENDS:=+libuci +libubox +libubus +libblobmsg-json +libbbf_api +PACKAGE_libbbf_dm-mbedtls:libbbf_dm-mbedtls \ + +PACKAGE_libbbf_dm-openssl:libbbf_dm-openssl +PACKAGE_libbbf_dm-wolfssl:libbbf_dm-wolfssl +endef + define Package/userinterface SECTION:=utils CATEGORY:=Utilities @@ -150,6 +160,12 @@ ifeq ($(BUILD_VARIANT),mbedtls) CMAKE_OPTIONS += -DWITH_MBEDTLS=ON endif +ifeq ($(CONFIG_PACKAGE_bbfdmd),y) +CMAKE_OPTIONS += -DBBFDMD_ENABLED=ON +CMAKE_OPTIONS += \ + -DBBFDMD_MAX_MSG_LEN:Integer=10485760 +endif + define Package/libbbf_api/install $(INSTALL_DIR) $(1)/lib $(CP) $(PKG_BUILD_DIR)/libbbf_api/libbbf_api.so $(1)/lib/ @@ -182,6 +198,15 @@ define Package/libbbf_dm/default/prerm exit 0 endef +define Package/bbfdmd/install + $(INSTALL_DIR) $(1)/etc/init.d + $(INSTALL_DIR) $(1)/etc/config + $(INSTALL_DIR) $(1)/usr/sbin + $(INSTALL_BIN) ./files/etc/init.d/bbfdmd $(1)/etc/init.d/bbfdmd + $(INSTALL_CONF) ./files/etc/config/bbfdmd $(1)/etc/config/bbfdmd + $(INSTALL_BIN) $(PKG_BUILD_DIR)/bbfdmd/src/bbfdmd $(1)/usr/sbin/ +endef + define Package/userinterface/install $(INSTALL_DIR) $(1)/etc/config $(INSTALL_DIR) $(1)/etc/uci-defaults @@ -222,4 +247,5 @@ $(eval $(call BuildPackage,libbbf_dm-openssl)) $(eval $(call BuildPackage,libbbf_dm-wolfssl)) $(eval $(call BuildPackage,libbbf_dm-mbedtls)) +$(eval $(call BuildPackage,bbfdmd)) $(eval $(call BuildPackage,userinterface)) diff --git a/bbfdm/files/etc/config/bbfdmd b/bbfdm/files/etc/config/bbfdmd new file mode 100644 index 000000000..7e4421491 --- /dev/null +++ b/bbfdm/files/etc/config/bbfdmd @@ -0,0 +1,6 @@ + +config globals 'globals' + option loglevel '1' + option refresh_time '10' + option transaction_timeout '10' + diff --git a/bbf/files/etc/config/userinterface b/bbfdm/files/etc/config/userinterface similarity index 100% rename from bbf/files/etc/config/userinterface rename to bbfdm/files/etc/config/userinterface diff --git a/bbf/files/etc/firewall.userinterface b/bbfdm/files/etc/firewall.userinterface similarity index 100% rename from bbf/files/etc/firewall.userinterface rename to bbfdm/files/etc/firewall.userinterface diff --git a/bbfdm/files/etc/init.d/bbfdmd b/bbfdm/files/etc/init.d/bbfdmd new file mode 100644 index 000000000..0d6274234 --- /dev/null +++ b/bbfdm/files/etc/init.d/bbfdmd @@ -0,0 +1,82 @@ +#!/bin/sh /etc/rc.common + +START=96 +STOP=10 + +USE_PROCD=1 +PROG=/usr/sbin/bbfdmd + +log() { + echo "${@}"|logger -t bbfdmd.init -p info +} + +validate_bbfdmd_globals_section() +{ + uci_validate_section bbfdmd globals "globals" \ + 'enabled:bool:true' \ + 'debug:bool:false' \ + 'loglevel:uinteger' \ + 'sock:string' \ + 'transaction_timeout:string' +} + +configure_bbfdmd() +{ + local enabled debug sock transaction_timeout + + config_load bbfdmd + + validate_bbfdmd_globals_section || { + log "Validation of bbf section failed" + return 1; + } + + [ "${enabled}" -eq 0 ] && return 0 + + procd_set_param command ${PROG} + if [ "${debug}" -eq 1 ]; then + procd_set_param stdout 1 + procd_set_param stderr 1 + fi + + if [ -f "${sock}" ]; then + procd_append_param command -s "${sock}" + fi + + if [ -n "${transaction_timeout}" ]; then + procd_append_param command -t "${transaction_timeout}" + fi +} + +apply_sysctl_configuration() { + local sysctl_conf + + sysctl_conf="/etc/bbfdm/sysctl.conf" + + [ -f "${sysctl_conf}" ] || touch "${sysctl_conf}" + + sysctl -e -p "${sysctl_conf}" >&- +} + +start_service() { + local sysctl_reload + + ubus -t 5 wait_for network.device + [ "$?" -eq 0 ] && sysctl_reload=1 + + procd_open_instance bbf + configure_bbfdmd + procd_set_param respawn + procd_close_instance + + [ "${sysctl_reload}" -eq 1 ] && apply_sysctl_configuration +} + +reload_service() { + apply_sysctl_configuration +} + +service_triggers() +{ + procd_add_reload_trigger "bbfdmd" +} diff --git a/bbf/files/etc/init.d/userinterface b/bbfdm/files/etc/init.d/userinterface similarity index 93% rename from bbf/files/etc/init.d/userinterface rename to bbfdm/files/etc/init.d/userinterface index 26bc3d5f2..90ecf202a 100644 --- a/bbf/files/etc/init.d/userinterface +++ b/bbfdm/files/etc/init.d/userinterface @@ -22,7 +22,7 @@ start_service() { fi # Inject firewall rules - procd_open_instance usp + procd_open_instance userinterface /etc/firewall.userinterface procd_close_instance } diff --git a/bbf/files/etc/uci-defaults/93-userinterface-firewall b/bbfdm/files/etc/uci-defaults/93-userinterface-firewall similarity index 100% rename from bbf/files/etc/uci-defaults/93-userinterface-firewall rename to bbfdm/files/etc/uci-defaults/93-userinterface-firewall diff --git a/bbf/files/etc/uci-defaults/94-userinterface-json b/bbfdm/files/etc/uci-defaults/94-userinterface-json similarity index 100% rename from bbf/files/etc/uci-defaults/94-userinterface-json rename to bbfdm/files/etc/uci-defaults/94-userinterface-json diff --git a/bbf/files/lib/upgrade/keep.d/bbf b/bbfdm/files/lib/upgrade/keep.d/bbf similarity index 100% rename from bbf/files/lib/upgrade/keep.d/bbf rename to bbfdm/files/lib/upgrade/keep.d/bbf diff --git a/bbf/files/lib/upgrade/keep.d/userinterface b/bbfdm/files/lib/upgrade/keep.d/userinterface similarity index 100% rename from bbf/files/lib/upgrade/keep.d/userinterface rename to bbfdm/files/lib/upgrade/keep.d/userinterface -- GitLab