Compare commits

..

224 Commits

Author SHA1 Message Date
Hemlata
9a01d85693 Dectmngr: add a uci option dect.global.log_level for log level configuration 2022-03-01 16:19:42 +01:00
Jakob Olsson
4a53405944 map-agent: 7.1.10 2022-03-01 13:14:44 +01:00
Jakob Olsson
f4175d1056 wfadatad: 6.10.13 2022-03-01 11:13:43 +01:00
sverma
ca89942898 wfadatad: 6.10.12 2022-02-28 15:03:18 +00:00
Filip Matusiak
719ef4d172 map-controller: update encryption options in script 2022-02-28 15:19:16 +01:00
Jakob Olsson
be0c9d79b0 map-controller: 6.0.5 2022-02-28 14:42:43 +01:00
Jakob Olsson
72ecd3d35e ieee1905: 4.6.19 2022-02-28 14:42:01 +01:00
Yalu Zhang
445cfef73e Update package endptmngr
Change the way to configure tx/rx gain
2022-02-28 11:42:59 +01:00
Anjan Chanda
e398b994da wfadatad: 6.10.11 2022-02-26 08:54:21 +01:00
Jakob Olsson
2cddf06c61 map-agent: 7.1.9 2022-02-25 17:29:33 +01:00
Anjan Chanda
f42b9b4a62 wfadatad: 6.10.10 2022-02-25 15:46:41 +01:00
Jakob Olsson
e3dcdd6c4d ieee1905: 4.6.18 2022-02-25 15:20:09 +01:00
Jakob Olsson
acac9f08d2 ieee1905: 4.6.17 2022-02-25 14:23:11 +01:00
Jakob Olsson
3f5708e292 map-topology: 3.2.5 2022-02-25 12:42:21 +01:00
Jakob Olsson
c49e2ed7de map-agent: 7.1.8 2022-02-24 15:48:30 +01:00
vdutta
70a000f674 sulu: Deploy config parameters in json 2022-02-23 18:50:06 +01:00
Anjan Chanda
4748533fa2 map-controller: 6.0.4: add Config.in 2022-02-23 18:35:08 +01:00
Jakob Olsson
ad1966b1ba map-controller: 6.0.4 2022-02-23 18:30:56 +01:00
Jakob Olsson
89b367fcf4 map-agent: 7.1.7 2022-02-23 18:27:15 +01:00
Stanislaw Gruszka
3bec20d547 multi-ap: ts rework for eth suport 2022-02-23 18:26:41 +01:00
Anjan Chanda
dde30f9d4a map-agent: 7.1.6 2022-02-23 17:54:53 +01:00
Anjan Chanda
f93ba6ec61 map-agent: 7.1.5 2022-02-23 16:52:47 +01:00
Jakob Olsson
13b3bdde7e easy-soc-libs: 6.4.40 2022-02-23 14:39:16 +01:00
Stanislaw Gruszka
1ccd68992f wfadatad: 6.10.6 2022-02-23 13:30:29 +01:00
Nevadita
3ddbb176aa map-topology: 3.2.4 2022-02-23 13:04:40 +01:00
Anjan Chanda
bea0ee5aa5 ieee1905: 4.6.16 2022-02-23 11:36:53 +01:00
Jakob Olsson
d30a942adb map-agent: 7.1.4 2022-02-22 16:01:50 +01:00
vdutta
f53496233d bbf: 6.4.27
- Ticket refs #7349: Failed to re-created lan interface
- bbf: Operate commands exposed from json file not working properly
2022-02-22 20:07:21 +05:30
Jakob Olsson
a8f3bea932 map-controller: 6.0.3 2022-02-22 11:28:05 +01:00
Jakob Olsson
95dd997cc9 map-agent: 7.1.3 2022-02-22 11:27:28 +01:00
Jakob Olsson
62eb925e8c map-agent: multiap: retain wps credentials in ieee1905 config 2022-02-22 11:24:20 +01:00
Jakob Olsson
3b6e2ad2d7 map-agent: 7.1.2 2022-02-21 17:17:50 +01:00
sverma
3199e091c4 wfadatad: 6.10.5 2022-02-21 15:01:31 +01:00
Jakob Olsson
723be11ebc map-controller: 6.0.2 2022-02-21 12:46:43 +01:00
Jakob Olsson
6c6a81bacb map-agent: 7.1.1 2022-02-18 15:44:16 +01:00
Jakob Olsson
8dc5820987 map-controller: 6.0.1 2022-02-18 15:22:55 +01:00
Jakob Olsson
60e0730a6d map-topology: 3.2.3 2022-02-18 15:12:30 +01:00
Jakob Olsson
aed486f1f9 ieee1905: 4.6.10 2022-02-18 12:47:50 +01:00
Filip Matusiak
f2c11f12c3 map-topology: validate config options 2022-02-18 12:00:00 +01:00
Filip Matusiak
b71fecbb6a ieee1905: validate config options 2022-02-18 12:00:00 +01:00
Filip Matusiak
76310d7e6e map-agent: validate config options 2022-02-18 12:00:00 +01:00
Filip Matusiak
eac345c3e3 map-controller: validate config options 2022-02-18 12:00:00 +01:00
Arun Muthusamy
9570193737 qosmngr: Rearrange queue and shaper function call execution order 2022-02-18 09:50:01 +00:00
vdutta
c1d8341be7 bbf: 6.4.26 2022-02-18 14:17:30 +05:30
Jakob Olsson
ae033eb05e map-agent: 7.1.0 2022-02-17 16:47:53 +01:00
Jakob Olsson
e16b9c7a0e map-controller: 6.0.0 2022-02-17 16:47:03 +01:00
Anjan Chanda
53fb4d46c1 ieee1905: 4.6.9 2022-02-17 15:25:56 +01:00
vdutta
0fd29ae954 bbf: 6.4.25 2022-02-17 19:26:51 +05:30
Grzegorz Sluja
0be6005691 endptmngr: Add support for RTCP-XR packets 2022-02-16 17:11:01 +01:00
Nevadita
0f1e642fe0 map-topology: 3.2.2 2022-02-16 14:29:20 +01:00
Stanislaw Gruszka
0ead07e668 wfadatad: 6.10.4 2022-02-16 12:09:19 +01:00
Yalu Zhang
5bcc5d05dc dectmngr-3.5.1: Fix a bug that handsets cannot receive incoming calls reliably 2022-02-16 10:42:40 +01:00
Anjan Chanda
ab91bd9941 ieee1905: add openssl dependency 2022-02-15 16:24:56 +01:00
Jakob Olsson
314f90a0f4 map-agent: 7.0.2 2022-02-15 10:19:14 +01:00
Anjan Chanda
429112ba92 easy-soc-libs: 6.4.39 2022-02-15 09:59:21 +01:00
Jakob Olsson
b3c54526c2 map-agent: 7.0.1 2022-02-14 17:55:11 +01:00
Hemlata Bhatt
b624d52243 dectmngr : don't allow failure in static code analysis 2022-02-11 17:52:18 +01:00
Hemlata Bhatt
1b661a7407 endptmngr :Enable compiling options -Wall and -Werror 2022-02-11 17:34:42 +01:00
vdutta
ec55634131 icwmp: 8.2.27 2022-02-11 21:46:03 +05:30
Stanislaw Gruszka
12dfd9be28 wfadatad: 6.10.3 2022-02-11 16:12:47 +01:00
nevadita.chatterjee
466d442666 map-topology:3.2.1 2022-02-11 13:01:57 +01:00
Stanislaw Gruszka
28b4fa040a map-agent: 7.0.0: traffic separation fixes 2022-02-11 11:24:16 +00:00
vdutta
2077f29acf bbf: 6.4.24 2022-02-10 19:31:29 +05:30
Anjan Chanda
7335034c2b ieee1905: 4.6.8 2022-02-10 14:31:50 +01:00
vdutta
9ae0800d77 bbf: 6.4.23 2022-02-10 18:23:53 +05:30
vdutta
5d74e693c7 bbf: 6.4.22 2022-02-09 21:15:09 +05:30
Jakob Olsson
d513b5b799 map-controller: 5.4.7 2022-02-09 16:39:33 +01:00
Sukru Senli
40503fc42d sulu: 0.2.28 2022-02-09 12:43:59 +01:00
vdutta
34acd302be bbf: 6.4.21 2022-02-09 09:58:09 +05:30
Sukru Senli
705fb9e41b netmode: do not run netmode if mode is same as last saved mode 2022-02-08 23:04:55 +01:00
Sukru Senli
8fb0ffc766 netmode: do not rely on mode folder 2022-02-08 15:08:48 +01:00
vdutta
8e8442e508 bbf: 6.4.20 2022-02-08 15:36:23 +05:30
vdutta
e7486f4538 stunc: 1.0.4
(cherry picked from commit 2bc7ff558e)
2022-02-08 08:36:27 +00:00
vdutta
957d176f26 udpechoserver: Added static code analysis pipeline
(cherry picked from commit df0b0ec7ea)
2022-02-08 08:30:08 +00:00
Amin Ben Ramdhane
454afbbc98 udpechoserver: 1.0.1
(cherry picked from commit 1fbbaa8c59)
2022-02-08 08:29:05 +00:00
Amin Ben Ramdhane
ebda97fe62 stunc: 1.0.3
(cherry picked from commit b214f5213b)
2022-02-08 08:27:52 +00:00
Sukru Senli
b261816fe4 netmode: do nothing if mode is not set 2022-02-07 21:17:25 +01:00
Jakob Olsson
0fe82491e3 map-agent: 6.6.4 2022-02-07 12:17:12 +01:00
Jakob Olsson
a4e457a3ee map-controller: 5.4.6 2022-02-07 12:15:10 +01:00
Sukru Senli
1a4ab4713e netmode: remove default netmodes 2022-02-07 10:27:23 +01:00
Sukru Senli
4cce081fd3 netmode: strip netmoded out of netmode package 2022-02-07 10:27:16 +01:00
Jakob Olsson
a730c6a2e0 map-agent: 6.6.3 2022-02-04 16:06:25 +01:00
Yalu Zhang
932385bec1 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:42:03 +01:00
Anjan Chanda
642ffec9cd wifimngr: 14.0.6 2022-02-04 14:15:14 +01:00
Anjan Chanda
d1cd14742e ieee1905: 4.6.4 2022-02-04 14:12:01 +01:00
Amit KUmar
c9309739a6 easy-soc-libs: libqos static warning corrected 2022-02-04 10:58:49 +01:00
Amit KUmar
979fe82336 easy-soc-libs: dsl ethernet static error resolved 2022-02-04 10:58:47 +01:00
vdutta
e7c84ac6ba bbf: 6.4.19 2022-02-04 15:23:42 +05:30
vdutta
9a8f2cb393 icwmp: 8.2.26 2022-02-04 15:03:52 +05:30
Hemlata Bhatt
7af3534bc9 dectmngr: Remove extra verbose syslog for firmware upgrading on the base station 2022-02-04 10:32:29 +01:00
Jakob Olsson
f1795e0263 map-agent: 6.6.2 2022-02-03 12:45:18 +01:00
Jakob Olsson
a2115711bb map-controller: 5.4.5 2022-02-02 17:07:02 +01:00
Jakob Olsson
2b26e9083b map-agent: 6.6.1 2022-02-02 17:06:20 +01:00
Sukru Senli
1978d357c9 crun: remove as it is now available under openwrt feed packages 2022-02-02 11:16:01 +01:00
Jakob Olsson
822f77590d wifimngr: 05-wifi: update to new map backhaul file 2022-01-31 14:59:04 +01:00
Sukru Senli
3d31052d40 sulu: 0.2.27 2022-01-28 14:33:01 +01:00
Erik Karlsson
dc56c93b73 icwmp: Use correct syntax with tr
The tr command does not take regular expressions. In addition,
unquoted use of [] is unsafe as it is subject to wildcard expansion by
the shell.
2022-01-28 12:26:07 +00:00
Amin Ben Ramdhane
0dd95029e6 bbf: 6.4.18 2022-01-28 13:20:18 +01:00
Amin Ben Ramdhane
5f92faf0a1 bbf: 6.4.17 2022-01-28 11:55:09 +01:00
Sukru Senli
31ed1f802b iop: genconfig: remove unused targets 2022-01-27 16:42:43 +01:00
Jakob Olsson
c73ac6665b map-agent: 6.6.0: multiap.backhaul 2022-01-27 15:48:14 +01:00
Sukru Senli
431d1fbf34 port-management: populate ports config from device-tree if db does not exist 2022-01-27 14:55:41 +01:00
Sukru Senli
2ddb4fb5fc iop: genconfig: remove unsupported targets 2022-01-27 11:15:34 +01:00
vdutta
1835fe7a50 swmodd: Remove cgroup config from iopsys template 2022-01-27 13:49:51 +05:30
vdutta
d0e30dade4 icwmp: 8.2.25 2022-01-27 12:03:35 +05:30
Amin Ben Ramdhane
be867f1b25 uspd: 2.1.43 2022-01-26 13:22:34 +01:00
Amin Ben Ramdhane
9b2318242b bbf: 6.4.16 2022-01-26 13:21:28 +01:00
Anjan Chanda
8fee87c3c6 ieee1905: 4.6.0 2022-01-26 10:09:41 +01:00
vdutta
2fbdb4b3d2 obuspa: Added coverage in module test 2022-01-26 12:27:04 +05:30
Rahul
337c9a52f9 qosmngr: fix static code warnings
Updated the makefile version and bump the minor version
2022-01-25 18:32:09 +05:30
vdutta
6c86adbf86 uspd: 2.1.42 2022-01-25 18:19:56 +05:30
vdutta
e316bea78f bbf: 6.4.15 2022-01-25 18:17:49 +05:30
vdutta
233d714564 icwmp: Use db device for sn instead of db hw 2022-01-25 10:32:05 +05:30
Sukru Senli
13b742fe44 sulu: 0.2.26 2022-01-24 19:02:23 +01:00
Sukru Senli
c23ae5dad1 obuspa: read oui and sn from db device instead of db hw 2022-01-24 17:46:50 +01:00
Fredrik Eriksson
3c7aa191ea iop/config: deselect glib2
To our knowledge this is not needed and takes space.
2022-01-24 16:38:26 +00:00
Jakob Olsson
d8bbc9de81 map-agent: 6.5.3 2022-01-24 13:16:43 +01:00
Sukru Senli
92e353bb49 questd: 5.2.3 2022-01-21 17:08:57 +01:00
Sukru Senli
17fd78bc94 Revert "sulu: install sulu-full instead"
This reverts commit 68ca3b1d07.
2022-01-21 15:21:52 +01:00
Sukru Senli
68ca3b1d07 sulu: install sulu-full instead 2022-01-21 15:16:20 +01:00
Jakob Olsson
05a5616347 ieee1905: 4.2.2 2022-01-21 13:25:36 +01:00
Jakob Olsson
90f102b36a map-controller: 5.4.4 2022-01-21 11:34:22 +01:00
Sukru Senli
3e95e599e4 sulu: 0.2.25 2022-01-20 21:05:05 +01:00
Jakob Olsson
12d1e79339 map-controller: 5.4.3 2022-01-20 17:24:15 +01:00
Jakob Olsson
9ffed931c6 map-agent: 6.5.2 2022-01-20 17:22:58 +01:00
Amin Ben Ramdhane
aa8949e9e4 bbf: 6.4.14 2022-01-20 15:21:11 +01:00
sandeep sharma
c31e10cd88 Fixed: QoS statistics for Eagle LAN ports end up on the wrong queue 2022-01-20 12:38:44 +00:00
Amin Ben Ramdhane
1257c11c69 bbf: 6.4.13 2022-01-18 17:55:00 +01:00
vdutta
147c6de58c obuspa: 4.1.0.17 2022-01-18 21:22:48 +05:30
Jakob Olsson
b821b189d1 map-controller: 5.4.2 2022-01-17 14:00:16 +01:00
Jakob Olsson
cae7d71907 map-controller: 5.4.1 2022-01-17 10:48:25 +01:00
vdutta
92748d489a uspd: 2.1.41 2022-01-17 14:41:44 +05:30
Jakob Olsson
9847af7e74 map-agent: 6.5.1 2022-01-17 10:02:52 +01:00
Anjan Chanda
8e98dc9526 map-controller: 5.4.0 2022-01-14 21:11:42 +01:00
Anjan Chanda
1fe4fbdd4e wfadatad: 6.10.2 2022-01-14 21:11:06 +01:00
Anjan Chanda
e4f24b2223 map-topology: 3.2.0 2022-01-14 21:10:42 +01:00
Anjan Chanda
ec905407f0 map-agent: 6.5.0 2022-01-14 21:09:52 +01:00
vdutta
0c0c7316fa bbf: 6.4.12 2022-01-14 21:03:38 +05:30
vdutta
72da7b55c2 icwmp: 8.2.23 2022-01-14 20:54:34 +05:30
vdutta
60fe16d7ce swmodd: 2.0.20 2022-01-14 20:53:18 +05:30
Jakob Olsson
cb1fa79dcd ieee1905: 4.2.2 2022-01-14 14:43:09 +01:00
vdutta
15ab89ef7d icwmp: Fix no-wan-tr069-inform issue 2022-01-14 13:14:00 +05:30
Andreas Gnau
975f4e7552 Update feed [ iopsys ] package [ u-boot ] variant [ex400]
This is mostly for documentation purposes. U-Boot for EX400 does no longer
build with latest binutils used in OpenWrt 21.02, which is why we do not ship
U-Boot in our images for EX400 at the moment. This is the U-Boot that has been
shipped in the migrator image
EX400-X-IOPSYS-6.3.0ALPHA4-28-g556c4319d1-U-Boot-826af23a77-210826_1419-ubifs-MIGRATOR.y3

