Compare commits

...

867 Commits

Author SHA1 Message Date
Janusz Dziedzic
1882e6f8ad wifimngr: start wps on all APs
Enumerate all APs and start WPS.

Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
2021-03-24 11:22:55 +00:00
Anjan Chanda
d607931a2d wifimngr: 9.1.1 2021-03-23 20:00:10 +01:00
Anjan Chanda
5ce6004d58 easy-soc-libs: 6.1.89 2021-03-23 19:59:43 +01:00
Jonas Höglund
febe4679bc Update feed [ iopsys ] package [ peripheral_manager ]
-------------------------------------------------------------------------------
* d9c2222 Revert "If state is the same as what has already been applied, don't do"
-------------------------------------------------------------------------------
commit d9c22221f6cb414126978c92295fdcc0885e3285
Author: Jonas Höglund <jonas.hoglund@embeddednation.com>
Date: 2021-03-23 17:24:33 +0100

    Revert "If state is the same as what has already been applied, don't do"

    This reverts commit 4763b55173a50c572ef91ae4c9889d37200a3997.

Base directory -> /
 src/gpio_led.c | 7 +------
 1 file changed, 1 insertion(+), 6 deletions(-)
-------------------------------------------------------------------------------
2021-03-23 17:25:36 +01:00
Omar Kallel
73448b888b icwmp: 6.5.4-2021-03-23 2021-03-23 13:42:21 +01:00
Jani Juvan
31de1fdb65 Update feed [ iopsys ] package [ dslmngr ]
-------------------------------------------------------------------------------
* d17c699 Module test and docs updates to get in sync with code
* 9490d1a If stats missing from channel part of dsl stats
* c0af1a4 Added set -e to CI scripts
* 5199acf Update functional-test.sh
-------------------------------------------------------------------------------
commit d17c699c1fc9588303d6da35ac2250903bf17cd8
Author: Jani Juvan <jani.juvan@iopsys.eu>
Date: 2021-03-19 14:55:45 +0000

    Module test and docs updates to get in sync with code

Base directory -> /
 docs/api/atm.link.md                      |  12 +-
 docs/api/dsl.channel.md                   | 183 ++++++------
 docs/api/dsl.line.md                      | 295 ++++++++++---------
 docs/api/dsl.md                           | 457 ++++++++++++++++--------------
 docs/api/fast.line.md                     | 205 +++++++-------
 docs/api/ptm.link.md                      |   4 +-
 dslmngr.c                                 | 100 +++----
 dslmngr.h                                 |   2 +-
 dslmngr_nl.c                              |   2 +-
 gitlab-ci/functional-api-test.sh          |   5 +-
 gitlab-ci/functional-test.sh              |   3 +
 gitlab-ci/install-dependencies.sh         |   2 +-
 gitlab-ci/iopsys-supervisord.conf         |   2 +-
 schemas/ubus/dsl.line_stats.json          |  18 +-
 test/api/json/atm.link.validation.json    |   2 +-
 test/api/json/dsl.channel.validation.json |   2 +-
 test/api/json/dsl.line.validation.json    |   2 +-
 test/api/json/fast.line.validation.json   |   2 +-
 test/api/json/ptm.link.validation.json    |   2 +-
 test/cmocka/Makefile                      |   2 +-
 test/cmocka/functional_test_dslmngr.c     |  20 +-
 test/cmocka/unit_test_dslmngr.c           |   6 +-
 test/cmocka/utils.c                       |  11 +-
 test/files/etc/config/dsl                 |   7 +
 24 files changed, 709 insertions(+), 637 deletions(-)
-------------------------------------------------------------------------------
commit 9490d1ab5f1718dae2bec26fc6a47dd8ea625623
Author: Jani Juvan <jani.juvan@iopsys.eu>
Date: 2021-03-17 17:31:30 +0100

    If stats missing from channel part of dsl stats

Base directory -> /
 dslmngr.c | 3 +++
 1 file changed, 3 insertions(+)
-------------------------------------------------------------------------------
commit c0af1a40adac40d5b27eae15dc49601302365e83
Author: Suru Dissanaike <suru.dissanaike@iopsys.eu>
Date: 2021-03-15 15:01:21 +0000

    Added set -e to CI scripts

Base directory -> /
 gitlab-ci/functional-api-test.sh | 2 +-
 gitlab-ci/unit-test.sh           | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)
-------------------------------------------------------------------------------
commit 5199acfd0c9bbb2c5c27c82664ad1ffe53915831
Author: Suru Dissanaike <suru.dissanaike@iopsys.eu>
Date: 2021-03-15 14:57:09 +0000

    Update functional-test.sh

Base directory -> /
 gitlab-ci/functional-test.sh | 1 +
 1 file changed, 1 insertion(+)
-------------------------------------------------------------------------------
2021-03-19 16:01:39 +01:00
Jakob Olsson
7a04489b26 map-controller: 2.4.6 2021-03-19 15:14:30 +01:00
Jakob Olsson
9f6a17e38a map-agent: 3.5.12 2021-03-19 15:13:39 +01:00
Anjan Chanda
b2b6f4a4b1 wfadatad: 3.2.3 2021-03-19 14:27:24 +01:00
Amin Ben Ramdhane
6eabe4170f bbf: 3.7.9 2021-03-19 12:25:06 +01:00
Jakob Olsson
5e8a9b461a map-agent: 3.5.11 2021-03-19 11:11:09 +01:00
Anjan Chanda
55b5312443 easy-soc-libs: 6.1.84 2021-03-19 09:45:50 +01:00
Jakob Olsson
214ded2ce8 map-controler: 2.4.5 2021-03-18 23:46:19 +01:00
Jakob Olsson
28177ccd12 map-agent: 3.5.10 2021-03-18 23:45:27 +01:00
vdutta
9f08eb3ba0 obuspa: Multiple fixes
- Test improvements
 - Fix notification for object create/delete
 - Optimize get time for non-grouped objects
2021-03-18 20:04:56 +05:30
Jakob Olsson
497c700d1b Revert "map-topology: 1.5.7"
This reverts commit 6fdd2ba9ad.
2021-03-18 14:42:14 +01:00
Jakob Olsson
5159e04508 ieee1905: 2.1.42 2021-03-18 09:53:33 +01:00
Jakob Olsson
d034408de9 map-1905: 0.0.19 2021-03-18 08:56:15 +01:00
Jakob Olsson
d953dadccc map-controller: 2.4.4 2021-03-17 17:12:02 +01:00
Jakob Olsson
49b466b8ef map-agent: 3.5.9 2021-03-17 17:06:08 +01:00
Amin Ben Ramdhane
3ca52b35ad bbf: 3.7.8 2021-03-17 11:02:09 +01:00
Raphael Derensy
051826305e owsd: hotplug: map aliases against interface on ifup 2021-03-17 09:48:22 +01:00
Anjan Chanda
7f3e3d9c3e wfadatad: 3.2.1 2021-03-16 20:25:39 +01:00
Anjan Chanda
4790d3b915 easy-soc-libs: 6.1.78 2021-03-16 15:51:53 +01:00
Jakob Olsson
69c430e502 ieee1905: 2.1.41 2021-03-16 11:56:54 +01:00
Andreas Gnau
e5db655422 inbd: Update version number 2021-03-15 11:02:20 +01:00
Andreas Gnau
d2b9140468 treewide: Add PKG_MIRROR_HASH:=skip to pkgs downloaded from git
OpenWrt 21.02 will redownload from git over and over if PKG_MIRROR_HASH
is not set. Set it to skip to prevent it from happening.
2021-03-15 10:57:13 +01:00
Andreas Gnau
7a7097facc inbd: Make compatible with newer json-c version 2021-03-15 10:57:13 +01:00
Amin Ben Ramdhane
cec3913238 icwmp: cleanup 2021-03-14 00:28:48 +01:00
Anjan Chanda
722cca0d26 wfadatad: 3.2.0 2021-03-13 13:04:33 +01:00
Sukru Senli
0c418c8d4e wifimngr: add wps overlap state to rule engine 2021-03-12 19:32:52 +01:00
Janusz Dziedzic
9038766677 Update package [easy-soc-libs, wifimngr] 2021-03-12 17:30:15 +01:00
vdutta
5b0a9699f0 obuspa: Fix access type for grouped multi-instance objects 2021-03-12 20:46:33 +05:30
vdutta
1732abca49 uspd: Change intra process ipc to mmap 2021-03-12 20:41:50 +05:30
Yalu Zhang
5bbda10e68 Update package [ dectmngr ]
Some improvement that the remote party can hear DECT handset clearly. But there
is still big noise from handset side.
2021-03-12 13:56:16 +01:00
Nevadita
6fdd2ba9ad map-topology: 1.5.7 2021-03-12 12:01:38 +00:00
Omar Kallel
e0ba35300f icwmp: 6.5.2-2021-03-11 2021-03-11 13:03:30 +01:00
Filip Matusiak
c354891742 easy-soc-libs: flag for enabling ctrl iface socket 2021-03-10 20:04:55 +01:00
Filip Matusiak
e86b12fcbd Revert "libwpa: Add new package"
This reverts commit c558d65793.
2021-03-10 19:24:45 +01:00
Filip Matusiak
cee10ef824 Revert "libwpa: build only libwpa_client.so"
This reverts commit af0bedc16c.
2021-03-10 19:24:29 +01:00
Filip Matusiak
aab3799f3f Revert "easy-soc-libs: add libwpa_client dependency"
This reverts commit b84c1e6775.
2021-03-10 19:24:20 +01:00
Amin Ben Ramdhane
0c9e81565e bbf: 3.7.6 2021-03-09 17:23:10 +01:00
Filip Matusiak
af0bedc16c libwpa: build only libwpa_client.so 2021-03-09 14:36:51 +01:00
Filip Matusiak
b84c1e6775 easy-soc-libs: add libwpa_client dependency 2021-03-09 14:36:51 +01:00
Filip Matusiak
c558d65793 libwpa: Add new package 2021-03-09 14:36:51 +01:00
Omar Kallel
eaed835d1c icwmp: 6.5.1-2021-03-09 2021-03-09 11:52:18 +01:00
Rahul
1ad4d6b0fb Update makefile [ easy-soc-libs ] library [ libethernet ]
To include change for supporting br-lan counter stats
2021-03-09 14:20:15 +05:30
Jakob Olsson
4378f26209 map-1905: 0.0.18 2021-03-09 08:58:29 +01:00
Yalu Zhang
df7f1090b3 Update package [ dectmngr ]
Synchronise the event process between the host and base station during
the start up.
2021-03-08 14:47:57 +01:00
Omar Kallel
0b3bd71b0c icwmp: 6.5.0-2021-03-05 2021-03-05 16:43:27 +01:00
Anjan Chanda
fa397d90a3 wifimngr: 9.0.1 2021-03-05 15:50:55 +01:00
Anjan Chanda
94d061bb74 easy-soc-libs: 6.1.70 2021-03-05 15:50:26 +01:00
Amin Ben Ramdhane
365f071e9c bbf: 3.7.5 2021-03-05 15:07:44 +01:00
Jani Juvan
e17db02d67 Update feed [ iopsys ] package [ dslmngr ]
-------------------------------------------------------------------------------
* b547594 If stats bugfix on fast
* a5bb606 If stats now always presented, even if device missing
-------------------------------------------------------------------------------
commit b5475949442eedcb2781d3c71ea5aacfcce19f34
Author: Jani Juvan <jani.juvan@iopsys.eu>
Date: 2021-03-05 13:58:46 +0100

    If stats bugfix on fast

Base directory -> /
 dslmngr.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)
-------------------------------------------------------------------------------
commit a5bb6062f5de80422f8c7078d6b90c4643eb147e
Author: Jani Juvan <jani.juvan@iopsys.eu>
Date: 2021-03-05 12:56:00 +0100

    If stats now always presented, even if device missing

Base directory -> /
 dslmngr.c | 40 ++++++++++++++++++++--------------------
 1 file changed, 20 insertions(+), 20 deletions(-)
-------------------------------------------------------------------------------
2021-03-05 14:09:51 +01:00
vdutta
4a6420b5b4 obuspa: Fix dm thread freeze issue 2021-03-05 18:19:19 +05:30
Jani Juvan
55b85a5fe0 Update feed [ iopsys ] package [ dslmngr ]
-------------------------------------------------------------------------------
* a5bb606 If stats now always presented, even if device missing
-------------------------------------------------------------------------------
commit a5bb6062f5de80422f8c7078d6b90c4643eb147e
Author: Jani Juvan <jani.juvan@iopsys.eu>
Date: 2021-03-05 12:56:00 +0100

    If stats now always presented, even if device missing

Base directory -> /
 dslmngr.c | 40 ++++++++++++++++++++--------------------
 1 file changed, 20 insertions(+), 20 deletions(-)
-------------------------------------------------------------------------------
2021-03-05 12:58:07 +01:00
Yalu Zhang
419eaf87a5 Update package [ dectmngr ]
Make term_id always 1 for all outgoing calls
Set codec between base sation and handset to PCM_LINEAR_NB
2021-03-05 12:18:30 +01:00
Jakob Olsson
f7b842b06a map-controller: 2.4.3 2021-03-05 11:32:26 +01:00
Jakob Olsson
b5dd7861ca map-agent: 3.5.8 2021-03-05 10:10:44 +01:00
Jakob Olsson
680a39cbea map-agent: 3.5.7 2021-03-04 22:51:47 +01:00
Jakob Olsson
5495066a88 map-1905: 0.0.17 2021-03-04 18:18:40 +01:00
Jakob Olsson
796063ea6d ieee1905: 2.1.40 2021-03-04 18:17:07 +01:00
Jakob Olsson
ad7ca90872 map-agent: 3.5.6 2021-03-04 18:16:34 +01:00
Yalu Zhang
563024c9a5 Update package dectmngr
Always ring all active handsets for an incoming call
2021-03-04 16:08:23 +01:00
Jani Juvan
0a8e0ffdec Update feed [ iopsys ] package [ dslmngr ]
-------------------------------------------------------------------------------
* a825f26 If stats
-------------------------------------------------------------------------------
commit a825f26a46318d95e3580054108fb5082a8a59f9
Author: Jani Juvan <jani.juvan@iopsys.eu>
Date: 2021-03-04 08:11:20 +0000

    If stats

Base directory -> /
 Makefile  |   2 +-
 dslmngr.c | 104 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 105 insertions(+), 1 deletion(-)
-------------------------------------------------------------------------------
2021-03-04 10:35:57 +01:00
Omar Kallel
755c0d3a3a icwmp: 6.4.8-2021-03-03 2021-03-03 16:58:30 +01:00
vdutta
7c4bd1e415 obuspa: Fix get with empty referenced paths 2021-03-03 17:55:58 +05:30
vdutta
5fff31c8b1 obuspa: build with CONFIG_OPENSSL_NO_DEPRECATED 2021-03-03 16:27:08 +05:30
vdutta
518adb78bc obuspa: Wait for dependent service to start 2021-03-02 16:29:45 +05:30
Anjan Chanda
a5ea97e248 wifimngr: 9.0.0 2021-03-01 21:44:56 +01:00
Anjan Chanda
ba111ca23a easy-soc-libs: 6.1.66 2021-03-01 21:44:11 +01:00
Raphael Derensy
9066a3b852 rulengd: 1.2.1 2021-03-01 16:41:34 +01:00
Amin Ben Ramdhane
da9c130053 bbf: 3.7.4 2021-03-01 15:05:37 +01:00
Sukru Senli
e68b0bdd29 topologyd: remove deprecated package 2021-03-01 13:10:49 +01:00
Jakob Olsson
62afe68988 easy-soc-libs: 6.1.61 2021-03-01 10:19:06 +01:00
Raphael Derensy
32c1ac029d rulengd: 1.2.1 2021-03-01 10:07:11 +01:00
Jakob Olsson
1c26adf945 map-agent: 3.5.5 2021-02-26 16:39:03 +01:00
Jani Juvan
ad1e36bd51 dslmngr: add dependency to libeasy 2021-02-26 15:05:20 +01:00
vdutta
5877112f5e obuspa: Add reference follow in search queries 2021-02-26 15:32:35 +05:30
Anjan Chanda
6e1f635f40 easy-soc-libs: 6.1.60 2021-02-26 07:55:01 +01:00
Sukru Senli
b468a999b9 iop: deselect unused libraries 2021-02-25 20:34:38 +01:00
Anjan Chanda
a845c00b61 easy-soc-libs: 6.1.59 2021-02-25 16:35:44 +01:00
Jakob Olsson
e4f14cde2a map-agent: 3.5.4 2021-02-25 13:35:38 +01:00
Jakob Olsson
9c1d0111c0 map-agent: 3.5.3 2021-02-25 11:57:16 +01:00
Jakob Olsson
51e2dc8996 map-controller: 2.4.2 2021-02-25 11:56:05 +01:00
Jakob Olsson
1583a152a3 map-controller: update init.d script reload trigger 2021-02-25 10:57:32 +01:00
Amin Ben Ramdhane
4b48ec0049 bbf: 3.7.3 2021-02-25 09:30:15 +01:00
vdutta
d10066a1cf obuspa: Optimize time for get of complete dm 2021-02-23 15:42:14 +05:30
Jakob Olsson
93d6848507 ieee1905: 2.1.39 2021-02-23 09:02:18 +01:00
Sukru Senli
c108347db8 netmode: move internet led handling from testnet to ruleng 2021-02-22 22:44:47 +01:00
Anjan Chanda
2619b78b80 easy-soc-libs: 6.1.50 2021-02-22 18:33:24 +01:00
Yalu Zhang
df6f24731e Update package dectmngr
Adjust handset starting number from 2 to 1
2021-02-21 22:00:02 +01:00
Yalu Zhang
9f7bf5d3e0 Update package dectmngr
Configure the number of TDM time slots correctly
2021-02-21 21:16:39 +01:00
Erik Karlsson
06665246e5 Stop all services before unmounting filesystems
K99umount has been moved to K90umount as of OpenWrt 19.07, to make
room for init scripts that may need to run after umount. We need to
stop all services before unmounting the filesystems. The stop()
function is dead code when procd is being used and can be removed.
2021-02-20 15:55:39 +00:00
Sukru Senli
2f51c4fc69 wifimngr: use ruleng for WPS LED handling instead of script 2021-02-20 14:01:49 +01:00
Sukru Senli
262e346eb4 bbf: 3.7.2 2021-02-19 20:31:50 +01:00
vdutta
6eeb07a738 obuspa: Revert duplicate search keys to optimize time 2021-02-19 22:13:16 +05:30
Amin Ben Ramdhane
cda2c6f628 bbf: 3.7.1 2021-02-19 17:42:41 +01:00
Anjan Chanda
89cd93fa45 easy-soc-libs: 6.1.47 2021-02-19 17:30:33 +01:00
Anjan Chanda
1d7f102b55 wfadatad: 3.1.1 2021-02-19 17:23:30 +01:00
Amin Ben Ramdhane
d7dd7e3645 bbf: 3.7.0 2021-02-19 16:49:28 +01:00
Jakob Olsson
ecc67fa3a5 map-agent: 3.5.2 2021-02-19 15:19:18 +01:00
Jakob Olsson
bf06ef8bd4 map-controller: 2.4.1 2021-02-19 14:43:33 +01:00
Jakob Olsson
8271b3b9b8 map-agent: 3.5.1 2021-02-19 14:43:01 +01:00
Jonas Höglund
1bdab0bf97 Update feed [ iopsys ] package [ peripheral_manager ]
-------------------------------------------------------------------------------
* 4763b55 If state is the same as what has already been applied, don't do anything.
* 27b0656 sk9822: Add brightness capability
* 44a458c Add advanced LED indicators for button-press
-------------------------------------------------------------------------------
commit 4763b55173a50c572ef91ae4c9889d37200a3997
Author: Jonas Höglund <jonas.hoglund@embeddednation.com>
Date: 2021-02-19 13:15:03 +0100

    If state is the same as what has already been applied, don't do anything.

    This is a workaround for a bug in the Broadcom CLED driver which causes
    flickering of LED:s when brightness is repeatedly set.

Base directory -> /
 src/gpio_led.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)
-------------------------------------------------------------------------------
commit 27b06566339f22ec0fdc3c71bb9e45c7b22cad86
Author: Markus Gothe <markus.gothe@genexis.eu>
Date: 2021-01-29 10:38:07 +0100

    sk9822: Add brightness capability

    When using the sk9822 interface we can set the brightness via an updated
    kernel module.

    This commit adds support for using the updated API.

Base directory -> /
 src/gpio_led.c | 35 ++++++++++++++++++++++++++++++++++-
 1 file changed, 34 insertions(+), 1 deletion(-)
-------------------------------------------------------------------------------
commit 44a458c77543da8f7b97cc5e7c11fa16b986831e
Author: Markus Gothe <markus.gothe@genexis.eu>
Date: 2021-01-29 10:42:27 +0100

    Add advanced LED indicators for button-press

    On some products it's necessary to disable the button indicators for certain
    buttons or only enable a short-press indicator when the long-press event
    occurs.

    This commit adds a third state to solve this as well as options to disable
    the press indicators for a specific button.

Base directory -> /
 src/button.c | 26 ++++++++++++++++++++++++--
 1 file changed, 24 insertions(+), 2 deletions(-)
-------------------------------------------------------------------------------
2021-02-19 13:22:39 +01:00
Jakob Olsson
a0c094b5a1 map-controller: 2.4.0 2021-02-19 12:27:04 +01:00
Jakob Olsson
defab5f8a1 map-agent: 3.5.0 2021-02-19 12:26:29 +01:00
Jakob Olsson
7894d505e4 map-agent: 3.4.7 2021-02-18 18:01:07 +01:00
Jakob Olsson
a7785b1a2d map-controller: update default cfg 2021-02-18 17:42:05 +01:00
Jakob Olsson
ac7dd3ea14 map-agent: 3.4.6 2021-02-18 17:03:43 +01:00
Jakob Olsson
a58a2a95f2 rulengd: libeasy dependency 2021-02-18 14:02:27 +01:00
Jakob Olsson
2e26726bce map-agent: 3.4.5 2021-02-18 13:54:25 +01:00
Raphael Derensy
b46d737152 rulengd: 1.2.0 2021-02-18 13:15:10 +01:00
Jakob Olsson
f78010b8b3 map-agent: 3.4.4 2021-02-18 12:31:35 +01:00
Jakob Olsson
88524fdbc9 map-controller: 2.3.2 2021-02-17 17:29:02 +01:00
Jakob Olsson
1a399a9332 map-agent: 3.4.3 2021-02-17 17:28:28 +01:00
Anjan Chanda
533614b4f4 easy-soc-libs: 6.1.42 2021-02-17 13:04:27 +01:00
Omar Kallel
ada468f63b bbf: 3.6.8 2021-02-16 18:47:57 +01:00
Yalu Zhang
f4dd679f2e dectmngr: disable dectmngr temporarily for the FXS issues
This is a temporary workaround for https://project.iopsys.eu/issues/4141, i.e. DTMF events
can not be detected and silent egress RTP payload for incoming calls.

The latest working version is SMARTHUB3-GFAST-IOPSYS-6.1.0ALPHA0-210112_0249. The problem
starts with SMARTHUB3-GFAST-IOPSYS-6.1.0ALPHA0-210113_0331. Note that this was just a test
result on one SmartHub3 device. It may vary on other devices.

Between these two nightly build versions, there were some dectmngr changes. Simply stopping
dectmngr process by "service dect stop" may cause the bug disappears. Copy dectmngr from the
second firmware to the first one, then the problem happens too.

