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 faca3b1abf0607869d91af3dcc70a8df99b19b28..46acb932458b556bc81f5741447685efa5bd72c5 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 0000000000000000000000000000000000000000..7e4421491344f935fc88dc58882f02860c97c80d
--- /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 0000000000000000000000000000000000000000..0d6274234c492531d2ec4feaeb7870c0e2fac082
--- /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 26bc3d5f206a2e6dad5dc5dab7a4c7c7e53ab13d..90ecf202aa001a375ae71f6ab1037091fa0036bf 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