-------------------------------------------------------------------------------
* 826af23a77 ex400: Autodetect squashfs vs UBIFS
* 3077d68ddf ex400: Enable setexpr command
* 5aa83e12bc cmd: itest: correct calculus for long format
* 0cd508d8dd ex400: enable network by default
* 2fdb548516 use iopsys FIT image when doing a web upgrade
* b4f73f52f5 added a new command to flash an an iopsys FIT image
* dd6f5d4609 ex400: update environment variables to be aligned with IOPSYS 6 design
* cb68482deb Merge branch 'ex400_add_fit_support' into 'ex400'
* 4e46ac74e0 ex400: uboot: add FIT support
-------------------------------------------------------------------------------
commit 826af23a7723ee05dc9bc023d12a83f44aa649f4
Author: Andreas Gnau <andreas.gnau@iopsys.eu>
Date: 2021-08-25 14:29:46 +0200

    ex400: Autodetect squashfs vs UBIFS

Base directory -> /
 include/configs/inteno_mt7621.h | 37 ++++++++++++++++++++++++-------------
 1 file changed, 24 insertions(+), 13 deletions(-)
-------------------------------------------------------------------------------
commit 3077d68ddf31a0ad999485e5144098a3399ce0c5
Author: Andreas Gnau <andreas.gnau@iopsys.eu>
Date: 2021-08-10 12:24:00 +0200

    ex400: Enable setexpr command

    Enable setexpr command in config. This is needed for calculating the UBI
    volume id of the rootfs volume which is needed for squashfs as root.

Base directory -> /
 configs/ex400_defconfig | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
-------------------------------------------------------------------------------
commit 5aa83e12bc1195366485b70cc6dfc41f0d5f992f
Author: Sebastien Colleur <sebastienx.colleur@intel.com>
Date: 2017-02-10 15:59:15 +0300

    cmd: itest: correct calculus for long format

    itest shell command doesn't work correctly in long format when doing
    comparaison due to wrong mask value calculus that overflow on 32 bits
    values.

    Signed-off-by: Sebastien Colleur <sebastienx.colleur@intel.com> Reviewed-by:
    Simon Glass <sjg@chromium.org>
    (cherry picked from commit 2c79fd401982c7d6c5e77c09bc7035f8a3766c88)

Base directory -> /
 cmd/itest.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
-------------------------------------------------------------------------------
commit 0cd508d8dd077d62baa59a0d74e2e5f24cff8926
Author: Oussama Ghorbel <oussama.ghorbel@iopsys.eu>
Date: 2021-07-27 16:36:35 +0200

    ex400: enable network by default

    as the equipement is used for development purpose only then enable network
    by default for convinence

Base directory -> /
 board/inteno/common/board.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
-------------------------------------------------------------------------------
commit 2fdb54851610838e35e4d889a0fbc14fb766a78b
Author: Oussama Ghorbel <oussama.ghorbel@iopsys.eu>
Date: 2021-07-23 10:52:32 +0200

    use iopsys FIT image when doing a web upgrade

Base directory -> /
 board/inteno/common/httpd.c | 18 +-----------------
 1 file changed, 1 insertion(+), 17 deletions(-)
-------------------------------------------------------------------------------
commit b4f73f52f515fb19552b4a5183a5aaecbb4b4cd1
Author: Oussama Ghorbel <oussama.ghorbel@iopsys.eu>
Date: 2021-07-23 10:49:34 +0200

    added a new command to flash an an iopsys FIT image

Base directory -> /
 cmd/Makefile         |   1 +
 cmd/iopsys_upgrade.c | 289 +++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 290 insertions(+)
-------------------------------------------------------------------------------
commit dd6f5d4609df08d808931c4ca01e186d59cbbea1
Author: Oussama Ghorbel <oussama.ghorbel@iopsys.eu>
Date: 2021-07-23 10:43:18 +0200

    ex400: update environment variables to be aligned with IOPSYS 6 design

    Use separate volumne for kernel use u-boot for mtd name instead of uboot

    fix

Base directory -> /
 include/configs/inteno_mt7621.h | 40 +++++++++++++++-------------------------
 1 file changed, 15 insertions(+), 25 deletions(-)
-------------------------------------------------------------------------------
commit cb68482debf9b5a3ef7471cc4182f189ab743b09
Author: Oussama Ghorbel <oussama.ghorbel@iopsys.eu>
Date: 2021-03-24 10:10:17 +0000

    Merge branch 'ex400_add_fit_support' into 'ex400'

    ex400: uboot: add FIT support

    See merge request fork/uboot!2
Base directory -> /
 configs/ex400_defconfig | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)
-------------------------------------------------------------------------------
commit 4e46ac74e0944684590899f969de9b6335a8f69a
Author: Bartlomiej Grzeskowiak <bartlomiej.grzeskowiak@iopsys.eu>
Date: 2021-03-23 09:28:21 +0100

    ex400: uboot: add FIT support

    Signed-off-by: Bartlomiej Grzeskowiak <bartlomiej.grzeskowiak@iopsys.eu>

Base directory -> /
 configs/ex400_defconfig | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)
-------------------------------------------------------------------------------
2022-01-12 17:41:46 +01:00
Amin Ben Ramdhane
a3a7c6da1b bbf: 6.4.11 2022-01-10 15:07:30 +01:00
vdutta
dca442ce01 bbf: 6.4.10 2022-01-10 09:04:32 +05:30
vdutta
6f00aa22fd icwmp: 8.2.21 2022-01-07 18:10:46 +05:30
Neeraj Bijalwan
575f5c9d19 icwmp: 8.2.20 2022-01-06 13:07:33 +00:00
Janusz Dziedzic
a699302f46 wifimngr: 05-wifi add multiap param
Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
2022-01-05 17:11:05 +00:00
vdutta
4ef7a8034b twamp: Added TWAMP Light support 2022-01-04 23:10:22 +05:30
Artee Roy
9675953bf6 Enables setting of bridge as a proxy interface.
Setting of dfault value for mcast interfaces.
2022-01-04 11:40:13 +00:00
Janusz Dziedzic
d3d4c87f82 easy-soc-libs: new version 6.4.34
Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
2022-01-03 15:58:47 +00:00
Bartlomiej Grzeskowiak
52ced81af6 uboot: allow ensemble uboot compilation
Not tested yet. Build succesfull.

Signed-off-by: Bartlomiej Grzeskowiak <bartlomiej.grzeskowiak@iopsys.eu>
2022-01-03 15:45:54 +00:00
Amin Ben Ramdhane
20f17b81c5 bbf: 6.4.9 2021-12-31 22:24:25 +01:00
Grzegorz Sluja
aafcebaf3d endptmngr: Add averageRoundTripDelay rtp statistic 2021-12-30 12:29:07 +01:00
vdutta
6126333ad9 uspd: Updated schema updater algo 2021-12-30 12:59:22 +05:30
vdutta
fc15efe427 bbf: 6.4.8 2021-12-30 12:58:31 +05:30
Jakob Olsson
59d28497d9 map-controller: 5.3.0 2021-12-29 12:36:12 +01:00
Jakob Olsson
3a4a1b64bf map-agent: 6.4.0 2021-12-29 12:35:24 +01:00
Anjan Chanda
1ce127080e ieee1905: 4.2.1 2021-12-29 11:08:39 +01:00
Amit KUmar
f9a4bfa6d6 ponmngr: added omcid start 2021-12-28 15:18:38 +05:30
Grzegorz Sluja
e4365786b9 dectmngr-3.4.7 Retry mechanism in cmbs api init 2021-12-28 10:03:26 +01:00
Jakob Olsson
65c619060d wfadatad: enable respawn 2021-12-27 16:42:06 +01:00
Amin Ben Ramdhane
ef370bc886 bbf: 6.4.7 2021-12-27 15:26:06 +01:00
Rahul
0730c65372 qosmngr: resolve dscp to q mapping in L2 scenarios 2021-12-27 17:12:56 +05:30
Amin Ben Ramdhane
626e1241d6 bbf: 6.4.6 2021-12-26 15:45:25 +01:00
Amin Ben Ramdhane
b86544da9a bbf: 6.4.5 2021-12-24 11:00:06 +01:00
Yalu Zhang
3e38df2389 Revert 2f8a76e34d
Fix the bug that dectmngr fails to start at the first attempt