So it seems that changes in dectmngr causes the FXS issues. Further investigation in dectmngr
will be undertaken.
2021-02-16 16:58:02 +01:00
Anjan Chanda
b9ecd3513d easy-soc-libs: 6.1.40 2021-02-16 15:39:07 +01:00
vdutta
6e1c57dc91 obuspa: Use local mqtt credential for endpointid publish 2021-02-16 19:28:22 +05:30
Vivek Kumar Dutta
f54729e36e Revert "obuspa: Use local mqtt credential for endpointid publish"
This reverts commit afae7a9d3f
2021-02-16 13:56:23 +00:00
vdutta
afae7a9d3f obuspa: Use local mqtt credential for endpointid publish 2021-02-16 19:24:03 +05:30
Anjan Chanda
61ebc2c3a3 wifimngr: 8.5.9 2021-02-16 13:19:19 +01:00
Rahul
4f820cd74c qosmngr: fix bug #4389 on devel
More generic fix to extract port index from port itself.
2021-02-16 15:30:28 +05:30
Rahul
a8e48ca428 qosmngr: fix 4323 on devel
Although no devel panther or FT is not supported as yet but that
might be the case in near future so keeping it same here plus,
bs alias should be replaced with proper bdmf_shell command anyway
so this is done here as well. No regression, no harm.
2021-02-16 13:29:06 +05:30
Jakob Olsson
a92b3c004c map-agent: update default config 2021-02-16 08:47:27 +01:00
Jakob Olsson
b5bb871de5 map-controller: update default config 2021-02-16 08:45:57 +01:00
Amin Ben Ramdhane
c22b03a510 bbf: 3.6.7 2021-02-15 21:25:42 +01:00
Amin Ben Ramdhane
a828ecbd14 BulkData: Align with latest bbf changes 2021-02-15 21:24:30 +01:00
Amin Ben Ramdhane
272f77e46d XMPP: Align with latest bbf changes 2021-02-15 21:24:16 +01:00
Amin Ben Ramdhane
eab05e10a5 TWAMP: Align with latest bbf changes 2021-02-15 21:24:01 +01:00
Amin Ben Ramdhane
08adc4f106 UDPEchoServer: Align with latest bbf changes 2021-02-15 21:23:46 +01:00
Omar Kallel
8a4397b82e icwmp: 6.4.8-2021-02-15 2021-02-15 17:01:12 +01:00
Erik Karlsson
00952364da peripheral_manager: Wait for 'buttons' object
Object was misspelled as 'button' leading to a 2 s delay every boot.
2021-02-15 11:37:24 +00:00
Sukru Senli
cbc988c360 iop: config: select at package 2021-02-14 14:19:00 +01:00
Anjan Chanda
13f34d166e wifimngr: 8.5.8 2021-02-13 13:15:33 +01:00
Anjan Chanda
16a1b5b361 easy-soc-libs: 6.1.38 2021-02-13 13:15:08 +01:00
Omar Kallel
c25f70efc4 icwmp: 6.4.7-2021-02-12 2021-02-12 21:10:08 +01:00
Amin Ben Ramdhane
47dbd02ab4 bbf: 3.6.6 2021-02-12 18:04:44 +01:00
Jakob Olsson
64d5f38931 ieee1905: 2.1.38 2021-02-12 10:10:32 +01:00
Sukru Senli
298a8e8c78 crun: initial port: v0.17
This is a crude port of crun tailored towards Linux kernel 4.19 and disabling 5.4 Linux kernel features

A proper integration should create selectable sub config options
2021-02-11 19:58:47 +01:00
Amin Ben Ramdhane
f8e68aa249 bbf: 3.6.5 2021-02-11 19:27:04 +01:00
Sukru Senli
72de25fb65 iop: deselect rsync 2021-02-11 19:20:39 +01:00
Amin Ben Ramdhane
e38d07407f bbf: add support for all operstate mappings related to Status parameter 2021-02-11 18:37:46 +01:00
Amin Ben Ramdhane
5418076f88 bbf: 3.6.3 2021-02-11 16:23:06 +01:00
Amin Ben Ramdhane
29af99d53e bbf: 3.6.2 2021-02-11 14:17:55 +01:00
Amin Ben Ramdhane
ad0dfafa9e bbf: 3.6.1 2021-02-10 17:39:46 +01:00
vdutta
16df43ccdc obuspa: Fix duplicate unique key search param error 2021-02-10 17:47:18 +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
Rahul
90c5c5c52c qosmngr: add support for mixed mode
A couple of bugs detected during autotest are resolved, details as
follows:
1. Assumes precedence is qid, which is incorrect, does not allow config
of WRR queues which require precedence to be 0 for all queues.

As a consequence, the logic to configure and read queue stats had to be
updated, no change in behaviour though, that is, no regression.

As a neat outcome of this change, mixed mode scheduling can now be configured
on upstream queues, for which autotests are also being added now.

To verify that no regression is caused by this change, QoS L2 and L3 suite
were executed on both platform and were found to pass, hence, this change
is ready to submit.
2020-09-06 09:43:42 +05:30
vdutta
f7cb4c8aac ieee1905: Fix DG400prime crash
- Fix segfault in DG400prime on startup
 - Optimize ACS renew handling
2020-09-04 16:12:00 +05:30
Amin Ben Ramdhane
07cbf0938e bbf:Added support for IEEE1905 datamodel 2020-09-02 17:58:05 +01:00
Rahul
a31bb99c30 mcastmngr: resolve bug #3015
Configuration of robustness value and fast leave in snooping take
effect.
2020-09-02 18:50:09 +05:30
Suru Dissanaike
80e3d89d9a IOP: added owsd 2020-09-02 13:43:04 +02:00
Amin Ben Ramdhane
d26eaf0ef0 bbf: 1.8-2020-09-01 2020-09-01 20:01:12 +01:00
Amin Ben Ramdhane
e437fc821e bbf: fix issue in get schema method 2020-08-31 15:05:42 +01:00
Markus Gothe
c86d16daf9 Redmine#27829 - easy-soc-libs: Use correct chipset defintions
The struct for passing ioctl() data does differ in size
(and offsets) on different platforms, hence we need to pass
the correct defines to the compiler.

Change-Id: If81a4bd79b21c5e93443e5ef48fb3f1b07058f60
2020-08-31 15:36:45 +02:00
Amin Ben Ramdhane
a91b41d70a bbf: 1.7-2020-08-31 2020-08-31 11:26:47 +01:00
Rahul
847b27c879 qosmngr: flush flows
After every QoS config, it is required that flows are flushed. Instead
of doing this as an extrenal step, its good to integrate this in the
qosmngr itself so that each config is atomically competent enough to
take effect with any further steps needed manually.
2020-08-31 15:42:30 +05:30
vdutta
89fe5115f0 obuspa: Fix registration of routing objects 2020-08-31 15:31:03 +05:30
vdutta
aba88e359d uspd: Fix ubus freeze issue 2020-08-31 15:28:25 +05:30
Kenneth Johansson
84b594e9bf Endprmngr: do not build if TARGET_NO_VOICE is set. 2020-08-28 18:20:33 +02:00
Jakob Olsson
e3dd402d4e owsd: let written be longer than len 2020-08-28 13:37:39 +02:00
Rahul
a06ffa00ce qosmngr: clean shaper config
Bug identified: if a shaper config is removed from the UCI file,
it still remains active on the port since the logic to clean shaper
config is missing in the qosmngr.

Resolution: clean shapers on each reload so that fresh config takes
place as per the UCI file.
2020-08-28 14:19:06 +05:30
sverma
c3c5d4ff8b wfadatad: Fixed remote device scanresult data. 2020-08-27 18:52:05 +05:30
vdutta
bb996c64df uspd: Remove dependency on cwmp config 2020-08-27 18:46:13 +05:30
vdutta
adbb8b70c1 ieee1905: Add functional tests 2020-08-27 13:45:47 +05:30
vdutta
34b3478d77 map-1905: Add functional api tests 2020-08-27 13:43:35 +05:30
vdutta
181dd5039e uspd: Align with bbf trailing dot fix 2020-08-27 13:41:02 +05:30
Anjan Chanda
10e83915c7 easy-soc-libs: 4.8.6 2020-08-26 21:00:07 +02:00
Anjan Chanda
59e0b78e84 iop: select ieee1905, map-plugin, map-topology and wfadatad 2020-08-26 20:48:32 +02:00
Rahul
c1e7c8f103 qosmngr: improve l2 classification logic
I noticed that there is a potential improvement in the way the
ebtables rules are generated from the UCI file. The thing is,
a restart of the firewall does not flush the ebtables, so, the
ebtables have to flushed by adding the ebtables -t broute -F
command in the firewall.qos (or any other script) to remove the
rules generated by firewall.qos. This also flushes the rule that
directed the lookup of the qos chain. Now, to the rule to lookup
qos chain needs to be manually added which I think is not the best
thing to do. The qosmngr should be independent in this regard, hence,
this improvement.
2020-08-26 17:03:59 +05:30
Anjan Chanda
de9a7c447d wfadatad: 2.2.1 2020-08-26 13:10:41 +02:00
nevadita.chatterjee
8cbcc039d7 map-topology:version 1.4.2 2020-08-26 12:53:07 +02:00
Amin Ben Ramdhane
044dd31be4 bbf: 1.7-2020-08-26 2020-08-26 11:30:14 +01:00
Omar Kallel
48b286031a bbf: Fix InterfaceStack issues 2020-08-26 10:36:26 +01:00
sverma
ee3dceb433 wfadatad: wfa_delm exec name rename to wfadatad 2020-08-26 13:56:26 +05:30
Anjan Chanda
aa1353f08e map-topology: 1.4.1 2020-08-24 16:29:23 +02:00
vdutta
682497f68c map-1905: Added 0.0.9 2020-08-24 18:04:28 +05:30
vdutta
bfb98073c1 ieee1905: Added 2.0.24
- Renaming lib1905 to libieee1905
 - test: Add functional test and docs
 - Remove dependency on mq_ APIs
 - ubus: Added higher layer response in broadcast list
 - Fix crash in ex400
2020-08-24 17:59:21 +05:30
Rahul
a8960be7b5 qosmngr: cumulative counters on dg400prime and eg400
The runner hardware on both the chips are different due to which
the operation of counter read on dg400prime and eg400 units is
actually a read and reset. As a result cumulative counter values
are not available.

To uniformalise the behaviour of qosmngr across platforms, handling
is added to represent cumulative value of counters.

Test:
Scripts that were earlier failing on dg400prime and passing on panther
in the QoS L3 suite were executed and with this fix scripts pass on both
the platforms. This is a good enough indicator beside the manual tests,
that the issue now stands resolved.

Note: pending scripts can now be closed with this fix.
2020-08-24 16:35:05 +05:30
Ronny Nilsson
6255b9b2df iop: remove BusyBox web server since we never use it. 2020-08-21 16:39:05 +02:00
Ronny Nilsson
4e11dda2c0 iop: add packages necessary for boot from block device. 2020-08-21 16:39:05 +02:00
Anjan Chanda
c898217717 map-topology: 1.4.0 2020-08-21 15:14:20 +02:00
Anjan Chanda
4d2358aa2a wifimngr: 7.8.0 2020-08-21 15:02:29 +02:00
Anjan Chanda
d3fb4ec562 easy-soc-libs: 4.8.0 2020-08-21 15:01:41 +02:00
Anjan Chanda
b06ca2b5e5 wfadatad: 2.2.0 - fix standalone mode build 2020-08-20 20:02:04 +02:00
nevadita.chatterjee
30928e5eb9 feeds: Makefile changes in map-topology 2020-08-20 12:34:23 +05:30
vdutta
c75d639a69 ieee1905: Added 2.0.23 2020-08-17 13:02:40 +05:30
vdutta
0bb19c25f7 map-1905: Added 0.0.8 2020-08-17 13:00:45 +05:30
Anjan Chanda
64a826896d Revert "map-topology: 1.2.0"
This reverts commit eee9c7a70c.
2020-08-14 16:58:12 +02:00
Anjan Chanda
eee9c7a70c map-topology: 1.2.0 2020-08-14 16:43:51 +02:00
vdutta
0c0e9f15f2 uspd: Added 2.0.0 2020-08-14 11:49:29 +05:30
vdutta
48ab39fa31 obuspa: Align with usp-2.0 2020-08-14 11:46:16 +05:30
Andreas Gnau
6914c0548f endptmngr: Disable hash check open tarball 2020-08-13 18:36:19 +02:00
Roman Azarenko
ffe74261d9 iop: config: add $TMOUT support in busybox ash
This feature will prove useful to close idle sessions in automation workflows.

On mips 24kc, this feature adds 16 bytes to busybox executable,
therefore its effect on image size is negligible.
2020-08-11 15:38:12 +02:00
Anjan Chanda
1b5630c67e easy-soc-libs: 4.7.12 2020-08-10 08:37:43 +02:00
Anjan Chanda
2bf5014aeb easy-soc-libs: 4.7.4 2020-08-02 17:43:47 +02:00
Anjan Chanda
279a583d23 map-topology: 1.1.0 2020-08-02 17:43:23 +02:00
Bartlomiej Grzeskowiak
0a0cad9715 wifimngr: ease wifimngr debugging
Two params are needed to enable wifimngr debugging.
1. env IOP_LLA_LIBS_DEBUG=3    #for debugging only
2. stderr 1
Second param is added and commented out by default.

Signed-off-by: Bartlomiej Grzeskowiak <bartlomiej.grzeskowiak@iopsys.eu>
2020-07-31 11:28:32 +02:00
Anjan Chanda
74618b9377 map-topology: 1.0.0 2020-07-29 14:05:55 +02:00
Anjan Chanda
5ff2854490 ieee1905: 2.0.22 2020-07-29 14:04:20 +02:00
Anjan Chanda
7ae3a29d08 wifimngr: 6.2.0 2020-07-28 09:48:16 +02:00
Anjan Chanda
68e4189d05 easy-soc-libs: 4.6.0 2020-07-28 09:47:48 +02:00
Rahul
c0f7c0ecf1 mcastmngr: handle mcast config for ifup in snooping
The handling of ifup event in case of snooping config was missing.

Note: ifup event is generated only for l3 interface, so, say ethx is
member of br-y which has proto none. In this case if ethx link goes
down and comes up again, IPTV will not work without a mcast reload.
From the look of it this will be the case in old version as well and
at the moment I don't know how this can be handled but considering this
is a remote scenario in my opinion I don't think the risk is too high.
I would continue to look for a solution ofcourse.
2020-07-17 12:25:17 +05:30
vdutta
825f1ff76d ieee1905: Change plugin path 2020-07-17 10:36:38 +05:30
vdutta
7fa1bf30c1 map-1905: Change plugin path
- Remove unused compile time flags
2020-07-17 10:26:07 +05:30
Anjan Chanda
ee3e6d5975 wifimngr: 3.4.1 2020-07-16 16:29:45 +02:00
Anjan Chanda
96d0a3fba8 easy-soc-libs: 4.4.1 2020-07-16 16:27:07 +02:00
vdutta
7b158a918a ieee1905: Updated readme 2020-07-15 15:38:08 +05:30
vdutta
6bad87c47f map-1905: Copy plugin in correct path 2020-07-15 15:36:28 +05:30
Anjan Chanda
c73ae26618 wifimngr: 3.1.4 2020-07-13 15:58:11 +02:00
Anjan Chanda
d73a60a4f3 easy-soc-libs: 4.1.8 2020-07-13 15:55:14 +02:00
vdutta
0c52946965 obuspa: Updated to 2.0.19 2020-07-13 18:42:57 +05:30
vdutta
e89485f19c uspd: Added 1.0.26 2020-07-13 18:37:06 +05:30
Amin Ben Ramdhane
bfb73ba4b5 bbf: 1.6-2020-07-10 2020-07-11 12:44:18 +02:00
Anjan Chanda
b3e19722b7 easy-soc-libs: 4.0.2 2020-07-10 10:43:14 +02:00
vdutta
908ef455c2 map-1905: Added map-1905 0.0.5 version 2020-07-10 10:13:20 +05:30
vdutta
950687c88b ieee1905: ieee1905-2.0.19 2020-07-10 09:45:49 +05:30
Amin Ben Ramdhane
5675ff87de bbf: 1.6-2020-07-08 2020-07-08 18:45:53 +01:00
Anjan Chanda
ae0213ce8c wifimngr 3.0.1 2020-07-08 12:52:22 +02:00
Anjan Chanda
a45957e872 easy-soc-libs 4.0.1 2020-07-08 12:52:04 +02:00
Amin Ben Ramdhane
2c67b66e15 bbf: 1.5-2020-07-07 2020-07-08 09:05:25 +01:00
Omar Kallel
bf5b932a93 icwmp: 2020-07-07 2020-07-07 10:52:26 +01:00
Rahul
3f6c55a86d mcastmngr: fix multicast forwarding on untagged interface.
Modifying the lookup method for forwarding multicast packets enables
forwarding on both tagged and untagged upstream interfaces.

I have tested:
- forwarding of traffic in untagged interface.
- forwarding of traffic on tagged interface.
- response to queries in above scenarios by upstream server.
- forwarding of unsolicited joins and leaves to upstream server.

I cannot see a fault at the moment
2020-07-06 16:45:05 +05:30
Anjan Chanda
133c45e91d map-controller-1.0.1: initial 2020-07-03 09:24:01 +02:00
Amin Ben Ramdhane
fce1fa2eae bbf: 1.5-2020-06-30 2020-06-30 19:13:05 +01:00
Andreas Gnau
986fc5ea78 Make dev-check check for SSH instead of non-HTTP
In order to determine, whether we are developers or not, check the
git-remotes for SSH-URLs instead of checking for the non-existence of
any HTTP-URLs. This fixes dev-mode not being detected properly when
curious devs add other HTTP-remotes such as upstream OpenWRT.

This also makes the check consistent with the check done in the main
"iop" script in the root.
2020-06-30 13:12:51 +02:00
pitchaiah prakash
95e887087f peripheral_manager: 1.0.5 2020-06-30 10:54:13 +02:00
vdutta
0082d26141 obsupa: Suppress schema errors in get if its present in uspd 2020-06-30 11:19:27 +05:30
Saurabh Verma
2306b1e76f map-topology: Makefile added 2020-06-26 14:19:59 +02:00
Suru Dissanaike
7b432d88f8 IOP: added support for iopsys-armvirt and x86 target 2020-06-26 13:47:28 +02:00
Sukru Senli
c56aed73d4 icwmp-4.0-2020-06-25 2020-06-26 10:19:07 +02:00
vdutta
af719df40c obuspa: Multiple fixes
- 447a01c vendor_uspd: Multiple fixes
 - d269d52 vendor_upsd: fix schema not getting created
 - 82a3765 openwrt: Set destination for MTP config
 - 63eac80 openwrt: Change destination default config value
2020-06-26 13:31:35 +05:30
vdutta
2d25beb3ab uspd: Multiple fixes
- bb11466 Initialise blob_buf before use
 - e23b2b4 Show "value" parameter on get_names_safe
2020-06-26 13:29:17 +05:30
vdutta
ba561afb24 ieee1905: Multiple fixes
- Supports reassembly of fragmented cmdus
 - Dependency on json config file removed
 - Support reliable multicast for map cmdus
 - Do cleanup on exit
 - Memory related fixes
2020-06-25 15:59:10 +05:30
Sukru Senli
4f8906c1f7 obuspa: log to stdout by default 2020-06-25 09:02:07 +02:00
Jakob Olsson
42c7aafb93 iop: config: select juci-sysupgrade and rpcd-mod-rpcsys by default 2020-06-24 09:55:14 +02:00
Jakob Olsson
6c1b78b69d owsd: make async cleanout timeout more leniant 2020-06-23 16:48:05 +02:00
Amin Ben Ramdhane
1eade44fe6 bbf: 1.5-2020-06-22 2020-06-22 16:50:41 +01:00
Anjan Chanda
834522d107 wifimngr: 2.9.2 - show supp_bands in radio info 2020-06-22 15:58:30 +02:00
vdutta
cc65e6ce52 obuspa: Fix duplicate alias entries from get 2020-06-19 16:53:52 +05:30
vdutta
b2061f27e0 obsupa: Dynamic registration of dm_schema 2020-06-19 14:34:26 +05:30
vdutta
cc26f7bbe9 uspd: Added object type and permission in object_names 2020-06-19 14:31:37 +05:30
Amin Ben Ramdhane
6841172f75 bbf: 1.5-2020-06-19 2020-06-19 09:58:33 +01:00
Sukru Senli
8fd7232ea2 peripheral_manager: 1.0.4
pitchaiah prakash <pitchaiah.murugan@iopsys.eu>
2020-06-19 10:45:31 +02:00
Sukru Senli
4d7ac5941e bbf: correct wifi associated device noise value mapping 2020-06-18 16:09:25 +02:00
Sukru Senli
2bd9e1ac13 bbf: 1.5-2020-06-17 2020-06-18 15:47:38 +02:00
Sukru Senli
766379c8e4 Revert "config: enable hostapd_cli and mpstat"
This reverts commit dd8edbec71.
2020-06-18 14:56:50 +02:00
Janusz Dziedzic
dd8edbec71 config: enable hostapd_cli and mpstat
For opensource iopsys-ramips we will use
hostapd_cli from libwifi.

Enable mpstat to get correct picture of
CPU/cores usage for platforms with more
than one CPU.

After that we have output like:

root@iopsys:~# mpstat -P ALL 2
Linux 4.14.171 (iopsys)         06/18/20        _mips_  (4 CPU)

CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
all    0.50    0.00    0.75    0.00    0.00    0.50    0.00    0.00    0.00   98.26
  0    1.00    0.00    1.00    0.00    0.00    0.50    0.00    0.00    0.00   97.51
  1    0.50    0.00    1.00    0.00    0.00    0.00    0.00    0.00    0.00   98.51
  2    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
  3    0.50    0.00    1.00    0.00    0.00    1.49    0.00    0.00    0.00   97.01

Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
2020-06-18 14:01:02 +02:00
Anjan Chanda
a0bfac1658 wfadatad: fix dependency on map-agent 2020-06-17 17:12:13 +02:00
Anjan Chanda
ec68c58bb7 easy-soc-events: copy kmod to proper path for brcm-arm 2020-06-17 17:06:49 +02:00
Omar Kallel
701a77b6b3 icwmp: 2020-06-17 2020-06-17 11:56:08 +01:00
Janusz Dziedzic
18e94a6b47 iopsys-ramips: set subtarget in genconfig.sh
Today we base on open source code/tree.
In this code we need to setup subtarget
correctly.

Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
2020-06-16 21:52:41 +02:00
vdutta
514a85703c obuspa: Override get values from uspd 2020-06-16 16:25:09 +05:30
Markus Gothe
e72ef7290b peripheral-manager: 1.0.3 2020-06-15 20:42:57 +02:00
Jakob Olsson
428a1791ed owsd: fix segfault on remove_client
use safe func when iterating and removing from list
2020-06-15 16:12:13 +02:00
vdutta
43bd7d872f uspd: Multiple fixes
- c2d0d99 uspd: Align ut cases with next-level parameter
 - 46e9475 Add get_safe variant of object_names
 - 366e022 Add ParameterKey to set callback
 - 15b8a80 Cleanup and reuse code
 - 86d72e8 Add get_attributes call
2020-06-15 15:31:19 +05:30
Sukru Senli
1fd62bbfa2 port-management: remove unused functions 2020-06-14 18:27:48 +02:00
Rahul
08c542cf6f mcastmngr: update stats param names, config l2l mcast
- The parameters used for stats are updated.
- Configuration support for lan to lan multicast via UCI added.
2020-06-14 20:15:07 +05:30
Rahul
098f3340b1 mcastmngr: add support for stats
ubus call added to fetch igmp stats, format is,
ubus call mcast stats

Sample output:

root@iopsys:~# ubus call mcast stats
{
	"snooping": [
		{
			"interface": "br-lan",
			"groups": [
				{
					"group_address": "225.10.10.20",
					"associated_devices": [
						{
							"host_address": "192.168.1.152",
							"source_interface": "eth1",
							"timeout": "258"
						}
					]
				},
				{
					"group_address": "225.10.10.2",
					"associated_devices": [
						{
							"host_address": "192.168.1.146",
							"source_interface": "eth0",
							"timeout": "259"
						}
					]
				}
			]
		}
	]
}
2020-06-14 13:26:12 +05:30
Sukru Senli
d43113a471 bbf: 1.5-2020-06-13 2020-06-13 14:53:41 +02:00
Sukru Senli
597fadf578 questd: 5.1.11 2020-06-13 13:47:51 +02:00
Yalu Zhang
d45959b3da Update package easy-soc-libs
libdsl: update header files for Broadcom platform due to upgrading
2020-06-12 14:22:48 +02:00
Sukru Senli
8952a6eca8 bbf: 1.5-2020-06-11 2020-06-11 18:21:04 +02:00
Markus Gothe
c5df7e08a1 peripheral-manager: 1.0.2 2020-06-11 18:04:54 +02:00
vdutta
a2c6430caa obuspa: Align version with obuspa 2020-06-11 20:52:48 +05:30
vdutta
e364957074 uspd: 'next-level' parameter in 'object_names'
a8a90df object_names: add all entries returned from libbbf
0937f3c object_names: add 'next-level' parameter
2020-06-11 20:20:24 +05:30
vdutta
a14e72e26f obuspa: Support dynamic datamodel parameters from uspd
- Skip registration of datamodel objects supported by uspd
2020-06-11 20:13:30 +05:30
Yalu Zhang
fc38f16aa5 Update package endptmngr: Change country code from 3 letters to 2 2020-06-11 16:35:31 +02:00
Markus Gothe
ebf1f8fd39 peripheral_manager: add test-mode 2020-06-11 12:58:42 +02:00
Anjan Chanda
005d53ff14 dslmngr 1.0.1: handle easysoc netlink events 2020-06-10 15:18:47 +02:00
Anjan Chanda
a585061b6c wifimngr: 2.9.1: ignore non-wifi 'easysoc/notify' events 2020-06-10 12:08:33 +02:00
Anjan Chanda
c945f19c3c easy-soc-libs: 3.3.1 - fix event handling when ifname=NULL 2020-06-10 12:06:35 +02:00
Sukru Senli
9566dbfb8e questd: 5.1.10 2020-06-10 11:47:06 +02:00
Sukru Senli
120785335c wifimngr: hotplug script handling wifi and wps button press 2020-06-09 19:58:07 +02:00
Sukru Senli
f87a160b98 inbd: 1.0.1 2020-06-09 19:23:59 +02:00
vdutta
bf6342472a uspd: Updated Readme with log_level 2020-06-09 16:43:13 +05:30
Rahul
36e9c3a3d7 mcastmngr: updates
- Default filter value updated as per requirements.
- Logic added to modify filter ip address as accepted in /var/mcpd.conf
  in broadcom.sh

