Compare commits

..

34 Commits

Author SHA1 Message Date
Amit Kumar
2575f33e57 ponmngr: added documentaion files 2023-01-17 12:38:41 +00:00
Janusz Dziedzic
51b2ffd607 easy-soc-libs: 7.2.7 2023-01-17 12:34:50 +00:00
vdutta
091c4b81f9 bbf: 6.8.19 2023-01-17 17:44:46 +05:30
nevadita.chatterjee
c68554a42c map-controller: Fixing pidof in reload 2023-01-17 16:48:26 +05:30
Jakob Olsson
10de78cd1a map-topology: 2.5.1.15 2023-01-17 11:40:17 +01:00
Filip Matusiak
6bd995e445 map-controller: 4.1.0.2
Signed-off-by: Filip Matusiak <filip.matusiak@iopsys.eu>
2023-01-17 09:41:52 +01:00
suvendhu
087e0e3750 icwmp: Added dslforum.org in dhcp option 60 2023-01-16 16:58:40 +05:30
Sukru Senli
c3f5c269aa iop: genconfig: in customerconfigs use the same branch as in iowrt repo 2023-01-16 11:57:04 +01:00
vdutta
4ef1ac4703 udpecho: 2.0.3 2023-01-16 15:20:05 +05:30
vdutta
b9c58a99a5 twamp: 1.2.4 2023-01-16 14:48:48 +05:30
vdutta
4bec432070 swmodd: 2.1.20 2023-01-16 14:45:27 +05:30
vdutta
e2556a0f3d stunc: 1.1.15 2023-01-16 14:44:02 +05:30
vdutta
f265b9fe7b usermngr: 1.0.6 2023-01-16 14:41:59 +05:30
Anjan Chanda
c2bf977fb6 iop: add libwifiutils package in default config 2023-01-16 09:52:51 +01:00
Anjan Chanda
44030e710a wfadatad: add libwifiutils.so as package dependency 2023-01-16 09:52:51 +01:00
Anjan Chanda
e0028e8079 map-controller: add libwifiutils.so as package dependency 2023-01-16 09:52:51 +01:00
Anjan Chanda
9c14d21609 easy-soc-libs: 7.2.6: fix build on platforms having no WiFi 2023-01-16 09:52:51 +01:00
Amit Kumar
d690e1a7a5 ponmngr: Updated XPON bbf json for Transceiver 2023-01-16 07:50:30 +00:00
vdutta
bfacccba18 obuspa: Integrate obuspa-7.0.0 2023-01-16 12:47:36 +05:30
Marek Puzyniak
8b93d6ce3a wifimngr: 15.0.4 2023-01-13 16:35:16 +00:00
Marek Puzyniak
69d12b567d easy-soc-libs: 7.2.5 2023-01-13 16:33:28 +00:00
Jakob Olsson
4fbede4cb2 map-controller: 4.1.0.1 2023-01-13 16:55:53 +01:00
Jakob Olsson
e758208a17 map-agent: 4.1.0.1 2023-01-13 16:42:26 +01:00
Amin Ben Romdhane
a5f04ddb5f bbf: 6.8.18 2023-01-13 11:18:25 +01:00
vdutta
48913ed4bf sulu: 1.3.26 2023-01-13 12:20:48 +05:30
Amin Ben Romdhane
a8e8d4b109 ssdpd: 1.0.4 2023-01-12 13:33:40 +00:00
Amit Kumar
3a968d1914 map-topology: Updated Makefile commit version 2023-01-12 17:56:20 +05:30
Amit Kumar
58f4ad8e5a map-topology: cherry-pick from 6.5 2023-01-12 09:47:28 +05:30
Amit Kumar
549d681fab ponmngr: updated bbf json file for transceiver 2023-01-11 08:54:02 +00:00
Amin Ben Romdhane
5313770972 usermngr: 1.0.5 2023-01-10 17:39:46 +01:00
Amin Ben Romdhane
9046c71d00 bbf: 6.8.17 2023-01-10 17:38:27 +01:00
Filip Matusiak
87a71c7389 map-controller: validate thresholds in sta_steering section of config
Signed-off-by: Filip Matusiak <filip.matusiak@iopsys.eu>
2023-01-10 11:38:46 +00:00
Janusz Dziedzic
834bab34ab easy-soc-libs: 7.2.4
Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
2023-01-10 09:30:51 +00:00
Anjan Chanda
a04593f02d wfadatad-decollector-4.0.0.1: deprecate wfadatad (deagent) package 2023-01-05 13:14:16 +01:00
41 changed files with 2270 additions and 346 deletions

View File

@@ -5,11 +5,11 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=libbbfdm
PKG_VERSION:=6.8.16
PKG_VERSION:=6.8.19
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/bbf.git
PKG_SOURCE_VERSION:=0ef6169d86333b8727ed34c63f379b08254340e3
PKG_SOURCE_VERSION:=4e82190d88f73494dbc6d261e6eb507e348e10e3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_MIRROR_HASH:=skip

View File

@@ -7,13 +7,13 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=easy-soc-libs
PKG_VERSION:=7.2.3
PKG_VERSION:=7.2.7
PKG_RELEASE:=1
LOCAL_DEV=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=c277f89b0791664b7d417a4de34a156fc0aa8ee0
PKG_SOURCE_VERSION:=3d6d1347668408e77c327ddf81602e70af8b3d98
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
@@ -75,13 +75,27 @@ export TARGET_WIFI_TYPE
subdirs := \
$(if $(CONFIG_PACKAGE_libeasy),libeasy) \
$(if $(CONFIG_PACKAGE_libwifiutils),libwifi) \
$(if $(CONFIG_PACKAGE_libwifi),libwifi) \
$(if $(CONFIG_PACKAGE_libdsl),libdsl) \
$(if $(CONFIG_PACKAGE_libethernet),libethernet) \
$(if $(CONFIG_PACKAGE_libqos),libqos)
EASY_SOC_LIBS := \
ifneq ($(CONFIG_PACKAGE_libwifi),)
TARGET_CFLAGS +=-DHAS_WIFI
endif
esl-pkgs := \
$(if $(CONFIG_PACKAGE_libeasy),libeasy) \
$(if $(CONFIG_PACKAGE_libwifiutils),libwifiutils) \
$(if $(CONFIG_PACKAGE_libwifi),libwifi) \
$(if $(CONFIG_PACKAGE_libdsl),libdsl) \
$(if $(CONFIG_PACKAGE_libethernet),libethernet) \
$(if $(CONFIG_PACKAGE_libqos),libqos)
esl-pkgs-all := \
libeasy \
libwifiutils \
libwifi \
libdsl \
libethernet \
@@ -131,15 +145,15 @@ 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)))
$(foreach dir,$(esl-pkgs),$(call Build/Compile/$(dir)))
endef
define Build/InstallDev
$(foreach dir,$(subdirs),$(call Build/InstallDev/$(dir),$(1),$(2));)
$(foreach dir,$(esl-pkgs),$(call Build/InstallDev/$(dir),$(1),$(2));)
endef
define Package/easy-soc-libs/install
:
endef
$(eval $(foreach e,$(EASY_SOC_LIBS),$(call BuildPackage,$(e))))
$(eval $(foreach e,$(esl-pkgs-all),$(call BuildPackage,$(e))))

View File

@@ -1,32 +1,49 @@
define Package/libwifi
define Package/libwifiutils
$(call Package/easy-soc-libs)
TITLE:= WiFi library (libwifi)
DEPENDS+=+libnl +libnl-route +libeasy +TARGET_brcmbca:bcmkernel
TITLE:= WiFi utility library (libwifiutils.so)
DEPENDS+=+libnl +libnl-route +libeasy
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
define Build/InstallDev/libwifiutils
$(INSTALL_DIR) $(1)/usr/include
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_BUILD_DIR)/libwifi/wifidefs.h $(1)/usr/include/
$(CP) $(PKG_BUILD_DIR)/libwifi/wifiutils.h $(1)/usr/include/
$(CP) $(PKG_BUILD_DIR)/libwifi/libwifiutils*.so* $(1)/usr/lib/
endef
define Package/libwifiutils/install
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_BUILD_DIR)/libwifi/libwifiutils*.so* $(1)/usr/lib/
endef
define Package/libwifi
$(call Package/easy-soc-libs)
TITLE:= WiFi library (libwifi)
DEPENDS+=+libnl +libnl-route +libeasy +libwifiutils +TARGET_brcmbca:bcmkernel
endef
define Package/libwifi/config
if PACKAGE_libwifi
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/wifiops.h $(1)/usr/include/
$(CP) $(PKG_BUILD_DIR)/libwifi/wifi.h $(1)/usr/include/
$(CP) $(PKG_BUILD_DIR)/libwifi/libwifi*.so* $(1)/usr/lib/
$(CP) $(PKG_BUILD_DIR)/libwifi/libwifi-7*.so* $(1)/usr/lib/
endef
define Package/libwifi/install
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_BUILD_DIR)/libwifi/libwifi*.so* $(1)/usr/lib/
$(CP) $(PKG_BUILD_DIR)/libwifi/libwifi-7*.so* $(1)/usr/lib/
endef

