Compare commits

...

99 Commits

Author SHA1 Message Date
Arun Muthusamy
f7342e1fbf qos: Execute certain scripts after service instance starts 2022-02-24 08:42:38 +01:00
Amin Ben Ramdhane
160165e80f bbf: 6.6.2 2022-02-23 20:31:16 +01:00
Anjan Chanda
996cb66482 map-controller: 6.0.4: add Config.in 2022-02-23 18:36:12 +01:00
Jakob Olsson
0b7cd0e437 map-controller: 6.0.4 2022-02-23 18:30:28 +01:00
Jakob Olsson
53e48827f3 map-agent: 7.1.7 2022-02-23 18:29:33 +01:00
Stanislaw Gruszka
a4e2799b90 multi-ap: ts rework for eth suport 2022-02-23 18:29:08 +01:00
Anjan Chanda
a5a05dffa8 map-agent: 7.1.6 2022-02-23 18:29:08 +01:00
Anjan Chanda
9c9ab20ce8 map-agent: 7.1.5 2022-02-23 18:29:08 +01:00
Anjan Chanda
a225352493 ieee1905: 4.6.16 2022-02-23 18:29:08 +01:00
Jakob Olsson
0d9b296de6 easy-soc-libs: 6.4.35 2022-02-23 14:45:28 +01:00
Stanislaw Gruszka
95a5b5ee10 wfadatad: 6.10.6 2022-02-23 13:21:30 +01:00
Nevadita
128264643c map-topology: 3.2.4 2022-02-23 12:02:26 +00:00
vdutta
0f4cde377e sulu: Deploy config parameters in json 2022-02-23 16:33:47 +05:30
Jakob Olsson
c8614876b6 map-agent: 7.1.4 2022-02-22 16:02:04 +01:00
Jakob Olsson
4a58161994 map-controller: 6.0.3 2022-02-22 11:40:44 +01:00
Jakob Olsson
b9fd030365 map-agent: 7.1.3 2022-02-22 11:40:44 +01:00
Jakob Olsson
631617c16c map-agent: multiap: retain wps credentials in ieee1905 config 2022-02-22 11:40:44 +01:00
vdutta
54010769ed obuspa: Fix startup validations
- Fix validations in init script for the uci config
- Dump outgoing events in logs, if configured
- static code warning fixes
2022-02-22 12:24:04 +05:30
Jakob Olsson
f126ed414a map-agent: 7.1.2 2022-02-21 17:18:03 +01:00
Amin Ben Ramdhane
de0f3cca89 bbf: 6.6.1 2022-02-21 15:56:44 +01:00
sverma
534c63780d wfadatad: 6.10.5 2022-02-21 19:28:10 +05:30
Jakob Olsson
b6ab2574be map-controller: 6.0.2 2022-02-21 12:47:36 +01:00
vdutta
8bf3db77cc bbf: 6.6.0 2022-02-21 14:56:24 +05:30
vdutta
7507170ff0 swmodd: Fix static analysis warnings 2022-02-21 14:38:34 +05:30
vdutta
0c04002028 uspd: Fix static code warnings 2022-02-21 14:27:40 +05:30
Jakob Olsson
f3bb3ef39b map-agent: 7.1.1 2022-02-18 15:44:33 +01:00
Amin Ben Ramdhane
99d12f7829 bbf: 6.5.7 2022-02-18 15:40:15 +01:00
Jakob Olsson
97906205ff map-controller: 6.0.1 2022-02-18 15:23:06 +01:00
Jakob Olsson
8cc7e5c2ba map-topology: 3.2.3 2022-02-18 15:12:45 +01:00
Jakob Olsson
24fdb79b7c ieee1905: 4.6.10 2022-02-18 12:46:59 +01:00
Filip Matusiak
b07664f7d5 map-topology: validate config options 2022-02-18 11:58:54 +01:00
Filip Matusiak
c54e44a820 ieee1905: validate config options 2022-02-18 11:58:54 +01:00
Filip Matusiak
cf44c1a030 map-agent: validate config options 2022-02-18 11:58:54 +01:00
Filip Matusiak
18c4ab8c9e map-controller: validate config options 2022-02-18 11:58:54 +01:00
Arun Muthusamy
f27619294e qosmngr: Rearrange queue and shaper function call execution order 2022-02-18 07:19:54 +00:00
Amin Ben Ramdhane
619b267dac bbf: 6.5.6 2022-02-17 17:13:01 +01:00
Jakob Olsson
04ab56415a map-agent: 7.1.0 2022-02-17 16:56:43 +01:00
Jakob Olsson
bea0c35f8c map-controller: 6.0.0 2022-02-17 16:56:43 +01:00
Amin Ben Ramdhane
8946aa5dee bbf: 6.5.5 2022-02-16 15:47:01 +01:00
Stanislaw Gruszka
e390ee36bf wfadatad: 6.10.4 2022-02-16 11:53:31 +01:00
Yalu Zhang
09011fdbcc dectmngr-3.5.1: Fix a bug that handsets cannot receive incoming calls reliably 2022-02-16 10:37:10 +01:00
Nevadita
d15b40339d map-topology: 3.2.2 2022-02-16 08:36:11 +00:00
Grzegorz Sluja
e0a8c705af endptmngr: Add support for RTCP-XR packets 2022-02-16 09:03:31 +01:00
Jakob Olsson
ff83d37e78 map-agent: 7.0.2 2022-02-15 10:20:36 +01:00
Sukru Senli
88b0cf56a9 remove un-used/maintained packages 2022-02-14 18:13:12 +01:00
Jakob Olsson
dba3993ff6 map-agent: 7.0.1 2022-02-14 17:55:26 +01:00
Hemlata Bhatt
2b3c5fa177 dectmngr : don't allow failure in static code analysis 2022-02-11 17:45:24 +01:00
Hemlata Bhatt
e4bdbba9b6 endptmngr :Enable compiling options -Wall and -Werror 2022-02-11 17:32:02 +01:00
vdutta
7f808cf58d icwmp: 8.2.27 2022-02-11 21:34:06 +05:30
Hemlata
135cdad388 Enabled compiling options -Wall -Werror for endptmngr and dectmngr 2022-02-11 15:10:21 +00:00
Stanislaw Gruszka
d656e27020 wfadatad: 6.10.3 2022-02-11 16:08:15 +01:00
vdutta
fbc58f5635 obuspa: Use get_supported_dm for registration 2022-02-11 19:55:23 +05:30
vdutta
e940d301c3 obuspa: Integrate 5.0 release 2022-02-11 19:15:34 +05:30
vdutta
d7ae81bcc8 swmodd: Fix static code warnings 2022-02-11 19:06:13 +05:30
vdutta
f003c8a2b7 bbf: 6.5.4 2022-02-11 18:58:38 +05:30
Stanislaw Gruszka
153c11902a wfadatad: add debug options and local build to makefile 2022-02-11 12:28:15 +00:00
Stanislaw Gruszka
f5017094a8 map-agent: 7.0.0: traffic separation fixes 2022-02-11 12:25:01 +01:00
Hemlata Bhatt
e94d2fd218 bbf :Replace vendor extension for feature codes with PrefixRange and FacilityAction 2022-02-10 15:19:45 +01:00
Anjan Chanda
22790f81ed ieee1905: 4.6.8 2022-02-10 14:32:31 +01:00
Amin Ben Ramdhane
d1d9794962 bbf: 6.5.3 2022-02-10 12:33:17 +01:00
nevadita.chatterjee
ef4d9334cf map-topology:3.2.1 2022-02-10 14:22:39 +05:30
Jakob Olsson
f75a9f9d8d map-controller: 5.4.7 2022-02-09 16:44:29 +01:00
Sukru Senli
55ab8c9104 sulu: 0.2.28 2022-02-09 12:43:28 +01:00
Sukru Senli
0c6c6f6cc4 netmode: do not run netmode if mode is same as last saved mode 2022-02-08 23:04:37 +01:00
Hemlata Bhatt
0317645cd1 bbf :Replace vendor extension for feature codes with PrefixRange and FacilityAction 2022-02-08 17:29:31 +01:00
Sukru Senli
e12cf6ffa2 netmode: do not rely on mode folder 2022-02-08 15:08:35 +01:00
Amin Ben Ramdhane
1bf745f679 bbf: 6.5.2 2022-02-08 13:56:48 +01:00
Sukru Senli
53c2e2f0a2 iop: classify config 2022-02-08 11:49:02 +01:00
vdutta
0173920c83 swmodd: 2.0.23 2022-02-08 11:15:27 +05:30
vdutta
2bc7ff558e stunc: 1.0.4 2022-02-08 10:58:46 +05:30
vdutta
df0b0ec7ea udpechoserver: Added static code analysis pipeline 2022-02-08 10:55:14 +05:30
vdutta
e2a98f6cf1 uspd: 2.1.44 2022-02-08 10:03:46 +05:30
Sukru Senli
a169a13b47 netmode: do nothing if mode is not set 2022-02-07 21:17:04 +01:00
Amin Ben Ramdhane
1fbbaa8c59 udpechoserver: 1.0.1 2022-02-07 12:46:44 +01:00
Amin Ben Ramdhane
b214f5213b stunc: 1.0.3 2022-02-07 12:45:31 +01:00
Jakob Olsson
367a2e6084 map-agent: 6.6.4 2022-02-07 12:33:20 +01:00
Jakob Olsson
1e0f65be66 map-controller: 5.4.6 2022-02-07 12:33:20 +01:00
Amin Ben Ramdhane
6d941d04b9 bbf: 6.5.1 2022-02-07 11:30:32 +01:00
Sukru Senli
e3eb968b05 netmode: remove default netmodes 2022-02-06 14:16:18 +01:00
Sukru Senli
f67eca787f netmode: strip netmoded out of netmode package 2022-02-06 13:33:50 +01:00
Jakob Olsson
dace8147de map-agent: 6.6.3 2022-02-04 16:06:47 +01:00
vdutta
5812d812b1 owsd: 1.1.4 2022-02-04 19:07:49 +05:30
Yalu Zhang
69678f1dbc dectmngr-3.5.0: Upgrading to CMBS 4.13 Build 16 official release
This includes both the binary firmware on the target and dectmngr on the host.
2022-02-04 14:31:17 +01:00
Anjan Chanda
e2d4b3a6f5 wifimngr: 14.0.6 2022-02-04 14:15:50 +01:00
Anjan Chanda
2ea1145f43 ieee1905: 4.6.4 2022-02-04 14:11:11 +01:00
Sukru Senli
dcbd27282d iop: config: remove unused package 2022-02-04 10:58:05 +01:00
Amin Ben Ramdhane
f11c6bdbb9 bbf: 6.5.0 2022-02-04 10:51:35 +01:00
vdutta
70db2e6c67 swmodd: Support for fallback download
- In DuInstall if download failed inside container, download in host as
   fallback and install with local path
 - Added swmodd uci file
2022-02-04 13:26:23 +05:30
vdutta
28f1297db7 icwmp: 8.2.26 2022-02-04 12:09:06 +05:30
Amit KUmar
6e314334d8 easy-soc-libs: libqos static warning corrected 2022-02-04 11:53:59 +05:30
Sukru Senli
b2562f6fc1 qosmngr: read socinfo from /proc 2022-02-03 17:12:51 +01:00
Hemlata Bhatt
58a26135c5 dectmngr: Remove extra verbose syslog for firmware upgrading on the base station 2022-02-03 13:48:40 +01:00
Jakob Olsson
a035fb4d6e map-agent: 6.6.2 2022-02-03 12:53:48 +01:00
Amit KUmar
da7df410a8 easy-soc-libs: dsl ethernet static error resolved 2022-02-03 14:55:00 +05:30
Jakob Olsson
0415ed55c4 map-controller: 5.4.5 2022-02-02 17:07:22 +01:00
Jakob Olsson
2e7219ba46 map-agent: 6.6.1 2022-02-02 17:07:22 +01:00
Jeff Lyons
0d198eca97 Added additional header files (to allow additional .so modules to be built) 2022-02-02 11:19:52 +00:00
Suvendhu Hansa
f5575df624 umoci: Added package for oci image management 2022-02-02 07:16:24 +00:00
Sukru Senli
ad7067e57b crun: remove as it is now available under openwrt feed packages 2022-02-01 10:28:40 +01:00
69 changed files with 1393 additions and 1454 deletions

View File

@@ -5,11 +5,11 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=libbbfdm
PKG_VERSION:=6.4.18
PKG_VERSION:=6.6.2
PKG_FIXUP:=autoreconf
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/bbf.git
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=2758c0380e9dbec87b119df239aee29c7ed1ec48
PKG_SOURCE_VERSION:=be6a8fc69fc257f6e3bbd8864b7b1d25b8e77190
PKG_RELEASE=$(PKG_SOURCE_VERSION)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_MIRROR_HASH:=skip

View File