Noticed one hard coding in qos, fixed that too.
2020-06-09 13:31:33 +05:30
Sukru Senli
3c79856802 bbf: bump version 2020-06-08 18:01:27 +02:00
Sukru Senli
e29ab21280 ndt: add pkg_hash 2020-06-08 16:20:47 +02:00
Rahul
c2b993b494 qosmngr: improvements
- ubus call for reloading each individual service as well as all of
  qos added.
- init script modified to call ubus call and also to have a boot and
  restart section.
- to have separate uci parameters for detination mask and source mask
  make no sense, both destination/source ip and mask in tr181 should
  map to destination/source ip uci parameter, updated.
- firewall rules added by qos are moved to a separate chain, flushing
  is hence restricted to this chain only.
- the hotplug is not really required, hence removed.
2020-06-08 18:44:51 +05:30
vdutta
fbc5226978 uspd: Align operate cmd output 2020-06-08 18:32:10 +05:30
Amin Ben Ramdhane
3d5a5d4697 bbf: add Device.Hosts.Host.{i}.WANStats. object 2020-06-08 12:46:47 +01:00
Sukru Senli
0be99d1bc0 iop: select map package 2020-06-08 13:24:37 +02:00
Sukru Senli
053bfa1442 questd: 5.1.9 2020-06-07 13:58:09 +02:00
vdutta
0346ce9285 uspd: Fix table name in get output 2020-06-06 11:17:37 +05:30
Amin Ben Ramdhane
ae3b959cbf bbf: Ethernet.Interface.{i}.Stats: update stats values 2020-06-05 18:46:00 +01:00
Anjan Chanda
2e10c5845e ethmngr: 1.0.4 2020-06-05 19:29:01 +02:00
Amin Ben Ramdhane
83bb965d81 bbf:1.4-2020-06-05 2020-06-05 15:48:47 +01:00
vdutta
a80cff151d uspd: Added maxdepth and u64 conversion fix
- f101ef0 uspd: Fix conversion of u64 values
 - cf418dc uspd: Align resolve path syntax as per obuspa
 - 1355839 uspd: Added maxdepth in get method of usp object
2020-06-05 19:24:11 +05:30
vdutta
76a5df9115 uspd: Multiple fixes
* Added resolve method to verify object path
* Added check to identify the valid paths before any operation
* Align instance names as per obuspa
* Fix unit test cases as per the new instance syntax
* Fix usp freeze issue on invalid syntax in path
 - ubus call usp get '{"path":"Device.\*"}'
2020-06-05 13:51:34 +05:30
Omar Kallel
e63d9f0445 icwmp: 2020-06-04 2020-06-04 17:26:15 +01:00
Omar Kallel
0432b27f39 bbf: 2020-06-04 2020-06-04 17:19:45 +01:00
Anjan Chanda
dcae4a36ea wifimngr 2.9.0 2020-06-04 16:58:45 +02:00
Anjan Chanda
3dc00d7c04 easy-soc-libs - 3.3.0: libwifi - get wmm params and wifi meta info 2020-06-04 16:57:26 +02:00
Amin Ben Ramdhane
12a7fb224d bbf: 1.4-2020-06-03 2020-06-03 10:31:47 +01:00
Anjan Chanda
dfd2d75021 wifimngr 2.8.1 2020-06-02 13:21:15 +02:00
Anjan Chanda
0bc504232a easy-soc-libs - 3.2.1: libwifi - include noise in station info 2020-06-02 13:16:21 +02:00
Anjan Chanda
6d5bb86e58 ethmngr: 1.0.3 - change ubus methods 2020-06-02 10:58:33 +02:00
vdutta
ff47df64b8 ieee1905: Fix tlv count logic in a stream 2020-06-02 13:10:29 +05:30
Anjan Chanda
b1f86fdc3b ethmngr: 1.0.2 - add 'ethernet' ubus object 2020-06-01 15:03:34 +02:00
Anjan Chanda
a0a457cd35 easy-soc-libs: 3.1.10 - libethernet: update get rmon stats API 2020-06-01 15:00:16 +02:00
Jakob Olsson
0c5f03d50c owsd: make client connection timers configurable 2020-06-01 08:55:39 +02:00
Amin Ben Ramdhane
4c124ccd4e bbf: 1.4-2020-05-31 2020-06-01 00:06:59 +01:00
Amin Ben Ramdhane
321eb8c8e4 tr098:1.0-2020-05-31 2020-06-01 00:02:15 +01:00
Rahul
776dc46d49 qosmngr: fix start up issues
Fixes the issue related to queue setup at boot.
Also resolved classification when source port is used as the
criteria.
2020-05-31 20:36:05 +05:30
Sukru Senli
dcfbd0349a iop: config: deselect crashlog and select iopupgrade as module 2020-05-31 16:18:08 +02:00
Anjan Chanda
ed5d4e572d ethmngr: 1.0.1 - initial version 2020-05-31 12:36:11 +02:00
Anjan Chanda
22429269e2 easy-soc-libs: 3.1.9 libethernet: bcm rom stats and link status 2020-05-31 11:39:56 +02:00
Sukru Senli
eee0fcf3db easy-soc-libs: compile test platform for target iopsys-armvirt 2020-05-31 11:06:36 +02:00
Sukru Senli
9f6f39a094 iop: genconfig: allow explicitly specifying the linux target
same board/profile names might be available under different targets
2020-05-31 10:58:25 +02:00
Sukru Senli
0e0bbb2339 iop: add support for iopsys-armvirt target 2020-05-31 10:58:20 +02:00
Omar Kallel
36ded309bc bbf: 2020-05-30 2020-05-30 23:36:42 +01:00
Sukru Senli
182b08fcbf qosmngr: broadcom needs qsize set 2020-05-30 13:43:51 +02:00
Sukru Senli
17fef094df iop: remove reference to wifilife open 2020-05-30 12:48:04 +02:00
Sukru Senli
bcdbb5dae8 iop: config: select swmodd as module 2020-05-30 10:55:21 +02:00
Sukru Senli
f1be5f4ee4 questd: 5.1.8 2020-05-30 10:49:51 +02:00
Rahul
33eeedcdd7 mcastmngr: fix upstream interface generation 2020-05-29 18:15:59 +05:30
Rahul
5e41b8c3bc qosmngr: enhance support plus fix some bugs
- Enhance support to cover ipv6 rules
- Add support to differentiate between l2 and l3 rules
- Resolve bug related to source interface for output chain
2020-05-29 18:02:09 +05:30
Rohit Topno
4652ec7399 qosmngr: Added support for ip6tables and other change for ifname uci option 2020-05-29 15:24:49 +05:30
Rahul
7cccc5d048 mcastmngr: add check for valid interface
Add check to validate if the configured interface is valid or not
before writing it into the mcpd.conf.
2020-05-29 12:56:01 +05:30
Amin Ben Ramdhane
4843a8e9ff bbf: 1.4-2020-05-28 2020-05-28 20:32:50 +01:00
Amin Ben Ramdhane
a67aedda72 icwmp: 4.0-2020-05-28 2020-05-28 20:31:31 +01:00
Sukru Senli
d5a7db3a91 easy-soc-libs: use test platform for iopsys_x86 target 2020-05-28 17:41:17 +02:00
Jakob Olsson
45190fb2fd iop: add iopsys-x86 target support 2020-05-28 17:25:12 +02:00
Rahul
c8a8cda534 mcastmngr: update proxy config
- generate proxy config by default
- resolve bug in processing multiple upstream or downstream interfaces
- add hotplug script for mcast
- add default values for query interval, response interval and last
  query response interval
2020-05-28 19:48:56 +05:30
pitchaiah prakash
64e0a86b77 Peripheral Manager: Changed the project from autotools to CMake. 2020-05-28 12:39:25 +02:00
Rahul
123e2df9fa qosmngr: update qos stats as per feedback
- All params apart from ifname converted to intergers.
- Output of stats for a particular interface now available.
- The ubus call accepts qid as integer.
2020-05-28 08:44:16 +05:30
Sukru Senli
61d9885cd5 iop: select lscpu 2020-05-27 13:04:11 +02:00
Amin Ben Ramdhane
733cb365ee bbf: 1.4-2020-05-27 2020-05-27 09:07:02 +01:00
vdutta
aeba764008 map-1905: Added unit tests 2020-05-27 11:08:34 +05:30
Rahul
d0350ee279 mcastmngr: add support for snooping mode
Support for snooping mode configuration added.
2020-05-26 18:37:24 +05:30
vdutta
00b6800c2f map-1905: Improvements in map-plugin 2020-05-26 17:18:23 +05:30
vdutta
ea0079eec8 ieee1905: map plugin improvements 2020-05-26 17:11:24 +05:30
Amin Ben Ramdhane
b72d3a45b3 swmodd: clean up 2020-05-26 09:51:48 +01:00
vdutta
d71c6382d5 obuspa: Fix client freeze on SIGINT
- B#2637 Fix obuspa -c get command freeze issue
 - Obuspa stop scripts improvement to speed up stop and reload
2020-05-25 18:31:18 +05:30
Rahul
ef4570dd83 qosmngr: fix port related config issue
Bug found in specifying input port as classification criteria,
fixed with this change.
2020-05-23 19:33:11 +05:30
Rohit Topno
56273668d6 qosmngr: Simplified code for writing iptables rules 2020-05-22 16:10:39 +05:30
Rahul
413c86b854 qosmngr: fix uci param name
The uci parameter name for destination mac address is incorrect.
It should be dst_mac and dest_mac, the same is rectified with this
change.
2020-05-22 13:34:56 +05:30
Rohit Topno
53d9ff537d qosmngr: Made iptables rule addition through single function and other changes 2020-05-21 14:00:06 +05:30
Rohit Topno
024d1bf061 qosmngr: Support for mapping internal packets to queue based on packet length 2020-05-20 21:15:17 +05:30
Sukru Senli
cb5d38eb86 iop: config: remove reference to samba3 2020-05-20 15:41:29 +02:00
Rahul
9108848387 qosmngr: update ubus call for queue stats
Update the rpcd to enable fetching stats for particular queue of an
interface.
Also, move all broadcom specific functions to broadcom.sh so that the
rpcd is soc agnostic.
2020-05-20 17:12:50 +05:30
Rohit Topno
81fb5ff455 qosmngr: Support for mapping IP packets to queue based on packet length. 2020-05-20 15:12:16 +05:30
Sukru Senli
5d16d75162 obuspa: add support for configuring log destination 2020-05-20 08:40:53 +02:00
Anjan Chanda
da5b719e6d wifimngr: 2.7.2 2020-05-20 08:37:38 +02:00
Anjan Chanda
3baa8f3157 easy-soc-libs: 3.1.8 2020-05-19 16:52:39 +02:00
Yalu Zhang
27610a0305 Update package endptmngr 2020-05-19 16:30:39 +02:00
vdutta
3ef6f4b04c uspd: Multiple fixes
- 69547f8 Remove DM_USE_LIBUBUS compile defines
 - 06fbaef Add openwrt makefile
 - 6ce0cad Fix invalid use of strncpy/cat functions
 - da2d3d8 uspd: Added compile time flags
2020-05-19 19:24:35 +05:30
vdutta
0bea0f9635 obsuap: Fix segfault in case of parameter returns fault 2020-05-19 19:13:18 +05:30
Anjan Chanda
8ee10eb149 easy-soc-events: v1.1 2020-05-18 21:30:20 +02:00
Anjan Chanda
1a36a1d22a rename mapagent -> map-agent 2020-05-18 21:29:25 +02:00
Omar Kallel
4b11d665ff bbf: Device.LANConfigSecurity. object 2020-05-18 14:03:57 +01:00
Amin Ben Ramdhane
ab710068a6 change package name: opkgd -> swmodd 2020-05-18 12:36:02 +01:00
Sukru Senli
9ceec5cc0b easy-soc-libs: compile TEST modules for x86 target 2020-05-18 12:50:03 +02:00
Amin Ben Ramdhane
9161d99082 bbf: 1.3-2020-05-18 2020-05-18 10:49:07 +01:00
vdutta
fa76f6f32c uspd: Fix memory leak in get_safe method 2020-05-18 14:08:33 +05:30
Rahul
c37934cb69 mcastmngr: Fix section name issue
In the default config that is generated by the mcast manager,
after support for MLD config via bbf was added the name of section
was updated. This caused unwanted behaviour when config addition
were made by the bbf on top of default config. Updated the default
config igmp snooping section name to resolve that.
2020-05-18 09:52:32 +05:30
Rahul
53a52bc455 qosmngr: Add service trigger
The service trigger was missing from the init file, added.
2020-05-18 09:49:41 +05:30
Sukru Senli
7f58e5409d libmicroxml: update source url 2020-05-17 20:50:45 +02:00
Sukru Senli
ccad65dd89 iop: config cleanup 2020-05-17 18:18:33 +02:00
Sukru Senli
e5b8c6f46b samba3: remove package 2020-05-17 18:11:57 +02:00
Sukru Senli
7ec727e994 owsd: install uproxyd only if selected 2020-05-17 17:21:51 +02:00
Sukru Senli
52313cdaa8 iop: update config 2020-05-15 18:42:57 +02:00
Sukru Senli
da18a10782 remove deprecated and redundant packages 2020-05-15 18:38:51 +02:00
Sukru Senli
0ae10079fb wifilife: remove package 2020-05-15 17:00:54 +02:00
Omar Kallel
0e22b3d267 icwmp: 4.0-2020-05-15 2020-05-15 13:31:32 +01:00
Rahul
895cfbc4f0 qosmngr: Add support for L2 classification
* Support of the QoS.Classify object parameters is extended to cover
L2 scenarios.
* There was a mistake in the way p-bit to queue mapping was configured,
that has been corrected now.

For now, qosmngr write L2 classification rules into /tmp/qos/classify.ebtables
file and then executes this script to apply the classification rules.

Decision on whether to go for this or to add this script to firewall uci
default config will be taken at the time of integration.

Note: before enabling qosmngr in devel, firewall.qos should be removed.
All QoS handling should be done from qosmngr.
2020-05-14 16:49:39 +05:30
vdutta
85cf73c66b uspd: Added conversion of unsigned long values 2020-05-14 16:25:18 +05:30
Rohit Topno
e8ddd67747 qosmngr: 4.4.4.25: Support for DSCP mark and remark based on L3 classifier supported by the system 2020-05-14 14:40:53 +05:30
Sukru Senli
60396bad6d icwmp: 4.0-2020-05-08 2020-05-13 11:52:45 +02:00
Benjamin Larsson
568098ee0b Update feed [ iopsys ] package [ peripheral_manager ]
-------------------------------------------------------------------------------
* 4851bc6 Merge branch 'production-button' into 'devel'
* 4dd5f3c Peripheral-manager: Add production mode support for button
-------------------------------------------------------------------------------
commit 4851bc6a0ee52a6f3399ac26a70e4ccced1b72cc
Author: Benjamin Larsson <benjamin.larsson@iopsys.eu>
Date: 2020-05-08 13:33:47 +0200

    Merge branch 'production-button' into 'devel'

    Peripheral-manager: Add production mode support for button

    See merge request iopsys/peripheral-manager!2
Base directory -> /
 src/button.c | 128 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 file changed, 118 insertions(+), 10 deletions(-)
-------------------------------------------------------------------------------
commit 4dd5f3c38a7a4e5c7fcc5c9461f0f13a99023fb4
Author: pitchaiah prakash <pitchaiah.murugan@iopsys.eu>
Date: 2020-05-08 12:20:16 +0200

    Peripheral-manager: Add production mode support for button

Base directory -> /
 src/button.c | 128 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 file changed, 118 insertions(+), 10 deletions(-)
-------------------------------------------------------------------------------
2020-05-13 11:45:10 +02:00
Anjan Chanda
868fece089 easy-soc-events: 1.0 2020-05-13 08:06:11 +02:00
Amin Ben Ramdhane
e0cb0e7a07 bbf: implement Device.Hosts. object 2020-05-12 16:46:40 +01:00
Amin Ben Ramdhane
49f9faa58c wifilife: TR-181 X_IOPSYS_EU_WiFiLife vendor extensions 2020-05-12 16:29:31 +01:00
Sukru Senli
30245d6dec questd-5.1.7 2020-05-12 12:07:23 +02:00
Amin Ben Ramdhane
8df424c249 bbf: 1.2-2020-05-12 2020-05-12 10:12:25 +01:00
Sukru Senli
e732109ef2 questd-5.1.6 2020-05-10 11:54:21 +02:00
Sukru Senli
0e64d6f262 libtrace: correct dependency 2020-05-09 16:46:39 +02:00
Sukru Senli
57816f3353 questd-5.1.5 2020-05-09 16:46:02 +02:00
Sukru Senli
0cb4e026c7 bbf: 1.2-2020-05-09 2020-05-09 16:45:44 +02:00
vdutta
25a6e81181 uspd: Test support with fixes
- Readme: Updated readme
 - Updated api specification and tests
 - Remove redundant code
 - Fix '==' operation for boolean type
 - Fix '!=' operation
 - Fix output of del_object method
 - Improved comparator algorithm for non integer values
 - Added unit test cases
 - Added functional api test cases
 - Fixed static analysis errors
 - Fixed cpd errors
2020-05-08 18:47:55 +05:30
Amin Ben Ramdhane
352e54af58 bbf: 1.2-2020-05-06 2020-05-06 15:54:39 +01:00
Omar Kallel
f5b4e71927 icwmp: Fix bug related to the authentication 2020-05-05 17:56:11 +01:00
Yalu Zhang
37dae0ee6f Update commitment of endptmngr: Adaptation for voice config restructure 2020-05-05 18:12:52 +02:00
Amin Ben Ramdhane
045dd954fa bbf: fix memory leak and issue related to delete object 2020-05-05 15:20:55 +01:00
yyashvardhan
ecde3a89eb ieee1905: Added 1905 stack validation tests 2020-05-05 12:26:24 +05:30
Amin Ben Ramdhane
7e5b693624 bbf: 1.2-2020-05-05 2020-05-05 01:18:14 +01:00
Amin Ben Ramdhane
7bbbfb150c icwmp: 4.0-2020-05-05 2020-05-05 01:16:53 +01:00
Amin Ben Ramdhane
317f4118e1 opkgd: Update the object name softwaremanagement -> swmodules 2020-05-05 01:14:47 +01:00
Amin Ben Ramdhane
a819c14f7d bbf: fix issue in delete object of IP.Interface 2020-05-04 17:41:34 +01:00
Amin Ben Ramdhane
f4b98bd8e9 bbf: 1.2-2020-05-04 2020-05-04 14:52:27 +01:00
Yalu Zhang
1eeb09bfa2 Remove package voice-client
The functionalites of the package will be merged to package asterisk
2020-05-04 15:29:20 +02:00
Ronny Nilsson
3e67053e9d endptmngr: source file was badly computed in Makefile. 2020-05-03 21:42:35 +02:00
Amin Ben Ramdhane
3630dd5fc1 bbf: 1.2-2020-05-03 2020-05-03 15:08:21 +01:00
Sukru Senli
29d72d64d6 remove reference to deprecated rpcd acl config option 2020-05-03 15:18:00 +02:00
Amin Ben Ramdhane
19e3f822e7 bbf: 1.2-2020-05-02 2020-05-02 13:29:42 +02:00
Sukru Senli
87969bddae iop: config: deselect out of scope juci packages 2020-05-02 13:23:21 +02:00
Sukru Senli
1f6dc0d9fb libcgroup: deprecated
procd and LXCs are used for containerization
2020-05-02 12:41:38 +02:00
Sukru Senli
c92d47953e testnet: control broadband led if wan led is not available
WAN and Broadband LED will be handled by ruleng rules when ubus switch events are ready
2020-05-01 15:09:00 +02:00
Sukru Senli
e4221b84f0 netmode: temporary testnet object to query online status 2020-04-29 13:52:43 +02:00
Suru Dissanaike
593da2e6f8 Update genconfig_min.sh 2020-04-28 10:09:26 +02:00
Jakob Olsson
d882e35820 wifilife: firewall.mibd: surpress errors when removing files 2020-04-27 15:44:01 +02:00
Sukru Senli
89e0a6ba35 license correction: endptmngr and libpicoevent 2020-04-27 14:45:05 +02:00
Ronny Nilsson
0c69245845 peripheral_manager: were sometimes built incorrectly with many cores and Broadcom 5.02L.07. 2020-04-27 14:12:47 +02:00
vdutta
a3265ea7f7 uspd: Collate all failure on get method
- 418daea get_safe: don't abort on single path failures
2020-04-27 16:59:17 +05:30
Sukru Senli
155df35229 iop: compile unusued packages as modules only 2020-04-26 17:23:08 +02:00
Sukru Senli
b477f767f3 power-management: moved to broadcom feed as it is broadcom specific 2020-04-26 17:20:03 +02:00
Sukru Senli
883023b588 questd-5.1.4 2020-04-26 15:25:26 +02:00
Amin Ben Ramdhane
96322d2a2c bbf: 1.2-2020-04-26 2020-04-26 13:53:10 +01:00
Omar Kallel
ff72d4e88b bbf: 1.2-2020-04-24 2020-04-24 11:56:31 +01:00
Jakob Olsson
4f5a1ad365 owsd: init.d: let whitelist_interface_as_origin default to 1 2020-04-23 13:32:05 +02:00
Sukru Senli
56f93e1eab voice_client: adapt to led name change 2020-04-23 12:41:08 +02:00
Jakob Olsson
57e2a69575 netmode: remove status method, depend on 'enabled' option 2020-04-23 12:25:18 +02:00
Rahul
c7f037fdd7 bbf: Update mcastmngr to handle mld config
The mcast manager can now configure mld snooping and proxy
2020-04-23 14:41:31 +05:30
Sukru Senli
ea87bfe337 owsd: disable ubus-x by default 2020-04-23 11:11:15 +02:00
Sukru Senli
df93ed2d3c netmode: deprecate config based mode switching 2020-04-23 09:59:21 +02:00
Jakob Olsson
de03c6149c owsd: remove some sections from default cfg 2020-04-23 08:42:18 +02:00
Jakob Olsson
92480328ac owsd: update default configuration 2020-04-22 13:55:48 +02:00
Jakob Olsson
02404d5f22 owsd: only include json-validator.h if flag is given 2020-04-22 12:47:32 +02:00
Jakob Olsson
bd65c9a666 owsd: update for lws-3.1.0, make one vhost per origin 2020-04-22 12:36:40 +02:00
Sukru Senli
ec443bbb91 qosmngr: remove reference to db layer2 option 2020-04-22 11:40:35 +02:00
Ronny Nilsson
0292918ef4 iop: add rsync
It is used by the sysbackup and sysrestore utilities.
2020-04-21 17:06:56 +02:00
Jakob Olsson
947d72ae96 wifilife: firewall.mbid: remove lockfile if script is interrupted 2020-04-21 13:26:41 +02:00
Suru Dissanaike
fb195d9456 IOP: added --opensdk flag, support for cloning using https, and minimalistic genconfig_min 2020-04-20 15:11:09 +02:00
Amin Ben Ramdhane
aa6ff005ea icwmp: 4.0-2020-04-17 2020-04-20 12:11:08 +01:00
Amin Ben Ramdhane
a404289e69 bbf: 1.2-2020-04-20 2020-04-20 12:09:13 +01:00
vdutta
ccb5d3108a uspd: Show fault as per cmwp specification 2020-04-20 15:26:16 +05:30
Sukru Senli
ed23fc33b4 iop: generate_tarballs script fix 2020-04-20 08:21:32 +02:00
Rahul
c1dbba3545 mcastmngr: remove max_groups section from uci
The option max_groups is not really needed in the uci, hence,
removed. Also, max_membership and max_msf are set internally
by mcpd so no need to echo them seperately.
2020-04-20 07:09:18 +05:30
Sukru Senli
ab7cf3e44a questd: 5.1.3 2020-04-19 20:18:11 +02:00
Sukru Senli
2afe82e86b qosmngr: depend on existence of tool 2020-04-19 20:08:59 +02:00
Rahul
cd4733efa9 mcastmngr: Add mcastmngr
The mcastmngr read the uci file and configures the corresponding
multicast daemon accordingly. It is for now doing this for broadcom's
mcpd utility. Here are a few examples of what UCI config gets converted
to what /var/mcpd.conf