Wait for the target up and running before starting dectmngr. Otherwise HELLO_REPLY
cannot be received and dectmngr exits and is started again by procd.
2021-12-23 14:19:45 +01:00
Grzegorz Sluja
d34d6e8bf0 dectmngr-3.4.6 Fix for checking the dspg firmware version in file 2021-12-23 13:02:29 +01:00
Yalu Zhang
2f8a76e34d Fix the bug that dectmngr fails to start at the first attempt
Wait for the target up and running before starting dectmngr. Otherwise HELLO_REPLY
cannot be received and dectmngr exits and is started again by procd.
2021-12-23 10:58:57 +01:00
Grzegorz Sluja
55f1310daa dectmngr-3.4.5 Set RXTUN value during the start up 2021-12-23 09:23:06 +01:00
Grzegorz Sluja
57b528f2af dectmngr-3.4.4 changes
95214c4 Fix for restoring EEPROM parameters after FW upgrade
5ca32de Check country and play proper tones for UK
2021-12-22 14:55:03 +01:00
Grzegorz Sluja
670904cd6c dectmngr: Integrate new binary CMBS 4.13 Build 16 RC28 2021-12-22 13:08:11 +01:00
Amin Ben Ramdhane
ad0633029c bbf: 6.4.3 2021-12-22 12:57:01 +01:00
vdutta
9b823e5937 icwmp: 8.2.19 2021-12-22 17:09:55 +05:30
vdutta
431325e6e6 bbf: 6.4.2 2021-12-22 16:23:26 +05:30
Yalu Zhang
fd8fa1d7e2 dectmngr-3.4.3: remove those unreferenced keyb_* files and fix compiling warnings 2021-12-22 10:07:44 +01:00
Amin Ben Ramdhane
572bfa61dd bbf: 6.4.1 2021-12-21 16:52:30 +01:00
Jakob Olsson
5963ff1139 map-agent: 6.3.10 2021-12-21 16:21:12 +01:00
vdutta
363d3dfcb7 swmodd: 2.0.19 2021-12-21 20:12:16 +05:30
vdutta
cf12bbe6e2 swmodd: 2.0.18 2021-12-21 20:07:28 +05:30
Jakob Olsson
426437c233 map-agent: 6.3.9 2021-12-21 15:16:44 +01:00
Jakob Olsson
742ded177d map-agent: 6.3.8 2021-12-21 14:45:15 +01:00
Jakob Olsson
a5f6b10a50 ieee1905: 4.1.2 2021-12-21 14:26:02 +01:00
Grzegorz Sluja
c25139968a Update package dectmngr
bb941c1 Fixes for static code analysis
0105a0c Update the general module document
2021-12-21 14:22:01 +01:00
Jakob Olsson
f52700c0f0 map-agent: 6.3.7 2021-12-21 14:21:02 +01:00
Jakob Olsson
5bc8757a3e map-controller: 5.2.6 2021-12-21 12:27:44 +01:00
Jakob Olsson
5b0fe1d2dc map-controller: 5.2.5 2021-12-21 11:35:08 +01:00
Filip Matusiak
a31ae89e79 map-agent: multiap: fix missing BSSID on some interfaces 2021-12-21 09:48:38 +00:00
Yalu Zhang
bd72194d2d bbf: 6.4.0 2021-12-21 09:55:03 +01:00
Jakob Olsson
babb25709b map-agent: 6.3.6 2021-12-21 09:35:31 +01:00
Janusz Dziedzic
ea37c333f9 wifimngr: new version 14.0.5
Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
2021-12-20 19:25:30 +00:00
Amin Ben Ramdhane
be07b58cf5 periodicstats: 1.1.0 2021-12-20 17:06:26 +01:00
Amin Ben Ramdhane
13a6a59469 bbf: 6.3.9 2021-12-20 17:03:43 +01:00
Amin Ben Ramdhane
b6301bba94 bbf: 6.3.8 2021-12-20 16:37:59 +01:00
vdutta
dd627b7f70 rulengd: 1.2.6
- remove regex matching logic for event
2021-12-20 19:39:15 +05:30
Sukru Senli
0d2a12f029 sulu: 0.2.24
jakub <jakub.blaszkowski@iopsys.eu>
2021-12-20 09:59:01 +01:00
Jakob Olsson
0f1460f45f map-controller: 5.2.4 2021-12-17 16:57:51 +01:00
Sukru Senli
022e506a56 sulu: 0.2.23
jakub <jakub.blaszkowski@iopsys.eu>
2021-12-17 16:40:49 +01:00
Jakob Olsson
9025395702 Revert "map-controller: make uci wireless to mapcontroller sync configurable"
This reverts commit 5173b01cb2.
2021-12-17 15:55:00 +01:00
Sukru Senli
35ce40b964 sulu: 0.2.22 2021-12-17 15:39:14 +01:00
Jakob Olsson
0c915ba8b8 map-agent: 6.3.5 2021-12-17 14:45:58 +01:00
vdutta
60ab6d1a6b swmodd: Use DUStateChange! to notify faults 2021-12-17 18:40:40 +05:30
sverma
8ec45319bc rulengd: 1.2.5
regex match for event data only
2021-12-17 13:57:27 +01:00
Jakob Olsson
1536d860dd wfadatad: 6.10.1 2021-12-16 16:35:33 +01:00
Jakob Olsson
49858f3601 map-agent: 6.3.4 2021-12-16 16:33:47 +01:00
Sukru Senli
1c305c69e4 wfadatad: remove .init from init script 2021-12-16 16:28:51 +01:00
Anjan Chanda
e592e2d567 wfadatad: rename procd init filenames to match daemon names 2021-12-16 15:27:32 +01:00
Erik Karlsson
ff7714c88e endptmngr: do not start if board does not have voice
Prevents the following issue on boards without voice:

Thu Dec 2 12:45:07 2021 daemon.info procd: Instance endptmngr::instance1 s in a crash loop 4 crashes, 0 seconds since last crash
2021-12-15 13:11:48 +00:00
Fredrik Eriksson
9dda4d7ffa Remove redundant dependency on map-plugin 2021-12-15 13:10:34 +00:00
Jakob Olsson
10cee1f785 map-agent: 6.3.3 2021-12-15 14:09:34 +01:00
Erik Karlsson
8816c26e2a Use correct ranges with tr
The tr command does not take regular expressions and should not be
used with ranges such as [a-z] which furthermore can cause issues if
unquoted as they are interpreted by the shell.
2021-12-15 13:08:18 +00:00
Janusz Dziedzic
aba742a5e7 easy-soc-libs: 6.4.33
Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
2021-12-15 12:26:30 +00:00
suvendhu
d199dadd39 swmodd: config option to select host as EE 2021-12-15 16:49:15 +05:30
Jakob Olsson
fca18d2da5 wifimngr: 14.0.4 2021-12-15 09:33:43 +01:00
Janusz Dziedzic
3b819f5b1d easy-soc-libs: kick hash
Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
2021-12-14 19:29:47 +00:00
Amin Ben Ramdhane
b49d14370d bbf: 6.3.7 2021-12-14 18:24:31 +01:00
Jakob Olsson
3f2befa23a map-agent: corrections to example config 2021-12-14 17:31:22 +01:00
Andreas Gnau
52809e1e94 Update feed [ iopsys ] package [ peripheral_manager ]
-------------------------------------------------------------------------------
* 15ba90f Add support for external LED application.
* da6eb1d Add functionality to change default brightness for SK9822 LEDs.
-------------------------------------------------------------------------------
commit 15ba90f01914113e7c5e8f8a6df6279c882e8265
Author: Markus Gothe <markus.gothe@genexis.eu>
Date: 2021-05-11 09:52:55 +0200

    Add support for external LED application.

    Add support for a callback script/application to control LEDs.

    This commits adds the ability to control a LED via an external application.
    The API is simple and is described in
    'iopsys-brcm63xx-arm/tiger/base-files/sbin/external_led_ctrl.sh'.

    To avoid unnecessary execution of the callback-script, logic has been added
    to keep track on when to update the LEDs.

Base directory -> /
 src/gpio_led.c | 133 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 132 insertions(+), 1 deletion(-)
-------------------------------------------------------------------------------
commit da6eb1d6c0fd03d45cbf5213acd5c2ff07b45bf5
Author: Markus Gothe <markus.gothe@genexis.eu>
Date: 2021-05-11 09:40:00 +0200

    Add functionality to change default brightness for SK9822 LEDs.

    This commit adds the 'sk9822_brightness_file' option. The option can be used
    to adjust the default maximum brightness for the SK9822 LED driver.

Base directory -> /
 src/gpio_led.c | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)
-------------------------------------------------------------------------------
2021-12-14 17:29:55 +01:00
Jakob Olsson
52ff5c79dd map-controller: 5.2.3 2021-12-14 17:15:21 +01:00
Jakob Olsson
09ad1ffa91 map-agent: 6.3.2: mapagent config changes 2021-12-14 17:05:21 +01:00
Yalu Zhang
1d2d9b7b97 dectmngr-3.4.2: Send notification of line and handset use status only to those handsets in range 2021-12-14 14:25:41 +01:00
Amit KUmar
7f405f04ac ponmngr: removed config file 2021-12-14 06:03:10 +00:00
Amit KUmar
16134d0a2d ponmngr: initial implementation 2021-12-14 06:03:10 +00:00
Yalu Zhang
5fbc784901 dectmngr-3.4.1: Create or update the entry for every line in list LineDiagnostic 2021-12-13 18:16:40 +01:00
88 changed files with 1534 additions and 1013 deletions

View File