@@ -1,40 +0,0 @@
#
# Copyright (C) 2019 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:=crashlog
PKG_VERSION:=1.0.0
PKG_RELEASE:=1
PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
PKG_LICENSE:=GPLv2
PKG_LICENSE_FILES:=none
include $(INCLUDE_DIR)/package.mk
define Package/crashlog
CATEGORY:=Utilities
TITLE:=Handling kernel crash logs
endef
define Package/crashlog/description
Handling kernel crash logs.
endef
define Build/Prepare
mkdir -p $(PKG_BUILD_DIR)
$(CP) ./files/* $(PKG_BUILD_DIR)/
endef
define Build/Compile
endef
define Package/crashlog/install
$(CP) ./files/* $(1)/
endef
$(eval $(call BuildPackage,crashlog))

Binary file not shown.

View File

@@ -1,11 +0,0 @@
#!/bin/sh /etc/rc.common
START=01
start()
{
if [ -e /proc/sys/kernel/core_pattern ]
then
echo "|/sbin/logcore %e %s" > /proc/sys/kernel/core_pattern
fi
}

View File

@@ -1,55 +0,0 @@
#!/bin/sh /etc/rc.common
START=99
send_log()
{
nr=$(db get hw.board.serial_number)
hw=$(db get hw.board.model_name)
fam=$(db get hw.board.iopVerFam)
sw=$(db get hw.board.iopVersion)
server=$(/sbin/uci get system.crashlog.server)
while true
do
scp -S /usr/sbin/logssh /proc/last_kmsg log@${server}:log/${fam}_${hw}_${sw}_${nr}
if [ $? == 0 ]
then
break;
fi
# wait for another minute then try again
sleep 60
done
}
fill_in_default()
{
/sbin/uci add system log
/sbin/uci rename system.@log[-1]=crashlog
/sbin/uci set system.crashlog.enable=no
/sbin/uci set system.crashlog.server="crashlog.iopsys.eu"
/sbin/uci commit
}
boot()
{
# is crashlog enabled ?
enable=$(/sbin/uci get system.crashlog.enable)
case $enable in
0|no|NO|false|FALSE)
exit 0
;;
"")
fill_in_default
exit 0
;;
esac
# is this boot a result from a crash ?
reason=$(cat /etc/boot_reason)
case $reason in
HW|WD)
send_log&
;;
esac
}

View File

@@ -1,60 +0,0 @@
#! /bin/sh
TMP_CORE=/tmp/new_core
# first test if we can contact the log server.
# if not abort directly the core file takes up memory
alive()
{
ping -c1 $server
if [ $? != 0 ]
then
# drain core file from kernel
cat >/dev/null
exit 0
fi
}
fill_in_default()
{
/sbin/uci add system log
/sbin/uci rename system.@log[-1]=corelog
/sbin/uci set system.corelog.enable=no
/sbin/uci set system.corelog.server="corelog.iopsys.eu"
/sbin/uci commit
}
# is corelog enabled ?
enable=$(/sbin/uci get system.corelog.enable)
case $enable in
0|no|NO|false|FALSE)
# drain core file from kernel
cat >/dev/null
exit 0
;;
"")
fill_in_default
exit 0
;;
esac
server=$(/sbin/uci get system.corelog.server)
alive
# dump out the core to disk we need this as scp needs a size before we send data
# and this is the only way to know how much data there is
cat >$TMP_CORE
# in case filesystem/memory is full at least kill the core in the kernel memory should give us some
# more memory to work with. normally this would do nothing.
cat >/dev/null
nr=$(db get hw.board.serial_number)
hw=$(db get hw.board.model_name)
fam=$(hw.board.iopVerFam)
sw=$(db get hw.board.iopVersion)
scp -S /usr/sbin/logssh $TMP_CORE log@${server}:log/core_${1}_${2}_${fam}_${hw}_${sw}_${nr}
rm $TMP_CORE

View File

@@ -1,6 +0,0 @@
#!/bin/sh
# we need to have the -y option to dropbear to not halt the scp when
# transfering the log file to a new server for the first time.
# since we already need this also put in the keyfile
ssh -y -i /etc/dropbear/logid $@

View File

@@ -1,42 +0,0 @@
Install scp server.
Create a user account on a server and make sure it's possible to login to it
using ssh.
For now the user has to be called "log"
USER is the user name of the account
HOME is the user home directory.
Both should be changed to the correct value in all following example commands.
create HOME/bin
Put scp_upload in HOME/bin
make it executable "chmod a+x HOME/bin/scp_upload"
create home/.ssh (observer the dot .shh)
create an empty file HOME/.ssh/authorized_keys
-------------------------------
Now everyhting is setup for use but we have not added any clients.
What we need is the public key for the clients.
For dropbear "dropbearkey -y -f files/etc/dropbear/logid" will generate the public key.
----------
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCwn9RaDAzxW1dTmIhXgFBnpi1lhj8xhYpCVQiPxxdk9IEmH8zjo4y9j3sPkqKOlRnkwjpZIpLEKBnpQTwVIMCU/AG7nDJX3OH9RfS9mLJQLfFL8HyGCyqDezFWldbyovhJZvdUeK4tAXJWv2W3OVHiz2L8IlncBgP/E9DJElsyhhQHsM96UE6tBkXsvXkoDbMSYXFcLbgiUwBKfmM2BF/aPDL45iznGur7/2j9v95PwJ0gtMu9jjNRq+pXCXhTh3bsnczm0MpZC1aiRc9nJAeGIMmhrf15E4jBKgTnrstzJxGVAdajKeR954KcNsS33cS2Wmui2YjmPbBXjqf1frzJ log@iopsys
----------
The public key should be just one line. Add that line to the
HOME/.ssh/authorized_keys file on the scp server. Then add the follwoing as
the first text on the same line. that is insert before the key data.
command="HOME/bin/scp_upload",no-port-forwarding,no-agent-forwarding,no-X11-forwarding
Do not forget to change HOME to the correct value for the server and there
should be one space separating the key data and the above text.
---------------------------------
Now test to make sure that you can upload new files, not download files
and not overwrite files from the client.

View File

@@ -1,53 +0,0 @@
#! /bin/bash
# authorized_keys command="/home/boxi/my_scp",no-port-forwarding,no-agent-forwarding,no-X11-forwarding
val=`expr match "$SSH_ORIGINAL_COMMAND" "scp"`
if [ $val != 3 ]
then
echo "only scp is allowed for this rsa key"
exit 1
fi
#strip out "scp" as getopts barf on anything not an option
args=${SSH_ORIGINAL_COMMAND:3}
# we must set args to positional paramters otherwise it's next to impossible
# to get to the rest of the line that is not arguments.
set -- $args
while getopts "rftdvpq" Option
do
case $Option in
r ) echo "recursive not allowed";exit 1;;
f ) echo "reading files not allowed";exit 1;;
t ) ;;
d ) ;;
v ) ;;
p ) ;;
q ) ;;
* ) ;; # Default.
esac
done
shift $(($OPTIND - 1))
file="$*"
dir=$(dirname "$file")
if [ "$dir" != "log" ]
then
echo "only allowed to write to log/"
exit 1
fi
# try to create uniq files
EXTRA=$((0))
while [ -e "${file}_${EXTRA}" ]
do
EXTRA=$((EXTRA +1))
done
logger -t scp_upload "${SSH_ORIGINAL_COMMAND}_${EXTRA}"
exec ${SSH_ORIGINAL_COMMAND}_${EXTRA}

View File

@@ -1,81 +0,0 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=crun
PKG_VERSION:=0.20
PKG_RELEASE:=$(AUTORELEASE)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/containers/crun.git
PKG_SOURCE_DATE:=2021-06-07
PKG_SOURCE_VERSION:=8d6a8b5ab80461cfed19f020a36584af13c32038
PKG_MIRROR_HASH:=9ca1f0e530b33ce8820bd03329eb6731c5050d6e7f35bd2463d9a81cc00382e0
PKG_BUILD_DEPENDS:=argp-standalone
PKG_BUILD_PARALLEL:=1
PKG_FIXUP:=autoreconf
PKG_INSTALL:=1
PKG_MAINTAINER:=Oskari Rauta <oskari.rauta@gmail.com>
PKG_LICENSE:=GPL-2.0-or-later
PKG_LICENSE_FILES:=COPYING
include $(INCLUDE_DIR)/package.mk
define Package/crun
SECTION:=utils
CATEGORY:=Utilities
TITLE:=crun
URL:=https://github.com/containers/crun
DEPENDS:=@!arc +libseccomp +libcap
endef
define Package/crun/description
A fast and low-memory footprint OCI Container Runtime fully written in C.
endef
CONFIGURE_ARGS+= \
--disable-systemd \
--enable-embedded-yajl \
--enable-caps \
--enable-dl \
--enable-seccomp \
--enable-bpf
define Build/Prepare
$(call Build/Prepare/Default)
$(SED) '/#include <git-version.h>/d' $(PKG_BUILD_DIR)/src/crun.c
endef
define Build/Configure
$(call Build/Configure/Default)
$(SED) '/#define PACKAGE \"/d' $(PKG_BUILD_DIR)/config.h
$(SED) '/#define VERSION \"/d' $(PKG_BUILD_DIR)/config.h
$(SED) '/#define GIT_VERSION \"/d' $(PKG_BUILD_DIR)/config.h
$(SED) '/#define PACKAGE_BUGREPORT \"/d' $(PKG_BUILD_DIR)/config.h
$(SED) '/#define PACKAGE_NAME \"/d' $(PKG_BUILD_DIR)/config.h
$(SED) '/#define PACKAGE_STRING \"/d' $(PKG_BUILD_DIR)/config.h
$(SED) '/#define PACKAGE_TARNAME \"/d' $(PKG_BUILD_DIR)/config.h
$(SED) '/#define PACKAGE_VERSION \"/d' $(PKG_BUILD_DIR)/config.h
echo "#define PACKAGE \"$(PKG_NAME)\"" >> $(PKG_BUILD_DIR)/config.h
echo "#define VERSION \"$(PKG_VERSION)\"" >> $(PKG_BUILD_DIR)/config.h
echo "#define PACKAGE_NAME \"$(PKG_NAME)\"" >> $(PKG_BUILD_DIR)/config.h
echo "#define PACKAGE_VERSION \"$(PKG_VERSION)\"" >> $(PKG_BUILD_DIR)/config.h
echo "#define PACKAGE_STRING \"$(PKG_NAME) $(PKG_VERSION)\"" >> $(PKG_BUILD_DIR)/config.h
echo "#define PACKAGE_TARNAME \"$(PKG_NAME)\"" >> $(PKG_BUILD_DIR)/config.h
echo "#define PACKAGE_BUGREPORT \"bugs@openwrt.org\"" >> $(PKG_BUILD_DIR)/config.h
echo "#define GIT_VERSION \"$(PKG_SOURCE_VERSION)\"" >> $(PKG_BUILD_DIR)/config.h
endef
define Package/crun/install
$(INSTALL_DIR) $(1)/usr/bin/
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/crun $(1)/usr/bin/
endef
define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libcrun.* $(1)/usr/lib/
endef
$(eval $(call BuildPackage,crun))

View File

@@ -8,13 +8,13 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=dectmngr
PKG_RELEASE:=3
PKG_VERSION:=3.4.7
PKG_VERSION:=3.5.1
LOCAL_DEV=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/dectmngr.git
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=237bb7280029924e80373ea090e51434def89048
PKG_SOURCE_VERSION:=ef9d4c6124d0ca66f048f3d678d9a25f13aa4207
PKG_MIRROR_HASH:=skip
endif
@@ -53,6 +53,7 @@ endif
TARGET_CFLAGS += \
-Wall \
-Werror \
-I$(STAGING_DIR)/usr/include/libxml2
ifeq ($(CONFIG_ENABLE_LINE_SETTINGS_EXTENSION),y)

Binary file not shown.

Binary file not shown.

View File

@@ -7,13 +7,13 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=easy-soc-libs
PKG_VERSION:=6.4.34
PKG_VERSION:=6.4.35
PKG_RELEASE:=1
LOCAL_DEV=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=dd2ab2e5b83d585849aae3d539c1a8cd6dcb7146
PKG_SOURCE_VERSION:=699744d5ae9e043715c260f9b58bbc18747895f9
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

View File

@@ -13,7 +13,7 @@ LOCAL_DEV=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/endptmngr.git
PKG_SOURCE_VERSION:=548fa04d2714feeadb500192905fa6fb8172e6dd
PKG_SOURCE_VERSION:=94df920d39e8589c7ac7f5523bf372d48ef24c5e
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_MIRROR_HASH:=skip
endif
@@ -56,6 +56,10 @@ define Build/Prepare
endef
endif
TARGET_CFLAGS += \
-Wall \
-Werror
define Package/endptmngr/install
$(CP) ./files/* $(1)/
$(INSTALL_DIR) $(1)/usr/sbin

View File

@@ -8,11 +8,11 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=icwmp
PKG_VERSION:=8.2.25
PKG_VERSION:=8.2.27
PKG_FIXUP:=autoreconf
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/icwmp.git
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=22a1606d972d2dd05b23abe94323f72232727b37
PKG_SOURCE_VERSION:=da88c8c28656b2db54ab205d26faccda68546c05
PKG_RELEASE=$(PKG_SOURCE_VERSION)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_MIRROR_HASH:=skip

View 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

View File

@@ -5,12 +5,12 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=ieee1905
PKG_VERSION:=4.6.0
PKG_VERSION:=4.6.16
LOCAL_DEV=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=373602c3644ead5c61aece58e1f88f52838bb38b
PKG_SOURCE_VERSION:=be0d54ed751ef697e0cd5cf1393dc6932672d8ef
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/ieee1905.git
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)_$(PKG_SOURCE_VERSION).tar.xz
PKG_MIRROR_HASH:=skip
@@ -57,6 +57,10 @@ $(call Package/ieee1905/Default,$(1))
+libjson-c +libblobmsg-json +ieee1905 +libieee1905
endef
define Package/map-plugin/config
source "$(SOURCE)/Config.map-plugin.in"
endef
define Package/ieee1905/description
This package provides IEEE Std 1905.1 stack.
endef
@@ -74,6 +78,11 @@ ifeq ($(CONFIG_IEEE1905_PLATFORM_HAS_WIFI),y)
TARGET_CFLAGS += -DHAS_WIFI
endif
ifeq ($(CONFIG_MULTIAP_DYNAMIC_CNTLR_SYNC_CONFIG),y)
TARGET_CFLAGS += -DDYNAMIC_CNTLR_SYNC_CONFIG
endif
MAKE_PATH:=src
@@ -120,6 +129,7 @@ define Build/InstallDev/libieee1905
$(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/i1905_extension.h $(1)/usr/include/
$(CP) $(PKG_BUILD_DIR)/src/libmidgen.so $(1)/usr/lib/
$(CP) $(PKG_BUILD_DIR)/src/libieee1905.so $(1)/usr/lib/
endef

View File

@@ -5,7 +5,82 @@ STOP=21
USE_PROCD=1
IS_CFG_VALID=1
validate_ieee1905_section() {
uci_validate_section ieee1905 ieee1905 "ieee1905" \
'enabled:bool:true' \
'macaddress:or("auto",macaddr)' \
'registrar:string' \
'extension:bool:false' \
'extmodule:list(string)' \
[ "$?" -ne 0 ] && {
logger -s -t "ieee1905" "Validation of ieee1905 section failed"
IS_CFG_VALID=0
return 1
}
return 0
}
validate_ali_section() {
local section="$1"
uci_validate_section ieee1905 $section "${1}" \
'ifname:string' \
'type:or("bridge",string)'
[ "$?" -ne 0 ] && {
logger -s -t "ieee1905" "Validation of al-iface section $section failed"
IS_CFG_VALID=0
return 1
}
return 0
}
validate_ap_section() {
local section="$1"
uci_validate_section ieee1905 $section "${1}" \
'band:or("2", "5", "60")' \
'ssid:string' \
'encryption:or("psk2", "sae-mixed", "sae", string)' \
'key:string' \
'uuid:string' \
'manufacturer:string' \
'model_name:string' \
'device_name:string' \
'model_number:string' \
'serial_number:string' \
'device_type:string' \
'os_version:uinteger'
[ "$?" -ne 0 ] && {
logger -s -t "ieee1905" "Validation of ap section $section failed"
IS_CFG_VALID=0
return 1
}
return 0
}
validate_ieee1905_config() {
IS_CFG_VALID=1
validate_ieee1905_section &&
config_foreach validate_ali_section "al-iface" &&
config_foreach validate_ap_section ap
[ "$IS_CFG_VALID" -ne 1 ] && {
logger -s -t "ieee1905" "Validation of ieee1905 UCI file failed"
return 1
}
return 0
}
start_service() {
config_load "ieee1905"
validate_ieee1905_config || return 1;
procd_open_instance
procd_set_param command "/usr/sbin/ieee1905d"
procd_set_param respawn

View File

@@ -1,32 +1,139 @@
CONFIG_BUSYBOX_CUSTOM=y
############
# Generic #
##########
# Build #
CONFIG_BUILD_LOG=y
CONFIG_CCACHE=y
CONFIG_DEBUG=y
CONFIG_DEVEL=y
# CONFIG_USE_SSTRIP is not set
CONFIG_USE_STRIP=y
# CONFIG_SIGNED_PACKAGES is not set
# Image #
CONFIG_TARGET_CUSTOMER="IOPSYS"
CONFIG_TARGET_ROOTFS_TARGZ=y
# /etc/banner and /etc/device_info #
CONFIG_IMAGEOPT=y
CONFIG_VERSIONOPT=y
CONFIG_VERSION_MANUFACTURER="iopsysWrt"
CONFIG_VERSION_MANUFACTURER_URL="https://iopsys.eu/"
# /lib/preinit #
CONFIG_PREINITOPT=y
# CONFIG_TARGET_PREINIT_SUPPRESS_STDERR is not set
CONFIG_TARGET_PREINIT_DISABLE_FAILSAFE=y
CONFIG_TARGET_PREINIT_TIMEOUT=1
# CONFIG_TARGET_PREINIT_SHOW_NETMSG is not set
# CONFIG_TARGET_PREINIT_SUPPRESS_FAILSAFE_NETMSG is not set
CONFIG_TARGET_PREINIT_IFNAME=""
CONFIG_TARGET_PREINIT_IP=""
CONFIG_TARGET_PREINIT_NETMASK=""
CONFIG_TARGET_PREINIT_BROADCAST=""
# Mirror #
CONFIG_LOCALMIRROR="https://download.iopsys.eu/iopsys/mirror/"
##################
# IOWRT Add-ons #
################
# EasySoC HAL #
CONFIG_PACKAGE_inbd=y
CONFIG_PACKAGE_libwifi=y
CONFIG_PACKAGE_peripheral_manager=y
CONFIG_PACKAGE_port-management=y
CONFIG_PACKAGE_wifimngr=y
# Multi-AP #
CONFIG_PACKAGE_ieee1905=y
CONFIG_PACKAGE_map-topology=y
CONFIG_PACKAGE_wfadatad=y
CONFIG_PACKAGE_wfadatad-collector=y
# Network #
CONFIG_PACKAGE_netmode=y
CONFIG_PACKAGE_owsd=m
CONFIG_PACKAGE_urlfilter=y
# System #
CONFIG_PACKAGE_imonitor=m
CONFIG_PACKAGE_questd=y
CONFIG_PACKAGE_rulengd=y
# TR-x69 #
CONFIG_PACKAGE_uspd=y
CONFIG_PACKAGE_icwmp=y
CONFIG_PACKAGE_obuspa=y
CONFIG_PACKAGE_bulkdata=y
CONFIG_PACKAGE_periodicstats=y
CONFIG_PACKAGE_stunc=m
CONFIG_PACKAGE_swmodd=m
CONFIG_PACKAGE_twamp=m
CONFIG_PACKAGE_udpechoserver=m
CONFIG_PACKAGE_xmppc=m
# WebGUI #
CONFIG_PACKAGE_sulu=y
############
# Network #
##########
# Protocols #
CONFIG_PACKAGE_6in4=y
CONFIG_PACKAGE_6rd=y
CONFIG_PACKAGE_6to4=y
CONFIG_PACKAGE_at=y
CONFIG_PACKAGE_atftp=m
CONFIG_PACKAGE_atftpd=m
CONFIG_PACKAGE_bulkdata=y
CONFIG_PACKAGE_chat=y
CONFIG_PACKAGE_comgt=y
CONFIG_PACKAGE_comgt-directip=y
CONFIG_PACKAGE_comgt-ncm=y
CONFIG_PACKAGE_ddns-scripts=y
CONFIG_PACKAGE_ds-lite=y
CONFIG_PACKAGE_ethtool=y
CONFIG_PACKAGE_getopt=y
CONFIG_PACKAGE_gre=y
CONFIG_PACKAGE_icwmp=y
CONFIG_PACKAGE_ieee1905=y
CONFIG_PACKAGE_map-topology=y
CONFIG_PACKAGE_map=y
CONFIG_PACKAGE_ntfs-3g=y
CONFIG_PACKAGE_ntpd=y
CONFIG_PACKAGE_odhcp6c=y
CONFIG_PACKAGE_odhcpd=y
CONFIG_PACKAGE_ppp-mod-pppoa=y
CONFIG_PACKAGE_ppp-mod-pppoe=y
CONFIG_PACKAGE_ppp-mod-pppol2tp=y
CONFIG_PACKAGE_ppp-mod-pptp=y
CONFIG_PACKAGE_ppp-multilink=y
# CONFIG_PACKAGE_ppp is not set
CONFIG_PACKAGE_relayd=y
CONFIG_PACKAGE_umbim=y
CONFIG_PACKAGE_uqmi=y
CONFIG_PACKAGE_wwan=y
CONFIG_PACKAGE_xl2tpd=y
# Services #
CONFIG_PACKAGE_atftp=m
CONFIG_PACKAGE_atftpd=m
CONFIG_PACKAGE_ddns-scripts=y
CONFIG_PACKAGE_miniupnpd=y
CONFIG_PACKAGE_mosquitto-client-ssl=y
CONFIG_PACKAGE_mosquitto-ssl=y
CONFIG_PACKAGE_wfadatad=y
CONFIG_PACKAGE_wfadatad-collector=y
CONFIG_PACKAGE_imonitor=m
CONFIG_PACKAGE_inbd=y
CONFIG_PACKAGE_mwan3=y
CONFIG_PACKAGE_nginx=y
CONFIG_PACKAGE_openvpn-easy-rsa=y
CONFIG_PACKAGE_openvpn-openssl=y
CONFIG_OPENVPN_openssl_ENABLE_IPROUTE2=y
# CONFIG_PACKAGE_qos-scripts is not set
CONFIG_PACKAGE_rdnssd=y
CONFIG_PACKAGE_vsftpd-tls=m
# Tools and Utilities #
CONFIG_PACKAGE_curl=y
CONFIG_PACKAGE_libcurl=y
CONFIG_LIBCURL_CRYPTO_AUTH=y
# CONFIG_LIBCURL_MBEDTLS is not set
CONFIG_LIBCURL_OPENSSL=y
CONFIG_PACKAGE_ethtool=y
CONFIG_PACKAGE_ip-full=y
CONFIG_PACKAGE_iperf3=y
CONFIG_PACKAGE_ipset=y
@@ -34,88 +141,67 @@ CONFIG_PACKAGE_iptables=y
CONFIG_PACKAGE_iptables-mod-conntrack-extra=y
CONFIG_PACKAGE_iptables-mod-filter=y
CONFIG_PACKAGE_iptables-mod-ipopt=y
CONFIG_PACKAGE_ndisc6=y
CONFIG_PACKAGE_rdisc6=y
CONFIG_PACKAGE_resolveip=y
CONFIG_PACKAGE_tcpdump=y
CONFIG_PACKAGE_traceroute6=y
############
# System #
##########
CONFIG_PACKAGE_at=y
CONFIG_PACKAGE_getopt=y
# CONFIG_PACKAGE_iwatchdog is not set
CONFIG_PACKAGE_jq=y
CONFIG_PACKAGE_libreswan=m
CONFIG_PACKAGE_libwifi=y
CONFIG_PACKAGE_libustream-openssl=y
# CONFIG_PACKAGE_libustream-wolfssl is not set
CONFIG_PACKAGE_lscpu=y
CONFIG_PACKAGE_nand-utils=y
CONFIG_PACKAGE_openssl-util=y
CONFIG_OPENSSL_WITH_COMPRESSION=y
CONFIG_PACKAGE_rpcd=y
CONFIG_PACKAGE_rpcd-mod-rpcsys=y
CONFIG_PACKAGE_rpcd-mod-rrdns=y
CONFIG_PACKAGE_strace=y
CONFIG_PACKAGE_terminfo=y
CONFIG_PACKAGE_uledd=y
# The urandom-seed package is very strange. It seeds urandom with urandom...
# Disable it. Most SoCs nowadays has HW random generators anyway.
# CONFIG_PACKAGE_urandom-seed is not set
# CONFIG_PACKAGE_urngd is not set
CONFIG_PACKAGE_usb-modeswitch=y
CONFIG_PACKAGE_uuidgen=y
CONFIG_PACKAGE_zoneinfo-core=y
CONFIG_PACKAGE_zoneinfo-europe=y
################
# LuCI WebGUI #
##############
# BEGIN: luci-nginx metapackage with some changes
# We do not need luci-theme-bootstrap
# We do not want libiwinfo-lua on non-WiFi targets, but it is already
# depended on by other luci-packages, so no need to take it in explicitly
CONFIG_PACKAGE_nginx=y
CONFIG_PACKAGE_nginx-mod-luci=y
CONFIG_PACKAGE_luci-mod-admin-full=y
CONFIG_PACKAGE_luci-app-firewall=y
CONFIG_PACKAGE_luci-app-opkg=y
CONFIG_PACKAGE_luci-proto-ppp=y
CONFIG_PACKAGE_luci-proto-ipv6=y
CONFIG_PACKAGE_rpcd-mod-rrdns=y
# END: luci-nginx metapackage with some changes
# CONFIG_LUCI_JSMIN is not set
# CONFIG_LUCI_CSSTIDY is not set
CONFIG_PACKAGE_luci-mod-dashboard=y
CONFIG_PACKAGE_luci-theme-openwrt-2020=y
CONFIG_PACKAGE_nginx-mod-luci=y
CONFIG_PACKAGE_map=y
CONFIG_PACKAGE_miniupnpd=y
CONFIG_PACKAGE_mwan3=y
CONFIG_PACKAGE_nand-utils=y
CONFIG_PACKAGE_ndisc6=y
CONFIG_PACKAGE_netmode=y
CONFIG_PACKAGE_ntfs-3g=y
CONFIG_PACKAGE_ntpd=y
CONFIG_PACKAGE_obuspa=y
CONFIG_PACKAGE_odhcp6c=y
CONFIG_PACKAGE_odhcpd=y
CONFIG_PACKAGE_openssl-util=y
CONFIG_OPENSSL_WITH_COMPRESSION=y
CONFIG_PACKAGE_openvpn-easy-rsa=y
CONFIG_PACKAGE_openvpn-openssl=y
CONFIG_PACKAGE_owsd=y
CONFIG_PACKAGE_periodicstats=y
CONFIG_PACKAGE_peripheral_manager=y
CONFIG_PACKAGE_port-management=y
CONFIG_PACKAGE_ppp-mod-pppoa=y
CONFIG_PACKAGE_ppp-mod-pppoe=y
CONFIG_PACKAGE_ppp-mod-pppol2tp=y
CONFIG_PACKAGE_ppp-mod-pptp=y
CONFIG_PACKAGE_ppp-multilink=y
# CONFIG_PACKAGE_ppp is not set
# CONFIG_PACKAGE_qos-scripts is not set
CONFIG_PACKAGE_questd=y
CONFIG_PACKAGE_rdisc6=y
CONFIG_PACKAGE_rdnssd=y
CONFIG_PACKAGE_relayd=y
CONFIG_PACKAGE_resolveip=y
CONFIG_PACKAGE_rpcd=y
CONFIG_PACKAGE_rpcd-mod-rpcsys=y
CONFIG_PACKAGE_rulengd=y
CONFIG_PACKAGE_strace=y
CONFIG_PACKAGE_sulu=y
CONFIG_PACKAGE_swmodd=m
CONFIG_PACKAGE_tcpdump=y
CONFIG_PACKAGE_terminfo=y
CONFIG_PACKAGE_traceroute6=y
CONFIG_PACKAGE_uledd=y
CONFIG_PACKAGE_umbim=y
CONFIG_PACKAGE_uqmi=y
CONFIG_PACKAGE_urlfilter=y
CONFIG_PACKAGE_usb-modeswitch=y
CONFIG_PACKAGE_uspd=y
CONFIG_PACKAGE_vsftpd-tls=m
CONFIG_PACKAGE_wwan=y
CONFIG_PACKAGE_wifimngr=y
CONFIG_PACKAGE_uuidgen=y
CONFIG_PACKAGE_xl2tpd=y
CONFIG_PACKAGE_zoneinfo-core=y
CONFIG_PACKAGE_zoneinfo-europe=y
CONFIG_TARGET_CUSTOMER="IOPSYS"
# CONFIG_USE_SSTRIP is not set
CONFIG_USE_STRIP=y
CONFIG_BUILD_LOG=y
############
# BusyBox #
##########
CONFIG_BUSYBOX_CUSTOM=y
CONFIG_BUSYBOX_CONFIG_ADDUSER=y
CONFIG_BUSYBOX_CONFIG_ARPING=y
CONFIG_BUSYBOX_CONFIG_ASH_IDLE_TIMEOUT=y
@@ -135,6 +221,7 @@ CONFIG_BUSYBOX_CONFIG_FEATURE_MODUTILS_ALIAS=y
CONFIG_BUSYBOX_CONFIG_FEATURE_MODUTILS_SYMBOLS=y
CONFIG_BUSYBOX_CONFIG_DEFAULT_MODULES_DIR="/lib/modules"
CONFIG_BUSYBOX_CONFIG_DEFAULT_DEPMOD_FILE="modules.dep"
# CONFIG_BUSYBOX_CONFIG_IP is not set
CONFIG_BUSYBOX_CONFIG_LAST_SYSTEM_ID=999
CONFIG_BUSYBOX_CONFIG_LOGIN=y
# CONFIG_BUSYBOX_CONFIG_LSMOD is not set
@@ -198,40 +285,3 @@ CONFIG_BUSYBOX_CONFIG_FEATURE_VOLUMEID_SQUASHFS=y
CONFIG_BUSYBOX_CONFIG_FEATURE_VOLUMEID_UBIFS=y
CONFIG_BUSYBOX_CONFIG_TIMEOUT=y
CONFIG_BUSYBOX_CONFIG_NOHUP=y
CONFIG_LIBCURL_CRYPTO_AUTH=y
# CONFIG_LIBCURL_MBEDTLS is not set
CONFIG_LIBCURL_OPENSSL=y
CONFIG_OPENVPN_openssl_ENABLE_IPROUTE2=y
# CONFIG_SIGNED_PACKAGES is not set
# CONFIG_BUSYBOX_CONFIG_IP is not set
CONFIG_LOCALMIRROR="https://download.iopsys.eu/iopsys/mirror/"
# Generation of /etc/banner.
CONFIG_IMAGEOPT=y
CONFIG_VERSIONOPT=y
CONFIG_VERSION_MANUFACTURER="iopsysWrt"
CONFIG_VERSION_MANUFACTURER_URL="https://iopsys.eu/"
# Disable as much as possible of OpenWrt messy "pre-init" stuff.
CONFIG_PREINITOPT=y
# CONFIG_TARGET_PREINIT_SUPPRESS_STDERR is not set
CONFIG_TARGET_PREINIT_DISABLE_FAILSAFE=y
CONFIG_TARGET_PREINIT_TIMEOUT=1
# CONFIG_TARGET_PREINIT_SHOW_NETMSG is not set
# CONFIG_TARGET_PREINIT_SUPPRESS_FAILSAFE_NETMSG is not set
CONFIG_TARGET_PREINIT_IFNAME=""
CONFIG_TARGET_PREINIT_IP=""
CONFIG_TARGET_PREINIT_NETMASK=""
CONFIG_TARGET_PREINIT_BROADCAST=""
# Generate rootfs tar file
CONFIG_TARGET_ROOTFS_TARGZ=y
# The urandom-seed package is very strange. It seeds urandom with urandom...
# Disable it. Most SoCs nowadays has HW random generators anyway.
# CONFIG_PACKAGE_urandom-seed is not set
# CONFIG_PACKAGE_urngd is not set
# We use OpenSSL, no need to ship multiple TLS libraries
CONFIG_PACKAGE_libustream-openssl=y
# CONFIG_PACKAGE_libustream-wolfssl is not set

View File

@@ -1,54 +0,0 @@
# Copyright (C) 2018 Iopsys
#
include $(TOPDIR)/rules.mk
PKG_NAME:=libjwt
PKG_VERSION:=1.0.0
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=866607c7741421c8ac99876e7201eb32d9af1b92
PKG_SOURCE_URL:=https://github.com/benmcollins/libjwt.git
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)_$(PKG_SOURCE_VERSION).tar.xz
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
PKG_FIXUP:=autoreconf
PKG_LICENSE:=LGPLv3
PKG_LICENSE_FILES:=COPYING
include $(INCLUDE_DIR)/package.mk
define Package/libjwt
CATEGORY:=Libraries
DEPENDS:=+libopenssl +jansson
TITLE:= libjwt
endef
#TARGET_CFLAGS += \
# -I$(STAGING_DIR)/usr/include
# -I$(STAGING_DIR)/usr/include/libnl3
#MAKE_FLAGS += \
# CFLAGS="$(TARGET_CFLAGS)" \
# LDFLAGS="$(TARGET_LDFLAGS)" \
# FPIC="$(FPIC)" \
# PLATFORM="$(TARGET_PLATFORM)" \
# subdirs="$(subdirs)"
define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/include
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_BUILD_DIR)/include/jwt.h $(1)/usr/include/
$(CP) $(PKG_BUILD_DIR)/libjwt/.libs/libjwt.so* $(1)/usr/lib/
endef
define Package/libjwt/install
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_BUILD_DIR)/libjwt/.libs/libjwt.so* $(1)/usr/lib/
endef
$(eval $(call BuildPackage,libjwt))

10
map-agent/Config.in Normal file
View File

@@ -0,0 +1,10 @@
if (PACKAGE_map-agent)
menu "Configurations"
config AGENT_SYNC_DYNAMIC_CNTLR_CONFIG
bool "Support Dynamic Controller configuration sync"
default y if MULTIAP_DYNAMIC_CNTLR_SYNC_CONFIG
endmenu
endif

View File

@@ -5,9 +5,9 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=map-agent
PKG_VERSION:=6.6.0
PKG_VERSION:=7.1.7
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE_VERSION:=69219d6752dacd86040eb529af42d474f37a4f0b
PKG_SOURCE_VERSION:=25d9004691ef667ceddc6c5cae8b98f858ef78d9
PKG_MAINTAINER:=Anjan Chanda <anjan.chanda@iopsys.eu>
PKG_LICENSE:=PROPRIETARY IOPSYS
@@ -50,7 +50,7 @@ define Package/dynbhd/description
endef
define Package/map-agent/config
#source "$(SOURCE)/Config.in"
source "$(SOURCE)/Config.in"
endef
TARGET_CFLAGS += \
@@ -58,6 +58,10 @@ TARGET_CFLAGS += \
-I$(STAGING_DIR)/usr/include/libnl3 \
-D_GNU_SOURCE
ifeq ($(CONFIG_AGENT_SYNC_DYNAMIC_CNTLR_CONFIG),y)
TARGET_CFLAGS += -DAGENT_SYNC_DYNAMIC_CNTLR_CONFIG
endif
MAKE_PATH:=src
define Package/map-agent/install

View File

@@ -5,32 +5,44 @@ STOP=20
USE_PROCD=1
IS_CFG_VALID=1
MAP_DEV="map_dev"
MAP_IF="map"
MAP_VETH="lei"
create_map() {
ip link add lei type veth peer name lei_map 2>/dev/null
ip link add link lei name lei_lan type vlan id 1 2>/dev/null
uci -q set network.${MAP_DEV}=device
uci -q set network.${MAP_DEV}.name=br-map
uci -q set network.${MAP_DEV}.type=bridge
uci -q set network.${MAP_DEV}.bridge_empty=1
uci -q show network.${MAP_DEV}.ports | grep -q lei_map || {
uci -q add_list network.${MAP_DEV}.ports='lei_map'
}
uci -q set network.${MAP_IF}=interface
uci -q set network.${MAP_IF}.device=br-map
uci -q set network.${MAP_IF}.is_lan=1
uci -q show network.br_lan.ports | grep -q lei_lan || {
uci -q add_list network.br_lan.ports="lei_lan"
}
uci -q set mapagent.agent.al_bridge=br-map
uci -q commit
ubus call network reload
ubus -t 5 wait_for network.device
ubus -t 5 wait_for network.interface.map
ip link add ${MAP_VETH} type veth peer name ${MAP_VETH}_lan 2>/dev/null
brctl addif br-map ${MAP_VETH} 2>/dev/null
brctl addif br-lan ${MAP_VETH}_lan 2>/dev/null
ip link set ${MAP_VETH} up 2>/dev/null
ip link set ${MAP_VETH}_lan up 2>/dev/null
brctl addif br-map lei_map 2>/dev/null
brctl addif br-lan lei_lan 2>/dev/null
ip link set lei up 2>/dev/null
ip link set lei_map up 2>/dev/null
ip link set lei_lan up 2>/dev/null
}
remove_map() {
@@ -56,10 +68,137 @@ start_dynbhd_service() {
procd_close_instance
}
validate_agent_section() {
uci_validate_section mapagent agent "agent" \
'enabled:bool:true' \
'debug:range(0,16)' \
'profile:range(1,2):2' \
'brcm_setup:bool:false' \
'controller_macaddr:macaddr' \
'al_bridge:string' \
'netdev:string' \
'vlan_segregation:bool:false' \
'resend_num:uinteger:0' \
'dyn_cntlr_sync:bool:true'
[ "$?" -ne 0 ] && {
logger -s -t "mapagent" "Validation of agent section failed"
IS_CFG_VALID=0
return 1
}
return 0
}
validate_cs_section() {
local section="$1"
uci_validate_section mapagent $section "${section}" \
'local:bool:false' \
'id:string' \
'probe_int:range(0,1000):20' \
'retry_int:range(0,255):3' \
'autostart:bool:false'
[ "$?" -ne 0 ] && {
logger -s -t "mapagent" "Validation of controller_select section failed"
IS_CFG_VALID=0
return 1
}
return 0
}
validate_ap_section() {
local section="$1"
uci_validate_section mapagent $section "${1}" \
'ifname:string' \
'device:string' \
'band:or("2", "5")' \
'enabled:bool:true' \
'onboarded:bool:false' \
'ssid:string' \
'key:string' \
'encryption:string' \
'disallow_bsta_p1:bool:false' \
'disallow_bsta_p2:bool:false'
[ "$?" -ne 0 ] && {
logger -s -t "mapagent" "Validation of ap section failed"
IS_CFG_VALID=0
return 1
}
return 0
}
validate_radio_section() {
local section="$1"
uci_validate_section mapagent $section "${1}" \
'device:string' \
'band:or("2", "5")' \
'configured:bool:false' \
'onboarded:bool:false' \
'dedicated_backhaul:bool:false' \
'steer_policy:range(0,255)' \
'util_threshold:range(0,255)' \
'rcpi_threshold:range(0,255)' \
'report_rcpi_threshold:range(0,255)' \
'include_sta_stats:bool:false' \
'include_sta_metric:bool:false' \
'rcpi_hysteresis_margin:range(0,255)' \
'report_util_threshold:range(0,255)'
[ "$?" -ne 0 ] && {
logger -s -t "mapagent" "Validation of radio section failed"
IS_CFG_VALID=0
return 1
}
return 0
}
validate_policy_section() {
local section="$1"
uci_validate_section mapagent $section "${1}" \
'report_interval:range(0,255)' \
'pvid:uinteger' \
'report_interval:range(0,255)' \
'pcp_default:range(0,255)' \
'report_scan:bool' \
'report_sta_assocfails:bool' \
'report_sta_assocfails_rate:uinteger' \
'steer_exclude:list(macaddr)' \
'steer_exclude_btm:list(macaddr)' \
[ "$?" -ne 0 ] && {
logger -s -t "mapagent" "Validation of policy section failed"
IS_CFG_VALID=0
return 1
}
return 0
}
validate_agent_config() {
IS_CFG_VALID=1
validate_agent_section &&
config_foreach validate_cs_section controller_select &&
config_foreach validate_ap_section ap &&
config_foreach validate_radio_section radio &&
config_foreach validate_policy_section policy
[ "$IS_CFG_VALID" -ne 1 ] && {
logger -s -t "mapagent" "Validation of mapagent UCI file failed"
return 1
}
return 0
}
start_service() {
[ -f /usr/sbin/dynbhd ] && start_dynbhd_service
config_load "mapagent"
validate_agent_config || return 1;
ubus -t 5 wait_for wifi

View File

@@ -57,6 +57,7 @@ get_type_by_section() {
brcm_sync_credentials() {
bands=""
json_init
mapagent_process_fh() {
local section=$1
local dev=$2
@@ -80,6 +81,17 @@ brcm_sync_credentials() {
uci -q set ieee1905.${section}.ssid="$ssid"
uci -q set ieee1905.${section}.encryption=$encryption
uci -q set ieee1905.${section}.key="$key"
json_select "$band" > /dev/null
if [ "$?" = "0" ]; then
json_get_keys keys
for key in ${keys};
do
json_get_var val "$key"
uci -q set ieee1905.${section}.$key="$val"
done
json_select ..
fi
}
mapagent_process_radio() {
@@ -102,7 +114,38 @@ brcm_sync_credentials() {
}
ieee1905_del_ap() {
append_value() {
local section=$1
local key=$2
shift
shift
while [ "$key" != "" ]; do
val=$(uci -q get ieee1905.$section.$key)
[ "$val" = "" ] && {
key=$1
shift
continue
}
json_add_string "$key" ${val}
key=$1
shift
done
}
local section=$1
local band
config_get band $section band
json_select "$band" > /dev/null
rc=$?
[ "$rc" != "0" ] && json_add_object "$band"
append_value $section "manufacturer" "model_name" "device_name" "model_number" "serial_number" "device_type" "os_version"
if [ "$rc" != "0" ]; then
json_close_object
else
json_select ..
fi
uci -q delete ieee1905.${section}
}
@@ -114,9 +157,9 @@ brcm_sync_credentials() {
config_foreach mapagent_process_radio radio
uci commit ieee1905
json_cleanup
}
brcm_write_credentials() {
config_load mapagent

View File

@@ -4,11 +4,15 @@
### Traffic Separation ###
dbg() {
logger -t traffic_separation $@
}
ts_sub() {
ts_usage() {
cat <<EOF
Usage: $0 [create|delete|populate]
Usage: $0 [create|delete|populate|primary|reload]
Traffic Separation related functions.
create fh <iface> <vid> - create vlan device and rules for wifi fronthaul
create bh <iface> <vid> <profile> - create vlan device and rules for wifi backhaul
@@ -16,7 +20,7 @@ create eth <iface> <vid> <pbits> - create vlan device and rules for logical ethe
delete <iface> - delete vlan device
populate eth <iface> <vid> - add secondary network rules for logical ethernet interface
primary get <iface> - read primary VID for interface from driver (from Association Response frame IE)
reload - reload network with new configuration
EOF
exit 1
}
@@ -26,54 +30,102 @@ EOF
echo $bridge
}
set_wireless_bridge() {
config_load wireless
_set_network() {
local sec=$1
local iface=$2
local bridge=$3
config_get ifname $sec ifname
[ "$iface" != "$ifname" ] && continue
config_get mode $sec mode
config_get multi_ap $sec multi_ap "0"
[ "$mode" = "sta" -a "$multi_ap" = "1" ] && continue
config_get network $sec network
local new_network=${bridge##br-}
if [ "$new_network" != "$network" ] ; then
uci -q set wireless.${sec}.network=${new_network}
uci commit wireless
fi
brctl addif $bridge $iface &> /dev/null
}
config_foreach _set_network wifi-iface ${1} ${2}
}
ts_create() {
_create_vlan_dev() {
iface=$1 # real iface
vid=$2 # Vlan ID
bridge="$(_get_bridge $iface)" # bridge iface is connected to
vlan_dev=${iface}_vlan${vid} # name of vlan device to create
bridge=$3 # bridge iface should be connected
vlan_dev=$4
old_bridge="$(_get_bridge $iface)" # bridge iface is connected to
# remove interface from bridge if it is in one
[ -n "$bridge" ] && brctl delif $bridge $iface &> /dev/null
[ -n "$old_bridge" ] && brctl delif $old_bridge $iface &> /dev/null
# create vlan device
# (re)create vlan device
ip link show $vlan_dev && vlanctl --if-delete $vlan_dev
vlanctl --mcast --if-create-name $iface $vlan_dev --if $iface --set-if-mode-rg
# bring the vlan device up and add back to bridge if it was in one
[ -n "$bridge" ] && brctl addif $bridge $vlan_dev &> /dev/null
ip link set dev $vlan_dev up
vlanctl --if $iface --tx --tags 0 --default-miss-drop
vlanctl --if $iface --tx --tags 1 --default-miss-drop
vlanctl --if $iface --tx --tags 2 --default-miss-drop
vlanctl --if $iface --rx --tags 0 --default-miss-drop
vlanctl --if $iface --rx --tags 1 --default-miss-drop
vlanctl --if $iface --rx --tags 2 --default-miss-drop
echo $vlan_dev
# bring the vlan device up and add back to bridge if it was in one
brctl addif $bridge $vlan_dev &> /dev/null
}
ts_create_fh() {
iface=$1 # fh iface
vid=$2 # SSID specific (secondary) or primary vid
bridge=$3
[ -n "$iface" ] && [ -n "$vid" ] || {
[ -n "$iface" ] && [ -n "$vid" ] && [ -n "$bridge" ] || {
cat <<EOF
Adding FH device requires IFACE and VID.
Adding FH device requires IFACE, VID and bridge
EOF
exit 1
}
# create vlan device
vlan_dev=$(_create_vlan_dev $iface $vid)
#set_wireless_bridge $iface $bridge
vlan_dev=${iface}_vlan${vid}
ip link set $vlan_dev down
_create_vlan_dev $iface $vid $bridge $vlan_dev
# add rules
# Note: removing these for now since these packets are read directly from the iface anyway
# vlanctl --if $iface --rx --tags 0 --filter-ethertype 0x888e --set-rxif $vlan_dev --rule-append # incoming EAPOL
# vlanctl --if $iface --rx --tags 0 --filter-ethertype 0x886c --set-rxif $vlan_dev --rule-append # incoming brcm
# EAPOL frames
vlanctl --if $iface --rx --tags 0 --filter-ethertype 34958 --set-rxif $vlan_dev --rule-append
vlanctl --if $iface --rx --tags 1 --filter-ethertype 34958 --pop-tag --set-rxif $vlan_dev --rule-append
vlanctl --if $iface --tx --tags 0 --filter-txif $vlan_dev --filter-ethertype 34958 --rule-append
# 8021q vlan id TAG/UNTAG
vlanctl --if $iface --rx --tags 0 --set-rxif $vlan_dev --push-tag --set-vid $vid 0 --rule-append
vlanctl --if $iface --tx --tags 1 --filter-txif $vlan_dev --filter-vid $vid 0 --pop-tag --dscp2pbits 0 --rule-append
ip link set $iface up
ip link set $vlan_dev up
}
# Note: Currently not used (will be needed for Profile 1)
ts_create_bh() {
iface=$1 # bh iface
vid=$2 # primary vid
profile=$3 # agent profile (1 or 2)
bridge=$4 # bridge interface should be connected to
[ -n "$iface" ] && [ -n "$vid" ] && [ -n "$profile" ] || {
cat <<EOF
@@ -82,40 +134,13 @@ EOF
exit 1
}
# create vlan device
vlan_dev=$(_create_vlan_dev $iface $vid)
#[ -n "$bridge" ] && set_wireless_bridge $iface $bridge
# add rules
case "$profile" in
1 | profile_1 | profile1 | Profile_1 | Profile1)
vlanctl --if $iface --rx --tags 0 --set-rxif $vlan_dev --push-tag --set-vid $vid 0 --rule-append
vlanctl --if $iface --tx --tags 1 --filter-txif $vlan_dev --pop-tag --rule-append
;;
2 | profile_2 | profile2 | Profile_2 | Profile2)
vlanctl --if $iface --rx --tags 1 --set-rxif $vlan_dev --rule-append
vlanctl --if $iface --tx --tags 1 --filter-txif $vlan_dev --rule-append # note: already default
vlanctl --if $iface --tx --tags 0 --filter-ethertype 0x893a --filter-txif $vlan_dev --push-tag --set-vid $vid 0 --rule-append # note: outgoing IEEE1905.1
vlanctl --if $iface --tx --tags 0 --filter-ethertype 0x888e --filter-txif $vlan_dev --push-tag --set-vid $vid 0 --rule-append # note: outgoing EAPOL
;;
*)
ts_delete $iface
ts_usage
exit 1
;;
esac
}
old_vid=$(wl -i $1 map_8021q_settings)
old_vid=${old_vid##* }
old_profile=$(wl -i $1 map_profile | cut -d ' ' -f 3)
ts_create_bh_drv() {
iface=$1 # bh iface
vid=$2 # primary vid
profile=$3 # agent profile (1 or 2)
[ -n "$iface" ] && [ -n "$vid" ] && [ -n "$profile" ] || {
cat <<EOF
Adding BH device requires IFACE, VID and PROFILE (1 or 2).
EOF
exit 1
}
[ "$old_vid" = "$vid" -a "$old_profile" = "$profile" ] && return
wl vlan_mode 0 &> /dev/null # make sure this is OFF, else driver won't handle vlan
wl -i $iface down &> /dev/null
@@ -124,53 +149,118 @@ EOF
wl -i $iface up &> /dev/null
}
ts_create_eth() {
ts_create_lei() {
vid=$1 # primary vid
pbits=$2 # default pbits to apply
vlan_bridge=$3 # name of ts subsystem bridge
lan_bridge=$4 # name of node local bridge
_ts_setup() {
vlan_bridge=$1
lan_bridge=$2
vlan_dev=$3
lan_dev=${vlan_dev}_lan
ip link show $vlan_dev &> /dev/null || ip link add $vlan_dev type veth peer name $lan_dev
brctl addif $vlan_bridge $vlan_dev &> /dev/null
brctl addif $lan_bridge $lan_dev &> /dev/null
ip link set $vlan_dev up
ip link set $lan_dev up
}
iface=$1 # Multi-AP Logical Ethernet Interface
vid=$2 # primary vid
pbits=$3 # default pbits to apply
vlan_bridge=$4 # name of ts subsystem bridge
lan_bridge=$5 # name of node local bridge
[ -n "$iface" ] && [ -n "$vid" ] && [ -n "$pbits" ] && [ -n "$vlan_bridge" ] && [ -n "$lan_bridge" ] || {
[ -n "$vid" ] && [ -n "$pbits" ] && [ -n "$vlan_bridge" ] && [ -n "$lan_bridge" ] || {
cat <<EOF
Adding ETH device requires IFACE, VID, PBITS and name of vlan and lan bridges.
EOF
exit 1
}
# create virtual eth device between bridges (if it doesn't exist))
_ts_setup $vlan_bridge $lan_bridge $iface
ip link show lei &> /dev/null || {
ip link add link lei name lei_lan type vlan id 1 2>/dev/null
}
# create vlan device
vlan_dev=$(_create_vlan_dev $iface $vid)
old_vid=$(ip -d link show lei_lan | sed -n 's/vlan.*id \([0-9][0-9]*\) .*/\1/p')
# TODO: how to disable returning traffic back to incoming interface?
[ "$old_vid" != "$vid" ] && {
ip link del lei_lan
ip link add link lei name lei_lan type vlan id ${vid}
}
brctl addif ${lan_bridge} lei_lan &>/dev/null
brctl addif ${vlan_bridge} lei_map &>/dev/null
ip link set lei up
ip link set lei_map up
ip link set lei_lan up
}
_create_eth() {
iface=$1 # Multi-AP Logical Ethernet Interface
vid=$2 # primary vid
bridge=$3 # name of ts subsystem bridge
pbits=0
[ -n "$iface" ] && [ -n "$vid" ] && [ -n "$bridge" ] || {
cat <<EOF
Adding ETH device requires IFACE, VID, PBITS and name of vlan and lan bridges.
EOF
exit 1
}
dbg create $@
ip link set $iface down
vlan_dev=${iface}_vlan${vid}
ip link set $vlan_dev down
_create_vlan_dev $iface $vid $bridge $vlan_dev
# add rules
vlanctl --if $iface --rx --tags 0 --set-rxif $vlan_dev --push-tag --set-vid $vid 0 --set-pbits $pbits 0 --rule-append
vlanctl --if $iface --tx --tags 1 --filter-vid $vid 0 --filter-txif $vlan_dev --pop-tag --rule-append
[ $# -le 3 ] && exit 0
shift 3
while [ -n "$1" ] ; do
vid=$1
vlanctl --if $iface --rx --tags 1 --filter-vid $vid 0 --set-rxif $vlan_dev --rule-append
vlanctl --if $iface --tx --tags 1 --filter-vid $vid 0 --filter-txif $vlan_dev --rule-append
shift
done
ip link set $iface up
ip link set $vlan_dev up
}
ts_create_eths() {
pvid=$1 # primary vid
bridge=$2 # name of ts subsystem bridge
shift 2
# TODO use ieee1905 bridge
for iface in $(uci get network.br_lan.ports) ; do
[ "$iface" = "lei_lan" ] && continue
_create_eth $iface $pvid $bridge $@
ubus call ieee1905 del_interface "{\"ifname\":\"$iface\"}"
done
}
ts_create_dhcp() {
local diff=""
_net_setup() {
local name=$1
local devname=$2
local vid=$3
[ -z "$(uci -q get network.${name})" ] && {
uci -q set network.${name}="interface"
uci -q set network.${name}.device="$devname"
uci -q set network.${name}.is_lan="1"
uci -q set network.${name}.proto="static"
# TODO vid > 255
local ip_addr="192.168.${vid}.1"
[ "${vid}" = "1" ] && ip_addr="192.168.${vid}.2"
uci -q set network.${name}.ipaddr="${ip_addr}"
uci -q set network.${name}.netmask="255.255.255.0"
diff="1"
}
[ "$diff" = "1" ] && uci -q commit network
}
_br_setup() {
local name=$1
local sinkname=$2
local vid=$3
local diff=""
[ -z "$(uci -q get network.${name}_dev)" ] && {
uci -q set network.${name}_dev="device"
@@ -193,11 +283,7 @@ EOF
diff="1"
}
[ "$diff" = "1" ] && {
uci -q commit network
ubus call network reload
ubus -t 5 wait_for network.device
}
[ "$diff" = "1" ] && uci -q commit network
}
_dhcp_setup() {
@@ -217,43 +303,44 @@ EOF
uci -q add_list dhcp.${name}.ra_flags="managed-config"
uci -q add_list dhcp.${name}.ra_flags="other-config"
diff="1"
uci -q commit dhcp
ubus call uci commit '{"config":"dhcp"}'
}
_wan_setup() {
_firewall_setup() {
local name=$1
local network=$2
local zone_exist=0
config_load firewall
_process_zone() {
local section=$1
local sink=$2
local new_name=$2
local name
local exists=false
config_get name $section name
[ "$name" == "lan" ] || return
_process_list() {
local value=$1
[ "$value" == "$sink" ] && exists=true && return 1
}
config_list_foreach "$section" network _process_list
[ $exists = false ] && {
uci -q add_list firewall.${section}.network="${sink}"
uci -q commit firewall
ubus call uci commit '{"config":"firewall"}'
}
return 1
[ "$name" == "$new_name" ] && zone_exist=1
}
config_foreach _process_zone zone $name
[ "$zone_exist" != "0" ] && return
uci -q add firewall zone
uci -q set firewall.@zone[-1].name="$name"
uci -q add_list firewall.@zone[-1].network="$network"
uci -q set firewall.@zone[-1].input='ACCEPT'
uci -q set firewall.@zone[-1].output='ACCEPT'
uci -q set firewall.@zone[-1].forward='ACCEPT'
uci -q add firewall forwarding
uci -q set firewall.@forwarding[-1].src="$name"
uci -q set firewall.@forwarding[-1].dest="wan"
diff="1"
uci -q commit firewall
}
vid=$1 # primary vid
@@ -265,20 +352,26 @@ EOF
exit 1
}
br_dev=sink_vlan${vid} # name of vlan device to create
ip link show sink${vid} || {
ip link add sink${vid} type veth peer name sink${vid}_vlan
ip link add link sink${vid} name sink${vid}_peer type vlan id ${vid}
}
ip link set sink${vid} up
ip link set sink${vid}_peer up
ip link set sink${vid}_vlan up
ip l a sink1_vlan${vid} type veth peer name sink2_vlan${vid}
vlanctl --mcast --if-create-name sink2_vlan${vid} sink3_vlan${vid} --if sink2_vlan${vid} --set-if-mode-rg
vlanctl --if sink2_vlan${vid} --rx --tags 1 --filter-vid ${vid} 0 --set-rxif sink3_vlan${vid} --pop-tag --rule-append
vlanctl --if sink2_vlan${vid} --tx --tags 0 --filter-txif sink3_vlan${vid} --push-tag --set-vid ${vid} 0 --rule-append
ip l s sink1_vlan${vid} up
ip l s sink2_vlan${vid} up
ip l s sink3_vlan${vid} up
diff=""
_net_setup sink${vid} sink${vid}_peer ${vid}
_dhcp_setup sink${vid}
_firewall_setup lan${vid} sink${vid}
_br_setup $br_dev sink3_vlan${vid} $vid
_dhcp_setup $br_dev
_wan_setup $br_dev
[ "$diff" = "1" ] && {
ubus call network reload
ubus -t 5 wait_for network.interface.sink${vid}
}
brctl addif br-map sink${vid}_vlan &> /dev/null
}
local type=$1
@@ -286,9 +379,9 @@ EOF
case "$type" in
fh) ts_create_fh $@;;
# bh) ts_create_bh $@;;
bh) ts_create_bh_drv $@;;
eth) ts_create_eth $@;;
bh) ts_create_bh $@;;
lei) ts_create_lei $@;;
eths) ts_create_eths $@;;
dhcp) ts_create_dhcp $@;;
--help|help) ts_usage;;
*) ts_usage; exit 1;;
@@ -300,12 +393,15 @@ EOF
path=$(ls -d /sys/class/net/${iface}/upper_*)
[ -z "$path" ] && exit 0
vlan_dev=${path##*upper_}
bridge="$(_get_bridge $vlan_dev)"
vlanctl --if-delete $vlan_dev # note: also removes rules and removes from bridge
[ -n "$bridge" ] && {
vlanctl --if-delete $vlan_dev # note: also removes rules and removes from bridge
brctl addif $bridge $iface &> /dev/null # needed to add again
}
brctl addif $bridge $iface &> /dev/null
}
ts_populate() {
@@ -327,8 +423,8 @@ EOF
vlan_dev=${path##*upper_}
# add rules
vlanctl --if $iface --rx --tags 1 --filter-vid $vid 0 --set-rxif $vlan_dev --rule-append # note: retain secondary vids
vlanctl --if $iface --tx --tags 1 --filter-vid $vid 0 --filter-txif $vlan_dev --rule-append # note: already default
#vlanctl --if $iface --rx --tags 1 --filter-vid $vid 0 --set-rxif $vlan_dev --rule-append # note: retain secondary vids
#vlanctl --if $iface --tx --tags 1 --filter-vid $vid 0 --filter-txif $vlan_dev --rule-append # note: already default
}
ts_primary() {
@@ -365,16 +461,50 @@ EOF
ebtables -t broute -I BROUTING -i "$iface" -d 01:80:C2:00:00:13 -p 0x893a -j DROP
}
ts_reload() {
local dhcp_reload=$1
# workaround for missing backhaul wifi.ap.* ubus obj's:
# iterate in config and setup bh
config_load wireless
_setup_bh_iface() {
local sec=$1
local iface=$2
local bridge=$3
config_get ifname $sec ifname
config_get mode $sec mode
config_get multi_ap $sec multi_ap "0"
[ "$mode" = "ap" -a "$multi_ap" = "1" ] && {
ts_create bh $ifname 1 2 br-map
}
}
config_foreach _setup_bh_iface wifi-iface
[ -n "dhcp_reload" ] && /etc/init.d/dnsmasq reload
# another workaround for netif? removed
# sink devices for br-map bridge
for sink in $(ubus list network.interface.sink*) ; do
local sink_vlan=${sink/network.interface./}_vlan
brctl addif br-map $sink_vlan &> /dev/null
done
}
local func=$1
shift
case "$func" in
create) ts_create $@;;
delete) ts_delete $@;;
populate) ts_populate $@;;
primary) ts_primary $@;;
unicast) ts_unicast $@;;
multicast) ts_multicast $@;;
create) dbg "create $@"; ts_create $@;;
delete) dbg "delete $@"; ts_delete $@;;
populate) dbg "populate $@"; ts_populate $@;;
primary) dbg "primary $@"; ts_primary $@;;
unicast) dbg "unicast $@"; ts_unicast $@;;
multicast) dbg "multicast $@"; ts_multicast $@;;
reload) dbg "reload $@"; ts_reload $@;;
--help|help) ts_usage;;
*) ts_usage; exit 1;;
esac