Snooping:
config snooping 'msnoop_1'
    option enable '1'
    option proto 'igmp'
    option version '2'
    option robustness '2'
    option aggregation '0'
    option interface 'br-wan100'

root@iopsys:~# cat /var/mcpd.conf
igmp-default-version 2
igmp-robustness-value 2
igmp-max-groups 20
igmp-max-sources 10
igmp-max-members 20
igmp-snooping-enable 1
igmp-proxy-enable 0
igmp-query-interval 125
igmp-query-response-interval 100
igmp-last-member-query-interval 10
igmp-mcast-interfaces  eth5.100
igmp-snooping-interfaces br-wan100

Proxy:
config proxy 'mproxy_1'
    option enable '1'
    option proto 'igmp'
    option version '2'
    option robustness '2'
    option aggregation '0'
    option last_member_query_interval '10'
    option query_interval '120'
    option query_response_interval '100'
    list downstream_interface 'br-lan'
    list upstream_interface 'eth5.1'

root@iopsys:~# cat /var/mcpd.conf
igmp-default-version 2
igmp-robustness-value 2
igmp-max-groups 20
igmp-max-sources 10
igmp-max-members 20
igmp-snooping-enable 2
igmp-proxy-enable 1
igmp-fast-leave 1
igmp-query-interval 120
igmp-query-response-interval 100
igmp-last-member-query-interval 10
igmp-proxy-interfaces  eth5.1
igmp-mcast-interfaces  eth5.1
igmp-snooping-interfaces br-lan
2020-04-19 15:27:38 +05:30
Sukru Senli
123dcd9d87 iop: config cleanup 2020-04-18 21:21:44 +02:00
Sukru Senli
fa2f34ef58 bbf: 1.2-2020-04-17 2020-04-17 14:34:02 +02:00
Sukru Senli
f099a39137 bbf: 1.2-2020-04-16 2020-04-16 18:59:06 +02:00
Sukru Senli
011e469c8a questd: 5.1.2 2020-04-16 12:47:12 +02:00
Suru Dissanaike
f085b5552f PKG_SOURCE_URL should use HTTPS
(cherry picked from commit 70c394db7c42a268de04d20efaf1f54e6c02a15d)
2020-04-16 10:53:32 +02:00
Sukru Senli
434f0f79a5 iop: generate correct wifilife tarball for mediatek 2020-04-15 12:41:43 +02:00
Sukru Senli
59206bb37f bbf:1.2-2020-04-14 2020-04-14 19:15:10 +02:00
Yalu Zhang
b7d7b2a382 Make endptmngr and dectmngr2 stripped in the root filesystem on targets
This can totally save ~9M bytes space.
2020-04-14 14:59:49 +02:00
Sukru Senli
d7564ddf36 questd: 5.1.1 2020-04-14 10:58:34 +02:00
Ronny Nilsson
e2f238a155 busybox: add fractional sleep time.
Sleeping less than 1 second is of great usage in many shell scripts.
2020-04-13 22:36:46 +02:00
Anjan Chanda
0fe4491394 easy-soc-libs: 3.1.6 2020-04-13 19:02:36 +02:00
vdutta
c471e4b465 mapagent: Fix compilation 2020-04-13 19:53:29 +05:30
Anjan Chanda
8436c5e39a mapagent: 2.0.1 - initial version 2020-04-13 13:28:26 +02:00
Anjan Chanda
d4d7cb9ed0 wfadatad: 2.0.1 - standalone daemon and plugin mode 2020-04-13 13:24:51 +02:00
Sukru Senli
a72d39cac8 bbf: 1.2-2020-04-12 2020-04-12 12:19:26 +02:00
Sukru Senli
ccf5343e62 iup: remove package 2020-04-11 20:18:15 +02:00
Sukru Senli
28a125cc5b icwmp: remove obselete README 2020-04-11 20:18:02 +02:00
Yalu Zhang
abc791f516 voice-client: Add cdr_manager.conf.TEMPLATE and fix an error in cdr_syslog.conf.TEMPLATE 2020-04-09 15:51:01 +02:00
Anjan Chanda
e599097a22 mt76xx: fix consumer build due to removed wifi drivers 2020-04-09 12:18:10 +02:00
Rahul
71ee9e3311 qosmngr: introduce enable in queue and shaper section
Introduce enable in the queue and shaper section in qos config, if
disabled, configuration not done for that instance.

Fixed some bugs in the broadcom.sh script.

Note: The broadcom.sh script has not been updated to take into account
the fact that the board 6846 does not have enough queues available.
This script is kept so for the same of flexibility. The number of queues
per port can be controlled from the uci file now which easily available
and configurable.
2020-04-09 14:26:49 +05:30
vdutta
d7936fd7d1 uspd: Align boolean values to uci defaults 2020-04-09 13:54:50 +05:30
vdutta
70fb4a6442 uspd: Multiple fixes
4328f3a delete_object: fix memleak and endless list growing
99ddcf2 {add,del}_object: add "parameterKey" parameter
93155dc Add get_safe method
2020-04-09 11:59:34 +05:30
Sukru Senli
0e21fc2475 bbf: 1.2-2020-04-08 2020-04-09 08:13:51 +02:00
Anjan Chanda
4d5f387738 mt76xx: remove mediatek wifi drivers from iopsys feeds 2020-04-08 14:51:15 +02:00
Rahul
78bab83bed qosmngr: rename the queue section name
rename the queue section name from q<0-4? to queue numbers being per
interface, so it is now for example q<0-7>_eth<0-5>
2020-04-07 20:58:17 +05:30
Rahul
9745a16694 qosmngr: fix default queue config generation
In case there is a valid config in the uci file, the script should
do nothing.
2020-04-07 13:14:35 +05:30
Sukru Senli
158f1d94a6 qosmngr: qos init script is platform unaware 2020-04-07 08:39:05 +02:00
Rahul
bdb29afd54 qosmngr: generating queue config dynamically
Changes done to generate uci config for queue from uci-defaults script
instead of using hard coded values.
2020-04-07 12:02:36 +05:30
Sukru Senli
57d179ed01 bbf: 1.2-2020-04-06 2020-04-06 19:09:00 +02:00
Rohit Topno
2c18313c13 qosmngr: updated UCI file for eth3, eth4 and eth5 2020-04-06 18:49:24 +05:30
Ronny Nilsson
61d80f6cc5 busybox: gzip --fast is sometimes required. 2020-04-06 12:15:23 +02:00
Rohit Topno
5ddc513d5d Changed the way the UCI file is read. now using functions defined in /lib/functions.sh 2020-04-04 18:24:35 +05:30
Sukru Senli
5e4549e413 iop: config: remove snmpd from default config 2020-04-01 23:28:29 +02:00
389 changed files with 24914 additions and 19696 deletions

View File

@@ -24,6 +24,7 @@ PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://dev.iopsys.eu/mediatek/ated.git
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_RELEASE)-$(PKG_SOURCE_VERSION).tar.gz
PKG_MIRROR_HASH:=skip
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)

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

@@ -1,17 +1,18 @@
#
# Copyright (C) 2019 IOPSYS
# Copyright (C) 2021 IOPSYS
#
include $(TOPDIR)/rules.mk
PKG_NAME:=libbbfdm
PKG_VERSION:=1.2-2020-03-29
PKG_VERSION:=3.7.9
PKG_FIXUP:=autoreconf
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/bbf.git
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=231350c496e3cd7cf62b6287c09c1f2834d41488
PKG_SOURCE_VERSION:=3b44e4430ad4ca5735647dd69bc30d0e56218850
PKG_RELEASE=$(PKG_SOURCE_VERSION)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_MIRROR_HASH:=skip
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
@@ -32,7 +33,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 +45,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 +75,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 +93,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

@@ -27,7 +27,7 @@ fill_in_default()
/sbin/uci add system log
/sbin/uci rename system.@log[-1]=crashlog
/sbin/uci set system.crashlog.enable=no
/sbin/uci set system.crashlog.server="crash.inteno.se"
/sbin/uci set system.crashlog.server="crashlog.iopsys.eu"
/sbin/uci commit
}

View File

@@ -20,7 +20,7 @@ fill_in_default()
/sbin/uci add system log
/sbin/uci rename system.@log[-1]=corelog
/sbin/uci set system.corelog.enable=no
/sbin/uci set system.corelog.server="crash.inteno.se"
/sbin/uci set system.corelog.server="corelog.iopsys.eu"
/sbin/uci commit
}

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

50
crun/Makefile Normal file
View File

@@ -0,0 +1,50 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=crun
PKG_VERSION:=0.17
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/containers/crun.git
PKG_SOURCE_VERSION:=0e9229ae34caaebcb86f1fde18de3acaf18c6d9a
PKG_LICENSE:=GPL-2.0
PKG_LICENSE_FILES:=COPYING
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
PKG_INSTALL:=1
PKG_BUILD_PARALLEL:=1
include $(INCLUDE_DIR)/package.mk
define Package/crun
SECTION:=utils
CATEGORY:=Utilities
DEPENDS:=+yajl +argp-standalone +libcap +libseccomp
TITLE:=A fast and low-memory footprint OCI Container Runtime fully written in C
endef
define Package/crun/description
crun conforms to the OCI Container Runtime specifications
endef
TARGET_CFLAGS += -I$(STAGING_DIR)/usr/include
TARGET_LDFLAGS += -largp
MAKE_FLAGS := \
$(TARGET_CONFIGURE_OPTS) \
CFLAGS="$(TARGET_CFLAGS) $(TARGET_CPPFLAGS)" \
LDFLAGS="$(TARGET_LDFLAGS)"
define Build/Configure
cd $(PKG_BUILD_DIR)/ && sh autogen.sh && ./configure
endef
define Package/crun/install
$(INSTALL_DIR) $(1)/usr/bin/
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/local/bin/crun $(1)/usr/bin/
endef
$(eval $(call BuildPackage,crun))

View File