@@ -5,11 +5,11 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=libbbfdm
PKG_VERSION:=6.3.6
PKG_VERSION:=6.4.27
PKG_FIXUP:=autoreconf
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/bbf.git
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=b22628c0ddd294bc04f3768e7c1559ab6ad4192f
PKG_SOURCE_VERSION:=710485a57e311a5b4c5434efe3e79fc58cb6c429
PKG_RELEASE=$(PKG_SOURCE_VERSION)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_MIRROR_HASH:=skip
@@ -125,8 +125,10 @@ endef
define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/lib
$(INSTALL_DIR) $(1)/usr/include
$(INSTALL_DIR) $(1)/usr/include/libbbfdm
$(INSTALL_DIR) $(1)/usr/include/libbbf_api
$(INSTALL_DATA) $(PKG_BUILD_DIR)/include/*.h $(1)/usr/include/
$(INSTALL_DATA) $(PKG_BUILD_DIR)/*.h $(1)/usr/include/libbbfdm/
$(INSTALL_DATA) $(PKG_BUILD_DIR)/libbbf_api/*.h $(1)/usr/include/libbbf_api/
$(INSTALL_BIN) $(PKG_BUILD_DIR)/bin/.libs/libbbfdm.{a,so*} $(1)/usr/lib/

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.0
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:=6d85dfeb2e29eb7a05069c11e850195b2d283494
PKG_SOURCE_VERSION:=ef9d4c6124d0ca66f048f3d678d9a25f13aa4207
PKG_MIRROR_HASH:=skip
endif

View File

@@ -1,2 +1,3 @@
config dect 'global'
option log_dect_cmbs 'syslog'
option log_dect_cmbs 'syslog'
option log_level 'realtime,warning,error'

Binary file not shown.

Binary file not shown.

View File

@@ -26,6 +26,7 @@ start_service() {
local opt_ext=
local rfpi=
local model_id=
local rxtun=
test $(db get hw.board.hasDect) = "0" && return
@@ -41,6 +42,9 @@ start_service() {
}
opt_ext="$opt_ext -model $model_id"
rxtun=$(db -q get hw.board.dect_rxtun)
[ -n "$rxtun" -a ${#rxtun} -eq 2 ] && opt_ext="$opt_ext -rxtun $rxtun"
config_load dect
config_get log_dect_cmbs global log_dect_cmbs syslog

View File

@@ -33,7 +33,7 @@ exec_class_log() {
}
get_priority() {
local prio=$(echo $1|tr [A-Z] [a-z]);
local prio=$(echo $1|tr 'A-Z' 'a-z');
case "${prio}" in
"lowest")
echo 8;;
@@ -55,7 +55,7 @@ get_priority() {
}
get_mark() {
local prio=$(echo $1|tr [A-Z] [a-z]);
local prio=$(echo $1|tr 'A-Z' 'a-z');
case "${prio}" in
"lowest")
echo "0x41/0x3df";;

View File

@@ -15,7 +15,7 @@ exec_log() {
}
get_priority() {
local prio=$(echo $1|tr [A-Z] [a-z]);
local prio=$(echo $1|tr 'A-Z' 'a-z');
case "${prio}" in
"lowest")
echo 0;;
@@ -98,7 +98,7 @@ manage_rule() {
return 1;
}
protocol=$(echo ${proto}|tr [A-Z] [a-z])
protocol=$(echo ${proto}|tr 'A-Z' 'a-z')
prio_num=$(get_priority ${priority})
if [ -n "${macaddr}" -a -n "${prio_num}" ]; then
for p in ${port}; do

View File

@@ -19,7 +19,7 @@ exec_log() {
}
get_priority() {
local prio=$(echo $1|tr [A-Z] [a-z]);
local prio=$(echo $1|tr 'A-Z' 'a-z');
case "${prio}" in
"lowest")
echo 0;;

View File

@@ -7,13 +7,13 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=easy-soc-libs
PKG_VERSION:=6.4.32
PKG_VERSION:=6.4.40
PKG_RELEASE:=1
LOCAL_DEV=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=88577dd44871eb5d5eafc696b73b1972ada8432a
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
@@ -32,7 +32,6 @@ define Package/easy-soc-libs
CATEGORY:=Libraries
TITLE:=IOPSYS Easy SoC libraries
SUBMENU:=IOPSYS Easy SoC libraries
DEPENDS:=+libopenssl
MENU:=1
endef
@@ -79,7 +78,6 @@ endif
TARGET_CFLAGS += \
-I$(STAGING_DIR)/usr/include \
-I$(STAGING_DIR)/usr/include/openssl \
-I$(STAGING_DIR)/usr/include/libnl3
MAKE_FLAGS += \

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:=1d4f1aafcb929e64597d226a710fd0c1b949ba08
PKG_SOURCE_VERSION:=3a71d4124061287783e0d4c763b1b20e925d2133
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_MIRROR_HASH:=skip
endif

View File

@@ -7,6 +7,8 @@ USE_PROCD=1
NAME=endptmngr
start_service() {
[ "$(db -q get hw.board.hasVoice)" = "1" ] || return
procd_open_instance
procd_set_param env hw_board_hasDect=$(db get hw.board.hasDect)
procd_set_param command $NAME

View File

@@ -8,11 +8,11 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=icwmp
PKG_VERSION:=8.2.18
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:=00e48a59436160b1692f2da3590904bf296f1ab4
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

@@ -1,6 +1,12 @@
#!/bin/sh
#created by the icwmp package
log() {
echo "${@}"|logger -t firewall.cwmp -p info
}
if [ ! -f "/var/state/cwmp" ]; then
touch "/var/state/cwmp"
exit 0;
fi
@@ -8,24 +14,25 @@ zone_name=$(uci -c /var/state -q get cwmp.acs.zonename)
port=$(uci -q get cwmp.cpe.port)
ipaddr=$(uci -c /var/state -q get cwmp.acs.ip)
ip6addr=$(uci -c /var/state -q get cwmp.acs.ip6)
incoming_rule=$(uci -q get cwmp.cpe.incoming_rule|tr [A-Z] [a-z])
incoming_rule=$(uci -q get cwmp.cpe.incoming_rule|tr 'A-Z' 'a-z')
if [ "$zone_name" = "" ]; then
if [ -z "${zone_name}" ]; then
log "empty firewall zone name"
exit 0
elif [ "$zone_name" = "icwmp" ]; then
iptables -nL zone_icwmp_input 2> /dev/null
if [ $? != 0 ]; then
iptables -N zone_icwmp_input
iptables -t filter -A INPUT -j zone_icwmp_input
iptables -I zone_icwmp_input -p tcp --dport $port -j REJECT
iptables -w 1 -N zone_icwmp_input
iptables -w 1 -t filter -A INPUT -j zone_icwmp_input
iptables -w 1 -I zone_icwmp_input -p tcp --dport $port -j REJECT
else
iptables -F zone_icwmp_input
iptables -I zone_icwmp_input -p tcp --dport $port -j REJECT
iptables -w 1 -F zone_icwmp_input
iptables -w 1 -I zone_icwmp_input -p tcp --dport $port -j REJECT
fi
else
iptables -F zone_icwmp_input 2> /dev/null
iptables -t filter -D INPUT -j zone_icwmp_input 2> /dev/null
iptables -X zone_icwmp_input 2> /dev/null
iptables -w 1 -F zone_icwmp_input 2> /dev/null
iptables -w 1 -t filter -D INPUT -j zone_icwmp_input 2> /dev/null
iptables -w 1 -X zone_icwmp_input 2> /dev/null
fi
cmd="iptables -w 1 -I zone_${zone_name}_input -p tcp"

View File

@@ -6,16 +6,16 @@ log() {
handle_icwmp_update() {
local defwan=$(uci -q get cwmp.cpe.default_wan_interface)
local vendorspecinf=`ubus call network.interface.${defwan} status | jsonfilter -e "@.data.vendorspecinf"`
local vendorspecinf=`ifstatus ${defwan} | jsonfilter -e "@.data.vendorspecinf"`
log "Handling dhcp option value ${vendorspecinf}"
[ -n "$vendorspecinf" ] && {
local url=""
local old_url=$(uci -q get cwmp.acs.dhcp_url)
local old_url="$(uci -q get cwmp.acs.dhcp_url)"
case $vendorspecinf in
http://*|https://*)
url="$vendorspecinf"
url="${vendorspecinf}"
;;
*)
for optval in $vendorspecinf; do
@@ -30,9 +30,10 @@ handle_icwmp_update() {
if [ -n "$url" ]; then
log "## icwmp url[${old_url}] changed to [${url}]"
if [ -z "${old_url}" -o "${url}" != "${old_url}" ]; then
if [ "${url}" != "${old_url}" ]; then
log "Restarting icwmp url[${old_url}] changed to [${url}]"
uci -q set cwmp.acs.dhcp_url="$url"
uci commit cwmp
ubus call uci commit '{"config":"cwmp"}'
fi
fi

View File

@@ -57,15 +57,6 @@ wait_for_resolvfile() {
done
}
get_default_wan_interface() {
local default_wan_interface
config_load cwmp
config_get default_wan_interface cpe default_wan_interface "wan"
echo ${default_wan_interface}
}
set_wan_interface() {
local wan_interface="${1}"
local l3_device=""
@@ -95,14 +86,14 @@ copy_cwmp_etc_files_to_varstate() {
fi
fi
mkdir -p /var/state/icwmpd
if [ -f /etc/icwmpd/.icwmpd_backup_session.xml ]
mkdir -p /var/run/icwmpd
if [ -f /etc/icwmpd/icwmpd_backup_session.xml ]
then
mv /etc/icwmpd/.icwmpd_backup_session.xml /var/state/icwmpd 2>/dev/null
mv /etc/icwmpd/icwmpd_backup_session.xml /var/run/icwmpd 2>/dev/null
fi
if [ -f /etc/icwmpd/.dm_enabled_notify.xml ]
if [ -f /etc/icwmpd/dm_enabled_notify.xml ]
then
mv /etc/icwmpd/.dm_enabled_notify /var/state/icwmpd 2>/dev/null
mv /etc/icwmpd/dm_enabled_notify /var/run/icwmpd 2>/dev/null
fi
}
@@ -111,13 +102,13 @@ copy_cwmp_varstate_files_to_etc() {
then
cp /var/state/cwmp /etc/icwmpd 2>/dev/null
fi
if [ -f /var/state/icwmpd/.icwmpd_backup_session.xml ]
if [ -f /var/run/icwmpd/icwmpd_backup_session.xml ]
then
cp /var/state/icwmpd/.icwmpd_backup_session.xml /etc/icwmpd 2>/dev/null
cp /var/run/icwmpd/icwmpd_backup_session.xml /etc/icwmpd 2>/dev/null
fi
if [ -f /var/state/icwmpd/.dm_enabled_notify.xml ]
if [ -f /var/run/icwmpd/dm_enabled_notify.xml ]
then
cp /var/state/icwmpd/.dm_enabled_notify /etc/icwmpd 2>/dev/null
cp /var/run/icwmpd/dm_enabled_notify /etc/icwmpd 2>/dev/null
fi
}
@@ -130,7 +121,6 @@ validate_acs_section()
'periodic_inform_time:string' \
'url:string' \
'dhcp_url:string' \
'dhcp_discovery:or("enable", "disable")' \
'compression:or("GZIP","Deflate","Disabled")' \
'retry_min_wait_interval:range(1, 65535)' \
'retry_interval_multiplier:range(1000, 65535)' \
@@ -189,10 +179,32 @@ validate_defaults() {
return 0;
}
boot() {
local dhcp_url=""
local discovery="1"
config_load cwmp
config_get_bool dhcp_discovery acs dhcp_discovery 1
config_get dhcp_url acs dhcp_url ""
if [ "${dhcp_discovery}" == "enable" -o "${dhcp_discovery}" == "1" ]; then
if [ -z "${dhcp_url}" ]; then
log "dhcp discovery enabled but no dhcp url, trigger update"
/etc/icwmpd/update.sh
fi
fi
start
}
start_service() {
local enable_cwmp=`uci -q get cwmp.cpe.enable`
local wan_interface=$(get_default_wan_interface)
local dhcp_discovery=`uci -q get cwmp.acs.dhcp_discovery`
local enable_cwmp
local wan_interface
local dhcp_discovery
config_load cwmp
config_get_bool enable_cwmp cpe enable 1
config_get dhcp_discovery acs dhcp_discovery
config_get wan_interface cpe default_wan_interface "wan"
if [ "$enable_cwmp" = "0" -o "$enable_cwmp" = "false" ]; then
log "CWMP is not enabled"

View File

@@ -1,18 +1,18 @@
# Copy defaults by the factory to the cwmp UCI user section.
# Get Manufacturer OUI.
oui=$(uci -q get cwmp.cpe.manufacturer_oui)
if [ -z "${oui}" ]; then
oui=$(db -q get device.deviceinfo.ManufacturerOUI)
fi
# Get factory base MAC.
baseMac=$(db -q get hw.board.basemac)
# Erase colon and space characters.
baseMac=${baseMac//:/}
baseMac=${baseMac// /}
# Caseing and fixed length string.
mac=$(printf "%12.12X" $((0x$baseMac)))
oui=$(echo "${oui}" | tr 'a-f' 'A-F')
# Get system serial number.
serial=$(db -q get hw.board.serial_number)
serial=$(uci -q get cwmp.cpe.serial_number)
if [ -z "${serial}" ]; then
serial=$(db -q get device.deviceinfo.SerialNumber)
fi
# Get userid values
acs_userid=$(uci -q get cwmp.acs.userid)
@@ -21,12 +21,12 @@ cpe_userid=$(uci -q get cwmp.cpe.userid)
# Only set if they are empty
if [ -z "$acs_userid" ]
then
uci -q set cwmp.acs.userid="${mac:0:6}-${serial}"
uci -q set cwmp.acs.userid="${oui}-${serial}"
fi
if [ -z "$cpe_userid" ]
then
uci -q set cwmp.cpe.userid="${mac:0:6}-${serial}"
uci -q set cwmp.cpe.userid="${oui}-${serial}"
fi
# No need for commit here, it is done by uci_apply_defaults().

View File

@@ -1 +1 @@
/var/state/icwmpd/.icwmpd_backup_session.xml
/var/run/icwmpd/icwmpd_backup_session.xml

View File

@@ -6,5 +6,9 @@ config IEEE1905_EXTENSION_ALLOWED
bool "Allow plugins to extend 1905 CMDUs and/or TLVs"
default y
config IEEE1905_PLATFORM_HAS_WIFI
bool "Platform has WiFi"
default y if PACKAGE_libwifi
endmenu
endif

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.1.1
PKG_VERSION:=4.6.19
LOCAL_DEV=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=28dbe8330ba82f131771a0cfd502c41867f0ad83
PKG_SOURCE_VERSION:=7267a76fafa264792415a1cdc697a9e47934a1e6
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
@@ -37,26 +37,30 @@ endef
define Package/libieee1905
$(call Package/ieee1905/Default,$(1))
TITLE+= (library for CMDU and TLV handling)
DEPENDS= +libubox +libuci +libubus +libeasy +libnl-genl +libwifi \
+libjson-c +libblobmsg-json
DEPENDS= +libubox +libuci +libubus +libeasy +libnl-genl \
+libjson-c +libblobmsg-json +libopenssl
endef
define Package/ieee1905
$(call Package/ieee1905/Default,$(1))
TITLE+= ieee1905d (daemon implementing 1905.1 and provides cli)
DEPENDS= +libubox +libuci +libubus +libeasy +libnl-genl +libwifi \
+libjson-c +libblobmsg-json +libwifi +ubus +libpthread \
+libnl-genl +libieee1905
DEPENDS= +libubox +libuci +libubus +libeasy +libnl-genl \
+libjson-c +libblobmsg-json +ubus +libpthread \
+libieee1905 +IEEE1905_PLATFORM_HAS_WIFI:libwifi
endef
define Package/map-plugin
$(call Package/ieee1905/Default,$(1))
TITLE:=Multi-AP (Easymesh) plugin
DEPENDS= +libubox +libuci +libubus +libeasy +libnl-genl +libwifi \
DEPENDS= +libubox +libuci +libubus +libeasy +libnl-genl \
+libjson-c +libblobmsg-json +ieee1905 +libieee1905
endef
define Package/map-plugin/config
source "$(SOURCE)/Config.map-plugin.in"
endef
define Package/ieee1905/description
This package provides IEEE Std 1905.1 stack.
endef
@@ -68,8 +72,18 @@ endef
TARGET_CFLAGS += \
-I$(STAGING_DIR)/usr/include \
-I$(STAGING_DIR)/usr/include/libnl3 \
-I$(STAGING_DIR)/usr/include/openssl \
-D_GNU_SOURCE
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
@@ -100,6 +114,7 @@ define Build/InstallDev/map-plugin
$(INSTALL_DIR) $(1)/usr/lib/ieee1905
$(CP) $(PKG_BUILD_DIR)/src/extensions/map/map2.h $(1)/usr/include/map2.h
$(CP) $(PKG_BUILD_DIR)/src/extensions/map/map_module.h $(1)/usr/include/map_module.h
$(CP) $(PKG_BUILD_DIR)/src/extensions/map/cntlrsync.h $(1)/usr/include/cntlrsync.h
$(CP) $(PKG_BUILD_DIR)/src/extensions/map/map.so $(1)/usr/lib/ieee1905/map.so
$(CP) $(PKG_BUILD_DIR)/src/extensions/map/libmaputil.so $(1)/usr/lib/libmaputil.so
endef

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

@@ -17,7 +17,6 @@ CONFIG_PACKAGE_ddns-scripts=y
CONFIG_PACKAGE_ds-lite=y
CONFIG_PACKAGE_ethtool=y
CONFIG_PACKAGE_getopt=y
CONFIG_PACKAGE_glib2=y
CONFIG_PACKAGE_gre=y
CONFIG_PACKAGE_icwmp=y
CONFIG_PACKAGE_ieee1905=y

View File

@@ -13,12 +13,9 @@ function genconfig {
export DEVELOPER=0
target="bogus"
target_config_path=""
bcm27xx="target/linux/iopsys-bcm27xx"
brcm63xx_arm="target/linux/iopsys-brcm63xx-arm"
ramips="target/linux/iopsys-ramips"
mediatek="target/linux/iopsys-mediatek"
econet="target/linux/iopsys-econet"
intel_mips="target/linux/intel_mips"
x86="target/linux/iopsys-x86"
armvirt="target/linux/iopsys-armvirt"
@@ -114,21 +111,15 @@ function genconfig {
iopsys_brcm63xx_arm=$(cd $brcm63xx_arm; ./genconfig)
[ -e $ramips/genconfig ] &&
iopsys_ramips=$(cd $ramips; ./genconfig)
[ -e $mediatek/genconfig ] &&
iopsys_mediatek=$(cd $mediatek; ./genconfig)
[ -e $econet/genconfig ] &&
iopsys_econet=$(cd $econet; ./genconfig)
[ -e $intel_mips/genconfig ] &&
iopsys_intel_mips=$(cd $intel_mips; ./genconfig)
[ -e $x86/genconfig ] &&
iopsys_x86=$(cd $x86; ./genconfig)
[ -e $armvirt/genconfig ] &&
iopsys_armvirt=$(cd $armvirt; ./genconfig)
[ -e $bcm27xx/genconfig ] &&
iopsys_bcm27xx=$(cd $bcm27xx; ./genconfig)
if [ "$profile" == "LIST" ]; then
for list in iopsys_brcm63xx_arm iopsys_ramips iopsys_mediatek iopsys_econet iopsys_intel_mips iopsys_x86 iopsys_armvirt iopsys_bcm27xx; do
for list in iopsys_brcm63xx_arm iopsys_ramips iopsys_econet iopsys_x86 iopsys_armvirt; do
echo "$list based boards:"
for b in ${!list}; do
echo -e "\t$b"
@@ -153,14 +144,6 @@ function genconfig {
fi
done
for p in $iopsys_mediatek; do
if [ $p == $profile ]; then
target="iopsys_mediatek"
target_config_path="$mediatek/config"
return
fi
done
for p in $iopsys_econet; do
if [ $p == $profile ]; then
target="iopsys_econet"
@@ -169,14 +152,6 @@ function genconfig {
fi
done
for p in $iopsys_intel_mips; do
if [ $p == $profile ]; then
target="intel_mips"
target_config_path="$intel_mips/config"
return
fi
done
for p in $iopsys_x86; do
if [ $p == $profile ]; then
target="iopsys_x86"
@@ -192,15 +167,6 @@ function genconfig {
return
fi
done
for p in $iopsys_bcm27xx; do
if [ $p == $profile ]; then
target="iopsys_bcm27xx"
target_config_path="$bcm27xx/config"
return
fi
done
}
git remote -v | grep -qE '(git@|ssh://)' && {
@@ -352,32 +318,16 @@ function genconfig {
echo "" >> .config
fi
#special handling for intel_mips/iopsys_ramips which use TARGET_DEVICES
if [ "$target" = "intel_mips" ]; then
subtarget="xrx500"
echo "CONFIG_TARGET_${target}=y" >> .config
echo "CONFIG_TARGET_${target}_${subtarget}=y" >> .config
device=$(echo $BOARDTYPE | tr a-z A-Z)
echo "CONFIG_TARGET_DEVICE_${target}_${subtarget}_DEVICE_${device}=y" >> .config
elif [ "$target" = "iopsys_ramips" ]; then
# Special handling for targets which use TARGET_DEVICES
if [ "$target" = "iopsys_ramips" ]; then
subtarget="mt7621"
echo "CONFIG_TARGET_${target}=y" >> .config
echo "CONFIG_TARGET_${target}_${subtarget}=y" >> .config
echo "CONFIG_TARGET_DEVICE_${target}_${subtarget}_DEVICE_${BOARDTYPE}=y" >> .config
elif [ "$target" = "iopsys_mediatek" ]; then
subtarget="mt7622"
echo "CONFIG_TARGET_${target}=y" >> .config
echo "CONFIG_TARGET_${target}_${subtarget}=y" >> .config
echo "CONFIG_TARGET_${target}_${subtarget}_DEVICE_${BOARDTYPE}=y" >> .config
elif [ "$target" = "iopsys_econet" ]; then
subtarget="en7562"
echo "CONFIG_TARGET_${target}=y" >> .config
echo "CONFIG_TARGET_${target}_${subtarget}=y" >> .config
elif [ "$target" = "iopsys_bcm27xx" ]; then
subtarget="iopsys_bcm2711"
echo "CONFIG_TARGET_${target}=y" >> .config
echo "CONFIG_TARGET_${target}_${subtarget}=y" >> .config
echo "CONFIG_TARGET_DEVICE_${target}_${subtarget}_DEVICE_${BOARDTYPE}=y" >> .config
else
echo "CONFIG_TARGET_${target}=y" >> .config
echo "CONFIG_TARGET_${target}_${BOARDTYPE}=y" >> .config

View File

@@ -12,12 +12,9 @@ function genconfig_min {
export DEVELOPER=0
target="bogus"
target_config_path=""
bcm27xx="target/linux/iopsys-bcm27xx"
brcm63xx_arm="target/linux/iopsys-brcm63xx-arm"
ramips="target/linux/iopsys-ramips"
mediatek="target/linux/iopsys-mediatek"
econet="target/linux/iopsys-econet"
intel_mips="target/linux/intel_mips"
x86="target/linux/iopsys-x86"
armvirt="target/linux/iopsys-armvirt"
@@ -113,21 +110,15 @@ function genconfig_min {
iopsys_brcm63xx_arm=$(cd $brcm63xx_arm; ./genconfig)
[ -e $ramips/genconfig ] &&
iopsys_ramips=$(cd $ramips; ./genconfig)
[ -e $mediatek/genconfig ] &&
iopsys_mediatek=$(cd $mediatek; ./genconfig)
[ -e $econet/genconfig ] &&
iopsys_econet=$(cd $econet; ./genconfig)
[ -e $intel_mips/genconfig ] &&
iopsys_intel_mips=$(cd $intel_mips; ./genconfig)
[ -e $x86/genconfig ] &&
iopsys_x86=$(cd $x86; ./genconfig)
[ -e $armvirt/genconfig ] &&
iopsys_armvirt=$(cd $armvirt; ./genconfig)
[ -e $bcm27xx/genconfig ] &&
iopsys_bcm27xx=$(cd $bcm27xx; ./genconfig)
if [ "$profile" == "LIST" ]; then
for list in iopsys_brcm63xx_arm iopsys_ramips iopsys_mediatek iopsys_econet iopsys_intel_mips iopsys_x86 iopsys_armvirt iopsys_bcm27xx; do
for list in iopsys_brcm63xx_arm iopsys_ramips iopsys_econet iopsys_x86 iopsys_armvirt; do
echo "$list based boards:"
for b in ${!list}; do
echo -e "\t$b"
@@ -152,14 +143,6 @@ function genconfig_min {
fi
done
for p in $iopsys_mediatek; do
if [ $p == $profile ]; then
target="iopsys_mediatek"
target_config_path="$mediatek/config"
return
fi
done
for p in $iopsys_econet; do
if [ $p == $profile ]; then
target="iopsys_econet"
@@ -168,14 +151,6 @@ function genconfig_min {
fi
done
for p in $iopsys_intel_mips; do
if [ $p == $profile ]; then
target="intel_mips"
target_config_path="$intel_mips/config"
return
fi
done
for p in $iopsys_x86; do
if [ $p == $profile ]; then
target="iopsys_x86"
@@ -191,15 +166,6 @@ function genconfig_min {
return
fi
done
for p in $iopsys_bcm27xx; do
if [ $p == $profile ]; then
target="iopsys_bcm27xx"
target_config_path="$bcm27xx/config"
return
fi
done
}
git remote -v | grep -qE '(git@|ssh://)' && {
@@ -343,34 +309,16 @@ function genconfig_min {
echo "" >> .config
fi
#special handling for intel_mips/iopsys_ramips which use TARGET_DEVICES
if [ "$target" = "intel_mips" ]; then
subtarget="xrx500"
echo "CONFIG_TARGET_${target}=y" >> .config
echo "CONFIG_TARGET_${target}_${subtarget}=y" >> .config
device=$(echo $BOARDTYPE | tr a-z A-Z)
echo "CONFIG_TARGET_DEVICE_${target}_${subtarget}_DEVICE_${device}=y" >> .config
elif [ "$target" = "iopsys_ramips" ]; then
# Special handling for targets which use TARGET_DEVICES
if [ "$target" = "iopsys_ramips" ]; then
subtarget="mt7621"
echo "CONFIG_TARGET_${target}=y" >> .config
echo "CONFIG_TARGET_${target}_${subtarget}=y" >> .config
echo "CONFIG_TARGET_DEVICE_${target}_${subtarget}_DEVICE_${BOARDTYPE}=y" >> .config
elif [ "$target" = "iopsys_mediatek" ]; then
subtarget="mt7622"
echo "CONFIG_TARGET_${target}=y" >> .config
echo "CONFIG_TARGET_${target}_${subtarget}=y" >> .config
echo "CONFIG_TARGET_${target}_${subtarget}_DEVICE_${BOARDTYPE}=y" >> .config
elif [ "$target" = "iopsys_econet" ]; then
subtarget="en7562"
echo "CONFIG_TARGET_${target}=y" >> .config
echo "CONFIG_TARGET_${target}_${subtarget}=y" >> .config
elif [ "$target" = "iopsys_bcm27xx" ]; then
subtarget="iopsys_bcm2711"
echo "CONFIG_TARGET_${target}=y" >> .config
echo "CONFIG_TARGET_${target}_${subtarget}=y" >> .config
echo "CONFIG_TARGET_MULTI_PROFILE=y" >> .config
echo "CONFIG_TARGET_PER_DEVICE_ROOTFS=y" >> .config
echo "CONFIG_TARGET_DEVICE_${target}_${subtarget}_DEVICE_${BOARDTYPE}=y" >> .config
else
echo "CONFIG_TARGET_${target}=y" >> .config
echo "CONFIG_TARGET_${target}_${BOARDTYPE}=y" >> .config

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.3.2
PKG_VERSION:=7.1.10
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE_VERSION:=39193fccea6493c57d169611d8f21256753f7a3b
PKG_SOURCE_VERSION:=8d2fa1af3b0cbdb65f791b490e72c5925cccaa05
PKG_MAINTAINER:=Anjan Chanda <anjan.chanda@iopsys.eu>
PKG_LICENSE:=PROPRIETARY IOPSYS
@@ -21,8 +21,6 @@ PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)_$(PKG_SOURCE_VERSION).tar.xz
PKG_MIRROR_HASH:=skip
endif
PKG_BUILD_DEPENDS:=map-plugin
include $(INCLUDE_DIR)/package.mk
define Package/map-agent
@@ -52,7 +50,7 @@ define Package/dynbhd/description
endef
define Package/map-agent/config
#source "$(SOURCE)/Config.in"
source "$(SOURCE)/Config.in"
endef
TARGET_CFLAGS += \
@@ -60,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

@@ -17,6 +17,7 @@ config agent 'agent'
# option steer_legacy_retry_secs '3600'
# option assoc_ctrl_secs '30'
# option band '2'
# option type 'fronthaul'
#config ap
# option ifname 'wl1'
@@ -24,8 +25,9 @@ config agent 'agent'
# list exclude '00:11:22:33:44:55'
# list exclude_btm '00:aa:bb:cc:dd:ee'
# option band '5'
# option type 'fronthaul'
#config bk-iface
#config bsta
# option ifname 'apclii0'
# option enabled '1'
# option onboarded '0'

View File

@@ -1,6 +1,8 @@
#!/bin/sh
wan=$(db -q get hw.board.ethernetWanPort)
MAPFILE="/tmp/multiap.backhaul"
[ -z "$wan" ] && exit 1 # no configuration
[ "$PORT" != "$wan" ] && exit 0
@@ -32,14 +34,16 @@ update_bstas() {
}
if [ "$LINK" = "up" ]; then
touch /tmp/map.agent.bsta_global_disable
#touch "$MAPFILE"
config_load "mapagent"
bridge=$(uci get mapagent.agent.al_bridge | cut -d '-' -f2)
config_foreach remove_from_bridge bsta $bridge
config_foreach update_bstas bsta down
/lib/wifi/multiap set_uplink "eth" "$PORT"
else
rm -f /tmp/map.agent.bsta_global_disable
rm -f "$MAPFILE"
config_load "mapagent"
config_foreach update_bstas bsta up
fi

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

@@ -10,7 +10,11 @@
. /usr/share/libubox/jshn.sh
. /lib/wifi/traffic_separation
MAPFILE="/tmp/multiap.backhaul"
diff=0
onbrd_bssid=0
onbrd_band=0
usage() {
cat <<EOF
@@ -53,6 +57,7 @@ get_type_by_section() {
brcm_sync_credentials() {
bands=""
json_init
mapagent_process_fh() {
local section=$1
local dev=$2
@@ -76,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() {
@@ -98,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}
}
@@ -110,9 +157,9 @@ brcm_sync_credentials() {
config_foreach mapagent_process_radio radio
uci commit ieee1905
json_cleanup
}
brcm_write_credentials() {
config_load mapagent
@@ -233,6 +280,7 @@ write_bsta_config() {
#echo diff = $diff > /dev/console
config_load mapagent
mapagent_apply_wl_bsta() {
@@ -258,6 +306,7 @@ write_bsta_config() {
local section=$1
local bsta=$2
config_get ifname $section ifname
#echo bsta = $bsta > /dev/console
@@ -265,15 +314,43 @@ write_bsta_config() {
#echo found ifname=$ifname > /dev/console
config_get bssid $section bssid
config_get band $section band
ret=$(mapagent_apply_wl_bsta $ifname $bssid)
[ "$ret" == "1" ] && diff=1
[ "$ret" == "1" ] && {
diff=1
onbrd_bssid=$bssid
onbrd_band=$band
}
}
mapagent_apply_bssid_same_band() {
apply_config() {
local section=$1
local bsta=$2
config_get ifname $section ifname
[ "$bsta" == "$ifname" ] || return
uci -q set wireless.${section}.bssid=$bssid
}
config_get band $1 band
config_get onboarded $1 onboarded "0"
[ "$onbrd_band" != "$band" -o "$onboarded" = "1" ] && return
config_get ifname $1 ifname
config_load wireless
config_foreach apply_config wifi-iface $ifname $onbrd_bssid
uci commit wireless
}
config_foreach mapagent_process_bk bsta $ifname
#echo result diff = $diff > /dev/console
[ "$diff" == "1" ] && {
config_foreach mapagent_apply_bssid_same_band bsta
ubus call uci commit '{"config":"wireless"}'
#echo reloading wireless > /dev/console
}
@@ -670,6 +747,35 @@ bsta_swap_to_link() {
wpa_cli -i "$1" save_config > /dev/null
}
set_uplink_backhaul_info() {
local ul_1905id=$1
local ul_mac=$2
json_load "$(cat $MAPFILE)"
json_add_string "backhaul_device_id" "$ul_1905id"
json_add_string "backhaul_macddr" "$ul_mac"
json_dump > "$MAPFILE"
json_cleanup
}
set_uplink() {
local type=$1
local ifname=$2
local hwaddr
hwaddr="$(ifconfig $ifname | grep -i hwaddr | awk '{print $5}' | awk '{print tolower($0)}')"
json_init
json_add_string "type" "$type"
json_add_string "ifname" "$ifname"
json_add_string "macaddr" "$hwaddr"
json_dump > "$MAPFILE"
json_cleanup
}
unset_uplink() {
rm "$MAPFILE" > /dev/null 2>&1
}
func=$1
shift
@@ -692,6 +798,9 @@ case "$func" in
bsta_scan_on_enabled) bsta_scan_on_enabled $@;;
bsta_use_link) bsta_use_link $@;;
bsta_swap_to_link) bsta_swap_to_link $@;;
set_uplink) set_uplink $@;;
set_uplink_backhaul_info) set_uplink_backhaul_info $@;;
unset_uplink) unset_uplink $@;;
--help|help) usage;;
*) usage; exit 1;;
esac

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.2.2
PKG_VERSION:=6.0.5
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE_VERSION:=827cb6e25e7428c7d7c4ed07dd0e018d2f727abc
PKG_SOURCE_VERSION:=3562b7f774e6dffda2e58ad2acb382fc439273fb
PKG_LICENSE:=PROPRIETARY IOPSYS
PKG_LICENSE_FILES:=LICENSE
@@ -20,9 +20,6 @@ PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)_$(PKG_SOURCE_VERSION).tar.xz
PKG_MIRROR_HASH:=skip
endif
PKG_BUILD_DEPENDS:=map-plugin
include $(INCLUDE_DIR)/package.mk
define Package/map-controller
@@ -37,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 += \
@@ -47,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,19 +14,125 @@ 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", "sae+aes", "psk2",
"psk2+aes", "sae-mixed", "sae-mixed+aes")' \
'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
config_get_bool sync_from_uci_wireless controller sync_from_uci_wireless 0
if [ "$sync_from_uci_wireless" -eq 1 ]; then
/lib/wifi/multiap sync_mapcontroller_from_wireless
fi
procd_open_instance
procd_set_param command "/usr/sbin/mapcontroller" "-d"
@@ -44,25 +152,13 @@ start_service() {
service_triggers()
{
config_load "mapcontroller"
procd_add_reload_trigger "mapcontroller"
config_get_bool sync_from_uci_wireless controller sync_from_uci_wireless 0
if [ "$sync_from_uci_wireless" -eq 1 ]; then
procd_add_reload_trigger "wireless"
fi
}
reload_service() {
local enabled
config_load "mapcontroller"
config_get_bool sync_from_uci_wireless controller sync_from_uci_wireless 0
if [ "$sync_from_uci_wireless" -eq 1 ]; then
/lib/wifi/multiap sync_mapcontroller_from_wireless
fi
config_get_bool enabled controller enabled 1
if [ "$enabled" -eq 0 ]; then
stop

View File

@@ -6,11 +6,11 @@ include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=map-topology
PKG_VERSION:=3.1.0
PKG_VERSION:=3.2.5
LOCAL_DEV:=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_VERSION:=b7556dcfb023acccbfd293f14ff036814bf25daf
PKG_SOURCE_VERSION:=ddf78cca217ebfa83733a532bdd2d17b6c3af54e
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

@@ -59,9 +59,6 @@ mld_p_up_interfaces=""
mld_p_down_interfaces=""
mld_p_exceptions=""
# Standard parameters need by BCM's multicast daemon
allow_brdevice=0
proxdevs=""
ethwan="$(db -q get hw.board.ethernetWanPort)"
@@ -170,6 +167,36 @@ config_mcast_querier_params() {
echo "${protocol}-last-member-query-interval $last_mem_q_int" >> $CONFFILE
}
config_snooping_upstream_interface() {
local snooping_upstream_intf=""
json_load "$(devstatus $1)"
logger -t "mcastconf" "$(devstatus $1)"
itr=1
json_select bridge-members
# loop over the bridge and find the device on wan port
while json_get_var dev $itr; do
case "$dev" in
*.*)
port="$(echo "$dev" | cut -d'.' -f 1)"
if [ $port == $ethwan ]; then
ifconfig $dev | grep RUNNING >/dev/null && $snooping_upstream_intf="$dev" && break
fi
;;
esac
itr=$(($itr + 1))
done
json_select ..
# if none of the bridge members are on wan port, set the wan port itself
if [ -n "$snooping_upstream_intf" ]; then
echo "upstream-interface $snooping_upstream_intf" >>$CONFFILE
else
echo "upstream-interface $ethwan" >>$CONFFILE
fi
}
config_snooping_on_bridge() {
local protocol="$1"
local bcm_mcast_p=1
@@ -187,39 +214,6 @@ config_snooping_on_bridge() {
done
}
handle_bridged_proxy_interface() {
local p2="$1"
local p_enable=0
if [ "$p2" == "igmp" ]; then
p_enable=$igmp_p_enable
else
p_enable=$mld_p_enable
fi
if [ $p_enable -eq 1 -a $allow_brdevice -eq 1 ]
then
proxdevs="$proxdevs $2"
echo "upstream-interface $2" >>$CONFFILE
else
json_load "$(devstatus $2)"
itr=1
json_select bridge-members
while json_get_var dev $itr; do
case "$dev" in
*.*)
port="$(echo "$dev" | cut -d'.' -f 1)"
if [ $port == $ethwan ]; then
ifconfig $dev | grep RUNNING >/dev/null && proxdevs="$proxdevs $dev" && break
fi
;;
esac
itr=$(($itr + 1))
done
json_select ..
fi
}
config_mcast_proxy_interface() {
local itr
local p1="$1"
@@ -234,7 +228,8 @@ config_mcast_proxy_interface() {
for proxif in $2; do
case "$proxif" in
br-*)
handle_bridged_proxy_interface $p1 $proxif
proxdevs="$proxdevs $proxif"
echo "upstream-interface $proxif" >>$CONFFILE
;;
*)
ifconfig $proxif | grep RUNNING >/dev/null && proxdevs="$proxdevs $proxif"
@@ -246,7 +241,12 @@ config_mcast_proxy_interface() {
echo "${p1}-proxy-interfaces $proxdevs" >> $CONFFILE
fi
[ -n "$proxdevs" ] && echo "${p1}-mcast-interfaces $proxdevs" >> $CONFFILE
# if proxdevs is empty set the wan port as mcast-interface
if [ -n "$proxdevs" ]; then
echo "${p1}-mcast-interfaces $proxdevs" >> $CONFFILE
else
echo "${p1}-mcast-interfaces $ethwan" >> $CONFFILE
fi
}
configure_mcpd_snooping() {
@@ -259,14 +259,14 @@ configure_mcpd_snooping() {
if [ "$protocol" == "igmp" ]; then
config_snooping_common_params $protocol $igmp_s_version $igmp_s_robustness $igmp_s_mode
config_mcast_querier_params $protocol $igmp_s_query_interval $igmp_s_q_resp_interval $igmp_s_last_mem_q_int
config_mcast_proxy_interface $protocol "$igmp_s_iface"
config_snooping_upstream_interface "$igmp_s_iface"
config_snooping_on_bridge $protocol $igmp_s_iface $igmp_s_mode
exceptions=$igmp_s_exceptions
fast_leave=$igmp_s_fast_leave
elif [ "$protocol" == "mld" ]; then
config_snooping_common_params $protocol $mld_s_version $mld_s_robustness $mld_s_mode
config_mcast_querier_params $protocol $mld_s_query_interval $mld_s_q_resp_interval $mld_s_last_mem_q_int
config_mcast_proxy_interface $protocol "$mld_s_iface"
config_snooping_upstream_interface "$mld_s_iface"
config_snooping_on_bridge $protocol $mld_s_iface $mld_s_mode
exceptions=$mld_s_exceptions
fast_leave=$mld_s_fast_leave

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

@@ -5,12 +5,12 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=obuspa
PKG_VERSION:=4.1.0.16
PKG_VERSION:=4.1.0.18
LOCAL_DEV:=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=9db79a21298becd2c6a133abad3063f532fc281b
PKG_SOURCE_VERSION:=af3d4663d66942e3b0e3253375c5620629769aa5
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

View File

@@ -223,18 +223,14 @@ validate_mqtt_client_section()
'ConnectRetryMaxInterval:uinteger:60'
}
get_oui_from_hw() {
local oui=$(uci -q get cwmp.cpe.manufacturer_oui)
if [ -z "${oui}" ]; then
oui="$(db get device.deviceinfo.ManufacturerOUI)"
fi
get_oui_from_db() {
local oui="$(db get device.deviceinfo.ManufacturerOUI)"
echo "${oui}"
}
get_serial_from_hw() {
local serial="$(db get hw.board.serial_number)"
get_serial_from_db() {
local serial="$(db get device.deviceinfo.SerialNumber)"
# this can encoded further
echo "${serial}"
@@ -254,8 +250,8 @@ publish_endpoint() {
config_load obuspa
config_get AgentEndpointID localagent EndpointID ""
if [ -z "${AgentEndpointID}" ]; then
serial=$(get_serial_from_hw)
oui=$(get_oui_from_hw)
serial=$(get_serial_from_db)
oui=$(get_oui_from_db)
AgentEndpointID="os::${oui}-${serial}"
fi

View File

@@ -289,8 +289,8 @@ parser_timeout()
#data format is digital with time unit
#10s-10 seconds 10m-10 minutes 10h-10 hours 10d-10 days
if [ -n "$1" ]; then
flag=$(echo "$1"| tr -d [0-9] | tr '[A-Z]' '[a-z]')
data=$(echo "$1"| tr -cd [0-9])
flag=$(echo "$1"| tr -d '0-9' | tr 'A-Z' 'a-z')
data=$(echo "$1"| tr -cd '0-9')
case $flag in
m)

View File

@@ -5,12 +5,12 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=periodicstats
PKG_VERSION:=1.0.5
PKG_VERSION:=1.1.0
LOCAL_DEV:=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=26d65740dad0fd4e295a1bd88cd059b2bfaaf5af
PKG_SOURCE_VERSION:=7426c7458f792cc66920c206d62869c5620f1400
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/periodicstats.git
PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_VERSION).tar.gz
PKG_MIRROR_HASH:=skip
@@ -26,7 +26,7 @@ define Package/periodicstats
SECTION:=utils
CATEGORY:=Utilities
TITLE:=Periodic Statistics Daemon
DEPENDS:=+libuci +libubox +libubus +libblobmsg-json +libjson-c +libbbfdm +libbbf_api +uspd
DEPENDS:=+libuci +libubox +libubus +libblobmsg-json +libjson-c +libbbf_api
endef
define Package/periodicstats/description

View File

@@ -12,7 +12,7 @@ PKG_NAME:=peripheral_manager
PKG_VERSION:=1.0.6
PKG_RELEASE:=1
PKG_SOURCE_VERSION:=785166a9861a119623556163179915727896156b
PKG_SOURCE_VERSION:=15ba90f01914113e7c5e8f8a6df6279c882e8265
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/peripheral-manager

View File

@@ -6,11 +6,11 @@ usage () {
}
[ $# -ne 1 ] && usage
ledstate=$(echo $1 | tr '[A-Z]' '[a-z]')
ledstate=$(echo $1 | tr 'A-Z' 'a-z')
case $ledstate in
normal|test|allon|alloff|production)
ubus call leds set "{\"state\" : \"$ledstate\"}"
ubus call leds set "{\"state\" : \"$ledstate\"}"
;;
*)
usage

38
ponmngr/Makefile Normal file
View File

@@ -0,0 +1,38 @@
#
# Copyright (C) 2013-2021 iopsys
#
include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=ponmngr
PKG_VERSION:=1.0.0
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
PKG_LICENSE:=GPL-2.0-only
PKG_LICENSE_FILES:=LICENSE
include $(INCLUDE_DIR)/package.mk
define Package/ponmngr
CATEGORY:=Utilities
TITLE:=ponmngr packets manager daemon
endef
define Package/ponmngr/description
Configures pon
endef
#define Build/Prepare
# $(CP) -rf ./ponmngr/* $(PKG_BUILD_DIR)/
#endef
define Build/Compile
endef
define Package/ponmngr/install
$(CP) ./files/* $(1)/
endef
$(eval $(call BuildPackage,ponmngr))

36
ponmngr/files/etc/init.d/pon Executable file
View File

@@ -0,0 +1,36 @@
#!/bin/sh /etc/rc.common
START=98
STOP=10
USE_PROCD=1
NAME=ponmngr
PROG="/usr/sbin/omcid start"
include /lib/pon
start_service() {
if [ -f "/etc/config/pon" ]; then
procd_open_instance $NAME
procd_set_param command ${PROG}
procd_set_param respawn
procd_close_instance
start_gpon
fi
}
boot() {
start
}
stop_service() {
service_stop ${PROG}
stop_gpon
}
reload_service() {
stop
start
}

View File

@@ -0,0 +1,27 @@
#!/bin/sh
basemac="$(db -q get hw.board.basemac | tr -d ':')"
if [ -s "/etc/config/pon" ]; then
if uci -q get pon.globals >/dev/null; then
# return if there is any valid content
exit
else
rm -f /etc/config/pon
fi
fi
touch /etc/config/pon
mac=''
if [ -z "$basemac" ]; then
mac="12345678"
else
# read last 8 characters of basemac without :
mac=${basemac: -8}
fi
uci set pon.globals=globals
uci set pon.globals.enabled="1"
uci set pon.globals.serial_number="BRCM$mac"
uci commit pon

View File

@@ -0,0 +1,70 @@
#!/bin/sh
. /lib/functions.sh
. /usr/share/libubox/jshn.sh
configure_snpwd() {
local serial_no password
serial_no="$1"
password="$2"
# serial number comprises of 2 parts, vendor id and vendor specific, the vendor id is
# a string while the vendor specific is a hex, so split the 2 and set accordingly
local vendor_id vendor_specific
vendor_id=${serial_no:0:4}
vendor_specific=${serial_no: -8}
# attempt to conver vendor_id from string to hex
vendor_id=$(echo $vendor_id | hexdump -e '4/1 "%02X" "\n"')
vendor_id=${vendor_id:0:8}
bdmf_shell -c `cat /var/bdmf_sh_id` -cmd /b/configure gpon onu_sn={vendor_id=$vendor_id,vendor_specific=$vendor_specific}
if [ -n "$password" ]; then
password=$(echo $password | hexdump -n ${#password} -e '16/1 "%02X""\n"')
bdmf_shell -c `cat /var/bdmf_sh_id` -cmd /b/configure gpon password=$password
fi
}
configure_gpon() {
local enabled serial_no password
config_load pon
config_get enabled globals "enabled"
if [ "$enabled" == "0" ]; then
exit
fi
config_get serial_no globals "serial_number"
config_get password globals "password"
configure_snpwd $serial_no $password
}
start_gpon() {
if [ -n "$(which gponctl)" ]; then
configure_gpon
gponctl start
fi
}
stop_gpon() {
if [ -n "$(which gponctl)" ]; then
gponctl stop
fi
}
get_gpon_status() {
json_init
status="$(gponctl getstate)"
admin_status="$(echo $status | head -n1 | awk '{print $8;}')"
json_add_string "admin_status" "$admin_status"
op_status="$(echo $status | head -n1 | awk '{print $12;}')"
case $op_status in
NUMBER)
op_status="$(echo $status | head -n1 | awk '{print $13;}')"
;;
esac
op_status=${op_status:1:2}
json_add_string "operational_status" "$op_status"
json_dump
}

View File

@@ -0,0 +1,19 @@
#!/bin/sh
. /usr/share/libubox/jshn.sh
. /lib/functions.sh
include /lib/pon
case "$1" in
list)
echo '{ "status": {} }'
;;
call)
case "$2" in
status)
get_gpon_status
;;
esac
;;
esac

View File

@@ -1,19 +1,9 @@
#!/bin/sh
. /lib/network/utils.sh
populate_config_from_db() {
. /lib/network/utils.sh
populate_config(){
if [ -s "/etc/config/ports" ]; then
if uci -q get ports.@ethport[0] >/dev/null; then
# return if there is any valid content
return 0
else
rm -f /etc/config/ports
fi
fi
touch /etc/config/ports
local portorder="$(db -q get hw.board.ethernetPortOrder)"
portorder="$(db -q get hw.board.ethernetPortOrder)"
for port in $portorder; do
uci add ports ethport
uci rename ports.@ethport[-1]="$(get_port_name $port)"
@@ -35,4 +25,44 @@ populate_config(){
uci commit ports
}
[ -f /sbin/db -a -f /etc/board-db/config/hw ] && populate_config
populate_config_from_device_tree() {
for port in $(find /proc/device-tree/ -name "port@*"); do
port="$(cat $port/label)"
[ -n "$port" ] || continue
[ "$port" = "cpu" ] && continue
PORT="$(echo $port | tr '[a-z]' '[A-Z]')"
uci add ports ethport
uci rename ports.@ethport[-1]="$PORT"
uci set ports.@ethport[-1].enabled=1
uci set ports.@ethport[-1].name="$PORT"
uci set ports.@ethport[-1].ifname="$port"
uci set ports.@ethport[-1].speed=1000
uci set ports.@ethport[-1].duplex="full"
uci set ports.@ethport[-1].autoneg=1
uci set ports.@ethport[-1].eee=0
if [ "$port" = "wan" ]; then
uci set ports.@ethport[-1].pause=1
uci set ports.@ethport[-1].uplink=1
else
uci set ports.@ethport[-1].pause=0
fi
done
uci commit ports
}
if [ -s "/etc/config/ports" ]; then
if uci -q get ports.@ethport[0] >/dev/null; then
# exit if there is any valid content
exit 0
else
rm -f /etc/config/ports
fi
fi
touch /etc/config/ports
if [ -f /sbin/db ] && [ -f /etc/board-db/config/hw ]; then
populate_config_from_db
elif [ -d /proc/device-tree/ ]; then
populate_config_from_device_tree
fi

View File

@@ -6,12 +6,12 @@ include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=qosmngr
PKG_VERSION:=1.0.2
PKG_VERSION:=1.0.4
LOCAL_DEV:=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=460327011d932580f55c7b70acb1e652dd3c95a3
PKG_SOURCE_VERSION:=e3d608e4bacd367fed99bcdd7f56b3fba7b02891
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/qosmngr.git
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_MIRROR_HASH:=skip

View File

@@ -21,6 +21,10 @@ generate_queue(){
case $cpu_model in
68*) no_of_q="0 1 2 3" ;;
esac
if grep -qE '[0-9]+ archer$' /proc/devices; then
no_of_q="0 1 2 3"
fi
fi
i=0

View File

@@ -327,6 +327,15 @@ broute_filter_on_ether_type() {
BR_RULE="$BR_RULE --proto $1"
}
broute_filter_on_dscp() {
# The broadcom option --ip-dscp-extend actually accepts tos
# and not dscp and that too in hex, hence, perform the conversion
# from dscp in uci to tos first and then convert to hex
tos_val=$(($1<<2))
tos_hex=$(printf "%x" $tos_val)
BR_RULE="$BR_RULE --ip-dscp-extend $tos_hex"
}
broute_filter_on_vid() {
case "$BR_RULE" in
*proto*)
@@ -357,6 +366,7 @@ handle_ebtables_rules() {
config_get src_if "$sid" "ifname"
config_get src_mac "$sid" "src_mac"
config_get dst_mac "$sid" "dst_mac"
config_get dscp_filter "$sid" "dscp_filter"
config_get pcp_check "$sid" "pcp_check"
config_get eth_type "$sid" "ethertype"
config_get vid "$sid" "vid_check"
@@ -395,6 +405,13 @@ handle_ebtables_rules() {
is_l2_rule=1
fi
if [ -n "$dscp_filter" ]; then
# filter on ethertype and proto is same thing
broute_filter_on_ether_type IPv4
broute_filter_on_dscp $dscp_filter
is_l2_rule=1
fi
if [ -n "$eth_type" ]; then
broute_filter_on_ether_type $eth_type
is_l2_rule=1
@@ -825,7 +842,7 @@ configure_classify() {
fcctl flush
}
configure_queue() {
pre_configure_queue() {
# Delete queues
rm -rf /tmp/qos/queue_stats
@@ -845,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
@@ -896,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
@@ -915,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

@@ -6,9 +6,9 @@ include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=questd
PKG_VERSION:=5.2.2
PKG_VERSION:=5.2.3
PKG_SOURCE_VERSION:=cd05311b505cc5025a8559c616b55e9fb4d1857d
PKG_SOURCE_VERSION:=cf54bd65ec821ac67f3aa1caeebcd3ea9aae07ad
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/questd

View File

@@ -5,14 +5,14 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=rulengd
PKG_VERSION:=1.2.4
PKG_VERSION:=1.2.6
PKG_RELEASE:=1
PKG_BUILD_PARALLEL:=1
PKG_INSTALL:=1
PKG_SOURCE_PROTO=git
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/rulengd.git
PKG_SOURCE_VERSION:=070a9778c2511a6f52a15904e29350aed69abdac
PKG_SOURCE_VERSION:=e323bebe85cd7fb4eeb6cee535188227bc9b81e3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_MIRROR_HASH:=skip
PKG_SOURCE_SUBDIR:=${PKG_NAME}-${PKG_VERSION}

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.21
PKG_VERSION:=0.2.29
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/sulu.git
PKG_SOURCE_VERSION:=1cb1723f36718997968e923732fd6327a354689a
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'

9
swmodd/Config.in Normal file
View File

@@ -0,0 +1,9 @@
if PACKAGE_swmodd
menu "Configuration"
config SWMOD_HOST_IS_EXECENV
bool "Enable host system as execution environment"
default n
endmenu
endif

View File

@@ -6,12 +6,12 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=swmodd
PKG_VERSION:=2.0.15
PKG_VERSION:=2.0.21
LOCAL_DEV:=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=39e711d51eed6d6268b18011cf7c40fc71eb332e
PKG_SOURCE_VERSION:=78b54d0ed0223a9787133597d3beaa5e97d97520
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/swmodd.git
PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_VERSION).tar.gz
PKG_MIRROR_HASH:=skip
@@ -35,6 +35,10 @@ define Package/swmodd/description
Software module daemon to manage software/deployment units using TR181 datamodel.
endef
define Package/swmodd/config
source "$(SOURCE)/Config.in"
endef
TARGET_CFLAGS += \
-I$(STAGING_DIR)/usr/include \
-D_GNU_SOURCE
@@ -44,6 +48,11 @@ MAKE_FLAGS += \
SWMOD_LXC="yes"
endif
ifeq ($(CONFIG_SWMOD_HOST_IS_EXECENV),y)
MAKE_FLAGS += \
SWMOD_HOST_IS_EXECENV="yes"
endif
ifeq ($(LOCAL_DEV),1)
define Build/Prepare
$(CP) -rf ~/git/swmodd/* $(PKG_BUILD_DIR)/

View File

@@ -8,17 +8,19 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=twamp
PKG_VERSION:=1.0.1
PKG_VERSION:=1.1.0
PKG_SOURCE_VERSION:=dbddaa0c4d826dfdf37bb92f98a2b2ad23035ca3
LOCAL_DEV:=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/twamp.git
PKG_SOURCE_VERSION:=a0f7355afea41dbafd443d119cb394e038e70dc6
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_MIRROR_HASH:=skip
endif
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
PKG_LICENSE:=GPL-2.0-only
PKG_LICENSE_FILES:=LICENSE
@@ -28,23 +30,36 @@ define Package/$(PKG_NAME)
SECTION:=utils
CATEGORY:=Utilities
SUBMENU:=TRx69
TITLE:=BBF twamp feature
DEPENDS:=+libuci +libbbf_api
TITLE:=BBF TWAMP/TWAMP Light feature
DEPENDS:=+libuci +libbbf_api +ubox +libubus
endef
define Package/$(PKG_NAME)/description
BBF twamp feature
BBF TWAMP/TWAMP Light feature
endef
TARGET_CFLAGS += \
-D_GNU_SOURCE
ifeq ($(LOCAL_DEV),1)
define Build/Prepare
$(CP) -rf ~/git/twamp/* $(PKG_BUILD_DIR)/
endef
endif
define Package/$(PKG_NAME)/install
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_DIR) $(1)/usr/lib/bbfdm
$(INSTALL_DIR) $(1)/etc/uci-defaults
$(INSTALL_DIR) $(1)/etc/config
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) $(PKG_BUILD_DIR)/twampd $(1)/usr/sbin/
$(INSTALL_DIR) $(1)/usr/lib/bbfdm
$(INSTALL_BIN) $(PKG_BUILD_DIR)/*.so $(1)/usr/lib/bbfdm
$(CP) ./files/* $(1)/
$(INSTALL_BIN) $(PKG_BUILD_DIR)/libtwamp.so $(1)/usr/lib/bbfdm/libtwamp.so
$(INSTALL_DATA) ./files/etc/config/twamp $(1)/etc/config/twamp
$(INSTALL_BIN) ./files/etc/init.d/twampd $(1)/etc/init.d/twampd
$(INSTALL_BIN) ./files/etc/firewall.twamp $(1)/etc/firewall.twamp
$(INSTALL_BIN) ./files/etc/uci-defaults/92-twampfirewall $(1)/etc/uci-defaults/92-twampfirewall
endef
$(eval $(call BuildPackage,$(PKG_NAME)))

View File

@@ -1,13 +1,13 @@
config twamp 'twamp'
option id '1'
option enable '1'
option twamp_light '1'
#Log levels: Critical=0, Warning=1, Notice=2, Info=3, Debug=4
option log_level '3'
config twamp_reflector
option id '1'
config twamp_reflector 'reflector_1'
option enable '0'
option interface 'lan'
option interface 'wan'
option port '862'
option max_ttl '1'

View File

@@ -0,0 +1,31 @@
#!/bin/sh
. /lib/functions.sh
#created by the icwmp package
log() {
echo "${@}"|logger -t firewall.twamp -p info
}
if [ ! -f "/etc/config/twamp" ]; then
exit 0;
fi
function configure_firewall()
{
local enable port interface
config_get enable ${1} enable "0"
config_get port ${1} port
config_get interface ${1} interface
if [ "$enable" -eq 0 -o -z "${port}" -o -z "${interface}" ]; then
return 0;
fi
iptables -w 1 -nL zone_${interface}_input 2>/dev/null 1>&2
if [ "$?" -eq 0 ]; then
iptables -w 1 -I zone_${interface}_input -p udp --dport "${port}" -j ACCEPT -m comment --comment "TWAMP reflector port"
fi
}
config_load twamp
config_foreach configure_firewall twamp_reflector

View File

@@ -1,7 +1,7 @@
#!/bin/sh /etc/rc.common
#TWAMP Reflector software
# Copyright (C) 2020 iopsys Software Solutions AB
#Author: Amin Ben Ramdhane <amin.benramdhane@pivasoftware.com>
# TWAMP Reflector software
# Copyright (C) 2020-2022 IOPSYS Software Solutions AB
# Author: Amin Ben Ramdhane <amin.benramdhane@pivasoftware.com>
START=99
STOP=10
@@ -10,45 +10,18 @@ USE_PROCD=1
PROG="/usr/sbin/twampd"
start_service() {
local id=`uci -q get twamp.twamp.id`
local connection=`uci show twamp | grep "twamp.@twamp_reflector.*id=\'$id\'" | cut -d "." -f 2`
local enable=`uci -q get twamp.$connection.enable`
local interface=`uci -q get twamp.$connection.interface`
local port=`uci -q get twamp.$connection.port`
local port_list=`uci -q get twamp.$connection.port_list`
port_list=`echo $port_list | tr "," " "`
local enable=`uci -q get twamp.twamp.enable`
if [ "$enable" = "1" ]; then
if [ $interface = "wan" ]; then
for str in $port_list; do
if [ "${str/-}" != "$str" ] ; then
str=`echo $str | tr "-" ":"`
fi
iptables -I zone_wan_input -p udp --dport "$str" -j ACCEPT -m comment --comment "Open UDP allowed port"
iptables -I zone_wan_input -p tcp --dport "$port" -j ACCEPT -m comment --comment "Open TCP allowed port"
done
fi
procd_open_instance
procd_set_param command "$PROG"
procd_set_param respawn "3" "7" "0"
procd_close_instance
else
if [ $interface = "wan" ]; then
if [ "${str/-}" != "$str" ] ; then
str=`echo $str | tr "-" ":"`
fi
iptables -I zone_wan_input -p udp --dport "$str" -j REJECT -m comment --comment "Close UDP allowed port"
iptables -I zone_wan_input -p tcp --dport "$port" -j REJECT -m comment --comment "Close TCP allowed port"
fi
fi
}
boot() {
start
}
reload_service() {
stop
start
stop
start
}
service_triggers() {

View File

@@ -0,0 +1,12 @@
#!/bin/sh
uci -q batch <<-EOT
delete firewall.twamp
set firewall.twamp=include
set firewall.twamp.path=/etc/firewall.twamp
set firewall.twamp.reload=1
commit firewall
EOT
exit 0

View File

@@ -18,9 +18,12 @@ PKG_SOURCE_PROTO:=git
ifdef CONFIG_TARGET_intel_mips
PKG_SOURCE_URL:=https://dev.iopsys.eu/intel/uboot.git
PKG_SOURCE_VERSION:=feed838bd1bfeeb57a9afb93b4d704971f423d92
else ifdef CONFIG_TARGET_iopsys_econet
PKG_SOURCE_URL:=https://dev.iopsys.eu/ensemble/u-boot.git
PKG_SOURCE_VERSION:=1b320f0656bfc8504fa4f771dd77d8e403ed00e0
else
PKG_SOURCE_URL:=https://dev.iopsys.eu/fork/uboot.git
PKG_SOURCE_VERSION:=670ad7a30f3c6871b6c8a972e19ca2dd78ea8c9b
PKG_SOURCE_VERSION:=826af23a7723ee05dc9bc023d12a83f44aa649f4
endif
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
@@ -55,6 +58,13 @@ define uboot/ex400
PKG_RELEASE:=7
endef
define uboot/en7562
TITLE:=U-Boot for the en7562
CONFIG:=econet-en7562-ram
DEPENDS:=@TARGET_iopsys_econet
UBOOT_IMG:=u-boot-nand.bin
endef
define uboot/sdx810_ap
TITLE:=U-Boot for the sdx810_ap
DEPENDS:=@TARGET_iopsys_ramips
@@ -85,6 +95,7 @@ endef
UBOOTS := \
ex400 \
en7562 \
sdx810_ap \
grx500 \
grx500_speedport_smart3 \

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)))

View File

@@ -5,12 +5,12 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=uspd
PKG_VERSION:=2.1.39
PKG_VERSION:=2.1.43
LOCAL_DEV:=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=718d0b24529d94b7bec09b6ffc6c3f84073d7bde
PKG_SOURCE_VERSION:=c5c9a2675b29ae38d339f44099db30e5f22a278b
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

@@ -1,4 +1,4 @@
if (PACKAGE_wfadatad)
if PACKAGE_wfadatad || PACKAGE_wfadatad-collector
menu "configurations"
config WFA_DELM_STANDALONE

View File

@@ -5,10 +5,10 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=wfadatad
PKG_VERSION:=6.10.0
PKG_VERSION:=6.10.13
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=74aa2efe7f3f835e02cab1f8965afabd918b1477
PKG_SOURCE_VERSION:=1c4ff6177f7eef969293d6847454ffcdc41deaed
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/wfadatad.git
PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_VERSION).tar.gz
PKG_MIRROR_HASH:=skip
@@ -17,9 +17,6 @@ PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
PKG_LICENSE:=PROPRIETARY IOPSYS
PKG_LICENSE_FILES:=LICENSE
PKG_BUILD_DEPENDS:=map-plugin
include $(INCLUDE_DIR)/package.mk
define Package/wfadatad
@@ -63,12 +60,19 @@ TARGET_CFLAGS += \
MAKE_PATH:=src
EXECS := \
$(if $(CONFIG_PACKAGE_wfadatad),agent/deagent) \
$(if $(CONFIG_PACKAGE_wfadatad-collector),collector/decollector)
MAKE_FLAGS += EXECS="$(EXECS)"
define Package/wfadatad/install
ifeq ($(CONFIG_WFA_DELM_STANDALONE),y)
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) ./files/wfadatad.init $(1)/etc/init.d/
$(INSTALL_BIN) ./files/deagent.init $(1)/etc/init.d/deagent
$(INSTALL_BIN) $(PKG_BUILD_DIR)/src/agent/deagent $(1)/usr/sbin/
else
$(INSTALL_DIR) $(1)/usr/lib/map-plugins
@@ -81,7 +85,7 @@ define Package/wfadatad-collector/install
ifeq ($(CONFIG_WFA_DELM_STANDALONE),y)
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) ./files/wfadatad.collector.init $(1)/etc/init.d/
$(INSTALL_BIN) ./files/decollector.init $(1)/etc/init.d/decollector
$(INSTALL_BIN) $(PKG_BUILD_DIR)/src/collector/decollector $(1)/usr/sbin/
else
$(INSTALL_DIR) $(1)/usr/lib/map-plugins

View File

@@ -15,7 +15,7 @@ start_service() {
procd_set_param command "$PROG" "-d" "-t 10"
#procd_set_param stdout 1
#procd_set_param stderr 1
#procd_set_param respawn
procd_set_param respawn
procd_close_instance
}

View File

@@ -23,6 +23,7 @@ start_service() {
procd_set_param command "$PROG" "-d"
#procd_set_param stdout 1
#procd_set_param stderr 1
procd_set_param respawn
procd_close_instance
}
}

View File

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

View File

@@ -1,6 +1,9 @@
#!/bin/sh
. /lib/functions.sh
. /usr/share/libubox/jshn.sh
MAPFILE="/tmp/multiap.backhaul"
wifi_onoff() {
local devices="$(uci show wireless | grep '=wifi-device' | awk -F'[.,=]' '{print$2}')"
@@ -30,6 +33,7 @@ start_ap_wps() {
supp_status() {
wpasupp=$1
ul_type=""
ifname="$(echo $wpasupp | cut -d . -f 2)"
@@ -57,7 +61,14 @@ supp_status() {
return
fi
if [ -f "/tmp/map.agent.bsta_global_disable" ]; then
if [ -f $MAPFILE ]; then
# check if uplink is eth
json_load "$(cat $MAPFILE)"
json_get_var ul_type "type"
json_cleanup
fi
if [ "$ul_type" = "eth" ]; then
echo "CONFIGURED"
return
fi
@@ -88,7 +99,7 @@ supp_wps() {
for wpa in $wpasupp
do
logger -t button "WPS $wpa start"
ubus -t 1 call $wpa wps_start
ubus -t 1 call $wpa wps_start '{"multi_ap":true}'
done
}