mirror of
https://dev.iopsys.eu/feed/iopsys.git
synced 2026-01-07 23:08:47 +08:00
Compare commits
1 Commits
gnx-7.3-tm
...
mapbrcmpre
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
452a180f36 |
78
ated/Makefile
Normal file
78
ated/Makefile
Normal file
@@ -0,0 +1,78 @@
|
|||||||
|
#
|
||||||
|
# Copyright (C) 2019 iopsys Software Solutions AB. All rights reserved.
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or
|
||||||
|
# modify it under the terms of the GNU General Public License
|
||||||
|
# version 2 as published by the Free Software Foundation.
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
|
||||||
|
include $(TOPDIR)/rules.mk
|
||||||
|
include $(INCLUDE_DIR)/kernel.mk
|
||||||
|
|
||||||
|
PKG_NAME:=ated
|
||||||
|
PKG_VERSION:=1.2.2
|
||||||
|
PKG_RELEASE:=1
|
||||||
|
|
||||||
|
PKG_SOURCE_VERSION:=f614cba983d827d5185c60a6a5a35530621d44d2
|
||||||
|
PKG_SOURCE_PROTO:=git
|
||||||
|
PKG_SOURCE_URL:=https://dev.iopsys.eu/mediatek/ated.git
|
||||||
|
|
||||||
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_RELEASE)-$(PKG_SOURCE_VERSION).tar.gz
|
||||||
|
PKG_MIRROR_HASH:=skip
|
||||||
|
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
|
||||||
|
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
|
||||||
|
|
||||||
|
PKG_LICENSE:=GPLv2
|
||||||
|
PKG_LICENSE_FILES:=LICENSE
|
||||||
|
|
||||||
|
# support parallel build
|
||||||
|
#PKG_BUILD_PARALLEL:=1
|
||||||
|
|
||||||
|
#re create configure scripts if not present.
|
||||||
|
#PKG_FIXUP:=autoreconf
|
||||||
|
|
||||||
|
# run install target when cross compiling. basically, make install DESTDIR=$(PKG_INSTALL_DIR)
|
||||||
|
# this way we don't need to pick out the resulting files from the build dir.
|
||||||
|
PKG_INSTALL:=1
|
||||||
|
|
||||||
|
include $(INCLUDE_DIR)/package.mk
|
||||||
|
|
||||||
|
define Package/ated
|
||||||
|
CATEGORY:=Utilities
|
||||||
|
TITLE:=Daemon for handling wifi calibration
|
||||||
|
URL:=
|
||||||
|
DEPENDS:= libc
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/ated/description
|
||||||
|
Daemon for handling wifi calibration
|
||||||
|
endef
|
||||||
|
|
||||||
|
#TARGET_CFLAGS += -I$(LINUX_DIR)/include -I$(LINUX_DIR)/arch/mips/include
|
||||||
|
|
||||||
|
MAKE_FLAGS += \
|
||||||
|
v=2 \
|
||||||
|
m=3
|
||||||
|
|
||||||
|
|
||||||
|
#TARGET_CPPFLAGS := \
|
||||||
|
# -I$(STAGING_DIR)/usr/include/bcm963xx/shared/opensource/include/bcm963xx \
|
||||||
|
# -I$(STAGING_DIR)/usr/include/bcm963xx/bcmdrivers/opensource/include/bcm963xx \
|
||||||
|
# $(TARGET_CPPFLAGS)
|
||||||
|
|
||||||
|
# we donot wwant to have any install.
|
||||||
|
define Build/Install/Default
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/ated/install
|
||||||
|
$(INSTALL_DIR) $(1)/sbin
|
||||||
|
$(INSTALL_BIN) $(PKG_BUILD_DIR)/ated $(1)/sbin/
|
||||||
|
endef
|
||||||
|
|
||||||
|
$(eval $(call BuildPackage,ated))
|
||||||
49
bbf/Config_bbfdm.in
Normal file
49
bbf/Config_bbfdm.in
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
if PACKAGE_libbbfdm
|
||||||
|
|
||||||
|
config BBF_VENDOR_EXTENSION
|
||||||
|
bool "Enable Vendor Extension"
|
||||||
|
default y
|
||||||
|
|
||||||
|
config BBF_VENDOR_LIST
|
||||||
|
string "Vendor List"
|
||||||
|
default "iopsys"
|
||||||
|
|
||||||
|
config BBF_VENDOR_PREFIX
|
||||||
|
string "Vendor Prefix"
|
||||||
|
default "X_IOPSYS_EU_"
|
||||||
|
|
||||||
|
config BBF_TR181
|
||||||
|
bool "Enable TR-181 Data Model Support"
|
||||||
|
default y
|
||||||
|
|
||||||
|
config BBF_TR104
|
||||||
|
bool "Enable TR-104 Data Model Support"
|
||||||
|
default y
|
||||||
|
|
||||||
|
config BBF_TR143
|
||||||
|
bool "Enable TR-143 Data Model Support"
|
||||||
|
default y
|
||||||
|
|
||||||
|
config BBFDM_ENABLE_JSON_PLUGIN
|
||||||
|
bool "Enable json plugin to extend datamodel"
|
||||||
|
default n
|
||||||
|
|
||||||
|
config BBFDM_ENABLE_DOTSO_PLUGIN
|
||||||
|
bool "Enable shared library plugin to extend datamodel"
|
||||||
|
default n
|
||||||
|
|
||||||
|
choice
|
||||||
|
prompt "Select SSL utility"
|
||||||
|
default BBF_USE_WOLFSSL
|
||||||
|
|
||||||
|
config BBF_USE_WOLFSSL
|
||||||
|
bool "Use WolfSSL for ssl utilities"
|
||||||
|
select CONFIG_PACKAGE_libwolfssl
|
||||||
|
|
||||||
|
config BBF_USE_OPENSSL
|
||||||
|
bool "Use OpenSSL for ssl utilities"
|
||||||
|
select CONFIG_PACKAGE_libopenssl
|
||||||
|
|
||||||
|
endchoice
|
||||||
|
|
||||||
|
endif
|
||||||
147
bbf/Makefile
Normal file
147
bbf/Makefile
Normal file
@@ -0,0 +1,147 @@
|
|||||||
|
#
|
||||||
|
# Copyright (C) 2021 IOPSYS
|
||||||
|
#
|
||||||
|
|
||||||
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
|
PKG_NAME:=libbbfdm
|
||||||
|
PKG_VERSION:=6.6.10
|
||||||
|
PKG_FIXUP:=autoreconf
|
||||||
|
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/bbf.git
|
||||||
|
PKG_SOURCE_PROTO:=git
|
||||||
|
PKG_SOURCE_VERSION:=3efc5ce5e6f639e50894e7b9e69b6e2408875db6
|
||||||
|
PKG_RELEASE=$(PKG_SOURCE_VERSION)
|
||||||
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
|
||||||
|
PKG_MIRROR_HASH:=skip
|
||||||
|
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
|
||||||
|
|
||||||
|
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
|
||||||
|
|
||||||
|
PKG_LICENSE:=LGPL-2.1
|
||||||
|
PKG_LICENSE_FILES:=LICENSE
|
||||||
|
|
||||||
|
include $(INCLUDE_DIR)/package.mk
|
||||||
|
|
||||||
|
define Package/libbbf_api
|
||||||
|
SECTION:=utils
|
||||||
|
CATEGORY:=Utilities
|
||||||
|
SUBMENU:=TRx69
|
||||||
|
TITLE:=Library for libbbfdm API
|
||||||
|
DEPENDS:=+libuci +libubox +libubus +libblobmsg-json +libjson-c +libopenssl +libwolfssl
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/libbbfdm
|
||||||
|
SECTION:=utils
|
||||||
|
CATEGORY:=Utilities
|
||||||
|
SUBMENU:=TRx69
|
||||||
|
TITLE:=Library for broadband-forum data model
|
||||||
|
DEPENDS:=+libuci +libubox +libubus +libblobmsg-json +libjson-c +libtrace +libbbf_api +libcurl +libopenssl +libwolfssl
|
||||||
|
MENU:=1
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/libbbfdm/config
|
||||||
|
source "$(SOURCE)/Config_bbfdm.in"
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/libbbf_api/description
|
||||||
|
Library contains the API(UCI, UBUS, JSON, CLI and Browse) of libbbfdm
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/libbbfdm/description
|
||||||
|
Library contains the data model tree. It includes TR181, TR104 and TR143 data models
|
||||||
|
endef
|
||||||
|
|
||||||
|
USE_LOCAL=$(shell ls ./src/ 2>/dev/null >/dev/null && echo 1)
|
||||||
|
ifneq ($(USE_LOCAL),)
|
||||||
|
define Build/Prepare
|
||||||
|
$(CP) ./src/* $(PKG_BUILD_DIR)/
|
||||||
|
endef
|
||||||
|
endif
|
||||||
|
|
||||||
|
TARGET_CFLAGS += \
|
||||||
|
-D_GNU_SOURCE \
|
||||||
|
-Wall -Werror \
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_BBF_TR181),y)
|
||||||
|
CONFIGURE_ARGS += \
|
||||||
|
--enable-tr181
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_BBF_TR104),y)
|
||||||
|
CONFIGURE_ARGS += \
|
||||||
|
--enable-tr104
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_BBF_TR143),y)
|
||||||
|
CONFIGURE_ARGS += \
|
||||||
|
--enable-tr143
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_BBF_VENDOR_EXTENSION),y)
|
||||||
|
CONFIGURE_ARGS += \
|
||||||
|
--enable-vendor-extension
|
||||||
|
|
||||||
|
CONFIGURE_ARGS += \
|
||||||
|
BBF_VENDOR_LIST="$(CONFIG_BBF_VENDOR_LIST)" \
|
||||||
|
BBF_VENDOR_PREFIX="$(CONFIG_BBF_VENDOR_PREFIX)"
|
||||||
|
|
||||||
|
endif ##CONFIG_BBF_VENDOR_EXTENSION
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_BBFDM_ENABLE_JSON_PLUGIN),y)
|
||||||
|
CONFIGURE_ARGS += \
|
||||||
|
--enable-json-plugin
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_BBFDM_ENABLE_DOTSO_PLUGIN),y)
|
||||||
|
CONFIGURE_ARGS += \
|
||||||
|
--enable-shared-library
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_BBF_USE_WOLFSSL), y)
|
||||||
|
CONFIGURE_ARGS += --enable-libwolfssl
|
||||||
|
TARGET_CFLAGS += -I$(STAGING_DIR)/usr/include/wolfssl
|
||||||
|
TARGET_LDFLAGS += "-lwolfssl"
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_BBF_USE_OPENSSL), y)
|
||||||
|
CONFIGURE_ARGS += --enable-libopenssl
|
||||||
|
TARGET_CFLAGS += -I$(STAGING_DIR)/usr/include/
|
||||||
|
TARGET_LDFLAGS += "-lssl"
|
||||||
|
endif
|
||||||
|
|
||||||
|
define Package/libbbf_api/install
|
||||||
|
$(INSTALL_DIR) $(1)/lib
|
||||||
|
$(INSTALL_BIN) $(PKG_BUILD_DIR)/bin/.libs/libbbf_api.so* $(1)/lib/
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/libbbfdm/install
|
||||||
|
$(INSTALL_DIR) $(1)/lib
|
||||||
|
$(INSTALL_DIR) $(1)/usr/share/bbfdm
|
||||||
|
$(INSTALL_DIR) $(1)/etc/bbfdm
|
||||||
|
$(INSTALL_DIR) $(1)/etc/bbfdm/dmmap
|
||||||
|
$(INSTALL_DIR) $(1)/etc/bbfdm/json
|
||||||
|
$(INSTALL_DIR) $(1)/usr/lib/bbfdm
|
||||||
|
$(INSTALL_BIN) $(PKG_BUILD_DIR)/bin/.libs/libbbfdm.so* $(1)/lib/
|
||||||
|
$(INSTALL_BIN) $(PKG_BUILD_DIR)/scripts/* $(1)/usr/share/bbfdm
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/libbbfdm/prerm
|
||||||
|
#!/bin/sh
|
||||||
|
rm -rf /etc/bbfdm/dmmap/*
|
||||||
|
exit 0
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Build/InstallDev
|
||||||
|
$(INSTALL_DIR) $(1)/usr/lib
|
||||||
|
$(INSTALL_DIR) $(1)/usr/include
|
||||||
|
$(INSTALL_DIR) $(1)/usr/include/libbbfdm
|
||||||
|
$(INSTALL_DIR) $(1)/usr/include/libbbf_api
|
||||||
|
$(INSTALL_DATA) $(PKG_BUILD_DIR)/include/*.h $(1)/usr/include/
|
||||||
|
$(INSTALL_DATA) $(PKG_BUILD_DIR)/*.h $(1)/usr/include/libbbfdm/
|
||||||
|
$(INSTALL_DATA) $(PKG_BUILD_DIR)/libbbf_api/*.h $(1)/usr/include/libbbf_api/
|
||||||
|
$(INSTALL_BIN) $(PKG_BUILD_DIR)/bin/.libs/libbbfdm.{a,so*} $(1)/usr/lib/
|
||||||
|
$(INSTALL_BIN) $(PKG_BUILD_DIR)/bin/.libs/libbbf_api.{a,so*} $(1)/usr/lib/
|
||||||
|
endef
|
||||||
|
|
||||||
|
$(eval $(call BuildPackage,libbbf_api))
|
||||||
|
$(eval $(call BuildPackage,libbbfdm))
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
config BBF_VENDOR_EXTENSION
|
|
||||||
bool "Enable Vendor Extension"
|
|
||||||
default y
|
|
||||||
|
|
||||||
config BBF_VENDOR_LIST
|
|
||||||
string "Vendor List"
|
|
||||||
default "iopsys"
|
|
||||||
|
|
||||||
config BBF_VENDOR_PREFIX
|
|
||||||
string "Vendor Prefix"
|
|
||||||
default "X_IOPSYS_EU_"
|
|
||||||
|
|
||||||
config BBF_TR143
|
|
||||||
bool "Enable TR-143 Data Model Support"
|
|
||||||
default y
|
|
||||||
|
|
||||||
config BBF_TR471
|
|
||||||
bool "Enable TR-471 Data Model Support"
|
|
||||||
default y
|
|
||||||
|
|
||||||
config BBF_MAX_OBJECT_INSTANCES
|
|
||||||
int "Maximum number of instances per object"
|
|
||||||
default 255
|
|
||||||
251
bbfdm/Makefile
251
bbfdm/Makefile
@@ -1,251 +0,0 @@
|
|||||||
#
|
|
||||||
# Copyright (C) 2023 IOPSYS
|
|
||||||
#
|
|
||||||
|
|
||||||
include $(TOPDIR)/rules.mk
|
|
||||||
|
|
||||||
PKG_NAME:=bbfdm
|
|
||||||
PKG_VERSION:=1.4.23.2
|
|
||||||
|
|
||||||
USE_LOCAL:=0
|
|
||||||
ifneq ($(USE_LOCAL),1)
|
|
||||||
PKG_SOURCE_PROTO:=git
|
|
||||||
PKG_SOURCE_URL:=https://dev.iopsys.eu/bbf/bbfdm.git
|
|
||||||
PKG_SOURCE_VERSION:=6974c9cf6d4ea87d668dd349d0f281f8c9a056a9
|
|
||||||
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 $(INCLUDE_DIR)/cmake.mk
|
|
||||||
|
|
||||||
define Package/libbbfdm-api
|
|
||||||
SECTION:=utils
|
|
||||||
CATEGORY:=Utilities
|
|
||||||
SUBMENU:=TRx69
|
|
||||||
TITLE:=BBF datamodel library, provides API to extend datamodel using DotSO plugins
|
|
||||||
DEPENDS:=+libuci +libubox +libubus +libblobmsg-json +libjson-c
|
|
||||||
ABI_VERSION:=1.0
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Package/libbbfdm/default
|
|
||||||
SECTION:=utils
|
|
||||||
CATEGORY:=Utilities
|
|
||||||
SUBMENU:=TRx69
|
|
||||||
TITLE:=Library for broadband forum data model support
|
|
||||||
DEPENDS:=+libuci +libubox +libubus +libblobmsg-json +libjson-c +libcurl +libbbfdm-api \
|
|
||||||
+BBF_TR471:obudpst
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Package/libbbfdm
|
|
||||||
$(Package/libbbfdm/default)
|
|
||||||
TITLE += (default)
|
|
||||||
VARIANT:=default
|
|
||||||
DEPENDS += +PACKAGE_libbbfdm-openssl:libopenssl
|
|
||||||
DEFAULT_VARIANT:=1
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Package/libbbfdm-mbedtls
|
|
||||||
$(Package/libbbfdm/default)
|
|
||||||
TITLE += (mbedtls)
|
|
||||||
DEPENDS += +PACKAGE_libbbfdm-mbedtls:libmbedtls
|
|
||||||
VARIANT:=mbedtls
|
|
||||||
CONFLICTS := libbbfdm libbbfdm-openssl libbbfdm-wolfssl
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Package/libbbfdm-openssl
|
|
||||||
$(Package/libbbfdm/default)
|
|
||||||
TITLE += (openssl)
|
|
||||||
DEPENDS += +PACKAGE_libbbfdm-openssl:libopenssl
|
|
||||||
VARIANT:=openssl
|
|
||||||
CONFLICTS := libbbfdm libbbfdm-mbedtls libbbfdm-wolfssl
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Package/libbbfdm-wolfssl
|
|
||||||
$(Package/libbbfdm/default)
|
|
||||||
TITLE += (wolfssl)
|
|
||||||
DEPENDS += +PACKAGE_libbbfdm-wolfssl:libwolfssl
|
|
||||||
VARIANT:=wolfssl
|
|
||||||
CONFLICTS := libbbfdm libbbfdm-mbedtls libbbfdm-openssl
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Package/bbfdmd
|
|
||||||
SECTION:=utils
|
|
||||||
CATEGORY:=Utilities
|
|
||||||
SUBMENU:=TRx69
|
|
||||||
TITLE:=Datamodel ubus backend
|
|
||||||
DEPENDS:=+libuci +libubox +libubus +libblobmsg-json +libbbfdm-api +PACKAGE_libbbfdm-mbedtls:libbbfdm-mbedtls \
|
|
||||||
+PACKAGE_libbbfdm-openssl:libbbfdm-openssl +PACKAGE_libbbfdm-wolfssl:libbbfdm-wolfssl \
|
|
||||||
+PACKAGE_libbbfdm:libbbfdm
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Package/userinterface
|
|
||||||
SECTION:=utils
|
|
||||||
CATEGORY:=Utilities
|
|
||||||
SUBMENU:=TRx69
|
|
||||||
TITLE:=Package to add Device.UserInterface. datamodel support
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Package/userinterface/description
|
|
||||||
Package to add Device.UserInterface. datamodel support
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Package/libbbfdm/config
|
|
||||||
source "$(SOURCE)/Config_bbfdm.in"
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Package/libbbfdm-api/description
|
|
||||||
Library contains the API(UCI, UBUS, JSON, CLI and Browse) of libbbfdm
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Package/libbbfdm/description
|
|
||||||
Library contains the data model tree. It includes TR181, TR143 data models
|
|
||||||
endef
|
|
||||||
|
|
||||||
ifeq ($(USE_LOCAL),1)
|
|
||||||
define Build/Prepare
|
|
||||||
$(CP) ~/git/bbfdm/* $(PKG_BUILD_DIR)/
|
|
||||||
endef
|
|
||||||
endif
|
|
||||||
|
|
||||||
CMAKE_OPTIONS += \
|
|
||||||
-DBBF_TR181=ON
|
|
||||||
-DBBF_WIFI_DATAELEMENTS=ON
|
|
||||||
|
|
||||||
ifeq ($(CONFIG_BBF_TR143),y)
|
|
||||||
CMAKE_OPTIONS += \
|
|
||||||
-DBBF_TR143=ON
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(CONFIG_BBF_TR471),y)
|
|
||||||
CMAKE_OPTIONS += \
|
|
||||||
-DBBF_TR471=ON
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(CONFIG_BBF_VENDOR_EXTENSION),y)
|
|
||||||
CMAKE_OPTIONS += \
|
|
||||||
-DBBF_VENDOR_EXTENSION=ON
|
|
||||||
|
|
||||||
CMAKE_OPTIONS += \
|
|
||||||
-DBBF_VENDOR_LIST:String="$(CONFIG_BBF_VENDOR_LIST)" \
|
|
||||||
-DBBF_VENDOR_PREFIX:String="$(CONFIG_BBF_VENDOR_PREFIX)" \
|
|
||||||
-DBBF_MAX_OBJECT_INSTANCES:Integer=$(CONFIG_BBF_MAX_OBJECT_INSTANCES)
|
|
||||||
|
|
||||||
endif ##CONFIG_BBF_VENDOR_EXTENSION
|
|
||||||
|
|
||||||
ifeq ($(BUILD_VARIANT),default)
|
|
||||||
CMAKE_OPTIONS += -DWITH_OPENSSL=ON
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(BUILD_VARIANT),openssl)
|
|
||||||
CMAKE_OPTIONS += -DWITH_OPENSSL=ON
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(BUILD_VARIANT),wolfssl)
|
|
||||||
CMAKE_OPTIONS += -DWITH_WOLFSSL=ON
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(BUILD_VARIANT),mbedtls)
|
|
||||||
CMAKE_OPTIONS += -DWITH_MBEDTLS=ON
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(CONFIG_PACKAGE_bbfdmd),y)
|
|
||||||
CMAKE_OPTIONS += \
|
|
||||||
-DBBFDMD_MAX_MSG_LEN:Integer=10485760
|
|
||||||
endif
|
|
||||||
|
|
||||||
define Package/libbbfdm-api/install
|
|
||||||
$(INSTALL_DIR) $(1)/lib
|
|
||||||
$(CP) $(PKG_BUILD_DIR)/libbbfdm-api/libbbfdm-api.so $(1)/lib/
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Package/libbbfdm/default/install
|
|
||||||
$(INSTALL_DIR) $(1)/lib
|
|
||||||
$(INSTALL_DIR) $(1)/etc/bbfdm
|
|
||||||
$(INSTALL_DIR) $(1)/etc/bbfdm/dmmap
|
|
||||||
$(INSTALL_DIR) $(1)/etc/uci-defaults
|
|
||||||
$(INSTALL_DIR) $(1)/lib/upgrade/keep.d
|
|
||||||
$(CP) $(PKG_BUILD_DIR)/libbbfdm/libbbfdm.so $(1)/lib/
|
|
||||||
$(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/firewall.portmap $(1)/etc/firewall.portmap
|
|
||||||
$(INSTALL_BIN) ./files/etc/firewall.service $(1)/etc/firewall.service
|
|
||||||
ifeq ($(CONFIG_BBF_TR143),y)
|
|
||||||
$(INSTALL_DIR) $(1)/usr/share/bbfdm
|
|
||||||
$(INSTALL_DIR) $(1)/usr/libexec/rpcd
|
|
||||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/libbbfdm/scripts/* $(1)/usr/share/bbfdm
|
|
||||||
$(LN) /usr/share/bbfdm/bbf.diag $(1)/usr/libexec/rpcd/bbf.diag
|
|
||||||
endif
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Package/libbbfdm/default/prerm
|
|
||||||
#!/bin/sh
|
|
||||||
rm -rf /etc/bbfdm/dmmap/*
|
|
||||||
exit 0
|
|
||||||
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_CONF) ./files/etc/config/bbfdm $(1)/etc/config/bbfdm
|
|
||||||
$(INSTALL_BIN) ./files/etc/bbfdm/bbfdm_services.sh $(1)/etc/bbfdm/
|
|
||||||
$(INSTALL_BIN) ./files/etc/hotplug.d/iface/85-bbfdm-sysctl $(1)/etc/hotplug.d/iface/85-bbfdm-sysctl
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Package/userinterface/install
|
|
||||||
$(INSTALL_DIR) $(1)/etc/config
|
|
||||||
$(INSTALL_DIR) $(1)/etc/uci-defaults
|
|
||||||
$(INSTALL_DIR) $(1)/etc/init.d
|
|
||||||
$(INSTALL_DIR) $(1)/lib/upgrade/keep.d
|
|
||||||
$(INSTALL_DATA) ./files/etc/config/userinterface $(1)/etc/config/userinterface
|
|
||||||
$(INSTALL_DATA) ./files/lib/upgrade/keep.d/userinterface $(1)/lib/upgrade/keep.d/userinterface
|
|
||||||
$(INSTALL_BIN) ./files/etc/init.d/userinterface $(1)/etc/init.d/userinterface
|
|
||||||
$(INSTALL_BIN) ./files/etc/uci-defaults/93-userinterface-firewall $(1)/etc/uci-defaults/93-userinterface-firewall
|
|
||||||
$(INSTALL_BIN) ./files/etc/uci-defaults/94-userinterface-json $(1)/etc/uci-defaults/94-userinterface-json
|
|
||||||
$(INSTALL_BIN) ./files/etc/firewall.userinterface $(1)/etc/firewall.userinterface
|
|
||||||
endef
|
|
||||||
|
|
||||||
Package/libbbfdm/prerm = $(Package/libbbfdm/default/prerm)
|
|
||||||
Package/libbbfdm-openssl/prerm = $(Package/libbbfdm/default/prerm)
|
|
||||||
Package/libbbfdm-wolfssl/prerm = $(Package/libbbfdm/default/prerm)
|
|
||||||
Package/libbbfdm-mbedtls/prerm = $(Package/libbbfdm/default/prerm)
|
|
||||||
|
|
||||||
Package/libbbfdm/install = $(Package/libbbfdm/default/install)
|
|
||||||
Package/libbbfdm-openssl/install = $(Package/libbbfdm/default/install)
|
|
||||||
Package/libbbfdm-wolfssl/install = $(Package/libbbfdm/default/install)
|
|
||||||
Package/libbbfdm-mbedtls/install = $(Package/libbbfdm/default/install)
|
|
||||||
|
|
||||||
define Build/InstallDev
|
|
||||||
$(INSTALL_DIR) $(1)/usr/lib
|
|
||||||
$(INSTALL_DIR) $(1)/usr/include
|
|
||||||
$(INSTALL_DIR) $(1)/usr/include/libbbfdm
|
|
||||||
$(INSTALL_DIR) $(1)/usr/include/libbbfdm-api
|
|
||||||
$(INSTALL_DIR) $(1)/usr/include/libbbf_api
|
|
||||||
$(INSTALL_DATA) $(PKG_BUILD_DIR)/libbbfdm-api/include/*.h $(1)/usr/include/
|
|
||||||
$(INSTALL_DATA) $(PKG_BUILD_DIR)/libbbfdm/dmtree/tr181/device.h $(1)/usr/include/libbbfdm/
|
|
||||||
$(INSTALL_DATA) $(PKG_BUILD_DIR)/libbbfdm/dmtree/vendor/vendor.h $(1)/usr/include/libbbfdm/
|
|
||||||
$(INSTALL_DATA) $(PKG_BUILD_DIR)/libbbfdm-api/*.h $(1)/usr/include/libbbfdm-api/
|
|
||||||
# Work around for backward compatibility
|
|
||||||
$(INSTALL_DATA) $(PKG_BUILD_DIR)/libbbfdm-api/*.h $(1)/usr/include/libbbf_api/
|
|
||||||
$(INSTALL_DATA) $(PKG_BUILD_DIR)/libbbfdm-api/include/libbbfdm_api.h $(1)/usr/include/libbbf_api.h
|
|
||||||
endef
|
|
||||||
|
|
||||||
$(eval $(call BuildPackage,libbbfdm-api))
|
|
||||||
$(eval $(call BuildPackage,libbbfdm))
|
|
||||||
$(eval $(call BuildPackage,libbbfdm-openssl))
|
|
||||||
$(eval $(call BuildPackage,libbbfdm-wolfssl))
|
|
||||||
$(eval $(call BuildPackage,libbbfdm-mbedtls))
|
|
||||||
$(eval $(call BuildPackage,bbfdmd))
|
|
||||||
|
|
||||||
$(eval $(call BuildPackage,userinterface))
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
#
|
|
||||||
# Copyright (C) 2023 IOPSYS
|
|
||||||
#
|
|
||||||
|
|
||||||
|
|
||||||
define BbfdmInstallPlugin
|
|
||||||
$(INSTALL_DIR) $(1)/etc/bbfdm/plugins
|
|
||||||
$(INSTALL_DATA) $(2) $(1)/etc/bbfdm/plugins/
|
|
||||||
endef
|
|
||||||
@@ -1,47 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
BBFDMD="/usr/sbin/bbfdmd"
|
|
||||||
|
|
||||||
bbfdm_add_service()
|
|
||||||
{
|
|
||||||
local name path
|
|
||||||
|
|
||||||
name="${1}"
|
|
||||||
path="${2}"
|
|
||||||
|
|
||||||
if [ -z "${name}" -o -z "$path" ]; then
|
|
||||||
return 0;
|
|
||||||
fi
|
|
||||||
|
|
||||||
ubus call service add "{'name':'bbfdm.services','instances':{'$name':{'command':['$BBFDMD','-m','$path']}}}"
|
|
||||||
}
|
|
||||||
|
|
||||||
bbfdm_stop_service()
|
|
||||||
{
|
|
||||||
local name
|
|
||||||
|
|
||||||
name="${1}"
|
|
||||||
if [ -z "${name}" ]; then
|
|
||||||
return 0;
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ubus call service list '{"name":"bbfdm.services"}' |grep -q "bbfdm.$name"; then
|
|
||||||
ubus call service delete "{'name':'bbfdm.services','instance':'bbfdm.$name'}"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
usages()
|
|
||||||
{
|
|
||||||
echo "Usages $0: <OPTIONS>..."
|
|
||||||
echo
|
|
||||||
echo " -h show help"
|
|
||||||
echo " -k micro-service name to stop"
|
|
||||||
echo
|
|
||||||
}
|
|
||||||
|
|
||||||
while getopts "s:k:h" opts; do
|
|
||||||
case "$opts" in
|
|
||||||
h) usages; exit 0;;
|
|
||||||
k) bbfdm_stop_service "${OPTARG}";;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
{
|
|
||||||
"daemon": {
|
|
||||||
"config": {
|
|
||||||
},
|
|
||||||
"input": {
|
|
||||||
"type": "DotSo",
|
|
||||||
"name": "/lib/libbbfdm.so",
|
|
||||||
"plugin_dir": "/etc/bbfdm/plugins"
|
|
||||||
},
|
|
||||||
"output": {
|
|
||||||
"type": "UBUS",
|
|
||||||
"name": "bbfdm"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"cli": {
|
|
||||||
"config": {
|
|
||||||
"proto": "both",
|
|
||||||
"instance_mode": 0
|
|
||||||
},
|
|
||||||
"input": {
|
|
||||||
"type": "UBUS",
|
|
||||||
"name": "bbfdm"
|
|
||||||
},
|
|
||||||
"output": {
|
|
||||||
"type": "CLI"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
|
|
||||||
config bbfdmd 'bbfdmd'
|
|
||||||
option enabled '1'
|
|
||||||
option loglevel '1'
|
|
||||||
option refresh_time '10'
|
|
||||||
option transaction_timeout '30'
|
|
||||||
option subprocess_level '2'
|
|
||||||
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
config userinterface 'global'
|
|
||||||
option enable '1'
|
|
||||||
|
|
||||||
@@ -1,74 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
. /lib/functions.sh
|
|
||||||
|
|
||||||
log() {
|
|
||||||
echo "${@}"|logger -t firewall.dnat -p info
|
|
||||||
}
|
|
||||||
|
|
||||||
exec_cmd() {
|
|
||||||
if ! eval "$*"; then
|
|
||||||
log "Failed to run [$*]"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
reorder_dnat_rules() {
|
|
||||||
nat_chains=$(iptables -t nat -S | grep -E "^-N zone[a-zA-Z0-9_]+prerouting$" | cut -d' ' -f 2)
|
|
||||||
|
|
||||||
for chain in ${nat_chains}; do
|
|
||||||
# Collect empty remote host & empty dport rules
|
|
||||||
EMPTY_HOST_PORT=$(iptables -t nat -S ${chain} | grep -E "REDIRECT|DNAT" | grep -v "\-\-dport" | grep -v "\-s ")
|
|
||||||
if [ -n "${EMPTY_HOST_PORT}" ]; then
|
|
||||||
echo "${EMPTY_HOST_PORT}" | while read cmd; do
|
|
||||||
cmd1="iptables -t nat $(echo $cmd | sed 's/-A /-D /g')"
|
|
||||||
exec_cmd $cmd1
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Collect empty remote host but non empty dport rules
|
|
||||||
EMPTY_HOST=$(iptables -t nat -S ${chain} | grep -E "REDIRECT|DNAT" | grep "\-\-dport" | grep -v "\-s ")
|
|
||||||
if [ -n "${EMPTY_HOST}" ]; then
|
|
||||||
echo "${EMPTY_HOST}" | while read cmd; do
|
|
||||||
cmd1="iptables -t nat $(echo $cmd | sed 's/-A /-D /g')"
|
|
||||||
exec_cmd $cmd1
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Collect non empty remote host but empty dport rules
|
|
||||||
EMPTY_PORT=$(iptables -t nat -S ${chain} | grep -E "REDIRECT|DNAT" | grep -v "\-\-dport" | grep "\-s ")
|
|
||||||
if [ -n "${EMPTY_PORT}" ]; then
|
|
||||||
echo "${EMPTY_PORT}" | while read cmd; do
|
|
||||||
cmd1="iptables -t nat $(echo $cmd | sed 's/-A /-D /g')"
|
|
||||||
exec_cmd $cmd1
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Now add rules as per datamodel precedence shown below
|
|
||||||
## Non empty remote host, empty dport
|
|
||||||
## empty remote host, non empty dport
|
|
||||||
## empty remote host, empty dport
|
|
||||||
if [ -n "${EMPTY_PORT}" ]; then
|
|
||||||
echo "${EMPTY_PORT}" | while read cmd; do
|
|
||||||
cmd1="iptables -t nat $(echo $cmd)"
|
|
||||||
exec_cmd $cmd1
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -n "${EMPTY_HOST}" ]; then
|
|
||||||
echo "${EMPTY_HOST}" | while read cmd; do
|
|
||||||
cmd1="iptables -t nat $(echo $cmd)"
|
|
||||||
exec_cmd $cmd1
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -n "${EMPTY_HOST_PORT}" ]; then
|
|
||||||
echo "${EMPTY_HOST_PORT}" | while read cmd; do
|
|
||||||
cmd1="iptables -t nat $(echo $cmd)"
|
|
||||||
exec_cmd $cmd1
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
# Re-order portmapping rules according to precedence hierarchy
|
|
||||||
reorder_dnat_rules
|
|
||||||
@@ -1,163 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
. /lib/functions.sh
|
|
||||||
|
|
||||||
log() {
|
|
||||||
echo "${@}"|logger -t firewall.service -p info
|
|
||||||
}
|
|
||||||
|
|
||||||
exec_cmd() {
|
|
||||||
if ! eval "$*"; then
|
|
||||||
log "Failed to run [$*]"
|
|
||||||
echo "-1"
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "0"
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
add_iptable_rule() {
|
|
||||||
chain_name=$1
|
|
||||||
protocol=$2
|
|
||||||
dest_port=$3
|
|
||||||
icmp_type=$4
|
|
||||||
family=$5
|
|
||||||
src_prefix=$6
|
|
||||||
action=$7
|
|
||||||
res=-1
|
|
||||||
|
|
||||||
cmd="-I ${chain_name}"
|
|
||||||
|
|
||||||
if [ -n "${protocol}" ]; then
|
|
||||||
cmd="${cmd} -p $protocol"
|
|
||||||
|
|
||||||
if [ "${protocol}" -eq 41 ] || [ "${protocol}" -eq 43 ] || [ "${protocol}" -eq 44 ] ||
|
|
||||||
[ "${protocol}" -eq 58 ] || [ "${protocol}" -eq 59 ] || [ "${protocol}" -eq 60 ]; then
|
|
||||||
# Explicit v6 protocols
|
|
||||||
if [ "${family}" = "ipv4" ]; then
|
|
||||||
echo $res
|
|
||||||
return 0
|
|
||||||
else
|
|
||||||
family="ipv6"
|
|
||||||
fi
|
|
||||||
elif [ "${protocol}" -eq 1 ]; then
|
|
||||||
# Explicit v4 protocols
|
|
||||||
if [ "${family}" = "ipv6" ]; then
|
|
||||||
echo $res
|
|
||||||
return 0
|
|
||||||
else
|
|
||||||
family="ipv4"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Limitation:: iptables do not accept dport without specific protocol
|
|
||||||
count=$(echo "${dest_port}" | sed -n "/-1/p" | wc -l)
|
|
||||||
|
|
||||||
if [ "${count}" -eq 0 ]; then
|
|
||||||
# dest_port not contains -1 so need to have this match criteria
|
|
||||||
count=$(echo "${dest_port}" | wc -w)
|
|
||||||
if [ "${count}" -gt 1 ]; then
|
|
||||||
# multiple ports present
|
|
||||||
port=$(echo "${dest_port}" | sed "s/ /,/g")
|
|
||||||
cmd="${cmd} -m multiport --dports ${port}"
|
|
||||||
else
|
|
||||||
cmd="${cmd} --dport ${dest_port}"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "${family}" = "ipv4" ] || [ "${family}" = "-1" ]; then
|
|
||||||
if [ "${protocol}" -eq 1 ] && [ "${icmp_type}" -ge 0 ]; then
|
|
||||||
cmd="${cmd} --icmp-type ${icmp_type}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -z "${src_prefix}" ]; then
|
|
||||||
res=$(exec_cmd "iptables ${cmd} -m comment --comment IPtables_service_rule -j ${action}")
|
|
||||||
else
|
|
||||||
#Add ipv4 sources if any
|
|
||||||
src_list=""
|
|
||||||
for src in $src_prefix; do
|
|
||||||
ret=$(echo $src | grep ":" | wc -l)
|
|
||||||
if [ "${ret}" -eq 0 ]; then
|
|
||||||
src_list="$src,$src_list"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
if [ -n "$src_list" ]; then
|
|
||||||
src_list=$(echo "${src_list}" | sed "s/,$//")
|
|
||||||
res=$(exec_cmd "iptables -s $src_list ${cmd} -m comment --comment IPtables_service_rule -j ${action}")
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "${family}" = "ipv6" ] || [ "${family}" = "-1" ]; then
|
|
||||||
if [ "${protocol}" -eq 58 ] && [ "${icmp_type}" -ge 0 ]; then
|
|
||||||
cmd="${cmd} --icmpv6-type ${icmp_type}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -z "${src_prefix}" ]; then
|
|
||||||
res=$(exec_cmd "ip6tables ${cmd} -m comment --comment IP6tables_service_rule -j ${action}")
|
|
||||||
else
|
|
||||||
#Add ipv6 sources if any
|
|
||||||
src_list=""
|
|
||||||
for src in $src_prefix; do
|
|
||||||
ret=$(echo $src | grep ":" | wc -l)
|
|
||||||
if [ "${ret}" -eq 1 ]; then
|
|
||||||
src_list="$src,$src_list"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
if [ -n "$src_list" ]; then
|
|
||||||
src_list=$(echo "${src_list}" | sed "s/,$//")
|
|
||||||
res=$(exec_cmd "ip6tables -s $src_list ${cmd} -m comment --comment IP6tables_service_rule -j ${action}")
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo $res
|
|
||||||
}
|
|
||||||
|
|
||||||
add_service() {
|
|
||||||
local enable proto family dest_port interface target icmp_type
|
|
||||||
|
|
||||||
config_get enable "$1" enable "0"
|
|
||||||
config_get icmp_type "$1" icmp_type "-1"
|
|
||||||
config_get target "$1" target "Accept"
|
|
||||||
config_get interface "$1" interface ""
|
|
||||||
config_get family "$1" family "-1"
|
|
||||||
config_get dest_port "$1" dest_port "-1"
|
|
||||||
config_get proto "$1" proto "-1"
|
|
||||||
config_get src_prefix "$1" src_prefix ""
|
|
||||||
|
|
||||||
if [ "${enable}" -eq 0 ] || [ -z "${interface}" ]; then
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
action=$(echo "${target}" | tr a-z A-Z)
|
|
||||||
chain_name="zone_${interface}_input"
|
|
||||||
res=0
|
|
||||||
|
|
||||||
count=$(echo "${proto}" | sed -n "/-1/p" | wc -l)
|
|
||||||
|
|
||||||
if [ "${count}" -eq 0 ]; then
|
|
||||||
# proto not contains -1 so need to have this match criteria
|
|
||||||
for protocol in $proto; do
|
|
||||||
res=$(add_iptable_rule "$chain_name" "$protocol" "$dest_port" "$icmp_type" "$family" "$src_prefix" "$action")
|
|
||||||
done
|
|
||||||
else
|
|
||||||
# proto contains -1 so no need to have this match criteria
|
|
||||||
res=$(add_iptable_rule "$chain_name" "" "$dest_port" "$icmp_type" "$family" "$src_prefix" "$action")
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "${res}" -ne 0 ]; then
|
|
||||||
uci -q set firewall."${1}".status="Error"
|
|
||||||
else
|
|
||||||
uci -q set firewall."${1}".status=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
uci commit firewall
|
|
||||||
}
|
|
||||||
|
|
||||||
config_load firewall
|
|
||||||
config_foreach add_service "service"
|
|
||||||
@@ -1,125 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
. /lib/functions.sh
|
|
||||||
|
|
||||||
IDENTIFIER="UI-REMOTE-ACCESS-WAN"
|
|
||||||
|
|
||||||
log() {
|
|
||||||
echo "${@}"|logger -t firewall.userinterface -p info
|
|
||||||
}
|
|
||||||
|
|
||||||
if [ ! -f "/etc/config/userinterface" ] || [ ! -f "/etc/config/nginx" ]; then
|
|
||||||
exit 0;
|
|
||||||
fi
|
|
||||||
|
|
||||||
exec_cmd() {
|
|
||||||
if ! "$@"; then
|
|
||||||
log "Failed to run [$*]"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
delete_ui_firewall_rules() {
|
|
||||||
input_chains=$(iptables -S | grep -E "^-N zone[a-zA-Z0-9_]+input$" | cut -d' ' -f 2)
|
|
||||||
output_chains=$(iptables -S | grep -E "^-N zone[a-zA-Z0-9_]+output$" | cut -d' ' -f 2)
|
|
||||||
|
|
||||||
for chain in ${input_chains}; do
|
|
||||||
CMD="iptables -w 1 -t filter -nL ${chain} --line-numbers"
|
|
||||||
while ${CMD} 2>/dev/null | grep "${IDENTIFIER}"; do
|
|
||||||
rule_num="$(${CMD} | grep "${IDENTIFIER}" | head -1|awk '{print $1}')"
|
|
||||||
if [ -n "${rule_num}" ]; then
|
|
||||||
exec_cmd iptables -w 1 -t filter -D "${chain}" "${rule_num}";
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
done
|
|
||||||
|
|
||||||
for chain in ${output_chains}; do
|
|
||||||
CMD="iptables -w 1 -t filter -nL ${chain} --line-numbers"
|
|
||||||
while ${CMD} 2>/dev/null | grep "${IDENTIFIER}"; do
|
|
||||||
rule_num="$(${CMD} | grep "${IDENTIFIER}" | head -1|awk '{print $1}')"
|
|
||||||
if [ -n "${rule_num}" ]; then
|
|
||||||
exec_cmd iptables -w 1 -t filter -D "${chain}" "${rule_num}";
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
done
|
|
||||||
|
|
||||||
input6_chains=$(ip6tables -S | grep -E "^-N zone[a-zA-Z0-9_]+input$" | cut -d' ' -f 2)
|
|
||||||
output6_chains=$(ip6tables -S | grep -E "^-N zone[a-zA-Z0-9_]+output$" | cut -d' ' -f 2)
|
|
||||||
|
|
||||||
for chain in ${input6_chains}; do
|
|
||||||
CMD="ip6tables -w 1 -t filter -nL ${chain} --line-numbers"
|
|
||||||
while ${CMD} 2>/dev/null | grep "${IDENTIFIER}"; do
|
|
||||||
rule_num="$(${CMD} | grep "${IDENTIFIER}" | head -1|awk '{print $1}')"
|
|
||||||
if [ -n "${rule_num}" ]; then
|
|
||||||
exec_cmd ip6tables -w 1 -t filter -D "${chain}" "${rule_num}";
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
done
|
|
||||||
|
|
||||||
for chain in ${output6_chains}; do
|
|
||||||
CMD="ip6tables -w 1 -t filter -nL ${chain} --line-numbers"
|
|
||||||
while ${CMD} 2>/dev/null | grep "${IDENTIFIER}"; do
|
|
||||||
rule_num="$(${CMD} | grep "${IDENTIFIER}" | head -1|awk '{print $1}')"
|
|
||||||
if [ -n "${rule_num}" ]; then
|
|
||||||
exec_cmd ip6tables -w 1 -t filter -D "${chain}" "${rule_num}";
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
configure_ui_firewall_rule() {
|
|
||||||
local sec="${1}"
|
|
||||||
local enabled access interface
|
|
||||||
local port=""
|
|
||||||
|
|
||||||
config_get_bool enabled "${sec}" uci_enable '1'
|
|
||||||
config_get access "${sec}" uci_access ""
|
|
||||||
config_get interface "${sec}" uci_interface ""
|
|
||||||
|
|
||||||
if [ "${enabled}" -eq "1" ] && [ "${access}" == "remote" ] && [ -n "${interface}" ]; then
|
|
||||||
port_list=$(uci -q show nginx."${1}".listen|cut -d'=' -f 2|sed "s/'/ /g"|sed "s/\[\:\:\]\://g")
|
|
||||||
for item in ${port_list}; do
|
|
||||||
if [ -z "${item##[0-9]*}" ]; then
|
|
||||||
port="${item}"
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
if [ -z "${port}" ]; then
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
zone="zone_${interface}_input"
|
|
||||||
iptables -w 1 -t filter -nL ${zone} 2>/dev/null 1>&2
|
|
||||||
if [ "$?" -eq 0 ]; then
|
|
||||||
iptables -w 1 -I "${zone}" -p tcp -m multiport --dports "${port}" -m conntrack --ctstate NEW,ESTABLISHED -m comment --comment "${IDENTIFIER}" -j ACCEPT
|
|
||||||
fi
|
|
||||||
|
|
||||||
ip6tables -w 1 -t filter -nL ${zone} 2>/dev/null 1>&2
|
|
||||||
if [ "$?" -eq 0 ]; then
|
|
||||||
ip6tables -w 1 -I "${zone}" -p tcp -m multiport --dports "${port}" -m conntrack --ctstate NEW,ESTABLISHED -m comment --comment "${IDENTIFIER}" -j ACCEPT
|
|
||||||
fi
|
|
||||||
|
|
||||||
zone="zone_${interface}_output"
|
|
||||||
iptables -w 1 -t filter -nL "${zone}" 2>/dev/null 1>&2
|
|
||||||
if [ "$?" -eq 0 ]; then
|
|
||||||
iptables -w 1 -I "${zone}" -p tcp -m multiport --dports "${port}" -m conntrack --ctstate ESTABLISHED -m comment --comment "${IDENTIFIER}" -j ACCEPT
|
|
||||||
fi
|
|
||||||
|
|
||||||
ip6tables -w 1 -t filter -nL "${zone}" 2>/dev/null 1>&2
|
|
||||||
if [ "$?" -eq 0 ]; then
|
|
||||||
ip6tables -w 1 -I "${zone}" -p tcp -m multiport --dports "${port}" -m conntrack --ctstate ESTABLISHED -m comment --comment "${IDENTIFIER}" -j ACCEPT
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Delete existing remote access rules
|
|
||||||
delete_ui_firewall_rules
|
|
||||||
|
|
||||||
config_load userinterface
|
|
||||||
config_get_bool serv_enable global enable 1
|
|
||||||
|
|
||||||
if [ "${serv_enable}" -eq "1" ]; then
|
|
||||||
config_load nginx
|
|
||||||
# Configure the User Interface rule
|
|
||||||
config_foreach configure_ui_firewall_rule server
|
|
||||||
fi
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
[ "$ACTION" = "ifup" ] || exit 0
|
|
||||||
|
|
||||||
apply_sysctl_configuration() {
|
|
||||||
local sysctl_conf
|
|
||||||
|
|
||||||
sysctl_conf="/etc/bbfdm/sysctl.conf"
|
|
||||||
|
|
||||||
[ -f "${sysctl_conf}" ] || touch "${sysctl_conf}"
|
|
||||||
|
|
||||||
sysctl -e -p "${sysctl_conf}" >&-
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
ubus -t 10 wait_for network.device
|
|
||||||
apply_sysctl_configuration
|
|
||||||
@@ -1,76 +0,0 @@
|
|||||||
#!/bin/sh /etc/rc.common
|
|
||||||
|
|
||||||
START=65
|
|
||||||
STOP=10
|
|
||||||
|
|
||||||
USE_PROCD=1
|
|
||||||
PROG=/usr/sbin/bbfdmd
|
|
||||||
|
|
||||||
BBFDM_JSON_INPUT="/etc/bbfdm/input.json"
|
|
||||||
BBFDM_TEMP_JSON="/tmp/bbfdm/input.json"
|
|
||||||
|
|
||||||
log() {
|
|
||||||
echo "${@}"|logger -t bbfdmd.init -p info
|
|
||||||
}
|
|
||||||
|
|
||||||
validate_bbfdm_bbfdmd_section()
|
|
||||||
{
|
|
||||||
uci_validate_section bbfdm bbfdmd "bbfdmd" \
|
|
||||||
'enabled:bool:true' \
|
|
||||||
'sock:string' \
|
|
||||||
'debug:bool:false' \
|
|
||||||
'loglevel:uinteger:1' \
|
|
||||||
'refresh_time:uinteger:0' \
|
|
||||||
'transaction_timeout:uinteger:30' \
|
|
||||||
'subprocess_level:uinteger'
|
|
||||||
}
|
|
||||||
|
|
||||||
configure_bbfdmd()
|
|
||||||
{
|
|
||||||
local enabled debug sock update
|
|
||||||
local jlog jrefresh jtimeout jlevel
|
|
||||||
|
|
||||||
update=0
|
|
||||||
config_load bbfdm
|
|
||||||
validate_bbfdm_bbfdmd_section || {
|
|
||||||
log "Validation of bbfdmd section failed"
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
[ "${enabled}" -eq 0 ] && return 0
|
|
||||||
|
|
||||||
if [ -f "${BBFDM_JSON_INPUT}" ]; then
|
|
||||||
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_JSON}
|
|
||||||
fi
|
|
||||||
|
|
||||||
procd_set_param command ${PROG}
|
|
||||||
if [ "${debug}" -eq 1 ]; then
|
|
||||||
procd_set_param stdout 1
|
|
||||||
procd_set_param stderr 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -f "${sock}" ]; then
|
|
||||||
procd_append_param command -s "${sock}"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
start_service()
|
|
||||||
{
|
|
||||||
mkdir -p /tmp/bbfdm
|
|
||||||
procd_open_instance "bbfdm"
|
|
||||||
configure_bbfdmd
|
|
||||||
procd_set_param respawn
|
|
||||||
procd_close_instance "bbfdm"
|
|
||||||
|
|
||||||
ubus call service state '{"name":"bbfdm.services", "spawn":true}'
|
|
||||||
}
|
|
||||||
|
|
||||||
stop_service()
|
|
||||||
{
|
|
||||||
ubus call service state '{"name":"bbfdm.services", "spawn":false}'
|
|
||||||
}
|
|
||||||
|
|
||||||
service_triggers()
|
|
||||||
{
|
|
||||||
procd_add_reload_trigger "bbfdm"
|
|
||||||
}
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
#!/bin/sh /etc/rc.common
|
|
||||||
|
|
||||||
START=99
|
|
||||||
STOP=01
|
|
||||||
|
|
||||||
USE_PROCD=1
|
|
||||||
|
|
||||||
start_service() {
|
|
||||||
local enable
|
|
||||||
|
|
||||||
config_load userinterface
|
|
||||||
config_get_bool enable global enable 1
|
|
||||||
|
|
||||||
if [ ! -f "/etc/config/nginx" ]; then
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "${enable}" -eq "1" ]; then
|
|
||||||
ubus call service state '{"name":"nginx", "spawn":true}'
|
|
||||||
else
|
|
||||||
ubus call service state '{"name":"nginx", "spawn":false}'
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Inject firewall rules
|
|
||||||
procd_open_instance userinterface
|
|
||||||
/etc/firewall.userinterface
|
|
||||||
procd_close_instance
|
|
||||||
}
|
|
||||||
|
|
||||||
service_triggers()
|
|
||||||
{
|
|
||||||
procd_add_reload_trigger "userinterface" "nginx"
|
|
||||||
}
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
uci -q batch <<-EOT
|
|
||||||
delete firewall.userinterface
|
|
||||||
set firewall.userinterface=include
|
|
||||||
set firewall.userinterface.path=/etc/firewall.userinterface
|
|
||||||
set firewall.userinterface.reload=1
|
|
||||||
commit firewall
|
|
||||||
EOT
|
|
||||||
|
|
||||||
exit 0
|
|
||||||
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
# This deletes the userinterface json plugin if exists in case of upgrade
|
|
||||||
if [ -f "/etc/bbfdm/json/UserInterface.json" ]; then
|
|
||||||
rm /etc/bbfdm/json/UserInterface.json
|
|
||||||
fi
|
|
||||||
|
|
||||||
exit 0
|
|
||||||
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
uci -q batch <<-EOT
|
|
||||||
delete firewall.port_hook
|
|
||||||
set firewall.port_hook=include
|
|
||||||
set firewall.port_hook.path=/etc/firewall.portmap
|
|
||||||
set firewall.port_hook.reload=1
|
|
||||||
commit firewall
|
|
||||||
EOT
|
|
||||||
|
|
||||||
exit 0
|
|
||||||
|
|
||||||
@@ -1,62 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
. /lib/functions.sh
|
|
||||||
|
|
||||||
bbfdm_sysctl_conf="/etc/bbfdm/sysctl.conf"
|
|
||||||
|
|
||||||
update_device_section() {
|
|
||||||
local section="${1}"
|
|
||||||
local dev_name="${2}"
|
|
||||||
local ipv6="${3}"
|
|
||||||
local name
|
|
||||||
|
|
||||||
# Get name value
|
|
||||||
config_get name "${section}" name
|
|
||||||
|
|
||||||
# Retrun if the name value is different to the dev_name value
|
|
||||||
[ "${name}" != "${dev_name}" ] && return
|
|
||||||
|
|
||||||
if [ "${ipv6}" = "0" ]; then
|
|
||||||
ipv6="1"
|
|
||||||
else
|
|
||||||
ipv6="0"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Add ipv6 option
|
|
||||||
uci -q set network.${section}.ipv6="${ipv6}"
|
|
||||||
}
|
|
||||||
|
|
||||||
parse_bbfdm_sysctl_conf_file() {
|
|
||||||
# Check if the file exists
|
|
||||||
[ -f "${bbfdm_sysctl_conf}" ] || return
|
|
||||||
|
|
||||||
# Create a temporary file
|
|
||||||
tmpfile=$(mktemp)
|
|
||||||
|
|
||||||
# Load network config
|
|
||||||
config_load network
|
|
||||||
|
|
||||||
# Read each line of the file
|
|
||||||
while read -r line; do
|
|
||||||
if echo "$line" | grep -Eq '^net\.ipv6\.conf\.(.+)\.disable_ipv6=([0-1])$'; then
|
|
||||||
name=$(echo "$line" | sed -n 's/^net\.ipv6\.conf\.\(.*\)\.disable_ipv6=[0-1]$/\1/p')
|
|
||||||
value=$(echo "$line" | sed -n 's/^net\.ipv6\.conf\.\(.*\)\.disable_ipv6=\([0-1]\)$/\2/p')
|
|
||||||
|
|
||||||
config_foreach update_device_section device "${name}" "${value}"
|
|
||||||
else
|
|
||||||
# If the line doesn't match, preserve it in the temporary file
|
|
||||||
echo "$line" >> "$tmpfile"
|
|
||||||
fi
|
|
||||||
done < "${bbfdm_sysctl_conf}"
|
|
||||||
|
|
||||||
# Replace the original file with the modified content
|
|
||||||
mv "$tmpfile" "${bbfdm_sysctl_conf}"
|
|
||||||
|
|
||||||
# Apply the changes
|
|
||||||
uci commit network
|
|
||||||
sysctl -e -p "${bbfdm_sysctl_conf}" >&-
|
|
||||||
}
|
|
||||||
|
|
||||||
parse_bbfdm_sysctl_conf_file
|
|
||||||
|
|
||||||
exit 0
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
uci -q batch <<-EOT
|
|
||||||
delete firewall.service_hook
|
|
||||||
set firewall.service_hook=include
|
|
||||||
set firewall.service_hook.path=/etc/firewall.service
|
|
||||||
set firewall.service_hook.reload=1
|
|
||||||
commit firewall
|
|
||||||
EOT
|
|
||||||
|
|
||||||
exit 0
|
|
||||||
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
UNIFIED_PATH="/etc/bbfdm/plugins/"
|
|
||||||
|
|
||||||
# Link JSON plugins
|
|
||||||
for f in `ls -1 /etc/bbfdm/json/*.json`; do
|
|
||||||
echo "# 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
|
|
||||||
echo "# BBFDM DotSO plugin ${f} not aligned #"
|
|
||||||
ln -s ${f} "${UNIFIED_PATH}"
|
|
||||||
done
|
|
||||||
|
|
||||||
exit 0
|
|
||||||
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
/etc/bbfdm/sysctl.conf
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
/etc/nginx/allow_host_*
|
|
||||||
@@ -1,24 +1,27 @@
|
|||||||
#
|
#
|
||||||
# Copyright (C) 2022 iopsys Software Solutions AB
|
# Copyright (C) 2020 iopsys Software Solutions AB
|
||||||
#
|
#
|
||||||
|
# This is free software, licensed under the GNU General Public License v2.
|
||||||
# See /LICENSE for more information.
|
# See /LICENSE for more information.
|
||||||
#
|
#
|
||||||
|
|
||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=bulkdata
|
PKG_NAME:=bulkdata
|
||||||
PKG_VERSION:=2.1.3
|
PKG_VERSION:=1.0.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/bbf/bulkdata.git
|
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/bulkdata.git
|
||||||
PKG_SOURCE_VERSION:=f556410b51a2248f11358793f11ae54d3e53e85e
|
PKG_SOURCE_VERSION:=b35e7862bc17fc11dc1f757c7b93900995a28633
|
||||||
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
|
||||||
|
|
||||||
PKG_LICENSE:=BSD-3-Clause
|
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
|
||||||
|
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
|
||||||
|
PKG_LICENSE:=GPL-2.0-only
|
||||||
PKG_LICENSE_FILES:=LICENSE
|
PKG_LICENSE_FILES:=LICENSE
|
||||||
|
|
||||||
include $(INCLUDE_DIR)/package.mk
|
include $(INCLUDE_DIR)/package.mk
|
||||||
@@ -28,7 +31,11 @@ define Package/$(PKG_NAME)
|
|||||||
CATEGORY:=Utilities
|
CATEGORY:=Utilities
|
||||||
SUBMENU:=TRx69
|
SUBMENU:=TRx69
|
||||||
TITLE:=BBF BulkData Collection
|
TITLE:=BBF BulkData Collection
|
||||||
DEPENDS:=+libubus +libuci +libubox +libjson-c +libcurl +libblobmsg-json +zlib
|
DEPENDS:=+libubus +libuci +libubox +libjson-c +libcurl +curl +libblobmsg-json +libbbfdm +libbbf_api
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/$(PKG_NAME)/description
|
||||||
|
BBF BulkData Collection
|
||||||
endef
|
endef
|
||||||
|
|
||||||
TARGET_CFLAGS += \
|
TARGET_CFLAGS += \
|
||||||
@@ -43,9 +50,9 @@ endif
|
|||||||
|
|
||||||
define Package/$(PKG_NAME)/install
|
define Package/$(PKG_NAME)/install
|
||||||
$(INSTALL_DIR) $(1)/usr/sbin
|
$(INSTALL_DIR) $(1)/usr/sbin
|
||||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/bulkdatad $(1)/usr/sbin/
|
$(INSTALL_BIN) $(PKG_BUILD_DIR)/bulkdatad $(1)/usr/sbin/
|
||||||
$(INSTALL_DIR) $(1)/etc/bulkdata
|
$(INSTALL_DIR) $(1)/usr/lib/bbfdm
|
||||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/bbf_plugin/*.json $(1)/etc/bulkdata
|
$(INSTALL_BIN) $(PKG_BUILD_DIR)/*.so $(1)/usr/lib/bbfdm
|
||||||
$(CP) ./files/* $(1)/
|
$(CP) ./files/* $(1)/
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
|||||||
@@ -1,15 +0,0 @@
|
|||||||
{
|
|
||||||
"daemon": {
|
|
||||||
"input": {
|
|
||||||
"type": "JSON",
|
|
||||||
"name": "/etc/bulkdata/bulkdata.json"
|
|
||||||
},
|
|
||||||
"output": {
|
|
||||||
"type": "UBUS",
|
|
||||||
"name": "bbfdm.bulkdata",
|
|
||||||
"parent_dm": "Device.",
|
|
||||||
"object": "BulkData",
|
|
||||||
"root_obj": "bbfdm"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,6 +1,43 @@
|
|||||||
|
|
||||||
config bulkdata 'bulkdata'
|
config bulkdata 'bulkdata'
|
||||||
option enable '0'
|
option enable '0'
|
||||||
#Log levels: Error=1, Warning=2, Info=3, Debug=4
|
#Log levels: Critical=0, Warning=1, Notice=2, Info=3, Debug=4
|
||||||
option log_level '3'
|
option log_level '3'
|
||||||
|
|
||||||
|
config profile
|
||||||
|
option profile_id '1'
|
||||||
|
option enable '0'
|
||||||
|
option name ''
|
||||||
|
option nbre_of_retained_failed_reports '0'
|
||||||
|
option protocol 'http'
|
||||||
|
option encoding_type ''
|
||||||
|
option reporting_interval '86400'
|
||||||
|
option time_reference '0'
|
||||||
|
option csv_encoding_field_separator ','
|
||||||
|
option csv_encoding_row_separator ' '
|
||||||
|
option csv_encoding_escape_character '"'
|
||||||
|
option csv_encoding_report_format 'column'
|
||||||
|
option csv_encoding_row_time_stamp 'unix'
|
||||||
|
option json_encoding_report_format 'objecthierarchy'
|
||||||
|
option json_encoding_report_time_stamp 'unix'
|
||||||
|
option http_url ''
|
||||||
|
option http_username ''
|
||||||
|
option http_password ''
|
||||||
|
option http_compression 'none'
|
||||||
|
option http_method 'post'
|
||||||
|
option http_use_date_header '1'
|
||||||
|
option http_retry_enable '0'
|
||||||
|
option http_retry_minimum_wait_interval '5'
|
||||||
|
option http_retry_interval_multiplier '2000'
|
||||||
|
option http_persist_across_reboot '0'
|
||||||
|
|
||||||
|
config profile_parameter
|
||||||
|
option profile_id '1'
|
||||||
|
option name ''
|
||||||
|
option reference ''
|
||||||
|
|
||||||
|
config profile_http_request_uri_parameter
|
||||||
|
option profile_id '1'
|
||||||
|
option name ''
|
||||||
|
option reference ''
|
||||||
|
|
||||||
|
|||||||
@@ -1,28 +1,26 @@
|
|||||||
#!/bin/sh /etc/rc.common
|
#!/bin/sh /etc/rc.common
|
||||||
|
# Bulkdata Software
|
||||||
|
# Copyright (C) 2020 iopsys Software Solutions AB
|
||||||
|
# Author: Amin Ben Ramdhane <amin.benramdhane@pivasoftware.com>
|
||||||
|
|
||||||
START=60
|
START=99
|
||||||
STOP=10
|
STOP=10
|
||||||
|
|
||||||
. /etc/bbfdm/bbfdm_services.sh
|
|
||||||
|
|
||||||
USE_PROCD=1
|
USE_PROCD=1
|
||||||
PROG="/usr/sbin/bulkdatad"
|
PROG="/usr/sbin/bulkdatad"
|
||||||
BULKDATA_JSON_INPUT="/etc/bulkdata/input.json"
|
|
||||||
|
|
||||||
start_service() {
|
start_service() {
|
||||||
local enable
|
local bulkdata_enable=`uci -q get bulkdata.bulkdata.enable`
|
||||||
|
if [ "$bulkdata_enable" = "1" ]; then
|
||||||
config_load bulkdata
|
procd_open_instance
|
||||||
config_get_bool enable bulkdata enable 1
|
|
||||||
|
|
||||||
[ "$enable" -eq "1" ] && {
|
|
||||||
procd_open_instance "bulkdata"
|
|
||||||
procd_set_param command "$PROG"
|
procd_set_param command "$PROG"
|
||||||
procd_set_param respawn
|
procd_set_param respawn "3" "7" "0"
|
||||||
procd_close_instance "bulkdata"
|
procd_close_instance
|
||||||
}
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
bbfdm_add_service "bbfdm.bulkdata" "${BULKDATA_JSON_INPUT}"
|
boot() {
|
||||||
|
start
|
||||||
}
|
}
|
||||||
|
|
||||||
reload_service() {
|
reload_service() {
|
||||||
|
|||||||
@@ -1,75 +0,0 @@
|
|||||||
#!/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
|
|
||||||
@@ -1,35 +0,0 @@
|
|||||||
#!/bin/sh /etc/rc.common
|
|
||||||
|
|
||||||
START=98
|
|
||||||
STOP=20
|
|
||||||
|
|
||||||
USE_PROCD=1
|
|
||||||
|
|
||||||
start_service() {
|
|
||||||
if [ -e "/etc/config/mapagent" -o -e "/etc/config/mapcontroller" ]; then
|
|
||||||
config_load mapagent
|
|
||||||
config_get_bool agent_enabled agent enabled 1
|
|
||||||
config_load mapcontroller
|
|
||||||
config_get_bool controller_enabled controller enabled 1
|
|
||||||
|
|
||||||
if [ $agent_enabled -eq 1 -o $controller_enabled -eq 1 ]; then
|
|
||||||
procd_open_instance
|
|
||||||
procd_set_param command "/usr/sbin/capiagent" "-p 9000"
|
|
||||||
procd_set_param limits core="unlimited"
|
|
||||||
#procd_set_param respawn
|
|
||||||
#procd_set_param stdout 1
|
|
||||||
#procd_set_param stderr 1
|
|
||||||
procd_close_instance
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
service_triggers()
|
|
||||||
{
|
|
||||||
procd_add_reload_trigger "capiagent"
|
|
||||||
}
|
|
||||||
|
|
||||||
reload_service() {
|
|
||||||
stop
|
|
||||||
start
|
|
||||||
}
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
menu "Configuration"
|
|
||||||
|
|
||||||
config DECOLLECTOR_EASYMESH_VERSION
|
|
||||||
int "Support Easymesh version"
|
|
||||||
default 4
|
|
||||||
|
|
||||||
endmenu
|
|
||||||
@@ -1,80 +0,0 @@
|
|||||||
#
|
|
||||||
# Copyright (C) 2021-2023 IOPSYS Software Solutions AB
|
|
||||||
#
|
|
||||||
|
|
||||||
include $(TOPDIR)/rules.mk
|
|
||||||
|
|
||||||
PKG_NAME:=decollector
|
|
||||||
PKG_VERSION:=4.2.1.1
|
|
||||||
|
|
||||||
LOCAL_DEV=0
|
|
||||||
ifneq ($(LOCAL_DEV),1)
|
|
||||||
PKG_SOURCE_PROTO:=git
|
|
||||||
PKG_SOURCE_VERSION:=ae836adb0779979686d0dad34b941f319ffed1b8
|
|
||||||
PKG_SOURCE_URL:=https://dev.iopsys.eu/multi-ap/decollector.git
|
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_VERSION).tar.gz
|
|
||||||
PKG_MIRROR_HASH:=skip
|
|
||||||
endif
|
|
||||||
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
|
|
||||||
PKG_MAINTAINER:=Anjan Chanda <anjan.chanda@iopsys.eu>
|
|
||||||
|
|
||||||
|
|
||||||
PKG_LICENSE:=BSD-3-Clause
|
|
||||||
PKG_LICENSE_FILES:=LICENSE
|
|
||||||
|
|
||||||
include $(INCLUDE_DIR)/package.mk
|
|
||||||
|
|
||||||
define Package/decollector
|
|
||||||
SECTION:=utils
|
|
||||||
CATEGORY:=Utilities
|
|
||||||
TITLE:=WiFi DataElements Collector Proxy
|
|
||||||
DEPENDS:=+libuci +libubox +ubus +libpthread +libnl-genl \
|
|
||||||
+libeasy +libwifiutils +libieee1905 +map-plugin
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Package/decollector/description
|
|
||||||
It implements the WiFi DataElements Agent as defined in the Wi-Fi Alliance's
|
|
||||||
DataElements specification.
|
|
||||||
endef
|
|
||||||
|
|
||||||
|
|
||||||
define Package/decollector/config
|
|
||||||
source "$(SOURCE)/Config.in"
|
|
||||||
endef
|
|
||||||
|
|
||||||
ifneq (,$(findstring ALPHA,$(CONFIG_VERSION_CODE)))
|
|
||||||
MAKE_FLAGS += DEBUG=1
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifneq (,$(findstring BETA,$(CONFIG_VERSION_CODE)))
|
|
||||||
MAKE_FLAGS += DEBUG=1
|
|
||||||
endif
|
|
||||||
|
|
||||||
TARGET_CFLAGS += \
|
|
||||||
-I$(STAGING_DIR)/usr/include \
|
|
||||||
-I$(STAGING_DIR)/usr/include/libnl3 \
|
|
||||||
-D_GNU_SOURCE
|
|
||||||
|
|
||||||
ifeq ($(LOCAL_DEV),1)
|
|
||||||
define Build/Prepare
|
|
||||||
rsync -r --exclude=.* ~/git/decollector/ $(PKG_BUILD_DIR)/
|
|
||||||
endef
|
|
||||||
endif
|
|
||||||
|
|
||||||
MAKE_PATH:=src
|
|
||||||
|
|
||||||
TARGET_CFLAGS += -DEASYMESH_VERSION=$(CONFIG_DECOLLECTOR_EASYMESH_VERSION)
|
|
||||||
|
|
||||||
EXECS := \
|
|
||||||
$(if $(CONFIG_PACKAGE_decollector),decollector)
|
|
||||||
|
|
||||||
MAKE_FLAGS += EXECS="$(EXECS)"
|
|
||||||
|
|
||||||
define Package/decollector/install
|
|
||||||
$(INSTALL_DIR) $(1)/etc/init.d
|
|
||||||
$(INSTALL_DIR) $(1)/usr/sbin
|
|
||||||
$(INSTALL_BIN) ./files/decollector.init $(1)/etc/init.d/decollector
|
|
||||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/src/decollector $(1)/usr/sbin/
|
|
||||||
endef
|
|
||||||
|
|
||||||
$(eval $(call BuildPackage,decollector))
|
|
||||||
@@ -1,14 +1,20 @@
|
|||||||
|
#
|
||||||
|
# Copyright (C) 2021 IOPSYS Software Solutions AB
|
||||||
|
#
|
||||||
|
# This is free software, licensed under the GNU General Public License v2.
|
||||||
|
# See /LICENSE for more information.
|
||||||
|
#
|
||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=dectmngr
|
PKG_NAME:=dectmngr
|
||||||
PKG_RELEASE:=3
|
PKG_RELEASE:=3
|
||||||
PKG_VERSION:=3.6.4
|
PKG_VERSION:=3.5.1
|
||||||
|
|
||||||
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:=d9cc11c81ce1ff625e4e789afa180b301c7fcf74
|
PKG_SOURCE_VERSION:=e609d736f572d3ff5e33aa6b585d6ccb7c8e14cf
|
||||||
PKG_MIRROR_HASH:=skip
|
PKG_MIRROR_HASH:=skip
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@@ -28,7 +34,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
|
DEPENDS:= +libubox +ubus +uci +libxml2
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/$(PKG_NAME)/description
|
define Package/$(PKG_NAME)/description
|
||||||
|
|||||||
BIN
dectmngr/files/etc/dspg/04130010.bin
Normal file
BIN
dectmngr/files/etc/dspg/04130010.bin
Normal file
Binary file not shown.
Binary file not shown.
@@ -6,65 +6,31 @@ START=70
|
|||||||
STOP=12
|
STOP=12
|
||||||
|
|
||||||
USE_PROCD=1
|
USE_PROCD=1
|
||||||
|
NAME=dectmngr
|
||||||
PROG=/usr/sbin/dectmngr
|
PROG=/usr/sbin/dectmngr
|
||||||
LOG_PATH=/var/log/dectmngr
|
LOG_PATH=/var/log/dectmngr
|
||||||
DB_PATH=/etc/dect
|
DB_PATH=/etc/dect
|
||||||
DCX81_UART_DT_ALIAS=/proc/device-tree/aliases/dcx81-uart
|
|
||||||
|
|
||||||
DECT_GPIO="$(gpiofind DCX81_RSTN | cut -d ' ' -f 2 2>/dev/null)"
|
|
||||||
|
|
||||||
# Ask dectmngr to exit nicely and wait for it to clean up, which is a slow process.
|
# Ask dectmngr to exit nicely and wait for it to clean up, which is a slow process.
|
||||||
stop_and_wait_dectmngr() {
|
stop_and_wait_dectmngr() {
|
||||||
dect_pid=$(pidof $PROG)
|
pidof $NAME && killall -q $NAME
|
||||||
[ -n "$dect_pid" ] && kill $dect_pid
|
|
||||||
|
|
||||||
pidof $PROG > /dev/null 2>&1 && sleep 2 # wait for the process to stop gracefully
|
pidof $NAME && sleep 2 # wait for the process to stop gracefully
|
||||||
while pidof $PROG > /dev/null 2>&1; do
|
while pidof $NAME; do
|
||||||
dect_pid=$(pidof $PROG)
|
killall -q -9 $NAME
|
||||||
[ -n "$dect_pid" ] && kill -9 $dect_pid
|
|
||||||
sleep 1
|
sleep 1
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
has_dect() {
|
|
||||||
[ -f "$DCX81_UART_DT_ALIAS" ]
|
|
||||||
}
|
|
||||||
|
|
||||||
get_dcx81_device() {
|
|
||||||
readonly dcx81_uart_dt_node="/proc/device-tree/$(cat "$DCX81_UART_DT_ALIAS" 2>/dev/null)"
|
|
||||||
[ -e "$dcx81_uart_dt_node" ] || return 1
|
|
||||||
for tty_dt_node in /sys/class/tty/*/device/of_node; do
|
|
||||||
if [ "$tty_dt_node" -ef "$dcx81_uart_dt_node" ]; then
|
|
||||||
readonly uevent_file="${tty_dt_node%%/device/of_node}/uevent"
|
|
||||||
local device_name_line
|
|
||||||
device_name_line="$(grep '^DEVNAME=' "$uevent_file")" || return 1
|
|
||||||
readonly device="/dev/${device_name_line##DEVNAME=}"
|
|
||||||
[ -c "$device" ] || return 1
|
|
||||||
printf "%s" "$device"
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
|
|
||||||
start_service() {
|
start_service() {
|
||||||
local opt_ext=
|
local opt_ext=
|
||||||
local rfpi=
|
local rfpi=
|
||||||
local model_id=
|
local model_id=
|
||||||
local rxtun=
|
local rxtun=
|
||||||
|
|
||||||
if ! has_dect; then
|
test $(db get hw.board.hasDect) = "0" && return
|
||||||
logger -t "$PROG" "Not starting because no DECT hardware is available."
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
local dcx81_uart_device
|
echo 1 > /sys/class/gpio/gpio14/value
|
||||||
if ! dcx81_uart_device="$(get_dcx81_device)"; then
|
|
||||||
logger -t "$PROG" -p daemon.warning "Could not determine DCX81 UART device. Falling back to default ttyH0."
|
|
||||||
dcx81_uart_device=/dev/ttyH0
|
|
||||||
fi
|
|
||||||
|
|
||||||
[ -n "$DECT_GPIO" ] && echo 1 > /sys/class/gpio/gpio${DECT_GPIO}/value
|
|
||||||
|
|
||||||
rfpi=$(db -q get hw.board.dect_rfpi)
|
rfpi=$(db -q get hw.board.dect_rfpi)
|
||||||
[ -n "$rfpi" -a ${#rfpi} -eq 14 ] && opt_ext="$opt_ext -rfpi $rfpi"
|
[ -n "$rfpi" -a ${#rfpi} -eq 14 ] && opt_ext="$opt_ext -rfpi $rfpi"
|
||||||
@@ -83,25 +49,18 @@ start_service() {
|
|||||||
config_get log_dect_cmbs global log_dect_cmbs syslog
|
config_get log_dect_cmbs global log_dect_cmbs syslog
|
||||||
|
|
||||||
procd_open_instance
|
procd_open_instance
|
||||||
|
if [ "$log_dect_cmbs" = "none" ]; then
|
||||||
# dectmngr takes expects device without /dev
|
|
||||||
readonly dcx81_uart_device_wo_dev="${dcx81_uart_device##/dev/}"
|
|
||||||
case "$log_dect_cmbs" in
|
|
||||||
none)
|
|
||||||
echo "Starting dectmngr with cmbs logging disabled"
|
echo "Starting dectmngr with cmbs logging disabled"
|
||||||
procd_set_param command "$PROG" -comname "$dcx81_uart_device_wo_dev" $opt_ext
|
procd_set_param command $PROG -comname ttyH0 $opt_ext
|
||||||
rm -f $LOG_PATH/*
|
rm -f $LOG_PATH/*
|
||||||
;;
|
elif [ "$log_dect_cmbs" = "file" ]; then
|
||||||
file)
|
|
||||||
echo "Starting dectmngr with cmbs logging enabled to file"
|
echo "Starting dectmngr with cmbs logging enabled to file"
|
||||||
procd_set_param command "$PROG" -comname "$dcx81_uart_device_wo_dev" -log $LOG_PATH/dect-cmbs.log $opt_ext
|
procd_set_param command $PROG -comname ttyH0 -log $LOG_PATH/dect-cmbs.log $opt_ext
|
||||||
;;
|
else
|
||||||
*)
|
|
||||||
echo "Starting dectmngr with cmbs logging enabled to syslog"
|
echo "Starting dectmngr with cmbs logging enabled to syslog"
|
||||||
procd_set_param command "$PROG" -comname "$dcx81_uart_device_wo_dev" -syslog $opt_ext
|
procd_set_param command $PROG -comname ttyH0 -syslog $opt_ext
|
||||||
rm -f $LOG_PATH/*
|
rm -f $LOG_PATH/*
|
||||||
;;
|
fi
|
||||||
esac
|
|
||||||
|
|
||||||
procd_set_param respawn 6 2 3
|
procd_set_param respawn 6 2 3
|
||||||
procd_set_param term_timeout 20
|
procd_set_param term_timeout 20
|
||||||
@@ -110,9 +69,9 @@ start_service() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
stop_service() {
|
stop_service() {
|
||||||
has_dect || return 0
|
test $(db get hw.board.hasDect) = "0" && return
|
||||||
|
|
||||||
[ -n "$DECT_GPIO" ] && echo 0 > /sys/class/gpio/gpio${DECT_GPIO}/value
|
echo 0 > /sys/class/gpio/gpio14/value
|
||||||
stop_and_wait_dectmngr
|
stop_and_wait_dectmngr
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -120,18 +79,18 @@ reload_service() {
|
|||||||
ubus call dect reload
|
ubus call dect reload
|
||||||
}
|
}
|
||||||
|
|
||||||
service_triggers() {
|
service_triggers()
|
||||||
|
{
|
||||||
procd_add_config_trigger "config.change" "asterisk" /etc/init.d/dectmngr restart
|
procd_add_config_trigger "config.change" "asterisk" /etc/init.d/dectmngr restart
|
||||||
procd_add_config_trigger "config.change" "dect" /etc/init.d/dectmngr reload
|
procd_add_config_trigger "config.change" "dect" /etc/init.d/dectmngr reload
|
||||||
}
|
}
|
||||||
|
|
||||||
boot() {
|
boot() {
|
||||||
[ -n "$DECT_GPIO" ] && {
|
echo 14 > /sys/class/gpio/export
|
||||||
echo ${DECT_GPIO} > /sys/class/gpio/export
|
echo out > /sys/class/gpio/gpio14/direction
|
||||||
echo out > /sys/class/gpio/gpio${DECT_GPIO}/direction
|
|
||||||
}
|
|
||||||
|
|
||||||
[ ! -d $LOG_PATH ] && mkdir -p $LOG_PATH
|
[ ! -d $LOG_PATH ] && mkdir -p $LOG_PATH
|
||||||
[ ! -d $DB_PATH ] && mkdir -p $DB_PATH
|
[ ! -d $DB_PATH ] && mkdir -p $DB_PATH
|
||||||
start
|
start
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (C) 2018-2024 iopsys Software Solutions AB
|
# Copyright (C) 2018 iopsys Software Solutions AB
|
||||||
#
|
#
|
||||||
# This is free software, licensed under the GNU General Public License v2.
|
# This is free software, licensed under the GNU General Public License v2.
|
||||||
# See /LICENSE for more information.
|
# See /LICENSE for more information.
|
||||||
@@ -8,15 +8,14 @@
|
|||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=dslmngr
|
PKG_NAME:=dslmngr
|
||||||
PKG_VERSION:=1.2.1
|
PKG_VERSION:=1.1.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:=cb8b8fd2549751bcd38808391b76a1a9a908c4de
|
PKG_SOURCE_VERSION:=bb754ae620a9fc66fd6fc0745f0fead0708c7a17
|
||||||
PKG_SOURCE_URL:=https://dev.iopsys.eu/hal/dslmngr.git
|
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/dslmngr.git
|
||||||
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_MIRROR_HASH:=skip
|
PKG_MIRROR_HASH:=skip
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@@ -27,7 +26,7 @@ PKG_LICENSE_FILES:=LICENSE
|
|||||||
|
|
||||||
include $(INCLUDE_DIR)/package.mk
|
include $(INCLUDE_DIR)/package.mk
|
||||||
|
|
||||||
ifeq ($(CONFIG_TARGET_brcmbca),y)
|
ifeq ($(CONFIG_TARGET_iopsys_brcm63xx_arm),y)
|
||||||
TARGET_PLATFORM=BROADCOM
|
TARGET_PLATFORM=BROADCOM
|
||||||
else
|
else
|
||||||
$(info Unexpected CONFIG_TARGET)
|
$(info Unexpected CONFIG_TARGET)
|
||||||
@@ -60,7 +59,7 @@ MAKE_FLAGS += \
|
|||||||
|
|
||||||
ifeq ($(LOCAL_DEV),1)
|
ifeq ($(LOCAL_DEV),1)
|
||||||
define Build/Prepare
|
define Build/Prepare
|
||||||
rsync -r --exclude=.* ./dslmngr/ $(PKG_BUILD_DIR)/
|
rsync -r --exclude=.* ~/git/dslmngr/ $(PKG_BUILD_DIR)/
|
||||||
endef
|
endef
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@@ -69,10 +68,6 @@ define Build/Compile
|
|||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/dslmngr/install
|
define Package/dslmngr/install
|
||||||
$(CP) ./files/common/* $(1)/
|
|
||||||
ifeq ($(CONFIG_TARGET_brcmbca),y)
|
|
||||||
$(CP) ./files/broadcom/* $(1)/
|
|
||||||
endif
|
|
||||||
$(INSTALL_DIR) $(1)/sbin
|
$(INSTALL_DIR) $(1)/sbin
|
||||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/dslmngr $(1)/sbin/
|
$(INSTALL_BIN) $(PKG_BUILD_DIR)/dslmngr $(1)/sbin/
|
||||||
endef
|
endef
|
||||||
|
|||||||
@@ -1,313 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
. /lib/functions.sh
|
|
||||||
|
|
||||||
# ATM #
|
|
||||||
check_pvc() {
|
|
||||||
local vpi=$1
|
|
||||||
local vci=$2
|
|
||||||
local ret
|
|
||||||
|
|
||||||
ret=$(xtmctl operate conn --show | awk -v test="$vpi/$vci" '{if ($3==test ) print $5 }')
|
|
||||||
|
|
||||||
case $ret in
|
|
||||||
''|*[!0-9]*) return 0 ;;
|
|
||||||
*) return $ret ;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
check_xtm_list() {
|
|
||||||
local qclass=$1
|
|
||||||
local pcr scr mbs
|
|
||||||
local ret
|
|
||||||
|
|
||||||
case $# in
|
|
||||||
1)
|
|
||||||
pcr=0
|
|
||||||
scr=0
|
|
||||||
mbs=0
|
|
||||||
;;
|
|
||||||
2)
|
|
||||||
pcr=$2
|
|
||||||
scr=0
|
|
||||||
mbs=0
|
|
||||||
;;
|
|
||||||
4)
|
|
||||||
pcr=$2
|
|
||||||
scr=$3
|
|
||||||
mbs=$4
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
ret=$(xtmctl operate tdte --show | awk -v test="$qclass" -v pcr="$pcr" -v scr="$scr" -v mbs="$mbs" '{if ($2==test && $3==pcr && $4==scr && $5==mbs ) print $1 }')
|
|
||||||
|
|
||||||
case $ret in
|
|
||||||
''|*[!0-9]*) return 0 ;;
|
|
||||||
*) return $ret ;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
configure_atm_device() {
|
|
||||||
local name vpi vci device link_type encapsulation qos_class pcr mbs scr i
|
|
||||||
|
|
||||||
config_get name $1 name "ATM"
|
|
||||||
config_get vpi $1 vpi "8"
|
|
||||||
config_get vci $1 vci "35"
|
|
||||||
config_get device $1 device "atm0"
|
|
||||||
config_get link_type $1 link_type "eoa"
|
|
||||||
config_get encapsulation $1 encapsulation "llc"
|
|
||||||
config_get qos_class $1 qos_class "ubr"
|
|
||||||
config_get pcr $1 pcr
|
|
||||||
config_get mbs $1 mbs
|
|
||||||
config_get scr $1 scr
|
|
||||||
|
|
||||||
check_pvc $vpi $vci
|
|
||||||
ret=$?
|
|
||||||
|
|
||||||
if [ "$ret" -eq 0 ]; then
|
|
||||||
check_xtm_list $qos_class $pcr $scr $mbs
|
|
||||||
ret=$?
|
|
||||||
|
|
||||||
if [ "$ret" -eq 0 ]; then
|
|
||||||
case $qos_class in # ubr, cbr, gfr, vbr-nrt, vbr-rt, ubr+, abr
|
|
||||||
ubr)
|
|
||||||
xtmctl operate tdte --add "$qos_class"
|
|
||||||
;;
|
|
||||||
ubr_pcr|ubr+)
|
|
||||||
xtmctl operate tdte --add "$qos_class" $pcr
|
|
||||||
;;
|
|
||||||
cbr)
|
|
||||||
xtmctl operate tdte --add "$qos_class" $pcr
|
|
||||||
;;
|
|
||||||
nrtvbr|vbr-nrt)
|
|
||||||
xtmctl operate tdte --add "$qos_class" $pcr $scr $mbs
|
|
||||||
;;
|
|
||||||
rtvbr|vbr-rt)
|
|
||||||
xtmctl operate tdte --add "$qos_class" $pcr $scr $mbs
|
|
||||||
;;
|
|
||||||
gfr)
|
|
||||||
;;
|
|
||||||
abr)
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
|
|
||||||
case $link_type in # EoA, IPoA, PPPoA, CIP
|
|
||||||
EoA|eoa)
|
|
||||||
[ $encapsulation == "vcmux" ] && encapsulation="vcmux_eth" || encapsulation="llcsnap_eth"
|
|
||||||
;;
|
|
||||||
PPPoA|pppoa)
|
|
||||||
[ $encapsulation == "vcmux" ] && encapsulation="vcmux_pppoa" || encapsulation="llcencaps_ppp"
|
|
||||||
;;
|
|
||||||
IPoA|ipoa)
|
|
||||||
[ $encapsulation == "vcmux" ] && encapsulation="vcmux_ipoa" || encapsulation="llcsnap_rtip"
|
|
||||||
;;
|
|
||||||
CIP|cip)
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
check_xtm_list $qos_class $pcr $scr $mbs
|
|
||||||
ret="$?"
|
|
||||||
|
|
||||||
xtmctl operate conn --add 1.$vpi.$vci aal5 $encapsulation 0 1 $ret
|
|
||||||
for i in `seq 0 7`; do
|
|
||||||
xtmctl operate conn --addq 1.$vpi.$vci $i wrr 1 dt # queue priority 0-7
|
|
||||||
done
|
|
||||||
xtmctl operate conn --createnetdev 1.$vpi.$vci $device
|
|
||||||
xtmctl operate intf --state 1 enable
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
remove_atm_devices() {
|
|
||||||
local vpi vci rest
|
|
||||||
local vpivci=`xtmctl operate conn --show | grep "ATM\|mode" | awk '{if (NR!=1 && $1!="PTM") {print $3}}'`
|
|
||||||
|
|
||||||
for i in $vpivci
|
|
||||||
do
|
|
||||||
rest=${i#\/}
|
|
||||||
vpi=${rest%%\/*}
|
|
||||||
vci=${rest#*\/}
|
|
||||||
echo "xtmctl operate conn --delete 1.$vpi.$vci"
|
|
||||||
xtmctl operate conn --delete 1.$vpi.$vci
|
|
||||||
echo "xtmctl operate conn --deletenetdev 1.$vpi.$vci"
|
|
||||||
xtmctl operate conn --deletenetdev 1.$vpi.$vci
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
create_atm_devices() {
|
|
||||||
echo "Creating ATM Device(s)"
|
|
||||||
config_load dsl
|
|
||||||
config_foreach configure_atm_device atm-device
|
|
||||||
}
|
|
||||||
# ATM END #
|
|
||||||
|
|
||||||
# PTM #
|
|
||||||
check_ptm() {
|
|
||||||
local ret
|
|
||||||
local ptmprio=$1
|
|
||||||
local dslat=$2
|
|
||||||
|
|
||||||
if [ "$ptmprio" -eq 2 ]; then
|
|
||||||
ptmprio="high"
|
|
||||||
else
|
|
||||||
ptmprio="low"
|
|
||||||
fi
|
|
||||||
|
|
||||||
ret=$(xtmctl operate conn --show | awk -v dslat="$dslat" -v ptmprio="$ptmprio" '{if ($2 == dslat && $3 == ptmprio ) print $2 }')
|
|
||||||
|
|
||||||
case $ret in
|
|
||||||
''|*[!0-9]*) return 0 ;;
|
|
||||||
*) return $ret ;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
configure_ptm_device() {
|
|
||||||
local name device priority portid i
|
|
||||||
|
|
||||||
config_get name $1 name "PTM"
|
|
||||||
config_get device $1 device "ptm0"
|
|
||||||
config_get priority $1 priority 1
|
|
||||||
config_get portid $1 portid 1
|
|
||||||
|
|
||||||
check_ptm $priority $portid
|
|
||||||
ret=$?
|
|
||||||
|
|
||||||
if [ "$ret" -eq 0 ]; then
|
|
||||||
xtmctl operate conn --add $portid.$priority
|
|
||||||
|
|
||||||
for i in `seq 0 7`; do
|
|
||||||
xtmctl operate conn --addq $portid.$priority $i wrr 1 dt -1 -1 3000 # queue priority 0-7
|
|
||||||
done
|
|
||||||
echo "xtmctl operate conn --createnetdev $portid.$priority $device"
|
|
||||||
xtmctl operate conn --createnetdev $portid.$priority $device
|
|
||||||
xtmctl operate intf --state 1 enable
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
remove_ptm_devices() {
|
|
||||||
local delptm
|
|
||||||
local x=0
|
|
||||||
|
|
||||||
IFS=$'\n'
|
|
||||||
for i in `xtmctl operate conn --show | grep "PTM\|mode"`
|
|
||||||
do
|
|
||||||
if [ $x -eq 1 ]; then
|
|
||||||
delptm=$(echo $i | awk '{if ($1!="ATM") print $2"."$11}')
|
|
||||||
echo "xtmctl operate conn --delete $delptm"
|
|
||||||
xtmctl operate conn --delete $delptm
|
|
||||||
xtmctl operate conn --deletenetdev $delptm
|
|
||||||
fi
|
|
||||||
x=1
|
|
||||||
done
|
|
||||||
unset IFS
|
|
||||||
}
|
|
||||||
|
|
||||||
create_ptm_devices() {
|
|
||||||
echo "Creating PTM Device(s)"
|
|
||||||
config_load dsl
|
|
||||||
config_foreach configure_ptm_device ptm-device
|
|
||||||
}
|
|
||||||
# PTM END #
|
|
||||||
|
|
||||||
prioritize_arp()
|
|
||||||
{
|
|
||||||
ebtables -t nat -D POSTROUTING -j mark --mark-or 0x7 -p ARP >/dev/null
|
|
||||||
ebtables -t nat -A POSTROUTING -j mark --mark-or 0x7 -p ARP >/dev/null
|
|
||||||
}
|
|
||||||
|
|
||||||
xtm_remove_devices() {
|
|
||||||
remove_atm_devices
|
|
||||||
remove_ptm_devices
|
|
||||||
}
|
|
||||||
|
|
||||||
xtm_create_devices() {
|
|
||||||
local tpstc="$(xdslctl info --show | grep TPS-TC)"
|
|
||||||
if echo "$tpstc" | grep -q "ATM Mode"; then
|
|
||||||
create_atm_devices
|
|
||||||
elif echo "$tpstc" | grep -q "PTM Mode"; then
|
|
||||||
create_ptm_devices
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
xdsl_configure() {
|
|
||||||
local VDSL=0
|
|
||||||
local GFAST=0
|
|
||||||
local mod=""
|
|
||||||
local modes=""
|
|
||||||
local profile=""
|
|
||||||
|
|
||||||
config_load dsl
|
|
||||||
|
|
||||||
# Modes
|
|
||||||
config_get mode line mode
|
|
||||||
for mod in $mode; do
|
|
||||||
[ $mod == "gdmt" ] && modes="${modes}d"
|
|
||||||
[ $mod == "glite" ] && modes="${modes}l"
|
|
||||||
[ $mod == "t1413" ] && modes="${modes}t"
|
|
||||||
[ $mod == "adsl2" ] && modes="${modes}2"
|
|
||||||
[ $mod == "adsl2p" ] && modes="${modes}p"
|
|
||||||
[ $mod == "annexl" ] && modes="${modes}e"
|
|
||||||
[ $mod == "annexm" ] && modes="${modes}m"
|
|
||||||
[ $mod == "vdsl2" ] && modes="${modes}v" && VDSL=1
|
|
||||||
[ $mod == "gfast" ] && modes="${modes}f" && GFAST=1
|
|
||||||
done
|
|
||||||
|
|
||||||
# VDSL Profiles
|
|
||||||
config_get profile line profile
|
|
||||||
# Capabilities
|
|
||||||
config_get_bool bitswap line bitswap 1
|
|
||||||
[ $bitswap -eq 1 ] && bitswap="on" || bitswap="off"
|
|
||||||
config_get_bool sra line sra 1
|
|
||||||
[ $sra -eq 1 ] && sra="on" || sra="off"
|
|
||||||
# config_get_bool trellis line trellis 1
|
|
||||||
config_get_bool sesdrop line sesdrop 0
|
|
||||||
[ $sesdrop -eq 1 ] && sesdrop="on" || sesdrop="off"
|
|
||||||
# VDSL2 only
|
|
||||||
config_get_bool us0 line us0 1
|
|
||||||
[ $us0 -eq 1 ] && us0="on" || us0="off"
|
|
||||||
# config_get_bool dynamicd line dynamicd 1
|
|
||||||
# config_get_bool dynamicf line dynamicf 1
|
|
||||||
config_get_bool sos line sos 0
|
|
||||||
[ $sos -eq 1 ] && sos="on" || sos="off"
|
|
||||||
|
|
||||||
config_get_bool phyReXmtUs line phyReXmtUs 0
|
|
||||||
config_get_bool phyReXmtDs line phyReXmtDs 1
|
|
||||||
phyReXmt=$(( $((phyReXmtUs<<1)) + phyReXmtDs))
|
|
||||||
|
|
||||||
if [ $VDSL -eq 1 -o $GFAST -eq 1 ]; then
|
|
||||||
echo "xdslctl start --up --mod $modes --profile "$profile" --sra $sra --bitswap $bitswap --us0 $us0 --sesdrop $sesdrop --SOS $sos --phyReXmt $phyReXmt"
|
|
||||||
xdslctl start --up --mod $modes --profile "$profile" --sra $sra --bitswap $bitswap --us0 $us0 --sesdrop $sesdrop --SOS $sos --phyReXmt $phyReXmt
|
|
||||||
# G.Fast hardware to VDSL hardware, to set the driver bit kPhyCfg2EnableGfastVdslMMTimeOut0.
|
|
||||||
# Enable V43 tone for GFAST.
|
|
||||||
echo "xdslctl configure1 --phycfg 0 0 0 0 0 0 0 0 0 0 0 0x1400400 0x1400400"
|
|
||||||
xdslctl configure1 --phycfg 0 0 0 0 0 0 0 0 0 0 0 0x1400400 0x1400400
|
|
||||||
else
|
|
||||||
echo "xdslctl start --up --mod $modes --sra $sra --bitswap $bitswap --sesdrop $sesdrop --SOS $sos --phyReXmt $phyReXmt"
|
|
||||||
xdslctl start --up --mod $modes --sra $sra --bitswap $bitswap --sesdrop $sesdrop --SOS $sos --phyReXmt $phyReXmt
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ $GFAST -eq 1 ]; then
|
|
||||||
# G.Fast hardware to VDSL hardware, to set the driver bit kPhyCfg2EnableGfastVdslMMTimeOut0.
|
|
||||||
# Enable V43 tone for GFAST.
|
|
||||||
echo "xdslctl configure1 --phycfg 0 0 0 0 0 0 0 0 0 0 0 0x1400400 0x1400400"
|
|
||||||
xdslctl configure1 --phycfg 0 0 0 0 0 0 0 0 0 0 0 0x1400400 0x1400400
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
xdsl_stop() {
|
|
||||||
# echo "Stopping DSL"
|
|
||||||
# stop causes IRQ issues
|
|
||||||
# xdslctl stop
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
xdsl_init() {
|
|
||||||
[ -d /sys/class/net/dsl0/ ] || exit
|
|
||||||
|
|
||||||
prioritize_arp
|
|
||||||
|
|
||||||
echo "Starting DSL"
|
|
||||||
|
|
||||||
xtmctl start
|
|
||||||
xtmctl operate intf --state 1 enable
|
|
||||||
}
|
|
||||||
@@ -1,53 +0,0 @@
|
|||||||
# OEM specific parameters
|
|
||||||
config oem-parameters 'oem'
|
|
||||||
# option country_code "0000" # 2 bytes hex
|
|
||||||
# option vendor_id "IO" # 4 bytes string
|
|
||||||
# option vendor_suffix "0000" # 2 bytes hex
|
|
||||||
# option sw_version "iopsys" # 16 bytes string
|
|
||||||
# option serial_nr "00000000" # 32 bytes string
|
|
||||||
|
|
||||||
# DSL Modes
|
|
||||||
config dsl-line line
|
|
||||||
list mode gdmt
|
|
||||||
list mode glite
|
|
||||||
list mode t1413
|
|
||||||
list mode adsl2
|
|
||||||
list mode adsl2p
|
|
||||||
list mode annexl
|
|
||||||
list mode annexm
|
|
||||||
list mode vdsl2
|
|
||||||
# VDSL2 profiles
|
|
||||||
list profile 8a
|
|
||||||
list profile 8b
|
|
||||||
list profile 8c
|
|
||||||
list profile 8d
|
|
||||||
list profile 12a
|
|
||||||
list profile 12b
|
|
||||||
list profile 17a
|
|
||||||
list profile 30a
|
|
||||||
option bitswap 1
|
|
||||||
option sra 1
|
|
||||||
option us0 1 # VDSL2 only
|
|
||||||
option sesdrop 0
|
|
||||||
option sos 0
|
|
||||||
option phyReXmtUs 0
|
|
||||||
option phyReXmtDs 1
|
|
||||||
|
|
||||||
config atm-device atm0
|
|
||||||
option name 'ATM'
|
|
||||||
option vpi '8'
|
|
||||||
option vci '35'
|
|
||||||
option device atm0
|
|
||||||
option link_type 'eoa' # EoA, IPoA, PPPoA, CIP
|
|
||||||
option encapsulation 'llc' # llc, vcmux
|
|
||||||
option qos_class 'ubr' # ubr, cbr, gfr, vbr-nrt, vbr-rt, ubr+, abr
|
|
||||||
# option pcr '512'
|
|
||||||
# option scr '256'
|
|
||||||
# option mbs '1024'
|
|
||||||
|
|
||||||
config ptm-device ptm0
|
|
||||||
option name 'PTM'
|
|
||||||
option device 'ptm0'
|
|
||||||
option priority '1'
|
|
||||||
option portid '1'
|
|
||||||
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
[ "$STATUS" == "up" -o "$STATUS" == "down" ] || exit 0
|
|
||||||
|
|
||||||
. /lib/functions.sh
|
|
||||||
include /lib/dsl
|
|
||||||
|
|
||||||
xtm_remove_devices
|
|
||||||
xtm_create_devices
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
if [ "$STATUS" == "up" ]; then
|
|
||||||
ubus call led.dsl set '{"state":"ok"}'
|
|
||||||
elif [ "$STATUS" == "down" ]; then
|
|
||||||
ubus call led.dsl set '{"state":"off"}'
|
|
||||||
elif [ "$STATUS" == "training" ]; then
|
|
||||||
ubus call led.dsl set '{"state":"alert"}'
|
|
||||||
fi
|
|
||||||
@@ -1,41 +0,0 @@
|
|||||||
#!/bin/sh /etc/rc.common
|
|
||||||
|
|
||||||
. /lib/functions.sh
|
|
||||||
include /lib/dsl
|
|
||||||
|
|
||||||
START=20
|
|
||||||
USE_PROCD=1
|
|
||||||
|
|
||||||
DSLMNGR=$(which dslmngr)
|
|
||||||
|
|
||||||
start_service() {
|
|
||||||
[ -n "$DSLMNGR" ] && {
|
|
||||||
procd_open_instance
|
|
||||||
procd_set_param command "$DSLMNGR"
|
|
||||||
procd_set_param respawn
|
|
||||||
procd_close_instance
|
|
||||||
}
|
|
||||||
|
|
||||||
xdsl_configure
|
|
||||||
xtm_create_devices
|
|
||||||
}
|
|
||||||
|
|
||||||
stop_service() {
|
|
||||||
xtm_remove_devices
|
|
||||||
xdsl_stop
|
|
||||||
}
|
|
||||||
|
|
||||||
boot() {
|
|
||||||
xdsl_init
|
|
||||||
|
|
||||||
start
|
|
||||||
}
|
|
||||||
|
|
||||||
reload_service() {
|
|
||||||
stop
|
|
||||||
start
|
|
||||||
}
|
|
||||||
|
|
||||||
service_triggers() {
|
|
||||||
procd_add_reload_trigger dsl
|
|
||||||
}
|
|
||||||
@@ -19,7 +19,7 @@ define Package/easy-qos
|
|||||||
SECTION:=net
|
SECTION:=net
|
||||||
CATEGORY:=Network
|
CATEGORY:=Network
|
||||||
TITLE:=Easy QoS
|
TITLE:=Easy QoS
|
||||||
DEPENDS:=@(TARGET_brcmbca||TARGET_airoha)
|
DEPENDS:=@TARGET_iopsys_brcm63xx_arm
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/easy-qos/description
|
define Package/easy-qos/description
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ include $(INCLUDE_DIR)/package.mk
|
|||||||
|
|
||||||
-include $(TOPDIR)/.config
|
-include $(TOPDIR)/.config
|
||||||
|
|
||||||
ifneq ($(CONFIG_TARGET_brcmbca),)
|
ifneq ($(CONFIG_TARGET_iopsys_brcm63xx_arm),)
|
||||||
LINUX_DIR=$(BUILD_DIR)/bcmkernel/bcm963xx/kernel/linux-4.1
|
LINUX_DIR=$(BUILD_DIR)/bcmkernel/bcm963xx/kernel/linux-4.1
|
||||||
LINUX_VERSION := 4.1.52
|
LINUX_VERSION := 4.1.52
|
||||||
LINUXINCLUDE=-Iarch/$(LINUX_KARCH)/mach-bcm963xx/include
|
LINUXINCLUDE=-Iarch/$(LINUX_KARCH)/mach-bcm963xx/include
|
||||||
@@ -85,7 +85,7 @@ define Build/Compile
|
|||||||
endef
|
endef
|
||||||
|
|
||||||
|
|
||||||
ifneq ($(CONFIG_TARGET_brcmbca),)
|
ifneq ($(CONFIG_TARGET_iopsys_brcm63xx_arm),)
|
||||||
define KernelPackage/easy-soc-events/install-extra
|
define KernelPackage/easy-soc-events/install-extra
|
||||||
cp $(PKG_BUILD_DIR)/easyevent.ko $(FS_DIR)/lib/modules/$(LINUX_VERSION)/extra
|
cp $(PKG_BUILD_DIR)/easyevent.ko $(FS_DIR)/lib/modules/$(LINUX_VERSION)/extra
|
||||||
endef
|
endef
|
||||||
|
|||||||
5
easy-soc-libs/Config.in
Normal file
5
easy-soc-libs/Config.in
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
# libeasy configuration
|
||||||
|
|
||||||
|
config LIBWIFI_USE_CTRL_IFACE
|
||||||
|
bool "Use UNIX sockets"
|
||||||
|
default n
|
||||||
130
easy-soc-libs/Makefile
Normal file
130
easy-soc-libs/Makefile
Normal file
@@ -0,0 +1,130 @@
|
|||||||
|
#
|
||||||
|
# Copyright (C) 2020 iopsys Software Solutions AB
|
||||||
|
#
|
||||||
|
# This is free software, licensed under the GNU General Public License v2.
|
||||||
|
#
|
||||||
|
|
||||||
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
|
PKG_NAME:=easy-soc-libs
|
||||||
|
PKG_VERSION:=6.4.39
|
||||||
|
PKG_RELEASE:=1
|
||||||
|
|
||||||
|
LOCAL_DEV=0
|
||||||
|
ifneq ($(LOCAL_DEV),1)
|
||||||
|
PKG_SOURCE_PROTO:=git
|
||||||
|
PKG_SOURCE_VERSION:=4d1c28405981cd803396afd0d1612df23baa135d
|
||||||
|
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/easy-soc-libs.git
|
||||||
|
PKG_MAINTAINER:=Anjan Chanda <anjan.chanda@iopsys.eu>
|
||||||
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)_$(PKG_SOURCE_VERSION).tar.xz
|
||||||
|
PKG_MIRROR_HASH:=skip
|
||||||
|
endif
|
||||||
|
|
||||||
|
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
|
||||||
|
|
||||||
|
PKG_LICENSE:=GPLv2
|
||||||
|
PKG_LICENSE_FILES:=LICENSE
|
||||||
|
|
||||||
|
include $(INCLUDE_DIR)/package.mk
|
||||||
|
|
||||||
|
define Package/easy-soc-libs
|
||||||
|
SECTION:=libs
|
||||||
|
CATEGORY:=Libraries
|
||||||
|
TITLE:=IOPSYS Easy SoC libraries
|
||||||
|
SUBMENU:=IOPSYS Easy SoC libraries
|
||||||
|
DEPENDS:=+libopenssl
|
||||||
|
MENU:=1
|
||||||
|
endef
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_TARGET_iopsys_brcm63xx_arm),y)
|
||||||
|
TARGET_PLATFORM=BROADCOM
|
||||||
|
CHIP_ID=$(patsubst "%",%,$(CONFIG_BCM_CHIP_ID))
|
||||||
|
TARGET_CFLAGS +=-DIOPSYS_BROADCOM -DCHIP_$(CHIP_ID) -DCONFIG_BCM9$(CHIP_ID) \
|
||||||
|
-I$(STAGING_DIR)/usr/include/bcm963xx/bcmdrivers/opensource/include/bcm963xx \
|
||||||
|
-I$(STAGING_DIR)/usr/include/bcm963xx/userspace/public/include
|
||||||
|
else ifeq ($(CONFIG_TARGET_iopsys_ramips),y)
|
||||||
|
TARGET_PLATFORM=MEDIATEK
|
||||||
|
TARGET_CFLAGS +=-DIOPSYS_MEDIATEK
|
||||||
|
else ifeq ($(CONFIG_TARGET_iopsys_x86),y)
|
||||||
|
TARGET_PLATFORM=TEST
|
||||||
|
TARGET_CFLAGS +=-DIOPSYS_TEST
|
||||||
|
else ifeq ($(CONFIG_TARGET_iopsys_armvirt),y)
|
||||||
|
TARGET_PLATFORM=TEST
|
||||||
|
TARGET_CFLAGS +=-DIOPSYS_TEST
|
||||||
|
else
|
||||||
|
$(info Unexpected CONFIG_TARGET, use default MAC80211)
|
||||||
|
TARGET_PLATFORM=MAC80211
|
||||||
|
TARGET_CFLAGS +=-DIOPSYS_MAC80211
|
||||||
|
endif
|
||||||
|
|
||||||
|
export TARGET_PLATFORM
|
||||||
|
|
||||||
|
subdirs := \
|
||||||
|
$(if $(CONFIG_PACKAGE_libeasy),libeasy) \
|
||||||
|
$(if $(CONFIG_PACKAGE_libwifi),libwifi) \
|
||||||
|
$(if $(CONFIG_PACKAGE_libdsl),libdsl) \
|
||||||
|
$(if $(CONFIG_PACKAGE_libethernet),libethernet) \
|
||||||
|
$(if $(CONFIG_PACKAGE_libqos),libqos)
|
||||||
|
|
||||||
|
EASY_SOC_LIBS := \
|
||||||
|
libeasy \
|
||||||
|
libwifi \
|
||||||
|
libdsl \
|
||||||
|
libethernet \
|
||||||
|
libqos
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_LIBWIFI_USE_CTRL_IFACE),y)
|
||||||
|
TARGET_CFLAGS +=-DLIBWIFI_USE_CTRL_IFACE
|
||||||
|
endif
|
||||||
|
|
||||||
|
TARGET_CFLAGS += \
|
||||||
|
-I$(STAGING_DIR)/usr/include \
|
||||||
|
-I$(STAGING_DIR)/usr/include/openssl \
|
||||||
|
-I$(STAGING_DIR)/usr/include/libnl3
|
||||||
|
|
||||||
|
MAKE_FLAGS += \
|
||||||
|
CFLAGS="$(TARGET_CFLAGS) -Wall -I./" \
|
||||||
|
LDFLAGS="$(TARGET_LDFLAGS)" \
|
||||||
|
FPIC="$(FPIC)" \
|
||||||
|
PLATFORM="$(TARGET_PLATFORM)" \
|
||||||
|
subdirs="$(subdirs)"
|
||||||
|
|
||||||
|
ifeq ($(LOCAL_DEV),1)
|
||||||
|
define Build/Prepare
|
||||||
|
rsync -r --exclude=.* ~/git/easy-soc-libs/ $(PKG_BUILD_DIR)/
|
||||||
|
endef
|
||||||
|
endif
|
||||||
|
|
||||||
|
include easy.mk
|
||||||
|
include wifi.mk
|
||||||
|
include dsl.mk
|
||||||
|
include ethernet.mk
|
||||||
|
include qos.mk
|
||||||
|
|
||||||
|
ifneq ($(wildcard $(PKG_BUILD_DIR)/.config_*),\
|
||||||
|
$(PKG_BUILD_DIR)/.config_$(patsubst "%",%,$(CONFIG_TARGET_PROFILE)))
|
||||||
|
define Build/Compile/rebuild
|
||||||
|
$(FIND) $(PKG_BUILD_DIR) -name \*.o -or -name \*.so\* | $(XARGS) rm -f;
|
||||||
|
$(if $(wildcard $(PKG_BUILD_DIR)/config_*), \
|
||||||
|
rm -f $(PKG_BUILD_DIR)/.config_*)
|
||||||
|
endef
|
||||||
|
endif
|
||||||
|
|
||||||
|
STAMP_CONFIGURED:=$(strip $(STAMP_CONFIGURED))_$(shell echo $(TARGET_CFLAGS) | mkhash md5)
|
||||||
|
|
||||||
|
define Build/Compile
|
||||||
|
$(Build/Compile/rebuild)
|
||||||
|
touch $(PKG_BUILD_DIR)/.config_$(CONFIG_TARGET_PROFILE)
|
||||||
|
$(call Build/Compile/Default)
|
||||||
|
$(foreach dir,$(subdirs),$(call Build/Compile/$(dir)))
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Build/InstallDev
|
||||||
|
$(foreach dir,$(subdirs),$(call Build/InstallDev/$(dir),$(1),$(2));)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/easy-soc-libs/install
|
||||||
|
:
|
||||||
|
endef
|
||||||
|
|
||||||
|
$(eval $(foreach e,$(EASY_SOC_LIBS),$(call BuildPackage,$(e))))
|
||||||
44
easy-soc-libs/dsl.mk
Normal file
44
easy-soc-libs/dsl.mk
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
|
||||||
|
define Package/libdsl
|
||||||
|
$(call Package/easy-soc-libs)
|
||||||
|
TITLE:= xDSL library (libdsl)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/libdsl/config
|
||||||
|
if PACKAGE_libdsl
|
||||||
|
config LIBDSL_DEBUG
|
||||||
|
depends on PACKAGE_libdsl
|
||||||
|
bool "Enable dsl debugging"
|
||||||
|
default n
|
||||||
|
|
||||||
|
config LIBDSL_TEST
|
||||||
|
depends on PACKAGE_libdsl
|
||||||
|
bool "Enable dsl test program"
|
||||||
|
default n
|
||||||
|
|
||||||
|
endif
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Build/InstallDev/libdsl
|
||||||
|
$(INSTALL_DIR) $(1)/usr/include/xdsl
|
||||||
|
$(INSTALL_DIR) $(1)/usr/lib
|
||||||
|
$(CP) $(PKG_BUILD_DIR)/libdsl/xdsl.h $(1)/usr/include/xdsl
|
||||||
|
$(CP) $(PKG_BUILD_DIR)/libdsl/xtm.h $(1)/usr/include/xdsl
|
||||||
|
$(CP) $(PKG_BUILD_DIR)/libdsl/common.h $(1)/usr/include/xdsl
|
||||||
|
$(CP) $(PKG_BUILD_DIR)/libdsl/libdsl.so* $(1)/usr/lib/
|
||||||
|
endef
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_LIBDSL_TEST),y)
|
||||||
|
define Build/Compile/libdsl
|
||||||
|
$(MAKE) -C "$(PKG_BUILD_DIR)/libdsl/test" $(MAKE_FLAGS)
|
||||||
|
endef
|
||||||
|
endif
|
||||||
|
|
||||||
|
define Package/libdsl/install
|
||||||
|
$(INSTALL_DIR) $(1)/usr/lib
|
||||||
|
$(INSTALL_DIR) $(1)/usr/bin
|
||||||
|
$(CP) $(PKG_BUILD_DIR)/libdsl/libdsl.so* $(1)/usr/lib/
|
||||||
|
ifeq ($(CONFIG_LIBDSL_TEST),y)
|
||||||
|
$(CP) $(PKG_BUILD_DIR)/libdsl/test/libdsl_test $(1)/usr/bin/
|
||||||
|
endif
|
||||||
|
endef
|
||||||
29
easy-soc-libs/easy.mk
Normal file
29
easy-soc-libs/easy.mk
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
|
||||||
|
|
||||||
|
define Package/libeasy
|
||||||
|
$(call Package/easy-soc-libs)
|
||||||
|
TITLE:= Common helper functions library (libeasy)
|
||||||
|
DEPENDS+=+libnl +libnl-route
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/libeasy/config
|
||||||
|
source "$(SOURCE)/Config.in"
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Build/InstallDev/libeasy
|
||||||
|
$(INSTALL_DIR) $(1)/usr/include/easy
|
||||||
|
$(INSTALL_DIR) $(1)/usr/lib
|
||||||
|
$(CP) $(PKG_BUILD_DIR)/libeasy/easy.h $(1)/usr/include/easy/
|
||||||
|
$(CP) $(PKG_BUILD_DIR)/libeasy/event.h $(1)/usr/include/easy/
|
||||||
|
$(CP) $(PKG_BUILD_DIR)/libeasy/utils.h $(1)/usr/include/easy/
|
||||||
|
$(CP) $(PKG_BUILD_DIR)/libeasy/if_utils.h $(1)/usr/include/easy/
|
||||||
|
$(CP) $(PKG_BUILD_DIR)/libeasy/debug.h $(1)/usr/include/easy/
|
||||||
|
$(CP) $(PKG_BUILD_DIR)/libeasy/hlist.h $(1)/usr/include/easy/
|
||||||
|
$(CP) $(PKG_BUILD_DIR)/libeasy/libeasy*.so* $(1)/usr/lib/
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/libeasy/install
|
||||||
|
$(INSTALL_DIR) $(1)/usr/lib
|
||||||
|
$(CP) $(PKG_BUILD_DIR)/libeasy/libeasy*.so* $(1)/usr/lib/
|
||||||
|
endef
|
||||||
|
|
||||||
27
easy-soc-libs/ethernet.mk
Normal file
27
easy-soc-libs/ethernet.mk
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
|
||||||
|
define Package/libethernet
|
||||||
|
$(call Package/easy-soc-libs)
|
||||||
|
TITLE:= Ethernet library (libethernet)
|
||||||
|
DEPENDS+=+libnl +libnl-route +libeasy +TARGET_iopsys_ramips:swconfig
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/libethernet/config
|
||||||
|
config LIBETHERNET_DEBUG
|
||||||
|
depends on PACKAGE_libethernet
|
||||||
|
bool "Enable ethernet debugging"
|
||||||
|
default n
|
||||||
|
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Build/InstallDev/libethernet
|
||||||
|
$(INSTALL_DIR) $(1)/usr/include
|
||||||
|
$(INSTALL_DIR) $(1)/usr/lib
|
||||||
|
$(CP) $(PKG_BUILD_DIR)/libethernet/ethernet.h $(1)/usr/include/
|
||||||
|
$(CP) $(PKG_BUILD_DIR)/libethernet/libethernet.so $(1)/usr/lib/
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/libethernet/install
|
||||||
|
$(INSTALL_DIR) $(1)/usr/lib
|
||||||
|
$(CP) $(PKG_BUILD_DIR)/libethernet/libethernet.so* $(1)/usr/lib/
|
||||||
|
endef
|
||||||
|
|
||||||
27
easy-soc-libs/qos.mk
Normal file
27
easy-soc-libs/qos.mk
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
|
||||||
|
define Package/libqos
|
||||||
|
$(call Package/easy-soc-libs)
|
||||||
|
TITLE:= QoS library (libqos)
|
||||||
|
DEPENDS+=+libnl +libnl-route +libeasy
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/libqos/config
|
||||||
|
config LIBQOS_DEBUG
|
||||||
|
depends on PACKAGE_libqos
|
||||||
|
bool "Enable qos debugging"
|
||||||
|
default n
|
||||||
|
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Build/InstallDev/libqos
|
||||||
|
$(INSTALL_DIR) $(1)/usr/include
|
||||||
|
$(INSTALL_DIR) $(1)/usr/lib
|
||||||
|
$(CP) $(PKG_BUILD_DIR)/libqos/include/qos.h $(1)/usr/include/
|
||||||
|
$(CP) $(PKG_BUILD_DIR)/libqos/libqos.so $(1)/usr/lib/
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/libqos/install
|
||||||
|
$(INSTALL_DIR) $(1)/usr/lib
|
||||||
|
$(CP) $(PKG_BUILD_DIR)/libqos/libqos*.so* $(1)/usr/lib/
|
||||||
|
endef
|
||||||
|
|
||||||
29
easy-soc-libs/wifi.mk
Normal file
29
easy-soc-libs/wifi.mk
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
|
||||||
|
define Package/libwifi
|
||||||
|
$(call Package/easy-soc-libs)
|
||||||
|
TITLE:= WiFi library (libwifi)
|
||||||
|
DEPENDS+=+libnl +libnl-route +libeasy +TARGET_iopsys_brcm63xx_arm:bcmkernel
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/libwifi/config
|
||||||
|
if PACKAGE_libdsl
|
||||||
|
config LIBWIFI_DEBUG
|
||||||
|
depends on PACKAGE_libwifi
|
||||||
|
bool "Enable wifi debugging"
|
||||||
|
default n
|
||||||
|
|
||||||
|
endif
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Build/InstallDev/libwifi
|
||||||
|
$(INSTALL_DIR) $(1)/usr/include
|
||||||
|
$(INSTALL_DIR) $(1)/usr/lib
|
||||||
|
$(CP) $(PKG_BUILD_DIR)/libwifi/wifi.h $(1)/usr/include/
|
||||||
|
$(CP) $(PKG_BUILD_DIR)/libwifi/libwifi*.so* $(1)/usr/lib/
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/libwifi/install
|
||||||
|
$(INSTALL_DIR) $(1)/usr/lib
|
||||||
|
$(CP) $(PKG_BUILD_DIR)/libwifi/libwifi*.so* $(1)/usr/lib/
|
||||||
|
endef
|
||||||
|
|
||||||
4
endptmngr/Config.in
Executable file
4
endptmngr/Config.in
Executable file
@@ -0,0 +1,4 @@
|
|||||||
|
|
||||||
|
config ENDPT_OPEN
|
||||||
|
bool "Use pre-compiled version for Open SDK"
|
||||||
|
default n
|
||||||
69
endptmngr/Makefile
Normal file
69
endptmngr/Makefile
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
#
|
||||||
|
# Copyright (C) 2018 IOPSYS Software Solutions AB
|
||||||
|
#
|
||||||
|
# This is free software, licensed under the GNU General Public License v2.
|
||||||
|
# See /LICENSE for more information.
|
||||||
|
#
|
||||||
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
|
PKG_NAME:=endptmngr
|
||||||
|
PKG_VERSION:=0.6
|
||||||
|
|
||||||
|
LOCAL_DEV=0
|
||||||
|
ifneq ($(LOCAL_DEV),1)
|
||||||
|
PKG_SOURCE_PROTO:=git
|
||||||
|
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/endptmngr.git
|
||||||
|
PKG_SOURCE_VERSION:=2390a3503990e04e33e8e448ad9dccc00f206908
|
||||||
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
|
||||||
|
PKG_MIRROR_HASH:=skip
|
||||||
|
endif
|
||||||
|
|
||||||
|
PKG_LICENSE:=MIT
|
||||||
|
PKG_LICENSE_FILES:=LICENSE
|
||||||
|
|
||||||
|
export BUILD_DIR
|
||||||
|
|
||||||
|
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
|
||||||
|
PKG_BUILD_PARALLEL:=1
|
||||||
|
|
||||||
|
# All config variable that are passed to the make invocation, directly or
|
||||||
|
# indirectly. This ensures that the package is rebuilt on config-changes.
|
||||||
|
PKG_CONFIG_DEPENDS:=CONFIG_TARGET_BOARD
|
||||||
|
|
||||||
|
export CONFIG_BRCM_SDK_VER_504021
|
||||||
|
export CONFIG_BCM_CHIP_ID
|
||||||
|
|
||||||
|
include $(INCLUDE_DIR)/package.mk
|
||||||
|
|
||||||
|
define Package/endptmngr/config
|
||||||
|
source "$(SOURCE)/Config.in"
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/endptmngr
|
||||||
|
CATEGORY:=Utilities
|
||||||
|
TITLE:=Broadcom Voice Endpoint Manager
|
||||||
|
URL:=
|
||||||
|
DEPENDS:= +libubox +ubus +libpicoevent +uci +bcmkernel @TARGET_HAS_VOICE @BCM_VOICE
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/endptmngr/description
|
||||||
|
endptmngr
|
||||||
|
endef
|
||||||
|
|
||||||
|
ifeq ($(LOCAL_DEV),1)
|
||||||
|
define Build/Prepare
|
||||||
|
rsync -av --exclude=.* ~/git/endptmngr/* $(PKG_BUILD_DIR)/
|
||||||
|
endef
|
||||||
|
endif
|
||||||
|
|
||||||
|
TARGET_CFLAGS += \
|
||||||
|
-Wall \
|
||||||
|
-Werror
|
||||||
|
|
||||||
|
define Package/endptmngr/install
|
||||||
|
$(CP) ./files/* $(1)/
|
||||||
|
$(INSTALL_DIR) $(1)/usr/sbin
|
||||||
|
$(INSTALL_BIN) $(PKG_BUILD_DIR)/src/endptmngr $(1)/usr/sbin/
|
||||||
|
endef
|
||||||
|
|
||||||
|
$(eval $(call BuildPackage,endptmngr))
|
||||||
@@ -4,17 +4,13 @@ START=68
|
|||||||
STOP=12
|
STOP=12
|
||||||
|
|
||||||
USE_PROCD=1
|
USE_PROCD=1
|
||||||
NAME=voicemngr
|
NAME=endptmngr
|
||||||
|
|
||||||
start_service() {
|
start_service() {
|
||||||
[ "$(db -q get hw.board.hasVoice)" = "1" ] || return
|
[ "$(db -q get hw.board.hasVoice)" = "1" ] || return
|
||||||
|
|
||||||
[ -d "/usr/lib/broadcom" ] && BCM_LIBS=LD_LIBRARY_PATH=/lib/broadcom:/usr/lib/broadcom
|
|
||||||
|
|
||||||
procd_open_instance
|
procd_open_instance
|
||||||
procd_set_param env hw_board_hasDect="$(db get hw.board.hasDect)" \
|
procd_set_param env hw_board_hasDect=$(db get hw.board.hasDect)
|
||||||
hw_board_VoicePortNames="$(db get hw.board.VoicePortNames)" \
|
|
||||||
$BCM_LIBS
|
|
||||||
procd_set_param command $NAME
|
procd_set_param command $NAME
|
||||||
procd_set_param respawn "5" "0" "3"
|
procd_set_param respawn "5" "0" "3"
|
||||||
procd_set_param nice -12
|
procd_set_param nice -12
|
||||||
@@ -27,5 +23,5 @@ reload_service() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
service_triggers() {
|
service_triggers() {
|
||||||
procd_add_reload_trigger asterisk
|
procd_add_reload_trigger asterisk
|
||||||
}
|
}
|
||||||
@@ -1,21 +1,18 @@
|
|||||||
#
|
#
|
||||||
# Copyright (C) 2020-2024 Iopsys
|
# Copyright (C) 2020 Iopsys
|
||||||
#
|
#
|
||||||
|
|
||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=ethmngr
|
PKG_NAME:=ethmngr
|
||||||
PKG_VERSION:=2.1.2
|
PKG_VERSION:=2.0.1
|
||||||
|
|
||||||
LOCAL_DEV:=0
|
|
||||||
ifneq ($(LOCAL_DEV),1)
|
|
||||||
PKG_SOURCE_PROTO:=git
|
PKG_SOURCE_PROTO:=git
|
||||||
PKG_SOURCE_VERSION:=e5cccdd45a93d969d51c4085cb52b543df544811
|
PKG_SOURCE_VERSION:=5a0ff3bc7c49dcb05129f423ef8e0c4929f6aa03
|
||||||
PKG_SOURCE_URL:=https://dev.iopsys.eu/hal/ethmngr.git
|
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/ethmngr.git
|
||||||
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
|
||||||
endif
|
|
||||||
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
|
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
|
||||||
PKG_LICENSE:=GPL-2.0-only
|
PKG_LICENSE:=GPL-2.0-only
|
||||||
PKG_LICENSE_FILES:=LICENSE
|
PKG_LICENSE_FILES:=LICENSE
|
||||||
@@ -26,7 +23,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
|
DEPENDS:=+libethernet +libuci +libubox +ubus +libpthread +libnl-genl
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/ethmngr/description
|
define Package/ethmngr/description
|
||||||
@@ -35,28 +32,15 @@ define Package/ethmngr/description
|
|||||||
It uses APIs from the libethernet.so library.
|
It uses APIs from the libethernet.so library.
|
||||||
endef
|
endef
|
||||||
|
|
||||||
ifeq ($(LOCAL_DEV),1)
|
|
||||||
define Build/Prepare
|
|
||||||
$(CP) -rf ./ethmngr/* $(PKG_BUILD_DIR)/
|
|
||||||
endef
|
|
||||||
endif
|
|
||||||
|
|
||||||
TARGET_CFLAGS += \
|
TARGET_CFLAGS += \
|
||||||
-I$(STAGING_DIR)/usr/include \
|
-I$(STAGING_DIR)/usr/include \
|
||||||
-I$(STAGING_DIR)/usr/include/libnl3 \
|
-I$(STAGING_DIR)/usr/include/libnl3 \
|
||||||
-D_GNU_SOURCE
|
-D_GNU_SOURCE
|
||||||
|
|
||||||
ifeq ($(CONFIG_TARGET_brcmbca)$(CONFIG_TARGET_airoha)$(CONFIG_TARGET_ipq95xx)$(CONFIG_TARGET_ipq53xx)$(CONFIG_TARGET_mediatek),)
|
|
||||||
define Build/Compile
|
|
||||||
endef
|
|
||||||
endif
|
|
||||||
|
|
||||||
define Package/ethmngr/install
|
define Package/ethmngr/install
|
||||||
$(CP) ./files/* $(1)/
|
$(INSTALL_DIR) $(1)/etc/init.d $(1)/usr/sbin
|
||||||
ifneq ($(CONFIG_TARGET_brcmbca)$(CONFIG_TARGET_airoha)$(CONFIG_TARGET_ipq95xx)$(CONFIG_TARGET_ipq53xx)$(CONFIG_TARGET_mediatek),)
|
$(INSTALL_BIN) ./files/ethmngr.init $(1)/etc/init.d/ethmngr
|
||||||
$(INSTALL_DIR) $(1)/usr/sbin
|
|
||||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/ethmngr $(1)/usr/sbin/
|
$(INSTALL_BIN) $(PKG_BUILD_DIR)/ethmngr $(1)/usr/sbin/
|
||||||
endif
|
|
||||||
endef
|
endef
|
||||||
|
|
||||||
$(eval $(call BuildPackage,ethmngr))
|
$(eval $(call BuildPackage,ethmngr))
|
||||||
|
|||||||
@@ -1,28 +0,0 @@
|
|||||||
#!/bin/sh /etc/rc.common
|
|
||||||
|
|
||||||
START=15
|
|
||||||
STOP=90
|
|
||||||
|
|
||||||
USE_PROCD=1
|
|
||||||
PROG=/usr/sbin/ethmngr
|
|
||||||
|
|
||||||
. /lib/functions.sh
|
|
||||||
include /lib/ethernet
|
|
||||||
|
|
||||||
start_service() {
|
|
||||||
if [ -f $PROG ]; then
|
|
||||||
procd_open_instance
|
|
||||||
procd_set_param command ${PROG}
|
|
||||||
procd_set_param respawn
|
|
||||||
procd_close_instance
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
reload_service() {
|
|
||||||
stop
|
|
||||||
start
|
|
||||||
}
|
|
||||||
|
|
||||||
service_triggers() {
|
|
||||||
procd_add_reload_trigger network
|
|
||||||
}
|
|
||||||
19
ethmngr/files/ethmngr.init
Normal file
19
ethmngr/files/ethmngr.init
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
#!/bin/sh /etc/rc.common
|
||||||
|
|
||||||
|
START=95
|
||||||
|
STOP=10
|
||||||
|
|
||||||
|
USE_PROCD=1
|
||||||
|
PROG=/usr/sbin/ethmngr
|
||||||
|
|
||||||
|
start_service() {
|
||||||
|
procd_open_instance
|
||||||
|
procd_set_param command ${PROG}
|
||||||
|
procd_set_param respawn
|
||||||
|
procd_close_instance
|
||||||
|
}
|
||||||
|
|
||||||
|
reload_service() {
|
||||||
|
stop
|
||||||
|
start
|
||||||
|
}
|
||||||
62
evoice/Makefile
Normal file
62
evoice/Makefile
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
#
|
||||||
|
# Copyright (C) 2022 IOPSYS Software Solutions AB
|
||||||
|
#
|
||||||
|
|
||||||
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
|
PKG_NAME:=evoice
|
||||||
|
PKG_VERSION:=0.1
|
||||||
|
|
||||||
|
LOCAL_DEV=0
|
||||||
|
ifneq ($(LOCAL_DEV),1)
|
||||||
|
PKG_SOURCE_PROTO:=git
|
||||||
|
PKG_SOURCE_URL:=https://dev.iopsys.eu/ensemble/evoice.git
|
||||||
|
PKG_SOURCE_VERSION:=1f790ba0cbc1b62c4bff9fd09a20cb0c299422da
|
||||||
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
|
||||||
|
PKG_MIRROR_HASH:=skip
|
||||||
|
endif
|
||||||
|
|
||||||
|
PKG_LICENSE:=MIT
|
||||||
|
PKG_LICENSE_FILES:=LICENSE
|
||||||
|
|
||||||
|
|
||||||
|
# All config variable that are passed to the make invocation, directly or
|
||||||
|
# indirectly. This ensures that the package is rebuilt on config-changes.
|
||||||
|
#PKG_CONFIG_DEPENDS:=CONFIG_TARGET_BOARD
|
||||||
|
|
||||||
|
include $(INCLUDE_DIR)/package.mk
|
||||||
|
|
||||||
|
define Package/$(PKG_NAME)
|
||||||
|
CATEGORY:=Network
|
||||||
|
SUBMENU:=Telephony
|
||||||
|
TITLE:=Ensemble Voice
|
||||||
|
URL:=
|
||||||
|
DEPENDS:= +libubox +libubus +libpicoevent +libuci +libstdcpp
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/$(PKG_NAME)/description
|
||||||
|
Ensemble Voice. A stand alone SIP VoIP application.
|
||||||
|
endef
|
||||||
|
|
||||||
|
ifeq ($(LOCAL_DEV),1)
|
||||||
|
# If you want to build the code from your own local repositiory enable
|
||||||
|
# LOCAL_DEV and change the path below to your own git repository.
|
||||||
|
define Build/Prepare
|
||||||
|
rsync -av /swdev/bide/evoice_clean/* $(PKG_BUILD_DIR)/
|
||||||
|
endef
|
||||||
|
endif
|
||||||
|
export IDIR = $(STAGING_DIR)/usr/include
|
||||||
|
export BDIR = bcm963xx/userspace/private/apps/voice
|
||||||
|
export _XFLAGS = -I$(IDIR) -I$(IDIR)/$(BDIR)/inc -I$(IDIR)/bcm963xx/xchg/bos/publicInc -I$(IDIR)/bcm963xx/bcmdrivers/broadcom/include/bcm963xx
|
||||||
|
|
||||||
|
define Build/Compile
|
||||||
|
+$(MAKE) -r -R -C $(PKG_BUILD_DIR) -f _bld/src/cdabs.mk SWB=b_gxxqca6 HWA=a_openwrt HWC=c_hosted OSP=p_posix TRG=SVrgBcmFxs LIF=cerder DBG=dbg
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/evoice/install
|
||||||
|
$(CP) ./files/* $(1)/
|
||||||
|
$(INSTALL_DIR) $(1)/usr/sbin
|
||||||
|
$(INSTALL_BIN) $(PKG_BUILD_DIR)/_bin/a_openwrt/evoice $(1)/usr/sbin/
|
||||||
|
endef
|
||||||
|
|
||||||
|
$(eval $(call BuildPackage,evoice))
|
||||||
352
evoice/files/etc/config/voice
Normal file
352
evoice/files/etc/config/voice
Normal file
@@ -0,0 +1,352 @@
|
|||||||
|
|
||||||
|
config SIPClient 'Client1'
|
||||||
|
option Enable '1'
|
||||||
|
option RegisterMode 'RFC3261'
|
||||||
|
option AuthUserName '51234'
|
||||||
|
option AuthPassword '51234'
|
||||||
|
option Network 'Network1'
|
||||||
|
option MaxSessions '5'
|
||||||
|
option RegisiterURI '51234@192.164.4.210'
|
||||||
|
option E164Format '1'
|
||||||
|
|
||||||
|
config SIPClient 'Client2'
|
||||||
|
option Enable '1'
|
||||||
|
option RegisterMode 'RFC3261'
|
||||||
|
option AuthUserName '51235'
|
||||||
|
option AuthPassword '51235'
|
||||||
|
option Network 'Network1'
|
||||||
|
option MaxSessions '5'
|
||||||
|
option RegisiterURI '51235@192.164.4.210'
|
||||||
|
option E164Format '1'
|
||||||
|
|
||||||
|
config SIPNetwork 'Network1'
|
||||||
|
option Enable '1'
|
||||||
|
option ProxyServer '192.168.4.210'
|
||||||
|
option ProxyServerPort '5060'
|
||||||
|
option ProxyServerTransport 'UDP'
|
||||||
|
option RegistrarServer '192.168.4.210'
|
||||||
|
option RegistrarServerPort '5060'
|
||||||
|
option RegistrarServerTransport 'UDP'
|
||||||
|
option RegistrationPeriod '3240'
|
||||||
|
option RegisterExpires '3600'
|
||||||
|
option UserAgentDomain ' '
|
||||||
|
option TimerRegistrationFailed '120'
|
||||||
|
option TimerT1 '500'
|
||||||
|
option VoIPProfile 'VoIPProfile1'
|
||||||
|
list CodecList '1CodecProfile1'
|
||||||
|
list CodecList '1CodecProfile2'
|
||||||
|
list CodecList '1CodecProfile3'
|
||||||
|
list CodecList '1CodecProfile5'
|
||||||
|
list CodecList '1CodecProfile4'
|
||||||
|
|
||||||
|
config Capabilities 'Capabilities'
|
||||||
|
option FacilityActions 'CW_ACTIVE,CFU_ACTIVE'
|
||||||
|
|
||||||
|
config CapabilitiesCodec 'Codec1'
|
||||||
|
option Codec 'G.711ALaw'
|
||||||
|
|
||||||
|
config CapabilitiesCodec 'Codec2'
|
||||||
|
option Codec 'G.711MuLaw'
|
||||||
|
|
||||||
|
config CapabilitiesCodec 'Codec3'
|
||||||
|
option Codec 'G.726'
|
||||||
|
|
||||||
|
config CapabilitiesCodec 'Codec4'
|
||||||
|
option Codec 'G.722'
|
||||||
|
|
||||||
|
config CapabilitiesCodec 'Codec5'
|
||||||
|
option Codec 'G.729'
|
||||||
|
|
||||||
|
config CodecProfile '1CodecProfile1'
|
||||||
|
option Enable '1'
|
||||||
|
option Codec 'Codec1'
|
||||||
|
option PacketizationPeriod '20'
|
||||||
|
option SilenceSupression '1'
|
||||||
|
|
||||||
|
config CodecProfile '1CodecProfile2'
|
||||||
|
option Enable '1'
|
||||||
|
option Codec 'Codec2'
|
||||||
|
option PacketizationPeriod '20'
|
||||||
|
option SilenceSupression '1'
|
||||||
|
|
||||||
|
config CodecProfile '1CodecProfile3'
|
||||||
|
option Enable '1'
|
||||||
|
option Codec 'Codec3'
|
||||||
|
option PacketizationPeriod '20'
|
||||||
|
option SilenceSupression '0'
|
||||||
|
|
||||||
|
config CodecProfile '1CodecProfile4'
|
||||||
|
option Enable '1'
|
||||||
|
option Codec 'Codec4'
|
||||||
|
option PacketizationPeriod '20'
|
||||||
|
option SilenceSupression '0'
|
||||||
|
|
||||||
|
config CodecProfile '1CodecProfile5'
|
||||||
|
option Enable '1'
|
||||||
|
option Codec 'Codec5'
|
||||||
|
option PacketizationPeriod '20'
|
||||||
|
option SilenceSupression '0'
|
||||||
|
|
||||||
|
config VoIPProfile 'VoIPProfile1'
|
||||||
|
option Enable '1'
|
||||||
|
option DTMFMethod 'RFC4733'
|
||||||
|
option RTP '1RTP'
|
||||||
|
|
||||||
|
config RTP '1RTP'
|
||||||
|
option LocalPortMin '10020'
|
||||||
|
option LocalPortMax '10039'
|
||||||
|
option JitterBufferType 'Static'
|
||||||
|
|
||||||
|
config FXXPorts 'POTS'
|
||||||
|
option Region 'SE'
|
||||||
|
|
||||||
|
config FXSPorts 'FXS1'
|
||||||
|
option Enable '1'
|
||||||
|
option DialType 'Tone'
|
||||||
|
option TransmitGain '4'
|
||||||
|
option ReceiveGain '4'
|
||||||
|
option EchoCancellationEnable '1'
|
||||||
|
|
||||||
|
config FXSPorts 'FXS2'
|
||||||
|
option Enable '1'
|
||||||
|
option DialType 'Tone'
|
||||||
|
option TransmitGain '4'
|
||||||
|
option ReceiveGain '4'
|
||||||
|
option EchoCancellationEnable '1'
|
||||||
|
|
||||||
|
config Extension 'Extension1'
|
||||||
|
option Enable '1'
|
||||||
|
option ExtensionNumber '10#'
|
||||||
|
option Provider 'FXS1'
|
||||||
|
option CallingFeatures 'Set1'
|
||||||
|
option Name 'Phone 1'
|
||||||
|
|
||||||
|
config Extension 'Extension2'
|
||||||
|
option Enable '1'
|
||||||
|
option ExtensionNumber '11#'
|
||||||
|
option Provider 'FXS2'
|
||||||
|
option CallingFeatures 'Set1'
|
||||||
|
option Name 'Phone 2'
|
||||||
|
|
||||||
|
config Line 'Line1'
|
||||||
|
option Enable '1'
|
||||||
|
option Provider 'Client1'
|
||||||
|
option CallingFeatures 'Set1'
|
||||||
|
|
||||||
|
config Line 'Line2'
|
||||||
|
option Enable '1'
|
||||||
|
option Provider 'Client2'
|
||||||
|
option CallingFeatures 'Set2'
|
||||||
|
|
||||||
|
config IncomingMap 'IncomingMap1'
|
||||||
|
option Enable '1'
|
||||||
|
option Extension 'Extension1'
|
||||||
|
option Line 'Line1'
|
||||||
|
|
||||||
|
config IncomingMap 'IncomingMap2'
|
||||||
|
option Enable '1'
|
||||||
|
option Extension 'Extension2'
|
||||||
|
option Line 'Line2'
|
||||||
|
|
||||||
|
config IncomingMap 'IncomingMap3'
|
||||||
|
option Enable '1'
|
||||||
|
option Extension 'Extension2'
|
||||||
|
option Line 'Line1'
|
||||||
|
|
||||||
|
config OutgoingMap 'OutgoingMap1'
|
||||||
|
option Enable '1'
|
||||||
|
option Extension 'Extension1'
|
||||||
|
option Line 'Line1'
|
||||||
|
|
||||||
|
config OutgoingMap 'OutgoingMap2'
|
||||||
|
option Enable '1'
|
||||||
|
option Extension 'Extension2'
|
||||||
|
option Line 'Line2'
|
||||||
|
|
||||||
|
config CallingFeatures 'Set1'
|
||||||
|
option CallerIDEnable '1'
|
||||||
|
option CallerIDNameEnable '1'
|
||||||
|
option CallForwardUnconditionalEnable '0'
|
||||||
|
option CallForwardUnconditionalNumber ' '
|
||||||
|
option CallForwardOnBusyEnable '0'
|
||||||
|
option CallForwardOnBusyNumber ' '
|
||||||
|
option CallForwardOnNoAnswerEnable '0'
|
||||||
|
option CallForwardOnNoAnswerRingTimeout '24'
|
||||||
|
option CallForwardOnNoAnswerNumber ' '
|
||||||
|
option CallTransferEnable '1'
|
||||||
|
option MWIEnable '1'
|
||||||
|
option VMWIEnable '1'
|
||||||
|
option LineMessagesWaiting '0'
|
||||||
|
option AnonymousCallRejectionEnable '0'
|
||||||
|
option AnonymousCallEnable '1'
|
||||||
|
option DoNotDisturbEnable '1'
|
||||||
|
option RepeatDialEnable '1'
|
||||||
|
option VoiceMailEnable '1'
|
||||||
|
option CallPickUpEnable '1'
|
||||||
|
option CCBSEnable '1'
|
||||||
|
option CallWaitingEnable '0'
|
||||||
|
|
||||||
|
config CallingFeatures 'Set2'
|
||||||
|
option CallerIDEnable '1'
|
||||||
|
option CallerIDNameEnable '1'
|
||||||
|
option CallForwardUnconditionalEnable '0'
|
||||||
|
option CallForwardUnconditionalNumber ' '
|
||||||
|
option CallForwardOnBusyEnable '0'
|
||||||
|
option CallForwardOnBusyNumber ' '
|
||||||
|
option CallForwardOnNoAnswerEnable '0'
|
||||||
|
option CallForwardOnNoAnswerRingTimeout '24'
|
||||||
|
option CallForwardOnNoAnswerNumber ' '
|
||||||
|
option CallTransferEnable '1'
|
||||||
|
option MWIEnable '1'
|
||||||
|
option VMWIEnable '1'
|
||||||
|
option LineMessagesWaiting '0'
|
||||||
|
option AnonymousCallRejectionEnable '0'
|
||||||
|
option AnonymousCallEnable '1'
|
||||||
|
option DoNotDisturbEnable '1'
|
||||||
|
option RepeatDialEnable '1'
|
||||||
|
option VoiceMailEnable '1'
|
||||||
|
option CallPickUpEnable '1'
|
||||||
|
option CCBSEnable '1'
|
||||||
|
option CallWaitingEnable '1'
|
||||||
|
|
||||||
|
config NumberingPlan 'NumberingPlan1'
|
||||||
|
option MinimumNumberOfDigits '5'
|
||||||
|
option MaximumNumberOfDigits '15'
|
||||||
|
option InterDigitTimerStd '2000'
|
||||||
|
option InterDigitTimerOpen '2000'
|
||||||
|
option TerminationDigit ' '
|
||||||
|
|
||||||
|
config NumberingPlan 'NumberingPlan2'
|
||||||
|
option MinimumNumberOfDigits '5'
|
||||||
|
option MaximumNumberOfDigits '15'
|
||||||
|
option InterDigitTimerStd '2000'
|
||||||
|
option InterDigitTimerOpen '2000'
|
||||||
|
option TerminationDigit '#'
|
||||||
|
|
||||||
|
config NumberingPlan 'NumberingPlan3'
|
||||||
|
option MinimumNumberOfDigits '5'
|
||||||
|
option MaximumNumberOfDigits '15'
|
||||||
|
option InterDigitTimerStd '2000'
|
||||||
|
option InterDigitTimerOpen '2000'
|
||||||
|
option TerminationDigit ' '
|
||||||
|
list PrefixList '3PrefixInfo1'
|
||||||
|
list PrefixList '3PrefixInfo2'
|
||||||
|
list PrefixList '3PrefixInfo3'
|
||||||
|
list PrefixList '3PrefixInfo4'
|
||||||
|
list PrefixList '3PrefixInfo5'
|
||||||
|
list PrefixList '3PrefixInfo6'
|
||||||
|
list PrefixList '3PrefixInfo7'
|
||||||
|
list PrefixList '3PrefixInfo8'
|
||||||
|
list PrefixList '3PrefixInfo9'
|
||||||
|
|
||||||
|
config NumberingPlan 'NumberingPlan4'
|
||||||
|
option MinimumNumberOfDigits '5'
|
||||||
|
option MaximumNumberOfDigits '15'
|
||||||
|
option InterDigitTimerStd '2000'
|
||||||
|
option InterDigitTimerOpen '2000'
|
||||||
|
option TerminationDigit '#'
|
||||||
|
list PrefixList '4PrefixInfo1'
|
||||||
|
|
||||||
|
config PrefixInfo '3PrefixInfo1'
|
||||||
|
option Enable '1'
|
||||||
|
option PrefixRange '*43#'
|
||||||
|
option PrefixMinNumberOfDigits '4'
|
||||||
|
option PrefixMaxNumberOfDigits '4'
|
||||||
|
option NumberOfDigitsToRemove '0'
|
||||||
|
option PosOfDigitsToRemove '0'
|
||||||
|
option FacilityAction 'CW_ACTIVATE'
|
||||||
|
option FacilityActionArgument ' '
|
||||||
|
|
||||||
|
config PrefixInfo '3PrefixInfo2'
|
||||||
|
option Enable '1'
|
||||||
|
option PrefixRange '#43#'
|
||||||
|
option PrefixMinNumberOfDigits '4'
|
||||||
|
option PrefixMaxNumberOfDigits '4'
|
||||||
|
option NumberOfDigitsToRemove '0'
|
||||||
|
option PosOfDigitsToRemove '0'
|
||||||
|
option FacilityAction 'CW_DEACTIVATE'
|
||||||
|
option FacilityActionArgument ' '
|
||||||
|
|
||||||
|
config PrefixInfo '3PrefixInfo3'
|
||||||
|
option Enable '1'
|
||||||
|
option PrefixRange '*21*(X+)#'
|
||||||
|
option PrefixMinNumberOfDigits '9'
|
||||||
|
option PrefixMaxNumberOfDigits '9'
|
||||||
|
option NumberOfDigitsToRemove '0'
|
||||||
|
option PosOfDigitsToRemove '0'
|
||||||
|
option FacilityAction 'CFU_ACTIVATE'
|
||||||
|
option FacilityActionArgument ' '
|
||||||
|
|
||||||
|
config PrefixInfo '3PrefixInfo4'
|
||||||
|
option Enable '1'
|
||||||
|
option PrefixRange '#21#'
|
||||||
|
option PrefixMinNumberOfDigits '4'
|
||||||
|
option PrefixMaxNumberOfDigits '4'
|
||||||
|
option NumberOfDigitsToRemove '0'
|
||||||
|
option PosOfDigitsToRemove '0'
|
||||||
|
option FacilityAction 'CFU_DEACTIVATE'
|
||||||
|
option FacilityActionArgument ' '
|
||||||
|
|
||||||
|
config PrefixInfo '3PrefixInfo5'
|
||||||
|
option Enable '1'
|
||||||
|
option PrefixRange '*67*(X+)#'
|
||||||
|
option PrefixMinNumberOfDigits '9'
|
||||||
|
option PrefixMaxNumberOfDigits '9'
|
||||||
|
option NumberOfDigitsToRemove '0'
|
||||||
|
option PosOfDigitsToRemove '0'
|
||||||
|
option FacilityAction 'CFB_ACTIVATE'
|
||||||
|
option FacilityActionArgument ' '
|
||||||
|
|
||||||
|
config PrefixInfo '3PrefixInfo6'
|
||||||
|
option Enable '1'
|
||||||
|
option PrefixRange '#67#'
|
||||||
|
option PrefixMinNumberOfDigits '4'
|
||||||
|
option PrefixMaxNumberOfDigits '4'
|
||||||
|
option NumberOfDigitsToRemove '0'
|
||||||
|
option PosOfDigitsToRemove '0'
|
||||||
|
option FacilityAction 'CFB_DEACTIVATE'
|
||||||
|
option FacilityActionArgument ' '
|
||||||
|
|
||||||
|
config PrefixInfo '3PrefixInfo7'
|
||||||
|
option Enable '1'
|
||||||
|
option PrefixRange '*61*(X+(*X+)?)#'
|
||||||
|
option PrefixMinNumberOfDigits '15'
|
||||||
|
option PrefixMaxNumberOfDigits '15'
|
||||||
|
option NumberOfDigitsToRemove '0'
|
||||||
|
option PosOfDigitsToRemove '0'
|
||||||
|
option FacilityAction 'CFNR_ACTIVATE'
|
||||||
|
option FacilityActionArgument ' '
|
||||||
|
|
||||||
|
config PrefixInfo '3PrefixInfo8'
|
||||||
|
option Enable '1'
|
||||||
|
option PrefixRange '#61#'
|
||||||
|
option PrefixMinNumberOfDigits '4'
|
||||||
|
option PrefixMaxNumberOfDigits '4'
|
||||||
|
option NumberOfDigitsToRemove '0'
|
||||||
|
option PosOfDigitsToRemove '0'
|
||||||
|
option FacilityAction 'CFNR_DEACTIVATE'
|
||||||
|
option FacilityActionArgument ' '
|
||||||
|
|
||||||
|
config PrefixInfo '3PrefixInfo9'
|
||||||
|
option Enable '1'
|
||||||
|
option PrefixRange '*31*'
|
||||||
|
option PrefixMinNumberOfDigits '4'
|
||||||
|
option PrefixMaxNumberOfDigits '4'
|
||||||
|
option NumberOfDigitsToRemove '0'
|
||||||
|
option PosOfDigitsToRemove '0'
|
||||||
|
option FacilityAction 'CA_ACTIVATE'
|
||||||
|
option FacilityActionArgument ' '
|
||||||
|
|
||||||
|
config PrefixInfo '4PrefixInfo1'
|
||||||
|
option Enable '1'
|
||||||
|
option PrefixRange '110|112'
|
||||||
|
option PrefixMinNumberOfDigits '7'
|
||||||
|
option PrefixMaxNumberOfDigits '7'
|
||||||
|
option NumberOfDigitsToRemove '0'
|
||||||
|
option PosOfDigitsToRemove '0'
|
||||||
|
option FacilityAction 'X_IOPSYS_EU_EMERGENCY'
|
||||||
|
option FacilityActionArgument ' '
|
||||||
|
|
||||||
|
config DialPlan 'X_IOPSYS_EU_InternalNumber1'
|
||||||
|
option RegExp '1X#'
|
||||||
|
|
||||||
165
evoice/files/etc/evoice/voicedm
Normal file
165
evoice/files/etc/evoice/voicedm
Normal file
@@ -0,0 +1,165 @@
|
|||||||
|
# RO (Main)
|
||||||
|
config account 'map_board'
|
||||||
|
option HW_Has_Voice 'hw.board.hasVoice'
|
||||||
|
option HW_Has_DECT 'hw.board.hasDect'
|
||||||
|
option HW_Nr_Of_POTS_Ports 'hw.board.VoicePorts'
|
||||||
|
option ProductID 'device.deviceinfo.ModelName'
|
||||||
|
option I3_VERSION 'device.deviceinfo.SoftwareVersion'
|
||||||
|
option SerialNumber 'device.deviceinfo.SerialNumber'
|
||||||
|
|
||||||
|
config account 'map_pots'
|
||||||
|
option Country 'voice.POTS.Region'
|
||||||
|
|
||||||
|
# Voice Service navigation paths
|
||||||
|
# Not used to initialize internal configuration
|
||||||
|
config navigation 'map_vs'
|
||||||
|
option Account 'voice.Client@.'
|
||||||
|
option Network 'voice.Client@.Network'
|
||||||
|
option VoIPProfile 'voice.Network@.VoIPProfile'
|
||||||
|
option CfAccount 'voice.Line@.CallingFeatures'
|
||||||
|
option CfPhone 'voice.Extension@.CallingFeatures'
|
||||||
|
option CodecList 'voice.Network@.CodecList'
|
||||||
|
option Codec 'voice.Codec@.Codec'
|
||||||
|
option OutgoingMapEnabled 'voice.OutgoingMap@.Enable'
|
||||||
|
option From_Phone 'voice.OutgoingMap@.Extension'
|
||||||
|
option Extension 'voice.Extension@.Provider'
|
||||||
|
option To_Account 'voice.OutgoingMap@.Line'
|
||||||
|
option Line 'voice.Line@.Provider'
|
||||||
|
option LineEnable 'voice.Line@.Enable'
|
||||||
|
option LineProvider 'voice.Line@.Provider'
|
||||||
|
option IncomingMapEnabled 'voice.IncomingMap@.Enable'
|
||||||
|
option From_Account 'voice.IncomingMap@.Line'
|
||||||
|
option To_Phone 'voice.IncomingMap@.Extension'
|
||||||
|
option ExtensionEnable 'voice.Extension@.Enable'
|
||||||
|
option ExtensionProvider 'voice.Extension@.Provider'
|
||||||
|
|
||||||
|
# Registration for account A-Z is associate with SIP.Clienti.Enable
|
||||||
|
# All parameters in this table are written to internal configuration
|
||||||
|
config account 'map_account'
|
||||||
|
option Registration 'voice.Client@.Enable'
|
||||||
|
option Display_Name ''
|
||||||
|
option PhoneNumber 'voice.Client@.RegisiterURI'
|
||||||
|
option Username 'voice.Client@.AuthUserName'
|
||||||
|
option Password 'voice.Client@.AuthPassword'
|
||||||
|
option SIP_Telephone_Syntax 'voice.Client@.E164Format'
|
||||||
|
option Device_Description 'voice.Client@.UserAgent'
|
||||||
|
|
||||||
|
# Network stuff associated with an account.
|
||||||
|
# All parameters in this table are written to internal configuration
|
||||||
|
config network 'map_net'
|
||||||
|
option Enable 'voice.Network@.Enable'
|
||||||
|
option Registration_Server 'voice.Network@.RegistrarServer'
|
||||||
|
option Outbound_Proxy 'voice.Network@.ProxyServer'
|
||||||
|
option SIP_Port 'voice.Network@.RegistrarServerPort'
|
||||||
|
option SIP_Transport 'voice.Network@.RegistrarServerTransport'
|
||||||
|
option RegistrationPeriod 'voice.Network@.RegistrationPeriod'
|
||||||
|
option Registration_Interval 'voice.Network@.RegisterExpires'
|
||||||
|
option Reg_Failure_Interval 'voice.Network@.TimerRegistrationFailed'
|
||||||
|
option T1 'voice.Network@.TimerT1'
|
||||||
|
option UserAgentDomain 'voice.Network@.UserAgentDomain'
|
||||||
|
|
||||||
|
config VoIPProfile 'map_voip'
|
||||||
|
option Enable 'voice.VoIPProfile@.Enable'
|
||||||
|
option DTMF_Method 'voice.VoIPProfile@.DTMFMethod'
|
||||||
|
option RTP 'voice.VoIPProfile@.RTP'
|
||||||
|
|
||||||
|
config RTP 'map_rtp'
|
||||||
|
option RTP_Port_Base 'voice.@RTP@.LocalPortMin'
|
||||||
|
option RTP_Port_End 'voice.@RTP@.LocalPortMax'
|
||||||
|
|
||||||
|
config codecs 'map_codec'
|
||||||
|
option Codec 'voice.CodecProfile@.Codec'
|
||||||
|
option enable 'voice.CodecProfile@.Enable'
|
||||||
|
option ptime 'voice.CodecProfile@.PacketizationPeriod'
|
||||||
|
option dtx 'voice.CodecProfile@.SilenceSupression'
|
||||||
|
|
||||||
|
config extensioninfo 'map_ext'
|
||||||
|
option Enable 'voice.Extension@.Enable'
|
||||||
|
option Internal_Number_Phone 'voice.Extension@.ExtensionNumber'
|
||||||
|
option Display_Name_Phone 'voice.Extension@.Name'
|
||||||
|
|
||||||
|
config capabilities 'map_capa'
|
||||||
|
option Call_Waiting_Enable 'voice.Capabilities@FacilityActions'
|
||||||
|
option Enable_Call_Diversion 'voice.Capabilities@FacilityActions'
|
||||||
|
|
||||||
|
config cs_account 'map_set'
|
||||||
|
option BusyCallWait 'voice.Set@.CallWaitingEnable'
|
||||||
|
option AlwaysDivert 'voice.Set@.CallForwardUnconditionalEnable'
|
||||||
|
option CFU_Number 'voice.Set@.CallForwardUnconditionalNumber'
|
||||||
|
option BusyDivert 'voice.Set@.CallForwardOnBusyEnable'
|
||||||
|
option CFB_Number 'voice.Set@.CallForwardOnBusyNumber'
|
||||||
|
option NoAnswDivert 'voice.Set@.CallForwardOnNoAnswerEnable'
|
||||||
|
option CFNR_Number 'voice.Set@.CallForwardOnNoAnswerNumber'
|
||||||
|
option CFNR_Timeout 'voice.Set@.CallForwardOnNoAnswerRingTimeout'
|
||||||
|
option Enable_Call_Transfer 'voice.Set@.CallTransferEnable'
|
||||||
|
option AnonymousReject 'voice.Set@.AnonymousCallRejectionEnable'
|
||||||
|
option AllowAnonymousConf 'voice.Set@.AnonymousCallEnable'
|
||||||
|
|
||||||
|
config cs_xvendor 'map_np_cs'
|
||||||
|
option np_sc_actCW 'voice.X_IOPSYS_EU_NpSc@.CW_ACT'
|
||||||
|
option np_sc_actCW_output 'voice.X_IOPSYS_EU_NpSc@.CW_OUT'
|
||||||
|
option np_sc_deactCW 'voice.X_IOPSYS_EU_NpSc@.CW_DEACT'
|
||||||
|
option np_sc_isactCW 'voice.X_IOPSYS_EU_NpSc@.CW_ISACT'
|
||||||
|
option np_sc_actCFU 'voice.X_IOPSYS_EU_NpSc@.CFU_ACT'
|
||||||
|
option np_sc_actCFU_output 'voice.X_IOPSYS_EU_NpSc@.CFU_OUT'
|
||||||
|
option np_sc_deactCFU 'voice.X_IOPSYS_EU_NpSc@.CFU_DEACT'
|
||||||
|
option np_sc_actCFB 'voice.X_IOPSYS_EU_NpSc@.CFB_ACT'
|
||||||
|
option np_sc_actCFB_output 'voice.X_IOPSYS_EU_NpSc@.CFB_OUT'
|
||||||
|
option np_sc_deactCFB 'voice.X_IOPSYS_EU_NpSc@.CFB_DEACT'
|
||||||
|
option np_sc_actCFNR 'voice.X_IOPSYS_EU_NpSc@.CFNR_ACT'
|
||||||
|
option np_sc_actCFNR_output 'voice.X_IOPSYS_EU_NpSc@.CFNR_OUT'
|
||||||
|
option np_sc_deactCFNR 'voice.X_IOPSYS_EU_NpSc@.CFNR_DEACT'
|
||||||
|
option np_sc_actRA 'voice.X_IOPSYS_EU_NpSc@.RA_ACT'
|
||||||
|
option np_sc_deactRA 'voice.X_IOPSYS_EU_NpSc@.RA_DEACT'
|
||||||
|
option np_sc_actAC 'voice.X_IOPSYS_EU_NpSc@.AC_ACT'
|
||||||
|
option np_sc_deactAC 'voice.X_IOPSYS_EU_NpSc@.AC_DEACT'
|
||||||
|
option np_sc_actAA 'voice.X_IOPSYS_EU_NpSc@.AA_ACT'
|
||||||
|
option np_sc_deactAA 'voice.X_IOPSYS_EU_NpSc@.AA_DEACT'
|
||||||
|
option np_sc_actAD 'voice.X_IOPSYS_EU_NpSc@.AD_ACT'
|
||||||
|
option np_sc_actAD_output 'voice.X_IOPSYS_EU_NpSc@.AD_OUT'
|
||||||
|
option np_sc_deactAD 'voice.X_IOPSYS_EU_NpSc@.AD_DEACT'
|
||||||
|
option np_sc_actMWSplash 'voice.X_IOPSYS_EU_NpSc@.MWI_SPLASH_ACT'
|
||||||
|
option np_sc_deactMWSplash 'voice.X_IOPSYS_EU_NpSc@.MWI_SPLASH_DEACT'
|
||||||
|
option np_sc_actMWTone 'voice.X_IOPSYS_EU_NpSc@.MWI_TONE_ACT'
|
||||||
|
option np_sc_deactMWTone 'voice.X_IOPSYS_EU_NpSc@.MWI_TONE_DEACT'
|
||||||
|
option np_sc_redial 'voice.X_IOPSYS_EU_NpSc@.REDIAL'
|
||||||
|
option np_sc_setMiscConf 'voice.X_IOPSYS_EU_NpSc@.SET_MISC'
|
||||||
|
|
||||||
|
config cc_xvendor 'map_np_in'
|
||||||
|
option np_in_limitExp 'voice.X_IOPSYS_EU_InternalNumber@.RegExp'
|
||||||
|
|
||||||
|
config cc_xvendor 'map_np_sh'
|
||||||
|
option sh_no_str 'voice.X_IOPSYS_EU_ShortNumber@.RegExp'
|
||||||
|
|
||||||
|
config cc_xvendor 'map_np_eme'
|
||||||
|
option np_eme 'voice.X_IOPSYS_EU_EmergencyNumber@.RegExp'
|
||||||
|
option np_eme_out 'voice.X_IOPSYS_EU_EmergencyNumber@.OutStr'
|
||||||
|
|
||||||
|
config cc_xvendor 'map_np_rn'
|
||||||
|
option np_rn 'voice.X_IOPSYS_EU_RegularNumber@.RegExp'
|
||||||
|
option np_rn_out 'voice.X_IOPSYS_EU_RegularNumber@.OutStr'
|
||||||
|
option np_rn_account 'voice.X_IOPSYS_EU_RegularNumber@.AccStr'
|
||||||
|
|
||||||
|
config cc_xvendor 'map_np_bn'
|
||||||
|
option np_bn 'voice.X_IOPSYS_EU_BarredNumber@.RegExp'
|
||||||
|
option np_bn_out 'voice.X_IOPSYS_EU_BarredNumber@.OutStr'
|
||||||
|
|
||||||
|
config TR104NumberingPlan 'map_np_tr'
|
||||||
|
option min_digits 'voice.NumberingPlan@.MinimumNumberOfDigits'
|
||||||
|
option max_digits 'voice.NumberingPlan@.MaximumNumberOfDigits'
|
||||||
|
option tmo_std 'voice.NumberingPlan@.InterDigitTimerStd'
|
||||||
|
option tmo_open 'voice.NumberingPlan@.InterDigitTimerOpen'
|
||||||
|
option term_digit 'voice.NumberingPlan@.TerminationDigit'
|
||||||
|
option prefix_list 'voice.NumberingPlan@.PrefixList'
|
||||||
|
|
||||||
|
config TR104NumberingPlanPrefix 'map_np_pf'
|
||||||
|
option enable 'voice.@PrefixInfo@.Enable'
|
||||||
|
option range 'voice.@PrefixInfo@.PrefixRange'
|
||||||
|
option prefix_min_digits 'voice.@PrefixInfo@.PrefixMinNumberOfDigits'
|
||||||
|
option prefix_max_digits 'voice.@PrefixInfo@.PrefixMaxNumberOfDigits'
|
||||||
|
option remove_digits 'voice.@PrefixInfo@.NumberOfDigitsToRemove'
|
||||||
|
option remove_pos 'voice.@PrefixInfo@.NumberOfDigitsToRemove'
|
||||||
|
option facility_act 'voice.@PrefixInfo@.FacilityAction'
|
||||||
|
option facility_arg 'voice.@PrefixInfo@.FacilityActionArgument'
|
||||||
|
|
||||||
|
|
||||||
56
evoice/files/etc/evoice/voicero
Normal file
56
evoice/files/etc/evoice/voicero
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
config static_prm 'defaults'
|
||||||
|
option Print_Control '4'
|
||||||
|
option Print_UDP_Addr '192.168.1.3'
|
||||||
|
option Print_UDP_Port '60000'
|
||||||
|
option Verbosity 'Off'
|
||||||
|
option Failure_Log 'On'
|
||||||
|
option Message_Log 'Off'
|
||||||
|
option Method_Trace 'Off'
|
||||||
|
option Dial_Cache_Size '0'
|
||||||
|
option Reverse_Fax_Detection '0'
|
||||||
|
option DSP_24 '0'
|
||||||
|
option DSP_36 '0'
|
||||||
|
option DSP_43 '0'
|
||||||
|
option Swap_Name_Nr_CID '0'
|
||||||
|
option R_Button_Lower_Lim '100'
|
||||||
|
option R_Button_Upper_Lim '800'
|
||||||
|
option HookOn_Delay '0'
|
||||||
|
option SupportLDD '0'
|
||||||
|
option LDD_Min_Break_Time '41'
|
||||||
|
option LDD_Max_Break_Time '94'
|
||||||
|
option LDD_Percent_Break '55'
|
||||||
|
option Tone_On_Hangup '1'
|
||||||
|
option BusyTone_On_Hangup '1'
|
||||||
|
option Enable_Analouge_Conf '0'
|
||||||
|
option SIP_SessTmrEnable '0'
|
||||||
|
option PrackUsage '1'
|
||||||
|
option SIP_SupportedPath '0'
|
||||||
|
option IMS_Access_Network_Info ' '
|
||||||
|
option SIP_Reason_Protocol '0'
|
||||||
|
option SIP_Body_QOST '0'
|
||||||
|
option SIP_HistoryInfo '0'
|
||||||
|
option Customer_Spec2 '1'
|
||||||
|
option UTF8_Enable '0'
|
||||||
|
option RFC3325 '0'
|
||||||
|
option Accept_From_Registered '0'
|
||||||
|
option Polarity_Reversal '0'
|
||||||
|
option Closed_Dial_Plan '0'
|
||||||
|
option Netw_Dial '0'
|
||||||
|
option No_Answer_Tmo '180'
|
||||||
|
option UPnP_Enabled '0'
|
||||||
|
option NAT_Address ' '
|
||||||
|
option NAT_Address_From_SIP '0'
|
||||||
|
option HookOn_Transfer '0'
|
||||||
|
option Enable_Call_Transfer '1'
|
||||||
|
option Multiparty_Transp '0'
|
||||||
|
option Presence_Indication '0'
|
||||||
|
option Login_Note ' '
|
||||||
|
option Login_Description ' '
|
||||||
|
option Logout_Note ' '
|
||||||
|
option Logout_Description ' '
|
||||||
|
option Resolve_Every_Transaction '2'
|
||||||
|
option Translate_Plus '1'
|
||||||
|
option Mid_Call_Services '0'
|
||||||
|
option Account_Restriction '0'
|
||||||
|
option Answering_Machine_Enable '0'
|
||||||
|
|
||||||
22
evoice/files/etc/init.d/evoice
Executable file
22
evoice/files/etc/init.d/evoice
Executable file
@@ -0,0 +1,22 @@
|
|||||||
|
#!/bin/sh /etc/rc.common
|
||||||
|
|
||||||
|
START=68
|
||||||
|
STOP=12
|
||||||
|
|
||||||
|
USE_PROCD=1
|
||||||
|
NAME=evoice
|
||||||
|
|
||||||
|
start_service() {
|
||||||
|
[ "$(db -q get hw.board.hasVoice)" = "1" ] || return
|
||||||
|
|
||||||
|
procd_open_instance
|
||||||
|
procd_set_param command $NAME
|
||||||
|
procd_set_param respawn "5" "0" "3"
|
||||||
|
procd_close_instance
|
||||||
|
}
|
||||||
|
|
||||||
|
reload_service() {
|
||||||
|
stop
|
||||||
|
start
|
||||||
|
}
|
||||||
|
|
||||||
@@ -12,7 +12,7 @@ PKG_VERSION:=1.0
|
|||||||
|
|
||||||
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/fdtextract.git
|
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/fdtextract.git
|
||||||
PKG_SOURCE_PROTO:=git
|
PKG_SOURCE_PROTO:=git
|
||||||
PKG_SOURCE_VERSION:=e3cefda3b26c9aea3021b20725ce7b31b33eebc4
|
PKG_SOURCE_VERSION:=0ebaf1e7d1f09318ae75d0f475a25280742b790e
|
||||||
PKG_MIRROR_HASH:=skip
|
PKG_MIRROR_HASH:=skip
|
||||||
|
|
||||||
PKG_LICENSE:=GPLv2
|
PKG_LICENSE:=GPLv2
|
||||||
|
|||||||
@@ -1,42 +0,0 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
|
|
||||||
include $(TOPDIR)/rules.mk
|
|
||||||
|
|
||||||
PKG_NAME:=fscryptctl
|
|
||||||
PKG_VERSION:=1.1.0
|
|
||||||
PKG_RELEASE:=1
|
|
||||||
|
|
||||||
PKG_SOURCE_PROTO:=git
|
|
||||||
PKG_SOURCE_URL:=https://github.com/google/fscryptctl.git
|
|
||||||
PKG_SOURCE_VERSION:=v$(PKG_VERSION)
|
|
||||||
|
|
||||||
PKG_LICENSE:=Apache-2.0
|
|
||||||
PKG_LICENSE_FILES:=LICENSE
|
|
||||||
|
|
||||||
include $(INCLUDE_DIR)/package.mk
|
|
||||||
|
|
||||||
define Package/$(PKG_NAME)
|
|
||||||
SECTION:=utils
|
|
||||||
CATEGORY:=Utilities
|
|
||||||
SUBMENU:=Encryption
|
|
||||||
TITLE:=Fscryptctl
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Package/$(PKG_NAME)/description
|
|
||||||
fscryptctl is a low-level tool written in C that handles raw keys and manages policies for Linux filesystem encryption,
|
|
||||||
specifically the "fscrypt" kernel interface which is supported by the ext4, f2fs, and UBIFS filesystems
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/Compile
|
|
||||||
$(MAKE) -C $(PKG_BUILD_DIR) \
|
|
||||||
CC="$(TARGET_CC)" \
|
|
||||||
LDFLAGS="$(TARGET_LDFLAGS)" \
|
|
||||||
fscryptctl
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Package/$(PKG_NAME)/install
|
|
||||||
$(INSTALL_DIR) $(1)/usr/bin
|
|
||||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/fscryptctl $(1)/usr/bin/fscryptctl
|
|
||||||
endef
|
|
||||||
|
|
||||||
$(eval $(call BuildPackage,$(PKG_NAME)))
|
|
||||||
@@ -28,7 +28,7 @@ define KernelPackage/$(PKG_NAME)
|
|||||||
FILES:=$(PKG_BUILD_DIR)/$(PKG_NAME).$(LINUX_KMOD_SUFFIX)
|
FILES:=$(PKG_BUILD_DIR)/$(PKG_NAME).$(LINUX_KMOD_SUFFIX)
|
||||||
KCONFIG:=CONFIG_PACKAGE_kmod-gryphon-led-kernel-module=y
|
KCONFIG:=CONFIG_PACKAGE_kmod-gryphon-led-kernel-module=y
|
||||||
AUTOLOAD:=$(call AutoLoad,60,$(PKG_NAME))
|
AUTOLOAD:=$(call AutoLoad,60,$(PKG_NAME))
|
||||||
DEPENDS:= +(TARGET_brcmbca):bcmkernel
|
DEPENDS:= +(TARGET_iopsys_brcm63xx_arm):bcmkernel
|
||||||
PKG_LICENSE:=GPLv2
|
PKG_LICENSE:=GPLv2
|
||||||
PKG_LICENSE_URL:=
|
PKG_LICENSE_URL:=
|
||||||
endef
|
endef
|
||||||
@@ -41,8 +41,20 @@ EXTRA_KCONFIG:= CONFIG_RGB_LED=m
|
|||||||
|
|
||||||
MODULE_INCLUDE=-I$(PKG_BUILD_DIR)
|
MODULE_INCLUDE=-I$(PKG_BUILD_DIR)
|
||||||
|
|
||||||
# support compilation against BCM SDK kernel
|
|
||||||
include ../../broadcom/bcmkernel/bcm-kernel-toolchain.mk
|
ifeq ($(CONFIG_TARGET_iopsys_brcm63xx_arm),y)
|
||||||
|
LINUX_DIR:=$(BUILD_DIR)/bcmkernel/bcm963xx/kernel/linux-4.19
|
||||||
|
MODULES_SUBDIR:=lib/modules/4.19.183
|
||||||
|
TARGET_CROSS:=$(CONFIG_BRCM_ALT_TOOLCHAIN_BASE)/$(CONFIG_BRCM_ALT_ARM_TOOLCHAIN_TOPDIR)/bin/$(CONFIG_BRCM_ALT_ARM_TOOLCHAIN_PREFIX)-
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_BCM_CHIP_ID),$(filter $(CONFIG_BCM_CHIP_ID),"63158" "6856" "6858"))
|
||||||
|
# These targets use a 64-bit kernel
|
||||||
|
LINUX_KARCH:=arm64
|
||||||
|
TARGET_CROSS:=$(CONFIG_BRCM_ALT_TOOLCHAIN_BASE)/$(CONFIG_BRCM_ALT_AARCH64_TOOLCHAIN_TOPDIR)/bin/$(CONFIG_BRCM_ALT_AARCH64_TOOLCHAIN_PREFIX)-
|
||||||
|
endif
|
||||||
|
# For some reason, Broadcom's kernel does not set the include paths correctly when compiling out-of-tree modules
|
||||||
|
EXTRA_KCPPFLAGS:="-I $(LINUX_DIR)/../bcmkernel/include -I $(LINUX_DIR)/arch/arm/mach-bcm963xx/include"
|
||||||
|
endif
|
||||||
|
|
||||||
define Build/Prepare
|
define Build/Prepare
|
||||||
mkdir -p $(PKG_BUILD_DIR)/kdevlinks/
|
mkdir -p $(PKG_BUILD_DIR)/kdevlinks/
|
||||||
|
|||||||
@@ -220,6 +220,7 @@ static int canyon_led_probe(struct platform_device *pdev)
|
|||||||
if (IS_ERR(leds->clock_gpio)) {
|
if (IS_ERR(leds->clock_gpio)) {
|
||||||
dev_err(&pdev->dev, "Failed to acquire clock GPIO %ld\n",
|
dev_err(&pdev->dev, "Failed to acquire clock GPIO %ld\n",
|
||||||
PTR_ERR(leds->clock_gpio));
|
PTR_ERR(leds->clock_gpio));
|
||||||
|
leds->clock_gpio = NULL;
|
||||||
return PTR_ERR(leds->clock_gpio);
|
return PTR_ERR(leds->clock_gpio);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -227,6 +228,7 @@ static int canyon_led_probe(struct platform_device *pdev)
|
|||||||
if (IS_ERR(leds->clock_gpio)) {
|
if (IS_ERR(leds->clock_gpio)) {
|
||||||
dev_err(&pdev->dev, "Failed to acquire clock GPIO %ld\n",
|
dev_err(&pdev->dev, "Failed to acquire clock GPIO %ld\n",
|
||||||
PTR_ERR(leds->clock_gpio));
|
PTR_ERR(leds->clock_gpio));
|
||||||
|
leds->clock_gpio = NULL;
|
||||||
return PTR_ERR(leds->clock_gpio);
|
return PTR_ERR(leds->clock_gpio);
|
||||||
} else {
|
} else {
|
||||||
printk(KERN_INFO "Got clock gpio\n");
|
printk(KERN_INFO "Got clock gpio\n");
|
||||||
@@ -244,6 +246,7 @@ static int canyon_led_probe(struct platform_device *pdev)
|
|||||||
if (IS_ERR(leds->data_gpio)) {
|
if (IS_ERR(leds->data_gpio)) {
|
||||||
dev_err(&pdev->dev, "Failed to acquire data GPIO %ld\n",
|
dev_err(&pdev->dev, "Failed to acquire data GPIO %ld\n",
|
||||||
PTR_ERR(leds->data_gpio));
|
PTR_ERR(leds->data_gpio));
|
||||||
|
leds->data_gpio = NULL;
|
||||||
return PTR_ERR(leds->data_gpio);
|
return PTR_ERR(leds->data_gpio);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -251,6 +254,7 @@ static int canyon_led_probe(struct platform_device *pdev)
|
|||||||
if (IS_ERR(leds->data_gpio)) {
|
if (IS_ERR(leds->data_gpio)) {
|
||||||
dev_err(&pdev->dev, "Failed to acquire data GPIO %ld\n",
|
dev_err(&pdev->dev, "Failed to acquire data GPIO %ld\n",
|
||||||
PTR_ERR(leds->data_gpio));
|
PTR_ERR(leds->data_gpio));
|
||||||
|
leds->data_gpio = NULL;
|
||||||
return PTR_ERR(leds->data_gpio);
|
return PTR_ERR(leds->data_gpio);
|
||||||
} else {
|
} else {
|
||||||
printk(KERN_INFO "Got data gpio\n");
|
printk(KERN_INFO "Got data gpio\n");
|
||||||
|
|||||||
@@ -1,15 +0,0 @@
|
|||||||
if (PACKAGE_hostmngr)
|
|
||||||
|
|
||||||
menu "Configuration"
|
|
||||||
|
|
||||||
config HOSTMNGR_HOSTS_HISTORY
|
|
||||||
bool "Keep history of hosts"
|
|
||||||
default y
|
|
||||||
|
|
||||||
config HOSTMNGR_PLATFORM_HAS_WIFI
|
|
||||||
bool "Platform has WiFi"
|
|
||||||
default y if PACKAGE_libwifi
|
|
||||||
|
|
||||||
endmenu
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,76 +0,0 @@
|
|||||||
#
|
|
||||||
# Copyright (C) 2020-2023 IOPSYS Software Solutions AB
|
|
||||||
#
|
|
||||||
|
|
||||||
include $(TOPDIR)/rules.mk
|
|
||||||
|
|
||||||
PKG_NAME:=hostmngr
|
|
||||||
PKG_VERSION:=1.1.6
|
|
||||||
|
|
||||||
LOCAL_DEV=0
|
|
||||||
ifneq ($(LOCAL_DEV),1)
|
|
||||||
PKG_SOURCE_PROTO:=git
|
|
||||||
PKG_SOURCE_VERSION:=2563c39a0296ee41d4fc471f8c5574c3410642f2
|
|
||||||
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/hostmngr.git
|
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)_$(PKG_SOURCE_VERSION).tar.xz
|
|
||||||
PKG_MIRROR_HASH:=skip
|
|
||||||
endif
|
|
||||||
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
|
|
||||||
|
|
||||||
PKG_MAINTAINER:=Anjan Chanda <anjan.chanda@iopsys.eu>
|
|
||||||
PKG_LICENSE:=BSD-3-Clause
|
|
||||||
PKG_LICENSE_FILES:=LICENSE
|
|
||||||
|
|
||||||
include $(INCLUDE_DIR)/package.mk
|
|
||||||
|
|
||||||
|
|
||||||
define Package/hostmngr
|
|
||||||
SECTION:=utils
|
|
||||||
CATEGORY:=Utilities
|
|
||||||
TITLE:=Show and manage hosts in the network
|
|
||||||
DEPENDS= +libubox +libuci +libubus +ubus +libeasy +libnl-genl \
|
|
||||||
+libjson-c +libblobmsg-json +libnfnetlink +libmnl \
|
|
||||||
+libnetfilter-conntrack \
|
|
||||||
+HOSTMNGR_PLATFORM_HAS_WIFI:libwifi +libbbfdm-api
|
|
||||||
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Package/hostmngr/config
|
|
||||||
source "$(SOURCE)/Config.in"
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Package/hostmngr/description
|
|
||||||
This package provides hostmngr that can detect and show host devices
|
|
||||||
present in the network.
|
|
||||||
endef
|
|
||||||
|
|
||||||
TARGET_CFLAGS += \
|
|
||||||
-I$(STAGING_DIR)/usr/include \
|
|
||||||
-I$(STAGING_DIR)/usr/include/libnl3 \
|
|
||||||
-I$(STAGING_DIR)/usr/include/libnetfilter_conntrack \
|
|
||||||
-D_GNU_SOURCE
|
|
||||||
|
|
||||||
ifeq ($(CONFIG_HOSTMNGR_PLATFORM_HAS_WIFI),y)
|
|
||||||
TARGET_CFLAGS += -DHAS_WIFI
|
|
||||||
endif
|
|
||||||
|
|
||||||
MAKE_PATH:=src
|
|
||||||
|
|
||||||
define Package/hostmngr/install
|
|
||||||
$(CP) ./files/* $(1)/
|
|
||||||
$(INSTALL_DIR) $(1)/usr/sbin
|
|
||||||
$(INSTALL_DIR) $(1)/etc/hostmngr/
|
|
||||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/src/hostmngr $(1)/usr/sbin/
|
|
||||||
$(INSTALL_DATA) $(PKG_BUILD_DIR)/src/bbf_plugin/libhostmngr.so $(1)/etc/hostmngr/
|
|
||||||
$(INSTALL_DATA) ./files/etc/hostmngr/input.json $(1)/etc/hostmngr/
|
|
||||||
$(INSTALL_DIR) $(1)/usr/share/hostmngr
|
|
||||||
$(INSTALL_DATA) ./files/scripts/hosts_acl.sh $(1)/usr/share/hostmngr/
|
|
||||||
endef
|
|
||||||
|
|
||||||
ifeq ($(LOCAL_DEV),1)
|
|
||||||
define Build/Prepare
|
|
||||||
rsync -r --exclude=.* ~/git/hostmngr/ $(PKG_BUILD_DIR)/
|
|
||||||
endef
|
|
||||||
endif
|
|
||||||
|
|
||||||
$(eval $(call BuildPackage,hostmngr))
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
|
|
||||||
config global 'global'
|
|
||||||
option enabled '1'
|
|
||||||
option history '1'
|
|
||||||
option history_file '/etc/hosts_history.json'
|
|
||||||
option history_timeout '86400'
|
|
||||||
|
|
||||||
config interface
|
|
||||||
list ifname 'br-lan'
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
sh /usr/share/hostmngr/hosts_acl.sh
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
{
|
|
||||||
"daemon": {
|
|
||||||
"input": {
|
|
||||||
"type": "DotSo",
|
|
||||||
"name": "/etc/hostmngr/libhostmngr.so"
|
|
||||||
},
|
|
||||||
"output": {
|
|
||||||
"type": "UBUS",
|
|
||||||
"name": "bbfdm.hosts",
|
|
||||||
"parent_dm": "Device.",
|
|
||||||
"object": "Hosts",
|
|
||||||
"root_obj": "bbfdm"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
#!/bin/sh /etc/rc.common
|
|
||||||
|
|
||||||
START=65
|
|
||||||
STOP=20
|
|
||||||
|
|
||||||
. /etc/bbfdm/bbfdm_services.sh
|
|
||||||
|
|
||||||
USE_PROCD=1
|
|
||||||
|
|
||||||
HOSTS_JSON_INPUT="/etc/hostmngr/input.json"
|
|
||||||
|
|
||||||
start_service() {
|
|
||||||
procd_open_instance
|
|
||||||
procd_set_param command "/usr/sbin/hostmngr" "--config hosts" "-o" "/tmp/hostmngr.log" "-f"
|
|
||||||
# procd_set_param respawn
|
|
||||||
procd_set_param limits core="unlimited"
|
|
||||||
# procd_set_param stdout 1
|
|
||||||
# procd_set_param stderr 1
|
|
||||||
procd_close_instance
|
|
||||||
|
|
||||||
bbfdm_add_service "bbfdm.hosts" "${HOSTS_JSON_INPUT}"
|
|
||||||
sh /usr/share/hostmngr/hosts_acl.sh
|
|
||||||
}
|
|
||||||
|
|
||||||
service_triggers()
|
|
||||||
{
|
|
||||||
procd_add_reload_trigger "hosts"
|
|
||||||
}
|
|
||||||
|
|
||||||
reload_service() {
|
|
||||||
stop
|
|
||||||
start
|
|
||||||
}
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
if [ -f /etc/firewall.hosts ]; then
|
|
||||||
uci -q get firewall.hosts || {
|
|
||||||
uci -q set firewall.hosts=include
|
|
||||||
uci -q set firewall.hosts.path="/etc/firewall.hosts"
|
|
||||||
uci -q set firewall.hosts.reload=1
|
|
||||||
}
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
exit 0
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
uci -q get hosts.global.ageing_timer || exit 0
|
|
||||||
|
|
||||||
|
|
||||||
# Old hosts UCI config is detected; Convert to new format
|
|
||||||
|
|
||||||
ageing_timer="$(uci -q get hosts.global.ageing_timer)"
|
|
||||||
history_timeout=$((ageing_timer*60))
|
|
||||||
|
|
||||||
uci -q set hosts.global.enabled=1
|
|
||||||
uci -q delete hosts.global.ageing_timer
|
|
||||||
uci -q set hosts.global.history_timeout="$history_timeout"
|
|
||||||
uci -q rename hosts.global.reboot_persistent=history
|
|
||||||
uci -q set hosts.global.history_file="/etc/hosts_history.json"
|
|
||||||
|
|
||||||
uci -q add hosts interface
|
|
||||||
for ifname in $(uci -q get hosts.global.ifname); do
|
|
||||||
uci -q add_list hosts.@interface[-1].ifname="$ifname"
|
|
||||||
done
|
|
||||||
|
|
||||||
uci -q delete hosts.global.ifname
|
|
||||||
exit 0
|
|
||||||
@@ -1,233 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
. /lib/functions.sh
|
|
||||||
|
|
||||||
day=""
|
|
||||||
next_days=""
|
|
||||||
prev_days=""
|
|
||||||
IP_RULE=""
|
|
||||||
IP_RULE1=""
|
|
||||||
|
|
||||||
get_next_day() {
|
|
||||||
local weekday="$1"
|
|
||||||
case "$weekday" in
|
|
||||||
"Mon"|"Monday") echo "Tuesday"
|
|
||||||
;;
|
|
||||||
"Tue"|"Tuesday") echo "Wednesday"
|
|
||||||
;;
|
|
||||||
"Wed"|"Wednesday") echo "Thursday"
|
|
||||||
;;
|
|
||||||
"Thu"|"Thursday") echo "Friday"
|
|
||||||
;;
|
|
||||||
"Fri"|"Friday") echo "Saturday"
|
|
||||||
;;
|
|
||||||
"Sat"|"Saturday") echo "Sunday"
|
|
||||||
;;
|
|
||||||
"Sun"|"Sunday") echo "Monday"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
get_previous_day() {
|
|
||||||
local weekday="$1"
|
|
||||||
case "$weekday" in
|
|
||||||
"Mon"|"Monday") echo "Sunday"
|
|
||||||
;;
|
|
||||||
"Tue"|"Tuesday") echo "Monday"
|
|
||||||
;;
|
|
||||||
"Wed"|"Wednesday") echo "Tuesday"
|
|
||||||
;;
|
|
||||||
"Thu"|"Thursday") echo "Wednesday"
|
|
||||||
;;
|
|
||||||
"Fri"|"Friday") echo "Thursday"
|
|
||||||
;;
|
|
||||||
"Sat"|"Saturday") echo "Friday"
|
|
||||||
;;
|
|
||||||
"Sun"|"Sunday") echo "Saturday"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
ip_rule_west_zone() {
|
|
||||||
local utc_start_t_h="$1"
|
|
||||||
local utc_stop_t_h="$2"
|
|
||||||
local local_start_t_h="$3"
|
|
||||||
local local_stop_t_h="$4"
|
|
||||||
local utc_start_time="$5"
|
|
||||||
local utc_stop_time="$6"
|
|
||||||
|
|
||||||
if [ "$utc_start_t_h" -lt "$local_start_t_h" ]; then
|
|
||||||
IP_RULE="$IP_RULE -m time --timestart $utc_start_time --timestop $utc_stop_time"
|
|
||||||
if [ -n "$next_days" ]; then
|
|
||||||
IP_RULE="$IP_RULE --weekdays $next_days"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
if [ "$utc_stop_t_h" -lt "$local_stop_t_h" ]; then
|
|
||||||
IP_RULE1="$IP_RULE"
|
|
||||||
IP_RULE="$IP_RULE -m time --timestart $utc_start_time --timestop 23:59"
|
|
||||||
IP_RULE1="$IP_RULE1 -m time --timestart 00:00 --timestop $utc_stop_time"
|
|
||||||
if [ -n "$next_days" ]; then
|
|
||||||
IP_RULE1="$IP_RULE1 --weekdays $next_days"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
IP_RULE="$IP_RULE -m time --timestart $utc_start_time --timestop $utc_stop_time"
|
|
||||||
fi
|
|
||||||
if [ -n "$day" ]; then
|
|
||||||
IP_RULE="$IP_RULE --weekdays $day"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
ip_rule_east_zone() {
|
|
||||||
local utc_start_t_h="$1"
|
|
||||||
local utc_stop_t_h="$2"
|
|
||||||
local local_start_t_h="$3"
|
|
||||||
local local_stop_t_h="$4"
|
|
||||||
local utc_start_time="$5"
|
|
||||||
local utc_stop_time="$6"
|
|
||||||
|
|
||||||
if [ "$utc_start_t_h" -lt "$local_start_t_h" ]; then
|
|
||||||
IP_RULE="$IP_RULE -m time --timestart $utc_start_time --timestop $utc_stop_time"
|
|
||||||
if [ -n "$day" ]; then
|
|
||||||
IP_RULE="$IP_RULE --weekdays $day"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
if [ "$utc_stop_t_h" -lt "$local_stop_t_h" ]; then
|
|
||||||
IP_RULE1="$IP_RULE"
|
|
||||||
IP_RULE="$IP_RULE -m time --timestart 00:00 --timestop $utc_stop_time"
|
|
||||||
IP_RULE1="$IP_RULE1 -m time --timestart $utc_start_time --timestop 23:59"
|
|
||||||
if [ -n "$prev_days" ]; then
|
|
||||||
IP_RULE1="$IP_RULE1 --weekdays $prev_days"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
IP_RULE="$IP_RULE -m time --timestart $utc_start_time --timestop $utc_stop_time"
|
|
||||||
fi
|
|
||||||
if [ -n "$day" ]; then
|
|
||||||
IP_RULE="$IP_RULE --weekdays $day"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
process_ac_schedule() {
|
|
||||||
local acs_id="$1"
|
|
||||||
local is_enabled
|
|
||||||
local access_control
|
|
||||||
local start_time=""
|
|
||||||
local mac=""
|
|
||||||
|
|
||||||
|
|
||||||
handle_day_list() {
|
|
||||||
local value=$1
|
|
||||||
|
|
||||||
val=$(echo $value | cut -c 1-3)
|
|
||||||
next_day_val=$(get_next_day $val)
|
|
||||||
prev_day_val=$(get_previous_day $val)
|
|
||||||
if [ -z $day ]; then
|
|
||||||
day="$val"
|
|
||||||
next_days="$next_day_val"
|
|
||||||
prev_days="$prev_day_val"
|
|
||||||
else
|
|
||||||
day="$day,$val"
|
|
||||||
next_days="$next_days,$next_day_val"
|
|
||||||
prev_days="$prev_days,$prev_day_val"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
config_list_foreach "$acs_id" "day" handle_day_list
|
|
||||||
config_get is_enabled "$acs_id" "enable" 1
|
|
||||||
config_get access_control "$acs_id" "dm_parent"
|
|
||||||
|
|
||||||
if [ "$is_enabled" == "0" ] || [ -z "$access_control" ]; then
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
IP_RULE=""
|
|
||||||
IP_RULE1=""
|
|
||||||
|
|
||||||
config_get is_enabled "$access_control" "enable" 1
|
|
||||||
if [ "$is_enabled" == "0" ]; then
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
mac=$(uci -q get hosts.$access_control.macaddr)
|
|
||||||
access_policy=$(uci -q get hosts.$access_control.access_policy)
|
|
||||||
|
|
||||||
config_get start_time "$acs_id" "start_time"
|
|
||||||
config_get duration "$acs_id" "duration"
|
|
||||||
|
|
||||||
if [ -z "$mac" ] && [ -z "$start_time" ] && [ -z "$duration" ] && [ -z "$day" ] && [ -z "$access_policy" ]; then
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
if [ -n "$mac" ]; then
|
|
||||||
IP_RULE="$IP_RULE -m mac --mac-source $mac"
|
|
||||||
fi
|
|
||||||
|
|
||||||
zone=$(date +%z | cut -c 1)
|
|
||||||
local_start_time=$start_time
|
|
||||||
if [ -n "$duration" ]; then
|
|
||||||
hh=$(echo $local_start_time | awk -F: '{ print $1 }')
|
|
||||||
mm=$(echo $local_start_time | awk -F: '{ print $2 }')
|
|
||||||
hh_s=`expr $hh \* 3600`
|
|
||||||
mm_s=`expr $mm \* 60`
|
|
||||||
ss=$(( hh_s + mm_s ))
|
|
||||||
local_start_hh=$hh
|
|
||||||
|
|
||||||
stop_ss=$(( ss + duration ))
|
|
||||||
hh=$(( stop_ss / 3600 ))
|
|
||||||
rem_ss=$(( stop_ss % 3600 ))
|
|
||||||
mm=$(( rem_ss / 60 ))
|
|
||||||
ss=$(( rem_ss % 60 ))
|
|
||||||
local_stop_time="$hh:$mm:$ss"
|
|
||||||
local_stop_hh=$hh
|
|
||||||
fi
|
|
||||||
|
|
||||||
utc_start_time=$(date -u -d @$(date "+%s" -d "$local_start_time") +%H:%M)
|
|
||||||
utc_stop_time=$(date -u -d @$(date "+%s" -d "$local_stop_time") +%H:%M)
|
|
||||||
utc_start_hh=$(echo $utc_start_time | awk -F: '{ print $1 }')
|
|
||||||
utc_stop_hh=$(echo $utc_stop_time | awk -F: '{ print $1 }')
|
|
||||||
if [ "$zone" == "-" ]; then
|
|
||||||
ip_rule_west_zone $utc_start_hh $utc_stop_hh $local_start_hh $local_stop_hh $utc_start_time $utc_stop_time
|
|
||||||
else
|
|
||||||
ip_rule_east_zone $utc_start_hh $utc_stop_hh $local_start_hh $local_stop_hh $utc_start_time $utc_stop_time
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$access_policy" == "Deny" ]; then
|
|
||||||
IP_RULE="$IP_RULE -j DROP"
|
|
||||||
if [ -n "$IP_RULE1" ]; then
|
|
||||||
IP_RULE1="$IP_RULE1 -j DROP"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
IP_RULE="$IP_RULE -j ACCEPT"
|
|
||||||
if [ -n "$IP_RULE1" ]; then
|
|
||||||
IP_RULE1="$IP_RULE1 -j ACCEPT"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
iptables -w -A hosts_forward ${IP_RULE}
|
|
||||||
ip6tables -w -A hosts_forward ${IP_RULE}
|
|
||||||
if [ -n "$IP_RULE1" ]; then
|
|
||||||
iptables -w -A hosts_forward ${IP_RULE1}
|
|
||||||
ip6tables -w -A hosts_forward ${IP_RULE1}
|
|
||||||
fi
|
|
||||||
|
|
||||||
day=""
|
|
||||||
next_days=""
|
|
||||||
prev_days=""
|
|
||||||
}
|
|
||||||
|
|
||||||
iptables -w -F hosts_forward
|
|
||||||
ip6tables -w -F hosts_forward
|
|
||||||
|
|
||||||
hosts_forward=$(iptables -t filter --list | grep hosts_forward)
|
|
||||||
if [ -z "$hosts_forward" ]; then
|
|
||||||
iptables -w -t filter -N hosts_forward
|
|
||||||
ret=$?
|
|
||||||
[ $ret -eq 0 ] && iptables -w -t filter -I FORWARD -j hosts_forward
|
|
||||||
ip6tables -w -t filter -N hosts_forward
|
|
||||||
ret=$?
|
|
||||||
[ $ret -eq 0 ] && ip6tables -w -t filter -I FORWARD -j hosts_forward
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Load /etc/config/hosts UCI file
|
|
||||||
config_load hosts
|
|
||||||
config_foreach process_ac_schedule ac_schedule
|
|
||||||
36
icwmp/Config_cwmp.in
Normal file
36
icwmp/Config_cwmp.in
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
if PACKAGE_icwmp
|
||||||
|
|
||||||
|
choice
|
||||||
|
prompt "Select ACS sever"
|
||||||
|
default CWMP_ACS_MULTI
|
||||||
|
|
||||||
|
config CWMP_ACS_MULTI
|
||||||
|
bool "No specific ACS, follow standard"
|
||||||
|
|
||||||
|
config CWMP_ACS_HDM
|
||||||
|
bool "HDM"
|
||||||
|
endchoice
|
||||||
|
|
||||||
|
config CWMP_DEBUG
|
||||||
|
bool "Compile with debug options"
|
||||||
|
default y
|
||||||
|
|
||||||
|
config CWMP_DEVEL_DEBUG
|
||||||
|
bool "Compile with development debug options"
|
||||||
|
default n
|
||||||
|
|
||||||
|
choice
|
||||||
|
prompt "Select SSL utility"
|
||||||
|
default CWMP_USE_WOLFSSL
|
||||||
|
|
||||||
|
config CWMP_USE_WOLFSSL
|
||||||
|
bool "Use WolfSSL for ssl utilities"
|
||||||
|
select CONFIG_PACKAGE_libwolfssl
|
||||||
|
|
||||||
|
config CWMP_USE_OPENSSL
|
||||||
|
bool "Use OpenSSL for ssl utilities"
|
||||||
|
select CONFIG_PACKAGE_libopenssl
|
||||||
|
|
||||||
|
endchoice
|
||||||
|
endif
|
||||||
|
|
||||||
146
icwmp/Makefile
146
icwmp/Makefile
@@ -1,120 +1,112 @@
|
|||||||
#
|
#
|
||||||
# Copyright (C) 2020-2023 IOPSYS Software Solutions AB
|
# Copyright (C) 2020 iopsys Software Solutions AB
|
||||||
#
|
#
|
||||||
# This is free software, licensed under the BSD-3-Clause
|
# This is free software, licensed under the GNU General Public License v2.
|
||||||
# See /LICENSE for more information.
|
# See /LICENSE for more information.
|
||||||
#
|
#
|
||||||
|
|
||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=icwmp
|
PKG_NAME:=icwmp
|
||||||
PKG_VERSION:=9.5.29.5
|
PKG_VERSION:=8.3.5
|
||||||
|
PKG_FIXUP:=autoreconf
|
||||||
LOCAL_DEV:=0
|
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/icwmp.git
|
||||||
ifneq ($(LOCAL_DEV),1)
|
|
||||||
PKG_SOURCE_PROTO:=git
|
PKG_SOURCE_PROTO:=git
|
||||||
PKG_SOURCE_URL:=https://dev.iopsys.eu/bbf/icwmp.git
|
PKG_SOURCE_VERSION:=4dd933047dcce4d297b17cafcb0ee2ad39004c15
|
||||||
PKG_SOURCE_VERSION:=fffc05ae711e94c8d0f5d5546c4dddb5fa32c87a
|
PKG_RELEASE=$(PKG_SOURCE_VERSION)
|
||||||
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
|
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
|
||||||
|
|
||||||
PKG_LICENSE:=BSD-3-Clause
|
PKG_LICENSE:=GPLv2
|
||||||
PKG_LICENSE_FILES:=LICENSE
|
PKG_LICENSE_FILES:=COPYING
|
||||||
|
|
||||||
|
PKG_CONFIG_DEPENDS:= \
|
||||||
|
CONFIG_CWMP_ACS_MULTI \
|
||||||
|
CONFIG_CWMP_ACS_HDM \
|
||||||
|
CONFIG_CWMP_DEBUG \
|
||||||
|
CONFIG_CWMP_DEVEL_DEBUG
|
||||||
|
|
||||||
|
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
|
||||||
|
|
||||||
include $(INCLUDE_DIR)/package.mk
|
include $(INCLUDE_DIR)/package.mk
|
||||||
include $(INCLUDE_DIR)/cmake.mk
|
|
||||||
include ../bbfdm/bbfdm.mk
|
|
||||||
|
|
||||||
define Package/icwmp/default
|
define Package/$(PKG_NAME)
|
||||||
SECTION:=utils
|
SECTION:=utils
|
||||||
CATEGORY:=Utilities
|
CATEGORY:=Utilities
|
||||||
SUBMENU:=TRx69
|
SUBMENU:=TRx69
|
||||||
TITLE:=TR069 CWMP client
|
TITLE:=CWMP client
|
||||||
DEPENDS:=+libuci +libubox +libblobmsg-json +libubus +libjson-c +libcurl +mxml +libuuid +libbbfdm-api
|
DEPENDS:=+libuci +libmicroxml +libubox +jshn +libubus +libblobmsg-json +libpthread +ubusd +shflags +getopt +zlib +libjson-c +libwolfssl +curl +libcurl +libopenssl
|
||||||
|
MENU := 1
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/icwmp
|
define Package/$(PKG_NAME)/description
|
||||||
$(Package/icwmp/default)
|
A free client implementation of CWMP (TR-069) protocol
|
||||||
VARIANT:=default
|
|
||||||
DEFAULT_VARIANT:=1
|
|
||||||
DEPENDS += +PACKAGE_icwmp-openssl:libopenssl
|
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/icwmp-openssl
|
define Package/$(PKG_NAME)/config
|
||||||
$(Package/icwmp/default)
|
source "$(SOURCE)/Config_cwmp.in"
|
||||||
TITLE += (openssl)
|
|
||||||
VARIANT:=openssl
|
|
||||||
DEPENDS += +PACKAGE_icwmp-openssl:libopenssl
|
|
||||||
CONFLICTS := icwmp icwmp-mbedtls icwmp-wolfssl
|
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/icwmp-wolfssl
|
USE_LOCAL=$(shell ls ./src/ 2>/dev/null >/dev/null && echo 1)
|
||||||
$(Package/icwmp/default)
|
ifneq ($(USE_LOCAL),)
|
||||||
TITLE += (wolfssl)
|
|
||||||
VARIANT:=wolfssl
|
|
||||||
DEPENDS += +PACKAGE_icwmp-wolfssl:libwolfssl
|
|
||||||
CONFLICTS := icwmp icwmp-mbedtls icwmp-openssl
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Package/icwmp-mbedtls
|
|
||||||
$(Package/icwmp/default)
|
|
||||||
TITLE += (mbedtls)
|
|
||||||
DEPENDS += +PACKAGE_icwmp-mbedtls:libmbedtls
|
|
||||||
VARIANT:=mbedtls
|
|
||||||
CONFLICTS := icwmp icwmp-wolfssl icwmp-openssl
|
|
||||||
endef
|
|
||||||
|
|
||||||
ifeq ($(BUILD_VARIANT),default)
|
|
||||||
CMAKE_OPTIONS += -DWITH_OPENSSL=ON
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(BUILD_VARIANT),openssl)
|
|
||||||
CMAKE_OPTIONS += -DWITH_OPENSSL=ON
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(BUILD_VARIANT),wolfssl)
|
|
||||||
CMAKE_OPTIONS += -DWITH_WOLFSSL=ON
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(BUILD_VARIANT),mbedtls)
|
|
||||||
CMAKE_OPTIONS += -DWITH_MBEDTLS=ON
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(LOCAL_DEV),1)
|
|
||||||
define Build/Prepare
|
define Build/Prepare
|
||||||
$(CP) -rf ~/git/icwmp/* $(PKG_BUILD_DIR)/
|
$(CP) ./src/* $(PKG_BUILD_DIR)/
|
||||||
endef
|
endef
|
||||||
endif
|
endif
|
||||||
|
|
||||||
define Package/icwmp/default/install
|
TARGET_CFLAGS += \
|
||||||
|
-D_GNU_SOURCE \
|
||||||
|
"-DCWMP_REVISION=\\\"$(PKG_SOURCE_VERSION)\\\""
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_CWMP_ACS_MULTI),y)
|
||||||
|
CONFIGURE_ARGS += \
|
||||||
|
--enable-acs=multi
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_CWMP_ACS_HDM),y)
|
||||||
|
CONFIGURE_ARGS += \
|
||||||
|
--enable-acs=hdm
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_CWMP_DEBUG),y)
|
||||||
|
CONFIGURE_ARGS += \
|
||||||
|
--enable-debug
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_CWMP_DEVEL_DEBUG),y)
|
||||||
|
CONFIGURE_ARGS += \
|
||||||
|
--enable-devel
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_CWMP_USE_WOLFSSL), y)
|
||||||
|
CONFIGURE_ARGS += --enable-libwolfssl
|
||||||
|
TARGET_CFLAGS += -I$(STAGING_DIR)/usr/include/wolfssl
|
||||||
|
TARGET_LDFLAGS += "-lwolfssl"
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_CWMP_USE_OPENSSL), y)
|
||||||
|
CONFIGURE_ARGS += --enable-libopenssl
|
||||||
|
TARGET_CFLAGS += -I$(STAGING_DIR)/usr/include/
|
||||||
|
TARGET_LDFLAGS += "-lssl"
|
||||||
|
endif
|
||||||
|
|
||||||
|
define Package/$(PKG_NAME)/install
|
||||||
$(INSTALL_DIR) $(1)/etc/icwmpd
|
$(INSTALL_DIR) $(1)/etc/icwmpd
|
||||||
$(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_DIR) $(1)/etc/uci-defaults
|
||||||
$(INSTALL_DIR) $(1)/lib/upgrade/keep.d
|
$(INSTALL_DIR) $(1)/lib/upgrade/keep.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/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-icwmp-generate-ssl $(1)/etc/uci-defaults/
|
||||||
$(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/icwmpd/update.sh $(1)/etc/icwmpd/update.sh
|
||||||
$(INSTALL_BIN) ./files/etc/udhcpc.user.d/udhcpc_icwmp_opt43.user $(1)/etc/udhcpc.user.d/udhcpc_icwmp_opt43.user
|
|
||||||
$(call BbfdmInstallPlugin,$(1),./files/etc/bbfdm/json/CWMPManagementServer.json)
|
|
||||||
$(call BbfdmInstallPlugin,$(1),$(PKG_BUILD_DIR)/libcwmpdm.so)
|
|
||||||
endef
|
endef
|
||||||
|
|
||||||
Package/icwmp/install = $(Package/icwmp/default/install)
|
$(eval $(call BuildPackage,$(PKG_NAME)))
|
||||||
Package/icwmp-openssl/install = $(Package/icwmp/default/install)
|
|
||||||
Package/icwmp-wolfssl/install = $(Package/icwmp/default/install)
|
|
||||||
Package/icwmp-mbedtls/install = $(Package/icwmp/default/install)
|
|
||||||
|
|
||||||
$(eval $(call BuildPackage,icwmp))
|
|
||||||
$(eval $(call BuildPackage,icwmp-openssl))
|
|
||||||
$(eval $(call BuildPackage,icwmp-wolfssl))
|
|
||||||
$(eval $(call BuildPackage,icwmp-mbedtls))
|
|
||||||
|
|||||||
@@ -1,36 +0,0 @@
|
|||||||
{
|
|
||||||
"json_plugin_version": 1,
|
|
||||||
"Device.CWMPManagementServer.": {
|
|
||||||
"type": "object",
|
|
||||||
"version": "2.15",
|
|
||||||
"protocols": [
|
|
||||||
"usp"
|
|
||||||
],
|
|
||||||
"access": false,
|
|
||||||
"array": false,
|
|
||||||
"dependency": "file:/etc/config/cwmp",
|
|
||||||
"EnableCWMP": {
|
|
||||||
"type": "boolean",
|
|
||||||
"version": "2.15",
|
|
||||||
"read": true,
|
|
||||||
"write": true,
|
|
||||||
"protocols": [
|
|
||||||
"usp"
|
|
||||||
],
|
|
||||||
"mapping": [
|
|
||||||
{
|
|
||||||
"type": "uci",
|
|
||||||
"uci": {
|
|
||||||
"file": "cwmp",
|
|
||||||
"section": {
|
|
||||||
"name": "cpe"
|
|
||||||
},
|
|
||||||
"option": {
|
|
||||||
"name": "enable"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -11,17 +11,17 @@ config acs 'acs'
|
|||||||
option retry_min_wait_interval '5'
|
option retry_min_wait_interval '5'
|
||||||
# possible configs interval :[1000:65535]
|
# possible configs interval :[1000:65535]
|
||||||
option retry_interval_multiplier '2000'
|
option retry_interval_multiplier '2000'
|
||||||
option skip_dhcp_boot_options '0'
|
option https_ssl_capath ''
|
||||||
|
option ipv6_enable '0'
|
||||||
|
option ip_version '4'
|
||||||
|
|
||||||
config cpe 'cpe'
|
config cpe 'cpe'
|
||||||
option enable '1'
|
|
||||||
option default_wan_interface 'wan'
|
option default_wan_interface 'wan'
|
||||||
option default_lan_interface 'lan'
|
|
||||||
option log_to_console 'disable'
|
option log_to_console 'disable'
|
||||||
option log_to_file 'disable'
|
option log_to_file 'disable'
|
||||||
# log_severity: INFO (Default)
|
# log_severity: INFO (Default)
|
||||||
# log_severity possible configs: EMERG, ALERT, CRITIC ,ERROR, WARNING, NOTICE, INFO, DEBUG
|
# log_severity possible configs: EMERG, ALERT, CRITIC ,ERROR, WARNING, NOTICE, INFO, DEBUG
|
||||||
option log_severity 'ERROR'
|
option log_severity 'INFO'
|
||||||
option log_file_name '/var/log/icwmpd.log'
|
option log_file_name '/var/log/icwmpd.log'
|
||||||
option log_max_size '102400'
|
option log_max_size '102400'
|
||||||
option userid '' #$OUI-$SER
|
option userid '' #$OUI-$SER
|
||||||
@@ -31,17 +31,14 @@ config cpe 'cpe'
|
|||||||
option amd_version '5'
|
option amd_version '5'
|
||||||
# compression possible configs: InstanceNumber, InstanceAlias
|
# compression possible configs: InstanceNumber, InstanceAlias
|
||||||
option instance_mode 'InstanceNumber'
|
option instance_mode 'InstanceNumber'
|
||||||
option session_timeout '300'
|
option session_timeout '60'
|
||||||
option notification '1'
|
option notification '1'
|
||||||
option exec_download '0'
|
option exec_download '0'
|
||||||
option periodic_notify_enable '1'
|
option periodic_notify_enable '1'
|
||||||
option periodic_notify_interval '10'
|
option periodic_notify_interval '10'
|
||||||
option incoming_rule 'Port_Only'
|
option incoming_rule 'Port_Only'
|
||||||
option active_notif_throttle '0'
|
|
||||||
option disable_gatewayinfo '0'
|
|
||||||
option fw_upgrade_keep_settings '1'
|
|
||||||
|
|
||||||
config lwn 'lwn'
|
config lwn 'lwn'
|
||||||
option enable '0'
|
option enable '1'
|
||||||
option hostname ''
|
option hostname ''
|
||||||
option port '0'
|
option port '0'
|
||||||
|
|||||||
@@ -5,58 +5,47 @@ log() {
|
|||||||
echo "${@}"|logger -t firewall.cwmp -p info
|
echo "${@}"|logger -t firewall.cwmp -p info
|
||||||
}
|
}
|
||||||
|
|
||||||
get_firewall_zone() {
|
if [ ! -f "/var/state/cwmp" ]; then
|
||||||
zone="$(uci show firewall|grep network|grep ${1}|cut -d. -f 2)"
|
touch "/var/state/cwmp"
|
||||||
zone="${zone:-wan}" # defaults to wan zone
|
|
||||||
echo "$zone"
|
|
||||||
}
|
|
||||||
|
|
||||||
cleanup_exiting_rules() {
|
|
||||||
while iptables -w 1 -nL zone_"${1}"_input --line-numbers 2>/dev/null | grep "Open_ACS_port"; do
|
|
||||||
rule_num="$(iptables -w 1 -nL zone_"${1}"_input --line-numbers | grep "Open_ACS_port" | head -1|awk '{print $1}')"
|
|
||||||
if [ -n "${rule_num}" ]; then
|
|
||||||
iptables -w 1 -D zone_"${1}"_input "${rule_num}";
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
while ip6tables -w 1 -nL zone_"${1}"_input --line-numbers 2>/dev/null | grep "Open_ACS_port"; do
|
|
||||||
rule_num="$(ip6tables -w 1 -nL zone_"${1}"_input --line-numbers | grep "Open_ACS_port" | head -1|awk '{print $1}')"
|
|
||||||
if [ -n "${rule_num}" ]; then
|
|
||||||
ip6tables -w 1 -D zone_"${1}"_input "${rule_num}";
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
enable="$(uci -q get cwmp.cpe.enable)"
|
|
||||||
enable="${enable:-1}"
|
|
||||||
|
|
||||||
if [ "$enable" -eq 0 ]; then
|
|
||||||
log "CWMP not enabled"
|
|
||||||
exit 0;
|
exit 0;
|
||||||
fi
|
fi
|
||||||
|
|
||||||
wan="$(uci -q get cwmp.cpe.default_wan_interface)"
|
zone_name=$(uci -c /var/state -q get cwmp.acs.zonename)
|
||||||
wan="${wan:-wan}"
|
|
||||||
|
|
||||||
zone_name="$(get_firewall_zone $wan)"
|
|
||||||
|
|
||||||
port=$(uci -q get cwmp.cpe.port)
|
port=$(uci -q get cwmp.cpe.port)
|
||||||
port="${port:-7547}"
|
ipaddr=$(uci -c /var/state -q get cwmp.acs.ip)
|
||||||
|
ip6addr=$(uci -c /var/state -q get cwmp.acs.ip6)
|
||||||
|
incoming_rule=$(uci -q get cwmp.cpe.incoming_rule|tr 'A-Z' 'a-z')
|
||||||
|
|
||||||
incoming_rule=$(uci -q get cwmp.cpe.incoming_rule|awk '{print tolower($0)}')
|
if [ -z "${zone_name}" ]; then
|
||||||
incoming_rule="${incoming_rule:-port_only}"
|
log "empty firewall zone name"
|
||||||
|
exit 0
|
||||||
ipaddr=$(uci -c /var/state -q get icwmp.acs.ip)
|
elif [ "$zone_name" = "icwmp" ]; then
|
||||||
ip6addr=$(uci -c /var/state -q get icwmp.acs.ip6)
|
iptables -nL zone_icwmp_input 2> /dev/null
|
||||||
|
if [ $? != 0 ]; then
|
||||||
|
iptables -w 1 -N zone_icwmp_input
|
||||||
|
iptables -w 1 -t filter -A INPUT -j zone_icwmp_input
|
||||||
|
iptables -w 1 -I zone_icwmp_input -p tcp --dport $port -j REJECT
|
||||||
|
else
|
||||||
|
iptables -w 1 -F zone_icwmp_input
|
||||||
|
iptables -w 1 -I zone_icwmp_input -p tcp --dport $port -j REJECT
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
iptables -w 1 -F zone_icwmp_input 2> /dev/null
|
||||||
|
iptables -w 1 -t filter -D INPUT -j zone_icwmp_input 2> /dev/null
|
||||||
|
iptables -w 1 -X zone_icwmp_input 2> /dev/null
|
||||||
|
fi
|
||||||
|
|
||||||
cmd="iptables -w 1 -I zone_${zone_name}_input -p tcp"
|
cmd="iptables -w 1 -I zone_${zone_name}_input -p tcp"
|
||||||
cmd6="ip6tables -w 1 -I zone_${zone_name}_input -p tcp"
|
cmd6="ip6tables -w 1 -I zone_${zone_name}_input -p tcp"
|
||||||
|
|
||||||
# default incoming rule is Port only
|
# default incoming rule is Port only
|
||||||
|
if [ -z "${incoming_rule}" ]; then
|
||||||
|
incoming_rule="port_only"
|
||||||
|
fi
|
||||||
|
|
||||||
if [ "${incoming_rule}" = "ip_only" ]; then
|
if [ "${incoming_rule}" = "ip_only" ]; then
|
||||||
if [ -n "${ipaddr}" ]; then
|
if [ -n "${ipaddr}" ]; then
|
||||||
cmd="${cmd} -s ${ipaddr}"
|
cmd="${cmd} -s ${ipaddr}"
|
||||||
fi
|
|
||||||
if [ -n "${ip6addr}" ]; then
|
|
||||||
cmd6="${cmd6} -s ${ip6addr}"
|
cmd6="${cmd6} -s ${ip6addr}"
|
||||||
fi
|
fi
|
||||||
elif [ "${incoming_rule}" = "port_only" ]; then
|
elif [ "${incoming_rule}" = "port_only" ]; then
|
||||||
@@ -67,9 +56,6 @@ elif [ "${incoming_rule}" = "port_only" ]; then
|
|||||||
else
|
else
|
||||||
if [ -n "${ipaddr}" ]; then
|
if [ -n "${ipaddr}" ]; then
|
||||||
cmd="${cmd} -s ${ipaddr}"
|
cmd="${cmd} -s ${ipaddr}"
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -n "${ip6addr}" ]; then
|
|
||||||
cmd6="${cmd6} -s ${ip6addr}"
|
cmd6="${cmd6} -s ${ip6addr}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -79,23 +65,17 @@ else
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cleanup_exiting_rules "${zone_name}"
|
echo ${cmd}|grep -q "\-\-dport \|\-s "
|
||||||
|
|
||||||
echo "${cmd}"|grep -q "\-\-dport \|\-s "
|
|
||||||
if [ "$?" -eq 0 ]; then
|
if [ "$?" -eq 0 ]; then
|
||||||
cmd="${cmd} -j ACCEPT -m comment --comment=Open_ACS_port"
|
cmd="${cmd} -j ACCEPT -m comment --comment=Open_ACS_port"
|
||||||
${cmd}
|
${cmd}
|
||||||
log "Applied [${cmd}]"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "${cmd6}"|grep -q "\-\-dport \|\-s "
|
echo ${cmd6}|grep -q "\-\-dport \|\-s "
|
||||||
if [ "$?" -eq 0 ]; then
|
if [ "$?" -eq 0 ]; then
|
||||||
cmd6="${cmd6} -j ACCEPT -m comment --comment=Open_ACS_port"
|
cmd6="${cmd6} -j ACCEPT -m comment --comment=Open_ACS_port"
|
||||||
${cmd6}
|
${cmd6}
|
||||||
log "Applied [${cmd6}]"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -f "/var/state/icwmp" ]; then
|
uci -c /var/state -q set cwmp.cpe.firewall_restart="init"
|
||||||
uci -c /var/state -q set icwmp.cpe.firewall_restart="init"
|
uci -c /var/state -q commit cwmp
|
||||||
uci -c /var/state -q commit icwmp
|
|
||||||
fi
|
|
||||||
|
|||||||
93
icwmp/files/etc/icwmpd/update.sh
Normal file
93
icwmp/files/etc/icwmpd/update.sh
Normal file
@@ -0,0 +1,93 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
log() {
|
||||||
|
echo "$@" |logger -t cwmp.update -p info
|
||||||
|
}
|
||||||
|
|
||||||
|
handle_icwmp_update() {
|
||||||
|
local defwan vendorspecinf update
|
||||||
|
|
||||||
|
update="0"
|
||||||
|
defwan="$(uci -q get cwmp.cpe.default_wan_interface)"
|
||||||
|
vendorspecinf="$(ifstatus "${defwan}" | jsonfilter -e "@.data.vendorspecinf")"
|
||||||
|
|
||||||
|
log "Handling dhcp option value [${vendorspecinf}]"
|
||||||
|
[ -n "$vendorspecinf" ] && {
|
||||||
|
local url old_url
|
||||||
|
local prov_code old_prov_code
|
||||||
|
local min_wait_interval old_min_wait_interval
|
||||||
|
local retry_interval_multiplier old_retry_interval_multiplier
|
||||||
|
|
||||||
|
old_url="$(uci -q get cwmp.acs.dhcp_url)"
|
||||||
|
old_prov_code="$(uci -q get cwmp.cpe.dhcp_provisioning_code)"
|
||||||
|
old_min_wait_interval="$(uci -q get cwmp.acs.dhcp_retry_min_wait_interval)"
|
||||||
|
old_retry_interval_multiplier="$(uci -q get cwmp.acs.dhcp_retry_interval_multiplier)"
|
||||||
|
|
||||||
|
case $vendorspecinf in
|
||||||
|
http://*|https://*)
|
||||||
|
url="${vendorspecinf}"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
for optval in $vendorspecinf; do
|
||||||
|
case $optval in
|
||||||
|
1=*)
|
||||||
|
url="$(echo "$optval" | cut -d"=" -f2-)"
|
||||||
|
;;
|
||||||
|
2=*)
|
||||||
|
prov_code="$(echo "$optval" | cut -d"=" -f2-)"
|
||||||
|
;;
|
||||||
|
3=*)
|
||||||
|
min_wait_interval="$(echo "$optval" | cut -d"=" -f2-)"
|
||||||
|
;;
|
||||||
|
4=*)
|
||||||
|
retry_interval_multiplier="$(echo "$optval" | cut -d"=" -f2-)"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [ -n "$url" ]; then
|
||||||
|
if [ "${url}" != "${old_url}" ]; then
|
||||||
|
log "## icwmp url[${old_url}] changed to [${url}]"
|
||||||
|
uci -q set cwmp.acs.dhcp_url="$url"
|
||||||
|
update=1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if [ -n "$prov_code" ]; then
|
||||||
|
if [ "${prov_code}" != "${old_prov_code}" ]; then
|
||||||
|
log "## icwmp prov_code[${old_prov_code}] changed to [${prov_code}]"
|
||||||
|
uci -q set cwmp.cpe.dhcp_provisioning_code="$prov_code"
|
||||||
|
update=1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if [ -n "$min_wait_interval" ]; then
|
||||||
|
if [ "${min_wait_interval}" != "${old_min_wait_interval}" ]; then
|
||||||
|
log "## icwmp min_wait_interval[${old_min_wait_interval}] changed to [${min_wait_interval}]"
|
||||||
|
uci -q set cwmp.acs.dhcp_retry_min_wait_interval="$min_wait_interval"
|
||||||
|
update=1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if [ -n "$retry_interval_multiplier" ]; then
|
||||||
|
if [ "${retry_interval_multiplier}" != "${old_retry_interval_multiplier}" ]; then
|
||||||
|
log "## icwmp retry_interval_multiplier[${old_retry_interval_multiplier}] changed to [${retry_interval_multiplier}]"
|
||||||
|
uci -q set cwmp.acs.dhcp_retry_interval_multiplier="$retry_interval_multiplier"
|
||||||
|
update=1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
if [ "${update}" -eq "1" ]; then
|
||||||
|
log "CWMP uci changes, reload cwmp with uci commit"
|
||||||
|
ubus call uci commit '{"config":"cwmp"}'
|
||||||
|
else
|
||||||
|
if ubus list tr069 >/dev/null 2>&1 ; then
|
||||||
|
log "Trigger out of bound inform"
|
||||||
|
ubus call tr069 inform
|
||||||
|
else
|
||||||
|
log "Restarting icwmp tr069 object not found"
|
||||||
|
/etc/init.d/icwmpd restart
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
handle_icwmp_update
|
||||||
@@ -1,54 +1,26 @@
|
|||||||
#!/bin/sh /etc/rc.common
|
#!/bin/sh /etc/rc.common
|
||||||
# Copyright (C) 2015-2019 iopsys Software Solutions AB
|
# Copyright (C) 2015-2019 iopsys Software Solutions AB
|
||||||
|
|
||||||
|
. /lib/functions.sh
|
||||||
|
include /lib/network
|
||||||
|
. /usr/share/libubox/jshn.sh
|
||||||
|
|
||||||
START=99
|
START=99
|
||||||
STOP=00
|
STOP=2
|
||||||
|
|
||||||
USE_PROCD=1
|
USE_PROCD=1
|
||||||
PROG="/usr/sbin/icwmpd"
|
PROG="/usr/sbin/icwmpd"
|
||||||
|
|
||||||
. /lib/functions.sh
|
|
||||||
. /usr/share/libubox/jshn.sh
|
|
||||||
include /lib/network
|
|
||||||
|
|
||||||
log() {
|
log() {
|
||||||
echo "${@}"|logger -t cwmp.init -p info
|
echo "${@}"|logger -t cwmp.init -p info
|
||||||
}
|
}
|
||||||
|
|
||||||
regenerate_ssl_link()
|
|
||||||
{
|
|
||||||
local cert_dir all_file rehash
|
|
||||||
|
|
||||||
cert_dir="${1}"
|
|
||||||
[ ! -d "${cert_dir}" ] && return 0;
|
|
||||||
|
|
||||||
### Generate all ssl link for pem certicates ###
|
|
||||||
all_file=$(ls "${cert_dir}"/*.pem 2>/dev/null)
|
|
||||||
if [ -n "${all_file}" ]; then
|
|
||||||
for cfile in $all_file; do
|
|
||||||
rehash="$(openssl x509 -hash -noout -in "${cfile}")"
|
|
||||||
[ -f "${cert_dir}"/"${rehash}".0 ] || \
|
|
||||||
ln -s "${cfile}" "${cert_dir}"/"${rehash}".0
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
### Generate all ssl link for crt certicates ###
|
|
||||||
all_file=$(ls "${cert_dir}"/*.crt 2>/dev/null)
|
|
||||||
if [ -n "${all_file}" ]; then
|
|
||||||
for cfile in $all_file; do
|
|
||||||
rehash="$(openssl x509 -hash -noout -in "${cfile}")"
|
|
||||||
[ -f "${cert_dir}"/"${rehash}".0 ] || \
|
|
||||||
ln -s "${cfile}" "${cert_dir}"/"${rehash}".0
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
enable_dhcp_option43() {
|
enable_dhcp_option43() {
|
||||||
local wan="${1}"
|
local wan="${1}"
|
||||||
|
|
||||||
### Ask for DHCP Option 43 only if CWMP is enabled ###
|
### Ask for DHCP Option 43 only if CWMP is enabled ###
|
||||||
local reqopts="$(uci -q get network."${wan}".reqopts)"
|
local reqopts="$(uci -q get network.$wan.reqopts)"
|
||||||
local proto="$(uci -q get network."${wan}".proto)"
|
local proto="$(uci -q get network.$wan.proto)"
|
||||||
local newreqopts=""
|
local newreqopts=""
|
||||||
local option43_present=0
|
local option43_present=0
|
||||||
|
|
||||||
@@ -64,294 +36,8 @@ enable_dhcp_option43() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
newreqopts="$reqopts 43"
|
newreqopts="$reqopts 43"
|
||||||
if [ "${proto}" = "dhcp" ]; then
|
if [ "${proto}" == "dhcp" ]; then
|
||||||
uci -q set network."${wan}".reqopts="$newreqopts"
|
uci -q set network.$wan.reqopts="$newreqopts"
|
||||||
uci commit network
|
|
||||||
ubus call network reload
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
convert_to_hex() {
|
|
||||||
local val=""
|
|
||||||
local optval="${1}"
|
|
||||||
OPTIND=1
|
|
||||||
while getopts ":" opt "-$optval"
|
|
||||||
do
|
|
||||||
temp=$(printf "%02X" "'${OPTARG:-:}")
|
|
||||||
val="${val}:${temp}"
|
|
||||||
done
|
|
||||||
|
|
||||||
echo "${val}"
|
|
||||||
}
|
|
||||||
|
|
||||||
configure_send_op125() {
|
|
||||||
local sendopt="${1}"
|
|
||||||
local intf="${2}"
|
|
||||||
local uci="${3}"
|
|
||||||
local hex_oui=""
|
|
||||||
local hex_serial=""
|
|
||||||
local hex_class=""
|
|
||||||
local oui_len=0
|
|
||||||
local serial_len=0
|
|
||||||
local class_len=0
|
|
||||||
|
|
||||||
if [ "${uci}" = "network" ]; then
|
|
||||||
local opt125="125:00:00:0D:E9"
|
|
||||||
else
|
|
||||||
if [ -z "${sendopt}" ]; then
|
|
||||||
local opt125="125,00:00:0D:E9"
|
|
||||||
else
|
|
||||||
local opt125=":00:00:0D:E9"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
config_get oui cpe manufacturer_oui ""
|
|
||||||
if [ -z "${oui}" ]; then
|
|
||||||
oui=$(db -q get device.deviceinfo.ManufacturerOUI)
|
|
||||||
fi
|
|
||||||
|
|
||||||
oui=$(echo "${oui}" | tr 'a-f' 'A-F')
|
|
||||||
|
|
||||||
config_get serial cpe serial_number ""
|
|
||||||
if [ -z "${serial}" ]; then
|
|
||||||
serial=$(db -q get device.deviceinfo.SerialNumber)
|
|
||||||
fi
|
|
||||||
|
|
||||||
config_get class cpe product_class ""
|
|
||||||
if [ -z "${class}" ]; then
|
|
||||||
class=$(db -q get device.deviceinfo.ProductClass)
|
|
||||||
fi
|
|
||||||
|
|
||||||
oui_len=$(echo -n "${oui}" | wc -m)
|
|
||||||
serial_len=$(echo -n "${serial}" | wc -m)
|
|
||||||
class_len=$(echo -n "${class}" | wc -m)
|
|
||||||
|
|
||||||
if [ "${oui_len}" -eq 0 ] || [ "${serial_len}" -eq 0 ]; then
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
opt125_len=$((oui_len + serial_len + class_len))
|
|
||||||
if [ "${class_len}" -gt 0 ]; then
|
|
||||||
opt125_len=$((opt125_len + 6))
|
|
||||||
else
|
|
||||||
opt125_len=$((opt125_len + 4))
|
|
||||||
fi
|
|
||||||
|
|
||||||
hex_opt125_len=$(printf "%02X" "${opt125_len}")
|
|
||||||
opt125="${opt125}:${hex_opt125_len}"
|
|
||||||
hex_oui=$(convert_to_hex "${oui}")
|
|
||||||
if [ -z "${hex_oui}" ]; then
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
hex_oui_len=$(printf "%02X" "${oui_len}")
|
|
||||||
if [ "${uci}" = "network" ]; then
|
|
||||||
opt125="${opt125}:01:${hex_oui_len}${hex_oui}"
|
|
||||||
else
|
|
||||||
opt125="${opt125}:04:${hex_oui_len}${hex_oui}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
hex_serial=$(convert_to_hex "${serial}")
|
|
||||||
if [ -z "${hex_serial}" ]; then
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
hex_serial_len=$(printf "%02X" "${serial_len}")
|
|
||||||
if [ "${uci}" = "network" ]; then
|
|
||||||
opt125="${opt125}:02:${hex_serial_len}${hex_serial}"
|
|
||||||
else
|
|
||||||
opt125="${opt125}:05:${hex_serial_len}${hex_serial}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "${class_len}" -gt 0 ]; then
|
|
||||||
hex_class=$(convert_to_hex "${class}")
|
|
||||||
if [ -z "${hex_class}" ]; then
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
hex_class_len=$(printf "%02X" "${class_len}")
|
|
||||||
if [ "${uci}" = "network" ]; then
|
|
||||||
opt125="${opt125}:03:${hex_class_len}${hex_class}"
|
|
||||||
else
|
|
||||||
opt125="${opt125}:06:${hex_class_len}${hex_class}"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
if [ "${uci}" = "network" ]; then
|
|
||||||
new_send_opt="$sendopt $opt125"
|
|
||||||
uci -q set network."${intf}".sendopts="$new_send_opt"
|
|
||||||
else
|
|
||||||
new_send_opt="$sendopt$opt125"
|
|
||||||
uci -q add_list dhcp."${intf}".dhcp_option="$new_send_opt"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
check_for_suboptions() {
|
|
||||||
# Check if option 4 and 5 present inside enterprise id 3561
|
|
||||||
data=$(echo "${1}" | sed 's/://g')
|
|
||||||
len=$(printf "${data}"|wc -c)
|
|
||||||
|
|
||||||
rem_len="${len}"
|
|
||||||
while [ $rem_len -gt 8 ]; do
|
|
||||||
subopt_present=0
|
|
||||||
|
|
||||||
ent_id="${data:0:8}"
|
|
||||||
ent_id=$(printf "%d\n" "0x$ent_id")
|
|
||||||
if [ $ent_id -ne 3561 ]; then
|
|
||||||
len_val=${data:8:2}
|
|
||||||
data_len=$(printf "%d\n" "0x$len_val")
|
|
||||||
# add 4 byte for ent_id and 1 byte for len
|
|
||||||
data_len=$(( data_len * 2 + 10 ))
|
|
||||||
# move ahead data to next enterprise id
|
|
||||||
data=${data:"${data_len}":"${rem_len}"}
|
|
||||||
rem_len=$(( rem_len - data_len ))
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
|
|
||||||
# read the length of enterprise data
|
|
||||||
len_val=${data:8:2}
|
|
||||||
data_len=$(printf "%d\n" "0x$len_val")
|
|
||||||
# add 4 byte for ent_id and 1 byte for len
|
|
||||||
data_len=$(( data_len * 2 + 10 ))
|
|
||||||
|
|
||||||
len_val=${data:8:2}
|
|
||||||
opt_len=$(printf "%d\n" "0x$len_val")
|
|
||||||
if [ $opt_len -eq 0 ]; then
|
|
||||||
echo ${subopt_present}
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
# populate the option data of enterprise id
|
|
||||||
sub_data_len=$(( opt_len * 2))
|
|
||||||
# starting 10 means ahead of length field
|
|
||||||
sub_data=${data:10:"${sub_data_len}"}
|
|
||||||
|
|
||||||
# parsing of suboption of option 125
|
|
||||||
while [ $sub_data_len -gt 0 ]; do
|
|
||||||
# get the suboption id
|
|
||||||
sub_opt_id=${sub_data:0:2}
|
|
||||||
sub_opt_id=$(printf "%d\n" "0x$sub_opt_id")
|
|
||||||
case "${sub_opt_id}" in
|
|
||||||
"4") subopt_present=1
|
|
||||||
;;
|
|
||||||
"5") subopt_present=1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
if [ ${subopt_present} -eq 1 ]; then
|
|
||||||
break;
|
|
||||||
fi
|
|
||||||
|
|
||||||
# get the length of suboption
|
|
||||||
sub_opt_len=${sub_data:2:2}
|
|
||||||
sub_opt_len=$(printf "%d\n" "0x$sub_opt_len")
|
|
||||||
sub_opt_len=$(( sub_opt_len * 2 ))
|
|
||||||
|
|
||||||
# add 2 bytes for sub_opt id and sub_opt len field
|
|
||||||
sub_opt_end=$(( sub_opt_len + 4 ))
|
|
||||||
|
|
||||||
# update the remaining sub option hex string length
|
|
||||||
sub_data_len=$((sub_data_len - sub_opt_end))
|
|
||||||
|
|
||||||
# fetch next sub option hex string
|
|
||||||
sub_data=${sub_data:${sub_opt_end}:${sub_data_len}}
|
|
||||||
done
|
|
||||||
|
|
||||||
if [ ${subopt_present} -eq 1 ]; then
|
|
||||||
break;
|
|
||||||
else
|
|
||||||
# move ahead data to next enterprise id
|
|
||||||
rem_len=$(( rem_len - $data_len ))
|
|
||||||
data=${data:"${data_len}":"${rem_len}"}
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
echo ${subopt_present}
|
|
||||||
}
|
|
||||||
|
|
||||||
enable_dnsmasq_option125() {
|
|
||||||
local lan="${1}"
|
|
||||||
local send125_present=0
|
|
||||||
local opt125="125,"
|
|
||||||
|
|
||||||
local proto="$(uci -q get dhcp."${lan}".dhcpv4)"
|
|
||||||
if [ "${proto}" = "server" ]; then
|
|
||||||
opt_list="$(uci -q get dhcp."${lan}".dhcp_option)"
|
|
||||||
base_opt=""
|
|
||||||
|
|
||||||
for sopt in $opt_list; do
|
|
||||||
if [[ "$sopt" == "$opt125"* ]]; then
|
|
||||||
send125_present=$(check_for_suboptions "${sopt:4}")
|
|
||||||
base_opt="${sopt}"
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
if [ ${send125_present} -eq 0 ]; then
|
|
||||||
uci -q del_list dhcp."${lan}".dhcp_option="${base_opt}"
|
|
||||||
configure_send_op125 "${base_opt}" "${lan}" "dhcp"
|
|
||||||
ubus call uci commit '{"config":"dhcp"}'
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
set_vendor_id() {
|
|
||||||
local wan="${1}"
|
|
||||||
local proto="$(uci -q get network."${wan}".proto)"
|
|
||||||
|
|
||||||
if [ "${proto}" = "dhcp" ]; then
|
|
||||||
vendorid="$(uci -q get network."${wan}".vendorid)"
|
|
||||||
if [ -z "${vendorid}" ]; then
|
|
||||||
uci -q set network."${wan}".vendorid="dslforum.org"
|
|
||||||
ubus call uci commit '{"config":"network"}'
|
|
||||||
elif [[ $vendorid != *"dslforum.org"* ]]; then
|
|
||||||
uci -q set network."${wan}".vendorid="${vendorid},dslforum.org"
|
|
||||||
ubus call uci commit '{"config":"network"}'
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
enable_dhcp_option125() {
|
|
||||||
local wan="${1}"
|
|
||||||
local reqopts="$(uci -q get network."${wan}".reqopts)"
|
|
||||||
local sendopts="$(uci -q get network."${wan}".sendopts)"
|
|
||||||
local proto="$(uci -q get network."${wan}".proto)"
|
|
||||||
local newreqopts=""
|
|
||||||
local newsendopts=""
|
|
||||||
local req125_present=0
|
|
||||||
local send125_present=0
|
|
||||||
local network_uci_update=0
|
|
||||||
local opt125="125:"
|
|
||||||
|
|
||||||
for ropt in $reqopts; do
|
|
||||||
case $ropt in
|
|
||||||
125) req125_present=1 ;;
|
|
||||||
*) ;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
for sopt in $sendopts; do
|
|
||||||
if [[ "$sopt" == "$opt125"* ]]; then
|
|
||||||
send125_present=1
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
if [ "${proto}" = "dhcp" ]; then
|
|
||||||
if [ ${req125_present} -eq 0 ]; then
|
|
||||||
newreqopts="$reqopts 125"
|
|
||||||
uci -q set network."${wan}".reqopts="$newreqopts"
|
|
||||||
network_uci_update=1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ ${send125_present} -eq 0 ]; then
|
|
||||||
configure_send_op125 "${sendopts}" "${wan}" "network"
|
|
||||||
network_uci_update=1
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ ${network_uci_update} -eq 1 ]; then
|
|
||||||
uci commit network
|
uci commit network
|
||||||
ubus call network reload
|
ubus call network reload
|
||||||
fi
|
fi
|
||||||
@@ -372,29 +58,41 @@ wait_for_resolvfile() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
copy_cwmp_etc_files_to_varstate() {
|
copy_cwmp_etc_files_to_varstate() {
|
||||||
mkdir -p /var/run/icwmpd
|
if [ ! -f /var/state/cwmp ]
|
||||||
|
then
|
||||||
if [ -f /etc/icwmpd/icwmpd_backup_session.xml ]; then
|
if [ -f /etc/icwmpd/cwmp ]
|
||||||
cp -f /etc/icwmpd/icwmpd_backup_session.xml /var/run/icwmpd/ 2>/dev/null
|
then
|
||||||
|
uci -q -c /etc/icwmpd delete cwmp.acs
|
||||||
|
uci -q -c /etc/icwmpd commit cwmp
|
||||||
|
cp /etc/icwmpd/cwmp /var/state/cwmp
|
||||||
|
else
|
||||||
|
touch /var/state/cwmp
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -f /etc/icwmpd/dm_enabled_notify.xml ]; then
|
mkdir -p /var/run/icwmpd
|
||||||
cp -f /etc/icwmpd/dm_enabled_notify /var/run/icwmpd/ 2>/dev/null
|
if [ -f /etc/icwmpd/icwmpd_backup_session.xml ]
|
||||||
|
then
|
||||||
|
mv /etc/icwmpd/icwmpd_backup_session.xml /var/run/icwmpd 2>/dev/null
|
||||||
|
fi
|
||||||
|
if [ -f /etc/icwmpd/dm_enabled_notify.xml ]
|
||||||
|
then
|
||||||
|
mv /etc/icwmpd/dm_enabled_notify /var/run/icwmpd 2>/dev/null
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
copy_cwmp_varstate_files_to_etc() {
|
copy_cwmp_varstate_files_to_etc() {
|
||||||
if [ -f /var/run/icwmpd/icwmpd_backup_session.xml ]; then
|
if [ -f /var/state/cwmp ]
|
||||||
cp -f /var/run/icwmpd/icwmpd_backup_session.xml /etc/icwmpd/ 2>/dev/null
|
then
|
||||||
|
cp /var/state/cwmp /etc/icwmpd 2>/dev/null
|
||||||
fi
|
fi
|
||||||
|
if [ -f /var/run/icwmpd/icwmpd_backup_session.xml ]
|
||||||
if [ -f /var/run/icwmpd/dm_enabled_notify.xml ]; then
|
then
|
||||||
cp -f /var/run/icwmpd/dm_enabled_notify /etc/icwmpd/ 2>/dev/null
|
cp /var/run/icwmpd/icwmpd_backup_session.xml /etc/icwmpd 2>/dev/null
|
||||||
fi
|
fi
|
||||||
|
if [ -f /var/run/icwmpd/dm_enabled_notify.xml ]
|
||||||
# move the successful custom notify import marker to persistent storage
|
then
|
||||||
if [ -f /var/run/icwmpd/icwmpd_notify_import_marker ]; then
|
cp /var/run/icwmpd/dm_enabled_notify /etc/icwmpd 2>/dev/null
|
||||||
cp -f /var/run/icwmpd/icwmpd_notify_import_marker /etc/icwmpd/
|
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -406,13 +104,12 @@ validate_acs_section()
|
|||||||
'periodic_inform_interval:uinteger' \
|
'periodic_inform_interval:uinteger' \
|
||||||
'periodic_inform_time:string' \
|
'periodic_inform_time:string' \
|
||||||
'url:string' \
|
'url:string' \
|
||||||
'dhcp_discovery:string' \
|
|
||||||
'skip_dhcp_boot_options:bool:0' \
|
|
||||||
'dhcp_url:string' \
|
'dhcp_url:string' \
|
||||||
'compression:or("GZIP","Deflate","Disabled")' \
|
'compression:or("GZIP","Deflate","Disabled")' \
|
||||||
'retry_min_wait_interval:range(1, 65535)' \
|
'retry_min_wait_interval:range(1, 65535)' \
|
||||||
'retry_interval_multiplier:range(1000, 65535)' \
|
'retry_interval_multiplier:range(1000, 65535)' \
|
||||||
'ssl_capath:string'
|
'https_ssl_capath:file' \
|
||||||
|
'ipv6_enable:bool'
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -437,12 +134,10 @@ validate_cpe_section()
|
|||||||
'exec_download:bool' \
|
'exec_download:bool' \
|
||||||
'periodic_notify_enable:bool' \
|
'periodic_notify_enable:bool' \
|
||||||
'enable:bool' \
|
'enable:bool' \
|
||||||
'periodic_notify_interval:uinteger' \
|
'periodic_notify_interval:uinteger'
|
||||||
'fw_upgrade_keep_settings:bool'
|
|
||||||
}
|
}
|
||||||
|
|
||||||
validate_defaults() {
|
validate_defaults() {
|
||||||
local ssl_capath
|
|
||||||
config_load cwmp
|
config_load cwmp
|
||||||
|
|
||||||
validate_acs_section || {
|
validate_acs_section || {
|
||||||
@@ -450,15 +145,10 @@ validate_defaults() {
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
ssl_capath="${ssl_capath%/}"
|
[ -z "${url}" ] && [ -z "${dhcp_url}" ] && {
|
||||||
# Put the cert pem file in keep list
|
log "ACS url is empty can't start"
|
||||||
if [ -d "${ssl_capath}" ]; then
|
return 1;
|
||||||
if ! grep "*.pem\|*.crt" /lib/upgrade/keep.d/icwmp; then
|
}
|
||||||
echo "${ssl_capath}"'/*.pem' >> /lib/upgrade/keep.d/icwmp
|
|
||||||
echo "${ssl_capath}"'/*.crt' >> /lib/upgrade/keep.d/icwmp
|
|
||||||
echo "${ssl_capath}"'/*.0' >> /lib/upgrade/keep.d/icwmp
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
validate_cpe_section || {
|
validate_cpe_section || {
|
||||||
log "Validation of cpe section failed"
|
log "Validation of cpe section failed"
|
||||||
@@ -469,78 +159,61 @@ validate_defaults() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
boot() {
|
boot() {
|
||||||
local dhcp_discovery wan_interface skip_dhcp_boot_options disable_gatewayinfo
|
local dhcp_url dhcp_discovery
|
||||||
|
|
||||||
config_load cwmp
|
config_load cwmp
|
||||||
config_get wan_interface cpe default_wan_interface "wan"
|
config_get_bool dhcp_discovery acs dhcp_discovery 1
|
||||||
config_get disable_gatewayinfo cpe disable_gatewayinfo "0"
|
config_get dhcp_url acs dhcp_url ""
|
||||||
|
|
||||||
config_get dhcp_discovery acs dhcp_discovery "0"
|
if [ "${dhcp_discovery}" == "enable" ] || [ "${dhcp_discovery}" == "1" ]; then
|
||||||
config_get dhcp_discovery acs dhcp_discovery "0"
|
if [ -z "${dhcp_url}" ]; then
|
||||||
config_get skip_dhcp_boot_options acs skip_dhcp_boot_options "0"
|
log "dhcp discovery enabled but no dhcp url, trigger update"
|
||||||
|
/etc/icwmpd/update.sh
|
||||||
if [ "${dhcp_discovery}" = "enable" ] || [ "${dhcp_discovery}" = "1" ]; then
|
|
||||||
if [ "${skip_dhcp_boot_options}" -ne 1 ]; then
|
|
||||||
# Set dhcp option 43 if not already configured
|
|
||||||
enable_dhcp_option43 "${wan_interface}"
|
|
||||||
# Set dhcp option 60
|
|
||||||
set_vendor_id "${wan_interface}"
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
config_get lan_interface cpe default_lan_interface ""
|
|
||||||
if [ -n "${lan_interface}" ]; then
|
|
||||||
if [ "${disable_gatewayinfo}" -ne 1 ]; then
|
|
||||||
# Set dhcp_option 125 if not already configured
|
|
||||||
enable_dhcp_option125 "${wan_interface}"
|
|
||||||
enable_dnsmasq_option125 "${lan_interface}"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
config_get ssl_capath acs ssl_capath
|
|
||||||
|
|
||||||
if [ -n "${ssl_capath}" ]; then
|
|
||||||
regenerate_ssl_link "${ssl_capath}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Copy backup data so that if it restart latter on, it gets the info
|
|
||||||
copy_cwmp_etc_files_to_varstate
|
|
||||||
mkdir -p /var/run/icwmpd/
|
|
||||||
touch /var/run/icwmpd/cwmp
|
|
||||||
|
|
||||||
start
|
start
|
||||||
}
|
}
|
||||||
|
|
||||||
start_service() {
|
start_service() {
|
||||||
local enable_cwmp url dhcp_url
|
local enable_cwmp
|
||||||
|
local wan_interface
|
||||||
|
local dhcp_discovery
|
||||||
|
|
||||||
config_load cwmp
|
config_load cwmp
|
||||||
config_get_bool enable_cwmp cpe enable 1
|
config_get_bool enable_cwmp cpe enable 1
|
||||||
config_get url acs url ""
|
config_get dhcp_discovery acs dhcp_discovery
|
||||||
config_get dhcp_url acs dhcp_url ""
|
config_get wan_interface cpe default_wan_interface "wan"
|
||||||
|
|
||||||
procd_open_instance icwmp
|
if [ "$enable_cwmp" = "0" ] || [ "$enable_cwmp" = "false" ]; then
|
||||||
|
log "CWMP is not enabled"
|
||||||
if [ "$enable_cwmp" = "0" ]; then
|
|
||||||
procd_close_instance
|
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Set dhcp option 43 if dhcp discovery enabled
|
||||||
|
if [ "${dhcp_discovery}" == "enable" ] || [ "${dhcp_discovery}" == "1" ]; then
|
||||||
|
enable_dhcp_option43 "${wan_interface}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
[ -f /sbin/netifd ] && log "Waiting for Network to be started ..." && ubus -t 5 wait_for network.interface
|
||||||
|
[ -f /usr/sbin/dnsmasq ] && log "Waiting for DNS Proxy to be started ..." && ubus -t 5 wait_for dnsmasq
|
||||||
|
[ -f /etc/config/dhcp ] && log "Waiting for DNS Server(s) ..." && wait_for_resolvfile 20
|
||||||
|
|
||||||
validate_defaults || {
|
validate_defaults || {
|
||||||
log "Validation of defaults failed"
|
log "Validation of defaults failed"
|
||||||
procd_close_instance
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if [ -n "${url}" ] || [ -n "${dhcp_url}" ]; then
|
# Copy backup data so that if it restart latter on it gets the info
|
||||||
procd_set_param command "$PROG"
|
copy_cwmp_etc_files_to_varstate
|
||||||
procd_append_param command -b
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
procd_open_instance icwmp
|
||||||
|
procd_set_param command "$PROG"
|
||||||
|
procd_append_param command -b
|
||||||
procd_set_param respawn \
|
procd_set_param respawn \
|
||||||
"${respawn_threshold:-5}" \
|
"${respawn_threshold:-5}" \
|
||||||
"${respawn_timeout:-10}" "${respawn_retry:-3}"
|
"${respawn_timeout:-10}" "${respawn_retry:-3}"
|
||||||
|
|
||||||
|
procd_set_param watch network.interface
|
||||||
procd_close_instance
|
procd_close_instance
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -550,42 +223,25 @@ stop_service()
|
|||||||
}
|
}
|
||||||
|
|
||||||
reload_service() {
|
reload_service() {
|
||||||
local ret
|
log "Restarting CWMP client"
|
||||||
|
stop
|
||||||
config_load cwmp
|
start
|
||||||
config_get_bool enable_cwmp cpe enable 1
|
|
||||||
|
|
||||||
log "Reload service $ret"
|
|
||||||
ret="0"
|
|
||||||
if [ "$enable_cwmp" = "0" ]; then
|
|
||||||
stop
|
|
||||||
start
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
ret=$(ubus call service list '{"name":"icwmpd"}' | jsonfilter -qe '@.icwmpd.instances.icwmp.running')
|
|
||||||
if [ "$ret" != "true" ]; then
|
|
||||||
log "Reloading cwmp service ..."
|
|
||||||
stop
|
|
||||||
start
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
tr069_status="$(ubus -t 1 call tr069 status)"
|
|
||||||
ret="$?"
|
|
||||||
if [ "$ret" = "7" ]; then
|
|
||||||
# ubus timed out may be due to uloop is busy in some task so return
|
|
||||||
log "Skipping ubus reload due to ubus timeout"
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
status="$(echo "${tr069_status}" | jsonfilter -qe '@.cwmp.status')"
|
|
||||||
if [ "$status" = "up" ]; then
|
|
||||||
ubus -t 1 call tr069 command '{"command":"reload"}'
|
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
service_triggers() {
|
service_triggers() {
|
||||||
procd_add_reload_trigger "cwmp"
|
procd_add_reload_trigger "cwmp"
|
||||||
|
|
||||||
|
procd_open_trigger
|
||||||
|
json_add_array
|
||||||
|
json_add_string "" "interface.update"
|
||||||
|
json_add_array
|
||||||
|
json_add_array
|
||||||
|
json_add_string "" "run_script"
|
||||||
|
json_add_string "" "/etc/icwmpd/update.sh"
|
||||||
|
json_close_array
|
||||||
|
json_close_array
|
||||||
|
json_add_int "" "2000"
|
||||||
|
json_close_array
|
||||||
|
procd_close_trigger
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,7 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
. /lib/functions.sh
|
|
||||||
# Copy defaults by the factory to the cwmp UCI user section.
|
# Copy defaults by the factory to the cwmp UCI user section.
|
||||||
config_load cwmp
|
|
||||||
|
|
||||||
# Get Manufacturer OUI.
|
# Get Manufacturer OUI.
|
||||||
config_get oui cpe manufacturer_oui ""
|
oui=$(uci -q get cwmp.cpe.manufacturer_oui)
|
||||||
if [ -z "${oui}" ]; then
|
if [ -z "${oui}" ]; then
|
||||||
oui=$(db -q get device.deviceinfo.ManufacturerOUI)
|
oui=$(db -q get device.deviceinfo.ManufacturerOUI)
|
||||||
fi
|
fi
|
||||||
@@ -13,29 +9,24 @@ fi
|
|||||||
oui=$(echo "${oui}" | tr 'a-f' 'A-F')
|
oui=$(echo "${oui}" | tr 'a-f' 'A-F')
|
||||||
|
|
||||||
# Get system serial number.
|
# Get system serial number.
|
||||||
config_get serial cpe serial_number ""
|
serial=$(uci -q get cwmp.cpe.serial_number)
|
||||||
if [ -z "${serial}" ]; then
|
if [ -z "${serial}" ]; then
|
||||||
serial=$(db -q get device.deviceinfo.SerialNumber)
|
serial=$(db -q get device.deviceinfo.SerialNumber)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Get userid values
|
# Get userid values
|
||||||
config_get acs_userid acs userid ""
|
acs_userid=$(uci -q get cwmp.acs.userid)
|
||||||
config_get cpe_userid cpe userid ""
|
cpe_userid=$(uci -q get cwmp.cpe.userid)
|
||||||
|
|
||||||
# Only set if they are empty
|
# Only set if they are empty
|
||||||
if [ -z "${acs_userid}" ]; then
|
if [ -z "$acs_userid" ]
|
||||||
|
then
|
||||||
uci -q set cwmp.acs.userid="${oui}-${serial}"
|
uci -q set cwmp.acs.userid="${oui}-${serial}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -z "${cpe_userid}" ]; then
|
if [ -z "$cpe_userid" ]
|
||||||
|
then
|
||||||
uci -q set cwmp.cpe.userid="${oui}-${serial}"
|
uci -q set cwmp.cpe.userid="${oui}-${serial}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Fix the cwmp.cpe.enable parameter
|
|
||||||
# set default to 1 if not defined
|
|
||||||
config_get enable_cwmp cpe enable ""
|
|
||||||
if [ -z "${enable_cwmp}" ]; then
|
|
||||||
uci -q set cwmp.cpe.enable="1"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# No need for commit here, it is done by uci_apply_defaults().
|
# No need for commit here, it is done by uci_apply_defaults().
|
||||||
|
|||||||
18
icwmp/files/etc/uci-defaults/95-icwmp-generate-ssl
Normal file
18
icwmp/files/etc/uci-defaults/95-icwmp-generate-ssl
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
. /lib/functions.sh
|
||||||
|
|
||||||
|
regenerate_ssl_link(){
|
||||||
|
[ ! -d "/etc/ssl/certs" ] && return 0;
|
||||||
|
[ ! -f "/etc/ssl/certs/*.pem" ] && return 0;
|
||||||
|
|
||||||
|
local cert_dir="/etc/ssl/certs"
|
||||||
|
local all_file=$(ls $cert_dir/*.pem)
|
||||||
|
|
||||||
|
for cfile in $all_file
|
||||||
|
do
|
||||||
|
ln -s $cfile $cert_dir/$(openssl x509 -hash -noout -in $cfile).0
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
regenerate_ssl_link
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
. /lib/functions.sh
|
|
||||||
|
|
||||||
set_inform_time()
|
|
||||||
{
|
|
||||||
local sec inform_time value
|
|
||||||
|
|
||||||
config_load cwmp
|
|
||||||
config_get inform_time acs periodic_inform_time '0001-01-01T00:00:00Z'
|
|
||||||
|
|
||||||
if [ "${inform_time}" == "0001-01-01T00:00:00Z" ]; then
|
|
||||||
sec=$(date +%s)
|
|
||||||
value="$(date -d @$(($sec-$RANDOM)) +%Y-%m-%dT%H:%M:%SZ)"
|
|
||||||
|
|
||||||
uci_set cwmp acs periodic_inform_time "$value"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
set_inform_time
|
|
||||||
@@ -1,139 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
. /lib/functions.sh
|
|
||||||
|
|
||||||
CLASS=""
|
|
||||||
OUI=""
|
|
||||||
SERIAL=""
|
|
||||||
|
|
||||||
get_vivsoi() {
|
|
||||||
# opt125 environment variable has data in below format
|
|
||||||
# +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
||||||
# | enterprise-number1 |
|
|
||||||
# | |
|
|
||||||
# +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
||||||
# | data-len1 | |
|
|
||||||
# +-+-+-+-+-+-+-+-+ option-data1 |
|
|
||||||
# / /
|
|
||||||
# +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -----
|
|
||||||
# | enterprise-number2 | ^
|
|
||||||
# | | |
|
|
||||||
# +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|
|
||||||
# | data-len2 | | optional
|
|
||||||
# +-+-+-+-+-+-+-+-+ option-data2 | |
|
|
||||||
# / / |
|
|
||||||
# +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|
|
||||||
# ~ ... ~ V
|
|
||||||
# +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -----
|
|
||||||
|
|
||||||
# Enterprise Id Len Sub Op SLen Data Sub Op SLen Data Sub Op SLen Data
|
|
||||||
# +-------------+-----+------+------+----+------+-----+----+-----+------+-----+----+
|
|
||||||
# | id | n | 1 | n1 | D1 | 2 | n2 | D2 | ... | 6 | n6 | D6 |
|
|
||||||
# +-------------+-----+------+------+----+------+-----+----+-----+------+-----+----+
|
|
||||||
|
|
||||||
local opt125="$1"
|
|
||||||
local len="$2"
|
|
||||||
local ent_id
|
|
||||||
|
|
||||||
#hex-string 2 character=1 Byte
|
|
||||||
# length in hex string will be twice of actual Byte length
|
|
||||||
[ "$len" -gt "8" ] || return
|
|
||||||
|
|
||||||
data="${opt125}"
|
|
||||||
rem_len="${len}"
|
|
||||||
while [ $rem_len -gt 0 ]; do
|
|
||||||
ent_id=${data:0:8}
|
|
||||||
ent_id=$(printf "%d\n" "0x$ent_id")
|
|
||||||
|
|
||||||
if [ $ent_id -ne 3561 ]; then
|
|
||||||
len_val=${data:8:2}
|
|
||||||
data_len=$(printf "%d\n" "0x$len_val")
|
|
||||||
# add 4 byte for ent_id and 1 byte for len
|
|
||||||
data_len=$(( data_len * 2 + 10 ))
|
|
||||||
# move ahead data to next enterprise id
|
|
||||||
data=${data:"${data_len}":"${rem_len}"}
|
|
||||||
rem_len=$(( rem_len - $data_len ))
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
|
|
||||||
# read the length of enterprise data
|
|
||||||
len_val=${data:8:2}
|
|
||||||
data_len=$(printf "%d\n" "0x$len_val")
|
|
||||||
# add 4 byte for ent_id and 1 byte for len
|
|
||||||
data_len=$(( data_len * 2 + 10 ))
|
|
||||||
|
|
||||||
opt_len=$(printf "%d\n" "0x$len_val")
|
|
||||||
[ $opt_len -eq 0 ] && return
|
|
||||||
|
|
||||||
# populate the option data of enterprise id
|
|
||||||
sub_data_len=$(( opt_len * 2))
|
|
||||||
# starting 10 means ahead of length field
|
|
||||||
sub_data=${data:10:"${sub_data_len}"}
|
|
||||||
|
|
||||||
# parsing of suboption of option 125
|
|
||||||
while [ $sub_data_len -gt 0 ]; do
|
|
||||||
# get the suboption id
|
|
||||||
sub_opt_id=${sub_data:0:2}
|
|
||||||
sub_opt_id=$(printf "%d\n" "0x$sub_opt_id")
|
|
||||||
|
|
||||||
# get the length of suboption
|
|
||||||
sub_opt_len=${sub_data:2:2}
|
|
||||||
sub_opt_len=$(printf "%d\n" "0x$sub_opt_len")
|
|
||||||
sub_opt_len=$(( sub_opt_len * 2 ))
|
|
||||||
|
|
||||||
# get the value of sub option starting 4 means starting after length
|
|
||||||
sub_opt_val=${sub_data:4:${sub_opt_len}}
|
|
||||||
|
|
||||||
# assign the value found in sub option
|
|
||||||
case "${sub_opt_id}" in
|
|
||||||
"4") OUI=$(echo -n $sub_opt_val | sed 's/\([0-9A-F]\{2\}\)/\\\\\\x\1/gI' | xargs printf && echo '')
|
|
||||||
;;
|
|
||||||
"5") SERIAL=$(echo -n $sub_opt_val | sed 's/\([0-9A-F]\{2\}\)/\\\\\\x\1/gI' | xargs printf && echo '')
|
|
||||||
;;
|
|
||||||
"6") CLASS=$(echo -n $sub_opt_val | sed 's/\([0-9A-F]\{2\}\)/\\\\\\x\1/gI' | xargs printf && echo '')
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
# add 2 bytes for sub_opt id and sub_opt len field
|
|
||||||
sub_opt_end=$(( sub_opt_len + 4 ))
|
|
||||||
|
|
||||||
# update the remaining sub option hex string length
|
|
||||||
sub_data_len=$((sub_data_len - sub_opt_end))
|
|
||||||
|
|
||||||
# fetch next sub option hex string
|
|
||||||
sub_data=${sub_data:${sub_opt_end}:${sub_data_len}}
|
|
||||||
done
|
|
||||||
|
|
||||||
# move ahead data to next enterprise id
|
|
||||||
data=${data:"${data_len}":"${rem_len}"}
|
|
||||||
rem_len=$(( rem_len - data_len ))
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
config_load cwmp
|
|
||||||
config_get_bool enable_cwmp cpe enable 1
|
|
||||||
config_get wan_intf cpe default_wan_interface "wan"
|
|
||||||
|
|
||||||
if [ "$enable_cwmp" = "0" ]; then
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "${wan_intf}" == "${INTERFACE}" ]; then
|
|
||||||
if [ -n "$opt125" ]; then
|
|
||||||
len=$(printf "$opt125"|wc -c)
|
|
||||||
get_vivsoi "$opt125" "$len"
|
|
||||||
fi
|
|
||||||
|
|
||||||
mkdir -p /var/state
|
|
||||||
touch /var/state/icwmp
|
|
||||||
sec=$(uci -q -c /var/state get icwmp.gatewayinfo)
|
|
||||||
if [ -z "${sec}" ]; then
|
|
||||||
sec=$(uci -q -c /var/state add icwmp gatewayinfo)
|
|
||||||
uci -q -c /var/state rename icwmp."${sec}"="gatewayinfo"
|
|
||||||
fi
|
|
||||||
|
|
||||||
uci -q -c /var/state set icwmp.gatewayinfo.class="$CLASS"
|
|
||||||
uci -q -c /var/state set icwmp.gatewayinfo.oui="$OUI"
|
|
||||||
uci -q -c /var/state set icwmp.gatewayinfo.serial="$SERIAL"
|
|
||||||
uci -q -c /var/state commit icwmp
|
|
||||||
fi
|
|
||||||
@@ -1,141 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
. /lib/functions.sh
|
|
||||||
|
|
||||||
DHCP_ACS_URL=""
|
|
||||||
DHCP_PROV_CODE=""
|
|
||||||
MIN_WAIT_INVL=""
|
|
||||||
INVL_MULTIPLIER=""
|
|
||||||
|
|
||||||
log() {
|
|
||||||
echo "$@" |logger -t cwmp.update -p info
|
|
||||||
}
|
|
||||||
|
|
||||||
get_opt43() {
|
|
||||||
# Check if option value is in encapsulated form
|
|
||||||
local opt43="$1"
|
|
||||||
local len="$2"
|
|
||||||
|
|
||||||
[ "$len" -gt "2" ] || return
|
|
||||||
|
|
||||||
first_byte=${opt43:0:2}
|
|
||||||
first_byte=$(printf "%d\n" "0x$first_byte")
|
|
||||||
|
|
||||||
if [ $len -ge 4 ] && [ $first_byte -ge 1 ] && [ $first_byte -le 4 ]; then
|
|
||||||
# it is in encapsulated form
|
|
||||||
# opt43 encapsulated vendor-specific option has data in below format
|
|
||||||
# Code Len Data item Code Len Data item Code
|
|
||||||
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
|
|
||||||
# | T1 | n | d1 | d2 | ... | T2 | n | D1 | D2 | ... | ... |
|
|
||||||
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
|
|
||||||
|
|
||||||
#hex-string 2 character=1 Byte
|
|
||||||
# length in hex string will be twice of actual Byte length
|
|
||||||
|
|
||||||
data="${opt43}"
|
|
||||||
rem_len="${len}"
|
|
||||||
# parsing of suboption of option 43
|
|
||||||
while [ $rem_len -gt 0 ]; do
|
|
||||||
# get the suboption id
|
|
||||||
sub_opt_id=${data:0:2}
|
|
||||||
sub_opt_id=$(printf "%d\n" "0x$sub_opt_id")
|
|
||||||
|
|
||||||
# get the length of suboption
|
|
||||||
sub_opt_len=${data:2:2}
|
|
||||||
sub_opt_len=$(printf "%d\n" "0x$sub_opt_len")
|
|
||||||
sub_opt_len=$(( sub_opt_len * 2 ))
|
|
||||||
|
|
||||||
# get the value of sub option starting 4 means starting after length
|
|
||||||
sub_opt_val=${data:4:${sub_opt_len}}
|
|
||||||
|
|
||||||
# assign the value found in sub option
|
|
||||||
case "${sub_opt_id}" in
|
|
||||||
"1") DHCP_ACS_URL=$(echo -n $sub_opt_val | sed 's/\([0-9A-F]\{2\}\)/\\\\\\x\1/gI' | xargs printf && echo '')
|
|
||||||
;;
|
|
||||||
"2") DHCP_PROV_CODE=$(echo -n $sub_opt_val | sed 's/\([0-9A-F]\{2\}\)/\\\\\\x\1/gI' | xargs printf && echo '')
|
|
||||||
;;
|
|
||||||
"3") MIN_WAIT_INVL=$(echo -n $sub_opt_val | sed 's/\([0-9A-F]\{2\}\)/\\\\\\x\1/gI' | xargs printf && echo '')
|
|
||||||
;;
|
|
||||||
"4") INVL_MULTIPLIER=$(echo -n $sub_opt_val | sed 's/\([0-9A-F]\{2\}\)/\\\\\\x\1/gI' | xargs printf && echo '')
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
# add 2 bytes for sub_opt id and sub_opt len field
|
|
||||||
sub_opt_end=$(( sub_opt_len + 4 ))
|
|
||||||
|
|
||||||
# fetch next sub option hex string
|
|
||||||
data=${data:${sub_opt_end}:${len}}
|
|
||||||
|
|
||||||
# update the remaining sub option hex string length
|
|
||||||
rem_len=$((rem_len - sub_opt_end))
|
|
||||||
done
|
|
||||||
else
|
|
||||||
DHCP_ACS_URL=$(echo -n $opt43 | sed 's/\([0-9A-F]\{2\}\)/\\\\\\x\1/gI' | xargs printf && echo '')
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
config_load cwmp
|
|
||||||
config_get wan_intf cpe default_wan_interface "wan"
|
|
||||||
config_get dhcp_discovery acs dhcp_discovery "0"
|
|
||||||
config_get dhcp_url acs dhcp_url ""
|
|
||||||
config_get min_wait_intvl acs dhcp_retry_min_wait_interval "0"
|
|
||||||
config_get intvl_multi acs dhcp_retry_interval_multiplier "0"
|
|
||||||
|
|
||||||
config_change=0
|
|
||||||
discovery_enable=0
|
|
||||||
|
|
||||||
if [ "$dhcp_discovery" = "1" ] || [ "$dhcp_discovery" = "true" ] || [ "$dhcp_discovery" = "enable" ]; then
|
|
||||||
discovery_enable=1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$discovery_enable" = "0" ]; then
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "${wan_intf}" == "${INTERFACE}" ]; then
|
|
||||||
if [ -n "$opt43" ]; then
|
|
||||||
len=$(printf "$opt43"|wc -c)
|
|
||||||
get_opt43 "$opt43" "$len"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -z "$DHCP_ACS_URL" ]; then
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
sec=$(uci -q get cwmp.acs)
|
|
||||||
|
|
||||||
if [ -z "${sec}" ]; then
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "${dhcp_url}" != "${DHCP_ACS_URL}" ]; then
|
|
||||||
uci -q set cwmp.acs.dhcp_url="$DHCP_ACS_URL"
|
|
||||||
config_change=1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -n "$MIN_WAIT_INVL" ] && [ "${MIN_WAIT_INVL}" != "${min_wait_intvl}" ]; then
|
|
||||||
uci -q set cwmp.acs.dhcp_retry_min_wait_interval="$MIN_WAIT_INVL"
|
|
||||||
config_change=1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -n "$INVL_MULTIPLIER" ] && [ "${INVL_MULTIPLIER}" != "${intvl_multi}" ]; then
|
|
||||||
uci -q set cwmp.acs.dhcp_retry_interval_multiplier="$INVL_MULTIPLIER"
|
|
||||||
config_change=1
|
|
||||||
fi
|
|
||||||
|
|
||||||
sec=$(uci -q get cwmp.cpe)
|
|
||||||
|
|
||||||
if [ -n "${sec}" ] && [ -n "$DHCP_PROV_CODE" ]; then
|
|
||||||
uci -q set cwmp.cpe.dhcp_provisioning_code="$DHCP_PROV_CODE"
|
|
||||||
config_change=1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ $config_change -eq 0 ]; then
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
# ACS url has been set, inform icwmpd to reload new configuration
|
|
||||||
sleep 10 # wait for some time to avoid interface fluctuation
|
|
||||||
|
|
||||||
ubus call uci commit '{"config":"cwmp"}'
|
|
||||||
fi
|
|
||||||
@@ -1,2 +1 @@
|
|||||||
/var/run/icwmpd/icwmpd_backup_session.xml
|
/var/run/icwmpd/icwmpd_backup_session.xml
|
||||||
/etc/icwmpd/cwmp
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
if (PACKAGE_ieee1905)
|
if (PACKAGE_ieee1905)
|
||||||
|
|
||||||
menu "Configuration"
|
menu "Configurations"
|
||||||
|
|
||||||
config IEEE1905_EXTENSION_ALLOWED
|
config IEEE1905_EXTENSION_ALLOWED
|
||||||
bool "Allow plugins to extend 1905 CMDUs and/or TLVs"
|
bool "Allow plugins to extend 1905 CMDUs and/or TLVs"
|
||||||
@@ -10,17 +10,5 @@ config IEEE1905_PLATFORM_HAS_WIFI
|
|||||||
bool "Platform has WiFi"
|
bool "Platform has WiFi"
|
||||||
default y if PACKAGE_libwifi
|
default y if PACKAGE_libwifi
|
||||||
|
|
||||||
config IEEE1905_CMDU_SA_IS_ALMAC
|
|
||||||
bool "Send CMDUs with SA set to 1905 AL-macaddress instead of interface macaddress"
|
|
||||||
default n
|
|
||||||
|
|
||||||
config IEEE1905_WIFI_EASYMESH
|
|
||||||
bool "Include WiFi-Alliance's Easymesh updates"
|
|
||||||
default y
|
|
||||||
|
|
||||||
config IEEE1905_CMDU_FRAGMENT_TLV_BOUNDARY
|
|
||||||
bool "Fragment large CMDU frame at TLV boundary instead of octet boundary"
|
|
||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|||||||
14
ieee1905/Config.map-plugin.in
Normal file
14
ieee1905/Config.map-plugin.in
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
if (PACKAGE_map-plugin)
|
||||||
|
|
||||||
|
menu "Configurations"
|
||||||
|
|
||||||
|
config MULTIAP_DYNAMIC_CNTLR_SYNC_CONFIG
|
||||||
|
bool "Sync configuration between dynamic controllers in the network"
|
||||||
|
default n
|
||||||
|
|
||||||
|
config MULTIAP_FUZZ_1905_CMDUS
|
||||||
|
bool "Include support to fuzz 1905 CMDUs for testing purpose"
|
||||||
|
default n
|
||||||
|
|
||||||
|
endmenu
|
||||||
|
endif
|
||||||
@@ -1,17 +1,17 @@
|
|||||||
#
|
#
|
||||||
# Copyright (C) 2020-2023 IOPSYS Software Solutions AB
|
# Copyright (C) 2021 IOPSYS
|
||||||
#
|
#
|
||||||
|
|
||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=ieee1905
|
PKG_NAME:=ieee1905
|
||||||
PKG_VERSION:=8.3.4
|
PKG_VERSION:=4.6.22
|
||||||
|
|
||||||
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:=526690993c93720ee1707bba6b7a08e8c28f2dd9
|
PKG_SOURCE_VERSION:=b5b5379bb7f8ec0c351bfa34385b74b21306d107
|
||||||
PKG_SOURCE_URL:=https://dev.iopsys.eu/multi-ap/ieee1905.git
|
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/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
|
||||||
endif
|
endif
|
||||||
@@ -35,21 +35,31 @@ define Package/ieee1905/config
|
|||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/libieee1905
|
define Package/libieee1905
|
||||||
$(call Package/ieee1905/Default)
|
$(call Package/ieee1905/Default,$(1))
|
||||||
TITLE:=libieee1905.so (library for CMDU and TLV handling)
|
TITLE+= (library for CMDU and TLV handling)
|
||||||
DEPENDS= +libubox +libuci +libubus +libeasy +libnl-genl \
|
DEPENDS= +libubox +libuci +libubus +libeasy +libnl-genl \
|
||||||
+libjson-c +libblobmsg-json
|
+libjson-c +libblobmsg-json
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/ieee1905
|
define Package/ieee1905
|
||||||
$(call Package/ieee1905/Default)
|
$(call Package/ieee1905/Default,$(1))
|
||||||
TITLE:=ieee1905d (daemon implementing 1905.1 and provides cli)
|
TITLE+= ieee1905d (daemon implementing 1905.1 and provides cli)
|
||||||
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
|
||||||
endef
|
endef
|
||||||
|
|
||||||
include $(wildcard plugins/*.mk)
|
|
||||||
|
define Package/map-plugin
|
||||||
|
$(call Package/ieee1905/Default,$(1))
|
||||||
|
TITLE:=Multi-AP (Easymesh) plugin
|
||||||
|
DEPENDS= +libubox +libuci +libubus +libeasy +libnl-genl \
|
||||||
|
+libjson-c +libblobmsg-json +ieee1905 +libieee1905
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/map-plugin/config
|
||||||
|
source "$(SOURCE)/Config.map-plugin.in"
|
||||||
|
endef
|
||||||
|
|
||||||
define Package/ieee1905/description
|
define Package/ieee1905/description
|
||||||
This package provides IEEE Std 1905.1 stack.
|
This package provides IEEE Std 1905.1 stack.
|
||||||
@@ -59,15 +69,6 @@ define Package/libieee1905/description
|
|||||||
This package provides library functions for IEEE Std 1905.1 stack.
|
This package provides library functions for IEEE Std 1905.1 stack.
|
||||||
endef
|
endef
|
||||||
|
|
||||||
plugins := \
|
|
||||||
$(if $(CONFIG_PACKAGE_map-plugin),map) \
|
|
||||||
$(if $(CONFIG_PACKAGE_snoop-plugin),snoop) \
|
|
||||||
$(if $(CONFIG_PACKAGE_topology-plugin),topology)
|
|
||||||
|
|
||||||
|
|
||||||
ppkg:=$(patsubst plugins/%.mk,%-plugin,$(wildcard plugins/*.mk))
|
|
||||||
|
|
||||||
|
|
||||||
TARGET_CFLAGS += \
|
TARGET_CFLAGS += \
|
||||||
-I$(STAGING_DIR)/usr/include \
|
-I$(STAGING_DIR)/usr/include \
|
||||||
-I$(STAGING_DIR)/usr/include/libnl3 \
|
-I$(STAGING_DIR)/usr/include/libnl3 \
|
||||||
@@ -77,26 +78,10 @@ ifeq ($(CONFIG_IEEE1905_PLATFORM_HAS_WIFI),y)
|
|||||||
TARGET_CFLAGS += -DHAS_WIFI
|
TARGET_CFLAGS += -DHAS_WIFI
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(CONFIG_IEEE1905_CMDU_SA_IS_ALMAC),y)
|
ifeq ($(CONFIG_MULTIAP_DYNAMIC_CNTLR_SYNC_CONFIG),y)
|
||||||
TARGET_CFLAGS += -DCMDU_SA_IS_ALMAC
|
TARGET_CFLAGS += -DDYNAMIC_CNTLR_SYNC_CONFIG
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(CONFIG_IEEE1905_WIFI_EASYMESH),y)
|
|
||||||
TARGET_CFLAGS += -DWIFI_EASYMESH
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(CONFIG_IEEE1905_CMDU_FRAGMENT_TLV_BOUNDARY),y)
|
|
||||||
TARGET_CFLAGS += -DIEEE1905_CMDU_FRAGMENT_TLV_BOUNDARY
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(CONFIG_IEEE1905_EXTENSION_ALLOWED),y)
|
|
||||||
TARGET_CFLAGS += -DEXTENSION_ALLOWED
|
|
||||||
endif
|
|
||||||
|
|
||||||
TARGET_CFLAGS += -DHAS_UBUS
|
|
||||||
|
|
||||||
MAKE_FLAGS += \
|
|
||||||
extmod_subdirs="$(patsubst %,extensions/%,$(plugins))"
|
|
||||||
|
|
||||||
MAKE_PATH:=src
|
MAKE_PATH:=src
|
||||||
|
|
||||||
@@ -115,6 +100,25 @@ define Package/libieee1905/install
|
|||||||
$(CP) $(PKG_BUILD_DIR)/src/libmidgen.so $(1)/usr/lib/
|
$(CP) $(PKG_BUILD_DIR)/src/libmidgen.so $(1)/usr/lib/
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
define Package/map-plugin/install
|
||||||
|
$(INSTALL_DIR) $(1)/usr/lib
|
||||||
|
$(INSTALL_DIR) $(1)/usr/lib/ieee1905
|
||||||
|
$(CP) $(PKG_BUILD_DIR)/src/extensions/map/libmaputil.so $(1)/usr/lib/libmaputil.so
|
||||||
|
$(CP) $(PKG_BUILD_DIR)/src/extensions/map/map.so $(1)/usr/lib/ieee1905/map.so
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Build/InstallDev/map-plugin
|
||||||
|
$(INSTALL_DIR) $(1)/usr/lib
|
||||||
|
$(INSTALL_DIR) $(1)/usr/include
|
||||||
|
$(INSTALL_DIR) $(1)/usr/lib/ieee1905
|
||||||
|
$(CP) $(PKG_BUILD_DIR)/src/extensions/map/map2.h $(1)/usr/include/map2.h
|
||||||
|
$(CP) $(PKG_BUILD_DIR)/src/extensions/map/map_module.h $(1)/usr/include/map_module.h
|
||||||
|
$(CP) $(PKG_BUILD_DIR)/src/extensions/map/cntlrsync.h $(1)/usr/include/cntlrsync.h
|
||||||
|
$(CP) $(PKG_BUILD_DIR)/src/extensions/map/map.so $(1)/usr/lib/ieee1905/map.so
|
||||||
|
$(CP) $(PKG_BUILD_DIR)/src/extensions/map/libmaputil.so $(1)/usr/lib/libmaputil.so
|
||||||
|
endef
|
||||||
|
|
||||||
|
|
||||||
define Build/InstallDev/libieee1905
|
define Build/InstallDev/libieee1905
|
||||||
$(INSTALL_DIR) $(1)/usr/lib
|
$(INSTALL_DIR) $(1)/usr/lib
|
||||||
$(INSTALL_DIR) $(1)/usr/include
|
$(INSTALL_DIR) $(1)/usr/include
|
||||||
@@ -123,6 +127,7 @@ define Build/InstallDev/libieee1905
|
|||||||
$(CP) $(PKG_BUILD_DIR)/src/cmdu_ackq.h $(1)/usr/include/
|
$(CP) $(PKG_BUILD_DIR)/src/cmdu_ackq.h $(1)/usr/include/
|
||||||
$(CP) $(PKG_BUILD_DIR)/src/1905_tlvs.h $(1)/usr/include/
|
$(CP) $(PKG_BUILD_DIR)/src/1905_tlvs.h $(1)/usr/include/
|
||||||
$(CP) $(PKG_BUILD_DIR)/src/i1905_wsc.h $(1)/usr/include/
|
$(CP) $(PKG_BUILD_DIR)/src/i1905_wsc.h $(1)/usr/include/
|
||||||
|
$(CP) $(PKG_BUILD_DIR)/src/bufutil.h $(1)/usr/include/
|
||||||
$(CP) $(PKG_BUILD_DIR)/src/timer_impl.h $(1)/usr/include/
|
$(CP) $(PKG_BUILD_DIR)/src/timer_impl.h $(1)/usr/include/
|
||||||
$(CP) $(PKG_BUILD_DIR)/src/i1905_extension.h $(1)/usr/include/
|
$(CP) $(PKG_BUILD_DIR)/src/i1905_extension.h $(1)/usr/include/
|
||||||
$(CP) $(PKG_BUILD_DIR)/src/libmidgen.so $(1)/usr/lib/
|
$(CP) $(PKG_BUILD_DIR)/src/libmidgen.so $(1)/usr/lib/
|
||||||
@@ -131,7 +136,7 @@ endef
|
|||||||
|
|
||||||
define Build/InstallDev
|
define Build/InstallDev
|
||||||
$(call Build/InstallDev/libieee1905,$(1),$(2))
|
$(call Build/InstallDev/libieee1905,$(1),$(2))
|
||||||
$(foreach p,$(ppkg),$(call Build/InstallDev/$(p),$(1),$(2)))
|
$(call Build/InstallDev/map-plugin,$(1),$(2))
|
||||||
endef
|
endef
|
||||||
|
|
||||||
ifeq ($(LOCAL_DEV),1)
|
ifeq ($(LOCAL_DEV),1)
|
||||||
@@ -142,4 +147,4 @@ endif
|
|||||||
|
|
||||||
$(eval $(call BuildPackage,ieee1905))
|
$(eval $(call BuildPackage,ieee1905))
|
||||||
$(eval $(call BuildPackage,libieee1905))
|
$(eval $(call BuildPackage,libieee1905))
|
||||||
$(eval $(foreach p,$(ppkg),$(call BuildPackage,$(p))))
|
$(eval $(call BuildPackage,map-plugin))
|
||||||
|
|||||||
@@ -2,35 +2,21 @@ config ieee1905 'ieee1905'
|
|||||||
option enabled '1'
|
option enabled '1'
|
||||||
option extension '1'
|
option extension '1'
|
||||||
list extmodule 'map'
|
list extmodule 'map'
|
||||||
list extmodule 'topology'
|
option registrar '2 5'
|
||||||
option registrar '2 5 6'
|
|
||||||
list exclude_tagging '/eth.*'
|
|
||||||
# option macaddress '0a:1b:2c:3d:4e:50'
|
|
||||||
|
|
||||||
config al-iface
|
|
||||||
option enabled '1'
|
|
||||||
list ifname 'br-lan'
|
|
||||||
list ifname '/eth.*'
|
|
||||||
list ifname '/wl.*'
|
|
||||||
list ifname '/wds.*'
|
|
||||||
|
|
||||||
# ap sections are auto-generated/overwritten during onboarding
|
|
||||||
#
|
|
||||||
config ap
|
config ap
|
||||||
option band '2'
|
option band '2'
|
||||||
option ssid 'IOWRT-2.4GHz'
|
option ssid 'TestSSID.2'
|
||||||
option encryption 'sae-mixed'
|
option encryption 'psk2'
|
||||||
option key '1234567890'
|
option key '5555500000'
|
||||||
|
|
||||||
config ap
|
config ap
|
||||||
option band '5'
|
option band '5'
|
||||||
option ssid 'IOWRT-5GHz'
|
option ssid 'TestSSID.5'
|
||||||
option encryption 'sae-mixed'
|
option encryption 'psk2'
|
||||||
option key '1234567890'
|
option key '2222200000'
|
||||||
|
|
||||||
config ap
|
|
||||||
option band '6'
|
|
||||||
option ssid 'IOWRT-6GHz'
|
|
||||||
option encryption 'sae-mixed'
|
|
||||||
option key '1234567890'
|
|
||||||
|
|
||||||
|
config al-iface
|
||||||
|
option enabled 1
|
||||||
|
option ifname 'br-lan'
|
||||||
|
option type 'bridge'
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
#!/bin/sh /etc/rc.common
|
#!/bin/sh /etc/rc.common
|
||||||
|
|
||||||
START=60
|
START=96
|
||||||
STOP=21
|
STOP=21
|
||||||
|
|
||||||
USE_PROCD=1
|
USE_PROCD=1
|
||||||
@@ -42,10 +42,9 @@ validate_ap_section() {
|
|||||||
local section="$1"
|
local section="$1"
|
||||||
|
|
||||||
uci_validate_section ieee1905 $section "${1}" \
|
uci_validate_section ieee1905 $section "${1}" \
|
||||||
'band:or("2", "5", "60", "6")' \
|
'band:or("2", "5", "60")' \
|
||||||
'ssid:string' \
|
'ssid:string' \
|
||||||
'encryption:or("psk2", "sae-mixed", "sae",
|
'encryption:or("psk2", "sae-mixed", "sae", string)' \
|
||||||
"psk", "psk-mixed", "none", string)' \
|
|
||||||
'key:string' \
|
'key:string' \
|
||||||
'uuid:string' \
|
'uuid:string' \
|
||||||
'manufacturer:string' \
|
'manufacturer:string' \
|
||||||
@@ -83,10 +82,8 @@ start_service() {
|
|||||||
validate_ieee1905_config || return 1;
|
validate_ieee1905_config || return 1;
|
||||||
|
|
||||||
procd_open_instance
|
procd_open_instance
|
||||||
procd_set_param command "/usr/sbin/ieee1905d" "-o" "/tmp/ieee1905.log" "-f"
|
procd_set_param command "/usr/sbin/ieee1905d"
|
||||||
procd_set_param respawn
|
procd_set_param respawn
|
||||||
procd_set_param limits core="unlimited"
|
|
||||||
# procd_set_param env IEEE1905_LOG_CMDU=1
|
|
||||||
# procd_set_param stdout 1
|
# procd_set_param stdout 1
|
||||||
# procd_set_param stderr 1
|
# procd_set_param stderr 1
|
||||||
procd_close_instance
|
procd_close_instance
|
||||||
|
|||||||
@@ -1,22 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
|
|
||||||
BMAC=$(db -q get hw.board.basemac)
|
|
||||||
BMAC=${BMAC//:/}
|
|
||||||
BMAC=${BMAC// /}
|
|
||||||
BMAC=$(printf "%12.12X" $((0x$BMAC)))
|
|
||||||
|
|
||||||
[ "$BMAC" == "" ] && exit 1
|
|
||||||
|
|
||||||
LMAC=$((0x$BMAC & 0xfeffffffffff))
|
|
||||||
LMAC=$(($LMAC | 0x020000000000))
|
|
||||||
LMAC=$(printf "%12.12X" $LMAC)
|
|
||||||
LMAC=$(echo $LMAC | sed -e 's/[0-9A-F]\{2\}/&:/g' -e 's/:$//')
|
|
||||||
|
|
||||||
mac=$(uci -q get ieee1905.ieee1905.macaddress)
|
|
||||||
|
|
||||||
[ "$mac" != "" ] && exit 0
|
|
||||||
|
|
||||||
uci set ieee1905.ieee1905.macaddress="$LMAC"
|
|
||||||
uci commit ieee1905
|
|
||||||
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
. /lib/functions.sh
|
|
||||||
|
|
||||||
config_load ieee1905
|
|
||||||
|
|
||||||
ifname_to_list() {
|
|
||||||
local section=$1
|
|
||||||
|
|
||||||
config_get ifname $section ifname # get list or option as space separated values
|
|
||||||
ifname=${ifname//,/\ } # convert csv with space separation
|
|
||||||
uci del ieee1905.${section}.ifname # delete entry
|
|
||||||
for i in ${ifname}; do
|
|
||||||
uci add_list ieee1905.${section}.ifname="$i" # writeback entry as list
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
config_foreach ifname_to_list al-iface
|
|
||||||
@@ -1,51 +0,0 @@
|
|||||||
define Package/map-plugin
|
|
||||||
$(call Package/ieee1905/Default)
|
|
||||||
TITLE:=Multi-AP plugin supporting WiFi-Alliance Easymesh standard
|
|
||||||
DEPENDS= +libubox +libuci +libubus +libeasy +libnl-genl \
|
|
||||||
+libjson-c +libblobmsg-json +ieee1905 +libieee1905
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Package/map-plugin/config
|
|
||||||
if (PACKAGE_map-plugin)
|
|
||||||
|
|
||||||
menu "Configuration"
|
|
||||||
|
|
||||||
config MULTIAP_EASYMESH_VERSION
|
|
||||||
int "Easymesh version"
|
|
||||||
default 4
|
|
||||||
|
|
||||||
config MULTIAP_DYNAMIC_CNTLR_SYNC_CONFIG
|
|
||||||
bool "Sync configuration between dynamic controllers in the network"
|
|
||||||
default y
|
|
||||||
|
|
||||||
config MULTIAP_FUZZ_1905_CMDUS
|
|
||||||
bool "Include support to fuzz 1905 CMDUs for testing purpose"
|
|
||||||
default n
|
|
||||||
|
|
||||||
endmenu
|
|
||||||
endif
|
|
||||||
endef
|
|
||||||
|
|
||||||
TARGET_CFLAGS += -DEASYMESH_VERSION=$(CONFIG_MULTIAP_EASYMESH_VERSION)
|
|
||||||
|
|
||||||
ifeq ($(CONFIG_MULTIAP_DYNAMIC_CNTLR_SYNC_CONFIG),y)
|
|
||||||
TARGET_CFLAGS += -DDYNAMIC_CNTLR_SYNC_CONFIG
|
|
||||||
endif
|
|
||||||
|
|
||||||
define Build/InstallDev/map-plugin
|
|
||||||
$(INSTALL_DIR) $(1)/usr/lib
|
|
||||||
$(INSTALL_DIR) $(1)/usr/include
|
|
||||||
$(INSTALL_DIR) $(1)/usr/lib/ieee1905
|
|
||||||
$(CP) $(PKG_BUILD_DIR)/src/extensions/map/easymesh.h $(1)/usr/include/easymesh.h
|
|
||||||
$(CP) $(PKG_BUILD_DIR)/src/extensions/map/map_module.h $(1)/usr/include/map_module.h
|
|
||||||
$(CP) $(PKG_BUILD_DIR)/src/extensions/map/cntlrsync.h $(1)/usr/include/cntlrsync.h
|
|
||||||
$(CP) $(PKG_BUILD_DIR)/src/extensions/map/map.so $(1)/usr/lib/ieee1905/map.so
|
|
||||||
$(CP) $(PKG_BUILD_DIR)/src/extensions/map/libmaputil.so $(1)/usr/lib/libmaputil.so
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Package/map-plugin/install
|
|
||||||
$(INSTALL_DIR) $(1)/usr/lib
|
|
||||||
$(INSTALL_DIR) $(1)/usr/lib/ieee1905
|
|
||||||
$(CP) $(PKG_BUILD_DIR)/src/extensions/map/libmaputil.so $(1)/usr/lib/libmaputil.so
|
|
||||||
$(CP) $(PKG_BUILD_DIR)/src/extensions/map/map.so $(1)/usr/lib/ieee1905/map.so
|
|
||||||
endef
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
define Package/snoop-plugin
|
|
||||||
$(call Package/ieee1905/Default)
|
|
||||||
TITLE:=Show all received 1905 CMDUs over UBUS
|
|
||||||
DEPENDS= +libubox +libuci +libubus +libeasy +libnl-genl \
|
|
||||||
+libjson-c +libblobmsg-json +ieee1905 +libieee1905
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Package/snoop-plugin/install
|
|
||||||
$(INSTALL_DIR) $(1)/usr/lib
|
|
||||||
$(INSTALL_DIR) $(1)/usr/lib/ieee1905
|
|
||||||
$(CP) $(PKG_BUILD_DIR)/src/extensions/snoop/snoop.so $(1)/usr/lib/ieee1905/snoop.so
|
|
||||||
endef
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
define Package/topology-plugin
|
|
||||||
$(call Package/ieee1905/Default)
|
|
||||||
TITLE:=Build full network topology of the 1905 nodes only
|
|
||||||
DEPENDS= +libubox +libuci +libubus +libeasy +libnl-genl \
|
|
||||||
+libjson-c +libblobmsg-json +ieee1905 +libieee1905
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Package/topology-plugin/install
|
|
||||||
$(INSTALL_DIR) $(1)/usr/lib
|
|
||||||
$(INSTALL_DIR) $(1)/usr/lib/ieee1905
|
|
||||||
$(CP) $(PKG_BUILD_DIR)/src/extensions/topology/topology.so $(1)/usr/lib/ieee1905/topology.so
|
|
||||||
endef
|
|
||||||
@@ -18,7 +18,12 @@ start_service() {
|
|||||||
procd_close_instance
|
procd_close_instance
|
||||||
}
|
}
|
||||||
|
|
||||||
|
stop() {
|
||||||
|
service_stop imonitor
|
||||||
|
}
|
||||||
|
|
||||||
reload_service() {
|
reload_service() {
|
||||||
stop
|
stop
|
||||||
start
|
start
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
56
inbd/Makefile
Normal file
56
inbd/Makefile
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
#
|
||||||
|
# Copyright (C) 2016 iopsys
|
||||||
|
#
|
||||||
|
# This is free software, licensed under the GNU General Public License v2.
|
||||||
|
# See /LICENSE for more information.
|
||||||
|
#
|
||||||
|
|
||||||
|
include $(TOPDIR)/rules.mk
|
||||||
|
include $(INCLUDE_DIR)/kernel.mk
|
||||||
|
|
||||||
|
PKG_NAME:=inbd
|
||||||
|
PKG_VERSION:=1.2.2
|
||||||
|
PKG_RELEASE:=1
|
||||||
|
|
||||||
|
PKG_SOURCE_VERSION:=10f765f3d0fcc226b6ecf0c481598c9e7f76315e
|
||||||
|
PKG_SOURCE_PROTO:=git
|
||||||
|
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/inbd
|
||||||
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_RELEASE)-$(PKG_SOURCE_VERSION).tar.gz
|
||||||
|
PKG_MIRROR_HASH:=skip
|
||||||
|
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
|
||||||
|
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
|
||||||
|
|
||||||
|
PKG_LICENSE:=GPLv2
|
||||||
|
PKG_LICENSE_FILES:=LICENSE
|
||||||
|
|
||||||
|
# support parallel build
|
||||||
|
PKG_BUILD_PARALLEL:=1
|
||||||
|
|
||||||
|
#re create configure scripts if not present.
|
||||||
|
PKG_FIXUP:=autoreconf
|
||||||
|
|
||||||
|
# run install target when cross compiling. basically, make install DESTDIR=$(PKG_INSTALL_DIR)
|
||||||
|
# this way we don't need to pick out the resulting files from the build dir.
|
||||||
|
PKG_INSTALL:=1
|
||||||
|
|
||||||
|
include $(INCLUDE_DIR)/package.mk
|
||||||
|
|
||||||
|
define Package/inbd
|
||||||
|
CATEGORY:=Utilities
|
||||||
|
TITLE:=iopsys Netlink Bridge Daemon
|
||||||
|
URL:=
|
||||||
|
DEPENDS:=+libuci +libubus +libblobmsg-json +libnl-genl
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/inbd/description
|
||||||
|
Application handling netlink messages from kernel and sending them out on ubus.
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/inbd/install
|
||||||
|
$(INSTALL_DIR) $(1)/usr/bin
|
||||||
|
$(INSTALL_DIR) $(1)/etc/init.d/
|
||||||
|
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/inbd $(1)/usr/bin/
|
||||||
|
cp $(PKG_BUILD_DIR)/files/etc/init.d/inbd $(1)/etc/init.d/
|
||||||
|
endef
|
||||||
|
|
||||||
|
$(eval $(call BuildPackage,inbd))
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user