@@ -0,0 +1,217 @@
diff --git a/configure.ac b/configure.ac
index 5e9f2f9..5ed99bd 100644
--- a/configure.ac
+++ b/configure.ac
@@ -52,16 +52,6 @@ AS_IF([test "x$enable_seccomp" != "xno"], [
])
])
-dnl libsystemd
-AC_ARG_ENABLE([systemd],
- AS_HELP_STRING([--disable-systemd], [Ignore systemd and disable support]))
-AS_IF([test "x$enable_systemd" != "xno"], [
- AC_CHECK_HEADERS([systemd/sd-bus.h], [], [AC_MSG_ERROR([*** Missing libsystemd headers])])
- AS_IF([test "$ac_cv_header_systemd_sd_bus_h" = "yes"], [
- AC_SEARCH_LIBS(sd_bus_match_signal_async, [systemd], [AC_DEFINE([HAVE_SYSTEMD], 1, [Define if libsystemd is available])], [AC_MSG_ERROR([*** Failed to find libsystemd])])
- ])
-])
-
dnl ebpf
AC_ARG_ENABLE([bpf],
AS_HELP_STRING([--disable-bpf], [Ignore eBPF and disable support]))
@@ -114,26 +104,6 @@ AS_IF([test "x$enable_criu" != "xno"], [
FOUND_LIBS=$LIBS
LIBS=""
-AC_MSG_CHECKING([for new mount API (fsconfig)])
-AC_COMPILE_IFELSE(
- [AC_LANG_SOURCE([[
- #include <linux/mount.h>
- int cmd = FSCONFIG_CMD_CREATE;
- ]])],
- [AC_MSG_RESULT(yes)
- AC_DEFINE([HAVE_FSCONFIG_CMD_CREATE], 1, [Define if FSCONFIG_CMD_CREATE is available])],
- [AC_MSG_RESULT(no)])
-
-AC_MSG_CHECKING([for seccomp notify API])
-AC_COMPILE_IFELSE(
- [AC_LANG_SOURCE([[
- #include <linux/seccomp.h>
- int cmd = SECCOMP_GET_NOTIF_SIZES;
- ]])],
- [AC_MSG_RESULT(yes)
- AC_DEFINE([HAVE_SECCOMP_GET_NOTIF_SIZES], 1, [Define if SECCOMP_GET_NOTIF_SIZES is available])],
- [AC_MSG_RESULT(no)])
-
AC_DEFINE([LIBCRUN_PUBLIC], [__attribute__((visibility("default"))) extern], [LIBCRUN_PUBLIC])
AC_SUBST([FOUND_LIBS])
AC_SUBST([CRUN_LDFLAGS])
diff --git a/src/libcrun/cgroup.c b/src/libcrun/cgroup.c
index 29c1f7a..77dc441 100644
--- a/src/libcrun/cgroup.c
+++ b/src/libcrun/cgroup.c
@@ -575,23 +575,6 @@ get_file_owner (const char *path, uid_t *uid, gid_t *gid)
struct stat st;
int ret;
-#ifdef HAVE_STATX
- struct statx stx;
-
- ret = statx (AT_FDCWD, path, AT_STATX_DONT_SYNC, STATX_UID | STATX_GID, &stx);
- if (UNLIKELY (ret < 0))
- {
- if (errno == ENOSYS || errno == EINVAL)
- goto fallback;
-
- return ret;
- }
- *uid = stx.stx_uid;
- *gid = stx.stx_gid;
- return ret;
-
-fallback:
-#endif
ret = stat (path, &st);
if (UNLIKELY (ret < 0))
return ret;
diff --git a/src/libcrun/error.h b/src/libcrun/error.h
index aa3f3aa..477a2fe 100644
--- a/src/libcrun/error.h
+++ b/src/libcrun/error.h
@@ -18,9 +18,6 @@
#ifndef ERROR_H
#define ERROR_H
#include <config.h>
-#ifdef HAVE_ERROR_H
-# include <error.h>
-#else
# define error(status, errno, fmt, ...) \
do \
{ \
@@ -35,7 +32,6 @@
exit (status); \
} \
while (0)
-#endif
#include <stdlib.h>
#include <stdio.h>
#include <stdbool.h>
diff --git a/src/libcrun/utils.c b/src/libcrun/utils.c
index cbde9b6..5ef7f5f 100644
--- a/src/libcrun/utils.c
+++ b/src/libcrun/utils.c
@@ -164,22 +164,6 @@ get_file_type_fd (int fd, mode_t *mode)
struct stat st;
int ret;
-#ifdef HAVE_STATX
- struct statx stx;
-
- ret = statx (fd, "", AT_EMPTY_PATH | AT_STATX_DONT_SYNC, STATX_TYPE, &stx);
- if (UNLIKELY (ret < 0))
- {
- if (errno == ENOSYS || errno == EINVAL)
- goto fallback;
-
- return ret;
- }
- *mode = stx.stx_mode;
- return ret;
-
-fallback:
-#endif
ret = fstat (fd, &st);
*mode = st.st_mode;
return ret;
@@ -191,22 +175,6 @@ get_file_type_at (int dirfd, mode_t *mode, bool nofollow, const char *path)
struct stat st;
int ret;
-#ifdef HAVE_STATX
- struct statx stx;
-
- ret = statx (dirfd, path, (nofollow ? AT_SYMLINK_NOFOLLOW : 0) | AT_STATX_DONT_SYNC, STATX_TYPE, &stx);
- if (UNLIKELY (ret < 0))
- {
- if (errno == ENOSYS || errno == EINVAL)
- goto fallback;
-
- return ret;
- }
- *mode = stx.stx_mode;
- return ret;
-
-fallback:
-#endif
ret = fstatat (dirfd, path, &st, nofollow ? AT_SYMLINK_NOFOLLOW : 0);
*mode = st.st_mode;
return ret;
@@ -550,22 +518,7 @@ get_file_size (int fd, off_t *size)
{
struct stat st;
int ret;
-#ifdef HAVE_STATX
- struct statx stx;
-
- ret = statx (fd, "", AT_EMPTY_PATH | AT_SYMLINK_NOFOLLOW | AT_STATX_DONT_SYNC, STATX_SIZE, &stx);
- if (UNLIKELY (ret < 0))
- {
- if (errno == ENOSYS || errno == EINVAL)
- goto fallback;
- return ret;
- }
- *size = stx.stx_size;
-
- return ret;
-fallback:
-#endif
ret = fstat (fd, &st);
*size = st.st_size;
return ret;
@@ -1060,7 +1013,6 @@ run_process (char **args, libcrun_error_t *err)
_exit (EXIT_FAILURE);
}
-#ifndef HAVE_FGETPWENT_R
static unsigned
atou (char **s)
{
@@ -1126,7 +1078,6 @@ fgetpwent_r (FILE *f, struct passwd *pw, char *line, size_t size, struct passwd
errno = rv;
return rv;
}
-#endif
int
set_home_env (uid_t id)
@@ -1690,29 +1641,6 @@ copy_rec_stat_file_at (int dfd, const char *path, mode_t *mode, off_t *size, dev
struct stat st;
int ret;
-#ifdef HAVE_STATX
- struct statx stx;
-
- ret = statx (dfd, path, AT_SYMLINK_NOFOLLOW | AT_STATX_DONT_SYNC,
- STATX_TYPE | STATX_MODE | STATX_SIZE | STATX_UID | STATX_GID, &stx);
- if (UNLIKELY (ret < 0))
- {
- if (errno == ENOSYS || errno == EINVAL)
- goto fallback;
-
- return ret;
- }
-
- *mode = stx.stx_mode;
- *size = stx.stx_size;
- *rdev = makedev (stx.stx_rdev_major, stx.stx_rdev_minor);
- *uid = stx.stx_uid;
- *gid = stx.stx_gid;
-
- return ret;
-
-fallback:
-#endif
ret = fstatat (dfd, path, &st, AT_SYMLINK_NOFOLLOW);
*mode = st.st_mode;

62
dectmngr/Makefile Normal file
View File

@@ -0,0 +1,62 @@
#
# 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.9
LOCAL_DEV=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/dectmngr.git
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=b742ea24a85a67e15270f5d66a5af28f25b653f9
PKG_MIRROR_HASH:=skip
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

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

@@ -0,0 +1,63 @@
#!/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
rm -f /tmp/dect-cmbs.log /tmp/dect-cmbs_Host_log.txt /tmp/dectmngr.log
procd_open_instance
procd_set_param command $PROG -comname ttyH0 -log /tmp/dect-cmbs.log
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,57 +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
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/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,14 +8,15 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=dslmngr
PKG_VERSION:=1.0.0
PKG_VERSION:=1.1.0
LOCAL_DEV=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=fcad1331eb134b5f0cc05526aa897df61fc4fec0
PKG_SOURCE_VERSION:=d17c699c1fc9588303d6da35ac2250903bf17cd8
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/dslmngr.git
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_MIRROR_HASH:=skip
endif
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
@@ -25,9 +26,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
@@ -45,7 +44,7 @@ define Package/dslmngr
SECTION:=utils
CATEGORY:=Utilities
TITLE:=XDSL status and configration utility
DEPENDS:=+libdsl +libuci +libubox +ubus +libpthread +libnl-genl
DEPENDS:=+libdsl +libuci +libubox +ubus +libpthread +libnl-genl +libeasy
endef
define Package/dslmngr/description

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

@@ -4,7 +4,5 @@ uci -q batch <<-EOT
set firewall.easyqos=include
set firewall.easyqos.path=/etc/firewall.easyqos
set firewall.easyqos.reload=1
uci del_list firewall.easyqos._access_w="root"
uci add_list firewall.easyqos._access_w="root"
commit firewall
EOT

110
easy-soc-events/Makefile Executable file
View File

@@ -0,0 +1,110 @@
# All rights reserved.
# See LICENSE for more information.
include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=easy-soc-events
PKG_VERSION:=1.1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=git@dev.iopsys.eu:iopsys/easy-soc-events.git
PKG_SOURCE_VERSION:=5c582b0165b574dc94e4865f82e0bb91fa561754
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_MIRROR_HASH:=skip
PKG_BUILD_DIR:=$(BUILD_DIR)/easy-soc-events-$(PKG_VERSION)
PKG_MAINTAINER:=Anjan Chanda <anjan.chanda@iopsys.eu>
include $(INCLUDE_DIR)/package.mk
-include $(TOPDIR)/.config
ifneq ($(CONFIG_TARGET_iopsys_brcm63xx_arm),)
LINUX_DIR=$(BUILD_DIR)/bcmkernel/bcm963xx/kernel/linux-4.1
LINUX_VERSION := 4.1.52
LINUXINCLUDE=-Iarch/$(LINUX_KARCH)/mach-bcm963xx/include
BCM_BS_PROFILE := $(patsubst "%",%,$(CONFIG_BCM_KERNEL_PROFILE))
FS_DIR := $(BUILD_DIR)/bcmkernel/bcm963xx/targets/$(BCM_BS_PROFILE)/fs
MODULES_SUBDIR:=lib/modules/$(LINUX_VERSION)/extra
TARGET_MODULES_DIR:=/$(MODULES_SUBDIR)
endif
define KernelPackage/easy-soc-events/default
SUBMENU:=Other modules
endef
define KernelPackage/easy-soc-events
$(KernelPackage/easy-soc-events/default)
TITLE:=Helper module for netlink event notification
FILES:=$(PKG_BUILD_DIR)/easyevent.ko
AUTOLOAD:=$(call AutoLoad,11,easyevent)
endef
define KernelPackage/easy-soc-events-test
$(KernelPackage/easy-soc-events/default)
TITLE:=Test module for event notification through easyevent
DEPENDS+=+kmod-easy-soc-events
FILES+=$(PKG_BUILD_DIR)/test/testevent.ko
endef
define KernelPackage/easy-soc-events/description
This is a helper module to generate and pass netlink events from
kernel to user applications.
endef
#NOSTDINC_FLAGS :=
ifdef CONFIG_PACKAGE_kmod-easy-soc-events
PKG_MAKE_FLAGS += CONFIG_EASYEVENT=y
endif
LINUXINCLUDE += \
-I$(LINUX_DIR)/include -I$(LINUX_DIR)/include/$(LINUX_UAPI_DIR) \
-Iarch/$(LINUX_KARCH)/include \
-Iarch/$(LINUX_KARCH)/include/generated \
-Iarch/$(LINUX_KARCH)/include/generated/$(LINUX_UAPI_DIR) \
-I$(LINUX_DIR)/include/generated/uapi \
-Iarch/$(LINUX_KARCH)/include/$(LINUX_UAPI_DIR) \
-include ./include/linux/kconfig.h
define Build/Prepare
$(call Build/Prepare/Default)
endef
define Build/Compile
$(MAKE) $(PKG_JOBS) -C "$(LINUX_DIR)" \
$(KERNEL_MAKE_FLAGS) V=1 \
$(PKG_MAKE_FLAGS) \
NOSTDINC_FLAGS="$(NOSTDINC_FLAGS)" \
LINUXINCLUDE="$(LINUXINCLUDE)" \
SUBDIRS="$(PKG_BUILD_DIR)" \
modules
endef
ifneq ($(CONFIG_TARGET_iopsys_brcm63xx_arm),)
define KernelPackage/easy-soc-events/install-extra
cp $(PKG_BUILD_DIR)/easyevent.ko $(FS_DIR)/lib/modules/$(LINUX_VERSION)/extra
endef
endif
define KernelPackage/easy-soc-events/install
$(call KernelPackage/easy-soc-events/install-extra)
endef
define Build/InstallDev
$(INSTALL_DIR) $(STAGING_DIR)/usr/include
#$(INSTALL_DIR) $(STAGING_DIR)/usr/include/linux
#$(CP) $(PKG_BUILD_DIR)/easysoc-event.h $(STAGING_DIR)/usr/include/linux/
#$(CP) $(PKG_BUILD_DIR)/easysoc-event.h $(LINUX_DIR)/include/linux/
$(CP) $(PKG_BUILD_DIR)/easyevent.h $(STAGING_DIR)/usr/include/
$(CP) $(PKG_BUILD_DIR)/wifievent.h $(STAGING_DIR)/usr/include/
$(CP) $(PKG_BUILD_DIR)/easyevent.h $(LINUX_DIR)/include/generated/uapi
$(CP) $(PKG_BUILD_DIR)/wifievent.h $(LINUX_DIR)/include/generated/uapi
endef
$(eval $(call KernelPackage,easy-soc-events-test))
$(eval $(call KernelPackage,easy-soc-events))

View File

@@ -1,23 +1,5 @@
if (PACKAGE_libwifi || PACKAGE_libdsl || PACKAGE_libethernet)
menu "configurations"
# libeasy configuration
config IOP_LLA_LIBS_DEBUG
bool "Enable debugging support"
config LIBWIFI_USE_CTRL_IFACE
bool "Use UNIX sockets"
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,16 +7,17 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=easy-soc-libs
PKG_VERSION:=3.1.5
PKG_VERSION:=6.1.89
PKG_RELEASE:=1
LOCAL_DEV=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=794dbaeb2f6ff3070ba3cbae71e754ee93d03606
PKG_SOURCE_VERSION:=509c57cdcbabcc819932e673718c1a305bf32009
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/easy-soc-libs.git
PKG_MAINTAINER:=Anjan Chanda <anjan.chanda@iopsys.eu>
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)_$(PKG_SOURCE_VERSION).tar.xz
PKG_MIRROR_HASH:=skip
endif
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
@@ -29,43 +30,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+=+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 -DCONFIG_BCM963138 \
-I$(STAGING_DIR)/usr/include/bcm963xx/bcmdrivers/opensource/include/bcm963xx
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
@@ -75,27 +51,35 @@ else ifeq ($(CONFIG_TARGET_iopsys_linksys),y)
else ifeq ($(CONFIG_TARGET_intel_mips),y)
TARGET_PLATFORM=INTEL
TARGET_CFLAGS +=-DIOPSYS_INTEL
else ifeq ($(CONFIG_TARGET_iopsys_x86),y)
TARGET_PLATFORM=TEST
TARGET_CFLAGS +=-DIOPSYS_TEST
else ifeq ($(CONFIG_TARGET_iopsys_armvirt),y)
TARGET_PLATFORM=TEST
TARGET_CFLAGS +=-DIOPSYS_TEST
else
$(info Unexpected CONFIG_TARGET)
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
ifeq ($(CONFIG_LIBWIFI_USE_CTRL_IFACE),y)
TARGET_CFLAGS +=-DLIBWIFI_USE_CTRL_IFACE
endif
TARGET_CFLAGS += \
-I$(STAGING_DIR)/usr/include \
@@ -115,78 +99,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

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

@@ -0,0 +1,28 @@
define Package/libeasy
$(call Package/easy-soc-libs)
TITLE:= Common helper functions library (libeasy)
DEPENDS+=+libnl +libnl-route
endef
define Package/libeasy/config
source "$(SOURCE)/Config.in"
endef
define Build/InstallDev/libeasy
$(INSTALL_DIR) $(1)/usr/include/easy
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_BUILD_DIR)/libeasy/easy.h $(1)/usr/include/easy/
$(CP) $(PKG_BUILD_DIR)/libeasy/event.h $(1)/usr/include/easy/
$(CP) $(PKG_BUILD_DIR)/libeasy/utils.h $(1)/usr/include/easy/
$(CP) $(PKG_BUILD_DIR)/libeasy/if_utils.h $(1)/usr/include/easy/
$(CP) $(PKG_BUILD_DIR)/libeasy/debug.h $(1)/usr/include/easy/
$(CP) $(PKG_BUILD_DIR)/libeasy/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,30 +7,41 @@
include $(TOPDIR)/rules.mk
PKG_RELEASE:=1
PKG_VERSION:=0.2
PKG_SOURCE_VERSION:=156c3f01d6e48d4cc2ffdcb1eb38ff7656478dd0
PKG_LICENSE:=GPLv2
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
else
PKG_SOURCE_URL:=git@dev.iopsys.eu:iopsys/endptmngr
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/endptmngr.git
PKG_SOURCE_PROTO:=git
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_NAME:=endptmngr
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_MIRROR_HASH:=skip
endif
RSTRIP:=true
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 +54,7 @@ define Package/endptmngr
CATEGORY:=Utilities
TITLE:=Brcmslic
URL:=
DEPENDS:= +libubox +ubus +libpicoevent +bcmkernel @TARGET_HAS_VOICE
DEPENDS:= +libubox +ubus +libpicoevent +uci +bcmkernel @TARGET_HAS_VOICE @BCM_VOICE
endef
define Package/endptmngr/description

46
ethmngr/Makefile Normal file
View File

@@ -0,0 +1,46 @@
#
# Copyright (C) 2020 Iopsys
#
include $(TOPDIR)/rules.mk
PKG_NAME:=ethmngr
PKG_VERSION:=2.0.1
PKG_SOURCE_PROTO:=git
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
PKG_MIRROR_HASH:=skip
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
PKG_LICENSE:=GPL-2.0-only
PKG_LICENSE_FILES:=LICENSE
include $(INCLUDE_DIR)/package.mk
define Package/ethmngr
SECTION:=utils
CATEGORY:=Utilities
TITLE:=Ethernet status and configration utility
DEPENDS:=+libethernet +libuci +libubox +ubus +libpthread +libnl-genl
endef
define Package/ethmngr/description
This package can be used to configure and provide status about
the ethernet interfaces and ports through UBUS.
It uses APIs from the libethernet.so library.
endef
TARGET_CFLAGS += \
-I$(STAGING_DIR)/usr/include \
-I$(STAGING_DIR)/usr/include/libnl3 \
-D_GNU_SOURCE
define Package/ethmngr/install
$(INSTALL_DIR) $(1)/etc/init.d $(1)/usr/sbin
$(INSTALL_BIN) ./files/ethmngr.init $(1)/etc/init.d/ethmngr
$(INSTALL_BIN) $(PKG_BUILD_DIR)/ethmngr $(1)/usr/sbin/
endef
$(eval $(call BuildPackage,ethmngr))

View File

@@ -4,12 +4,11 @@ START=95
STOP=10
USE_PROCD=1
PROG=/usr/sbin/wifimngr
PROG=/usr/sbin/ethmngr
start_service() {
procd_open_instance
procd_set_param command ${PROG}
# procd_set_param env IOP_LLA_LIBS_DEBUG=3 #for debugging only
procd_set_param respawn
procd_close_instance
}

View File

@@ -1,54 +0,0 @@
#
# Copyright (C) 2016 Nikil Mehta <nikil.mehta@gmail.com>
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
PKG_NAME:=fping
PKG_VERSION:=4.0
PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://fping.org/dist/
PKG_HASH:=67eb4152b98ad34f99d2eec4e1098a0bb52caf13c0c89cd147349d08190fe8ce
PKG_MAINTAINER:=Nikil Mehta <nikil.mehta@gmail.com>
PKG_LICENSE:=BSD-4-Clause
PKG_LICENSE_FILES:=COPYING
PKG_INSTALL:=1
include $(INCLUDE_DIR)/package.mk
define Package/fping
SECTION:=net
CATEGORY:=Network
TITLE:=sends ICMP ECHO_REQUEST packets to network hosts
URL:=http://fping.org/
endef
define Package/fping/description
fping is a ping like program which uses the Internet Control Message Protocol
(ICMP) echo request to determine if a target host is responding. fping
differs from ping in that you can specify any number of targets on the command
line, or specify a file containing the lists of targets to ping. Instead of
sending to one target until it times out or replies, fping will send out a
ping packet and move on to the next target in a round-robin fashion.
endef
CONFIGURE_ARGS+= \
--enable-ipv4 \
--enable-ipv6
TARGET_CFLAGS += -std=gnu99
define Package/fping/install
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/fping $(1)/usr/bin/
endef
$(eval $(call BuildPackage,fping))

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,46 +0,0 @@
#
# Copyright (C) 2019 iopsys Software Solutions AB
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
PKG_NAME:=icgroupd
PKG_VERSION:=1.0
PKG_RELEASE:=0
PKG_LICENSE:=GPL-2.0
PKG_LICENSE_FILES:=
PKG_MAINTAINER:=Inteno Broadband AB
include $(INCLUDE_DIR)/package.mk
define Package/icgroupd
SECTION:=base
CATEGORY:=Base system
TITLE:=Inteno cgroup daemon
DEPENDS:=+uci +busybox
endef
define Package/icgroupd/description
This package contains Intenos cgroup daemon and associated
configuration and startup scripts.
endef
define Build/Compile
true
endef
define Package/icgroupd/install
$(INSTALL_DIR) $(1)/sbin $(1)/etc/init.d $(1)/etc/config
$(INSTALL_CONF) ./files/cgroups.config $(1)/etc/config/cgroups
$(INSTALL_BIN) ./files/cgroups.init $(1)/etc/init.d/cgroups
$(INSTALL_BIN) ./files/cgroupd $(1)/sbin/
endef
$(eval $(call BuildPackage,icgroupd))

View File

@@ -1,76 +0,0 @@
#!/bin/sh
CGBASEDIR=$1
CGCONFIG=$2
[ -n "$CGBASEDIR" -a -n "$CGCONFIG" ] || exit 1
[ -r /lib/functions.sh ] || exit 1
. /lib/functions.sh
CGPROCMAP=/tmp/cgprocmap
CGPERIOD=3s
DBGLOG=/tmp/cgroupd.log
DEBUG=0
add_to_procmap () {
local name_grp=$1
local name grp
name=$(echo $name_grp |awk -F= '{print $1}')
grp=$(echo $name_grp |awk -F= '{print $2}')
echo "($name) $grp" >> $CGPROCMAP
}
# Read configuration file and create process:group look-up table
# in /tmp file
read_config () {
local enab
config_load $CGCONFIG
config_get enab cgroups enabled "1"
[ $enab -eq 0 ] && exit 1
config_get CGDEFGROUP cgroups defgroup "_undef_"
[ "$CGDEFGROUP" == "_undef_" ] && exit 1
[ "$DEBUG" == "1" ] && echo "default $CGDEFGROUP" >> $DBGLOG
echo -n '' > $CGPROCMAP
config_list_foreach procmap procmap add_to_procmap
[ "$DEBUG" == "1" ] && cat $CGPROCMAP >> $DBGLOG
}
# Move all process except init from cgroup root to cgroups according
# to /tmp look-up table
move_wild_procs () {
local wild_procs=$(cat $CGBASEDIR/cgroup.procs)
local pid name grp
for pid in $wild_procs; do
[ $pid -eq 1 ] && continue
if [ -d /proc/$pid ]; then
name=$(awk '{print $2}' /proc/$pid/stat)
grp=$(awk "\$1==\"$name\" {print \$2}" $CGPROCMAP)
[ "$grp" == "." ] && continue
[ -n "$grp" ] || grp=$CGDEFGROUP
[ "$DEBUG" == "1" ] && \
echo "Moving proc $pid $name to $grp" >> $DBGLOG
echo $pid > $CGBASEDIR/$grp/cgroup.procs
fi
done
}
[ "$DEBUG" == "1" ] && echo "$0 started $(date)" >> $DBGLOG
read_config
while true; do
move_wild_procs
sleep $CGPERIOD
done

View File

@@ -1,48 +0,0 @@
config cgroups cgroups
option enabled 1
option defgroup iopsys/normal
config cgroup _root_
# list option cpu.rt_runtime_us=50000
list option memory.move_charge_at_immigrate=1
config cgroup iopsys
list option cpu.shares=4096
# list option cpu.rt_runtime_us=40000
list option memory.limit_in_bytes=-1
list option memory.move_charge_at_immigrate=1
config cgroup iopsys_normal
list option cpu.shares=1024
# list option cpu.rt_runtime_us=10000
list option memory.limit_in_bytes=-1
list option memory.move_charge_at_immigrate=1
config cgroup iopsys_high
list option cpu.shares=4096
# list option cpu.rt_runtime_us=30000
list option memory.limit_in_bytes=-1
list option memory.move_charge_at_immigrate=1
config cgroup 3prt
list option cpu.shares=1024
# list option cpu.rt_runtime_us=10000
list option memory.limit_in_bytes=75M
list option memory.move_charge_at_immigrate=1
config cgroup 3prt_normal
list option cpu.shares=1024
# list option cpu.rt_runtime_us=2500
list option memory.limit_in_bytes=75M
list option memory.move_charge_at_immigrate=1
config cgroup 3prt_high
list option cpu.shares=4096
# list option cpu.rt_runtime_us=7500
list option memory.limit_in_bytes=75M
list option memory.move_charge_at_immigrate=1
config procmap procmap
list procmap kthreadd=.
list procmap minidlna=3prt/normal

View File

@@ -1,93 +0,0 @@
#!/bin/sh /etc/rc.common
START=01
USE_PROCD=1
PROCD_DEBUG=1
NAME=cgroupd
CGBASEDIR=/sys/fs/cgroup
CGCONFIG="cgroups"
DBGLOG=/tmp/cginit.log
DEBUG=0
cgroupinit_set_knob_value () {
local knob_val=$1
local dir=$2
local knob val
knob=$(echo $knob_val |awk -F= '{print $1}')
val=$(echo $knob_val |awk -F= '{print $2}')
/bin/echo $val > $CGBASEDIR/$dir/$knob
[ "$DEBUG" == "1" ] && \
echo "/bin/echo $val > $CGBASEDIR/$dir/$knob (ret=$?)" >> $DBGLOG
}
cgroupinit_create_group () {
local cgrp=$1
local dir
[ "$DEBUG" == "1" ] && echo "Create group $cgrp:" >> $DBGLOG
if [ "$cgrp" == "_root_" ]; then
dir=.
else
dir=$(echo $cgrp |tr '_' '/')
if [ ! -d $CGBASEDIR/$dir ]; then
mkdir $CGBASEDIR/$dir
[ "$DEBUG" == "1" ] && \
echo "mkdir $CGBASEDIR/$dir (ret=$?)" >> $DBGLOG
fi
fi
config_list_foreach $cgrp option cgroupinit_set_knob_value $dir
}
cgroupinit_configure_cgroups () {
local enab defgrp
[ "$DEBUG" == "1" ] && echo "$0 started $(date)" >> $DBGLOG
config_load $CGCONFIG
config_get enab cgroups enabled "1"
[ $enab -eq 0 ] && return 1
config_get defgrp cgroups defgroup "_undef_"
[ "$defgrp" == "_undef_" ] && return 1
if ! grep -q " $CGBASEDIR cgroup " /proc/mounts; then
mount -t cgroup -o nodev,noexec,nosuid cgroup $CGBASEDIR
[ $? -eq 0 ] || return 1
fi
config_foreach cgroupinit_create_group cgroup
return 0
}
start_service () {
cgroupinit_configure_cgroups
[ $? -eq 0 ] || return
procd_open_instance
procd_set_param command /sbin/cgroupd $CGBASEDIR $CGCONFIG
procd_set_param respawn
procd_close_instance
}
stop_service () {
local cgdir procs prc
for cgdir in $(find $CGBASEDIR -type d -mindepth 1 -depth); do
procs=$(cat $cgdir/cgroup.procs)
for prc in $procs; do
echo $prc > $CGBASEDIR/cgroup.procs
done
rmdir $cgdir
done
}
service_triggers() {
procd_add_reload_trigger $CGCONFIG
}

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,13 +8,14 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=icwmp
PKG_VERSION:=4.0-2020-03-25
PKG_VERSION:=6.5.4-2021-03-23
PKG_FIXUP:=autoreconf
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/icwmp.git
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=087ba5b857573a312d34c675a6fd5f88c0e46912
PKG_SOURCE_VERSION:=5a4e7a0cfb2cdc2576f1c93388760691cec8ee85
PKG_RELEASE=$(PKG_SOURCE_VERSION)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_MIRROR_HASH:=skip
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_LICENSE:=GPLv2
@@ -26,80 +27,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
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 +59,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 +75,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 +96,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 +110,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 +119,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 +128,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

@@ -1,136 +0,0 @@
1)Build
Requirements<74>:
librairies:
- libuci.so
- libexpat.so
- libcurl.so
- libpthread.so
- libopenssl.so
- libz.so
- libcrypto.so
the librairies should be present in the "staging_dir/target-i386_uClibc-0.9.30.1/usr/lib/" or "staging_dir/toolchain-mips_gcc-4.3.3+cs_uClibc-0.9.30.1/usr/lib"
header files and folders:
- expat.h
- expat_external.h
- uci.h
- uci_config.h
- zlib.h
- curl folder
- openssl folder
the header files and folders should be present in the staging_dir/target-i386_uClibc-0.9.30.1/usr/include/ or staging_dir/toolchain-i386_gcc-4.1.2_uClibc-0.9.30.1/usr/include/
if a librairie doesn't exist:
a- run make menuconfig and select the librarie
b- build the librarie package
2) Build
this software is composed of 3 packages:
- icwmp package: contains icwmpd daemon
- cwmp lib package: contains cwmplib and contains cwmp_value_change binary. They could be used by other user space applications in order to notify the icwmp daemon when paramter changes
- cwmp kernel package: contains cwmp kernel module. This module could be used by other kernel modules to notify the icwmpd daemon when kernel parameter changes
The three packages should be selected in the make menu config in order to get the three packages compiled.
To compile the three packages: $ make package/cwmpd/compile
3) OpenWRT settings
in the OpenWRT, Add the following lines in the /usr/share/udhcpc/default.script file:
uci_set_state provisioning iup tr069url "$url"
uci_set_state provisioning iup provisioningcode "$provisioningcode"
4) Run
Requirements:
- libuci package should be installed
- libexpat package should be installed
- libcurl package should be installed
- libpthread package should be installed
- libopenssl package should be installed
- libz package should be installed
- libcrypto package should be installed
Configure the acs url in the /etc/config/icwmp
and then start the cwmpd service: /etc/init.d/icwmpd start
for the help: /etc/init.d/icwmpd
5) Value Change
5.1) value change for user space applications (using the libcwmp)
Before using the libcwmp, we should check that the libcwmp package is selected in "make menu config". and we should check that the package is compiled.
The libcwmp should be installed uin the OpenWRT firmware
example of using libcwmp
in myapplication.c
#...
#include <cwmp_lib.h>
#...
int anyfunction ()
{
.....
/* parameter change here */
/* so we inform the icwmp: */
lib_api_cwmp_value_change_call (3, "InternetGatewayDevice.LANDevice.{i}.LANHostConfigManagement.IPInterface.{i}.IPInterfaceIPAddress","lan2","3");
.....
/*
Description of lib_api_cwmp_value_change_call input parameters
parameter 1 : is the number of input string in the function lib_api_cwmp_value_change_call
parameter 2 : is the parameter path
parameter 3 : is the first correspondence related to the first indice
parameter 4 : is the second correspondence related to the second indice
.
.
.
parameter n : is the (n-2) correspondence related to the (n-2) indice
*/
}
5.2) value change for user space applications (using the cwmp_value_change CLI)
Before using the libcwmp, we should check that the libcwmp package is selected in "make menu config". and we should check that the package is compiled.
The libcwmp should be installed uin the OpenWRT firmware
in OpenWRT:
root@OpenWrt:~# cwmp_value_change InternetGatewayDevice.LANDevice.{i}.LANHostConfigManagement.IPInterface.{i}.IPInterfaceIPAddress "lan2" "3"
in this case the command will force cwmp client to send a notification to the ACS (if and only if the parameter path as configured as active or as passive parameter using the setAttributeParameter method)
5.3) value change for kernel space modules
Before using the cwmp kernel module for value change, we should check that the kernel module package is selected in "make menu config". and we should check that the package is compiled.
The kernel module should be installed uin the OpenWRT firmware and should be insert before all other kernel modules
example of using cwmp kernel module
in mykernelmodule.c
#...
#include <linux/cwmp_kernel.h>
#...
int anykernelfunction ()
{
.....
/* parameter change here */
/* so we inform the cwmp: */
kernel_api_cwmp_value_change_call (3, "InternetGatewayDevice.LANDevice.{i}.LANHostConfigManagement.IPInterface.{i}.IPInterfaceIPAddress","lan2","3");
.....
/*
Description of lib_api_cwmp_value_change_call input parameters
parameter 1 : is the number of input string in the function lib_api_cwmp_value_change_call
parameter 2 : is the parameter path
parameter 3 : is the first correspondence related to the first indice
parameter 4 : is the second correspondence related to the second indice
.
.
.
parameter n : is the (n-2) correspondence related to the (n-2) indice
*/
}

View File

@@ -0,0 +1,47 @@
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 '0001-01-01T00:00:00Z'
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 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

@@ -2,13 +2,9 @@ if PACKAGE_ieee1905 || PACKAGE_lib1905al
menu "developer/debug options"
config IEEE1905_SEND_EMPTY_TLVS
bool "Allow sending of empty TLVs"
default y
config IEEE1905_FIX_BROKEN_TLVS
bool "Allow reception of missing TLVs"
default y
config IEEE1905_MAP_COMPLETE_NETWORK
bool "Create network topology for complete network"
default n
config IEEE1905_SPEED_UP_DISCOVERY
bool "Speed up discovery of an AL in network"
@@ -25,14 +21,9 @@ menu "developer/debug options"
config IEEE1905_ALME_OVER_UBUS
bool "ALME methods supported over ubus"
config IEEE1905_ALME_OVER_TCP
bool "ALME server over TCP port"
#config IEEE1905_ALME_OVER_TCP
# bool "ALME server over TCP port"
endchoice
config IEEE1905_REGISTER_EXTENSION_BBF
bool "Enable BBF extensions"
default n
endmenu
endif

View File