10
map-controller/Config.in Normal file
View File

@@ -0,0 +1,10 @@
if (PACKAGE_map-controller)
menu "Configurations"
config CONTROLLER_SYNC_DYNAMIC_CNTLR_CONFIG
bool "Support Dynamic Controller configuration sync"
default y if MULTIAP_DYNAMIC_CNTLR_SYNC_CONFIG
endmenu
endif

View File

@@ -5,9 +5,9 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=map-controller
PKG_VERSION:=5.4.4
PKG_VERSION:=6.0.4
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE_VERSION:=52e85d2dd2762148aaac808f0d867bce92c69a26
PKG_SOURCE_VERSION:=005f085252640decd55c83bfbd9da6fa32071593
PKG_LICENSE:=PROPRIETARY IOPSYS
PKG_LICENSE_FILES:=LICENSE
@@ -34,7 +34,7 @@ define Package/map-controller/description
endef
define Package/map-controller/config
#source "$(SOURCE)/Config.in"
source "$(SOURCE)/Config.in"
endef
TARGET_CFLAGS += \
@@ -44,6 +44,10 @@ TARGET_CFLAGS += \
MAKE_PATH:=src
ifeq ($(CONFIG_CONTROLLER_SYNC_DYNAMIC_CNTLR_CONFIG),y)
TARGET_CFLAGS += -DCONTROLLER_SYNC_DYNAMIC_CNTLR_CONFIG
endif
define Package/map-controller/install
$(INSTALL_DIR) $(1)/etc
$(CP) ./files/* $(1)/

View File

@@ -5,6 +5,8 @@ STOP=20
USE_PROCD=1
IS_CFG_VALID=1
handle_controller_select() {
local section="$1"
@@ -12,10 +14,122 @@ handle_controller_select() {
return 1
}
validate_controller_section() {
uci_validate_section mapcontroller controller "controller" \
'enabled:bool:true' \
'registrar:string' \
'debug:range(0,16)' \
'resend_num:uinteger:0' \
'enable_sta_steer:bool:false' \
'enable_bsta_steer:bool:false' \
'use_bcn_metrics:bool:false' \
'use_usta_metrics:bool:false'
[ "$?" -ne 0 ] && {
logger -s -t "mapcontroller" "Validation of controller section failed"
IS_CFG_VALID=0
return 1
}
return 0
}
validate_ap_section() {
local section="$1"
uci_validate_section mapcontroller $section "${1}" \
'band:or("2", "5")' \
'ssid:string' \
'encryption:or("sae-mixed", "sae", "psk-mixed", "psk2", "psk",
"wpa-mixed", "wpa2", "wpa", "none", "open")' \
'key:string' \
'vid:range(1,65535):1' \
'type:or("backhaul", "fronthaul", "combined")' \
'disallow_bsta:list(range(0,255)):0' \
'enabled:bool:true'
[ "$?" -ne 0 ] && {
logger -s -t "mapcontroller" "Validation of ap section $section failed"
IS_CFG_VALID=0
return 1
}
return 0
}
validate_node_section() {
local section="$1"
uci_validate_section mapcontroller $section "${1}" \
'agent_id:macaddr' \
'backhaul_ul_macaddr:macaddr' \
'backhaul_dl_macaddr:macaddr' \
'backhaul_type:or("none")' \
'primary_vid:range(0,255):1' \
'primary_pcp:range(0,255):0' \
'report_sta_assocfails:bool:false' \
'report_sta_assocfails_rate:uinteger' \
'report_metric_periodic:range(0,255)' \
'report_scan:bool:false' \
'steer_exclude:list(macaddr)' \
'steer_exclude_btm:list(macaddr)' \
'steer_disallow:bool:false' \
'coordinated_cac:bool:false' \
'traffic_separation:bool:false' \
'sta_steer:bool:false'
[ "$?" -ne 0 ] && {
logger -s -t "mapcontroller" "Validation of node section $section failed"
IS_CFG_VALID=0
return 1
}
return 0
}
validate_radio_section() {
local section="$1"
uci_validate_section mapcontroller $section "${1}" \
'agent_id:macaddr' \
'macaddr:macaddr' \
'band:or("2", "5")' \
'steer_policy:range(0,2)' \
'util_threshold:range(0,255)' \
'rcpi_threshold:range(0,255)' \
'report_rcpi_threshold:range(0,255)' \
'report_util_threshold:range(0,255)' \
'report_rcpi_hysteresis_margin:range(0,255)' \
'include_sta_stats:bool:false' \
'include_sta_metric:bool:false'
[ "$?" -ne 0 ] && {
logger -s -t "mapcontroller" "Validation of radio section $section failed"
IS_CFG_VALID=0
return 1
}
return 0
}
validate_controller_config() {
IS_CFG_VALID=1
validate_controller_section &&
config_foreach validate_ap_section ap &&
config_foreach validate_node_section node &&
config_foreach validate_radio_section radio
[ "$IS_CFG_VALID" -ne 1 ] && {
logger -s -t "mapcontroller" "Validation of mapcontroller UCI file failed"
return 1
}
return 0
}
start_service() {
local enabled
config_load "mapcontroller"
validate_controller_config || return 1;
config_get_bool enabled controller enabled 1
[ "$enabled" -eq 0 ] && return

View File

@@ -6,11 +6,11 @@ include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=map-topology
PKG_VERSION:=3.2.0
PKG_VERSION:=3.2.4
LOCAL_DEV:=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_VERSION:=d1fae1ff7a8bc8daea08799b9ffbdeb424903e54
PKG_SOURCE_VERSION:=55b4bae9338ffa19255756c20626228ca4f30ee2
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

@@ -5,7 +5,72 @@ STOP=21
USE_PROCD=1
IS_CFG_VALID=1
validate_topology_config() {
uci_validate_section topology topology "topology" \
'enabled:bool:true' \
'depth:range(0,16)' \
'interval:range(0,65535)' \
'maxlog:range(0,128)' \
[ "$?" -ne 0 ] && {
logger -s -t "topology" "Validation of topology UCI file failed"
return 1
}
return 0
}
validate_global_section() {
uci_validate_section hosts global "global" \
'ageing_timer:uinteger' \
'reboot_persistent:bool'
[ "$?" -ne 0 ] && {
logger -s -t "hosts" "Validation of global section failed"
IS_CFG_VALID=0
return 1
}
return 0
}
validate_host_section() {
local section="$1"
uci_validate_section hosts $section "${1}" \
'macaddr:macaddr' \
'interface_type:or("wifi","eth")' \
'active:bool' \
'active_last_change:string'
[ "$?" -ne 0 ] && {
logger -s -t "hosts" "Validation of host section $section failed"
IS_CFG_VALID=0
return 1
}
return 0
}
validate_hosts_config() {
IS_CFG_VALID=1
validate_global_section &&
config_foreach validate_host_section host
[ "$IS_CFG_VALID" -ne 1 ] && {
logger -s -t "topology" "Validation of hosts UCI file failed"
return 1
}
return 0
}
start_service() {
config_load "topology"
validate_topology_config || return 1;
config_load "hosts"
validate_hosts_config || return 1;
procd_open_instance
procd_set_param command "/usr/sbin/topologyd"
procd_set_param respawn

View File

@@ -1,40 +0,0 @@
#
# Copyright (C) 2020 IOPSYS
#
include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=mqtt-ciotc
PKG_VERSION:=0.1
PKG_SOURCE_VERSION:=00da3fb1f1691d836037dc4d93e38d0835ba46a4
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/wifilife-testbed.git
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:=Apache-2.0
include $(INCLUDE_DIR)/package.mk
define Package/mqtt-ciotc
CATEGORY:=Utilities
DEPENDS:=+libjwt +lib-paho-mqtt +libopenssl +libubox +ubus +libblobmsg-json
TITLE:=mqtt google iot clinet
endef
define Package/mqtt-ciotc/description
mqtt google iot client
endef
define Package/mqtt-ciotc/install
$(CP) ./files/* $(1)/
$(INSTALL_DIR) $(1)/sbin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/mqtt_ciotc $(1)/sbin/
endef
$(eval $(call BuildPackage,mqtt-ciotc))

View File

@@ -1,3 +0,0 @@
config certs 'certs'
option private '/etc/mqtt-ciotc/rsa_private.pem'
option root '/etc/mqtt-ciotc/roots.pem'

View File

@@ -1,35 +0,0 @@
#!/bin/sh /etc/rc.common
START=96
STOP=10
PROG=/sbin/mqtt_ciotc
USE_PROCD=1
start_service() {
procd_open_instance
procd_set_param command ${PROG}
config_load mqtt_ciotc
config_get private certs private
config_get root certs root
[ -n $private ] && procd_append_param command --private-cert $private
[ -n $root ] && procd_append_param command --root-cert $root
procd_set_param respawn
procd_close_instance
}
stop_service()
{
service_stop ${PROG}
}
reload_service() {
# procd_send_signal wifilife # use SIGHUP
stop
start
}
service_triggers() {
procd_add_reload_trigger "mqtt_ciotc"
}

View File

@@ -8,35 +8,26 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=netmode
PKG_VERSION:=0.2.0
PKG_SOURCE_VERSION:=5c8abbdf86e4651c7c6f14f784cfb52e69979f96
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/netmoded
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:=GPLv2
PKG_LICENSE_FILES:=LICENSE
PKG_VERSION:=0.3.0
PKG_RELEASE:=1
PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
PKG_LICENSE:=GPL-2.0-only
include $(INCLUDE_DIR)/package.mk
define Package/netmode
CATEGORY:=Base system
DEPENDS:=+fping +ubus +libubox +libuci
TITLE:=Predefined Network Modes
CATEGORY:=Utilities
TITLE:=Network Modes and Utils
endef
define Package/netmode/description
Predefined Network Modes
Network Modes and Utils
endef
define Build/Compile
endef
define Package/netmode/install
$(CP) ./files/* $(1)/
$(INSTALL_DIR) $(1)/sbin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/netmoded $(1)/sbin/
endef
$(eval $(call BuildPackage,netmode))

View File

@@ -1,8 +1,10 @@
config netmoded 'netmoded'
option enabled '0'
config setup 'setup'
option enabled '0'
option dir '/etc/netmodes'
config netmode global
option enabled 0
# option mode 'router'
#config testnet testnet
# option enabled 1
# option destination '8.8.8.8'
#config shiftrange shiftrange
# option enabled 1

View File

@@ -1,16 +1,16 @@
#!/bin/sh
# do not start testnet if the feature is explicitly disabled
[ "$(uci -q get netmode.testnet.enabled)" = "0" ] && exit 0
[ "$ACTION" == "ifup" -o "$ACTION" == "ifdown" ] || exit 0
interface_check() {
local islan="$(uci -q get network.$INTERFACE.is_lan)"
[ "$islan" == "1" ] && exit 0
[ "$(uci -q get network.$INTERFACE.is_lan)" = "1" ] && exit 0
local proto="$(uci -q get network.$INTERFACE.proto)"
[ "$proto" == "none" ] && exit 0
[ "$(uci -q get network.$INTERFACE.proto)" = "none" ] && exit 0
local defroute="$(uci -q get network.$INTERFACE.defaultroute)"
[ "$defroute" == "0" ] && exit 0
[ "$(uci -q get network.$INTERFACE.defaultroute)" = "0" ] && exit 0
}
interface_check
@@ -19,4 +19,3 @@ if [ -n "$(pgrep -f testnet)" ]; then
else
testnet &
fi

View File

@@ -2,6 +2,9 @@
# this scripts shifts the lan network prefixes
# if a wan interface has the same network prefix.
# do not shift range if the feature is explicitly disabled
[ "$(uci -q get netmode.shiftrange.enabled)" == "0" ] && exit 0
. /lib/functions.sh
. /lib/functions/network.sh

View File

@@ -3,44 +3,71 @@
START=10
USE_PROCD=1
NETMODED="/sbin/netmoded"
. /lib/functions.sh
. /lib/functions/netmode.sh
start_netmoded() {
config_load netmode
MODEDIR="/etc/netmodes"
config_get enabled netmoded enabled 0
if [ "$enabled" != "1" ]; then
return
libnetmode_exec() {
when="$1"
# Execute /lib/netmode scripts
if [ -d /lib/netmode/$when ]; then
logger -s -p user.info -t "netmode" "Executing /lib/netmode/$when scripts"
for script in $(ls /lib/netmode/$when/); do
sh /lib/netmode/$when/$script
done
fi
procd_open_instance
procd_set_param command $NETMODED
procd_append_param command --verbose warning -i macaddr
procd_set_param stdout 1
procd_set_param stderr 1
procd_set_param respawn
procd_close_instance
}
start_service() {
populate_netmodes
[ -f /etc/config/netmode ] || return
start_netmoded
}
config_load netmode
reload_service() {
switch_netmode
config_get_bool enabled global enabled '0'
[ $enabled -eq 0 ] && return
start_netmoded
# Get the desired netmode from config
config_get mode global mode
# Check if netmode is set as boot environment parameter
[ -n "$mode" ] || mode="$(fw_printenv -n netmode 2>/dev/null)"
# Return if mode is not set
[ -n "$mode" ] || return
# Get the last saved mode
lastmode="$(cat /etc/netmodes/.last_mode 2>/dev/null)"
# Return if desired mode is same as last saved mode
[ "$mode" == "$lastmode" ] && return
# Save mode as last mode
echo "$mode" > /etc/netmodes/.last_mode
logger -s -p user.info -t "netmode" "Switching to $mode Mode" >/dev/console
# Execute netmode generic pre-mode-switch scripts
libnetmode_exec "pre"
# Copy netmode UCI config files
if [ -d $MODEDIR/$mode/uci ]; then
logger -s -p user.info -t "netmode" "Copying $MODEDIR/$mode/uci/* to /etc/config/"
cp $MODEDIR/$mode/uci/* /etc/config/ 2>/dev/null
fi
# Execute netmode generic scripts
libnetmode_exec
# Execute mode specific scripts
if [ -d $MODEDIR/$mode/scripts ]; then
logger -s -p user.info -t "netmode" "Executing $MODEDIR/$mode/scripts/* scripts"
for script in $(ls $MODEDIR/$mode/scripts/); do
sh $MODEDIR/$mode/scripts/$script
done
fi
# Execute netmode generic post-mode-switch scripts
libnetmode_exec "post"
}
service_triggers()
{
procd_add_reload_trigger netmode
}

View File

@@ -1,9 +0,0 @@
{
"description": [
{ "en" : "Bridge Mode" }
],
"explanation": [
{ "en" : "NAT is disabled." }
],
"reboot" : 0
}

View File

@@ -1,92 +0,0 @@
#!/bin/sh
. /usr/share/libubox/jshn.sh
. /lib/functions.sh
BRIDGEPORTS=""
get_vlan() {
local device="$1"
for section in $(uci show network | grep "=device" | cut -d '=' -f1); do
if [ "$(uci -q get $section.ifname)" == "$device" ]; then
uci -q get $section.name
break
fi
done
}
add_wifi_devs()
{
add_wdev()
{
local cfg=$1
# local disabled
# config_get_bool disabled $cfg disabled 0
# config_get_bool ifname $cfg ifname
# if [ $disabled -eq 0 -a -n "$ifname" ]; then
# BRIDGEPORTS="$ifname"
# fi
uci -q set wireless.$cfg.network="wan"
}
config_load wireless
config_foreach add_wdev "wifi-iface"
uci -q commit wireless
}
add_xtm_devs() {
local section device vlan
for section in $(uci show dsl | grep "=.*tm-device" | cut -d'=' -f1); do
if [ -n "$(uci -q get $section.device)" ]; then
vlan="$(get_vlan $device)"
[ -n "$vlan" ] && device="$vlan"
if [ -n "$device" ]; then
BRIDGEPORTS="$BRIDGEPORTS $device"
fi
fi
done
}
add_eth_ports() {
add_port()
{
local cfg=$1
local ifname vlan
config_get ifname $cfg ifname
vlan="$(get_vlan $ifname)"
[ -n "$vlan" ] && ifname="$vlan"
if [ -n "$ifname" ]; then
BRIDGEPORTS="$BRIDGEPORTS $ifname"
fi
}
config_load ports
config_foreach add_port "ethport"
}
add_xtm_devs
add_eth_ports
add_wifi_devs
BRIDGEPORTS="$(echo $BRIDGEPORTS | sed -e 's/[[:space:]]*$//')"
uci -q set network.wan.type="bridge"
uci -q set network.wan.ifname="$BRIDGEPORTS"
uci -q set network.wan6.ifname="@wan"
uci -q delete network.lan.ifname
ubus call uci commit '{"config":"network"}'

View File

@@ -1,9 +0,0 @@
{
"description": [
{ "en" : "Router Mode" }
],
"explanation": [
{ "en" : "NAT is enabled." }
],
"reboot" : 0
}

View File

@@ -1,94 +0,0 @@
#!/bin/sh
. /usr/share/libubox/jshn.sh
. /lib/functions.sh
WANPORTS=""
LANPORTS=""
get_vlan() {
local device="$1"
for section in $(uci show network | grep "=device" | cut -d '=' -f1); do
if [ "$(uci -q get $section.ifname)" == "$device" ]; then
uci -q get $section.name
break
fi
done
}
add_wifi_devs()
{
add_wdev()
{
local cfg=$1
config_get mode $cfg mode "ap"
if [ "$mode" == "ap" ]; then
uci -q set wireless.$cfg.network="lan"
fi
}
config_load wireless
config_foreach add_wdev "wifi-iface"
uci -q commit wireless
}
add_xtm_devs() {
local section device vlan
for section in $(uci show dsl | grep "=.*tm-device" | cut -d'=' -f1); do
device="$(uci -q get $section.device)"
if [ -n "$device" ]; then
vlan="$(get_vlan $device)"
[ -n "$vlan" ] && device="$vlan"
if [ -n "$device" ]; then
WANPORTS="$WANPORTS $device"
fi
fi
done
}
add_eth_ports() {
add_port()
{
local cfg=$1
local uplink ifname vlan
config_get ifname $cfg ifname
config_get_bool uplink $cfg uplink 0
vlan="$(get_vlan $ifname)"
[ -n "$vlan" ] && ifname="$vlan"
if [ $uplink -eq 1 ]; then
WANPORTS="$WANPORTS $ifname"
else
LANPORTS="$LANPORTS $ifname"
fi
}
config_load ports
config_foreach add_port "ethport"
}
add_xtm_devs
add_eth_ports
add_wifi_devs
WANPORTS="$(echo $WANPORTS | sed -e 's/[[:space:]]*$//')"
LANPORTS="$(echo $LANPORTS | sed -e 's/[[:space:]]*$//')"
uci -q set network.wan.type="anywan"
uci -q set network.wan.ifname="$WANPORTS"
uci -q set network.wan6.ifname="@wan"
uci -q set network.lan.type="bridge"
uci -q set network.lan.ifname="$LANPORTS"
ubus call uci commit '{"config":"network"}'

View File

@@ -1,13 +0,0 @@
#!/bin/sh
. /lib/functions.sh
add_owsd_ubusproxy_object_netmode() {
local netmd=$(uci -q get owsd.ubusproxy.object | grep netmode)
if [ -z "$netmd" ]; then
uci -q add_list owsd.ubusproxy.object="netmode"
uci commit owsd
fi
}
add_owsd_ubusproxy_object_netmode

View File

@@ -1,150 +0,0 @@
#!/bin/sh
. /lib/functions.sh
. /usr/share/libubox/jshn.sh
MODEDIR=$(uci -q get netmode.setup.dir)
[ -n "$MODEDIR" ] || MODEDIR="/etc/netmodes"
run_netmode_scripts() {
local mode=$1
local when=$2
local script
local path
path=$(readlink -f /etc/netmodes/$mode/)
[ "${path:0:14}" == "/etc/netmodes/" ] || exit
if [ -d /etc/netmodes/$mode/scripts/$when ]; then
logger -s -p user.info -t "netmode" "Executing $when netmode scripts" >/dev/console
for script in $(ls /etc/netmodes/$mode/scripts/$when/); do
sh /etc/netmodes/$mode/scripts/$when/$script
done
fi
}
switch_netmode() {
[ -f /etc/config/netmode -a -d $MODEDIR ] || return
config_load netmode
local enabled
config_get_bool enabled setup enabled '0'
[ $enabled -eq 0 ] && return
local mode
config_get mode setup mode
[ -d "/etc/netmodes/$mode" ] || return
logger -s -p user.info -t "netmode" "Switching to $mode Mode" >/dev/console
run_netmode_scripts $mode "pre"
local reboot=$(uci -q get netmode.$mode.reboot)
if [ "$reboot" == "1" ]; then
#run_netmode_scripts $mode "post"
reboot &
exit
fi
#run_netmode_scripts $mode "post"
}
populate_netmodes() {
[ -f /etc/config/netmode -a -d $MODEDIR ] || return
config_load netmode
local enabled
config_get_bool enabled setup enabled '0'
[ $enabled -eq 0 ] && return
delete_netmode() {
uci delete netmode.$1
}
config_foreach delete_netmode netmode
uci commit netmode
local hardware=$(db -q get hw.board.model_name)
local keys lang desc exp exclude support
for mode in $(ls $MODEDIR); do
lang=""
desc=""
exp=""
uci -q set netmode.$mode=netmode
json_load "$(cat $MODEDIR/$mode/DETAILS)"
if json_select excluded_boards; then
exclude=0
_i=1
while json_get_var board $_i; do
case "$hardware" in
$board)
uci -q delete netmode.$mode
exclude=1
break
;;
esac
_i=$((_i+1))
done
json_select ..
[ $exclude -eq 1 ] && continue
elif json_select supported_boards; then
support=0
_i=1
while json_get_var board $_i; do
case "$hardware" in
$board)
support=1
break
;;
esac
_i=$((_i+1))
done
json_select ..
[ $support -eq 1 ] || {
uci -q delete netmode.$mode
continue
}
fi
json_select description
json_get_keys keys
for k in $keys; do
json_get_keys lang $k
lang=$(echo $lang | sed 's/^[ \t]*//;s/[ \t]*$//')
json_select $k
json_get_var desc $lang
uci -q set netmode.$mode."desc_$lang"="$desc"
[ "$lang" == "en" ] && uci -q set netmode.$mode."desc"="$desc"
json_select ..
done
json_select ..
json_select explanation
json_get_keys keys
for k in $keys; do
json_get_keys lang $k
lang=$(echo $lang | sed 's/^[ \t]*//;s/[ \t]*$//')
json_select $k
json_get_var exp $lang
uci -q set netmode.$mode."exp_$lang"="$exp"
[ "$lang" == "en" ] && uci -q set netmode.$mode."exp"="$exp"
json_select ..
done
json_select ..
json_get_var cred credentials
uci -q set netmode.$mode.askcred="$cred"
json_get_var ulb uplink_band
uci -q set netmode.$mode.uplink_band="$ulb"
json_get_var reboot reboot
uci -q set netmode.$mode.reboot="$reboot"
done
uci commit netmode
}

