Compare commits

...

401 Commits

Author SHA1 Message Date
Shubham Sharma
0e37efb913 [WIP] : fix for bug 4323 2021-02-10 11:54:20 +05:30
Amin Ben Ramdhane
3e07e3cd0d bbf: Correct UCI mapping for NAT.PortMapping object 2021-02-09 21:56:47 +01:00
Amin Ben Ramdhane
c6be1e0c6b bbf: 3.5.9 2021-02-09 15:55:50 +01:00
Jakob Olsson
606e8e4518 map-agent: 3.4.2 2021-02-09 12:25:12 +01:00
Jakob Olsson
4aaf074694 map-controller: 2.3.1 2021-02-09 12:24:33 +01:00
Sukru Senli
b3716a9f42 iop: generate rootfs tar file 2021-02-09 11:05:34 +01:00
Omar Kallel
bfdb9eda4f icwmp: 6.4.6-2021-02-09 2021-02-09 10:12:35 +01:00
Amin Ben Ramdhane
3a92a09f66 bbf: 3.5.8 2021-02-08 22:54:59 +01:00
Omar Kallel
78a07d7719 icwmp: 6.4.5-2021-02-08 2021-02-08 19:06:10 +01:00
Omar Kallel
255d5ea39e icwmp: 6.4.4-2021-01-08 2021-02-08 16:23:55 +01:00
Amin Ben Ramdhane
d50a164af7 bbf: 3.5.7 2021-02-06 22:28:01 +01:00
Erik Karlsson
5d6c215f23 port-management: Fix failing uci-defaults script
Remove leftover debug printout that was causing uci-defaults script to
fail at first boot due populate_config() returning non-zero.
2021-02-06 10:08:44 +00:00
Jakob Olsson
4de73e9cb0 map-agent: 3.4.1 2021-02-05 11:25:23 +01:00
Amin Ben Ramdhane
bfee02596a bbf: 3.5.6 2021-02-04 22:33:00 +01:00
Jakob Olsson
f52a5fb870 map-controller: add libeasy dependency 2021-02-04 17:21:56 +01:00
Jakob Olsson
4ec5d4ca03 map-agent: add libeasy dependency 2021-02-04 17:21:41 +01:00
Jakob Olsson
fbdfe7493a map-agent: 3.4.0 2021-02-04 16:54:14 +01:00
Jakob Olsson
495dec638a map-controller: 2.3.0 2021-02-04 16:50:28 +01:00
Jakob Olsson
32e44b7b5e map-agent: 3.3.1 2021-02-04 13:53:35 +01:00
Jakob Olsson
21d30f18a7 map-controller: 2.2.2 2021-02-04 13:51:23 +01:00
Jakob Olsson
2617f831a2 ieee1905: 2.1.37 2021-02-04 13:47:17 +01:00
vdutta
130d8c243e obuspa: Publish agent endpointid in local broker 2021-02-04 15:00:28 +05:30
Amin Ben Ramdhane
e4494f9958 bbf: 3.5.5 2021-02-03 21:33:03 +01:00
Jakob Olsson
40228bda04 map-controller: 2.2.1 2021-02-03 13:56:20 +01:00
Anjan Chanda
27e0257e6a wifimngr: 8.5.5 2021-02-02 21:07:47 +01:00
Anjan Chanda
4e812c4e18 easy-soc-libs: 6.1.20 2021-02-02 21:07:10 +01:00
Jakob Olsson
1d6b8e3271 ieee1905: 2.1.36 2021-02-02 16:42:12 +01:00
Amin Ben Ramdhane
8f718e80fd bbf: 3.5.4 2021-02-02 15:08:32 +01:00
Jakob Olsson
6baa72c846 map-agent: 3.3.0 2021-02-02 14:16:54 +01:00
Jakob Olsson
779c964b3f map-controller: 2.2.0 2021-02-02 14:16:05 +01:00
Amin Ben Ramdhane
d120f2e63d bbf: fix a crash in Bridging object 2021-02-01 19:59:18 +01:00
Amin Ben Ramdhane
bc2e7077ec bbf: 3.5.2 2021-02-01 16:00:16 +01:00
Anjan Chanda
924eb2e39c wifimngr: 8.5.3 2021-02-01 15:57:43 +01:00
Anjan Chanda
64ce9b009f easy-soc-libs: 6.1.18 2021-01-29 20:35:44 +01:00
Sukru Senli
50c6a07027 icwmp: remove notify command from init script 2021-01-29 20:20:34 +01:00
Markus Gothe
ac02982008 RM#27829 - RMON statistics not received on request
Everytime we change the target we need to make sure
that easy-soc-libs are rebuilt since different
targets have different definitions of the
structs.

Change-Id: Id973dea4ddb5ffe4e48837650fff56dc67292b8d
2021-01-28 19:33:02 +00:00
jjoseph
69c9f88730 Update package ethmngr : source version 2021-01-28 23:28:56 +05:30
Markus Gothe
cb5c1979e6 gryphon-led-module: add get/set brightness
To be able to dim the LED from user-space
we need to export an API. This is done
like we currently do for setting the color,
a file which handles hexadecimal numbers.

Change-Id: I4636d16e24cdae38ccd6b501e41f71ce7012dbad
2021-01-28 17:05:53 +00:00
Amin Ben Ramdhane
20d31ec7c6 bbf: 3.5.1 2021-01-28 16:54:22 +01:00
Anjan Chanda
f5b8fbb033 easy-soc-libs: 6.1.15 2021-01-28 13:36:56 +01:00
Yalu Zhang
5e01100d14 Update package dectmngr
Handle events CMBS_EV_DSR_TARGET_UP and CMBS_EV_DSR_RECONNECT_REQ properly
2021-01-27 18:33:02 +01:00
vdutta
748e2500f6 obuspa: Reload when schema update available 2021-01-27 19:39:16 +05:30
Yalu Zhang
dc5001c949 Update package dectmngr
Add the callback function for event CMBS_EV_DSR_CORD_CLOSEREG
2021-01-27 14:57:39 +01:00
vdutta
b84fb8e456 uspd: Notify schema updates on usp.raw object 2021-01-27 19:12:28 +05:30
Yalu Zhang
6bbf691df1 Update package dectmngr: disable checksum 2021-01-27 12:18:16 +01:00
jjoseph
ff6fcd8438 Updating package source version 2021-01-27 14:00:49 +05:30
Amin Ben Ramdhane
d454e5eb38 bbf: 3.5.0 2021-01-26 19:03:07 +01:00
Yalu Zhang
9cfeee53e9 Update package dectmngr
Also improve /etc/init.d/dect for service stop
2021-01-26 11:03:20 +01:00
Amin Ben Ramdhane
2b8c0a26ae bbf: 3.4.9 2021-01-25 19:39:18 +01:00
Janusz Dziedzic
d752678875 easy-soc-libs: install qos.h file 2021-01-25 17:02:37 +01:00
Janusz Dziedzic
6df6762cd7 easy-soc-libs: use brcm sdk headers 2021-01-25 13:09:23 +01:00
Anjan Chanda
40d4f72784 easy-soc-libs: refactor package Makefiles 2021-01-25 11:56:59 +01:00
Amin Ben Ramdhane
b7cd1f15f9 bbf: wifi: add support for WPA3 security modes 2021-01-25 09:57:07 +01:00
vdutta
ff2ae72bd2 obuspa: Improve refresh instances logic 2021-01-24 20:22:57 +05:30
Jakob Olsson
93180ac277 easy-soc-libs: 6.1.14 2021-01-22 19:32:34 +01:00
Jakob Olsson
84831d3d95 map-agent: 3.2.3 2021-01-22 17:56:42 +01:00
Jakob Olsson
09de34b98a map-agent: 3.2.2 2021-01-22 14:56:44 +01:00
Sukru Senli
7da60b67cc bbf: 3.4.7
add Device.Firewall.Chain.{i}.Rule.{i}.Log parameter support
2021-01-22 13:51:33 +01:00
Jakob Olsson
ce5541aef8 map-controller: init.d: don't start if enabled is explicitly set to 0 2021-01-22 11:27:01 +01:00
Jakob Olsson
4b564df4c0 map-agent: init.d: don't start if enabled is explicitly set to 0 2021-01-22 11:26:38 +01:00
Amin Ben Ramdhane
5e6580ccf2 bbf: 3.4.6 2021-01-21 21:32:48 +01:00
Anjan Chanda
15a055ffdd ethmngr: 2.0.1 2021-01-21 17:04:09 +01:00
Jakob Olsson
e68fac5e9b map-agent: 3.2.1 2021-01-21 16:33:21 +01:00
Jakob Olsson
df82765a3b map-controller: 2.1.0 2021-01-21 16:16:21 +01:00
Jakob Olsson
f9070e4c3f map-agent: 3.2.0 2021-01-21 14:17:16 +01:00
Anjan Chanda
9d94b7d594 wifimngr: 8.5.2 2021-01-21 12:06:43 +01:00
Anjan Chanda
d1ed021a04 easy-soc-libs: 6.1.13 2021-01-21 12:05:26 +01:00
Sukru Senli
9987882a1c inbd: 1.2.1 2021-01-21 11:12:47 +01:00
Amin Ben Ramdhane
83b6fb7330 bbf: fix crash when adding a static route 2021-01-20 22:00:53 +01:00
Amin Ben Ramdhane
8c3d54ff7d bbf: 3.4.3 2021-01-20 20:50:57 +01:00
Sukru Senli
4e78d1c075 wfadata: get controller enabled option from correct section 2021-01-20 18:50:54 +01:00
Jakob Olsson
2109e5ff4f map-controller: 2.0.7 2021-01-20 17:23:19 +01:00
Jakob Olsson
e417f30841 map-agent: 3.1.14 2021-01-20 17:21:14 +01:00
Jakob Olsson
6610f42769 map-controller: 3.1.13 2021-01-20 14:39:21 +01:00
Jakob Olsson
81cdd1a9ea map-controller: 2.0.6 2021-01-20 14:36:47 +01:00
Jakob Olsson
d69061f95e ieee1905: 3.1.35 2021-01-20 14:33:46 +01:00
Omar Kallel
7f757e9291 icwmp: 6.4.3-2021-01-20 2021-01-20 14:17:32 +01:00
Yalu Zhang
5c4719c6e4 Update package dectmngr
Solves the issue that incoming calls were released by CMBS
2021-01-20 11:07:55 +01:00
Omar Kallel
0ea0df8b82 icwmp: 6.4.2-2021-01-20 2021-01-20 10:10:02 +01:00
Omar Kallel
2dceba94a8 icwmp: 6.4.1-2021-01-19 2021-01-19 17:29:07 +01:00
Anjan Chanda
f34380326f wfadatad: 3.1.0 2021-01-19 16:36:09 +01:00
Anjan Chanda
547a976981 wifimngr: 8.5.0 2021-01-18 17:31:39 +01:00
Anjan Chanda
116d6370ca easy-soc-libs: 6.1.4 2021-01-18 17:29:01 +01:00
Jakob Olsson
6024f034ea map-agent: 3.1.12 2021-01-18 13:01:00 +01:00
Amin Ben Ramdhane
4fb8ec2016 bbf: 3.4.2 2021-01-17 18:55:35 +01:00
Amin Ben Ramdhane
5dfa4996a6 bbf: 3.4.1 2021-01-15 17:49:08 +01:00
Jakob Olsson
eaf990c616 ieee1905: 2.1.34 2021-01-15 15:41:43 +01:00
Jakob Olsson
d6cf5b6dfe ieee1905: 2.1.33 2021-01-15 15:34:42 +01:00
Jakob Olsson
03c62cd618 Revert "ieee1905: 2.1.33"
This reverts commit ba0e921101.
2021-01-15 15:33:53 +01:00
Jakob Olsson
ba0e921101 ieee1905: 2.1.33 2021-01-15 15:25:04 +01:00
Jakob Olsson
8428773a9c map-agent: 3.1.11 2021-01-15 13:58:15 +01:00
Amin Ben Ramdhane
0c33f36c88 bbf: 3.4.0 2021-01-14 21:22:56 +01:00
Amin Ben Ramdhane
1c2b381072 bbf: fix the crash on startup 2021-01-13 18:36:01 +01:00
vdutta
4482e7defd uspd: Change startup sequence 2021-01-13 19:44:50 +05:30
Amin Ben Ramdhane
3740560fd3 bbf: 3.3.8 2021-01-12 22:58:30 +01:00
Yalu Zhang
e4cea887e2 Update package: dectmngr 2021-01-12 18:16:29 +01:00
Yalu Zhang
4e42c07257 endptmngr: replace ubus call uci with libuci API calls directly 2021-01-12 18:15:00 +01:00
Jakob Olsson
26e48a7b83 map-agent: 3.1.10 2021-01-12 17:08:09 +01:00
Jakob Olsson
105dab05d2 map-agent: 2.0.5 2021-01-12 16:12:36 +01:00
Jakob Olsson
40e062550b map-agent: 3.1.9 2021-01-12 16:11:34 +01:00
Jani Juvan
7bc068c0c6 Update feed [ iopsys ] package [ dslmngr ]
-------------------------------------------------------------------------------
* 1fa1cee Merge branch 'jani-vendor_id' into 'devel'
* 698eb79 added init of oem parameters
-------------------------------------------------------------------------------
commit 1fa1cee62c52c69c321ddf93399fef9483520996
Author: Jani Juvan <jani.juvan@iopsys.eu>
Date: 2021-01-12 10:31:33 +0000

    Merge branch 'jani-vendor_id' into 'devel'

    dslmngr: add init of oem parameters

    See merge request iopsys/dslmngr!3
Base directory -> /
 dslmngr.c | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dslmngr.h |  1 +
 main.c    |  1 +
 3 files changed, 69 insertions(+)
-------------------------------------------------------------------------------
commit 698eb796df310797d7eed7d1d7eb590a9990c66c
Author: Jani Juvan <jani.juvan@iopsys.eu>
Date: 2020-12-18 13:47:20 +0100

    added init of oem parameters

Base directory -> /
 dslmngr.c | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dslmngr.h |  1 +
 main.c    |  1 +
 3 files changed, 69 insertions(+)
-------------------------------------------------------------------------------
2021-01-12 13:42:34 +01:00
Jani Juvan
ae243101f1 Update feed [ iopsys ] package [ easy-soc-libs ]
-------------------------------------------------------------------------------
* 0c6fab5 libdsl: add support to set oem parameters
-------------------------------------------------------------------------------
commit 0c6fab539a15ec4b9bd7e5e8b1e9257ae4f68398
Author: Jani Juvan <jani.juvan@iopsys.eu>
Date: 2020-12-17 16:36:17 +0100

    libdsl: add support to set oem parameters

Base directory -> /
 libdsl/broadcom/bcm_dsl_api.c | 29 +++++++++++++++++++++++++++++
 libdsl/xdsl.h                 | 14 ++++++++++++++
 2 files changed, 43 insertions(+)
-------------------------------------------------------------------------------
2021-01-12 13:42:09 +01:00
Shubham Sharma
613ef10273 qosmngr: C daemon for gathering queue stats 2021-01-12 14:17:06 +05:30
Shubham Sharma
06c2d704a9 easy-soc-libs: libqos with APIs for fetching queue stats 2021-01-12 14:17:06 +05:30
Amin Ben Ramdhane
14f7f0d328 bbf: 3.3.7 2021-01-11 21:15:23 +01:00
Jakob Olsson
a0324b3f5e map-agent: bump version 2021-01-10 16:58:57 +01:00
Jakob Olsson
16a9b07497 map-agent: 3.1.8 2021-01-10 16:56:50 +01:00
Jakob Olsson
7c91b86d01 map-agent: 3.1.7
use if_utils easy API
2021-01-08 20:07:50 +01:00
Anjan Chanda
2076e35808 wfadatad: 3.0.5 2021-01-08 19:33:59 +01:00
Sukru Senli
8f04c3e3b3 iop: config: deselect gplv3 wget from default config 2021-01-08 16:45:07 +01:00
Omar Kallel
76b7d03f5e icwmp: 6.4.0-2021-01-08 2021-01-08 16:29:39 +01:00
Anjan Chanda
c3bf9de599 wifimngr: 8.4.0 2021-01-08 12:27:27 +01:00
Anjan Chanda
a3c0948a46 easy-soc-libs: 6.0.4 2021-01-08 10:46:54 +01:00
Omar Kallel
084995366f icwmp: 6.3.9-2021-01-07
add --anyauth to curl as argument for image download
2021-01-07 21:59:24 +01:00
Jakob Olsson
a2468234cd map-agent: 3.1.6 2021-01-07 17:19:33 +01:00
Sukru Senli
39445eaec0 iop: config: select jq 2021-01-07 14:22:33 +01:00
vdutta
898455ceee uspd: Multiple fixes
- Handle SIGSEGV while access libbbf API
 - Logic improvement for result printing
2021-01-07 16:14:16 +05:30
Jakob Olsson
7a422d4244 map-1905: 0.0.16 2021-01-07 08:57:38 +01:00
Amin Ben Ramdhane
cbc1f3b798 bbf: 3.3.6 2021-01-06 23:04:53 +01:00
Amin Ben Ramdhane
7e1d84b6d6 twamp: fixed a crash
The IP.Interface object has been reworked in ticket 2920 without updating twamp accordingly causing this crash
2021-01-06 22:59:20 +01:00
Omar Kallel
9821c3fbac icwmp: 6.3.8-2021-01-06 2021-01-06 11:37:48 +01:00
Omar Kallel
1eb318b09a icwmp: cleanup 2021-01-05 16:00:38 +01:00
Yalu Zhang
b1e3ef111b Install /etc/init.d/dect 2021-01-05 11:26:56 +01:00
Yalu Zhang
e57d5962d1 Add etc/init.d/dect 2021-01-05 11:18:40 +01:00
Omar Kallel
556cd32a18 icwmp: 6.3.6-2021-01-04 2021-01-04 20:04:06 +01:00
Yalu Zhang
61cf78c264 Add package dectmngr 2021-01-04 17:21:18 +01:00
Jakob Olsson
9dfcb15415 map-agent: 3.1.5 2021-01-04 17:18:48 +01:00
Jakob Olsson
1420241d40 map-controller: 2.0.4 2021-01-04 17:18:11 +01:00
Jakob Olsson
530a4b99bd map-agent: 3.1.4 2021-01-04 16:22:47 +01:00
Amin Ben Ramdhane
21b3284b75 bbf: remove cwmp dependency 2021-01-04 10:31:52 +01:00
Omar Kallel
04d13dc7a4 icwmp: 6.3.5-2021-01-04 2021-01-04 09:07:15 +01:00
Omar Kallel
a290ae71ee icwmp: 6.3.4 04-01-2021 2021-01-04 08:24:13 +01:00
Omar Kallel
d45f42427f icwmp: make diagnostics independent from libbbf and remove libbbf dependency 2020-12-31 18:30:58 +01:00
Amin Ben Ramdhane
a230016663 bbf: 3.3.3 2020-12-30 20:57:45 +01:00
Amin Ben Ramdhane
60314e6a42 bbf: 3.3.2 2020-12-29 14:57:27 +01:00
Sukru Senli
38702b44c4 iop: remove reference to unavailable packages 2020-12-28 13:04:44 +01:00
Sukru Senli
75b9f292a0 natalie-dect-h: remove package 2020-12-28 12:59:23 +01:00
Sukru Senli
2fc567be5d tr098: remove package 2020-12-28 11:04:55 +01:00
Omar Kallel
94db04db83 icwmp: Werror flag 2020-12-24 11:24:10 +01:00
Omar Kallel
d9ae8fac97 icwmp: source enhancements 2020-12-23 19:30:27 +01:00
Amin Ben Ramdhane
34dda55644 bbf: 3.3.1 2020-12-23 17:14:02 +01:00
Amin Ben Ramdhane
a6ee4c8122 bbf: 3.3.0 2020-12-23 16:08:12 +01:00
Amin Ben Ramdhane
368ddf1d31 bbf: 3.2.9 2020-12-23 15:37:12 +01:00
Oussama Ghorbel
bcdc8e5dc0 Update feed [ iopsys ] package [ questd ]
-------------------------------------------------------------------------------
* d554541 added Idle support for processs state
* 5ef2891 Questd network module tests
* 435c348 network: increment max client to 256
-------------------------------------------------------------------------------
commit d554541ac6fb8ef14431fcec9a31dbcb52181279
Author: Oussama Ghorbel <oussama.ghorbel@iopsys.eu>
Date: 2020-12-23 15:17:00 +0100

    added Idle support for processs state

Base directory -> /
 system/system.c | 2 ++
 1 file changed, 2 insertions(+)
-------------------------------------------------------------------------------
commit 5ef2891e3ab55e42a5f84af4f678ec5b8e2d6a17
Author: Ozan Tanfener <ozan.tanfener@iopsys.eu>
Date: 2020-09-18 15:11:56 +0200

    Questd network module tests

Base directory -> /
 .gitignore                                    |   3 +-
 .gitlab-ci.yml                                |  40 +-
 CMakeLists.txt                                |   2 +-
 cmake/modules/FindJSON-EDITOR.cmake           |  35 ++
 docs/api/router.network.md                    | 492 +++++++++++++++
 docs/api/router.system.md                     | 823 ++++++++++++++++++++++++++
 docs/functionspec.md                          |  99 ++++
 docs/testspec.md                              | 210 +++++++
 docs/ubus.splash.md                           |   5 +
 gitlab-ci/functional-api-test.sh              |  23 +
 gitlab-ci/functional-test.sh                  |  19 +
 gitlab-ci/install-dependencies.sh             |  40 ++
 gitlab-ci/iopsys-supervisord.conf             |   8 +
 gitlab-ci/setup.sh                            |  45 ++
 network/network.c                             | 274 ++++-----
 schemas/router.network.json                   | 138 +++++
 schemas/router.system.json                    |  22 +-
 supervisord.conf                              |  11 -
 test/CMakeLists.txt                           |  47 --
 test/api/json/router.network.validation.json  |   9 +
 test/cmocka/CMakeLists.txt                    |  44 ++
 test/{ => cmocka}/db-setup.sh                 |   0
 test/cmocka/files/etc/config/dhcp             |  48 ++
 test/cmocka/files/etc/config/network          |  46 ++
 test/cmocka/files/etc/config/wireless         |  55 ++
 test/cmocka/files/etc/wifi.json               |  13 +
 test/cmocka/files/odhcpd                      |   4 +
 test/cmocka/files/var/dhcp.client.options     |   3 +
 test/cmocka/files/var/dhcp.leases             |   3 +
 test/cmocka/network_tests.c                   | 231 ++++++++
 test/cmocka/network_tests.h                   |  16 +
 test/{system-test.c => cmocka/system_tests.c} |   0
 tools.c                                       |   2 +-
 33 files changed, 2594 insertions(+), 216 deletions(-)
-------------------------------------------------------------------------------
commit 435c34859a36ff09813b19f9f7220db3f08c19af
Author: Sukru Senli <sukru.senli@iopsys.eu>
Date: 2020-09-08 16:28:28 +0200

    network: increment max client to 256

Base directory -> /
 network/network.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
-------------------------------------------------------------------------------
2020-12-23 15:36:17 +01:00
Yalu Zhang
781f3409ad Remove package natalie-dect 2020-12-23 15:02:49 +01:00
Yalu Zhang
4cc72a2dc6 Remove package dectmngr2 2020-12-23 14:49:09 +01:00
Amin Ben Ramdhane
93dee37808 bbf: 3.2.8 2020-12-23 09:53:17 +01:00
Sukru Senli
42bc8f91ce wifimngr: start WPS in client mode correctly 2020-12-22 16:24:07 +01:00
Sukru Senli
5d16f075ab wifimngr: remove extra file 2020-12-22 16:13:00 +01:00
Sukru Senli
841751d7e2 wifimngr: put all files under correct directory and use a temporary wps-monitor script for LED handling 2020-12-22 15:57:02 +01:00
Yalu Zhang
8bc324c3b4 Update feed: endptmngr 2020-12-22 11:20:55 +01:00
Sukru Senli
20287be7e2 obuspa: install hotplug script 2020-12-22 10:27:35 +01:00
Sukru Senli
6d1e026af4 obuspa: do not reload if data changes with ifupdate 2020-12-22 09:52:57 +01:00
Sukru Senli
2cfabc4eb2 obuspa: use hotplug instead of procd interface trigger 2020-12-22 09:43:17 +01:00
Amin Ben Ramdhane
8f0e98f50b bbf: 3.2.7 2020-12-21 21:00:55 +01:00
Amin Ben Ramdhane
d3cf57ef77 swmodd: 1.1.0 2020-12-21 20:58:43 +01:00
Amin Ben Ramdhane
036e27876a icwmp: 6.3.2-2020-12-21 2020-12-21 20:55:23 +01:00
Omar Kallel
69f8fcb047 icwmp: 6.3.1 memleak fixes 2020-12-21 11:27:19 +01:00
Jakob Olsson
c344fbe2ea map-agent: 3.1.3 2020-12-20 11:58:03 +01:00
Jakob Olsson
0a29c12e09 map-controller: 2.0.3: update cfg file name 2020-12-20 10:54:05 +01:00
Jakob Olsson
68ca5f7fb8 map-agent: 3.1.2: update cfg file name 2020-12-20 10:50:09 +01:00
Jakob Olsson
8cb7c61007 map-agent: 3.1.1 2020-12-20 10:15:39 +01:00
Jakob Olsson
61359cb291 map-controller: disable logging by default 2020-12-18 17:39:09 +01:00
Jakob Olsson
4a439783c8 map-agent: disable logging by default 2020-12-18 17:39:09 +01:00
Jakob Olsson
cd1ad2ec7a map-agent: 3.1.0 2020-12-18 17:39:09 +01:00
Jakob Olsson
9a25147997 map-controller: 2.0.2 2020-12-18 17:39:09 +01:00
Jakob Olsson
ad4c0f5cf1 map-agent: 3.0.4 2020-12-18 17:39:09 +01:00
Jakob Olsson
3f6076369f wifimngr: add reload trigger on wireless config 2020-12-18 17:39:09 +01:00
Jakob Olsson
fbc699524a map-1905: 0.0.15 2020-12-18 17:39:09 +01:00
Jakob Olsson
f7c45760da map-controller: 2.0.0 2020-12-18 17:39:05 +01:00
Jakob Olsson
e03c14ae2b map-agent: 3.0.0 2020-12-18 17:16:45 +01:00
Omar Kallel
355e042820 icwmp: Memory leak fix 2020-12-18 13:33:55 +01:00
Amin Ben Ramdhane
53d2088715 bbf: 3.2.6 2020-12-18 11:33:35 +01:00
Sukru Senli
833c97d216 bulkdata: use correct json get api from libbbf 2020-12-18 08:25:24 +01:00
vdutta
59d2324acd obuspa: Added mqtt test in module test 2020-12-18 11:48:59 +05:30
Omar Kallel
e3cb3586d7 icwmp: json enhancements 2020-12-17 18:34:58 +01:00
Omar Kallel
a5e43567b3 icwmp: jsong and segfault Fixes 2020-12-17 17:19:47 +01:00
vdutta
e03568f9b1 obuspa: Added tests 2020-12-17 17:32:01 +05:30
Omar Kallel
ea23e1489c icwmp: make check_value_change independent from bbf 2020-12-17 12:52:47 +01:00
Amin Ben Ramdhane
32db63deb0 bbf: Added support for FAST object 2020-12-17 11:44:13 +01:00
Jani Juvan
5211a49f67 Update feed [ iopsys ] package [ dslmngr ]
-------------------------------------------------------------------------------
* 400cc66 added root object for G.fast
-------------------------------------------------------------------------------
commit 400cc66081f2b10b481d5a745bc505b78af098bd
Author: Jani Juvan <jani.juvan@iopsys.eu>
Date: 2020-12-16 14:39:24 +0100

    added root object for G.fast

Base directory -> /
 dslmngr.c | 137 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 file changed, 128 insertions(+), 9 deletions(-)
-------------------------------------------------------------------------------
2020-12-16 17:31:59 +01:00
Jakob Olsson
907f2fc59b easy-soc-libs: 6.0.2 2020-12-16 15:18:43 +01:00
Omar Kallel
cf8571b217 bbf: enhancements 2020-12-16 11:34:54 +01:00
vdutta
86bab4da22 uspd: Multiple fixes
- Uci Schema updated
- Ubus schema updated
- Config option for sock path
- config option for transaction_timeout
- config option to disable uspd
- Align with latest bbf
- Added tests
2020-12-16 15:53:19 +05:30
Amin Ben Ramdhane
3bdf2ba11b bbf: remove tr064 feature and cleanup 2020-12-16 10:17:41 +01:00
Amin Ben Ramdhane
4ee3a92064 icwmp: Align with latest bbf changes 2020-12-16 10:15:06 +01:00
Amin Ben Ramdhane
f1b4cbc520 bulkdata: Align with latest bbf changes 2020-12-16 10:13:34 +01:00
Omar Kallel
dff5045437 icwmp: use usp.raw methods instead of call ubus swmodules 2020-12-15 19:22:06 +01:00
Anjan Chanda
80a057b727 wifimngr: 8.3.0 2020-12-15 17:18:01 +01:00
Anjan Chanda
84a8afe5da easy-soc-libs: 6.0.1 2020-12-15 17:07:17 +01:00
Omar Kallel
609035d250 icwmp: Move and update some bbf functions to icwmp 2020-12-15 15:32:11 +01:00
Sukru Senli
bb0299fe26 tr064: remove package 2020-12-15 10:19:18 +01:00
vdutta
57f6e54646 obuspa: Updated schema and defaults
- Added interface option in global section
- Rebuild persistent db on uci change
- Updated keep.d with db_file
- Updated uci schema and docs
2020-12-14 16:31:26 +05:30
Sukru Senli
859a2af38e icwmp: temporary upgrade fix 2020-12-13 11:50:38 +01:00
Sukru Senli
477284e1a6 obuspa: add interface trigger and update default config 2020-12-13 07:30:24 +01:00
Omar Kallel
a9d10a8642 bbf: 3.1.1 2020-12-12 15:00:48 +01:00
Rahul
01cf113338 qosmngr: fix regression
Changes to resolve bug #4010 and #4011 are moved to devel as well.

Test: regression run on dg400prime devel, all test pass now
2020-12-12 16:23:58 +05:30
Sukru Senli
7da94735b5 icwmp: temporary fix for image verification
cwmp upgrade still does not work reliably on bcm
2020-12-11 21:40:34 +01:00
vdutta
baccd9ad56 obuspa: Fix log_level error in init script 2020-12-12 00:18:53 +05:30
vdutta
1642841acd obuspa: Added transaction id in transactions 2020-12-11 16:22:45 +05:30
vdutta
c3157ef44e uspd: Enhancement in transaction APIs 2020-12-11 16:15:17 +05:30
Omar Kallel
127f732831 icwmp: transaction_id 2020-12-11 11:32:23 +01:00
vdutta
be91f797dc obsupa: Updated uci for easy setup 2020-12-10 21:04:35 +05:30
vdutta
ae7a3e329f obsupa: Reduce number of groups 2020-12-10 19:43:37 +05:30
Jani Juvan
ef37f8d9c1 Update feed [ iopsys ] package [ easy-soc-libs ]
-------------------------------------------------------------------------------
* db2ced9 libdsl improvements for Broadcom platform
* 6d26413 libwifi: handle radio oper std for only STA iface
* fe5ba89 libwifi: mtk: add single/multi_ap mode
-------------------------------------------------------------------------------
commit db2ced904ddbd6ab936403ae193b2e343845fdf1
Author: Jani Juvan <jani.juvan@iopsys.eu>
Date: 2020-12-10 11:00:40 +0000

    libdsl improvements for Broadcom platform

    - Report supported profiles based on current config in DSL driver
    - Replace deprecated StandardsSupported and StandardUsed with XTSE and
    XTSUsed

Base directory -> /
 libdsl/broadcom/bcm_dsl_api.c | 260 +++++++++++++++++++++++++++++++++---------
 libdsl/xdsl.h                 |   1 +
 2 files changed, 210 insertions(+), 51 deletions(-)
-------------------------------------------------------------------------------
commit 6d26413522242a352715fafc1e9fc62626fc61f9
Author: Marek Puzyniak <marek.puzyniak@iopsys.eu>
Date: 2020-11-27 18:30:47 +0000

    libwifi: handle radio oper std for only STA iface

    Signed-off-by: Marek Puzyniak <marek.puzyniak@iopsys.eu>

Base directory -> /
 libwifi/modules/mtk.c  | 13 ++++++++-----
 libwifi/wpactrl_util.c | 27 ++++++++++++++++-----------
 libwifi/wpactrl_util.h |  1 +
 3 files changed, 25 insertions(+), 16 deletions(-)
-------------------------------------------------------------------------------
commit fe5ba89b8479ba5574fe8cf6e38904125f6aa9fb
Author: Bartlomiej Grzeskowiak <bartlomiej.grzeskowiak@iopsys.eu>
Date: 2020-11-30 18:32:43 +0100

    libwifi: mtk: add single/multi_ap mode

    Extend wifi API with wps multi_ap parameter.

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

Base directory -> /
 libwifi/wifi.h         | 9 +++++----
 libwifi/wpactrl_util.c | 2 +-
 2 files changed, 6 insertions(+), 5 deletions(-)
-------------------------------------------------------------------------------
2020-12-10 12:17:45 +01:00
vdutta
07ca78f548 uspd: Multiple fixes
- Initialise and commit dmmap on startup
- Fix transaction_ api related issues
- Configure socket buf size as per blob len
- Added option to register with named ubus sockets
- list_notify: Added method to list notification params
- Fix usp.raw schema and tests
2020-12-09 18:21:52 +05:30
Amin Ben Ramdhane
10a11f0cb8 BulkData & XMPP & TWAMP: align with latest bbf changes 2020-12-07 22:47:29 +01:00
Amin Ben Ramdhane
4c11cdac89 bbf: 3.1.0 2020-12-07 22:45:13 +01:00
Omar Kallel
8b51e8c03b icwmp: fix transactions 2020-12-07 16:19:12 +01:00
Sukru Senli
2d9f03d6ab iop: select mosquitto packages 2020-12-07 15:47:41 +01:00
Amin Ben Ramdhane
e19674ea70 Align BulkData & XMPP & TWAMP with latest bbf changes 2020-12-06 22:49:29 +01:00
Amin Ben Ramdhane
0af09b123c bbf: improve and cleanup the code 2020-12-06 22:47:40 +01:00
Amin Ben Ramdhane
6e6f7289ad bbf: init context before commit cwmp changes 2020-12-04 14:43:22 +01:00
Jakob Olsson
25f6109691 ieee1905: 2.1.32 2020-12-04 14:32:15 +01:00
Amin Ben Ramdhane
7e0fe946cd bbf: Multiple fixes in DHCPv4 object 2020-12-04 11:46:09 +01:00
Omar Kallel
c831c34a94 icwmp: Fix GPV issue 2020-12-04 10:25:55 +01:00
Amin Ben Ramdhane
a9180d3a2b bbf: commit cwmp changes without restarting its service 2020-12-03 21:40:56 +01:00
vdutta
3ad8ef4b40 uspd: Apply changes only if no fault for cwmp proto 2020-12-04 00:00:12 +05:30
Rahul
17fd0ab28a qosmngr: update default config
Precedence value update to map with tr181 in default config,
now goes from 1 to 8, 8 meaning queue has lowest priority and 1
meaning that the queue has highest priority.

The broadcom script takes care of reversing this and mapping this
to 0 to 7 before configuring actual queues.
2020-12-03 17:50:45 +01:00
Omar Kallel
8ae15aa39b icwmp: Fix GPA issue 2020-12-03 16:03:39 +01:00
Vivek Dutta
1ed5f0c0f6 uspd: update to transaction support 2020-12-03 16:01:47 +01:00
Amin Ben Ramdhane
939ff109c2 bbf: update libbbf to support transactions 2020-12-03 15:50:30 +01:00
Sukru Senli
5c9469589c icwmp: sync files 2020-12-03 12:42:20 +01:00
Sukru Senli
d6dae7cd0b icwmp: make wait for service ubus object based 2020-12-02 19:42:23 +01:00
Omar Kallel
0872d45d63 icwmp: Fix fails returned by CD-Router 2020-12-02 15:14:02 +01:00
Rahul
14e54fbf04 qosmngr: fix regression
latest patch to resolve precedence issue causes regression.
Bug: queues for any port not configured at boot
fix: create the folders which store queue precedence
2020-12-02 19:10:16 +05:30
vdutta
105edbfada obuspa: Align with uspd 2020-12-02 17:13:48 +05:30
vdutta
a77deb3f36 uspd: Transaction support and setm_values improvements 2020-12-02 17:09:18 +05:30
jjoseph
38f737fa20 qosmngr: Bug #3822: TR-181: Some Device.QoS.Queue parameters are returning invalid values 2020-12-02 06:26:48 +00:00
Amin Ben Ramdhane
600209795d bbf: 3.0.4 2020-12-01 19:27:52 +01:00
Omar Kallel
6819ccef9c icwmp: use transactions 2020-12-01 18:38:37 +01:00
Amin Ben Ramdhane
8d257729ef bbf: wifi: adapt OperatingChannelBandwidth get value to WiFi6 2020-11-30 19:35:29 +01:00
Amin Ben Ramdhane
78c84db435 bbf: 3.0.3 2020-11-29 23:12:38 +01:00
Sukru Senli
1b1e071b1b iop: deselect miniupnpc by default 2020-11-29 15:18:51 +01:00
vdutta
38bf0e3c89 obuspa: Free cached data and fix init script 2020-11-28 20:03:15 +05:30
Sukru Senli
2506c9874a obuspa: set db_file explicitly in uci until init script is fixed 2020-11-28 14:08:21 +01:00
Jani Juvan
ee486af38b Update feed [ iopsys ] package [ easy-soc-libs ]
-------------------------------------------------------------------------------
* 44ecccf libdsl: fixed missing test stub updates
* 7b299da libwifi: mtk: correct non-existing include
* 79ba626 libwifi: mtk: fix oper_std when no ap iface
* 905c729 libwifi: update phy to netdev with type parameter
* 9094176 libwifi: simplify get_assoclist
* bda31e8 bwifi: mtk: Add time to station and backhaul status
* b50dd79 libwifi: mtk: include staging_dir mac header instead of kernel
-------------------------------------------------------------------------------
commit 44ecccf9892e4b1a80d98964d67050026035eb2b
Author: Jani Juvan <jani.juvan@iopsys.eu>
Date: 2020-11-27 18:21:41 +0100

    libdsl: fixed missing test stub updates

Base directory -> /
 libdsl/test_stub/stub.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)
-------------------------------------------------------------------------------
commit 7b299da891065b3a02f8e07bd9a835d0b0c74912
Author: Bartlomiej Grzeskowiak <bartlomiej.grzeskowiak@iopsys.eu>
Date: 2020-11-24 19:47:00 +0100

    libwifi: mtk: correct non-existing include

    nl80211.h does not exist in staging dir while esl is built. Copy of
    nl80211.h must be stored in esl.

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

Base directory -> /
 libwifi/modules/copy_nl80211.h | 6930 ++++++++++++++++++++++++++++++++++++++++
 libwifi/modules/nlwifi.c       |    2 +-
 2 files changed, 6931 insertions(+), 1 deletion(-)
-------------------------------------------------------------------------------
commit 79ba626ecdd15175c6375364e8eecac77c2193b1
Author: Marek Puzyniak <marek.puzyniak@iopsys.eu>
Date: 2020-11-18 12:17:19 +0000

    libwifi: mtk: fix oper_std when no ap iface

    Signed-off-by: Marek Puzyniak <marek.puzyniak@iopsys.eu>

Base directory -> /
 libwifi/modules/mtk.c | 69 ++++++++++++++++++++++++++++++++++++++++++++++-----
 1 file changed, 63 insertions(+), 6 deletions(-)
-------------------------------------------------------------------------------
commit 905c729efe237f2dc2088d00d4fac9b301dd52d7
Author: Marek Puzyniak <marek.puzyniak@iopsys.eu>
Date: 2020-11-23 14:58:22 +0000

    libwifi: update phy to netdev with type parameter

    Introduce nlwifi_phy_to_netdev_with_type function which allows to get netdev
    from phy wiyh requested type. Possible options are:
    -NLWIFI_MODE_AP,
    -NLWIFI_MODE_STA,
    -NLWIFI_MODE_AP_STA,
    -NLWIFI_MODE_ANY.

    Signed-off-by: Marek Puzyniak <marek.puzyniak@iopsys.eu>

Base directory -> /
 libwifi/modules/nlwifi.c | 40 ++++++++++++++++++++++++++++++++--------
 libwifi/modules/nlwifi.h |  6 ++++++
 2 files changed, 38 insertions(+), 8 deletions(-)
-------------------------------------------------------------------------------
commit 909417616eea5e4ecc3059ae766fc8a55c21a6b1
Author: Marek Puzyniak <marek.puzyniak@iopsys.eu>
Date: 2020-11-24 11:02:32 +0000

    libwifi: simplify get_assoclist

    Use only one hostapd_cli command list_sta in order to collect assoctiated
    stations.

    Signed-off-by: Marek Puzyniak <marek.puzyniak@iopsys.eu>

Base directory -> /
 libwifi/wpactrl_util.c | 63 +++++++++-----------------------------------------
 1 file changed, 11 insertions(+), 52 deletions(-)
-------------------------------------------------------------------------------
commit bda31e8fa970f7eb5c5077fc17a64c3ca07fc1b6
Author: Bartlomiej Grzeskowiak <bartlomiej.grzeskowiak@iopsys.eu>
Date: 2020-11-24 08:28:34 +0100

    bwifi: mtk: Add time to station and backhaul status

    Numbers taken from station dump: iw dev wlan1_1 station dump | egrep
    "inactive time|connected time| duration" idle 		-> inactive
    time:	450 ms in_network 	-> connected time:	2949 seconds
    tx_airtime	-> tx duration:		57214 us rx_airtime	-> rx duration:
    1117926 us

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

Base directory -> /
 libwifi/modules/nlwifi.c | 10 ++++++++++
 1 file changed, 10 insertions(+)
-------------------------------------------------------------------------------
commit b50dd79423dcdf9c9eace5945c29641d849876db
Author: Bartlomiej Grzeskowiak <bartlomiej.grzeskowiak@iopsys.eu>
Date: 2020-11-24 08:25:02 +0100

    libwifi: mtk: include staging_dir mac header instead of kernel

    nl80211.h header in linux-4.14.195 not contain TX_DURATION define in status
    enum. Fixed by including staging header from mac80211.

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

Base directory -> /
 libwifi/modules/nlwifi.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
-------------------------------------------------------------------------------
2020-11-27 18:26:51 +01:00
Sukru Senli
bf871111a5 iop: config: select uledd 2020-11-27 16:54:45 +01:00
vdutta
1388b566bc obsupa: Change debug level 2020-11-27 20:54:08 +05:30
vdutta
a63295be52 obsupa: Integrate 3.0.0 release
- Optimise uci to support configuration of multiple controllers
- Optimise init script to support MQTT proto
2020-11-27 20:47:16 +05:30
Amin Ben Ramdhane
450b9eaee9 Align XMPP & UDPEchoserver & TWAMP with latest bbf changes 2020-11-27 10:52:16 +01:00
Sukru Senli
e22a60c637 bulkdata: adapt to updated libbbf api 2020-11-27 08:43:08 +01:00
Hemlata Bhatt
32817656e1 bbf : Fix 3847 2020-11-26 12:20:19 +01:00
Jakob Olsson
da017f98e2 ieee1905: 2.1.31 2020-11-25 10:49:58 +01:00
Jakob Olsson
1e3c338abb Revert "ieee1905: 2.1.31"
This reverts commit 034f69408a.
2020-11-24 14:45:28 +01:00
Jakob Olsson
034f69408a ieee1905: 2.1.31 2020-11-24 14:43:05 +01:00
vdutta
d86e277461 obuspa: Align with transaction_* APIs 2020-11-24 17:14:12 +05:30
vdutta
2f333148b2 uspd: Multiple fixes
- 'transaction_*' apis with usp.raw object
 - new method 'setm_values' to set multiple values at once
 - 'dump_schema' with usp specific proto
 - Fix multiple output in 'getm_*' methods
 - Generate fault when set/add/del operations called without transaction
   using usp.raw object
 - Generate fault when set/add/del operation called using usp object and
   another transaction is in progress
2020-11-24 16:58:14 +05:30
Ronny Nilsson
8a275944e3 endptmngr: add a file necessary for build. 2020-11-24 11:29:48 +01:00
Ronny Nilsson
76d40e2e1e Update feed [ iopsys ] package [ endptmngr ]
-------------------------------------------------------------------------------
* c1d337a Fix a crash when endptmngr runs in Iopsys 6 with Broadcom 5.04.
-------------------------------------------------------------------------------
commit c1d337a584b42b5872fb3f3d043d487299d4f826
Author: Ronny Nilsson <ronny.nilsson@iopsys.eu>
Date: 2020-11-23 16:41:10 +0100

    Fix a crash when endptmngr runs in Iopsys 6 with Broadcom 5.04.

Base directory -> /
 src/Makefile              |  1 +
 src/brcm-504-workaround.c | 78 +++++++++++++++++++++++++++++++++++++++++++++++
 src/line.c                |  2 ++
 src/main.c                |  2 ++
 4 files changed, 83 insertions(+)
-------------------------------------------------------------------------------
2020-11-23 21:36:31 +01:00
Sukru Senli
e00394f158 iop: sync config 2020-11-23 12:31:00 +01:00
sverma
64944425f5 wfadatad: Change UBUS object name to 'wifi.dataelements'. 2020-11-23 16:22:46 +05:30
Omar Kallel
9d996bdf9e icwmp: remove the use of forced_inform and force_notifications uci sections 2020-11-23 11:16:39 +01:00
Amin Ben Ramdhane
5c8e7cb740 bbf: 3.0.2 2020-11-20 21:47:49 +01:00
vdutta
201fb45c6c obuspa: Align with uspd 2020-11-20 23:24:47 +05:30
vdutta
7e2cdb88fb uspd: Fix getm_ method and pretty print 2020-11-20 23:11:14 +05:30
Jani Juvan
f750ab67d7 Update feed [ iopsys ] package [ dslmngr ]
-------------------------------------------------------------------------------
* 6d32414 fixes for G.fast support
-------------------------------------------------------------------------------
commit 6d32414514842b70fae1ee96069d0712b900151e
Author: Jani Juvan <jani.juvan@iopsys.eu>
Date: 2020-11-18 18:03:52 +0100

    fixes for G.fast support

Base directory -> /
 dslmngr.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)
-------------------------------------------------------------------------------
2020-11-20 13:35:22 +01:00
Jani Juvan
1ba812351d Update feed [ iopsys ] package [ easy-soc-libs ]
-------------------------------------------------------------------------------
* bb551b4 libdsl: add G.fast support
-------------------------------------------------------------------------------
commit bb551b434ac9de31581e905cf5516644c12a877c
Author: Jani Juvan <jani.juvan@iopsys.eu>
Date: 2020-11-06 16:01:47 +0100

    libdsl: add G.fast support

Base directory -> /
 libdsl/broadcom/bcm_dsl_api.c | 241 +++++++++++++++++++++++++++++++++++++++++-
 libdsl/utils.c                |   3 +
 libdsl/xdsl.h                 |  12 ++-
 3 files changed, 249 insertions(+), 7 deletions(-)
-------------------------------------------------------------------------------
2020-11-20 13:35:02 +01:00
Jani Juvan
efc11f8c6d dslmngr: update minor version number for adding G.fast support 2020-11-20 13:13:24 +01:00
Ronny Nilsson
69cf19cc8e TaaS: added boostrap support.
Nice to have feature which wipes the flash in a
remote lab DUT and writes the localy built image.
Note: no testing of the image is done.
2020-11-19 22:30:13 +01:00
Ronny Nilsson
085ec84436 taas: we have EX600 too in the dev remote lab. 2020-11-19 22:30:13 +01:00
Ronny Nilsson
faec0f002a taas: prerequisite check has been moved to a common lib. 2020-11-19 22:30:13 +01:00
Amin Ben Ramdhane
436a57f8d6 bbf: Fix some parameters that have invalid values 2020-11-19 20:54:53 +01:00
Janusz Dziedzic
e3d0362d1f Update feed [ iopsys ] package [ easy-soc-libs ]
1cb7c8 libwifi: bcm: get assoclist from hostap
eb0c403 libwifi: bcm: use wl command for neighbors
80c1a24 libwifi: wpactrl: fix neighbor handling
a2c17f7 libwifi: bcm: use reload_config
2020-11-19 18:12:01 +01:00
Jani Juvan
3135ad4865 Update feed [ iopsys ] package [ dslmngr ]
-------------------------------------------------------------------------------
* 97e29e3 fixup for variable mixup in previous commit
-------------------------------------------------------------------------------
commit 97e29e3bb7bece10f728b09f8031b26b61b1debe
Author: Jani Juvan <jani.juvan@iopsys.eu>
Date: 2020-11-19 14:55:57 +0100

    fixup for variable mixup in previous commit

Base directory -> /
 dslmngr.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
-------------------------------------------------------------------------------
2020-11-19 14:56:48 +01:00
Jani Juvan
12f4a5380b Update feed [ iopsys ] package [ dslmngr ]
-------------------------------------------------------------------------------
* a81fc07 added missing index updates for stats
-------------------------------------------------------------------------------
commit a81fc073f54ba0d0c46685fff26bf074b40dc690
Author: Jani Juvan <jani.juvan@iopsys.eu>
Date: 2020-11-19 14:18:23 +0100

    added missing index updates for stats

Base directory -> /
 dslmngr.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)
-------------------------------------------------------------------------------
2020-11-19 14:27:31 +01:00
Jani Juvan
3887bab7f7 dslmngr: update minor version for index change 2020-11-19 14:26:22 +01:00
vdutta
a6a54316e8 uspd: Multiple fixes
- instance_mode parameter in usp ubus object methods
 - Remove list_inform to align with latest bbf changes
 - transaction related usp.raw methods
 - Segregate usp and usp.raw object methods
 - Support of percent escaped double quote in unique key search
 - set: Show end_session_flag for cwmp proto
 - Parallel processing support for operate and get commands
 - unique_keys in 'dump_schema' method
 - In/Out parameters in 'list_operate' method
 - Performance optimizations
2020-11-19 18:04:07 +05:30
Amin Ben Ramdhane
0273969b9c icwmp: 6.0-2020-10-19 2020-11-19 13:20:24 +01:00
Andreas Gnau
0781d5620d natalie-dect: Change open SDK download URL to https 2020-11-19 13:18:03 +01:00
Andreas Gnau
d8d42400b1 endptmngr: Change open SDK download URL to https 2020-11-19 13:18:03 +01:00
Amin Ben Ramdhane
c3ee0a2d8a Align BulkData & XMPP & UDPEchoserver & TWAMP with latest bbf changes
- remove unnecessary arguments from object/parameter definition
2020-11-19 13:16:47 +01:00
Amin Ben Ramdhane
d66c3c0bbf bbf: 3.0-2020-11-19 2020-11-19 13:15:55 +01:00
Andreas Gnau
a57d03d7e9 iop: config: Change CONFIG_LOCALMIRROR to https 2020-11-19 13:11:42 +01:00
Jani Juvan
ec35396ffc Update feed [ iopsys ] package [ dslmngr ]
-------------------------------------------------------------------------------
* c04da97 ubus indexes for line and channel starting from 1
-------------------------------------------------------------------------------
commit c04da9743198041de1fbaa05600d997a4f71c174
Author: Jani Juvan <jani.juvan@iopsys.eu>
Date: 2020-11-18 10:10:06 +0100

    ubus indexes for line and channel starting from 1

Base directory -> /
 dslmngr.c | 27 ++++++++++++++++++++-------
 1 file changed, 20 insertions(+), 7 deletions(-)
-------------------------------------------------------------------------------
2020-11-18 13:22:41 +01:00
Jani Juvan
7e9a109466 Update feed [ iopsys ] package [ easy-soc-libs ]
-------------------------------------------------------------------------------
* 656dc78 libwifi: mtk: add SCAN_ABORT event
-------------------------------------------------------------------------------
commit 656dc782fda897559d5e3b336cab571162daee5f
Author: Bartlomiej Grzeskowiak <bartlomiej.grzeskowiak@iopsys.eu>
Date: 2020-11-16 11:46:52 +0100

    libwifi: mtk: add SCAN_ABORT event

    Add SCAN_ABORT event for radio interface.

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

Base directory -> /
 libwifi/modules/nlwifi.c | 3 +++
 libwifi/wifi.h           | 1 +
 2 files changed, 4 insertions(+)
-------------------------------------------------------------------------------
2020-11-18 13:22:27 +01:00
Omar Kallel
21c9d13b7a cwmp: get forced inform and froced notifications from cwmp uci config instead of bbf 2020-11-18 10:16:16 +01:00
Jani Juvan
f467f2a90f Update feed [ iopsys ] package [ dslmngr ]
-------------------------------------------------------------------------------
* db4be52 fix for handling negative uints
-------------------------------------------------------------------------------
commit db4be520b7d03cfa576a95850ea44e59b41381ec
Author: Jani Juvan <jani.juvan@iopsys.eu>
Date: 2020-11-17 16:30:17 +0100

    fix for handling negative uints

Base directory -> /
 dslmngr.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
-------------------------------------------------------------------------------
2020-11-17 16:39:27 +01:00
Sukru Senli
8ffe458009 remove reference to non-existing parameters 2020-11-17 13:22:09 +01:00
Sukru Senli
a9122f9909 cifsd, cifsd-tools: replaced by ksmbd and ksmbd-tools 2020-11-17 13:21:16 +01:00
Sukru Senli
cea453c91c correct copyright headers in package Makefiles 2020-11-17 13:14:22 +01:00
Rahul
4b707a26f4 Fix Bug #3822: BurstSize default value updated
The default value of burst size in config is set to -1 which is one
part of the problem. The other part of the problem is that the check
in tr181 is not good enough to disallow negative values. That will
be fixed in a seprate patch.
2020-11-17 16:32:29 +05:30
Amin Ben Ramdhane
81a39308cc bbf: 2.9-2020-11-16 2020-11-16 22:07:04 +01:00
Jani Juvan
73d7e51afa Update feed [ iopsys ] package [ dslmngr ]
-------------------------------------------------------------------------------
* 2da1a3f clean-up json-files api-testing
* 21b0119 fixed invalid json
* 549a924 Fix a compilation error in testing
* c06c317 moved dependencies to shell-script instead of having them in docker file
-------------------------------------------------------------------------------
commit 2da1a3fc3d7ba2babfd88032af05c0e226e89008
Author: Suru Dissanaike <suru.dissanaike@iopsys.eu>
Date: 2020-08-12 17:14:11 +0200

    clean-up json-files api-testing

Base directory -> /
 test/api/json/atm.link.validation.json    | 12 ------------
 test/api/json/dsl.channel.validation.json |  2 +-
 test/api/json/dsl.line.validation.json    | 13 -------------
 3 files changed, 1 insertion(+), 26 deletions(-)
-------------------------------------------------------------------------------
commit 21b0119c090832da9f8a3e4882876649f747ed22
Author: Suru Dissanaike <suru.dissanaike@iopsys.eu>
Date: 2020-08-12 08:45:15 +0200

    fixed invalid json

Base directory -> /
 test/api/json/atm.link.validation.json | 3 ---
 1 file changed, 3 deletions(-)
-------------------------------------------------------------------------------
commit 549a924c5f3d48db43f02b469e7261feec10c47e
Author: Yalu Zhang <yalu.zhang@iopsys.eu>
Date: 2020-08-10 12:39:18 +0200

    Fix a compilation error in testing

Base directory -> /
 Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
-------------------------------------------------------------------------------
commit c06c31728555a091f2807e64ddf7849829c57fef
Author: Suru Dissanaike <suru.dissanaike@iopsys.eu>
Date: 2020-08-05 15:15:41 +0200

    moved dependencies to shell-script instead of having them in docker file

Base directory -> /
 .gitlab-ci.yml                    |  9 ++++++---
 gitlab-ci/install-dependencies.sh | 22 ++++++++++++++++++++++
 2 files changed, 28 insertions(+), 3 deletions(-)
-------------------------------------------------------------------------------
2020-11-16 15:49:31 +01:00
Jani Juvan
557f2693d3 Update feed [ iopsys ] package [ easy-soc-libs ]
-------------------------------------------------------------------------------
* 03a776e libdsl: dsl line and channel parameter corrections
* 1a0d70d libdsl: add support for gfast in makefile
* 82dd72a libwifi: mtk: Fix survey dump
* 6c0ba2a libwifi: mtk: nlwifi_phy_to_netdev correct name and behaviour
* f04cd96 libwifi: mtk: fill ifaces field in wifi_radio
-------------------------------------------------------------------------------
commit 03a776e8af7399e11d1405b351df0dafa3b9ae33
Author: Jani Juvan <jani.juvan@iopsys.eu>
Date: 2020-11-12 11:58:31 +0100

    libdsl: dsl line and channel parameter corrections

Base directory -> /
 libdsl/broadcom/bcm_dsl_api.c | 56 ++++++++++++++++++++++++++-----------------
 libdsl/xdsl.h                 |  4 ++--
 2 files changed, 36 insertions(+), 24 deletions(-)
-------------------------------------------------------------------------------
commit 1a0d70dddb5dbf8f23d902024ffbb7526e0fcf52
Author: Jani Juvan <jani.juvan@iopsys.eu>
Date: 2020-11-16 13:51:45 +0100

    libdsl: add support for gfast in makefile

Base directory -> /
 libdsl/Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
-------------------------------------------------------------------------------
commit 82dd72a5b989b3a57d829c00100b89a1f53a908a
Author: Bartlomiej Grzeskowiak <bartlomiej.grzeskowiak@iopsys.eu>
Date: 2020-11-10 11:34:04 +0100

    libwifi: mtk: Fix survey dump

    nlwifi_phy_to_netdev commit introduce the bug in survey dump fetching.
    Variable name corrected here.

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

Base directory -> /
 libwifi/modules/nlwifi.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
-------------------------------------------------------------------------------
commit 6c0ba2ae1b35298ea93b85fb3989d084b20fb113
Author: Bartlomiej Grzeskowiak <bartlomiej.grzeskowiak@iopsys.eu>
Date: 2020-11-09 13:20:52 +0100

    libwifi: mtk: nlwifi_phy_to_netdev correct name and behaviour

    phy_to_netdev -> nlwifi_phy_to_netdev This function does not depend on
    carrier any more. It uses get_ifstatus instead

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

Base directory -> /
 libwifi/modules/mtk.c    | 16 +++++++--------
 libwifi/modules/nlwifi.c | 51 +++++++++++++++++++-----------------------------
 libwifi/modules/nlwifi.h |  2 +-
 3 files changed, 29 insertions(+), 40 deletions(-)
-------------------------------------------------------------------------------
commit f04cd96dd16136b66f58be6e21d34bdd34f25294
Author: Bartlomiej Grzeskowiak <bartlomiej.grzeskowiak@iopsys.eu>
Date: 2020-11-06 21:55:04 +0100

    libwifi: mtk: fill ifaces field in wifi_radio

    ifaces will be listed for given phy.

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

Base directory -> /
 libwifi/modules/nlwifi.c | 36 ++++++++++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)
-------------------------------------------------------------------------------
2020-11-16 15:48:24 +01:00
Sukru Senli
c9b2973ac8 qosmngr: correct cpu_model check 2020-11-13 22:51:13 +01:00
Sukru Senli
6f15e7ff27 qos: skip policer config for BCM6755 2020-11-13 22:37:38 +01:00
Sukru Senli
f431a3ddf5 icwmp: remove icwmp-tr098 subpackage 2020-11-13 21:51:08 +01:00
Anjan Chanda
4ce6578aa7 ieee1905-2.1.30 2020-11-13 21:45:44 +01:00
Amin Ben Ramdhane
39ab8e9282 bbf: 2.9-2020-11-13 2020-11-13 17:10:38 +01:00
Jani Juvan
e5694c1429 easy-soc-lib: Fix Makefile to pass correct broadcom chip config 2020-11-13 15:36:07 +01:00
Andreas Gnau
0c998dbb66 endptmngr: Renaming and clean-up of config-options
* Don't pass unused config options to Makefile
* Account for rename TARGET_NO_VOICE => !BCM_VOICE
2020-11-11 21:15:40 +01:00
Amin Ben Ramdhane
d8b5f3e1f0 bbf: 2.8-2020-11-11 2020-11-11 20:34:43 +01:00
Ronny Nilsson
0b39626067 Update feed [ iopsys ] package [ libpicoevent ]
-------------------------------------------------------------------------------
* f446f18 LICENSE: GPLv2 -> LGPLv2.1
-------------------------------------------------------------------------------
commit f446f186102539cceedaa15a95a33547ac3c1fd7
Author: Sukru Senli <sukru.senli@iopsys.eu>
Date: 2020-04-27 14:38:26 +0200

    LICENSE: GPLv2 -> LGPLv2.1

Base directory -> /
 LICENSE | 631 +++++++++++++++++++++++++++++++++++++++++-----------------------
 1 file changed, 406 insertions(+), 225 deletions(-)
-------------------------------------------------------------------------------
2020-11-11 20:07:31 +01:00
Ronny Nilsson
5665076321 endptmngr: restore autostart of endptmngr at boot. 2020-11-11 16:26:44 +01:00
Anjan Chanda
db5c1613f5 wfadatad: 3.0.0 2020-11-11 12:33:51 +01:00
Benjamin Larsson
c82cf9ebb0 Update feed [ iopsys ] package [ peripheral_manager ]
-------------------------------------------------------------------------------
* dd4a72a Dimmed LEDs should light up when press indicator is used.
* 68606f4 Remove test/include/mock_board.h
* c7e50cb Update path for IOP6.
* 5e2a45b Fully implement Linux GPIO and remove Broadcom ioctl().
* aff6aaf Update README.md
* 4dd33de Each button object needs to change lowercase, otherwise the button object will report error in ubus call.
-------------------------------------------------------------------------------
commit dd4a72aca663bf3c9a57f20e889e43a55d3da1b3
Author: Markus Gothe <markus.gothe@genexis.eu>
Date: 2020-10-06 10:06:15 +0200

    Dimmed LEDs should light up when press indicator is used.

    When having dimmed LEDs and press indicator event occurs, we do want to them
    to temporarily light up 100%.

Base directory -> /
 src/led.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)
-------------------------------------------------------------------------------
commit 68606f4dd3dbfe03d4256cd256e797f035d36c51
Author: Markus Gothe <markus.gothe@genexis.eu>
Date: 2020-10-09 14:58:55 +0200

    Remove test/include/mock_board.h

    The file 'mock_board.h' serves no purpose and should be removed.

    This commit removes it.

Base directory -> /
 test/include/mock_board.h | 109 ----------------------------------------------
 1 file changed, 109 deletions(-)
-------------------------------------------------------------------------------
commit c7e50cb16c2f583e842ccb0622631e7e03dc3079
Author: Markus Gothe <markus.gothe@genexis.eu>
Date: 2020-10-09 14:40:42 +0200

    Update path for IOP6.

    The paths have changed on IOP6, this change reflects the current paths.

Base directory -> /
 src/peripheral_manager.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
-------------------------------------------------------------------------------
commit 5e2a45b15b231da37764d00469137609471ae4c6
Author: Markus Gothe <markus.gothe@genexis.eu>
Date: 2020-10-09 14:38:12 +0200

    Fully implement Linux GPIO and remove Broadcom ioctl().

    This also removes the obsolete use of sprintf() and correctly initializes
    the variables (with cacheline alignment).

    What needs further testing is bit-banging via the /sys/class/gpio-interface.
    My initial testing on the EX600 showed however that this is possible.

Base directory -> /
 CMakeLists.txt            | 15 +------------
 src/eco_bug.c             |  4 +---
 src/gpio.c                | 56 -----------------------------------------------
 src/gpio.h                | 42 ++++++++---------------------------
 src/gpio_button.c         | 15 -------------
 src/gpio_led.c            |  7 ------
 src/gpio_linux.c          | 52 +++++++++++++++++++++----------------------
 src/gpio_test.c           | 13 ++++-------
 src/led.c                 |  4 ++--
 src/prox_px3220.c         |  2 +-
 src/touch_sx9512.c        | 23 +++++--------------
 test/include/mock_board.h |  1 -
 12 files changed, 48 insertions(+), 186 deletions(-)
-------------------------------------------------------------------------------
commit aff6aafa04d908dca48852babe7dc0b0fa900aa8
Author: Andreas Jonson <andreas.jonson@iopsys.eu>
Date: 2020-09-09 11:09:44 +0200

    Update README.md

Base directory -> /
 README.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
-------------------------------------------------------------------------------
commit 4dd33de8f7b023c5260dc493ed37337fb2c2dc31
Author: pitchaiah prakash <pitchaiah.murugan@iopsys.eu>
Date: 2020-07-08 20:29:24 +0200

    Each button object needs to change lowercase, otherwise the button object
    will report error in ubus call.

Base directory -> /
 src/button.c | 1 +
 1 file changed, 1 insertion(+)
-------------------------------------------------------------------------------
2020-11-10 15:34:17 +01:00
Ronny Nilsson
1f7565536d endptmngr: Adaptions for working with Broadcom 5.04L.02 2020-11-10 15:01:51 +01:00
Ronny Nilsson
1922fa2560 iop: TaaS need the trickle application too. 2020-11-08 01:12:27 +01:00
Ronny Nilsson
fe86ade858 iop: Refactor, extract to separate function. 2020-11-08 01:11:10 +01:00
Ronny Nilsson
f49c4f4a64 Rename due to several remote lab TaaS commands will be added to same file. 2020-11-08 00:35:51 +01:00
Jani Juvan
ac7491c010 Update feed [ iopsys ] package [ easy-soc-libs ]
-------------------------------------------------------------------------------
* 92f1e5a libdsl: broadcom header fixup
* 4c72c1f libwifi: mtk: use reload_config
* e1f9fb9 libwifi: refactor ap_info call
* 321445d libwifi: nlwifi: fill survey in channels_info
* c723e0a libwifi: nlwifi: add channels_info
* f3368e4 libwifi: nlwifi: get vendor/product id
* 24dca3f libwifi: wifi: add channels_info callback
* 012de6c libwifi: mtk: add req_btm
* b900276 libwifi: mtk: add oper_std indication for backhaul
* 2deb863 libwifi: mtk: get_param - empty outupt buffer
* 89cd623 libwifi: iterate wildcard SSID IE correctly
* 6f508cb libwifi: introduce IE defines
* 4b582a3 libwifi: nlwifi: get channel correctly
* 22d94bb libwifi: nlwifi: introduce nlwifi_get_survey()
* 3ca5d99 libwifi: nlwifi: check max for supp channels
* 846cf76 libwifi: nlwifi: move phy_to_netdev()
* ef7c9c6 libwifi: wifi: use u64 for radio diagnostic
* 78b05b3 libwifi: nlwifi: get noise level
* 3e356a9 libwifi: nlwifi: use nlwifi_cmd() for scan
* 57b7659 libwifi: nlwifi: use nlwifi_cmd()
* 9a9fedf libwifi: nlwifi: use nlwifi_cmd()
* af18d6d libwifi: nlwifi: unlock phy commands
* b63aa97 libwifi: nlwifi: prepare for DFS
* 38e0638 libwifi: nlwifi: introduce nlwifi_cmd()
* 96eb796 libwifi: mtk: implement get_beacon_ies
-------------------------------------------------------------------------------
commit 92f1e5a99226bd18897b1832e1879555e9953751
Author: Jani Juvan <jani.juvan@iopsys.eu>
Date: 2020-11-05 15:55:05 +0100

    libdsl: broadcom header fixup

Base directory -> /
 libdsl/Makefile              |  2 +-
 libdsl/broadcom/AdslMibDef.h | 53 +++++++++++++++++++++++++++-----------------
 libdsl/broadcom/bcmadsl.h    | 31 ++++++++++++++++++--------
 3 files changed, 56 insertions(+), 30 deletions(-)
-------------------------------------------------------------------------------
commit 4c72c1ff3c7e1d45d2007f68b6eb867e583b9bb7
Author: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
Date: 2020-10-28 10:24:41 +0100

    libwifi: mtk: use reload_config

    Use reload_config command when add/remove interfaces.

    Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>

Base directory -> /
 libwifi/modules/mtk.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
-------------------------------------------------------------------------------
commit e1f9fb9f62876029f83be79e51a9ccdce706edb5
Author: Marek Puzyniak <marek.puzyniak@iopsys.eu>
Date: 2020-10-12 10:05:57 +0000

    libwifi: refactor ap_info call

    Use beacon ie in ap_info call to collect information about AP. Use size_t
    instead of int to pass size arguments. Add some generic functions to parse
    ies content. Move generic functions from wpactrl_util to util.

    Signed-off-by: Marek Puzyniak <marek.puzyniak@iopsys.eu>

Base directory -> /
 libwifi/modules/mtk.c  |  31 +-----
 libwifi/util.c         | 114 ++++++++++++++++++++++
 libwifi/util.h         |   3 +
 libwifi/wpactrl_util.c | 256 ++++++++++++++++---------------------------------
 libwifi/wpactrl_util.h |  17 +++-
 5 files changed, 216 insertions(+), 205 deletions(-)
-------------------------------------------------------------------------------
commit 321445d0a8edfb171400cada477e15d154cb1c61
Author: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
Date: 2020-10-20 20:49:58 +0200

    libwifi: nlwifi: fill survey in channels_info

    Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>

Base directory -> /
 libwifi/modules/nlwifi.c | 104 +++++++++++++++++++++++++++++++++++++++++++----
 1 file changed, 96 insertions(+), 8 deletions(-)
-------------------------------------------------------------------------------
commit c723e0ae1224212ec352161cf02cd328bcc2c07a
Author: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
Date: 2020-10-20 14:42:35 +0200

    libwifi: nlwifi: add channels_info

    Add implementation for channels_info. Fill DFS related params.

    We still need to add survey data.

    Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>

Base directory -> /
 libwifi/modules/mtk.c    |  1 +
 libwifi/modules/nlwifi.c | 90 ++++++++++++++++++++++++++++++++++++++++++------
 libwifi/modules/nlwifi.h |  1 +
 3 files changed, 81 insertions(+), 11 deletions(-)
-------------------------------------------------------------------------------
commit f3368e44b69287499bde0206dca312c22ea2f73e
Author: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
Date: 2020-10-20 12:03:53 +0200

    libwifi: nlwifi: get vendor/product id

    Fill driver info vendor/product id.

    Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>

Base directory -> /
 libwifi/modules/mtk.c    |  1 +
 libwifi/modules/nlwifi.c | 74 ++++++++++++++++++++++++++++++++++++++++++++++++
 libwifi/modules/nlwifi.h |  1 +
 3 files changed, 76 insertions(+)
-------------------------------------------------------------------------------
commit 24dca3f513087668117bd3d9127eab4051148380
Author: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
Date: 2020-09-23 15:50:41 +0200

    libwifi: wifi: add channels_info callback

    Will be used to get information about channels, like:
    - dfs
    - dfs state
    - busy percent
    - our busy_tx/busy_rx percent
    - noise flour
    - CAC time
    - left NOP time

    Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>

Base directory -> /
 libwifi/wifi.c | 11 +++++++++++
 libwifi/wifi.h | 37 ++++++++++++++++++++++++++++++++++++-
 2 files changed, 47 insertions(+), 1 deletion(-)
-------------------------------------------------------------------------------
commit 012de6c2776f745d4578fa34c7489ddbdb862515
Author: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
Date: 2020-10-15 16:27:37 +0200

    libwifi: mtk: add req_btm

    Add implementation for req_btm()

    Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>

Base directory -> /
 libwifi/modules/mtk.c    | 23 +++++++++++++++++++++++
 libwifi/modules/nlwifi.c |  2 +-
 libwifi/wpactrl_util.c   |  3 +++
 libwifi/wpactrl_util.h   |  2 ++
 4 files changed, 29 insertions(+), 1 deletion(-)
-------------------------------------------------------------------------------
commit b9002767a83303d2a833948e9086bd85cd306d96
Author: Bartlomiej Grzeskowiak <bartlomiej.grzeskowiak@iopsys.eu>
Date: 2020-10-15 08:51:50 +0200

    libwifi: mtk: add oper_std indication for backhaul

    oper_std will return the information about link standard. 5GHz: a/n/ac are
    supported separatelly 2,4GHz: b/g or n are supported.

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

Base directory -> /
 libwifi/modules/mtk.c  |  8 +++++-
 libwifi/wpactrl_util.c | 66 +++++++++++++++++++++++++++++++++++++++++++++++++-
 libwifi/wpactrl_util.h |  3 +++
 3 files changed, 75 insertions(+), 2 deletions(-)
-------------------------------------------------------------------------------
commit 2deb86307a763a288eb8735b390ad7953f56ff01
Author: Bartlomiej Grzeskowiak <bartlomiej.grzeskowiak@iopsys.eu>
Date: 2020-10-14 12:39:23 +0200

    libwifi: mtk: get_param - empty outupt buffer

    get_param function called multiple times, might not refresh output buffer.
    Clear buffer before filling up with new data.

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

Base directory -> /
 libwifi/wpactrl_util.c | 1 +
 1 file changed, 1 insertion(+)
-------------------------------------------------------------------------------
commit 89cd6237ba90346101f62721424408202785e1c8
Author: Marek Puzyniak <marek.puzyniak@iopsys.eu>
Date: 2020-10-14 10:36:32 +0000

    libwifi: iterate wildcard SSID IE correctly

    For wildcard SSID lenght of information element is zero, change macro
    wifi_foreach_ie to handle also this case.

    Signed-off-by: Marek Puzyniak <marek.puzyniak@iopsys.eu>

Base directory -> /
 libwifi/wifi.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
-------------------------------------------------------------------------------
commit 6f508cbe6d958cdfc5f60c6827ce9b0cf939e53e
Author: Marek Puzyniak <marek.puzyniak@iopsys.eu>
Date: 2020-10-05 20:53:50 +0000

    libwifi: introduce IE defines

    Replace raw IE ids with more redable defines like:
    "0" -> IE_SSID

    It will be usefull in IE's composition/decomposition.

    Signed-off-by: Marek Puzyniak <marek.puzyniak@iopsys.eu>

Base directory -> /
 libwifi/modules/bcm.c    | 14 +++++++-------
 libwifi/modules/intel.c  | 14 +++++++-------
 libwifi/modules/nlwifi.c | 22 +++++++++++-----------
 libwifi/util.c           | 12 ++++++------
 libwifi/wifi.h           | 15 +++++++++++++++
 5 files changed, 46 insertions(+), 31 deletions(-)
-------------------------------------------------------------------------------
commit 4b582a3b69b7196ed7784d1f23b93523e49d0e1a
Author: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
Date: 2020-10-06 14:33:32 +0200

    libwifi: nlwifi: get channel correctly

    In case we don't have netdev, get channel from supported channels.

    In other case upper layer could show band incorrectly.

    Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>

Base directory -> /
 libwifi/modules/mtk.c    |  7 ++-----
 libwifi/modules/nlwifi.c | 50 ++++++++++++++++++++++++++++++++++++++++--------
 2 files changed, 44 insertions(+), 13 deletions(-)
-------------------------------------------------------------------------------
commit 22d94bb33d7a876ef8a6c588ba7f91b0c56e11a7
Author: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
Date: 2020-10-06 14:31:44 +0200

    libwifi: nlwifi: introduce nlwifi_get_survey()

    Get survey and fill radio diagnostic counters.

    Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>

Base directory -> /
 libwifi/modules/nlwifi.c | 76 +++++++++++++++++++++++++++++++++++++++---------
 1 file changed, 62 insertions(+), 14 deletions(-)
-------------------------------------------------------------------------------
commit 3ca5d99a6d56699fdb0f5c7ee3d7690c49f110e7
Author: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
Date: 2020-10-06 14:26:17 +0200

    libwifi: nlwifi: check max for supp channels

    Check max for supported channels.

    This is important while we are using NLM_F_DUMP - so cb() could be called
    multiple times.

    Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>

Base directory -> /
 libwifi/modules/nlwifi.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)
-------------------------------------------------------------------------------
commit 846cf765afec559effe2fcb3598f4f88f1c2bbd4
Author: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
Date: 2020-10-06 14:07:23 +0200

    libwifi: nlwifi: move phy_to_netdev()

    Move phy_to_netdev() to nlwifi, while this is specyfic for opensource wifi
    stack.

    Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>

Base directory -> /
 libwifi/modules/mtk.c    | 35 -----------------------------------
 libwifi/modules/nlwifi.c | 36 ++++++++++++++++++++++++++++++++++++
 libwifi/modules/nlwifi.h |  1 +
 3 files changed, 37 insertions(+), 35 deletions(-)
-------------------------------------------------------------------------------
commit ef7c9c6a90cc5b85ce1c6ad1300aeddbda260ca8
Author: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
Date: 2020-10-06 14:03:51 +0200

    libwifi: wifi: use u64 for radio diagnostic

    Use larger type for radio diagnostic counters.

    Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>

Base directory -> /
 libwifi/wifi.h | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)
-------------------------------------------------------------------------------
commit 78b05b31fb07e5daefd3052a00e3dc1693772892
Author: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
Date: 2020-10-01 16:51:13 +0200

    libwifi: nlwifi: get noise level

    Get noise level for the current channel.

    Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>

Base directory -> /
 libwifi/modules/nlwifi.c | 66 ++++++++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 64 insertions(+), 2 deletions(-)
-------------------------------------------------------------------------------
commit 3e356a934396ae8b354c3096f97c01c90689d6ec
Author: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
Date: 2020-09-30 19:06:16 +0200

    libwifi: nlwifi: use nlwifi_cmd() for scan

    Use it also for NL80211_CMD_GET_SCAN.

    Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>

Base directory -> /
 libwifi/modules/nlwifi.c | 42 +++++++++++-------------------------------
 1 file changed, 11 insertions(+), 31 deletions(-)
-------------------------------------------------------------------------------
commit 57b7659c33b6a90963f95e251a8ab0b58b151861
Author: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
Date: 2020-09-30 18:42:22 +0200

    libwifi: nlwifi: use nlwifi_cmd()

    Use it for NL80211_CMD_GET_STATION command.

    Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>

Base directory -> /
 libwifi/modules/nlwifi.c | 168 +++++++++++------------------------------------
 1 file changed, 38 insertions(+), 130 deletions(-)
-------------------------------------------------------------------------------
commit 9a9fedf0317820ad193ab457000a2cec193b4877
Author: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
Date: 2020-09-30 17:13:30 +0200

    libwifi: nlwifi: use nlwifi_cmd()

    Use it for NL80211_CMD_GET_INTERFACE.

    Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>

Base directory -> /
 libwifi/modules/nlwifi.c | 257 ++++++++++-------------------------------------
 1 file changed, 52 insertions(+), 205 deletions(-)
-------------------------------------------------------------------------------
commit af18d6dcb14b8e643cc5a51655b9bedff3f033ba
Author: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
Date: 2020-09-30 12:13:30 +0200

    libwifi: nlwifi: unlock phy commands

    Before we allow only netdev commands.

    Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>

Base directory -> /
 libwifi/modules/mtk.c    | 45 ++++++++++++++++-----------------------------
 libwifi/modules/nlwifi.c | 44 +++++++++++++++++++++++++++++++++++++++-----
 2 files changed, 55 insertions(+), 34 deletions(-)
-------------------------------------------------------------------------------
commit b63aa970233edb3ab75c8e5b48021669928ad410
Author: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
Date: 2020-09-30 11:56:00 +0200

    libwifi: nlwifi: prepare for DFS

    Request and show DFS channel state. This is preparation for real
    implementation.

    Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>

Base directory -> /
 libwifi/modules/nlwifi.c | 32 +++++++++++++++++++++++++++++++-
 1 file changed, 31 insertions(+), 1 deletion(-)
-------------------------------------------------------------------------------
commit 38e063868ba27f6bea61b5f4fb905bd5480bc41c
Author: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
Date: 2020-09-30 08:44:21 +0200

    libwifi: nlwifi: introduce nlwifi_cmd()

    Intruduce function that will send NL commands. As example use this command
    for all calls that using NL80211_CMD_GET_WIPHY.

    Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>

Base directory -> /
 libwifi/modules/nlwifi.c | 274 +++++++++++++++++++----------------------------
 1 file changed, 108 insertions(+), 166 deletions(-)
-------------------------------------------------------------------------------
commit 96eb796d35f53a540ed93b2a2a3c7f4575573021
Author: Marek Puzyniak <marek.puzyniak@iopsys.eu>
Date: 2020-09-29 19:24:45 +0000

    libwifi: mtk: implement get_beacon_ies

    Beacon IEs are taken from hostapd via new hostapd_cli command "get_beacon
    ies". IEs from hex string format are converted to binary array.

    Signed-off-by: Marek Puzyniak <marek.puzyniak@iopsys.eu>

Base directory -> /
 libwifi/modules/mtk.c  |  7 +++++++
 libwifi/wpactrl_util.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
 libwifi/wpactrl_util.h |  2 ++
 3 files changed, 57 insertions(+)
-------------------------------------------------------------------------------
2020-11-06 08:37:44 +01:00
Jani Juvan
63db10eb1f easy-soc-lib: Fix Makefile to pass broadcom chip id properly 2020-11-06 08:35:41 +01:00
vdutta
651ad4ce22 map-1905: Add validate function in plugin 2020-11-06 10:14:22 +05:30
vdutta
51a3b0ad35 uspd: Added ubus methods to list_inform and init_notify 2020-11-05 15:50:09 +05:30
Oskar Viljasaar
0c8b1ea046 iop: genconfig: add iopsys-bcm2711 (rpi-4) support 2020-11-02 17:33:21 +01:00
Oskar Viljasaar
104805a36e feeds_update: add support for iopsys-bcm27xx 2020-11-02 17:32:25 +01:00
Oskar Viljasaar
a1bfb1b568 iop: genconfig_min: add iopsys-bcm2711 (rpi-4) support 2020-11-02 17:31:41 +01:00
Sukru Senli
5c744f71e3 remove reference to iopsys_brcm63xx_mips target 2020-11-01 10:42:32 +01:00
Sukru Senli
20ca483d80 iop: genconfig: change juci theme directory 2020-10-31 12:28:24 +01:00
Sukru Senli
7a466c989c iop: do not select loop-detector 2020-10-31 12:14:53 +01:00
Kenneth Johansson
ff63939e84 ssh_upgrade: Add handling for config option.
can now handle no reboot and keep config options.
2020-10-30 19:06:22 +01:00
Kenneth Johansson
3b283b8f3a iop: ssh_upgrade: use sysupgrade as default.
sysupgrade is now more functional than iopu so use that instead.
2020-10-29 18:33:00 +01:00
Jakob Olsson
d93d72587e ieee1905: 20.0.30 2020-10-29 13:51:52 +01:00
Ronny Nilsson
b098ef3dc2 Add support for TaaS smoketesting of images.
For developers and Jenkins etc. A short hand command for
testing the just built image on real hardware. To be
used before pushing commits and nightly images to public.
2020-10-28 16:11:26 +01:00
Simon Tate
8c69fc062a bulkdata: Bulkdata fails to build on x86
To get bulkdata to build on x86, added limitation on the asprintf %.*s
to use integer type (as per the programming manual).
2020-10-27 13:05:24 +01:00
Amin Ben Ramdhane
8ad4f32786 bbf: 2.7-2020-10-23 2020-10-23 18:08:30 +01:00
vdutta
71b66376f0 uspd: Fix fault codes
- Generate fault for add_object/del_object if path is invalid
 - Generate fault in case of add_object/del_object/operate/set if the search query is failed
 - Fix set_attribute method to apply the attribute changes
2020-10-23 11:15:14 +05:30
Amin Ben Ramdhane
48525b051a icwmp: 5.2-2020-10-19 2020-10-19 23:44:00 +01:00
Amin Ben Ramdhane
753e894b69 bbf: 2.6-2020-10-19 2020-10-19 23:40:23 +01:00
Amin Ben Ramdhane
ce701702c5 XMPP,BulkData,UDPecho,TWAMP: Fixed invalid int && unsignedInt && hexBinary parameter values 2020-10-19 23:37:01 +01:00
Omar Kallel
11550d140a Add new notification feature & delete icwmp_notifd
(cherry picked from commit 37865ab486)
2020-10-18 11:31:14 +02:00
Sukru Senli
f622a96054 icwmp: keep cwmp session backup xml file over upgrade
(cherry picked from commit 2284fcabbd)
2020-10-18 11:29:55 +02:00
Jakob Olsson
3f19a43df2 map-1905: 0.0.13 2020-10-15 12:31:24 +02:00
Amin Ben Ramdhane
d2fedc407a icwmp: 5.1-2020-10-09 2020-10-15 07:28:50 +01:00
Amin Ben Ramdhane
783fd44680 uspd: Fix compilation issue 2020-10-14 17:15:36 +01:00
Amin Ben Ramdhane
614774cb8b bbf: 2.5-2020-10-14 2020-10-14 17:14:57 +01:00
Amin Ben Ramdhane
84521942ca XMPP, BulkData, TWAMP: add unique keys 2020-10-14 17:07:02 +01:00
Rahul
bbbbdf9650 qosmngr: add log
Syslog added to log non-availability of traffic policing on the wan
port on 63138, this is a chip level limitation.
2020-10-14 15:13:50 +05:30
Rahul
98071d157d qosmngr: add support for dhcp options as classification params
DHCP option value 60, 61 and 77 can now be used to identify lan
clients. Details of UCI as follows:

config classify
    option src_vendor_class_id 'abc' // DHCP option 60.
    option dst_vendor_class_id 'abc' // DHCP option 60.
    option src_client_id 'xyz'       // DHCP option 61
    option dst_client_id 'xyz'       // DHCP option 61
    option src_user_class_id 'dfg'   // DHCP option 77
    option dst_user_class_id 'dfg'   // DHCP option 77
2020-10-14 11:31:48 +05:30
Kenneth Johansson
d829f00e07 iop: ssh_upgrade: remove debug printout 2020-10-13 21:56:33 +02:00
Kenneth Johansson
640535a2ef iop: ssh_upgrade now defaults to use the last.pkgtb file. 2020-10-13 21:46:30 +02:00
Amin Ben Ramdhane
7837417219 bbf: 2.4-2020-10-13 2020-10-13 13:00:10 +01:00
Amin Ben Ramdhane
269cbe364e udpecho: Fix invalid dateTime parameter values 2020-10-13 12:57:33 +01:00
Rahul
54cc458a2d qosmngr: add support for upstream policing on dg400prime 2020-10-12 22:32:39 +05:30
Sukru Senli
fdc882b6e0 iop: select icwmp instead of icwmp-curl 2020-10-11 15:15:20 +02:00
vdutta
346eaf0414 map-1905: Fix parsing of channel preference tlv 2020-10-08 17:29:10 +05:30
nevadita.chatterjee
d946f11c32 map-topology:Added version 2020-10-07 17:48:53 +05:30
Sukru Senli
c0957a425a icwmp: remove unnecessary parts from init script 2020-10-07 13:58:05 +02:00
vdutta
8015a503ac ieee1905: Fix crash in ex400 2020-10-07 16:37:49 +05:30
vdutta
a7d09f5ede map-1905: Multiple fixes
- Change structure for countrycode in CAC capability
 - Fix segfault in timestamp tlv
2020-10-07 16:34:18 +05:30
Amin Ben Ramdhane
8a5b49d585 icwmp: 5.0-2020-09-29 2020-10-01 22:59:32 +01:00
Amin Ben Ramdhane
ac69ea616e bbf: 2.3-2020-09-29 2020-10-01 22:58:13 +01:00
Amin Ben Ramdhane
f358d6338d Update XMPP & BulkData & UDPEcho to the latest version of bbf 2020-10-01 22:57:00 +01:00
Jakob Olsson
c514903145 wifimngr: 8.2.9 2020-10-01 15:36:45 +02:00
Anjan Chanda
dd69c371ae wifimngr: 8.2.8 2020-09-30 07:36:40 +02:00
Anjan Chanda
4a1ab17bd4 easy-soc-libs: 5.3.14 2020-09-30 07:33:41 +02:00
Rahul
208b2cc8e5 qosmngr: add support for traffic policing
Support for traffic policing added to allow configuration of
ingress rate limiting.

Test (on panther):
- ingress rate limiting on per lan port basis for US traffic.
- ingress rate limiting on wan port for DS traffic.
- when ingress rate limiting is applied on traffic in one direction,
  then traffic in other direction remains un-affected, that is, if
  ingress rate limiting is applied in DS, then US traffic on the port
  is unaffected

Note: Autotest are ready and will be merge for now with the tag not_ready.
Once devel is ready or if we decide to merge this to release-5.3, the same
can be tagged ready and executed as part of nightly suite.
2020-09-29 19:36:03 +05:30
vdutta
2e934a7169 uspd: B#3272 improvements in resolving paths 2020-09-24 13:38:38 +05:30
Anjan Chanda
b06980688a map-topology: 1.5.5 - notify topology change event 2020-09-24 09:41:28 +02:00
Amin Ben Ramdhane
29b9605e02 icwmp: 5.0-2020-09-15 2020-09-23 19:26:53 +01:00
Amin Ben Ramdhane
0afa721bca bbf: 2.2-2020-09-21 2020-09-23 19:24:18 +01:00
Amin Ben Ramdhane
3c0de388d1 Ticket refs #3228: QEMU - ICWMP is segfaulting
Fix missing objects
2020-09-23 19:19:04 +01:00
vdutta
aa1741e87a ieee1905: Get auth mode from bss.security 2020-09-23 18:59:24 +05:30
Anjan Chanda
3040359e85 map-controller: 1.0.3-internal 2020-09-23 14:58:20 +02:00
Anjan Chanda
237286f42d map-agent: 2.0.3-internal 2020-09-23 14:57:50 +02:00
vdutta
7758b30397 ieee1905: Remove redundant info from ubus objects 2020-09-22 19:54:22 +05:30
Sukru Senli
7b0dce915c iop: genconfig: comment out mediatek open parts 2020-09-22 12:33:23 +02:00
Grzegorz Sluja
b6fdd0115a wifimngr: Add support of local source build
If You want to build wifimngr from Your local sources downloaded into
~/git, the following actions are needed:

1) set LOCAL_DEV=1 in wifimngr/Makefile

2) clean and compile wifimngr with command:
make V=s package/feeds/iopsys/wifimngr/{clean,compile}

Signed-off-by: Grzegorz Sluja <grzegorz.sluja@iopsys.eu>
2020-09-22 11:34:31 +02:00
Kenneth Johansson
392e08e2fc genconfig: rename variable.
just to make it clear what config path this is.
2020-09-21 18:18:56 +02:00
Jakob Olsson
2ae2110799 rearrange start orders for topology and ieee1905 2020-09-21 16:16:15 +02:00
Jakob Olsson
773e7af7f6 wfadatad: use service_running hook to wait for ieee1905 object 2020-09-21 09:13:51 +02:00
Jakob Olsson
75e9a5360f ieee1905: config trigger to reload 2020-09-21 09:13:51 +02:00
Jakob Olsson
db5e42434e ieee1905: change start order from 99 to 13 2020-09-21 09:13:51 +02:00
Jakob Olsson
00fd7efa3b wfadatad: wait up to 2 seconds if ieee1905 is not up before start 2020-09-21 09:13:51 +02:00
Jakob Olsson
34f495f0a5 map-topology: iterate til ieee1905 object is up 2020-09-18 16:14:30 +02:00
Anjan Chanda
e3b7c9c238 ieee1905d: enable map plugin in default config 2020-09-18 15:16:56 +02:00
Anjan Chanda
e3f2e715c1 wfadatad: 2.3.0 2020-09-18 15:12:37 +02:00
Anjan Chanda
4c149ff680 map-topology: 1.5.1 2020-09-17 21:29:07 +02:00
Anjan Chanda
959b0546bc wifimngr: 8.2.3 2020-09-17 21:28:28 +02:00
Anjan Chanda
e39430ceaf easy-soc-libs: 5.3.3 2020-09-17 21:27:45 +02:00
Amin Ben Ramdhane
6ea9942320 xmpp, udpecho, twamp: compile with fPIC 2020-09-17 18:12:03 +01:00
Amin Ben Ramdhane
a5e812f785 bbf: 2.1-2020-09-17 2020-09-17 10:20:34 +01:00
vdutta
a604987a3e uspd: Optimize to reduce cpu usages 2020-09-17 11:12:52 +05:30
Anjan Chanda
7b2d8edacf map-topology: 1.5.0 2020-09-17 07:40:40 +02:00
Jakob Olsson
47b2b4fc51 map-topology: include mdns changes 2020-09-16 18:24:01 +02:00
Jakob Olsson
6b3e6bcd11 map-topology: add dependency on libavahi-nodbus-support 2020-09-16 16:30:09 +02:00
Anjan Chanda
52726289cc wifimngr: 8.1.0 2020-09-16 16:07:37 +02:00
Anjan Chanda
6c2aac5db5 easy-soc-libs: 5.0.3 2020-09-16 16:07:15 +02:00
Sukru Senli
bfc2b17a72 bulkdata: compile with fPIC 2020-09-16 10:03:12 +02:00
Sukru Senli
e98422f81e icwmp: set userid empty in cwmp config; it will be filled by uci-default 2020-09-16 08:22:26 +02:00
Sukru Senli
841a76a7e6 move tr-069 packages out of trx69 folder 2020-09-15 16:20:11 +02:00
Grzegorz Sluja
1760ea526c wifimngr: Set default debug level to ERR
When wifimngr debugging is enabled debug level is set to ERR only
by default.

Signed-off-by: Grzegorz Sluja <grzegorz.sluja@iopsys.eu>
2020-09-15 10:50:01 +02:00
Yalu Zhang
b5a493e540 Update package bbf
TR-104: add some missing parameters
2020-09-15 09:56:45 +02:00
Omar Kallel
7f00d0419f Add the file /lib/upgrade/keep.d/icwmp when installing icwmp 2020-09-14 17:32:42 +01:00
Markus Gothe
64da6686af Fix gryphon LED module crash.
Update gryphon LED module to work with Linux 4.1
and not to crash when 'gpiod_get_index()' fails.

Change-Id: I27fcbe3ad9dbc755eabdd3f2120544b171b07885
2020-09-14 16:18:01 +02:00
Amin Ben Ramdhane
8cc1877efd bbf: 2.0-2020-09-12 2020-09-12 15:44:13 +01:00
Roman Azarenko
6673a85a21 iop: generate_tarballs: bcmkernel: add symlink if missing, partially fix shellcheck warnings 2020-09-11 19:01:53 +02:00
nevadita.chatterjee
3e07ea7f8d map-topology: Config file change 2020-09-11 19:28:47 +05:30
sverma
8b4ef46681 wfadatad: Changes UBUS objects name 2020-09-11 18:54:27 +05:30
Anjan Chanda
f35e41cc0c wifimngr: 8.0.4 2020-09-11 13:14:57 +02:00
Anjan Chanda
0aff258e29 easy-soc-libs: 4.9.1 2020-09-11 13:14:11 +02:00
Amin Ben Ramdhane
d919f4440e icwmp: 5.0-2020-09-10 2020-09-11 10:13:42 +01:00
Kenneth Johansson
9d20839041 make ./iop ssh_upgrade work on sdk504
./iop ssh_upgrade will now install latest image on broadcom boards.
2020-09-10 19:54:59 +02:00
Kenneth Johansson
36ec134e33 genconfig: make sure there is an empty line.
when concatenating configurations there has to be an empty line at
the end otherwise the last line could be combined with the next
configuration option.
2020-09-10 17:32:31 +02:00
Amin Ben Ramdhane
ea57418313 Ticket #2910: Separate BBF packages to their own packages with their own config files 2020-09-10 10:59:47 +01:00
Omar Kallel
c61aa804ce icwmp: 09-09-2020 2020-09-09 15:37:22 +01:00
Omar Kallel
19bbb87682 icwmp: Active notification 08/09/2020 2020-09-08 17:42:40 +01:00
Amin Ben Ramdhane
3ee01927b1 bbf: 2.0-2020-09-08 2020-09-08 12:29:00 +01:00
Roman Azarenko
d9f6b37bd7 questd: 5.2.1 2020-09-08 11:42:30 +02:00
Ronny Nilsson
c3dd0a996b base-files: move db to etc
Due to read only rootfs the /lib/db will move into /etc.
2020-09-07 12:27:43 +02:00
180 changed files with 21839 additions and 2131 deletions

View File

@@ -16,12 +16,4 @@ config BBF_TR143
bool "Compile with tr143 diagnostics features"
default y
config BBF_TR157
bool "Compile with tr157 bulkdata collector features"
default y
config BBF_TR064
bool "Compile with tr064 features"
default n
endif

View File

@@ -5,11 +5,11 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=libbbfdm
PKG_VERSION:=1.9-2020-09-01
PKG_VERSION:=3.6.0
PKG_FIXUP:=autoreconf
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/bbf.git
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=725981c900e0844107a857b53f636ae0a3a92eda
PKG_SOURCE_VERSION:=a528164bad24d3ce8fd2f5bc34f9afd574003be7
PKG_RELEASE=$(PKG_SOURCE_VERSION)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
@@ -32,7 +32,7 @@ define Package/libbbfdm
SECTION:=libs
CATEGORY:=Libraries
TITLE:=Library for broadband-forum data model
DEPENDS:=+libuci +libubox +libubus +libblobmsg-json +libjson-c +libtrace +libbbf_api +libopenssl +libmbedtls
DEPENDS:=+libuci +libubox +libubus +libblobmsg-json +libjson-c +libtrace +libbbf_api +libopenssl +libmbedtls +libcurl
endef
define Package/libbbfdm/config
@@ -44,7 +44,7 @@ define Package/libbbf_api/description
endef
define Package/libbbfdm/description
Library contains the data model tree. It includes TR181, TR104, TR143, TR157 and TR064 data models
Library contains the data model tree. It includes TR181, TR104 and TR143 data models
endef
USE_LOCAL=$(shell ls ./src/ 2>/dev/null >/dev/null && echo 1)
@@ -74,16 +74,6 @@ CONFIGURE_ARGS += \
--enable-tr143
endif
ifeq ($(CONFIG_BBF_TR157),y)
CONFIGURE_ARGS += \
--enable-tr157
endif
ifeq ($(CONFIG_BBF_TR064),y)
CONFIGURE_ARGS += \
--enable-tr064
endif
ifeq ($(CONFIG_PACKAGE_libopenssl),y)
CONFIGURE_ARGS += \
--enable-libopenssl
@@ -102,20 +92,23 @@ endef
define Package/libbbfdm/install
$(INSTALL_DIR) $(1)/lib
$(CP) $(PKG_BUILD_DIR)/bin/.libs/libbbfdm.so* $(1)/lib/
$(INSTALL_DIR) $(1)/etc/bbfdm
$(INSTALL_DIR) $(1)/etc/bbfdm/json
$(INSTALL_CONF) $(PKG_BUILD_DIR)/config/dmmap $(1)/etc/bbfdm
$(INSTALL_DIR) $(1)/usr/share/bbfdm
$(CP) $(PKG_BUILD_DIR)/scripts/functions $(1)/usr/share/bbfdm
$(INSTALL_DIR) $(1)/etc/bbfdm
$(INSTALL_DIR) $(1)/etc/bbfdm/json
$(INSTALL_DIR) $(1)/usr/lib/bbfdm
endef
define Package/libbbfdm/prerm
#!/bin/sh
rm -rf /etc/bbfdm/*
exit 0
endef
define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/include/libbbfdm
$(INSTALL_DIR) $(1)/usr/include/libbbf_api
$(CP) $(PKG_BUILD_DIR)/*.h $(1)/usr/include/libbbfdm/
$(CP) $(PKG_BUILD_DIR)/dmtree/tr181/*.h $(1)/usr/include/libbbfdm/
$(CP) $(PKG_BUILD_DIR)/dmtree/tr157/*.h $(1)/usr/include/libbbfdm/
$(CP) $(PKG_BUILD_DIR)/libbbf_api/*.h $(1)/usr/include/libbbf_api/
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_BUILD_DIR)/bin/.libs/libbbfdm.{a,so*} $(1)/usr/lib/

44
bulkdata/Makefile Executable file
View File

@@ -0,0 +1,44 @@
#
# Copyright (C) 2020 iopsys Software Solutions AB
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
PKG_NAME:=bulkdata
PKG_VERSION:=1.0.0
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
include $(INCLUDE_DIR)/package.mk
define Package/$(PKG_NAME)
SECTION:=utils
CATEGORY:=Utilities
SUBMENU:=TRx69
TITLE:=BBF BulkData Collection
DEPENDS:=+libubus +libuci +libubox +libjson-c +libcurl +curl +libblobmsg-json +libbbfdm +libbbf_api
endef
define Package/$(PKG_NAME)/description
BBF BulkData Collection
endef
define Build/Prepare
$(CP) ./src/* $(PKG_BUILD_DIR)/
endef
TARGET_CFLAGS += \
-D_GNU_SOURCE
define Package/$(PKG_NAME)/install
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/bulkdatad $(1)/usr/sbin/
$(INSTALL_DIR) $(1)/usr/lib/bbfdm
$(INSTALL_BIN) $(PKG_BUILD_DIR)/*.so $(1)/usr/lib/bbfdm
$(CP) ./files/* $(1)/
endef
$(eval $(call BuildPackage,$(PKG_NAME)))

View File

@@ -0,0 +1,43 @@
config bulkdata 'bulkdata'
option enable '0'
#Log levels: Critical=0, Warning=1, Notice=2, Info=3, Debug=4
option log_level '3'
config profile
option profile_id '1'
option enable '0'
option name ''
option nbre_of_retained_failed_reports '0'
option protocol 'http'
option encoding_type ''
option reporting_interval '86400'
option time_reference '0'
option csv_encoding_field_separator ','
option csv_encoding_row_separator '&#10;'
option csv_encoding_escape_character '&quot;'
option csv_encoding_report_format 'column'
option csv_encoding_row_time_stamp 'unix'
option json_encoding_report_format 'objecthierarchy'
option json_encoding_report_time_stamp 'unix'
option http_url ''
option http_username ''
option http_password ''
option http_compression 'none'
option http_method 'post'
option http_use_date_header '1'
option http_retry_enable '0'
option http_retry_minimum_wait_interval '5'
option http_retry_interval_multiplier '2000'
option http_persist_across_reboot '0'
config profile_parameter
option profile_id '1'
option name ''
option reference ''
config profile_http_request_uri_parameter
option profile_id '1'
option name ''
option reference ''

View File

@@ -0,0 +1,34 @@
#!/bin/sh /etc/rc.common
# Bulkdata Software
# Copyright (C) 2020 iopsys Software Solutions AB
# Author: Amin Ben Ramdhane <amin.benramdhane@pivasoftware.com>
START=99
STOP=10
USE_PROCD=1
PROG="/usr/sbin/bulkdatad"
start_service() {
local bulkdata_enable=`uci -q get bulkdata.bulkdata.enable`
if [ "$bulkdata_enable" = "1" ]; then
procd_open_instance
procd_set_param command "$PROG"
procd_set_param respawn "3" "7" "0"
procd_close_instance
fi
}
boot() {
start
}
reload_service() {
stop
start
}
service_triggers()
{
procd_add_reload_trigger bulkdata
}

23
bulkdata/src/Makefile Normal file
View File

@@ -0,0 +1,23 @@
PROG = bulkdatad
LIB = libbulkdata.so
PROG_OBJS = bulkdata.o common.o config.o http.o log.o report.o times.o buci.o
LIB_OBJS = datamodel.o
PROG_CFLAGS = $(CFLAGS) -Wall -Werror -fPIC
PROG_LDFLAGS = $(LDFLAGS) -lubus -luci -lubox -ljson-c -lcurl -lblobmsg_json -lbbfdm -lbbf_api
LIB_LDFLAGS = $(LDFLAGS) -lbbf_api
%.o: %.c
$(CC) $(PROG_CFLAGS) $(FPIC) -c -o $@ $<
all: $(PROG) $(LIB)
$(PROG): $(PROG_OBJS)
$(CC) $(PROG_CFLAGS) -o $@ $^ $(PROG_LDFLAGS)
$(LIB): $(LIB_OBJS)
$(CC) $(PROG_CFLAGS) $(LIB_LDFLAGS) -shared -o $@ $^
clean:
rm -f *.o $(PROG) $(LIB)

265
bulkdata/src/buci.c Normal file
View File

@@ -0,0 +1,265 @@
/*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* Copyright (C) 2020 iopsys Software Solutions AB
* Author: Amin Ben Ramdhane <amin.benramdhane@pivasoftware.com>
*
*/
#include <strings.h>
#include <string.h>
#include <stdlib.h>
#include <stdarg.h>
#include <errno.h>
#include <unistd.h>
#include <ctype.h>
#include "buci.h"
struct uci_context *uci_ctx = NULL;
int buci_init(void)
{
uci_ctx = uci_alloc_context();
if (!uci_ctx) {
return -1;
}
return 0;
}
int buci_fini(void)
{
if (uci_ctx) {
uci_free_context(uci_ctx);
}
return 0;
}
static bool buci_validate_section(const char *str)
{
if (!*str)
return false;
for (; *str; str++) {
unsigned char c = *str;
if (isalnum(c) || c == '_')
continue;
return false;
}
return true;
}
static int buci_init_ptr(struct uci_context *ctx, struct uci_ptr *ptr, char *package, char *section, char *option, char *value)
{
memset(ptr, 0, sizeof(struct uci_ptr));
/* value */
if (value) {
ptr->value = value;
}
ptr->package = package;
if (!ptr->package)
goto error;
ptr->section = section;
if (!ptr->section) {
ptr->target = UCI_TYPE_PACKAGE;
goto lastval;
}
ptr->option = option;
if (!ptr->option) {
ptr->target = UCI_TYPE_SECTION;
goto lastval;
} else {
ptr->target = UCI_TYPE_OPTION;
}
lastval:
if (ptr->section && !buci_validate_section(ptr->section))
ptr->flags |= UCI_LOOKUP_EXTENDED;
return 0;
error:
return -1;
}
struct uci_section *buci_walk_section(char *package, char *section_type, struct uci_section *prev_section)
{
struct uci_ptr ptr;
struct uci_element *e;
struct uci_section *next_section;
if (section_type == NULL) {
if (prev_section) {
e = &prev_section->e;
if (e->list.next == &prev_section->package->sections)
return NULL;
e = container_of(e->list.next, struct uci_element, list);
next_section = uci_to_section(e);
return next_section;
}
else {
if (buci_init_ptr(uci_ctx, &ptr, package, NULL, NULL, NULL)) {
return NULL;
}
if (uci_lookup_ptr(uci_ctx, &ptr, NULL, true) != UCI_OK) {
return NULL;
}
if (ptr.p->sections.next == &ptr.p->sections)
return NULL;
e = container_of(ptr.p->sections.next, struct uci_element, list);
next_section = uci_to_section(e);
return next_section;
}
}
else {
struct uci_list *ul, *shead = NULL;
if (prev_section) {
ul = &prev_section->e.list;
shead = &prev_section->package->sections;
}
else {
if (buci_init_ptr(uci_ctx, &ptr, package, NULL, NULL, NULL)) {
return NULL;
}
if (uci_lookup_ptr(uci_ctx, &ptr, NULL, true) != UCI_OK) {
return NULL;
}
ul = &ptr.p->sections;
shead = &ptr.p->sections;
}
while (ul->next != shead) {
e = container_of(ul->next, struct uci_element, list);
next_section = uci_to_section(e);
if (strcmp(next_section->type, section_type) == 0)
return next_section;
ul = ul->next;
}
return NULL;
}
return NULL;
}
void buci_print_list(struct uci_list *uh, char **val, char *delimiter)
{
struct uci_element *e;
static char buffer[512];
char *buf = buffer;
*buf = '\0';
uci_foreach_element(uh, e) {
if (*buf) {
strcat(buf, delimiter);
strcat(buf, e->name);
}
else {
strcpy(buf, e->name);
}
}
*val = buf;
}
struct uci_element *buci_lookup_list(struct uci_list *list, const char *name)
{
struct uci_element *e;
uci_foreach_element(list, e) {
if (!strcmp(e->name, name))
return e;
}
return NULL;
}
int uci_lookup_ptr_bysection(struct uci_context *ctx, struct uci_ptr *ptr, struct uci_section *section, char *option, char *value)
{
struct uci_element *e;
memset(ptr, 0, sizeof(struct uci_ptr));
ptr->package = section->package->e.name;
ptr->section = section->e.name;
ptr->option = option;
ptr->value = value;
ptr->flags |= UCI_LOOKUP_DONE;
ptr->p = section->package;
ptr->s = section;
if (ptr->option) {
e = buci_lookup_list(&ptr->s->options, ptr->option);
if (!e)
return UCI_OK;
ptr->o = uci_to_option(e);
ptr->last = e;
ptr->target = UCI_TYPE_OPTION;
}
else {
ptr->last = &ptr->s->e;
ptr->target = UCI_TYPE_SECTION;
}
ptr->flags |= UCI_LOOKUP_COMPLETE;
return UCI_OK;
}
char *buci_get_value_bysection(struct uci_section *section, char *option)
{
struct uci_ptr ptr;
char *val = "";
if (uci_lookup_ptr_bysection(uci_ctx, &ptr, section, option, NULL) != UCI_OK) {
return val;
}
if (!ptr.o)
return val;
if(ptr.o->type == UCI_TYPE_LIST) {
buci_print_list(&ptr.o->v.list, &val, " ");
return val;
}
if (ptr.o->v.string)
return ptr.o->v.string;
else
return val;
}
char *buci_get_value(char *package, char *section, char *option)
{
struct uci_ptr ptr;
char *val = "";
if (!section || !option)
return val;
if (buci_init_ptr(uci_ctx, &ptr, package, section, option, NULL)) {
return val;
}
if (uci_lookup_ptr(uci_ctx, &ptr, NULL, true) != UCI_OK) {
return val;
}
if (!ptr.o)
return val;
if(ptr.o->type == UCI_TYPE_LIST) {
buci_print_list(&ptr.o->v.list, &val, " ");
return val;
}
if (ptr.o->v.string)
return ptr.o->v.string;
else
return val;
}

31
bulkdata/src/buci.h Normal file
View File

@@ -0,0 +1,31 @@
/*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* Copyright (C) 2020 iopsys Software Solutions AB
* Author: Amin Ben Ramdhane <amin.benramdhane@pivasoftware.com>
*
*/
#ifndef __BUCI_H
#define __BUCI_H
#include <uci.h>
int buci_init(void);
int buci_fini(void);
struct uci_section *buci_walk_section(char *package, char *section_type, struct uci_section *prev_section);
void buci_print_list(struct uci_list *uh, char **val, char *delimiter);
struct uci_element *buci_lookup_list(struct uci_list *list, const char *name);
int uci_lookup_ptr_bysection(struct uci_context *ctx, struct uci_ptr *ptr, struct uci_section *section, char *option, char *value);
char *buci_get_value_bysection(struct uci_section *section, char *option);
char *buci_get_value(char *package, char *section, char *option);
#define buci_foreach_section(package, section_type, section) \
for (section = buci_walk_section(package, section_type, NULL); \
section != NULL; \
section = buci_walk_section(package, section_type, section))
#endif //__BUCI_H

144
bulkdata/src/bulkdata.c Normal file
View File

@@ -0,0 +1,144 @@
/*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* Copyright (C) 2020 iopsys Software Solutions AB
* Author: Amin Ben Ramdhane <amin.benramdhane@pivasoftware.com>
* Omar Kallel <omar.kallel@pivasoftware.com>
*/
#include <stdio.h>
#include <string.h>
#include <libubox/uloop.h>
#include "http.h"
#include "config.h"
#include "log.h"
#include "common.h"
#include "report.h"
#include "times.h"
#include "bulkdata.h"
struct bulkdata bulkdata_main = {0};
int profiles_number = 0;
void bulkdata_profile_cb(struct uloop_timeout *timeout);
int get_retry_period(int min)
{
srand(time(NULL));
return rand()%min + min;
}
static void bulkdata_run_profiles(struct bulkdata *bulkdata)
{
unsigned int next_period;
int i = 0;
for (i = 0; i < profiles_number; i++) {
bulkdata->profile[i].utimer.cb = bulkdata_profile_cb;
LIST_HEAD(failedreports);
bulkdata->profile[i].failed_reports = &failedreports;
next_period = get_next_period(bulkdata->profile[i].time_reference, bulkdata->profile[i].reporting_interval);
bulkdata_log(SINFO, "The session of profile_id %d will be start in %d sec", bulkdata->profile[i].profile_id, next_period);
uloop_timeout_set(&bulkdata->profile[i].utimer, next_period * 1000);
}
}
int http_send_report(struct profile *profile, char *report)
{
char *msg_in = NULL;
int http_code;
http_client_init(profile);
bulkdata_log(SINFO, "Send the report of profile_id %d to Bulkdata Collector", profile->profile_id);
http_code = http_send_message(profile, report, strlen(report), &msg_in);
http_client_exit();
return http_code;
}
void bulkdata_profile_cb(struct uloop_timeout *timeout)
{
struct profile *profile;
unsigned int http_code, retry_period;
char *report = NULL;
profile = container_of(timeout, struct profile, utimer);
time_t now = time(NULL);
bulkdata_log(SINFO, "New session of profile_id %d started", profile->profile_id);
if(profile->retry_count == 0 || profile->next_retry > now || !profile->http_retry_enable) //Perdiodic execution
create_encoding_bulkdata_report(profile, &report);
else
create_failed_report(profile, &report);
bulkdata_log(SDEBUG, "The content of the profile_id report %d is :\n==========\n%s\n==========\n", profile->profile_id, report);
http_code= http_send_report(profile, report);
if(http_code != 200){
if(profile->retry_count == 0 || profile->next_retry > now || !profile->http_retry_enable) { //Perdiodic execution
retry_period = get_retry_period(profile->http_retry_minimum_wait_interval);
profile->next_period = now + profile->reporting_interval;
profile->next_retry = now + retry_period;
profile->retry_count = 1;
profile->min_retry = profile->http_retry_minimum_wait_interval * 2;
if((profile->next_retry < profile->next_period) && profile->http_retry_enable) {
bulkdata_log(SINFO, "Retry session of profile_id %d in %d sec", profile->profile_id, retry_period);
uloop_timeout_set(timeout, 1000 * retry_period);
}
else {
bulkdata_log(SINFO, "Start New session of profile_id %d in %d sec", profile->profile_id, profile->reporting_interval);
uloop_timeout_set(timeout, 1000 * profile->reporting_interval);
}
} else { //Retry execution
retry_period= get_retry_period(profile->min_retry);
profile->min_retry*=2;
profile->next_retry+=retry_period;
profile->retry_count++;
if(profile->next_retry < profile->next_period) {
bulkdata_log(SINFO, "Retry session of profile_id %d in %d sec", profile->profile_id, retry_period);
uloop_timeout_set(timeout, 1000 * retry_period);
}
else {
bulkdata_log(SINFO, "Retry session of profile_id %d in %d sec", profile->profile_id, (profile->next_period-profile->next_retry+retry_period));
uloop_timeout_set(timeout, 1000 * (profile->next_period-profile->next_retry+retry_period));
}
}
if(profile->new_report){
bulkdata_add_failed_report(profile, profile->new_report);
FREE(profile->new_report);
}
FREE(report);
} else {
if(profile->retry_count == 0 || profile->next_retry > now || !profile->http_retry_enable) {
bulkdata_log(SINFO, "Start New session of profile_id %d in %d sec", profile->profile_id, profile->reporting_interval);
uloop_timeout_set(timeout, 1000 * profile->reporting_interval);
}
else {
bulkdata_log(SINFO, "Retry session of profile_id %d in %d sec", profile->profile_id, (profile->next_period-profile->next_retry));
uloop_timeout_set(timeout, 1000 * (profile->next_period-profile->next_retry));
}
FREE(profile->new_report);
FREE(report);
empty_failed_reports_list(profile);
profile->retry_count= 0;
}
}
int main(void)
{
struct bulkdata *bulkdata = &bulkdata_main;
if (bulkdata_config_init(bulkdata) == -1)
return -1;
bulkdata_log(SINFO, "Start bulkdatad daemon");
uloop_init();
bulkdata_run_profiles(bulkdata);
uloop_run();
uloop_done();
bulkdata_config_fini(bulkdata);
bulkdata_log(SINFO, "Stop bulkdatad daemon");
return 0;
}

18
bulkdata/src/bulkdata.h Normal file
View File

@@ -0,0 +1,18 @@
/*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* Copyright (C) 2020 iopsys Software Solutions AB
* Author: Amin Ben Ramdhane <amin.benramdhane@pivasoftware.com>
*
*/
#ifndef __BULKDATA_H
#define __BULKDATA_H
extern struct bulkdata bulkdata_main;
extern int profiles_number;
#endif /* __BULKDATA_H */

105
bulkdata/src/bulkdata.md Normal file
View File

@@ -0,0 +1,105 @@
# README #
bulkdatad is an implementation of The HTTP bulk data collection mechanism which is an extended feature of CPE and other agents implementing TR-069(CWMP) or TR-369(USP), defined by the Broadband Forum. It provides a means by which an Auto-Configuration Server (ACS), or USP Controller, can configure an agent to periodically send a JSON or CSV formatted set of Device information to an HTTP server running a data collection application.
## Configuration File ##
The bulkdatad UCI configuration is located in **'/etc/config/bulkdata'**, and contains 4 sections: **bulkdata**, **profile**, **profile\_parameter** and **profile\_http\_request\_uri\_parameter**.
```
config bulkdata 'bulkdata'
option enable '0'
option log_level '3'
config profile
option profile_id '1'
option enable '0'
option csv_encoding_row_time_stamp 'unix'
option json_encoding_report_time_stamp 'unix'
option http_retry_minimum_wait_interval '5'
option http_retry_interval_multiplier '2000'
config profile_parameter
option profile_id '1'
option name ''
option reference ''
config profile_http_request_uri_parameter
option profile_id '1'
option name ''
option reference ''
```
### bulkdata section ###
It defines **bulkdata configuration**: enable and log\_level.
| Name | Type | Description |
| ----------- | ------- | ----------------------------------------------------------------------------------------------- |
| `enable` | boolean | Enables the BulkData feature if set to **1**. |
| `log_level` | integer | Specifies the log type to use, by default **'INFO'**. The possible types are **'EMERG', 'ALERT', 'CRITIC' ,'ERROR', 'WARNING', 'NOTICE', 'INFO' and 'DEBUG'**. |
### profile section ###
It defines **the profile section configuration**: enable, name,... The possible options for **profile** section are listed below:
| Name | Type | Description |
| ---------------------------------- | ------- | ---------------------------------------------- |
| `profile_id` | integer | The profile id to use. |
| `enable` | boolean | If set to **1**, enables the bulkdata profile. |
| `name` | string | The name of the profile. |
| `nbre_of_retained_failed_reports` | integer | The number of failed reports to be retained and transmitted at the end of the current reporting interval. |
| `protocol` | string | The protocol used for the collection profile. |
| `encoding_type` | string | The encoding type used for the collection profile. |
| `reporting_interval` | integer | The reporting interval in seconds. |
| `time_reference` | integer | The time reference to determine when the profile will be transmitted to the ACS collector. |
| `csv_encoding_field_separator` | string | The field separator to use when encoding CSV data. |
| `csv_encoding_row_separator` | string | The row separator to use when encoding CSV data. |
| `csv_encoding_escape_character` | string | The escape character to use when encoding CSV data. |
| `csv_encoding_report_format` | string | Describes how reports will be formatted. Two possible formats are supported: **'ParameterPerRow' and 'ParameterPerColumn'**. |
| `csv_encoding_row_time_stamp` | string | The format of the timestamp to use for data inserted into the row. The row time stamp supported are **'Unix-Epoch', 'ISO-8601' and 'None'**. |
| `json_encoding_report_format` | string | Describes the report format. The supported report formats are **'ObjectHierarchy' and 'NameValuePair'**. |
| `json_encoding_report_time_stamp` | string | The format of the timestamp to use for the JSON Object named "CollectionTime". The supported timestamp are **'Unix-Epoch', 'ISO-8601' and 'None'**. |
| `http_url` | string | The URL of the collection server. |
| `http_username` | string | The username of the collection server. |
| `http_password` | string | The password of the collection server. |
| `http_compression` | string | The HTTP Compression mechanism used by the collection server. The supported compression mechanism are **'GZIP', 'Compress' and 'Deflate'**. |
| `http_method` | string | The HTTP method used by the collection server. Two methods are supported: **'POST' and 'PUT'**. |
| `http_use_date_header` | boolean | If set to **1**, the CPE encodes the HTTP Date Header. |
| `http_retry_enable` | boolean | If set to **1**, the CPE retries unsuccessful attempts to transfer data. |
| `http_retry_minimum_wait_interval` | integer | The data transfer retry wait interval. |
| `http_retry_interval_multiplier` | integer | The retry interval multiplier. |
| `http_persist_across_reboot` | boolean | If set to **1**, failed data transfers must be persisted across reboots. |
### profile_parameter section ###
It defines **the profile\_parameter section configuration**: profile\_id, name, reference.
| Name | Type | Description |
| ------------ | ------- | --------------------------------------- |
| `profile_id` | integer | The id of the used profile. |
| `name` | string | The name of the profile parameter. |
| `reference` | string | The reference of the profile parameter. |
### profile_http_request_uri_parameter section ###
It defines **the profile\_http\_request\_uri\_parameter section configuration**: profile\_id, name, reference.
| Name | Type | Description |
| ------------ | ------- | --------------------------------------- |
| `profile_id` | integer | The id of the used profile. |
| `name` | string | The name of the Request-URI parameter. |
| `reference` | string | The reference of the profile parameter. |
## Dependencies ##
To successfully build bulkdatad, the following libraries are needed:
| Dependency | Link | License |
| ----------- | ------------------------------------------- | -------------- |
| libuci | https://git.openwrt.org/project/uci.git | LGPL 2.1 |
| libubox | https://git.openwrt.org/project/libubox.git | BSD |
| libjson-c | https://s3.amazonaws.com/json-c_releases | MIT |
| libcurl | https://dl.uxnr.de/mirror/curl | MIT |
| libbbfdm | https://dev.iopsys.eu/iopsys/bbf.git | LGPL 2.1 |

450
bulkdata/src/common.c Normal file
View File

@@ -0,0 +1,450 @@
/*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* Copyright (C) 2020 iopsys Software Solutions AB
* Author: Amin Ben Ramdhane <amin.benramdhane@pivasoftware.com>
* Omar Kallel <omar.kallel@pivasoftware.com>
*/
#include "common.h"
static pathnode *head = NULL;
static pathnode *temphead = NULL;
int bulkdata_dm_ctx_init(struct dmctx *ctx)
{
struct bulkdata *bulkdata = &bulkdata_main;
dm_ctx_init(ctx, bulkdata->instance_mode);
return 0;
}
int bulkdata_dm_ctx_clean(struct dmctx *ctx)
{
dm_ctx_clean(ctx);
return 0;
}
static char **str_split(const char* str, const char* delim, size_t* numtokens)
{
char *s = strdup(str);
size_t tokens_alloc = 1;
size_t tokens_used = 0;
char **tokens = calloc(tokens_alloc, sizeof(char*));
char *token, *strtok_ctx;
for (token = strtok_r(s, delim, &strtok_ctx); token != NULL; token = strtok_r(NULL, delim, &strtok_ctx)) {
if (tokens_used == tokens_alloc) {
tokens_alloc *= 2;
tokens = realloc(tokens, tokens_alloc * sizeof(char*));
}
tokens[tokens_used++] = strdup(token);
}
// cleanup
if (tokens_used == 0) {
FREE(tokens);
} else {
tokens = realloc(tokens, tokens_used * sizeof(char*));
}
*numtokens = tokens_used;
FREE(s);
return tokens;
}
static bool bulkdata_match(const char *string, const char *pattern)
{
regex_t re;
if (regcomp(&re, pattern, REG_EXTENDED) != 0) return 0;
int status = regexec(&re, string, 0, NULL, 0);
regfree(&re);
if (status != 0) return false;
return true;
}
static bool is_res_required(char *str, int *start, int *len)
{
char temp_char[NAME_MAX] = {'\0'};
if (bulkdata_match(str, GLOB_CHAR)) {
int s_len = strlen(str);
int b_len = s_len, p_len = s_len;
char *star = strchr(str, '*');
if(star)
s_len = star - str;
*start = MIN(MIN(s_len, p_len), b_len);
if (*start == s_len)
*len = 1;
strncpy(temp_char, str+*start, *len);
if (bulkdata_match(temp_char, "[*+]+"))
return true;
}
*start = strlen(str);
return false;
}
static void insert(char *data, bool active)
{
pathnode *link = (pathnode*) calloc(1, sizeof(pathnode));
if(!link) {
return;
}
link->ref_path = data;
if(active) {
link->next = head;
head = link;
} else {
link->next = temphead;
temphead = link;
}
}
static void swap_heads(void)
{
pathnode *temp = head;
head = temphead;
temphead = temp;
}
static void deleteList(void)
{
pathnode *ptr = head, *temp;
while(ptr != NULL) {
temp = ptr;
free(ptr->ref_path);
if(ptr->next != NULL) {
ptr = ptr->next;
} else {
ptr = NULL;
}
free(temp);
}
head = NULL;
swap_heads();
}
void bulkdata_add_data_to_list(struct list_head *dup_list, char *name, char *value, char *type)
{
struct resultsnode *link;
link = calloc(1, sizeof(struct resultsnode));
list_add_tail(&link->list, dup_list);
link->name = strdup(name);
link->data = strdup(value);
link->type = strdup(type);
}
void bulkdata_delete_data_from_list(struct resultsnode *link)
{
list_del(&link->list);
FREE(link->name);
FREE(link->data);
FREE(link->type);
FREE(link);
}
void bulkdata_free_data_from_list(struct list_head *dup_list)
{
struct resultsnode *link;
while (dup_list->next != dup_list) {
link = list_entry(dup_list->next, struct resultsnode, list);
bulkdata_delete_data_from_list(link);
}
}
static bool bulkdata_get(int operation, char *path, struct dmctx *dm_ctx)
{
int fault = 0;
switch(operation) {
case CMD_GET_NAME:
fault = dm_entry_param_method(dm_ctx, CMD_GET_NAME, path, "true", NULL);
break;
case CMD_GET_VALUE:
fault = dm_entry_param_method(dm_ctx, CMD_GET_VALUE, path, NULL, NULL);
break;
default:
return false;
}
if (dm_ctx->list_fault_param.next != &dm_ctx->list_fault_param) {
return false;
}
if (fault) {
return false;
}
return true;
}
char *bulkdata_get_value_param(char *path)
{
struct dmctx ctx = {0};
struct dm_parameter *n;
char *value = NULL;
bulkdata_dm_ctx_init(&ctx);
if(bulkdata_get(CMD_GET_VALUE, path, &ctx)) {
list_for_each_entry(n, &ctx.list_parameter, list) {
value = strdup(n->data);
break;
}
}
bulkdata_dm_ctx_clean(&ctx);
return value;
}
void bulkdata_get_value(char *path, struct list_head *list)
{
struct dmctx ctx = {0};
struct dm_parameter *n;
bulkdata_dm_ctx_init(&ctx);
if(bulkdata_get(CMD_GET_VALUE, path, &ctx)) {
list_for_each_entry(n, &ctx.list_parameter, list) {
bulkdata_add_data_to_list(list, n->name, n->data, n->type);
}
}
bulkdata_dm_ctx_clean(&ctx);
}
bool bulkdata_get_name(char *path)
{
struct dmctx ctx = {0};
struct dm_parameter *n;
bool ret = false;
bulkdata_dm_ctx_init(&ctx);
if(bulkdata_get(CMD_GET_NAME, path, &ctx)) {
list_for_each_entry(n, &ctx.list_parameter, list) {
insert(strdup(n->name), false);
}
ret = true;
}
bulkdata_dm_ctx_clean(&ctx);
return ret;
}
static void fill_node_path(void)
{
pathnode *p=head;
while(p!=NULL) {
bulkdata_get_name(p->ref_path);
p=p->next;
}
deleteList();
}
static void bulkdata_filter_results(char *path, int start, int end)
{
int startpos = start, m_index = 0, m_len = 0;
char *pp = path + startpos;
char exp[NAME_MAX] = {'\0'};
if(start >= end) {
return;
}
if(!is_res_required(pp, &m_index, &m_len)) {
//append rest of the path to the final list
if(pp == path ) {
insert(strdup(pp), true);
return;
}
pathnode *p = head;
while(p != NULL) {
char name[NAME_MAX] = {'\0'};
strcpy(name, p->ref_path);
strcat(name, pp);
insert(strdup(name), false);
p = p->next;
}
deleteList();
return;
}
// Get the string before the match
char name[NAME_MAX]={'\0'};
strncpy(name, pp, m_index);
pathnode *p = head;
if(p == NULL) {
insert(strdup(name), false);
}
while(p != NULL) {
char ref_name[NAME_MAX] = {'\0'};
sprintf(ref_name, "%s%s", p->ref_path, name);
insert(strdup(ref_name), false);
p = p->next;
}
deleteList();
startpos += m_index;
strncpy(exp, pp+m_index, m_len);
pp = path + startpos;
fill_node_path();
startpos += 2;
bulkdata_filter_results(path, startpos, end);
}
static void bulkdata_parse_results(struct list_head *list)
{
pathnode *p = head;
while(p != NULL) {
bulkdata_get_value(p->ref_path, list);
p = p->next;
}
deleteList();
}
void bulkdata_get_value_results(char *path, struct list_head *list)
{
bulkdata_filter_results(path, 0, strlen(path));
bulkdata_parse_results(list);
}
char *create_request_url(struct profile *profile)
{
int i = 0, http_uri_number = profile->profile_http_request_uri_parameter_number;
char *value, *uri_param = NULL, *uri_tmp = NULL, *http_url = NULL;
for (i = 0; i < http_uri_number; i++)
{
if((profile->profile_http_uri_parameter[i].reference == NULL) || (profile->profile_http_uri_parameter[i].name == NULL))
continue;
value = bulkdata_get_value_param(profile->profile_http_uri_parameter[i].reference);
if(!uri_param) {
asprintf(&uri_param, "&%s=%s", profile->profile_http_uri_parameter[i].name, value);
free(value);
}
else {
uri_tmp = strdup(uri_param);
free(uri_param);
asprintf(&uri_param, "%s&%s=%s", uri_tmp, profile->profile_http_uri_parameter[i].name, value);
free(value);
free(uri_tmp);
}
}
if(uri_param) {
asprintf(&http_url, "%s%s", profile->http_url, uri_param);
free(uri_param);
} else {
asprintf(&http_url, "%s", profile->http_url);
}
return http_url;
}
char *get_bulkdata_profile_parameter_name(char *paramref, char *paramname, char *param)
{
char **paramarr, *idx1 = NULL, *idx2 = NULL, *res = NULL, *instance = NULL, *tmp = NULL, *retparam = NULL, *s = NULL;
int i, j = 0;
size_t length;
if(paramname == NULL || strlen(paramname) <= 0)
return strdup(param);
paramarr = str_split(paramref, "*", &length);
res = strdup(paramname);
for(i = 0; i < length; i++) {
if(i == length - 1)
break;
j++;
idx1 = strstr(param, paramarr[i]);
idx2 = strstr(param, paramarr[i+1]);
instance = (char*)calloc(idx2 - idx1 - strlen(paramarr[i]) + 1, sizeof(char));
memcpy(instance, idx1 + strlen(paramarr[i]), idx2 - idx1 - strlen(paramarr[i]));
tmp = strdup(res);
FREE(res);
asprintf(&res, "%s.%s", tmp, instance);
FREE(tmp);
FREE(instance);
}
if ((s = strstr(param,paramarr[j]) ) != NULL && strlen(s) == strlen(paramarr[j]))
asprintf(&retparam, "%s", res);
else
asprintf(&retparam, "%s.%s", res, strstr(param, paramarr[j]) + strlen(paramarr[j]));
FREE(res);
for(int k = 0; k < length; k++)
FREE(paramarr[k]);
FREE(paramarr);
return retparam;
}
void append_string_to_string(char *strappend, char **target)
{
char *tmp = NULL;
if(strappend == NULL || strlen(strappend) <= 0)
return;
if(*target == NULL || strlen(*target) <= 0) {
*target = strdup(strappend);
return;
} else {
tmp = strdup(*target);
FREE(*target);
}
asprintf(target, "%s%s", tmp, strappend);
FREE(tmp);
}
void bulkdata_add_failed_report(struct profile *profile, char *freport)
{
struct failed_reports *report, *retreport, *rtmp;
if(profile->nbre_failed_reports < profile->nbre_of_retained_failed_reports || profile->nbre_of_retained_failed_reports < 0) {
profile->nbre_failed_reports++;
} else {
list_for_each_entry_safe(retreport, rtmp, profile->failed_reports, list) {
bulkdata_delete_failed_report(retreport);
break;
}
}
report = calloc(1, sizeof(struct failed_reports));
list_add_tail(&report->list, profile->failed_reports);
report->freport= strdup(freport);
}
void bulkdata_delete_failed_report(struct failed_reports *report)
{
if(report != NULL) {
list_del(&report->list);
FREE(report->freport);
FREE(report);
}
}
struct failed_reports* empty_failed_reports_list(struct profile *profile)
{
struct failed_reports *report, *rtmp;
if(list_empty(profile->failed_reports))
return NULL;
list_for_each_entry_safe(report, rtmp, profile->failed_reports, list) {
list_del(&report->list);
FREE(report->freport);
FREE(report);
}
return NULL;
}
void add_failed_reports_to_report_csv(struct profile *profile, char **report, int isnext)
{
struct failed_reports *retreport = NULL;
int j = 0;
if(list_empty(profile->failed_reports))
return;
list_for_each_entry(retreport, profile->failed_reports, list) {
if(!j && isnext) {
j = 1;
continue;
}
append_string_to_string(retreport->freport, report);
}
}

69
bulkdata/src/common.h Normal file
View File

@@ -0,0 +1,69 @@
/*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* Copyright (C) 2020 iopsys Software Solutions AB
* Author: Amin Ben Ramdhane <amin.benramdhane@pivasoftware.com>
*
*/
#ifndef __COMMON_H
#define __COMMON_H
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <regex.h>
#include <sys/param.h>
#include <libubox/blobmsg.h>
#include <libubox/blobmsg_json.h>
#include <libubox/utils.h>
#include <libubus.h>
#include <libbbfdm/dmentry.h>
#include <libbbfdm/dmbbfcommon.h>
#include "config.h"
#include "log.h"
#include "bulkdata.h"
typedef struct pathnode {
char *ref_path;
struct pathnode *next;
} pathnode;
typedef struct resultsnode {
struct list_head list;
char *name;
char *data;
char *type;
} resultsnode;
struct failed_reports {
struct list_head list;
char *freport;
};
#define GLOB_CHAR "[[+*]+"
int bulkdata_dm_ctx_init(struct dmctx *ctx);
int bulkdata_dm_ctx_clean(struct dmctx *ctx);
char *bulkdata_get_value_param(char *path);
void bulkdata_get_value(char *path, struct list_head *list);
void bulkdata_free_data_from_list(struct list_head *dup_list);
void bulkdata_get_value_results(char *path, struct list_head *list);
char *create_request_url(struct profile *profile);
char *get_bulkdata_profile_parameter_name(char *paramref, char *paramname, char *param);
void append_string_to_string(char *strappend, char **target);
void bulkdata_add_failed_report(struct profile *profile, char *freport);
void bulkdata_delete_failed_report(struct failed_reports *report);
struct failed_reports *empty_failed_reports_list(struct profile *profile);
void add_failed_reports_to_report_csv(struct profile *profile, char **report, int isnext);
#endif //__COMMON_H

523
bulkdata/src/config.c Normal file
View File

@@ -0,0 +1,523 @@
/*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* Copyright (C) 2020 iopsys Software Solutions AB
* Author: Amin Ben Ramdhane <amin.benramdhane@pivasoftware.com>
* Omar Kallel <omar.kallel@pivasoftware.com>
*/
#include <stdio.h>
#include <strings.h>
#include <string.h>
#include <stdlib.h>
#include <stdarg.h>
#include "log.h"
#include "config.h"
#include "buci.h"
#include "common.h"
#include "bulkdata.h"
int get_log_level_config(struct bulkdata *bulkdata)
{
char *value = NULL;
buci_init();
value = buci_get_value("bulkdata", "bulkdata", "log_level");
if(value != NULL && *value != '\0')
bulkdata->log_level = atoi(value);
else
bulkdata->log_level = DEFAULT_LOGLEVEL;
bulkdata_log(SDEBUG,"Log Level of Bulkdata is : %d", bulkdata->log_level);
buci_fini();
return 0;
}
int get_amd_version_config(struct bulkdata *bulkdata)
{
char *value = NULL;
buci_init();
value = buci_get_value("cwmp", "cpe", "amd_version");
if(value != NULL && *value != '\0')
bulkdata->amd_version = atoi(value);
else
bulkdata->amd_version = DEFAULT_AMD_VERSION;
bulkdata_log(SDEBUG,"CWMP Amendment Version is : %d", bulkdata->amd_version);
buci_fini();
return 0;
}
int get_instance_mode_config(struct bulkdata *bulkdata)
{
char *value = NULL;
buci_init();
value = buci_get_value("cwmp", "cpe", "instance_mode");
if(value != NULL && *value != '\0') {
if(!strcmp(value, "InstanceNumber"))
bulkdata->instance_mode = INSTANCE_MODE_NUMBER;
else
bulkdata->instance_mode = INSTANCE_MODE_ALIAS;
}
else
bulkdata->instance_mode = DEFAULT_INSTANCE_MODE;
bulkdata_log(SDEBUG,"CWMP Instance Mode is : %d", bulkdata->instance_mode);
buci_fini();
return 0;
}
int get_device_id_config(struct bulkdata *bulkdata)
{
struct dmctx dmctx = {0};
bulkdata_dm_ctx_init(&dmctx);
bulkdata->device_id.manufacturer_oui = bulkdata_get_value_param("Device.DeviceInfo.ManufacturerOUI");
bulkdata->device_id.product_class = bulkdata_get_value_param("Device.DeviceInfo.ProductClass");
bulkdata->device_id.serial_number = bulkdata_get_value_param("Device.DeviceInfo.SerialNumber");
bulkdata_dm_ctx_clean(&dmctx);
return 0;
}
int load_profile_config(struct bulkdata *bulkdata, struct uci_section *s, int i)
{
char *value = NULL;
value = buci_get_value_bysection(s, "profile_id");
if(value != NULL && *value != '\0') {
bulkdata->profile[i].profile_id = atoi(value);
value = NULL;
bulkdata_log(SDEBUG,"The profile_id of profile_id %d is : %d", i, bulkdata->profile[i].profile_id);
} else
return -1;
value = buci_get_value_bysection(s, "nbre_of_retained_failed_reports");
if(value != NULL && *value != '\0') {
bulkdata->profile[i].nbre_of_retained_failed_reports = atoi(value);
value = NULL;
bulkdata_log(SDEBUG,"The nombre of retained failed reports of profile_id %d is : %d", bulkdata->profile[i].profile_id, bulkdata->profile[i].nbre_of_retained_failed_reports);
}
value = buci_get_value_bysection(s, "protocol");
if(value != NULL && *value != '\0' && strcasecmp(value, "http")==0) {
bulkdata->profile[i].protocol = strdup(value);
value = NULL;
bulkdata_log(SDEBUG,"The protocol of profile_id %d is : %s", bulkdata->profile[i].profile_id, bulkdata->profile[i].protocol);
} else
return -1;
value = buci_get_value_bysection(s, "encoding_type");
if(value != NULL && *value != '\0') {
bulkdata->profile[i].encoding_type = strdup(value);
value = NULL;
bulkdata_log(SDEBUG,"The encoding type of profile_id %d is : %s", bulkdata->profile[i].profile_id, bulkdata->profile[i].encoding_type);
} else
return -1;
value = buci_get_value_bysection(s, "reporting_interval");
if(value != NULL && *value != '\0') {
bulkdata->profile[i].reporting_interval = atoi(value);
value = NULL;
bulkdata_log(SDEBUG,"The reporting interval of profile_id %d is : %d", bulkdata->profile[i].profile_id, bulkdata->profile[i].reporting_interval);
} else
return -1;
value = buci_get_value_bysection(s, "time_reference");
if(value != NULL && *value != '\0') {
bulkdata->profile[i].time_reference = atoi(value);
value = NULL;
bulkdata_log(SDEBUG,"The time reference of profile_id %d is : %ld", bulkdata->profile[i].profile_id, bulkdata->profile[i].time_reference);
} else
return -1;
value = buci_get_value_bysection(s, "csv_encoding_field_separator");
if(value != NULL && *value != '\0') {
bulkdata->profile[i].csv_encoding_field_separator = strdup(value);
value = NULL;
bulkdata_log(SDEBUG,"The csv encoding field separator of profile_id %d is : %s", bulkdata->profile[i].profile_id, bulkdata->profile[i].csv_encoding_field_separator);
} else
return -1;
value = buci_get_value_bysection(s, "csv_encoding_row_separator");
if(value != NULL && *value != '\0') {
bulkdata->profile[i].csv_encoding_row_separator = strdup(value);
value = NULL;
bulkdata_log(SDEBUG,"The csv encoding row separator of profile_id %d is : %s", bulkdata->profile[i].profile_id, bulkdata->profile[i].csv_encoding_row_separator);
} else
return -1;
value = buci_get_value_bysection(s, "csv_encoding_escape_character");
if(value != NULL && *value != '\0') {
bulkdata->profile[i].csv_encoding_escape_character = strdup(value);
value = NULL;
bulkdata_log(SDEBUG,"The csv encoding escape character of profile_id %d is : %s", bulkdata->profile[i].profile_id, bulkdata->profile[i].csv_encoding_escape_character);
}
value = buci_get_value_bysection(s, "csv_encoding_report_format");
if(value != NULL && *value != '\0') {
bulkdata->profile[i].csv_encoding_report_format = strdup(value);
value = NULL;
bulkdata_log(SDEBUG,"The csv encoding report format of profile_id %d is : %s", bulkdata->profile[i].profile_id, bulkdata->profile[i].csv_encoding_report_format);
} else
return -1;
value = buci_get_value_bysection(s, "csv_encoding_row_time_stamp");
if(value != NULL && *value != '\0') {
bulkdata->profile[i].csv_encoding_row_time_stamp = strdup(value);
value = NULL;
bulkdata_log(SDEBUG,"The csv encoding row time stamp of profile_id %d is : %s", bulkdata->profile[i].profile_id, bulkdata->profile[i].csv_encoding_row_time_stamp);
} else
return -1;
value = buci_get_value_bysection(s, "json_encoding_report_format");
if(value != NULL && *value != '\0') {
bulkdata->profile[i].json_encoding_report_format = strdup(value);
value = NULL;
bulkdata_log(SDEBUG,"The json encoding report format of profile_id %d is : %s", bulkdata->profile[i].profile_id, bulkdata->profile[i].json_encoding_report_format);
} else
return -1;
value = buci_get_value_bysection(s, "json_encoding_report_time_stamp");
if(value != NULL && *value != '\0') {
bulkdata->profile[i].json_encoding_report_time_stamp = strdup(value);
value = NULL;
bulkdata_log(SDEBUG,"The json encoding report time stamp of profile_id %d is : %s", bulkdata->profile[i].profile_id, bulkdata->profile[i].json_encoding_report_time_stamp);
} else
return -1;
value = buci_get_value_bysection(s, "http_url");
if(value != NULL && *value != '\0') {
char *url = NULL;
asprintf(&url, "%s?oui=%s&pc=%s&sn=%s", value, bulkdata->device_id.manufacturer_oui, bulkdata->device_id.serial_number, bulkdata->device_id.serial_number);
bulkdata->profile[i].http_url = strdup(url);
free(url);
value = NULL;
bulkdata_log(SDEBUG,"The HTTP url of profile_id %d is : %s", bulkdata->profile[i].profile_id, bulkdata->profile[i].http_url);
} else
return -1;
value = buci_get_value_bysection(s, "http_username");
if(value != NULL && *value != '\0') {
bulkdata->profile[i].http_username = strdup(value);
value = NULL;
bulkdata_log(SDEBUG,"The HTTP username of profile_id %d is : %s", bulkdata->profile[i].profile_id, bulkdata->profile[i].http_username);
} else {
bulkdata->profile[i].http_username = NULL;
}
value = buci_get_value_bysection(s, "http_password");
if(value != NULL && *value != '\0') {
bulkdata->profile[i].http_password = strdup(value);
value = NULL;
bulkdata_log(SDEBUG,"The HTTP password of profile_id %d is : %s", bulkdata->profile[i].profile_id, bulkdata->profile[i].http_password);
} else {
bulkdata->profile[i].http_password = NULL;
}
value = buci_get_value_bysection(s, "http_compression");
if(value != NULL && *value != '\0') {
bulkdata->profile[i].http_compression = strdup(value);
value = NULL;
bulkdata_log(SDEBUG,"The HTTP compression of profile_id %d is : %s", bulkdata->profile[i].profile_id, bulkdata->profile[i].http_compression);
} else
return -1;
value = buci_get_value_bysection(s, "http_method");
if(value != NULL && *value != '\0') {
bulkdata->profile[i].http_method = strdup(value);
value = NULL;
bulkdata_log(SDEBUG,"The HTTP method of profile_id %d is : %s", bulkdata->profile[i].profile_id, bulkdata->profile[i].http_method);
} else
return -1;
value = buci_get_value_bysection(s, "http_use_date_header");
if(value != NULL && *value != '\0') {
bulkdata->profile[i].http_use_date_header = atoi(value);
value = NULL;
bulkdata_log(SDEBUG,"The HTTP use date header of profile_id %d is : %d", bulkdata->profile[i].profile_id, bulkdata->profile[i].http_use_date_header);
}
value = buci_get_value_bysection(s, "http_retry_enable");
if(value != NULL && *value != '\0') {
bulkdata->profile[i].http_retry_enable = atoi(value);
value = NULL;
bulkdata_log(SDEBUG,"The HTTP retry enable of profile_id %d is : %d", bulkdata->profile[i].profile_id, bulkdata->profile[i].http_retry_enable);
} else
return -1;
value = buci_get_value_bysection(s, "http_retry_minimum_wait_interval");
if(value != NULL && *value != '\0') {
bulkdata->profile[i].http_retry_minimum_wait_interval = atoi(value);
value = NULL;
bulkdata_log(SDEBUG,"The HTTP retry minimum wait interval of profile_id %d is : %d", bulkdata->profile[i].profile_id, bulkdata->profile[i].http_retry_minimum_wait_interval);
}
value = buci_get_value_bysection(s, "http_retry_interval_multiplier");
if(value != NULL && *value != '\0') {
bulkdata->profile[i].http_retry_interval_multiplier = atoi(value);
value = NULL;
bulkdata_log(SDEBUG,"The HTTP retry interval multiplier of profile_id %d is : %d", bulkdata->profile[i].profile_id, bulkdata->profile[i].http_retry_interval_multiplier);
}
value = buci_get_value_bysection(s, "http_persist_across_reboot");
if(value != NULL && *value != '\0') {
bulkdata->profile[i].http_persist_across_reboot = atoi(value);
value = NULL;
bulkdata_log(SDEBUG,"The HTTP persist across reboot of profile_id %d is : %d", bulkdata->profile[i].profile_id, bulkdata->profile[i].http_persist_across_reboot);
} else
return -1;
value = buci_get_value_bysection(s, "http_ssl_capath");
if(value != NULL && *value != '\0') {
bulkdata->profile[i].http_ssl_capath = strdup(value);
value = NULL;
bulkdata_log(SDEBUG,"The HTTP ssl capath of profile_id %d is : %s", bulkdata->profile[i].profile_id, bulkdata->profile[i].http_ssl_capath);
} else {
bulkdata->profile[i].http_ssl_capath = NULL;
}
value = buci_get_value_bysection(s, "http_insecure_enable");
if(value != NULL && *value != '\0') {
bulkdata->profile[i].http_insecure_enable = atoi(value);
value = NULL;
bulkdata_log(SDEBUG,"The HTTP insecure enable of profile_id %d is : %d", bulkdata->profile[i].profile_id, bulkdata->profile[i].http_insecure_enable);
}
bulkdata->profile[i].retry_count = 0;
bulkdata->profile[i].nbre_failed_reports = 0;
return 0;
}
int get_profiles_enable(struct bulkdata *bulkdata)
{
struct uci_section *s;
char *enable;
int i = 0, nbr_profiles = 0;
buci_init();
buci_foreach_section("bulkdata", "profile", s) {
enable = buci_get_value_bysection(s, "enable");
if(strcmp(enable, "1") == 0) {
nbr_profiles++;
}
}
if(nbr_profiles != 0)
bulkdata->profile = calloc(2, sizeof(struct profile));
buci_foreach_section("bulkdata", "profile", s) {
enable = buci_get_value_bysection(s, "enable");
if(strcmp(enable, "1") == 0) {
if(load_profile_config(bulkdata, s, i) == -1) {
bulkdata_log(SCRIT,"Not able to start bulkdata: some required bulkdata configurations in profile must be set");
return -1;
}
i++;
}
}
profiles_number = nbr_profiles;
buci_fini();
return 0;
}
int load_profile_parameter_config(struct bulkdata *bulkdata, struct uci_section *s, int i, int j)
{
char *value = NULL;
value = buci_get_value_bysection(s, "name");
if(value != NULL && *value != '\0') {
bulkdata->profile[i].profile_parameter[j].name = strdup(value);
value = NULL;
bulkdata_log(SDEBUG,"The parameter name %d of profile_id %d is : %s", j+1, bulkdata->profile[i].profile_id, bulkdata->profile[i].profile_parameter[j].name);
} else {
bulkdata->profile[i].profile_parameter[j].name = NULL;
}
value = buci_get_value_bysection(s, "reference");
if(value != NULL && *value != '\0') {
bulkdata->profile[i].profile_parameter[j].reference = strdup(value);
value = NULL;
bulkdata_log(SDEBUG,"The parameter reference %d of profile_id %d is : %s", j+1, bulkdata->profile[i].profile_id, bulkdata->profile[i].profile_parameter[j].reference);
} else
return -1;
return 0;
}
int get_profiles_parameters(struct bulkdata *bulkdata)
{
struct uci_section *s;
char *profile_id;
int i, j, nbr_profile_parameters;
buci_init();
for (i = 0; i < profiles_number; i++) {
j = 0;
nbr_profile_parameters = 0;
buci_foreach_section("bulkdata", "profile_parameter", s) {
profile_id = buci_get_value_bysection(s, "profile_id");
if(bulkdata->profile[i].profile_id != atoi(profile_id))
continue;
nbr_profile_parameters++;
if(nbr_profile_parameters == 1) {
bulkdata->profile[i].profile_parameter = calloc(1, sizeof(struct profile_parameter));
} else {
bulkdata->profile[i].profile_parameter = realloc(bulkdata->profile[i].profile_parameter, nbr_profile_parameters * sizeof(struct profile_parameter));
}
if(load_profile_parameter_config(bulkdata, s, i, j) == -1) {
bulkdata_log(SCRIT,"Not able to start bulkdata: some required bulkdata configurations in profile_parameter must be set");
return -1;
}
j++;
}
bulkdata->profile[i].profile_parameter_number = nbr_profile_parameters;
}
buci_fini();
return 0;
}
int load_profile_http_request_uri_parameter_config(struct bulkdata *bulkdata, struct uci_section *s, int i, int j)
{
char *value = NULL;
value = buci_get_value_bysection(s, "name");
if(value != NULL && *value != '\0') {
bulkdata->profile[i].profile_http_uri_parameter[j].name = strdup(value);
value = NULL;
bulkdata_log(SDEBUG,"The HTTP resuest URI parameter name %d of profile_id %d is : %s", j+1, bulkdata->profile[i].profile_id, bulkdata->profile[i].profile_http_uri_parameter[j].name);
} else
return -1;
value = buci_get_value_bysection(s, "reference");
if(value != NULL && *value != '\0') {
bulkdata->profile[i].profile_http_uri_parameter[j].reference = strdup(value);
value = NULL;
bulkdata_log(SDEBUG,"The HTTP resuest URI parameter reference %d of profile_id %d is : %s", j+1, bulkdata->profile[i].profile_id, bulkdata->profile[i].profile_http_uri_parameter[j].reference);
} else
return -1;
return 0;
}
int get_profile_http_request_uri_parameter(struct bulkdata *bulkdata)
{
struct uci_section *s;
char *profile_id;
int i, j, nbr_profile_http_request_uri_parameter;
buci_init();
for (i = 0; i < profiles_number; i++) {
j = 0;
nbr_profile_http_request_uri_parameter = 0;
buci_foreach_section("bulkdata", "profile_http_request_uri_parameter", s) {
profile_id = buci_get_value_bysection(s, "profile_id");
if(bulkdata->profile[i].profile_id != atoi(profile_id))
continue;
nbr_profile_http_request_uri_parameter++;
if(nbr_profile_http_request_uri_parameter == 1) {
bulkdata->profile[i].profile_http_uri_parameter = calloc(1, sizeof(struct profile_http_request_uri_parameter));
} else {
bulkdata->profile[i].profile_http_uri_parameter = realloc(bulkdata->profile[i].profile_http_uri_parameter, nbr_profile_http_request_uri_parameter * sizeof(struct profile_http_request_uri_parameter));
}
if(load_profile_http_request_uri_parameter_config(bulkdata, s, i, j)== -1) {
bulkdata_log(SCRIT,"Not able to start bulkdata: some required bulkdata configurations in profile_http_request_uri_parameter must be set");
return -1;
}
j++;
}
bulkdata->profile[i].profile_http_request_uri_parameter_number = nbr_profile_http_request_uri_parameter;
}
buci_fini();
return 0;
}
int bulkdata_config_init(struct bulkdata *bulkdata)
{
get_log_level_config(bulkdata);
get_amd_version_config(bulkdata);
get_instance_mode_config(bulkdata);
get_device_id_config(bulkdata);
if (get_profiles_enable(bulkdata) == -1)
return -1;
if (get_profiles_parameters(bulkdata) == -1)
return -1;
if (get_profile_http_request_uri_parameter(bulkdata) == -1)
return -1;
return 0;
}
int free_device_id_config(struct bulkdata *bulkdata)
{
FREE(bulkdata->device_id.manufacturer_oui);
FREE(bulkdata->device_id.product_class);
FREE(bulkdata->device_id.serial_number);
return 0;
}
int free_profiles_enable(struct bulkdata *bulkdata)
{
for(int i = 0; i < profiles_number; i++) {
FREE(bulkdata->profile[i].protocol);
FREE(bulkdata->profile[i].encoding_type);
FREE(bulkdata->profile[i].csv_encoding_field_separator);
FREE(bulkdata->profile[i].csv_encoding_row_separator);
FREE(bulkdata->profile[i].csv_encoding_escape_character);
FREE(bulkdata->profile[i].csv_encoding_report_format);
FREE(bulkdata->profile[i].csv_encoding_row_time_stamp);
FREE(bulkdata->profile[i].json_encoding_report_format);
FREE(bulkdata->profile[i].json_encoding_report_time_stamp);
FREE(bulkdata->profile[i].http_url);
FREE(bulkdata->profile[i].http_username);
FREE(bulkdata->profile[i].http_password);
FREE(bulkdata->profile[i].http_compression);
FREE(bulkdata->profile[i].http_method);
FREE(bulkdata->profile[i].http_ssl_capath);
}
FREE(bulkdata->profile);
return 0;
}
int free_profiles_parameters(struct bulkdata *bulkdata)
{
for(int i = 0; i < profiles_number; i++) {
for(int j = 0; j < bulkdata->profile[i].profile_parameter_number; j++) {
FREE(bulkdata->profile[i].profile_parameter[j].name);
FREE(bulkdata->profile[i].profile_parameter[j].reference);
}
FREE(bulkdata->profile[i].profile_parameter);
}
return 0;
}
int free_profile_http_request_uri_parameter(struct bulkdata *bulkdata)
{
for(int i = 0; i < profiles_number; i++) {
for(int j = 0; j < bulkdata->profile[i].profile_http_request_uri_parameter_number; j++) {
FREE(bulkdata->profile[i].profile_http_uri_parameter[j].name);
FREE(bulkdata->profile[i].profile_http_uri_parameter[j].reference);
}
FREE(bulkdata->profile[i].profile_http_uri_parameter);
}
return 0;
}
int bulkdata_config_fini(struct bulkdata *bulkdata)
{
free_device_id_config(bulkdata);
free_profiles_parameters(bulkdata);
free_profile_http_request_uri_parameter(bulkdata);
free_profiles_enable(bulkdata);
return 0;
}

103
bulkdata/src/config.h Normal file
View File

@@ -0,0 +1,103 @@
/*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* Copyright (C) 2020 iopsys Software Solutions AB
* Author: Amin Ben Ramdhane <amin.benramdhane@pivasoftware.com>
*
*/
#ifndef __CONFIG_H
#define __CONFIG_H
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <time.h>
#include <libubox/uloop.h>
#define DEFAULT_AMD_VERSION 2
#define DEFAULT_INSTANCE_MODE 0
typedef struct device_id {
char *manufacturer_oui;
char *product_class;
char *serial_number;
} device_id;
typedef struct profile_parameter {
int profile_id;
char *name;
char *reference;
} profile_parameter;
typedef struct profile_http_request_uri_parameter {
int profile_id;
char *name;
char *reference;
} profile_http_request_uri_parameter;
typedef struct profile {
struct uloop_timeout utimer;
int profile_id;
int nbre_of_retained_failed_reports;
int nbre_failed_reports;
int reporting_interval;
int profile_parameter_number;
int profile_http_request_uri_parameter_number;
int http_retry_minimum_wait_interval;
int http_retry_interval_multiplier;
int min_retry;
int retry_count;
char *protocol;
char *encoding_type;
char *csv_encoding_field_separator;
char *csv_encoding_row_separator;
char *csv_encoding_escape_character;
char *csv_encoding_report_format;
char *csv_encoding_row_time_stamp;
char *json_encoding_report_format;
char *json_encoding_report_time_stamp;
char *http_url;
char *http_username;
char *http_password;
char *http_compression;
char *http_method;
char *http_ssl_capath;
char *new_report;
time_t time_reference;
time_t next_retry;
time_t next_period;
bool http_persist_across_reboot;
bool http_insecure_enable;
bool enable;
bool http_use_date_header;
bool http_retry_enable;
struct profile_parameter *profile_parameter;
struct profile_http_request_uri_parameter *profile_http_uri_parameter;
struct list_head *failed_reports;
} profile;
typedef struct bulkdata {
struct device_id device_id;
struct profile *profile;
int log_level;
int amd_version;
unsigned int instance_mode;
} bulkdata;
int bulkdata_config_init(struct bulkdata *bulkdata);
int bulkdata_config_fini(struct bulkdata *bulkdata);
#ifndef FREE
#define FREE(x) do { if(x) {free(x); x = NULL;} } while (0)
#endif
#endif //__CONFIG_H

1293
bulkdata/src/datamodel.c Normal file

File diff suppressed because it is too large Load Diff

29
bulkdata/src/datamodel.h Normal file
View File

@@ -0,0 +1,29 @@
/*
* Copyright (C) 2020 iopsys Software Solutions AB
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License version 2.1
* as published by the Free Software Foundation
*
* Author: Amin Ben Ramdhane <amin.benramdhane@pivasoftware.com>
*/
#ifndef _BULKDATA_H_
#define _BULKDATA_H_
#include <libbbf_api/dmcommon.h>
extern DMOBJ tDeviceBulkDataObj[];
extern DMOBJ tBulkDataObj[];
extern DMLEAF tBulkDataParams[];
extern DMOBJ tBulkDataProfileObj[];
extern DMLEAF tBulkDataProfileParams[];
extern DMLEAF tBulkDataProfileParameterParams[];
extern DMLEAF tBulkDataProfileCSVEncodingParams[];
extern DMLEAF tBulkDataProfileJSONEncodingParams[];
extern DMOBJ tBulkDataProfileHTTPObj[];
extern DMLEAF tBulkDataProfileHTTPParams[];
extern DMLEAF tBulkDataProfileHTTPRequestURIParameterParams[];
#endif //__BULKDATA_H_

196
bulkdata/src/http.c Normal file
View File

@@ -0,0 +1,196 @@
/*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* Copyright (C) 2020 iopsys Software Solutions AB
* Author: Amin Ben Ramdhane <amin.benramdhane@pivasoftware.com>
* Omar Kallel <omar.kallel@pivasoftware.com>
*/
#include "http.h"
static struct http_client http_c;
static CURL *curl;
int http_client_init(struct profile *profile)
{
char *url = create_request_url(profile);
if(url) {
asprintf(&http_c.url, "%s", url);
free(url);
}
bulkdata_log(SINFO, "ACS url: %s", http_c.url);
curl_global_init(CURL_GLOBAL_SSL);
curl = curl_easy_init();
if (!curl) return -1;
return 0;
}
void http_client_exit(void)
{
FREE(http_c.url);
if (http_c.header_list) {
curl_slist_free_all(http_c.header_list);
http_c.header_list = NULL;
}
curl_easy_cleanup(curl);
curl_global_cleanup();
}
static size_t http_get_response(void *buffer, size_t size, size_t rxed, char **msg_in)
{
char *c;
if (asprintf(&c, "%s%.*s", *msg_in, (int) (size * rxed), (char *)buffer) == -1) {
FREE(*msg_in);
return -1;
}
free(*msg_in);
*msg_in = c;
return size * rxed;
}
int http_send_message(struct profile *profile, char *msg_out, int msg_out_len, char **msg_in)
{
CURLcode res;
long http_code = 0;
char errbuf[CURL_ERROR_SIZE];
http_c.header_list = NULL;
http_c.header_list = curl_slist_append(http_c.header_list, "User-Agent: iopsys-bulkdata");
if (!http_c.header_list) return -1;
if (profile->http_use_date_header) {
if (bulkdata_get_time() != NULL) {
http_c.header_list = curl_slist_append(http_c.header_list, bulkdata_get_time());
if (!http_c.header_list) return -1;
}
}
if (strcmp(profile->encoding_type, "json") == 0) {
http_c.header_list = curl_slist_append(http_c.header_list, "Content-Type: application/json; charset=\"utf-8\"");
if (!http_c.header_list) return -1;
if(strcmp (profile->json_encoding_report_format, "objecthierarchy") == 0) {
http_c.header_list = curl_slist_append(http_c.header_list, "BBF-Report-Format: \"ObjectHierarchy\"");
if (!http_c.header_list) return -1;
} else if(strcmp(profile->json_encoding_report_format, "namevaluepair") == 0) {
http_c.header_list = curl_slist_append(http_c.header_list, "BBF-Report-Format: \"NameValuePair\"");
if (!http_c.header_list) return -1;
}
} else if(strcmp(profile->encoding_type, "csv") == 0) {
http_c.header_list = curl_slist_append(http_c.header_list, "Content-Type: text/csv; charset=\"utf-8\"");
if (!http_c.header_list) return -1;
if(strcmp (profile->csv_encoding_report_format, "row") == 0) {
http_c.header_list = curl_slist_append(http_c.header_list, "BBF-Report-Format: \"ParameterPerRow\"");
if (!http_c.header_list) return -1;
} else if(strcmp (profile->csv_encoding_report_format, "column") == 0) {
http_c.header_list = curl_slist_append(http_c.header_list, "BBF-Report-Format: \"ParameterPerColumn\"");
if (!http_c.header_list) return -1;
}
}
curl_easy_setopt(curl, CURLOPT_URL, http_c.url);
curl_easy_setopt(curl, CURLOPT_USERNAME, profile->http_username);
curl_easy_setopt(curl, CURLOPT_PASSWORD, profile->http_password);
curl_easy_setopt(curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC|CURLAUTH_DIGEST);
curl_easy_setopt(curl, CURLOPT_TIMEOUT, HTTP_TIMEOUT);
curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, HTTP_TIMEOUT);
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
curl_easy_setopt(curl, CURLOPT_POSTREDIR, CURL_REDIR_POST_ALL);
curl_easy_setopt(curl, CURLOPT_NOBODY, 0);
if(strcasecmp(profile->http_compression, "gzip") == 0) {
curl_easy_setopt(curl, CURLOPT_ACCEPT_ENCODING, "gzip");
http_c.header_list = curl_slist_append(http_c.header_list, "Content-Encoding: gzip");
} else if(strcasecmp(profile->http_compression, "compress") == 0) {
curl_easy_setopt(curl, CURLOPT_ACCEPT_ENCODING, "compress");
http_c.header_list = curl_slist_append(http_c.header_list, "Content-Encoding: compress");
} else if(strcasecmp(profile->http_compression, "deflate") == 0) {
curl_easy_setopt(curl, CURLOPT_ACCEPT_ENCODING, "deflate");
http_c.header_list = curl_slist_append(http_c.header_list, "Content-Encoding: deflate");
}
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, http_c.header_list);
if(strcasecmp(profile->http_method, "put") == 0)
curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "PUT");
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, msg_out);
if (msg_out)
curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, (long) msg_out_len);
else
curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, 0);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, http_get_response);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, msg_in);
curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, errbuf);
if (profile->http_ssl_capath)
curl_easy_setopt(curl, CURLOPT_CAPATH, profile->http_ssl_capath);
if (profile->http_insecure_enable) {
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, false);
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0);
}
*msg_in = (char *) calloc (1, sizeof(char));
res = curl_easy_perform(curl);
if(res != CURLE_OK) {
size_t len = strlen(errbuf);
if(len) {
if (errbuf[len - 1] == '\n') errbuf[len - 1] = '\0';
bulkdata_log(SCRIT, "libcurl: (%d) %s", res, errbuf);
} else {
bulkdata_log(SCRIT, "libcurl: (%d) %s", res, curl_easy_strerror(res));
}
}
if (!strlen(*msg_in))
FREE(*msg_in);
curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &http_code);
if(http_code == 200)
bulkdata_log(SINFO, "Receive HTTP 200 OK from Bulkdata Collector");
else if(http_code == 401)
bulkdata_log(SINFO, "Receive HTTP 401 Unauthorized from Bulkdata Collector");
else if(http_code == 204)
bulkdata_log(SINFO, "Receive HTTP 204 No Content from Bulkdata Collector");
else
bulkdata_log(SINFO, "Receive HTTP %d from Bulkdata Collector", http_code);
if(http_code == 415)
{
strcpy(profile->http_compression, "None");
goto error;
}
if (http_code != 200 && http_code != 204)
goto error;
curl_easy_reset(curl);
if (http_c.header_list) {
curl_slist_free_all(http_c.header_list);
http_c.header_list = NULL;
}
if (res) goto error;
return http_code;
error:
FREE(*msg_in);
if (http_c.header_list) {
curl_slist_free_all(http_c.header_list);
http_c.header_list = NULL;
}
return -1;
}

37
bulkdata/src/http.h Normal file
View File

@@ -0,0 +1,37 @@
/*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* Copyright (C) 2020 iopsys Software Solutions AB
* Author: Amin Ben Ramdhane <amin.benramdhane@pivasoftware.com>
*
*/
#ifndef __HTTP_H
#define __HTTP_H
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>
#include <curl/curl.h>
#include "config.h"
#include "log.h"
#include "times.h"
#include "common.h"
#define HTTP_TIMEOUT 30
struct http_client
{
struct curl_slist *header_list;
char *url;
};
int http_client_init(struct profile *profile);
void http_client_exit(void);
int http_send_message(struct profile *profile, char *msg_out, int msg_out_len, char **msg_in);
#endif //__HTTP_H

57
bulkdata/src/log.c Normal file
View File

@@ -0,0 +1,57 @@
/*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* Copyright (C) 2020 iopsys Software Solutions AB
* Author: Amin Ben Ramdhane <amin.benramdhane@pivasoftware.com>
*
*/
#include <stdarg.h>
#include <stdbool.h>
#include <stdio.h>
#include <syslog.h>
#include <time.h>
#include "bulkdata.h"
#include "config.h"
#include "log.h"
static const int log_syslogmap[] = {
[SCRIT] = LOG_CRIT,
[SWARNING] = LOG_WARNING,
[SNOTICE] = LOG_NOTICE,
[SINFO] = LOG_INFO,
[SDEBUG] = LOG_DEBUG
};
static const char* log_str[] = {
[SCRIT] = "CRITICAL",
[SWARNING] = "WARNING",
[SNOTICE] = "NOTICE",
[SINFO] = "INFO",
[SDEBUG] = "DEBUG"
};
void bulkdata_log(int priority, const char *format, ...)
{
va_list vl;
if (priority <= bulkdata_main.log_level) {
time_t t = time(NULL);
struct tm tm = *localtime(&t);
va_start(vl, format);
printf("%d-%02d-%02d %02d:%02d:%02d [bulkdata] %s - ", tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday, tm.tm_hour, tm.tm_min, tm.tm_sec, log_str[priority]);
vprintf(format, vl);
va_end(vl);
printf("\n");
openlog("bulkdata", 0, LOG_DAEMON);
va_start(vl, format);
vsyslog(log_syslogmap[priority], format, vl);
va_end(vl);
closelog();
}
}

28
bulkdata/src/log.h Normal file
View File

@@ -0,0 +1,28 @@
/*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* Copyright (C) 2020 iopsys Software Solutions AB
* Author: Amin Ben Ramdhane <amin.benramdhane@pivasoftware.com>
*
*/
#ifndef __LOG_H
#define __LOG_H
#define DEFAULT_LOGLEVEL SINFO
enum bulkdata_log_level_enum {
SCRIT,
SWARNING,
SNOTICE,
SINFO,
SDEBUG,
__MAX_SLOG
};
void bulkdata_log(int priority, const char *format, ...);
#endif //__LOG_H

336
bulkdata/src/report.c Normal file
View File

@@ -0,0 +1,336 @@
/*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* Copyright (C) 2020 iopsys Software Solutions AB
* Author: Amin Ben Ramdhane <amin.benramdhane@pivasoftware.com>
* Author: Omar Kallel <omar.kallel@pivasoftware.com>
*
*/
#include "report.h"
static void add_new_json_obj(json_object *json_obj, char *name, char *data, char *type)
{
json_object *jobj;
if(strstr(type, "unsignedInt") || strstr(type, "int") || strstr(type, "long"))
jobj = json_object_new_int64(atoi(data));
else if(strstr(type, "bool"))
jobj = json_object_new_boolean(atoi(data));
else
jobj = json_object_new_string(data);
json_object_object_add(json_obj, name, jobj);
}
static void create_json_bulkdata_report_object_hierarchy(struct profile *profile, char **report)
{
struct json_object *json_obj, *json_obj1, *json_obj2;
struct resultsnode *p;
int i, j, profile_param_number = profile->profile_parameter_number;
char *param_name, *result, *pch, *pchr, *collection_time = NULL;
char buf[1024] = {0};
json_obj = json_object_new_object();
get_time_stamp(profile->json_encoding_report_time_stamp, &collection_time);
if(collection_time) {
if(strcmp(profile->json_encoding_report_time_stamp, "iso8601") == 0)
json_object_object_add(json_obj, "CollectionTime", json_object_new_string(collection_time));
else
json_object_object_add(json_obj, "CollectionTime", json_object_new_int64(atoi(collection_time)));
free(collection_time);
}
json_obj2 = json_obj;
for (i = 0; i < profile_param_number; i++) {
LIST_HEAD(results_list);
bulkdata_get_value_results(profile->profile_parameter[i].reference, &results_list);
list_for_each_entry(p, &results_list, list) {
char *argv[128] = {0};
j = 0;
param_name = get_bulkdata_profile_parameter_name(profile->profile_parameter[i].reference, profile->profile_parameter[i].name, p->name);
strcpy(buf, param_name);
for (pch = strtok_r(buf, ".", &pchr); pch != NULL; pch = strtok_r(NULL, ".", &pchr)) {
argv[j] = pch;
json_obj1 = (json_object *)bbf_api_dmjson_select_obj(json_obj, argv);
if (json_obj1)
json_obj2 = json_obj1;
else {
if (pchr != NULL && *pchr != '\0') {
json_object *new_obj = json_object_new_object();
json_object_object_add(json_obj2, pch, new_obj);
json_obj2 = new_obj;
}
else
add_new_json_obj(json_obj2, pch, p->data, p->type);
}
j++;
}
}
bulkdata_free_data_from_list(&results_list);
FREE(param_name);
}
result = (char *)json_object_to_json_string_ext(json_obj, JSON_C_TO_STRING_PRETTY);
*report = strdup(result);
json_object_put(json_obj);
}
static void create_json_bulkdata_report_name_value_pair(struct profile *profile, char **report)
{
struct json_object *json_obj;
struct resultsnode *p;
char *param_name, *result, *collection_time = NULL;
int i = 0, profile_param_number = profile->profile_parameter_number;
json_obj = json_object_new_object();
get_time_stamp(profile->json_encoding_report_time_stamp, &collection_time);
if(collection_time) {
if(strcmp(profile->json_encoding_report_time_stamp, "iso8601") == 0)
json_object_object_add(json_obj, "CollectionTime", json_object_new_string(collection_time));
else
json_object_object_add(json_obj, "CollectionTime", json_object_new_int64(atoi(collection_time)));
free(collection_time);
}
for (i = 0; i < profile_param_number; i++) {
LIST_HEAD(results_list);
bulkdata_get_value_results(profile->profile_parameter[i].reference, &results_list);
list_for_each_entry(p, &results_list, list) {
param_name = get_bulkdata_profile_parameter_name(profile->profile_parameter[i].reference, profile->profile_parameter[i].name, p->name);
add_new_json_obj(json_obj, param_name, p->data, p->type);
FREE(param_name);
}
bulkdata_free_data_from_list(&results_list);
}
result = (char *)json_object_to_json_string_ext(json_obj, JSON_C_TO_STRING_PRETTY);
*report = strdup(result);
json_object_put(json_obj);
}
static void add_failed_reports_to_report_json(struct profile *profile, char *new_report, char **report, int isnext)
{
json_object *json_obj, *json_array, *json_string;
struct failed_reports *retreport = NULL;
char *msgout = NULL;
int j = 0;
json_obj = json_object_new_object();
json_array = json_object_new_array();
json_object_object_add(json_obj,"Report", json_array);
if(list_empty(profile->failed_reports))
goto new_report;
list_for_each_entry(retreport, profile->failed_reports, list) {
if(!j && isnext) {
j = 1;
continue;
}
json_string = json_tokener_parse(retreport->freport);
json_object_array_add(json_array, json_string);
}
new_report :
if(new_report) {
json_string = json_tokener_parse(new_report);
json_object_array_add(json_array, json_string);
}
msgout = (char *)json_object_to_json_string_ext(json_obj, JSON_C_TO_STRING_PRETTY);
*report = strdup(msgout);
json_object_put(json_obj);
}
static void create_report_json(char *new_report, char **report)
{
json_object *json_obj, *json_array, *json_string;
char *msgout = NULL;
json_obj = json_object_new_object();
json_array = json_object_new_array();
json_object_object_add(json_obj,"Report", json_array);
if(new_report) {
json_string = json_tokener_parse(new_report);
json_object_array_add(json_array, json_string);
}
msgout = (char *)json_object_to_json_string_ext(json_obj, JSON_C_TO_STRING_PRETTY);
*report = strdup(msgout);
json_object_put(json_obj);
}
int create_json_bulkdata_report(struct profile *profile, char **report)
{
/*
* create json msg of current report
* parse failed reports list and add it to the report
* then add new report to the report
*/
char *msgout;
profile->new_report = NULL;
if(strcmp(profile->json_encoding_report_format, "objecthierarchy") == 0) {
create_json_bulkdata_report_object_hierarchy(profile, &msgout);
} else if(strcmp(profile->json_encoding_report_format, "namevaluepair") == 0) {
create_json_bulkdata_report_name_value_pair(profile, &msgout);
}
if(profile->nbre_of_retained_failed_reports != 0) {
if(profile->nbre_failed_reports >= profile->nbre_of_retained_failed_reports && profile->nbre_of_retained_failed_reports > 0)
add_failed_reports_to_report_json(profile, msgout, report, 1);
else
add_failed_reports_to_report_json(profile, msgout, report, 0);
} else {
create_report_json(msgout, report);
}
append_string_to_string(msgout, &profile->new_report);
FREE(msgout);
return 0;
}
int create_csv_bulkdata_report(struct profile *profile, char **report)
{
/*
* create csv msg of current report
* parse failed reports list and add it to the report
*/
int i;
struct resultsnode *p;
char *str1 = NULL, *str2 = NULL, *str = NULL, *paramprofilename, *timestamp = NULL, *type = NULL, rowseparator = '\0', separator = '\0';
if(strcmp(profile->csv_encoding_row_separator, "&#10;") == 0)
rowseparator = '\n';
else if(strcmp(profile->csv_encoding_row_separator, "&#13;") == 0)
rowseparator = '\r';
if(profile->csv_encoding_field_separator)
separator = profile->csv_encoding_field_separator[0];
get_time_stamp(profile->csv_encoding_row_time_stamp, &timestamp);
/*
* Create header ReportTimestamp,ParameterName,ParameterValue,ParameterType in case of ParameterPerRow
*/
if(strcmp(profile->csv_encoding_report_format, "row") == 0) {
if(timestamp == NULL)
asprintf(&str, "ParameterName%cParameterValue%cParameterType%c", separator, separator, rowseparator);
else
asprintf(&str, "ReportTimestamp%cParameterName%cParameterValue%cParameterType%c", separator, separator, separator, rowseparator);
append_string_to_string(str, report);
FREE(str);
if(profile->nbre_of_retained_failed_reports != 0) {
if(profile->nbre_failed_reports >= profile->nbre_of_retained_failed_reports && profile->nbre_of_retained_failed_reports > 0)
add_failed_reports_to_report_csv(profile, report, 1);
else
add_failed_reports_to_report_csv(profile, report, 0);
}
}
if(strcmp(profile->csv_encoding_report_format, "column") == 0 && timestamp != NULL) {
if(profile->nbre_of_retained_failed_reports != 0) {
if(profile->nbre_failed_reports >= profile->nbre_of_retained_failed_reports && profile->nbre_of_retained_failed_reports > 0)
add_failed_reports_to_report_csv(profile, report, 1);
else
add_failed_reports_to_report_csv(profile, report, 0);
}
append_string_to_string("ReportTimestamp", &str1);
append_string_to_string(timestamp, &str2);
}
/*
* Add New reports
*/
profile->new_report = NULL;
for(i = 0; i < profile->profile_parameter_number; i++) {
LIST_HEAD(results_list);
bulkdata_get_value_results(profile->profile_parameter[i].reference, &results_list);
list_for_each_entry(p, &results_list, list) {
paramprofilename = get_bulkdata_profile_parameter_name(profile->profile_parameter[i].reference, profile->profile_parameter[i].name, p->name);
if(strcmp(profile->csv_encoding_report_format, "row") == 0) {
type = strstr(p->type, ":");
if(timestamp == NULL)
asprintf(&str, "%s%c%s%c%s%c", paramprofilename, separator, p->data, separator, type+1, rowseparator);
else
asprintf(&str, "%s%c%s%c%s%c%s%c", timestamp, separator, paramprofilename, separator, p->data, separator, type+1, rowseparator);
append_string_to_string(str, report);
append_string_to_string(str, &profile->new_report);
FREE(str);
} else if(strcmp(profile->csv_encoding_report_format, "column") == 0) {
if(str1 == NULL || strlen(str1) <= 0)
asprintf(&str, "%s", paramprofilename);
else
asprintf(&str, "%c%s", separator, paramprofilename);
append_string_to_string(str, &str1);
FREE(str);
if(str2 == NULL || strlen(str2) <= 0)
asprintf(&str, "%s", p->data);
else
asprintf(&str, "%c%s", separator, p->data);
append_string_to_string(str, &str2);
FREE(str);
}
FREE(paramprofilename);
}
bulkdata_free_data_from_list(&results_list);
}
if(strcmp(profile->csv_encoding_report_format, "column") == 0) {
asprintf(&str, "%c", rowseparator);
append_string_to_string(str, &str1);
append_string_to_string(str, &str2);
append_string_to_string(str1, report);
append_string_to_string(str2, report);
append_string_to_string(str1, &profile->new_report);
append_string_to_string(str2, &profile->new_report);
}
FREE(str);
FREE(str1);
FREE(str2);
FREE(timestamp);
return 0;
}
static void create_json_failed_report(struct profile *profile, char **report)
{
add_failed_reports_to_report_json(profile, NULL, report, 0);
}
static void create_csv_failed_report(struct profile *profile, char **report)
{
char rowseparator = '\0', separator = '\0', *timestamp = NULL;
if(strcmp(profile->csv_encoding_row_separator, "&#10;") == 0) {
rowseparator = '\n';
} else if(strcmp(profile->csv_encoding_row_separator, "&#13;") == 0) {
rowseparator = '\r';
}
if(profile->csv_encoding_field_separator)
separator = profile->csv_encoding_field_separator[0];
get_time_stamp(profile->csv_encoding_row_time_stamp, &timestamp);
if(strcmp(profile->csv_encoding_report_format, "row") == 0) {
if(timestamp == NULL)
asprintf(report, "ParameterName%cParameterValue%cParameterType%c", separator, separator, rowseparator);
else
asprintf(report, "ReportTimestamp%cParameterName%cParameterValue%cParameterType%c", separator, separator, separator, rowseparator);
}
add_failed_reports_to_report_csv(profile, report, 0);
}
void create_encoding_bulkdata_report(struct profile *profile, char **report)
{
if(strcasecmp(profile->encoding_type, "json") == 0) {
create_json_bulkdata_report(profile, report);
} else if(strcasecmp(profile->encoding_type, "csv") == 0) {
create_csv_bulkdata_report(profile, report);
}
}
void create_failed_report(struct profile *profile, char **report)
{
if(strcasecmp(profile->encoding_type, "json") == 0) {
create_json_failed_report(profile, report);
} else if(strcasecmp(profile->encoding_type, "csv") == 0) {
create_csv_failed_report(profile, report);
}
}

24
bulkdata/src/report.h Normal file
View File

@@ -0,0 +1,24 @@
/*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* Copyright (C) 2020 iopsys Software Solutions AB
* Author: Amin Ben Ramdhane <amin.benramdhane@pivasoftware.com>
* Author: Omar Kallel <omar.kallel@pivasoftware.com>
*
*/
#ifndef __REPORT_H_
#define __REPORT_H_
#include <json-c/json.h>
#include "common.h"
#include "times.h"
#include "config.h"
void create_encoding_bulkdata_report(struct profile *profile, char **report);
void create_failed_report(struct profile *profile, char **report);
#endif /* __REPORT_H_ */

62
bulkdata/src/times.c Normal file
View File

@@ -0,0 +1,62 @@
/*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* Copyright (C) 2020 iopsys Software Solutions AB
* Author: Amin Ben Ramdhane <amin.benramdhane@pivasoftware.com>
*
*/
#include <stdio.h>
#include <string.h>
#include <time.h>
#include "times.h"
const char *bulkdata_get_time(void)
{
static char local_time[64];
time_t t_time = time(NULL);
struct tm *t_tm = localtime(&t_time);
if (t_tm == NULL)
return NULL;
if (strftime(local_time, sizeof(local_time),"Date: %a, %d %b %Y %X%z GMT", t_tm) == 0)
return NULL;
return local_time;
}
void get_time_stamp(const char *format, char **timestamp)
{
time_t now = time(NULL);
if (strcmp(format, "unix") == 0) {
asprintf(timestamp, "%ld", now);
} else if (strcmp(format, "iso8601") == 0) {
char buf[32] = {0};
struct tm *ts = localtime(&now);
strftime(buf, sizeof(buf), "%Y-%m-%dT%H:%M:%S%Z", ts);
asprintf(timestamp, "%s", buf);
} else
timestamp = NULL;
}
unsigned int get_next_period(time_t time_reference, int reporting_interval)
{
unsigned int next_period;
time_t now = time(NULL);
if (now > time_reference)
next_period = reporting_interval - ((now - time_reference) % reporting_interval);
else
next_period = (time_reference - now) % reporting_interval;
if (next_period == 0)
next_period = reporting_interval;
return next_period;
}

19
bulkdata/src/times.h Normal file
View File

@@ -0,0 +1,19 @@
/*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* Copyright (C) 2020 iopsys Software Solutions AB
* Author: Amin Ben Ramdhane <amin.benramdhane@pivasoftware.com>
*
*/
#ifndef __TIMES_H
#define __TIMES_H
const char *bulkdata_get_time(void);
void get_time_stamp(const char *format, char **timestamp);
unsigned int get_next_period(time_t time_reference, int reporting_interval);
#endif /* __TIMES_H */

View File

@@ -1,7 +1,4 @@
#!/bin/sh /etc/rc.common
#
# Copyright (C) 2015 inteno.org
#
START=71
USE_PROCD=1

View File

@@ -1,53 +0,0 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=cifsd-tools
PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/namjaejeon/cifsd-tools.git
PKG_SOURCE_DATE:=2019-02-14
PKG_SOURCE_VERSION:=a7d7dfc40524b88dbcb2052034a75f446b3cefdd
PKG_MIRROR_HASH:=a74f95a79c3cdcc78e66c080729141abee0d821e21a326d88b11d849738314fb
PKG_MAINTAINER:=Andy Walsh <andy.walsh44+github@gmail.com>
PKG_LICENSE:=GPL-2.0
PKG_LICENSE_FILES:=COPYING
PKG_INSTALL:=1
PKG_FIXUP:=autoreconf
PKG_REMOVE_FILES:=autogen.sh aclocal.m4
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/nls.mk
define Package/cifsd-tools
SECTION:=net
CATEGORY:=Network
SUBMENU:=Filesystem
TITLE:=Kernel CIFS/SMB server support and userspace tools
DEPENDS:=+kmod-fs-cifsd +glib2 +libnl-core +libnl-genl $(ICONV_DEPENDS)
endef
define Package/cifsd-tools/description
Userspace tools (cifsd, cifsadmin) for the CIFS/SMB kernel fileserver.
The config file location is /etc/cifs/smb.conf
endef
define Package/cifsd-tools/install
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libcifsdtools.so* $(1)/usr/lib/
$(INSTALL_DIR) $(1)/etc/cifs
$(INSTALL_CONF) $(PKG_BUILD_DIR)/smb.conf.example $(1)/etc/cifs
$(INSTALL_DIR) $(1)/etc/config
$(INSTALL_CONF) ./files/cifsd.config $(1)/etc/config/cifsd
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) ./files/cifsd.init $(1)/etc/init.d/cifsd
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/{cifsadmin,cifsd} $(1)/usr/sbin/
endef
$(eval $(call BuildPackage,cifsd-tools))

View File

@@ -1,9 +0,0 @@
config global 'global'
option server_string 'CIFSD on OpenWRT'
option ipc_timeout '8' # IPC timeout is used as a workaround for uninterruptible sleep until this is fixed upstream.
config share
option name 'share'
option comment 'Default guest share'
option path '/mnt'
option guest_ok 'yes'

View File

@@ -1,161 +0,0 @@
#!/bin/sh /etc/rc.common
START=90
USE_PROCD=1
PROG=/usr/sbin/cifsd
USER_DB=/etc/cifs/cifsdpwd.db
CIFS_ADMIN=cifsadmin
EXTRA_COMMANDS="users"
EXTRA_HELP=" users Show list of users created by cifsadmin"
users() {
[ -f "$USER_DB" ] && cut -d ':' $USER_DB -f1 || \
printf "No users available.\n"
}
validate_cifsd_global() {
uci_validate_section cifsd global global \
'server_string:string' \
'workgroup:string' \
'netbios_name:string' \
'interface:string' \
'ipc_timeout:uinteger'
}
validate_cifsd_share() {
uci_validate_section cifsd share "${1}" \
'name:string' \
'comment:string' \
'path:string' \
'guest_ok:bool' \
'read_only:bool' \
'allow_hosts:list' \
'deny_hosts:list' \
'users:string' \
'invalid_users:string' \
'create_mask:string' \
'dir_mask:string' \
'max_connections:uinteger' \
'veto_files:list'
}
validate_cifsd_users() {
uci_validate_section cifsd users "${1}" \
'user:string' \
'password:string' \
'desc:string'
}
load_cifsd_global() {
local server_string
local workgroup
local netbios_name
local ipc_timeout
validate_cifsd_global
echo -e "[global]" >> /var/etc/cifsd.conf
[ -n "$server_string" ] && echo -e "\tserver string = $server_string" >> /var/etc/cifsd.conf
[ -n "$workgroup" ] && echo -e "\tworkgroup = $workgroup" >> /var/etc/cifsd.conf
[ -n "$netbios_name" ] && echo -e "\tnetbios name = $netbios_name" >> /var/etc/cifsd.conf
[ -n "$ipc_timeout" ] && echo -e "\tipc timeout name = $ipc_timeout" >> /var/etc/cifsd.conf || \
echo -e "\tipc timeout name = 8" >> /var/etc/cifsd.conf
}
load_cifsd_share() {
local name
local comment
local path
local guest_ok
local allow_hosts
local deny_hosts
local users
local invalid_users
local max_connections
local veto_files
local dir_mask
local create_mask
local read_only
validate_cifsd_share ${1}
if [ -z "$name" -o -z "$path" ]; then
logread -t ${0} "Missing name or path."
return
fi
echo -e "\n[$name]\n\tpath = $path" >> /var/etc/cifsd.conf
[ -n "$comment" ] && echo -e "\tcomment = $comment" >> /var/etc/cifsd.conf
[ -n "$guest_ok" ] && echo -e "\tguest ok = $guest_ok" >> /var/etc/cifsd.conf
[ -n "$allow_hosts" ] && echo -e "\tallow hosts = $allow_hosts" >> /var/etc/cifsd.conf
[ -n "$deny_hosts" ] && echo -e "\tdeny hosts = $deny_hosts" >> /var/etc/cifsd.conf
[ -n "$users" ] && echo -e "\tvalid users = $users" >> /var/etc/cifsd.conf
[ -n "$invalid_users" ] && echo -e "\tinvalid users = $invalid_users" >> /var/etc/cifsd.conf
[ -n "$max_connections" ] && echo -e "\tmax connections = $max_connections" >> /var/etc/cifsd.conf
[ -n "$create_mask" ] && echo -e "\tcreate mask = $create_mask" >> /var/etc/cifsd.conf
[ -n "$dir_mask" ] && echo -e "\tdirectory mask = $dir_mask" >> /var/etc/cifsd.conf
if [ -n "$read_only" ]; then
echo -e "\tread only = $read_only" >> /var/etc/cifsd.conf
if [ "${read_only}" -eq "0" ]; then
echo -e "\twrite ok = 1" >> /var/etc/cifsd.conf
fi
else
echo -e "\twrite ok = 1" >> /var/etc/cifsd.conf
fi
[ -n "$veto_files" ] && echo -e "\tveto files = $veto_files" >> /var/etc/cifsd.conf
}
load_cifsd_users() {
local user
local password
local desc
validate_cifsd_users ${1}
[ $(which ${CIFS_ADMIN}) ] || {
logread -t ${0} "${CIFS_ADMIN} tools is not available"
return;
}
cifsadmin -a "${user}" -p "${password}"
if [ "$?" -ne 0 ]; then
logread -t ${0} "Failed to create/update ${user}"
fi
}
service_triggers()
{
procd_add_config_trigger "config.change" "cifsd" /etc/init.d/cifsd restart
}
init_config() {
[ -f "/var/etc/cifsd.conf" ] && rm /var/etc/cifsd.conf
config_load cifsd
load_cifsd_global
# Delete existing users
[ -f "${USER_DB}" ] && {
rm -f "${USER_DB}"
}
config_foreach load_cifsd_users users
config_foreach load_cifsd_share share
}
start_service() {
. /lib/functions.sh
init_config
[ ! "$(grep cifsd /proc/modules)" ] && modprobe cifsd
procd_open_instance
procd_set_param command /usr/bin/env LANG=en_US.UTF-8 $PROG -c /var/etc/cifsd.conf
procd_set_param respawn
procd_close_instance
}
stop_service() {
killall cifsd
# IPC timeout will kill the remaining processes.
}

View File

@@ -1,73 +0,0 @@
For some reason, fs.h on Inteno kernel is missing inode->i_mutex nesting subclasses for the lock validator
which is triggering implicit declaration error. To workaround this hardcore use of mutex_lock by removing
kernel version check.
---
--- a/vfs.c
+++ b/vfs.c
@@ -544,15 +544,9 @@ int cifsd_vfs_setattr(struct cifsd_work
attrs->ia_valid |= ATTR_CTIME;
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0)
- inode_lock(inode);
- err = notify_change(dentry, attrs, NULL);
- inode_unlock(inode);
-#else
mutex_lock(&inode->i_mutex);
err = notify_change(dentry, attrs, NULL);
mutex_unlock(&inode->i_mutex);
-#endif
if (update_size)
put_write_access(inode);
@@ -753,11 +747,8 @@ int cifsd_vfs_remove_file(char *name)
if (!dir->d_inode)
goto out;
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0)
- inode_lock_nested(dir->d_inode, I_MUTEX_PARENT);
-#else
mutex_lock_nested(&dir->d_inode->i_mutex, I_MUTEX_PARENT);
-#endif
+
dentry = lookup_one_len(last, dir, strlen(last));
if (IS_ERR(dentry)) {
err = PTR_ERR(dentry);
@@ -783,11 +774,7 @@ int cifsd_vfs_remove_file(char *name)
dput(dentry);
out_err:
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0)
- inode_unlock(dir->d_inode);
-#else
mutex_unlock(&dir->d_inode->i_mutex);
-#endif
out:
path_put(&parent);
return err;
@@ -1302,11 +1289,8 @@ int cifsd_vfs_unlink(struct dentry *dir,
int err = 0;
dget(dentry);
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0)
- inode_lock(dir->d_inode);
-#else
mutex_lock(&dir->d_inode->i_mutex);
-#endif
+
if (!dentry->d_inode || !dentry->d_inode->i_nlink) {
err = -ENOENT;
goto out;
@@ -1318,11 +1302,8 @@ int cifsd_vfs_unlink(struct dentry *dir,
err = vfs_unlink(dir->d_inode, dentry, NULL);
out:
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0)
- inode_unlock(dir->d_inode);
-#else
mutex_unlock(&dir->d_inode->i_mutex);
-#endif
+
dput(dentry);
if (err)
cifsd_debug("failed to delete, err %d\n", err);

View File

@@ -1,60 +0,0 @@
include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=cifsd
PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/namjaejeon/cifsd.git
PKG_SOURCE_DATE:=2019-03-05
PKG_SOURCE_VERSION:=e1715ce125d55b125b1b58a6f1819ef8e54cc3ba
PKG_MIRROR_HASH:=521585ebfda0ecc02372b1a38ebf762fbbcead6d0b754a47599a5bf6bfdb3fb6
PKG_MAINTAINER:=Andy Walsh <andy.walsh44+github@gmail.com>
PKG_LICENSE:=GPL-2.0
PKG_LICENSE_FILES:=COPYING
include $(INCLUDE_DIR)/package.mk
define KernelPackage/fs-cifsd
SUBMENU:=Filesystems
TITLE:=CIFS/SMB kernel server support
FILES:=$(PKG_BUILD_DIR)/cifsd.$(LINUX_KMOD_SUFFIX)
DEPENDS+= \
+kmod-nls-base \
+kmod-nls-utf8 \
+kmod-crypto-md4 \
+kmod-crypto-md5 \
+kmod-crypto-hmac \
+kmod-crypto-ecb \
+kmod-crypto-des \
+kmod-crypto-sha256 \
+kmod-crypto-cmac \
+kmod-crypto-sha512 \
+kmod-crypto-aead \
+kmod-crypto-ccm
KCONFIG:= \
CONFIG_KEYS=y \
CONFIG_CRYPTO_ARC4=y
endef
define KernelPackage/fs-cifsd/description
Kernel module for a CIFS/SMBv2,3 fileserver.
endef
TARGET_CFLAGS+= -DCONFIG_CIFSD_ACL
MAKE_OPTS:=\
ARCH="$(LINUX_KARCH)" \
CROSS_COMPILE="$(TARGET_CROSS)" \
M="$(PKG_BUILD_DIR)"
define Build/Compile
$(MAKE) -C "$(LINUX_DIR)" \
$(MAKE_OPTS) \
CFLAGS="$(TARGET_CFLAGS)" \
CONFIG_CIFS_SERVER=m \
modules
endef
$(eval $(call KernelPackage,fs-cifsd))

View File

@@ -1,69 +0,0 @@
--- a/vfs.c
+++ b/vfs.c
@@ -544,15 +544,9 @@ int cifsd_vfs_setattr(struct cifsd_work
attrs->ia_valid |= ATTR_CTIME;
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0)
- inode_lock(inode);
- err = notify_change(dentry, attrs, NULL);
- inode_unlock(inode);
-#else
mutex_lock(&inode->i_mutex);
err = notify_change(dentry, attrs, NULL);
mutex_unlock(&inode->i_mutex);
-#endif
if (update_size)
put_write_access(inode);
@@ -753,11 +747,8 @@ int cifsd_vfs_remove_file(char *name)
if (!dir->d_inode)
goto out;
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0)
- inode_lock_nested(dir->d_inode, I_MUTEX_PARENT);
-#else
mutex_lock_nested(&dir->d_inode->i_mutex, I_MUTEX_PARENT);
-#endif
+
dentry = lookup_one_len(last, dir, strlen(last));
if (IS_ERR(dentry)) {
err = PTR_ERR(dentry);
@@ -783,11 +774,7 @@ int cifsd_vfs_remove_file(char *name)
dput(dentry);
out_err:
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0)
- inode_unlock(dir->d_inode);
-#else
mutex_unlock(&dir->d_inode->i_mutex);
-#endif
out:
path_put(&parent);
return err;
@@ -1302,11 +1289,8 @@ int cifsd_vfs_unlink(struct dentry *dir,
int err = 0;
dget(dentry);
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0)
- inode_lock(dir->d_inode);
-#else
mutex_lock(&dir->d_inode->i_mutex);
-#endif
+
if (!dentry->d_inode || !dentry->d_inode->i_nlink) {
err = -ENOENT;
goto out;
@@ -1318,11 +1302,8 @@ int cifsd_vfs_unlink(struct dentry *dir,
err = vfs_unlink(dir->d_inode, dentry, NULL);
out:
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0)
- inode_unlock(dir->d_inode);
-#else
mutex_unlock(&dir->d_inode->i_mutex);
-#endif
+
dput(dentry);
if (err)
cifsd_debug("failed to delete, err %d\n", err);

View File

@@ -24,7 +24,7 @@ What we need is the public key for the clients.
For dropbear "dropbearkey -y -f files/etc/dropbear/logid" will generate the public key.
----------
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCwn9RaDAzxW1dTmIhXgFBnpi1lhj8xhYpCVQiPxxdk9IEmH8zjo4y9j3sPkqKOlRnkwjpZIpLEKBnpQTwVIMCU/AG7nDJX3OH9RfS9mLJQLfFL8HyGCyqDezFWldbyovhJZvdUeK4tAXJWv2W3OVHiz2L8IlncBgP/E9DJElsyhhQHsM96UE6tBkXsvXkoDbMSYXFcLbgiUwBKfmM2BF/aPDL45iznGur7/2j9v95PwJ0gtMu9jjNRq+pXCXhTh3bsnczm0MpZC1aiRc9nJAeGIMmhrf15E4jBKgTnrstzJxGVAdajKeR954KcNsS33cS2Wmui2YjmPbBXjqf1frzJ log@inteno
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCwn9RaDAzxW1dTmIhXgFBnpi1lhj8xhYpCVQiPxxdk9IEmH8zjo4y9j3sPkqKOlRnkwjpZIpLEKBnpQTwVIMCU/AG7nDJX3OH9RfS9mLJQLfFL8HyGCyqDezFWldbyovhJZvdUeK4tAXJWv2W3OVHiz2L8IlncBgP/E9DJElsyhhQHsM96UE6tBkXsvXkoDbMSYXFcLbgiUwBKfmM2BF/aPDL45iznGur7/2j9v95PwJ0gtMu9jjNRq+pXCXhTh3bsnczm0MpZC1aiRc9nJAeGIMmhrf15E4jBKgTnrstzJxGVAdajKeR954KcNsS33cS2Wmui2YjmPbBXjqf1frzJ log@iopsys
----------
The public key should be just one line. Add that line to the

61
dectmngr/Makefile Normal file
View File

@@ -0,0 +1,61 @@
#
# Copyright (C) 2021 IOPSYS Software Solutions AB
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
PKG_NAME:=dectmngr
PKG_RELEASE:=3
PKG_VERSION:=3.0.3
LOCAL_DEV=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/dectmngr.git
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=004098272e7b9518c25d746c93b2d1d88936379b
endif
PKG_LICENSE:=GPLv2
PKG_LICENSE_FILES:=LICENSE
RSTRIP:=true
export BUILD_DIR
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_BUILD_PARALLEL:=1
include $(INCLUDE_DIR)/package.mk
define Package/$(PKG_NAME)
CATEGORY:=Utilities
TITLE:=DECT Manager
DEPENDS:= +libubox +ubus
endef
define Package/$(PKG_NAME)/description
DECT manager is a daemon that provides UBUS RPC objects and sends UBUS events for communication with the DECT chip.
endef
ifeq ($(LOCAL_DEV),1)
define Build/Prepare
rsync -av --exclude=.* ~/git/voip/dectmngr/* $(PKG_BUILD_DIR)/
endef
endif
MAKE_FLAGS += \
CFLAGS+="-Wall"
define Package/$(PKG_NAME)/install
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_DIR) $(1)/etc
$(INSTALL_BIN) $(PKG_BUILD_DIR)/app/dectmngr $(1)/usr/sbin/
$(STRIP) $(1)/usr/sbin/dectmngr
$(CP) ./files/etc/* $(1)/etc/
endef
$(eval $(call BuildPackage,$(PKG_NAME)))

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

61
dectmngr/files/etc/init.d/dect Executable file
View File

@@ -0,0 +1,61 @@
#!/bin/sh /etc/rc.common
#
# Copyright (C) 2021 OpenWrt.org
#
source /lib/functions/uci-defaults.sh
START=70
STOP=12
USE_PROCD=1
NAME=dectmngr
PROG=/usr/sbin/dectmngr
# Ask dectmngr to exit nicely and wait for it to clean up, which is a slow process.
stop_and_wait_dectmngr() {
pidof $NAME && killall -q $NAME
pidof $NAME && sleep 2 # wait for the process to stop gracefully
while pidof $NAME; do
killall -q -9 $NAME
sleep 1
done
}
start_service() {
test $(db get hw.board.hasDect) = "0" && return
echo 1 > /sys/class/gpio/gpio14/value
procd_open_instance
procd_set_param command $PROG -comname ttyH0
procd_set_param respawn 6 2 3
procd_set_param term_timeout 20
procd_set_param triggers asterisk
procd_close_instance
}
stop_service() {
test $(db get hw.board.hasDect) = "0" && return
echo 0 > /sys/class/gpio/gpio14/value
stop_and_wait_dectmngr
}
reload_service() {
stop_and_wait_dectmngr
start
}
service_triggers()
{
procd_add_reload_trigger asterisk
}
boot() {
echo 14 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio14/direction
start
}

View File

@@ -0,0 +1,27 @@
#!/bin/sh
SOUND_BASE=/lib/modules/$(uname -r)/kernel/sound
SOUND_MODULES="$SOUND_BASE/soundcore.ko $SOUND_BASE/core/snd.ko $SOUND_BASE/core/snd-timer.ko"
SOUND_MODULES="$SOUND_MODULES $SOUND_BASE/core/snd-pcm.ko $SOUND_BASE/core/snd-hwdep.ko"
SOUND_MODULES="$SOUND_MODULES $SOUND_BASE/core/seq/snd-seq-device.ko"
SOUND_MODULES="$SOUND_MODULES $SOUND_BASE/core/seq/snd-seq.ko $SOUND_BASE/core/snd-rawmidi.ko "
SOUND_MODULES="$SOUND_MODULES $SOUND_BASE/usb/snd-usbmidi-lib.ko $SOUND_BASE/usb/snd-usb-audio.ko"
load_sound_modules() {
for mod in $SOUND_MODULES; do
insmod $mod
done
}
unload_sound_modules() {
local modules=
# reverse the order
for mod in $SOUND_MODULES; do
modules="$mod $modules"
done
for mod in $modules; do
rmmod $mod
done
}

View File

@@ -1,56 +0,0 @@
#
# Copyright (C) 2019 iopsys Software Solutions AB
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
PKG_RELEASE:=1
PKG_VERSION:=1.3.0
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/dectmngr.git
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=2c8990fd5275d469e8ab6c7a99e17fe0a56052ea
PKG_NAME:=dectmngr2
PKG_LICENSE:=GPLv2
PKG_LICENSE_FILES:=LICENSE
export BUILD_DIR
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_BUILD_PARALLEL:=1
include $(INCLUDE_DIR)/package.mk
define Package/dectmngr2
CATEGORY:=Utilities
TITLE:=Dectmngr2
URL:=
DEPENDS:= +natalie-dect-h bcmkernel +libubox +ubus +libpicoevent endptmngr
endef
define Package/dectmngr2/description
Dectmngr2
endef
define Package/dectmngr2/install
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_DIR) $(1)/etc/dect/
$(INSTALL_DIR) $(1)/etc/config/
$(INSTALL_DIR) $(1)/etc/init.d/
$(INSTALL_DIR) $(1)/etc/uci-defaults/
$(INSTALL_BIN) $(PKG_BUILD_DIR)/src/dectmngr2 $(1)/usr/sbin/
$(INSTALL_BIN) $(PKG_BUILD_DIR)/files/target.bin $(1)/etc/dect/
$(INSTALL_BIN) $(PKG_BUILD_DIR)/files/nvs_default $(1)/etc/dect/
$(INSTALL_BIN) $(PKG_BUILD_DIR)/files/dect $(1)/etc/init.d/
$(INSTALL_BIN) $(PKG_BUILD_DIR)/files/dectmngr-wrapper.sh $(1)/usr/sbin/
$(CP) ./files/dect.config $(1)/etc/config/dect
$(CP) ./files/etc/uci-defaults/* $(1)/etc/uci-defaults/
endef
$(eval $(call BuildPackage,dectmngr2))

View File

@@ -1,4 +0,0 @@
config dect 'dect'
option radio 'auto'

View File

@@ -1,23 +0,0 @@
#!/bin/sh
# Workaround for product DG400 which has an
# incorrect value in nvram from factory.
if [ -e "/proc/nvram/BoardId" ]; then
boardid=$(cat /proc/nvram/BoardId)
ulBoardStuffOption=$(cat /proc/nvram/ulBoardStuffOption)
if [ "$boardid" = "DG400R0" -a "$ulBoardStuffOption" = "0xffffffff" ]; then
echo "0xfffffff2" >/proc/nvram/ulBoardStuffOption
db -q batch <<-EOT
set hw.board.has_dect=1
commit hw.board
EOT
fi
fi
exit 0

View File

@@ -8,12 +8,12 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=dslmngr
PKG_VERSION:=1.0.1
PKG_VERSION:=1.1.0
LOCAL_DEV=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=63525fe43aa57a710bb097e4c0ed496c4032db6d
PKG_SOURCE_VERSION:=1fa1cee62c52c69c321ddf93399fef9483520996
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/dslmngr.git
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
endif
@@ -25,9 +25,7 @@ PKG_LICENSE_FILES:=LICENSE
include $(INCLUDE_DIR)/package.mk
ifeq ($(CONFIG_TARGET_iopsys_brcm63xx_mips),y)
TARGET_PLATFORM=BROADCOM
else ifeq ($(CONFIG_TARGET_iopsys_brcm63xx_arm),y)
ifeq ($(CONFIG_TARGET_iopsys_brcm63xx_arm),y)
TARGET_PLATFORM=BROADCOM
else ifeq ($(CONFIG_TARGET_iopsys_ramips),y)
TARGET_PLATFORM=MEDIATEK

View File

@@ -19,7 +19,7 @@ define Package/easy-qos
SECTION:=net
CATEGORY:=Network
TITLE:=Easy QoS
DEPENDS:=@(TARGET_intel_mips||TARGET_iopsys_brcm63xx_arm||TARGET_iopsys_brcm63xx_mips)
DEPENDS:=@(TARGET_intel_mips||TARGET_iopsys_brcm63xx_arm)
endef
define Package/easy-qos/description

View File

@@ -1,23 +0,0 @@
if (PACKAGE_libwifi || PACKAGE_libdsl || PACKAGE_libethernet)
menu "configurations"
config IOP_LLA_LIBS_DEBUG
bool "Enable debugging support"
default n
config LIBWIFI_DEBUG
depends on PACKAGE_libwifi
bool "Enable wifi debugging"
default n
config LIBDSL_DEBUG
depends on PACKAGE_libdsl
bool "Enable xdsl debugging"
default n
config LIBDSL_TEST
depends on PACKAGE_libdsl
bool "Libdsl test program"
default n
endmenu
endif

View File

@@ -7,13 +7,13 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=easy-soc-libs
PKG_VERSION:=4.8.6
PKG_VERSION:=6.1.20
PKG_RELEASE:=1
LOCAL_DEV=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=7ee57451ac6ed25fd2c1c38e58a508b0362245a7
PKG_SOURCE_VERSION:=c69171f8025a92c3224fd7eb0f6569126b86832e
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
@@ -29,52 +29,18 @@ include $(INCLUDE_DIR)/package.mk
define Package/easy-soc-libs
SECTION:=libs
CATEGORY:=Libraries
TITLE:=IOPSYS easy SoC libraries
SUBMENU:=IOPSYS easy SoC libraries
TITLE:=IOPSYS Easy SoC libraries
SUBMENU:=IOPSYS Easy SoC libraries
DEPENDS:=+libopenssl
MENU:=1
endef
define Package/libwifi/config
source "$(SOURCE)/Config.in"
endef
define Package/libeasy
$(call Package/easy-soc-libs)
TITLE:= Common helper functions library (libeasy)
DEPENDS+=+libnl +libnl-route
endef
define Package/libwifi
$(call Package/easy-soc-libs)
TITLE:= WiFi library (libwifi)
DEPENDS+=+libnl +libnl-route +libeasy
endef
define Package/libethernet
$(call Package/easy-soc-libs)
TITLE:= Ethernet library (libethernet)
DEPENDS+=+libnl +libnl-route +libeasy +TARGET_iopsys_ramips:swconfig
endef
ifeq ($(CONFIG_TARGET_iopsys_brcm63xx_mips),y)
ifeq ($(CONFIG_TARGET_iopsys_brcm63xx_arm),y)
TARGET_PLATFORM=BROADCOM
TARGET_CFLAGS +=-DIOPSYS_BROADCOM -DCONFIG_BCM963138 \
-I$(STAGING_DIR)/usr/include/bcm963xx/bcmdrivers/opensource/include/bcm963xx
KERNEL_DIR:=$(BUILD_DIR)/bcmkernel/bcm963xx
else ifeq ($(CONFIG_TARGET_iopsys_brcm63xx_arm),y)
TARGET_PLATFORM=BROADCOM
TARGET_CFLAGS +=-DIOPSYS_BROADCOM \
-I$(STAGING_DIR)/usr/include/bcm963xx/bcmdrivers/opensource/include/bcm963xx
ifeq ($(CONFIG_TARGET_iopsys_brcm63xx_arm_panther),y)
TARGET_CFLAGS +=-DCONFIG_BCM96846
else ifeq ($(CONFIG_TARGET_iopsys_brcm63xx_arm_tiger),y)
TARGET_CFLAGS +=-DCONFIG_BCM96858
else ifeq ($(CONFIG_TARGET_iopsys_brcm63xx_arm_eagle),y)
TARGET_CFLAGS +=-DCONFIG_BCM963178
else
TARGET_CFLAGS +=-DCONFIG_BCM963138
endif
CHIP_ID=$(patsubst "%",%,$(CONFIG_BCM_CHIP_ID))
TARGET_CFLAGS +=-DIOPSYS_BROADCOM -DCHIP_$(CHIP_ID) -DCONFIG_BCM9$(CHIP_ID) \
-I$(STAGING_DIR)/usr/include/bcm963xx/bcmdrivers/opensource/include/bcm963xx \
-I$(STAGING_DIR)/usr/include/bcm963xx/userspace/public/include
else ifeq ($(CONFIG_TARGET_iopsys_ramips),y)
TARGET_PLATFORM=MEDIATEK
TARGET_CFLAGS +=-DIOPSYS_MEDIATEK
@@ -96,21 +62,20 @@ endif
export TARGET_PLATFORM
ifdef CONFIG_IOP_LLA_LIBS_DEBUG
TARGET_CFLAGS += -DIOP_LLA_LIBS_DEBUG
endif
define Package/libdsl
$(call Package/easy-soc-libs)
TITLE:= XDSL library (libdsl)
DEPENDS+=+TARGET_intel_mips:dsl-cpe-api-vrx +TARGET_intel_mips:dsl-cpe-fapi +TARGET_intel_mips:kmod-ppa-drv
endef
subdirs := \
$(if $(CONFIG_PACKAGE_libeasy),libeasy) \
$(if $(CONFIG_PACKAGE_libwifi),libwifi) \
$(if $(CONFIG_PACKAGE_libdsl),libdsl) \
$(if $(CONFIG_PACKAGE_libethernet),libethernet)
$(if $(CONFIG_PACKAGE_libethernet),libethernet) \
$(if $(CONFIG_PACKAGE_libqos),libqos)
EASY_SOC_LIBS := \
libeasy \
libwifi \
libdsl \
libethernet \
libqos
TARGET_CFLAGS += \
-I$(STAGING_DIR)/usr/include \
@@ -130,78 +95,36 @@ define Build/Prepare
endef
endif
define Build/InstallDev/libeasy
$(INSTALL_DIR) $(1)/usr/include/easy
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_BUILD_DIR)/libeasy/easy.h $(1)/usr/include/easy/
$(CP) $(PKG_BUILD_DIR)/libeasy/event.h $(1)/usr/include/easy/
$(CP) $(PKG_BUILD_DIR)/libeasy/utils.h $(1)/usr/include/easy/
$(CP) $(PKG_BUILD_DIR)/libeasy/libeasy*.so* $(1)/usr/lib/
endef
include easy.mk
include wifi.mk
include dsl.mk
include ethernet.mk
include qos.mk
define Build/InstallDev/libwifi
$(INSTALL_DIR) $(1)/usr/include
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_BUILD_DIR)/libwifi/wifi.h $(1)/usr/include/
$(CP) $(PKG_BUILD_DIR)/libwifi/libwifi*.so* $(1)/usr/lib/
ifneq ($(wildcard $(PKG_BUILD_DIR)/.config_*),\
$(PKG_BUILD_DIR)/.config_$(patsubst "%",%,$(CONFIG_TARGET_PROFILE)))
define Build/Compile/rebuild
$(FIND) $(PKG_BUILD_DIR) -name \*.o -or -name \*.so\* | $(XARGS) rm -f;
$(if $(wildcard $(PKG_BUILD_DIR)/config_*), \
rm -f $(PKG_BUILD_DIR)/.config_*)
endef
endif
define Build/InstallDev/libdsl
$(INSTALL_DIR) $(1)/usr/include/xdsl
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_BUILD_DIR)/libdsl/xdsl.h $(1)/usr/include/xdsl
$(CP) $(PKG_BUILD_DIR)/libdsl/xtm.h $(1)/usr/include/xdsl
$(CP) $(PKG_BUILD_DIR)/libdsl/common.h $(1)/usr/include/xdsl
$(CP) $(PKG_BUILD_DIR)/libdsl/libdsl.so* $(1)/usr/lib/
endef
define Build/InstallDev/libethernet
$(INSTALL_DIR) $(1)/usr/include
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_BUILD_DIR)/libethernet/ethernet.h $(1)/usr/include/
$(CP) $(PKG_BUILD_DIR)/libethernet/libethernet.so $(1)/usr/lib/
endef
STAMP_CONFIGURED:=$(strip $(STAMP_CONFIGURED))_$(shell echo $(TARGET_CFLAGS) | mkhash md5)
define Build/Compile
$(Build/Compile/rebuild)
touch $(PKG_BUILD_DIR)/.config_$(CONFIG_TARGET_PROFILE)
$(call Build/Compile/Default)
ifeq ($(CONFIG_LIBDSL_TEST),y)
$(MAKE) -C "$(PKG_BUILD_DIR)/libdsl/test" $(MAKE_FLAGS)
endif
$(foreach dir,$(subdirs),$(call Build/Compile/$(dir)))
endef
define Build/InstallDev
$(foreach dir,$(subdirs),$(call Build/InstallDev/$(dir),$(1),$(2));)
endef
define Package/libeasy/install
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_BUILD_DIR)/libeasy/libeasy*.so* $(1)/usr/lib/
endef
define Package/libwifi/install
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_BUILD_DIR)/libwifi/libwifi*.so* $(1)/usr/lib/
endef
define Package/libethernet/install
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_BUILD_DIR)/libethernet/libethernet.so* $(1)/usr/lib/
endef
define Package/libdsl/install
$(INSTALL_DIR) $(1)/usr/lib
$(INSTALL_DIR) $(1)/usr/bin
$(CP) $(PKG_BUILD_DIR)/libdsl/libdsl.so* $(1)/usr/lib/
ifeq ($(CONFIG_LIBDSL_TEST),y)
$(CP) $(PKG_BUILD_DIR)/libdsl/test/libdsl_test $(1)/usr/bin/
endif
endef
define Package/easy-soc-libs/install
:
endef
$(eval $(call BuildPackage,libeasy))
$(eval $(call BuildPackage,libwifi))
$(eval $(call BuildPackage,libdsl))
$(eval $(call BuildPackage,libethernet))
$(eval $(foreach e,$(EASY_SOC_LIBS),$(call BuildPackage,$(e))))

47
easy-soc-libs/dsl.mk Normal file
View File

@@ -0,0 +1,47 @@
define Package/libdsl
$(call Package/easy-soc-libs)
TITLE:= XDSL library (libdsl)
DEPENDS+=+TARGET_intel_mips:dsl-cpe-api-vrx \
+TARGET_intel_mips:dsl-cpe-fapi \
+TARGET_intel_mips:kmod-ppa-drv
endef
define Package/libdsl/config
if PACKAGE_libdsl
config LIBDSL_DEBUG
depends on PACKAGE_libdsl
bool "Enable dsl debugging"
default n
config LIBDSL_TEST
depends on PACKAGE_libdsl
bool "Enable dsl test program"
default n
endif
endef
define Build/InstallDev/libdsl
$(INSTALL_DIR) $(1)/usr/include/xdsl
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_BUILD_DIR)/libdsl/xdsl.h $(1)/usr/include/xdsl
$(CP) $(PKG_BUILD_DIR)/libdsl/xtm.h $(1)/usr/include/xdsl
$(CP) $(PKG_BUILD_DIR)/libdsl/common.h $(1)/usr/include/xdsl
$(CP) $(PKG_BUILD_DIR)/libdsl/libdsl.so* $(1)/usr/lib/
endef
ifeq ($(CONFIG_LIBDSL_TEST),y)
define Build/Compile/libdsl
$(MAKE) -C "$(PKG_BUILD_DIR)/libdsl/test" $(MAKE_FLAGS)
endef
endif
define Package/libdsl/install
$(INSTALL_DIR) $(1)/usr/lib
$(INSTALL_DIR) $(1)/usr/bin
$(CP) $(PKG_BUILD_DIR)/libdsl/libdsl.so* $(1)/usr/lib/
ifeq ($(CONFIG_LIBDSL_TEST),y)
$(CP) $(PKG_BUILD_DIR)/libdsl/test/libdsl_test $(1)/usr/bin/
endif
endef

24
easy-soc-libs/easy.mk Normal file
View File

@@ -0,0 +1,24 @@
define Package/libeasy
$(call Package/easy-soc-libs)
TITLE:= Common helper functions library (libeasy)
DEPENDS+=+libnl +libnl-route
endef
define Build/InstallDev/libeasy
$(INSTALL_DIR) $(1)/usr/include/easy
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_BUILD_DIR)/libeasy/easy.h $(1)/usr/include/easy/
$(CP) $(PKG_BUILD_DIR)/libeasy/event.h $(1)/usr/include/easy/
$(CP) $(PKG_BUILD_DIR)/libeasy/utils.h $(1)/usr/include/easy/
$(CP) $(PKG_BUILD_DIR)/libeasy/if_utils.h $(1)/usr/include/easy/
$(CP) $(PKG_BUILD_DIR)/libeasy/debug.h $(1)/usr/include/easy/
$(CP) $(PKG_BUILD_DIR)/libeasy/libeasy*.so* $(1)/usr/lib/
endef
define Package/libeasy/install
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_BUILD_DIR)/libeasy/libeasy*.so* $(1)/usr/lib/
endef

27
easy-soc-libs/ethernet.mk Normal file
View File

@@ -0,0 +1,27 @@
define Package/libethernet
$(call Package/easy-soc-libs)
TITLE:= Ethernet library (libethernet)
DEPENDS+=+libnl +libnl-route +libeasy +TARGET_iopsys_ramips:swconfig
endef
define Package/libethernet/config
config LIBETHERNET_DEBUG
depends on PACKAGE_libethernet
bool "Enable ethernet debugging"
default n
endef
define Build/InstallDev/libethernet
$(INSTALL_DIR) $(1)/usr/include
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_BUILD_DIR)/libethernet/ethernet.h $(1)/usr/include/
$(CP) $(PKG_BUILD_DIR)/libethernet/libethernet.so $(1)/usr/lib/
endef
define Package/libethernet/install
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_BUILD_DIR)/libethernet/libethernet.so* $(1)/usr/lib/
endef

27
easy-soc-libs/qos.mk Normal file
View File

@@ -0,0 +1,27 @@
define Package/libqos
$(call Package/easy-soc-libs)
TITLE:= QoS library (libqos)
DEPENDS+=+libnl +libnl-route +libeasy
endef
define Package/libqos/config
config LIBQOS_DEBUG
depends on PACKAGE_libqos
bool "Enable qos debugging"
default n
endef
define Build/InstallDev/libqos
$(INSTALL_DIR) $(1)/usr/include
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_BUILD_DIR)/libqos/qos.h $(1)/usr/include/
$(CP) $(PKG_BUILD_DIR)/libqos/libqos.so $(1)/usr/lib/
endef
define Package/libqos/install
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_BUILD_DIR)/libqos/libqos*.so* $(1)/usr/lib/
endef

29
easy-soc-libs/wifi.mk Normal file
View File

@@ -0,0 +1,29 @@
define Package/libwifi
$(call Package/easy-soc-libs)
TITLE:= WiFi library (libwifi)
DEPENDS+=+libnl +libnl-route +libeasy +TARGET_iopsys_brcm63xx_arm:bcmkernel
endef
define Package/libwifi/config
if PACKAGE_libdsl
config LIBWIFI_DEBUG
depends on PACKAGE_libwifi
bool "Enable wifi debugging"
default n
endif
endef
define Build/InstallDev/libwifi
$(INSTALL_DIR) $(1)/usr/include
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_BUILD_DIR)/libwifi/wifi.h $(1)/usr/include/
$(CP) $(PKG_BUILD_DIR)/libwifi/libwifi*.so* $(1)/usr/lib/
endef
define Package/libwifi/install
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_BUILD_DIR)/libwifi/libwifi*.so* $(1)/usr/lib/
endef

View File

@@ -7,15 +7,15 @@
include $(TOPDIR)/rules.mk
PKG_RELEASE:=1
PKG_VERSION:=0.3
PKG_SOURCE_VERSION:=34ae1996beda98691d779e49f231bd662fc87cda
PKG_VERSION:=0.4
PKG_SOURCE_VERSION:=510b885c049b8ba06772dae59e64b370d0fded3e
PKG_LICENSE:=MIT
PKG_LICENSE_FILES:=LICENSE
ifeq ($(CONFIG_ENDPT_OPEN),y)
BRCM_KERNEL_PROFILE=$(shell echo $(CONFIG_BCM_KERNEL_PROFILE) | sed s/\"//g)
PKG_SOURCE:=endptmngr-$(BRCM_KERNEL_PROFILE)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_SOURCE_URL:=http://download.iopsys.eu/iopsys/opensdk/
PKG_SOURCE_URL:=https://download.iopsys.eu/iopsys/opensdk/
PKG_NAME:=endptmngr-open
PATCH_DIR:=
PKG_HASH:=skip
@@ -31,6 +31,16 @@ export BUILD_DIR
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_BUILD_PARALLEL:=1
# All config variable that are passed to the make invocation, directly or
# indirectly. This ensures that the package is rebuilt on config-changes.
PKG_CONFIG_DEPENDS := \
CONFIG_TARGET_BOARD
export CONFIG_BRCM_SDK_VER_504001
export CONFIG_BRCM_SDK_VER_504002
export CONFIG_BRCM_SDK_VER_504003
export CONFIG_BRCM_SDK_VER_504004
export CONFIG_BRCM_SDK_VER_504005
include $(INCLUDE_DIR)/package.mk
@@ -43,7 +53,7 @@ define Package/endptmngr
CATEGORY:=Utilities
TITLE:=Brcmslic
URL:=
DEPENDS:= +libubox +ubus +libpicoevent +bcmkernel @TARGET_HAS_VOICE @!TARGET_NO_VOICE
DEPENDS:= +libubox +ubus +libpicoevent +uci +bcmkernel @TARGET_HAS_VOICE @BCM_VOICE
endef
define Package/endptmngr/description

View File

@@ -5,10 +5,10 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=ethmngr
PKG_VERSION:=1.0.4
PKG_VERSION:=2.0.1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=b7135381aedf1bde6f7ab10b41be372a9bd7d155
PKG_SOURCE_VERSION:=5a0ff3bc7c49dcb05129f423ef8e0c4929f6aa03
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/ethmngr.git
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)_$(PKG_SOURCE_VERSION).tar.xz

View File

@@ -46,9 +46,10 @@ static ssize_t get_led_color(struct device *dev,
/* [ln] todo: dummy implementation */
int len;
len = sprintf(buf, "%d\n", 123);
len = scnprintf(buf, PAGE_SIZE, "%d\n", 123);
if (len <= 0) {
dev_err(dev, "sk9822: Invalid sprintf len: %d\n", len);
return -EIO;
}
return len;
@@ -99,8 +100,69 @@ static ssize_t set_led_color(struct device *dev,
}
static DEVICE_ATTR(led_color, S_IRUGO | S_IWUSR, get_led_color, set_led_color);
static ssize_t get_led_brightness(struct device *dev,
struct device_attribute *attr, char *buf)
{
int len;
struct sk9822_leds *sk9822 = dev_get_drvdata(dev);
if (IS_ERR(sk9822)) {
printk(KERN_ERR "Platform get drvdata returned NULL\n");
return -EIO;
}
len = scnprintf(buf, PAGE_SIZE, "%x\n", sk9822->led_brightness);
if (len <= 0) {
dev_err(dev, "sk9822: Invalid sprintf len: %d\n", len);
return -EIO;
}
return len;
}
/**
* @brief Set LED brightness
* @retval count number of bytes written
* @retval -EINVAL if the message is not a valid hexadecimal number
* @retval -EIO for all other errors (e.g. leds cannot be configured)
*/
static ssize_t set_led_brightness(struct device *dev,
struct device_attribute *attr, const char *buf, size_t count)
{
int ret = 0;
struct sk9822_leds *sk9822 = dev_get_drvdata(dev);
unsigned long val = SK9822_DEFAULT_BRIGHTNESS;
if (IS_ERR(sk9822)) {
printk(KERN_ERR "Platform get drvdata returned NULL\n");
return -EIO;
}
if (kstrtoul(buf, 16, &val)) {
return -EINVAL;
}
if(val > SK9822_DEFAULT_BRIGHTNESS) {
val = SK9822_DEFAULT_BRIGHTNESS;
}
sk9822->led_brightness = (uint8_t)val;
// Now push to the HW
ret = sk9822_update(sk9822);
if (ret != 0) {
printk(KERN_ERR "Failed to update led\n");
return -EIO;
}
return count;
}
static DEVICE_ATTR(led_brightness, S_IRUGO | S_IWUSR, get_led_brightness, set_led_brightness);
static struct attribute *sk9822_dev_attrs[] = {
&dev_attr_led_color.attr,
&dev_attr_led_brightness.attr,
NULL
};
@@ -129,6 +191,8 @@ static int canyon_led_probe(struct platform_device *pdev)
if (ret < 0) {
dev_warn(&pdev->dev, "Could not read led-count property\n");
leds->led_count = SK9822_DEFAULT_NUM_LEDS;
} else {
printk(KERN_INFO "Got led count: %u\n", leds->led_count);
}
leds->led_colors = devm_kzalloc(&pdev->dev,
@@ -140,7 +204,7 @@ static int canyon_led_probe(struct platform_device *pdev)
platform_set_drvdata(pdev, leds);
#if LINUX_VERSION_CODE <= KERNEL_VERSION(3, 16, 0)
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 3, 0)
leds->clock_gpio = gpiod_get_index(&pdev->dev, "led", 0);
#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 3, 0)
leds->clock_gpio = gpiod_get_index(&pdev->dev, "led", 0, GPIOD_OUT_HIGH);
@@ -148,6 +212,12 @@ static int canyon_led_probe(struct platform_device *pdev)
dev_warn(&pdev->dev, "Kernel version Not supported\n");
exit(1);
#endif
if (IS_ERR(leds->clock_gpio)) {
dev_err(&pdev->dev, "Failed to acquire clock GPIO %ld\n",
PTR_ERR(leds->clock_gpio));
leds->clock_gpio = NULL;
return PTR_ERR(leds->clock_gpio);
}
gpiod_direction_output(leds->clock_gpio, 1);
if (IS_ERR(leds->clock_gpio)) {
@@ -160,7 +230,7 @@ static int canyon_led_probe(struct platform_device *pdev)
gpiod_set_value(leds->clock_gpio, 0);
}
#if LINUX_VERSION_CODE <= KERNEL_VERSION(3, 16, 0)
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 3, 0)
leds->data_gpio = gpiod_get_index(&pdev->dev, "led", 1);
#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 3, 0)
leds->data_gpio = gpiod_get_index(&pdev->dev, "led", 1, GPIOD_OUT_HIGH);
@@ -168,6 +238,12 @@ static int canyon_led_probe(struct platform_device *pdev)
dev_warn(&pdev->dev, "Kernel version Not supported\n");
exit(1);
#endif
if (IS_ERR(leds->data_gpio)) {
dev_err(&pdev->dev, "Failed to acquire data GPIO %ld\n",
PTR_ERR(leds->data_gpio));
leds->data_gpio = NULL;
return PTR_ERR(leds->data_gpio);
}
gpiod_direction_output(leds->data_gpio, 1);
if (IS_ERR(leds->data_gpio)) {

View File

@@ -1,4 +1,4 @@
if PACKAGE_icwmp-curl || PACKAGE_icwmp-zstream
if PACKAGE_icwmp
config CWMP_SCRIPTS_FULL
bool "Install all icwmp scripts"
@@ -22,6 +22,6 @@ config CWMP_DEBUG
config CWMP_DEVEL_DEBUG
bool "Compile with development debug options"
default n
endif

View File

@@ -1,5 +1,5 @@
#
# Copyright (C) 2019 iopsys Software Solutions AB
# Copyright (C) 2020 iopsys Software Solutions AB
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
@@ -8,11 +8,11 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=icwmp
PKG_VERSION:=4.0-2020-07-07
PKG_VERSION:=6.4.6-2021-02-09
PKG_FIXUP:=autoreconf
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/icwmp.git
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=03a438d926247ac3eff5df1c5eeea3d6d2babd2b
PKG_SOURCE_VERSION:=196ae20ae8156aa01a4fb893031d3fcfb0481457
PKG_RELEASE=$(PKG_SOURCE_VERSION)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
@@ -26,80 +26,25 @@ PKG_CONFIG_DEPENDS:= \
CONFIG_CWMP_DEBUG \
CONFIG_CWMP_DEVEL_DEBUG
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
CWMP_REVISION=$(shell svnversion ./src/ -n|cut -f2 -d:)
include $(INCLUDE_DIR)/package.mk
define Package/icwmp_stun
SECTION:=utils
CATEGORY:=Utilities
TITLE:=TR-069 stun Client
DEPENDS:=+PACKAGE_icwmp_stun:libubus +PACKAGE_icwmp_stun:libuci +PACKAGE_icwmp_stun:libubox +PACKAGE_icwmp_stun:libjson-c +PACKAGE_icwmp_stun:libopenssl +PACKAGE_icwmp_stun:libblobmsg-json
endef
define Package/icwmp_xmpp
SECTION:=utils
CATEGORY:=Utilities
TITLE:=TR-069 xmpp feature
DEPENDS:=+PACKAGE_icwmp_xmpp:libuci +PACKAGE_icwmp_xmpp:libubox +PACKAGE_icwmp_xmpp:libexpat +PACKAGE_icwmp_xmpp:libstrophe
endef
define Package/icwmp_twamp
SECTION:=utils
CATEGORY:=Utilities
TITLE:=TR-069 twamp feature
DEPENDS:=+PACKAGE_icwmp_twamp:libuci
endef
define Package/icwmp_udpechoserver
SECTION:=utils
CATEGORY:=Utilities
TITLE:=TR-069 udpechoserver feature
DEPENDS:=+PACKAGE_icwmp_udpechoserver:libuci
endef
define Package/icwmp_bulkdata
SECTION:=utils
CATEGORY:=Utilities
TITLE:=TR-069 BulkData Collection
DEPENDS:=+PACKAGE_icwmp_bulkdata:libubus +PACKAGE_icwmp_bulkdata:libuci +PACKAGE_icwmp_bulkdata:libubox +PACKAGE_icwmp_bulkdata:libjson-c +PACKAGE_icwmp_bulkdata:libcurl +PACKAGE_icwmp_bulkdata:curl +PACKAGE_icwmp_bulkdata:libblobmsg-json +PACKAGE_icwmp_bulkdata:libbbfdm
endef
define Package/icwmp-tr098
SECTION:=utils
CATEGORY:=Utilities
TITLE:=CWMP client for TR-098 Data Model
DEPENDS:=+PACKAGE_icwmp-tr098:libuci +PACKAGE_icwmp-tr098:libmicroxml +PACKAGE_icwmp-tr098:libubox +PACKAGE_icwmp-tr098:jshn +PACKAGE_icwmp-tr098:libubus +PACKAGE_icwmp-tr098:libblobmsg-json +PACKAGE_icwmp-tr098:libpthread +PACKAGE_icwmp-tr098:ubusd +PACKAGE_icwmp-tr098:shflags +PACKAGE_icwmp-tr098:getopt +PACKAGE_icwmp-tr098:zlib +PACKAGE_icwmp-tr098:libjson-c +PACKAGE_icwmp-tr098:libopenssl +PACKAGE_icwmp-tr098:curl +PACKAGE_icwmp-tr098:libcurl +PACKAGE_icwmp-tr098:libtr098
endef
define Package/icwmp/Default
define Package/$(PKG_NAME)
SECTION:=utils
CATEGORY:=Utilities
SUBMENU:=TRx69
TITLE:=CWMP client
DEPENDS:=+libuci +libmicroxml +libubox +jshn +libubus +libblobmsg-json +libpthread +ubusd +shflags +getopt +zlib +libjson-c +libopenssl +curl +libbbfdm +libbbf_api
DEPENDS:=+libuci +libmicroxml +libubox +jshn +libubus +libblobmsg-json +libpthread +ubusd +shflags +getopt +zlib +libjson-c +libopenssl +curl +libcurl
endef
define Package/icwmp/description
define Package/$(PKG_NAME)/description
A free client implementation of CWMP (TR-069) protocol
endef
define Package/icwmp-curl
$(call Package/icwmp/Default)
TITLE+= (using libcurl)
DEPENDS+= +PACKAGE_icwmp-curl:libcurl
VARIANT:=curl
endef
define Package/icwmp-zstream
$(call Package/icwmp/Default)
TITLE+= (using libzstream)
DEPENDS+= +PACKAGE_icwmp-zstream:libzstream
VARIANT:=zstream
endef
define Package/icwmp-curl/config
define Package/$(PKG_NAME)/config
source "$(SOURCE)/Config_cwmp.in"
endef
@@ -113,36 +58,6 @@ endif
TARGET_CFLAGS += \
-D_GNU_SOURCE -D_AADJ
ifeq ($(CONFIG_PACKAGE_icwmp-tr098),y)
CONFIGURE_ARGS += \
--enable-icwmp_tr098
endif
ifeq ($(CONFIG_PACKAGE_icwmp_xmpp),y)
CONFIGURE_ARGS += \
--enable-icwmp_xmpp
endif
ifeq ($(CONFIG_PACKAGE_icwmp_stun),y)
CONFIGURE_ARGS += \
--enable-icwmp_stun
endif
ifeq ($(CONFIG_PACKAGE_icwmp_udpechoserver),y)
CONFIGURE_ARGS += \
--enable-icwmp_udpechoserver
endif
ifeq ($(CONFIG_PACKAGE_icwmp_twamp),y)
CONFIGURE_ARGS += \
--enable-icwmp_twamp
endif
ifeq ($(CONFIG_PACKAGE_icwmp_bulkdata),y)
CONFIGURE_ARGS += \
--enable-icwmp_bulkdata
endif
ifneq ($(CWMP_REVISION)_,_)
ifneq ($(CWMP_REVISION),exported)
ifneq ($(CWMP_REVISION),Unversioned directory)
@@ -159,17 +74,6 @@ CONFIGURE_ARGS += \
--with-uci-include-path=$(STAGING_DIR)/usr/include \
--with-libubox-include-path=$(STAGING_DIR)/usr/include \
--with-libubus-include-path=$(STAGING_DIR)/usr/include
ifeq ($(BUILD_VARIANT),zstream)
CONFIGURE_ARGS += \
--enable-http=zstream \
--with-zstream-include-path=$(STAGING_DIR)/usr/include
endif
ifeq ($(BUILD_VARIANT),curl)
CONFIGURE_ARGS += \
--enable-http=curl
endif
ifeq ($(CONFIG_CWMP_ACS_MULTI),y)
CONFIGURE_ARGS += \
@@ -191,17 +95,10 @@ CONFIGURE_ARGS += \
--enable-devel
endif
define Package/icwmp-$(BUILD_VARIANT)/install
define Package/$(PKG_NAME)/install
$(INSTALL_DIR) $(1)/etc/icwmpd
$(INSTALL_DIR) $(1)/usr/sbin
$(CP) $(PKG_BUILD_DIR)/bin/icwmpd $(1)/usr/sbin
$(INSTALL_DIR) $(1)/etc/config
$(INSTALL_CONF) $(PKG_BUILD_DIR)/config/cwmp $(1)/etc/config
$(INSTALL_CONF) $(PKG_BUILD_DIR)/config/firewall.cwmp $(1)/etc/firewall.cwmp
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_DIR) $(1)/etc/uci-defaults
$(INSTALL_BIN) $(PKG_BUILD_DIR)/init/icwmpd.init $(1)/etc/init.d/icwmpd
$(INSTALL_BIN) $(PKG_BUILD_DIR)/uci-defaults/* $(1)/etc/uci-defaults/
ifeq ($(CONFIG_CWMP_SCRIPTS_FULL),y)
$(INSTALL_DIR) $(1)/usr/share/icwmp
$(CP) $(PKG_BUILD_DIR)/scripts/defaults $(1)/usr/share/icwmp
@@ -212,60 +109,8 @@ endif
$(CP) ./files/* $(1)/
endef
define Package/icwmp-tr098/install
$(INSTALL_DIR) $(1)/usr/sbin
$(CP) $(PKG_BUILD_DIR)/bin/icwmp_tr098d $(1)/usr/sbin
endef
define Package/icwmp_stun/install
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/bin/icwmp_stund $(1)/usr/sbin/icwmp_stund
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) $(PKG_BUILD_DIR)/init/icwmp_stund $(1)/etc/init.d/icwmp_stund
$(INSTALL_DIR) $(1)/etc/config
$(INSTALL_CONF) $(PKG_BUILD_DIR)/config/cwmp_stun $(1)/etc/config
endef
define Package/icwmp_xmpp/install
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/bin/icwmp_xmppd $(1)/usr/sbin/icwmp_xmppd
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) $(PKG_BUILD_DIR)/init/icwmp_xmppd $(1)/etc/init.d/icwmp_xmppd
$(INSTALL_DIR) $(1)/etc/config
$(INSTALL_CONF) $(PKG_BUILD_DIR)/config/cwmp_xmpp $(1)/etc/config
$(CP) ./xmpp-files/* $(1)/
endef
define Package/icwmp_udpechoserver/install
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/bin/icwmp_udpechoserverd $(1)/usr/sbin/icwmp_udpechoserverd
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) $(PKG_BUILD_DIR)/init/icwmp_udpechoserverd $(1)/etc/init.d/icwmp_udpechoserverd
$(INSTALL_DIR) $(1)/etc/config
$(INSTALL_CONF) $(PKG_BUILD_DIR)/config/cwmp_udpechoserver $(1)/etc/config
endef
define Package/icwmp_twamp/install
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/bin/icwmp_twampd $(1)/usr/sbin/icwmp_twampd
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) $(PKG_BUILD_DIR)/init/icwmp_twampd $(1)/etc/init.d/icwmp_twampd
$(INSTALL_DIR) $(1)/etc/config
$(INSTALL_CONF) $(PKG_BUILD_DIR)/config/cwmp_twamp $(1)/etc/config
endef
define Package/icwmp_bulkdata/install
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/bin/icwmp_bulkdatad $(1)/usr/sbin/icwmp_bulkdatad
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) $(PKG_BUILD_DIR)/init/icwmp_bulkdatad $(1)/etc/init.d/icwmp_bulkdatad
$(INSTALL_DIR) $(1)/etc/config
$(INSTALL_CONF) $(PKG_BUILD_DIR)/config/cwmp_bulkdata $(1)/etc/config
endef
define Package/icwmp-$(BUILD_VARIANT)/postinst
define Package/$(PKG_NAME)/postinst
#!/bin/sh
echo "$(CWMP_BKP_FILE)" >> $${IPKG_INSTROOT}/etc/sysupgrade.conf
if [ -z "$${IPKG_INSTROOT}" ]; then
echo "Enabling rc.d symlink for icwmpd"
/etc/init.d/icwmpd enable
@@ -273,7 +118,7 @@ define Package/icwmp-$(BUILD_VARIANT)/postinst
exit 0
endef
define Package/icwmp-$(BUILD_VARIANT)/prerm
define Package/$(PKG_NAME)/prerm
#!/bin/sh
if [ -z "$${IPKG_INSTROOT}" ]; then
echo "Disabling rc.d symlink for icwmpd"
@@ -282,11 +127,4 @@ define Package/icwmp-$(BUILD_VARIANT)/prerm
exit 0
endef
$(eval $(call BuildPackage,icwmp-curl))
$(eval $(call BuildPackage,icwmp_stun))
$(eval $(call BuildPackage,icwmp_xmpp))
$(eval $(call BuildPackage,icwmp_udpechoserver))
$(eval $(call BuildPackage,icwmp_twamp))
$(eval $(call BuildPackage,icwmp_bulkdata))
$(eval $(call BuildPackage,icwmp-tr098))
#$(eval $(call BuildPackage,icwmp-zstream))
$(eval $(call BuildPackage,$(PKG_NAME)))

View File

@@ -0,0 +1,48 @@
config acs 'acs'
option url ''
option userid '' #$OUI-$SER
option passwd 'iopsys'
option periodic_inform_enable 'true'
option periodic_inform_interval '1800'
option periodic_inform_time '0'
option ParameterKey ''
option dhcp_discovery 'enable'
# compression possible configs: GZIP, Deflate, Disabled
option compression 'Disabled'
#­ possible configs interval :[1:65535]
option retry_min_wait_interval '5'
#­ possible configs interval :[1000:65535]
option retry_interval_multiplier '2000'
option https_ssl_capath ''
option ipv6_enable '0'
option ip_version '4'
config cpe 'cpe'
option interface 'eth0.1'
option default_wan_interface 'wan'
option log_to_console 'disable'
option log_to_file 'enable'
# log_severity: INFO (Default)
# log_severity possible configs: EMERG, ALERT, CRITIC ,ERROR, WARNING, NOTICE, INFO, DEBUG
option log_severity 'INFO'
option log_file_name '/var/log/icwmpd.log'
option log_max_size '102400'
option userid '' #$OUI-$SER
option passwd 'iopsys'
option port '7547'
option ubus_socket '/var/run/ubus.sock'
option provisioning_code ''
option amd_version '5'
# compression possible configs: InstanceNumber, InstanceAlias
option instance_mode 'InstanceNumber'
option session_timeout '60'
option notification '1'
option datamodel 'tr181'
option exec_download '0'
option periodic_notify_enable '1'
option periodic_notify_interval '10'
config lwn 'lwn'
option enable '1'
option hostname ''
option port '0'

View File

@@ -0,0 +1,21 @@
#created by the icwmp package
zone_name=""
port=""
if [ "$zone_name" = "" ]; then
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
else
iptables -F zone_icwmp_input
iptables -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
fi
#iptables -I FW_ZONE -p tcp -s ACS_ADDRESS --dport PORT -j ACCEPT --comment "Open ACS port"

189
icwmp/files/etc/init.d/icwmpd Executable file
View File

@@ -0,0 +1,189 @@
#!/bin/sh /etc/rc.common
# Copyright (C) 2015-2019 iopsys Software Solutions AB
. /lib/functions.sh
include /lib/network
. /usr/share/libubox/jshn.sh
START=99
STOP=10
USE_PROCD=1
PROG="/usr/sbin/icwmpd"
EXTRA_HELP=" start [GetRPCMethods] Start icwmpd service and send GetRPCMethods"
validate_url() {
# SCHEMA_LIST: contain list of possible schemas that could be present in the acs url
# Example: SCHEMA_LIST="http https"
SCHEMA_LIST="http"
for schema in $SCHEMA_LIST; do
dest=`echo $1 | sed 's/$schema:\/\///g' | cut -f1 -d \/ | cut -f1 -d:`
if [ "_$dest" != "_" ]; then
return 0
fi
done
return 1
}
get_acs_url() {
local default_acs="http://10.10.1.6:8000/openacs/acs"
local acs_dhcp_discovery="$(uci -q get cwmp.acs.dhcp_discovery)"
local url="$(uci -q get cwmp.acs.url)"
local dhcp_url="$(uci -P /var/state -q get cwmp.acs.dhcp_url)"
if [ "$acs_dhcp_discovery" == "enable" -a -n "$dhcp_url" -o -z "$url" ]; then
url="$dhcp_url"
echo "ACS URL from DHCP server: $url"
[ -n "$url" ] && uci -P /var/state -q set cwmp.acs.url="$url" || url="$default_acs"
elif [ -n "$url" ];then
url="$(uci -q get cwmp.acs.url)"
echo "ACS URL from configuration: $url"
else
url="$default_acs"
echo "Using default ACS URL: $url"
[ -n "$url" ] && uci -P /var/state -q set cwmp.acs.url="$url"
fi
validate_url "$url"
if [ "$?" != "0" ];then
echo "Invalid ACS URL: $url"
exit 1
fi
}
enable_dhcp_option43() {
local wan=$1
local discovery=0
case $2 in
enable|1) discovery=1 ;;
esac
### Ask for DHCP Option 43 only if CWMP is enabled ###
local enabled
local newreqopts=
local baseopts=
local reqopts="$(uci -q get network.$wan.reqopts)"
local proto="$(uci -q get network.$wan.proto)"
local tropts="43"
local oldreqopts="$reqopts"
local ropt iopt
for ropt in $reqopts; do
case $ropt in
43) ;;
*) baseopts="$baseopts $ropt" ;;
esac
done
ropt=""
reqopts="$baseopts $tropts"
for ropt in $reqopts; do
case $ropt in
43) [ $discovery -eq 1 ] && newreqopts="$newreqopts $ropt" ;;
*) newreqopts="$newreqopts $ropt" ;;
esac
done
if [ $proto == "dhcp" ]; then
newreqopts="$(echo $newreqopts | tr ' ' '\n' | sort -n | tr '\n' ' ' | sed 's/^[ \t]*//;s/[ \t]*$//')"
oldreqopts="$(echo $oldreqopts | tr ' ' '\n' | sort -n | tr '\n' ' ' | sed 's/^[ \t]*//;s/[ \t]*$//')"
[ "$newreqopts" == "$oldreqopts" ] && return
uci -q set network.$wan.reqopts="$newreqopts"
uci commit network
ubus call network reload
fi
########################################################
}
wait_for_option43() {
local time=$1
local default_wan_interface dhcp_discovery url
config_get default_wan_interface cpe default_wan_interface "wan"
config_get dhcp_discovery acs dhcp_discovery "0"
config_get url acs url
enable_dhcp_option43 $default_wan_interface $dhcp_discovery
local tm=0
if [ "$dhcp_discovery" == "enable" -o "$dhcp_discovery" == "1" ]
then
echo "Waiting for discovery of ACS URL from dhcp server ..."
while [ $tm -le $time ]
do
acs_url=`uci -P /var/state -q get cwmp.acs.dhcp_url`
if [ "$acs_url" != "" ]
then
break
else
sleep 1
fi
tm=$((tm+1))
done
fi
}
wait_for_resolvfile() {
local time=$1
local tm=1
local resolvfile="$(uci -q get dhcp.@dnsmasq[0].resolvfile)"
[ -n "$resolvfile" ] || return
while [ ! -f $resolvfile ]; do
sleep 1
[ $tm -ge $time ] && break
tm=$((tm+1))
done
}
set_wan_interface() {
local l3_device=""
local default_wan_interface=""
config_get default_wan_interface cpe default_wan_interface "wan"
json_load "$(ifstatus $default_wan_interface)"
json_get_var l3_device l3_device
if [ "$l3_device" != "" ];then
uci -q set cwmp.cpe.interface="$l3_device"
uci -q commit cwmp
fi
}
start_service() {
if [ ! -f /tmp/.icwmpd_boot ]; then
touch /etc/icwmpd/.icwmpd_boot
touch /tmp/.icwmpd_boot
else
[ -f /sbin/netifd ] && echo "Waiting for Network to be started ..." && ubus -t 5 wait_for network.interface
[ -f /etc/config/wireless ] && echo "Waiting for WiFi to be started ..." && ubus -t 5 wait_for network.wireless
[ -f /usr/sbin/dnsmasq ] && echo "Waiting for DNS Proxy to be started ..." && ubus -t 5 wait_for dnsmasq
[ -f /etc/config/dhcp ] && echo "Waiting for DNS Server(s) ..." && wait_for_resolvfile 20
[ -f /usr/sbin/asterisk ] && echo "Waiting for Voice to be started ..." && ubus -t 5 wait_for asterisk
config_load cwmp
set_wan_interface
wait_for_option43 20
get_acs_url
procd_open_instance
procd_set_param command "$PROG"
if [ "$1" = "GetRPCMethods" ];then
procd_append_param command -g
elif [ -f /etc/icwmpd/.icwmpd_boot ]; then
procd_append_param command -b
fi
procd_set_param respawn "3" "7" "0"
procd_close_instance
fi
}
reload_service() {
stop
start
}
service_triggers() {
procd_add_config_trigger "config.change" "cwmp" /etc/init.d/icwmpd reload
}

View File

@@ -1,4 +1,3 @@
# Copy defaults by the factory to the cwmp UCI user section.
@@ -15,10 +14,19 @@ mac=$(printf "%12.12X" $((0x$baseMac)))
# Get system serial number.
serial=$(db -q get hw.board.serial_number)
uci -q batch <<-EOF
set cwmp.acs.userid="${mac:0:6}-${serial}"
set cwmp.cpe.userid="${mac:0:6}-${serial}"
EOF
# Get userid values
acs_userid=$(uci -q get cwmp.acs.userid)
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}"
fi
if [ -z "$cpe_userid" ]
then
uci -q set cwmp.cpe.userid="${mac:0:6}-${serial}"
fi
# No need for commit here, it is done by uci_apply_defaults().

View File

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

View File

@@ -0,0 +1 @@
/etc/icwmpd/.icwmpd_backup_session.xml

View File

@@ -0,0 +1,29 @@
#!/bin/sh
# As part of sysupgrade we copy CWMP Backup Session XML file.
# Abort on any error.
set -e
# Do nothing if user want to discard old settings.
if [ -n "$SAVE_CONFIG" ] && [ $SAVE_CONFIG -eq 0 ]; then
exit 0
fi
# Source functions.
for f in /lib/upgrade/iopsys*.sh; do
[ -r "$f" -a -s "$f" ] || continue
source $f
done
if [ -s "${2}/etc/icwmpd/.icwmpd_backup_session.xml" ]; then
cat "${2}/etc/icwmpd/.icwmpd_backup_session.xml" > "/etc/icwmpd/.icwmpd_backup_session.xml"
fi
# Report success.
log "post-hooks" "CWMP Backup Session XML file migrated"
exit 0

View File

@@ -5,12 +5,12 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=ieee1905
PKG_VERSION:=2.0.26
PKG_VERSION:=2.1.37
LOCAL_DEV:=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=b7840dfe0b57cbdd47ec3167cbc7d2a6f9e41fd4
PKG_SOURCE_VERSION:=65bed80b42fa4e339fe20a638a58009858edf11f
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/ieee1905.git
PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_VERSION).tar.gz
endif
@@ -40,12 +40,22 @@ define Package/libieee1905
TITLE:=IEEE1905 cmdu tlv utility library
endef
define Package/libwsc
SECTION:=utils
CATEGORY:=Utilities
TITLE:=Wifi Simple Configuration building and processing library
DEPENDS= +libopenssl +libuci +libubus
endef
define Package/lib1905hle
SECTION:=utils
CATEGORY:=Utilities
TITLE:=IEEE1905 hle stack library
endef
LIBS := \
$(if $(CONFIG_PACKAGE_libwsc),libwsc.so)
TARGET_CFLAGS += \
-I$(STAGING_DIR)/usr/include \
-D_GNU_SOURCE \
@@ -53,6 +63,9 @@ TARGET_CFLAGS += \
-Wall \
-Wextra
MAKE_FLAGS += \
LIBS="$(LIBS)"
ifeq ($(CONFIG_IEEE1905_SPEED_UP_DISCOVERY),y)
TARGET_CFLAGS += -DSPEED_UP_DISCOVERY
endif
@@ -97,6 +110,18 @@ define Package/libieee1905/install
$(CP) $(PKG_BUILD_DIR)/lib/libieee1905.so $(1)/usr/lib/libieee1905.so
endef
define Package/libwsc/install
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_BUILD_DIR)/lib/libwsc.so $(1)/usr/lib/libwsc.so
endef
define Build/InstallDev/libwsc.so
$(INSTALL_DIR) $(1)/usr/include
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_BUILD_DIR)/libwsc/include/wsc.h $(1)/usr/include/
$(CP) $(PKG_BUILD_DIR)/lib/libwsc.so $(1)/usr/lib/
endef
define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/include
$(INSTALL_DIR) $(1)/usr/include/ieee1905
@@ -107,8 +132,10 @@ define Build/InstallDev
$(CP) $(PKG_BUILD_DIR)/lib1905hle/include/*.h $(1)/usr/include/lib1905hle/
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_BUILD_DIR)/lib/libieee1905.so $(1)/usr/lib
$(foreach lib,$(LIBS),$(call Build/InstallDev/$(lib),$(1),$(2));)
endef
$(eval $(call BuildPackage,libieee1905))
$(eval $(call BuildPackage,lib1905hle))
$(eval $(call BuildPackage,libwsc))
$(eval $(call BuildPackage,ieee1905))

View File

@@ -5,7 +5,7 @@ config ieee1905 'ieee1905'
option macaddress 'auto'
option registrar 0
option cmdu_event 1
option map_plugin 0
option map_plugin 1
config security 'security'
list method 'PBC'

View File

@@ -1,7 +1,7 @@
#!/bin/sh /etc/rc.common
START=99
STOP=10
START=96
STOP=22
USE_PROCD=1
PROG=/usr/sbin/ieee1905d
@@ -43,6 +43,10 @@ configure_network()
fi
}
service_running() {
ubus -t 2 wait_for wifi
}
start_service() {
[ -d /usr/lib/ieee1905 ] || mkdir -p /usr/lib/ieee1905
@@ -64,5 +68,5 @@ service_triggers() {
procd_add_reload_trigger "network"
procd_add_reload_trigger "wireless"
procd_add_reload_trigger "netmode"
procd_add_config_trigger "config.change" "ieee1905" /etc/init.d/ieee1905 restart
procd_add_reload_trigger "ieee1905"
}

View File

@@ -9,10 +9,10 @@ include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=inbd
PKG_VERSION:=1.0.1
PKG_VERSION:=1.2.1
PKG_RELEASE:=1
PKG_SOURCE_VERSION:=3135944f3357a7a2c1c206be7b65bbb7ac6d1e58
PKG_SOURCE_VERSION:=dac9d6ceaabf7bf5a2c11b0f9e865d086c5732e1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/inbd

View File

@@ -7,6 +7,9 @@ CONFIG_PACKAGE_6in4=y
CONFIG_PACKAGE_6rd=y
CONFIG_PACKAGE_6to4=y
CONFIG_PACKAGE_alsa-lib=y
CONFIG_PACKAGE_atftp=m
CONFIG_PACKAGE_atftpd=m
CONFIG_PACKAGE_bulkdata=y
CONFIG_PACKAGE_chat=y
CONFIG_PACKAGE_comgt=y
CONFIG_PACKAGE_comgt-directip=y
@@ -14,18 +17,18 @@ CONFIG_PACKAGE_comgt-ncm=y
CONFIG_PACKAGE_ddns-scripts=y
CONFIG_PACKAGE_ds-lite=y
CONFIG_PACKAGE_ethtool=y
CONFIG_PACKAGE_fatrace=y
CONFIG_PACKAGE_gdb=m
CONFIG_PACKAGE_getopt=y
CONFIG_PACKAGE_glib2=y
CONFIG_PACKAGE_icwmp-curl=y
CONFIG_PACKAGE_icwmp=y
CONFIG_PACKAGE_ieee1905=y
CONFIG_PACKAGE_map-1905=y
CONFIG_PACKAGE_map-topology=y
CONFIG_PACKAGE_mosquitto-client-ssl=y
CONFIG_PACKAGE_mosquitto-ssl=y
CONFIG_PACKAGE_wfadatad=y
CONFIG_PACKAGE_imonitor=m
CONFIG_PACKAGE_inbd=y
CONFIG_PACKAGE_iopupgrade=m
CONFIG_PACKAGE_iopupgrade=y
CONFIG_PACKAGE_ip-full=y
CONFIG_PACKAGE_iperf3=y
CONFIG_PACKAGE_ipset=y
@@ -34,6 +37,7 @@ CONFIG_PACKAGE_iptables-mod-conntrack-extra=y
CONFIG_PACKAGE_iptables-mod-filter=y
CONFIG_PACKAGE_iptables-mod-ipopt=y
# CONFIG_PACKAGE_iwatchdog is not set
CONFIG_PACKAGE_jq=y
CONFIG_PACKAGE_juci=y
CONFIG_PACKAGE_juci-dnsmasq-dhcp=y
CONFIG_PACKAGE_juci-firewall-fw3=y
@@ -48,8 +52,8 @@ CONFIG_PACKAGE_juci-theme-iopsys=y
CONFIG_PACKAGE_libdaemon=y
CONFIG_PACKAGE_libgmp=y
CONFIG_PACKAGE_libreadline=y
CONFIG_PACKAGE_libreswan=m
CONFIG_PACKAGE_libwifi=y
CONFIG_PACKAGE_loop-detector=m
CONFIG_PACKAGE_lscpu=y
CONFIG_PACKAGE_map=y
CONFIG_PACKAGE_miniupnpd=y
@@ -91,12 +95,13 @@ CONFIG_PACKAGE_tc=y
CONFIG_PACKAGE_tcpdump=y
CONFIG_PACKAGE_terminfo=y
CONFIG_PACKAGE_traceroute6=y
CONFIG_PACKAGE_uledd=y
CONFIG_PACKAGE_umbim=y
CONFIG_PACKAGE_uqmi=y
CONFIG_PACKAGE_usb-modeswitch=y
CONFIG_PACKAGE_usbreset=y
CONFIG_PACKAGE_uspd=y
CONFIG_PACKAGE_wget=y
CONFIG_PACKAGE_vsftpd-tls=m
CONFIG_PACKAGE_wwan=y
CONFIG_PACKAGE_wifimngr=y
CONFIG_PACKAGE_xl2tpd=y
@@ -195,7 +200,7 @@ CONFIG_OPENVPN_openssl_ENABLE_IPROUTE2=y
CONFIG_KERNEL_DEVTMPFS=y
CONFIG_KERNEL_DEVTMPFS_MOUNT=y
# CONFIG_BUSYBOX_CONFIG_IP is not set
CONFIG_LOCALMIRROR="http://download.iopsys.eu/iopsys/mirror/"
CONFIG_LOCALMIRROR="https://download.iopsys.eu/iopsys/mirror/"
# Generation of /etc/banner.
CONFIG_IMAGEOPT=y
@@ -215,6 +220,9 @@ CONFIG_TARGET_PREINIT_IP=""
CONFIG_TARGET_PREINIT_NETMASK=""
CONFIG_TARGET_PREINIT_BROADCAST=""
# Generate rootfs tar file
CONFIG_TARGET_ROOTFS_TARGZ=y
# The urandom-seed package is very strange. It seeds urandom with urandom...
# Disable it. Most SoCs nowadays has HW random generators anyway.
# CONFIG_PACKAGE_urandom-seed is not set

View File

@@ -35,7 +35,7 @@ _iop()
iopcmds="bootstrap cfe_upgrade cfe_upgrade_latest extract_core \
feeds_update genconfig generate_tarballs install_key \
scp_changes setup_host ssh_install_key status \
update_package update_feed_branches ssh_upgrade"
update_package update_feed_branches ssh_upgrade smoketest"
if [ $COMP_CWORD -eq 1 ] ; then

View File

@@ -32,7 +32,7 @@ function feeds_update {
fi
# targets need to be installed explicitly
targets="iopsys-brcm63xx-mips iopsys-brcm63xx-arm iopsys-ramips intel_mips iopsys-x86 iopsys-armvirt"
targets="iopsys-brcm63xx-arm iopsys-ramips intel_mips iopsys-x86 iopsys-armvirt iopsys-bcm27xx"
for target in $targets
do
rm -f target/linux/$target

View File

@@ -5,7 +5,7 @@ function genconfig {
export IMPORT=1
export SRCTREEOVERR=0
export FILEDIR="files/"
export THEMEDIR="themes"
export THEMEDIR="tmp/juci-themes"
CURRENT_CONFIG_FILE=".current_config_file"
export CONFIGPATH="package/feeds/iopsys/iop"
CUSTPATH="customerconfigs"
@@ -13,8 +13,8 @@ function genconfig {
export VERBOSE=0
export DEVELOPER=0
target="bogus"
config_path=""
brcm63xx_mips="target/linux/iopsys-brcm63xx-mips"
target_config_path=""
bcm27xx="target/linux/iopsys-bcm27xx"
brcm63xx_arm="target/linux/iopsys-brcm63xx-arm"
ramips="target/linux/iopsys-ramips"
intel_mips="target/linux/intel_mips"
@@ -103,14 +103,12 @@ function genconfig {
if [ $pfound -eq 1 ]; then
target="$(echo $TARGET | tr '-' '_')"
config_path="$targetpath/config"
target_config_path="$targetpath/config"
fi
return
fi
[ -e $brcm63xx_mips/genconfig ] &&
iopsys_brcm63xx_mips=$(cd $brcm63xx_mips; ./genconfig)
[ -e $brcm63xx_arm/genconfig ] &&
iopsys_brcm63xx_arm=$(cd $brcm63xx_arm; ./genconfig)
[ -e $ramips/genconfig ] &&
@@ -121,9 +119,11 @@ function 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_mips iopsys_brcm63xx_arm iopsys_ramips iopsys_intel_mips iopsys_x86 iopsys_armvirt; do
for list in iopsys_brcm63xx_arm iopsys_ramips iopsys_intel_mips iopsys_x86 iopsys_armvirt iopsys_bcm27xx; do
echo "$list based boards:"
for b in ${!list}; do
echo -e "\t$b"
@@ -132,18 +132,10 @@ function genconfig {
return
fi
for p in $iopsys_brcm63xx_mips; do
if [ $p == $profile ]; then
target="iopsys_brcm63xx_mips"
config_path="$brcm63xx_mips/config"
return
fi
done
for p in $iopsys_brcm63xx_arm; do
if [ $p == $profile ]; then
target="iopsys_brcm63xx_arm"
config_path="$brcm63xx_arm/config"
target_config_path="$brcm63xx_arm/config"
return
fi
done
@@ -151,7 +143,7 @@ function genconfig {
for p in $iopsys_ramips; do
if [ $p == $profile ]; then
target="iopsys_ramips"
config_path="$ramips/config"
target_config_path="$ramips/config"
return
fi
done
@@ -159,7 +151,7 @@ function genconfig {
for p in $iopsys_intel_mips; do
if [ $p == $profile ]; then
target="intel_mips"
config_path="$intel_mips/config"
target_config_path="$intel_mips/config"
return
fi
done
@@ -167,7 +159,7 @@ function genconfig {
for p in $iopsys_x86; do
if [ $p == $profile ]; then
target="iopsys_x86"
config_path="$x86/config"
target_config_path="$x86/config"
return
fi
done
@@ -175,7 +167,15 @@ function genconfig {
for p in $iopsys_armvirt; do
if [ $p == $profile ]; then
target="iopsys_armvirt"
config_path="$armvirt/config"
target_config_path="$armvirt/config"
return
fi
done
for p in $iopsys_bcm27xx; do
if [ $p == $profile ]; then
target="iopsys_bcm27xx"
target_config_path="$bcm27xx/config"
return
fi
done
@@ -187,12 +187,8 @@ function genconfig {
bcmAllowed=0
endptAllowed=0
natalieAllowed=0
mediatekAllowed=0
git ls-remote git@dev.iopsys.eu:broadcom/bcmcreator.git -q 2>/dev/null && bcmAllowed=1
git ls-remote git@dev.iopsys.eu:mediatek/linux.git -q 2>/dev/null && mediatekAllowed=1
git ls-remote git@dev.iopsys.eu:dialog/natalie-dect-12.26.git -q 2>/dev/null && natalieAllowed=1
git ls-remote git@dev.iopsys.eu:iopsys/endptmngr.git -q 2>/dev/null && endptAllowed=1
}
@@ -339,11 +335,13 @@ function genconfig {
v "cp $CONFIGPATH/config .config"
cp $CONFIGPATH/config .config
if [ -f $config_path/config ]; then
cat $config_path/config >> .config
if [ -f $target_config_path/config ]; then
cat $target_config_path/config >> .config
echo "" >> .config
fi
if [ -f $config_path/$BOARDTYPE/config ]; then
cat $config_path/$BOARDTYPE/config >> .config
if [ -f $target_config_path/$BOARDTYPE/config ]; then
cat $target_config_path/$BOARDTYPE/config >> .config
echo "" >> .config
fi
#special handling for intel_mips/iopsys_ramips which use TARGET_DEVICES
@@ -360,6 +358,13 @@ function genconfig {
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_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
@@ -386,10 +391,12 @@ function genconfig {
if [ -e "$CUSTCONF/$CUSTOMER/common/common.diff" ]; then
v "Apply $CUSTCONF/$CUSTOMER/common/common.diff"
cat $CUSTCONF/$CUSTOMER/common/common.diff >> .config
echo "" >> .config
fi
if [ -e "$CUSTCONF/$CUSTOMER/$BOARDTYPE/$BOARDTYPE.diff" ]; then
v "Apply $CUSTCONF/$CUSTOMER/$BOARDTYPE/$BOARDTYPE.diff"
cat $CUSTCONF/$CUSTOMER/$BOARDTYPE/$BOARDTYPE.diff >> .config
echo "" >> .config
fi
done
fi
@@ -410,14 +417,10 @@ function genconfig {
echo "CONFIG_GITMIRROR_REWRITE=y" >>.config
[ $bcmAllowed -eq 0 ] && echo "CONFIG_BCM_OPEN=y" >> .config
[ $endptAllowed -eq 0 ] && echo "CONFIG_ENDPT_OPEN=y" >> .config
[ $natalieAllowed -eq 0 ] && echo "CONFIG_NATALIE_OPEN=y" >> .config
[ $mediatekAllowed -eq 0 ] && echo "CONFIG_MEDIATEK_OPEN=y" >> .config
else
echo "# CONFIG_GITMIRROR_REWRITE is not set" >>.config
echo "CONFIG_BCM_OPEN=y" >> .config
echo "CONFIG_ENDPT_OPEN=y" >> .config
echo "CONFIG_NATALIE_OPEN=y" >> .config
echo "CONFIG_MEDIATEK_OPEN=y" >> .config
fi
if [ -n "$BRCM_MAX_JOBS" ]
@@ -433,7 +436,7 @@ function genconfig {
touch package/kernel/linux/Makefile
# we need to signal to bradcom SDK that we have changed the board id
# currently boardparms.c and boardparms_voice.c is the only place that is depending on inteno boardid name
# currently boardparms.c and boardparms_voice.c is the only place that is depending on boardid name
# so just touch that file.
[ -d ./build_dir ] && find build_dir/ -name "boardparms*c" -print0 2>/dev/null | xargs -0 touch 2>/dev/null

View File

@@ -13,7 +13,7 @@ function genconfig_min {
export DEVELOPER=0
target="bogus"
config_path=""
brcm63xx_mips="target/linux/iopsys-brcm63xx-mips"
bcm27xx="target/linux/iopsys-bcm27xx"
brcm63xx_arm="target/linux/iopsys-brcm63xx-arm"
ramips="target/linux/iopsys-ramips"
intel_mips="target/linux/intel_mips"
@@ -108,8 +108,6 @@ function genconfig_min {
return
fi
[ -e $brcm63xx_mips/genconfig ] &&
iopsys_brcm63xx_mips=$(cd $brcm63xx_mips; ./genconfig)
[ -e $brcm63xx_arm/genconfig ] &&
iopsys_brcm63xx_arm=$(cd $brcm63xx_arm; ./genconfig)
[ -e $ramips/genconfig ] &&
@@ -120,9 +118,11 @@ function genconfig_min {
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_mips iopsys_brcm63xx_arm iopsys_ramips iopsys_intel_mips iopsys_x86 iopsys_armvirt; do
for list in iopsys_brcm63xx_arm iopsys_ramips iopsys_intel_mips iopsys_x86 iopsys_armvirt iopsys_bcm27xx; do
echo "$list based boards:"
for b in ${!list}; do
echo -e "\t$b"
@@ -131,14 +131,6 @@ function genconfig_min {
return
fi
for p in $iopsys_brcm63xx_mips; do
if [ $p == $profile ]; then
target="iopsys_brcm63xx_mips"
config_path="$brcm63xx_mips/config"
return
fi
done
for p in $iopsys_brcm63xx_arm; do
if [ $p == $profile ]; then
target="iopsys_brcm63xx_arm"
@@ -179,6 +171,14 @@ function genconfig_min {
fi
done
for p in $iopsys_bcm27xx; do
if [ $p == $profile ]; then
target="iopsys_bcm27xx"
config_path="$bcm27xx/config"
return
fi
done
}
git remote -v | grep -q http || {
@@ -186,12 +186,8 @@ function genconfig_min {
bcmAllowed=0
endptAllowed=0
natalieAllowed=0
mediatekAllowed=0
git ls-remote git@dev.iopsys.eu:broadcom/bcmcreator.git -q 2>/dev/null && bcmAllowed=1
git ls-remote git@dev.iopsys.eu:mediatek/linux.git -q 2>/dev/null && mediatekAllowed=1
git ls-remote git@dev.iopsys.eu:dialog/natalie-dect-12.26.git -q 2>/dev/null && natalieAllowed=1
git ls-remote git@dev.iopsys.eu:iopsys/endptmngr.git -q 2>/dev/null && endptAllowed=1
}
@@ -337,6 +333,14 @@ function genconfig_min {
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_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
device=$(echo $BOARDTYPE | tr a-z A-Z)
echo "CONFIG_TARGET_DEVICE_${target}_${subtarget}_DEVICE_${BOARDTYPE}=y" >> .config
else
echo "CONFIG_TARGET_${target}=y" >> .config
echo "CONFIG_TARGET_${target}_${BOARDTYPE}=y" >> .config
@@ -389,7 +393,7 @@ function genconfig_min {
touch package/kernel/linux/Makefile
# we need to signal to bradcom SDK that we have changed the board id
# currently boardparms.c and boardparms_voice.c is the only place that is depending on inteno boardid name
# currently boardparms.c and boardparms_voice.c is the only place that is depending on boardid name
# so just touch that file.
[ -d ./build_dir ] && find build_dir/ -name "boardparms*c" -print0 2>/dev/null | xargs -0 touch 2>/dev/null

View File

@@ -1,40 +1,32 @@
#!/bin/bash
# shellcheck disable=SC2029
build_bcmkernel_consumer() {
local tarfile bcmkernelcommith sdkversion
sdkversion=$(grep "CONFIG_BRCM_SDK_VER.*=y" .config | awk -F'[_,=]' '{print$5}')
sdkversion=${sdkversion:0:4}${sdkversion:(-1)}
bcmkernelcommith=$(grep -w "PKG_SOURCE_VERSION:" $curdir/feeds/broadcom/bcmkernel/${sdkversion:0:5}*.mk | cut -d'=' -f2)
# do not build bcmopen sdk if it was already built before
[ -n "$board" -a -n "$bcmkernelcommith" ] || return
ssh $SERVER "test -f $FPATH/bcmopen-$board-$bcmkernelcommith.tar.gz" && return
cd ./build_dir/target-*/bcmkernel-*-${sdkversion:0:4}*/bcm963xx/release
bash do_consumer_release -p $profile -y -F
tarfile='out/bcm963xx_*_consumer.tar.gz'
[ $(ls -1 $tarfile |wc -l) -ne 1 ] && echo "Too many tar files: '$tarfile'" && return
scp -pv $tarfile $SERVER:$FPATH/bcmopen-$board-$bcmkernelcommith.tar.gz
ssh $SERVER "[ -f $FPATH/bcmopen-$board-$bcmkernelcommith.tar.gz ] && ln -sf $FPATH/bcmopen-$board-$bcmkernelcommith.tar.gz $FPATH/bcmopen-$board-$majver.$minver-latest"
rm -f $tarfile
cd "$curdir"
}
local tarfile bcmkernelcommith sdkversion serverpath serverlink
sdkversion="$(grep "CONFIG_BRCM_SDK_VER.*=y" .config | awk -F'[_,=]' '{print$5}')"
sdkversion="${sdkversion:0:4}${sdkversion:(-1)}"
bcmkernelcommith="$(grep -w "PKG_SOURCE_VERSION:" "$curdir/feeds/broadcom/bcmkernel/${sdkversion:0:5}"*".mk" | cut -d'=' -f2)"
[ -n "$board" ] && [ -n "$bcmkernelcommith" ] || return
serverpath="$FPATH/bcmopen-$board-$bcmkernelcommith.tar.gz"
serverlink="$FPATH/bcmopen-$board-$majver.$minver-latest"
# do not build bcmopen sdk if it was already built before
# if it was, check if there's a symlink in place and create it if missing
ssh "$SERVER" "test -f '$serverpath' && { test -L '$serverlink' || ln -sf '$serverpath' '$serverlink'; }" && return
cd "./build_dir/target-"*"/bcmkernel-"*"-${sdkversion:0:4}"*"/bcm963xx/release"
bash do_consumer_release -p "$profile" -y -F
tarfile='out/bcm963xx_*_consumer.tar.gz'
[ $(ls -1 $tarfile | wc -l) -ne 1 ] && echo "Too many tar files: '$tarfile'" && return
scp -pv $tarfile "$SERVER":"$serverpath"
ssh "$SERVER" "test -f '$serverpath' && ln -sf '$serverpath' '$serverlink'"
rm -f $tarfile
build_natalie_consumer() {
# create natalie-dect open version tar file
local natalieversion nataliecommith
grep -q "CONFIG_TARGET_NO_DECT=y" .config && return
natalieversion=$(grep -w "PKG_VERSION:" ./feeds/iopsys/natalie-dect/Makefile | cut -d'=' -f2)
nataliecommith=$(grep -w "PKG_SOURCE_VERSION:" ./feeds/iopsys/natalie-dect/Makefile | cut -d'=' -f2)
[ -n "$profile" -a -n "$natalieversion" -a -n "$nataliecommith" ] || return
ssh $SERVER "test -f $FPATH/natalie-dect-$profile-$natalieversion-$nataliecommith.tar.gz" && return
cd ./build_dir/target-*/natalie-dect-$natalieversion/
mkdir natalie-dect-open-$natalieversion
cp -f ipkg-*/natalie-dect/lib/modules/*/extra/dect.ko natalie-dect-open-$natalieversion/dect.ko
tar -czv natalie-dect-open-$natalieversion/ -f natalie-dect-$profile-$natalieversion-$nataliecommith.tar.gz
scp -pv natalie-dect-$profile-$natalieversion-$nataliecommith.tar.gz $SERVER:$FPATH/
cp natalie-dect-$profile-$natalieversion-$nataliecommith.tar.gz $curdir/
rm -rf natalie-dect-open-$natalieversion
rm -f natalie-dect-$profile-$natalieversion-$nataliecommith.tar.gz
cd "$curdir"
}
@@ -44,7 +36,7 @@ build_endptmngr_consumer() {
grep -q "CONFIG_TARGET_NO_VOICE=y" .config && return
endptversion=$(grep -w "PKG_VERSION:" ./feeds/iopsys/endptmngr/Makefile | cut -d'=' -f2)
endptcommith=$(grep -w "PKG_SOURCE_VERSION:" ./feeds/iopsys/endptmngr/Makefile | cut -d'=' -f2)
[ -n "$profile" -a -n "$endptversion" -a -n "$endptcommith" ] || return
[ -n "$profile" ] && [ -n "$endptversion" ] && [ -n "$endptcommith" ] || return
ssh $SERVER "test -f $FPATH/endptmngr-$profile-$endptversion-$endptcommith.tar.gz" && return
cd ./build_dir/target-*/endptmngr-$endptversion/
mkdir endptmngr-open-$endptversion
@@ -59,46 +51,6 @@ build_endptmngr_consumer() {
cd "$curdir"
}
build_mediatek_kernel() {
local mediatek_commit kernel
mediatek_commit=$(grep CONFIG_KERNEL_GIT_COMMIT .config | cut -d '=' -f2 | tr -d '"')
kernel=linux-git*
[ -n "$mediatek_commit" ] || return
ssh $SERVER "test -f $FPATH/mediatek-kernel-open-$mediatek_commit.tar.gz" && return
echo "Building mediatek kernel tarball from kernel commit:"
echo $mediatek_commit
cd build_dir/target-mipsel_1004kc*/linux-iopsys-ramips*/linux-git*
# remove git repo
rm -rf .git
cd ..
tar -czv $kernel -f mediatek-kernel-open-$mediatek_commit.tar.gz
scp -pv mediatek-kernel-open-$mediatek_commit.tar.gz $SERVER:$FPATH/
cd "$curdir"
}
build_mediatek_wifi_consumer() {
local ver commit
local chip=$1
ver=$(grep -w "PKG_VERSION:" ./feeds/mediatek/mt${chip}/Makefile | cut -d'=' -f2)
commit=$(grep -w "PKG_SOURCE_VERSION:" ./feeds/mediatek/mt${chip}/Makefile | cut -d'=' -f2)
[ -n "$ver" -a -n "$commit" ] || return
ssh $SERVER "test -f $FPATH/mtk${chip}e-${ver}_${commit}.tar.xz" && return
cd build_dir/target-mipsel_1004kc*/linux-iopsys-ramips*/mtk${chip}e-$ver/ipkg-*
mkdir -p mtk${chip}e-$ver/src
cp -rf kmod-mtk${chip}e/etc mtk${chip}e-$ver/src/
cp -rf kmod-mtk${chip}e/lib mtk${chip}e-$ver/src/
tar Jcf mtk${chip}e-${ver}_${commit}.tar.xz mtk${chip}e-$ver
scp -pv mtk${chip}e-${ver}_${commit}.tar.xz $SERVER:$FPATH/
cp mtk${chip}e-${ver}_${commit}.tar.xz $curdir/
rm -rf mtk${chip}e-$ver
rm -f mtk${chip}e-${ver}_${commit}.tar.xz
cd "$curdir"
}
function print_usage {
echo "Usage: $0 generate_tarballs"
echo " -t <target>"
@@ -112,7 +64,6 @@ function generate_tarballs {
set -e
git remote -v | grep -q http && return # do not continue if this is an open SDK environment
target=$(grep CONFIG_TARGET_BOARD .config | cut -d'=' -f2 | tr -d '"')
board=$(grep CONFIG_TARGET_FAMILY .config | cut -d'=' -f2 | tr -d '"')
profile=$(grep CONFIG_BCM_KERNEL_PROFILE .config | cut -d'=' -f2 | tr -d '"')
majver=$(grep CONFIG_TARGET_VERSION .config | cut -d'=' -f2 | tr -d '"' | cut -f1 -d .)
@@ -137,19 +88,14 @@ function generate_tarballs {
esac
done
if [ ! -n "$stk_target" ]; then
if [ -z "$stk_target" ]; then
print_usage
exit 1
fi
if [ "$stk_target" == "broadcom" ]; then
build_bcmkernel_consumer
build_natalie_consumer
build_endptmngr_consumer
elif [ "$stk_target" == "mediatek" ]; then
build_mediatek_kernel
build_mediatek_wifi_consumer 7603
build_mediatek_wifi_consumer 7615
else
echo "Invalid target: $stk_target"
print_usage

View File

@@ -230,7 +230,7 @@ function ssh_upgrade {
upd_fw_base=""
upd_fw=""
upd_host="192.168.1.1"
upd_sysupgrade=0
upd_sysupgrade=1
do_dialog=0
while getopts "f:hnxt:iscb" opt; do
@@ -280,6 +280,14 @@ function ssh_upgrade {
set_config_string CONFIG_TARGET_BOARD
firmwares=$(cd bin/targets/$CONFIG_TARGET_BOARD/generic/; ls -t *[0-9].y[3])
# if target uses pkgtb
if [ -z "$firmwares"]
then
# pkgtb files can not be streamed so copy over the file witch scp
use_scp=1
firmwares=$(cd bin/targets/$CONFIG_TARGET_BOARD/generic/; ls -t last.pkgtb)
fi
for upd_fw_base in $firmwares
do
#echo "firmware $upd_fw"
@@ -313,10 +321,20 @@ function ssh_upgrade {
[ $upd_forceboot -eq 1 ] && extra_args="$extra_args -b"
file_size_kb=`du -k "$upd_fw" | cut -f1`
cat $upd_fw | pv -s ${file_size_kb}k | ssh root@$upd_host "iopu $extra_args"
if [ "$use_scp" == "1" ]
then
scp $upd_fw root@$upd_host:/tmp/ &&
ssh -o ConnectTimeout=60 root@$upd_host "iopu $extra_arg -f /tmp/$upd_fw_base"
else
cat $upd_fw | pv -s ${file_size_kb}k | ssh root@$upd_host "iopu $extra_args"
fi
else
extra_args=""
[ $upd_noreboot -eq 1 ] && extra_args="$extra_args -d"
[ $upd_keepconf -eq 0 ] && extra_args="$extra_args -n"
scp $upd_fw root@$upd_host:/tmp/ &&
ssh -o ConnectTimeout=60 root@$upd_host "sysupgrade -v $3 /tmp/$upd_fw_base" &&
ssh -o ConnectTimeout=60 root@$upd_host "sysupgrade -v $extra_args /tmp/$upd_fw_base" &&
echo "sysupgrade done!"
fi
}

View File

@@ -1,70 +0,0 @@
# this is a developer helper script to SCP changed files to remote host
ROOT=build_dir/target-mips_uClibc-0.9.33.2/root-iopsys-brcm63xx-mips/
ROOT_OLD=tmp/root_old/
ROOT_TMP=tmp/root_tmp/
function scp_changes_reset {
{ cd `dirname $0`
rm -rf "$ROOT_OLD"
mkdir -p "$ROOT_OLD"
cp -a "$ROOT"* "$ROOT_OLD"
}
}
function scp_changes {
if [ -z "$1" ] ; then
echo "usage: $0 scp_changes <host/-r(eset)/-p(retend)>"
echo "Error: host required"
exit 1
fi
{ cd `dirname $0`
if [ ! -d $ROOT ]; then
echo "$ROOT does not exist"
echo "please build the project first"
exit 1;
fi
if [ "$1" = "-r" ]; then
echo "reset changes"
scp_changes_reset
exit 0
fi
if [ ! -d $ROOT_OLD ]; then
echo "$ROOT_OLD does not exist"
echo "you didn't store state of previous buildroot"
#echo "please run ./scp_changes_reset.sh"
echo "doing it now"
scp_changes_reset
exit 1;
fi
FILES=`diff -rq "$ROOT" "$ROOT_OLD" 2>&1 | sed -ne "s?^Files .* and $ROOT_OLD\\(.*\\) differ?\\1?p" -ne "s?^Only in $ROOT\\(.*\\): \\(.*\\)?\\1/\\2?p"`
if [ "$1" = "-p" ]; then
echo "files that would be copied:"
echo $FILES
exit 0
fi
for f in $FILES
do
mkdir -p "$ROOT_TMP`dirname $f`"
cp -af "$ROOT$f" "$ROOT_TMP$f"
done
if [ -d "$ROOT_TMP" ]; then
echo "scp changed files to $1"
pushd "$ROOT_TMP" 2>&1 >/dev/null
scp -r * root@$1:/
RETVAL=$?
popd 2>&1 >/dev/null
rm -rf "$ROOT_TMP"
if [ "$RETVAL" -eq 0 ]; then
scp_changes_reset
else
echo "scp error"
exit $RETVAL
fi
else
echo "no change"
fi
}
}
register_command "scp_changes" "<host/-r(eset)/-p(retend)> SCP only changed files to device"

95
iop/scripts/taas.sh Normal file
View File

@@ -0,0 +1,95 @@
# Shorthand command for doing a HIL runtime smoketest on the
# latest built image. Does the image boot up correctly?
# More info here:
# https://dev.iopsys.eu/iopsys/iopsys-taas
#--------------------------------------------------------------
function taas-init() {
local f
# Path to TaaS binarys. Try some likely ones.
if ! which taas-smoketest >/dev/null; then
PATH="${PATH}:${PWD}/../iopsys-taas/bin"
PATH="${PATH}:${PWD}/../taas/bin"
PATH="${PATH}:${HOME}/iopsys-taas/bin"
PATH="${PATH}:${HOME}/taas/bin"
PATH="${PATH}:${HOME}/bin"
PATH="${PATH}:/opt/iopsys-taas/bin"
PATH="${PATH}:/opt/taas/bin"
fi
if ! which taas-smoketest >/dev/null; then
echo "Error; TaaS is missing! Install it with:"
echo "git clone git@dev.iopsys.eu:iopsys/iopsys-taas.git ../iopsys-taas"
exit 1
fi
# NAND erase block size.
nandBlkSz=$(grep CONFIG_TARGET_NAND_BLOCKSZ .config | \
tr -s "=\"" " " | cut -d " " -f 2)
nandBlkSz=$((nandBlkSz / 1024))
# Create a list of all images which might be of use.
for f in ${PWD}/bin/targets/iopsys-*/generic/last.* \
${PWD}/build_dir/target-arm*/bcmkernel/bcm963xx/targets/9*/bcm*_linux_raw_image_${nandBlkSz}.bin; do
[[ -s "$f" ]] && images+=("$f")
done
# Convert Iopsys target name to the TaaS product name format
# according to what is available in the remote lab for HIL.
# Also find a suitable image.
product=$(grep CONFIG_TARGET_PROFILE .config | \
tr -s "=\"" " " | cut -d " " -f 2) || exit
case "$product" in
smarthub3)
export product="SmartHub3a"
;;
dg400prime|eg400|ex600)
export product=$(echo -n "$product" | tr [[:lower:]] [[:upper:]])
;;
*)
echo "Unsupported target; skipping!"
exit 0
;;
esac
if [[ ${#images[@]} -eq 0 ]]; then
echo "No image found"
exit 1
fi
}
#--------------------------------------------------------------
function taas-smoketest {
declare -a images
taas-init || return
echo "Testing a $product with ${images[@]}..."
command taas-smoketest "${images[@]}" "$product" "$@"
}
#--------------------------------------------------------------
function taas-bootstrap {
declare -a images
if [[ -n "$1" ]]; then
taas-init || return
echo "Flashing $1..."
command taas-bootstrap "${images[@]}" "$@"
else
echo "Usage: ./iop taas-bootstrap dutX"
exit 1
fi
}
register_command "taas-bootstrap" "Write image to a remote lab device."
register_command "taas-smoketest" "Write image to a remote lab device and test it."

View File

@@ -163,6 +163,7 @@ function usage {
echo " -x Force install even if firmware is not for this board"
echo " -b Force install of bootloader regardless of version installed"
echo " -r Jump into chroot env of other system"
echo " -f Firmware file to use"
echo " -C \"command\" Execute command in chroot env of other system"
}
@@ -177,6 +178,64 @@ function newroot_exec {
}
function system_is_y_image {
# find out what rootfs volume is active.
cur_vol=$(get_flashbank_current)
upd_vol=$(get_flashbank_next)
# convert volume name "rootfs_$upd_vol" into ubi volume id
upd_ubi_id=$(ubinfo -d 0 -N rootfs_$upd_vol | awk "/Volume ID:/ {print \$3}")
log "installing Root Fileystem into UBI volume rootfs_$upd_vol"
# prepare to match dsl.
function_call upd_conf_dsl
log "now starting writing data to flash with [ iopupgrade $cmdline -M "$cmdline_match" -u ubi0_$upd_ubi_id ]"
run_cleanup=1 # When we start to actually write data there might be some
# things that need cleanup if we get an error/crash
if ! iopupgrade $cmdline -M "$cmdline_match" -u ubi0_$upd_ubi_id; then
log "iopupgrade program Failed"
exit 1
fi
log "Firmware programmed to flash."
# Force upgrade of boot loader
[ $upd_forceboot -eq 1 ] && chroot_cmdline="$chroot_cmdline -b"
if [ $upd_keepconfig -eq 1 ]; then
log "Transfering configuration to new system."
chroot_cmdline="$chroot_cmdline -c"
fi
mount_newroot
if ! chroot /tmp/newroot_overlay /sbin/iopu_chroot $chroot_cmdline; then
log "Configuration migration failed!"
exit 1
fi
umount_newroot
log "New firmware fully installed."
run_cleanup=0
# Now make sure that we actually boot the new system on the next reboot
upd_finnish
}
function system_is_FIT_image {
# prepare to match dsl.
#function_call upd_conf_dsl
#here we write data
bcm_flasher $firmware_file
bcm_bootstate 1
log "Firmware programmed to flash."
}
###############################################################################
# just one instance
@@ -194,7 +253,7 @@ trap ctrl_c INT
trap timeout SIGALRM
trap sig_pipe SIGPIPE
while getopts "nrxbhcC:" opt; do
while getopts "nrxbhcC:f:" opt; do
case $opt in
n)
upd_noreboot=1
@@ -216,6 +275,9 @@ while getopts "nrxbhcC:" opt; do
newroot_exec "${OPTARG}"
exit
;;
f)
firmware_file="${OPTARG}"
;;
h)
usage
exit 1
@@ -235,59 +297,18 @@ log "Firmware upgrade started"
# Should board name be checked
if [ $upd_forceimage -eq 0 ]
then
board=$(db get hw.board.iopVerBoard)
board=$(db get hw.board.model_name)
cmdline_match="board=$board"
fi
# find out what rootfs volume is active.
cur_vol=$(get_flashbank_current)
upd_vol=$(get_flashbank_next)
# convert volume name "rootfs_$upd_vol" into ubi volume id
upd_ubi_id=$(ubinfo -d 0 -N rootfs_$upd_vol | awk "/Volume ID:/ {print \$3}")
log "installing Root Fileystem into UBI volume rootfs_$upd_vol"
# prepare to match dsl.
function_call upd_conf_dsl
# prepare to update CFE if it exists
function_call upd_conf_cfe
# prepare to update kernel if it is stored in MTD/JFFS2
function_call upd_conf_kernel
log "now starting writing data to flash with [ iopupgrade $cmdline -M "$cmdline_match" -u ubi0_$upd_ubi_id ]"
run_cleanup=1 # When we start to actually write data there might be some
# things that need cleanup if we get an error/crash
if ! iopupgrade $cmdline -M "$cmdline_match" -u ubi0_$upd_ubi_id; then
log "iopupgrade program Failed"
exit 1
# BUG: should probably read a config file.
if [ -f /proc/nvram/boardid ]
then
system_is_FIT_image
else
system_is_y_image
fi
log "Firmware programmed to flash."
# Force upgrade of boot loader
[ $upd_forceboot -eq 1 ] && chroot_cmdline="$chroot_cmdline -b"
if [ $upd_keepconfig -eq 1 ]; then
log "Transfering configuration to new system."
chroot_cmdline="$chroot_cmdline -c"
fi
mount_newroot
if ! chroot /tmp/newroot_overlay /sbin/iopu_chroot $chroot_cmdline; then
log "Configuration migration failed!"
exit 1
fi
umount_newroot
log "New firmware fully installed."
run_cleanup=0
# Now make sure that we actually boot the new system on the next reboot
upd_finnish
# spawn the reboot to a subshell to allow the main program to quit before reset
# to avoid any hanged network connection like ssh
if [ $upd_noreboot -eq 0 ]

View File

@@ -11,7 +11,7 @@ PKG_RELEASE:=1
PKG_VERSION:=0.3
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/libpicoevent.git
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=f4ab03b22fca57cec6c959fb5c54bcdd64c32467
PKG_SOURCE_VERSION:=f446f186102539cceedaa15a95a33547ac3c1fd7
PKG_NAME:=libpicoevent
PKG_LICENSE:=LGPL-2.1-only

View File

@@ -5,12 +5,12 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=map-1905
PKG_VERSION:=0.0.10
PKG_VERSION:=0.0.16
LOCAL_DEV:=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=7cdc6d38674bef2c6003a4b60b63be8a789421be
PKG_SOURCE_VERSION:=08363369ba225facad7485d5b1a6a502e620ac21
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/map-1905.git
PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_VERSION).tar.gz
endif

View File

@@ -5,9 +5,9 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=map-agent
PKG_VERSION:=2.0.1
PKG_VERSION:=3.4.2
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE_VERSION:=362ddbaf2b9a5510c89b740fcc23d8425770da3d
PKG_SOURCE_VERSION:=9edf3ac509a2cf8301a50b38185734d70818262a
PKG_MAINTAINER:=Anjan Chanda <anjan.chanda@iopsys.eu>
PKG_LICENSE:=PROPRIETARY IOPSYS
@@ -23,7 +23,7 @@ define Package/map-agent
SECTION:=utils
CATEGORY:=Utilities
TITLE:=WiFi multi-AP Agent (EasyMesh R2)
DEPENDS:=+libwifi +libuci +libubox +ubus
DEPENDS:=+libwifi +libuci +libubox +ubus +libmaputils +libwsc +libeasy
endef
define Package/map-agent/description
@@ -51,6 +51,7 @@ endef
define Package/map-agent/install
$(INSTALL_DIR) $(1)/etc
$(CP) ./files/* $(1)/
$(INSTALL_DIR) $(1)/usr/lib
$(INSTALL_DIR) $(1)/usr/sbin
$(CP) $(PKG_BUILD_DIR)/src/utils/*.so* $(1)/usr/lib/

View File

@@ -0,0 +1,62 @@
config wifiagent
option enabled '1'
option debug '6'
option profile '2'
config fh-iface
option ifname 'wl0'
option steer 'rssi bssload'
list exclude '00:11:22:33:44:55'
list exclude_btm '00:aa:bb:cc:dd:ee'
list assoc_ctrl '00:10:20:30:40:50'
option btm_retry '3'
option btm_retry_secs '180'
option fallback_legacy '1'
option steer_legacy_reassoc_secs '30'
option steer_legacy_retry_secs '3600'
option assoc_ctrl_secs '30'
option band '2'
config fh-iface
option ifname 'wl1'
option steer 'rssi bssload'
list exclude '00:11:22:33:44:55'
list exclude_btm '00:aa:bb:cc:dd:ee'
option band '5'
#config bk-iface
# option ifname 'apclii0'
# option enabled '1'
# option onboarded '0'
# option disallow_bsta '1 # bitmap, 1 for disallow p1, 2 to disallow p2, 3 to disallow both (probably never applicable)
config steer-param 'rssi'
option priority '0'
option rssi_threshold '-68'
option hysteresis '5'
option margin '3'
option diffsnr '8'
config steer-param 'bssload'
option priority '0'
option bssload_threshold '80'
### custom rules follows ###
config rule-custom
option action steer
option sta 'd8:32:e3:4d:35:d2'
option bss '00:22:07:11:22:33'
config rule-custom
option action restrict
option sta 'd8:32:e3:4d:35:d2'
option bss '00:22:07:11:22:33'
#config bk-iface
# option ifname 'wlan1_1'
#
#config fh-iface
# option ifname 'wlan0'
#
#config fh-iface
# option ifname 'wlan1'

View File

@@ -0,0 +1,31 @@
#!/bin/sh /etc/rc.common
START=98
STOP=20
USE_PROCD=1
start_service() {
config_load "mapagent"
local enabled
config_get_bool enabled agent enabled 1
[ "$enabled" -eq 0 ] && return 1
procd_open_instance
procd_set_param command "/usr/sbin/mapagent" "-d"
procd_set_param respawn
# procd_set_param stdout 1
# procd_set_param stderr 1
procd_close_instance
}
service_triggers()
{
procd_add_reload_trigger "ieee1905"
}
reload_service() {
stop
start
}

View File

@@ -5,9 +5,9 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=map-controller
PKG_VERSION:=1.0.1
PKG_VERSION:=2.3.1
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE_VERSION:=3a55c1f41f0e2c233c28834dea0e881cd2cd0c22
PKG_SOURCE_VERSION:=e8afbab1030189b99356aba3f1bfc4adf2d81d5d
PKG_LICENSE:=PROPRIETARY IOPSYS
PKG_LICENSE_FILES:=LICENSE
@@ -22,7 +22,7 @@ define Package/map-controller
SECTION:=utils
CATEGORY:=Utilities
TITLE:=WiFi Multi-AP Controller (EasyMesh R2)
DEPENDS:=+libuci +libubox +ubus
DEPENDS:=+libuci +libubox +ubus +libmaputils +libwsc +libeasy
endef
define Package/map-controller/description
@@ -42,6 +42,7 @@ MAKE_PATH:=src
define Package/map-controller/install
$(INSTALL_DIR) $(1)/etc
$(CP) ./files/* $(1)/
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/src/mapcontroller $(1)/usr/sbin/
endef

View File

@@ -0,0 +1,111 @@
config wificntlr
option enabled '1'
option registrar '5 2' #bands on which wps registrar supported
option debug '6'
config fh-credentials
option band '5'
option encryption 'psk2'
option key '1234567890'
option ssid 'map-net5'
option vlan '101'
config fh-credentials
option band '2'
option encryption 'psk2'
option key '1234567890'
option ssid 'map-net2'
option vlan '0' # 0 - 2 rsvd, 3 - 4094 => vlan id
config bk-credentials
option band '5'
option encryption 'psk2'
option key '5555555555'
option ssid 'map-bkhaul-5'
option multi_ap '2'
# option multi_ap_backhaul_sta '1' # possible future TODO
# option multi_ap_backhaul_key 'multiap_key123' # possible future TODO
# option multi_ap_backhaul_ssid 'MultiAP-0022077E9CD6' # possible future TODO
option disallow_bsta '1' # bitmap, 1 for disallow p1, 2 to disallow p2, 3 to disallow both (probably never applicable)
config bk-credentials
option band '2'
option encryption 'psk2'
option key '2222222222'
option ssid 'map-bkhaul-2'
option multi_ap '2'
# option multi_ap_backhaul_sta '1' # possible future TODO
# option multi_ap_backhaul_key 'multiap_key123' # possible future TODO
# option multi_ap_backhaul_ssid 'MultiAP-0022077E9CD6' # possible future TODO
option disallow_bsta '0' # 0 or 1 profile-1 bSTA
config agent-policy
option agent_id '00:22:07:7E:9C:D6' # 1905al macaddress of agent
list steer_exclude '00:11:22:33:44:55'
list steer_exclude_btm '00:aa:bb:cc:dd:ee'
option steer_policy '2' # 0, 1, 2 - see MultiAP spec
option util_threshold '200' # channel-util as in BSS load
option rcpi_threshold '30' # 0 - 220 valid range
option report_scan '0' # 0 or 1 for independent sc include_sta_metric '0' # sta metric in AP metric resp
option pvid '100' # primary vlan id
option pcp_default '5' # default vlan pcp
option disallow_bsta_p1 '0' # 0 or 1 profile20 valid range
option report_scan '0' # 0 or 1 for independent scans
option report_sta_assocfails '1' # 0 or 1 - stas assoc failure
option report_metric_periodic '0' # 0, or 1 - 255 in secs
option report_rcpi_threshold '30' # 0 - 220 valid range
option report_scan '0' # 0 or 1 for independent scans
option report_sta_assocfails '1' # 0 or 1 - stas assoc failure
option report_metric_periodic '0' # 0, or 1 - 255 in secs
option report_rcpi_threshold '0' # 0, or 1 - 220
option report_util_threshold '0' # 0, or channel-util value
option include_sta_stats '0' # sta stats in AP metric resp
option include_sta_metric '0' # sta metric in AP metric resp
option pvid '100' # primary vlan id
option pcp_default '5' # default vlan pcp
option disallow_bsta_p1 '0' # 0 or 1 profile-1 bSTA
option disallow_bsta_p2 '0' # 0 or 1 profile-2 bSTA
config agent-policy
option agent_id '00:00:00:00:00:00'
list steer_exclude '00:11:22:33:44:55'
list steer_exclude_btm '00:aa:bb:cc:dd:ee'
option steer_policy '2' # 0, 1, 2 - see MultiAP spec
option util_threshold '200' # channel-util as in BSS load
option rcpi_threshold '30' # 0 - 220 valid range
option report_scan '0' # 0 or 1 for independent sc include_sta_metric '0' # sta metric in AP metric resp
option pvid '100' # primary vlan id
option pcp_default '5' # default vlan pcp
option disallow_bsta_p1 '0' # 0 or 1 profile20 valid range
option report_scan '0' # 0 or 1 for independent scans
option report_sta_assocfails '1' # 0 or 1 - stas assoc failure
option report_metric_periodic '0' # 0, or 1 - 255 in secs
option report_rcpi_threshold '30' # 0 - 220 valid range
option report_scan '0' # 0 or 1 for independent scans
option report_sta_assocfails '1' # 0 or 1 - stas assoc failure
option report_metric_periodic '0' # 0, or 1 - 255 in secs
option report_rcpi_threshold '0' # 0, or 1 - 220
option report_util_threshold '0' # 0, or channel-util value
option include_sta_stats '0' # sta stats in AP metric resp
option include_sta_metric '0' # sta metric in AP metric resp
option pvid '100' # primary vlan id
option pcp_default '5' # default vlan pcp
option disallow_bsta_p1 '0' # 0 or 1 profile-1 bSTA
option disallow_bsta_p2 '0' # 0 or 1 profile-2 bSTA
config agent-policy
option agent_id '00:22:07:A3:6C:DA' # 1905al macaddress of agent
list steer_exclude '00:11:22:33:44:55'
list steer_exclude_btm '00:aa:bb:cc:dd:ee'
option steer_policy '2' # 0, 1, 2 - see MultiAP spec
option util_threshold '200' # channel-util as in BSS load
option report_metric_periodic '0' # 0, or 1 - 255 in secs
option report_rcpi_threshold '0' # 0, or 1 - 220
option report_util_threshold '0' # 0, or channel-util value
option include_sta_stats '0' # sta stats in 3:4d:35:d2'
option bss '00:22:07:11:22:33'
config rule-custom
option action restrict
option sta 'd8:32:e3:4d:35:d2'
option bss '00:22:07:11:22:33'

View File

@@ -0,0 +1,31 @@
#!/bin/sh /etc/rc.common
START=98
STOP=20
USE_PROCD=1
start_service() {
config_load "mapcontroller"
local enabled
config_get_bool enabled controller enabled 1
[ "$enabled" -eq 0 ] && return 1
procd_open_instance
procd_set_param command "/usr/sbin/mapcontroller" "-d"
procd_set_param respawn
# procd_set_param stdout 1
# procd_set_param stderr 1
procd_close_instance
}
service_triggers()
{
procd_add_reload_trigger "ieee1905"
}
reload_service() {
stop
start
}

View File

@@ -6,11 +6,11 @@ include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=map-topology
PKG_VERSION:=1.4.2
PKG_VERSION:=1.5.6
LOCAL_DEV:=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_VERSION:=e22b79c1a1ec443fcc816439658fb4e8cedf21fb
PKG_SOURCE_VERSION:=8d008ef712227986263e9a2a1b188ce3a27e17f8
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
@@ -23,7 +23,8 @@ include $(INCLUDE_DIR)/package.mk
define Package/map-topology
CATEGORY:=Utilities
DEPENDS:=+libubox +ubus +libpthread +libuci +libeasy +libieee1905
DEPENDS:=+libubox +ubus +libpthread +libuci +libeasy \
+libieee1905 +libavahi-nodbus-support
TITLE:=Utility to build topology of a multi-AP network
endef

View File

@@ -1,5 +1,5 @@
config topology
config topology 'topology'
option enabled '1'
option depth '8'
option interval '60'

View File

@@ -1,7 +1,7 @@
#!/bin/sh /etc/rc.common
START=14
STOP=96
START=97
STOP=21
USE_PROCD=1

View File

@@ -1,5 +1,5 @@
#
# Copyright (C) 2013 Inteno
# Copyright (C) 2020 IOPSYS
#
include $(TOPDIR)/rules.mk

View File

@@ -1,42 +0,0 @@
#
# Copyright (C) 2006-2008 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
PKG_NAME:=natalie-dect-h
PKG_VERSION:=12.26
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_SOURCE_URL:=https://dev.iopsys.eu/dialog/natalie-dect-h.git
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=f3889dc3f80bed10374f46430009aca24448bdcc
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_LICENSE:=PROPRIETARY RTX
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/image.mk
include $(INCLUDE_DIR)/kernel.mk
define Package/natalie-dect-h
SECTION:=net
CATEGORY:=Base system
TITLE:=Dect stack headers
URL:=
endef
define Package/natalie-dect-h/description
Kernel dect driver headers
endef
define Package/natalie-dect-h/install
$(INSTALL_DIR) $(STAGING_DIR)/usr/include/natalie-dect
$(CP) -r $(PKG_BUILD_DIR)/SrcHeaders/* $(STAGING_DIR)/usr/include/natalie-dect/
endef
$(eval $(call BuildPackage,natalie-dect-h))

View File

@@ -1,4 +0,0 @@
config NATALIE_OPEN
bool "Use pre-compiled version for Open SDK"
default n

View File

@@ -1,73 +0,0 @@
#
# Copyright (C) 2019 IOPSYS Software Solutions AB
#
include $(TOPDIR)/rules.mk
PKG_NAME:=natalie-dect
PKG_VERSION:=12.26
PKG_SOURCE_VERSION:=378c404fba3efc8f1bcde54370a5370670fa1853
ifeq ($(CONFIG_NATALIE_OPEN),y)
BRCM_KERNEL_PROFILE=$(shell echo $(CONFIG_BCM_KERNEL_PROFILE) | sed s/\"//g)
PKG_SOURCE:=$(PKG_NAME)-$(BRCM_KERNEL_PROFILE)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_SOURCE_URL:=http://download.iopsys.eu/iopsys/opensdk/
PKG_NAME:=natalie-dect-open
else
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_SOURCE_URL:=https://dev.iopsys.eu/dialog/natalie-dect-12.26.git
PKG_SOURCE_PROTO:=git
endif
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_BUILD_PARALLEL:=1
PKG_LICENSE:=PROPRIETARY
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/image.mk
include $(INCLUDE_DIR)/kernel.mk
BCM_KERNEL_VERSION=`cat $(BUILD_DIR)/bcmkernel/bcm963xx/kernel/linux-*/include/config/kernel.release`
export BUILD_DIR
export BCM_KERNEL_VERSION
export CONFIG_BCM_CHIP_ID := $(patsubst "%",%,$(CONFIG_BCM_CHIP_ID))
export CONFIG_BCM_KERNEL_PROFILE := $(patsubst "%",%,$(CONFIG_BCM_KERNEL_PROFILE))
export CONFIG_ARCH := $(patsubst "%",%,$(CONFIG_ARCH))
export TOOLS := $(CONFIG_BCM_TOOLCHAIN)/usr/bin/
export TOOLPREFIX := $(CONFIG_BCM_TOOLTUPLE)
export BRCM_MAX_JOBS := $(patsubst "%",%,$(CONFIG_BRCM_MAX_JOBS))
export MAKE_J
export BRCM_VERBOSE := $(if $(findstring c,$(OPENWRT_VERBOSE)),1,)
export PKG_BUILD_DIR
export BCM_SDK_PATH := $(BUILD_DIR)/bcmkernel/bcm963xx
define Package/natalie-dect
SECTION:=net
CATEGORY:=Base system
TITLE:=Dect stack
URL:=
DEPENDS:=bcmkernel
endef
define Package/natalie-dect/config
source "$(SOURCE)/Config.in"
endef
define Package/natalie-dect/description
Kernel dect driver
endef
ifeq ($(CONFIG_NATALIE_OPEN),y)
define Build/Compile
endef
endif
define Package/natalie-dect/install
$(INSTALL_DIR) $(1)/lib/modules/$(BCM_KERNEL_VERSION)/extra
$(CP) $(PKG_BUILD_DIR)/dect.ko $(1)/lib/modules/$(BCM_KERNEL_VERSION)/extra/dect.ko
endef
$(eval $(call BuildPackage,natalie-dect))

View File

@@ -5,12 +5,12 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=obuspa
PKG_VERSION:=2.0.21
PKG_VERSION:=3.0.0.12
LOCAL_DEV:=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=25b920c13160360de16300a8d04a068feb197c50
PKG_SOURCE_VERSION:=bc1dba1efe9ec49f468592359d03895f45699abf
PKG_SOURCE_URL:=https://dev.iopsys.eu/fork/obuspa.git
PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_VERSION).tar.gz
endif
@@ -22,14 +22,13 @@ PKG_FIXUP:=autoreconf
PKG_LICENSE:=BSD-3-Clause
PKG_LICENSE_FILES:=LICENSE
include $(INCLUDE_DIR)/package.mk
define Package/obuspa
SECTION:=utils
CATEGORY:=Utilities
TITLE:=USP agent
DEPENDS:=+libcoap +libopenssl +libcurl +libsqlite3 +libcares +libubox +libubus +libblobmsg-json +uspd
DEPENDS:=+libopenssl +libcurl +libsqlite3 +libubox +libubus +uspd +libmosquitto
endef
define Package/obuspa/description
@@ -38,18 +37,7 @@ endef
TARGET_CFLAGS += \
-I$(STAGING_DIR)/usr/include \
-D_GNU_SOURCE \
-Wall \
-Wextra \
-fstrict-aliasing \
-Werror=format-overflow \
-Wno-error=unused-parameter \
-Wno-error=sign-compare
ifneq ($(CONFIG_USE_MUSL),)
TARGET_CFLAGS += -DUSE_MUSL
endif
-D_GNU_SOURCE
ifeq ($(LOCAL_DEV),1)
define Build/Prepare
@@ -62,9 +50,11 @@ define Package/obuspa/install
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_DIR) $(1)/etc/config
$(INSTALL_DIR) $(1)/etc/obuspa
$(INSTALL_DIR) $(1)/etc/hotplug.d/iface
$(INSTALL_BIN) $(PKG_BUILD_DIR)/obuspa $(1)/usr/sbin/
$(INSTALL_BIN) ./files/etc/init.d/obuspa $(1)/etc/init.d/
$(INSTALL_DATA) ./files/etc/config/obuspa $(1)/etc/config/
$(INSTALL_BIN) ./files/etc/hotplug.d/iface/85-obuspa $(1)/etc/hotplug.d/iface/
endef
$(eval $(call BuildPackage,obuspa))

View File

@@ -1,44 +1,43 @@
# controller, mtp, connection makes a group and related to one another
# ex: first controller will be mapped to first mtp and first connection
# details, always defined in groups
config obuspa
option enable 'true'
option cert '/etc/obuspa/rootCA.pem'
config obuspa 'global'
option enabled 'true'
option interface 'wan'
#option ifname 'eth0.1'
option debug 'false'
option log_level '1'
#option db_file '/tmp/usp.db'
#option trust_cert '/etc/obuspa/rootCA.pem'
#option client_cert '/etc/obuspa/client.pem'
#option log_dest '/var/log/obuspa'
config controller
option endpointid 'self::usp-controller.com'
option enable 'true'
# Trust cerificate number
option AssignedRole 1
option PeriodicNotifInterval "86400"
option PeriodicNotifTime "0001-01-01T00:00:00Z"
option USPRetryMinimumWaitInterval "5"
option USPRetryIntervalMultiplier "2000"
option ControllerCode ""
option protocol 'STOMP'
config localagent 'localagent'
option Enable 'true'
# Adds Device.LocalAgent.Controller.
config controller 'localcontroller'
option EndpointID 'proto::interop-usp-controller'
option Protocol 'MQTT'
option Topic '/usp/controller'
option mqtt 'localmqtt'
# Adds Device.LocalAgent.MTP.
config mtp
option enable 'true'
option protocol 'STOMP'
option destination ''
option Protocol 'MQTT'
option ResponseTopicConfigured '/usp/endpoint'
option mqtt 'localmqtt'
config connection
option host 'usp-controller.com'
option username 'username'
option password 'password'
option encryption 'true'
option enable 'true'
option port 61613
option virtualhost '/'
option EnableHeartbeats "true"
option OutgoingHeartbeat "30000"
option IncomingHeartbeat "300000"
option ServerRetryInitialInterval "60"
option ServerRetryIntervalMultiplier "2000"
option ServerRetryMaxInterval "30720"
# Adds Device.MQTT.Client.
config mqtt 'localmqtt'
option BrokerAddress '127.0.0.1'
option BrokerPort '1883'
option TransportProtocol 'TCP/IP'
option Username 'admin'
option Password 'admin'
# Add Device.LocalAgent.Subscription.
config subscription
option ID 'default-boot-event-ACS'
option NotifType 'Event'
option ReferenceList 'Device.Boot!'
option Persistent 'true'
option controller 'localcontroller'

View File

@@ -0,0 +1,9 @@
#!/bin/sh
[ "$(uci -q get obuspa.global.interface)" == "$INTERFACE" ] || exit 0
[ "$ACTION" = ifup -o "$ACTION" = ifupdate ] || exit 0
[ "$ACTION" = ifupdate -a -z "$IFUPDATE_ADDRESSES" ] && exit 0
/etc/init.d/obuspa reload

View File

@@ -2,14 +2,23 @@
START=99
USE_PROCD=1
PROG=/usr/sbin/obuspa
l3device=""
certificate=""
EXTRA_COMMANDS="remove_db"
EXTRA_HELP=" remove_db Removes obuspa persistent db before restarting"
PARAM_FILE="/tmp/obuspa_param_reset.txt"
conn_num=1
mtp_num=1
stomp_num=1
CONFIGURATION=obuspa
KEEP_FILES="/lib/upgrade/keep.d/obuspa"
USP_TEMP_FILE="/tmp/usp.tmp"
controller_num=0
mtp_num=0
stomp_num=0
mqtt_num=0
subs_num=0
index=0
. /lib/functions/network.sh
log() {
echo "${@}"|logger -t obuspa -p debug
@@ -23,54 +32,113 @@ db_set() {
fi
}
get_index() {
index=$(( index + 1 ))
if [ "$1" = "$2" ]; then
echo "${index}" > ${USP_TEMP_FILE}
fi
}
get_uci_ref_index() {
local val;
[ -f ${USP_TEMP_FILE} ] && rm -f ${USP_TEMP_FILE}
index=0
config_load $CONFIGURATION
config_foreach get_index $1 $2
val=$(cat ${USP_TEMP_FILE})
if [ -z $val ]; then
val=0
fi
rm -f ${USP_TEMP_FILE}
echo $val
}
validate_obuspa_section()
{
uci_validate_section obuspa obuspa "${1}" \
'enable:bool:true' \
'cert:string:"/etc/obuspa/rootCA.pem"' \
'interface:string:wan' \
uci_validate_section ${CONFIGURATION} obuspa "${1}" \
'enabled:bool:true' \
'trust_cert:string' \
'client_cert:string' \
'interface:string' \
'ifname:string:"br-lan"' \
'debug:bool:false' \
'log_level:uinteger:2' \
'log_dest:string:stdout'
'log_level:uinteger' \
'log_dest:string' \
'db_file:string'
}
validate_localagent_section()
{
uci_validate_section ${CONFIGURATION} localagent "${1}" \
'Enable:bool:true' \
'ParameterName:string:Device.DeviceInfo.SoftwareVersion' \
'EndpointID:string'
}
validate_controller_section()
{
uci_validate_section obuspa controller "${1}" \
'endpointid:string:"self:usp-controller.com"' \
'enable:bool:true' \
'AssignedRole:uinteger:1' \
uci_validate_section ${CONFIGURATION} controller "${1}" \
'EndpointID:string' \
'Enable:bool:true' \
'AssignedRole:string:Device.LocalAgent.ControllerTrust.Role.1' \
'PeriodicNotifInterval:uinteger:86400' \
'PeriodicNotifTime:string:"0001-01-01T00:00:00Z"' \
'USPRetryMinimumWaitInterval:uinteger:5' \
'USPRetryIntervalMultiplier:uinteger:2000' \
'PeriodicNotifTime:string' \
'USPNotifRetryMinimumWaitInterval:uinteger:5' \
'USPNotifRetryIntervalMultiplier:uinteger:2000' \
'ControllerCode:string' \
'protocol:or("STOMP","CoAP")' \
'CoAPHost:string' \
'CoAPPath:string' \
'CoAPPort:uinteger'
'Protocol:or("STOMP","CoAP","MQTT")' \
'Reference:string' \
'Destination:string:controller-notify-dest' \
'Topic:string' \
'coap_host:string' \
'coap_path:string' \
'coap_port:uinteger' \
'mqtt:string' \
'stomp:string'
}
validate_subscription_section()
{
uci_validate_section ${CONFIGURATION} subscription "${1}" \
'Enable:bool:true' \
'ID:string' \
'NotifType:string' \
'ReferenceList:string' \
'Persistent:bool:true' \
'Recipient:string' \
'controller:string'
}
validate_mtp_section()
{
uci_validate_section obuspa mtp "${1}" \
'enable:bool:true' \
'protocol:or("STOMP","CoAP")' \
'destination:string' \
'CoAPPath:string' \
'CoAPPort:uinteger'
uci_validate_section ${CONFIGURATION} mtp "${1}" \
'Enable:bool:true' \
'Protocol:or("STOMP","CoAP","MQTT")' \
'Reference:string' \
'ResponseTopicConfigured:string' \
'PublishQoS:uinteger' \
'Destination:string' \
'coap_path:string' \
'coap_port:uinteger' \
'mqtt:string' \
'stomp:string'
}
validate_connection_section()
validate_stomp_connection_section()
{
uci_validate_section obuspa connection "${1}" \
'host:string:"usp-controller.com"' \
'username:string:""' \
'password:string:""' \
uci_validate_section ${CONFIGURATION} stomp "${1}" \
'Host:string:usp-controller.com' \
'Username:string' \
'Password:string' \
'encryption:bool:true' \
'enable:bool:true' \
'port:uinteger:61613' \
'virtualhost:string:"/"' \
'Enable:bool:true' \
'Port:uinteger:61613' \
'VirtualHost:string:/' \
'EnableHeartbeats:bool:true' \
'OutgoingHeartbeat:uinteger:30000' \
'IncomingHeartbeat:uinteger:300000' \
@@ -79,82 +147,227 @@ validate_connection_section()
'ServerRetryMaxInterval:uinteger:30720'
}
configure_controller() {
local endpointid enable AssignedRole PeriodicNotifInterval PeriodicNotifTime USPRetryMinimumWaitInterval
local USPRetryIntervalMultiplier ControllerCode protocol CoAPHost CoAPPath CoAPPort
validate_mqtt_client_section()
{
uci_validate_section ${CONFIGURATION} mqtt "${1}" \
'BrokerAddress:string' \
'BrokerPort:uinteger:1883' \
'Enable:bool:true' \
'Username:string' \
'Password:string' \
'ProtocolVersion:string:5.0' \
'TransportProtocol:string:TCP/IP' \
'KeepAliveTime:uinteger:60' \
'ClientID:string' \
'ConnectRetryTime:uinteger:5' \
'ConnectRetryIntervalMultiplier:uinteger:2000' \
'ConnectRetryMaxInterval:uinteger:60'
}
validate_controller_section "${1}" || {
log "Validation of section failed"
configure_localagent() {
local Enable ParameterName EndpointID
local _num
validate_localagent_section 'localagent' || {
log "Validation of localagent section failed"
return 1;
}
db_set Device.LocalAgent.Controller.${conn_num}.EndpointID "${endpointid}"
db_set Device.LocalAgent.Controller.${conn_num}.Alias "cpe-${conn_num}"
db_set Device.LocalAgent.Controller.${conn_num}.Enable "true"
db_set Device.LocalAgent.Controller.${conn_num}.AssignedRole "Device.LocalAgent.ControllerTrust.Role.${AssignedRole}"
db_set Device.LocalAgent.Controller.${conn_num}.PeriodicNotifInterval "${PeriodicNotifInterval}"
db_set Device.LocalAgent.Controller.${conn_num}.PeriodicNotifTime "${PeriodicNotifTime}"
db_set Device.LocalAgent.Controller.${conn_num}.USPRetryMinimumWaitInterval "${USPRetryMinimumWaitInterval}"
db_set Device.LocalAgent.Controller.${conn_num}.USPRetryIntervalMultiplier "${USPRetryIntervalMultiplier}"
db_set Device.LocalAgent.Controller.${conn_num}.ControllerCode "${ControllerCode}"
db_set Device.LocalAgent.Controller.${conn_num}.MTP.${conn_num}.Alias "cpe-${conn_num}"
db_set Device.LocalAgent.Controller.${conn_num}.MTP.${conn_num}.Enable "${enable}"
db_set Device.LocalAgent.Controller.${conn_num}.MTP.${conn_num}.Protocol "${protocol}"
if [ "${protocol}"=="STOMP" ]; then
db_set Device.LocalAgent.Controller.${conn_num}.MTP.${conn_num}.STOMP.Reference "Device.STOMP.Connection.${conn_num}"
db_set Device.LocalAgent.Controller.${conn_num}.MTP.${conn_num}.STOMP.Destination "controller-notify-dest"
elif [ "${protocol}"=="CoAP" ]; then
db_set Device.LocalAgent.Controller.${conn_num}.MTP.${conn_num}.CoAP.Host "${CoAPHost}"
db_set Device.LocalAgent.Controller.${conn_num}.MTP.${conn_num}.CoAP.Path "${CoAPPath}"
db_set Device.LocalAgent.Controller.${conn_num}.MTP.${conn_num}.CoAP.Port "${CoAPPort}"
else
log "Unsupported protocol ${protocol}"
if [ -n "${EndpointID}" ]; then
db_set Device.LocalAgent.EndpointID "${EndpointID}"
fi
_num=1
while [ ${_num} -le ${controller_num} ]
do
db_set Device.LocalAgent.Controller.${_num}.BootParameter.1.Alias "cpe-1"
db_set Device.LocalAgent.Controller.${_num}.BootParameter.1.Enable "${Enable}"
db_set Device.LocalAgent.Controller.${_num}.BootParameter.1.ParameterName "${ParameterName}"
_num=$(( ${_num} + 1 ))
done
db_set
conn_num=$((conn_num+1))
}
configure_controller() {
local EndpointID Enable AssignedRole PeriodicNotifInterval PeriodicNotifTime USPNotifRetryMinimumWaitInterval
local USPNotifRetryIntervalMultiplier ControllerCode Protocol Destination coap_host coap_path coap_port
local Reference Topic mqtt stomp
validate_controller_section "${1}" || {
log "Validation of controller section failed"
return 1;
}
if [ -z ${EndpointID} -o -z ${Protocol} ]; then
log "controller:: EndpointID id and Protocol cannot be empty"
return 1;
fi
if [ -z "${stomp}" -a -z "${Reference}" -a -z "${mqtt}" -a -z "${coap_path}" ]; then
log "controller:: Invalid configuration"
return 1;
fi
if [ -z ${Reference} ]; then
if [ ${Protocol} = "STOMP" ]; then
val=$(get_uci_ref_index stomp ${stomp})
if [ ${val} -eq 0 ]; then
log "Not able to find the referred stomp section"
return 1;
fi
Reference="Device.STOMP.Connection.${val}"
elif [ ${Protocol} = "MQTT" ]; then
val=$(get_uci_ref_index mqtt ${mqtt})
if [ ${val} -eq 0 ]; then
log "Not able to find the referred mqtt section"
return 1;
fi
Reference="Device.MQTT.Client.${val}"
fi
fi
controller_num=$(( controller_num + 1 ))
db_set Device.LocalAgent.Controller.${controller_num}.Alias "cpe-${controller_num}"
db_set Device.LocalAgent.Controller.${controller_num}.Enable "${Enable}"
db_set Device.LocalAgent.Controller.${controller_num}.EndpointID "${EndpointID}"
#db_set Device.LocalAgent.Controller.${controller_num}.AssignedRole "${AssignedRole}"
db_set Device.LocalAgent.Controller.${controller_num}.PeriodicNotifInterval "${PeriodicNotifInterval}"
if [ -n "${PeriodicNotifTime}" ]; then
db_set Device.LocalAgent.Controller.${controller_num}.PeriodicNotifTime "${PeriodicNotifTime}"
else
db_set Device.LocalAgent.Controller.${controller_num}.PeriodicNotifTime "0001-01-01T00:00:00Z"
fi
db_set Device.LocalAgent.Controller.${controller_num}.USPNotifRetryMinimumWaitInterval "${USPNotifRetryMinimumWaitInterval}"
db_set Device.LocalAgent.Controller.${controller_num}.USPNotifRetryIntervalMultiplier "${USPNotifRetryIntervalMultiplier}"
db_set Device.LocalAgent.Controller.${controller_num}.ControllerCode "${ControllerCode}"
db_set Device.LocalAgent.Controller.${controller_num}.MTP.1.Alias "cpe-${controller_num}"
db_set Device.LocalAgent.Controller.${controller_num}.MTP.1.Enable "${Enable}"
db_set Device.LocalAgent.Controller.${controller_num}.MTP.1.Protocol "${Protocol}"
# only support configuration of one mtp path per controller using uci
if [ "${Protocol}" = "MQTT" ]; then
db_set Device.LocalAgent.Controller.${controller_num}.MTP.1.MQTT.Reference "${Reference}"
db_set Device.LocalAgent.Controller.${controller_num}.MTP.1.MQTT.Topic "${Topic}"
elif [ "${Protocol}" = "STOMP" ]; then
db_set Device.LocalAgent.Controller.${controller_num}.MTP.1.STOMP.Reference "${Reference}"
db_set Device.LocalAgent.Controller.${controller_num}.MTP.1.STOMP.Destination "${Destination}"
elif [ "${Protocol}" = "CoAP" ]; then
db_set Device.LocalAgent.Controller.${controller_num}.MTP.1.CoAP.Host "${coap_host}"
db_set Device.LocalAgent.Controller.${controller_num}.MTP.1.CoAP.Path "${coap_path}"
db_set Device.LocalAgent.Controller.${controller_num}.MTP.1.CoAP.Port "${coap_port}"
else
log "Unsupported Protocol ${Protocol}"
fi
db_set
}
configure_subscription(){
local ID Enable NotifType ReferenceList Persistent Recipient
local controller
validate_subscription_section "${1}" || {
log "Validation of subscription section failed"
return 1;
}
if [ -z "${Recipient}" -a -z "${controller}" ]; then
log "No recipient for subscription"
fi
if [ -z ${Recipient} ]; then
val=$(get_uci_ref_index controller ${controller})
if [ ${val} -eq 0 ]; then
log "Not able to find the referred controller section"
return 1;
fi
Recipient="Device.LocalAgent.Controller.${val}"
fi
subs_num=$(( subs_num + 1))
db_set Device.LocalAgent.Subscription.${subs_num}.Alias "cpe-${subs_num}"
db_set Device.LocalAgent.Subscription.${subs_num}.Enable "${Enable}"
db_set Device.LocalAgent.Subscription.${subs_num}.ID "${ID}"
db_set Device.LocalAgent.Subscription.${subs_num}.NotifType "${NotifType}"
db_set Device.LocalAgent.Subscription.${subs_num}.ReferenceList "${ReferenceList}"
db_set Device.LocalAgent.Subscription.${subs_num}.Persistent "${Persistent}"
db_set Device.LocalAgent.Subscription.${subs_num}.Recipient "${Recipient}"
}
configure_mtp() {
local protocol enable destination CoAPPath CoAPPort
local Enable Protocol Reference ResponseTopicConfigured PublishQoS
local stomp mqtt
validate_mtp_section "${1}" || {
log "Validation of section failed"
log "Validation of mtp section failed"
return 1;
}
if [ -z ${Reference} ]; then
if [ ${Protocol} = "STOMP" ]; then
val=$(get_uci_ref_index stomp ${stomp})
if [ ${val} -eq 0 ]; then
log "Referred stomp section not found"
return 1;
fi
Reference="Device.STOMP.Connection.${val}"
elif [ ${Protocol} = "MQTT" ]; then
val=$(get_uci_ref_index mqtt ${mqtt})
if [ ${val} -eq 0 ]; then
log "Referred mqtt section not found"
return 1;
fi
Reference="Device.MQTT.Client.${val}"
fi
fi
mtp_num=$(( mtp_num + 1 ))
db_set Device.LocalAgent.MTP.${mtp_num}.Alias "cpe-${mtp_num}"
db_set Device.LocalAgent.MTP.${mtp_num}.Enable "${enable}"
db_set Device.LocalAgent.MTP.${mtp_num}.Protocol "${protocol}"
if [ "${protocol}"=="STOMP" ]; then
db_set Device.LocalAgent.MTP.${mtp_num}.STOMP.Reference "Device.STOMP.Connection.${mtp_num}"
db_set Device.LocalAgent.MTP.${mtp_num}.STOMP.Destination "${destination}"
elif [ "${protocol}"=="CoAP" ]; then
db_set Device.LocalAgent.MTP.${mtp_num}.CoAP.Path "${CoAPPath}"
db_set Device.LocalAgent.MTP.${mtp_num}.CoAP.Port "${CoAPPort}"
db_set Device.LocalAgent.MTP.${mtp_num}.Enable "${Enable}"
db_set Device.LocalAgent.MTP.${mtp_num}.Protocol "${Protocol}"
if [ "${Protocol}" = "MQTT" ]; then
db_set Device.LocalAgent.MTP.${mtp_num}.MQTT.Reference "${Reference}"
db_set Device.LocalAgent.MTP.${mtp_num}.MQTT.ResponseTopicConfigured "${ResponseTopicConfigured}"
if [ -n "${PublishQoS}" ]; then
db_set Device.LocalAgent.MTP.${mtp_num}.MQTT.PublishQoS "${PublishQoS}"
fi
elif [ "${Protocol}" = "STOMP" ]; then
db_set Device.LocalAgent.MTP.${mtp_num}.STOMP.Reference "${Reference}"
db_set Device.LocalAgent.MTP.${mtp_num}.STOMP.Destination "${Destination}"
elif [ "${Protocol}" = "CoAP" ]; then
db_set Device.LocalAgent.MTP.${mtp_num}.CoAP.Path "${coap_path}"
db_set Device.LocalAgent.MTP.${mtp_num}.CoAP.Port "${coap_port}"
else
log "Unsupported protocol ${protocol}"
log "Unsupported Protocol ${Protocol} in mtp"
fi
db_set
mtp_num=$((mtp_num+1))
}
configure_connection() {
local host username password encryption enable port virtualhost EnableHeartbeats
configure_stomp_connection() {
local Host Username Password Enable Port VirtualHost EnableHeartbeats
local OutgoingHeartbeat IncomingHeartbeat ServerRetryInitialInterval
local ServerRetryIntervalMultiplier ServerRetryMaxInterval
local encryption
validate_connection_section "${1}" || {
log "Validation of section failed"
validate_stomp_connection_section "${1}" || {
log "Validation of stomp section failed"
return 1;
}
db_set Device.STOMP.Connection.${stomp_num}.Host "${host}"
db_set Device.STOMP.Connection.${stomp_num}.Username "${username}"
db_set Device.STOMP.Connection.${stomp_num}.Password "${password}"
stomp_num=$(( stomp_num + 1 ))
db_set Device.STOMP.Connection.${stomp_num}.Host "${Host}"
db_set Device.STOMP.Connection.${stomp_num}.Username "${Username}"
db_set Device.STOMP.Connection.${stomp_num}.Password "${Password}"
db_set Device.STOMP.Connection.${stomp_num}.Alias "cpe-${stomp_num}"
db_set Device.STOMP.Connection.${stomp_num}.Enable "${enable}"
db_set Device.STOMP.Connection.${stomp_num}.Port "${port}"
db_set Device.STOMP.Connection.${stomp_num}.Enable "${Enable}"
db_set Device.STOMP.Connection.${stomp_num}.Port "${Port}"
db_set Device.STOMP.Connection.${stomp_num}.X_ARRIS-COM_EnableEncryption "${encryption}"
db_set Device.STOMP.Connection.${stomp_num}.VirtualHost "${virtualhost}"
db_set Device.STOMP.Connection.${stomp_num}.VirtualHost "${VirtualHost}"
db_set Device.STOMP.Connection.${stomp_num}.EnableHeartbeats "${EnableHeartbeats}"
db_set Device.STOMP.Connection.${stomp_num}.OutgoingHeartbeat "${OutgoingHeartbeat}"
db_set Device.STOMP.Connection.${stomp_num}.IncomingHeartbeat "${IncomingHeartbeat}"
@@ -162,20 +375,51 @@ configure_connection() {
db_set Device.STOMP.Connection.${stomp_num}.ServerRetryIntervalMultiplier "${ServerRetryIntervalMultiplier}"
db_set Device.STOMP.Connection.${stomp_num}.ServerRetryMaxInterval "${ServerRetryMaxInterval}"
db_set
stomp_num=$((stomp_num+1))
}
configure_obuspa() {
local enable cert interface debug log_level log_dest
configure_mqtt_client(){
local BrokerAddress BrokerPort Enable Username Password ProtocolVersion KeepAliveTime
local TransportProtocol ConnectRetryTime ConnectRetryMaxInterval ConnectRetryIntervalMultiplier
validate_obuspa_section "${1}" || {
log "Validation of section failed"
validate_mqtt_client_section "${1}" || {
log "Validation of mqtt section failed"
return 1;
}
[ ${enable} -eq 0 ] && \
echo "obuspa not enabled" >>/dev/console && \
exit
if [ -z "${BrokerAddress}" ]; then
log "Broker address can not be empty for mqtt"
return 1;
fi
mqtt_num=$(( mqtt_num + 1 ))
db_set Device.MQTT.Client.${mqtt_num}.Alias "cpe-${mqtt_num}"
db_set Device.MQTT.Client.${mqtt_num}.Enable "${Enable}"
db_set Device.MQTT.Client.${mqtt_num}.BrokerAddress "${BrokerAddress}"
db_set Device.MQTT.Client.${mqtt_num}.BrokerPort "${BrokerPort}"
db_set Device.MQTT.Client.${mqtt_num}.Username "${Username}"
db_set Device.MQTT.Client.${mqtt_num}.Password "${Password}"
db_set Device.MQTT.Client.${mqtt_num}.ProtocolVersion "${ProtocolVersion}"
db_set Device.MQTT.Client.${mqtt_num}.TransportProtocol "${TransportProtocol}"
db_set Device.MQTT.Client.${mqtt_num}.KeepAliveTime "${KeepAliveTime}"
db_set Device.MQTT.Client.${mqtt_num}.ClientID "${ClientID}"
db_set Device.MQTT.Client.${mqtt_num}.ConnectRetryTime "${ConnectRetryTime}"
db_set Device.MQTT.Client.${mqtt_num}.ConnectRetryIntervalMultiplier "${ConnectRetryIntervalMultiplier}"
db_set Device.MQTT.Client.${mqtt_num}.ConnectRetryMaxInterval "${ConnectRetryMaxInterval}"
db_set
}
configure_obuspa() {
local enabled trust_cert ifname interface debug log_level db_file log_dest
validate_obuspa_section "global" || {
log "Validation of global section failed"
return 1;
}
[ ${enabled} -eq 0 ] && exit 0
if [ ${debug} -eq 1 ]; then
# Forward stdout of the command to logd
@@ -184,42 +428,112 @@ configure_obuspa() {
procd_set_param stderr 1
procd_append_param command -p
fi
procd_append_param command -v ${log_level} -l ${log_dest}
# Get wan L3 interface
json_load "$(ubus -t 2 call network.interface.${interface} status)"
json_get_var l3device l3_device
export USP_BOARD_IFNAME=${l3device}
if [ -n ${log_level} ]; then
procd_append_param command -v ${log_level}
fi
# Set this variable for root user
grep -q USP_BOARD_IFNAME /root/.profile || \
echo "export USP_BOARD_IFNAME=${l3device}" >> /root/.profile
if [ -n "${log_dest}" ]; then
procd_append_param command -l ${log_dest}
fi
[ -f $cert ] && certificate=$cert
if [ -n "${interface}" ]; then
network_get_device ifname ${interface}
log "ifname from ${interface} is ${ifname}"
fi
# Set this variable for root user and obuspa -c tool
grep -q "export USP_BOARD_IFNAME=${ifname}" /root/.profile || \
echo "export USP_BOARD_IFNAME=${ifname}" >> /root/.profile
if [ -n "${db_file}" ]; then
echo "${db_file}" >>${KEEP_FILES}
procd_append_param command -f ${db_file}
fi
if [ -n "${trust_cert}" ]; then
echo "${trust_cert}" >>${KEEP_FILES}
if [ -f "${trust_cert}" ]; then
procd_append_param command -t ${trust_cert}
fi
fi
if [ -n "${client_cert}" ]; then
echo "${client_cert}" >>${KEEP_FILES}
if [ -f "${client_cert}" ]; then
procd_append_param command -a ${client_cert}
fi
fi
procd_set_param env USP_BOARD_IFNAME=${ifname}
}
# Create factory reset file
db_init() {
[ -f ${PARAM_FILE} ] && rm -f ${PARAM_FILE}
[ -f /tmp/usp.db ] && rm -f /tmp/usp.db
[ -f ${KEEP_FILES} ] && rm -f ${KEEP_FILES}
config_load obuspa
# Load configuration
config_load $CONFIGURATION
config_foreach configure_obuspa obuspa
config_foreach configure_controller controller
config_foreach configure_connection connection
config_foreach configure_localagent localagent
config_foreach configure_mtp mtp
config_foreach configure_stomp_connection stomp
config_foreach configure_mqtt_client mqtt
config_foreach configure_subscription subscription
db_set Internal.Reboot.Cause "LocalFactoryReset"
}
# if uci changes for obuspa remove persistent db and then reload
remove_db() {
local db_file
config_load obuspa
config_get db_file global db_file
log "Removing db file (${db_file})"
[ -f ${db_file} ] && rm -f ${db_file}
sed -i "g/export USP_BOARD_IFNAME/d" /root/.profile
log "Restarting service"
stop
start
}
service_running() {
local AgentEndpointID serial oui
ubus -t 10 wait_for usp.raw
config_load obuspa
config_get AgentEndpointID localagent EndpointID ""
if [ -z "${AgentEndpointID}" ]; then
serial=$(ubus -t 1 call usp.raw get '{"path":"Device.DeviceInfo.SerialNumber"}'|jsonfilter -e '@["parameters"][0].value')
oui=$(ubus -t 1 call usp.raw get '{"path":"Device.DeviceInfo.ManufacturerOUI"}'|jsonfilter -e '@["parameters"][0].value')
AgentEndpointID="os::${oui}-${serial}"
fi
# publish Agent's EndpointID in mosquito broker for discovery
# This is a work around till obuspa does not support advertising
log "Publishing EndpointID ${AgentEndpointID} to local mqtt broker"
mosquitto_pub -r -t "obuspa/EndpointID" -m "${AgentEndpointID}"
procd_running ${CONFIGURATION}
}
start_service() {
procd_open_instance obuspa
procd_set_param env USP_BOARD_IFNAME=${l3device}
procd_open_instance ${CONFIGURATION}
procd_set_param command ${PROG}
db_init
procd_append_param command -r ${PARAM_FILE}
if [ -f "${certificate}" ]; then
procd_append_param command -t ${certificate}
fi
procd_set_param respawn
procd_set_param respawn \
${respawn_threshold:-5} \
${respawn_timeout:-10} ${respawn_retry:-3}
procd_set_param watch usp.raw
procd_close_instance
}
@@ -233,5 +547,33 @@ reload_service() {
}
service_triggers() {
procd_add_config_trigger "config.change" "obuspa" /etc/init.d/obuspa restart
procd_add_reload_trigger "uspd" "mosquitto"
procd_add_config_trigger "config.change" "${CONFIGURATION}" /etc/init.d/obuspa remove_db
# Create a reload trigger if schema update avaialble
procd_open_trigger
json_add_array
json_add_string "" "usp.raw"
json_add_array
json_add_string "" "if"
json_add_array
json_add_string "" "eq"
json_add_string "" "action"
json_add_string "" "schema_update_available"
json_close_array
json_add_array
json_add_string "" "run_script"
json_add_string "" "/etc/init.d/obuspa"
json_add_string "" "reload"
json_close_array
json_close_array
json_add_int "" "1000"
json_close_array
procd_close_trigger
# local interface
# config_load obuspa
# config_get interface global interface
# [ -n "$interface" ] && procd_add_interface_trigger "interface.*" "$interface" /etc/init.d/obuspa reload
}

View File

@@ -1,5 +1,5 @@
#
# Copyright (C) 2013 Inteno
# Copyright (C) 2020 IOPSYS
#
include $(TOPDIR)/rules.mk

View File

@@ -12,7 +12,7 @@ PKG_NAME:=peripheral_manager
PKG_VERSION:=1.0.5
PKG_RELEASE:=1
PKG_SOURCE_VERSION:=0513e171013512bc14ef8b650c715e3fd9c59820
PKG_SOURCE_VERSION:=dd4a72aca663bf3c9a57f20e889e43a55d3da1b3
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/peripheral-manager
@@ -51,7 +51,7 @@ TARGET_CFLAGS := \
PERIPHERAL_OPTONS:=-DSELECT_BRCM_BOARD=0
ifneq ($(CONFIG_TARGET_iopsys_brcm63xx_arm)$(CONFIG_TARGET_iopsys_brcm63xx_mips),)
ifneq ($(CONFIG_TARGET_iopsys_brcm63xx_arm),)
PERIPHERAL_OPTONS:= -DSELECT_BRCM_BOARD=1
endif

View File

@@ -33,8 +33,6 @@ populate_config(){
done
uci commit ports
[ $DEBUG ] && cat /etc/config/ports
}
[ -f /sbin/db -a -f /lib/db/config/hw ] && populate_config
[ -f /sbin/db -a -f /etc/board-db/config/hw ] && populate_config

54
prj-unish/Makefile Normal file
View File

@@ -0,0 +1,54 @@
#
# Copyright (C) 2020 Iopsys
#
include $(TOPDIR)/rules.mk
PKG_NAME:=prj-unish
PKG_VERSION:=0.1.0
LOCAL_DEV=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=3180908081492a6cfc11adbcf80845dbba12633a
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/prj-unish.git
PKG_MAINTAINER:=Anjan Chanda <anjan.chanda@iopsys.eu>
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)_$(PKG_SOURCE_VERSION).tar.xz
endif
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
PKG_LICENSE_FILES:=LICENSE
include $(INCLUDE_DIR)/package.mk
define Package/prj-unish
SECTION:=utils
CATEGORY:=Utilities
TITLE:=Project unish
DEPENDS:=+libwifi +libuci +libubox +ubus +libpthread +libnl-genl
endef
define Package/prj-unish/description
This package provides unish-paanch.
endef
TARGET_CFLAGS += \
-I$(STAGING_DIR)/usr/include \
-I$(STAGING_DIR)/usr/include/libnl3 \
-D_GNU_SOURCE
MAKE_PATH:=src
ifeq ($(LOCAL_DEV),1)
define Build/Prepare
rsync -r --exclude=.* ~/git/prj-unish/ $(PKG_BUILD_DIR)/
endef
endif
define Package/prj-unish/install
$(CP) ./files/* $(1)/
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/src/i1905d $(1)/usr/sbin/
endef
$(eval $(call BuildPackage,prj-unish))

View File

@@ -0,0 +1,23 @@
config ieee1905 'ieee1905'
option enabled '1'
option extension 0
#option macaddress 'ba:c9:a6:90:6c:b0'
option registrar '2 5'
config ap
option band '2'
option ssid 'TestSSID'
option encryption 'psk2'
option key '1234567890'
config ap
option band '5'
option ssid 'TestSSID'
option encryption 'psk2'
option key '1234567890'
config al-iface
option enabled 1
option ifname 'br-lan'
option type 'bridge'

Some files were not shown because too many files have changed in this diff Show More