@@ -5,14 +5,15 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=ieee1905
PKG_VERSION:=2.0.15
PKG_VERSION:=2.1.42
LOCAL_DEV:=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=83e44c1cfcfec3a52a9ae61e9d954885caddb331
PKG_SOURCE_VERSION:=6d07dbd36a195f916d2008179a819355ce79bb57
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/ieee1905.git
PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_VERSION).tar.gz
PKG_MIRROR_HASH:=skip
endif
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
@@ -23,7 +24,7 @@ define Package/ieee1905
SECTION:=utils
CATEGORY:=Utilities
TITLE:=IEEE1905 daemon
DEPENDS:= +libuci +libjson-c +lib1905al +lib1905ubus
DEPENDS:= +libuci +libjson-c +libieee1905 +ubox +libpcap +libopenssl +libwifi +libeasy
endef
define Package/ieee1905/config
@@ -34,18 +35,17 @@ define Package/ieee1905/description
IEEE1905 stack with extended functionalities.
endef
define Package/lib1905al
define Package/libieee1905
SECTION:=utils
CATEGORY:=Utilities
TITLE:=IEEE1905 stack library
DEPENDS:= +libpcap +libopenssl +libwifi +libeasy +libuci
TITLE:=IEEE1905 cmdu tlv utility library
endef
define Package/lib1905ubus
define Package/libwsc
SECTION:=utils
CATEGORY:=Utilities
TITLE:=IEEE1905 ubus library
DEPENDS:= +ubox +libjson-c
TITLE:=Wifi Simple Configuration building and processing library
DEPENDS= +libopenssl +libuci +libubus
endef
define Package/lib1905hle
@@ -54,6 +54,9 @@ define Package/lib1905hle
TITLE:=IEEE1905 hle stack library
endef
LIBS := \
$(if $(CONFIG_PACKAGE_libwsc),libwsc.so)
TARGET_CFLAGS += \
-I$(STAGING_DIR)/usr/include \
-D_GNU_SOURCE \
@@ -61,12 +64,9 @@ TARGET_CFLAGS += \
-Wall \
-Wextra
ifeq ($(CONFIG_IEEE1905_SEND_EMPTY_TLVS),y)
TARGET_CFLAGS += -DSEND_EMPTY_TLVS
endif
ifeq ($(CONFIG_IEEE1905_FIX_BROKEN_TLVS),y)
TARGET_CFLAGS += -DFIX_BROKEN_TLVS
endif
MAKE_FLAGS += \
LIBS="$(LIBS)"
ifeq ($(CONFIG_IEEE1905_SPEED_UP_DISCOVERY),y)
TARGET_CFLAGS += -DSPEED_UP_DISCOVERY
endif
@@ -79,8 +79,8 @@ endif
ifeq ($(CONFIG_IEEE1905_ALME_OVER_UBUS),y)
TARGET_CFLAGS += -DALME_OVER_UBUS
endif
ifeq ($(CONFIG_IEEE1905_REGISTER_EXTENSION_BBF),y)
TARGET_CFLAGS += -DREGISTER_EXTENSION_BBF
ifeq ($(CONFIG_IEEE1905_MAP_COMPLETE_NETWORK),y)
TARGET_CFLAGS += -DIEEE1905_MAP_COMPLETE_NETWORK
endif
ifeq ($(LOCAL_DEV),1)
@@ -93,6 +93,7 @@ define Package/ieee1905/install
$(INSTALL_DIR) $(1)/etc
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_DIR) $(1)/etc/config
$(INSTALL_DIR) $(1)/etc/ieee1905
$(INSTALL_DIR) $(1)/usr/
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) ./files/etc/init.d/ieee1905 $(1)/etc/init.d/ieee1905
@@ -105,31 +106,37 @@ define Package/lib1905hle/install
$(CP) $(PKG_BUILD_DIR)/lib/lib1905hle.so $(1)/usr/lib/lib1905hle.so
endef
define Package/lib1905al/install
define Package/libieee1905/install
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_BUILD_DIR)/lib/lib1905al.so $(1)/usr/lib/lib1905al.so
$(CP) $(PKG_BUILD_DIR)/lib/libieee1905.so $(1)/usr/lib/libieee1905.so
endef
define Package/lib1905ubus/install
define Package/libwsc/install
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_BUILD_DIR)/lib/lib1905ubus.so $(1)/usr/lib/lib1905ubus.so
$(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/lib1905al
$(INSTALL_DIR) $(1)/usr/include/ieee1905
$(INSTALL_DIR) $(1)/usr/include/ieee1905
$(INSTALL_DIR) $(1)/usr/include/lib1905hle
$(INSTALL_DIR) $(1)/usr/include/lib1905ubus
$(CP) $(PKG_BUILD_DIR)/lib1905al/include/*.h $(1)/usr/include/lib1905al/
$(CP) $(PKG_BUILD_DIR)/lib1905ubus/include/*.h $(1)/usr/include/lib1905ubus/
$(CP) $(PKG_BUILD_DIR)/include/*.h $(1)/usr/include/ieee1905/
$(CP) $(PKG_BUILD_DIR)/libieee1905/include/*.h $(1)/usr/include/ieee1905/
$(CP) $(PKG_BUILD_DIR)/lib1905hle/include/*.h $(1)/usr/include/lib1905hle/
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_BUILD_DIR)/lib/lib1905al.so $(1)/usr/lib
$(CP) $(PKG_BUILD_DIR)/lib/lib1905ubus.so $(1)/usr/lib
$(CP) $(PKG_BUILD_DIR)/lib/lib1905hle.so $(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,lib1905al))
$(eval $(call BuildPackage,lib1905ubus))
$(eval $(call BuildPackage,libieee1905))
$(eval $(call BuildPackage,lib1905hle))
$(eval $(call BuildPackage,libwsc))
$(eval $(call BuildPackage,ieee1905))

View File

@@ -1,20 +1,17 @@
config ieee1905
config ieee1905 'ieee1905'
option enabled '1'
option debug true
config al
option enabled '1'
option basemacint 'wan'
# option almac ''
option mapall true
# option registrar true
option debug_level 2
# option alme_port 8888
option cmdu_event true
option discovery_timer 60
option map_plugin false
option macaddress 'auto'
option registrar 0
option cmdu_event 1
option map_plugin 1
config security 'security'
list method 'PBC'
config al-iface
option enabled '0'
option enabled 1
option ifname 'br-lan'
option media 'bridge'

View File

@@ -1,12 +1,10 @@
#!/bin/sh /etc/rc.common
START=99
STOP=10
START=96
STOP=22
USE_PROCD=1
PROG=/usr/sbin/ieee1905d
AL_CONF=/tmp/ieee1905.config
INTERFACE=""
validate_ieee1905_section()
{
@@ -15,247 +13,6 @@ validate_ieee1905_section()
'enabled:bool:false'
}
get_device_name() {
local device
# Get wan L3 interface
ubus list |grep -iq network.interface.${1}
if [ "$?" -eq 0 ]; then
json_load "$(ubus -t 2 call network.interface.${1} status)"
json_get_var device device
echo ${device}
fi
}
get_interface_mac() {
local l3 basemac
l3=$(get_device_name ${1})
if [ -n ${l3} ]; then
json_load "$(ubus -t 2 call network.device status "{\"name\":\"${l3}\"}")"
json_get_var basemac macaddr
fi
local first=0x$(echo $basemac |cut -d : -f 1)
local rest=$(echo $basemac |cut -d : -f 2-)
# Set local bit
first=$((first|2))
first=$(printf "%02x" $first)
basemac="${first}:${rest}"
echo ${basemac}
}
validate_al_iface_section()
{
uci_validate_section ieee1905 al-iface "${1}" \
'enabled:bool:false' \
'ifname:string:br-lan' \
'media:string:bridge' \
'manufacturer_name:string' \
'model_name:string' \
'model_number:string:000000' \
'device_name:string' \
'serial_number:string'
}
get_ifindex()
{
local ifname=${1}
local ifindex=$(cat /sys/class/net/${ifname}/upper_*/ifindex 2>/dev/null)
if [ -z ${ifindex} ]; then
ifindex=$(cat /sys/class/net/${ifname}/ifindex)
fi
echo ${ifindex}
}
get_wlan_passkey()
{
local ifname=${1}
local pass=""
local count=0
while true
do
local devname=$(uci get wireless.@wifi-iface[${count}].ifname 2>/dev/null)
if [ $? -ne 0 ]; then
break;
fi
if [ "${devname}"=="${ifname}" ]; then
pass=$(uci get wireless.@wifi-iface[${count}].key 2>/dev/null)
break;
fi
count=$((count+1))
done
echo ${pass}
}
configure_interface()
{
local ifname media enabled manufacturer_name model_name model_number device_name serial_number
local uuid ifindex
validate_al_iface_section ${1} || {
echo "Validation of al-iface sec failed"
exit 1;
}
if [ ${enabled} -eq 0 ]; then
return;
fi
# Only continue if interface exists
ifconfig ${ifname} 2>/dev/null 1>/dev/null
if [ $? -ne 0 ]; then
return;
fi
if [ -z ${INTERFACE} ]; then
INTERFACE=${ifname}
else
INTERFACE="${INTERFACE},${ifname}"
fi
if [ -z ${manufacturer_name} ]; then
manufacturer_name=$(db get hw.board.iopVerCustomer)
fi
if [ -z ${model_name} ]; then
model_name=$(db get hw.board.model_name)
fi
if [ -z ${device_name} ]; then
device_name=$(db get hw.board.model_name)
fi
if [ -z ${serial_number} ]; then
serial_number=$(db get hw.board.serial_number)
fi
if [ "${media}"=="bridge" ]; then
echo "Get interfaces from bridge"
local lower=$(ls -1 /sys/class/net/${ifname}/|grep lower_|tr '_' ' '|awk '{printf $2" "}')
for intf in ${lower}
do
ubus list wifi.ap.${intf} 2>/dev/null 1>/dev/null
if [ $? -eq 0 ]; then
INTERFACE="${INTERFACE},${intf}"
uuid=$(cat /proc/sys/kernel/random/uuid)
ifindex=$(get_ifindex ${intf})
local key=$(get_wlan_passkey ${ifname})
json_add_object
json_add_string ifname ${intf}
json_add_string media "wifi"
json_add_string network_key ${key}
json_add_string manufacturer_name ${manufacturer_name}
json_add_string model_name ${model_name}
json_add_string model_number ${model_number}
json_add_string device_name ${device_name}
json_add_string serial_number ${serial_number}
json_add_string uuid ${uuid}
json_add_int ifindex ${ifindex}
json_close_object
fi
done
fi
uuid=$(cat /proc/sys/kernel/random/uuid)
ifindex=$(get_ifindex ${ifname})
json_add_object
json_add_string ifname ${ifname}
if [ "${media}"=="bridge" ]; then
json_add_string media "eth"
elif [ "${media}"=="wifi" ]; then
local key=$(get_wlan_passkey ${ifname})
json_add_string media "wifi"
json_add_string network_key ${key}
else
json_add_string media ${media}
fi
json_add_string manufacturer_name ${manufacturer_name}
json_add_string model_name ${model_name}
json_add_string model_number ${model_number}
json_add_string device_name ${device_name}
json_add_string serial_number ${serial_number}
json_add_string uuid ${uuid}
json_add_int ifindex ${ifindex}
json_close_object
}
validate_al_section()
{
uci_validate_section ieee1905 meshcomms "${1}" \
'enabled:bool:false' \
'basemacint:string:wan' \
'almac:string' \
'registrar:bool:false' \
'mapall:bool:true' \
'debug_level:uinteger:1' \
'alme_port:port:8888' \
'cmdu_event:bool:true' \
'discovery_timer:uinteger:60' \
'map_plugin:bool:false'
}
configure_al_entity()
{
local enabled almac basemacint mapall debug_level alme_port l3device basemac intf
local registrar cmdu_event discovery_timer map_plugin
validate_al_section ${1} || {
echo "Validation of al section failed"
exit 1;
}
if [ -z ${almac} ]; then
basemac=$(get_interface_mac ${basemacint})
else
basemac=${almac}
fi
local fname cname model cUrl
fname=$(db get hw.board.boardId)
cname=$(db get hw.board.iopVerCustomer)
model=$(db get hw.board.routerModel)
# get ip from lan bridge first
cUrl=$(ifconfig br-lan 2>/dev/null|grep "inet addr:"|tr ':' ' '|awk '{printf $3}')
if [ -z ${cUrl} ]; then
cUrl=$(ifconfig br-wan 2>/dev/null|grep "inet addr:"|tr ':' ' '|awk '{printf $3}')
fi
if [ -z ${cUrl} ]; then
cUrl="http://192.168.1.1"
fi
json_init
# fill the al-iface info
json_add_array al-iface
config_foreach configure_interface al-iface
json_close_array
json_add_object deviceInfo
json_add_string friendly_name ${fname}
json_add_string manufacturer_name ${cname}
json_add_string model ${model}
json_add_string control_url ${cUrl}
json_close_object
json_add_object al
json_add_int enabled ${enabled}
json_add_string mac ${basemac}
json_add_string interfaces ${INTERFACE}
json_add_int map ${mapall}
json_add_int registrar ${registrar}
json_add_int debug_level ${debug_level}
json_add_int alme_port ${alme_port}
json_add_int cmdu_event ${cmdu_event}
json_add_int discovery_timer ${discovery_timer}
json_add_int map_plugin ${map_plugin}
json_close_object
json_dump >${AL_CONF}
sync
}
configure_ieee1905()
{
local enabled debug
@@ -277,25 +34,28 @@ configure_ieee1905()
fi
}
configure_network() {
[ -f ${AL_CONF} ] && rm ${AL_CONF}
configure_network()
{
ebtables -L FORWARD|grep -iqE "1:80:C2:(0)+:(0)+:13.*-j.*DROP"
if [ "$?" -ne 0 ]; then
echo "Applying drop rule to drop pkts forwared by kernel to 1905.1 multicast mac"
ebtables -A FORWARD -d 01:80:c2:00:00:13 -j DROP
fi
}
config_load ieee1905
config_foreach configure_ieee1905 ieee1905
config_foreach configure_al_entity al
service_running() {
ubus -t 2 wait_for wifi
}
start_service() {
[ -d /usr/lib/ieee1905 ] || mkdir -p /usr/lib/ieee1905
procd_open_instance ieee1905
procd_set_param command ${PROG}
configure_ieee1905 "ieee1905"
configure_network
# procd_set_param respawn
procd_set_param respawn
procd_close_instance
}
@@ -308,4 +68,5 @@ service_triggers() {
procd_add_reload_trigger "network"
procd_add_reload_trigger "wireless"
procd_add_reload_trigger "netmode"
procd_add_reload_trigger "ieee1905"
}

View File

@@ -1,55 +0,0 @@
#
# Copyright (C) 2018 iopsys Software Solutions AB
#
include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=ifbt
PKG_VERSION:=0.3
PKG_SOURCE_VERSION:=c9a7db18b15a59b03b756d00a0a630e98d9541c5
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/ifbt.git
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
PKG_LICENSE:=BSD-3-Clause
PKG_LICENSE_FILES:=README
include $(INCLUDE_DIR)/package.mk
ifeq ($(CONFIG_TARGET_iopsys_brcm63xx_mips),y)
TARGET_PLATFORM:=-DIOPSYS_BROADCOM
else ifeq ($(CONFIG_TARGET_iopsys_brcm63xx_arm),y)
TARGET_PLATFORM:=-DIOPSYS_BROADCOM
else ifeq ($(CONFIG_TARGET_iopsys_linksys),y)
TARGET_PLATFORM:=-DIOPSYS_MARVELL
else ifeq ($(CONFIG_TARGET_intel_mips),y)
TARGET_PLATFORM:=-DIOPSYS_INTEL
else ifeq ($(CONFIG_TARGET_iopsys_ramips),y)
TARGET_PLATFORM:=-DIOPSYS_MEDIATEK
else
$(info (UNEXPECTED CONFIG TARGET))
endif
export TARGET_PLATFORM
define Package/ifbt
CATEGORY:=Utilities
DEPENDS:=+libuci +libubox +libubus +libblobmsg-json +libjson-c +libwifi +libjson-c
TITLE:=Fast BSS Transition
endef
define Package/ifbt/description
ifbt is Iopsys application for fast BSS transition
endef
define Package/ifbt/install
$(INSTALL_DIR) $(1)/sbin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/ifbt $(1)/sbin/
endef
$(eval $(call BuildPackage,ifbt))

View File

@@ -14,6 +14,7 @@ PKG_SOURCE_PROTO=git
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/imonitor.git
PKG_SOURCE_VERSION:=532f4900862bcb45d8cd4bf37555fabda81750b6
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_MIRROR_HASH:=skip
PKG_SOURCE_SUBDIR:=${PKG_NAME}-${PKG_VERSION}
PKG_INSTALL:=1
PKG_BUILD_PARALLEL:=1

View File

@@ -9,14 +9,14 @@ include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=inbd
PKG_VERSION:=1.0.0
PKG_VERSION:=1.2.2
PKG_RELEASE:=1
PKG_SOURCE_VERSION:=53ca7f58edb87976b5897ccaf487bb0cbbf39d07
PKG_SOURCE_VERSION:=10f765f3d0fcc226b6ecf0c481598c9e7f76315e
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/inbd
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_RELEASE)-$(PKG_SOURCE_VERSION).tar.gz
PKG_MIRROR_HASH:=skip
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)

View File