View File

@@ -31,7 +31,10 @@ test_connection() {
internet_test() {
local link dest
dest="$(uci -q get diagnostics.@connectivity[0].destination)"
# use the destination address given in config for connectivity check
dest="$(uci -q get netmode.testnet.destination)"
# for backwards compatibility
[ -n "$dest" ] || dest="$(uci -q get diagnostics.@connectivity[0].destination)"
test_connection $dest

View File

@@ -2,16 +2,24 @@ if PACKAGE_obuspa
menu "Configuration"
config OBUSPA_MTP_ENABLE_STOMP
bool "Enable STOMP as mtp protocol"
default y
config OBUSPA_DB_PATH
string "Configure path for usp.db file"
default "/tmp/"
config OBUSPA_MTP_ENABLE_MQTT
bool "Enable MQTT as mtp protocol"
default y
config OBUSPA_MTP_ENABLE_WEBSOCKETS
bool "Enable WebSockets as mtp protocol"
default y
config OBUSPA_MTP_ENABLE_STOMP
bool "Enable STOMP as mtp protocol"
default y
config OBUSPA_MTP_ENABLE_COAP
bool "Enable CoAP as mtp protocol"
default y
default n
endmenu
endif

View File

@@ -5,12 +5,12 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=obuspa
PKG_VERSION:=4.1.0.18
PKG_VERSION:=5.0.0.3
LOCAL_DEV:=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=af3d4663d66942e3b0e3253375c5620629769aa5
PKG_SOURCE_VERSION:=9d957848b9ac1d381149ce43b59775c21b1e24e0
PKG_SOURCE_URL:=https://dev.iopsys.eu/fork/obuspa.git
PKG_MAINTAINER:=Vivek Dutta <vivek.dutta@iopsys.eu>
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
@@ -31,7 +31,7 @@ define Package/obuspa
CATEGORY:=Utilities
SUBMENU:=TRx69
TITLE:=USP agent
DEPENDS:=+libopenssl +libcurl +libsqlite3 +libubox +libubus +uspd +libmosquitto
DEPENDS:=+libopenssl +libcurl +libsqlite3 +libubox +libubus +uspd +libmosquitto-ssl +libwebsockets-openssl
endef
define Package/obuspa/description
@@ -44,7 +44,14 @@ endef
TARGET_CFLAGS += \
-I$(STAGING_DIR)/usr/include \
-D_GNU_SOURCE
-D_GNU_SOURCE \
-Wall \
-Werror
ifneq ($(CONFIG_OBUSPA_DB_PATH),)
CONFIGURE_ARGS += \
--localstatedir="$(CONFIG_OBUSPA_DB_PATH)"
endif
ifeq ($(CONFIG_OBUSPA_MTP_ENABLE_STOMP),y)
CONFIGURE_ARGS += \
@@ -70,6 +77,14 @@ else
--disable-coap
endif
ifeq ($(CONFIG_OBUSPA_MTP_ENABLE_WEBSOCKETS),y)
CONFIGURE_ARGS += \
--enable-websockets
else
CONFIGURE_ARGS += \
--disable-websockets
endif
ifeq ($(LOCAL_DEV),1)
define Build/Prepare
$(CP) -rf ~/git/obuspa/* $(PKG_BUILD_DIR)/

View File

@@ -31,7 +31,7 @@ cleanup() {
trap cleanup EXIT
log() {
echo "${@}"|logger -t obuspa.init -p debug
echo "$*"|logger -t obuspa.init -p debug
}
db_set() {
@@ -49,9 +49,8 @@ update_keep() {
return;
fi
grep -q "${keep_file}" ${KEEP_FILES}
if [ "$?" -ne 0 ]; then
echo ${keep_file} >> ${KEEP_FILES}
if grep -q "${keep_file}" ${KEEP_FILES}; then
echo "${keep_file}" >> ${KEEP_FILES}
fi
}
@@ -63,11 +62,12 @@ get_index() {
}
get_role_index_from_json() {
local role="${@}"
local role="$*"
local num=0
local roles_obj
# In case of role is empty or file not present
if [ -z "${role}" -o ! -f "${role_def_file}" ]; then
if [ -z "${role}" ] || [ ! -f "${role_def_file}" ]; then
return 0
fi
@@ -79,11 +79,11 @@ get_role_index_from_json() {
for k in ${roles_obj}; do
local rname
json_select $k
json_select "$k"
json_get_var rname name
json_select ..
if [ "${rname}" != "Untrusted" -a "${rname}" != "full_access" ]; then
if [ "${rname}" != "Untrusted" ] && [ "${rname}" != "full_access" ]; then
num=$(( num + 1 ))
fi
@@ -102,10 +102,10 @@ get_uci_ref_index() {
index=0
config_load $CONFIGURATION
config_foreach get_index $1 $2
config_foreach get_index "$1" "$2"
val=$(cat ${USP_TEMP_FILE})
if [ -z $val ]; then
if [ -z "${val}" ]; then
val=0
fi
@@ -121,7 +121,7 @@ validate_obuspa_section()
'trust_cert:file' \
'client_cert:file' \
'interface:string' \
'ifname:string:br-lan' \
'ifname:string' \
'debug:bool:false' \
'prototrace:bool:false' \
'log_level:uinteger' \
@@ -223,25 +223,37 @@ validate_mqtt_client_section()
'ConnectRetryMaxInterval:uinteger:60'
}
get_oui_from_db() {
local oui="$(db get device.deviceinfo.ManufacturerOUI)"
validate_challenge_section()
{
uci_validate_section ${CONFIGURATION} challenge "${1}" \
'Enable:bool:true' \
'Alias:string' \
'Description:string' \
'role_name:string' \
'Role:string' \
'Value:string' \
'Retries:uinteger:3' \
'LockoutPeriod:uinteger:0'
}
echo "${oui}"
get_oui_from_db() {
db -q get device.deviceinfo.ManufacturerOUI
}
get_serial_from_db() {
local serial="$(db get device.deviceinfo.SerialNumber)"
# this can encoded further
echo "${serial}"
db -q get device.deviceinfo.SerialNumber
}
publish_endpoint() {
local AgentEndpointID serial oui user pass
local opt=""
if ! uci -q get obuspa.localmqtt; then
log "Remote mqtt broker configured, skip publishing endpoint"
return 0;
fi
# return if mosquitto_pub is not present
if [ ! "$(which mosquitto_pub)" ]; then
if [ ! "$(command -v mosquitto_pub)" ]; then
log "mosquitto_pub not present can't publish EndpointID"
return 0;
fi
@@ -256,22 +268,24 @@ publish_endpoint() {
fi
config_get user localmqtt Username
if [ -n "${user}" ]; then
opt="-u ${user}"
fi
config_get pass localmqtt Password
if [ -n "${pass}" ]; then
opt="${opt} -P ${pass}"
fi
# publish Agent's EndpointID in mosquito broker for discovery by usp-js
# This is a work around till obuspa adds supports for mDNS discovery
log "Publishing EndpointID ${AgentEndpointID} to local mqtt broker"
mosquitto_pub -r -t "obuspa/EndpointID" -m "${AgentEndpointID}" ${opt}
if [ -n "${user}" ] && [ -n "${pass}" ]; then
log "Publishing EndpointID ${AgentEndpointID} to local mqtt broker with username, password"
mosquitto_pub -r -t "obuspa/EndpointID" -m "${AgentEndpointID}" -u "${user}" -P "${pass}"
elif [ -n "${user}" ]; then
log "Publishing EndpointID ${AgentEndpointID} to local mqtt broker with username only"
mosquitto_pub -r -t "obuspa/EndpointID" -m "${AgentEndpointID}" -u "${user}"
else
log "Publishing EndpointID ${AgentEndpointID} to local mqtt broker"
mosquitto_pub -r -t "obuspa/EndpointID" -m "${AgentEndpointID}"
fi
}
configure_localagent() {
local Enable ParameterName EndpointID
local Enable EndpointID
validate_localagent_section 'localagent' || {
log "Validation of localagent section failed"
@@ -288,33 +302,33 @@ configure_localagent() {
configure_controller() {
local EndpointID Enable AssignedRole PeriodicNotifInterval PeriodicNotifTime USPNotifRetryMinimumWaitInterval
local USPNotifRetryIntervalMultiplier ControllerCode Protocol Destination coap_host coap_path coap_port
local Reference Topic mqtt stomp assigned_role_name
local Reference Topic mqtt stomp assigned_role_name ParameterName
validate_controller_section "${1}" || {
log "Validation of controller section failed"
return 1;
}
if [ -z "${EndpointID}" -o -z "${Protocol}" ]; then
if [ -z "${EndpointID}" ] || [ -z "${Protocol}" ]; then
log "controller:: EndpointID id and Protocol cannot be empty"
return 1;
fi
if [ -z "${stomp}" -a -z "${Reference}" -a -z "${mqtt}" -a -z "${coap_path}" ]; then
if [ -z "${stomp}" ] && [ -z "${Reference}" ] && [ -z "${mqtt}" ] && [ -z "${coap_path}" ]; then
log "controller:: Invalid configuration"
return 1;
fi
if [ -z "${Reference}" ]; then
if [ "${Protocol}" = "STOMP" ]; then
val=$(get_uci_ref_index stomp ${stomp})
val=$(get_uci_ref_index stomp "${stomp}")
if [ "${val}" -eq 0 ]; then
log "Not able to find the referred stomp section"
return 1;
fi
Reference="Device.STOMP.Connection.${val}"
elif [ "${Protocol}" = "MQTT" ]; then
val=$(get_uci_ref_index mqtt ${mqtt})
val=$(get_uci_ref_index mqtt "${mqtt}")
if [ "${val}" -eq 0 ]; then
log "Not able to find the referred mqtt section"
return 1;
@@ -332,7 +346,7 @@ configure_controller() {
db_set Device.LocalAgent.Controller.${controller_num}.AssignedRole "${AssignedRole}"
else
if [ -n "${assigned_role_name}" ]; then
AssignedRole=$(get_role_index ${assigned_role_name})
AssignedRole=$(get_role_index "${assigned_role_name}")
db_set Device.LocalAgent.Controller.${controller_num}.AssignedRole "${AssignedRole}"
fi
fi
@@ -373,7 +387,7 @@ configure_controller() {
db_set Device.LocalAgent.Controller.${controller_num}.BootParameter.${_pnum}.Alias "cpe-${_pnum}"
db_set Device.LocalAgent.Controller.${controller_num}.BootParameter.${_pnum}.Enable "${Enable}"
db_set Device.LocalAgent.Controller.${controller_num}.BootParameter.${_pnum}.ParameterName "${param}"
_pnum=$(( ${_pnum} + 1 ))
_pnum=$(( _pnum + 1 ))
done
db_set
@@ -388,12 +402,13 @@ configure_subscription(){
return 1;
}
if [ -z "${Recipient}" -a -z "${controller}" ]; then
if [ -z "${Recipient}" ] && [ -z "${controller}" ]; then
log "No recipient for subscription"
return 1;
fi
if [ -z "${Recipient}" ]; then
val=$(get_uci_ref_index controller ${controller})
val=$(get_uci_ref_index controller "${controller}")
if [ "${val}" -eq 0 ]; then
log "Not able to find the referred controller section"
return 1;
@@ -412,26 +427,12 @@ configure_subscription(){
db_set Device.LocalAgent.Subscription.${subs_num}.Recipient "${Recipient}"
}
validate_challenge_section()
{
uci_validate_section ${CONFIGURATION} challenge "${1}" \
'Enable:bool:true' \
'Alias:string' \
'Description:string' \
'role_name:string' \
'Role:string' \
'Value:string' \
'Retries:uinteger:3' \
'LockoutPeriod:uinteger:0'
}
check_json_load()
{
local ret=0
if [ -f "${role_def_file}" ]; then
json_init
json_load_file "${role_def_file}" 2>&1 |grep -q Failed
if [ $? -eq 0 ]; then # In case of invalid json file
if json_load_file "${role_def_file}" 2>&1 |grep -q Failed; then
log "failed to load [${role_def_file}]"
ret=1
fi
@@ -443,7 +444,7 @@ check_json_load()
get_role_index() {
local role="Device.LocalAgent.ControllerTrust.Role"
local idx=0
local role_name="${@}"
local role_name="$*"
case "${role_name}" in
'full_access')
@@ -455,10 +456,9 @@ get_role_index() {
*)
local ji=0
check_json_load
if [ $? -eq 0 ]; then
get_role_index_from_json ${role_name}
ji=$?
ji=$(check_json_load)
if [ "${ji}" -eq 0 ]; then
get_role_index_from_json "${role_name}"
fi
idx=$(( ji + 2 )) # Add predefined roles
esac
@@ -474,7 +474,7 @@ configure_challenges() {
exit 1;
}
if [ -z "${role_name}" -a -z "${Role}" ]; then
if [ -z "${role_name}" ] && [ -z "${Role}" ]; then
log "Either role_name or Role must defined for a challenge";
return 1;
fi
@@ -487,10 +487,10 @@ configure_challenges() {
fi
if [ -z "${Role}" ]; then
Role=$(get_role_index ${role_name})
Role=$(get_role_index "${role_name}")
fi
if [ -z "${Alias}" -a -n "${role_name}" ]; then
if [ -z "${Alias}" ] && [ -n "${role_name}" ]; then
Alias=${role_name}
fi
@@ -512,14 +512,14 @@ configure_mtp() {
if [ -z "${Reference}" ]; then
if [ "${Protocol}" = "STOMP" ]; then
val=$(get_uci_ref_index stomp ${stomp})
val=$(get_uci_ref_index stomp "${stomp}")
if [ "${val}" -eq 0 ]; then
log "Referred stomp section not found"
return 1;
fi
Reference="Device.STOMP.Connection.${val}"
elif [ "${Protocol}" = "MQTT" ]; then
val=$(get_uci_ref_index mqtt ${mqtt})
val=$(get_uci_ref_index mqtt "${mqtt}")
if [ "${val}" -eq 0 ]; then
log "Referred mqtt section not found"
return 1;
@@ -583,7 +583,7 @@ configure_stomp_connection() {
configure_mqtt_client(){
local BrokerAddress BrokerPort Enable Username Password ProtocolVersion KeepAliveTime
local TransportProtocol ConnectRetryTime ConnectRetryMaxInterval ConnectRetryIntervalMultiplier
local TransportProtocol ConnectRetryTime ConnectRetryMaxInterval ConnectRetryIntervalMultiplier ClientID
validate_mqtt_client_section "${1}" || {
log "Validation of mqtt section failed"
@@ -617,11 +617,9 @@ configure_mqtt_client(){
configure_obuspa() {
local enabled trust_cert ifname interface debug prototrace log_level db_file log_dest role_file
local client_cert
validate_obuspa_section "global" || {
log "Validation of global section failed"
return 1;
}
validate_obuspa_section "global"
role_def_file="${role_file}"
@@ -632,72 +630,98 @@ configure_obuspa() {
procd_set_param stderr 1
fi
if [ "${debug}" -eq 1 -a "${prototrace}" -eq 1 ]; then
if [ "${debug}" -eq 1 ] && [ "${prototrace}" -eq 1 ]; then
procd_append_param command -p
fi
if [ "${debug}" -eq 1 -a -n "${log_level}" ]; then
procd_append_param command -v ${log_level}
if [ "${debug}" -eq 1 ] && [ -n "${log_level}" ]; then
procd_append_param command -v "${log_level}"
fi
if [ -n "${log_dest}" ]; then
procd_append_param command -l ${log_dest}
procd_append_param command -l "${log_dest}"
fi
if [ -n "${interface}" ]; then
network_get_physdev ifname ${interface}
network_get_physdev ifname "${interface}"
fi
# Set this variable for root user and obuspa -c tool
if [ -f "${PROFILE}" ]; then
grep -q "export USP_BOARD_IFNAME=${ifname}" ${PROFILE}
if [ "$?" -ne 0 ]; then
grep -q "export USP_BOARD_IFNAME" ${PROFILE}
if [ "$?" -eq 0 ]; then
if [ -n "${ifname}" ]; then
procd_set_param env USP_BOARD_IFNAME="${ifname}"
# Set this variable for root user and obuspa -c tool
if [ -f "${PROFILE}" ]; then
if grep -q "export USP_BOARD_IFNAME=${ifname}" ${PROFILE}; then
if grep -q "export USP_BOARD_IFNAME" ${PROFILE}; then
sed -i "g/export USP_BOARD_IFNAME/d" ${PROFILE}
fi
fi
fi
echo "export USP_BOARD_IFNAME=${ifname}" >> ${PROFILE}
else
if [ -f "$PROFILE" ]; then
if grep -q "export USP_BOARD_IFNAME" ${PROFILE}; then
sed -i "g/export USP_BOARD_IFNAME/d" ${PROFILE}
fi
echo "export USP_BOARD_IFNAME=${ifname}" >> ${PROFILE}
fi
else
echo "export USP_BOARD_IFNAME=${ifname}" > ${PROFILE}
fi
if [ -n "${db_file}" ]; then
update_keep "${db_file}"
procd_append_param command -f ${db_file}
procd_append_param command -f "${db_file}"
fi
if [ -n "${trust_cert}" ]; then
update_keep "${trust_cert}"
if [ -f "${trust_cert}" ]; then
procd_append_param command -t ${trust_cert}
procd_append_param command -t "${trust_cert}"
fi
fi
if [ -n "${client_cert}" ]; then
update_keep "${client_cert}"
if [ -f "${client_cert}" ]; then
procd_append_param command -a ${client_cert}
procd_append_param command -a "${client_cert}"
fi
fi
procd_set_param env USP_BOARD_IFNAME=${ifname}
}
# Create factory reset file
db_init() {
# Load configuration
config_load $CONFIGURATION
config_foreach configure_obuspa obuspa
config_foreach configure_controller controller
[ "$?" -ne 0 ] && return 1;
config_foreach configure_localagent localagent
[ "$?" -ne 0 ] && return 1;
config_foreach configure_mtp mtp
[ "$?" -ne 0 ] && return 1;
config_foreach configure_stomp_connection stomp
[ "$?" -ne 0 ] && return 1;
config_foreach configure_mqtt_client mqtt
[ "$?" -ne 0 ] && return 1;
config_foreach configure_subscription subscription
[ "$?" -ne 0 ] && return 1;
config_foreach configure_challenges challenge
[ "$?" -ne 0 ] && return 1;
db_set Internal.Reboot.Cause "LocalFactoryReset"
return 0;
}
register_service()
{
procd_open_instance ${CONFIGURATION}
procd_set_param command ${PROG}
procd_append_param command -r ${PARAM_FILE}
configure_obuspa
procd_set_param respawn \
"${respawn_threshold:-5}" \
"${respawn_timeout:-10}" "${respawn_retry:-3}"
procd_set_param watch usp.raw
procd_close_instance
}
service_running() {
@@ -707,24 +731,19 @@ service_running() {
start_service() {
local enabled
mkdir -p /tmp/obuspa/
config_load obuspa
config_get enabled global enabled
config_get_bool enabled global enabled 0
if [ "${enabled}" -eq 0 ]; then
log "OBUSPA not enabled"
return 0;
fi
procd_open_instance ${CONFIGURATION}
procd_set_param command ${PROG}
db_init
procd_append_param command -r ${PARAM_FILE}
procd_set_param respawn \
${respawn_threshold:-5} \
${respawn_timeout:-10} ${respawn_retry:-3}
[ "$?" -ne 0 ] && return 1;
procd_set_param watch usp.raw
procd_close_instance
register_service
}
stop_service() {
@@ -733,10 +752,10 @@ stop_service() {
config_load obuspa
config_get db_file global db_file
${PROG} -c stop 2>&1 >/dev/null
${PROG} -c stop >/dev/null 2>&1
if [ -z "${db_file}" ]; then
db_file="/tmp/usp.db"
db_file="/tmp/obuspa/usp.db"
fi
[ -f "${db_file}" ] && rm -f ${db_file}
@@ -771,4 +790,14 @@ service_triggers() {
json_add_int "" "2000"
json_close_array
procd_close_trigger
procd_open_validate
validate_obuspa_section
validate_localagent_section
validate_controller_section
validate_subscription_section
validate_mtp_section
validate_stomp_connection_section
validate_mqtt_client_section
procd_close_validate
}

View File

@@ -5,12 +5,12 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=owsd
PKG_VERSION:=1.1.3
PKG_VERSION:=1.1.4
PKG_RELEASE:=1
PKG_SOURCE_PROTO=git
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/owsd.git
PKG_SOURCE_VERSION:=f78f7198944758cd2140887ecd8970432f678fc1
PKG_SOURCE_VERSION:=e37c6f9d708c454c802eede814cc51fb89c919e9
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_MIRROR_HASH:=skip
PKG_SOURCE_SUBDIR:=${PKG_NAME}-${PKG_VERSION}

View File

@@ -1,47 +0,0 @@
#
# Copyright (C) 2020 IOPSYS
#
include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=lib-paho-mqtt
PKG_VERSION:=0.1
PKG_SOURCE_VERSION:=9f715d0862a8e16099b5837c4e53a1bf6a6a0675
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/eclipse/paho.mqtt.c.git
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
PKG_LICENSE:=edl-v10
PKG_LICENSE_FILES:=LICENSE
include $(INCLUDE_DIR)/package.mk
define Package/lib-paho-mqtt
CATEGORY:=Libraries
DEPENDS:=+libopenssl
TITLE:=package for mqtt stuff
endef
define Package/lib-paho-mqtt/description
a library
endef
define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/include/ $(1)/usr/lib
$(INSTALL_DATA) $(PKG_BUILD_DIR)/src/*.h $(1)/usr/include/
$(INSTALL_DATA) $(PKG_BUILD_DIR)/build/output/*.so* $(1)/usr/lib/
endef
define Package/lib-paho-mqtt/install
$(INSTALL_DIR) $(1)/usr/lib/
$(INSTALL_BIN) $(PKG_BUILD_DIR)/build/output/*.so* $(1)/usr/lib/
endef
$(eval $(call BuildPackage,lib-paho-mqtt))

View File

@@ -28,6 +28,11 @@ boot() {
start
}
service_running() {
setup_qos
start
}
service_triggers() {
procd_add_reload_trigger qos
}

View File

@@ -3,7 +3,7 @@
. /lib/functions.sh
ethwan="$(db -q get hw.board.ethernetWanPort)"
cpu_model="$(brcm_fw_tool -k info)"
cpu_model="$(cat /proc/socinfo | grep 'SoC Name' | cut -d':' -f2)"
generate_queue(){
section="$1"
@@ -19,7 +19,7 @@ generate_queue(){
if [ $is_lan -eq 1 ]; then
case $cpu_model in
68*) no_of_q="0 1 2 3" ;;
BCM68*) no_of_q="0 1 2 3" ;;
esac
if grep -qE '[0-9]+ archer$' /proc/devices; then

View File

@@ -842,7 +842,7 @@ configure_classify() {
fcctl flush
}
configure_queue() {
pre_configure_queue() {
# Delete queues
rm -rf /tmp/qos/queue_stats
@@ -862,7 +862,9 @@ configure_queue() {
touch /tmp/qos/$intf/q_order
touch /tmp/qos/$intf/q_precedence
done
}
configure_queue() {
# Load UCI file
config_load qos
config_foreach handle_q_order queue
@@ -913,6 +915,7 @@ configure_qos() {
#queue configuration is being done after shaper configuration,
#If port shapingrate configuration on DISC device is called after queue configuration then
#driver overwrites the queue shaping rate with default value of port shaping rate.
pre_configure_queue
configure_shaper
configure_queue
configure_policer
@@ -921,10 +924,10 @@ configure_qos() {
reload_qos() {
local service_name="$1"
local cpu_model="$(brcm_fw_tool -k info)"
local cpu_model="$(cat /proc/socinfo | grep 'SoC Name' | cut -d':' -f2)"
case $cpu_model in
68*|6755) POLICER_SKIP=1 ;;
BCM68*|BCM6755) POLICER_SKIP=1 ;;
esac
if [ -z "$service_name" ]; then
@@ -932,6 +935,7 @@ reload_qos() {
elif [ "$service_name" == "shaper" ]; then
configure_shaper
elif [ "$service_name" == "queue" ]; then
pre_configure_queue
configure_queue
elif [ "$service_name" == "classify" ]; then
configure_classify

View File

@@ -8,9 +8,9 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=stunc
PKG_VERSION:=1.0.2
PKG_VERSION:=1.0.4
PKG_SOURCE_VERSION:=d578df0c8e4e7d1b642a5cf037ce468379270534
PKG_SOURCE_VERSION:=9c585888cae94180d715f46f6602090f328240d4
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/stunc.git

View File

@@ -5,11 +5,11 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=sulu
PKG_VERSION:=0.2.27
PKG_VERSION:=0.2.29
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/sulu.git
PKG_SOURCE_VERSION:=5dc2df8dbfe442504a99e46ddf07aefc9fad5faa
PKG_SOURCE_VERSION:=5c722ca387ffdd28ac2a2e01f27dba12015fc2e7
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_SOURCE_VERSION)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_VERSION).tar.gz
@@ -37,7 +37,10 @@ endef
define Package/sulu/install
$(INSTALL_DIR) $(1)/sulu
$(INSTALL_DIR) $(1)/sulu/config
$(INSTALL_DIR) $(1)/etc/nginx/
$(CP) $(PKG_BUILD_DIR)/dist/* $(1)/sulu
$(CP) $(PKG_BUILD_DIR)/config/* $(1)/sulu/config
$(CP) ./files/* $(1)/
endef

View File

@@ -0,0 +1,18 @@
location /config/ {
autoindex on;
if ($request_method = 'OPTIONS') {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
add_header 'Access-Control-Max-Age' 1728000;
add_header 'Content-Type' 'text/plain; charset=utf-8';
add_header 'Content-Length' 0;
return 204;
}
if ($request_method = 'GET') {
add_header 'Access-Control-Allow-Origin' '*' always;
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS' always;
add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range' always;
add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range' always;
}
}

View File

@@ -7,3 +7,4 @@ uci -q add_list nginx._sulu.listen='8080'
uci -q add_list nginx._sulu.listen='[::]:8080'
uci -q set nginx._sulu.root='/sulu'
uci -q set nginx._sulu.server_name='_sulu'
uci -q add_list nginx._sulu.include='conf.d/sulu.locations'

View File

@@ -6,14 +6,14 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=swmodd
PKG_VERSION:=2.0.21
PKG_VERSION:=2.1.0
LOCAL_DEV:=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=78b54d0ed0223a9787133597d3beaa5e97d97520
PKG_SOURCE_VERSION:=f169ab825295e1e0bb414c7bbc921fab2ef9ccfa
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/swmodd.git
PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_VERSION).tar.gz
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_MIRROR_HASH:=skip
endif
@@ -61,10 +61,12 @@ endif
define Package/swmodd/install
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_DIR) $(1)/etc/config
$(INSTALL_DIR) $(1)/usr/lib/bbfdm
$(INSTALL_DIR) $(1)/etc/swmod
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) ./files/swmodd.init $(1)/etc/init.d/swmodd
$(INSTALL_BIN) ./files/etc/init.d/swmodd $(1)/etc/init.d/swmodd
$(INSTALL_BIN) ./files/etc/config/swmodd $(1)/etc/config/swmodd
$(INSTALL_BIN) $(PKG_BUILD_DIR)/swmodd $(1)/usr/sbin/swmodd
$(INSTALL_BIN) $(PKG_BUILD_DIR)/libswmodd.so $(1)/usr/lib/bbfdm/libswmodd.so
ifeq ($(CONFIG_PACKAGE_liblxc),y)

View File

@@ -0,0 +1,4 @@
config globals 'globals'
option enabled '1'
option debug '1'
option log_level '3'

View File

@@ -0,0 +1,57 @@
#!/bin/sh /etc/rc.common
START=94
STOP=10
USE_PROCD=1
PROG=/usr/sbin/swmodd
validate_globals_section()
{
uci_validate_section swmodd swmodd "globals" \
'enabled:bool:1' \
'debug:bool:false' \
'log_level:uinteger:1' \
'sock:string'
}
start_service() {
local enabled debug log_level sock
# creating fallback shared mount-point
mkdir -p /tmp/swmodd_dw
config_load swmodd
validate_globals_section || {
log "Validation of uci globals failed"
return 1;
}
[ "${enabled}" -eq 0 ] && return 0
procd_open_instance swmodd
procd_set_param command ${PROG}
if [ "${debug}" -eq 1 ]; then
procd_set_param stdout 1
procd_set_param stderr 1
procd_append_param command -l ${log_level}
fi
if [ -f "${sock}" ]; then
procd_append_param command -s ${sock}
fi
procd_set_param respawn
procd_close_instance
}
stop_service() {
service_stop ${PROG}
}
reload_service() {
stop
start
}

View File

@@ -1,23 +0,0 @@
#!/bin/sh /etc/rc.common
START=94
STOP=10
USE_PROCD=1
PROG=/usr/sbin/swmodd
start_service() {
procd_open_instance swmodd
procd_set_param command ${PROG}
procd_set_param respawn
procd_close_instance
}
stop_service() {
service_stop ${PROG}
}
reload_service() {
stop
start
}

View File

@@ -1,55 +0,0 @@
#
# Copyright (C) 2006-2010 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
PKG_NAME:=ubus-mqtt
PKG_VERSION:=14.20.0
PKG_RELEASE:=1
PKG_SOURCE_URL:=https://dev.iopsys.eu/3rdparty/ubus-mqtt.git
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=$(PKG_VERSION)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_MIRROR_HASH:=skip
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_LICENSE:=NONE
include $(INCLUDE_DIR)/package.mk
CONFIGURE_VARS += \
BUILD_CC="$(HOSTCC)" \
TARGET_CC="$(TARGET_CC)"
TARGET_CFLAGS += \
-L$(STAGING_DIR)/usr/lib -I$(STAGING_DIR)/usr/include
define Package/ubus-mqtt
SECTION:=utils
CATEGORY:=Utilities
TITLE:=ubus-mqtt - a ubus replicator for mqtt
URL:=http://www.alleato.se/
MAINTAINER:=Martin Assarsson
DEPENDS:=+jansson +libpthread +libmosquitto +libopenssl +ubus +libubox
endef
define Package/ubus-mqtt/install
$(INSTALL_DIR) $(1)/usr/sbin
$(CP) $(PKG_BUILD_DIR)/src/ubus-mqtt $(1)/usr/sbin/
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) files/ubus-mqtt.init $(1)/etc/init.d/ubus-mqtt
endef
define Package/ubus-mqtt/postinst
#!/bin/sh
#/etc/init.d/ubus-mqtt enable
#/etc/init.d/ubus-mqtt restart
endef
$(eval $(call BuildPackage,ubus-mqtt))

View File

@@ -1,20 +0,0 @@
#!/bin/sh /etc/rc.common
#
# Start the ubus-mqtt
#
START=80
PID_FILE=/var/state/ubus-mqtt.pid
start() {
start-stop-daemon -S -b -m -p $PID_FILE -x /usr/sbin/ubus-mqtt
}
stop() {
start-stop-daemon -K -p $PID_FILE
}
restart() {
stop
start
}

View File

@@ -8,9 +8,9 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=udpechoserver
PKG_VERSION:=1.0.0
PKG_VERSION:=1.0.2
PKG_SOURCE_VERSION:=a3f0860f4268482f9ec9dad0c67745f615293fca
PKG_SOURCE_VERSION:=4e80bbec15b284080798b5ffbe8655febaa239aa
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/udpechoserver.git
@@ -24,6 +24,8 @@ PKG_LICENSE_FILES:=LICENSE
include $(INCLUDE_DIR)/package.mk
MAKE_PATH:=src
define Package/$(PKG_NAME)
SECTION:=utils
CATEGORY:=Utilities
@@ -41,10 +43,13 @@ TARGET_CFLAGS += \
define Package/$(PKG_NAME)/install
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/udpechoserverd $(1)/usr/sbin/
$(INSTALL_DIR) $(1)/usr/lib/bbfdm
$(INSTALL_BIN) $(PKG_BUILD_DIR)/*.so $(1)/usr/lib/bbfdm
$(CP) ./files/* $(1)/
$(INSTALL_DIR) $(1)/etc/config
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) $(PKG_BUILD_DIR)/src/udpechoserverd $(1)/usr/sbin/
$(INSTALL_BIN) $(PKG_BUILD_DIR)/src/libudpechoserver.so $(1)/usr/lib/bbfdm/
$(INSTALL_DATA) ./files/etc/config/udpechoserver $(1)/etc/config/udpechoserver
$(INSTALL_BIN) ./files/etc/init.d/udpechoserverd $(1)/etc/init.d/udpechoserverd
endef
$(eval $(call BuildPackage,$(PKG_NAME)))

65
umoci/Makefile Normal file
View File

@@ -0,0 +1,65 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=umoci
PKG_VERSION:=0.0.1
PKG_RELEASE:=1
PKG_LICENSE:=Apache-2.0
PKG_LICENSE_FILES:=LICENSE
PKG_SOURCE_PROTO:=git
PKG_SOURCE_NAME:=umoci
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://github.com/opencontainers/umoci.git
PKG_SOURCE_VERSION:=2cec49f54b72684ef170f11c708c56140f298bf7
PKG_MIRROR_HASH:=skip
PKG_BUILD_DEPENDS:=golang/host
PKG_BUILD_PARALLEL:=1
PKG_USE_MIPS16:=0
GO_PKG:=github.com/opencontainers/umoci/
GO_PKG_LDFLAGS_X:=main.gitCommit=$(PKG_SOURCE_VERSION) main.version=$(PKG_SOURCE_VERSION)
include $(INCLUDE_DIR)/package.mk
GOLANG_PACKAGE_MK:=$(wildcard $(TOPDIR)/feeds/*/lang/golang/golang-package.mk)
# verify that there is only one single file returned
ifneq (1,$(words $(GOLANG_PACKAGE_MK)))
ifeq (0,$(words $(GOLANG_PACKAGE_MK)))
$(error did not find golang-package.mk in any feed)
else
$(error found multiple golang-package.mk files in the feeds)
endif
else
$(info found golang-package.mk at $(GOLANG_PACKAGE_MK))
endif
include $(GOLANG_PACKAGE_MK)
define Package/umoci
SECTION:=utils
CATEGORY:=Utilities
TITLE:=umoci utility
URL:=https://github.com/opencontainers/umoci
DEPENDS:=$(GO_ARCH_DEPENDS)
endef
define Package/umoci/description
OCI (Open Container Initiative) image tool modifies Open Container images.
endef
GO_PKG_BUILD_VARS += GO111MODULE=auto
define Build/Compile
$(call GoPackage/Build/Compile)
$(call GoPackage/Package/Install/Bin,$(PKG_INSTALL_DIR))
endef
define Package/umoci/install
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/umoci $(1)/usr/bin
endef
$(eval $(call GoBinPackage,umoci))
$(eval $(call BuildPackage,umoci))

View File

@@ -5,12 +5,12 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=uspd
PKG_VERSION:=2.1.43
PKG_VERSION:=2.2.0
LOCAL_DEV:=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=c5c9a2675b29ae38d339f44099db30e5f22a278b
PKG_SOURCE_VERSION:=a0c6b7e1b09987289e06da36124296ec9e792f77
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/uspd.git
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_MIRROR_HASH:=skip

View File

@@ -5,13 +5,16 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=wfadatad
PKG_VERSION:=6.10.2
PKG_VERSION:=6.10.6
LOCAL_DEV=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=aaeed1df50a22bd391e5b1609e946991157308f4
PKG_SOURCE_VERSION:=f6f9f0b7aab4910b27036e9a375b018c22d6b726
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/wfadatad.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_LICENSE:=PROPRIETARY IOPSYS
@@ -52,11 +55,25 @@ ifeq ($(CONFIG_WFA_DELM_STANDALONE),y)
MAKE_FLAGS += CONFIG_WFA_DELM_STANDALONE=y
endif
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/wfadatad/ $(PKG_BUILD_DIR)/
endef
endif
MAKE_PATH:=src

View File

@@ -5,12 +5,12 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=wifimngr
PKG_VERSION:=14.0.5
PKG_VERSION:=14.0.6
LOCAL_DEV=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=a34624069fe24e5988e7db379e24e379e4479741
PKG_SOURCE_VERSION:=a248c1508bab5f30297d5b9c12719a90a86d81aa
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