mirror of
https://dev.iopsys.eu/feed/iopsys.git
synced 2025-12-21 17:44:31 +08:00
Compare commits
4 Commits
sysmngr_me
...
dynamic-co
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b6a542e151 | ||
|
|
9c81aacd88 | ||
|
|
298d4dcb97 | ||
|
|
190544d3c4 |
@@ -1,4 +1,6 @@
|
|||||||
if PACKAGE_bbfdmd
|
config BBF_VENDOR_LIST
|
||||||
|
string "Vendor List"
|
||||||
|
default "iopsys"
|
||||||
|
|
||||||
config BBF_VENDOR_PREFIX
|
config BBF_VENDOR_PREFIX
|
||||||
string "Vendor Prefix"
|
string "Vendor Prefix"
|
||||||
@@ -11,4 +13,3 @@ config BBF_OBFUSCATION_KEY
|
|||||||
config BBF_MAX_OBJECT_INSTANCES
|
config BBF_MAX_OBJECT_INSTANCES
|
||||||
int "Maximum number of instances per object"
|
int "Maximum number of instances per object"
|
||||||
default 255
|
default 255
|
||||||
endif
|
|
||||||
163
bbfdm/Makefile
163
bbfdm/Makefile
@@ -5,14 +5,14 @@
|
|||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=bbfdm
|
PKG_NAME:=bbfdm
|
||||||
PKG_VERSION:=1.12.21
|
PKG_VERSION:=1.8.26
|
||||||
|
|
||||||
USE_LOCAL:=0
|
USE_LOCAL:=0
|
||||||
ifneq ($(USE_LOCAL),1)
|
ifneq ($(USE_LOCAL),1)
|
||||||
PKG_SOURCE_PROTO:=git
|
PKG_SOURCE_PROTO:=git
|
||||||
PKG_SOURCE_URL:=https://dev.iopsys.eu/bbf/bbfdm.git
|
PKG_SOURCE_URL:=https://dev.iopsys.eu/bbf/bbfdm.git
|
||||||
PKG_SOURCE_VERSION:=062c13e83387e3ad37d6caaffd47cf57a1db7c7f
|
PKG_SOURCE_VERSION:=6df8fecbcc72e55f2ba06ae933dcddb6f725b204
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_VERSION).tar.gz
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
|
||||||
PKG_MIRROR_HASH:=skip
|
PKG_MIRROR_HASH:=skip
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@@ -32,64 +32,32 @@ define Package/libbbfdm-api
|
|||||||
ABI_VERSION:=1.0
|
ABI_VERSION:=1.0
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/libbbfdm-ubus
|
define Package/libbbfdm
|
||||||
SECTION:=utils
|
SECTION:=utils
|
||||||
CATEGORY:=Utilities
|
CATEGORY:=Utilities
|
||||||
SUBMENU:=TRx69
|
SUBMENU:=TRx69
|
||||||
TITLE:=BBF datamodel ubus library, provides API to expose datamodel over ubus
|
TITLE:=Library for broadband forum data model support
|
||||||
DEPENDS:=+libuci +libubox +libubus +libblobmsg-json +libjson-c +libbbfdm-api
|
DEPENDS:=+libuci +libubox +libubus +libblobmsg-json +libjson-c +libbbfdm-api +libopenssl
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/bbfdmd
|
define Package/bbfdmd
|
||||||
SECTION:=utils
|
SECTION:=utils
|
||||||
CATEGORY:=Utilities
|
CATEGORY:=Utilities
|
||||||
SUBMENU:=TRx69
|
SUBMENU:=TRx69
|
||||||
TITLE:=Datamodel ubus backend to expose core tree
|
TITLE:=Datamodel ubus backend
|
||||||
DEPENDS:=+libuci +libubox +libubus +libblobmsg-json +libjson-c +libbbfdm-api +libopenssl +libbbfdm-ubus +bbf_configmngr
|
DEPENDS:=+libuci +libubox +libubus +libblobmsg-json +libbbfdm-api +libbbfdm +jq
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/dm-service
|
define Package/libbbfdm/config
|
||||||
SECTION:=utils
|
source "$(SOURCE)/Config_bbfdm.in"
|
||||||
CATEGORY:=Utilities
|
|
||||||
SUBMENU:=TRx69
|
|
||||||
TITLE:=Datamodel ubus backend to expose micro-service tree
|
|
||||||
DEPENDS:=+libuci +libubox +libubus +libblobmsg-json +libjson-c +libbbfdm-api +libbbfdm-ubus +bbf_configmngr
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Package/bbf_configmngr
|
|
||||||
SECTION:=utils
|
|
||||||
CATEGORY:=Utilities
|
|
||||||
SUBMENU:=TRx69
|
|
||||||
TITLE:= BBF Config Manager
|
|
||||||
DEPENDS:=+libuci +libubox +libubus +libblobmsg-json
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Package/bbfdmd/config
|
|
||||||
source "$(SOURCE)/Config_bbfdmd.in"
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Package/bbf_configmngr/config
|
|
||||||
source "$(SOURCE)/bbf_configmngr.in"
|
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/libbbfdm-api/description
|
define Package/libbbfdm-api/description
|
||||||
Library contains the API(UCI, UBUS, JSON, CLI and Browse) of libbbfdm
|
Library contains the API(UCI, UBUS, JSON, CLI and Browse) of libbbfdm
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/libbbfdm-ubus/description
|
define Package/libbbfdm/description
|
||||||
Library contains the APIs to expose data model over ubus
|
Library contains the data model tree. It includes TR181, TR143 data models
|
||||||
endef
|
|
||||||
|
|
||||||
define Package/bbfdmd/description
|
|
||||||
Daemon to expose Datamodel core tree
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Package/dm-service/description
|
|
||||||
Daemon to expose Datamodel micro-service tree
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Package/bbf_configmngr/description
|
|
||||||
Daemon for handling bbf reload services via ubus bbf.config
|
|
||||||
endef
|
endef
|
||||||
|
|
||||||
ifeq ($(USE_LOCAL),1)
|
ifeq ($(USE_LOCAL),1)
|
||||||
@@ -99,97 +67,82 @@ endef
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
CMAKE_OPTIONS += \
|
CMAKE_OPTIONS += \
|
||||||
|
-DBBF_TR181=ON
|
||||||
|
|
||||||
|
CMAKE_OPTIONS += \
|
||||||
|
-DBBF_VENDOR_LIST:String="$(CONFIG_BBF_VENDOR_LIST)" \
|
||||||
-DBBF_VENDOR_PREFIX:String="$(CONFIG_BBF_VENDOR_PREFIX)" \
|
-DBBF_VENDOR_PREFIX:String="$(CONFIG_BBF_VENDOR_PREFIX)" \
|
||||||
-DBBF_MAX_OBJECT_INSTANCES:Integer=$(CONFIG_BBF_MAX_OBJECT_INSTANCES) \
|
-DBBF_MAX_OBJECT_INSTANCES:Integer=$(CONFIG_BBF_MAX_OBJECT_INSTANCES)
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_PACKAGE_bbfdmd),y)
|
||||||
|
CMAKE_OPTIONS += \
|
||||||
-DBBFDMD_MAX_MSG_LEN:Integer=10485760
|
-DBBFDMD_MAX_MSG_LEN:Integer=10485760
|
||||||
|
endif
|
||||||
|
|
||||||
define Package/libbbfdm-api/install
|
define Package/libbbfdm-api/install
|
||||||
$(INSTALL_DIR) $(1)/lib
|
$(INSTALL_DIR) $(1)/lib
|
||||||
$(CP) $(PKG_BUILD_DIR)/libbbfdm-api/libbbfdm-api.so $(1)/lib/
|
$(CP) $(PKG_BUILD_DIR)/libbbfdm-api/libbbfdm-api.so $(1)/lib/
|
||||||
|
|
||||||
$(INSTALL_DIR) $(1)/usr/libexec/rpcd
|
$(INSTALL_DIR) $(1)/usr/libexec/rpcd
|
||||||
$(CP) $(PKG_BUILD_DIR)/utilities/files/usr/libexec/rpcd/bbf.secure $(1)/usr/libexec/rpcd/bbf.secure
|
$(CP) $(PKG_BUILD_DIR)/libbbfdm-api/scripts/bbf.secure $(1)/usr/libexec/rpcd/bbf.secure
|
||||||
$(CP) $(PKG_BUILD_DIR)/utilities/files/usr/libexec/rpcd/bbf.diag $(1)/usr/libexec/rpcd/bbf.diag
|
$(CP) $(PKG_BUILD_DIR)/libbbfdm-api/scripts/bbf.config $(1)/usr/libexec/rpcd/bbf.config
|
||||||
|
$(INSTALL_DIR) $(1)/etc/bbfdm
|
||||||
$(INSTALL_DIR) $(1)/usr/share/bbfdm/scripts/
|
|
||||||
$(CP) $(PKG_BUILD_DIR)/utilities/files/usr/share/bbfdm/scripts/bbf_api $(1)/usr/share/bbfdm/scripts/
|
|
||||||
|
|
||||||
$(INSTALL_DIR) $(1)/etc/bbfdm/certificates
|
|
||||||
echo "$(CONFIG_BBF_OBFUSCATION_KEY)" > $(1)/etc/bbfdm/.secure_hash
|
echo "$(CONFIG_BBF_OBFUSCATION_KEY)" > $(1)/etc/bbfdm/.secure_hash
|
||||||
|
$(INSTALL_DIR) $(1)/etc/bbfdm/certificates
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/libbbfdm-ubus/install
|
define Package/libbbfdm/install
|
||||||
$(INSTALL_DIR) $(1)/lib
|
$(INSTALL_DIR) $(1)/lib
|
||||||
$(CP) $(PKG_BUILD_DIR)/libbbfdm-ubus/libbbfdm-ubus.so $(1)/lib/
|
$(INSTALL_DIR) $(1)/etc/bbfdm
|
||||||
endef
|
|
||||||
|
|
||||||
define Package/bbfdmd/install
|
|
||||||
$(INSTALL_DIR) $(1)/etc/bbfdm/dmmap
|
$(INSTALL_DIR) $(1)/etc/bbfdm/dmmap
|
||||||
$(INSTALL_DIR) $(1)/usr/share/bbfdm
|
|
||||||
|
|
||||||
$(INSTALL_DIR) $(1)/etc/config
|
|
||||||
$(INSTALL_CONF) ./files/etc/config/bbfdm $(1)/etc/config/bbfdm
|
|
||||||
$(INSTALL_CONF) ./files/etc/config/schedules $(1)/etc/config/schedules
|
|
||||||
|
|
||||||
$(INSTALL_DIR) $(1)/usr/sbin
|
|
||||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/bbfdmd/ubus/bbfdmd $(1)/usr/sbin/
|
|
||||||
|
|
||||||
$(INSTALL_DIR) $(1)/etc/init.d
|
|
||||||
$(INSTALL_BIN) ./files/etc/init.d/bbfdmd $(1)/etc/init.d/bbfdmd
|
|
||||||
|
|
||||||
$(INSTALL_DIR) $(1)/etc/hotplug.d/iface
|
|
||||||
$(INSTALL_BIN) ./files/etc/hotplug.d/iface/85-bbfdm-sysctl $(1)/etc/hotplug.d/iface/85-bbfdm-sysctl
|
|
||||||
|
|
||||||
$(INSTALL_DIR) $(1)/lib/upgrade/keep.d
|
|
||||||
$(INSTALL_DATA) ./files/lib/upgrade/keep.d/bbf $(1)/lib/upgrade/keep.d/bbf
|
|
||||||
|
|
||||||
$(INSTALL_DIR) $(1)/etc/uci-defaults
|
$(INSTALL_DIR) $(1)/etc/uci-defaults
|
||||||
|
$(INSTALL_DIR) $(1)/lib/upgrade/keep.d
|
||||||
|
$(INSTALL_DIR) $(1)/usr/share/bbfdm/
|
||||||
|
$(CP) $(PKG_BUILD_DIR)/libbbfdm/libbbfdm.so $(1)/usr/share/bbfdm/libbbfdm.so
|
||||||
|
$(INSTALL_DATA) ./files/lib/upgrade/keep.d/bbf $(1)/lib/upgrade/keep.d/bbf
|
||||||
|
$(INSTALL_BIN) ./files/etc/uci-defaults/95-portmap-firewall $(1)/etc/uci-defaults/95-portmap-firewall
|
||||||
|
$(INSTALL_BIN) ./files/etc/uci-defaults/97-firewall-service $(1)/etc/uci-defaults/97-firewall-service
|
||||||
|
$(INSTALL_BIN) ./files/etc/uci-defaults/99-link-core-plugins $(1)/etc/uci-defaults/99-link-core-plugins
|
||||||
|
$(INSTALL_BIN) ./files/etc/uci-defaults/90-remove-nonexisting-microservices $(1)/etc/uci-defaults/
|
||||||
$(INSTALL_BIN) ./files/etc/uci-defaults/91-fix-bbfdmd-enabled-option $(1)/etc/uci-defaults/
|
$(INSTALL_BIN) ./files/etc/uci-defaults/91-fix-bbfdmd-enabled-option $(1)/etc/uci-defaults/
|
||||||
endef
|
$(INSTALL_BIN) ./files/etc/firewall.portmap $(1)/etc/firewall.portmap
|
||||||
|
$(INSTALL_BIN) ./files/etc/firewall.service $(1)/etc/firewall.service
|
||||||
define Package/dm-service/install
|
ifeq ($(findstring iopsys,$(CONFIG_BBF_VENDOR_LIST)),iopsys)
|
||||||
$(INSTALL_DIR) $(1)/etc/init.d
|
$(BBFDM_INSTALL_CORE_PLUGIN) $(PKG_BUILD_DIR)/libbbfdm/dmtree/vendor/iopsys/libbbfdm_iopsys_ext.so $(1)
|
||||||
$(INSTALL_BIN) ./files/etc/init.d/bbfdm.services $(1)/etc/init.d/
|
|
||||||
|
|
||||||
$(INSTALL_DIR) $(1)/usr/sbin
|
|
||||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/dm-service/dm-service $(1)/usr/sbin/
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Package/bbf_configmngr/install
|
|
||||||
$(INSTALL_DIR) $(1)/etc/init.d
|
|
||||||
ifeq ($(CONFIG_BBF_CONFIGMNGR_C_BACKEND),y)
|
|
||||||
$(INSTALL_DIR) $(1)/usr/sbin
|
|
||||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/utilities/bbf_configd $(1)/usr/sbin/
|
|
||||||
$(INSTALL_BIN) ./files/etc/init.d/bbf_configd $(1)/etc/init.d/bbf_configd
|
|
||||||
$(INSTALL_DIR) $(1)/usr/share/bbfdm/scripts
|
|
||||||
$(CP) $(PKG_BUILD_DIR)/utilities/files/usr/share/bbfdm/scripts/bbf_config_notify.sh $(1)/usr/share/bbfdm/scripts/
|
|
||||||
endif
|
endif
|
||||||
ifeq ($(CONFIG_BBF_CONFIGMNGR_SCRIPT_BACKEND),y)
|
$(INSTALL_DIR) $(1)/usr/share/bbfdm/scripts/
|
||||||
$(INSTALL_DIR) $(1)/usr/libexec/rpcd
|
$(INSTALL_DIR) $(1)/usr/libexec/rpcd
|
||||||
$(CP) $(PKG_BUILD_DIR)/utilities/files/usr/libexec/rpcd/bbf.config $(1)/usr/libexec/rpcd/bbf.config
|
$(CP) $(PKG_BUILD_DIR)/libbbfdm/scripts/* $(1)/usr/share/bbfdm/scripts/
|
||||||
endif
|
$(LN) /usr/share/bbfdm/scripts/bbf.diag $(1)/usr/libexec/rpcd/bbf.diag
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/bbfdmd/prerm
|
define Package/libbbfdm/prerm
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
rm -rf /etc/bbfdm/dmmap/*
|
rm -rf /etc/bbfdm/dmmap/*
|
||||||
exit 0
|
exit 0
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
define Package/bbfdmd/install
|
||||||
|
$(INSTALL_DIR) $(1)/etc/init.d
|
||||||
|
$(INSTALL_DIR) $(1)/etc/hotplug.d/iface
|
||||||
|
$(INSTALL_DIR) $(1)/etc/config
|
||||||
|
$(INSTALL_DIR) $(1)/etc/bbfdm
|
||||||
|
$(INSTALL_DIR) $(1)/usr/sbin
|
||||||
|
$(INSTALL_BIN) $(PKG_BUILD_DIR)/bbfdmd/ubus/bbfdmd $(1)/usr/sbin/
|
||||||
|
$(INSTALL_DATA) ./files/etc/bbfdm/input.json $(1)/etc/bbfdm/
|
||||||
|
$(INSTALL_BIN) ./files/etc/init.d/bbfdmd $(1)/etc/init.d/bbfdmd
|
||||||
|
$(INSTALL_BIN) ./files/etc/init.d/bbfdm.services $(1)/etc/init.d/
|
||||||
|
$(INSTALL_CONF) ./files/etc/config/bbfdm $(1)/etc/config/bbfdm
|
||||||
|
$(INSTALL_BIN) ./files/etc/hotplug.d/iface/85-bbfdm-sysctl $(1)/etc/hotplug.d/iface/85-bbfdm-sysctl
|
||||||
|
endef
|
||||||
|
|
||||||
define Build/InstallDev
|
define Build/InstallDev
|
||||||
$(INSTALL_DIR) $(1)/usr/lib
|
$(INSTALL_DIR) $(1)/usr/lib
|
||||||
$(INSTALL_DIR) $(1)/usr/include
|
$(INSTALL_DIR) $(1)/usr/include
|
||||||
$(INSTALL_DIR) $(1)/usr/include/libbbfdm-api
|
$(INSTALL_DIR) $(1)/usr/include/libbbfdm-api
|
||||||
$(INSTALL_DIR) $(1)/usr/include/libbbfdm-ubus
|
|
||||||
$(INSTALL_DATA) $(PKG_BUILD_DIR)/libbbfdm-api/*.h $(1)/usr/include/libbbfdm-api/
|
$(INSTALL_DATA) $(PKG_BUILD_DIR)/libbbfdm-api/*.h $(1)/usr/include/libbbfdm-api/
|
||||||
$(INSTALL_DATA) $(PKG_BUILD_DIR)/libbbfdm-ubus/bbfdm-ubus.h $(1)/usr/include/libbbfdm-ubus/
|
|
||||||
$(INSTALL_DATA) $(PKG_BUILD_DIR)/libbbfdm-api/include/*.h $(1)/usr/include/
|
$(INSTALL_DATA) $(PKG_BUILD_DIR)/libbbfdm-api/include/*.h $(1)/usr/include/
|
||||||
$(CP) $(PKG_BUILD_DIR)/libbbfdm-api/libbbfdm-api.so $(1)/usr/lib
|
|
||||||
$(CP) $(PKG_BUILD_DIR)/libbbfdm-ubus/libbbfdm-ubus.so $(1)/usr/lib
|
|
||||||
endef
|
endef
|
||||||
|
|
||||||
$(eval $(call BuildPackage,bbf_configmngr))
|
|
||||||
$(eval $(call BuildPackage,libbbfdm-api))
|
$(eval $(call BuildPackage,libbbfdm-api))
|
||||||
$(eval $(call BuildPackage,libbbfdm-ubus))
|
$(eval $(call BuildPackage,libbbfdm))
|
||||||
$(eval $(call BuildPackage,bbfdmd))
|
$(eval $(call BuildPackage,bbfdmd))
|
||||||
$(eval $(call BuildPackage,dm-service))
|
|
||||||
|
|||||||
@@ -1,19 +0,0 @@
|
|||||||
if PACKAGE_bbf_configmngr
|
|
||||||
choice
|
|
||||||
prompt "Select backend daemon for bbf.config"
|
|
||||||
default BBF_CONFIGMNGR_C_BACKEND
|
|
||||||
help
|
|
||||||
Select which backend daemon should be used for ubus bbf.config
|
|
||||||
|
|
||||||
config BBF_CONFIGMNGR_SCRIPT_BACKEND
|
|
||||||
bool "Use shell script backend"
|
|
||||||
help
|
|
||||||
Enable this option to use shell script as the backend for bbf.config. This can be useful for quick and easy scripting of configuration tasks.
|
|
||||||
|
|
||||||
config BBF_CONFIGMNGR_C_BACKEND
|
|
||||||
bool "Use C code backend"
|
|
||||||
help
|
|
||||||
Enable this option to use a C code implementation as the backend for bbf.config. This option is generally preferred for performance-critical tasks and scenarios requiring more robust and efficient handling.
|
|
||||||
|
|
||||||
endchoice
|
|
||||||
endif
|
|
||||||
28
bbfdm/files/etc/bbfdm/input.json
Normal file
28
bbfdm/files/etc/bbfdm/input.json
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
{
|
||||||
|
"daemon": {
|
||||||
|
"config": {
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"type": "DotSo",
|
||||||
|
"name": "/usr/share/bbfdm/libbbfdm.so",
|
||||||
|
"plugin_dir": "/usr/share/bbfdm/plugins"
|
||||||
|
},
|
||||||
|
"output": {
|
||||||
|
"type": "UBUS",
|
||||||
|
"name": "bbfdm"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cli": {
|
||||||
|
"config": {
|
||||||
|
"proto": "both",
|
||||||
|
"instance_mode": 0
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"type": "UBUS",
|
||||||
|
"name": "bbfdm"
|
||||||
|
},
|
||||||
|
"output": {
|
||||||
|
"type": "CLI"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,8 +1,11 @@
|
|||||||
config bbfdmd 'bbfdmd'
|
config bbfdmd 'bbfdmd'
|
||||||
option enable '1'
|
option enable '1'
|
||||||
option debug '0'
|
option loglevel '1'
|
||||||
option loglevel '3'
|
option refresh_time '120'
|
||||||
|
option transaction_timeout '30'
|
||||||
|
option subprocess_level '2'
|
||||||
|
|
||||||
config micro_services 'micro_services'
|
config micro_services 'micro_services'
|
||||||
option enable '1'
|
option enable '1'
|
||||||
option enable_core '0'
|
option enable_core '0'
|
||||||
|
option enable_respawn '1'
|
||||||
|
|||||||
@@ -1,2 +0,0 @@
|
|||||||
config global 'global'
|
|
||||||
option enable '1'
|
|
||||||
@@ -1,36 +0,0 @@
|
|||||||
#!/bin/sh /etc/rc.common
|
|
||||||
|
|
||||||
START=80
|
|
||||||
STOP=10
|
|
||||||
|
|
||||||
USE_PROCD=1
|
|
||||||
PROG=/usr/sbin/bbf_configd
|
|
||||||
|
|
||||||
log() {
|
|
||||||
echo "${@}"|logger -t bbf.config -p info
|
|
||||||
}
|
|
||||||
|
|
||||||
create_needed_directories()
|
|
||||||
{
|
|
||||||
mkdir -p /tmp/bbfdm/.cwmp
|
|
||||||
mkdir -p /tmp/bbfdm/.usp
|
|
||||||
mkdir -p /tmp/bbfdm/.bbfdm
|
|
||||||
}
|
|
||||||
|
|
||||||
start_service()
|
|
||||||
{
|
|
||||||
create_needed_directories
|
|
||||||
|
|
||||||
procd_open_instance "bbf_configd"
|
|
||||||
procd_set_param command ${PROG}
|
|
||||||
#procd_append_param command -ddd
|
|
||||||
procd_set_param respawn
|
|
||||||
procd_close_instance "bbf_configd"
|
|
||||||
}
|
|
||||||
|
|
||||||
service_triggers() {
|
|
||||||
for config_file in /etc/config/*; do
|
|
||||||
config_name=$(basename "$config_file")
|
|
||||||
procd_add_config_trigger "config.change" "$config_name" /usr/share/bbfdm/scripts/bbf_config_notify.sh
|
|
||||||
done
|
|
||||||
}
|
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
#!/bin/sh /etc/rc.common
|
#!/bin/sh /etc/rc.common
|
||||||
|
|
||||||
START=60
|
START=40
|
||||||
STOP=8
|
STOP=8
|
||||||
|
|
||||||
USE_PROCD=1
|
USE_PROCD=1
|
||||||
PROG=/usr/sbin/dm-service
|
PROG=/usr/sbin/bbfdmd
|
||||||
|
|
||||||
BBFDM_MICROSERVICE_DIR="/etc/bbfdm/micro_services"
|
BBFDM_MICROSERVICE_DIR="/etc/bbfdm/micro_services"
|
||||||
|
|
||||||
@@ -18,38 +18,33 @@ validate_bbfdm_micro_service_section()
|
|||||||
{
|
{
|
||||||
uci_validate_section bbfdm micro_services "micro_services" \
|
uci_validate_section bbfdm micro_services "micro_services" \
|
||||||
'enable:bool:true' \
|
'enable:bool:true' \
|
||||||
'enable_core:bool:false'
|
'enable_core:bool:false' \
|
||||||
|
'enable_respawn:bool:true'
|
||||||
}
|
}
|
||||||
|
|
||||||
_add_microservice()
|
_add_microservice()
|
||||||
{
|
{
|
||||||
local name path loglevel
|
local name path
|
||||||
local enable enable_core
|
local enable enable_core enable_respawn
|
||||||
|
|
||||||
# Check enable from micro-service
|
# Check enable from micro-service
|
||||||
path="${1}"
|
path="${1}"
|
||||||
enable_core="${2}"
|
enable_respawn="${2}"
|
||||||
|
enable_core="${3}"
|
||||||
|
|
||||||
name="$(basename ${path})"
|
name="$(basename ${path})"
|
||||||
name="${name//.json}"
|
name="${name//.json}"
|
||||||
|
|
||||||
json_load_file "${path}"
|
enable="$(jq -r '.daemon.enable//1' ${path})"
|
||||||
json_select daemon
|
|
||||||
|
|
||||||
json_get_var enable enable 1
|
|
||||||
if [ "${enable}" -eq "0" ]; then
|
if [ "${enable}" -eq "0" ]; then
|
||||||
log "datamodel micro-service ${name} not enabled"
|
log "datamodel micro-service ${name} not enabled"
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
json_select config
|
|
||||||
json_get_var loglevel loglevel 3
|
|
||||||
|
|
||||||
procd_open_instance "${name}"
|
procd_open_instance "${name}"
|
||||||
|
|
||||||
procd_set_param command ${PROG}
|
procd_set_param command ${PROG}
|
||||||
procd_append_param command -m "${name}"
|
procd_append_param command -m "${name}"
|
||||||
procd_append_param command -l "${loglevel}"
|
|
||||||
|
|
||||||
if [ "${enable_core}" -eq "1" ]; then
|
if [ "${enable_core}" -eq "1" ]; then
|
||||||
procd_set_param limits core="unlimited"
|
procd_set_param limits core="unlimited"
|
||||||
@@ -57,13 +52,15 @@ _add_microservice()
|
|||||||
procd_set_param stderr 1
|
procd_set_param stderr 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
procd_set_param respawn
|
if [ "${enable_respawn}" -eq "1" ]; then
|
||||||
|
procd_set_param respawn "3600" "5" "5"
|
||||||
|
fi
|
||||||
procd_close_instance "${name}"
|
procd_close_instance "${name}"
|
||||||
}
|
}
|
||||||
|
|
||||||
configure_bbfdm_micro_services()
|
configure_bbfdm_micro_services()
|
||||||
{
|
{
|
||||||
local enable enable_core
|
local enable enable_core enable_respawn
|
||||||
|
|
||||||
config_load bbfdm
|
config_load bbfdm
|
||||||
validate_bbfdm_micro_service_section || {
|
validate_bbfdm_micro_service_section || {
|
||||||
@@ -80,7 +77,7 @@ configure_bbfdm_micro_services()
|
|||||||
do
|
do
|
||||||
[ -e "$file" ] || continue
|
[ -e "$file" ] || continue
|
||||||
|
|
||||||
_add_microservice $file "${enable_core}"
|
_add_microservice $file "${enable_respawn}" "${enable_core}"
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@@ -95,7 +92,7 @@ _start_single_service()
|
|||||||
file="$(ls -1 ${BBFDM_MICROSERVICE_DIR}/${service}.json)"
|
file="$(ls -1 ${BBFDM_MICROSERVICE_DIR}/${service}.json)"
|
||||||
[ -e "$file" ] || return
|
[ -e "$file" ] || return
|
||||||
|
|
||||||
_add_microservice $file "0"
|
_add_microservice $file "0" "0"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,14 @@
|
|||||||
#!/bin/sh /etc/rc.common
|
#!/bin/sh /etc/rc.common
|
||||||
|
|
||||||
START=97
|
START=65
|
||||||
STOP=10
|
STOP=10
|
||||||
|
|
||||||
USE_PROCD=1
|
USE_PROCD=1
|
||||||
PROG=/usr/sbin/bbfdmd
|
PROG=/usr/sbin/bbfdmd
|
||||||
|
|
||||||
|
BBFDM_JSON_INPUT="/etc/bbfdm/input.json"
|
||||||
|
BBFDM_TEMP_DIR="/tmp/bbfdm"
|
||||||
|
|
||||||
. /usr/share/libubox/jshn.sh
|
. /usr/share/libubox/jshn.sh
|
||||||
|
|
||||||
log() {
|
log() {
|
||||||
@@ -16,13 +19,17 @@ validate_bbfdm_bbfdmd_section()
|
|||||||
{
|
{
|
||||||
uci_validate_section bbfdm bbfdmd "bbfdmd" \
|
uci_validate_section bbfdm bbfdmd "bbfdmd" \
|
||||||
'enable:bool:true' \
|
'enable:bool:true' \
|
||||||
|
'sock:string' \
|
||||||
'debug:bool:false' \
|
'debug:bool:false' \
|
||||||
'loglevel:uinteger:3'
|
'loglevel:uinteger:1' \
|
||||||
|
'refresh_time:uinteger:0' \
|
||||||
|
'transaction_timeout:uinteger:30' \
|
||||||
|
'subprocess_level:uinteger'
|
||||||
}
|
}
|
||||||
|
|
||||||
configure_bbfdmd()
|
configure_bbfdmd()
|
||||||
{
|
{
|
||||||
local enable debug
|
local enable debug sock
|
||||||
local jlog jrefresh jtimeout jlevel
|
local jlog jrefresh jtimeout jlevel
|
||||||
|
|
||||||
config_load bbfdm
|
config_load bbfdm
|
||||||
@@ -33,17 +40,25 @@ configure_bbfdmd()
|
|||||||
|
|
||||||
[ "${enable}" -eq 0 ] && return 0
|
[ "${enable}" -eq 0 ] && return 0
|
||||||
|
|
||||||
procd_set_param command ${PROG}
|
if [ -f "${BBFDM_JSON_INPUT}" ]; then
|
||||||
procd_append_param command -l "${loglevel}"
|
echo "$(jq --arg log ${loglevel} --arg tran ${transaction_timeout} --arg refresh ${refresh_time} --arg level ${subprocess_level} '.daemon.config += {"loglevel": $log, "refresh_time": $refresh, "transaction_timeout": $tran, "subprocess_level": $level}' ${BBFDM_JSON_INPUT})" > "${BBFDM_TEMP_DIR}/input.json"
|
||||||
|
fi
|
||||||
|
|
||||||
|
procd_set_param command ${PROG}
|
||||||
if [ "${debug}" -eq 1 ]; then
|
if [ "${debug}" -eq 1 ]; then
|
||||||
procd_set_param stdout 1
|
procd_set_param stdout 1
|
||||||
procd_set_param stderr 1
|
procd_set_param stderr 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ -f "${sock}" ]; then
|
||||||
|
procd_append_param command -s "${sock}"
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
start_service()
|
start_service()
|
||||||
{
|
{
|
||||||
|
mkdir -p ${BBFDM_TEMP_DIR}
|
||||||
|
|
||||||
procd_open_instance "bbfdm"
|
procd_open_instance "bbfdm"
|
||||||
configure_bbfdmd
|
configure_bbfdmd
|
||||||
procd_set_param respawn
|
procd_set_param respawn
|
||||||
|
|||||||
@@ -0,0 +1,18 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
. /lib/functions.sh
|
||||||
|
|
||||||
|
remove_nonexisting_microservice() {
|
||||||
|
local input_json
|
||||||
|
|
||||||
|
config_get input_json "$1" input_json ""
|
||||||
|
|
||||||
|
if [ -z "${input_json}" ]; then
|
||||||
|
uci_remove bbfdm "${1}"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
config_load bbfdm
|
||||||
|
config_foreach remove_nonexisting_microservice "micro_service"
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
|
||||||
34
bbfdm/files/etc/uci-defaults/99-link-core-plugins
Normal file
34
bbfdm/files/etc/uci-defaults/99-link-core-plugins
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
UNIFIED_PATH="/usr/share/bbfdm/plugins/"
|
||||||
|
|
||||||
|
log() {
|
||||||
|
echo "$@" | logger -t bbfdm.uci-default -p info
|
||||||
|
}
|
||||||
|
|
||||||
|
# Link JSON plugins
|
||||||
|
for f in `ls -1 /etc/bbfdm/json/*.json`; do
|
||||||
|
log "# BBFDM JSON plugin ${f} not aligned #"
|
||||||
|
ln -s ${f} "${UNIFIED_PATH}"
|
||||||
|
done
|
||||||
|
|
||||||
|
# Link DotSo plugins
|
||||||
|
for f in `ls -1 /usr/lib/bbfdm/*.so`; do
|
||||||
|
log "# BBFDM DotSO plugin ${f} not aligned #"
|
||||||
|
ln -s ${f} "${UNIFIED_PATH}"
|
||||||
|
done
|
||||||
|
|
||||||
|
# Link JSON plugins
|
||||||
|
for f in `ls -1 /etc/bbfdm/plugins/*.json`; do
|
||||||
|
log "# BBFDM JSON plugin ${f} not aligned #"
|
||||||
|
ln -s ${f} "${UNIFIED_PATH}"
|
||||||
|
done
|
||||||
|
|
||||||
|
# Link DotSo plugins
|
||||||
|
for f in `ls -1 /etc/bbfdm/plugins/*.so`; do
|
||||||
|
log "# BBFDM DotSO plugin ${f} not aligned #"
|
||||||
|
ln -s ${f} "${UNIFIED_PATH}"
|
||||||
|
done
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
BBFDM_BASE_DM_PATH="usr/share/bbfdm"
|
BBFDM_BASE_DM_PATH="usr/share/bbfdm"
|
||||||
BBFDM_INPUT_PATH="etc/bbfdm/micro_services"
|
BBFDM_INPUT_PATH="etc/bbfdm/micro_services"
|
||||||
INPUT_TEMPLATE='{"daemon":{"enable":"1","service_name":"template","config":{"loglevel":"3"}}}'
|
INPUT_TEMPLATE='{"daemon":{"enable":"1","service_name":"template","config":{"loglevel":"1"}}}'
|
||||||
OUT_NAME=""
|
OUT_NAME=""
|
||||||
|
|
||||||
MICRO_SERVICE=0
|
MICRO_SERVICE=0
|
||||||
@@ -79,11 +79,6 @@ bbfdm_install_dm()
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ! -f "${src}" ]; then
|
|
||||||
echo "File $src does not exists..."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "${src##*.}" = "json" ]; then
|
if [ "${src##*.}" = "json" ]; then
|
||||||
echo "Compacting BBFDM JSON file"
|
echo "Compacting BBFDM JSON file"
|
||||||
minfile=$(mktemp)
|
minfile=$(mktemp)
|
||||||
|
|||||||
@@ -1,17 +0,0 @@
|
|||||||
if PACKAGE_bridgemngr
|
|
||||||
|
|
||||||
menu "Configuration"
|
|
||||||
|
|
||||||
config BRIDGEMNGR_BRIDGE_VLAN
|
|
||||||
bool "Use bridge-vlan backend"
|
|
||||||
help
|
|
||||||
Set this option to use bridge-vlan as backend for VLAN objects.
|
|
||||||
|
|
||||||
config BRIDGEMNGR_BRIDGE_VENDOR_EXT
|
|
||||||
bool "Use bridge BBF vendor extensions"
|
|
||||||
default y
|
|
||||||
help
|
|
||||||
Set this option to use bridge BBF vendor extensions.
|
|
||||||
|
|
||||||
endmenu
|
|
||||||
endif
|
|
||||||
@@ -5,14 +5,14 @@
|
|||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=bridgemngr
|
PKG_NAME:=bridgemngr
|
||||||
PKG_VERSION:=1.0.7
|
PKG_VERSION:=1.0.2
|
||||||
|
|
||||||
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
|
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
|
||||||
LOCAL_DEV:=0
|
LOCAL_DEV:=0
|
||||||
ifneq ($(LOCAL_DEV),1)
|
ifneq ($(LOCAL_DEV),1)
|
||||||
PKG_SOURCE_PROTO:=git
|
PKG_SOURCE_PROTO:=git
|
||||||
PKG_SOURCE_URL:=https://dev.iopsys.eu/network/bridgemngr
|
PKG_SOURCE_URL:=https://dev.iopsys.eu/network/bridgemngr
|
||||||
PKG_SOURCE_VERSION:=4f22b4a4270c8d9b94b9de6f5cbe2a1dd86a3027
|
PKG_SOURCE_VERSION:=9cddf87b527ef1614a8a39db67e6578ff1810031
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
|
||||||
PKG_MIRROR_HASH:=skip
|
PKG_MIRROR_HASH:=skip
|
||||||
endif
|
endif
|
||||||
@@ -26,31 +26,21 @@ include ../bbfdm/bbfdm.mk
|
|||||||
define Package/bridgemngr
|
define Package/bridgemngr
|
||||||
CATEGORY:=Utilities
|
CATEGORY:=Utilities
|
||||||
TITLE:=Bridge Manager
|
TITLE:=Bridge Manager
|
||||||
DEPENDS:=+libuci +libubox +libubus +libblobmsg-json
|
DEPENDS:=+libuci +libubox +libubus +libblobmsg-json +libbbfdm-api
|
||||||
DEPENDS+=+libbbfdm-api +libbbfdm-ubus +dm-service
|
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/bridgemngr/description
|
define Package/bridgemngr/description
|
||||||
Package to add Device.Bridging. data model support.
|
Package to add Device.Bridging. data model support.
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/$(PKG_NAME)/config
|
|
||||||
source "$(SOURCE)/Config.in"
|
|
||||||
endef
|
|
||||||
|
|
||||||
MAKE_PATH:=src
|
MAKE_PATH:=src
|
||||||
|
|
||||||
TARGET_CFLAGS += -DBBF_VENDOR_PREFIX=\\\"$(CONFIG_BBF_VENDOR_PREFIX)\\\"
|
TARGET_CFLAGS += -DBBF_VENDOR_PREFIX=\\\"$(CONFIG_BBF_VENDOR_PREFIX)\\\"
|
||||||
|
|
||||||
ifeq ($(CONFIG_BRIDGEMNGR_BRIDGE_VLAN),y)
|
|
||||||
TARGET_CFLAGS += -DBRIDGE_VLAN_BACKEND
|
|
||||||
endif
|
|
||||||
|
|
||||||
define Package/bridgemngr/install
|
define Package/bridgemngr/install
|
||||||
$(BBFDM_INSTALL_MS_DM) $(PKG_BUILD_DIR)/src/libbridgemngr.so $(1) $(PKG_NAME)
|
$(BBFDM_INSTALL_MS_DM) $(PKG_BUILD_DIR)/src/libbridgemngr.so $(1) $(PKG_NAME)
|
||||||
ifeq ($(CONFIG_BRIDGEMNGR_BRIDGE_VENDOR_EXT), y)
|
ifeq ($(findstring iopsys,$(CONFIG_BBF_VENDOR_LIST)),iopsys)
|
||||||
$(BBFDM_INSTALL_MS_PLUGIN) $(PKG_BUILD_DIR)/src/libbridgeext.so $(1) $(PKG_NAME)
|
$(BBFDM_INSTALL_MS_PLUGIN) $(PKG_BUILD_DIR)/src/libbridgeext.so $(1) $(PKG_NAME)
|
||||||
$(BBFDM_INSTALL_MS_PLUGIN) ./files/VLAN_Filtering_Extension.json $(1) $(PKG_NAME)
|
|
||||||
endif
|
endif
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
|||||||
@@ -1,31 +0,0 @@
|
|||||||
{
|
|
||||||
"json_plugin_version": 2,
|
|
||||||
"Device.Bridging.Bridge.{i}.": {
|
|
||||||
"type": "object",
|
|
||||||
"protocols": [
|
|
||||||
"cwmp",
|
|
||||||
"usp"
|
|
||||||
],
|
|
||||||
"access": true,
|
|
||||||
"array": true,
|
|
||||||
"{BBF_VENDOR_PREFIX}VLANFiltering": {
|
|
||||||
"type": "boolean",
|
|
||||||
"read": true,
|
|
||||||
"write": true,
|
|
||||||
"protocols": [
|
|
||||||
"cwmp",
|
|
||||||
"usp"
|
|
||||||
],
|
|
||||||
"datatype": "boolean",
|
|
||||||
"description": "Enable or disable VLAN Filtering on this bridge.",
|
|
||||||
"mapping": [
|
|
||||||
{
|
|
||||||
"data": "@Parent",
|
|
||||||
"type": "uci_sec",
|
|
||||||
"key": "vlan_filtering"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -7,13 +7,13 @@
|
|||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=bulkdata
|
PKG_NAME:=bulkdata
|
||||||
PKG_VERSION:=2.1.14
|
PKG_VERSION:=2.1.10
|
||||||
|
|
||||||
LOCAL_DEV:=0
|
LOCAL_DEV:=0
|
||||||
ifneq ($(LOCAL_DEV),1)
|
ifneq ($(LOCAL_DEV),1)
|
||||||
PKG_SOURCE_PROTO:=git
|
PKG_SOURCE_PROTO:=git
|
||||||
PKG_SOURCE_URL:=https://dev.iopsys.eu/bbf/bulkdata.git
|
PKG_SOURCE_URL:=https://dev.iopsys.eu/bbf/bulkdata.git
|
||||||
PKG_SOURCE_VERSION:=93c9e87cb9f8f635cece1473cff6f67cff9ff7c0
|
PKG_SOURCE_VERSION:=e472e90feec31d9f318ea8c732ab564002e25db1
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
|
||||||
PKG_MIRROR_HASH:=skip
|
PKG_MIRROR_HASH:=skip
|
||||||
endif
|
endif
|
||||||
@@ -24,17 +24,12 @@ PKG_LICENSE_FILES:=LICENSE
|
|||||||
include $(INCLUDE_DIR)/package.mk
|
include $(INCLUDE_DIR)/package.mk
|
||||||
include $(TOPDIR)/feeds/iopsys/bbfdm/bbfdm.mk
|
include $(TOPDIR)/feeds/iopsys/bbfdm/bbfdm.mk
|
||||||
|
|
||||||
define Package/bulkdata
|
define Package/$(PKG_NAME)
|
||||||
SECTION:=utils
|
SECTION:=utils
|
||||||
CATEGORY:=Utilities
|
CATEGORY:=Utilities
|
||||||
SUBMENU:=TRx69
|
SUBMENU:=TRx69
|
||||||
TITLE:=BBF BulkData Collection
|
TITLE:=BBF BulkData Collection
|
||||||
DEPENDS:=+ubus +libuci +libubox +libjson-c +libcurl +libblobmsg-json +zlib
|
DEPENDS:=+libubus +libuci +libubox +libjson-c +libcurl +libblobmsg-json +zlib
|
||||||
DEPENDS+=+libbbfdm-api +libbbfdm-ubus
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Package/bulkdata/description
|
|
||||||
BulkData daemon for TR069 with bbfdm backend.
|
|
||||||
endef
|
endef
|
||||||
|
|
||||||
TARGET_CFLAGS += \
|
TARGET_CFLAGS += \
|
||||||
@@ -47,13 +42,16 @@ define Build/Prepare
|
|||||||
endef
|
endef
|
||||||
endif
|
endif
|
||||||
|
|
||||||
define Package/bulkdata/install
|
define Package/$(PKG_NAME)/install
|
||||||
$(INSTALL_DIR) $(1)/usr/sbin
|
$(INSTALL_DIR) $(1)/usr/sbin
|
||||||
$(INSTALL_DIR) $(1)/etc/config
|
$(INSTALL_DIR) $(1)/etc/config
|
||||||
$(INSTALL_DIR) $(1)/etc/init.d
|
$(INSTALL_DIR) $(1)/etc/init.d
|
||||||
|
$(INSTALL_DIR) $(1)/etc/uci-defaults
|
||||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/bulkdatad $(1)/usr/sbin/
|
$(INSTALL_BIN) $(PKG_BUILD_DIR)/bulkdatad $(1)/usr/sbin/
|
||||||
$(INSTALL_DATA) ./files/etc/config/bulkdata $(1)/etc/config/
|
$(INSTALL_DATA) ./files/etc/config/bulkdata $(1)/etc/config/
|
||||||
$(INSTALL_BIN) ./files/etc/init.d/bulkdatad $(1)/etc/init.d/
|
$(INSTALL_BIN) ./files/etc/init.d/bulkdatad $(1)/etc/init.d/
|
||||||
|
$(INSTALL_DATA) ./files/etc/uci-defaults/95-bulkdata-translation-options $(1)/etc/uci-defaults/
|
||||||
|
$(BBFDM_INSTALL_MS_DM) $(PKG_BUILD_DIR)/bbf_plugin/bulkdata.json $(1) $(PKG_NAME)
|
||||||
endef
|
endef
|
||||||
|
|
||||||
$(eval $(call BuildPackage,bulkdata))
|
$(eval $(call BuildPackage,$(PKG_NAME)))
|
||||||
|
|||||||
960
bulkdata/bulkdata/usr/share/bbfdm/micro_services/bulkdata.json
Normal file
960
bulkdata/bulkdata/usr/share/bbfdm/micro_services/bulkdata.json
Normal file
@@ -0,0 +1,960 @@
|
|||||||
|
{
|
||||||
|
"json_plugin_version": 2,
|
||||||
|
"Device.BulkData.": {
|
||||||
|
"type": "object",
|
||||||
|
"protocols": [
|
||||||
|
"cwmp",
|
||||||
|
"usp"
|
||||||
|
],
|
||||||
|
"access": false,
|
||||||
|
"array": false,
|
||||||
|
"Enable": {
|
||||||
|
"type": "boolean",
|
||||||
|
"read": true,
|
||||||
|
"write": true,
|
||||||
|
"protocols": [
|
||||||
|
"cwmp",
|
||||||
|
"usp"
|
||||||
|
],
|
||||||
|
"datatype": "boolean",
|
||||||
|
"mapping": [
|
||||||
|
{
|
||||||
|
"type": "uci",
|
||||||
|
"uci": {
|
||||||
|
"file": "bulkdata",
|
||||||
|
"section": {
|
||||||
|
"name": "bulkdata"
|
||||||
|
},
|
||||||
|
"option": {
|
||||||
|
"name": "enable"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Status": {
|
||||||
|
"type": "string",
|
||||||
|
"read": true,
|
||||||
|
"write": false,
|
||||||
|
"protocols": [
|
||||||
|
"cwmp",
|
||||||
|
"usp"
|
||||||
|
],
|
||||||
|
"datatype": "string",
|
||||||
|
"enumerations": [
|
||||||
|
"Enabled",
|
||||||
|
"Disabled",
|
||||||
|
"Error"
|
||||||
|
],
|
||||||
|
"mapping": [
|
||||||
|
{
|
||||||
|
"type": "uci",
|
||||||
|
"uci": {
|
||||||
|
"file": "bulkdata",
|
||||||
|
"section": {
|
||||||
|
"name": "bulkdata"
|
||||||
|
},
|
||||||
|
"option": {
|
||||||
|
"name": "enable"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"MinReportingInterval": {
|
||||||
|
"type": "unsignedInt",
|
||||||
|
"read": true,
|
||||||
|
"write": false,
|
||||||
|
"protocols": [
|
||||||
|
"cwmp",
|
||||||
|
"usp"
|
||||||
|
],
|
||||||
|
"default": "0",
|
||||||
|
"datatype": "unsignedInt",
|
||||||
|
"unit": "seconds"
|
||||||
|
},
|
||||||
|
"Protocols": {
|
||||||
|
"type": "string",
|
||||||
|
"read": true,
|
||||||
|
"write": false,
|
||||||
|
"protocols": [
|
||||||
|
"cwmp",
|
||||||
|
"usp"
|
||||||
|
],
|
||||||
|
"default": "HTTP",
|
||||||
|
"list": {
|
||||||
|
"datatype": "string",
|
||||||
|
"enumerations": [
|
||||||
|
"Streaming",
|
||||||
|
"File",
|
||||||
|
"HTTP",
|
||||||
|
"MQTT"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"EncodingTypes": {
|
||||||
|
"type": "string",
|
||||||
|
"read": true,
|
||||||
|
"write": false,
|
||||||
|
"protocols": [
|
||||||
|
"cwmp",
|
||||||
|
"usp"
|
||||||
|
],
|
||||||
|
"default": "JSON,CSV",
|
||||||
|
"list": {
|
||||||
|
"datatype": "string",
|
||||||
|
"enumerations": [
|
||||||
|
"XML",
|
||||||
|
"XDR",
|
||||||
|
"CSV",
|
||||||
|
"JSON"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ParameterWildCardSupported": {
|
||||||
|
"type": "boolean",
|
||||||
|
"read": true,
|
||||||
|
"write": false,
|
||||||
|
"protocols": [
|
||||||
|
"cwmp",
|
||||||
|
"usp"
|
||||||
|
],
|
||||||
|
"default": "1",
|
||||||
|
"datatype": "boolean"
|
||||||
|
},
|
||||||
|
"MaxNumberOfProfiles": {
|
||||||
|
"type": "int",
|
||||||
|
"read": true,
|
||||||
|
"write": false,
|
||||||
|
"protocols": [
|
||||||
|
"cwmp",
|
||||||
|
"usp"
|
||||||
|
],
|
||||||
|
"default": "-1",
|
||||||
|
"datatype": "int",
|
||||||
|
"range": [
|
||||||
|
{
|
||||||
|
"min": -1
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"MaxNumberOfParameterReferences": {
|
||||||
|
"type": "int",
|
||||||
|
"read": true,
|
||||||
|
"write": false,
|
||||||
|
"protocols": [
|
||||||
|
"cwmp",
|
||||||
|
"usp"
|
||||||
|
],
|
||||||
|
"default": "-1",
|
||||||
|
"datatype": "int",
|
||||||
|
"range": [
|
||||||
|
{
|
||||||
|
"min": -1
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"ProfileNumberOfEntries": {
|
||||||
|
"type": "unsignedInt",
|
||||||
|
"read": true,
|
||||||
|
"write": false,
|
||||||
|
"protocols": [
|
||||||
|
"cwmp",
|
||||||
|
"usp"
|
||||||
|
],
|
||||||
|
"datatype": "unsignedInt",
|
||||||
|
"mapping": [
|
||||||
|
{
|
||||||
|
"type": "uci",
|
||||||
|
"uci": {
|
||||||
|
"file": "bulkdata",
|
||||||
|
"section": {
|
||||||
|
"type": "profile"
|
||||||
|
},
|
||||||
|
"option": {
|
||||||
|
"name": "@Count"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Device.BulkData.Profile.{i}.": {
|
||||||
|
"type": "object",
|
||||||
|
"protocols": [
|
||||||
|
"cwmp",
|
||||||
|
"usp"
|
||||||
|
],
|
||||||
|
"access": true,
|
||||||
|
"array": true,
|
||||||
|
"mapping": [
|
||||||
|
{
|
||||||
|
"type": "uci",
|
||||||
|
"uci": {
|
||||||
|
"file": "bulkdata",
|
||||||
|
"section": {
|
||||||
|
"type": "profile"
|
||||||
|
},
|
||||||
|
"dmmapfile": "dmmap_bulkdata"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"Enable": {
|
||||||
|
"type": "boolean",
|
||||||
|
"read": true,
|
||||||
|
"write": true,
|
||||||
|
"protocols": [
|
||||||
|
"cwmp",
|
||||||
|
"usp"
|
||||||
|
],
|
||||||
|
"datatype": "boolean",
|
||||||
|
"mapping": [
|
||||||
|
{
|
||||||
|
"data": "@Parent",
|
||||||
|
"type": "uci_sec",
|
||||||
|
"key": "enable"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Alias": {
|
||||||
|
"type": "string",
|
||||||
|
"read": true,
|
||||||
|
"write": true,
|
||||||
|
"protocols": [
|
||||||
|
"cwmp",
|
||||||
|
"usp"
|
||||||
|
],
|
||||||
|
"datatype": "Alias",
|
||||||
|
"range": [
|
||||||
|
{
|
||||||
|
"max": 64
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"flags": [
|
||||||
|
"Unique"
|
||||||
|
],
|
||||||
|
"mapping": [
|
||||||
|
{
|
||||||
|
"data": "@Parent",
|
||||||
|
"type": "uci_sec",
|
||||||
|
"key": "alias"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Name": {
|
||||||
|
"type": "string",
|
||||||
|
"read": true,
|
||||||
|
"write": true,
|
||||||
|
"protocols": [
|
||||||
|
"cwmp",
|
||||||
|
"usp"
|
||||||
|
],
|
||||||
|
"datatype": "string",
|
||||||
|
"range": [
|
||||||
|
{
|
||||||
|
"max": 255
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"mapping": [
|
||||||
|
{
|
||||||
|
"data": "@Parent",
|
||||||
|
"type": "uci_sec",
|
||||||
|
"key": "name"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"NumberOfRetainedFailedReports": {
|
||||||
|
"type": "int",
|
||||||
|
"read": true,
|
||||||
|
"write": true,
|
||||||
|
"protocols": [
|
||||||
|
"cwmp",
|
||||||
|
"usp"
|
||||||
|
],
|
||||||
|
"datatype": "int",
|
||||||
|
"range": [
|
||||||
|
{
|
||||||
|
"min": -1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"mapping": [
|
||||||
|
{
|
||||||
|
"data": "@Parent",
|
||||||
|
"type": "uci_sec",
|
||||||
|
"key": "nbre_of_retained_failed_reports"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Protocol": {
|
||||||
|
"type": "string",
|
||||||
|
"read": true,
|
||||||
|
"write": true,
|
||||||
|
"protocols": [
|
||||||
|
"cwmp",
|
||||||
|
"usp"
|
||||||
|
],
|
||||||
|
"datatype": "string",
|
||||||
|
"enumerations": [
|
||||||
|
"Streaming",
|
||||||
|
"File",
|
||||||
|
"HTTP"
|
||||||
|
],
|
||||||
|
"mapping": [
|
||||||
|
{
|
||||||
|
"data": "@Parent",
|
||||||
|
"type": "uci_sec",
|
||||||
|
"key": "protocol"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"EncodingType": {
|
||||||
|
"type": "string",
|
||||||
|
"read": true,
|
||||||
|
"write": true,
|
||||||
|
"protocols": [
|
||||||
|
"cwmp",
|
||||||
|
"usp"
|
||||||
|
],
|
||||||
|
"datatype": "string",
|
||||||
|
"enumerations": [
|
||||||
|
"XML",
|
||||||
|
"XDR",
|
||||||
|
"CSV",
|
||||||
|
"JSON"
|
||||||
|
],
|
||||||
|
"mapping": [
|
||||||
|
{
|
||||||
|
"data": "@Parent",
|
||||||
|
"type": "uci_sec",
|
||||||
|
"key": "encoding_type"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"ReportingInterval": {
|
||||||
|
"type": "unsignedInt",
|
||||||
|
"read": true,
|
||||||
|
"write": true,
|
||||||
|
"protocols": [
|
||||||
|
"cwmp",
|
||||||
|
"usp"
|
||||||
|
],
|
||||||
|
"datatype": "unsignedInt",
|
||||||
|
"range": [
|
||||||
|
{
|
||||||
|
"min": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"unit": "seconds",
|
||||||
|
"mapping": [
|
||||||
|
{
|
||||||
|
"data": "@Parent",
|
||||||
|
"type": "uci_sec",
|
||||||
|
"key": "reporting_interval"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"TimeReference": {
|
||||||
|
"type": "dateTime",
|
||||||
|
"read": true,
|
||||||
|
"write": true,
|
||||||
|
"protocols": [
|
||||||
|
"cwmp",
|
||||||
|
"usp"
|
||||||
|
],
|
||||||
|
"datatype": "dateTime",
|
||||||
|
"mapping": [
|
||||||
|
{
|
||||||
|
"data": "@Parent",
|
||||||
|
"type": "uci_sec",
|
||||||
|
"key": "time_reference"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"ParameterNumberOfEntries": {
|
||||||
|
"type": "unsignedInt",
|
||||||
|
"read": true,
|
||||||
|
"write": false,
|
||||||
|
"protocols": [
|
||||||
|
"cwmp",
|
||||||
|
"usp"
|
||||||
|
],
|
||||||
|
"datatype": "unsignedInt",
|
||||||
|
"mapping": [
|
||||||
|
{
|
||||||
|
"type": "uci",
|
||||||
|
"uci": {
|
||||||
|
"file": "bulkdata",
|
||||||
|
"section": {
|
||||||
|
"type": "profile_parameter"
|
||||||
|
},
|
||||||
|
"option": {
|
||||||
|
"name": "@Count"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Device.BulkData.Profile.{i}.Parameter.{i}.": {
|
||||||
|
"type": "object",
|
||||||
|
"protocols": [
|
||||||
|
"cwmp",
|
||||||
|
"usp"
|
||||||
|
],
|
||||||
|
"access": true,
|
||||||
|
"array": true,
|
||||||
|
"mapping": [
|
||||||
|
{
|
||||||
|
"type": "uci",
|
||||||
|
"uci": {
|
||||||
|
"file": "bulkdata",
|
||||||
|
"section": {
|
||||||
|
"type": "profile_parameter"
|
||||||
|
},
|
||||||
|
"dmmapfile": "dmmap_bulkdata"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"Name": {
|
||||||
|
"type": "string",
|
||||||
|
"read": true,
|
||||||
|
"write": true,
|
||||||
|
"protocols": [
|
||||||
|
"cwmp",
|
||||||
|
"usp"
|
||||||
|
],
|
||||||
|
"datatype": "string",
|
||||||
|
"range": [
|
||||||
|
{
|
||||||
|
"max": 64
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"mapping": [
|
||||||
|
{
|
||||||
|
"data": "@Parent",
|
||||||
|
"type": "uci_sec",
|
||||||
|
"key": "name"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Reference": {
|
||||||
|
"type": "string",
|
||||||
|
"read": true,
|
||||||
|
"write": true,
|
||||||
|
"protocols": [
|
||||||
|
"cwmp",
|
||||||
|
"usp"
|
||||||
|
],
|
||||||
|
"datatype": "string",
|
||||||
|
"range": [
|
||||||
|
{
|
||||||
|
"max": 256
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"mapping": [
|
||||||
|
{
|
||||||
|
"data": "@Parent",
|
||||||
|
"type": "uci_sec",
|
||||||
|
"key": "reference"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Device.BulkData.Profile.{i}.CSVEncoding.": {
|
||||||
|
"type": "object",
|
||||||
|
"protocols": [
|
||||||
|
"cwmp",
|
||||||
|
"usp"
|
||||||
|
],
|
||||||
|
"access": false,
|
||||||
|
"array": false,
|
||||||
|
"FieldSeparator": {
|
||||||
|
"type": "string",
|
||||||
|
"read": true,
|
||||||
|
"write": true,
|
||||||
|
"protocols": [
|
||||||
|
"cwmp",
|
||||||
|
"usp"
|
||||||
|
],
|
||||||
|
"datatype": "string",
|
||||||
|
"mapping": [
|
||||||
|
{
|
||||||
|
"data": "@Parent",
|
||||||
|
"type": "uci_sec",
|
||||||
|
"key": "csv_encoding_field_separator"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"RowSeparator": {
|
||||||
|
"type": "string",
|
||||||
|
"read": true,
|
||||||
|
"write": true,
|
||||||
|
"protocols": [
|
||||||
|
"cwmp",
|
||||||
|
"usp"
|
||||||
|
],
|
||||||
|
"datatype": "string",
|
||||||
|
"mapping": [
|
||||||
|
{
|
||||||
|
"data": "@Parent",
|
||||||
|
"type": "uci_sec",
|
||||||
|
"key": "csv_encoding_row_separator"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"EscapeCharacter": {
|
||||||
|
"type": "string",
|
||||||
|
"read": true,
|
||||||
|
"write": true,
|
||||||
|
"protocols": [
|
||||||
|
"cwmp",
|
||||||
|
"usp"
|
||||||
|
],
|
||||||
|
"datatype": "string",
|
||||||
|
"mapping": [
|
||||||
|
{
|
||||||
|
"data": "@Parent",
|
||||||
|
"type": "uci_sec",
|
||||||
|
"key": "csv_encoding_escape_character"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"ReportFormat": {
|
||||||
|
"type": "string",
|
||||||
|
"read": true,
|
||||||
|
"write": true,
|
||||||
|
"protocols": [
|
||||||
|
"cwmp",
|
||||||
|
"usp"
|
||||||
|
],
|
||||||
|
"datatype": "string",
|
||||||
|
"enumerations": [
|
||||||
|
"ParameterPerRow",
|
||||||
|
"ParameterPerColumn"
|
||||||
|
],
|
||||||
|
"mapping": [
|
||||||
|
{
|
||||||
|
"data": "@Parent",
|
||||||
|
"type": "uci_sec",
|
||||||
|
"key": "csv_encoding_report_format"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"RowTimestamp": {
|
||||||
|
"type": "string",
|
||||||
|
"read": true,
|
||||||
|
"write": true,
|
||||||
|
"protocols": [
|
||||||
|
"cwmp",
|
||||||
|
"usp"
|
||||||
|
],
|
||||||
|
"datatype": "string",
|
||||||
|
"enumerations": [
|
||||||
|
"Unix-Epoch",
|
||||||
|
"ISO-8601",
|
||||||
|
"None"
|
||||||
|
],
|
||||||
|
"mapping": [
|
||||||
|
{
|
||||||
|
"data": "@Parent",
|
||||||
|
"type": "uci_sec",
|
||||||
|
"key": "csv_encoding_row_time_stamp"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Device.BulkData.Profile.{i}.JSONEncoding.": {
|
||||||
|
"type": "object",
|
||||||
|
"protocols": [
|
||||||
|
"cwmp",
|
||||||
|
"usp"
|
||||||
|
],
|
||||||
|
"access": false,
|
||||||
|
"array": false,
|
||||||
|
"ReportFormat": {
|
||||||
|
"type": "string",
|
||||||
|
"read": true,
|
||||||
|
"write": true,
|
||||||
|
"protocols": [
|
||||||
|
"cwmp",
|
||||||
|
"usp"
|
||||||
|
],
|
||||||
|
"datatype": "string",
|
||||||
|
"enumerations": [
|
||||||
|
"ObjectHierarchy",
|
||||||
|
"NameValuePair"
|
||||||
|
],
|
||||||
|
"mapping": [
|
||||||
|
{
|
||||||
|
"data": "@Parent",
|
||||||
|
"type": "uci_sec",
|
||||||
|
"key": "json_encoding_report_format"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"ReportTimestamp": {
|
||||||
|
"type": "string",
|
||||||
|
"read": true,
|
||||||
|
"write": true,
|
||||||
|
"protocols": [
|
||||||
|
"cwmp",
|
||||||
|
"usp"
|
||||||
|
],
|
||||||
|
"datatype": "string",
|
||||||
|
"enumerations": [
|
||||||
|
"Unix-Epoch",
|
||||||
|
"ISO-8601",
|
||||||
|
"None"
|
||||||
|
],
|
||||||
|
"mapping": [
|
||||||
|
{
|
||||||
|
"data": "@Parent",
|
||||||
|
"type": "uci_sec",
|
||||||
|
"key": "json_encoding_report_time_stamp"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Device.BulkData.Profile.{i}.HTTP.": {
|
||||||
|
"type": "object",
|
||||||
|
"protocols": [
|
||||||
|
"cwmp",
|
||||||
|
"usp"
|
||||||
|
],
|
||||||
|
"access": false,
|
||||||
|
"array": false,
|
||||||
|
"URL": {
|
||||||
|
"type": "string",
|
||||||
|
"read": true,
|
||||||
|
"write": true,
|
||||||
|
"protocols": [
|
||||||
|
"cwmp",
|
||||||
|
"usp"
|
||||||
|
],
|
||||||
|
"datatype": "URL",
|
||||||
|
"range": [
|
||||||
|
{
|
||||||
|
"max": 2048
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"mapping": [
|
||||||
|
{
|
||||||
|
"data": "@Parent",
|
||||||
|
"type": "uci_sec",
|
||||||
|
"key": "http_url"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Username": {
|
||||||
|
"type": "string",
|
||||||
|
"read": true,
|
||||||
|
"write": true,
|
||||||
|
"protocols": [
|
||||||
|
"cwmp",
|
||||||
|
"usp"
|
||||||
|
],
|
||||||
|
"datatype": "string",
|
||||||
|
"range": [
|
||||||
|
{
|
||||||
|
"max": 256
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"mapping": [
|
||||||
|
{
|
||||||
|
"data": "@Parent",
|
||||||
|
"type": "uci_sec",
|
||||||
|
"key": "http_username"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Password": {
|
||||||
|
"type": "string",
|
||||||
|
"read": true,
|
||||||
|
"write": true,
|
||||||
|
"protocols": [
|
||||||
|
"cwmp",
|
||||||
|
"usp"
|
||||||
|
],
|
||||||
|
"datatype": "string",
|
||||||
|
"range": [
|
||||||
|
{
|
||||||
|
"max": 256
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"flags": [
|
||||||
|
"Secure"
|
||||||
|
],
|
||||||
|
"mapping": [
|
||||||
|
{
|
||||||
|
"data": "@Parent",
|
||||||
|
"type": "uci_sec",
|
||||||
|
"key": "http_password"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"CompressionsSupported": {
|
||||||
|
"type": "string",
|
||||||
|
"read": true,
|
||||||
|
"write": false,
|
||||||
|
"protocols": [
|
||||||
|
"cwmp",
|
||||||
|
"usp"
|
||||||
|
],
|
||||||
|
"default": "GZIP",
|
||||||
|
"list": {
|
||||||
|
"datatype": "string",
|
||||||
|
"enumerations": [
|
||||||
|
"GZIP",
|
||||||
|
"Compress",
|
||||||
|
"Deflate"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Compression": {
|
||||||
|
"type": "string",
|
||||||
|
"read": true,
|
||||||
|
"write": true,
|
||||||
|
"protocols": [
|
||||||
|
"cwmp",
|
||||||
|
"usp"
|
||||||
|
],
|
||||||
|
"datatype": "string",
|
||||||
|
"enumerations": [
|
||||||
|
"GZIP",
|
||||||
|
"Compress",
|
||||||
|
"Deflate"
|
||||||
|
],
|
||||||
|
"mapping": [
|
||||||
|
{
|
||||||
|
"data": "@Parent",
|
||||||
|
"type": "uci_sec",
|
||||||
|
"key": "http_compression"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"MethodsSupported": {
|
||||||
|
"type": "string",
|
||||||
|
"read": true,
|
||||||
|
"write": false,
|
||||||
|
"protocols": [
|
||||||
|
"cwmp",
|
||||||
|
"usp"
|
||||||
|
],
|
||||||
|
"default": "POST,PUT",
|
||||||
|
"list": {
|
||||||
|
"datatype": "string",
|
||||||
|
"enumerations": [
|
||||||
|
"POST",
|
||||||
|
"PUT"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Method": {
|
||||||
|
"type": "string",
|
||||||
|
"read": true,
|
||||||
|
"write": true,
|
||||||
|
"protocols": [
|
||||||
|
"cwmp",
|
||||||
|
"usp"
|
||||||
|
],
|
||||||
|
"datatype": "string",
|
||||||
|
"enumerations": [
|
||||||
|
"POST",
|
||||||
|
"PUT"
|
||||||
|
],
|
||||||
|
"mapping": [
|
||||||
|
{
|
||||||
|
"data": "@Parent",
|
||||||
|
"type": "uci_sec",
|
||||||
|
"key": "http_method"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"UseDateHeader": {
|
||||||
|
"type": "boolean",
|
||||||
|
"read": true,
|
||||||
|
"write": true,
|
||||||
|
"protocols": [
|
||||||
|
"cwmp",
|
||||||
|
"usp"
|
||||||
|
],
|
||||||
|
"datatype": "boolean",
|
||||||
|
"mapping": [
|
||||||
|
{
|
||||||
|
"data": "@Parent",
|
||||||
|
"type": "uci_sec",
|
||||||
|
"key": "http_use_date_header"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"RetryEnable": {
|
||||||
|
"type": "boolean",
|
||||||
|
"read": true,
|
||||||
|
"write": true,
|
||||||
|
"protocols": [
|
||||||
|
"cwmp",
|
||||||
|
"usp"
|
||||||
|
],
|
||||||
|
"datatype": "boolean",
|
||||||
|
"mapping": [
|
||||||
|
{
|
||||||
|
"data": "@Parent",
|
||||||
|
"type": "uci_sec",
|
||||||
|
"key": "http_retry_enable"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"RetryMinimumWaitInterval": {
|
||||||
|
"type": "unsignedInt",
|
||||||
|
"read": true,
|
||||||
|
"write": true,
|
||||||
|
"protocols": [
|
||||||
|
"cwmp",
|
||||||
|
"usp"
|
||||||
|
],
|
||||||
|
"datatype": "unsignedInt",
|
||||||
|
"range": [
|
||||||
|
{
|
||||||
|
"min": 1,
|
||||||
|
"max": 65535
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"mapping": [
|
||||||
|
{
|
||||||
|
"data": "@Parent",
|
||||||
|
"type": "uci_sec",
|
||||||
|
"key": "http_retry_minimum_wait_interval"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"RetryIntervalMultiplier": {
|
||||||
|
"type": "unsignedInt",
|
||||||
|
"read": true,
|
||||||
|
"write": true,
|
||||||
|
"protocols": [
|
||||||
|
"cwmp",
|
||||||
|
"usp"
|
||||||
|
],
|
||||||
|
"datatype": "unsignedInt",
|
||||||
|
"range": [
|
||||||
|
{
|
||||||
|
"min": 1000,
|
||||||
|
"max": 65535
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"mapping": [
|
||||||
|
{
|
||||||
|
"data": "@Parent",
|
||||||
|
"type": "uci_sec",
|
||||||
|
"key": "http_retry_interval_multiplier"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"RequestURIParameterNumberOfEntries": {
|
||||||
|
"type": "unsignedInt",
|
||||||
|
"read": true,
|
||||||
|
"write": false,
|
||||||
|
"protocols": [
|
||||||
|
"cwmp",
|
||||||
|
"usp"
|
||||||
|
],
|
||||||
|
"datatype": "unsignedInt",
|
||||||
|
"mapping": [
|
||||||
|
{
|
||||||
|
"type": "uci",
|
||||||
|
"uci": {
|
||||||
|
"file": "bulkdata",
|
||||||
|
"section": {
|
||||||
|
"type": "profile_http_request_uri_parameter"
|
||||||
|
},
|
||||||
|
"option": {
|
||||||
|
"name": "@Count"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"PersistAcrossReboot": {
|
||||||
|
"type": "boolean",
|
||||||
|
"read": true,
|
||||||
|
"write": true,
|
||||||
|
"protocols": [
|
||||||
|
"cwmp",
|
||||||
|
"usp"
|
||||||
|
],
|
||||||
|
"datatype": "boolean",
|
||||||
|
"mapping": [
|
||||||
|
{
|
||||||
|
"data": "@Parent",
|
||||||
|
"type": "uci_sec",
|
||||||
|
"key": "http_persist_across_reboot"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Device.BulkData.Profile.{i}.HTTP.RequestURIParameter.{i}.": {
|
||||||
|
"type": "object",
|
||||||
|
"protocols": [
|
||||||
|
"cwmp",
|
||||||
|
"usp"
|
||||||
|
],
|
||||||
|
"access": true,
|
||||||
|
"array": true,
|
||||||
|
"mapping": [
|
||||||
|
{
|
||||||
|
"type": "uci",
|
||||||
|
"uci": {
|
||||||
|
"file": "bulkdata",
|
||||||
|
"section": {
|
||||||
|
"type": "profile_http_request_uri_parameter"
|
||||||
|
},
|
||||||
|
"dmmapfile": "dmmap_bulkdata"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"Name": {
|
||||||
|
"type": "string",
|
||||||
|
"read": true,
|
||||||
|
"write": true,
|
||||||
|
"protocols": [
|
||||||
|
"cwmp",
|
||||||
|
"usp"
|
||||||
|
],
|
||||||
|
"datatype": "string",
|
||||||
|
"range": [
|
||||||
|
{
|
||||||
|
"max": 64
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"mapping": [
|
||||||
|
{
|
||||||
|
"data": "@Parent",
|
||||||
|
"type": "uci_sec",
|
||||||
|
"key": "name"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Reference": {
|
||||||
|
"type": "string",
|
||||||
|
"read": true,
|
||||||
|
"write": true,
|
||||||
|
"protocols": [
|
||||||
|
"cwmp",
|
||||||
|
"usp"
|
||||||
|
],
|
||||||
|
"datatype": "string",
|
||||||
|
"range": [
|
||||||
|
{
|
||||||
|
"max": 256
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"mapping": [
|
||||||
|
{
|
||||||
|
"data": "@Parent",
|
||||||
|
"type": "uci_sec",
|
||||||
|
"key": "reference"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -7,24 +7,25 @@ USE_PROCD=1
|
|||||||
PROG="/usr/sbin/bulkdatad"
|
PROG="/usr/sbin/bulkdatad"
|
||||||
|
|
||||||
start_service() {
|
start_service() {
|
||||||
|
local enable
|
||||||
|
|
||||||
|
config_load bulkdata
|
||||||
|
config_get_bool enable bulkdata enable 1
|
||||||
|
|
||||||
|
[ "$enable" -eq "1" ] && {
|
||||||
procd_open_instance "bulkdata"
|
procd_open_instance "bulkdata"
|
||||||
procd_set_param command "$PROG"
|
procd_set_param command "$PROG"
|
||||||
procd_set_param respawn
|
procd_set_param respawn
|
||||||
procd_close_instance "bulkdata"
|
procd_close_instance "bulkdata"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
reload_service() {
|
reload_service() {
|
||||||
ret=$(ubus call service list '{"name":"bulkdatad"}' | jsonfilter -qe '@.bulkdatad.instances.bulkdata.running')
|
|
||||||
if [ "$ret" != "true" ]; then
|
|
||||||
stop
|
stop
|
||||||
start
|
start
|
||||||
else
|
|
||||||
ubus send bulkdata.reload
|
|
||||||
fi
|
|
||||||
|
|
||||||
return 0
|
|
||||||
}
|
}
|
||||||
|
|
||||||
service_triggers() {
|
service_triggers()
|
||||||
|
{
|
||||||
procd_add_reload_trigger bulkdata
|
procd_add_reload_trigger bulkdata
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,75 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
. /lib/functions.sh
|
||||||
|
|
||||||
|
PROFILE_COUNT=1
|
||||||
|
|
||||||
|
get_next_count()
|
||||||
|
{
|
||||||
|
local config="$1"
|
||||||
|
local default_name="${2}"
|
||||||
|
local count=${3}
|
||||||
|
local found=0
|
||||||
|
|
||||||
|
if [ -z "$count" ]; then
|
||||||
|
count=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
while [ "${found}" -ne 1 ]; do
|
||||||
|
uci -q get "${config}"."${default_name}"_${count} >/dev/null
|
||||||
|
if [ "$?" -eq 0 ]; then
|
||||||
|
count=$((count + 1))
|
||||||
|
else
|
||||||
|
found=1;
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "${default_name}_${count}"
|
||||||
|
}
|
||||||
|
|
||||||
|
translate_profile_id_to_profile_name() {
|
||||||
|
local section="${1}"
|
||||||
|
local profile_id="${2}"
|
||||||
|
local profile_name="${3}"
|
||||||
|
local curr_profile_id
|
||||||
|
|
||||||
|
config_get curr_profile_id "${section}" profile_id
|
||||||
|
|
||||||
|
[ -n "${curr_profile_id}" ] || return
|
||||||
|
|
||||||
|
[ "${curr_profile_id}" != "${profile_id}" ] && return
|
||||||
|
|
||||||
|
uci -q set bulkdata."${section}".profile_name="${profile_name}"
|
||||||
|
uci -q set bulkdata."${section}".profile_id=""
|
||||||
|
}
|
||||||
|
|
||||||
|
update_profile_sections() {
|
||||||
|
local section="${1}"
|
||||||
|
local default="${2}"
|
||||||
|
local profile_name
|
||||||
|
|
||||||
|
config_get profile_id "${section}" profile_id
|
||||||
|
|
||||||
|
[ -n "${profile_id}" ] || return
|
||||||
|
|
||||||
|
case "${section}" in
|
||||||
|
"cfg"*)
|
||||||
|
profile_name="$(get_next_count bulkdata "${default}" ${PROFILE_COUNT})"
|
||||||
|
uci_rename bulkdata "${section}" "${profile_name}"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
PROFILE_COUNT=$((PROFILE_COUNT + 1))
|
||||||
|
|
||||||
|
[ -n "$profile_name" ] && section="${profile_name}"
|
||||||
|
|
||||||
|
uci -q set bulkdata."${section}".profile_id=""
|
||||||
|
|
||||||
|
config_foreach translate_profile_id_to_profile_name profile_parameter "${profile_id}" "${profile_name}"
|
||||||
|
config_foreach translate_profile_id_to_profile_name profile_http_request_uri_parameter "${profile_id}" "${profile_name}"
|
||||||
|
}
|
||||||
|
|
||||||
|
config_load bulkdata
|
||||||
|
config_foreach update_profile_sections profile profile
|
||||||
|
uci commit bulkdata
|
||||||
|
|
||||||
|
exit 0
|
||||||
@@ -5,13 +5,13 @@
|
|||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=ddnsmngr
|
PKG_NAME:=ddnsmngr
|
||||||
PKG_VERSION:=1.0.9
|
PKG_VERSION:=1.0.5
|
||||||
|
|
||||||
LOCAL_DEV:=0
|
LOCAL_DEV:=0
|
||||||
ifneq ($(LOCAL_DEV),1)
|
ifneq ($(LOCAL_DEV),1)
|
||||||
PKG_SOURCE_PROTO:=git
|
PKG_SOURCE_PROTO:=git
|
||||||
PKG_SOURCE_URL:=https://dev.iopsys.eu/network/ddnsmngr.git
|
PKG_SOURCE_URL:=https://dev.iopsys.eu/network/ddnsmngr.git
|
||||||
PKG_SOURCE_VERSION:=5144e73fad92d23ae706894a4357436c3fe89355
|
PKG_SOURCE_VERSION:=f3c818322747922035a9eafe5de05d148ce15b4b
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
|
||||||
PKG_MIRROR_HASH:=skip
|
PKG_MIRROR_HASH:=skip
|
||||||
endif
|
endif
|
||||||
@@ -28,8 +28,7 @@ define Package/$(PKG_NAME)
|
|||||||
CATEGORY:=Utilities
|
CATEGORY:=Utilities
|
||||||
SUBMENU:=TRx69
|
SUBMENU:=TRx69
|
||||||
TITLE:=Dynamic DNS manager
|
TITLE:=Dynamic DNS manager
|
||||||
DEPENDS:=+DDNSMNGR_BACKEND_DDNSSCRIPT:ddns-scripts +DDNSMNGR_BACKEND_INADYN:inadyn
|
DEPENDS:=+libbbfdm-api +DDNSMNGR_BACKEND_DDNSSCRIPT:ddns-scripts +DDNSMNGR_BACKEND_INADYN:inadyn
|
||||||
DEPENDS+=+libbbfdm-api +libbbfdm-ubus +dm-service
|
|
||||||
MENU:=1
|
MENU:=1
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
|||||||
@@ -5,12 +5,12 @@
|
|||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=decollector
|
PKG_NAME:=decollector
|
||||||
PKG_VERSION:=6.1.0.3
|
PKG_VERSION:=6.0.0.9
|
||||||
|
|
||||||
LOCAL_DEV=0
|
LOCAL_DEV=0
|
||||||
ifneq ($(LOCAL_DEV),1)
|
ifneq ($(LOCAL_DEV),1)
|
||||||
PKG_SOURCE_PROTO:=git
|
PKG_SOURCE_PROTO:=git
|
||||||
PKG_SOURCE_VERSION:=005a48c7a40c3fcf89d031fda0e109a25431b20e
|
PKG_SOURCE_VERSION:=08cd179438b8085c19e7d7523c9b26adfcb93129
|
||||||
PKG_SOURCE_URL:=https://dev.iopsys.eu/multi-ap/decollector.git
|
PKG_SOURCE_URL:=https://dev.iopsys.eu/multi-ap/decollector.git
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_VERSION).tar.gz
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_VERSION).tar.gz
|
||||||
PKG_MIRROR_HASH:=skip
|
PKG_MIRROR_HASH:=skip
|
||||||
|
|||||||
@@ -2,13 +2,13 @@ include $(TOPDIR)/rules.mk
|
|||||||
|
|
||||||
PKG_NAME:=dectmngr
|
PKG_NAME:=dectmngr
|
||||||
PKG_RELEASE:=3
|
PKG_RELEASE:=3
|
||||||
PKG_VERSION:=3.7.1
|
PKG_VERSION:=3.6.6
|
||||||
|
|
||||||
LOCAL_DEV=0
|
LOCAL_DEV=0
|
||||||
ifneq ($(LOCAL_DEV),1)
|
ifneq ($(LOCAL_DEV),1)
|
||||||
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/dectmngr.git
|
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/dectmngr.git
|
||||||
PKG_SOURCE_PROTO:=git
|
PKG_SOURCE_PROTO:=git
|
||||||
PKG_SOURCE_VERSION:=daf66f6f2098a343fefb304e7ce9440f55ea1cd1
|
PKG_SOURCE_VERSION:=85c173d1fac535726b2e750be8c282b74fb7dbca
|
||||||
PKG_MIRROR_HASH:=skip
|
PKG_MIRROR_HASH:=skip
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@@ -28,7 +28,7 @@ include $(INCLUDE_DIR)/package.mk
|
|||||||
define Package/$(PKG_NAME)
|
define Package/$(PKG_NAME)
|
||||||
CATEGORY:=Utilities
|
CATEGORY:=Utilities
|
||||||
TITLE:=DECT Manager
|
TITLE:=DECT Manager
|
||||||
DEPENDS:= +libubox +ubus +uci +libxml2 +libjson-c +gpiod-tools +voicemngr
|
DEPENDS:= +libubox +ubus +uci +libxml2 +libjson-c +gpiod-tools
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/$(PKG_NAME)/description
|
define Package/$(PKG_NAME)/description
|
||||||
|
|||||||
@@ -5,13 +5,13 @@
|
|||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=dhcpmngr
|
PKG_NAME:=dhcpmngr
|
||||||
PKG_VERSION:=1.0.4
|
PKG_VERSION:=1.0.1
|
||||||
|
|
||||||
LOCAL_DEV:=0
|
LOCAL_DEV:=0
|
||||||
ifneq ($(LOCAL_DEV),1)
|
ifneq ($(LOCAL_DEV),1)
|
||||||
PKG_SOURCE_PROTO:=git
|
PKG_SOURCE_PROTO:=git
|
||||||
PKG_SOURCE_URL:=https://dev.iopsys.eu/network/dhcpmngr.git
|
PKG_SOURCE_URL:=https://dev.iopsys.eu/network/dhcpmngr.git
|
||||||
PKG_SOURCE_VERSION:=2a517188211849bcc324a9f9727eeb34d076c032
|
PKG_SOURCE_VERSION:=d15d21766c1a1e5054b2391de1cfc4708be7a14c
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
|
||||||
PKG_MIRROR_HASH:=skip
|
PKG_MIRROR_HASH:=skip
|
||||||
endif
|
endif
|
||||||
@@ -28,10 +28,7 @@ define Package/dhcpmngr
|
|||||||
SECTION:=net
|
SECTION:=net
|
||||||
CATEGORY:=Network
|
CATEGORY:=Network
|
||||||
TITLE:=Package to add Device.DHCPv4 and v6 data model support.
|
TITLE:=Package to add Device.DHCPv4 and v6 data model support.
|
||||||
DEPENDS:=+libuci +libubox +libubus +libblobmsg-json +libjson-c +odhcpd
|
DEPENDS:=+libuci +libubox +libubus +libblobmsg-json +libjson-c +libbbfdm-api +dnsmasq
|
||||||
DEPENDS+=+libbbfdm-api +libbbfdm-ubus +dm-service
|
|
||||||
DEPENDS+=+DNSMNGR_DNS_SD:umdns
|
|
||||||
DEPENDS+=+DNSMNGR_BACKEND_DNSMASQ:dnsmasq
|
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/dhcpmngr/description
|
define Package/dhcpmngr/description
|
||||||
@@ -47,10 +44,6 @@ endif
|
|||||||
define Package/dhcpmngr/install
|
define Package/dhcpmngr/install
|
||||||
$(INSTALL_DIR) $(1)/etc/udhcpc.user.d
|
$(INSTALL_DIR) $(1)/etc/udhcpc.user.d
|
||||||
$(INSTALL_BIN) ./files/etc/udhcpc.user.d/udhcpc_lease_start_time.user $(1)/etc/udhcpc.user.d/udhcpc_lease_start_time.user
|
$(INSTALL_BIN) ./files/etc/udhcpc.user.d/udhcpc_lease_start_time.user $(1)/etc/udhcpc.user.d/udhcpc_lease_start_time.user
|
||||||
ifeq ($(CONFIG_DNSMNGR_BACKEND_UNBOUND),y)
|
|
||||||
$(INSTALL_DIR) $(1)/etc/uci-defaults
|
|
||||||
$(INSTALL_DATA) ./files/etc/uci-defaults/unbound.odhcpd.uci_default $(1)/etc/uci-defaults/16-set-unbound-as-odhcpd-leasetrigger
|
|
||||||
endif
|
|
||||||
$(BBFDM_INSTALL_MS_DM) $(PKG_BUILD_DIR)/src/libdhcpmngr.so $(1) $(PKG_NAME)
|
$(BBFDM_INSTALL_MS_DM) $(PKG_BUILD_DIR)/src/libdhcpmngr.so $(1) $(PKG_NAME)
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
|||||||
@@ -1,18 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
# update odhcpd uci to use unbound's script as leasetrigger
|
|
||||||
uci -q get dhcp.odhcpd >/dev/null 2>&1 && {
|
|
||||||
maindhcp="$(uci -q get dhcp.odhcpd.maindhcp)"
|
|
||||||
|
|
||||||
# if odhcpd is the main dhcp
|
|
||||||
[ "$maindhcp" = "1" ] || [ "$maindhcp" = "true" ] || [ "$maindhcp" = "on" ] && {
|
|
||||||
# if unbound daemon and unbound script file is present
|
|
||||||
[ -e /usr/lib/unbound/odhcpd.sh ] && [ -e /usr/sbin/unbound ] && {
|
|
||||||
# then set unbound script as leasetrigger in dhcp UCI
|
|
||||||
uci -q set dhcp.odhcpd.leasetrigger='/usr/lib/unbound/odhcpd.sh'
|
|
||||||
uci commit dhcp
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
exit 0
|
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
if PACKAGE_dnsmngr
|
|
||||||
|
|
||||||
menu "Configuration"
|
|
||||||
|
|
||||||
config DNSMNGR_DNS_SD
|
|
||||||
bool "Include Device.DNS.SD. TR-181 support"
|
|
||||||
default y
|
|
||||||
help
|
|
||||||
Set this option to include support for TR-181 DNS.SD. object.
|
|
||||||
|
|
||||||
choice
|
|
||||||
prompt "Select backend for DNS management"
|
|
||||||
default DNSMNGR_BACKEND_DNSMASQ
|
|
||||||
depends on PACKAGE_dnsmngr
|
|
||||||
help
|
|
||||||
Select which backend daemon to use for DNS
|
|
||||||
|
|
||||||
config DNSMNGR_BACKEND_DNSMASQ
|
|
||||||
bool "Use dnsmasq for dns and dhcp"
|
|
||||||
help
|
|
||||||
Enable this option to use dnsmasq + odhcpd for dns and dhcp.
|
|
||||||
|
|
||||||
config DNSMNGR_BACKEND_UNBOUND
|
|
||||||
bool "Use unbound with odhcpd-full for dns and dhcp"
|
|
||||||
help
|
|
||||||
Enable this option to use unbound + odhcpd for dns and dhcp.
|
|
||||||
|
|
||||||
endchoice
|
|
||||||
endmenu
|
|
||||||
endif
|
|
||||||
@@ -5,13 +5,13 @@
|
|||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=dnsmngr
|
PKG_NAME:=dnsmngr
|
||||||
PKG_VERSION:=1.0.12
|
PKG_VERSION:=1.0.6
|
||||||
|
|
||||||
LOCAL_DEV:=0
|
LOCAL_DEV:=0
|
||||||
ifneq ($(LOCAL_DEV),1)
|
ifneq ($(LOCAL_DEV),1)
|
||||||
PKG_SOURCE_PROTO:=git
|
PKG_SOURCE_PROTO:=git
|
||||||
PKG_SOURCE_URL:=https://dev.iopsys.eu/network/dnsmngr.git
|
PKG_SOURCE_URL:=https://dev.iopsys.eu/network/dnsmngr.git
|
||||||
PKG_SOURCE_VERSION:=fb49088ddb498980e2c91f03aea10bd502caeca1
|
PKG_SOURCE_VERSION:=03d8d79c1221adb92b5789c03e2489d26c6ae184
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
|
||||||
PKG_MIRROR_HASH:=skip
|
PKG_MIRROR_HASH:=skip
|
||||||
endif
|
endif
|
||||||
@@ -27,48 +27,23 @@ MAKE_PATH:=src
|
|||||||
define Package/dnsmngr
|
define Package/dnsmngr
|
||||||
SECTION:=net
|
SECTION:=net
|
||||||
CATEGORY:=Network
|
CATEGORY:=Network
|
||||||
DEPENDS:=+libuci +libubox +libubus +libblobmsg-json +libjson-c +odhcpd
|
DEPENDS:=+libuci +libubox +libubus +libblobmsg-json +libjson-c +libbbfdm-api +dnsmasq +umdns
|
||||||
DEPENDS+=+libbbfdm-api +libbbfdm-ubus +dm-service
|
TITLE:=Package to add Device.DNS. datamodel support
|
||||||
DEPENDS+=+DNSMNGR_DNS_SD:umdns
|
|
||||||
DEPENDS+=+DNSMNGR_BACKEND_DNSMASQ:dnsmasq
|
|
||||||
DEPENDS+=+DNSMNGR_BACKEND_UNBOUND:unbound-daemon +DNSMNGR_BACKEND_UNBOUND:unbound-control
|
|
||||||
TITLE:=Package to configure DNS backend and TR-181 support
|
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/dnsmngr/description
|
define Package/dnsmngr/description
|
||||||
Package to configure DNS backend and TR-181 support.
|
Package to add Device.DNS. datamodel support.
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/$(PKG_NAME)/config
|
|
||||||
source "$(SOURCE)/Config.in"
|
|
||||||
endef
|
|
||||||
|
|
||||||
ifeq ($(CONFIG_DNSMNGR_DNS_SD),y)
|
|
||||||
define Build/Compile
|
|
||||||
$(call Build/Compile/Default,all)
|
|
||||||
endef
|
|
||||||
else
|
|
||||||
define Build/Compile
|
|
||||||
$(call Build/Compile/Default,dns)
|
|
||||||
endef
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(LOCAL_DEV),1)
|
ifeq ($(LOCAL_DEV),1)
|
||||||
define Build/Prepare
|
define Build/Prepare
|
||||||
$(CP) -rf ~/git/dnsmngr/* $(PKG_BUILD_DIR)/
|
$(CP) -rf ~/git/dnsmngr/* $(PKG_BUILD_DIR)/
|
||||||
endef
|
endef
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(CONFIG_DNSMNGR_BACKEND_DNSMASQ),y)
|
|
||||||
TARGET_CFLAGS += -DDNSMASQ_BACKEND
|
|
||||||
endif
|
|
||||||
|
|
||||||
define Package/dnsmngr/install
|
define Package/dnsmngr/install
|
||||||
$(BBFDM_INSTALL_MS_DM) $(PKG_BUILD_DIR)/src/libdnsmngr.so $(1) $(PKG_NAME)
|
$(BBFDM_INSTALL_MS_DM) $(PKG_BUILD_DIR)/src/libdnsmngr.so $(1) $(PKG_NAME)
|
||||||
$(BBFDM_INSTALL_SCRIPT) -d $(PKG_BUILD_DIR)/scripts/nslookup $(1)
|
$(BBFDM_INSTALL_SCRIPT) -d $(PKG_BUILD_DIR)/scripts/nslookup $(1)
|
||||||
ifeq ($(CONFIG_DNSMNGR_DNS_SD),y)
|
|
||||||
$(BBFDM_INSTALL_MS_PLUGIN) $(PKG_BUILD_DIR)/src/libdns_sd.so $(1) $(PKG_NAME)
|
|
||||||
endif
|
|
||||||
endef
|
endef
|
||||||
|
|
||||||
$(eval $(call BuildPackage,dnsmngr))
|
$(eval $(call BuildPackage,dnsmngr))
|
||||||
|
|||||||
@@ -8,13 +8,13 @@
|
|||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=dslmngr
|
PKG_NAME:=dslmngr
|
||||||
PKG_VERSION:=1.2.8
|
PKG_VERSION:=1.2.4
|
||||||
|
|
||||||
LOCAL_DEV=0
|
LOCAL_DEV=0
|
||||||
ifneq ($(LOCAL_DEV),1)
|
ifneq ($(LOCAL_DEV),1)
|
||||||
PKG_SOURCE_PROTO:=git
|
PKG_SOURCE_PROTO:=git
|
||||||
PKG_SOURCE_URL:=https://dev.iopsys.eu/hal/dslmngr.git
|
PKG_SOURCE_URL:=https://dev.iopsys.eu/hal/dslmngr.git
|
||||||
PKG_SOURCE_VERSION:=5340cb31f759301f5aca3fd848fc3a63b0b4663f
|
PKG_SOURCE_VERSION:=d71bef278b8222dee1c278723f8264aa8faf5e40
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
|
||||||
PKG_MAINTAINER:=Rahul Thakur <rahul.thakur@iopsys.eu>
|
PKG_MAINTAINER:=Rahul Thakur <rahul.thakur@iopsys.eu>
|
||||||
PKG_MIRROR_HASH:=skip
|
PKG_MIRROR_HASH:=skip
|
||||||
@@ -40,8 +40,7 @@ define Package/dslmngr
|
|||||||
SECTION:=utils
|
SECTION:=utils
|
||||||
CATEGORY:=Utilities
|
CATEGORY:=Utilities
|
||||||
TITLE:=XDSL status and configration utility
|
TITLE:=XDSL status and configration utility
|
||||||
DEPENDS:=+libdsl +libuci +libubox +ubus +libpthread +libnl-genl +libeasy
|
DEPENDS:=+libdsl +libuci +libubox +ubus +libpthread +libnl-genl +libeasy +libbbfdm-api
|
||||||
DEPENDS+=+libbbfdm-api +libbbfdm-ubus +dm-service
|
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/dslmngr/description
|
define Package/dslmngr/description
|
||||||
|
|||||||
47
easy-qos/Makefile
Normal file
47
easy-qos/Makefile
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
#
|
||||||
|
# Copyright (C) 2019 iopsys Software Solutions AB
|
||||||
|
#
|
||||||
|
# This is free software, licensed under the GNU General Public License v2.
|
||||||
|
#
|
||||||
|
|
||||||
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
|
PKG_NAME:=easy-qos
|
||||||
|
PKG_VERSION:=1.1
|
||||||
|
PKG_RELEASE:=0
|
||||||
|
|
||||||
|
PKG_LICENSE:=GPLv2
|
||||||
|
PKG_LICENSE_FILES:=none
|
||||||
|
|
||||||
|
include $(INCLUDE_DIR)/package.mk
|
||||||
|
|
||||||
|
define Package/easy-qos
|
||||||
|
SECTION:=net
|
||||||
|
CATEGORY:=Network
|
||||||
|
TITLE:=Easy QoS
|
||||||
|
DEPENDS:=@(TARGET_brcmbca||TARGET_airoha)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/easy-qos/description
|
||||||
|
This package contains Easy QoS utility
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Build/Prepare
|
||||||
|
mkdir -p $(PKG_BUILD_DIR)
|
||||||
|
$(CP) ./files/* $(PKG_BUILD_DIR)/
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Build/Compile
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/easy-qos/install
|
||||||
|
$(INSTALL_DIR) $(1)/etc/config
|
||||||
|
$(INSTALL_DIR) $(1)/etc/init.d
|
||||||
|
$(INSTALL_DIR) $(1)/etc/uci-defaults
|
||||||
|
$(CP) ./files/etc/config/easy_qos $(1)/etc/config/
|
||||||
|
$(CP) ./files/etc/init.d/easy_qos.iptables $(1)/etc/init.d/easy_qos
|
||||||
|
$(CP) ./files/etc/uci-defaults/* $(1)/etc/uci-defaults/
|
||||||
|
$(CP) ./files/etc/firewall.easyqos $(1)/etc/firewall.easyqos
|
||||||
|
endef
|
||||||
|
|
||||||
|
$(eval $(call BuildPackage,easy-qos))
|
||||||
0
easy-qos/files/etc/config/easy_qos
Normal file
0
easy-qos/files/etc/config/easy_qos
Normal file
1
easy-qos/files/etc/firewall.easyqos
Normal file
1
easy-qos/files/etc/firewall.easyqos
Normal file
@@ -0,0 +1 @@
|
|||||||
|
/etc/init.d/easy_qos reload
|
||||||
140
easy-qos/files/etc/init.d/easy_qos.ebtables
Executable file
140
easy-qos/files/etc/init.d/easy_qos.ebtables
Executable file
@@ -0,0 +1,140 @@
|
|||||||
|
#!/bin/sh /etc/rc.common
|
||||||
|
|
||||||
|
START=99
|
||||||
|
USE_PROCD=1
|
||||||
|
|
||||||
|
log() {
|
||||||
|
echo "${@}"|logger -t easy_qos.ebtable -p debug
|
||||||
|
}
|
||||||
|
|
||||||
|
exec_log() {
|
||||||
|
${@}
|
||||||
|
if [ "${?}" -ne 0 ]; then
|
||||||
|
log "Failed to create ${@}";
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
get_priority() {
|
||||||
|
local prio=$(echo $1|tr 'A-Z' 'a-z');
|
||||||
|
case "${prio}" in
|
||||||
|
"lowest")
|
||||||
|
echo 0;;
|
||||||
|
"low")
|
||||||
|
echo 1;;
|
||||||
|
"besteffort")
|
||||||
|
echo 2;;
|
||||||
|
"normal")
|
||||||
|
echo 3;;
|
||||||
|
"video")
|
||||||
|
echo 4;;
|
||||||
|
"medium")
|
||||||
|
echo 5;;
|
||||||
|
"high")
|
||||||
|
echo 6;;
|
||||||
|
"highest")
|
||||||
|
echo 7;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
validate_rule_section()
|
||||||
|
{
|
||||||
|
uci_validate_section easy_qos rule "${1}" \
|
||||||
|
'priority:string' \
|
||||||
|
'macaddr:string' \
|
||||||
|
'proto:string:none' \
|
||||||
|
'port:list(uinteger)' \
|
||||||
|
'comment:string:none'
|
||||||
|
}
|
||||||
|
|
||||||
|
# Clear existing rules before applying new rules
|
||||||
|
clear_existing_rules() {
|
||||||
|
local rule=$(ebtables --concurrent -t broute -L BROUTING|grep -m 1 mark)
|
||||||
|
while [ -n "${rule}" ]; do
|
||||||
|
exec_log ebtables --concurrent -t broute -D BROUTING ${rule}
|
||||||
|
rule=$(ebtables --concurrent -t broute -L BROUTING|grep -m 1 mark)
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
create_rule() {
|
||||||
|
local protocol=$1; shift
|
||||||
|
local mac=$1; shift
|
||||||
|
local mark="0x$1"; shift
|
||||||
|
local forward_port=$1;
|
||||||
|
local cmd="";
|
||||||
|
local protocol_number
|
||||||
|
|
||||||
|
cmd="-j mark --mark-or ${mark}";
|
||||||
|
if [ -n "${forward_port}" ]; then
|
||||||
|
cmd="--ip-destination-port ${forward_port} ${cmd}";
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "${protocol}" in
|
||||||
|
"tcp")
|
||||||
|
protocol_number=6;;
|
||||||
|
"udp")
|
||||||
|
protocol_number=17;;
|
||||||
|
"dccp")
|
||||||
|
protocol_number=33;;
|
||||||
|
"sctp")
|
||||||
|
protocol_number=132;;
|
||||||
|
*)
|
||||||
|
log "Protocol ${protocol} not supported in ebtables"
|
||||||
|
return;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
cmd="--ip-proto ${protocol_number} $cmd"
|
||||||
|
cmd="-p ip $cmd"
|
||||||
|
|
||||||
|
cmd="-s ${mac} $cmd"
|
||||||
|
exec_log ebtables --concurrent -t broute -A BROUTING ${cmd}
|
||||||
|
}
|
||||||
|
|
||||||
|
manage_rule() {
|
||||||
|
local cfg="$1"
|
||||||
|
local priority macaddr proto port comment prio_num protocol
|
||||||
|
|
||||||
|
validate_rule_section "${1}" || {
|
||||||
|
log "Validation of section failed"
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
protocol=$(echo ${proto}|tr 'A-Z' 'a-z')
|
||||||
|
prio_num=$(get_priority ${priority})
|
||||||
|
if [ -n "${macaddr}" -a -n "${prio_num}" ]; then
|
||||||
|
for p in ${port}; do
|
||||||
|
if [ "${protocol}" == "none" -o "${protocol}" == "tcpudp" ]; then
|
||||||
|
create_rule tcp ${macaddr} ${prio_num} ${p}
|
||||||
|
create_rule udp ${macaddr} ${prio_num} ${p}
|
||||||
|
else
|
||||||
|
create_rule ${protocol} ${macaddr} ${prio_num} ${p}
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
# Create rule for all ports if port is not mentioned in uci
|
||||||
|
if [ -z "${port}" ]; then
|
||||||
|
if [ "${protocol}" == "none" -o "${protocol}" == "tcpudp" ]; then
|
||||||
|
create_rule tcp ${macaddr} ${prio_num}
|
||||||
|
create_rule udp ${macaddr} ${prio_num}
|
||||||
|
else
|
||||||
|
create_rule ${protocol} ${macaddr} ${prio_num}
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
reload_service() {
|
||||||
|
# Do not apply rules if ebtables is not present in system
|
||||||
|
[ -x /usr/sbin/ebtables ] || return;
|
||||||
|
|
||||||
|
clear_existing_rules
|
||||||
|
config_load easy_qos
|
||||||
|
config_foreach manage_rule rule
|
||||||
|
}
|
||||||
|
|
||||||
|
start_service() {
|
||||||
|
reload_service
|
||||||
|
}
|
||||||
|
|
||||||
|
service_triggers() {
|
||||||
|
procd_add_reload_trigger "easy_qos"
|
||||||
|
}
|
||||||
|
|
||||||
186
easy-qos/files/etc/init.d/easy_qos.iptables
Executable file
186
easy-qos/files/etc/init.d/easy_qos.iptables
Executable file
@@ -0,0 +1,186 @@
|
|||||||
|
#!/bin/sh /etc/rc.common
|
||||||
|
|
||||||
|
. /usr/share/libubox/jshn.sh
|
||||||
|
|
||||||
|
START=99
|
||||||
|
USE_PROCD=1
|
||||||
|
|
||||||
|
CLIENT_LIST="/tmp/easy_qos_client.list"
|
||||||
|
|
||||||
|
log() {
|
||||||
|
echo "${@}"|logger -t easy_qos -p debug
|
||||||
|
}
|
||||||
|
|
||||||
|
exec_log() {
|
||||||
|
${@}
|
||||||
|
if [ "${?}" -ne 0 ]; then
|
||||||
|
log "Failed to create ${@}";
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
get_priority() {
|
||||||
|
local prio=$(echo $1|tr 'A-Z' 'a-z');
|
||||||
|
case "${prio}" in
|
||||||
|
"lowest")
|
||||||
|
echo 0;;
|
||||||
|
"low")
|
||||||
|
echo 1;;
|
||||||
|
"besteffort")
|
||||||
|
echo 2;;
|
||||||
|
"normal")
|
||||||
|
echo 3;;
|
||||||
|
"video")
|
||||||
|
echo 4;;
|
||||||
|
"medium")
|
||||||
|
echo 5;;
|
||||||
|
"high")
|
||||||
|
echo 6;;
|
||||||
|
"highest")
|
||||||
|
echo 7;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
clean_client_entries() {
|
||||||
|
[ -f ${CLIENT_LIST} ] && rm ${CLIENT_LIST}
|
||||||
|
}
|
||||||
|
|
||||||
|
map_client_entries() {
|
||||||
|
local clients ip mac host
|
||||||
|
|
||||||
|
json_load "$(ubus call router.network 'clients')"
|
||||||
|
json_get_keys keys
|
||||||
|
|
||||||
|
for key in ${keys};
|
||||||
|
do
|
||||||
|
json_select ${key}
|
||||||
|
json_get_vars ipaddr macaddr hostname
|
||||||
|
clients="${macaddr} ${ipaddr} ${hostname};${clients}"
|
||||||
|
json_select ..
|
||||||
|
done
|
||||||
|
|
||||||
|
json_init
|
||||||
|
|
||||||
|
# json_add_array "clients"
|
||||||
|
IFS=";"
|
||||||
|
for client in ${clients};
|
||||||
|
do
|
||||||
|
macaddr=$(echo ${client} | cut -d" " -f1)
|
||||||
|
json_add_object "${macaddr//:/_}"
|
||||||
|
json_add_string "ip" "$(echo ${client} | cut -d" " -f2)"
|
||||||
|
json_add_string "macaddr" "$(echo ${client} | cut -d" " -f1)"
|
||||||
|
json_add_string "host" "$(echo ${client} | cut -d" " -f3)"
|
||||||
|
json_close_object
|
||||||
|
done
|
||||||
|
|
||||||
|
IFS=' '
|
||||||
|
echo `json_dump` > ${CLIENT_LIST}
|
||||||
|
json_cleanup
|
||||||
|
}
|
||||||
|
|
||||||
|
# Find the IP of a corresponding mac from arp table
|
||||||
|
get_ipaddress() {
|
||||||
|
local clients ip mac host
|
||||||
|
|
||||||
|
json_load "$(cat ${CLIENT_LIST})"
|
||||||
|
json_get_keys keys
|
||||||
|
|
||||||
|
# jshn seems a bit iffy on having : in key, replace by _
|
||||||
|
json_select "${1//:/_}" 2 > /dev/null
|
||||||
|
json_get_var ip ip
|
||||||
|
|
||||||
|
echo "$ip"
|
||||||
|
}
|
||||||
|
|
||||||
|
validate_rule_section()
|
||||||
|
{
|
||||||
|
uci_validate_section easy_qos rule "${1}" \
|
||||||
|
'priority:string' \
|
||||||
|
'macaddr:string' \
|
||||||
|
'proto:string:none' \
|
||||||
|
'port:list(uinteger)' \
|
||||||
|
'comment:string:none'
|
||||||
|
}
|
||||||
|
|
||||||
|
# Clear existing rules before applying new rules
|
||||||
|
clear_existing_rules() {
|
||||||
|
local rule=$(iptables -t mangle -S PREROUTING | grep -m 1 MARK |sed 's/-A/-D/1')
|
||||||
|
while [ -n "${rule}" ]; do
|
||||||
|
exec_log iptables -t mangle ${rule}
|
||||||
|
rule=$(iptables -t mangle -S PREROUTING | grep -m 1 MARK |sed 's/-A/-D/1')
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
check_and_create() {
|
||||||
|
iptables -t mangle -C PREROUTING ${@} 2>/dev/null
|
||||||
|
# Create rule if not exists
|
||||||
|
if [ ${?} -ne 0 ]; then
|
||||||
|
exec_log iptables -t mangle -A PREROUTING ${@}
|
||||||
|
else
|
||||||
|
log "Rule exists for ${@}"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
create_rule() {
|
||||||
|
local proto=$1; shift
|
||||||
|
local src_ip=$1; shift
|
||||||
|
local mark="0x$1/0x$1"; shift
|
||||||
|
local ports=$1;
|
||||||
|
local cmd="";
|
||||||
|
|
||||||
|
cmd="-j MARK --set-xmark ${mark}";
|
||||||
|
if [ -n "${ports}" ]; then
|
||||||
|
cmd="--match multiport --dports ${ports} ${cmd}";
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "${proto}" == "icmp" ]; then
|
||||||
|
cmd="-p icmp -m icmp --icmp-type 8 $cmd"
|
||||||
|
elif [ "${proto}" == "all" ]; then
|
||||||
|
cmd="-p all $cmd"
|
||||||
|
else
|
||||||
|
cmd="-p ${proto} -m ${proto} $cmd"
|
||||||
|
fi
|
||||||
|
cmd="-s ${src_ip} $cmd"
|
||||||
|
|
||||||
|
check_and_create ${cmd}
|
||||||
|
}
|
||||||
|
|
||||||
|
manage_rule() {
|
||||||
|
local cfg="$1"
|
||||||
|
local priority macaddr proto port comment prio_num ip port_list
|
||||||
|
|
||||||
|
validate_rule_section "${1}" || {
|
||||||
|
log "Validation of section failed"
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
prio_num=$(get_priority ${priority})
|
||||||
|
ip=$(get_ipaddress ${macaddr})
|
||||||
|
port_list=$(echo ${port}|sed 's/ /,/g')
|
||||||
|
|
||||||
|
if [ -n "${ip}" -a -n "${prio_num}" ]; then
|
||||||
|
if [ "${proto}" == "none" -o "${proto}" == "tcpudp" ]; then
|
||||||
|
create_rule tcp ${ip} ${prio_num} ${port_list}
|
||||||
|
create_rule udp ${ip} ${prio_num} ${port_list}
|
||||||
|
else
|
||||||
|
create_rule ${proto} ${ip} ${prio_num} ${port_list}
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
reload_service() {
|
||||||
|
clear_existing_rules
|
||||||
|
map_client_entries
|
||||||
|
config_load easy_qos
|
||||||
|
config_foreach manage_rule rule
|
||||||
|
clean_client_entries
|
||||||
|
}
|
||||||
|
|
||||||
|
start_service() {
|
||||||
|
reload_service
|
||||||
|
echo "Easy QoS installed">/dev/console;
|
||||||
|
}
|
||||||
|
|
||||||
|
service_triggers() {
|
||||||
|
procd_add_reload_trigger "easy_qos"
|
||||||
|
}
|
||||||
|
|
||||||
8
easy-qos/files/etc/uci-defaults/60-easyqos-reqs
Normal file
8
easy-qos/files/etc/uci-defaults/60-easyqos-reqs
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
# Add firewall include
|
||||||
|
uci -q batch <<-EOT
|
||||||
|
delete firewall.easyqos
|
||||||
|
set firewall.easyqos=include
|
||||||
|
set firewall.easyqos.path=/etc/firewall.easyqos
|
||||||
|
set firewall.easyqos.reload=1
|
||||||
|
commit firewall
|
||||||
|
EOT
|
||||||
@@ -6,13 +6,13 @@ include $(TOPDIR)/rules.mk
|
|||||||
include $(INCLUDE_DIR)/kernel.mk
|
include $(INCLUDE_DIR)/kernel.mk
|
||||||
|
|
||||||
PKG_NAME:=ebtables-extensions
|
PKG_NAME:=ebtables-extensions
|
||||||
PKG_VERSION:=1.0.4
|
PKG_VERSION:=1.0.2
|
||||||
PKG_LICENSE:=GPL-2.0
|
PKG_LICENSE:=GPL-2.0
|
||||||
|
|
||||||
LOCAL_DEV:=0
|
LOCAL_DEV:=0
|
||||||
ifneq ($(LOCAL_DEV),1)
|
ifneq ($(LOCAL_DEV),1)
|
||||||
PKG_SOURCE_PROTO:=git
|
PKG_SOURCE_PROTO:=git
|
||||||
PKG_SOURCE_VERSION:=35fb79f95c47d90e3791c7e126048b451f078f24
|
PKG_SOURCE_VERSION:=a23a70f5518a42d663156a156c1e3356f695b5ad
|
||||||
PKG_SOURCE_URL:=https://dev.iopsys.eu/network/ebtables-extensions.git
|
PKG_SOURCE_URL:=https://dev.iopsys.eu/network/ebtables-extensions.git
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
|
||||||
PKG_MIRROR_HASH:=skip
|
PKG_MIRROR_HASH:=skip
|
||||||
|
|||||||
@@ -5,13 +5,13 @@
|
|||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=ethmngr
|
PKG_NAME:=ethmngr
|
||||||
PKG_VERSION:=2.1.9
|
PKG_VERSION:=2.1.7
|
||||||
|
|
||||||
LOCAL_DEV:=0
|
LOCAL_DEV:=0
|
||||||
ifneq ($(LOCAL_DEV),1)
|
ifneq ($(LOCAL_DEV),1)
|
||||||
PKG_SOURCE_PROTO:=git
|
PKG_SOURCE_PROTO:=git
|
||||||
PKG_SOURCE_URL:=https://dev.iopsys.eu/hal/ethmngr.git
|
PKG_SOURCE_URL:=https://dev.iopsys.eu/hal/ethmngr.git
|
||||||
PKG_SOURCE_VERSION:=2d35e86cc8dfd7ef4e0d8579f5d314e90faadc90
|
PKG_SOURCE_VERSION:=d029ce86fe99b7896f096f68eda3f6caa000ee5f
|
||||||
PKG_MAINTAINER:=Rahul Thakur <rahul.thakur@iopsys.eu>
|
PKG_MAINTAINER:=Rahul Thakur <rahul.thakur@iopsys.eu>
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)_$(PKG_SOURCE_VERSION).tar.xz
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)_$(PKG_SOURCE_VERSION).tar.xz
|
||||||
PKG_MIRROR_HASH:=skip
|
PKG_MIRROR_HASH:=skip
|
||||||
@@ -27,8 +27,7 @@ define Package/ethmngr
|
|||||||
SECTION:=utils
|
SECTION:=utils
|
||||||
CATEGORY:=Utilities
|
CATEGORY:=Utilities
|
||||||
TITLE:=Ethernet status and configration utility
|
TITLE:=Ethernet status and configration utility
|
||||||
DEPENDS:=+(TARGET_brcmbca||TARGET_airoha||TARGET_ipq95xx||TARGET_ipq53xx||TARGET_mediatek):libethernet +libuci +libubox +ubus +libpthread +libnl-genl +libeasy
|
DEPENDS:=+(TARGET_brcmbca||TARGET_airoha||TARGET_ipq95xx||TARGET_ipq53xx||TARGET_mediatek):libethernet +libuci +libubox +ubus +libpthread +libnl-genl +libeasy +libbbfdm-api
|
||||||
DEPENDS+=+libbbfdm-api +libbbfdm-ubus +dm-service
|
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/ethmngr/description
|
define Package/ethmngr/description
|
||||||
|
|||||||
@@ -5,13 +5,13 @@
|
|||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=firewallmngr
|
PKG_NAME:=firewallmngr
|
||||||
PKG_VERSION:=1.0.6
|
PKG_VERSION:=1.0.1
|
||||||
|
|
||||||
LOCAL_DEV:=0
|
LOCAL_DEV:=0
|
||||||
ifneq ($(LOCAL_DEV),1)
|
ifneq ($(LOCAL_DEV),1)
|
||||||
PKG_SOURCE_PROTO:=git
|
PKG_SOURCE_PROTO:=git
|
||||||
PKG_SOURCE_URL:=https://dev.iopsys.eu/network/firewallmngr.git
|
PKG_SOURCE_URL:=https://dev.iopsys.eu/network/firewallmngr.git
|
||||||
PKG_SOURCE_VERSION:=2cac05871f7a8d93c144157c5f3f129deecf1a29
|
PKG_SOURCE_VERSION:=f5c3e2c93a8a992ab24291eb2c67adf77de7f896
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
|
||||||
PKG_MIRROR_HASH:=skip
|
PKG_MIRROR_HASH:=skip
|
||||||
endif
|
endif
|
||||||
@@ -28,10 +28,9 @@ define Package/firewallmngr
|
|||||||
SECTION:=net
|
SECTION:=net
|
||||||
CATEGORY:=Network
|
CATEGORY:=Network
|
||||||
TITLE:=Package to add Device.Firewall and Device.NAT. data model support.
|
TITLE:=Package to add Device.Firewall and Device.NAT. data model support.
|
||||||
DEPENDS:=+libuci +libubox +libubus +libblobmsg-json +libjson-c +firewall
|
DEPENDS:=+libuci +libubox +libubus +libblobmsg-json +libjson-c +libbbfdm-api +firewall
|
||||||
DEPENDS+=+FIREWALLMNGR_PORT_TRIGGER:kmod-ipt-trigger +FIREWALLMNGR_PORT_TRIGGER:kmod-ip6t-trigger
|
DEPENDS+=+FIREWALLMNGR_PORT_TRIGGER:kmod-ipt-trigger +FIREWALLMNGR_PORT_TRIGGER:kmod-ip6t-trigger
|
||||||
DEPENDS+=+FIREWALLMNGR_PORT_TRIGGER:iptables-mod-nfqueue
|
DEPENDS+=+FIREWALLMNGR_PORT_TRIGGER:iptables-mod-nfqueue
|
||||||
DEPENDS+=+libbbfdm-api +libbbfdm-ubus +dm-service
|
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/firewallmngr/description
|
define Package/firewallmngr/description
|
||||||
@@ -54,21 +53,15 @@ endif
|
|||||||
|
|
||||||
define Package/firewallmngr/install
|
define Package/firewallmngr/install
|
||||||
$(INSTALL_DIR) $(1)/etc/config
|
$(INSTALL_DIR) $(1)/etc/config
|
||||||
$(INSTALL_DIR) $(1)/etc/uci-defaults
|
|
||||||
ifeq ($(CONFIG_FIREWALLMNGR_PORT_TRIGGER),y)
|
ifeq ($(CONFIG_FIREWALLMNGR_PORT_TRIGGER),y)
|
||||||
$(INSTALL_DIR) $(1)/etc/init.d
|
$(INSTALL_DIR) $(1)/etc/init.d
|
||||||
|
$(INSTALL_DIR) $(1)/etc/config
|
||||||
$(INSTALL_DIR) $(1)/lib/port-trigger
|
$(INSTALL_DIR) $(1)/lib/port-trigger
|
||||||
|
|
||||||
$(INSTALL_BIN) ./files/port-trigger/etc/init.d/port-trigger $(1)/etc/init.d/
|
$(INSTALL_BIN) ./files/port-trigger/etc/init.d/port-trigger $(1)/etc/init.d/
|
||||||
$(INSTALL_DATA) ./files/port-trigger/etc/config/port-trigger $(1)/etc/config/
|
$(INSTALL_DATA) ./files/port-trigger/etc/config/port-trigger $(1)/etc/config/
|
||||||
$(INSTALL_DATA) ./files/port-trigger/lib/port-trigger/port_trigger.sh $(1)/lib/port-trigger/
|
$(INSTALL_DATA) ./files/port-trigger/lib/port-trigger/port_trigger.sh $(1)/lib/port-trigger/
|
||||||
endif
|
endif
|
||||||
$(INSTALL_BIN) ./files/firewall.portmap $(1)/etc/
|
|
||||||
$(INSTALL_DATA) ./files/etc/uci-defaults/95-portmap-firewall $(1)/etc/uci-defaults/
|
|
||||||
|
|
||||||
$(INSTALL_BIN) ./files/firewall.service $(1)/etc/
|
|
||||||
$(INSTALL_DATA) ./files/etc/uci-defaults/97-firewall-service $(1)/etc/uci-defaults/
|
|
||||||
|
|
||||||
$(BBFDM_INSTALL_MS_DM) $(PKG_BUILD_DIR)/src/libfirewallmngr.so $(1) $(PKG_NAME)
|
$(BBFDM_INSTALL_MS_DM) $(PKG_BUILD_DIR)/src/libfirewallmngr.so $(1) $(PKG_NAME)
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
|||||||
@@ -1,175 +0,0 @@
|
|||||||
#
|
|
||||||
# Copyright (C) 2024 IOPSYS
|
|
||||||
#
|
|
||||||
|
|
||||||
include $(TOPDIR)/rules.mk
|
|
||||||
|
|
||||||
PKG_NAME:=fluent-bit
|
|
||||||
PKG_VERSION:=3.1.0
|
|
||||||
PKG_RELEASE:=$(AUTORELEASE)
|
|
||||||
|
|
||||||
LOCAL_DEV:=0
|
|
||||||
ifneq ($(LOCAL_DEV),1)
|
|
||||||
PKG_SOURCE:=$(PKG_NAME)-v$(PKG_VERSION).tar.gz
|
|
||||||
PKG_SOURCE_URL:=https://github.com/fluent/fluent-bit/archive/v$(PKG_VERSION)
|
|
||||||
PKG_HASH:=7a49e110cf3050b6c29c911063494b8081f3c743274d1d95e52562d0476ba1eb
|
|
||||||
endif
|
|
||||||
|
|
||||||
PKG_LICENSE:=Apache-2.0
|
|
||||||
PKG_LICENSE_FILES:=LICENSE
|
|
||||||
|
|
||||||
include $(INCLUDE_DIR)/package.mk
|
|
||||||
include $(INCLUDE_DIR)/cmake.mk
|
|
||||||
|
|
||||||
define Package/fluent-bit
|
|
||||||
CATEGORY:=Utilities
|
|
||||||
DEPENDS:= +libyaml +libopenssl +libcurl +libatomic +musl-fts +flex +bison
|
|
||||||
TITLE:=Fluent-Bit
|
|
||||||
URL:=https://fluentbit.io/
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Package/fluent-bit/description
|
|
||||||
Fluent Bit is a super fast, lightweight, and highly scalable logging and metrics processor and forwarder.
|
|
||||||
endef
|
|
||||||
|
|
||||||
ifeq ($(LOCAL_DEV),1)
|
|
||||||
define Build/Prepare
|
|
||||||
$(CP) -rf ./fluent-bit/* $(PKG_BUILD_DIR)/
|
|
||||||
endef
|
|
||||||
endif
|
|
||||||
|
|
||||||
# General options
|
|
||||||
TARGET_LDFLAGS +=-lfts -latomic
|
|
||||||
|
|
||||||
CMAKE_OPTIONS+= \
|
|
||||||
-DFLB_RELEASE=Yes \
|
|
||||||
-DFLB_SMALL=No \
|
|
||||||
-DEXCLUDE_FROM_ALL=true \
|
|
||||||
-DFLB_SHARED_LIBS=Yes \
|
|
||||||
-DFLB_DEBUG=Yes \
|
|
||||||
-DFLB_ALL=No \
|
|
||||||
-DFLB_JEMALLOC=No \
|
|
||||||
-DFLB_EXAMPLES=No \
|
|
||||||
-DFLB_CHUNK_TRACE=No \
|
|
||||||
-DFLB_BACKTRACE=No \
|
|
||||||
-DFLB_WASM=No \
|
|
||||||
-DFLB_LUAJIT=No
|
|
||||||
|
|
||||||
# In plugins
|
|
||||||
CMAKE_OPTIONS += \
|
|
||||||
-DFLB_IN_SYSLOG=Yes \
|
|
||||||
-DFLB_IN_CPU=Yes \
|
|
||||||
-DFLB_IN_MEM=Yes \
|
|
||||||
-DFLB_IN_DISK=Yes \
|
|
||||||
-DFLB_IN_EXEC=Yes \
|
|
||||||
-DFLB_IN_HEAD=Yes \
|
|
||||||
-DFLB_IN_FORWARD=No \
|
|
||||||
-DFLB_IN_KMSG=No \
|
|
||||||
-DFLB_IN_PROC=No \
|
|
||||||
-DFLB_IN_RANDOM=No \
|
|
||||||
-DFLB_IN_SERIAL=No \
|
|
||||||
-DFLB_IN_MQTT=No \
|
|
||||||
-DFLB_IN_STDIN=No \
|
|
||||||
-DFLB_IN_SYSTEMD=No \
|
|
||||||
-DFLB_IN_TAIL=No \
|
|
||||||
-DFLB_IN_TCP=No \
|
|
||||||
-DFLB_IN_THERMAL=No \
|
|
||||||
-DFLB_IN_UDP=No \
|
|
||||||
-DFLB_IN_DOCKER=No \
|
|
||||||
-DFLB_IN_EXEC_WASI=No \
|
|
||||||
-DFLB_IN_EVENT_TYPE=No \
|
|
||||||
-DFLB_IN_FLUENTBIT_METRICS=No \
|
|
||||||
-DFLB_IN_KUBERNETES_EVENTS=No \
|
|
||||||
-DFLB_IN_KAFKA=No \
|
|
||||||
-DFLB_IN_LIB=No \
|
|
||||||
-DFLB_IN_SYSTEMD=No \
|
|
||||||
-DFLB_IN_DUMMY=No \
|
|
||||||
-DFLB_IN_NETIF=No \
|
|
||||||
-DFLB_IN_COLLECTD=No \
|
|
||||||
-DFLB_IN_PROMETHEUS_SCRAPE=No \
|
|
||||||
-DFLB_IN_STATSD=No \
|
|
||||||
-DFLB_IN_STORAGE_BACKLOG=No \
|
|
||||||
-DFLB_IN_PODMAN_METRICS=No \
|
|
||||||
-DFLB_IN_OPENTELEMETRY=No \
|
|
||||||
-DFLB_IN_ELASTICSEARCH=No \
|
|
||||||
-DFLB_IN_CALYPTIA_FLEET=No \
|
|
||||||
-DFLB_IN_SPLUNK=No
|
|
||||||
-DFLB_IN_HEALTH=No \
|
|
||||||
-DFLB_IN_WINLOG=No \
|
|
||||||
-DFLB_IN_WINEVTLOG=No
|
|
||||||
|
|
||||||
|
|
||||||
# Filter options
|
|
||||||
CMAKE_OPTIONS +=
|
|
||||||
-DFLB_FILTER_AWS=No \
|
|
||||||
-DFLB_FILTER_ECS=No \
|
|
||||||
-DFLB_FILTER_KUBERNETES=No \
|
|
||||||
-DFLB_FILTER_LUA=No \
|
|
||||||
-DFLB_FILTER_NEST=No \
|
|
||||||
-DFLB_FILTER_RECORD_MODIFIER=No \
|
|
||||||
-DFLB_FILTER_THROTTLE=No \
|
|
||||||
-DFLB_FILTER_TYPE_CONVERTER=No \
|
|
||||||
-DFLB_FILTER_WASM=No \
|
|
||||||
-DFLB_FILTER_TENSORFLOW=No \
|
|
||||||
-DFLB_FILTER_GEOIP2=No \
|
|
||||||
-DFLB_FILTER_NIGHTFALL=No
|
|
||||||
|
|
||||||
# out plugins
|
|
||||||
CMAKE_OPTIONS += \
|
|
||||||
-DFLB_OUT_EXIT=Yes \
|
|
||||||
-DFLB_OUT_FORWARD=Yes \
|
|
||||||
-DFLB_OUT_HTTP=Yes \
|
|
||||||
-DFLB_OUT_NATS=Yes \
|
|
||||||
-DFLB_OUT_TCP=Yes \
|
|
||||||
-DFLB_OUT_UDP=Yes \
|
|
||||||
-DFLB_OUT_FILE=Yes \
|
|
||||||
-DFLB_OUT_STDOUT=Yes \
|
|
||||||
-DFLB_OUT_SYSLOG=Yes \
|
|
||||||
-DFLB_OUT_NULL=Yes \
|
|
||||||
-DFLB_OUT_PLOT=No \
|
|
||||||
-DFLB_OUT_AZURE=No \
|
|
||||||
-DFLB_OUT_AZURE_BLOB=No \
|
|
||||||
-DFLB_OUT_AZURE_LOGS_INGESTION=No \
|
|
||||||
-DFLB_OUT_AZURE_KUSTO=No \
|
|
||||||
-DFLB_OUT_BIGQUERY=No \
|
|
||||||
-DFLB_OUT_CALYPTIA=No \
|
|
||||||
-DFLB_OUT_COUNTER=No \
|
|
||||||
-DFLB_OUT_DATADOG=No \
|
|
||||||
-DFLB_OUT_ES=No \
|
|
||||||
-DFLB_OUT_GELF=No \
|
|
||||||
-DFLB_OUT_INFLUXDB=No \
|
|
||||||
-DFLB_OUT_NRLOGS=No \
|
|
||||||
-DFLB_OUT_OPENSEARCH=No \
|
|
||||||
-DFLB_OUT_TD=No \
|
|
||||||
-DFLB_OUT_SKYWALKING=No \
|
|
||||||
-DFLB_OUT_SLACK=No \
|
|
||||||
-DFLB_OUT_SPLUNK=No \
|
|
||||||
-DFLB_OUT_STACKDRIVER=No \
|
|
||||||
-DFLB_OUT_LIB=No \
|
|
||||||
-DFLB_OUT_FLOWCOUNTER=No \
|
|
||||||
-DFLB_OUT_LOGDNA=No \
|
|
||||||
-DFLB_OUT_LOKI=No \
|
|
||||||
-DFLB_OUT_KAFKA=No \
|
|
||||||
-DFLB_OUT_KAFKA_REST=No \
|
|
||||||
-DFLB_OUT_CLOUDWATCH_LOGS=No \
|
|
||||||
-DFLB_OUT_KINESIS_FIREHOSE=No \
|
|
||||||
-DFLB_OUT_KINESIS_STREAMS=No \
|
|
||||||
-DFLB_OUT_OPENTELEMETRY=No \
|
|
||||||
-DFLB_OUT_PROMETHEUS_EXPORTER=No \
|
|
||||||
-DFLB_OUT_PROMETHEUS_REMOTE_WRITE=No \
|
|
||||||
-DFLB_OUT_S3=No \
|
|
||||||
-DFLB_OUT_VIVO_EXPORTER=No \
|
|
||||||
-DFLB_OUT_WEBSOCKET=No \
|
|
||||||
-DFLB_OUT_ORACLE_LOG_ANALYTICS=No \
|
|
||||||
-DFLB_OUT_CHRONICLE=No \
|
|
||||||
-DFLB_OUT_PGSQL=No
|
|
||||||
|
|
||||||
define Package/fluent-bit/install
|
|
||||||
$(INSTALL_DIR) $(1)/usr/sbin
|
|
||||||
$(INSTALL_DIR) $(1)/etc/fluent-bit
|
|
||||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/bin/fluent-bit $(1)/usr/sbin/
|
|
||||||
$(INSTALL_DATA) ./files/fluent-bit.conf $(1)/etc/fluent-bit/fluent-bit.conf
|
|
||||||
$(INSTALL_DATA) $(PKG_BUILD_DIR)/conf/parsers.conf $(1)/etc/fluent-bit/parsers.conf
|
|
||||||
endef
|
|
||||||
|
|
||||||
$(eval $(call BuildPackage,fluent-bit))
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
[SERVICE]
|
|
||||||
flush 3
|
|
||||||
daemon Off
|
|
||||||
log_level info
|
|
||||||
parsers_file /etc/fluent-bit/parsers.conf
|
|
||||||
|
|
||||||
[INPUT]
|
|
||||||
name syslog
|
|
||||||
tag syslog
|
|
||||||
path /dev/log
|
|
||||||
|
|
||||||
[OUTPUT]
|
|
||||||
name null
|
|
||||||
match *
|
|
||||||
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
diff --git a/plugins/out_file/file.c b/plugins/out_file/file.c
|
|
||||||
index 2e47c9666..42ace24c6 100644
|
|
||||||
--- a/plugins/out_file/file.c
|
|
||||||
+++ b/plugins/out_file/file.c
|
|
||||||
@@ -45,6 +45,9 @@
|
|
||||||
#define NEWLINE "\n"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
+#undef PATH_MAX
|
|
||||||
+#define PATH_MAX 256
|
|
||||||
+
|
|
||||||
struct flb_file_conf {
|
|
||||||
const char *out_path;
|
|
||||||
const char *out_file;
|
|
||||||
@@ -1,45 +0,0 @@
|
|||||||
diff --git a/plugins/out_file/file.c b/plugins/out_file/file.c
|
|
||||||
index 2e47c9666..95d28e438 100644
|
|
||||||
--- a/plugins/out_file/file.c
|
|
||||||
+++ b/plugins/out_file/file.c
|
|
||||||
@@ -27,6 +27,7 @@
|
|
||||||
#include <msgpack.h>
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
+#include <unistd.h>
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <sys/stat.h>
|
|
||||||
#include <fcntl.h>
|
|
||||||
@@ -55,6 +56,7 @@ struct flb_file_conf {
|
|
||||||
int csv_column_names;
|
|
||||||
int mkdir;
|
|
||||||
struct flb_output_instance *ins;
|
|
||||||
+ char hostname[256];
|
|
||||||
};
|
|
||||||
|
|
||||||
static char *check_delimiter(const char *str)
|
|
||||||
@@ -141,6 +143,9 @@ static int cb_file_init(struct flb_output_instance *ins,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
+ if (gethostname(ctx->hostname, sizeof(ctx->hostname)) != 0)
|
|
||||||
+ snprintf(ctx->hostname, sizeof(ctx->hostname), "%s", "localhost");
|
|
||||||
+
|
|
||||||
tmp = flb_output_get_property("delimiter", ins);
|
|
||||||
ret_str = check_delimiter(tmp);
|
|
||||||
if (ret_str != NULL) {
|
|
||||||
@@ -233,12 +238,8 @@ static int template_output_write(struct flb_file_conf *ctx,
|
|
||||||
int i;
|
|
||||||
msgpack_object_kv *kv;
|
|
||||||
|
|
||||||
- /*
|
|
||||||
- * Right now we treat "{time}" specially and fill the placeholder
|
|
||||||
- * with the metadata timestamp (formatted as float).
|
|
||||||
- */
|
|
||||||
- if (!strncmp(key, "time", size)) {
|
|
||||||
- fprintf(fp, "%f", flb_time_to_double(tm));
|
|
||||||
+ if (!strncmp(key, "hostname", size)) {
|
|
||||||
+ fprintf(fp, "%s", ctx->hostname);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -5,12 +5,12 @@
|
|||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=hostmngr
|
PKG_NAME:=hostmngr
|
||||||
PKG_VERSION:=1.2.9
|
PKG_VERSION:=1.2.5
|
||||||
|
|
||||||
LOCAL_DEV=0
|
LOCAL_DEV=0
|
||||||
ifneq ($(LOCAL_DEV),1)
|
ifneq ($(LOCAL_DEV),1)
|
||||||
PKG_SOURCE_PROTO:=git
|
PKG_SOURCE_PROTO:=git
|
||||||
PKG_SOURCE_VERSION:=27b2d7c3ef0ccb4e2c30f790f2b51881b6884d9c
|
PKG_SOURCE_VERSION:=20402c9fb60afa0678d844b0401e1b89699ff8b3
|
||||||
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/hostmngr.git
|
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/hostmngr.git
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)_$(PKG_SOURCE_VERSION).tar.xz
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)_$(PKG_SOURCE_VERSION).tar.xz
|
||||||
PKG_MIRROR_HASH:=skip
|
PKG_MIRROR_HASH:=skip
|
||||||
@@ -31,8 +31,9 @@ define Package/hostmngr
|
|||||||
DEPENDS= +libubox +libuci +libubus +ubus +libeasy +libnl-genl \
|
DEPENDS= +libubox +libuci +libubus +ubus +libeasy +libnl-genl \
|
||||||
+libjson-c +libblobmsg-json +libnfnetlink +libmnl \
|
+libjson-c +libblobmsg-json +libnfnetlink +libmnl \
|
||||||
+libnetfilter-conntrack \
|
+libnetfilter-conntrack \
|
||||||
+HOSTMNGR_PLATFORM_HAS_WIFI:libwifi +libwifiutils
|
+HOSTMNGR_PLATFORM_HAS_WIFI:libwifi +libbbfdm-api \
|
||||||
DEPENDS+= +libbbfdm-api +libbbfdm-ubus +dm-service
|
+libwifiutils
|
||||||
|
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/hostmngr/config
|
define Package/hostmngr/config
|
||||||
|
|||||||
@@ -1,10 +0,0 @@
|
|||||||
menu "Configuration"
|
|
||||||
|
|
||||||
config ICWMP_MGMT_FROM_USP
|
|
||||||
bool "Support configuration of ManagementServer from USP"
|
|
||||||
default y
|
|
||||||
|
|
||||||
config ICWMP_BACKUP_EVENTS
|
|
||||||
bool "Create backup of session events to persistent storage after each successful session"
|
|
||||||
default y
|
|
||||||
endmenu
|
|
||||||
@@ -8,14 +8,14 @@
|
|||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=icwmp
|
PKG_NAME:=icwmp
|
||||||
PKG_VERSION:=9.8.22
|
PKG_VERSION:=9.7.15
|
||||||
|
|
||||||
LOCAL_DEV:=0
|
LOCAL_DEV:=0
|
||||||
ifneq ($(LOCAL_DEV),1)
|
ifneq ($(LOCAL_DEV),1)
|
||||||
PKG_SOURCE_PROTO:=git
|
PKG_SOURCE_PROTO:=git
|
||||||
PKG_SOURCE_URL:=https://dev.iopsys.eu/bbf/icwmp.git
|
PKG_SOURCE_URL:=https://dev.iopsys.eu/bbf/icwmp.git
|
||||||
PKG_SOURCE_VERSION:=2eeb0990616df846da55a154d2fed05c828d168f
|
PKG_SOURCE_VERSION:=fb3c8833f3fce7fe3659395cab48e7078f2007d5
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_VERSION).tar.gz
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
|
||||||
PKG_MIRROR_HASH:=skip
|
PKG_MIRROR_HASH:=skip
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@@ -31,27 +31,9 @@ define Package/icwmp
|
|||||||
CATEGORY:=Utilities
|
CATEGORY:=Utilities
|
||||||
SUBMENU:=TRx69
|
SUBMENU:=TRx69
|
||||||
TITLE:=TR069 CWMP client
|
TITLE:=TR069 CWMP client
|
||||||
DEPENDS:=+libuci +libubox +libblobmsg-json +libubus +libjson-c +libcurl +mxml +libuuid +libopenssl
|
DEPENDS:=+libuci +libubox +libblobmsg-json +libubus +libjson-c +libcurl +mxml +libuuid +libbbfdm-api +libopenssl
|
||||||
DEPENDS+=+libbbfdm-api +libbbfdm-ubus +dm-service
|
|
||||||
MENU:=1
|
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/icwmp/description
|
|
||||||
TR069 client implementation with bbfdm backend for TR181 support
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Package/icwmp/config
|
|
||||||
source "$(SOURCE)/Config.in"
|
|
||||||
endef
|
|
||||||
|
|
||||||
ifeq ($(CONFIG_ICWMP_MGMT_FROM_USP),y)
|
|
||||||
EXTRA_CFLAGS += -DCWMP_DUAL_SUPPORT=BBFDM_BOTH
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(CONFIG_ICWMP_BACKUP_EVENTS),y)
|
|
||||||
EXTRA_CFLAGS += -DPERSIST_BACKUP_SESSION_EVENTS
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(LOCAL_DEV),1)
|
ifeq ($(LOCAL_DEV),1)
|
||||||
define Build/Prepare
|
define Build/Prepare
|
||||||
$(CP) -rf ~/git/icwmp/* $(PKG_BUILD_DIR)/
|
$(CP) -rf ~/git/icwmp/* $(PKG_BUILD_DIR)/
|
||||||
@@ -68,13 +50,11 @@ define Package/icwmp/install
|
|||||||
$(INSTALL_DIR) $(1)/etc/udhcpc.user.d
|
$(INSTALL_DIR) $(1)/etc/udhcpc.user.d
|
||||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/icwmpd $(1)/usr/sbin/icwmpd
|
$(INSTALL_BIN) $(PKG_BUILD_DIR)/icwmpd $(1)/usr/sbin/icwmpd
|
||||||
$(INSTALL_DATA) ./files/etc/config/cwmp $(1)/etc/config/cwmp
|
$(INSTALL_DATA) ./files/etc/config/cwmp $(1)/etc/config/cwmp
|
||||||
|
$(INSTALL_BIN) ./files/etc/firewall.cwmp $(1)/etc/firewall.cwmp
|
||||||
$(INSTALL_BIN) ./files/etc/init.d/icwmpd $(1)/etc/init.d/icwmpd
|
$(INSTALL_BIN) ./files/etc/init.d/icwmpd $(1)/etc/init.d/icwmpd
|
||||||
$(INSTALL_BIN) ./files/etc/uci-defaults/85-cwmp-set-userid $(1)/etc/uci-defaults/
|
$(INSTALL_BIN) ./files/etc/uci-defaults/85-cwmp-set-userid $(1)/etc/uci-defaults/
|
||||||
$(INSTALL_BIN) ./files/etc/uci-defaults/90-cwmpfirewall $(1)/etc/uci-defaults/
|
$(INSTALL_BIN) ./files/etc/uci-defaults/90-cwmpfirewall $(1)/etc/uci-defaults/
|
||||||
$(INSTALL_BIN) ./files/etc/uci-defaults/95-set-random-inform-time $(1)/etc/uci-defaults/
|
$(INSTALL_BIN) ./files/etc/uci-defaults/95-set-random-inform-time $(1)/etc/uci-defaults/
|
||||||
$(INSTALL_BIN) ./files/etc/icwmpd/vendor_log.sh $(1)/etc/icwmpd/vendor_log.sh
|
|
||||||
$(INSTALL_BIN) ./files/etc/icwmpd/firewall.cwmp $(1)/etc/icwmpd/firewall.cwmp
|
|
||||||
$(INSTALL_BIN) ./files/etc/icwmpd/critical_services.json $(1)/etc/icwmpd/critical_services.json
|
|
||||||
$(INSTALL_DATA) ./files/lib/upgrade/keep.d/icwmp $(1)/lib/upgrade/keep.d/icwmp
|
$(INSTALL_DATA) ./files/lib/upgrade/keep.d/icwmp $(1)/lib/upgrade/keep.d/icwmp
|
||||||
$(INSTALL_BIN) ./files/etc/udhcpc.user.d/udhcpc_icwmp_opt125.user $(1)/etc/udhcpc.user.d/udhcpc_icwmp_opt125.user
|
$(INSTALL_BIN) ./files/etc/udhcpc.user.d/udhcpc_icwmp_opt125.user $(1)/etc/udhcpc.user.d/udhcpc_icwmp_opt125.user
|
||||||
$(INSTALL_BIN) ./files/etc/udhcpc.user.d/udhcpc_icwmp_opt43.user $(1)/etc/udhcpc.user.d/udhcpc_icwmp_opt43.user
|
$(INSTALL_BIN) ./files/etc/udhcpc.user.d/udhcpc_icwmp_opt43.user $(1)/etc/udhcpc.user.d/udhcpc_icwmp_opt43.user
|
||||||
|
|||||||
@@ -41,7 +41,6 @@ config cpe 'cpe'
|
|||||||
option active_notif_throttle '0'
|
option active_notif_throttle '0'
|
||||||
option disable_gatewayinfo '0'
|
option disable_gatewayinfo '0'
|
||||||
option fw_upgrade_keep_settings '1'
|
option fw_upgrade_keep_settings '1'
|
||||||
option clock_sync_timeout '128'
|
|
||||||
|
|
||||||
config lwn 'lwn'
|
config lwn 'lwn'
|
||||||
option enable '0'
|
option enable '0'
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ log() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
get_firewall_zone() {
|
get_firewall_zone() {
|
||||||
zone="$(uci show firewall|grep network|grep -w ${1}|cut -d. -f 2)"
|
zone="$(uci show firewall|grep network|grep ${1}|cut -d. -f 2)"
|
||||||
zone="${zone:-wan}" # defaults to wan zone
|
zone="${zone:-wan}" # defaults to wan zone
|
||||||
echo "$zone"
|
echo "$zone"
|
||||||
}
|
}
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
{
|
|
||||||
"services_list": [
|
|
||||||
"firewall",
|
|
||||||
"network",
|
|
||||||
"dhcp",
|
|
||||||
"stunc",
|
|
||||||
"xmpp",
|
|
||||||
"wireless",
|
|
||||||
"time"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
# This script handles '2 Vendor Log File' of Download RPC
|
|
||||||
# Vendors can replace this file if they need to collect more logs
|
|
||||||
|
|
||||||
VENDOR_LOG_FILE="/tmp/icwmp/2_vendor_log"
|
|
||||||
ret=""
|
|
||||||
|
|
||||||
if [ -n "$(which logread)" ]; then
|
|
||||||
mkdir -p /tmp/icwmp
|
|
||||||
|
|
||||||
logread > "${VENDOR_LOG_FILE}"
|
|
||||||
|
|
||||||
arch_file="${VENDOR_LOG_FILE}.tar"
|
|
||||||
|
|
||||||
if [ -f "${arch_file}" ]; then
|
|
||||||
rm -f ${arch_file}
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -f "${VENDOR_LOG_FILE}" ]; then
|
|
||||||
tar -cf "${arch_file}" "${VENDOR_LOG_FILE}" 2> /dev/null
|
|
||||||
if [ -f "${arch_file}" ]; then
|
|
||||||
ret="${arch_file}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
rm -rf "${VENDOR_LOG_FILE}"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "${ret}"
|
|
||||||
@@ -3,7 +3,7 @@
|
|||||||
uci -q batch <<-EOT
|
uci -q batch <<-EOT
|
||||||
delete firewall.cwmp
|
delete firewall.cwmp
|
||||||
set firewall.cwmp=include
|
set firewall.cwmp=include
|
||||||
set firewall.cwmp.path=/etc/icwmpd/firewall.cwmp
|
set firewall.cwmp.path=/etc/firewall.cwmp
|
||||||
set firewall.cwmp.reload=1
|
set firewall.cwmp.reload=1
|
||||||
commit firewall
|
commit firewall
|
||||||
EOT
|
EOT
|
||||||
|
|||||||
@@ -21,9 +21,6 @@ config IEEE1905_WIFI_EASYMESH
|
|||||||
config IEEE1905_CMDU_FRAGMENT_TLV_BOUNDARY
|
config IEEE1905_CMDU_FRAGMENT_TLV_BOUNDARY
|
||||||
bool "Fragment large CMDU frame at TLV boundary instead of octet boundary"
|
bool "Fragment large CMDU frame at TLV boundary instead of octet boundary"
|
||||||
|
|
||||||
config IEEE1905_BUILD_TR181_PLUGIN
|
|
||||||
bool "Build TR-181 mapping module (responsible for Device.IEEE1905.)"
|
|
||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|||||||
@@ -5,12 +5,12 @@
|
|||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=ieee1905
|
PKG_NAME:=ieee1905
|
||||||
PKG_VERSION:=8.6.1
|
PKG_VERSION:=8.4.2
|
||||||
|
|
||||||
LOCAL_DEV=0
|
LOCAL_DEV=0
|
||||||
ifneq ($(LOCAL_DEV),1)
|
ifneq ($(LOCAL_DEV),1)
|
||||||
PKG_SOURCE_PROTO:=git
|
PKG_SOURCE_PROTO:=git
|
||||||
PKG_SOURCE_VERSION:=5f7e6e30cbda36e431ecb7150d7494bce0c26f6f
|
PKG_SOURCE_VERSION:=4d60d4a9b55940fffa39b7799abf2a7962ae2113
|
||||||
PKG_SOURCE_URL:=https://dev.iopsys.eu/multi-ap/ieee1905.git
|
PKG_SOURCE_URL:=https://dev.iopsys.eu/multi-ap/ieee1905.git
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)_$(PKG_SOURCE_VERSION).tar.xz
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)_$(PKG_SOURCE_VERSION).tar.xz
|
||||||
PKG_MIRROR_HASH:=skip
|
PKG_MIRROR_HASH:=skip
|
||||||
@@ -48,8 +48,7 @@ define Package/ieee1905
|
|||||||
DEPENDS= +libubox +libuci +libubus +libeasy +libnl-genl \
|
DEPENDS= +libubox +libuci +libubus +libeasy +libnl-genl \
|
||||||
+libjson-c +libblobmsg-json +ubus +libpthread \
|
+libjson-c +libblobmsg-json +ubus +libpthread \
|
||||||
+libieee1905 +IEEE1905_PLATFORM_HAS_WIFI:libwifi \
|
+libieee1905 +IEEE1905_PLATFORM_HAS_WIFI:libwifi \
|
||||||
+libwifiutils
|
+libwifiutils +libbbfdm-api
|
||||||
DEPENDS+=+libbbfdm-api +libbbfdm-ubus +dm-service
|
|
||||||
endef
|
endef
|
||||||
|
|
||||||
include $(wildcard plugins/*.mk)
|
include $(wildcard plugins/*.mk)
|
||||||
@@ -97,7 +96,6 @@ TARGET_CFLAGS += -DEXTENSION_ALLOWED
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
TARGET_CFLAGS += -DHAS_UBUS
|
TARGET_CFLAGS += -DHAS_UBUS
|
||||||
TARGET_CFLAGS += -DBUILD_TR181_PLUGIN
|
|
||||||
|
|
||||||
MAKE_FLAGS += \
|
MAKE_FLAGS += \
|
||||||
extmod_subdirs="$(patsubst %,extensions/%,$(plugins))"
|
extmod_subdirs="$(patsubst %,extensions/%,$(plugins))"
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ _iop()
|
|||||||
feeds_update genconfig \
|
feeds_update genconfig \
|
||||||
generate_tarballs install_key \
|
generate_tarballs install_key \
|
||||||
scp_changes setup_host ssh_install_key status \
|
scp_changes setup_host ssh_install_key status \
|
||||||
ssh_upgrade smoketest"
|
update_feed_branches ssh_upgrade smoketest"
|
||||||
|
|
||||||
if [ $COMP_CWORD -eq 1 ] ; then
|
if [ $COMP_CWORD -eq 1 ] ; then
|
||||||
|
|
||||||
|
|||||||
72
iop/scripts/annexconfig.sh
Executable file
72
iop/scripts/annexconfig.sh
Executable file
@@ -0,0 +1,72 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
function disable_add_config () {
|
||||||
|
local COPTION="$1"
|
||||||
|
|
||||||
|
HAVE_OPTION=`grep $COPTION .config | wc -l`
|
||||||
|
HAVE_OPTION_DISABLED=`grep "# $COPTION" .config | wc -l`
|
||||||
|
if [ "$HAVE_OPTION" = "1" ]
|
||||||
|
then
|
||||||
|
if [ "$HAVE_OPTION_DISABLED" = "0" ]
|
||||||
|
then
|
||||||
|
sed -i -e "s,$COPTION=y,# $COPTION is not set,g" .config
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "# $COPTION is not set" >> .config
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function enable_option () {
|
||||||
|
local COPTION="$1"
|
||||||
|
# cat .config| grep DSL
|
||||||
|
sed -i -e "s,# $COPTION is not set,$COPTION=y,g" .config
|
||||||
|
# cat .config| grep DSL
|
||||||
|
}
|
||||||
|
|
||||||
|
function annexconfig {
|
||||||
|
|
||||||
|
v() {
|
||||||
|
[ "$VERBOSE" -ge 1 ] && echo "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
local ANNEX="$1"
|
||||||
|
|
||||||
|
disable_add_config CONFIG_TARGET_NO_DSL
|
||||||
|
disable_add_config CONFIG_TARGET_DSL_ANNEX_A
|
||||||
|
disable_add_config CONFIG_TARGET_DSL_ANNEX_B
|
||||||
|
disable_add_config CONFIG_TARGET_DSL_ANNEX_C
|
||||||
|
disable_add_config CONFIG_TARGET_DSL_SADSL
|
||||||
|
disable_add_config CONFIG_TARGET_DSL_GFAST
|
||||||
|
|
||||||
|
|
||||||
|
if [ "$ANNEX" = "no" ]
|
||||||
|
then
|
||||||
|
echo "No DSL"
|
||||||
|
enable_option CONFIG_TARGET_NO_DSL
|
||||||
|
elif [ "$ANNEX" = "a" ]
|
||||||
|
then
|
||||||
|
echo "Annex A"
|
||||||
|
enable_option CONFIG_TARGET_DSL_ANNEX_A
|
||||||
|
elif [ "$ANNEX" = "b" ]
|
||||||
|
then
|
||||||
|
echo "Annex B"
|
||||||
|
enable_option CONFIG_TARGET_DSL_ANNEX_B
|
||||||
|
elif [ "$ANNEX" = "c" ]
|
||||||
|
then
|
||||||
|
echo "Annex C"
|
||||||
|
enable_option CONFIG_TARGET_DSL_ANNEX_C
|
||||||
|
elif [ "$ANNEX" = "sadsl" ]
|
||||||
|
then
|
||||||
|
echo "sadsl"
|
||||||
|
enable_option CONFIG_TARGET_DSL_SADSL
|
||||||
|
elif [ "$ANNEX" = "gfast" ]
|
||||||
|
then
|
||||||
|
echo "G.fast"
|
||||||
|
enable_option CONFIG_TARGET_DSL_GFAST
|
||||||
|
else
|
||||||
|
echo "Only option no,a,b,c,sadsl,gfast supported"
|
||||||
|
fi
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
register_command "annexconfig" "Select configuration annex"
|
||||||
42
iop/scripts/cfe_upgrade.sh
Normal file
42
iop/scripts/cfe_upgrade.sh
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
# this is a developer helper script to install firmware on a remote host running in CFE mode
|
||||||
|
|
||||||
|
function usage {
|
||||||
|
echo "usage: $0 cfe_upgrade <host> <file>"
|
||||||
|
}
|
||||||
|
|
||||||
|
function cfe_upgrade {
|
||||||
|
if [ -z "$1" ] ; then
|
||||||
|
usage
|
||||||
|
echo "Error: host required"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ -z "$2" ] ; then
|
||||||
|
usage
|
||||||
|
echo "Error: firmware filename required"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ ! -e $2 ] ; then
|
||||||
|
usage
|
||||||
|
echo "Error: firmware file does not exist"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
IMAGE=`basename $2`
|
||||||
|
echo "CFE upgrade host: $1 with file $IMAGE"
|
||||||
|
[ "$2" ] && [ -e "$2" ] && curl -i -F filedata=@$2 http://$1/upload.cgi && echo "upgrade done!"
|
||||||
|
}
|
||||||
|
|
||||||
|
register_command "cfe_upgrade" "<host> <file> Install firmware on remote host in CFE mode"
|
||||||
|
|
||||||
|
function cfe_upgrade_latest {
|
||||||
|
if [ -z "$1" ] ; then
|
||||||
|
echo "usage: $0 cfe_upgrade_latest <host>"
|
||||||
|
echo "Error: host required"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
{ cd `dirname $0`
|
||||||
|
IMAGE=`ls -Art bin/*/*.w | tail -n1`
|
||||||
|
[ "$IMAGE" ] && [ -e "$IMAGE" ] && ./iop cfe_upgrade $1 $IMAGE
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
register_command "cfe_upgrade_latest" "<host> Install latest firmware on remote host in CFE mode"
|
||||||
29
iop/scripts/genconfig_wrap.sh
Executable file
29
iop/scripts/genconfig_wrap.sh
Executable file
@@ -0,0 +1,29 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Function to convert parameters to lowercase
|
||||||
|
function to_lowercase {
|
||||||
|
local params=()
|
||||||
|
for param in "$@"; do
|
||||||
|
params+=("$(tr '[:upper:]' '[:lower:]' <<< "$param")")
|
||||||
|
done
|
||||||
|
echo "${params[@]}"
|
||||||
|
}
|
||||||
|
|
||||||
|
function genconfig {
|
||||||
|
target_script="./scripts/gen_config.py"
|
||||||
|
|
||||||
|
# First convert all to lowercase
|
||||||
|
args=$(to_lowercase "$@")
|
||||||
|
|
||||||
|
# Check if an option is provided
|
||||||
|
if [[ ${args[0]} == -* ]]; then
|
||||||
|
# Convert options for target script
|
||||||
|
if [[ ${args[0]} == "-b" || ${args[0]} == "--boards" ]]; then
|
||||||
|
args=("--list")
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
${target_script} ${args[@]}
|
||||||
|
}
|
||||||
|
|
||||||
|
register_command "genconfig" "Generate configuration for board and customer"
|
||||||
283
iop/scripts/iopupgrade.sh
Normal file
283
iop/scripts/iopupgrade.sh
Normal file
@@ -0,0 +1,283 @@
|
|||||||
|
# this is a developer helper script to install firmware on a remote host with SSH
|
||||||
|
|
||||||
|
function upd_usage {
|
||||||
|
echo "usage: $0 ssh_upgrade [-t <host>] [-f <file>] [opts] "
|
||||||
|
echo ""
|
||||||
|
echo " Default host is 192.168.1.1"
|
||||||
|
echo " Default firmware file is the latest one (last.{itb,pkgtb})"
|
||||||
|
echo " Default is to not keep configuration"
|
||||||
|
echo "opts:"
|
||||||
|
echo ""
|
||||||
|
echo " -i Interactive use, allows to select firmware file"
|
||||||
|
echo " -n Do not do the final reboot of the target board"
|
||||||
|
echo " -c Keep configuration"
|
||||||
|
echo " -x Force install even if firmware is not for this board"
|
||||||
|
echo " -b Force install of bootloader regardless of version installed"
|
||||||
|
}
|
||||||
|
|
||||||
|
function set_config_string {
|
||||||
|
eval $(grep $1 .config)
|
||||||
|
}
|
||||||
|
|
||||||
|
function upd_ask_ok {
|
||||||
|
echo "Will continue with the following settings:"
|
||||||
|
echo "-----------------------------------------"
|
||||||
|
printf "%20s: %s\n" "Firmware file" "$upd_fw_base"
|
||||||
|
printf "%20s: %s\n" "Host IP" "$upd_host"
|
||||||
|
printf "%20s: " "Reboot"
|
||||||
|
if [ "$upd_noreboot" == "0" ]; then printf "Yes\n"; else printf "No\n"; fi
|
||||||
|
printf "%20s: " "Keep config"
|
||||||
|
if [ "$upd_keepconf" == "1" ]; then printf "Yes\n"; else printf "No\n"; fi
|
||||||
|
printf "%20s: " "Force bootloader"
|
||||||
|
if [ "$upd_forceboot" == "1" ]; then printf "Yes\n"; else printf "No\n"; fi
|
||||||
|
printf "%20s: " "Force image upgrade"
|
||||||
|
if [ "$upd_forceimage" == "1" ]; then printf "Yes\n"; else printf "No\n"; fi
|
||||||
|
echo "-----------------------------------------"
|
||||||
|
|
||||||
|
echo -n "Continue? [Y/n/q]:"
|
||||||
|
read answer
|
||||||
|
|
||||||
|
case $answer in
|
||||||
|
n | N)
|
||||||
|
return 1
|
||||||
|
;;
|
||||||
|
q | Q)
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
y | Y | *)
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
function upd_select_file {
|
||||||
|
dialog --keep-tite --title "To select a file, use TAB/ARROW to highlight then press SPACEBAR -> RETURN" \
|
||||||
|
--fselect "${upd_fw:-bin/targets/$CONFIG_TARGET_BOARD/$CONFIG_TARGET_SUBTARGET/}" \
|
||||||
|
$((lines - 10)) $((cols - 5)) \
|
||||||
|
2>$tempfile
|
||||||
|
|
||||||
|
new_file=$(cat $tempfile)
|
||||||
|
if [ -n "$new_file" ]; then
|
||||||
|
upd_fw="$new_file"
|
||||||
|
upd_fw_base=$(basename $upd_fw)
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function upd_select_target {
|
||||||
|
dialog --keep-tite --title "Input the hostname/IP of the target board" \
|
||||||
|
--inputbox "Name/IP" \
|
||||||
|
$((lines - 10)) $((cols - 5)) \
|
||||||
|
"$upd_host" \
|
||||||
|
2>$tempfile
|
||||||
|
|
||||||
|
new_file=$(cat $tempfile)
|
||||||
|
if [ -n "$new_file" ]; then
|
||||||
|
upd_host="$new_file"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function upd_select_reboot {
|
||||||
|
dialog --keep-tite --radiolist "Should the board reboot after download finished" \
|
||||||
|
$((lines - 5)) $((cols - 5)) $((lines - 5 - 5)) \
|
||||||
|
"Reboot" "Restart board after done" $(if [ "$upd_noreboot" == "0" ]; then echo "ON"; else echo "OFF"; fi) \
|
||||||
|
"No reboot" "Continue running old system" $(if [ "$upd_noreboot" == "1" ]; then echo "ON"; else echo "OFF"; fi) \
|
||||||
|
2>$tempfile
|
||||||
|
|
||||||
|
res=$(cat $tempfile)
|
||||||
|
case $res in
|
||||||
|
"No reboot")
|
||||||
|
upd_noreboot=1
|
||||||
|
;;
|
||||||
|
"Reboot")
|
||||||
|
upd_noreboot=0
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
function upd_select_config {
|
||||||
|
dialog --keep-tite --radiolist "Should the configuration be kept" \
|
||||||
|
$((lines - 5)) $((cols - 5)) $((lines - 5 - 5)) \
|
||||||
|
"Keep" "Keep the config from old system" $(if [ "$upd_keepconf" == "1" ]; then echo "ON"; else echo "OFF"; fi) \
|
||||||
|
"Default" "Use default config for new system" $(if [ "$upd_keepconf" == "0" ]; then echo "ON"; else echo "OFF"; fi) \
|
||||||
|
2>$tempfile
|
||||||
|
|
||||||
|
res=$(cat $tempfile)
|
||||||
|
case $res in
|
||||||
|
"Keep")
|
||||||
|
upd_keepconf=1
|
||||||
|
;;
|
||||||
|
"Default")
|
||||||
|
upd_keepconf=0
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
function upd_select_forceboot {
|
||||||
|
dialog --keep-tite --radiolist "Should the boot loader be updated regardless of the version installed" \
|
||||||
|
$((lines - 5)) $((cols - 5)) $((lines - 5 - 5)) \
|
||||||
|
"Force" "Always update boot loader" $(if [ "$upd_forceboot" == "1" ]; then echo "ON"; else echo "OFF"; fi) \
|
||||||
|
"Version check" "Only upgrade if version is newer" $(if [ "$upd_forceboot" == "0" ]; then echo "ON"; else echo "OFF"; fi) \
|
||||||
|
2>$tempfile
|
||||||
|
|
||||||
|
res=$(cat $tempfile)
|
||||||
|
case $res in
|
||||||
|
"Force")
|
||||||
|
upd_forceboot=1
|
||||||
|
;;
|
||||||
|
"Version check")
|
||||||
|
upd_forceboot=0
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
function upd_select_forceimage {
|
||||||
|
dialog --keep-tite --radiolist "Should the image be stored in flash even if sanity checks would reject it" \
|
||||||
|
$((lines - 5)) $((cols - 5)) $((lines - 5 - 5)) \
|
||||||
|
"Force" "Disable sanity check and force use of image (dangerous)" $(if [ "$upd_forceimage" == "1" ]; then echo "ON"; else echo "OFF"; fi) \
|
||||||
|
"Only compatible" "Normal checks apply" $(if [ "$upd_forceimage" == "0" ]; then echo "ON"; else echo "OFF"; fi) \
|
||||||
|
2>$tempfile
|
||||||
|
|
||||||
|
res=$(cat $tempfile)
|
||||||
|
case $res in
|
||||||
|
"Force")
|
||||||
|
upd_forceimage=1
|
||||||
|
;;
|
||||||
|
"Only compatible")
|
||||||
|
upd_forceimage=0
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
function upd_select {
|
||||||
|
dialog --keep-tite --ok-label "Select" --cancel-label "Done" --menu "Select item to change" \
|
||||||
|
$((lines - 5)) $((cols - 5)) $((lines - 5 - 5)) \
|
||||||
|
"Firmware file" "$upd_fw_base" \
|
||||||
|
"Host IP" "$upd_host" \
|
||||||
|
"Reboot" $(if [ "$upd_noreboot" == "0" ]; then printf "Yes\n"; else printf "No\n"; fi) \
|
||||||
|
"Keep config" $(if [ "$upd_keepconf" == "1" ]; then printf "Yes\n"; else printf "No\n"; fi) \
|
||||||
|
"Force bootloader" $(if [ "$upd_forceboot" == "1" ]; then printf "Yes\n"; else printf "No\n"; fi) \
|
||||||
|
"Force image upgrade" $(if [ "$upd_forceimage" == "1" ]; then printf "Yes\n"; else printf "No\n"; fi) \
|
||||||
|
2>$tempfile
|
||||||
|
|
||||||
|
case $(cat $tempfile) in
|
||||||
|
"Firmware file")
|
||||||
|
upd_select_file
|
||||||
|
;;
|
||||||
|
"Host IP")
|
||||||
|
upd_select_target
|
||||||
|
;;
|
||||||
|
"Reboot")
|
||||||
|
upd_select_reboot
|
||||||
|
;;
|
||||||
|
"Keep config")
|
||||||
|
upd_select_config
|
||||||
|
;;
|
||||||
|
"Force bootloader")
|
||||||
|
upd_select_forceboot
|
||||||
|
;;
|
||||||
|
"Force image upgrade")
|
||||||
|
upd_select_forceimage
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
upd_select
|
||||||
|
}
|
||||||
|
function upd_select_start {
|
||||||
|
lines=$(tput lines)
|
||||||
|
cols=$(tput cols)
|
||||||
|
tempfile="$(mktemp)"
|
||||||
|
trap "rm -f $tempfile" 0 1 2 5 15
|
||||||
|
upd_select
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function ssh_upgrade {
|
||||||
|
upd_noreboot=0
|
||||||
|
upd_forceboot=0
|
||||||
|
upd_keepconf=0
|
||||||
|
upd_forceimage=0
|
||||||
|
upd_fw_base=""
|
||||||
|
upd_fw=""
|
||||||
|
upd_host="192.168.1.1"
|
||||||
|
do_dialog=0
|
||||||
|
|
||||||
|
while getopts "f:hnxt:icb" opt; do
|
||||||
|
case $opt in
|
||||||
|
n)
|
||||||
|
upd_noreboot=1
|
||||||
|
;;
|
||||||
|
x)
|
||||||
|
upd_forceimage=1
|
||||||
|
;;
|
||||||
|
b)
|
||||||
|
upd_forceboot=1
|
||||||
|
;;
|
||||||
|
c)
|
||||||
|
upd_keepconf=1
|
||||||
|
;;
|
||||||
|
v)
|
||||||
|
verbose=$OPTARG
|
||||||
|
;;
|
||||||
|
f)
|
||||||
|
upd_fw=$OPTARG
|
||||||
|
;;
|
||||||
|
t)
|
||||||
|
upd_host=$OPTARG
|
||||||
|
;;
|
||||||
|
i)
|
||||||
|
do_dialog=1
|
||||||
|
;;
|
||||||
|
h)
|
||||||
|
upd_usage
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
\?)
|
||||||
|
echo "Invalid option: -$OPTARG" >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ -z "$upd_fw" ]; then
|
||||||
|
set_config_string CONFIG_TARGET_BOARD
|
||||||
|
set_config_string CONFIG_TARGET_SUBTARGET
|
||||||
|
upd_fw="$(realpath -q --canonicalize-existing --relative-to=. "bin/targets/$CONFIG_TARGET_BOARD/$CONFIG_TARGET_SUBTARGET/"last.{pkgtb,itb})"
|
||||||
|
if [ -z "$upd_fw" ] && [ $do_dialog -eq 0 ]; then
|
||||||
|
echo "Could not find image. Check that last.{itb,pkgtb} exists or specify an image using -f <image> or -i (interactive)." >&2
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
upd_fw_base="$(basename "$upd_fw")"
|
||||||
|
|
||||||
|
[ $do_dialog -eq 1 ] && upd_select_start
|
||||||
|
|
||||||
|
if ! upd_ask_ok; then
|
||||||
|
upd_select_start
|
||||||
|
if ! upd_ask_ok; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f $upd_fw ]; then
|
||||||
|
echo "Firmware file $firmware does not exist."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
extra_args=""
|
||||||
|
[ $upd_noreboot -eq 1 ] && extra_args="$extra_args --no-reboot"
|
||||||
|
[ $upd_forceimage -eq 1 ] && extra_args="$extra_args --force"
|
||||||
|
[ $upd_keepconf -eq 0 ] && extra_args="$extra_args -n"
|
||||||
|
[ $upd_forceboot -eq 1 ] && extra_args="$extra_args --force-loader-upgrade"
|
||||||
|
|
||||||
|
pv "$upd_fw" |
|
||||||
|
ssh \
|
||||||
|
-o ConnectTimeout=60 \
|
||||||
|
-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null \
|
||||||
|
root@"$upd_host" \
|
||||||
|
sh -c "cat > '/tmp/$upd_fw_base' && (set -x && sysupgrade -v $extra_args /tmp/$upd_fw_base)" ||
|
||||||
|
echo "Sysupgrade failed" >&2 && return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
register_command "ssh_upgrade" "-t <host> -f <file> [opts] Install firmware on remote host with SSH"
|
||||||
35
iop/scripts/licenses_gen.sh
Normal file
35
iop/scripts/licenses_gen.sh
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
function license_report {
|
||||||
|
LICDIR="/tmp/licenses-generator/"
|
||||||
|
LICBIN="${LICDIR}/bin"
|
||||||
|
|
||||||
|
|
||||||
|
dpkg -s python3 python3-requests python3-yaml python3-mako python3-six &> /dev/null
|
||||||
|
if [ $? -ne 0 ]
|
||||||
|
then
|
||||||
|
echo "Missing dependencies"
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install python3 python3-requests python3-yaml python3-mako python3-six
|
||||||
|
|
||||||
|
else
|
||||||
|
echo "Dependecy check passed"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if [ -d "$LICDIR" ]; then
|
||||||
|
### Take action if $DIR exists ###
|
||||||
|
echo "Creating json licences file and html formated report"
|
||||||
|
else
|
||||||
|
### Control will jump here if $DIR does NOT exists ###
|
||||||
|
echo "Error: licenses-generator not found. getting from iopsys repo"
|
||||||
|
git clone git@dev.iopsys.eu:iopsys/licenses-generator.git $LICDIR
|
||||||
|
fi
|
||||||
|
LICGET=`${LICBIN}/licenses-generator gen-License bin/`
|
||||||
|
echo $LICGET
|
||||||
|
${LICBIN}/licenses-generator gen-licrprt $LICGET
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
register_command "license_report" "Generate a Licence report on latest build in json format and html under reports"
|
||||||
89
iop/scripts/taas.sh
Normal file
89
iop/scripts/taas.sh
Normal file
@@ -0,0 +1,89 @@
|
|||||||
|
|
||||||
|
# Shorthand command for doing a HIL runtime smoketest on the
|
||||||
|
# latest built image. Does the image boot up correctly?
|
||||||
|
# More info here:
|
||||||
|
# https://dev.iopsys.eu/iopsys/iopsys-taas
|
||||||
|
|
||||||
|
|
||||||
|
#--------------------------------------------------------------
|
||||||
|
function taas-init() {
|
||||||
|
local f
|
||||||
|
|
||||||
|
# Path to TaaS binarys. Try some likely ones.
|
||||||
|
if ! which taas-smoketest >/dev/null; then
|
||||||
|
PATH="${PATH}:${PWD}/../iopsys-taas/bin"
|
||||||
|
PATH="${PATH}:${PWD}/../taas/bin"
|
||||||
|
PATH="${PATH}:${HOME}/iopsys-taas/bin"
|
||||||
|
PATH="${PATH}:${HOME}/taas/bin"
|
||||||
|
PATH="${PATH}:${HOME}/bin"
|
||||||
|
PATH="${PATH}:/opt/iopsys-taas/bin"
|
||||||
|
PATH="${PATH}:/opt/taas/bin"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! which taas-smoketest >/dev/null; then
|
||||||
|
echo "Error; TaaS is missing! Install it with:"
|
||||||
|
echo "git clone git@dev.iopsys.eu:iopsys/iopsys-taas.git ../iopsys-taas"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Create a list of all images which might be of use.
|
||||||
|
for f in ${PWD}/bin/targets/iopsys-*/generic/last.*; do
|
||||||
|
[[ -s "$f" ]] && images+=("$f")
|
||||||
|
done
|
||||||
|
|
||||||
|
# Convert Iopsys target name to the TaaS product name format
|
||||||
|
# according to what is available in the remote lab for HIL.
|
||||||
|
# Also find a suitable image.
|
||||||
|
product=$(grep CONFIG_TARGET_PROFILE .config | \
|
||||||
|
tr -s "=\"" " " | cut -d " " -f 2) || exit
|
||||||
|
case "$product" in
|
||||||
|
smarthub3)
|
||||||
|
export product="SmartHub3a"
|
||||||
|
;;
|
||||||
|
dg400prime|eg400|ex600)
|
||||||
|
export product=$(echo -n "$product" | tr [[:lower:]] [[:upper:]])
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Unsupported target; skipping!"
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [[ ${#images[@]} -eq 0 ]]; then
|
||||||
|
echo "No image found"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#--------------------------------------------------------------
|
||||||
|
function taas-smoketest {
|
||||||
|
declare -a images
|
||||||
|
|
||||||
|
taas-init || return
|
||||||
|
echo "Testing a $product with ${images[@]}..."
|
||||||
|
command taas-smoketest "${images[@]}" "$product" "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#--------------------------------------------------------------
|
||||||
|
function taas-bootstrap {
|
||||||
|
declare -a images
|
||||||
|
|
||||||
|
if [[ -n "$1" ]]; then
|
||||||
|
taas-init || return
|
||||||
|
echo "Flashing $1..."
|
||||||
|
command taas-bootstrap "${images[@]}" "$@"
|
||||||
|
else
|
||||||
|
echo "Usage: ./iop taas-bootstrap dutX"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
register_command "taas-bootstrap" "Write image to a remote lab device."
|
||||||
|
register_command "taas-smoketest" "Write image to a remote lab device and test it."
|
||||||
|
|
||||||
61
iop/scripts/update_feed_branches.sh
Executable file
61
iop/scripts/update_feed_branches.sh
Executable file
@@ -0,0 +1,61 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Exported interface
|
||||||
|
function update_feed_branches {
|
||||||
|
local release="$1"
|
||||||
|
local ipath="$(pwd)"
|
||||||
|
local branch="$2"
|
||||||
|
local curbranch
|
||||||
|
|
||||||
|
[ -n "$release" ] || {
|
||||||
|
echo "Usage: ./update_feeds <RELEASE> <BRANCH>"
|
||||||
|
echo ""
|
||||||
|
echo "If you do not give a branch as argument,"
|
||||||
|
echo "<RELEASE> branch will be updated to commit"
|
||||||
|
echo "hash given in feeds.conf for each feed repo"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ -n "$branch" ]; then
|
||||||
|
echo "Updating release branch $release to specific commit hash given in feeds.conf for each feed repo at branch $branch"
|
||||||
|
if git diff-index --quiet HEAD; then
|
||||||
|
curbranch=`git symbolic-ref HEAD 2>/dev/null`
|
||||||
|
curbranch=${curbranch##refs/heads/}
|
||||||
|
if [ -z $curbranch ]; then
|
||||||
|
curbranch=`git log -1 --pretty=format:"%H"`
|
||||||
|
fi
|
||||||
|
git checkout $branch || {
|
||||||
|
echo "couldn't checkout branch $branch"
|
||||||
|
exit 99
|
||||||
|
}
|
||||||
|
else
|
||||||
|
echo "You have unsaved changes."
|
||||||
|
exit 99
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "Updating release branch $release to specific commit hash given in feeds.conf for each feed repo"
|
||||||
|
fi
|
||||||
|
|
||||||
|
ifeeds="$(grep -r 'dev.iopsys.eu' feeds.conf | awk '{print$2}' | tr '\n' ' ')"
|
||||||
|
|
||||||
|
for f in $ifeeds; do
|
||||||
|
commith=$(grep $f feeds.conf | cut -d'^' -f2)
|
||||||
|
cd $ipath/feeds/$f
|
||||||
|
git branch -D $release 2>/dev/null
|
||||||
|
echo "$f: updating release branch $release to commit $commith"
|
||||||
|
git checkout $commith
|
||||||
|
git push origin :$release
|
||||||
|
git checkout -b $release
|
||||||
|
git push --set-upstream origin $release
|
||||||
|
cd $ipath
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ -n "$branch" ]; then
|
||||||
|
echo "Release branch $release is updated to specific commit hash given in feeds.conf in in branch $branch for each feed repo"
|
||||||
|
git checkout $curbranch
|
||||||
|
else
|
||||||
|
echo "Release branch $release is updated to specific commit hash given in feeds.conf for each feed repo"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
register_command "update_feed_branches" "<release> [branch] Update branches in feeds from the current top level commit or specified top level branch"
|
||||||
@@ -4,7 +4,7 @@ PKG_NAME:=iopsys-analytics
|
|||||||
PKG_RELEASE:=$(COMMITCOUNT)
|
PKG_RELEASE:=$(COMMITCOUNT)
|
||||||
PKG_LICENSE:=PROPRIETARY
|
PKG_LICENSE:=PROPRIETARY
|
||||||
PKG_SOURCE_PROTO:=git
|
PKG_SOURCE_PROTO:=git
|
||||||
PKG_SOURCE_VERSION:=00189cea0a78b7a30dbfdd363b6d8e836437d1bc
|
PKG_SOURCE_VERSION:=fb84c1019a8a0fbfb624d9df8eb3604806645510
|
||||||
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/iopsys-analytics.git
|
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/iopsys-analytics.git
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)_$(PKG_SOURCE_VERSION).tar.xz
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)_$(PKG_SOURCE_VERSION).tar.xz
|
||||||
PKG_MIRROR_HASH:=skip
|
PKG_MIRROR_HASH:=skip
|
||||||
|
|||||||
@@ -6,13 +6,13 @@ include $(TOPDIR)/rules.mk
|
|||||||
include $(INCLUDE_DIR)/kernel.mk
|
include $(INCLUDE_DIR)/kernel.mk
|
||||||
|
|
||||||
PKG_NAME:=ipt-trigger
|
PKG_NAME:=ipt-trigger
|
||||||
PKG_VERSION:=1.0.2
|
PKG_VERSION:=1.0.1
|
||||||
PKG_LICENSE:=GPL-2.0
|
PKG_LICENSE:=GPL-2.0
|
||||||
|
|
||||||
LOCAL_DEV:=0
|
LOCAL_DEV:=0
|
||||||
ifneq ($(LOCAL_DEV),1)
|
ifneq ($(LOCAL_DEV),1)
|
||||||
PKG_SOURCE_PROTO:=git
|
PKG_SOURCE_PROTO:=git
|
||||||
PKG_SOURCE_VERSION:=4f3d4427403e0a9be7653c1b92907ae8ae5f21ae
|
PKG_SOURCE_VERSION:=8d4b4520a2935a5717a27f486a3fc78357b2a0cd
|
||||||
PKG_SOURCE_URL:=https://dev.iopsys.eu/network/ipt-trigger.git
|
PKG_SOURCE_URL:=https://dev.iopsys.eu/network/ipt-trigger.git
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
|
||||||
PKG_MIRROR_HASH:=skip
|
PKG_MIRROR_HASH:=skip
|
||||||
|
|||||||
@@ -5,12 +5,12 @@
|
|||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=libdpp
|
PKG_NAME:=libdpp
|
||||||
PKG_VERSION:=2.1.1
|
PKG_VERSION:=2.1.0
|
||||||
|
|
||||||
LOCAL_DEV=0
|
LOCAL_DEV=0
|
||||||
ifneq ($(LOCAL_DEV),1)
|
ifneq ($(LOCAL_DEV),1)
|
||||||
PKG_SOURCE_PROTO:=git
|
PKG_SOURCE_PROTO:=git
|
||||||
PKG_SOURCE_VERSION:=6024efd3db9dd490c07465ea9b0c15120063165c
|
PKG_SOURCE_VERSION:=1f82436531d4bb094b0b74e99613e0dfc84eada3
|
||||||
PKG_SOURCE_URL:=https://dev.iopsys.eu/multi-ap/libdpp.git
|
PKG_SOURCE_URL:=https://dev.iopsys.eu/multi-ap/libdpp.git
|
||||||
PKG_MAINTAINER:=Jakob Olsson <jakob.olsson@iopsys.eu>
|
PKG_MAINTAINER:=Jakob Olsson <jakob.olsson@iopsys.eu>
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)_$(PKG_SOURCE_VERSION).tar.xz
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)_$(PKG_SOURCE_VERSION).tar.xz
|
||||||
|
|||||||
@@ -5,13 +5,13 @@
|
|||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=libdsl
|
PKG_NAME:=libdsl
|
||||||
PKG_VERSION:=7.2.100
|
PKG_VERSION:=7.2.99
|
||||||
|
|
||||||
LOCAL_DEV=0
|
LOCAL_DEV=0
|
||||||
ifneq ($(LOCAL_DEV),1)
|
ifneq ($(LOCAL_DEV),1)
|
||||||
PKG_SOURCE_PROTO:=git
|
PKG_SOURCE_PROTO:=git
|
||||||
PKG_SOURCE_VERSION:=20875ec79fcc7c546c2f1253c867d6afbc8bff75
|
PKG_SOURCE_VERSION:=f9f3fcd0f4140540db5bd41059bcca7ded083024
|
||||||
PKG_SOURCE_URL:=https://dev.iopsys.eu/hal/libdsl.git
|
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/libdsl.git
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)_$(PKG_SOURCE_VERSION).tar.xz
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)_$(PKG_SOURCE_VERSION).tar.xz
|
||||||
PKG_MIRROR_HASH:=skip
|
PKG_MIRROR_HASH:=skip
|
||||||
endif
|
endif
|
||||||
@@ -27,8 +27,6 @@ ifeq ($(CONFIG_TARGET_brcmbca),y)
|
|||||||
CONFIG_ID=$(SUBTARGET:bcm%=BCM%)
|
CONFIG_ID=$(SUBTARGET:bcm%=BCM%)
|
||||||
CHIP_ID=$(CONFIG_ID:BCM9%=%)
|
CHIP_ID=$(CONFIG_ID:BCM9%=%)
|
||||||
TARGET_CFLAGS +=-DIOPSYS_BROADCOM -DCHIP_$(CHIP_ID) -DCONFIG_$(CONFIG_ID) \
|
TARGET_CFLAGS +=-DIOPSYS_BROADCOM -DCHIP_$(CHIP_ID) -DCONFIG_$(CONFIG_ID) \
|
||||||
-I$(STAGING_DIR)/usr/include/bcm963xx/bcmdrivers/broadcom/include/bcm963xx \
|
|
||||||
-I$(STAGING_DIR)/usr/include/bcm963xx/shared/opensource/include/bcm963xx \
|
|
||||||
-I$(STAGING_DIR)/usr/include/bcm963xx/bcmdrivers/opensource/include/bcm963xx \
|
-I$(STAGING_DIR)/usr/include/bcm963xx/bcmdrivers/opensource/include/bcm963xx \
|
||||||
-I$(STAGING_DIR)/usr/include/bcm963xx/userspace/public/include
|
-I$(STAGING_DIR)/usr/include/bcm963xx/userspace/public/include
|
||||||
else ifeq ($(CONFIG_TARGET_x86),y)
|
else ifeq ($(CONFIG_TARGET_x86),y)
|
||||||
@@ -57,19 +55,12 @@ define Package/libdsl
|
|||||||
SUBMENU:=IOPSYS HAL libs
|
SUBMENU:=IOPSYS HAL libs
|
||||||
MENU:=1
|
MENU:=1
|
||||||
TITLE:= xDSL library (libdsl)
|
TITLE:= xDSL library (libdsl)
|
||||||
DEPENDS+=TARGET_brcmbca:bcm963xx-bsp
|
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/libdsl/description
|
define Package/libdsl/description
|
||||||
Library provides xDSL/GFAST HAL APIs
|
Library provides xDSL/GFAST HAL APIs
|
||||||
endef
|
endef
|
||||||
|
|
||||||
ifeq ($(LOCAL_DEV),1)
|
|
||||||
define Build/Prepare
|
|
||||||
$(CP) -rf ./libdsl/* $(PKG_BUILD_DIR)/
|
|
||||||
endef
|
|
||||||
endif
|
|
||||||
|
|
||||||
define Package/libdsl/config
|
define Package/libdsl/config
|
||||||
if PACKAGE_libdsl
|
if PACKAGE_libdsl
|
||||||
config LIBDSL_DEBUG
|
config LIBDSL_DEBUG
|
||||||
|
|||||||
@@ -5,12 +5,12 @@
|
|||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=libethernet
|
PKG_NAME:=libethernet
|
||||||
PKG_VERSION:=7.2.111
|
PKG_VERSION:=7.2.109
|
||||||
|
|
||||||
LOCAL_DEV=0
|
LOCAL_DEV=0
|
||||||
ifneq ($(LOCAL_DEV),1)
|
ifneq ($(LOCAL_DEV),1)
|
||||||
PKG_SOURCE_PROTO:=git
|
PKG_SOURCE_PROTO:=git
|
||||||
PKG_SOURCE_VERSION:=6e7216e657dfb59e869e393ef58e6b4593c16fc7
|
PKG_SOURCE_VERSION:=cc72f5ab0171cd0fc29bb48dafff6751ab2f0d9c
|
||||||
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/libethernet.git
|
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/libethernet.git
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)_$(PKG_SOURCE_VERSION).tar.xz
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)_$(PKG_SOURCE_VERSION).tar.xz
|
||||||
PKG_MIRROR_HASH:=skip
|
PKG_MIRROR_HASH:=skip
|
||||||
|
|||||||
@@ -5,12 +5,12 @@
|
|||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=libqos
|
PKG_NAME:=libqos
|
||||||
PKG_VERSION:=7.2.108
|
PKG_VERSION:=7.2.107
|
||||||
|
|
||||||
LOCAL_DEV=0
|
LOCAL_DEV=0
|
||||||
ifneq ($(LOCAL_DEV),1)
|
ifneq ($(LOCAL_DEV),1)
|
||||||
PKG_SOURCE_PROTO:=git
|
PKG_SOURCE_PROTO:=git
|
||||||
PKG_SOURCE_VERSION:=6a72e35e1a662e2f707e4901679676a9c09b3bc2
|
PKG_SOURCE_VERSION:=de659f50c0ae1cd4ec64315b301c53595eaf39de
|
||||||
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/libqos.git
|
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/libqos.git
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)_$(PKG_SOURCE_VERSION).tar.xz
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)_$(PKG_SOURCE_VERSION).tar.xz
|
||||||
PKG_MIRROR_HASH:=skip
|
PKG_MIRROR_HASH:=skip
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ include $(TOPDIR)/rules.mk
|
|||||||
|
|
||||||
PKG_NAME:=libvoice-broadcom
|
PKG_NAME:=libvoice-broadcom
|
||||||
PKG_RELEASE:=1
|
PKG_RELEASE:=1
|
||||||
PKG_VERSION:=1.0.15
|
PKG_VERSION:=1.0.13
|
||||||
PKG_LICENSE:=PROPRIETARY
|
PKG_LICENSE:=PROPRIETARY
|
||||||
PKG_LICENSE_FILES:=LICENSE
|
PKG_LICENSE_FILES:=LICENSE
|
||||||
|
|
||||||
@@ -17,7 +17,7 @@ LOCAL_DEV=0
|
|||||||
ifneq ($(LOCAL_DEV),1)
|
ifneq ($(LOCAL_DEV),1)
|
||||||
PKG_SOURCE_PROTO:=git
|
PKG_SOURCE_PROTO:=git
|
||||||
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/$(PKG_NAME).git
|
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/$(PKG_NAME).git
|
||||||
PKG_SOURCE_VERSION:=baf5ebfb45404714bbfcc3068080f93265934d8a
|
PKG_SOURCE_VERSION:=f1509651217d027376b5b7fc3f64ca86662e9b2d
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
|
||||||
PKG_MIRROR_HASH:=skip
|
PKG_MIRROR_HASH:=skip
|
||||||
endif
|
endif
|
||||||
@@ -38,7 +38,7 @@ define Package/$(PKG_NAME)
|
|||||||
CATEGORY:=Utilities
|
CATEGORY:=Utilities
|
||||||
TITLE:=IOPSYS libvoice for Broadcom
|
TITLE:=IOPSYS libvoice for Broadcom
|
||||||
URL:=
|
URL:=
|
||||||
DEPENDS:=+bcm963xx-voice
|
DEPENDS:=
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/$(PKG_NAME)/description
|
define Package/$(PKG_NAME)/description
|
||||||
@@ -56,3 +56,4 @@ define Package/$(PKG_NAME)/install
|
|||||||
endef
|
endef
|
||||||
|
|
||||||
$(eval $(call BuildPackage,$(PKG_NAME)))
|
$(eval $(call BuildPackage,$(PKG_NAME)))
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ include $(TOPDIR)/rules.mk
|
|||||||
|
|
||||||
PKG_NAME:=libvoice-d2
|
PKG_NAME:=libvoice-d2
|
||||||
PKG_RELEASE:=1
|
PKG_RELEASE:=1
|
||||||
PKG_VERSION:=1.1.14
|
PKG_VERSION:=1.1.11
|
||||||
PKG_LICENSE:=PROPRIETARY
|
PKG_LICENSE:=PROPRIETARY
|
||||||
PKG_LICENSE_FILES:=LICENSE
|
PKG_LICENSE_FILES:=LICENSE
|
||||||
|
|
||||||
@@ -17,7 +17,7 @@ LOCAL_DEV=0
|
|||||||
ifneq ($(LOCAL_DEV),1)
|
ifneq ($(LOCAL_DEV),1)
|
||||||
PKG_SOURCE_PROTO:=git
|
PKG_SOURCE_PROTO:=git
|
||||||
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/$(PKG_NAME).git
|
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/$(PKG_NAME).git
|
||||||
PKG_SOURCE_VERSION:=0b2bef862fb5aea0b285e339459f46779224e2d0
|
PKG_SOURCE_VERSION:=95fb29a31f7665abbe87af4a74cf52b7e5f22a29
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
|
||||||
PKG_MIRROR_HASH:=skip
|
PKG_MIRROR_HASH:=skip
|
||||||
endif
|
endif
|
||||||
|
|||||||
@@ -5,12 +5,12 @@
|
|||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=libwifi
|
PKG_NAME:=libwifi
|
||||||
PKG_VERSION:=7.7.8
|
PKG_VERSION:=7.4.69
|
||||||
|
|
||||||
LOCAL_DEV=0
|
LOCAL_DEV=0
|
||||||
ifneq ($(LOCAL_DEV),1)
|
ifneq ($(LOCAL_DEV),1)
|
||||||
PKG_SOURCE_PROTO:=git
|
PKG_SOURCE_PROTO:=git
|
||||||
PKG_SOURCE_VERSION:=b12d933e1cdd3b84eefbb45b0ecf2d1927f5d5dc
|
PKG_SOURCE_VERSION:=8a5d8b5defb7cedc5876bb5fbee5c1ad185de889
|
||||||
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/libwifi.git
|
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/libwifi.git
|
||||||
PKG_MAINTAINER:=Anjan Chanda <anjan.chanda@iopsys.eu>
|
PKG_MAINTAINER:=Anjan Chanda <anjan.chanda@iopsys.eu>
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)_$(PKG_SOURCE_VERSION).tar.xz
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)_$(PKG_SOURCE_VERSION).tar.xz
|
||||||
@@ -43,9 +43,6 @@ else ifeq ($(CONFIG_TARGET_airoha),y)
|
|||||||
TARGET_PLATFORM=ECONET
|
TARGET_PLATFORM=ECONET
|
||||||
TARGET_WIFI_TYPE=MEDIATEK MAC80211
|
TARGET_WIFI_TYPE=MEDIATEK MAC80211
|
||||||
TARGET_CFLAGS +=-DIOPSYS_ECONET
|
TARGET_CFLAGS +=-DIOPSYS_ECONET
|
||||||
ifeq ($(CONFIG_TARGET_airoha_an7581),y)
|
|
||||||
TARGET_CFLAGS +=-DCONFIG_MTK
|
|
||||||
endif
|
|
||||||
else ifeq ($(CONFIG_TARGET_ipq95xx),y)
|
else ifeq ($(CONFIG_TARGET_ipq95xx),y)
|
||||||
TARGET_PLATFORM=IPQ95XX
|
TARGET_PLATFORM=IPQ95XX
|
||||||
TARGET_WIFI_TYPE=QUALCOMM MAC80211
|
TARGET_WIFI_TYPE=QUALCOMM MAC80211
|
||||||
@@ -54,6 +51,10 @@ else ifeq ($(CONFIG_TARGET_ipq53xx),y)
|
|||||||
TARGET_PLATFORM=IPQ53XX
|
TARGET_PLATFORM=IPQ53XX
|
||||||
TARGET_WIFI_TYPE=QUALCOMM MAC80211
|
TARGET_WIFI_TYPE=QUALCOMM MAC80211
|
||||||
TARGET_CFLAGS +=-DIPQ53XX
|
TARGET_CFLAGS +=-DIPQ53XX
|
||||||
|
else ifeq ($(CONFIG_TARGET_mediatek),y)
|
||||||
|
TARGET_PLATFORM=LINUX
|
||||||
|
TARGET_WIFI_TYPE=MEDIATEK MAC80211
|
||||||
|
TARGET_CFLAGS +=-DIOPSYS_LINUX
|
||||||
else
|
else
|
||||||
$(info Unexpected CONFIG_TARGET, use default MAC80211)
|
$(info Unexpected CONFIG_TARGET, use default MAC80211)
|
||||||
TARGET_PLATFORM=MAC80211
|
TARGET_PLATFORM=MAC80211
|
||||||
@@ -75,10 +76,6 @@ ifeq ($(CONFIG_LIBWIFI_USE_CTRL_IFACE),y)
|
|||||||
TARGET_CFLAGS +=-DLIBWIFI_USE_CTRL_IFACE
|
TARGET_CFLAGS +=-DLIBWIFI_USE_CTRL_IFACE
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(CONFIG_LIBWIFI_SKIP_PROBES),y)
|
|
||||||
TARGET_CFLAGS +=-DLIBWIFI_BRCM_SKIP_PROBES
|
|
||||||
endif
|
|
||||||
|
|
||||||
TARGET_CFLAGS += \
|
TARGET_CFLAGS += \
|
||||||
-I$(STAGING_DIR)/usr/include \
|
-I$(STAGING_DIR)/usr/include \
|
||||||
-I$(STAGING_DIR)/usr/include/openssl \
|
-I$(STAGING_DIR)/usr/include/openssl \
|
||||||
@@ -147,11 +144,6 @@ define Package/libwifi/config
|
|||||||
config LIBWIFI_USE_CTRL_IFACE
|
config LIBWIFI_USE_CTRL_IFACE
|
||||||
bool "Create UNIX sockets to interface with hostapd/wpa_supplicant"
|
bool "Create UNIX sockets to interface with hostapd/wpa_supplicant"
|
||||||
default y
|
default y
|
||||||
|
|
||||||
config LIBWIFI_SKIP_PROBES
|
|
||||||
bool "Don't create probe-req events"
|
|
||||||
default y
|
|
||||||
|
|
||||||
endif
|
endif
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
|||||||
@@ -1,34 +0,0 @@
|
|||||||
if PACKAGE_logmngr
|
|
||||||
choice
|
|
||||||
prompt "Select backend for syslog management"
|
|
||||||
default LOGMNGR_BACKEND_FLUENTBIT
|
|
||||||
depends on PACKAGE_logmngr
|
|
||||||
help
|
|
||||||
Select which backend daemon to use for syslog management
|
|
||||||
|
|
||||||
config LOGMNGR_BACKEND_FLUENTBIT
|
|
||||||
bool "Use fluent-bit for log management"
|
|
||||||
help
|
|
||||||
Enable this option to use fluent-bit for log management.
|
|
||||||
|
|
||||||
config LOGMNGR_BACKEND_SYSLOG_NG
|
|
||||||
bool "Use syslog-ng for log management"
|
|
||||||
help
|
|
||||||
Enable this option to use syslog-ng for log management.
|
|
||||||
|
|
||||||
endchoice
|
|
||||||
|
|
||||||
config LOGMNGR_LOGROTATE
|
|
||||||
bool "Logrotate support"
|
|
||||||
depends on PACKAGE_logmngr
|
|
||||||
default y
|
|
||||||
help
|
|
||||||
It adds support for logrotate functionality.
|
|
||||||
|
|
||||||
config LOGMNGR_VENDOR_LOG_FILE
|
|
||||||
bool "Enable Device.DeviceInfo.VendorLogFile. Object"
|
|
||||||
depends on PACKAGE_logmngr
|
|
||||||
default y
|
|
||||||
help
|
|
||||||
It adds support for Device.DeviceInfo.VendorLogFile. Object.
|
|
||||||
endif
|
|
||||||
@@ -1,78 +0,0 @@
|
|||||||
#
|
|
||||||
# Copyright (C) 2024 iopsys
|
|
||||||
#
|
|
||||||
|
|
||||||
include $(TOPDIR)/rules.mk
|
|
||||||
|
|
||||||
PKG_NAME:=logmngr
|
|
||||||
PKG_VERSION:=1.0.6
|
|
||||||
LOCAL_DEV:=0
|
|
||||||
ifneq ($(LOCAL_DEV),1)
|
|
||||||
PKG_SOURCE_PROTO:=git
|
|
||||||
PKG_SOURCE_URL:=https://dev.iopsys.eu/system/logmngr.git
|
|
||||||
PKG_SOURCE_VERSION:=37f9eef6ad92ab4835893c6c8ee65338917071b6
|
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
|
||||||
PKG_MIRROR_HASH:=skip
|
|
||||||
endif
|
|
||||||
|
|
||||||
PKG_LICENSE:=GPL-2.0-only
|
|
||||||
PKG_LICENSE_FILES:=LICENSE
|
|
||||||
|
|
||||||
include $(INCLUDE_DIR)/package.mk
|
|
||||||
include ../bbfdm/bbfdm.mk
|
|
||||||
|
|
||||||
MAKE_PATH:=bbf_plugin
|
|
||||||
|
|
||||||
define Package/logmngr
|
|
||||||
SECTION:=utils
|
|
||||||
CATEGORY:=Utilities
|
|
||||||
TITLE:=Logging Manager
|
|
||||||
DEPENDS:=+LOGMNGR_BACKEND_FLUENTBIT:fluent-bit +LOGMNGR_LOGROTATE:logrotate
|
|
||||||
DEPENDS+=+LOGMNGR_BACKEND_SYSLOG_NG:syslog-ng
|
|
||||||
DEPENDS+=+libbbfdm-api +libbbfdm-ubus +dm-service
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Package/logmngr/description
|
|
||||||
Configure log management. This package has the datamodel as well as the
|
|
||||||
the backend implementation for handling syslog.
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Package/$(PKG_NAME)/config
|
|
||||||
source "$(SOURCE)/Config.in"
|
|
||||||
endef
|
|
||||||
|
|
||||||
ifeq ($(LOCAL_DEV),1)
|
|
||||||
define Build/Prepare
|
|
||||||
$(CP) -rf ./logmngr/* $(PKG_BUILD_DIR)/
|
|
||||||
endef
|
|
||||||
endif
|
|
||||||
|
|
||||||
define Package/logmngr/install
|
|
||||||
$(INSTALL_DIR) $(1)/etc/init.d
|
|
||||||
$(INSTALL_BIN) ./files/logmngr.init $(1)/etc/init.d/logmngr
|
|
||||||
|
|
||||||
$(INSTALL_DIR) $(1)/usr/sbin
|
|
||||||
|
|
||||||
$(INSTALL_DIR) $(1)/etc/uci-defaults
|
|
||||||
$(INSTALL_BIN) ./files/10-logmngr_config_generate $(1)/etc/uci-defaults/
|
|
||||||
|
|
||||||
$(INSTALL_DIR) $(1)/lib/logmngr
|
|
||||||
ifeq ($(CONFIG_LOGMNGR_BACKEND_FLUENTBIT),y)
|
|
||||||
$(INSTALL_DATA) ./files/lib/logmngr/fluent-bit.sh $(1)/lib/logmngr/
|
|
||||||
$(INSTALL_BIN) ./files/logread $(1)/usr/sbin
|
|
||||||
endif
|
|
||||||
ifeq ($(CONFIG_LOGMNGR_BACKEND_SYSLOG_NG),y)
|
|
||||||
$(INSTALL_DATA) ./files/lib/logmngr/syslog-ng.sh $(1)/lib/logmngr/
|
|
||||||
endif
|
|
||||||
$(BBFDM_INSTALL_CORE_PLUGIN) $(PKG_BUILD_DIR)/bbf_plugin/libbbfsyslog.so $(1)
|
|
||||||
ifeq ($(CONFIG_LOGMNGR_LOGROTATE),y)
|
|
||||||
$(INSTALL_BIN) ./files/11-logmngr_logrotate_config_generate $(1)/etc/uci-defaults/
|
|
||||||
$(INSTALL_DATA) ./files/lib/logmngr/logrotate.sh $(1)/lib/logmngr/
|
|
||||||
$(BBFDM_INSTALL_MS_PLUGIN) $(PKG_BUILD_DIR)/bbf_plugin/libbbflogrotate.so $(1) sysmngr
|
|
||||||
endif
|
|
||||||
ifeq ($(CONFIG_LOGMNGR_VENDOR_LOG_FILE),y)
|
|
||||||
$(BBFDM_INSTALL_MS_PLUGIN) $(PKG_BUILD_DIR)/bbf_plugin/libbbfvendorlog.so $(1) sysmngr
|
|
||||||
endif
|
|
||||||
endef
|
|
||||||
|
|
||||||
$(eval $(call BuildPackage,logmngr))
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
if [ -s "/etc/config/logmngr" ]; then
|
|
||||||
if uci -q get logmngr.@globals[0] >/dev/null; then
|
|
||||||
# return if there is any valid content
|
|
||||||
exit
|
|
||||||
else
|
|
||||||
rm -f /etc/config/logmngr
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
touch /etc/config/logmngr
|
|
||||||
|
|
||||||
uci set logmngr.globals=globals
|
|
||||||
uci set logmngr.globals.enable=1
|
|
||||||
|
|
||||||
uci set logmngr.a1=action
|
|
||||||
uci set logmngr.a1.name="ac1"
|
|
||||||
|
|
||||||
uci set logmngr.lf1=log_file
|
|
||||||
uci set logmngr.lf1.enable=1
|
|
||||||
uci set logmngr.lf1.action="ac1"
|
|
||||||
uci set logmngr.lf1.file="/var/log/messages"
|
|
||||||
|
|
||||||
uci set logmngr.lr1=log_remote
|
|
||||||
uci set logmngr.lr1.enable=0
|
|
||||||
uci set logmngr.lr1.action="ac1"
|
|
||||||
uci set logmngr.lr1.port="514"
|
|
||||||
uci commit logmngr
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
if [ -s "/etc/config/logmngr" ]; then
|
|
||||||
if uci -q get logmngr.@log_rotate[0] >/dev/null; then
|
|
||||||
# return if there is any valid content
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
uci set logmngr.lro1=log_rotate
|
|
||||||
uci set logmngr.lro1.enable=1
|
|
||||||
uci set logmngr.lro1.file_name="/var/log/messages"
|
|
||||||
uci set logmngr.lro1.file_count=1
|
|
||||||
uci set logmngr.lro1.max_file_size=1000000
|
|
||||||
uci commit logmngr
|
|
||||||
fi
|
|
||||||
@@ -1,321 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
. /lib/functions.sh
|
|
||||||
. /lib/logmngr/logrotate.sh
|
|
||||||
|
|
||||||
CONF_FILE=/etc/fluent-bit/fluent-bit.conf
|
|
||||||
TMP_CONF_FILE=/tmp/fluent-bit/fluent-bit.conf
|
|
||||||
|
|
||||||
create_config_file() {
|
|
||||||
mkdir -p /tmp/fluent-bit
|
|
||||||
rm -f ${TMP_CONF_FILE}
|
|
||||||
touch ${TMP_CONF_FILE}
|
|
||||||
}
|
|
||||||
|
|
||||||
create_service_section() {
|
|
||||||
# the service section of the fluent-bit.conf file has hardcoded values,
|
|
||||||
# no need to lookup any uci section to configure this section
|
|
||||||
echo "[SERVICE]" >> ${TMP_CONF_FILE}
|
|
||||||
echo " flush 3" >> ${TMP_CONF_FILE}
|
|
||||||
echo " daemon off" >> ${TMP_CONF_FILE}
|
|
||||||
echo " log_level info" >> ${TMP_CONF_FILE}
|
|
||||||
echo " parsers_file /etc/fluent-bit/parsers.conf" >> ${TMP_CONF_FILE}
|
|
||||||
}
|
|
||||||
|
|
||||||
create_input_section() {
|
|
||||||
local tag="$1"
|
|
||||||
# the input in our case is always syslog, hence, this section of the
|
|
||||||
# fluent-bit.conf file has hardcoded values as well that do not depend
|
|
||||||
# on any uci value
|
|
||||||
echo "[INPUT]" >> ${TMP_CONF_FILE}
|
|
||||||
echo " name syslog" >> ${TMP_CONF_FILE}
|
|
||||||
echo " tag $tag" >> ${TMP_CONF_FILE}
|
|
||||||
echo " path /dev/log" >> ${TMP_CONF_FILE}
|
|
||||||
}
|
|
||||||
|
|
||||||
generate_facility_regex() {
|
|
||||||
local facility_level=$1
|
|
||||||
local pri=0
|
|
||||||
|
|
||||||
if [ "$facility_level" == "24" ]; then
|
|
||||||
# value 24 means all facility level, which is as good as not
|
|
||||||
# generating a filter section, so return
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
# facility_level is a list value, hence, generate regex for
|
|
||||||
# each value
|
|
||||||
IFS=" "
|
|
||||||
for val in $facility_level; do
|
|
||||||
# as per rfc 5424 and 3164, pri in syslog msg is
|
|
||||||
# facility*8+severity. Severity value can range from 0-7 hence
|
|
||||||
# generate regex for each.
|
|
||||||
for sval in 0 1 2 3 4 5 6 7; do
|
|
||||||
pri=`expr $val \* 8 + $sval`
|
|
||||||
echo " regex pri $pri" >> ${TMP_CONF_FILE}
|
|
||||||
done
|
|
||||||
done
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
generate_severity_regex() {
|
|
||||||
local sev_level="$1"
|
|
||||||
local sev_compare="$2"
|
|
||||||
local sev_action="$3"
|
|
||||||
|
|
||||||
local pri=0
|
|
||||||
local param="exclude"
|
|
||||||
|
|
||||||
if [ "$sev_action" == "0" ]; then
|
|
||||||
param="regex"
|
|
||||||
fi
|
|
||||||
|
|
||||||
local fval=0
|
|
||||||
if [ "$sev_compare" == "0" ]; then
|
|
||||||
# generate regex for all facility values, with severity=sev_level
|
|
||||||
while [ $fval -le 23 ] ; do
|
|
||||||
pri=`expr $fval \* 8 + $sev_level`
|
|
||||||
echo " $param pri $pri" >> ${TMP_CONF_FILE}
|
|
||||||
fval=$((fval + 1))
|
|
||||||
done
|
|
||||||
elif [ "$sev_compare" == "1" ]; then
|
|
||||||
# generate regex for all severity value greater than or equal to
|
|
||||||
# sev_level. please, lower value have higher precedence, so sev_level
|
|
||||||
# 0 which is emergency has higher precedence than error which is 3
|
|
||||||
while [ $fval -le 23 ] ; do
|
|
||||||
sval=0
|
|
||||||
while [ $sev_level -ge $sval ]; do
|
|
||||||
pri=`expr $fval \* 8 + $sval`
|
|
||||||
echo " $param pri $pri" >> ${TMP_CONF_FILE}
|
|
||||||
sval=$((sval + 1))
|
|
||||||
done
|
|
||||||
fval=$((fval + 1))
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
handle_filter_conf() {
|
|
||||||
local section="$1" # config filter
|
|
||||||
local filter_name="$2"
|
|
||||||
local name
|
|
||||||
|
|
||||||
# no need to proceed if name of filter section is not one of the values
|
|
||||||
# listed in option filter in config action section
|
|
||||||
config_get name $section name
|
|
||||||
if [ "$name" != "$filter_name" ]; then
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
# as per data model, at a time either facility_level or severity_level can
|
|
||||||
# be specified along with pattern_match. hence, first process and generate
|
|
||||||
# regex for pattern_match which is common in both condition. Next, we will
|
|
||||||
# process facility_level and return if facility level is defined and not
|
|
||||||
# process severity related params at all.
|
|
||||||
|
|
||||||
local pattern_match
|
|
||||||
config_get pattern_match $section pattern_match
|
|
||||||
if [ -n "$pattern_match" ]; then
|
|
||||||
echo " regex $pattern_match" >> ${TMP_CONF_FILE}
|
|
||||||
fi
|
|
||||||
|
|
||||||
local facility_level
|
|
||||||
config_get facility_level $section facility_level
|
|
||||||
|
|
||||||
if [ -n "$facility_level" ]; then
|
|
||||||
generate_facility_regex $facility_level
|
|
||||||
# return from here since if facility_level is defined, then no
|
|
||||||
# need to process severity_level
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
local sev_level
|
|
||||||
local sev_compare
|
|
||||||
local sev_action
|
|
||||||
config_get sev_level $section severity_level
|
|
||||||
|
|
||||||
if [ -n "$sev_level" ]; then
|
|
||||||
# value 1 of severity compare corresponds to data model
|
|
||||||
# and system default which is EqualorHigher
|
|
||||||
config_get sev_compare $section severity_compare 1
|
|
||||||
# value 0 of severity action corresponds to data model
|
|
||||||
# and system default that is log
|
|
||||||
config_get sev_action $section severity_action 0
|
|
||||||
|
|
||||||
generate_severity_regex $sev_level $sev_compare $sev_action
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
create_filter_section() {
|
|
||||||
local match="$1"
|
|
||||||
|
|
||||||
echo "[FILTER]" >> ${TMP_CONF_FILE}
|
|
||||||
echo " name grep" >> ${TMP_CONF_FILE}
|
|
||||||
echo " match $match" >> ${TMP_CONF_FILE}
|
|
||||||
echo " logical_op or" >> ${TMP_CONF_FILE} # handle multiple filters
|
|
||||||
}
|
|
||||||
|
|
||||||
handle_filter_ref() {
|
|
||||||
local filter_name="$1"
|
|
||||||
config_foreach handle_filter_conf filter "$filter_name"
|
|
||||||
}
|
|
||||||
|
|
||||||
handle_log_file() {
|
|
||||||
local section="$1" # out_file section
|
|
||||||
local match="$2"
|
|
||||||
local action_ref
|
|
||||||
|
|
||||||
config_get action_ref $section action
|
|
||||||
if [ "$action_ref" != "$match" ]; then
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
local enabled
|
|
||||||
config_get enabled $section enable
|
|
||||||
if [ "$enabled" == 0 ]; then
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
local file
|
|
||||||
config_get file $section file
|
|
||||||
if [ -z "$file" ]; then
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "[OUTPUT]" >> ${TMP_CONF_FILE}
|
|
||||||
echo " name file" >> ${TMP_CONF_FILE}
|
|
||||||
echo " match $match" >> ${TMP_CONF_FILE}
|
|
||||||
echo " file $file" >> ${TMP_CONF_FILE}
|
|
||||||
echo " format template" >> ${TMP_CONF_FILE}
|
|
||||||
echo " template {time} {hostname} {ident}: {message}" >> ${TMP_CONF_FILE}
|
|
||||||
}
|
|
||||||
|
|
||||||
handle_log_remote() {
|
|
||||||
local section="$1"
|
|
||||||
local match="$2"
|
|
||||||
local action_ref
|
|
||||||
|
|
||||||
config_get action_ref $section action
|
|
||||||
if [ "$action_ref" != "$match" ]; then
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
local enabled
|
|
||||||
config_get enabled $section enable
|
|
||||||
if [ "$enabled" == 0 ]; then
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
local address
|
|
||||||
config_get address $section log_ip
|
|
||||||
if [ -z "$address" ]; then
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "[OUTPUT]" >> ${TMP_CONF_FILE}
|
|
||||||
echo " name syslog" >> ${TMP_CONF_FILE}
|
|
||||||
echo " match $match" >> ${TMP_CONF_FILE}
|
|
||||||
echo " host $address" >> ${TMP_CONF_FILE}
|
|
||||||
|
|
||||||
local proto # holds value tcp or udp
|
|
||||||
config_get proto $section proto
|
|
||||||
if [ -n "$proto" ]; then
|
|
||||||
if [ "$proto" == "tls" ]; then
|
|
||||||
echo " mode tcp" >> ${TMP_CONF_FILE}
|
|
||||||
echo " tls on" >> ${TMP_CONF_FILE}
|
|
||||||
else
|
|
||||||
echo " mode $proto" >> ${TMP_CONF_FILE}
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
local port
|
|
||||||
config_get port $section port
|
|
||||||
if [ -n "$port" ]; then
|
|
||||||
echo " port $port" >> ${TMP_CONF_FILE}
|
|
||||||
fi
|
|
||||||
|
|
||||||
local cert
|
|
||||||
local peer_verify
|
|
||||||
config_get cert $section cert
|
|
||||||
if [ -n "$cert" ]; then
|
|
||||||
echo " tls.crt_file $cert" >> ${TMP_CONF_FILE}
|
|
||||||
|
|
||||||
config_get peer_verify $section peer_verify
|
|
||||||
if [ "$peer_verify" == "1" ]; then
|
|
||||||
echo " tls.verify on" >> ${TMP_CONF_FILE}
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
handle_action() {
|
|
||||||
local section="$1"
|
|
||||||
|
|
||||||
local filter
|
|
||||||
config_get filter $section filter
|
|
||||||
|
|
||||||
# use config action option name as tag for input
|
|
||||||
local tag
|
|
||||||
config_get tag $section name
|
|
||||||
if [ -z "$tag" ]; then
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
create_input_section $tag
|
|
||||||
if [ -n "$filter" ]; then
|
|
||||||
# the only fluentbit filter that is useful for the datamodel is
|
|
||||||
# grep. Also, fluentbit does not seem to handle multiple instances
|
|
||||||
# of FILTER of same kind. Hence, each filter section corresponding
|
|
||||||
# to an action entry in the uci would translate for us into a set of
|
|
||||||
# regex/exclude values instead of individual FILTER section per uci
|
|
||||||
# section filter is a list, treat according
|
|
||||||
create_filter_section $tag
|
|
||||||
|
|
||||||
IFS=" "
|
|
||||||
for finst in $filter; do
|
|
||||||
handle_filter_ref $finst
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
# handle output, each action can be associated with a out_log and out_syslog
|
|
||||||
# section so figure out if any out_log or out_syslog section is associated
|
|
||||||
# with this and action and setup output accordingly.
|
|
||||||
config_foreach handle_log_file log_file "$tag"
|
|
||||||
config_foreach handle_log_remote log_remote "$tag"
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
handle_action_section() {
|
|
||||||
config_foreach handle_action action
|
|
||||||
}
|
|
||||||
|
|
||||||
apply_config_file() {
|
|
||||||
cp ${TMP_CONF_FILE} ${CONF_FILE}
|
|
||||||
}
|
|
||||||
|
|
||||||
PROG=/usr/sbin/fluent-bit
|
|
||||||
logmngr_init() {
|
|
||||||
create_config_file
|
|
||||||
|
|
||||||
config_load logmngr
|
|
||||||
local enabled
|
|
||||||
config_get enabled globals enable
|
|
||||||
|
|
||||||
if [ "$enabled" == "0" ]; then
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
create_service_section
|
|
||||||
handle_action_section
|
|
||||||
apply_config_file
|
|
||||||
|
|
||||||
if [ -f /lib/logmngr/logrotate.sh ]; then
|
|
||||||
logrotate_init
|
|
||||||
fi
|
|
||||||
|
|
||||||
procd_open_instance logmngr
|
|
||||||
procd_set_param command $PROG -c $CONF_FILE
|
|
||||||
procd_set_param file $CONF_FILE
|
|
||||||
procd_set_param respawn
|
|
||||||
procd_close_instance
|
|
||||||
}
|
|
||||||
@@ -1,98 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
. /lib/functions.sh
|
|
||||||
|
|
||||||
LOGROTATE_FILE=/etc/logrotate.conf
|
|
||||||
LOGROTATE_TMP_FILE=/tmp/logrotate/logrotate.conf
|
|
||||||
|
|
||||||
create_logrotate_file() {
|
|
||||||
mkdir -p /tmp/logrotate
|
|
||||||
rm -f ${LOGROTATE_TMP_FILE}
|
|
||||||
touch ${LOGROTATE_FILE}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
handle_logrotate() {
|
|
||||||
local section="$1"
|
|
||||||
|
|
||||||
local enabled
|
|
||||||
config_get enabled $section enable
|
|
||||||
if [ "$enabled" == "0" ]; then
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
local file_name
|
|
||||||
config_get file_name $section file_name
|
|
||||||
if [ -z "$file_name" ]; then
|
|
||||||
# no file to rotate, return
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo -e "$file_name {" >> ${LOGROTATE_TMP_FILE}
|
|
||||||
echo -e "\tcreate" >> ${LOGROTATE_TMP_FILE}
|
|
||||||
echo -e "\tmissingok" >> ${LOGROTATE_TMP_FILE}
|
|
||||||
echo -e "\tnotifempty" >> ${LOGROTATE_TMP_FILE}
|
|
||||||
|
|
||||||
local file_count
|
|
||||||
config_get file_count $section file_count
|
|
||||||
if [ -n "$file_count" ]; then
|
|
||||||
echo -e "\trotate $file_count" >> ${LOGROTATE_TMP_FILE}
|
|
||||||
fi
|
|
||||||
|
|
||||||
local max_file_size
|
|
||||||
config_get max_file_size $section max_file_size
|
|
||||||
if [ -n "$max_file_size" ]; then
|
|
||||||
echo -e "\tmaxsize $max_file_size" >> ${LOGROTATE_TMP_FILE}
|
|
||||||
fi
|
|
||||||
|
|
||||||
local duration
|
|
||||||
config_get duration $section duration
|
|
||||||
if [ -n "$duration" ]; then
|
|
||||||
echo -e "\tminutes $duration" >> ${LOGROTATE_TMP_FILE}
|
|
||||||
fi
|
|
||||||
|
|
||||||
local retention
|
|
||||||
config_get retention $section retention
|
|
||||||
if [ -n "$retention" ]; then
|
|
||||||
echo -e "\tmaxage $retention" >> ${LOGROTATE_TMP_FILE}
|
|
||||||
fi
|
|
||||||
|
|
||||||
local compression
|
|
||||||
config_get compression $section compression
|
|
||||||
if [ -n "$compression" ]; then
|
|
||||||
cmd=$(echo "$compression" | awk '{print tolower($0)}')
|
|
||||||
echo -e "\tcompress" >> ${LOGROTATE_TMP_FILE}
|
|
||||||
echo -e "\tcompresscmd $cmd" >> ${LOGROTATE_TMP_FILE}
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo -e "\taddextension _logrotate" >> ${LOGROTATE_TMP_FILE}
|
|
||||||
echo -e "\tpostrotate" >> ${LOGROTATE_TMP_FILE}
|
|
||||||
echo -e "\t\tservice logmngr restart" >> ${LOGROTATE_TMP_FILE}
|
|
||||||
echo -e "\t\tsleep 1" >> ${LOGROTATE_TMP_FILE}
|
|
||||||
echo -e "\tendscript" >> ${LOGROTATE_TMP_FILE}
|
|
||||||
echo -e "}" >> ${LOGROTATE_TMP_FILE} # close the logfile section
|
|
||||||
}
|
|
||||||
|
|
||||||
apply_logrotate_file() {
|
|
||||||
cp ${LOGROTATE_TMP_FILE} ${LOGROTATE_FILE}
|
|
||||||
}
|
|
||||||
|
|
||||||
config_cron_job() {
|
|
||||||
# taking the liberty to configure the cron job hourly, that is, at the end
|
|
||||||
# of each hour, check if logrotation is needed. The logrotate daemon, when
|
|
||||||
# triggered hourly, will still honour the configure log rotation duration,
|
|
||||||
# the only slight different being that if the minutes for log rotation
|
|
||||||
# are configured in such a way that it falls within the hour, then the
|
|
||||||
# log rotation will be done at the completion of hour and not before. I do
|
|
||||||
# not think this is a drawback in the interest of keeping things simple.
|
|
||||||
sed -i '/logrotate/d' /etc/crontabs/root
|
|
||||||
echo "0 * * * * logrotate ${LOGROTATE_FILE}" >> /etc/crontabs/root
|
|
||||||
/etc/init.d/cron restart
|
|
||||||
}
|
|
||||||
|
|
||||||
logrotate_init() {
|
|
||||||
create_logrotate_file
|
|
||||||
config_foreach handle_logrotate log_rotate
|
|
||||||
apply_logrotate_file
|
|
||||||
config_cron_job
|
|
||||||
}
|
|
||||||
@@ -1,345 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
. /lib/functions.sh
|
|
||||||
. /lib/logmngr/logrotate.sh
|
|
||||||
|
|
||||||
CONF_FILE=/etc/syslog-ng.conf
|
|
||||||
TMP_CONF_FILE=/tmp/syslog-ng/syslog-ng.conf
|
|
||||||
|
|
||||||
create_config_file() {
|
|
||||||
mkdir -p /tmp/syslog-ng
|
|
||||||
rm -f ${TMP_CONF_FILE}
|
|
||||||
touch ${TMP_CONF_FILE}
|
|
||||||
}
|
|
||||||
|
|
||||||
create_option_section() {
|
|
||||||
# the option section of the syslog-ng.conf file has hardcoded values,
|
|
||||||
# no need to lookup any uci section to configure this section
|
|
||||||
echo -e "@version: 4.4" >> ${TMP_CONF_FILE}
|
|
||||||
echo -e '@include "scl.conf"' >> ${TMP_CONF_FILE}
|
|
||||||
echo -e "options {" >> ${TMP_CONF_FILE}
|
|
||||||
echo -e "\tchain_hostnames(no);" >> ${TMP_CONF_FILE}
|
|
||||||
echo -e "\tcreate_dirs(yes);" >> ${TMP_CONF_FILE}
|
|
||||||
echo -e "\tkeep_hostname(yes);" >> ${TMP_CONF_FILE}
|
|
||||||
echo -e "\tlog_fifo_size(256);" >> ${TMP_CONF_FILE}
|
|
||||||
echo -e "\tlog_msg_size(1024);" >> ${TMP_CONF_FILE}
|
|
||||||
echo -e "\tstats(freq(0));" >> ${TMP_CONF_FILE}
|
|
||||||
echo -e "\tflush_lines(0);" >> ${TMP_CONF_FILE}
|
|
||||||
echo -e "\tuse_fqdn(no);" >> ${TMP_CONF_FILE}
|
|
||||||
echo "};" >> ${TMP_CONF_FILE}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
create_input_section() {
|
|
||||||
local tag="$1"
|
|
||||||
# the input in our case is always syslog, hence, this section of the
|
|
||||||
# fluent-bit.conf file has hardcoded values as well that do not depend
|
|
||||||
# on any uci value
|
|
||||||
echo -e "source $tag {" >> ${TMP_CONF_FILE}
|
|
||||||
echo -e "\tinternal();" >> ${TMP_CONF_FILE}
|
|
||||||
echo -e "\tunix-dgram("/dev/log");" >> ${TMP_CONF_FILE}
|
|
||||||
echo "};" >> ${TMP_CONF_FILE}
|
|
||||||
}
|
|
||||||
|
|
||||||
generate_facility_regex() {
|
|
||||||
local facility_level=$1
|
|
||||||
|
|
||||||
if [ "$facility_level" == "24" ]; then
|
|
||||||
# value 24 means all facility level, which is as good as not
|
|
||||||
# generating a filter section, so return
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
# facility_level is a list value, hence, generate regex for
|
|
||||||
# each value
|
|
||||||
IFS=" "
|
|
||||||
for val in $facility_level; do
|
|
||||||
echo -e "\tfacility($val);" >> ${TMP_CONF_FILE}
|
|
||||||
done
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
generate_severity_regex() {
|
|
||||||
local sev_level="$1"
|
|
||||||
local sev_compare="$2"
|
|
||||||
local sev_action="$3"
|
|
||||||
|
|
||||||
if [ "$sev_compare" == "0" ]; then
|
|
||||||
case $sev_level in
|
|
||||||
"0") echo -e "\tlevel(emerg)" >> ${TMP_CONF_FILE}
|
|
||||||
;;
|
|
||||||
"1") echo -e "\tlevel(alert)" >> ${TMP_CONF_FILE}
|
|
||||||
;;
|
|
||||||
"2") echo -e "\tlevel(crit)" >> ${TMP_CONF_FILE}
|
|
||||||
;;
|
|
||||||
"3") echo -e "\tlevel(err)" >> ${TMP_CONF_FILE}
|
|
||||||
;;
|
|
||||||
"4") echo -e "\tlevel(warning)" >> ${TMP_CONF_FILE}
|
|
||||||
;;
|
|
||||||
"5") echo -e "\tlevel(notice)" >> ${TMP_CONF_FILE}
|
|
||||||
;;
|
|
||||||
"6") echo -e "\tlevel(info)" >> ${TMP_CONF_FILE}
|
|
||||||
;;
|
|
||||||
"7") echo -e "\tlevel(debug)" >> ${TMP_CONF_FILE}
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
elif [ "$sev_compare" == "1" ]; then
|
|
||||||
# generate regex for all severity value greater than or equal to
|
|
||||||
# sev_level
|
|
||||||
case $sev_level in
|
|
||||||
"0") echo -e "\tlevel(emerg)" >> ${TMP_CONF_FILE}
|
|
||||||
;;
|
|
||||||
"1") echo -e "\tlevel(alert..emerg)" >> ${TMP_CONF_FILE}
|
|
||||||
;;
|
|
||||||
"2") echo -e "\tlevel(crit..emerg)" >> ${TMP_CONF_FILE}
|
|
||||||
;;
|
|
||||||
"3") echo -e "\tlevel(err..emerg)" >> ${TMP_CONF_FILE}
|
|
||||||
;;
|
|
||||||
"4") echo -e "\tlevel(warning..emerg)" >> ${TMP_CONF_FILE}
|
|
||||||
;;
|
|
||||||
"5") echo -e "\tlevel(notice..emerg)" >> ${TMP_CONF_FILE}
|
|
||||||
;;
|
|
||||||
"6") echo -e "\tlevel(info..emerg)" >> ${TMP_CONF_FILE}
|
|
||||||
;;
|
|
||||||
"7") echo -e "\tlevel(debug..emerg)" >> ${TMP_CONF_FILE}
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
handle_filter_conf() {
|
|
||||||
local section="$1" # config filter
|
|
||||||
local filter_name="$2"
|
|
||||||
local name
|
|
||||||
|
|
||||||
# no need to proceed if name of filter section is not one of the values
|
|
||||||
# listed in option filter in config action section
|
|
||||||
config_get name $section name
|
|
||||||
if [ "$name" != "$filter_name" ]; then
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
echo -e "filter $name {" >> ${TMP_CONF_FILE}
|
|
||||||
|
|
||||||
# as per data model, at a time either facility_level or severity_level can
|
|
||||||
# be specified along with pattern_match. hence, first process and generate
|
|
||||||
# regex for pattern_match which is common in both condition. Next, we will
|
|
||||||
# process facility_level and return if facility level is defined and not
|
|
||||||
# process severity related params at all.
|
|
||||||
|
|
||||||
local pattern_match
|
|
||||||
config_get pattern_match $section pattern_match
|
|
||||||
if [ -n "$pattern_match" ]; then
|
|
||||||
# the pattern here is in tag=>value pair, hence, break the pattern
|
|
||||||
# and fill this filed
|
|
||||||
local tag=$(echo $pattern_match | awk '{print $1}')
|
|
||||||
local value=$(echo $pattern_match | awk '{print $2}')
|
|
||||||
echo -e "\tmatch("$value" value("$tag"))" >> ${TMP_CONF_FILE}
|
|
||||||
fi
|
|
||||||
|
|
||||||
local facility_level
|
|
||||||
config_get facility_level $section facility_level
|
|
||||||
|
|
||||||
if [ -n "$facility_level" ]; then
|
|
||||||
generate_facility_regex $facility_level
|
|
||||||
# return from here since if facility_level is defined, then no
|
|
||||||
# need to process severity_level
|
|
||||||
echo "};" >> ${TMP_CONF_FILE}
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
local sev_level
|
|
||||||
local sev_compare
|
|
||||||
local sev_action
|
|
||||||
config_get sev_level $section severity_level
|
|
||||||
|
|
||||||
if [ -n "$sev_level" ]; then
|
|
||||||
# value 1 of severity compare corresponds to data model
|
|
||||||
# and system default which is EqualorHigher
|
|
||||||
config_get sev_compare $section severity_compare 1
|
|
||||||
# value 0 of severity action corresponds to data model
|
|
||||||
# and system default that is log
|
|
||||||
config_get sev_action $section severity_action 0
|
|
||||||
|
|
||||||
generate_severity_regex $sev_level $sev_compare $sev_action
|
|
||||||
fi
|
|
||||||
echo "};" >> ${TMP_CONF_FILE}
|
|
||||||
}
|
|
||||||
|
|
||||||
handle_filter_ref() {
|
|
||||||
local filter_name="$1"
|
|
||||||
config_foreach handle_filter_conf filter "$filter_name"
|
|
||||||
}
|
|
||||||
|
|
||||||
handle_log_file() {
|
|
||||||
local section="$1" # out_file section
|
|
||||||
local match="$2"
|
|
||||||
local filter="$3"
|
|
||||||
local action_ref
|
|
||||||
|
|
||||||
config_get action_ref $section action
|
|
||||||
if [ "$action_ref" != "$match" ]; then
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
local enabled
|
|
||||||
config_get enabled $section enable
|
|
||||||
if [ "$enabled" == 0 ]; then
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
local file
|
|
||||||
config_get file $section file
|
|
||||||
if [ -z "$file" ]; then
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
echo -e "destination file_$match {" >> ${TMP_CONF_FILE}
|
|
||||||
echo -e "\tfile("$file");" >> ${TMP_CONF_FILE}
|
|
||||||
echo -e "};" >> ${TMP_CONF_FILE}
|
|
||||||
|
|
||||||
# now generate the log section for each action section to bring into effect
|
|
||||||
# the filter, destination, source sections create above
|
|
||||||
echo -e "log {" >> ${TMP_CONF_FILE}
|
|
||||||
echo -e "\tsource($tag);" >> ${TMP_CONF_FILE}
|
|
||||||
if [ -n "$filter" ]; then
|
|
||||||
IFS=" "
|
|
||||||
for finst in $filter; do
|
|
||||||
echo -e "\tfilter($finst);" >> ${TMP_CONF_FILE}
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
echo -e "\tdestination(file_$match);" >> ${TMP_CONF_FILE} # log_file
|
|
||||||
echo -e "};" >> ${TMP_CONF_FILE} # close log section
|
|
||||||
}
|
|
||||||
|
|
||||||
handle_log_remote() {
|
|
||||||
local section="$1"
|
|
||||||
local match="$2"
|
|
||||||
local filter="$3"
|
|
||||||
local action_ref
|
|
||||||
|
|
||||||
config_get action_ref $section action
|
|
||||||
if [ "$action_ref" != "$match" ]; then
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
local enabled
|
|
||||||
config_get enabled $section enable
|
|
||||||
if [ "$enabled" == 0 ]; then
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
local address
|
|
||||||
config_get address $section log_ip
|
|
||||||
if [ -z "$address" ]; then
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo -e "destination remote_$match {" >> ${TMP_CONF_FILE}
|
|
||||||
echo -e "\tsyslog(" >> ${TMP_CONF_FILE}
|
|
||||||
echo -e "\t\t"$address"" >> ${TMP_CONF_FILE}
|
|
||||||
|
|
||||||
local proto # holds value tcp or udp
|
|
||||||
config_get proto $section proto
|
|
||||||
if [ -n "$proto" ]; then
|
|
||||||
echo -e "\t\ttransport($proto)" >> ${TMP_CONF_FILE}
|
|
||||||
fi
|
|
||||||
|
|
||||||
local port
|
|
||||||
config_get port $section port
|
|
||||||
if [ -n "$port" ]; then
|
|
||||||
echo -e "\t\tport($port)" >> ${TMP_CONF_FILE}
|
|
||||||
fi
|
|
||||||
|
|
||||||
local cert
|
|
||||||
local peer_verify
|
|
||||||
config_get cert $section cert
|
|
||||||
if [ -n "$cert" ]; then
|
|
||||||
echo -e "\t\ttls(" >> ${TMP_CONF_FILE}
|
|
||||||
echo -e "\t\t\tcert-file($cert)" >> ${TMP_CONF_FILE}
|
|
||||||
|
|
||||||
config_get peer_verify $section peer_verify
|
|
||||||
if [ "$peer_verify" == "1" ]; then
|
|
||||||
echo -e "\t\t\tpeer-verify(required-trusted)" >> ${TMP_CONF_FILE}
|
|
||||||
fi
|
|
||||||
echo -e "\t\t)" >> ${TMP_CONF_FILE} # close tls section
|
|
||||||
fi
|
|
||||||
echo -e "\t);" >> ${TMP_CONF_FILE} # close syslog section
|
|
||||||
echo -e "};" >> ${TMP_CONF_FILE} # close destination section
|
|
||||||
|
|
||||||
# now generate the log section for each action section to bring into effect
|
|
||||||
# the filter, destination, source sections create above
|
|
||||||
echo -e "log {" >> ${TMP_CONF_FILE}
|
|
||||||
echo -e "\tsource($tag);" >> ${TMP_CONF_FILE}
|
|
||||||
if [ -n "$filter" ]; then
|
|
||||||
IFS=" "
|
|
||||||
for finst in $filter; do
|
|
||||||
echo -e "\tfilter($finst);" >> ${TMP_CONF_FILE}
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
echo -e "\tdestination(remote_$match);" >> ${TMP_CONF_FILE} # log_file
|
|
||||||
echo -e "};" >> ${TMP_CONF_FILE} # close log section
|
|
||||||
}
|
|
||||||
|
|
||||||
handle_action() {
|
|
||||||
local section="$1"
|
|
||||||
|
|
||||||
local filter
|
|
||||||
config_get filter $section filter
|
|
||||||
|
|
||||||
# use config action option name as tag for input
|
|
||||||
local tag
|
|
||||||
config_get tag $section name
|
|
||||||
if [ -z "$tag" ]; then
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
create_input_section $tag
|
|
||||||
if [ -n "$filter" ]; then
|
|
||||||
IFS=" "
|
|
||||||
for finst in $filter; do
|
|
||||||
handle_filter_ref $finst
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
# handle output, each action can be associated with a out_log and out_syslog
|
|
||||||
# section so figure out if any out_log or out_syslog section is associated
|
|
||||||
# with this and action and setup output accordingly.
|
|
||||||
config_foreach handle_log_file log_file "$tag" "$filter"
|
|
||||||
config_foreach handle_log_remote log_remote "$tag" "$filter"
|
|
||||||
}
|
|
||||||
|
|
||||||
handle_action_section() {
|
|
||||||
config_foreach handle_action action
|
|
||||||
}
|
|
||||||
|
|
||||||
apply_config_file() {
|
|
||||||
cp ${TMP_CONF_FILE} ${CONF_FILE}
|
|
||||||
}
|
|
||||||
|
|
||||||
PROG=/usr/sbin/syslog-ng-ctl
|
|
||||||
|
|
||||||
logmngr_init() {
|
|
||||||
create_config_file
|
|
||||||
|
|
||||||
config_load logmngr
|
|
||||||
local enabled
|
|
||||||
config_get enabled globals enable
|
|
||||||
|
|
||||||
if [ "$enabled" == "0" ]; then
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
create_option_section
|
|
||||||
handle_action_section
|
|
||||||
apply_config_file
|
|
||||||
|
|
||||||
if [ -f /lib/logmngr/logrotate.sh ]; then
|
|
||||||
logrotate_init
|
|
||||||
fi
|
|
||||||
|
|
||||||
procd_open_instance logmngr
|
|
||||||
procd_set_param command $PROG reload
|
|
||||||
procd_close_instance
|
|
||||||
}
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
#!/bin/sh /etc/rc.common
|
|
||||||
|
|
||||||
START=12
|
|
||||||
STOP=89
|
|
||||||
USE_PROCD=1
|
|
||||||
|
|
||||||
. /lib/functions.sh
|
|
||||||
include /lib/logmngr
|
|
||||||
|
|
||||||
start_service() {
|
|
||||||
logmngr_init
|
|
||||||
}
|
|
||||||
|
|
||||||
service_triggers() {
|
|
||||||
procd_add_reload_trigger logmngr
|
|
||||||
}
|
|
||||||
@@ -1,108 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
# Shell script compatibility wrapper for /sbin/logread
|
|
||||||
#
|
|
||||||
# Copyright (C) 2019 Dirk Brenken <dev@brenken.org>
|
|
||||||
#
|
|
||||||
# This program is free software; you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation; either version 2 of the License, or
|
|
||||||
# (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
# General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program; if not, write to the Free Software
|
|
||||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
#
|
|
||||||
|
|
||||||
. /lib/functions.sh
|
|
||||||
|
|
||||||
# use /var/log/messages as default
|
|
||||||
logfile="/var/log/messages"
|
|
||||||
|
|
||||||
|
|
||||||
handle_log_file() {
|
|
||||||
local section="$1"
|
|
||||||
|
|
||||||
local enabled
|
|
||||||
config_get enabled $section enable
|
|
||||||
if [ "$enabled" == 0 ]; then
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
local file
|
|
||||||
config_get file $section file
|
|
||||||
if [ -z "$file" ]; then
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
logfile="$file"
|
|
||||||
}
|
|
||||||
|
|
||||||
config_load logmngr
|
|
||||||
config_get logmngr_enabled globals enable
|
|
||||||
if [ "$logmngr_enabled" == "0" ]; then
|
|
||||||
printf "%s\n" "Error: logmngr is not enabled!"
|
|
||||||
exit 2
|
|
||||||
fi
|
|
||||||
|
|
||||||
# treat the last enabled log_file as logfile
|
|
||||||
config_foreach handle_log_file log_file
|
|
||||||
|
|
||||||
if [ ! -f "${logfile}" ]
|
|
||||||
then
|
|
||||||
printf "%s\n" "Error: logfile $logfile not found!"
|
|
||||||
exit 2
|
|
||||||
fi
|
|
||||||
|
|
||||||
usage()
|
|
||||||
{
|
|
||||||
printf "%s\n" "Usage: logread [options]"
|
|
||||||
printf "%s\n" "Options:"
|
|
||||||
printf "%5s %-10s%s\n" "-l" "<count>" "Got only the last 'count' messages"
|
|
||||||
printf "%5s %-10s%s\n" "-e" "<pattern>" "Filter messages with a regexp"
|
|
||||||
printf "%5s %-10s%s\n" "-f" "" "Follow log messages"
|
|
||||||
printf "%5s %-10s%s\n" "-h" "" "Print this help message"
|
|
||||||
}
|
|
||||||
|
|
||||||
if [ -z "${1}" ]
|
|
||||||
then
|
|
||||||
cat "${logfile}"
|
|
||||||
exit 0
|
|
||||||
else
|
|
||||||
while [ "${1}" ]
|
|
||||||
do
|
|
||||||
case "${1}" in
|
|
||||||
-l)
|
|
||||||
shift
|
|
||||||
count="${1//[^0-9]/}"
|
|
||||||
tail -n "${count:-50}" "${logfile}"
|
|
||||||
exit 0
|
|
||||||
;;
|
|
||||||
-e)
|
|
||||||
shift
|
|
||||||
pattern="${1}"
|
|
||||||
grep -E "${pattern}" "${logfile}"
|
|
||||||
exit 0
|
|
||||||
;;
|
|
||||||
-f)
|
|
||||||
tail -f "${logfile}"
|
|
||||||
exit 0
|
|
||||||
;;
|
|
||||||
-fe)
|
|
||||||
shift
|
|
||||||
pattern="${1}"
|
|
||||||
tail -f "${logfile}" | grep -E "${pattern}"
|
|
||||||
exit 0
|
|
||||||
;;
|
|
||||||
-h|*)
|
|
||||||
usage
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
shift
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
@@ -5,9 +5,9 @@
|
|||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=map-agent
|
PKG_NAME:=map-agent
|
||||||
PKG_VERSION:=6.2.1.11
|
PKG_VERSION:=6.1.1.2
|
||||||
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
|
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
|
||||||
PKG_SOURCE_VERSION:=8f7f2d4c873ef9da9c8403a9900621ff2bb0bfb3
|
PKG_SOURCE_VERSION:=d0ff409ffe6bb03c97e14b34932f437f58f4e241
|
||||||
PKG_MAINTAINER:=Jakob Olsson <jakob.olsson@iopsys.eu>
|
PKG_MAINTAINER:=Jakob Olsson <jakob.olsson@iopsys.eu>
|
||||||
|
|
||||||
PKG_LICENSE:=BSD-3-Clause
|
PKG_LICENSE:=BSD-3-Clause
|
||||||
|
|||||||
@@ -65,40 +65,10 @@ generate_multiap_config() {
|
|||||||
|
|
||||||
device="$dev"
|
device="$dev"
|
||||||
|
|
||||||
ifprefix_radio=""
|
|
||||||
if is_airoha; then
|
if is_airoha; then
|
||||||
if [ -d "/sys/module/mt76" ]; then
|
|
||||||
ifprefix="wlan%_%"
|
ifprefix="wlan%_%"
|
||||||
ifname="wlan${devidx}_0"
|
ifname="wlan${devidx}_0"
|
||||||
ifname_bh="wlan${devidx}_1"
|
ifname_bh="wlan${devidx}_1"
|
||||||
else
|
|
||||||
ifname_sta=""
|
|
||||||
case "$band" in
|
|
||||||
2g)
|
|
||||||
ifprefix="ra%"
|
|
||||||
ifname="ra0"
|
|
||||||
ifname_bh="ra1"
|
|
||||||
ifname_sta="apcli0"
|
|
||||||
;;
|
|
||||||
5g)
|
|
||||||
ifprefix="rai%"
|
|
||||||
ifname="rai0"
|
|
||||||
ifname_bh="rai1"
|
|
||||||
ifname_sta="apclii0"
|
|
||||||
;;
|
|
||||||
6g)
|
|
||||||
ifprefix="rax%"
|
|
||||||
ifname="rax0"
|
|
||||||
ifname_bh="rax1"
|
|
||||||
ifname_sta="apclix0"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
ifprefix_radio="${ifprefix}"
|
|
||||||
if [ "${network_mode}" == "extender" ]; then
|
|
||||||
ifname="${ifname_sta}"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
uci set wireless.$dev.channels="$channels"
|
uci set wireless.$dev.channels="$channels"
|
||||||
uci commit wireless
|
uci commit wireless
|
||||||
elif is_broadcom; then
|
elif is_broadcom; then
|
||||||
@@ -129,17 +99,12 @@ generate_multiap_config() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [ $generate_mapagent_config -eq 1 ]; then
|
if [ $generate_mapagent_config -eq 1 ]; then
|
||||||
if [ -z "${ifprefix_radio}" ]; then
|
|
||||||
uci set mapagent.agent.ifprefix="$ifprefix"
|
uci set mapagent.agent.ifprefix="$ifprefix"
|
||||||
fi
|
|
||||||
uci set mapagent.agent.brcm_setup="$brcm_setup"
|
uci set mapagent.agent.brcm_setup="$brcm_setup"
|
||||||
uci set mapagent.agent.ap_follow_sta_dfs="$ap_follow_sta_dfs"
|
uci set mapagent.agent.ap_follow_sta_dfs="$ap_follow_sta_dfs"
|
||||||
uci add mapagent radio
|
uci add mapagent radio
|
||||||
uci set mapagent.@radio[-1].device="$device"
|
uci set mapagent.@radio[-1].device="$device"
|
||||||
uci set mapagent.@radio[-1].band="$mode_band"
|
uci set mapagent.@radio[-1].band="$mode_band"
|
||||||
if [ -n "${ifprefix_radio}" ]; then
|
|
||||||
uci set mapagent.@radio[-1].ifprefix="${ifprefix}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$network_mode" == "extender" ]; then
|
if [ "$network_mode" == "extender" ]; then
|
||||||
uci add mapagent bsta
|
uci add mapagent bsta
|
||||||
@@ -234,16 +199,11 @@ map_genconf () {
|
|||||||
else
|
else
|
||||||
uci set mapcontroller.controller.enabled="1"
|
uci set mapcontroller.controller.enabled="1"
|
||||||
[ "$disable_mlo" == "1" ] && {
|
[ "$disable_mlo" == "1" ] && {
|
||||||
mapcontroller_remove_mld() {
|
mapcontroller_disable_mld() {
|
||||||
uci delete mapcontroller.$1
|
uci set mapcontroller.$1.enabled='0'
|
||||||
}
|
}
|
||||||
mapcontroller_remove_mld_id() {
|
|
||||||
uci delete mapcontroller.$1.mld_id
|
|
||||||
}
|
|
||||||
|
|
||||||
config_load mapcontroller
|
config_load mapcontroller
|
||||||
config_foreach mapcontroller_remove_mld mld
|
config_foreach mapcontroller_disable_mld mld
|
||||||
config_foreach mapcontroller_remove_mld_id ap
|
|
||||||
}
|
}
|
||||||
fi
|
fi
|
||||||
uci -q commit mapcontroller
|
uci -q commit mapcontroller
|
||||||
|
|||||||
@@ -5,9 +5,9 @@
|
|||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=map-controller
|
PKG_NAME:=map-controller
|
||||||
PKG_VERSION:=6.1.2.7
|
PKG_VERSION:=6.1.1.2
|
||||||
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
|
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
|
||||||
PKG_SOURCE_VERSION:=3c9e5ff1dec3aa5c82e39069cd4c9da806877726
|
PKG_SOURCE_VERSION:=480a5304591632729212408d77d220f707cb9d6b
|
||||||
PKG_MAINTAINER:=Jakob Olsson <jakob.olsson@iopsys.eu>
|
PKG_MAINTAINER:=Jakob Olsson <jakob.olsson@iopsys.eu>
|
||||||
|
|
||||||
LOCAL_DEV=0
|
LOCAL_DEV=0
|
||||||
|
|||||||
@@ -27,9 +27,6 @@ config sta_steering
|
|||||||
option report_rcpi_threshold_2g '80'
|
option report_rcpi_threshold_2g '80'
|
||||||
option report_rcpi_threshold_5g '96'
|
option report_rcpi_threshold_5g '96'
|
||||||
option report_rcpi_threshold_6g '96'
|
option report_rcpi_threshold_6g '96'
|
||||||
option steer_retry_int '30'
|
|
||||||
option steer_int '180'
|
|
||||||
option steer_disable_int '600'
|
|
||||||
|
|
||||||
###################
|
###################
|
||||||
# Default AP sections credentials will by updated
|
# Default AP sections credentials will by updated
|
||||||
|
|||||||
@@ -6,14 +6,14 @@ include $(TOPDIR)/rules.mk
|
|||||||
include $(INCLUDE_DIR)/kernel.mk
|
include $(INCLUDE_DIR)/kernel.mk
|
||||||
|
|
||||||
PKG_NAME:=mcastmngr
|
PKG_NAME:=mcastmngr
|
||||||
PKG_VERSION:=1.2.7
|
PKG_VERSION:=1.2.3
|
||||||
|
|
||||||
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
|
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
|
||||||
LOCAL_DEV:=0
|
LOCAL_DEV:=0
|
||||||
ifneq ($(LOCAL_DEV),1)
|
ifneq ($(LOCAL_DEV),1)
|
||||||
PKG_SOURCE_PROTO:=git
|
PKG_SOURCE_PROTO:=git
|
||||||
PKG_SOURCE_URL:=https://dev.iopsys.eu/hal/mcastmngr.git
|
PKG_SOURCE_URL:=https://dev.iopsys.eu/hal/mcastmngr.git
|
||||||
PKG_SOURCE_VERSION:=275d7e5448333e53f8bc980344b39f7f577d4664
|
PKG_SOURCE_VERSION:=117acf7a29e3a343756aab9b0ae330022892c15b
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
|
||||||
PKG_MIRROR_HASH:=skip
|
PKG_MIRROR_HASH:=skip
|
||||||
endif
|
endif
|
||||||
@@ -29,8 +29,7 @@ MAKE_PATH:=bbf_plugin
|
|||||||
define Package/mcastmngr
|
define Package/mcastmngr
|
||||||
CATEGORY:=Utilities
|
CATEGORY:=Utilities
|
||||||
TITLE:=Multicast Proxy/Snooping Manager
|
TITLE:=Multicast Proxy/Snooping Manager
|
||||||
DEPENDS:=+!TARGET_brcmbca:mcproxy +libuci +libubox +libubus +libblobmsg-json
|
DEPENDS:=+!TARGET_brcmbca:mcproxy +libuci +libubox +libubus +libblobmsg-json +libbbfdm-api
|
||||||
DEPENDS+=+libbbfdm-api +libbbfdm-ubus +dm-service
|
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/mcastmngr/description
|
define Package/mcastmngr/description
|
||||||
|
|||||||
@@ -39,6 +39,7 @@ config_snooping_upstream_interface() {
|
|||||||
local snooping_upstream_intf=""
|
local snooping_upstream_intf=""
|
||||||
|
|
||||||
json_load "$(devstatus $1)"
|
json_load "$(devstatus $1)"
|
||||||
|
logger -t "mcastconf" "$(devstatus $1)"
|
||||||
itr=1
|
itr=1
|
||||||
json_select bridge-members
|
json_select bridge-members
|
||||||
|
|
||||||
@@ -127,14 +128,14 @@ configure_mcpd_snooping() {
|
|||||||
config_snooping_common_params $protocol $igmp_s_version $igmp_s_robustness $igmp_s_mode
|
config_snooping_common_params $protocol $igmp_s_version $igmp_s_robustness $igmp_s_mode
|
||||||
config_mcast_querier_params $protocol $igmp_s_query_interval $igmp_s_q_resp_interval $igmp_s_last_mem_q_int
|
config_mcast_querier_params $protocol $igmp_s_query_interval $igmp_s_q_resp_interval $igmp_s_last_mem_q_int
|
||||||
config_snooping_upstream_interface "$igmp_s_iface"
|
config_snooping_upstream_interface "$igmp_s_iface"
|
||||||
config_snooping_on_bridge $protocol "$igmp_s_iface" $igmp_s_mode
|
config_snooping_on_bridge $protocol $igmp_s_iface $igmp_s_mode
|
||||||
exceptions=$igmp_s_exceptions
|
exceptions=$igmp_s_exceptions
|
||||||
fast_leave=$igmp_s_fast_leave
|
fast_leave=$igmp_s_fast_leave
|
||||||
elif [ "$protocol" == "mld" ]; then
|
elif [ "$protocol" == "mld" ]; then
|
||||||
config_snooping_common_params $protocol $mld_s_version $mld_s_robustness $mld_s_mode
|
config_snooping_common_params $protocol $mld_s_version $mld_s_robustness $mld_s_mode
|
||||||
config_mcast_querier_params $protocol $mld_s_query_interval $mld_s_q_resp_interval $mld_s_last_mem_q_int
|
config_mcast_querier_params $protocol $mld_s_query_interval $mld_s_q_resp_interval $mld_s_last_mem_q_int
|
||||||
config_snooping_upstream_interface "$mld_s_iface"
|
config_snooping_upstream_interface "$mld_s_iface"
|
||||||
config_snooping_on_bridge $protocol "$mld_s_iface" $mld_s_mode
|
config_snooping_on_bridge $protocol $mld_s_iface $mld_s_mode
|
||||||
exceptions=$mld_s_exceptions
|
exceptions=$mld_s_exceptions
|
||||||
fast_leave=$mld_s_fast_leave
|
fast_leave=$mld_s_fast_leave
|
||||||
fi
|
fi
|
||||||
@@ -170,14 +171,14 @@ configure_mcpd_proxy() {
|
|||||||
config_snooping_common_params $protocol $igmp_p_version $igmp_p_robustness $igmp_p_mode
|
config_snooping_common_params $protocol $igmp_p_version $igmp_p_robustness $igmp_p_mode
|
||||||
config_mcast_querier_params $protocol $igmp_query_interval $igmp_q_resp_interval $igmp_last_mem_q_int
|
config_mcast_querier_params $protocol $igmp_query_interval $igmp_q_resp_interval $igmp_last_mem_q_int
|
||||||
config_mcast_proxy_interface $protocol "$igmp_p_up_interfaces"
|
config_mcast_proxy_interface $protocol "$igmp_p_up_interfaces"
|
||||||
config_snooping_on_bridge $protocol "$igmp_p_down_interfaces" $igmp_p_mode
|
config_snooping_on_bridge $protocol $igmp_p_down_interfaces $igmp_p_mode
|
||||||
fast_leave=$igmp_fast_leave
|
fast_leave=$igmp_fast_leave
|
||||||
exceptions=$igmp_p_exceptions
|
exceptions=$igmp_p_exceptions
|
||||||
elif [ "$protocol" == "mld" ]; then
|
elif [ "$protocol" == "mld" ]; then
|
||||||
config_snooping_common_params $protocol $mld_p_version $mld_p_robustness $mld_p_mode
|
config_snooping_common_params $protocol $mld_p_version $mld_p_robustness $mld_p_mode
|
||||||
config_mcast_querier_params $protocol $mld_query_interval $mld_q_resp_interval $mld_last_mem_q_int
|
config_mcast_querier_params $protocol $mld_query_interval $mld_q_resp_interval $mld_last_mem_q_int
|
||||||
config_mcast_proxy_interface $protocol "$mld_p_up_interfaces"
|
config_mcast_proxy_interface $protocol "$mld_p_up_interfaces"
|
||||||
config_snooping_on_bridge $protocol "$mld_p_down_interfaces" $mld_p_mode
|
config_snooping_on_bridge $protocol $mld_p_down_interfaces $mld_p_mode
|
||||||
fast_leave=$mld_fast_leave
|
fast_leave=$mld_fast_leave
|
||||||
exceptions=$mld_p_exceptions
|
exceptions=$mld_p_exceptions
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -3,42 +3,8 @@
|
|||||||
. /usr/share/libubox/jshn.sh
|
. /usr/share/libubox/jshn.sh
|
||||||
. /lib/functions.sh
|
. /lib/functions.sh
|
||||||
|
|
||||||
readonly TEMPFILE="/tmp/snooping_stats_"$$
|
read_mcast_stats() {
|
||||||
|
cat /proc/net/igmp_snooping > /tmp/igmp_stats
|
||||||
splitup_ipv6addr() {
|
|
||||||
local inaddr="$1"
|
|
||||||
local lowaddr=""
|
|
||||||
local hiaddr=""
|
|
||||||
local subaddr=""
|
|
||||||
local outaddr=""
|
|
||||||
|
|
||||||
OIFS=$IFS
|
|
||||||
IFS=":"
|
|
||||||
for subaddr in $inaddr; do
|
|
||||||
loaddr="$(printf "%x\n" 0x$(echo -n "$subaddr" | cut -b5-8))"
|
|
||||||
hiaddr="$(printf "%x\n" 0x$(echo -n "$subaddr" | cut -b1-4))"
|
|
||||||
if [ -z "$outaddr" ]; then
|
|
||||||
outaddr="${hiaddr}:${loaddr}"
|
|
||||||
else
|
|
||||||
outaddr="${outaddr}:${hiaddr}:${loaddr}"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
IFS=$OIFS
|
|
||||||
|
|
||||||
echo "$outaddr" | sed -e 's/0000/0/g' -e 's/00/0/g' -e 's/000/0/g'
|
|
||||||
}
|
|
||||||
|
|
||||||
meld_files() {
|
|
||||||
local type="$1"
|
|
||||||
|
|
||||||
if [ "$type" = "mld" ]; then
|
|
||||||
cat "/proc/net/${type}_snooping" | awk -F' ' '{ print $1 " " $2 " " $3 " " $4 " " $5 " " $6 " " $7 " " $8 " NULL " $9 " " $10 " " $11 " " $12 " " $13 " " $12 }' >> "$TEMPFILE"
|
|
||||||
else
|
|
||||||
cat "/proc/net/${type}_snooping" >> "$TEMPFILE"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
read_snooping_file() {
|
|
||||||
local mcast_addrs=""
|
local mcast_addrs=""
|
||||||
local ifaces=""
|
local ifaces=""
|
||||||
|
|
||||||
@@ -67,7 +33,7 @@ read_snooping_file() {
|
|||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done < "$TEMPFILE"
|
done < /tmp/igmp_stats
|
||||||
|
|
||||||
while read line; do
|
while read line; do
|
||||||
# reading each line
|
# reading each line
|
||||||
@@ -75,7 +41,6 @@ read_snooping_file() {
|
|||||||
br-*)
|
br-*)
|
||||||
found_ip=0
|
found_ip=0
|
||||||
grp_ip="$(echo $line | awk -F ' ' '{ print $10 }')"
|
grp_ip="$(echo $line | awk -F ' ' '{ print $10 }')"
|
||||||
|
|
||||||
if [ -z "$mcast_addrs" ]; then
|
if [ -z "$mcast_addrs" ]; then
|
||||||
mcast_addrs="$grp_ip"
|
mcast_addrs="$grp_ip"
|
||||||
continue
|
continue
|
||||||
@@ -95,13 +60,27 @@ read_snooping_file() {
|
|||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done < "$TEMPFILE"
|
done < /tmp/igmp_stats
|
||||||
|
|
||||||
|
json_init
|
||||||
|
json_add_array "snooping"
|
||||||
|
json_add_object ""
|
||||||
IFS=" "
|
IFS=" "
|
||||||
for intf in $ifaces; do
|
for intf in $ifaces; do
|
||||||
json_add_object ""
|
while read line; do
|
||||||
|
# reading each line
|
||||||
|
case $line in
|
||||||
|
br-*)
|
||||||
|
snoop_iface="$(echo $line | awk -F ' ' '{ print $1 }')"
|
||||||
|
if [ "$snoop_iface" != "$intf" ]; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
json_add_string "interface" "$intf"
|
json_add_string "interface" "$intf"
|
||||||
json_add_array "groups"
|
json_add_array "groups"
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done < /tmp/igmp_stats
|
||||||
IFS=" "
|
IFS=" "
|
||||||
for gip_addr in $mcast_addrs; do
|
for gip_addr in $mcast_addrs; do
|
||||||
grp_obj_added=0
|
grp_obj_added=0
|
||||||
@@ -119,12 +98,7 @@ read_snooping_file() {
|
|||||||
fi
|
fi
|
||||||
if [ $grp_obj_added -eq 0 ]; then
|
if [ $grp_obj_added -eq 0 ]; then
|
||||||
json_add_object ""
|
json_add_object ""
|
||||||
if [ -n "$(echo $gip_addr | grep -oE "^((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])$")" ]; then
|
|
||||||
gip="$(ipcalc.sh $gip_addr | grep IP | awk '{print substr($0,4)}')"
|
gip="$(ipcalc.sh $gip_addr | grep IP | awk '{print substr($0,4)}')"
|
||||||
else
|
|
||||||
gip_addr=$(splitup_ipv6addr "$gip_addr")
|
|
||||||
gip="$(echo $gip_addr | grep -oE '^([0-9a-fA-F]{0,4}:){1,7}[0-9a-fA-F]{0,4}$')"
|
|
||||||
fi
|
|
||||||
json_add_string "groupaddr" "$gip"
|
json_add_string "groupaddr" "$gip"
|
||||||
json_add_array "clients"
|
json_add_array "clients"
|
||||||
grp_obj_added=1
|
grp_obj_added=1
|
||||||
@@ -132,12 +106,7 @@ read_snooping_file() {
|
|||||||
|
|
||||||
json_add_object ""
|
json_add_object ""
|
||||||
host_ip="$(echo $line | awk -F ' ' '{ print $14 }')"
|
host_ip="$(echo $line | awk -F ' ' '{ print $14 }')"
|
||||||
if [ -n "$(echo $host_ip | grep -oE "^((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])$")" ]; then
|
|
||||||
h_ip="$(ipcalc.sh $host_ip | grep IP | awk '{print substr($0,4)}')"
|
h_ip="$(ipcalc.sh $host_ip | grep IP | awk '{print substr($0,4)}')"
|
||||||
else
|
|
||||||
host_ip=$(splitup_ipv6addr "$host_ip")
|
|
||||||
h_ip="$(echo $host_ip | grep -oE '^([0-9a-fA-F]{0,4}:){1,7}[0-9a-fA-F]{0,4}$')"
|
|
||||||
fi
|
|
||||||
json_add_string "ipaddr" "$h_ip"
|
json_add_string "ipaddr" "$h_ip"
|
||||||
src_port="$(echo $line | awk -F ' ' '{ print $2 }')"
|
src_port="$(echo $line | awk -F ' ' '{ print $2 }')"
|
||||||
json_add_string "device" "$src_port"
|
json_add_string "device" "$src_port"
|
||||||
@@ -146,29 +115,17 @@ read_snooping_file() {
|
|||||||
json_close_object #close the associated device object
|
json_close_object #close the associated device object
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done < "$TEMPFILE"
|
done < /tmp/igmp_stats
|
||||||
if [ $grp_obj_added -eq 1 ]; then
|
|
||||||
json_close_array #close the associated devices array
|
json_close_array #close the associated devices array
|
||||||
json_close_object # close the groups object
|
json_close_object # close the groups object
|
||||||
fi
|
|
||||||
done # close the loop for group addresses
|
done # close the loop for group addresses
|
||||||
json_close_array #close the groups array
|
json_close_array #close the groups array
|
||||||
json_close_object # close the snooping object
|
|
||||||
done # close the loop for interfaces
|
done # close the loop for interfaces
|
||||||
}
|
json_close_object # close the snooping object
|
||||||
|
|
||||||
read_mcast_stats() {
|
|
||||||
echo -n > "$TEMPFILE"
|
|
||||||
|
|
||||||
json_init
|
|
||||||
json_add_array "snooping"
|
|
||||||
meld_files "igmp"
|
|
||||||
meld_files "mld"
|
|
||||||
read_snooping_file
|
|
||||||
json_close_array # close the snooping array
|
json_close_array # close the snooping array
|
||||||
json_dump
|
json_dump
|
||||||
|
|
||||||
rm -f "$TEMPFILE"
|
rm -f /tmp/igmp_stats
|
||||||
}
|
}
|
||||||
|
|
||||||
case "$1" in
|
case "$1" in
|
||||||
@@ -178,12 +135,7 @@ case "$1" in
|
|||||||
call)
|
call)
|
||||||
case "$2" in
|
case "$2" in
|
||||||
stats)
|
stats)
|
||||||
out="$(read_mcast_stats)"
|
read_mcast_stats
|
||||||
if [ -z "${out}" ]; then
|
|
||||||
echo '{}'
|
|
||||||
else
|
|
||||||
echo "${out}"
|
|
||||||
fi
|
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
|
|||||||
@@ -1,24 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
[ "$LINK" = "up" -a -n "$PORT" ] || exit 0
|
|
||||||
|
|
||||||
compare_mcast_snooping_interface() {
|
|
||||||
local interface dev running
|
|
||||||
|
|
||||||
config_get interface "$1" interface
|
|
||||||
|
|
||||||
for dev in $interface; do
|
|
||||||
if [ "$PORT" = "$dev" ]; then
|
|
||||||
running=$(ubus call service list '{"name": "mcast"}' | jsonfilter -e '@.mcast.instances')
|
|
||||||
if [ -z "${running}" ]; then
|
|
||||||
/etc/init.d/mcast start
|
|
||||||
else
|
|
||||||
ubus call uci commit '{"config":"mcast"}'
|
|
||||||
fi
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
config_load mcast
|
|
||||||
config_foreach compare_mcast_snooping_interface "snooping"
|
|
||||||
20
mcastmngr/files/common/etc/hotplug.d/iface/mcast.hotplug
Executable file → Normal file
20
mcastmngr/files/common/etc/hotplug.d/iface/mcast.hotplug
Executable file → Normal file
@@ -1,22 +1,27 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
[ "$ACTION" = "ifup" -a -n "$INTERFACE" ] || exit 0
|
[ "$ACTION" = ifup ] || exit 0
|
||||||
|
|
||||||
. /lib/functions/network.sh
|
. /lib/functions/network.sh
|
||||||
|
|
||||||
network_get_device l3device "$INTERFACE"
|
network_get_device l3device $INTERFACE
|
||||||
|
|
||||||
[ -n "$l3device" ] || exit 0
|
[ -n "$l3device" ] || exit 0
|
||||||
|
|
||||||
compare_mcast_proxy_upstream() {
|
compare_mcast_proxy_upstream() {
|
||||||
local upstream dev running
|
local upstream
|
||||||
|
local mode="$2"
|
||||||
|
|
||||||
config_get upstream "$1" upstream_interface
|
if [ "$mode" == "proxy" ]; then
|
||||||
|
config_get upstream $1 upstream_interface
|
||||||
|
else
|
||||||
|
config_get upstream $1 interface
|
||||||
|
fi
|
||||||
|
|
||||||
for dev in $upstream; do
|
for dev in $upstream; do
|
||||||
if [ "$l3device" = "$dev" ]; then
|
if [ "$l3device" == "$dev" ]; then
|
||||||
running=$(ubus call service list '{"name": "mcast"}' | jsonfilter -e '@.mcast.instances')
|
running=$(ubus call service list '{"name": "mcast"}' | jsonfilter -e '@.mcast.instances')
|
||||||
if [ -z "${running}" ]; then
|
if [ -z "${running}" ];then
|
||||||
/etc/init.d/mcast start
|
/etc/init.d/mcast start
|
||||||
else
|
else
|
||||||
ubus call uci commit '{"config":"mcast"}'
|
ubus call uci commit '{"config":"mcast"}'
|
||||||
@@ -27,4 +32,5 @@ compare_mcast_proxy_upstream() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
config_load mcast
|
config_load mcast
|
||||||
config_foreach compare_mcast_proxy_upstream "proxy"
|
config_foreach compare_mcast_proxy_upstream "proxy" "proxy"
|
||||||
|
config_foreach compare_mcast_proxy_upstream "snooping" "snooping"
|
||||||
|
|||||||
@@ -85,8 +85,9 @@ config_mcproxy_interfaces() {
|
|||||||
|
|
||||||
echo -e "pinstance main:$str_up ==>$str_down;\n" >> $CONFFILE
|
echo -e "pinstance main:$str_up ==>$str_down;\n" >> $CONFFILE
|
||||||
|
|
||||||
local filter=""
|
|
||||||
for excp in $exceptions; do
|
for excp in $exceptions; do
|
||||||
|
local filter=""
|
||||||
|
|
||||||
case $excp in
|
case $excp in
|
||||||
*/*)
|
*/*)
|
||||||
ip_start="$(ipcalc.sh $excp | grep IP | awk '{print substr($0,4)}')"
|
ip_start="$(ipcalc.sh $excp | grep IP | awk '{print substr($0,4)}')"
|
||||||
@@ -97,7 +98,6 @@ config_mcproxy_interfaces() {
|
|||||||
filter="$filter ($excp | *)"
|
filter="$filter ($excp | *)"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
|
||||||
|
|
||||||
for upstream in $str_up; do
|
for upstream in $str_up; do
|
||||||
echo "pinstance main upstream $upstream in blacklist table{$filter };" >> $CONFFILE
|
echo "pinstance main upstream $upstream in blacklist table{$filter };" >> $CONFFILE
|
||||||
@@ -108,6 +108,7 @@ config_mcproxy_interfaces() {
|
|||||||
echo "pinstance main downstream $downstream in blacklist table{$filter };" >> $CONFFILE
|
echo "pinstance main downstream $downstream in blacklist table{$filter };" >> $CONFFILE
|
||||||
echo "pinstance main downstream $downstream out blacklist table{$filter };" >> $CONFFILE
|
echo "pinstance main downstream $downstream out blacklist table{$filter };" >> $CONFFILE
|
||||||
done
|
done
|
||||||
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
config_sysfs_mcast_snooping() {
|
config_sysfs_mcast_snooping() {
|
||||||
@@ -261,6 +262,10 @@ config_mcproxy_instance() {
|
|||||||
downstreams=$igmp_p_down_interfaces
|
downstreams=$igmp_p_down_interfaces
|
||||||
mcast_mode=$igmp_p_mode
|
mcast_mode=$igmp_p_mode
|
||||||
|
|
||||||
|
# mcproxy reserves two multicast subscriptions for igmp router service groups
|
||||||
|
local mg=$(cat /proc/sys/net/ipv4/igmp_max_memberships)
|
||||||
|
mg=$((mg+2))
|
||||||
|
echo $mg > /proc/sys/net/ipv4/igmp_max_memberships
|
||||||
elif [ "$protocol" == "mld" ]; then
|
elif [ "$protocol" == "mld" ]; then
|
||||||
case "$version" in
|
case "$version" in
|
||||||
[1-2])
|
[1-2])
|
||||||
@@ -394,15 +399,13 @@ config_mcproxy() {
|
|||||||
disable_snooping
|
disable_snooping
|
||||||
if [ "$igmp_p_enable" == "1" ]; then
|
if [ "$igmp_p_enable" == "1" ]; then
|
||||||
config_mcproxy_instance igmp "$igmp_p_version"
|
config_mcproxy_instance igmp "$igmp_p_version"
|
||||||
fi
|
elif [ "$igmp_s_enable" == "1" ]; then
|
||||||
if [ "$igmp_s_enable" == "1" ]; then
|
|
||||||
config_snooping igmp "$igmp_s_version"
|
config_snooping igmp "$igmp_s_version"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$mld_p_enable" == "1" ]; then
|
if [ "$mld_p_enable" == "1" ]; then
|
||||||
config_mcproxy_instance mld "$mld_p_version"
|
config_mcproxy_instance mld "$mld_p_version"
|
||||||
fi
|
elif [ "$mld_s_enable" == "1" ]; then
|
||||||
if [ "$mld_s_enable" == "1" ]; then
|
|
||||||
config_snooping mld "$mld_s_version"
|
config_snooping mld "$mld_s_version"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,46 +3,12 @@
|
|||||||
. /usr/share/libubox/jshn.sh
|
. /usr/share/libubox/jshn.sh
|
||||||
. /lib/functions.sh
|
. /lib/functions.sh
|
||||||
|
|
||||||
readonly TEMPFILE="/tmp/snooping_stats_"$$
|
read_mcast_stats() {
|
||||||
|
local temp_igmp_file='/tmp/igmp_stats_'$$
|
||||||
mcast_snooping_interface() {
|
local snooping_stats='/tmp/igmp_snooping_stats'
|
||||||
local interface intf gip vid port
|
|
||||||
|
|
||||||
config_get interface "$1" interface
|
|
||||||
|
|
||||||
for intf in $interface; do
|
|
||||||
[ -z "$(bridge mdb show dev "$intf" 2> /dev/null | grep -v -F "port ${intf} " | xargs)" ] && continue
|
|
||||||
json_add_object ""
|
|
||||||
json_add_string "interface" "$intf"
|
|
||||||
json_add_array "groups"
|
|
||||||
for gip in $(bridge mdb show dev "$intf" | grep -v -F "port ${intf} " | cut -f6 -d' ' | sort -u | xargs); do
|
|
||||||
json_add_object ""
|
|
||||||
json_add_string "groupaddr" "$gip"
|
|
||||||
json_add_array "clients"
|
|
||||||
for port in $(bridge mdb show dev "$intf" | grep -v -F "port ${intf} " | grep -F "grp ${gip} " | cut -f4 -d' ' | sort -u | xargs); do
|
|
||||||
json_add_object ""
|
|
||||||
json_add_string "device" "$port"
|
|
||||||
for vid in $(bridge mdb show dev "$intf" | grep -F "port ${port} grp ${gip} " | grep -F ' vid ' | cut -f9 -d' ' | sort -u | xargs); do
|
|
||||||
json_add_object ""
|
|
||||||
json_add_string "vid" "$vid"
|
|
||||||
json_close_object #close the associated vid object
|
|
||||||
done
|
|
||||||
json_close_object #close the associated device object
|
|
||||||
done
|
|
||||||
json_close_array #close the associated devices array
|
|
||||||
json_close_object # close the groups object
|
|
||||||
done # close the loop for group addresses
|
|
||||||
json_close_array #close the groups array
|
|
||||||
json_close_object # close the snooping object
|
|
||||||
done # close the loop for interfaces
|
|
||||||
}
|
|
||||||
|
|
||||||
meld_files() {
|
|
||||||
local type="$1"
|
|
||||||
local snooping_stats="/tmp/${type}_snooping_stats"
|
|
||||||
local old_mod_time=$(date +%s 2>/dev/null -r "$snooping_stats")
|
local old_mod_time=$(date +%s 2>/dev/null -r "$snooping_stats")
|
||||||
|
|
||||||
# Sending signal to mcproxy to dump multicast data in /tmp/${type}_snooping_stats
|
# Sending signal to mcproxy to dump multicast data in /tmp/igmp_snooping_stats
|
||||||
local mcast_pids=$(pidof mcproxy)
|
local mcast_pids=$(pidof mcproxy)
|
||||||
for pid in $mcast_pids
|
for pid in $mcast_pids
|
||||||
do
|
do
|
||||||
@@ -58,11 +24,8 @@ meld_files() {
|
|||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
[ ! -e "$snooping_stats" ] && return 0
|
cat "$snooping_stats" > "$temp_igmp_file"
|
||||||
cat "$snooping_stats" >> "$TEMPFILE"
|
|
||||||
}
|
|
||||||
|
|
||||||
read_snooping_file() {
|
|
||||||
local mcast_addrs=""
|
local mcast_addrs=""
|
||||||
local ifaces=""
|
local ifaces=""
|
||||||
|
|
||||||
@@ -91,7 +54,7 @@ read_snooping_file() {
|
|||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done < "$TEMPFILE"
|
done < "$temp_igmp_file"
|
||||||
|
|
||||||
while read line; do
|
while read line; do
|
||||||
# reading each line
|
# reading each line
|
||||||
@@ -118,13 +81,27 @@ read_snooping_file() {
|
|||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done < "$TEMPFILE"
|
done < "$temp_igmp_file"
|
||||||
|
|
||||||
|
json_init
|
||||||
|
json_add_array "snooping"
|
||||||
|
json_add_object ""
|
||||||
IFS=" "
|
IFS=" "
|
||||||
for intf in $ifaces; do
|
for intf in $ifaces; do
|
||||||
json_add_object ""
|
while read line; do
|
||||||
|
# reading each line
|
||||||
|
case $line in
|
||||||
|
br-*)
|
||||||
|
snoop_iface="$(echo $line | awk -F ' ' '{ print $1 }')"
|
||||||
|
if [ "$snoop_iface" != "$intf" ]; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
json_add_string "interface" "$intf"
|
json_add_string "interface" "$intf"
|
||||||
json_add_array "groups"
|
json_add_array "groups"
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done < "$temp_igmp_file"
|
||||||
IFS=" "
|
IFS=" "
|
||||||
for gip_addr in $mcast_addrs; do
|
for gip_addr in $mcast_addrs; do
|
||||||
grp_obj_added=0
|
grp_obj_added=0
|
||||||
@@ -142,11 +119,7 @@ read_snooping_file() {
|
|||||||
fi
|
fi
|
||||||
if [ $grp_obj_added -eq 0 ]; then
|
if [ $grp_obj_added -eq 0 ]; then
|
||||||
json_add_object ""
|
json_add_object ""
|
||||||
if [ -n "$(echo $gip_addr | grep -oE "^((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])$")" ]; then
|
|
||||||
gip="$(ipcalc.sh $gip_addr | grep IP | awk '{print substr($0,4)}')"
|
gip="$(ipcalc.sh $gip_addr | grep IP | awk '{print substr($0,4)}')"
|
||||||
else
|
|
||||||
gip="$(echo $gip_addr | grep -oE '^([0-9a-fA-F]{0,4}:){1,7}[0-9a-fA-F]{0,4}$')"
|
|
||||||
fi
|
|
||||||
json_add_string "groupaddr" "$gip"
|
json_add_string "groupaddr" "$gip"
|
||||||
json_add_array "clients"
|
json_add_array "clients"
|
||||||
grp_obj_added=1
|
grp_obj_added=1
|
||||||
@@ -154,11 +127,7 @@ read_snooping_file() {
|
|||||||
|
|
||||||
json_add_object ""
|
json_add_object ""
|
||||||
host_ip="$(echo $line | awk -F ' ' '{ print $3 }')"
|
host_ip="$(echo $line | awk -F ' ' '{ print $3 }')"
|
||||||
if [ -n "$(echo $host_ip | grep -oE "^((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])$")" ]; then
|
|
||||||
h_ip="$(ipcalc.sh $host_ip | grep IP | awk '{print substr($0,4)}')"
|
h_ip="$(ipcalc.sh $host_ip | grep IP | awk '{print substr($0,4)}')"
|
||||||
else
|
|
||||||
h_ip="$(echo $host_ip | grep -oE '^([0-9a-fA-F]{0,4}:){1,7}[0-9a-fA-F]{0,4}$')"
|
|
||||||
fi
|
|
||||||
json_add_string "ipaddr" "$h_ip"
|
json_add_string "ipaddr" "$h_ip"
|
||||||
src_port="$(echo $line | awk -F ' ' '{ print $4 }')"
|
src_port="$(echo $line | awk -F ' ' '{ print $4 }')"
|
||||||
json_add_string "device" "$src_port"
|
json_add_string "device" "$src_port"
|
||||||
@@ -167,32 +136,17 @@ read_snooping_file() {
|
|||||||
json_close_object #close the associated device object
|
json_close_object #close the associated device object
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done < "$TEMPFILE"
|
done < "$temp_igmp_file"
|
||||||
if [ $grp_obj_added -eq 1 ]; then
|
|
||||||
json_close_array #close the associated devices array
|
json_close_array #close the associated devices array
|
||||||
json_close_object # close the groups object
|
json_close_object # close the groups object
|
||||||
fi
|
|
||||||
done # close the loop for group addresses
|
done # close the loop for group addresses
|
||||||
json_close_array #close the groups array
|
json_close_array #close the groups array
|
||||||
json_close_object # close the snooping object
|
|
||||||
done # close the loop for interfaces
|
done # close the loop for interfaces
|
||||||
}
|
json_close_object # close the snooping object
|
||||||
|
|
||||||
read_mcast_stats() {
|
|
||||||
echo -n > "$TEMPFILE"
|
|
||||||
|
|
||||||
json_init
|
|
||||||
json_add_array "snooping"
|
|
||||||
meld_files "igmp"
|
|
||||||
meld_files "mld"
|
|
||||||
read_snooping_file
|
|
||||||
# L2 Snooping goes here
|
|
||||||
config_load mcast
|
|
||||||
config_foreach mcast_snooping_interface "snooping"
|
|
||||||
json_close_array # close the snooping array
|
json_close_array # close the snooping array
|
||||||
json_dump
|
json_dump
|
||||||
|
|
||||||
rm -f "$TEMPFILE"
|
rm -f "$temp_igmp_file"
|
||||||
}
|
}
|
||||||
|
|
||||||
case "$1" in
|
case "$1" in
|
||||||
@@ -202,12 +156,7 @@ case "$1" in
|
|||||||
call)
|
call)
|
||||||
case "$2" in
|
case "$2" in
|
||||||
stats)
|
stats)
|
||||||
out="$(read_mcast_stats)"
|
read_mcast_stats
|
||||||
if [ -z "${out}" ]; then
|
|
||||||
echo '{}'
|
|
||||||
else
|
|
||||||
echo "${out}"
|
|
||||||
fi
|
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
|
|||||||
@@ -1,51 +0,0 @@
|
|||||||
#
|
|
||||||
# Copyright (C) 2020-2024 iopsys
|
|
||||||
#
|
|
||||||
|
|
||||||
include $(TOPDIR)/rules.mk
|
|
||||||
|
|
||||||
PKG_NAME:=netmngr
|
|
||||||
PKG_VERSION:=1.0.5
|
|
||||||
|
|
||||||
LOCAL_DEV:=0
|
|
||||||
ifneq ($(LOCAL_DEV),1)
|
|
||||||
PKG_SOURCE_PROTO:=git
|
|
||||||
PKG_SOURCE_URL:=https://dev.iopsys.eu/network/netmngr.git
|
|
||||||
PKG_SOURCE_VERSION:=4d778a577c761e5839cd6b6ade35bcc5c4588b10
|
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
|
|
||||||
PKG_MIRROR_HASH:=skip
|
|
||||||
endif
|
|
||||||
|
|
||||||
PKG_LICENSE:=BSD-3-Clause
|
|
||||||
PKG_LICENSE_FILES:=LICENSE
|
|
||||||
|
|
||||||
include $(INCLUDE_DIR)/package.mk
|
|
||||||
include ../bbfdm/bbfdm.mk
|
|
||||||
|
|
||||||
define Package/netmngr
|
|
||||||
CATEGORY:=Utilities
|
|
||||||
TITLE:=Network Data Model Support
|
|
||||||
DEPENDS:=+libuci +libubox +libubus +libblobmsg-json
|
|
||||||
DEPENDS+=+libbbfdm-api +libbbfdm-ubus +dm-service
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Package/netmngr/description
|
|
||||||
Package to add Network data model support.
|
|
||||||
endef
|
|
||||||
|
|
||||||
MAKE_PATH:=src
|
|
||||||
|
|
||||||
TARGET_CFLAGS += -DBBF_VENDOR_PREFIX=\\\"$(CONFIG_BBF_VENDOR_PREFIX)\\\"
|
|
||||||
|
|
||||||
define Package/netmngr/install
|
|
||||||
$(BBFDM_INSTALL_MS_DM) -u Network $(PKG_BUILD_DIR)/src/libnetmngr.so $(1) $(PKG_NAME)
|
|
||||||
$(BBFDM_INSTALL_CORE_PLUGIN) $(PKG_BUILD_DIR)/src/libinterface_stack.so $(1)
|
|
||||||
endef
|
|
||||||
|
|
||||||
ifeq ($(LOCAL_DEV),1)
|
|
||||||
define Build/Prepare
|
|
||||||
$(CP) ~/git/netmngr/* $(PKG_BUILD_DIR)/
|
|
||||||
endef
|
|
||||||
endif
|
|
||||||
|
|
||||||
$(eval $(call BuildPackage,netmngr))
|
|
||||||
@@ -1,109 +0,0 @@
|
|||||||
# Creating Custom Netmodes in IOWRT
|
|
||||||
|
|
||||||
This guide provides developers with detailed instructions on how to create and manage custom network modes (netmodes) in IOWRT. The `netmode` script allows for flexible network configuration, and developers can define their own modes by structuring the necessary files and scripts within the `/etc/netmodes/` directory.
|
|
||||||
|
|
||||||
## Table of Contents
|
|
||||||
1. [Overview of Netmodes](#overview-of-netmodes)
|
|
||||||
2. [Directory Structure](#directory-structure)
|
|
||||||
3. [Creating a Custom Netmode](#creating-a-custom-netmode)
|
|
||||||
- [Step 1: Pre-Execution Scripts](#step-1-pre-execution-scripts)
|
|
||||||
- [Step 2: UCI Configuration Files](#step-2-uci-configuration-files)
|
|
||||||
- [Step 3: Custom Execution Scripts](#step-3-custom-execution-scripts)
|
|
||||||
- [Step 4: Post-Execution Scripts](#step-4-post-execution-scripts)
|
|
||||||
4. [Enabling and Switching Netmodes](#enabling-and-switching-netmodes)
|
|
||||||
|
|
||||||
## Overview of Netmodes
|
|
||||||
|
|
||||||
Netmodes in IOWRT provide a way to switch between different network configurations based on the needs of the environment. Developers can create custom netmodes by organizing scripts and configuration files in specific directories under `/etc/netmodes/<NETMODE_NAME>`.
|
|
||||||
|
|
||||||
## Directory Structure
|
|
||||||
|
|
||||||
A custom netmode is defined within the `/etc/netmodes/<NETMODE_NAME>` directory, which should contain the following subdirectories:
|
|
||||||
|
|
||||||
- **/lib/netmode/pre/**: Generic scripts executed before the netmode-specific configurations are applied.
|
|
||||||
- **/etc/netmodes/<NETMODE_NAME>/uci/**: Contains UCI configuration files that will be copied to `/etc/config/` during the application of the netmode.
|
|
||||||
- **/etc/netmodes/<NETMODE_NAME>/scripts/**: Custom scripts specific to the netmode that are executed after the UCI configurations are applied.
|
|
||||||
- **/lib/netmode/post/**: Generic scripts executed after the netmode-specific configurations are completed.
|
|
||||||
|
|
||||||
## Creating a Custom Netmode
|
|
||||||
|
|
||||||
To create a new netmode, follow these steps:
|
|
||||||
|
|
||||||
### Step 1: Pre-Execution Scripts
|
|
||||||
|
|
||||||
Scripts located in `/lib/netmode/pre/` are executed before any mode-specific actions. These are typically used for preparing the system or cleaning up configurations from the previous netmode.
|
|
||||||
|
|
||||||
- **Create Pre-Execution Scripts**:
|
|
||||||
- Place your generic pre-execution scripts in `/lib/netmode/pre/`.
|
|
||||||
- Example script (`/lib/netmode/pre/cleanup.sh`):
|
|
||||||
```bash
|
|
||||||
#!/bin/sh
|
|
||||||
echo "Cleaning up old network configurations..."
|
|
||||||
# Add commands here
|
|
||||||
```
|
|
||||||
|
|
||||||
### Step 2: UCI Configuration Files
|
|
||||||
|
|
||||||
The UCI configuration files stored in `/etc/netmodes/<NETMODE_NAME>/uci/` will be copied to `/etc/config/`, effectively applying the desired network configuration.
|
|
||||||
|
|
||||||
- **Place UCI Config Files**:
|
|
||||||
- Create UCI configuration files under `/etc/netmodes/<NETMODE_NAME>/uci/`.
|
|
||||||
- Example (`/etc/netmodes/bridge/uci/network`):
|
|
||||||
````bash
|
|
||||||
config device 'br_lan'
|
|
||||||
option name 'br-lan'
|
|
||||||
option type 'bridge'
|
|
||||||
option multicast_to_unicast '0'
|
|
||||||
option bridge_empty '1'
|
|
||||||
list ports 'eth1'
|
|
||||||
list ports 'eth3'
|
|
||||||
list ports 'eth4'
|
|
||||||
|
|
||||||
config interface 'lan'
|
|
||||||
option proto 'dhcp'
|
|
||||||
option device 'br-lan'
|
|
||||||
option force_link '1'
|
|
||||||
option reqopts '43 125'
|
|
||||||
````
|
|
||||||
|
|
||||||
### Step 3: Custom Execution Scripts
|
|
||||||
|
|
||||||
After the UCI files are applied, any scripts in `/etc/netmodes/<NETMODE_NAME>/scripts/` are executed. These can be used to perform additional configuration tasks that are specific to the netmode.
|
|
||||||
|
|
||||||
- **Create Custom Scripts**:
|
|
||||||
- Add scripts to `/etc/netmodes/<NETMODE_NAME>/scripts/`.
|
|
||||||
- Example (`/etc/netmodes/bridge/scripts/setup_bridge.sh`):
|
|
||||||
```bash
|
|
||||||
#!/bin/sh
|
|
||||||
echo "Setting up bridge mode..."
|
|
||||||
# Additional configuration commands here
|
|
||||||
```
|
|
||||||
|
|
||||||
### Step 4: Post-Execution Scripts
|
|
||||||
|
|
||||||
Finally, the generic scripts in `/lib/netmode/post/` are executed. These scripts typically finalize the setup or perform any necessary cleanups.
|
|
||||||
|
|
||||||
- **Create Post-Execution Scripts**:
|
|
||||||
- Place scripts in `/lib/netmode/post/`.
|
|
||||||
- Example script (`/lib/netmode/post/restart_services.sh`):
|
|
||||||
```bash
|
|
||||||
#!/bin/sh
|
|
||||||
echo "Restarting network services..."
|
|
||||||
# Add commands here
|
|
||||||
```
|
|
||||||
|
|
||||||
## Enabling and Switching Netmodes
|
|
||||||
|
|
||||||
The netmode mechanism can be enabled or disabled via the UCI configuration, and you can switch between netmodes using UCI commands.
|
|
||||||
|
|
||||||
- **Enable Netmode**:
|
|
||||||
```bash
|
|
||||||
uci set netmode.global.enabled=1
|
|
||||||
uci commit netmode
|
|
||||||
```
|
|
||||||
|
|
||||||
- **Switch Netmode**:
|
|
||||||
```bash
|
|
||||||
uci set netmode.global.mode='<NETMODE_NAME>'
|
|
||||||
uci commit netmode
|
|
||||||
```
|
|
||||||
@@ -1,3 +1,4 @@
|
|||||||
|
if PACKAGE_obuspa
|
||||||
config OBUSPA_MTP_ENABLE_MQTT
|
config OBUSPA_MTP_ENABLE_MQTT
|
||||||
bool "Enable MQTT as mtp protocol"
|
bool "Enable MQTT as mtp protocol"
|
||||||
default y
|
default y
|
||||||
@@ -21,11 +22,6 @@ config OBUSPA_CONTROLLER_MTP_VERIFY
|
|||||||
config OBUSPA_ENABLE_TEST_CONTROLLER
|
config OBUSPA_ENABLE_TEST_CONTROLLER
|
||||||
bool "Adds a test controller by default"
|
bool "Adds a test controller by default"
|
||||||
default n
|
default n
|
||||||
select OBUSPA_ENABLE_TEST_CONTROLLER_LOCAL
|
|
||||||
|
|
||||||
config OBUSPA_ENABLE_TEST_CONTROLLER_LOCAL
|
|
||||||
bool "Adds a test controller by default (local access only)"
|
|
||||||
default n
|
|
||||||
|
|
||||||
config OBUSPA_MAX_CONTROLLERS_NUM
|
config OBUSPA_MAX_CONTROLLERS_NUM
|
||||||
int "The maximum number of controllers to be supported"
|
int "The maximum number of controllers to be supported"
|
||||||
@@ -55,3 +51,4 @@ config OBUSPA_SESSION_EXTENSION
|
|||||||
Adds Device.LocalAgent.X_IOPSYS_EU_Session. object to simulate
|
Adds Device.LocalAgent.X_IOPSYS_EU_Session. object to simulate
|
||||||
a CWMP like session
|
a CWMP like session
|
||||||
|
|
||||||
|
endif
|
||||||
|
|||||||
@@ -5,15 +5,15 @@
|
|||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=obuspa
|
PKG_NAME:=obuspa
|
||||||
PKG_VERSION:=9.0.0.14
|
PKG_VERSION:=8.0.1.6
|
||||||
|
|
||||||
LOCAL_DEV:=0
|
LOCAL_DEV:=0
|
||||||
ifneq ($(LOCAL_DEV),1)
|
ifneq ($(LOCAL_DEV),1)
|
||||||
PKG_SOURCE_PROTO:=git
|
PKG_SOURCE_PROTO:=git
|
||||||
PKG_SOURCE_URL:=https://dev.iopsys.eu/bbf/obuspa.git
|
PKG_SOURCE_URL:=https://dev.iopsys.eu/bbf/obuspa.git
|
||||||
PKG_SOURCE_VERSION:=00a9001bff19e074d4896b59e8839aab9f6f961e
|
PKG_SOURCE_VERSION:=0997eebe269d766eb738b80e4d5ccd40baf79090
|
||||||
PKG_MAINTAINER:=Vivek Dutta <vivek.dutta@iopsys.eu>
|
PKG_MAINTAINER:=Vivek Dutta <vivek.dutta@iopsys.eu>
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_VERSION).tar.gz
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
|
||||||
PKG_MIRROR_HASH:=skip
|
PKG_MIRROR_HASH:=skip
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@@ -32,10 +32,7 @@ define Package/obuspa
|
|||||||
SUBMENU:=TRx69
|
SUBMENU:=TRx69
|
||||||
TITLE:=USP agent
|
TITLE:=USP agent
|
||||||
MENU:=1
|
MENU:=1
|
||||||
DEPENDS:=+libopenssl +libuci +libblobmsg-json +libcurl +libsqlite3 +libubox +libubus +libmosquitto-ssl +libwebsockets-openssl +ca-certificates \
|
DEPENDS:=+libopenssl +libuci +libblobmsg-json +libcurl +libsqlite3 +libubox +libubus +libmosquitto-ssl +libwebsockets-openssl
|
||||||
+OBUSPA_ENABLE_TEST_CONTROLLER_LOCAL:mosquitto-ssl +OBUSPA_ENABLE_TEST_CONTROLLER_LOCAL:mosquitto-client-ssl \
|
|
||||||
+OBUSPA_ENABLE_TEST_CONTROLLER:mosquitto-auth-shadow +libjson-c
|
|
||||||
DEPENDS+=+libbbfdm-api +libbbfdm-ubus +dm-service
|
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/obuspa/description
|
define Package/obuspa/description
|
||||||
@@ -115,23 +112,21 @@ define Package/obuspa/install
|
|||||||
$(INSTALL_DIR) $(1)/etc/users/roles
|
$(INSTALL_DIR) $(1)/etc/users/roles
|
||||||
$(INSTALL_DIR) $(1)/etc/uci-defaults
|
$(INSTALL_DIR) $(1)/etc/uci-defaults
|
||||||
$(INSTALL_DIR) $(1)/etc/udhcpc.user.d
|
$(INSTALL_DIR) $(1)/etc/udhcpc.user.d
|
||||||
|
$(INSTALL_DIR) $(1)/etc/hotplug.d/iface
|
||||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/obuspa $(1)/usr/sbin/
|
$(INSTALL_BIN) $(PKG_BUILD_DIR)/obuspa $(1)/usr/sbin/
|
||||||
$(INSTALL_BIN) ./files/etc/init.d/obuspa $(1)/etc/init.d/
|
$(INSTALL_BIN) ./files/etc/init.d/obuspa $(1)/etc/init.d/
|
||||||
$(INSTALL_DATA) ./files/etc/config/obuspa $(1)/etc/config/
|
$(INSTALL_DATA) ./files/etc/config/obuspa $(1)/etc/config/
|
||||||
$(INSTALL_DATA) ./files/etc/users/roles/*.json $(1)/etc/users/roles/
|
$(INSTALL_DATA) ./files/etc/users/roles/*.json $(1)/etc/users/roles/
|
||||||
$(INSTALL_DATA) ./files/etc/obuspa/usp_utils.sh $(1)/etc/obuspa/
|
$(INSTALL_DATA) ./files/etc/obuspa/usp_utils.sh $(1)/etc/obuspa/
|
||||||
echo "$(CONFIG_BBF_VENDOR_PREFIX)" > $(1)/etc/obuspa/vendor_prefix
|
echo "$(CONFIG_BBF_VENDOR_PREFIX)" > $(1)/etc/obuspa/vendor_prefix
|
||||||
|
$(INSTALL_DATA) ./files/etc/obuspa/dmcaching_exclude.json $(1)/etc/obuspa/dmcaching_exclude.json
|
||||||
$(INSTALL_BIN) ./files/etc/uci-defaults/01-fix-upgrade-uci $(1)/etc/uci-defaults/
|
$(INSTALL_BIN) ./files/etc/uci-defaults/01-fix-upgrade-uci $(1)/etc/uci-defaults/
|
||||||
$(INSTALL_BIN) ./files/etc/uci-defaults/60-generate-ctrust-defaults $(1)/etc/uci-defaults/
|
$(INSTALL_BIN) ./files/etc/uci-defaults/60-generate-ctrust-defaults $(1)/etc/uci-defaults/
|
||||||
$(INSTALL_BIN) ./files/etc/uci-defaults/obuspa-set-dhcp-option $(1)/etc/uci-defaults/
|
$(INSTALL_BIN) ./files/etc/uci-defaults/obuspa-set-dhcp-option $(1)/etc/uci-defaults/
|
||||||
$(INSTALL_BIN) ./files/etc/uci-defaults/92-obuspa_firewall $(1)/etc/uci-defaults/
|
|
||||||
$(INSTALL_BIN) ./files/etc/firewall.usp $(1)/etc/
|
|
||||||
$(INSTALL_BIN) ./files/etc/udhcpc.user.d/udhcpc_obuspa_opt125.user $(1)/etc/udhcpc.user.d/udhcpc_obuspa_opt125.user
|
$(INSTALL_BIN) ./files/etc/udhcpc.user.d/udhcpc_obuspa_opt125.user $(1)/etc/udhcpc.user.d/udhcpc_obuspa_opt125.user
|
||||||
$(BBFDM_INSTALL_MS_DM) $(PKG_BUILD_DIR)/libuspagentdm.so $(1) $(PKG_NAME)
|
$(INSTALL_BIN) ./files/obuspa.hotplug $(1)/etc/hotplug.d/iface/21-obuspa
|
||||||
|
$(BBFDM_INSTALL_CORE_PLUGIN) ./files/etc/bbfdm/json/USPAgent.json $(1)
|
||||||
ifeq ($(CONFIG_OBUSPA_ENABLE_TEST_CONTROLLER),y)
|
ifeq ($(CONFIG_OBUSPA_ENABLE_TEST_CONTROLLER),y)
|
||||||
$(INSTALL_BIN) ./files/etc/uci-defaults/54-test-usp-remote $(1)/etc/uci-defaults/
|
|
||||||
endif
|
|
||||||
ifeq ($(CONFIG_OBUSPA_ENABLE_TEST_CONTROLLER_LOCAL),y)
|
|
||||||
$(INSTALL_BIN) ./files/etc/init.d/usptest $(1)/etc/init.d/
|
$(INSTALL_BIN) ./files/etc/init.d/usptest $(1)/etc/init.d/
|
||||||
$(INSTALL_BIN) ./files/etc/uci-defaults/55-test-usp-controller $(1)/etc/uci-defaults/
|
$(INSTALL_BIN) ./files/etc/uci-defaults/55-test-usp-controller $(1)/etc/uci-defaults/
|
||||||
endif
|
endif
|
||||||
|
|||||||
1063
obuspa/files/etc/bbfdm/json/USPAgent.json
Normal file
1063
obuspa/files/etc/bbfdm/json/USPAgent.json
Normal file
File diff suppressed because it is too large
Load Diff
@@ -5,9 +5,7 @@ config obuspa 'global'
|
|||||||
option log_level '2'
|
option log_level '2'
|
||||||
option prototrace '0'
|
option prototrace '0'
|
||||||
option db_file '/etc/obuspa/usp.db'
|
option db_file '/etc/obuspa/usp.db'
|
||||||
#option max_group_sep '2'
|
option dm_caching_exclude '/etc/obuspa/dmcaching_exclude.json'
|
||||||
#option ipc_timeout '30'
|
|
||||||
#option max_cache_time '600'
|
|
||||||
#option trust_cert '/etc/obuspa/ca.pem'
|
#option trust_cert '/etc/obuspa/ca.pem'
|
||||||
#option client_cert '/etc/obuspa/client.pem'
|
#option client_cert '/etc/obuspa/client.pem'
|
||||||
#option log_dest '/tmp/obuspa.log'
|
#option log_dest '/tmp/obuspa.log'
|
||||||
|
|||||||
@@ -1,16 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
log() {
|
|
||||||
echo "$*"|logger -t obuspa.firewall -p debug
|
|
||||||
}
|
|
||||||
|
|
||||||
config_load obuspa
|
|
||||||
config_get_bool enable_obuspa global enabled 1
|
|
||||||
|
|
||||||
if [ "$enable_obuspa" = "0" ]; then
|
|
||||||
return 0;
|
|
||||||
fi
|
|
||||||
|
|
||||||
sleep 1
|
|
||||||
log "Sending WakeUp! event to re-connect after firewall restart"
|
|
||||||
obuspa -c event "Device.LocalAgent.WakeUp!"
|
|
||||||
@@ -40,7 +40,7 @@ db_set_reset_file()
|
|||||||
shift
|
shift
|
||||||
value="$*"
|
value="$*"
|
||||||
|
|
||||||
if [ -n "${param}" ]; then
|
if [ -n "${param}" ] && [ -n "${value}" ]; then
|
||||||
echo "${param} \"${value}\"">>${RESET_FILE}
|
echo "${param} \"${value}\"">>${RESET_FILE}
|
||||||
else
|
else
|
||||||
echo >>${RESET_FILE}
|
echo >>${RESET_FILE}
|
||||||
@@ -352,9 +352,9 @@ configure_controller()
|
|||||||
db_set "${BASEPATH}.PeriodicNotifInterval" "${PeriodicNotifInterval}"
|
db_set "${BASEPATH}.PeriodicNotifInterval" "${PeriodicNotifInterval}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -n "${SessionMode}" ]; then
|
#if [ -n "${SessionMode}" ]; then
|
||||||
db_set "${BASEPATH}.E2ESession.SessionMode" "${SessionMode}"
|
# db_set "${BASEPATH}.E2ESession.SessionMode" "${SessionMode}"
|
||||||
fi
|
#fi
|
||||||
|
|
||||||
if [ -n "${assigned_role_name}" ]; then
|
if [ -n "${assigned_role_name}" ]; then
|
||||||
AssignedRole=$(get_role_index "${assigned_role_name}")
|
AssignedRole=$(get_role_index "${assigned_role_name}")
|
||||||
@@ -368,21 +368,9 @@ configure_controller()
|
|||||||
db_set "${BASEPATH}.MTP.1.Protocol" "${Protocol}"
|
db_set "${BASEPATH}.MTP.1.Protocol" "${Protocol}"
|
||||||
# only support configuration of one mtp path per controller using uci
|
# only support configuration of one mtp path per controller using uci
|
||||||
if [ "${Protocol}" = "MQTT" ]; then
|
if [ "${Protocol}" = "MQTT" ]; then
|
||||||
# Cleanup
|
|
||||||
db_set "${BASEPATH}.MTP.1.WebSocket.Host" ""
|
|
||||||
db_set "${BASEPATH}.MTP.1.WebSocket.Path" ""
|
|
||||||
db_set "${BASEPATH}.MTP.1.STOMP.Reference" ""
|
|
||||||
db_set "${BASEPATH}.MTP.1.STOMP.Destination" ""
|
|
||||||
|
|
||||||
db_set "${BASEPATH}.MTP.1.MQTT.Reference" "${dm_ref}"
|
db_set "${BASEPATH}.MTP.1.MQTT.Reference" "${dm_ref}"
|
||||||
db_set "${BASEPATH}.MTP.1.MQTT.Topic" "${Topic}"
|
db_set "${BASEPATH}.MTP.1.MQTT.Topic" "${Topic}"
|
||||||
elif [ "${Protocol}" = "STOMP" ]; then
|
elif [ "${Protocol}" = "STOMP" ]; then
|
||||||
# Cleanup
|
|
||||||
db_set "${BASEPATH}.MTP.1.WebSocket.Host" ""
|
|
||||||
db_set "${BASEPATH}.MTP.1.WebSocket.Path" ""
|
|
||||||
db_set "${BASEPATH}.MTP.1.MQTT.Reference" ""
|
|
||||||
db_set "${BASEPATH}.MTP.1.MQTT.Topic" ""
|
|
||||||
|
|
||||||
db_set "${BASEPATH}.MTP.1.STOMP.Reference" "${dm_ref}"
|
db_set "${BASEPATH}.MTP.1.STOMP.Reference" "${dm_ref}"
|
||||||
db_set "${BASEPATH}.MTP.1.STOMP.Destination" "${Destination}"
|
db_set "${BASEPATH}.MTP.1.STOMP.Destination" "${Destination}"
|
||||||
elif [ "${Protocol}" = "CoAP" ]; then
|
elif [ "${Protocol}" = "CoAP" ]; then
|
||||||
@@ -391,12 +379,6 @@ configure_controller()
|
|||||||
db_set "${BASEPATH}.MTP.1.CoAP.Port" "${Port}"
|
db_set "${BASEPATH}.MTP.1.CoAP.Port" "${Port}"
|
||||||
db_set "${BASEPATH}.MTP.1.CoAP.EnableEncryption" "${EnableEncryption}"
|
db_set "${BASEPATH}.MTP.1.CoAP.EnableEncryption" "${EnableEncryption}"
|
||||||
elif [ "${Protocol}" = "WebSocket" ]; then
|
elif [ "${Protocol}" = "WebSocket" ]; then
|
||||||
# Cleanup
|
|
||||||
db_set "${BASEPATH}.MTP.1.STOMP.Reference" ""
|
|
||||||
db_set "${BASEPATH}.MTP.1.STOMP.Destination" ""
|
|
||||||
db_set "${BASEPATH}.MTP.1.MQTT.Reference" ""
|
|
||||||
db_set "${BASEPATH}.MTP.1.MQTT.Topic" ""
|
|
||||||
|
|
||||||
db_set "${BASEPATH}.MTP.1.WebSocket.Host" "${Host}"
|
db_set "${BASEPATH}.MTP.1.WebSocket.Host" "${Host}"
|
||||||
db_set "${BASEPATH}.MTP.1.WebSocket.Port" "${Port}"
|
db_set "${BASEPATH}.MTP.1.WebSocket.Port" "${Port}"
|
||||||
db_set "${BASEPATH}.MTP.1.WebSocket.Path" "${Path}"
|
db_set "${BASEPATH}.MTP.1.WebSocket.Path" "${Path}"
|
||||||
@@ -527,34 +509,18 @@ configure_mtp() {
|
|||||||
db_set "${BASEPATH}.Enable" "${Enable}"
|
db_set "${BASEPATH}.Enable" "${Enable}"
|
||||||
db_set "${BASEPATH}.Protocol" "${Protocol}"
|
db_set "${BASEPATH}.Protocol" "${Protocol}"
|
||||||
if [ "${Protocol}" = "MQTT" ]; then
|
if [ "${Protocol}" = "MQTT" ]; then
|
||||||
# cleanup
|
|
||||||
db_set "${BASEPATH}.WebSocket.Path" ""
|
|
||||||
db_set "${BASEPATH}.STOMP.Reference" ""
|
|
||||||
db_set "${BASEPATH}.STOMP.Destination" ""
|
|
||||||
|
|
||||||
db_set "${BASEPATH}.MQTT.Reference" "${dm_ref}"
|
db_set "${BASEPATH}.MQTT.Reference" "${dm_ref}"
|
||||||
db_set "${BASEPATH}.MQTT.ResponseTopicConfigured" "${ResponseTopicConfigured}"
|
db_set "${BASEPATH}.MQTT.ResponseTopicConfigured" "${ResponseTopicConfigured}"
|
||||||
if [ -n "${PublishQoS}" ]; then
|
if [ -n "${PublishQoS}" ]; then
|
||||||
db_set "${BASEPATH}.MQTT.PublishQoS" "${PublishQoS}"
|
db_set "${BASEPATH}.MQTT.PublishQoS" "${PublishQoS}"
|
||||||
fi
|
fi
|
||||||
elif [ "${Protocol}" = "STOMP" ]; then
|
elif [ "${Protocol}" = "STOMP" ]; then
|
||||||
# cleanup
|
|
||||||
db_set "${BASEPATH}.WebSocket.Path" ""
|
|
||||||
db_set "${BASEPATH}.MQTT.Reference" ""
|
|
||||||
db_set "${BASEPATH}.MQTT.ResponseTopicConfigured" ""
|
|
||||||
|
|
||||||
db_set "${BASEPATH}.STOMP.Reference" "${dm_ref}"
|
db_set "${BASEPATH}.STOMP.Reference" "${dm_ref}"
|
||||||
db_set "${BASEPATH}.STOMP.Destination" "${Destination}"
|
db_set "${BASEPATH}.STOMP.Destination" "${Destination}"
|
||||||
elif [ "${Protocol}" = "CoAP" ]; then
|
elif [ "${Protocol}" = "CoAP" ]; then
|
||||||
db_set "${BASEPATH}.CoAP.Path" "${Path}"
|
db_set "${BASEPATH}.CoAP.Path" "${Path}"
|
||||||
db_set "${BASEPATH}.CoAP.Port" "${Port}"
|
db_set "${BASEPATH}.CoAP.Port" "${Port}"
|
||||||
elif [ "${Protocol}" = "WebSocket" ]; then
|
elif [ "${Protocol}" = "WebSocket" ]; then
|
||||||
# cleanup
|
|
||||||
db_set "${BASEPATH}.MQTT.Reference" ""
|
|
||||||
db_set "${BASEPATH}.MQTT.ResponseTopicConfigured" ""
|
|
||||||
db_set "${BASEPATH}.STOMP.Reference" ""
|
|
||||||
db_set "${BASEPATH}.STOMP.Destination" ""
|
|
||||||
|
|
||||||
db_set "${BASEPATH}.WebSocket.Path" "${Path}"
|
db_set "${BASEPATH}.WebSocket.Path" "${Path}"
|
||||||
db_set "${BASEPATH}.WebSocket.Port" "${Port}"
|
db_set "${BASEPATH}.WebSocket.Port" "${Port}"
|
||||||
db_set "${BASEPATH}.WebSocket.EnableEncryption" "${EnableEncryption}"
|
db_set "${BASEPATH}.WebSocket.EnableEncryption" "${EnableEncryption}"
|
||||||
@@ -913,18 +879,6 @@ check_n_delete_db()
|
|||||||
delete_sql_db_entry_with_pattern "${path}"
|
delete_sql_db_entry_with_pattern "${path}"
|
||||||
}
|
}
|
||||||
|
|
||||||
workaround_remove_download_pattern()
|
|
||||||
{
|
|
||||||
local inst
|
|
||||||
|
|
||||||
inst="$(cat ${DB_DUMP} |grep -E "Device.DeviceInfo.FirmwareImage.\d.Download()"|grep -oE "Device.LocalAgent.Request.\d.")"
|
|
||||||
|
|
||||||
if [ -n "${inst}" ]; then
|
|
||||||
log "Workaround to remove the old download Request [$inst]"
|
|
||||||
delete_sql_db_entry_with_pattern "${inst}"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
reverse_update_db_with_uci()
|
reverse_update_db_with_uci()
|
||||||
{
|
{
|
||||||
if [ ! -f "${DB_DUMP}" ]; then
|
if [ ! -f "${DB_DUMP}" ]; then
|
||||||
@@ -1011,7 +965,6 @@ db_init()
|
|||||||
|
|
||||||
cp /etc/config/obuspa /tmp/obuspa/
|
cp /etc/config/obuspa /tmp/obuspa/
|
||||||
if [ -f "${DB_DUMP}" ]; then
|
if [ -f "${DB_DUMP}" ]; then
|
||||||
workaround_remove_download_pattern
|
|
||||||
mv ${DB_DUMP} ${RESET_FILE}
|
mv ${DB_DUMP} ${RESET_FILE}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
7
obuspa/files/etc/obuspa/dmcaching_exclude.json
Normal file
7
obuspa/files/etc/obuspa/dmcaching_exclude.json
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"dmcaching_exclude": [
|
||||||
|
"Device.Hosts.Host.",
|
||||||
|
"Device.IEEE1905.",
|
||||||
|
"Device.WiFi.DataElements."
|
||||||
|
]
|
||||||
|
}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user