@@ -7,21 +7,27 @@ CONFIG_PACKAGE_6in4=y
CONFIG_PACKAGE_6rd=y
CONFIG_PACKAGE_6to4=y
CONFIG_PACKAGE_alsa-lib=y
CONFIG_PACKAGE_at=y
CONFIG_PACKAGE_atftp=m
CONFIG_PACKAGE_atftpd=m
CONFIG_PACKAGE_bulkdata=y
CONFIG_PACKAGE_chat=y
CONFIG_PACKAGE_comgt=y
CONFIG_PACKAGE_comgt-directip=y
CONFIG_PACKAGE_comgt-ncm=y
CONFIG_PACKAGE_crashlog=y
CONFIG_PACKAGE_ddns-scripts=y
CONFIG_PACKAGE_ds-lite=y
CONFIG_PACKAGE_easy-qos=y
CONFIG_PACKAGE_ethtool=y
CONFIG_PACKAGE_gdb=m
CONFIG_PACKAGE_getopt=y
CONFIG_PACKAGE_glib2=y
CONFIG_PACKAGE_icwmp-curl=y
CONFIG_PACKAGE_ifbt=y
CONFIG_PACKAGE_imonitor=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=y
CONFIG_PACKAGE_ip-full=y
@@ -32,48 +38,22 @@ 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-config-backup=y
CONFIG_PACKAGE_juci-ddns=y
CONFIG_PACKAGE_juci-diagnostics=y
CONFIG_PACKAGE_juci-dnsmasq-dhcp=y
CONFIG_PACKAGE_juci-dropbear=y
CONFIG_PACKAGE_juci-easyqos=y
CONFIG_PACKAGE_juci-event=y
CONFIG_PACKAGE_juci-firewall-fw3=y
CONFIG_PACKAGE_juci-icwmp=y
CONFIG_PACKAGE_juci-igmpinfo=y
CONFIG_PACKAGE_juci-minidlna=y
CONFIG_PACKAGE_juci-mod-status=y
CONFIG_PACKAGE_juci-mod-system=y
CONFIG_PACKAGE_juci-mwan3=y
CONFIG_PACKAGE_juci-netmode=y
CONFIG_PACKAGE_juci-network-device=y
CONFIG_PACKAGE_juci-network-dsl=y
CONFIG_PACKAGE_juci-network-netifd=y
CONFIG_PACKAGE_juci-network-port=y
CONFIG_PACKAGE_juci-openvpn=y
CONFIG_PACKAGE_juci-owsd=y
CONFIG_PACKAGE_juci-realtime-graphs=y
CONFIG_PACKAGE_juci-samba=y
CONFIG_PACKAGE_juci-snmpd=y
CONFIG_PACKAGE_juci-sysupgrade=y
CONFIG_PACKAGE_juci-upnp=y
CONFIG_PACKAGE_juci-usb=y
CONFIG_PACKAGE_juci-voice-client=y
CONFIG_PACKAGE_juci-wifilife=y
CONFIG_PACKAGE_juci-wireless=y
CONFIG_PACKAGE_juci-theme-iopsys=y
CONFIG_PACKAGE_kmod-siit=y
CONFIG_PACKAGE_libcgroup-daemon=y
CONFIG_PACKAGE_libcgroup=y
# CONFIG_PACKAGE_libcgroup-utils is not set
CONFIG_PACKAGE_libdaemon=y
CONFIG_PACKAGE_libffmpeg-mini=y
CONFIG_PACKAGE_libgmp=y
CONFIG_PACKAGE_libreadline=y
CONFIG_PACKAGE_loop-detector=m
CONFIG_PACKAGE_minidlna=y
CONFIG_PACKAGE_libreswan=m
CONFIG_PACKAGE_libwifi=y
CONFIG_PACKAGE_lscpu=y
CONFIG_PACKAGE_map=y
CONFIG_PACKAGE_miniupnpd=y
CONFIG_PACKAGE_mwan3=y
CONFIG_PACKAGE_nand-utils=y
@@ -88,9 +68,9 @@ CONFIG_PACKAGE_openssl-util=y
CONFIG_OPENSSL_WITH_COMPRESSION=y
CONFIG_PACKAGE_openvpn-easy-rsa=y
CONFIG_PACKAGE_openvpn-openssl=y
CONFIG_PACKAGE_owsd=y
CONFIG_PACKAGE_peripheral_manager=y
CONFIG_PACKAGE_port-management=y
CONFIG_PACKAGE_power-management=y
CONFIG_PACKAGE_ppp-mod-pppoa=y
CONFIG_PACKAGE_ppp-mod-pppoe=y
CONFIG_PACKAGE_ppp-mod-pppol2tp=y
@@ -104,25 +84,22 @@ CONFIG_PACKAGE_rdnssd=y
CONFIG_PACKAGE_relayd=y
CONFIG_PACKAGE_resolveip=y
CONFIG_PACKAGE_rpcd=y
CONFIG_PACKAGE_rpcd-mod-rpcsys=y
CONFIG_PACKAGE_rulengd=y
CONFIG_PACKAGE_samba3=y
CONFIG_PACKAGE_samba3-nmbd=y
CONFIG_PACKAGE_snmpd=y
CONFIG_PACKAGE_strace=y
CONFIG_PACKAGE_swmodd=m
CONFIG_PACKAGE_tc=y
CONFIG_PACKAGE_tcpdump=y
CONFIG_PACKAGE_terminfo=y
CONFIG_PACKAGE_tptest=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_libwifi=y
CONFIG_PACKAGE_wifilife=y
CONFIG_PACKAGE_wifimngr=y
CONFIG_PACKAGE_xl2tpd=y
CONFIG_PACKAGE_zoneinfo-core=y
@@ -133,13 +110,14 @@ CONFIG_USE_STRIP=y
CONFIG_BUILD_LOG=y
CONFIG_BUSYBOX_CONFIG_ADDUSER=y
CONFIG_BUSYBOX_CONFIG_ARPING=y
CONFIG_BUSYBOX_CONFIG_ASH_IDLE_TIMEOUT=y
CONFIG_BUSYBOX_CONFIG_ASH_RANDOM_SUPPORT=y
CONFIG_BUSYBOX_CONFIG_CTTYHACK=y
CONFIG_BUSYBOX_CONFIG_DELUSER=y
# CONFIG_BUSYBOX_CONFIG_DEVMEM is not set
CONFIG_BUSYBOX_CONFIG_FEATURE_UDHCP_8021Q=y
CONFIG_BUSYBOX_CONFIG_FIRST_SYSTEM_ID=100
CONFIG_BUSYBOX_CONFIG_HTTPD=y
# CONFIG_BUSYBOX_CONFIG_HTTPD is not set
# CONFIG_BUSYBOX_CONFIG_INSMOD is not set
# CONFIG_BUSYBOX_CONFIG_MODINFO is not set
# CONFIG_BUSYBOX_CONFIG_MODPROBE is not set
@@ -187,16 +165,39 @@ CONFIG_BUSYBOX_CONFIG_MOUNTPOINT=y
CONFIG_BUSYBOX_CONFIG_RUN_PARTS=y
CONFIG_BUSYBOX_CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS=y
CONFIG_BUSYBOX_CONFIG_FEATURE_RUN_PARTS_FANCY=y
CONFIG_BUSYBOX_CONFIG_FEATURE_GZIP_LEVELS=y
CONFIG_BUSYBOX_CONFIG_GZIP_FAST=2
CONFIG_BUSYBOX_CONFIG_FEATURE_FANCY_SLEEP=y
CONFIG_BUSYBOX_CONFIG_FEATURE_FLOAT_SLEEP=y
CONFIG_BUSYBOX_CONFIG_FLOAT_DURATION=y
CONFIG_BUSYBOX_CONFIG_USLEEP=y
CONFIG_BUSYBOX_CONFIG_REALPATH=y
CONFIG_BUSYBOX_CONFIG_TTY=y
CONFIG_BUSYBOX_CONFIG_BLOCKDEV=y
CONFIG_BUSYBOX_CONFIG_PARTPROBE=y
CONFIG_BUSYBOX_CONFIG_LFS=y
CONFIG_BUSYBOX_CONFIG_FDISK=y
CONFIG_BUSYBOX_CONFIG_FDISK_SUPPORT_LARGE_DISKS=y
CONFIG_BUSYBOX_CONFIG_FEATURE_FDISK_WRITABLE=y
CONFIG_BUSYBOX_CONFIG_FEATURE_GPT_LABEL=y
CONFIG_BUSYBOX_CONFIG_FEATURE_FDISK_ADVANCED=y
CONFIG_BUSYBOX_CONFIG_IONICE=y
CONFIG_BUSYBOX_CONFIG_RENICE=y
CONFIG_BUSYBOX_CONFIG_FEATURE_VOLUMEID_BTRFS=y
CONFIG_BUSYBOX_CONFIG_FEATURE_VOLUMEID_F2FS=y
CONFIG_BUSYBOX_CONFIG_FEATURE_VOLUMEID_LINUXSWAP=y
CONFIG_BUSYBOX_CONFIG_FEATURE_VOLUMEID_SQUASHFS=y
CONFIG_BUSYBOX_CONFIG_FEATURE_VOLUMEID_UBIFS=y
CONFIG_BUSYBOX_CONFIG_TIMEOUT=y
CONFIG_LIBCURL_CRYPTO_AUTH=y
# CONFIG_LIBCURL_MBEDTLS is not set
CONFIG_LIBCURL_OPENSSL=y
CONFIG_OPENVPN_openssl_ENABLE_IPROUTE2=y
# CONFIG_SAMBA3_CONFIG_NO_PRINTING is not set
# CONFIG_SIGNED_PACKAGES is not set
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
@@ -216,6 +217,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"
targets="iopsys-brcm63xx-arm iopsys-ramips intel_mips iopsys-x86 iopsys-armvirt iopsys-bcm27xx"
for target in $targets
do
rm -f target/linux/$target
@@ -57,6 +57,3 @@ function feeds_update {
register_command "feeds_update" "Update feeds to point to commit hashes from feeds.conf"

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,11 +13,13 @@ 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"
x86="target/linux/iopsys-x86"
armvirt="target/linux/iopsys-armvirt"
Red='\033[0;31m' # Red
Color_Off='\033[0m' # Text Reset
@@ -79,20 +81,49 @@ function genconfig {
# Takes a board name and returns the target name in global var $target
set_target() {
local profile=$1
local profile=$1
[ -n "$profile" ] || return
if [ -n "$TARGET" -a -d "./target/linux/$TARGET" ]; then
local targetpath="./target/linux/$TARGET"
local profiles=
local pfound=0
if [ -e "$targetpath/genconfig" ]; then
profiles=$(cd $targetpath; ./genconfig)
for p in $profiles; do
if [ $p == $profile ]; then
pfound=1
break
fi
done
fi
if [ $pfound -eq 1 ]; then
target="$(echo $TARGET | tr '-' '_')"
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 ] &&
iopsys_ramips=$(cd $ramips; ./genconfig)
[ -e $intel_mips/genconfig ] &&
iopsys_intel_mips=$(cd $intel_mips; ./genconfig)
[ -e $x86/genconfig ] &&
iopsys_x86=$(cd $x86; ./genconfig)
[ -e $armvirt/genconfig ] &&
iopsys_armvirt=$(cd $armvirt; ./genconfig)
[ -e $bcm27xx/genconfig ] &&
iopsys_bcm27xx=$(cd $bcm27xx; ./genconfig)
if [ "$profile" == "LIST" ]; then
for list in iopsys_brcm63xx_mips iopsys_brcm63xx_arm iopsys_ramips iopsys_intel_mips; 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"
@@ -101,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
@@ -120,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
@@ -128,27 +151,45 @@ 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
for p in $iopsys_x86; do
if [ $p == $profile ]; then
target="iopsys_x86"
target_config_path="$x86/config"
return
fi
done
for p in $iopsys_armvirt; do
if [ $p == $profile ]; then
target="iopsys_armvirt"
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
}
git remote -v | grep -q http || {
git remote -v | grep -qE '(git@|ssh://)' && {
DEVELOPER=1
bcmAllowed=0
endptAllowed=0
natalieAllowed=0
mediatekAllowed=0
wifilifeAllowed=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
git ls-remote git@dev.iopsys.eu:iopsys/wifilife.git -q 2>/dev/null && wifilifeAllowed=1
}
v() {
@@ -162,6 +203,7 @@ function genconfig {
echo -e " -c|--clean\t\tRemove all files under ./files and import from config "
echo -e " -v|--verbose\t\tVerbose"
echo -e " -n|--no-update\tDo NOT! Update customer config before applying"
echo -e " -t|--target\t\tExplicitly specify the linux target to build the board profile from"
echo -e " -s|--override\t\tEnable 'Package source tree override'"
echo -e " -S|--brcmsingle\tForce build of bcmkernel to use only one thread"
echo -e " -h|--help\t\tShow this message"
@@ -169,7 +211,7 @@ function genconfig {
echo -e " -a|--list-all\t\tList all Customers and their board types"
echo -e " -b|--boards\t\tList all board types"
echo
echo "Example ./iop genconfig dg200 TELIA"
echo "Example ./iop genconfig eg400 OPERATORX"
echo "(if no customerconfig is chosen, iopsys config will be used)"
echo
exit 0
@@ -220,12 +262,12 @@ function genconfig {
generate_config()
{
DIFFFILE="$1"
MASTERFILE="$2"
while read p; do
v "$p"
sed -r -i "$p" $MASTERFILE
done < $DIFFFILE
DIFFFILE="$1"
MASTERFILE="$2"
while read p; do
v "$p"
sed -r -i "$p" $MASTERFILE
done < $DIFFFILE
}
setup_dirs()
@@ -293,14 +335,16 @@ 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 which use TARGET_DEVICES
#special handling for intel_mips/iopsys_ramips which use TARGET_DEVICES
if [ "$target" = "intel_mips" ]; then
subtarget="xrx500"
echo "CONFIG_TARGET_${target}=y" >> .config
@@ -309,6 +353,18 @@ function genconfig {
echo "CONFIG_TARGET_PER_DEVICE_ROOTFS=y" >> .config
device=$(echo $BOARDTYPE | tr a-z A-Z)
echo "CONFIG_TARGET_DEVICE_${target}_${subtarget}_DEVICE_${device}=y" >> .config
elif [ "$target" = "iopsys_ramips" ]; then
subtarget="mt7621"
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
@@ -335,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
@@ -359,16 +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
[ $wifilifeAllowed -eq 0 ] && echo "CONFIG_WIFILIFE_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
echo "CONFIG_WIFILIFE_OPEN=y" >> .config
fi
if [ -n "$BRCM_MAX_JOBS" ]
@@ -384,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
@@ -421,6 +473,7 @@ function genconfig {
-c|--clean) export CLEAN=1;;
-n|--no-update) export IMPORT=0;;
-v|--verbose) export VERBOSE="$(($VERBOSE + 1))";;
-t|--target) export TARGET="$2"; shift;;
-p|--profile) export PROFILE="$2"; shift;;
-r|--repo) export CUSTREPO="$2"; shift;;
-s|--override) export SRCTREEOVERR=1;;

View File

@@ -0,0 +1,457 @@
#!/bin/bash
function genconfig_min {
export CLEAN=0
export SRCTREEOVERR=0
export FILEDIR="files/"
CURRENT_CONFIG_FILE=".current_config_file"
export CONFIGPATH="package/feeds/iopsys/iop"
CUSTPATH="customerconfigs"
export CUSTCONF="customerconfigs/customers"
export VERBOSE=0
#always use the mirror
export DEVELOPER=0
target="bogus"
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"
x86="target/linux/iopsys-x86"
armvirt="target/linux/iopsys-armvirt"
Red='\033[0;31m' # Red
Color_Off='\033[0m' # Text Reset
Yellow='\033[0;33m' # Yellow
function find_last {
egrep "^[ #]*${1}[ =]" $2 | tail -n1
}
function is_new {
for opt in $conf_warned
do
if [ "$opt" == "$1" ]
then
return 1
fi
done
# option not found return true
return 0
}
function verify_config {
IFS=$'\n'
org=$(<.genconfig.config)
unset IFS
local num
local conf_opt
local conf_org
local conf_new
#echo "lines to check $tot_lines"
num=0
for line in $org
do
conf_opt=$(echo $line | grep CONFIG_ | sed 's|.*\(CONFIG_[^ =]*\)[ =].*|\1|')
if [ -n "${conf_opt}" ]
then
conf_org=$(find_last ${conf_opt} .genconfig.config)
conf_new=$(find_last ${conf_opt} .config)
if [ "$conf_org" != "$conf_new" ]
then
if is_new $conf_opt
then
echo -e "config option [${Red}$conf_opt${Color_Off}] is not set correctly in .config"
echo -e "got value [${Yellow}$conf_new${Color_Off}] but wanted [${Yellow}$conf_org${Color_Off}]"
echo "This is a real problem somebody needs to investigate"
echo ""
conf_warned="$conf_warned $conf_opt"
fi
else
true
# for debug to see all options
#echo -e "wanted [$conf_org] got [$conf_new]"
fi
fi
num=$((num+1))
done
}
# Takes a board name and returns the target name in global var $target
set_target() {
local profile=$1
[ -n "$profile" ] || return
if [ -n "$TARGET" -a -d "./target/linux/$TARGET" ]; then
local targetpath="./target/linux/$TARGET"
local profiles=
local pfound=0
if [ -e "$targetpath/genconfig" ]; then
profiles=$(cd $targetpath; ./genconfig)
for p in $profiles; do
if [ $p == $profile ]; then
pfound=1
break
fi
done
fi
if [ $pfound -eq 1 ]; then
target="$(echo $TARGET | tr '-' '_')"
config_path="$targetpath/config"
fi
return
fi
[ -e $brcm63xx_arm/genconfig ] &&
iopsys_brcm63xx_arm=$(cd $brcm63xx_arm; ./genconfig)
[ -e $ramips/genconfig ] &&
iopsys_ramips=$(cd $ramips; ./genconfig)
[ -e $intel_mips/genconfig ] &&
iopsys_intel_mips=$(cd $intel_mips; ./genconfig)
[ -e $x86/genconfig ] &&
iopsys_x86=$(cd $x86; ./genconfig)
[ -e $armvirt/genconfig ] &&
iopsys_armvirt=$(cd $armvirt; ./genconfig)
[ -e $bcm27xx/genconfig ] &&
iopsys_bcm27xx=$(cd $bcm27xx; ./genconfig)
if [ "$profile" == "LIST" ]; then
for list in iopsys_brcm63xx_arm iopsys_ramips iopsys_intel_mips iopsys_x86 iopsys_armvirt iopsys_bcm27xx; do
echo "$list based boards:"
for b in ${!list}; do
echo -e "\t$b"
done
done
return
fi
for p in $iopsys_brcm63xx_arm; do
if [ $p == $profile ]; then
target="iopsys_brcm63xx_arm"
config_path="$brcm63xx_arm/config"
return
fi
done
for p in $iopsys_ramips; do
if [ $p == $profile ]; then
target="iopsys_ramips"
config_path="$ramips/config"
return
fi
done
for p in $iopsys_intel_mips; do
if [ $p == $profile ]; then
target="intel_mips"
config_path="$intel_mips/config"
return
fi
done
for p in $iopsys_x86; do
if [ $p == $profile ]; then
target="iopsys_x86"
config_path="$x86/config"
return
fi
done
for p in $iopsys_armvirt; do
if [ $p == $profile ]; then
target="iopsys_armvirt"
config_path="$armvirt/config"
return
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 || {
DEVELOPER=1
bcmAllowed=0
endptAllowed=0
git ls-remote git@dev.iopsys.eu:broadcom/bcmcreator.git -q 2>/dev/null && bcmAllowed=1
git ls-remote git@dev.iopsys.eu:iopsys/endptmngr.git -q 2>/dev/null && endptAllowed=1
}
v() {
[ "$VERBOSE" -ge 1 ] && echo "$@"
}
usage() {
echo
echo 1>&2 "Usage: $0 [ OPTIONS ] < Board_Type > [ Customer [customer2 ]...]"
echo
echo -e " -c|--clean\t\tRemove all files under ./files and import from config "
echo -e " -v|--verbose\t\tVerbose"
echo -e " -n|--no-update\tDo NOT! Update customer config before applying"
echo -e " -t|--target\t\tExplicitly specify the linux target to build the board profile from"
echo -e " -s|--override\t\tEnable 'Package source tree override'"
echo -e " -S|--brcmsingle\tForce build of bcmkernel to use only one thread"
echo -e " -h|--help\t\tShow this message"
echo -e " -l|--list [customer]\tList all Customers or all boards for one customer"
echo -e " -a|--list-all\t\tList all Customers and their board types"
echo -e " -b|--boards\t\tList all board types"
echo
echo "Example ./iop genconfig dg400prime IOPSYS"
echo
exit 0
}
list_customers()
{
local ALL="$1"
local CUSTOMER="$2"
if [ "$CUSTOMER" -a -d "$CUSTCONF/$CUSTOMER" ]; then
local boards="$(ls -1 "$CUSTCONF/$CUSTOMER" | grep -v common )"
if [ "$boards" ]; then
echo "$CUSTOMER has following boards:"
for board in $boards; do
echo -e "\t$board"
done
else
echo "No boards found for $CUSTOMER"
fi
elif [ "$CUSTOMER" ]; then
echo "No customer called $CUSTOMER"
exit 1
elif [ -d $CUSTCONF ]; then
local customers="$(ls -1 $CUSTCONF)"
if [ "$customers" -a "$ALL" == 1 ]; then
for customer in $customers; do
echo $customer
local boards="$(ls -1 $CUSTCONF/$customer | grep -v common )"
if [ "$boards" ]; then
for board in $boards; do
echo -e "\t$board"
done
else
echo "has no boards"
fi
done
elif [ "$customers" ]; then
echo -e "$customers"
else
echo "no customers found"
fi
else
echo "No $CUSTCONF folder found"
fi
exit 0
}
generate_config()
{
DIFFFILE="$1"
MASTERFILE="$2"
while read p; do
v "$p"
sed -r -i "$p" $MASTERFILE
done < $DIFFFILE
}
setup_dirs()
{
if [ ! -d "$FILEDIR" ]; then
mkdir -p $FILEDIR
elif [ -d "$FILEDIR" -a $CLEAN -eq 1 ]; then
v "rm -rf $FILEDIR*"
rm -rf $FILEDIR*
fi
}
create_and_copy_files()
{
local BOARDTYPE=$1
shift
local CUSTOMERS=$@
# Validate seleced board and customers
set_target $BOARDTYPE
if [ $target == "bogus" ]; then
echo "Hardware profile does not exist"
exit 1
elif [ -n "$CUSTOMERS" ]; then
for CUSTOMER in $CUSTOMERS; do
if [ ! -d "$CUSTCONF/$CUSTOMER/" ]; then
echo "Customer profile for '$CUSTOMER' does not exist"
exit 1
elif [ ! -d "$CUSTCONF/$CUSTOMER/$BOARDTYPE/" ]; then
echo "'$BOARDTYPE' board profile does not exist for customer '$CUSTOMER'"
if [ -f "$CUSTCONF/$CUSTOMER/common/common.diff" ]; then
echo "Common profile configuration will be used"
else
exit 1
fi
fi
done
fi
# Generate base config
rm -f .config
v "Config $BOARDTYPE selected"
v "cp $CONFIGPATH/config .config"
cp $CONFIGPATH/config .config
if [ -f $config_path/config ]; then
cat $config_path/config >> .config
fi
if [ -f $config_path/$BOARDTYPE/config ]; then
cat $config_path/$BOARDTYPE/config >> .config
fi
#special handling for intel_mips/iopsys_ramips which use TARGET_DEVICES
if [ "$target" = "intel_mips" ]; then
subtarget="xrx500"
echo "CONFIG_TARGET_${target}=y" >> .config
echo "CONFIG_TARGET_${target}_${subtarget}=y" >> .config
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_${device}=y" >> .config
elif [ "$target" = "iopsys_ramips" ]; then
subtarget="mt7621"
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
fi
echo "$CUSTOMERS $BOARDTYPE" > $CURRENT_CONFIG_FILE
# Add customerconfig diff if a customer is selected
if [ -n "$CUSTOMERS" ]; then
for CUSTOMER in $CUSTOMERS; do
if [ -d "$CUSTCONF/$CUSTOMER/common/fs" ]; then
v "cp -ar $CUSTCONF/$CUSTOMER/common/fs/* $FILEDIR"
cp -ar $CUSTCONF/$CUSTOMER/common/fs/* $FILEDIR
fi
if [ -d "$CUSTCONF/$CUSTOMER/$BOARDTYPE/fs" ]; then
v "cp -ar $CUSTCONF/$CUSTOMER/$BOARDTYPE/fs/* $FILEDIR"
cp -ar $CUSTCONF/$CUSTOMER/$BOARDTYPE/fs/* $FILEDIR
fi
if [ -e "$CUSTCONF/$CUSTOMER/common/common.diff" ]; then
v "Apply $CUSTCONF/$CUSTOMER/common/common.diff"
cat $CUSTCONF/$CUSTOMER/common/common.diff >> .config
fi
if [ -e "$CUSTCONF/$CUSTOMER/$BOARDTYPE/$BOARDTYPE.diff" ]; then
v "Apply $CUSTCONF/$CUSTOMER/$BOARDTYPE/$BOARDTYPE.diff"
cat $CUSTCONF/$CUSTOMER/$BOARDTYPE/$BOARDTYPE.diff >> .config
fi
done
fi
# Set target version
local GIT_TAG=$(git describe --abbrev=0 --tags)
echo "CONFIG_TARGET_VERSION=\"${GIT_TAG}\"" >> .config
echo "CONFIG_VERSION_CODE=\"${GIT_TAG}\"" >> .config
echo "CONFIG_VERSION_PRODUCT=\"$BOARDTYPE"\" >> .config
# Enable Package source tree override if selected
[ $SRCTREEOVERR -eq 1 ] && echo CONFIG_SRC_TREE_OVERRIDE=y >> .config
# developer mode selected ?
echo "CONFIG_DEVEL=y" >>.config
if [ -n "$BRCM_MAX_JOBS" ]
then
echo "CONFIG_BRCM_MAX_JOBS=\"1\"" >>.config
fi
# Force regeneration of kernel Makefile
# Needed to disable kmods for iopsys-brcm targets
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 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
# Store generated config
cp .config .genconfig.config
# Set default values based on selected parameters
v "$(make defconfig 2>&1)"
echo Set version to $(grep -w CONFIG_TARGET_VERSION .config | cut -d'=' -f2 | tr -d '"')
# Clean base-file package to force rebuild when changing profile
v "$(make package/base-files/clean 2>&1)"
verify_config
}
####### main #####
if [ ! -e tmp/.iop_bootstrap ]; then
echo "You have not installed feeds. Running genconfig in this state would create a non functional configuration."
echo "Run: iop feeds_update"
exit 0
fi
if [ $# -eq 0 ]; then
echo Current profile:
cat $CURRENT_CONFIG_FILE
echo "Try ./iop genconfig -h' to get instructions if you want to change current config"
exit 0
else
while [ -n "$1" ]; do
case "$1" in
-c|--clean) export CLEAN=1;;
-n|--no-update) export IMPORT=0;;
-v|--verbose) export VERBOSE="$(($VERBOSE + 1))";;
-t|--target) export TARGET="$2"; shift;;
-p|--profile) export PROFILE="$2"; shift;;
-r|--repo) export CUSTREPO="$2"; shift;;
-s|--override) export SRCTREEOVERR=1;;
-S|--brcmsingel) export BRCM_MAX_JOBS=1;;
-h|--help) usage;;
-l|--list) list_customers 0 $2;;
-a|--list-all)list_customers 1;;
-b|--boards)set_target LIST;exit 0;;
-*)
echo "Invalid option: $1 "
echo "Try -h or --help for more information."
exit 1
;;
*) break;;
esac
shift;
done
setup_dirs
create_and_copy_files "$@"
fi
}
register_command "genconfig_min" "Generate configuration for customer with manual board configuration"

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,63 +51,6 @@ build_endptmngr_consumer() {
cd "$curdir"
}
build_wifilife_consumer() {
local ver commit
ver=$(grep -w "PKG_VERSION:" ./feeds/iopsys/wifilife/Makefile | cut -d'=' -f2)
commit=$(grep -w "PKG_SOURCE_VERSION:" ./feeds/iopsys/wifilife/Makefile | cut -d'=' -f2)
[ -n "$ver" -a -n "$commit" ] || return
ssh $SERVER "test -f $FPATH/wifilife-$target-${ver}_${commit}.tar.xz" && return
cd ./build_dir/target-*/wifilife-$ver/ipkg-* || cd ./build_dir/target-mips*musl-*/wifilife-$ver/ipkg-*
mkdir -p wifilife-$ver/src
cp -rf wifilife/usr/sbin/* wifilife-$ver/src/
tar Jcf wifilife-${target}-${ver}_${commit}.tar.xz wifilife-$ver
scp -pv wifilife-$target-${ver}_${commit}.tar.xz $SERVER:$FPATH/
cp wifilife-${target}-${ver}_${commit}.tar.xz $curdir/
rm -rf wifilife-$ver
rm -f wifilife-${target}-${ver}_${commit}.tar.xz
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/iopsys/mt${chip}/Makefile | cut -d'=' -f2)
commit=$(grep -w "PKG_SOURCE_VERSION:" ./feeds/iopsys/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>"
@@ -129,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 .)
@@ -154,21 +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
build_wifilife_consumer
elif [ "$stk_target" == "mediatek" ]; then
build_mediatek_kernel
build_mediatek_wifi_consumer 7603
build_mediatek_wifi_consumer 7615
build_wifilife_consumer
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

@@ -17,6 +17,7 @@ PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/iopupgrade
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_RELEASE)-$(PKG_SOURCE_VERSION).tar.gz
PKG_MIRROR_HASH:=skip
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)

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

@@ -1,36 +0,0 @@
#
# Copyright (C) 2006-2011 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:=iup
PKG_VERSION:=0.0.1
PKG_RELEASE:=0
include $(INCLUDE_DIR)/package.mk
define Package/iup
SECTION:=net
CATEGORY:=Network
TITLE:=iup client
DEPENDS:=+libuci +uci +busybox
endef
define Package/iup/description
This package contains Inteno's IUP Client
endef
define Build/Compile
true
endef
define Package/iup/install
$(INSTALL_DIR) $(1)/sbin
cp -r ./files/* $(1)/
endef
$(eval $(call BuildPackage,iup))

View File

@@ -1,17 +0,0 @@
package 'provisioning'
config 'general' 'polling'
option 'enabled' 'on'
option 'starttime' '03'
option 'interval' 'daily'
config 'server' 'configserver'
option enabled 'off'
config 'server' 'iup'
option 'enabled' 'on'
config software 'uppgradeserver'
option enabled 'off'

View File

@@ -1,133 +0,0 @@
#!/bin/sh /etc/rc.common
# iup at boot
# Copyright (C) 2007 OpenWrt.org
START=98
STOP=15
USE_PROCD=1
. /lib/functions.sh
include /lib/network
CRONPATH="/etc/crontabs/root"
RANGE=60
management_interfaces() {
local DHCP_IFACES=""
is_notbridged_dhcp() {
local config="$1"
local proto="$(uci -q get network.$config.proto)"
local typ="$(uci -q get network.$config.type)"
if [ "$proto" == "dhcp" -a "$typ" != "bridge" ]; then
DHCP_IFACES="$DHCP_IFACES $config"
fi
}
config_load network
config_foreach is_notbridged_dhcp interface
echo $DHCP_IFACES
}
init_iup() {
local polling_enabled
local interval
local starttime
local nummber
number=$RANDOM
[ -f $CRONPATH ] || touch $CRONPATH
config_load provisioning
config_get polling_enabled polling enabled on
config_get interval polling interval
config_get starttime polling starttime
### Ask for IUP related DHCP options only if IUP is enabled ###
new_reqopts() {
local net=$1
local enabled
local newreqopts=
local baseopts=
local reqopts="$(uci -q get network.$net.reqopts)"
local iupopts="66 67 128 224 225 226"
local ropt iopt
config_get enabled iup enabled "on"
for ropt in $reqopts; do
case $ropt in
66|67|128|224|225|226) ;;
*) baseopts="$baseopts $ropt" ;;
esac
done
ropt=""
reqopts="$baseopts $iupopts"
for ropt in $reqopts; do
case $ropt in
66|67|128|224|225|226) [ $enabled == "on" ] && newreqopts="$newreqopts $ropt" ;;
*) newreqopts="$newreqopts $ropt" ;;
esac
done
newreqopts="$(echo $newreqopts | tr ' ' '\n' | sort -n | tr '\n' ' ' | sed 's/^[ \t]*//;s/[ \t]*$//')"
echo "$newreqopts"
}
for net in $(management_interfaces); do
uci -q set network.$net.reqopts="$(new_reqopts $net)"
done
uci commit network
ubus call network reload
#################################################################
if [ $polling_enabled == "off" ]; then
sed -i "/\/sbin\/iup/d" $CRONPATH
logger -s -t /etc/init.d/iup[$$] "Provisioning polling unscheduled" 2>/dev/console
return
fi
local log_hour=$starttime
local log_minute
local log_interval=$interval
if [ $interval == "weekly" ]; then
interval="0"
log_interval="$log_interval/sunday"
elif [ $interval == "hourly" ]; then
interval='*'
starttime='*'
else
interval='*'
fi
let "number %= $RANGE"
if ! grep -q "$starttime \* \* \\$interval /sbin/iup" "$CRONPATH" ; then
if grep -q "iup" "$CRONPATH" ; then
sed -i "/iup/d" $CRONPATH
fi
echo "$number $starttime * * $interval /sbin/iup -v > /dev/null 2>&1" >> $CRONPATH
fsync $CRONPATH
/etc/init.d/cron restart
fi
log_minute=$(awk '/\/sbin\/iup/ {print $1}' /etc/crontabs/root)
logger -s -t /etc/init.d/iup[$$] "Provisioning is scheduled at $log_hour:$log_minute $log_interval" 2>/dev/console
}
start_service() {
init_iup
/sbin/iup -v &
}
stop_service() {
if [ -f "/tmp/run/iup.pid" ]; then
kill -9 $(cat /tmp/run/iup.pid)
rm -rf /tmp/run/iup.pid
fi
}
reload_service() {
stop
start
}
service_triggers() {
procd_add_reload_trigger provisioning
}

View File

@@ -1,57 +0,0 @@
#!/bin/sh
. /lib/functions.sh
management_interfaces() {
local DHCP_IFACES=""
is_notbridged_dhcp() {
local config="$1"
local proto="$(uci -q get network.$config.proto)"
local typ="$(uci -q get network.$config.type)"
if [ "$proto" == "dhcp" -a "$typ" != "bridge" ]; then
DHCP_IFACES="$DHCP_IFACES $config"
fi
}
config_load network
config_foreach is_notbridged_dhcp interface
echo $DHCP_IFACES
}
set_iup_reqopts() {
### Ask for IUP related DHCP options only if IUP is enabled ###
new_reqopts() {
local net=$1
local enabled="$(uci -q get provisioning.iup.enabled)"
enabled="${enabled:-on}"
local newreqopts=
local baseopts=
local reqopts="$(uci -q get network.$net.reqopts)"
local iupopts="66 67 128 224 225 226"
local ropt iopt
local net
for ropt in $reqopts; do
case $ropt in
66|67|128|224|225|226) ;;
*) baseopts="$baseopts $ropt" ;;
esac
done
ropt=""
reqopts="$baseopts $iupopts"
for ropt in $reqopts; do
case $ropt in
66|67|128|224|225|226) [ $enabled == "on" ] && newreqopts="$newreqopts $ropt" ;;
*) newreqopts="$newreqopts $ropt" ;;
esac
done
newreqopts="$(echo $newreqopts | tr ' ' '\n' | sort -n | tr '\n' ' ' | sed 's/^[ \t]*//;s/[ \t]*$//')"
echo "$newreqopts"
}
for net in $(management_interfaces); do
uci -q set network.$net.reqopts="$(new_reqopts $net)"
done
uci commit network
}
set_iup_reqopts