View File

@@ -8,7 +8,7 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=icwmp
PKG_VERSION:=9.1.5
PKG_VERSION:=9.1.6
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/icwmp.git

View File

@@ -205,6 +205,16 @@ enable_dnsmasq_option125() {
fi
}
set_vendor_id() {
local wan="${1}"
local proto="$(uci -q get network.$wan.proto)"
if [ "${proto}" == "dhcp" ]; then
uci -q set network.$wan.vendorid="dslforum.org"
ubus call uci commit '{"config":"network"}'
fi
}
enable_disable_dhcp_option125() {
local wan="${1}"
local action="${2}"
@@ -240,7 +250,7 @@ enable_disable_dhcp_option125() {
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
@@ -395,15 +405,23 @@ validate_defaults() {
}
boot() {
local enable_cwmp="0"
local dhcp_discovery="0"
config_load cwmp
config_get dhcp_discovery acs dhcp_discovery "0"
config_get_bool enable_cwmp cpe enable 1
if [ "$enable_cwmp" = "0" ]; then
return 0
fi
config_get dhcp_discovery acs dhcp_discovery "0"
config_get wan_interface cpe default_wan_interface "wan"
if [ "${dhcp_discovery}" == "enable" ] || [ "${dhcp_discovery}" == "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
config_get lan_interface cpe default_lan_interface ""
@@ -422,7 +440,7 @@ boot() {
regenerate_ssl_link "${ssl_capath}"
fi
# Copy backup data so that if it restart latter on it gets the info
# Copy backup data so that if it restart latter on, it gets the info
copy_cwmp_etc_files_to_varstate
start

View File

@@ -57,6 +57,7 @@ CONFIG_LOCALMIRROR="https://download.iopsys.eu/iopsys/mirror/"
# EasySoC HAL #
CONFIG_PACKAGE_inbd=y
CONFIG_PACKAGE_qosmngr=y
CONFIG_PACKAGE_libwifiutils=y
CONFIG_PACKAGE_wifimngr=y
# Multi-AP #

View File

@@ -276,11 +276,22 @@ function genconfig {
setup_dirs()
{
git remote -v | grep -q http || {
CUSTBRANCH="$(git rev-parse --abbrev-ref HEAD)"
if git ls-remote $CUSTREPO -q 2>/dev/null; then
if [ ! -d "$CUSTPATH" ]; then
git clone "$CUSTREPO" "$CUSTPATH"
echo "Cloning $CUSTBRANCH branch of $CUSTREPO"
git clone -b "$CUSTBRANCH" "$CUSTREPO" "$CUSTPATH" 2>/dev/null || {
DEFBRANCH="$(git remote show $CUSTREPO | grep 'HEAD branch' | cut -d' ' -f5)"
echo "$CUSTBRANCH branch is not found, cloning $DEFBRANCH branch of $CUSTREPO"
git clone "$CUSTREPO" "$CUSTPATH"
}
elif [ $IMPORT -eq 1 ]; then
cd $CUSTPATH
echo "Checking out $CUSTBRANCH branch in $CUSTPATH"
git checkout "$CUSTBRANCH" 2>/dev/null || {
DEFBRANCH="$(git symbolic-ref refs/remotes/origin/HEAD | cut -d '/' -f4)"
echo "Checking out $CUSTBRANCH branch has failed, using $DEFBRANCH branch in $CUSTPATH"
}
v "git pull"
git pull
cd - >/dev/null #go back
@@ -340,7 +351,7 @@ function genconfig {
echo "" >> .config
fi
# Special handling for targets which use TARGET_DEVICES
# Special handling for targets which use TARGET_DEVICES
case "$target" in
iopsys_ramips | airoha | iopsys_mediatek | brcmbca | ipq95xx)
# This assumes the device name to be unique within one target,

View File

@@ -192,12 +192,6 @@ function genconfig_min {
git remote -v | grep -qE '(git@|ssh://)' && {
DEVELOPER=1
bcmAllowed=0
endptAllowed=0
git ls-remote git@dev.iopsys.eu:broadcom/bcmcreator.git -q 2>/dev/null && bcmAllowed=1
git ls-remote git@dev.iopsys.eu:iopsys/endptmngr.git -q 2>/dev/null && endptAllowed=1
}
v() {

View File

@@ -5,9 +5,9 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=map-agent
PKG_VERSION:=4.1.0.0
PKG_VERSION:=4.1.0.1
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE_VERSION:=035a398ae9e23612816cba8eeb8477997135a840
PKG_SOURCE_VERSION:=c708092f56110637f04d87d309dcbce8fd389b89
PKG_MAINTAINER:=Anjan Chanda <anjan.chanda@iopsys.eu>
PKG_LICENSE:=BSD-3-Clause

View File

@@ -5,9 +5,9 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=map-controller
PKG_VERSION:=4.1.0.0
PKG_VERSION:=4.1.0.2
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE_VERSION:=473c4a547c34af0f3b09cb7a110e5cff90abc191
PKG_SOURCE_VERSION:=8b7bb003611247309b072350d7986e304b0d228b
LOCAL_DEV=0
ifneq ($(LOCAL_DEV),1)
@@ -26,7 +26,7 @@ define Package/map-controller
SECTION:=utils
CATEGORY:=Utilities
TITLE:=WiFi Multi-AP Controller (EasyMesh R2)
DEPENDS:=+libuci +libubox +ubus +libeasy +libieee1905 +ieee1905 +map-plugin
DEPENDS:=+libuci +libubox +ubus +libeasy +libwifiutils +libieee1905 +ieee1905 +map-plugin
endef
define Package/map-controller/description

View File

@@ -45,7 +45,13 @@ validate_sta_steering_section() {
'use_bcn_metrics:bool:false' \
'use_usta_metrics:bool:false' \
'bandsteer:bool:false' \
'diffsnr:range(0,100)'
'diffsnr:range(0,100)' \
'rcpi_threshold_2g:range(0,220)' \
'rcpi_threshold_5g:range(0,220)' \
'rcpi_threshold_6g:range(0,220)' \
'report_rcpi_threshold_2g:range(0,220)' \
'report_rcpi_threshold_5g:range(0,220)' \
'report_rcpi_threshold_6g:range(0,220)'
[ "$?" -ne 0 ] && {
logger -s -t "mapcontroller" "Validation of sta_steering section failed"
@@ -193,7 +199,7 @@ reload_service() {
return
fi
pidof "mapcontroller" > /dev/null
pidof "/usr/sbin/mapcontroller" > /dev/null
if [[ $? -ne 0 ]] ; then
start
return

View File

@@ -6,11 +6,11 @@ include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=map-topology
PKG_VERSION:=2.5.1.14
PKG_VERSION:=2.5.1.15
LOCAL_DEV:=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_VERSION:=bacbffccabdc1a388a135daad58db4ca60676b05
PKG_SOURCE_VERSION:=14ff07452aec4ff6f2268ef7bea9ff417252b7be
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/map-topology.git
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.xz

View File

@@ -4,3 +4,4 @@ config topology 'topology'
option depth '8'
option interval '60'
option maxlog '32'
option profile '2'

View File

@@ -71,6 +71,10 @@ start_service() {
config_load "hosts"
validate_hosts_config || return 1;
if [ -f "/proc/sys/net/netfilter/nf_conntrack_timestamp" ]; then
echo 1 >/proc/sys/net/netfilter/nf_conntrack_timestamp
fi
procd_open_instance
procd_set_param command "/usr/sbin/topologyd"
procd_set_param respawn

View File

@@ -5,13 +5,13 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=obuspa
PKG_VERSION:=6.0.0.14
PKG_VERSION:=7.0.0.1
LOCAL_DEV:=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://dev.iopsys.eu/fork/obuspa.git
PKG_SOURCE_VERSION:=3df3346238a9eef2168fddadcef01ebe311053e4
PKG_SOURCE_VERSION:=5d4bacd53a8ca27948108009bb48c2c6c9508c1d
PKG_MAINTAINER:=Vivek Dutta <vivek.dutta@iopsys.eu>
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_MIRROR_HASH:=skip

View File

@@ -1,140 +0,0 @@
diff --git a/src/core/device.h b/src/core/device.h
index adf8fa6..072f953 100644
--- a/src/core/device.h
+++ b/src/core/device.h
@@ -111,6 +111,7 @@ typedef struct
// Following member variables only set if USP message was received over MQTT
int mqtt_instance;
char *mqtt_topic; // only set if reply_to was specified in the received MQTT packet
+ char *mqtt_topic_recv;
// Following member variables only set if USP message was received over CoAP
@@ -252,7 +253,7 @@ void DEVICE_MTP_NotifyMqttConnDeleted(int mqtt_instance);
int DEVICE_MTP_ValidateMqttReference(dm_req_t *req, char *value);
void DEVICE_CONTROLLER_SetRolesFromMqtt(int mqtt_instance, ctrust_role_t role);
char *DEVICE_CONTROLLER_GetControllerTopic(int mqtt_instance);
-
+int validate_controller_topic_by_endpointid(char *endpointid, mtp_protocol_t proto, char *recv_topic);
//------------------------------------------------------------------------------
// Tables used to convert to/from an enumeration to/from a string
extern const enum_entry_t mtp_protocols[kMtpProtocol_Max];
diff --git a/src/core/device_controller.c b/src/core/device_controller.c
index 62c803f..103388d 100755
--- a/src/core/device_controller.c
+++ b/src/core/device_controller.c
@@ -239,6 +239,41 @@ int Async_E2ESessionReset(dm_req_t *req, kv_vector_t *input_args, int request);
extern const enum_entry_t e2e_session_modes[kE2EMode_Max];
#endif
+
+int validate_controller_topic_by_endpointid(char *endpointid, mtp_protocol_t proto, char *recv_topic)
+{
+ controller_t *cont = FindEnabledControllerByEndpointId(endpointid);
+ if (cont == NULL)
+ {
+ USP_LOG_Error("not able to find the controller from endpointid [%s]", endpointid);
+ return USP_ERR_PERMISSION_DENIED;
+ }
+#ifdef ENABLE_MQTT
+ if (proto == kMtpProtocol_MQTT)
+ {
+ controller_mtp_t *mtp = FindFirstEnabledMtp(cont, proto);
+
+ if (mtp == NULL) {
+ USP_LOG_Error("Not able to find mtp[%d] for endpointid [%s]", proto, endpointid);
+ return USP_ERR_REQUEST_DENIED;
+ }
+
+ if (mtp->protocol != proto) {
+ USP_LOG_Error("No matching mtp[%d] for endpointid [%s]", proto, endpointid);
+ return USP_ERR_REQUEST_DENIED;
+ }
+
+ char *response_topic = DEVICE_MTP_GetAgentMqttResponseTopic(mtp->mqtt_connection_instance);
+ if (response_topic && strcmp(response_topic, recv_topic) != 0 ) {
+ USP_LOG_Error("Controller response topic[%s] and recv topic[%s] mismatch, probably a spoof message", response_topic, recv_topic);
+ return USP_ERR_PERMISSION_DENIED;
+ }
+ }
+#endif
+
+ return USP_ERR_OK;
+}
+
/*********************************************************************//**
**
** DEVICE_CONTROLLER_Init
diff --git a/src/core/dm_exec.c b/src/core/dm_exec.c
index c0b95d8..6eb51e2 100755
--- a/src/core/dm_exec.c
+++ b/src/core/dm_exec.c
@@ -624,6 +624,7 @@ void DM_EXEC_PostUspRecord(unsigned char *pbuf, int pbuf_len, ctrust_role_t role
pur->mtp_reply_to.coap_encryption = mrt->coap_encryption;
pur->mtp_reply_to.coap_reset_session_hint = mrt->coap_reset_session_hint;
pur->mtp_reply_to.mqtt_topic = USP_STRDUP(mrt->mqtt_topic);
+ pur->mtp_reply_to.mqtt_topic_recv = USP_STRDUP(mrt->mqtt_topic_recv);
pur->mtp_reply_to.mqtt_instance = mrt->mqtt_instance;
pur->mtp_reply_to.wsclient_cont_instance = mrt->wsclient_cont_instance;
pur->mtp_reply_to.wsclient_mtp_instance = mrt->wsclient_mtp_instance;
@@ -1144,6 +1145,7 @@ void ProcessMessageQueueSocketActivity(socket_set_t *set)
USP_SAFE_FREE(mrt->coap_resource);
USP_SAFE_FREE(mrt->mqtt_topic);
USP_SAFE_FREE(mrt->cont_endpoint_id);
+ USP_SAFE_FREE(mrt->mqtt_topic_recv);
break;
#ifndef DISABLE_STOMP
diff --git a/src/core/mqtt.c b/src/core/mqtt.c
index 7dba9f4..3ee9c97 100644
--- a/src/core/mqtt.c
+++ b/src/core/mqtt.c
@@ -3141,6 +3141,7 @@ void ReceiveMqttMessage(mqtt_client_t *client, const struct mosquitto_message *m
mrt.mqtt_topic = response_topic;
}
+ mrt.mqtt_topic_recv = message->topic;
// Message may not be valid USP
DM_EXEC_PostUspRecord(message->payload, message->payloadlen, client->role, &mrt);
}
diff --git a/src/core/msg_handler.c b/src/core/msg_handler.c
index ce67626..4af9ade 100644
--- a/src/core/msg_handler.c
+++ b/src/core/msg_handler.c
@@ -118,7 +118,7 @@ static enum_entry_t mtp_content_types[] = {
//------------------------------------------------------------------------------
// Forward declarations. Note these are not static, because we need them in the symbol table for USP_LOG_Callstack() to show them
int HandleUspMessage(Usp__Msg *usp, char *controller_endpoint, mtp_reply_to_t *mrt);
-int ValidateUspRecord(UspRecord__Record *rec);
+int ValidateUspRecord(UspRecord__Record *rec, mtp_reply_to_t *mrt);
char *MtpSendItemToString(mtp_send_item_t *msi);
void CacheControllerRoleForCurMsg(char *endpoint_id, ctrust_role_t role, mtp_protocol_t protocol);
int QueueUspNoSessionRecord(usp_send_item_t *usi, char *endpoint_id, char *usp_msg_id, mtp_reply_to_t *mrt, time_t expiry_time);
@@ -172,7 +172,7 @@ int MSG_HANDLER_HandleBinaryRecord(unsigned char *pbuf, int pbuf_len, ctrust_rol
#endif
// Exit if USP record failed validation
- err = ValidateUspRecord(rec);
+ err = ValidateUspRecord(rec, mrt);
if (err != USP_ERR_OK)
{
goto exit;
@@ -725,7 +725,7 @@ exit:
** \return USP_ERR_OK if record is valid
**
**************************************************************************/
-int ValidateUspRecord(UspRecord__Record *rec)
+int ValidateUspRecord(UspRecord__Record *rec, mtp_reply_to_t *mrt)
{
char *endpoint_id;
@@ -806,6 +806,9 @@ int ValidateUspRecord(UspRecord__Record *rec)
return USP_ERR_REQUEST_DENIED;
}
+#if OBUSPA_CONTROLLER_MTP_VERIFY
+ return validate_controller_topic_by_endpointid(rec->from_id, mrt->protocol, mrt->mqtt_topic_recv);
+#endif
// If the code gets here, then the USP record passed validation, and the encapsulated USP message may be processed
return USP_ERR_OK;
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1 @@
<tbody><tr><td colspan="2"><div style="font-weight: bold">xpon</div><table style="width:100%"><tbody><tr><td><div style="font-weight: bold; font-size: 14px">section</div></td><td><div style="font-weight: bold; font-size: 14px">description</div></td><td><div style="font-weight: bold; font-size: 14px">multi</div></td><td><div style="font-weight: bold; font-size: 14px">options</div></td></tr><tr><td class="td_row_even"><div class="td_row_even">ani</div></td><td class="td_row_even"><div class="td_row_even">xpon ani configuration</div></td><td class="td_row_even"><div class="td_row_even">false</div></td><td class="td_row_even"><table style="width:100%"><tbody><tr><td><div style="font-weight: bold; font-size: 14px">name</div></td><td><div style="font-weight: bold; font-size: 14px">type</div></td><td><div style="font-weight: bold; font-size: 14px">required</div></td><td><div style="font-weight: bold; font-size: 14px">default</div></td><td><div style="font-weight: bold; font-size: 14px">description</div></td></tr><tr><td class="td_row_even"><div class="td_row_even">enable</div></td><td class="td_row_even"><div class="td_row_even">boolean</div></td><td class="td_row_even"><div class="td_row_even">yes</div></td><td class="td_row_even"><div class="td_row_even">false</div></td><td class="td_row_even"><div class="td_row_even">ONU is enabled as pon functionality.</div></td></tr><tr><td class="td_row_odd"><div class="td_row_odd">serial_number</div></td><td class="td_row_odd"><div class="td_row_odd">string</div></td><td class="td_row_odd"><div class="td_row_odd">yes</div></td><td class="td_row_odd"><div class="td_row_odd">null</div></td><td class="td_row_odd"><div class="td_row_odd">Serial number of ONU, Unique for each ONU.</div></td></tr></tbody></table></td></tr></tbody></table></td></tr></tbody>

View File

@@ -0,0 +1,143 @@
# Function Specification
## Introduction
This will be a short description of how to setup ONU and enable ANI.
## Overview
ponmngr UCI Config
```
config ani 'ani'
option enable '1'
option serial_number 'IOPS18000001'
```
## Notes
* `serial_number` is the unique for each ONU, In case `serial_number` has not
* been set from production in that case `serial_number` is calculated using
* the combination of vendor "IOPS" and last 4 octet of device mac address.
* same serial number should avaibale in OLT for the corresponding ONU profile
After ubus starts the xpon methods can be invoked to get the status
For all available status the command can be used without parameters, such as
```
root@iopsys:~# ubus call xpon status
{
"ONU": [
{
"Enable": true,
"Version": "",
"EquipmentID": "BVM4K00BRA",
"softwareImage": [
{
"ID": 0,
"Version": "7.2.0alpha0-5",
"IsValid": true,
"IsActive": false,
"IsCommitted": false
},
{
"ID": 1,
"Version": "7.2.0alpha0-5",
"IsValid": true,
"IsActive": true,
"IsCommitted": true
}
],
"EthernetUNI": [
{
"Enable": true,
"Status": "UP",
"ANIs": "gpon0.0",
"InterDomainID": "(VEIP,1025)",
"InterDomainName": "VEIP",
"Stats": {
"BytesSent": 39891,
"BytesReceived": 50296,
"PacketsSent": 314,
"PacketsReceived": 384
}
},
{
"Enable": true,
"Status": "UP",
"ANIs": "gpon0.0",
"InterDomainID": "(VEIP,1025)",
"InterDomainName": "VEIP",
"Stats": {
"BytesSent": 54499,
"BytesReceived": 47908,
"PacketsSent": 286,
"PacketsReceived": 273
}
},
{
"Enable": false,
"Status": "DOWN",
"ANIs": "gpon0.0",
"InterDomainID": "(VEIP,1025)",
"InterDomainName": "VEIP",
"Stats": {
"BytesSent": 0,
"BytesReceived": 0,
"PacketsSent": 0,
"PacketsReceived": 0
}
},
{
"Enable": false,
"Status": "DOWN",
"ANIs": "gpon0.0",
"InterDomainID": "(VEIP,1025)",
"InterDomainName": "VEIP",
"Stats": {
"BytesSent": 0,
"BytesReceived": 0,
"PacketsSent": 0,
"PacketsReceived": 0
}
}
],
"ANI": [
{
"Enable": true,
"Status": "Up",
"PONMode": "GPON",
"Stats": {
"BytesSent": 228,
"BytesReceived": 408394,
"PacketsSent": 2,
"PacketsReceived": 2328
}
}
],
"Transceiver": [
{
"ID": 0,
"Identifier": 3,
"ModuleVendor": "MENTECHOPTO",
"ModuleName": "MSOG22-LDCC-ACCO",
"ModuleVersion": "MNC221K90309",
"ModuleFirmwareVersion": "1.0",
"PONMode": "GPON",
"TxPower": 16,
"RxPower": -240,
"Voltage": 3300,
"Bias": 15744,
"Temperature": 270
}
]
}
]
}
```
UCI to invoke pon manager to enable status of ani, such as
```
```

View File

@@ -0,0 +1,25 @@
{
"xpon":
[
{
"section": "ani",
"description": "xpon ani configuration",
"multi": "false",
"options": [
{
"name": "enable",
"type": "boolean",
"required": "yes",
"default": "false",
"description": "ONU is enabled as pon functionality."
},{
"name": "serial_number",
"type": "string",
"required": "yes",
"default": null,
"description": "Serial number of ONU, Unique for each ONU."
}
]
}
]
}

View File

@@ -3,6 +3,7 @@
"Device.XPON.": {
"type": "object",
"protocols": [
"cwmp",
"usp"
],
"access": false,
@@ -13,6 +14,7 @@
"read": true,
"write": false,
"protocols": [
"cwmp",
"usp"
],
"datatype": "unsignedInt",
@@ -31,6 +33,7 @@
"Device.XPON.ONU.{i}.": {
"type": "object",
"protocols": [
"cwmp",
"usp"
],
"access": false,
@@ -51,6 +54,7 @@
"read": true,
"write": false,
"protocols": [
"cwmp",
"usp"
],
"datatype": "boolean",
@@ -67,6 +71,7 @@
"read": true,
"write": false,
"protocols": [
"cwmp",
"usp"
],
"datatype": "string",
@@ -88,6 +93,7 @@
"read": true,
"write": false,
"protocols": [
"cwmp",
"usp"
],
"datatype": "string",
@@ -109,6 +115,7 @@
"read": true,
"write": false,
"protocols": [
"cwmp",
"usp"
],
"datatype": "unsignedInt",
@@ -129,6 +136,7 @@
"read": true,
"write": false,
"protocols": [
"cwmp",
"usp"
],
"datatype": "unsignedInt",
@@ -149,6 +157,7 @@
"read": true,
"write": false,
"protocols": [
"cwmp",
"usp"
],
"datatype": "unsignedInt",
@@ -164,9 +173,31 @@
}
]
},
"TransceiverNumberOfEntries": {
"type": "unsignedInt",
"read": true,
"write": false,
"protocols": [
"cwmp",
"usp"
],
"datatype": "unsignedInt",
"mapping": [
{
"type": "ubus",
"ubus": {
"object": "xpon",
"method": "status",
"args": {},
"key": "ONU[@index].Transceiver.@Count"
}
}
]
},
"Device.XPON.ONU.{i}.SoftwareImage.{i}.": {
"type": "object",
"protocols": [
"cwmp",
"usp"
],
"access": false,
@@ -187,6 +218,7 @@
"read": true,
"write": false,
"protocols": [
"cwmp",
"usp"
],
"datatype": "unsignedInt",
@@ -209,6 +241,7 @@
"read": true,
"write": false,
"protocols": [
"cwmp",
"usp"
],
"datatype": "string",
@@ -230,6 +263,7 @@
"read": true,
"write": false,
"protocols": [
"cwmp",
"usp"
],
"datatype": "boolean",
@@ -246,6 +280,7 @@
"read": true,
"write": false,
"protocols": [
"cwmp",
"usp"
],
"datatype": "boolean",
@@ -262,6 +297,7 @@
"read": true,
"write": false,
"protocols": [
"cwmp",
"usp"
],
"datatype": "boolean",
@@ -277,6 +313,7 @@
"Device.XPON.ONU.{i}.EthernetUNI.{i}.": {
"type": "object",
"protocols": [
"cwmp",
"usp"
],
"access": false,
@@ -297,6 +334,7 @@
"read": true,
"write": false,
"protocols": [
"cwmp",
"usp"
],
"datatype": "boolean",
@@ -313,6 +351,7 @@
"read": true,
"write": false,
"protocols": [
"cwmp",
"usp"
],
"datatype": "string",
@@ -338,6 +377,7 @@
"read": true,
"write": false,
"protocols": [
"cwmp",
"usp"
],
"datatype": "string",
@@ -359,6 +399,7 @@
"read": true,
"write": false,
"protocols": [
"cwmp",
"usp"
],
"datatype": "string",
@@ -380,6 +421,7 @@
"read": true,
"write": false,
"protocols": [
"cwmp",
"usp"
],
"datatype": "string",
@@ -399,6 +441,7 @@
"Device.XPON.ONU.{i}.EthernetUNI.{i}.Stats.": {
"type": "object",
"protocols": [
"cwmp",
"usp"
],
"access": false,
@@ -415,6 +458,7 @@
"read": true,
"write": false,
"protocols": [
"cwmp",
"usp"
],
"datatype": "unsignedLong",
@@ -431,6 +475,7 @@
"read": true,
"write": false,
"protocols": [
"cwmp",
"usp"
],
"datatype": "unsignedLong",
@@ -447,6 +492,7 @@
"read": true,
"write": false,
"protocols": [
"cwmp",
"usp"
],
"datatype": "unsignedLong",
@@ -463,6 +509,7 @@
"read": true,
"write": false,
"protocols": [
"cwmp",
"usp"
],
"datatype": "unsignedLong",
@@ -479,6 +526,7 @@
"Device.XPON.ONU.{i}.ANI.{i}.": {
"type": "object",
"protocols": [
"cwmp",
"usp"
],
"access": false,
@@ -499,6 +547,7 @@
"read": true,
"write": true,
"protocols": [
"cwmp",
"usp"
],
"datatype": "boolean",
@@ -529,6 +578,7 @@
"read": true,
"write": false,
"protocols": [
"cwmp",
"usp"
],
"datatype": "string",
@@ -553,6 +603,7 @@
"read": true,
"write": false,
"protocols": [
"cwmp",
"usp"
],
"datatype": "string",
@@ -573,6 +624,7 @@
"Device.XPON.ONU.{i}.ANI.{i}.Stats.": {
"type": "object",
"protocols": [
"cwmp",
"usp"
],
"access": false,
@@ -589,6 +641,7 @@
"read": true,
"write": false,
"protocols": [
"cwmp",
"usp"
],
"datatype": "unsignedLong",
@@ -605,6 +658,7 @@
"read": true,
"write": false,
"protocols": [
"cwmp",
"usp"
],
"datatype": "unsignedLong",
@@ -621,6 +675,7 @@
"read": true,
"write": false,
"protocols": [
"cwmp",
"usp"
],
"datatype": "unsignedLong",
@@ -637,6 +692,7 @@
"read": true,
"write": false,
"protocols": [
"cwmp",
"usp"
],
"datatype": "unsignedLong",
@@ -649,6 +705,230 @@
]
}
}
},
"Device.XPON.ONU.{i}.Transceiver.{i}.": {
"type": "object",
"protocols": [
"cwmp",
"usp"
],
"access": false,
"array": true,
"mapping": [
{
"type": "ubus",
"ubus": {
"object": "xpon",
"method": "status",
"args": {},
"key": "ONU[@index].Transceiver"
}
}
],
"ID": {
"type": "unsignedInt",
"read": true,
"write": false,
"protocols": [
"cwmp",
"usp"
],
"datatype": "unsignedInt",
"mapping": [
{
"data": "@Parent",
"type": "json",
"key": "ID"
}
]
},
"Identifier": {
"type": "unsignedInt",
"read": true,
"write": false,
"protocols": [
"cwmp",
"usp"
],
"datatype": "unsignedInt",
"mapping": [
{
"data": "@Parent",
"type": "json",
"key": "Identifier"
}
]
},
"ModuleVendor": {
"type": "string",
"read": true,
"write": false,
"protocols": [
"cwmp",
"usp"
],
"datatype": "string",
"mapping": [
{
"data": "@Parent",
"type": "json",
"key": "ModuleVendor"
}
]
},
"ModuleName": {
"type": "string",
"read": true,
"write": false,
"protocols": [
"cwmp",
"usp"
],
"datatype": "string",
"mapping": [
{
"data": "@Parent",
"type": "json",
"key": "ModuleName"
}
]
},
"ModuleVersion": {
"type": "string",
"read": true,
"write": false,
"protocols": [
"cwmp",
"usp"
],
"datatype": "string",
"mapping": [
{
"data": "@Parent",
"type": "json",
"key": "ModuleVersion"
}
]
},
"ModuleFirmwareVersion": {
"type": "string",
"read": true,
"write": false,
"protocols": [
"cwmp",
"usp"
],
"datatype": "string",
"mapping": [
{
"data": "@Parent",
"type": "json",
"key": "ModuleFirmwareVersion"
}
]
},
"PONMode": {
"type": "string",
"read": true,
"write": false,
"protocols": [
"cwmp",
"usp"
],
"datatype": "string",
"mapping": [
{
"data": "@Parent",
"type": "json",
"key": "PONMode"
}
]
},
"RxPower": {
"type": "int",
"read": true,
"write": false,
"protocols": [
"cwmp",
"usp"
],
"datatype": "int",
"mapping": [
{
"data": "@Parent",
"type": "json",
"key": "RxPower"
}
]
},
"TxPower": {
"type": "int",
"read": true,
"write": false,
"protocols": [
"cwmp",
"usp"
],
"datatype": "int",
"mapping": [
{
"data": "@Parent",
"type": "json",
"key": "TxPower"
}
]
},
"Voltage": {
"type": "unsignedInt",
"read": true,
"write": false,
"protocols": [
"cwmp",
"usp"
],
"datatype": "unsignedInt",
"mapping": [
{
"data": "@Parent",
"type": "json",
"key": "Voltage"
}
]
},
"Bias": {
"type": "unsignedInt",
"read": true,
"write": false,
"protocols": [
"cwmp",
"usp"
],
"datatype": "unsignedInt",
"mapping": [
{
"data": "@Parent",
"type": "json",
"key": "Bias"
}
]
},
"Temperature": {
"type": "int",
"read": true,
"write": false,
"protocols": [
"cwmp",
"usp"
],
"datatype": "int",
"mapping": [
{
"data": "@Parent",
"type": "json",
"key": "Temperature"
}
]
}
}
}
}

300
ponmngr/xpon_ubus.json Normal file
View File

@@ -0,0 +1,300 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "http://example.com/root.json",
"type": "object",
"title": "xpon",
"object": "xpon",
"properties": {
"status": {
"type": "object",
"properties": {
"output": {
"type": "object",
"required": [
],
"properties": {
"ONU": {
"type": "array",
"items": {
"type": "object",
"required": [
"Enable",
"Version",
"EquipmentID",
"SoftwareImage",
"EthernetUNI",
"ANI",
"Transceiver"
],
"properties": {
"Enable": {
"type": "boolean",
"default": "false"
},
"Version": {
"type": "string"
},
"EquipmentID": {
"type": "string",
"minLength": 1,
"maxLength": 20
},
"SoftwareImage": {
"type": "array",
"items": {
"type": "object",
"required": [
"ID",
"Version",
"IsCommitted",
"IsActive",
"IsValid"
],
"properties": {
"ID": {
"type": "integer",
"minimum": 0,
"maximum": 1
},
"Version": {
"type": "string",
"minLength": 1,
"maxLength": 14,
"default": "7.2_BETA2"
},
"IsCommitted": {
"type": "boolean",
"default": "false"
},
"IsActive": {
"type": "boolean",
"default": "false"
},
"IsValid": {
"type": "boolean",
"default": "false"
}
}
}
},
"EthernetUNI": {
"type": "array",
"items": {
"type": "object",
"required": [
"Enable",
"Status",
"ANIs",
"InterdomainID",
"InterdomainName",
"Stats"
],
"properties": {
"Enable": {
"type": "boolean",
"default": "false"
},
"Status": {
"type": "string",
"enum": [
"Up",
"Down",
"unknown",
"Dormant",
"NotPresent",
"LowerLayerDown",
"Error"
]
},
"ANIs": {
"type": "string",
"minLength": 1,
"maxLength": 1024,
"pattern": "gpon[0-9]\\.[0-9]"
},
"InterdomainID": {
"type": "string",
"minLength": 1,
"maxLength": 256,
"pattern": "(VEIP|PPTPEthernetUNI),(1025|257)"
},
"InterdomainName": {
"type": "string",
"minLength": 1,
"maxLength": 25,
"default": "VEIP"
},
"Stats": {
"items": {
"type": "object",
"required": [
"BytesSent",
"BytesReceived",
"PacketsSent",
"PacketsReceived"
],
"properties": {
"BytesSent": {
"type": "integer",
"minimum": 0
},
"BytesReceived": {
"type": "integer",
"minimum": 0
},
"PacketsSent": {
"type": "integer",
"minimum": 0
},
"PacketsReceived": {
"type": "integer",
"minimum": 0
}
}
}
}
}
}
},
"ANI": {
"type": "array",
"items": {
"type": "object",
"required": [
"Enable",
"Status",
"PONMode",
"Stats"
],
"properties": {
"Enable": {
"type": "boolean",
"default": "false"
},
"Status": {
"type": "string",
"enum":[
"Up",
"Down",
"Dormant",
"Unknown",
"NotPresent",
"Error"
]
},
"PONMode": {
"type": "string",
"enum":[
"GPON",
"XG-PON",
"NG-PON2",
"XGS-PON"
]
},
"Stats": {
"items": {
"type": "object",
"required": [
"BytesSent",
"BytesReceived",
"PacketsSent",
"PacketsReceived"
],
"properties": {
"BytesSent": {
"type": "integer",
"minimum": 0
},
"BytesReceived": {
"type": "integer",
"minimum": 0
},
"PacketsSent": {
"type": "integer",
"minimum": 0
},
"PacketsReceived": {
"type": "integer",
"minimum": 0
}
}
}
}
}
}
},
"Transceiver": {
"type": "array",
"items": {
"type": "object",
"required": [
"ID",
"Identifier",
"ModuleVendor",
"ModuleName",
"ModuleVersion",
"ModuleFirmwareVersion",
"PONMode",
"RxPower",
"TxPower",
"Voltage",
"Bias",
"Temperature"
],
"properties": {
"ID": {
"type": "integer",
"default": 0
},
"Identier": {
"type": "integer",
"minimum": 0
},
"ModuleVendor": {
"type": "string"
},
"ModuleName": {
"type": "string"
},
"ModuleVersion": {
"type": "string"
},
"ModuleFirmwareVersion": {
"type": "string"
},
"PONMode": {
"type": "string",
"enum":[
"GPON",
"XG-PON",
"NG-PON2",
"XGS-PON"
]
},
"RxPower": {
"type": "integer"
},
"TxPower": {
"type": "integer"
},
"Voltage": {
"type": "integer"
},
"Bias": {
"type": "integer"
},
"Temperature": {
"type": "integer"
}
}
}
}
}
}
}
}
}
}
}
}
}

View File

@@ -5,7 +5,7 @@
ethwan="$(db -q get hw.board.ethernetWanPort)"
populate_no_of_queue(){
local queue_num=$(get_no_of_queue "airoha")
queue_num=4
# writing no. of queue per port into file and read on classify generate
if [ ! -d "/tmp/qos" ]; then
@@ -61,3 +61,4 @@ touch /etc/config/qos
# generate qos queue config
config_load ports
config_foreach generate_queue ethport

View File

@@ -25,36 +25,6 @@ configure_qos() {
configure_classify
}
get_no_of_queue() {
platform_name=$1
cpu_model=$2
if [ -z "$platform_name" ];then
return
fi
if [ "$platform_name" == "airoha" ]; then
queue_num=4
echo "Fix: airohai no_of_queue: $queue_num"
elif [ "$platform_name" == "broadcom" ]; then
if [[ $cpu_model == "BCM68"* ]]; then
queue_num=4
echo "Fix: broadcom bcm no_of_queue: $queue_num"
elif grep -qE '[0-9]+ archer$' /proc/devices; then
queue_num=4
echo "Fix: broadcom arcee no_of_queue: $queue_num"
else
queue_num=8
echo "Fix: broadcom else no_of_queue: $queue_num"
fi
elif [ "$platform_name" == "linux" ]; then
queue_num=8
echo "Fix: linux no_of_queue: $queue_num"
fi
echo $queue_num
}
reload_qos() {
local service_name="$1"

View File

@@ -4,10 +4,17 @@
ethwan="$(db -q get hw.board.ethernetWanPort)"
cpu_model="$(cat /proc/socinfo | grep 'SoC Name' | cut -d':' -f2)"
queue_num=0
queue_num=8
populate_no_of_queue(){
queue_num=$(get_no_of_queue "broadcom")
case $cpu_model in
BCM68*) queue_num=4;;
esac
if grep -qE '[0-9]+ archer$' /proc/devices; then
queue_num=4
fi
# writing no. of queue per port into file and read on classify generate
if [ ! -d "/tmp/qos" ]; then
mkdir -p "/tmp/qos"

View File

@@ -642,7 +642,7 @@ handle_ebtables_rules() {
*)
if [ -n "$protocol" ] || [ -n "$dscp_filter" ]; then
ip_version=1 #neither ether_type nor ip address used
#ethertype is not configured by user so install
#ethertype is not configured by user so install
#both proto ipv4 and ipv6 rule
BR6_RULE="$BR_RULE"
broute_filter_on_ether_type "IPv4"
@@ -1372,7 +1372,7 @@ reload_qos_service() {
fi
if [ "$policer" == "true" ]; then
reload_qos "policer"
# change in policer config may need reconfiguration
# change in policer config may need reconfiguration
# of classifier
reload_qos "classify"
fi
@@ -1383,35 +1383,3 @@ reload_qos_service() {
fi
cp /etc/config/qos /tmp/qos/qos
}
get_no_of_queue() {
platform_name=$1
cpu_model=$2
if [ -z "$platform_name" ];then
return
fi
if [ "$platform_name" == "airoha" ]; then
queue_num=4
echo "Fix: airohai no_of_queue: $queue_num"
elif [ "$platform_name" == "broadcom" ]; then
if [[ $cpu_model == "BCM68"* ]]; then
queue_num=4
echo "Fix: broadcom bcm no_of_queue: $queue_num"
elif grep -qE '[0-9]+ archer$' /proc/devices; then
queue_num=4
echo "Fix: broadcom arcee no_of_queue: $queue_num"
else
queue_num=8
echo "Fix: broadcom else no_of_queue: $queue_num"
fi
elif [ "$platform_name" == "linux" ]; then
queue_num=8
echo "Fix: linux no_of_queue: $queue_num"
fi
echo $queue_num
}

View File

@@ -5,7 +5,7 @@
ethwan="$(db -q get hw.board.ethernetWanPort)"
populate_no_of_queue(){
local queue_num=$(get_no_of_queue "linux")
queue_num=8
# writing no. of queue per port into file and read on classify generate
if [ ! -d "/tmp/qos" ]; then

View File

@@ -555,22 +555,22 @@ pre_configure_queue() {
done
}
get_link_rate() {
intf="$1"
speed=0
config_load ports
get_link_rate() {
intf="$1"
speed=0
config_load ports
get_speed() {
psid="$1"
psid="$1"
iname="$2"
config_load ports
config_load ports
config_get ifname "$psid" "ifname"
if [ "$ifname" == "$iname" ]; then
config_get speed "$psid" "speed"
fi
}
config_foreach get_speed ethport $intf
echo "$speed"
}
}
config_foreach get_speed ethport $intf
echo "$speed"
}
configure_queue() {
qdisc_idx=0
@@ -657,35 +657,6 @@ configure_policer() {
echo $POLICER_COUNT > /tmp/qos/max_policer_inst
}
get_no_of_queue() {
platform_name=$1
cpu_model=$2
if [ -z "$platform_name" ];then
return
fi
if [ "$platform_name" == "airoha" ]; then
queue_num=4
echo "Fix: airohai no_of_queue: $queue_num"
elif [ "$platform_name" == "broadcom" ]; then
if [[ $cpu_model == "BCM68"* ]]; then
queue_num=4
echo "Fix: broadcom bcm no_of_queue: $queue_num"
elif grep -qE '[0-9]+ archer$' /proc/devices; then
queue_num=4
echo "Fix: broadcom arcee no_of_queue: $queue_num"
else
queue_num=8
echo "Fix: broadcom else no_of_queue: $queue_num"
fi
elif [ "$platform_name" == "linux" ]; then
queue_num=8
echo "Fix: linux no_of_queue: $queue_num"
fi
echo $queue_num
}
configure_qos() {
pre_configure_queue

View File

@@ -5,7 +5,7 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=ssdpd
PKG_VERSION:=1.0.3
PKG_VERSION:=1.0.4
LOCAL_DEV:=0
ifneq ($(LOCAL_DEV),1)
@@ -45,8 +45,6 @@ endef
endif
define Package/ssdpd/install
$(INSTALL_DIR) $(1)/etc/upnp
$(INSTALL_DIR) $(1)/etc/upnp/description
$(INSTALL_DIR) $(1)/etc/config
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_DIR) $(1)/usr/sbin

View File

@@ -34,6 +34,8 @@ configure_ssdp()
[ ${enabled} -eq 0 ] && return 0
mkdir -p /tmp/ssdp/description/
procd_set_param command ${PROG}
if [ ${ipv6_enabled} -eq 1 ]; then

View File

@@ -72,7 +72,223 @@
}
--- a/minissdpd/ssdpd.c
+++ b/minissdpd/ssdpd.c
@@ -624,3 +624,8 @@ end:
@@ -39,10 +39,9 @@ struct desc_list_elt {
struct list_head list;
char *url;
char *desc_path;
- bool is_device_desc;
};
-#define UPNP_DESC_PATH "/etc/upnp/description"
+#define UPNP_DESC_PATH "/tmp/ssdp/description"
#define UPNP_DISCOVER_TIMEOUT (30 * 1000)
#ifndef MIN
@@ -282,6 +281,21 @@ static bool is_desc_exist(const char *de
return false;
}
+static bool is_device_exist(const char *dev_url)
+{
+ struct UPNPDev *dev = NULL;
+
+ if (!dev_url)
+ return false;
+
+ list_for_each_entry(dev, &dev_list, list) {
+ if (strcmp(dev->descURL, dev_url) == 0)
+ return true;
+ }
+
+ return false;
+}
+
static void get_desc_name(const char *desc_url, char *str, size_t len)
{
if (!desc_url || !str || len == 0)
@@ -297,7 +311,7 @@ static void get_desc_name(const char *de
}
}
-static void add_desc_to_desc_list(const char *desc_path, const char *url, int is_device_desc)
+static void add_desc_to_desc_list(const char *desc_path, const char *url)
{
struct desc_list_elt *desc_elt;
@@ -306,7 +320,6 @@ static void add_desc_to_desc_list(const
desc_elt->desc_path = strdup(desc_path);
desc_elt->url = strdup(url);
- desc_elt->is_device_desc = is_device_desc;
}
static void free_all_desc_list(void)
@@ -324,10 +337,12 @@ static void free_all_desc_list(void)
static void __upnp_discover_devices(void)
{
+ struct desc_list_elt *desc_elt = NULL;
+ struct desc_list_elt *desc_elt_tmp = NULL;
struct UPNPDev *dev = NULL;
char desc_name[128] = {0};
char file_path[256] = {0};
- int res = 0, is_device_desc = 0;
+ int res = 0;
/*
* Discover devices
@@ -349,13 +364,26 @@ static void __upnp_discover_devices(void
get_desc_name(dev->descURL, desc_name, sizeof(desc_name));
snprintf(file_path, sizeof(file_path), "%s/%s", UPNP_DESC_PATH, desc_name);
- is_device_desc = (dev->usn && strstr(dev->usn, ":service:")) ? 0 : 1;
// Download Description
download_file(file_path, dev->descURL);
// Add description to descriptions list
- add_desc_to_desc_list(file_path, dev->descURL, is_device_desc);
+ add_desc_to_desc_list(file_path, dev->descURL);
+ }
+
+ /*
+ * Remove unused descriptions
+ */
+ list_for_each_entry_safe(desc_elt, desc_elt_tmp, &desc_list, list) {
+
+ if (is_device_exist(desc_elt->url))
+ continue;
+
+ free(desc_elt->desc_path);
+ free(desc_elt->url);
+ free(desc_elt);
+ list_del(&desc_elt->list);
}
end:
@@ -371,15 +399,27 @@ static int upnp_discovery_res(struct ubu
memset(&bb,0,sizeof(struct blob_buf));
blob_buf_init(&bb, 0);
+ void *root_devices_array = blobmsg_open_array(&bb, "root_devices");
+ list_for_each_entry_reverse(dev, &dev_list, list) {
+ // Parse root device
+ if (dev->st && strstr(dev->st, ":rootdevice") != NULL) {
+ void *device_obj = blobmsg_open_table(&bb, NULL);
+ blobmsg_add_string(&bb, "descurl", dev->descURL);
+ blobmsg_add_string(&bb, "st", dev->st);
+ blobmsg_add_string(&bb, "usn", dev->usn);
+ blobmsg_close_table(&bb, device_obj);
+ }
+ }
+ blobmsg_close_array(&bb, root_devices_array);
+
void *devices_array = blobmsg_open_array(&bb, "devices");
list_for_each_entry_reverse(dev, &dev_list, list) {
- // Parse Root device and devices
- if ((dev->st && strstr(dev->st, ":rootdevice") != NULL) || (dev->usn && strstr(dev->usn, ":device:") != NULL)) {
+ // Parse devices
+ if (dev->usn && strstr(dev->usn, ":device:") != NULL) {
void *device_obj = blobmsg_open_table(&bb, NULL);
blobmsg_add_string(&bb, "descurl", dev->descURL);
blobmsg_add_string(&bb, "st", dev->st);
blobmsg_add_string(&bb, "usn", dev->usn);
- blobmsg_add_string(&bb, "is_root_device", dev->st && strstr(dev->st, ":rootdevice") ? "1" : "0");
blobmsg_close_table(&bb, device_obj);
}
}
@@ -472,7 +512,7 @@ static void fill_device_instances(struct
blobmsg_close_table(bb, device_obj);
}
-static void fill_service_element(struct blob_buf *bb, mxml_node_t *service)
+static void fill_service_instances(struct blob_buf *bb, mxml_node_t *service)
{
mxml_node_t *b = service;
void *service_obj = NULL;
@@ -525,6 +565,32 @@ static void fill_service_element(struct
blobmsg_close_table(bb, service_obj);
}
+static void fill_device_service_instances(struct blob_buf *bb, bool is_device)
+{
+ struct desc_list_elt *desc_elt = NULL;
+
+ list_for_each_entry(desc_elt, &desc_list, list) {
+
+ FILE *fp = fopen(desc_elt->desc_path, "r");
+ if (!fp)
+ continue;
+
+ mxml_node_t *tree = mxmlLoadFile(NULL, fp, MXML_OPAQUE_CALLBACK);
+ fclose(fp);
+
+ if (tree) {
+ mxml_node_t *node = mxmlFindElement(tree, tree, "device", NULL, NULL, MXML_DESCEND);
+
+ if (is_device)
+ fill_device_instances(bb, node);
+ else
+ fill_service_instances(bb, node);
+
+ mxmlDelete(tree);
+ }
+ }
+}
+
static int upnp_description_res(struct ubus_context *ctx, struct ubus_object *obj __attribute__((unused)),
struct ubus_request_data *req, const char *method __attribute__((unused)), struct blob_attr *msg __attribute__((unused)))
{
@@ -534,39 +600,25 @@ static int upnp_description_res(struct u
memset(&bb,0,sizeof(struct blob_buf));
blob_buf_init(&bb, 0);
+ // Descriptions Array
void *desc_array = blobmsg_open_array(&bb, "descriptions");
list_for_each_entry(desc_elt, &desc_list, list) {
void *device_obj = blobmsg_open_table(&bb, NULL);
blobmsg_add_string(&bb, "desc_url", desc_elt->url);
- blobmsg_add_u32(&bb, "is_device_desc", desc_elt->is_device_desc);
blobmsg_close_table(&bb, device_obj);
}
blobmsg_close_array(&bb, desc_array);
- list_for_each_entry(desc_elt, &desc_list, list) {
-
- FILE *fp = fopen(desc_elt->desc_path, "r");
- if (!fp)
- continue;
-
- mxml_node_t *tree = mxmlLoadFile(NULL, fp, MXML_OPAQUE_CALLBACK);
- fclose(fp);
-
- if (tree) {
- void *devices_array = blobmsg_open_array(&bb, "devices");
- mxml_node_t *device = mxmlFindElement(tree, tree, "device", NULL, NULL, MXML_DESCEND);
- fill_device_instances(&bb, device);
- blobmsg_close_array(&bb, devices_array);
-
- void *services_array = blobmsg_open_array(&bb, "services");
- mxml_node_t *service = mxmlFindElement(tree, tree, "device", NULL, NULL, MXML_DESCEND);
- fill_service_element(&bb, service);
- blobmsg_close_array(&bb, services_array);
+ // Devices Array
+ void *devices_array = blobmsg_open_array(&bb, "devices");
+ fill_device_service_instances(&bb, true);
+ blobmsg_close_array(&bb, devices_array);
- mxmlDelete(tree);
- }
- }
+ // Services Array
+ void *services_array = blobmsg_open_array(&bb, "services");
+ fill_device_service_instances(&bb, false);
+ blobmsg_close_array(&bb, services_array);
ubus_send_reply(ctx, req, bb.head);
blob_buf_free(&bb);
@@ -624,3 +676,8 @@ end:
uloop_done();
ubus_free(ctx);
}

View File

@@ -9,13 +9,13 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=stunc
PKG_RELEASE:=1
PKG_VERSION:=1.1.14
PKG_VERSION:=1.1.15
LOCAL_DEV:=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/stunc.git
PKG_SOURCE_VERSION:=06b63878a448b593d907bb3e9c1381dc0e69bca6
PKG_SOURCE_VERSION:=09f9868a79e1b5037a99a97fd4dee678869fe98a
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_MIRROR_HASH:=skip
endif

View File

@@ -13,7 +13,7 @@ menu "SULU_CORE"
config SULU_CORE_VERSION
string "SULU repo version"
default "80815db11f7b0c1913ae551ff50ed2c89676f489"
default "5380c46eefc7dc2907ca749e9b3aaa6321039ee8"
endmenu
menu "SULU_PLUGIN_LCM"
@@ -35,7 +35,7 @@ menu "SULU_PLUGIN_LCM"
config SULU_PLUGIN_LCM_VERSION
depends on SULU_PLUGIN_LCM_ENABLE
string "Version"
default "ccd70b399b31530dc1af6a871eee94fbb179d794"
default "8e954f0adb3388e9ab2171df9c6bf85a1b82b020"
endmenu
menu "SULU_PLUGIN_MULTIAP"
@@ -57,7 +57,7 @@ menu "SULU_PLUGIN_MULTIAP"
config SULU_PLUGIN_MULTIAP_VERSION
depends on SULU_PLUGIN_MULTIAP_ENABLE
string "Version"
default "3e662d50c5a14225354f6287d1c6a47414b694a6"
default "db3828affb373a9ca9bae0b07591ab5c417825a7"
endmenu
menu "SULU_THEME_IOPSYS"

View File

@@ -5,11 +5,11 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=sulu-builder
PKG_VERSION:=1.3.25
PKG_VERSION:=1.3.26
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://dev.iopsys.eu/websdk/sulu-builder.git
PKG_SOURCE_VERSION:=696ef814e0b16345f2e8ee0104f3ee1eeaeea5dc
PKG_SOURCE_VERSION:=6d6848119bffdbe0ec9b8116caf6375749299dc0
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_MIRROR_HASH:=skip

View File

@@ -5,11 +5,11 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=sulu
PKG_VERSION:=1.3.25
PKG_VERSION:=1.3.26
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://dev.iopsys.eu/websdk/sulu.git
PKG_SOURCE_VERSION:=696ef814e0b16345f2e8ee0104f3ee1eeaeea5dc
PKG_SOURCE_VERSION:=6d6848119bffdbe0ec9b8116caf6375749299dc0
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_SOURCE_VERSION)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_VERSION).tar.gz

View File

@@ -5,12 +5,12 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=swmodd
PKG_VERSION:=2.1.19
PKG_VERSION:=2.1.20
LOCAL_DEV:=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=d7a069beab09ee1134ba1bc784c3bc9269df2e23
PKG_SOURCE_VERSION:=8dca3cd5b3963821d4abf397740ce735938fb078
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/swmodd.git
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_MIRROR_HASH:=skip

View File

@@ -6,13 +6,13 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=twamp
PKG_VERSION:=1.2.3
PKG_VERSION:=1.2.4
LOCAL_DEV:=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/twamp-light.git
PKG_SOURCE_VERSION:=b0111c35ff4908edd82c5d5f4a3c0d6809605b94
PKG_SOURCE_VERSION:=4811dd9fed8829fc8d0bcb67aba5d47e977b6d1a
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_MIRROR_HASH:=skip
endif

View File

@@ -8,13 +8,13 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=udpecho
PKG_VERSION:=2.0.2
PKG_VERSION:=2.0.3
LOCAL_DEV:=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/udpecho.git
PKG_SOURCE_VERSION:=19a555c2d460db6bdfcfa53742011fbb6a4ca6af
PKG_SOURCE_VERSION:=fd03a488979c06b5571cc6b47670cb145499ae81
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_MIRROR_HASH:=skip
endif

View File

@@ -5,13 +5,13 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=usermngr
PKG_VERSION:=1.0.4
PKG_VERSION:=1.0.6
LOCAL_DEV:=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/usermngr.git
PKG_SOURCE_VERSION:=9d5f529e236e03c91e41c421de7702923a24664e
PKG_SOURCE_VERSION:=099723ded69859623aca11a0bb3321452542efe5
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_MIRROR_HASH:=skip
endif

View File

@@ -5,12 +5,12 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=wfadatad
PKG_VERSION:=2.11.0.4
PKG_VERSION:=4.0.0.1
LOCAL_DEV=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=24dcb18f3e60082c70ab17b0707073fd2981f0a9
PKG_SOURCE_VERSION:=574d22ed710ff4dae441f7c0273b05bbfd5c33ed
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/wfadatad.git
PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_VERSION).tar.gz
PKG_MIRROR_HASH:=skip
@@ -22,24 +22,12 @@ PKG_LICENSE_FILES:=LICENSE
include $(INCLUDE_DIR)/package.mk
define Package/wfadatad
SECTION:=utils
CATEGORY:=Utilities
TITLE:=WiFi DataElements Agent (standalone) daemon
DEPENDS:=+libwifi +libuci +libubox +ubus +libpthread +libnl-genl \
@(!PACKAGE_map-agent) +libieee1905 +map-plugin
endef
define Package/wfadatad/description
This package implements WiFi DataElements Agent.
endef
define Package/wfadatad-collector
SECTION:=utils
CATEGORY:=Utilities
TITLE:=WiFi DataElements Collector Proxy
DEPENDS:=+libuci +libubox +ubus +libpthread +libnl-genl \
+libieee1905 +map-plugin
+libeasy +libwifiutils +libieee1905 +map-plugin
endef
define Package/wfadatad-collector/description
@@ -60,7 +48,6 @@ MAKE_FLAGS += DEBUG=1
endif
TARGET_CFLAGS += \
-Wno-error=deprecated-declarations \
-I$(STAGING_DIR)/usr/include \
-I$(STAGING_DIR)/usr/include/libnl3 \
-D_GNU_SOURCE
@@ -76,25 +63,15 @@ MAKE_PATH:=src
TARGET_CFLAGS += -DEASYMESH_VERSION=$(CONFIG_DECOLLECTOR_EASYMESH_VERSION)
EXECS := \
$(if $(CONFIG_PACKAGE_wfadatad),agent/deagent) \
$(if $(CONFIG_PACKAGE_wfadatad-collector),collector/decollector)
$(if $(CONFIG_PACKAGE_wfadatad-collector),decollector)
MAKE_FLAGS += EXECS="$(EXECS)"
define Package/wfadatad/install
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) ./files/deagent.init $(1)/etc/init.d/deagent
$(INSTALL_BIN) $(PKG_BUILD_DIR)/src/agent/deagent $(1)/usr/sbin/
endef
define Package/wfadatad-collector/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/collector/decollector $(1)/usr/sbin/
$(INSTALL_BIN) $(PKG_BUILD_DIR)/src/decollector $(1)/usr/sbin/
endef
$(eval $(call BuildPackage,wfadatad))
$(eval $(call BuildPackage,wfadatad-collector))

View File

@@ -5,12 +5,12 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=wifimngr
PKG_VERSION:=15.0.3
PKG_VERSION:=15.0.4
LOCAL_DEV=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=4ab6a59e1666581a96bde393f522cc9301cbf78d
PKG_SOURCE_VERSION:=29e21ebce8fe4ed6faf500afa73d5990e4d25424
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/wifimngr.git
PKG_MAINTAINER:=Anjan Chanda <anjan.chanda@iopsys.eu>
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)_$(PKG_SOURCE_VERSION).tar.xz