View File

@@ -1,219 +0,0 @@
#!/bin/sh
# functions that take dhcp options received on the wan interface
# and relay/repeat them for specific clients
#config dhcp_option_relay
# option enable 1
# list dhcp_option 43
# list from_interface wan
# option vendorclass '*SDX*'
# where:
# dhcp_option_relay is the name of the section parsed by this script
# enable/enabled - option, enable the uci section [default on]
# dhcp_option/dhcp_options - list of dhcp options (0-255) to be relayed/repeated
# overwrite - if same dhcp_option already exists in /etc/config/dhcp, overwrite it with this option [default off]
# from_interface - list of interfaces (e.g. wan) to get the dhcp options from
. /lib/functions.sh
interface=""
opt224=""
opt225=""
opt226=""
opt43=""
opt128=""
opt66=""
opt67=""
opt132=""
opt133=""
newsectionid="0"
function parse_the_json()
{
local the_json="$@"
json_load "$the_json"
json_get_var interface interface
json_get_var opt224 privopt224
json_get_var opt225 privopt225
json_get_var opt226 privopt226
json_get_var opt43 vendorspecinf # option 43
json_get_var opt128 httpurl128
json_get_var opt66 tftp # option 66
json_get_var opt67 bootfile #option 67
json_get_var opt132 vlanid # option 132
json_get_var opt133 vlanpriority # option 133
}
function add_section_dhcp_vendorclass()
{
local dhcp_option=$1
local dhcp_option_value=$2
local vendorclass=$3
local new=
newsectionid=$((newsectionid+1))
#echo "add_section_dchp_vendorclass $dhcp_option ${dhcp_option_value} $vendorclass"
new=$(uci add dhcp vendorclass)
uci set dhcp.$new.vendorclass="$vendorclass"
uci set dhcp.$new.networkid="dhcp_option_relay_$newsectionid"
uci add_list dhcp.$new.dhcp_option=$dhcp_option,\"${dhcp_option_value}\"
uci commit dhcp
}
function dhcp_option_relay()
{
local section="$1"
local enable="" enabled=""
local dhcp_option="" dhcp_option_value=""
local vendorclass=""
#local overwrite=""
local from_interface
#echo "section: $section"
# parse only enabled sections
config_get_bool enabled $section enabled 1
config_get_bool enable $section enable 1
#echo "enabled: $enabled"
#echo "enable : $enable"
if [ "$enable" == "0" -o "$enabled" == "0" ] ; then
#echo "section $section is not enabled"
return
fi
# todo: for disabled sections: run only the removal of the dhcp options
# option overwrite 1
#config_get_bool overwrite $section overwrite 0
config_get vendorclass $section vendorclass
if [ ${#vendorclass} -le 1 ]; then
#echo "vendorclass must not be empty"
return
fi
# list to_interface lan
# to_interface - list of interfaces (e.g. lan, guest) to advertise the dhcp options to
#foreach_to_interface() {
# local to_interface=$1
# echo ""
# echo " from_interface $from_interface"
# echo " dhcp_option $dhcp_option"
# echo " dhcp_option_value $dhcp_option_value"
# echo " overwrite $overwrite"
# echo " to_interface $to_interface"
#
# if [ ! $(uci -q get dhcp.$to_interface) ] ; then
# echo "to_interface $to_interface does not exist in dhcp uci config"
# return
# fi
#
#}
foreach_dhcp_option() {
dhcp_option=$1
echo "dhcp_option: $dhcp_option"
case $dhcp_option in
43) dhcp_option_value=$opt43 ;;
66) dhcp_option_value=$opt66 ;;
67) dhcp_option_value=$opt67 ;;
128) dhcp_option_value=$opt128 ;;
132) dhcp_option_value=$opt132 ;;
133) dhcp_option_value=$opt133 ;;
224) dhcp_option_value=$opt224 ;;
225) dhcp_option_value=$opt225 ;;
226) dhcp_option_value=$opt226 ;;
*) dhcp_option_value="unsupported" ;;
esac
if [ "${dhcp_option_value}" == "unsupported" ] ; then
echo "dhcp_option $dhcp_option is unsupported"
return
fi
if [ "${dhcp_option_value}" == "" ] ; then
echo "dhcp_option $dhcp_option is empty"
return
fi
#echo "dhcp_option: $dhcp_option dhcp_option_value: ${dhcp_option_value}"
#config_list_foreach $section to_interface foreach_to_interface
add_section_dhcp_vendorclass $dhcp_option ${dhcp_option_value} $vendorclass
}
foreach_from_interface() {
from_interface="$1"
#echo "from_interface: $from_interface"
if [ "$from_interface" != "$interface" ]; then
return
fi
dhcp_option=""
config_list_foreach $section dhcp_option foreach_dhcp_option
#config_list_foreach $section dhcp_options foreach_dhcp_option
}
from_interface=""
config_list_foreach $section from_interface foreach_from_interface
}
# in uci dhcp config:
# remove all the vendorclass sections
# that have previosly been configured by this script.
# all are identified by "option networkid dhcp_option_relay_*"
function dhcp_option_relay_clear_prev()
{
local to_remove=""
foreach_vendorclass() {
local section="$1"
local networkid
config_get networkid $section networkid
case "$networkid"
in dhcp_option_relay*)
to_remove="$to_remove $section"
;;
esac
}
config_load dhcp
config_foreach foreach_vendorclass vendorclass
local sect
for sect in $to_remove ; do
uci_remove dhcp $sect
done
uci_commit dhcp
}
# the main function
function dhcp_option_relay_parse()
{
local the_json="$@"
parse_the_json "$the_json"
dhcp_option_relay_clear_prev
newsectionid="0"
config_load provisioning
config_foreach dhcp_option_relay dhcp_option_relay
#config_foreach dhcp_option_relay dhcp_options_relay
#config_foreach dhcp_option_relay dhcpoption_relay
#config_foreach dhcp_option_relay dhcpoptions_relay
#config_foreach dhcp_option_relay dhcp_optionrelay
#config_foreach dhcp_option_relay dhcp_optionsrelay
#config_foreach dhcp_option_relay dhcpoptionrelay
#config_foreach dhcp_option_relay dhcpoptionsrelay
}
#dhcp_option_relay_parse

View File

@@ -1,595 +0,0 @@
#!/bin/sh
echo $$ > /var/run/iup.pid
. /lib/functions.sh
. /lib/functions/network.sh
. /lib/functions/savecfg.sh
. /lib/functions/dhcp_option_relay.sh
. /usr/share/libubox/jshn.sh
include /lib/upgrade
include /lib/network
export IUPCONFFILES=/tmp/iup/sysupgrade.conffiles.tar.gz
export IUPMD5=/etc/configchecksums
export CONFILESLURP='/tmp/iup/*.conf'
export IUPTEMP="/tmp/iup"
export INTERACTIVE=0
export VERBOSE=0
export CONF=1
export DESKEY=
export MAC=
export RANGE=10
export RETRYSTOP=5
export SLEEP=10
json_load "$(ubus call router.system info)"
json_select system
json_get_var MAC basemac
json_select ..
json_select keys
json_get_var DESKEY des
json_select ..
# MAC lowercase to uppercase and remove ':'
MAC=$(echo $MAC | tr '[a-z]' '[A-Z]' | tr -d ':')
# Convert DESKEY to HEX format
DESKEY=$(echo $DESKEY | tr -d '\n' | hexdump -e '16/1 "%02x"')
# no verbose: no output
# -v log to system log
# -v -v log to system log and console
# -v -v -v log to system log, console and stderr
v() {
[ "$VERBOSE" -eq 0 ] && return
[ "$VERBOSE" -eq 1 ] && logger -t $0[$$] "$@" && return
[ "$VERBOSE" -eq 2 ] && logger -s -t $0[$$] "$@" >/dev/console 2>&1 && return
[ "$VERBOSE" -eq 3 ] && logger -s -t $0[$$] "$@" 2>&1 | tee /dev/console && return
}
vv() {
VERBOSE="$(($VERBOSE + 1))"
v "$@"
VERBOSE="$(($VERBOSE - 1))"
}
get_packages()
{
local pack
pack=$(grep -w 'package' $1)
pack=${pack//package/}
#pack=${pack//[\'|\"]/}
echo $pack | tr -d '\"' | tr -d "'"
}
reload ()
{
local pack
pack=$(get_packages $1)
v "Calling ubus call uci commit for $pack"
for packname in $pack
do
ubus call uci commit '{"config":"'$packname'"}'
sleep 1
done
}
save_usercfg()
{
savecfg_save_config fw_redirect fw_parental wifi
}
apply_usercfg()
{
# decide to save the user changes based on keepuserconfig received through provisioning
local keep
config_load provisioning
config_get_bool keep configserver keepuserconfig "0"
v "apply_usercfg(): keepuserconfig = $keep"
if [ "$keep" != "1" ] ; then
savecfg_rm_files
return
fi
savecfg_apply_config fw_redirect fw_parental wifi
}
handle_provisioning() {
local config="$1"
local default="$2"
local enabled
local url
local tftpfile
local host
local md5
local defaultreset
local pack
local packname
local number=$RANDOM
local retry=1
local number
local incsleep=$SLEEP
let "number %= $RANGE"
if [[ ! -e $IUPTEMP ]]; then
mkdir $IUPTEMP
fi
touch $IUPCONFFILES
config_get_bool enabled "$config" enabled "$default"
config_get_bool defaultreset "$config" defaultreset
config_get deckey "$config" deckey
if [ "$enabled" -eq 1 ]; then
if [ "$config" == "iup" ]; then
v "Using url received in dhcp options"
config_get url "$config" urliup
else
config_get url "$config" url
fi
url=${url//\$MAC/$MAC}
v "Downloading from url \"$url\""
while [ $retry -le $RETRYSTOP ]
do
if [ ${url%%:*} == "tftp" ]; then
tftpfile=${url#*\/\/}
host=${tftpfile%%\/*}
tftpfile=${tftpfile#*\/}
/usr/bin/tftp -l $IUPCONFFILES -r "$tftpfile" -g "$host"
else
get_image "$url" "cat" > $IUPCONFFILES
fi
if [ -s $IUPCONFFILES ]; then
v "Download finished"
retry=$((RETRYSTOP + 1))
else
v "Download failed, retrying in $incsleep seconds"
sleep $incsleep
incsleep=$((incsleep * retry + number))
retry=$((retry+1))
fi
done
fi
if [ ! -s "$IUPCONFFILES" ] && [ "$enabled" -eq 1 ]; then
echo "File not Found"
reboot="off"
CONF=0
else
handle_Downloaded_file $deckey
fi
}
handle_Downloaded_file()
{
local DECKEY
local KEY
[ -n "$1" ] && DECKEY=$(echo $1 | tr -d '\n' | hexdump -e '16/1 "%02x"')
KEY=${DECKEY:-$DESKEY}
local img_type
case "$(get_image_type "$IUPCONFFILES")" in
"INTENO") img_type=2 ;;
"CFE+FS") img_type=1 ;;
"FS") img_type=0 ;;
*) img_type="UNKNOWN";;
esac
if [ "$img_type" == "UNKNOWN" ] ; then
case "$(hexdump -v -n 2 -e '1/1 "%02x"' $IUPCONFFILES)" in
1f8b)
v "Downloaded file is an unencrypted config"
md5=$(md5sum $IUPCONFFILES)
md5="${md5%% *}" # remove the first space and everything after it
md5sum "$IUPCONFFILES" >> "$IUPMD5.temp"
if grep -q "$md5" "$IUPMD5"; then
v "Config is already up to date, nothing to do"
#because config is up to date we need to disable last step reboot if set
reboot="off"
rm -rf $IUPTEMP
else
save_usercfg
cd $IUPTEMP
tar xvzf $IUPCONFFILES
for f in $CONFILESLURP
do
v "File to be applied $f and config $(cat $f)"
uci -f $f import
done
pack=$(get_packages $CONFILESLURP)
v "Packages to be commited: $pack"
for packname in $pack
do
uci commit $packname
done
apply_usercfg
reboot=`uci -q get provisioning.configserver.reboot`
if [ "$reboot" != "on" ]; then
sync
reload $CONFILESLURP
fi
rm -rf $IUPTEMP
cp /rom/etc/uci-defaults/* /etc/uci-defaults/
sync
fi
;;
*)
v "Downloaded file is an encrypted config"
if [ $KEY ]; then
openssl enc -d -des-ede -nosalt -K $KEY -iv "0000000000000000" -in $IUPCONFFILES -out $IUPCONFFILES.tmp
if [ $? -eq 0 ]; then
v "Decryption successful"
mv $IUPCONFFILES.tmp $IUPCONFFILES
handle_Downloaded_file
else
v "Decryption Failed! Exiting"
rm -rf $IUPTEMP
exit 1
fi
else
v "No Key Defined"
rm -rf $IUPTEMP
exit 1
fi
;;
esac
else
v "Downloaded file is a firmware, will start reflashing"
if [ "$defaultreset" -eq 1 ]; then
v "Not saving configuration over reflash"
/sbin/sysupgrade -v -n $IUPCONFFILES
else
v "Saving configuration over reflash"
/sbin/sysupgrade -v $IUPCONFFILES
fi
fi
}
# function: change_to_vlan
# arg 1 = vlan id
# arg 2 = vlan priority
# arg 3 = $INTERFACE
change_to_vlan() {
# local variables.
local name="vlan$1" # construct name = vlan + vlanid.
local base_dev # varible holding device name of wan port.
local wan_if # variable holding wan interfaces.
local new_wan_if #
# extract device name.
network_get_device base_dev $3
# bring down old interface/device.
ifdown "${base_dev}"
v "option 132: bringing down old if: ${base_dev}"
# extract base name of device.
base_dev=$(echo ${base_dev} | cut -d. -f1)
# add "VLAN interface" to the "end of the file".
uci add network device
uci rename network.@device[-1]=${name}
uci set network.@device[-1].type=8021q
uci set network.@device[-1].ifname=${base_dev}
uci set network.@device[-1].name="${base_dev}.${1}"
uci set network.@device[-1].vid=${1}
uci set network.@device[-1].priority=${2}
# and commit the change.
uci commit network
v "option 132: committed update to file network"
# reload configuration files.
ubus call network reload
v "option 132: reload network config"
# replace old interface (like eth0.1 with new eth0.101).
wan_if=$(uci get network.$3.ifname)
v "option 132: old network.${3}.ifname: $wan_if"
# loop through the string, remove any word close to "base_dev".
for word in ${wan_if}; do
#echo $word
case $word in
${base_dev}*) # don't add if.
;;
*) new_wan_if=${word}' '${new_wan_if} # add if.
#new_wan_if+=" ${word}" # probably not working in ash.
;;
esac
done
# append new interface.
new_wan_if=${new_wan_if}${base_dev}.${1}
uci set network.wan.ifname="${new_wan_if}"
# and commit the change.
uci commit network
v "option 132: committed update to file network: ifname=${new_wan_if}"
# reboot into new if configuration.
vv "Rebooting"
export REBOOT_REASON=iup
/sbin/reboot
}
handle_option224()
{
if [ -z "$1" ] ; then
echo "No argument"
return 1
fi
if [ $(echo $1|grep -o "," | wc -l) -eq 0 ] ; then
url=$1
else
url=$(echo $1|cut -d',' -f1)
a=$(echo $1|cut -d',' -f2)
b=$(echo $1|cut -d',' -f3)
c=$(echo $1|cut -d',' -f4)
fi
currdate=$(date +"%Y-%m-%d")
active=0
if [ -z $a ] ; then
active=1
elif [ $a ] && [ $b ] && [ $a -lt 25 ] ; then
#Time
begin=$(date +%s -d"$currdate $a")
now=$(date +%s)
end=$((begin+3600*$b))
if [ $now -gt $begin ] && [ $now -lt $end ] ; then
active=1
fi
elif [ $a ] && [ $b ] && [ $c ] && [ $a -gt 25 ] ; then
#Date
y=$(echo $a| cut -c1-4)
m=$(echo $a| cut -c5-6)
d=$(echo $a| cut -c7-8)
begin=$(date +%s -d"$y-$m-$d $b")
now=$(date +%s)
end=$((begin+3600*$c))
if [ $now -gt $begin ] && [ $now -lt $end ] ; then
active=1
fi
else
echo "Bad format"
return 1
fi
softwareminuspath=${url##*/}
if [ $url ] && [ $active -eq 1 ]; then
v "Software version to download \"$softwareminuspath\""
local sysinfo=$(ubus call router.system info)
json_load "$sysinfo"
json_select system
json_get_var firmware firmware
local firmware_new=${softwareminuspath%.*} # remove extension (.w, .y or .y2) from filename
if [ "$firmware_new" != "$firmware" ] ; then
v "Firmware found $url will start flashing"
v "Currently running firmware: \"$firmware\""
v "Newly received firmware: \"$firmware_new\""
wait_for_dns $url
v "Start flashing"
/sbin/sysupgrade -v $url &
return 1
else
v "Firmware is up to date, nothing to do"
return 0
fi
fi
}
parse_dhcp_options()
{
local the_json="$@"
# process the dhcp_option_relay sections
dhcp_option_relay_parse "$the_json"
# Process IUP related DHCP options #
local privopt224 privopt225 privopt226 vendorspecinf httpurl128
local tftp bootfile vlanid vlanpriority interface
json_load "$the_json"
json_get_var interface interface
json_get_var privopt224 privopt224
json_get_var privopt225 privopt225
json_get_var privopt226 privopt226
json_get_var vendorspecinf vendorspecinf # option 43
json_get_var httpurl128 httpurl128
json_get_var tftp tftp # option 66
json_get_var bootfile bootfile #option 67
json_get_var vlanid vlanid # option 132
json_get_var vlanpriority vlanpriority # option 133
if [ $privopt224 ]; then
v "dhcp option 224 firmware url $privopt224"
handle_option224 $privopt224
[ $? -eq 1 ] && exit
fi
if [ $vendorspecinf ]; then
v "dhcp option 43 tr69 url $vendorspecinf"
url=${vendorspecinf%%,*}; rest=${vendorspecinf#*,}
provisioningcode=${rest%%,*};
[ -f /etc/config/cwmp ] && uci_set_state cwmp acs dhcp_url "$url"
uci_set_state provisioning iup urlcwmp "$url"
uci_set_state provisioning iup url "$url"
uci_set_state provisioning iup provisioningcode "$provisioningcode"
elif [ $httpurl128 ]; then
v "dhcp option 128 http config url $httpurl128"
uci_set_state provisioning iup urliup "$httpurl128"
elif [ $tftp ]; then
v "dhcp option 66 tftp config url $tftp"
if [ ${bootfile:0:1} == '/' ]; then
uci_set_state provisioning iup urliup "tftp://$tftp$bootfile"
else
uci_set_state provisioning iup urliup "tftp://$tftp/$bootfile"
fi
fi
# vlanid (and vlanpriority)
if [ -n "$vlanid" -a -n "$vlanpriority" ]; then
v "dhcp option 132 vlanid: ${vlanid} vlanpriority: ${vlanpriority}"
change_to_vlan ${vlanid} ${vlanpriority} ${interface}
elif [ -n "$vlanid" ]; then
v "dhcp option 132 vlanid: ${vlanid}"
change_to_vlan ${vlanid} 0 ${interface}
elif [ -n "$privopt225" ] || [ -n "$privopt226" ]; then
# opt225 and opt226 can be used together or separatly
if [ -n "$privopt225" ]; then
v "dhcp option 225: $privopt225"
# option225 is allowd to change only once per CPE
if [ "$(uci get -q ice.cloud.frozen)" != "1" ] ; then
uci set ice.cloud.frozen="1"
uci set ice.cloud.enabled="1"
uci set ice.cloud.server="$privopt225"
fi
fi
if [ -n "$privopt226" ]; then
v "dhcp option 226: $privopt226"
[ -z "$(uci get -q ice.dhcp)" ] && uci set ice.dhcp="dhcp"
uci set ice.dhcp.opt226connectionid="$privopt226"
ubus send dhcp.opt226connectionid '{"opt226connectionid":"","value":"'$privopt226'"}'
fi
uci commit
fi
}
# wait_for_default_gateway to become reachable
# return 0 if the default gateway is reachable
# return 1 if the default gateway is not reachable after $wait_time
wait_for_default_gateway()
{
local gateway
local device
local wait_time=120
local wait_interval=10
while [ true ] ; do
gateway=""
device=""
network_flush_cache
network_get_gateway gateway wan #true
network_get_device device wan
device="${device:+-I }$device"
if ping -q -w 1 -c 1 $device $gateway >/dev/null 2>&1 ; then
[ "$wait_time" -lt "60" ] && v "Default gateway $gateway is reachable"
sleep $wait_interval
return 0
fi
# try the nameservers too
for ns in $(grep nameserver /var/resolv.conf.auto | awk '{print $2}'); do
if ping -q -w 1 -c 1 $device $ns >/dev/null 2>&1 ; then
[ "$wait_time" -lt "60" ] && v "Name server $ns is reachable"
sleep $wait_interval
return 0
fi
done
v "Waiting for default gateway or name server. Countdown $wait_time seconds"
sleep $wait_interval
wait_time=$((wait_time - wait_interval))
[ "$wait_time" -le "0" ] && break # timer expired
done
return 1 # default gateway and name server are not reachable
}
main()
{
while [ -n "$1" ]; do
case "$1" in
-v) export VERBOSE="$(($VERBOSE + 1))";;
-q) export VERBOSE="$(($VERBOSE - 1))";;
--dhcp-options)
shift
parse_dhcp_options "$@"
exit 0
;;
-*)
echo "Invalid option: $1"
exit 1
;;
*) break;;
esac
shift;
done
if ! wait_for_default_gateway ; then
v "Neither default gateway nor name server are reachable. Aborting iup."
exit 1
fi
if [ ! -f $IUPMD5 ]; then
v "Creating file $IUPMD5"
touch $IUPMD5
fi
local iupurl
local configurl
local software
local sofwareminuspath
config_load provisioning
#check if iup should be used or if its overridden by /etc/config
config_get configurl configserver url
config_get reboot configserver reboot
config_get iupurl iup urliup
if [ $configurl ]; then
handle_provisioning configserver "0"
elif [ $iupurl ]; then
handle_provisioning iup "1"
else
v "No provisioning server configured"
exit
fi
config_load provisioning
config_foreach handle_provisioning subconfig "0"
config_get software uppgradeserver url
sofwareminuspath=${software##*/}
if [ $software ]; then
v "Software version to download \"$sofwareminuspath\""
local sysinfo=$(ubus call router.system info)
json_load "$sysinfo"
json_select system
json_get_var firmware firmware
json_get_var filesystem filesystem
if [ "$filesystem" == "JFFS2" ] ; then
firmware=$firmware.w
else
firmware=$firmware.y3
fi
if [ "$sofwareminuspath" == "${sofwareminuspath/$firmware/}" ] ; then
v "Software \"$software\""
handle_provisioning uppgradeserver "0"
else
v "Will not update software, already up to date"
fi
fi
if [ $CONF -eq 1 ]; then
mv "$IUPMD5.temp" $IUPMD5
fi
if [ "$reboot" == "on" ]; then
vv "Rebooting"
export REBOOT_REASON=iup
/sbin/reboot
fi
rm -rf /var/run/iup.pid
}
main $@

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