Compare commits

..

493 Commits

Author SHA1 Message Date
vdutta
615faa9fc4 obuspa: Rebase with obuspa-4.0 2021-05-17 18:19:04 +05:30
Rahul
32a9117209 periodicstats: update makefile 2021-05-14 19:11:36 +05:30
Anjan Chanda
0c04b05abe easy-soc-libs: 6.2.19 2021-05-14 15:38:01 +02:00
Shubham Sharma
a8bd624873 periodicstatsd : Changes for periodic statistics.
- missing library files under /usr/lib/bbfdm
	- Added global enable for periodicstats & disabled by default
	- updated to latest devel
2021-05-14 12:45:20 +00:00
vdutta
7a3dee480e bbf: Align ra option tag with dhcp option 2021-05-14 17:46:33 +05:30
Adam Borowski
ff67433326 updated endpoint manager to support howler tone 2021-05-14 13:31:53 +02:00
Sukru Senli
c2627f0005 urlfilter: disable by default 2021-05-14 12:46:23 +02:00
vdutta
eb8152c1c5 icwmp: Align with ubus socket path 2021-05-14 13:21:26 +05:30
Sukru Senli
94f5d5b98b owsd: adapt to ubus socket default path 2021-05-13 22:17:49 +02:00
vdutta
9d5b9d46e2 xmppc: Added test and docs 2021-05-13 23:50:59 +05:30
Suru Dissanaike
de27e0408d sulu: replace nginx with uci default 2021-05-12 19:45:00 +00:00
vdutta
61321b369c obuspa: Fix service entry 2021-05-12 23:42:38 +05:30
vdutta
d5071bf28d uspd: Fix uspd service entry 2021-05-12 23:40:37 +05:30
vdutta
b87959cc61 stunc: Added stun related params
- Moved stun related datamodel parameters from bbf to stunc
- Rename/align stun uci with package
- Updated schema and docs
2021-05-12 23:37:29 +05:30
vdutta
567e6d9870 bbf: Refactor stun related parameters to stunc 2021-05-12 23:35:22 +05:30
Anjan Chanda
13ed87c4be prj-unish: 1.0.0 2021-05-12 14:53:41 +02:00
Anjan Chanda
b084d4498b wifimngr: 10.0.4 2021-05-12 14:52:28 +02:00
Anjan Chanda
14253e84ac easy-soc-libs: 6.2.18 2021-05-12 14:51:16 +02:00
Suru Dissanaike
163c543147 sulu: avoid conflict with luci 2021-05-12 12:16:23 +00:00
Sukru Senli
7af90d69ee iop: switch from juci to luci as default webui 2021-05-12 13:12:14 +02:00
Sukru Senli
4e1a1c45a0 owsd: disable by default 2021-05-12 13:11:50 +02:00
Jakob Olsson
40612ae2ef map-topology: 2.0.1 2021-05-12 12:39:30 +02:00
Suru Dissanaike
2aae4c8109 sulu: added nginx dependency 2021-05-12 11:23:57 +02:00
Suru Dissanaike
4fe198c7bf sulu: changed path of nginx.conf 2021-05-12 11:20:40 +02:00
Suru Dissanaike
f514d81709 sulu: added nginx conf for port 8080 2021-05-12 09:16:58 +00:00
Jakob Olsson
2e6ac5bb49 rulengd: 1.2.3 2021-05-12 10:42:13 +02:00
Yalu Zhang
1d06631503 Update package [ dectmngr ]
Change the design of mapping between term_id, line_id and handset number
2021-05-12 10:12:47 +02:00
Jakob Olsson
dec1cb5146 owsd: 1.1.3 2021-05-12 10:03:18 +02:00
vdutta
1b5be728d2 obuspa: Align with ubus path 2021-05-12 13:29:52 +05:30
vdutta
5915f5a7c3 uspd: Align with ubus and event support 2021-05-12 13:27:56 +05:30
Jakob Olsson
1d41fce2a3 owsd: use NULL socket by default 2021-05-12 09:26:58 +02:00
Jakob Olsson
02fa994bce map-topology: 2.0.0 2021-05-12 08:58:19 +02:00
Sukru Senli
bed1a643a5 urlfilter: add dependency to iptables-mod-nfqueue 2021-05-12 00:10:21 +02:00
Sukru Senli
c8a33d6aaf endptmngr: 0.5
give silabs driver include path explicitly
2021-05-11 23:43:55 +02:00
Amin Ben Ramdhane
6ce52f1c87 bbf: 4.1.3 2021-05-11 19:57:28 +01:00
Jakob Olsson
a74127ade7 map-topology: 1.5.23 2021-05-11 16:46:34 +02:00
Sukru Senli
3095a304be imonitor: 1.0.1
adapt to new default ubus sock path
2021-05-11 15:56:56 +02:00
Suru Dissanaike
ae26c1e9a8 sulu: update makefile for vite settings 2021-05-11 11:42:28 +00:00
Suru Dissanaike
64dbe2aac5 sulu: 0.2.3 2021-05-11 11:40:46 +00:00
Suru Dissanaike
6cad2afe3a sulu: 0.2.2 2021-05-11 10:32:53 +00:00
Yalu Zhang
501193da98 Rename etc/init.d/dect to etc/init.d/dectmngr
Also remove some files for USB DECT sound driver configuration
2021-05-11 11:15:35 +02:00
Sukru Senli
21cabf5141 endptmngr: remove copyright from init script 2021-05-11 10:59:29 +02:00
Sukru Senli
aa91b4d17e endptmngr: add init script and remove ENDPT_OPEN 2021-05-11 10:58:17 +02:00
jjoseph
119f285d84 Update feed [iopsys] package [urlfilter] 2021-05-11 10:00:52 +05:30
Suru Dissanaike
75bbf1524a sulu: update pkg_version 2021-05-10 13:41:57 +00:00
Suru Dissanaike
082bf1560d Update Makefile 2021-05-10 13:29:39 +00:00
jjoseph
fec3683f7c urlfilter : Change permission of init.d file 2021-05-10 14:18:52 +05:30
Marin Karamihalev
8a02e8dedf Update Makefile 2021-05-07 13:11:28 +00:00
Bartlomiej Grzeskowiak
1c9afee81c iopsys-mediatek: Add iopsys-mediatek (bpi_bananapi-r64)
- ./iop genconfig -c bpi_bananapi-r64
2021-05-07 11:15:39 +00:00
Sukru Senli
97e44aac0a iop: genconfig: fix juci makefile path 2021-05-06 18:43:23 +02:00
Sukru Senli
8aa7978f70 easy-soc-libs: remove intel dependency 2021-05-06 18:01:17 +02:00
Sukru Senli
8319f90d8b juci: move from juci to iopsys feed 2021-05-06 17:27:17 +02:00
Sukru Senli
989ff55cc7 bulut: move from 3rdparty to iopsys feed 2021-05-06 17:14:06 +02:00
Sukru Senli
0e8ecee541 sulu: move from 3rdparty to iopsys feed 2021-05-06 17:13:53 +02:00
Yalu Zhang
e82f77983d Update package [ dectmngr ]
Explicitly enable the encryption between the base station and handsets
2021-05-06 14:44:21 +00:00
Andreas Gnau
181b7688e8 Update feed [ iopsys ] package [ fdtextract ]
-------------------------------------------------------------------------------
* 485a38b Merge branch 'agnau-print-to-stderr' into 'master'
* bedf694 Print errors to stderr instead of stdout
-------------------------------------------------------------------------------
commit 485a38bc4eaf2a54d080b8529d5130b2955626d1
Author: Jonas Höglund <jonas.hoglund@iopsys.eu>
Date: 2021-05-05 15:06:22 +0000

    Merge branch 'agnau-print-to-stderr' into 'master'

    Print errors to stderr instead of stdout

    See merge request iopsys/fdtextract!1
Base directory -> /
 fdtextract.c | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)
-------------------------------------------------------------------------------
commit bedf694df0eee164f3b21f3bbffaf4dc379fa002
Author: Andreas Gnau <andreas.gnau@iopsys.eu>
Date: 2021-05-05 10:16:41 +0200

    Print errors to stderr instead of stdout

Base directory -> /
 fdtextract.c | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)
-------------------------------------------------------------------------------
2021-05-06 13:45:29 +02:00
Yalu Zhang
c8de1c1d35 Update package [ dectmngr ]
Reject SUOTA request from the base station as it may cause handset hang
2021-05-05 15:33:22 +00:00
Sukru Senli
8540d5ebbf crun: use openwrt upstream version 2021-05-05 00:16:58 +02:00
Amin Ben Ramdhane
c48cd18584 bbf: 4.1.2 2021-05-04 16:14:32 +01:00
Jakob Olsson
3ccc71658f map-controller: 2.4.12 2021-05-04 11:10:33 +02:00
Amin Ben Ramdhane
c9f0c9c92b bulkdata: fix compilation error 2021-05-04 09:14:01 +01:00
Amin Ben Ramdhane
18ff1d3965 bbf: 4.1.1 2021-05-03 19:06:44 +01:00
Andreas Gnau
d6bb313565 iop: Remove tc
The tc-utility from iproute2 is seldomly needed. In OpenWrt 21.02 there
are two variants, tc-full and tc-tiny, but since it is not needed,
remove it.
2021-05-03 16:46:58 +02:00
Jakob Olsson
13d33c03a2 map-agent: add loop detection script 2021-05-03 15:03:58 +02:00
Anjan Chanda
0a91cd5acb wfadatad: 3.3.1 2021-05-03 09:58:12 +02:00
vdutta
ad0867991f stunc: Added ci and docs 2021-04-30 20:48:56 +05:30
Andreas Gnau
18545a1fb9 iop: Remove usbreset from config
usbreset has been moved to the usbutils package, but it is not needed,
anyways. Remove it.
2021-04-30 11:35:01 +02:00
Andreas Gnau
0378afa773 iop: Remove alsa-lib from config
One of its dependencies causes issues and alsalib is not used by
anything.
2021-04-30 11:35:01 +02:00
Jakob Olsson
06b4b106e1 map-agent: 3.5.20 2021-04-30 11:33:00 +02:00
Jakob Olsson
916ecab7c9 map-agent: 3.5.19 2021-04-29 18:39:12 +02:00
Jakob Olsson
543c3da5dc map-topology: 1.5.22 2021-04-29 14:06:45 +02:00
Anjan Chanda
2bfd924868 wifimngr: 9.3.2 2021-04-28 22:00:22 +02:00
Anjan Chanda
c12bc7eee9 easy-soc-libs: 6.2.12 2021-04-28 21:59:40 +02:00
Jonas Höglund
e9c5c111c5 Update feed [ iopsys ] package [ fdtextract ]
-------------------------------------------------------------------------------
* e92fb43 Enable output of extrated file to stdout.
-------------------------------------------------------------------------------
commit e92fb432f7ec61d8cb2066dba38cf955dcd6c676
Author: Jonas Höglund <jonas.hoglund@embeddednation.com>
Date: 2021-04-28 10:06:23 +0200

    Enable output of extrated file to stdout.

Base directory -> /
 fdtextract.c | 22 +++++++++++-----------
 1 file changed, 11 insertions(+), 11 deletions(-)
-------------------------------------------------------------------------------
2021-04-28 11:14:58 +02:00
Sukru Senli
f6c3a62378 urlfilter: install default config file 2021-04-27 23:00:05 +02:00
Andreas Gnau
362fb7b238 peripheral_manager: Remove bcmkernel dependency
As Broadcom has moved to standard interfaces, peripheral_manager no
longer depends on Broadcom headers or executables.

Remove the dependency and preprocessor options.
2021-04-27 14:21:40 +02:00
Andreas Gnau
020c8f29e1 Update feed [ iopsys ] package [ peripheral_manager ]
-------------------------------------------------------------------------------
* 785166a Remove BRCM_BOARD define
* 86178d8 Remove prox_px3220 driver
* 6069bf5 Remove vox driver
* 3897735 Remove wlctl driver
* 3aadf4a CMakeLists.txt: Run cmake-format
* 636c4e1 update README for doc portal
* d055dd8 update README.md
-------------------------------------------------------------------------------
commit 785166a9861a119623556163179915727896156b
Author: Andreas Gnau <andreas.gnau@iopsys.eu>
Date: 2021-04-23 12:37:22 +0200

    Remove BRCM_BOARD define

    No drivers depend on Broadcom headers anymore, remove the BRCM_BOARD define.

    Peripheral-manager has neither a build nor a runtime dependency on the
    Broadcom SDK.

Base directory -> /
 CMakeLists.txt | 4 ----
 1 file changed, 4 deletions(-)
-------------------------------------------------------------------------------
commit 86178d8dfc51f67b3492ad603106b1fc29d6b285
Author: Andreas Gnau <andreas.gnau@iopsys.eu>
Date: 2021-04-23 12:32:39 +0200

    Remove prox_px3220 driver

    This driver is no longer used by any supported target. Remove it.

Base directory -> /
 src/button.c      |  16 -----
 src/prox_px3220.c | 193 ------------------------------------------------------
 src/prox_px3220.h |   9 ---
 src/server.c      |   6 --
 4 files changed, 224 deletions(-)
-------------------------------------------------------------------------------
commit 6069bf5aea4dbb2ebfdd912ebb2d3c95f90ba86c
Author: Andreas Gnau <andreas.gnau@iopsys.eu>
Date: 2021-04-21 20:10:06 +0200

    Remove vox driver

    This driver is no longer used by any supported target and neither is it
    built or referenced by any other file. Remove it.

Base directory -> /
 src/vox.c      | 176 --------------------------------------------------------
 src/vox_test.c | 178 ---------------------------------------------------------
 2 files changed, 354 deletions(-)
-------------------------------------------------------------------------------
commit 3897735e4b55bed66a2b4a2ffc3ee3766e502ec5
Author: Andreas Gnau <andreas.gnau@iopsys.eu>
Date: 2021-04-21 19:44:50 +0200

    Remove wlctl driver

    This driver is no longer used by any supported target. Remove it.

Base directory -> /
 CMakeLists.txt  |   2 +-
 src/server.c    |   4 --
 src/wlctl_led.c | 133 --------------------------------------------------------
 3 files changed, 1 insertion(+), 138 deletions(-)
-------------------------------------------------------------------------------
commit 3aadf4a6d69ed1db02376e7a20f751e8bbf408c5
Author: Andreas Gnau <andreas.gnau@iopsys.eu>
Date: 2021-04-21 10:49:42 +0200

    CMakeLists.txt: Run cmake-format

    Amongst consistent indendation and following best-practices such as
    lowercase function-names, this puts individual list items on a separate
    line, making diffs easier to read.

Base directory -> /
 CMakeLists.txt | 190 +++++++++++++++++++++++++++++++++++----------------------
 1 file changed, 118 insertions(+), 72 deletions(-)
-------------------------------------------------------------------------------
commit 636c4e1568828d85def657c324c78e341edccaad
Author: Sukru Senli <sukru.senli@iopsys.eu>
Date: 2021-04-11 13:11:29 +0200

    update README for doc portal

Base directory -> /
 README.md                      | 494 ++++++++++-------------------------------
 img/peripheral-manager.png     | Bin 0 -> 60660 bytes
 img/peripheral_led_mapping.png | Bin 0 -> 25497 bytes
 3 files changed, 115 insertions(+), 379 deletions(-)
-------------------------------------------------------------------------------
commit d055dd8a4a3aa53550a1b1f9db94225fe7c0f61b
Author: Benjamin Larsson <benjamin.larsson@iopsys.eu>
Date: 2021-04-11 13:08:18 +0200

    update README.md

Base directory -> /
 README.md | 477 ++++++++++++++++++++++++++++++++++++++++++++++++++++++--------
 1 file changed, 420 insertions(+), 57 deletions(-)
-------------------------------------------------------------------------------
2021-04-27 13:44:23 +02:00
Anjan Chanda
10bf43efa9 wfadatad: 3.3.0 2021-04-27 11:51:50 +02:00
Anjan Chanda
5e3a7e7af0 prj-unish: 0.7.0 2021-04-27 11:50:38 +02:00
Anjan Chanda
a76c0a433d wifimngr: 9.3.0 2021-04-27 11:47:53 +02:00
Anjan Chanda
026ccd759e easy-soc-libs: 6.2.10 2021-04-27 11:47:11 +02:00
nevadita.chatterjee
0df9c6fc36 host: Adding sighup for network change 2021-04-27 08:52:15 +00:00
Jakob Olsson
3751ae692a map-topology: 1.5.21 2021-04-27 10:50:24 +02:00
Filip Matusiak
0160f21f10 map-controller: init.d start on reload if not running 2021-04-27 08:48:10 +00:00
Jakob Olsson
52f35c0763 map-agent: 3.5.18 2021-04-27 10:44:44 +02:00
Sukru Senli
e650d27f76 urlfilter: start urlfilter only if globally enabled 2021-04-27 09:50:48 +02:00
Sukru Senli
8d6d7626b8 iop: select urlfilter by default 2021-04-27 09:35:23 +02:00
Jakob Olsson
e6c6b2c9ae rulengd: 1.2.2 2021-04-26 17:10:52 +02:00
Amin Ben Ramdhane
67693a8954 bbf: 4.1.0 2021-04-26 15:24:32 +01:00
Amin Ben Ramdhane
88ed893a07 bbf: 4.0.9 2021-04-23 11:47:10 +01:00
Amin Ben Ramdhane
fd369ac2fb bbf: 4.0.8 2021-04-22 14:50:19 +01:00
Amin Ben Ramdhane
c1bb3a5c0f bbf: 4.0.7 2021-04-22 10:25:26 +01:00
Anjan Chanda
d1d455a51d wifimngr: 9.2.3 2021-04-21 22:21:10 +02:00
Simon Tate
fe63598021 shflags: skip PKG_MIRROR_HASH check
with latest OpenWRT, the mirror hash is now checked, even if dl/ item exists. Adding skip, stops it from always downloading again.
2021-04-21 10:45:58 +00:00
Simon Tate
7853733a75 libtrace: skip PKG_MIRROR_HASH check
with latest OpenWRT, the mirror hash is now checked, even if dl/ item exists. Adding skip, stops it from always downloading again.
2021-04-21 10:45:58 +00:00
Sukru Senli
7d991d89be move bulkdata, twamp and udpechoserver to their individual repos 2021-04-20 19:19:26 +02:00
Sukru Senli
88892e5f7c move xmppc & stunc code to their individual repos 2021-04-20 18:58:47 +02:00
jjoseph
b30434d872 Update feed [iopsys] package [urlfilter] 2021-04-20 19:05:10 +05:30
Sukru Senli
9995b4a3f2 icwmp: remove CONFIG_CWMP_SCRIPTS_FULL 2021-04-16 18:45:31 +02:00
Anjan Chanda
27c515e258 wifimngr: 9.2.1 2021-04-16 16:51:52 +02:00
Marek Puzyniak
8373ffae75 easy-soc-libs: update version and hash
Signed-off-by: Marek Puzyniak <marek.puzyniak@iopsys.eu>
2021-04-16 13:39:33 +00:00
sverma
888b247706 wfadatad: HE caps support added (3.2.5). 2021-04-16 15:51:34 +05:30
Jakob Olsson
86eed4ba84 map-agent: 3.5.17 2021-04-16 10:18:23 +02:00
Grzegorz Sluja
63335fb119 Update package [ dectmngr ]
Fix dectmngr crash when caller id is empty
2021-04-16 07:44:44 +02:00
Jakob Olsson
bc3dc5c3db map-controller: 2.4.11 2021-04-15 17:30:38 +02:00
Filip Matusiak
0097bc5d89 map-controller: add external trigger logic to init.d 2021-04-15 15:17:00 +00:00
Yalu Zhang
4b04b8445f Update package [ dectmngr ]
Set RFPI value during the start up
2021-04-15 17:08:59 +02:00
Jakob Olsson
317e644e11 3.5.16 2021-04-15 17:08:34 +02:00
Yalu Zhang
1ac9c4f057 Update package [ dectmngr ]
/etc/init.d/dect: gets DECT RFPI from the board DB and passes it to dectmngr
via a command line argument.
2021-04-15 17:05:34 +02:00
Omar Kallel
35f02d2891 icwmp: 7.0.1-2021-04-15 2021-04-15 12:19:44 +01:00
Omar Kallel
067e3dc7b8 icwmp: Fix compiling error 2021-04-15 11:49:06 +01:00
Omar Kallel
3d9cfc03fb icwmp: 7.0.0-2021-04-15 2021-04-15 11:11:02 +01:00
Erik Karlsson
a6c3c54091 mcastmngr: do not overwrite configuration if snooping section exists 2021-04-15 07:57:06 +00:00
Janusz Dziedzic
dbe1a31d09 easy-soc-libs: by default use MAC80211 target
If TARGET_PLATFORM is not set, by default use
MAC80211 target.

Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
2021-04-14 13:24:16 +00:00
Janusz Dziedzic
d5f0c80b2e update easy-soc-libs
Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
2021-04-14 13:21:51 +00:00
Jakob Olsson
fd60b8121c map-controller: 2.4.10 2021-04-13 15:11:00 +02:00
Jakob Olsson
0001b91c41 map-agent: 3.5.15 2021-04-13 15:10:03 +02:00
Janusz Dziedzic
733c88df8c update easy-soc-libs and wifimngr
kick to newer version

Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
2021-04-12 18:35:01 +00:00
Oskar Viljasaar
1d1c8a25f2 iop: select the nohup utility in the busybox config
This is related to the ubus fwbank.upgrade() work as we would
like to implement this function in an asynchronous way.
2021-04-08 15:45:29 +00:00
Jonas Höglund
c47857f950 Update feed [ iopsys ] package [ fdtextract ]
-------------------------------------------------------------------------------
* 152a2d9 Pad hash hex output
-------------------------------------------------------------------------------
commit 152a2d96fea896c1607bd5259e3076750693dd59
Author: Jonas Höglund <jonas.hoglund@embeddednation.com>
Date: 2021-04-08 11:00:12 +0200

    Pad hash hex output

Base directory -> /
 fdtextract.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
-------------------------------------------------------------------------------
2021-04-08 11:01:20 +02:00
Sukru Senli
d503d4390e iop: select gre by default 2021-04-08 10:12:52 +02:00
Anjan Chanda
15165b3066 prj-unish: 0.2.0 2021-04-07 15:03:49 +02:00
Jonas Höglund
0fe9ac1a0d Update feed [ iopsys ] package [ fdtextract ]
-------------------------------------------------------------------------------
* a15079b Update README
* 97c3897 Update README
* 31e6cc7 Don't print the algo with the hash.
* 9246b1c Get attribute from root node.
* 1d1556a Print hash algo.
* cdb7ee7 Check hash algo.
* 30d1aed Get hash of image.
* b5bb0eb Extract image to file.
* 34c12c4 Write image to file
* 03328f9 Get size and offset of image.
-------------------------------------------------------------------------------
commit a15079b20b8ded68e5f91f69b79993ef8afd52ab
Author: Jonas Höglund <jonas.hoglund@embeddednation.com>
Date: 2021-04-07 09:24:33 +0200

    Update README

Base directory -> /
 README.md | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)
-------------------------------------------------------------------------------
commit 97c38977f0f843b02b82c156fbffb56ebd49246c
Author: Jonas Höglund <jonas.hoglund@embeddednation.com>
Date: 2021-04-07 09:23:05 +0200

    Update README

Base directory -> /
 README.md | 28 +++++++++++++++++++++-------
 1 file changed, 21 insertions(+), 7 deletions(-)
-------------------------------------------------------------------------------
commit 31e6cc7e7ecdc6aec29c99c7feedfb19624f3b59
Author: Jonas Höglund <jonas.hoglund@embeddednation.com>
Date: 2021-04-07 09:20:01 +0200

    Don't print the algo with the hash.

Base directory -> /
 fdtextract.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)
-------------------------------------------------------------------------------
commit 9246b1c36f083bda292c876273465a7713a5727a
Author: Jonas Höglund <jonas.hoglund@embeddednation.com>
Date: 2021-04-07 09:18:09 +0200

    Get attribute from root node.

Base directory -> /
 fdtextract.c | 54 +++++++++++++++++++++++++++++++++++++++++++++++-------
 1 file changed, 47 insertions(+), 7 deletions(-)
-------------------------------------------------------------------------------
commit 1d1556a5b1f5a4206bb24430562227e8727b9d88
Author: Jonas Höglund <jonas.hoglund@embeddednation.com>
Date: 2021-04-06 15:05:11 +0200

    Print hash algo.

Base directory -> /
 fdtextract.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)
-------------------------------------------------------------------------------
commit cdb7ee7e3365841bd944b897328cebe441083b9c
Author: Jonas Höglund <jonas.hoglund@embeddednation.com>
Date: 2021-04-06 14:53:19 +0200

    Check hash algo.

Base directory -> /
 fdtextract.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)
-------------------------------------------------------------------------------
commit 30d1aedc1643f53ea0465a096f5ed1bf6f94b876
Author: Jonas Höglund <jonas.hoglund@embeddednation.com>
Date: 2021-04-06 14:32:29 +0200

    Get hash of image.

Base directory -> /
 fdtextract.c | 34 +++++++++++++++++++++++++++++++---
 1 file changed, 31 insertions(+), 3 deletions(-)
-------------------------------------------------------------------------------
commit b5bb0eb23b47298603553e4a99f7c60c59386018
Author: Jonas Höglund <jonas.hoglund@embeddednation.com>
Date: 2021-04-06 13:49:28 +0200

    Extract image to file.

Base directory -> /
 fdtextract.c | 15 ++++++---------
 1 file changed, 6 insertions(+), 9 deletions(-)
-------------------------------------------------------------------------------
commit 34c12c48bc6900b0c7d70ad95f12fc102507b816
Author: Jonas Höglund <jonas.hoglund@embeddednation.com>
Date: 2021-04-06 11:47:56 +0200

    Write image to file

Base directory -> /
 fdtextract.c | 17 ++++++++++++++++-
 1 file changed, 16 insertions(+), 1 deletion(-)
-------------------------------------------------------------------------------
commit 03328f97927199df098cb1fe49efc842d213a7a4
Author: Jonas Höglund <jonas.hoglund@embeddednation.com>
Date: 2021-04-06 11:13:28 +0200

    Get size and offset of image.

Base directory -> /
 fdtextract.c | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)
-------------------------------------------------------------------------------
2021-04-07 09:45:24 +02:00
Amin Ben Ramdhane
99a4fe3f05 bbf: 4.0.6 2021-04-06 15:10:52 +01:00
Jonas Höglund
ca1e348b5c Rename dumpimage to fdtextract 2021-04-06 10:46:22 +02:00
Jonas Höglund
550330cb33 Update feed [ iopsys ] package [ dumpimage ]
-------------------------------------------------------------------------------
* 9ca11d5 Check input
-------------------------------------------------------------------------------
commit 9ca11d5171989c728ed80a641c0d405b5db8e96b
Author: Jonas Höglund <jonas.hoglund@embeddednation.com>
Date: 2021-04-01 11:10:08 +0200

    Check input

Base directory -> /
 dumpimage.c | 5 +++++
 1 file changed, 5 insertions(+)
-------------------------------------------------------------------------------
2021-04-01 11:12:40 +02:00
Jonas Höglund
e427dd0f09 Fix spelling error 2021-04-01 11:12:06 +02:00
Jonas Höglund
2eb3c89f36 Update feed [ iopsys ] package [ dumpimage ]
-------------------------------------------------------------------------------
* b70c60b Fix compilation
-------------------------------------------------------------------------------
commit b70c60b751e22d8286028fed3c7bfbf4b576cbf0
Author: Jonas Höglund <jonas.hoglund@embeddednation.com>
Date: 2021-04-01 10:52:38 +0200

    Fix compilation

Base directory -> /
 .gitignore | 8 ++++++++
 Makefile   | 8 ++++----
 2 files changed, 12 insertions(+), 4 deletions(-)
-------------------------------------------------------------------------------
2021-04-01 10:53:04 +02:00
Jonas Höglund
6408e0254c Fix dumpimage Makefile 2021-04-01 10:41:17 +02:00
Jonas Höglund
7db30978e3 Add dumpimage tool. 2021-04-01 10:36:16 +02:00
Jakob Olsson
cbc7711204 map-controller: 2.4.9 2021-03-31 17:54:40 +02:00
Amin Ben Ramdhane
263cdbc501 bbf: 4.0.5 2021-03-31 16:44:53 +01:00
Jakob Olsson
0bc5379667 ieee1905: dont log stdout to syslog 2021-03-31 17:19:02 +02:00
Jakob Olsson
f334f25b12 wfadatad: 3.2.4 2021-03-31 16:50:49 +02:00
Jakob Olsson
b54a6f9f52 map-agent: 3.1.14 2021-03-31 15:50:46 +02:00
Jakob Olsson
5eba44b51f map-controller: 2.4.8 2021-03-31 15:19:54 +02:00
Amin Ben Ramdhane
79aa793d47 TWAMP: fix the parent path of TWAMPReflector object 2021-03-31 10:01:43 +01:00
Jakob Olsson
6f40b3fe47 map-topology: 1.5.20 2021-03-31 10:49:55 +02:00
vdutta
57401ea50e obuspa: Percent encode default EndpointID 2021-03-31 13:03:05 +05:30
Jakob Olsson
469a1f3dd2 map-topology: 1.5.19 2021-03-31 08:14:05 +02:00
Jakob Olsson
ab77076213 map-topology: 1.5.18 2021-03-30 17:40:23 +02:00
Jakob Olsson
f377f135bd map-topology: 1.5.17 2021-03-30 17:24:50 +02:00
Jakob Olsson
0041b46b67 map-topology: 1.5.16 2021-03-30 16:53:17 +02:00
Amin Ben Ramdhane
bf14a2013c bbf: 4.0.4 2021-03-30 14:58:22 +01:00
Amin Ben Ramdhane
3706193d98 bbf: 4.0.3 2021-03-29 16:39:49 +01:00
Jakob Olsson
323376f6a0 map-topology: 1.5.15 2021-03-29 17:05:48 +02:00
Jakob Olsson
d09cc5cf02 map-topology: 1.5.14 2021-03-29 15:52:00 +02:00
Jakob Olsson
218faefc0f map-topology: 1.5.13 2021-03-29 14:39:32 +02:00
Amin Ben Ramdhane
d80f3147fd bbf: 4.0.2 2021-03-29 12:56:03 +01:00
Yalu Zhang
2d8c76ba58 Update package [ dectmngr ]
Change log path from /tmp to /var/log/dectmngr
2021-03-29 11:45:07 +02:00
Sukru Senli
083fd0376f questd: 5.2.2
disable network module

simulate router.network object via rpcd script to support juci clients widget
2021-03-27 09:47:30 +01:00
Sukru Senli
22e2cb491a bbf: 4.0.1 2021-03-26 18:54:25 +01:00
Jakob Olsson
3f63c60a9d map-topology: 1.5.12 2021-03-26 17:55:16 +01:00
Jakob Olsson
e9c6d5d4a4 map-topology: 1.5.11 2021-03-26 16:32:28 +01:00
Jakob Olsson
b26e80748c map-topology: 1.5.10 2021-03-26 15:55:42 +01:00
Jakob Olsson
d683c240a9 map-topology: 1.5.9 2021-03-26 15:18:51 +01:00
vdutta
defb23338a uspd: Fix vendor extn in parallel calls 2021-03-26 17:47:37 +05:30
Jakob Olsson
aabf092369 map-topology: 1.5.8 2021-03-26 10:27:59 +01:00
Sukru Senli
84b63deafa uspd: correct commit hash 2021-03-25 20:26:47 +01:00
Amin Ben Ramdhane
1ffc4255ad bbf: new vendor extension mechanism 2021-03-25 19:37:47 +01:00
Jakob Olsson
481a055d54 map-topology: 1.5.7 2021-03-25 17:43:56 +01:00
Jakob Olsson
9cd40a75d5 map-agent: 3.5.13 2021-03-25 16:42:29 +01:00
Jakob Olsson
b606d834d7 map-controller: 2.4.7 2021-03-25 15:23:45 +01:00
Jakob Olsson
f752c9fbce ieee1905: 2.1.44 2021-03-25 15:22:16 +01:00
Anjan Chanda
d7ad33b2ba iop: select package uuidgen 2021-03-25 14:19:27 +01:00
Omar Kallel
425be291f8 icwmp: 6.5.5-2021-03-25 2021-03-25 10:59:00 +01:00
Jakob Olsson
3f4e770a3f ieee1905: 2.1.43 2021-03-25 10:06:57 +01:00
Janusz Dziedzic
9b27f7c349 wifimngr: start wps on all APs
Enumerate all APs and start WPS.
Check if supplicant connected.

Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
2021-03-24 17:07:36 +00:00
vdutta
184cb1c823 obuspa: Verify object create/delete notifications 2021-03-24 19:05:10 +05:30
vdutta
69fc6842c2 uspd: Align error message format 2021-03-24 18:04:53 +05:30
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
199 changed files with 2792 additions and 11567 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

@@ -1,23 +1,27 @@
if PACKAGE_libbbfdm
config LIBBBFDM_VENDOR_PREFIX
string "Vendor Prefix"
default "X_IOPSYS_EU_"
config BBF_VENDOR_EXTENSION
bool "Enable Vendor Extension"
default y
config BBF_VENDOR_LIST
string "Vendor List"
default "iopsys"
config BBF_VENDOR_PREFIX
string "Vendor Prefix"
default "X_IOPSYS_EU_"
config BBF_TR181
bool "Compile with tr181 device features"
bool "Enable TR-181 Data Model Support"
default y
config BBF_TR104
bool "Compile with tr104 voice features"
bool "Enable TR-104 Data Model Support"
default y
config BBF_TR143
bool "Compile with tr143 diagnostics features"
default y
config BBF_TR157
bool "Compile with tr157 bulkdata collector features"
bool "Enable TR-143 Data Model Support"
default y
endif

View File

@@ -1,17 +1,18 @@
#
# Copyright (C) 2019 IOPSYS
# Copyright (C) 2021 IOPSYS
#
include $(TOPDIR)/rules.mk
PKG_NAME:=libbbfdm
PKG_VERSION:=3.2.5
PKG_VERSION:=4.1.5
PKG_FIXUP:=autoreconf
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/bbf.git
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=301cbd0bed43ed9274bad3e8bcddcfd807755412
PKG_SOURCE_VERSION:=838372a16ed0029cd681626bb5adb722f6a7681e
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)
@@ -24,6 +25,7 @@ include $(INCLUDE_DIR)/package.mk
define Package/libbbf_api
SECTION:=libs
CATEGORY:=Libraries
SUBMENU:=BBF
TITLE:=Library for libbbfdm API
DEPENDS:=+libuci +libubox +libubus +libblobmsg-json +libjson-c
endef
@@ -31,8 +33,9 @@ endef
define Package/libbbfdm
SECTION:=libs
CATEGORY:=Libraries
SUBMENU:=BBF
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 +47,7 @@ define Package/libbbf_api/description
endef
define Package/libbbfdm/description
Library contains the data model tree. It includes TR181, TR104, TR143 and TR157 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)
@@ -54,7 +57,8 @@ define Build/Prepare
endef
endif
TARGET_CFLAGS += -DCUSTOM_PREFIX=\\\"$(CONFIG_LIBBBFDM_VENDOR_PREFIX)\\\"
TARGET_CFLAGS += -DBBF_VENDOR_LIST=\\\"$(CONFIG_BBF_VENDOR_LIST)\\\"
TARGET_CFLAGS += -DBBF_VENDOR_PREFIX=\\\"$(CONFIG_BBF_VENDOR_PREFIX)\\\"
TARGET_CFLAGS += \
-D_GNU_SOURCE -D_AADJ
@@ -74,11 +78,6 @@ CONFIGURE_ARGS += \
--enable-tr143
endif
ifeq ($(CONFIG_BBF_TR157),y)
CONFIGURE_ARGS += \
--enable-tr157
endif
ifeq ($(CONFIG_PACKAGE_libopenssl),y)
CONFIGURE_ARGS += \
--enable-libopenssl
@@ -89,6 +88,15 @@ CONFIGURE_ARGS += \
--enable-libmbedtls
endif
ifeq ($(CONFIG_BBF_VENDOR_EXTENSION),y)
CONFIGURE_ARGS += \
--enable-vendor-extension
CONFIGURE_ARGS += \
BBF_VENDOR_LIST="$(CONFIG_BBF_VENDOR_LIST)"
endif ##CONFIG_BBF_VENDOR_EXTENSION
define Package/libbbf_api/install
$(INSTALL_DIR) $(1)/lib
$(CP) $(PKG_BUILD_DIR)/bin/.libs/libbbf_api.so* $(1)/lib/
@@ -98,8 +106,9 @@ define Package/libbbfdm/install
$(INSTALL_DIR) $(1)/lib
$(CP) $(PKG_BUILD_DIR)/bin/.libs/libbbfdm.so* $(1)/lib/
$(INSTALL_DIR) $(1)/usr/share/bbfdm
$(CP) $(PKG_BUILD_DIR)/scripts/functions $(1)/usr/share/bbfdm
$(CP) $(PKG_BUILD_DIR)/scripts/* $(1)/usr/share/bbfdm
$(INSTALL_DIR) $(1)/etc/bbfdm
$(INSTALL_DIR) $(1)/etc/bbfdm/dmmap
$(INSTALL_DIR) $(1)/etc/bbfdm/json
$(INSTALL_DIR) $(1)/usr/lib/bbfdm
endef

View File

@@ -8,10 +8,20 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=bulkdata
PKG_VERSION:=1.0.0
PKG_VERSION:=1.0.1
PKG_SOURCE_VERSION:=e4f39d1bf4678fc05b9d02e81b194c70719909e4
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/bulkdata.git
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_MIRROR_HASH:=skip
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
PKG_LICENSE:=GPL-2.0-only
PKG_LICENSE_FILES:=LICENSE
include $(INCLUDE_DIR)/package.mk
define Package/$(PKG_NAME)
@@ -26,10 +36,6 @@ define Package/$(PKG_NAME)/description
BBF BulkData Collection
endef
define Build/Prepare
$(CP) ./src/* $(PKG_BUILD_DIR)/
endef
TARGET_CFLAGS += \
-D_GNU_SOURCE
@@ -41,4 +47,4 @@ define Package/$(PKG_NAME)/install
$(CP) ./files/* $(1)/
endef
$(eval $(call BuildPackage,$(PKG_NAME)))
$(eval $(call BuildPackage,$(PKG_NAME)))

View File

@@ -1,23 +0,0 @@
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
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)

View File

@@ -1,265 +0,0 @@
/*
* 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;
}

View File

@@ -1,31 +0,0 @@
/*
* 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

View File

@@ -1,144 +0,0 @@
/*
* 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;
}

View File

@@ -1,18 +0,0 @@
/*
* 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 */

View File

@@ -1,105 +0,0 @@
# 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 |

View File

@@ -1,450 +0,0 @@
/*
* 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);
}
}

View File

@@ -1,69 +0,0 @@
/*
* 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

View File

@@ -1,523 +0,0 @@
/*
* 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;
}

View File

@@ -1,103 +0,0 @@
/*
* 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

File diff suppressed because it is too large Load Diff

View File

@@ -1,29 +0,0 @@
/*
* 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_

View File

@@ -1,196 +0,0 @@
/*
* 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;
}

View File

@@ -1,37 +0,0 @@
/*
* 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

View File

@@ -1,57 +0,0 @@
/*
* 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();
}
}

View File

@@ -1,28 +0,0 @@
/*
* 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

View File

@@ -1,336 +0,0 @@
/*
* 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 *)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);
}
}

View File

@@ -1,24 +0,0 @@
/*
* 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_ */

View File

@@ -1,62 +0,0 @@
/*
* 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;
}

View File

@@ -1,19 +0,0 @@
/*
* 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 */

38
bulut/Makefile Normal file
View File

@@ -0,0 +1,38 @@
#
# Copyright (C) 2019 IOPSYS
#
include $(TOPDIR)/rules.mk
PKG_NAME:=bulut
PKG_VERSION:=0.2
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://dev.iopsys.eu/bulut/bulut-gw-client.git
PKG_SOURCE_VERSION:=227700c44817afa2c392fa08bf4cf70fa6177f01
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)
include $(INCLUDE_DIR)/package.mk
define Package/bulut
CATEGORY:=Utilities
DEPENDS:=
TITLE:=bulut
endef
TARGET_CFLAGS += \
-I$(STAGING_DIR)/usr/include
define Package/bulut/description
obuspa keys
endef
define Package/bulut/install
$(CP) $(PKG_BUILD_DIR)/files/* $(1)/
endef
$(eval $(call BuildPackage,bulut))

82
crun/Makefile Normal file
View File

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

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.13
LOCAL_DEV=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/dectmngr.git
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=2c4fdf3f3ffc299c7596e6d0dc4be86485250533
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)))

View File

@@ -0,0 +1,66 @@
#!/bin/sh /etc/rc.common
source /lib/functions/uci-defaults.sh
START=70
STOP=12
USE_PROCD=1
NAME=dectmngr
PROG=/usr/sbin/dectmngr
LOG_PATH=/var/log/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() {
local rfpi=
local opt_rfpi=
test $(db get hw.board.hasDect) = "0" && return
echo 1 > /sys/class/gpio/gpio14/value
rfpi=$(db -q get hw.board.dect_rfpi)
[ -n "$rfpi" -a ${#rfpi} -eq 14 ] && opt_rfpi="-rfpi $rfpi"
procd_open_instance
procd_set_param command $PROG -comname ttyH0 -log $LOG_PATH/dect-cmbs.log $opt_rfpi
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
[ ! -d $LOG_PATH ] && mkdir -p $LOG_PATH
start
}

View File

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

View File

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

View File

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

View File

@@ -13,9 +13,10 @@ PKG_VERSION:=1.1.0
LOCAL_DEV=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=400cc66081f2b10b481d5a745bc505b78af098bd
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)
@@ -43,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

@@ -11,6 +11,7 @@ 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>

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:=6.0.2
PKG_VERSION:=6.2.19
PKG_RELEASE:=1
LOCAL_DEV=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=fee575f414324c68d0916fab06d10eccb78541fd
PKG_SOURCE_VERSION:=d1fd660106d9ac3c937d005775608df43e1aa17c
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,48 +30,21 @@ include $(INCLUDE_DIR)/package.mk
define Package/easy-soc-libs
SECTION:=libs
CATEGORY:=Libraries
TITLE:=IOPSYS easy SoC libraries
SUBMENU:=IOPSYS easy SoC libraries
TITLE:=IOPSYS Easy SoC libraries
SUBMENU:=IOPSYS Easy SoC libraries
DEPENDS:=+libopenssl
MENU:=1
endef
define Package/libwifi/config
source "$(SOURCE)/Config.in"
endef
define Package/libeasy
$(call Package/easy-soc-libs)
TITLE:= Common helper functions library (libeasy)
DEPENDS+=+libnl +libnl-route
endef
define Package/libwifi
$(call Package/easy-soc-libs)
TITLE:= WiFi library (libwifi)
DEPENDS+=+libnl +libnl-route +libeasy
endef
define Package/libethernet
$(call Package/easy-soc-libs)
TITLE:= Ethernet library (libethernet)
DEPENDS+=+libnl +libnl-route +libeasy +TARGET_iopsys_ramips:swconfig
endef
ifeq ($(CONFIG_TARGET_iopsys_brcm63xx_arm),y)
TARGET_PLATFORM=BROADCOM
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/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
else ifeq ($(CONFIG_TARGET_iopsys_linksys),y)
TARGET_PLATFORM=MARVELL
TARGET_CFLAGS +=-DIOPSYS_MARVELL
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
@@ -78,26 +52,30 @@ else ifeq ($(CONFIG_TARGET_iopsys_armvirt),y)
TARGET_PLATFORM=TEST
TARGET_CFLAGS +=-DIOPSYS_TEST
else
$(info Unexpected CONFIG_TARGET)
$(info Unexpected CONFIG_TARGET, use default MAC80211)
TARGET_PLATFORM=MAC80211
TARGET_CFLAGS +=-DIOPSYS_MAC80211
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 \
@@ -117,79 +95,36 @@ define Build/Prepare
endef
endif
define Build/InstallDev/libeasy
$(INSTALL_DIR) $(1)/usr/include/easy
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_BUILD_DIR)/libeasy/easy.h $(1)/usr/include/easy/
$(CP) $(PKG_BUILD_DIR)/libeasy/event.h $(1)/usr/include/easy/
$(CP) $(PKG_BUILD_DIR)/libeasy/utils.h $(1)/usr/include/easy/
$(CP) $(PKG_BUILD_DIR)/libeasy/debug.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))))

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

@@ -0,0 +1,44 @@
define Package/libdsl
$(call Package/easy-soc-libs)
TITLE:= xDSL library (libdsl)
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

@@ -6,26 +6,18 @@
#
include $(TOPDIR)/rules.mk
PKG_RELEASE:=1
PKG_VERSION:=0.4
PKG_SOURCE_VERSION:=d87c1def50d9672dbeb9d5972f36a364b29334b9
PKG_NAME:=endptmngr
PKG_VERSION:=0.5
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/endptmngr.git
PKG_SOURCE_VERSION:=d3938443caffea15641bff72837d2de0cf87d62c
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_MIRROR_HASH:=skip
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:=https://download.iopsys.eu/iopsys/opensdk/
PKG_NAME:=endptmngr-open
PATCH_DIR:=
PKG_HASH:=skip
else
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/endptmngr.git
PKG_SOURCE_PROTO:=git
PKG_NAME:=endptmngr
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
endif
export BUILD_DIR
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
@@ -33,15 +25,10 @@ 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
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
export CONFIG_BCM_CHIP_ID
include $(INCLUDE_DIR)/package.mk
@@ -51,27 +38,18 @@ endef
define Package/endptmngr
CATEGORY:=Utilities
TITLE:=Brcmslic
TITLE:=Broadcom Voice Endpoint Manager
URL:=
DEPENDS:= +libubox +ubus +libpicoevent +bcmkernel @TARGET_HAS_VOICE @BCM_VOICE
DEPENDS:= +libubox +ubus +libpicoevent +uci +bcmkernel @TARGET_HAS_VOICE @BCM_VOICE
endef
define Package/endptmngr/description
endptmngr
endef
ifeq ($(CONFIG_ENDPT_OPEN),y)
define Build/Compile
endef
endif
define Package/endptmngr/install
$(CP) ./files/* $(1)/
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_DIR) $(1)/etc/init.d/
cp $(PKG_BUILD_DIR)/files/etc/init.d/* $(1)/etc/init.d/
$(INSTALL_BIN) $(PKG_BUILD_DIR)/src/endptmngr $(1)/usr/sbin/
endef

View File

@@ -0,0 +1,25 @@
#!/bin/sh /etc/rc.common
START=68
STOP=12
USE_PROCD=1
NAME=endptmngr
start_service() {
procd_open_instance
procd_set_param env hw_board_hasDect=$(db get hw.board.hasDect)
procd_set_param command $NAME
procd_set_param respawn "5" "0" "3"
procd_set_param nice -12
procd_close_instance
}
reload_service() {
stop
start
}
service_triggers() {
procd_add_reload_trigger asterisk
}

View File

@@ -5,13 +5,14 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=ethmngr
PKG_VERSION:=1.0.4
PKG_VERSION:=2.0.1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=b7135381aedf1bde6f7ab10b41be372a9bd7d155
PKG_SOURCE_VERSION:=5a0ff3bc7c49dcb05129f423ef8e0c4929f6aa03
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/ethmngr.git
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)_$(PKG_SOURCE_VERSION).tar.xz
PKG_MIRROR_HASH:=skip
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
PKG_LICENSE:=GPL-2.0-only
PKG_LICENSE_FILES:=LICENSE

51
fdtextract/Makefile Normal file
View File

@@ -0,0 +1,51 @@
#
# 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:=fdtextract
PKG_RELEASE:=1
PKG_VERSION:=1.0
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/fdtextract.git
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=485a38bc4eaf2a54d080b8529d5130b2955626d1
PKG_MIRROR_HASH:=skip
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:=fdtextract
DEPENDS:= +libfdt
endef
define Package/$(PKG_NAME)/description
Command to extract sub images from FIT images.
endef
MAKE_FLAGS += \
CFLAGS+="-Wall"
define Package/$(PKG_NAME)/install
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/fdtextract $(1)/usr/sbin/
$(STRIP) $(1)/usr/sbin/fdtextract
endef
$(eval $(call BuildPackage,$(PKG_NAME)))

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
};

View File

@@ -1,9 +1,5 @@
if PACKAGE_icwmp
config CWMP_SCRIPTS_FULL
bool "Install all icwmp scripts"
default y
choice
prompt "Select ACS sever"
default CWMP_ACS_MULTI

View File

@@ -8,13 +8,14 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=icwmp
PKG_VERSION:=6.2-2020-12-17
PKG_VERSION:=7.0.1-2021-05-14
PKG_FIXUP:=autoreconf
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/icwmp.git
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=80382e4dc769fa5eccd819d9a63ec59826f1bd36
PKG_SOURCE_VERSION:=f70cc81e5688e32aa82084faae5bc6ff710bb81b
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
@@ -37,7 +38,7 @@ define Package/$(PKG_NAME)
CATEGORY:=Utilities
SUBMENU:=TRx69
TITLE:=CWMP client
DEPENDS:=+libuci +libmicroxml +libubox +jshn +libubus +libblobmsg-json +libpthread +ubusd +shflags +getopt +zlib +libjson-c +libopenssl +curl +libcurl +libbbfdm +libbbf_api
DEPENDS:=+libuci +libmicroxml +libubox +jshn +libubus +libblobmsg-json +libpthread +ubusd +shflags +getopt +zlib +libjson-c +libopenssl +curl +libcurl
endef
define Package/$(PKG_NAME)/description
@@ -98,14 +99,7 @@ endif
define Package/$(PKG_NAME)/install
$(INSTALL_DIR) $(1)/etc/icwmpd
$(INSTALL_DIR) $(1)/usr/sbin
$(CP) $(PKG_BUILD_DIR)/bin/icwmpd $(1)/usr/sbin
ifeq ($(CONFIG_CWMP_SCRIPTS_FULL),y)
$(INSTALL_DIR) $(1)/usr/share/icwmp
$(CP) $(PKG_BUILD_DIR)/scripts/defaults $(1)/usr/share/icwmp
$(CP) $(PKG_BUILD_DIR)/scripts/functions $(1)/usr/share/icwmp
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/scripts/icwmp.sh $(1)/usr/sbin/icwmp
endif
$(INSTALL_BIN) $(PKG_BUILD_DIR)/bin/icwmpd $(1)/usr/sbin/
$(CP) ./files/* $(1)/
endef

View File

@@ -4,7 +4,7 @@ config acs 'acs'
option passwd 'iopsys'
option periodic_inform_enable 'true'
option periodic_inform_interval '1800'
option periodic_inform_time '0'
option periodic_inform_time '0001-01-01T00:00:00Z'
option ParameterKey ''
option dhcp_discovery 'enable'
# compression possible configs: GZIP, Deflate, Disabled
@@ -30,14 +30,12 @@ config cpe 'cpe'
option userid '' #$OUI-$SER
option passwd 'iopsys'
option port '7547'
option ubus_socket '/var/run/ubus.sock'
option provisioning_code ''
option amd_version '5'
# compression possible configs: InstanceNumber, InstanceAlias
option instance_mode 'InstanceNumber'
option session_timeout '60'
option notification '1'
option datamodel 'tr181'
option exec_download '0'
option periodic_notify_enable '1'
option periodic_notify_interval '10'

View File

@@ -11,7 +11,6 @@ STOP=10
USE_PROCD=1
PROG="/usr/sbin/icwmpd"
EXTRA_COMMANDS="notify"
EXTRA_HELP=" start [GetRPCMethods] Start icwmpd service and send GetRPCMethods"
validate_url() {
@@ -28,10 +27,6 @@ validate_url() {
return 1
}
build_dmmap_instance() {
[ ! -e /etc/icwmpd/.icwmpd_backup_session.xml ] && /usr/sbin/icwmp get name "" 0 >/dev/null 2>&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)"
@@ -167,7 +162,6 @@ start_service() {
[ -f /usr/sbin/asterisk ] && echo "Waiting for Voice to be started ..." && ubus -t 5 wait_for asterisk
config_load cwmp
build_dmmap_instance
set_wan_interface
wait_for_option43 20
get_acs_url
@@ -181,9 +175,6 @@ start_service() {
fi
procd_set_param respawn "3" "7" "0"
procd_close_instance
#procd_open_instance
#[ "$(uci -q get cwmp.cpe.notification)" == "1" ] && procd_append_param command "/usr/sbin/icwmp_notifd"
#procd_close_instance
fi
}
@@ -192,10 +183,6 @@ reload_service() {
start
}
notify() {
ubus -t 1 call tr069 notify >/dev/null 2>&1 &
}
service_triggers() {
procd_add_config_trigger "config.change" "cwmp" /etc/init.d/icwmpd reload
}

View File

@@ -5,14 +5,15 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=ieee1905
PKG_VERSION:=2.1.32
PKG_VERSION:=2.1.44
LOCAL_DEV:=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=2bb1c564d31a99d80a3f977c1f817777722a601d
PKG_SOURCE_VERSION:=33d05c2223023ce5b57001008555bd0f82e88541
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)

View File

@@ -24,7 +24,7 @@ configure_ieee1905()
if [ ${debug} -eq 1 ]; then
# Forward stdout of the command to logd
procd_set_param stdout 1
#procd_set_param stdout 1
# Same for stderr
procd_set_param stderr 1
fi

View File

@@ -5,15 +5,16 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=imonitor
PKG_VERSION:=1.0.0
PKG_VERSION:=1.0.1
PKG_RELEASE:=1
PKG_BUILD_PARALLEL:=1
PKG_INSTALL:=1
PKG_SOURCE_PROTO=git
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/imonitor.git
PKG_SOURCE_VERSION:=532f4900862bcb45d8cd4bf37555fabda81750b6
PKG_SOURCE_VERSION:=4beb1d5d6925507f1850a84c0b83aaf12a082f7f
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.1
PKG_VERSION:=1.2.2
PKG_RELEASE:=1
PKG_SOURCE_VERSION:=3135944f3357a7a2c1c206be7b65bbb7ac6d1e58
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

@@ -6,7 +6,7 @@ CONFIG_DEVEL=y
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
@@ -19,6 +19,7 @@ CONFIG_PACKAGE_ds-lite=y
CONFIG_PACKAGE_ethtool=y
CONFIG_PACKAGE_getopt=y
CONFIG_PACKAGE_glib2=y
CONFIG_PACKAGE_gre=y
CONFIG_PACKAGE_icwmp=y
CONFIG_PACKAGE_ieee1905=y
CONFIG_PACKAGE_map-1905=y
@@ -37,23 +38,15 @@ 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_juci=y
CONFIG_PACKAGE_juci-dnsmasq-dhcp=y
CONFIG_PACKAGE_juci-firewall-fw3=y
CONFIG_PACKAGE_juci-mod-status=y
CONFIG_PACKAGE_juci-mod-system=y
CONFIG_PACKAGE_juci-network-device=y
CONFIG_PACKAGE_juci-network-dsl=y
CONFIG_PACKAGE_juci-network-netifd=y
CONFIG_PACKAGE_juci-sysupgrade=y
CONFIG_PACKAGE_juci-wireless=y
CONFIG_PACKAGE_juci-theme-iopsys=y
CONFIG_PACKAGE_libdaemon=y
CONFIG_PACKAGE_libgmp=y
CONFIG_PACKAGE_libreadline=y
CONFIG_PACKAGE_jq=y
CONFIG_PACKAGE_libreswan=m
CONFIG_PACKAGE_libwifi=y
CONFIG_PACKAGE_lscpu=y
CONFIG_PACKAGE_luci=y
# CONFIG_LUCI_JSMIN is not set
# CONFIG_LUCI_CSSTIDY is not set
CONFIG_PACKAGE_luci-mod-dashboard=y
CONFIG_PACKAGE_luci-theme-openwrt-2020=y
CONFIG_PACKAGE_map=y
CONFIG_PACKAGE_miniupnpd=y
CONFIG_PACKAGE_mwan3=y
@@ -86,24 +79,22 @@ CONFIG_PACKAGE_relayd=y
CONFIG_PACKAGE_resolveip=y
CONFIG_PACKAGE_rpcd=y
CONFIG_PACKAGE_rpcd-mod-rpcsys=y
CONFIG_PACKAGE_rsync=y
CONFIG_PACKAGE_rulengd=y
CONFIG_PACKAGE_strace=y
CONFIG_PACKAGE_swmodd=m
CONFIG_PACKAGE_tc=y
CONFIG_PACKAGE_tcpdump=y
CONFIG_PACKAGE_terminfo=y
CONFIG_PACKAGE_traceroute6=y
CONFIG_PACKAGE_uledd=y
CONFIG_PACKAGE_umbim=y
CONFIG_PACKAGE_uqmi=y
CONFIG_PACKAGE_urlfilter=y
CONFIG_PACKAGE_usb-modeswitch=y
CONFIG_PACKAGE_usbreset=y
CONFIG_PACKAGE_uspd=y
CONFIG_PACKAGE_vsftpd-tls=m
CONFIG_PACKAGE_wget=y
CONFIG_PACKAGE_wwan=y
CONFIG_PACKAGE_wifimngr=y
CONFIG_PACKAGE_uuidgen=y
CONFIG_PACKAGE_xl2tpd=y
CONFIG_PACKAGE_zoneinfo-core=y
CONFIG_PACKAGE_zoneinfo-europe=y
@@ -192,6 +183,7 @@ 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_BUSYBOX_CONFIG_NOHUP=y
CONFIG_LIBCURL_CRYPTO_AUTH=y
# CONFIG_LIBCURL_MBEDTLS is not set
CONFIG_LIBCURL_OPENSSL=y
@@ -220,8 +212,10 @@ CONFIG_TARGET_PREINIT_IP=""
CONFIG_TARGET_PREINIT_NETMASK=""
CONFIG_TARGET_PREINIT_BROADCAST=""
# Generate rootfs tar file
CONFIG_TARGET_ROOTFS_TARGZ=y
# The urandom-seed package is very strange. It seeds urandom with urandom...
# Disable it. Most SoCs nowadays has HW random generators anyway.
# CONFIG_PACKAGE_urandom-seed is not set
# CONFIG_PACKAGE_urngd is not set

View File

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

View File

@@ -18,6 +18,7 @@ function genconfig {
brcm63xx_arm="target/linux/iopsys-brcm63xx-arm"
ramips="target/linux/iopsys-ramips"
intel_mips="target/linux/intel_mips"
mediatek="target/linux/iopsys-mediatek"
x86="target/linux/iopsys-x86"
armvirt="target/linux/iopsys-armvirt"
@@ -113,6 +114,8 @@ function genconfig {
iopsys_brcm63xx_arm=$(cd $brcm63xx_arm; ./genconfig)
[ -e $ramips/genconfig ] &&
iopsys_ramips=$(cd $ramips; ./genconfig)
[ -e $mediatek/genconfig ] &&
iopsys_mediatek=$(cd $mediatek; ./genconfig)
[ -e $intel_mips/genconfig ] &&
iopsys_intel_mips=$(cd $intel_mips; ./genconfig)
[ -e $x86/genconfig ] &&
@@ -123,7 +126,7 @@ function 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
for list in iopsys_brcm63xx_arm iopsys_ramips iopsys_mediatek iopsys_intel_mips iopsys_x86 iopsys_armvirt iopsys_bcm27xx; do
echo "$list based boards:"
for b in ${!list}; do
echo -e "\t$b"
@@ -148,6 +151,14 @@ function genconfig {
fi
done
for p in $iopsys_mediatek; do
if [ $p == $profile ]; then
target="iopsys_mediatek"
target_config_path="$mediatek/config"
return
fi
done
for p in $iopsys_intel_mips; do
if [ $p == $profile ]; then
target="intel_mips"
@@ -187,12 +198,8 @@ function genconfig {
bcmAllowed=0
endptAllowed=0
natalieAllowed=0
#mediatekAllowed=0
git ls-remote git@dev.iopsys.eu:broadcom/bcmcreator.git -q 2>/dev/null && bcmAllowed=1
#git ls-remote git@dev.iopsys.eu:mediatek/linux.git -q 2>/dev/null && mediatekAllowed=1
git ls-remote git@dev.iopsys.eu:dialog/natalie-dect-12.26.git -q 2>/dev/null && natalieAllowed=1
git ls-remote git@dev.iopsys.eu:iopsys/endptmngr.git -q 2>/dev/null && endptAllowed=1
}
@@ -362,6 +369,11 @@ function genconfig {
echo "CONFIG_TARGET_${target}=y" >> .config
echo "CONFIG_TARGET_${target}_${subtarget}=y" >> .config
echo "CONFIG_TARGET_${target}_${subtarget}_DEVICE_${BOARDTYPE}=y" >> .config
elif [ "$target" = "iopsys_mediatek" ]; then
subtarget="mt7622"
echo "CONFIG_TARGET_${target}=y" >> .config
echo "CONFIG_TARGET_${target}_${subtarget}=y" >> .config
echo "CONFIG_TARGET_${target}_${subtarget}_DEVICE_${BOARDTYPE}=y" >> .config
elif [ "$target" = "iopsys_bcm27xx" ]; then
subtarget="iopsys_bcm2711"
echo "CONFIG_TARGET_${target}=y" >> .config
@@ -421,14 +433,10 @@ function genconfig {
echo "CONFIG_GITMIRROR_REWRITE=y" >>.config
[ $bcmAllowed -eq 0 ] && echo "CONFIG_BCM_OPEN=y" >> .config
[ $endptAllowed -eq 0 ] && echo "CONFIG_ENDPT_OPEN=y" >> .config
[ $natalieAllowed -eq 0 ] && echo "CONFIG_NATALIE_OPEN=y" >> .config
#[ $mediatekAllowed -eq 0 ] && echo "CONFIG_MEDIATEK_OPEN=y" >> .config
else
echo "# CONFIG_GITMIRROR_REWRITE is not set" >>.config
echo "CONFIG_BCM_OPEN=y" >> .config
echo "CONFIG_ENDPT_OPEN=y" >> .config
echo "CONFIG_NATALIE_OPEN=y" >> .config
#echo "CONFIG_MEDIATEK_OPEN=y" >> .config
fi
if [ -n "$BRCM_MAX_JOBS" ]
@@ -437,7 +445,7 @@ function genconfig {
fi
# Force regeneration of themes
touch package/feeds/juci/juci/Makefile
touch package/feeds/iopsys/juci/Makefile
# Force regeneration of kernel Makefile
# Needed to disable kmods for iopsys-brcm targets

View File

@@ -186,12 +186,8 @@ function genconfig_min {
bcmAllowed=0
endptAllowed=0
natalieAllowed=0
mediatekAllowed=0
git ls-remote git@dev.iopsys.eu:broadcom/bcmcreator.git -q 2>/dev/null && bcmAllowed=1
git ls-remote git@dev.iopsys.eu:mediatek/linux.git -q 2>/dev/null && mediatekAllowed=1
git ls-remote git@dev.iopsys.eu:dialog/natalie-dect-12.26.git -q 2>/dev/null && natalieAllowed=1
git ls-remote git@dev.iopsys.eu:iopsys/endptmngr.git -q 2>/dev/null && endptAllowed=1
}

View File

@@ -30,25 +30,6 @@ build_bcmkernel_consumer() {
cd "$curdir"
}
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" ] && [ -n "$natalieversion" ] && [ -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"
}
build_endptmngr_consumer() {
# create endptmngr open version tar file
local endptversion endptcommith
@@ -70,46 +51,6 @@ build_endptmngr_consumer() {
cd "$curdir"
}
build_mediatek_kernel() {
local mediatek_commit kernel
mediatek_commit=$(grep CONFIG_KERNEL_GIT_COMMIT .config | cut -d '=' -f2 | tr -d '"')
kernel=linux-git*
[ -n "$mediatek_commit" ] || return
ssh $SERVER "test -f $FPATH/mediatek-kernel-open-$mediatek_commit.tar.gz" && return
echo "Building mediatek kernel tarball from kernel commit:"
echo $mediatek_commit
cd build_dir/target-mipsel_1004kc*/linux-iopsys-ramips*/linux-git*
# remove git repo
rm -rf .git
cd ..
tar -czv $kernel -f mediatek-kernel-open-$mediatek_commit.tar.gz
scp -pv mediatek-kernel-open-$mediatek_commit.tar.gz $SERVER:$FPATH/
cd "$curdir"
}
build_mediatek_wifi_consumer() {
local ver commit
local chip=$1
ver=$(grep -w "PKG_VERSION:" ./feeds/mediatek/mt${chip}/Makefile | cut -d'=' -f2)
commit=$(grep -w "PKG_SOURCE_VERSION:" ./feeds/mediatek/mt${chip}/Makefile | cut -d'=' -f2)
[ -n "$ver" ] && [ -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>"
@@ -154,12 +95,7 @@ function generate_tarballs {
if [ "$stk_target" == "broadcom" ]; then
build_bcmkernel_consumer
build_natalie_consumer
build_endptmngr_consumer
elif [ "$stk_target" == "mediatek" ]; then
build_mediatek_kernel
build_mediatek_wifi_consumer 7603
build_mediatek_wifi_consumer 7615
else
echo "Invalid target: $stk_target"
print_usage

View File

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

@@ -10,6 +10,7 @@ PKG_RELEASE:=1.0.0
PKG_SOURCE_VERSION:=44b32937a062ec4ffc9f7355841dc94ab6efa50f
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=git@dev.iopsys.eu:iopsys/json-editor.git
PKG_MIRROR_HASH:=skip
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/cmake.mk

122
juci/Makefile Normal file
View File

@@ -0,0 +1,122 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=juci
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/juci.git
PKG_SOURCE_VERSION:=70b66bfc7f0e25e77b6920c3d44e5b05f4bfcf95
PKG_VERSION:=2020-05-27
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_VERSION).tar.gz
PKG_MIRROR_HASH:=skip
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_SOURCE_SUBDIR)
PKG_RELEASE=$(PKG_VERSION)-$(PKG_SOURCE_VERSION)
PKG_LICENSE:=GPLv2
PKG_LICENSE_FILES:=LICENSE
include $(INCLUDE_DIR)/package.mk
define Package/juci
$(Package/juci/default)
SECTION:=juci
CATEGORY:=JUCI
MENU=1
TITLE:=JUCI Core Package (select this to select default plugins)
DEPENDS:=+libubox +libubus +owsd +rpcd +rpcd-mod-file +questd
endef
define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/src/
ln -s $(PKG_BUILD_DIR) $(1)/usr/src/juci
endef
define Build/Compile
$(call Build/Compile/Default,THEME_PATH="$(TOPDIR)/tmp/juci-themes/")
endef
define Package/juci/description
JUCI Javascript UCI Web interface.
endef
define Package/juci/install
$(INSTALL_DIR) $(1)/
$(CP) $(PKG_BUILD_DIR)/bin/juci/* $(1)/
$(CP) ./files/* $(1)/
endef
define Package/juci/postinst
#!/bin/sh
juci-update
exit 0
endef
$(eval $(call BuildPackage,juci))
####### Extensions / Themes and Plugins
define RegisterAddonInner
define Package/$(2)
SECTION:=juci
CATEGORY:=JUCI
TITLE:=default
SUBMENU:=$(1)
TITLE:=$(if $(3),$(3),JUCI $(2) plugin)
DEPENDS:=$(4)
endef
define Package/$(2)/install
$(INSTALL_DIR) $$(1)/
$(CP) $(PKG_BUILD_DIR)/bin/$(2)/* $$(1)/
endef
endef
define RegisterAddon
$(eval $(call RegisterAddonInner,$(1),$(2),$(3),$(4),$(5)))
$(eval $(call BuildPackage,$(2)))
endef
$(eval $(call RegisterAddon,Plugins,juci-catv, CATV Module,@(PACKAGE_catv)))
$(eval $(call RegisterAddon,Plugins,juci-cgroups, CGroups Module,@(PACKAGE_icgroupd)))
$(eval $(call RegisterAddon,Plugins,juci-ddns, DDNS Configuration,@(PACKAGE_ddns-scripts)))
$(eval $(call RegisterAddon,Plugins,juci-diagnostics, Simple Diagnostics,@(PACKAGE_busybox)))
$(eval $(call RegisterAddon,Plugins,juci-ndt, NDT Speed Test client,@(PACKAGE_ndt)))
$(eval $(call RegisterAddon,Plugins,juci-dnsmasq-dhcp, DHCP/DNSMasq Configuration,@(PACKAGE_dnsmasq||PACKAGE_dnsmasq-full)))
$(eval $(call RegisterAddon,Plugins,juci-dropbear, Dropbear Configuration,@(PACKAGE_dropbear)))
$(eval $(call RegisterAddon,Plugins,juci-easyqos, Easy QoS module,@(PACKAGE_easy-qos)))
$(eval $(call RegisterAddon,Plugins,juci-event, Event Module,@(PACKAGE_owsd)))
$(eval $(call RegisterAddon,Plugins,juci-firewall-fw3, Firewall Configuration,@(PACKAGE_firewall)))
$(eval $(call RegisterAddon,Plugins,juci-icwmp, TR-069 Module,@(PACKAGE_icwmp)))
$(eval $(call RegisterAddon,Plugins,juci-config-backup, Config Backup Module))
$(eval $(call RegisterAddon,Plugins,juci-qos, QoS module,@(PACKAGE_qos-scripts)))
$(eval $(call RegisterAddon,Plugins,juci-voice-client, Asterisk Voice Client Module,@(PACKAGE_asterisk)))
$(eval $(call RegisterAddon,Plugins,juci-minidlna, MiniDLNA Configuration,@(PACKAGE_minidlna)))
$(eval $(call RegisterAddon,Plugins,juci-mcproxy, Multicast Proxy Configuration,@(PACKAGE_mcproxy)))
$(eval $(call RegisterAddon,Plugins,juci-mod-status, Status Reporting Module,@(PACKAGE_questd)))
$(eval $(call RegisterAddon,Plugins,juci-mod-system, System Administration Module))
$(eval $(call RegisterAddon,Plugins,juci-mwan3, mwan3 Configuration,@(PACKAGE_mwan3)))
$(eval $(call RegisterAddon,Plugins,juci-natalie-dect, DECT Module,@(PACKAGE_dectmngr2)))
$(eval $(call RegisterAddon,Plugins,juci-netmode, Netmode Module,@(PACKAGE_netmode)))
$(eval $(call RegisterAddon,Plugins,juci-network-device, Network Device Configuration,@(PACKAGE_netifd)))
$(eval $(call RegisterAddon,Plugins,juci-network-dsl, DSL Module))
$(eval $(call RegisterAddon,Plugins,juci-network-netifd, Network Module,@(PACKAGE_netifd)))
$(eval $(call RegisterAddon,Plugins,juci-network-port, Ethernet Port Configuration,@(PACKAGE_port-management)))
$(eval $(call RegisterAddon,Plugins,juci-openvpn, OpenVPN configuration,@(PACKAGE_openvpn)))
$(eval $(call RegisterAddon,Plugins,juci-owsd, OWSD configuration,@(PACKAGE_owsd)))
$(eval $(call RegisterAddon,Plugins,juci-printer, p910nd Printer Server Configuration,@(PACKAGE_p910nd)))
#$(eval $(call RegisterAddon,Plugins,juci-realtime-graphs, Realtime Graphs))
$(eval $(call RegisterAddon,Plugins,juci-samba, Samba Configuration,@(PACKAGE_samba3)))
$(eval $(call RegisterAddon,Plugins,juci-sfp, SFP Configuration,@(PACKAGE_peripheral_manager)))
$(eval $(call RegisterAddon,Plugins,juci-snmpd, SNMP Module,@(PACKAGE_snmpd)))
$(eval $(call RegisterAddon,Plugins,juci-sysupgrade, Sysupgrade Firmware Upgrade,@(PACKAGE_rpcd-mod-rpcsys)))
$(eval $(call RegisterAddon,Plugins,juci-uhttpd, uHTTPD Configuration,@(PACKAGE_uhttpd)))
$(eval $(call RegisterAddon,Plugins,juci-upnp, UPnP Configuration Module,@(PACKAGE_miniupnpd)))
#$(eval $(call RegisterAddon,Plugins,juci-usb, USB Module))
$(eval $(call RegisterAddon,Plugins,juci-wireless, Wireless Management Module))
$(eval $(call RegisterAddon,Plugins,juci-wifilife, WiFi Life Module,@(PACKAGE_wifilife)))
$(eval $(call RegisterAddon,Themes,juci-theme-iopsys))
####### dynamically publish themes as packages #######
$(foreach th,$(wildcard $(TOPDIR)/tmp/juci-themes/*),$(eval $(call RegisterAddon,Themes,$(notdir $(th)))))

View File

@@ -0,0 +1,66 @@
config juci 'juci'
option homepage 'overview'
option theme 'juci-theme-iopsys'
option favicon 'favicon.ico'
config login 'login'
option showusername '1'
option defaultuser 'user'
config localization 'localization'
option default_language 'en'
list languages 'en'
config wiki 'wiki'
option visible '0'
option version 'v4.2.x'
config widget
list name 'overviewWidget11WAN'
list require 'ubus:network.interface'
config widget
list name 'overviewWidget10Network'
list require 'ubus:network.interface'
list require 'ubus:router.network->hosts'
config widget
list name 'overviewWidget00WiFi'
list require 'ubus:wifi'
list require 'ubus:wifi.wps'
config menu
option path 'overview'
option page 'overview'
config menu
option path 'system'
option page 'system'
option redirect 'first'
config menu
option path 'status'
option page 'status'
option redirect 'first'
config menu
option path 'status/system'
option page 'status-system'
list require 'ubus:router.system->info'
config menu
option path 'status/network'
option page 'status-network'
list require 'ubus:network.interface'
config menu
option path 'status/dsl'
option page 'network-dsl-status'
list require 'ubus:dsl->stats'
list require 'ubus:dsl->status'
config menu
option path 'system/upgrade'
option page 'settings-upgrade'
list expose 'admin'

41
juci/files/etc/init.d/juci Executable file
View File

@@ -0,0 +1,41 @@
#!/bin/sh /etc/rc.common
. /lib/functions.sh
START=94
STOP=06
USE_PROCD=1
NAME=juci
start_service() {
mkdir -p /tmp/juci
touch /www/index.html.gz
chmod 755 /www/cgi-bin/luci
# this will simply update index.html to include any files that are for some reason not included
# a good way to make sure all plugins are properly included at each boot
config_load juci
local theme
config_get theme juci theme
if [ "$theme" ]
then
if [ -f /www/themes/theme.js.gz ]
then
rm -f /www/themes/theme.js.gz
fi
if [ -f /www/themes/*$theme.js.gz ]
then
ln -s /www/themes/*$theme.js.gz /www/themes/theme.js.gz
fi
fi
juci-update
}
stop() {
service_stop /sbin/juci
}
service_triggers()
{
procd_add_reload_trigger juci
}

View File

@@ -0,0 +1,49 @@
#!/bin/sh
. /lib/functions.sh
USER_SECTION=""
USER_EXISTS=0
find_user(){
local section="$1"
local user="$2"
config_get username $section username
if [ "$username" == "$user" ]; then
USER_SECTION="$section"
USER_EXISTS=1
fi
}
config_load rpcd
USER_EXISTS=0
config_foreach find_user login root
if [ $USER_EXISTS -eq 1 ]; then
uci delete rpcd.$USER_SECTION
fi
USER_EXISTS=0
config_foreach find_user login admin
if [ $USER_EXISTS -eq 0 ]; then
uci -q add rpcd login >/dev/null
uci -q set rpcd.@login[-1].username="admin"
uci -q set rpcd.@login[-1].password="\$p\$admin"
uci -q add_list rpcd.@login[-1].read="enduser"
uci -q add_list rpcd.@login[-1].read="administrator"
uci -q add_list rpcd.@login[-1].write="enduser"
uci -q add_list rpcd.@login[-1].write="administrator"
fi
USER_EXISTS=0
config_foreach find_user login user
if [ $USER_EXISTS -eq 0 ]; then
uci -q add rpcd login >/dev/null
uci -q set rpcd.@login[-1].username="user"
uci -q set rpcd.@login[-1].password="\$p\$user"
uci -q add_list rpcd.@login[-1].read="enduser"
uci -q add_list rpcd.@login[-1].write="enduser"
fi
uci commit rpcd

View File

@@ -0,0 +1,21 @@
{
"administrator": {
"description": "Administrator Access Rights",
"read": {
"ubus": {
"file": [
"write"
],
"rpc-sys": [
"upgrade_start",
"upgrade_test"
]
}
},
"write": {
"file": {
"/tmp/firmware.bin": ["write"]
}
}
}
}

View File

@@ -0,0 +1,217 @@
{
"enduser": {
"description": "End User Access Rights",
"read": {
"ubus": {
"dect": [
"state",
"handset",
"status",
"call"
],
"dsl": [
"status",
"stats"
],
"network.device": [
"status"
],
"network.interface*": [
"status",
"dump",
"up",
"down"
],
"router.network": [
"clients",
"hosts",
"dump"
],
"router.system": [
"info",
"memory",
"filesystem",
"process",
"processes"
],
"session": [
"access",
"list",
"destroy",
"login"
],
"system": [
"info",
"board",
"reboot"
],
"testnet": [
"status"
],
"uci": [
"*"
],
"voice.asterisk": [
"status",
"call_log",
"platform",
"supported_countries"
],
"wifi": [
"status"
],
"wifi.ap.*": [
"status",
"stats",
"assoclist",
"stations"
],
"wifi.radio.*": [
"status",
"stats",
"scan",
"scanresults",
"autochannel"
],
"wifi.wps": [
"start",
"stop",
"status",
"showpin"
]
},
"uci": [
"dhcp",
"firewall",
"juci",
"network",
"voice_client",
"wireless"
],
"owsd": [
"client",
"wifi.radio",
"wifi.sta",
"wifi.wps"
]
},
"write": {
"uci": [
"dhcp",
"firewall",
"network",
"wireless"
],
"uci_granular": {
"dhcp": [
{
"match": {
".type": "dhcp"
},
"option": [
"*"
]
},
{
"match": {
".type": "host"
},
"option": [
"*"
]
}
],
"firewall": [
{
"match": {
".type": "settings",
".name": "settings"
},
"option": [
"disabled"
]
},
{
"match": {
".type": "zone"
},
"option": [
"masq",
"name",
"network"
]
},
{
"match": {
".type": "redirect"
},
"option": [
"*"
]
},
{
"match": {
".type": "rule"
},
"option": [
"*"
]
},
{
"match": {
".type": "dmz"
},
"option": [
"enabled",
"host",
"ip6addr"
]
}
],
"network": [
{
"match": {
".type": "interface"
},
"option": [
"*"
]
}
],
"wireless": [
{
"match": {
".type": "wifi-status"
},
"option": [
"wps"
]
},
{
"match": {
".type": "wifi-iface",
"mode": "ap"
},
"option": [
"*"
]
},
{
"match": {
".type": "wifi-device"
},
"option": [
"channel"
]
}
]
},
"owsd": [
"client",
"wifi.radio",
"wifi.sta",
"wifi.wps"
]
}
}
}

View File

@@ -16,6 +16,7 @@ PKG_SOURCE_URL:=https://dev.iopsys.eu/mirror/microxml.git
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE_VERSION:=72965423184f24cc0b963d91c2d1863cdb01b6aa
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_MIRROR_HASH:=skip
PKG_LICENSE:=LGPL-2.0
PKG_LICENSE_FILES:=COPYING

View File

@@ -18,6 +18,7 @@ PKG_LICENSE:=LGPL-2.1-only
PKG_LICENSE_FILES:=LICENSE
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_MIRROR_HASH:=skip
include $(INCLUDE_DIR)/package.mk

View File

@@ -11,6 +11,7 @@ PKG_SOURCE_VERSION:=e4b4c5cce35a52da152776a00532aa0b80879c5b
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
PKG_MIRROR_HASH:=skip
PKG_LICENSE:=GPLv2
PKG_LICENSE_FILES:=COPYING

View File

@@ -14,6 +14,7 @@ PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/loop-detector
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)

View File

@@ -5,14 +5,15 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=map-1905
PKG_VERSION:=0.0.15
PKG_VERSION:=0.0.19
LOCAL_DEV:=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=405e44f14d623db7a5f03e76945315774d2b6deb
PKG_SOURCE_VERSION:=46afa4c0aa56d8762d9402cfdaddf4adaa8a058a
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/map-1905.git
PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_VERSION).tar.gz
PKG_MIRROR_HASH:=skip
endif
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)

View File

@@ -5,9 +5,9 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=map-agent
PKG_VERSION:=3.1.0
PKG_VERSION:=3.5.20
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE_VERSION:=c59c1bd628989216e5167c8557f6bb114e8e21a0
PKG_SOURCE_VERSION:=f396b503f111461e7869f302907e1d9ec639ca3a
PKG_MAINTAINER:=Anjan Chanda <anjan.chanda@iopsys.eu>
PKG_LICENSE:=PROPRIETARY IOPSYS
@@ -16,6 +16,7 @@ PKG_LICENSE_FILES:=LICENSE
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=git@dev.iopsys.eu:iopsys/map-agent.git
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)_$(PKG_SOURCE_VERSION).tar.xz
PKG_MIRROR_HASH:=skip
include $(INCLUDE_DIR)/package.mk
@@ -23,7 +24,7 @@ define Package/map-agent
SECTION:=utils
CATEGORY:=Utilities
TITLE:=WiFi multi-AP Agent (EasyMesh R2)
DEPENDS:=+libwifi +libuci +libubox +ubus +libmaputils +libwsc
DEPENDS:=+libwifi +libuci +libubox +ubus +libmaputils +libwsc +libeasy
endef
define Package/map-agent/description

View File

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

View File

@@ -0,0 +1,32 @@
config agent 'agent'
option enabled '1'
option debug '6'
option profile '2'
option al_bridge 'br-lan'
#config fh-iface
# option ifname 'wl0'
# option steer 'rssi bssload'
# list exclude '00:11:22:33:44:55'
# list exclude_btm '00:aa:bb:cc:dd:ee'
# list assoc_ctrl '00:10:20:30:40:50'
# option btm_retry '3'
# option btm_retry_secs '180'
# option fallback_legacy '1'
# option steer_legacy_reassoc_secs '30'
# option steer_legacy_retry_secs '3600'
# option assoc_ctrl_secs '30'
# option band '2'
#config fh-iface
# option ifname 'wl1'
# option steer 'rssi bssload'
# list exclude '00:11:22:33:44:55'
# list exclude_btm '00:aa:bb:cc:dd:ee'
# option band '5'
#config bk-iface
# option ifname 'apclii0'
# option enabled '1'
# option onboarded '0'
# option disallow_bsta '1 # bitmap, 1 for disallow p1, 2 to disallow p2, 3 to disallow both (probably never applicable)

View File

@@ -0,0 +1,84 @@
#!/bin/sh
diff=0
wan=$(uci -q get ports.WAN.ifname)
[ "$wan" == "" ] && exit 1 # no configuration
[ "$PORT" != "$wan" ] && exit 0
get_bridge() {
local id
local ifname="$1"
local bridge=""
id=$(cat /sys/class/net/${ifname}/brport/bridge/bridge/bridge_id)
#echo "bridge id = $id" > /dev/console
[ "$id" = "" ] && return
bridge=$(brctl show | grep $id | cut -f1)
case "$bridge" in
br-*)
bridge=$(echo $bridge | cut -c4-)
;;
esac
echo $bridge
}
disable_bstas() {
section="$1"
config_get mode "$section" mode "ap"
config_get ifname "$section" ifname
config_get device "$section" device
#echo mode=$mode ifname=$ifname > /dev/console
[ "$mode" == "sta" ] || return
uci set wireless.$section.disabled=1
bridge=$(get_bridge $ifname)
if [ "$bridge" != "" ]; then
#echo got bridge = $bridge > /dev/console
ubus call network.interface.$bridge remove_device '{"name":"$ifname"}'
fi
ifconfig "$ifname" down
diff=1
#echo disabled $ifname > /dev/console
}
enable_bstas() {
section="$1"
config_load "wireless"
config_get mode "$section" mode "ap"
config_get ifname "$section" ifname
config_get device "$section" device
#echo mode=$mode ifname=$ifname > /dev/console
[ "$mode" == "sta" ] || return
uci set wireless.$section.disabled=0
ifconfig "$ifname" up
diff=1
#echo enabled $ifname > /dev/console
}
config_load "wireless"
if [ "$LINK" == "up" ]; then
config_foreach disable_bstas wifi-iface
else
config_foreach enable_bstas wifi-iface
fi
#echo diff = $diff > /dev/console
uci -q commit wireless
[ "$diff" == "1" ] && {
#echo reloading via uci > /dev/console
ubus call uci commit '{"config":"wireless"}'
}

View File

@@ -6,6 +6,12 @@ STOP=20
USE_PROCD=1
start_service() {
config_load "mapagent"
local enabled
config_get_bool enabled agent enabled 1
[ "$enabled" -eq 0 ] && return 1
procd_open_instance
procd_set_param command "/usr/sbin/mapagent" "-d"
procd_set_param respawn

View File

@@ -5,9 +5,9 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=map-controller
PKG_VERSION:=2.0.2
PKG_VERSION:=2.4.12
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE_VERSION:=cc7b09ac52dc16cde697e439eb25f620934a8b30
PKG_SOURCE_VERSION:=e4d286f6348519de2613d4ba3548ec811c60ad7b
PKG_LICENSE:=PROPRIETARY IOPSYS
PKG_LICENSE_FILES:=LICENSE
@@ -15,6 +15,7 @@ PKG_LICENSE_FILES:=LICENSE
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=git@dev.iopsys.eu:iopsys/map-controller.git
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)_$(PKG_SOURCE_VERSION).tar.xz
PKG_MIRROR_HASH:=skip
include $(INCLUDE_DIR)/package.mk
@@ -22,7 +23,7 @@ define Package/map-controller
SECTION:=utils
CATEGORY:=Utilities
TITLE:=WiFi Multi-AP Controller (EasyMesh R2)
DEPENDS:=+libuci +libubox +ubus +libmaputils +libwsc
DEPENDS:=+libuci +libubox +ubus +libmaputils +libwsc +libeasy
endef
define Package/map-controller/description

View File

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

View File

@@ -0,0 +1,44 @@
config controller 'controller'
option enabled '1'
option registrar '5 2' #bands on which wps registrar supported
option debug '6'
option al_bridge 'br-lan'
config vlan 'lan'
option network 'lan'
option id '1'
config fh-credentials
option band '5'
option encryption 'psk2'
option key '1234567890'
option ssid 'map-net5'
option vlan '1'
config fh-credentials
option band '2'
option encryption 'psk2'
option key '1234567890'
option ssid 'map-net2'
# option bk_ssid 'multiap_ssid123'
# option bk_key 'multiap_key123'
option vlan '1'
config bk-credentials
option band '5'
option encryption 'psk2'
option key '5555555555'
option ssid 'map-bkhaul-5'
option multi_ap '2'
option disallow_bsta '1' # bitmap, 1 for disallow p1, 2 to disallow p2, 3 to disallow both (probably never applicable)
option vlan '1'
config bk-credentials
option band '2'
option encryption 'psk2'
option key '2222222222'
option ssid 'map-bkhaul-2'
option multi_ap '2'
option disallow_bsta '0' # 0 or 1 profile-1 bSTA
option vlan '1'

View File

@@ -5,9 +5,28 @@ STOP=20
USE_PROCD=1
handle_controller_select() {
local section="$1"
config_get_bool local_ctrl "$section" local 0
return 1
}
start_service() {
local enabled
local local_ctrl=0
config_load "mapcontroller"
config_get_bool enabled controller enabled 1
[ "$enabled" -eq 0 ] && return
procd_open_instance
procd_set_param command "/usr/sbin/mapcontroller" "-d"
procd_set_param command "/usr/sbin/mapcontroller" "-d"
config_load "mapagent"
config_foreach handle_controller_select controller_select
[ "$local_ctrl" -eq 0 ] && procd_append_param command "-w"
procd_set_param respawn
# procd_set_param stdout 1
# procd_set_param stderr 1
@@ -16,10 +35,24 @@ start_service() {
service_triggers()
{
procd_add_reload_trigger "ieee1905"
procd_add_reload_trigger "mapcontroller"
}
reload_service() {
stop
start
local enabled
config_load "mapcontroller"
config_get_bool enabled controller enabled 1
if [ "$enabled" -eq 0 ]; then
stop
return
fi
pidof "mapcontroller" > /dev/null
if [[ $? -ne 0 ]] ; then
start
return
fi
procd_send_signal "mapcontroller"
}

View File

@@ -6,14 +6,15 @@ include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=map-topology
PKG_VERSION:=1.5.6
PKG_VERSION:=2.0.1
LOCAL_DEV:=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_VERSION:=8d008ef712227986263e9a2a1b188ce3a27e17f8
PKG_SOURCE_VERSION:=eec19fb7f18863312760fe0db953d2f4e5ec9f5a
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/map-topology.git
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.xz
PKG_MIRROR_HASH:=skip
endif
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)

View File

View File

@@ -16,10 +16,9 @@ start_service() {
service_triggers()
{
procd_add_reload_trigger "ieee1905"
procd_add_reload_trigger "network"
}
reload_service() {
stop
start
procd_send_signal "topologyd"
}

View File

@@ -51,6 +51,9 @@ if [ -s "/etc/config/mcast" ]; then
if uci -q get mcast.@proxy[0] >/dev/null; then
# return if there is any valid content
exit
elif uci -q get mcast.@snooping[0] >/dev/null; then
# return if there is any valid content
exit
else
rm -f /etc/config/mcast
fi

View File

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

View File

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

View File

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

View File

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

View File

@@ -13,8 +13,8 @@ PKG_VERSION:=0.2.0
PKG_SOURCE_VERSION:=5c8abbdf86e4651c7c6f14f784cfb52e69979f96
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/netmoded
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_MIRROR_HASH:=skip
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)

View File

@@ -0,0 +1,42 @@
{
"internet_success": {
"if" : [
{
"event": "internet",
"match": {
"status":"online"
}
}
],
"then" : [
{
"object": "led.internet",
"method":"set",
"args" : {
"state": "ok"
},
"timeout": 1
}
]
},
"internet_fail": {
"if" : [
{
"event": "internet",
"match": {
"status":"offline"
}
}
],
"then" : [
{
"object": "led.internet",
"method":"set",
"args" : {
"state": "error"
},
"timeout": 1
}
]
}
}

View File

@@ -0,0 +1,2 @@
uci -q set ruleng.internet=rule
uci -q set ruleng.internet.recipe='/etc/ruleng/internet.json'

View File

@@ -4,7 +4,6 @@
. /lib/network/utils.sh
NETCON=0
WANIP=0
LASTSTATUS=""
CURSTATUS=""
@@ -29,15 +28,6 @@ test_connection() {
return 1
}
uplink_test() {
uplink_phy_connected
if [ $? -eq 0 ]; then
ubus call led.wan set '{"state" : "ok"}' || ubus call led.broadband set '{"state" : "ok"}'
else
ubus call led.wan set '{"state" : "off"}' || ubus call led.broadband set '{"state" : "off"}'
fi
}
internet_test() {
local link dest
@@ -47,18 +37,14 @@ internet_test() {
if [ "$?" -eq 0 ]; then
NETCON=1
ubus call led.internet set '{"state" : "ok"}'
echo "{ \"online\" : true }" > /tmp/internet_connection_status
else
NETCON=0
ubus call led.internet set '{"state" : "error"}'
echo "{ \"online\" : false }" > /tmp/internet_connection_status
fi
}
connectivity_test() {
uplink_test
internet_test
if [ $NETCON -eq 1 ]; then

15
obuspa/Config.in Normal file
View File

@@ -0,0 +1,15 @@
if PACKAGE_obuspa
config OBUSPA_MTP_ENABLE_STOMP
bool "Enable STOMP as mtp protocol"
default y
config OBUSPA_MTP_ENABLE_MQTT
bool "Enable MQTT as mtp protocol"
default y
config OBUSPA_MTP_ENABLE_COAP
bool "Enable CoAP as mtp protocol"
default y
endif

View File

@@ -5,14 +5,16 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=obuspa
PKG_VERSION:=3.0.0.8
PKG_VERSION:=3.0.0.28
LOCAL_DEV:=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=590e106baf6c6217298250da4c9625e7b10db56a
PKG_SOURCE_VERSION:=31d80ee826076953c24bdd1a67bc61560ed3e69f
PKG_SOURCE_URL:=https://dev.iopsys.eu/fork/obuspa.git
PKG_MAINTAINER:=Vivek Dutta <vivek.dutta@iopsys.eu>
PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_VERSION).tar.gz
PKG_MIRROR_HASH:=skip
endif
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
@@ -35,10 +37,38 @@ define Package/obuspa/description
OB-USP-AGENT is a system daemon providing a User Services Platform (USP) Agent.
endef
define Package/obuspa/config
source "$(SOURCE)/Config.in"
endef
TARGET_CFLAGS += \
-I$(STAGING_DIR)/usr/include \
-D_GNU_SOURCE
ifeq ($(CONFIG_OBUSPA_MTP_ENABLE_STOMP),y)
CONFIGURE_ARGS += \
--enable-stomp
else
CONFIGURE_ARGS += \
--disable-stomp
endif
ifeq ($(CONFIG_OBUSPA_MTP_ENABLE_MQTT),y)
CONFIGURE_ARGS += \
--enable-mqtt
else
CONFIGURE_ARGS += \
--disable-mqtt
endif
ifeq ($(CONFIG_OBUSPA_MTP_ENABLE_COAP),y)
CONFIGURE_ARGS += \
--enable-coap
else
CONFIGURE_ARGS += \
--disable-coap
endif
ifeq ($(LOCAL_DEV),1)
define Build/Prepare
$(CP) -rf ~/git/obuspa/* $(PKG_BUILD_DIR)/
@@ -50,9 +80,12 @@ define Package/obuspa/install
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_DIR) $(1)/etc/config
$(INSTALL_DIR) $(1)/etc/obuspa
$(INSTALL_DIR) $(1)/etc/hotplug.d/iface
$(INSTALL_BIN) $(PKG_BUILD_DIR)/obuspa $(1)/usr/sbin/
$(INSTALL_BIN) ./files/etc/init.d/obuspa $(1)/etc/init.d/
$(INSTALL_DATA) ./files/etc/config/obuspa $(1)/etc/config/
$(INSTALL_DATA) ./files/etc/obuspa/roles.json $(1)/etc/obuspa/roles.json
$(INSTALL_BIN) ./files/etc/hotplug.d/iface/85-obuspa $(1)/etc/hotplug.d/iface/
endef
$(eval $(call BuildPackage,obuspa))

View File

@@ -1,16 +1,17 @@
config obuspa 'global'
option enabled 'true'
option enabled '1'
option interface 'wan'
#option ifname 'eth0.1'
option debug 'false'
option debug '0'
option log_level '1'
#option db_file '/tmp/usp.db'
#option db_file '/etc/obuspa/usp.db'
option role_file '/etc/obuspa/roles.json'
#option trust_cert '/etc/obuspa/rootCA.pem'
#option client_cert '/etc/obuspa/client.pem'
#option log_dest '/var/log/obuspa'
config localagent 'localagent'
option Enable 'true'
option Enable '1'
# Adds Device.LocalAgent.Controller.
config controller 'localcontroller'
@@ -18,6 +19,7 @@ config controller 'localcontroller'
option Protocol 'MQTT'
option Topic '/usp/controller'
option mqtt 'localmqtt'
option assigned_role_name 'Full Access'
# Adds Device.LocalAgent.MTP.
config mtp
@@ -41,3 +43,18 @@ config subscription
option Persistent 'true'
option controller 'localcontroller'
config challenge 'admin'
option Description 'Request to get Administrative access'
option role_name 'Full Access'
option Enable '1'
option Value 'admin'
option Retries 2
option LockoutPeriod 60
config challenge 'user'
option Description 'Request to get User access'
option role_name 'user'
option Enable '1'
option Value 'user'
option Retries 3
option LockoutPeriod 30

View File

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

View File

@@ -5,7 +5,7 @@ USE_PROCD=1
PROG=/usr/sbin/obuspa
EXTRA_COMMANDS="remove_db"
EXTRA_HELP=" remove_db Removes obuspa persistent db before restarting"
EXTRA_HELP=" remove_db Removes obuspa persistent db before restarting, self trigger with uci change"
PARAM_FILE="/tmp/obuspa_param_reset.txt"
CONFIGURATION=obuspa
@@ -16,9 +16,20 @@ mtp_num=0
stomp_num=0
mqtt_num=0
subs_num=0
challenge_num=0
index=0
role_def_file=""
. /lib/functions/network.sh
. /usr/share/libubox/jshn.sh
cleanup() {
if [ -f "${USP_TEMP_FILE}" ]; then
rm -f "${USP_TEMP_FILE}"
fi
}
trap cleanup EXIT
log() {
echo "${@}"|logger -t obuspa -p debug
@@ -39,6 +50,37 @@ get_index() {
fi
}
get_role_index_from_json() {
local role="${@}"
# In case of role is empty or file not present
if [ -z "${role}" -o ! -f ${role_def_file} ]; then
echo 0
return 0
fi
json_init
json_load_file ${role_def_file}
if [ $? -ne 0 ]; then # In case of invalid json file
echo 0
return 0
fi
json_select roles
json_get_keys roles_obj
for k in ${roles_obj}; do
json_select $k
json_get_var name name
json_select ..
if [ "${role}" = "${name}" ]; then
echo "${k}"
return 0
fi
done
echo 0
}
get_uci_ref_index() {
local val;
@@ -62,14 +104,15 @@ validate_obuspa_section()
{
uci_validate_section ${CONFIGURATION} obuspa "${1}" \
'enabled:bool:true' \
'trust_cert:string' \
'client_cert:string' \
'trust_cert:file' \
'client_cert:file' \
'interface:string' \
'ifname:string:"br-lan"' \
'debug:bool:false' \
'log_level:uinteger' \
'log_dest:string' \
'db_file:string'
'log_dest:file' \
'db_file:file' \
'role_file:file'
}
validate_localagent_section()
@@ -85,7 +128,8 @@ validate_controller_section()
uci_validate_section ${CONFIGURATION} controller "${1}" \
'EndpointID:string' \
'Enable:bool:true' \
'AssignedRole:string:Device.LocalAgent.ControllerTrust.Role.1' \
'AssignedRole:string' \
'assigned_role_name:string' \
'PeriodicNotifInterval:uinteger:86400' \
'PeriodicNotifTime:string' \
'USPNotifRetryMinimumWaitInterval:uinteger:5' \
@@ -95,9 +139,9 @@ validate_controller_section()
'Reference:string' \
'Destination:string:controller-notify-dest' \
'Topic:string' \
'coap_host:string' \
'coap_host:host' \
'coap_path:string' \
'coap_port:uinteger' \
'coap_port:port' \
'mqtt:string' \
'stomp:string'
}
@@ -124,7 +168,7 @@ validate_mtp_section()
'PublishQoS:uinteger' \
'Destination:string' \
'coap_path:string' \
'coap_port:uinteger' \
'coap_port:port' \
'mqtt:string' \
'stomp:string'
}
@@ -132,12 +176,12 @@ validate_mtp_section()
validate_stomp_connection_section()
{
uci_validate_section ${CONFIGURATION} stomp "${1}" \
'Host:string:usp-controller.com' \
'Host:host' \
'Username:string' \
'Password:string' \
'encryption:bool:true' \
'Enable:bool:true' \
'Port:uinteger:61613' \
'Port:port:61613' \
'VirtualHost:string:/' \
'EnableHeartbeats:bool:true' \
'OutgoingHeartbeat:uinteger:30000' \
@@ -150,13 +194,13 @@ validate_stomp_connection_section()
validate_mqtt_client_section()
{
uci_validate_section ${CONFIGURATION} mqtt "${1}" \
'BrokerAddress:string' \
'BrokerPort:uinteger:1883' \
'BrokerAddress:host' \
'BrokerPort:port:1883' \
'Enable:bool:true' \
'Username:string' \
'Password:string' \
'ProtocolVersion:string:5.0' \
'TransportProtocol:string:TCP/IP' \
'ProtocolVersion:or("3.1", "3.1.1","5.0"):5.0' \
'TransportProtocol:or("TCP/IP","TLS"):TCP/IP' \
'KeepAliveTime:uinteger:60' \
'ClientID:string' \
'ConnectRetryTime:uinteger:5' \
@@ -180,7 +224,6 @@ configure_localagent() {
_num=1
while [ ${_num} -le ${controller_num} ]
do
db_set Device.LocalAgent.Controller.${_num}.BootParameter.1.Alias "cpe-1"
db_set Device.LocalAgent.Controller.${_num}.BootParameter.1.Enable "${Enable}"
db_set Device.LocalAgent.Controller.${_num}.BootParameter.1.ParameterName "${ParameterName}"
_num=$(( ${_num} + 1 ))
@@ -192,14 +235,14 @@ configure_localagent() {
configure_controller() {
local EndpointID Enable AssignedRole PeriodicNotifInterval PeriodicNotifTime USPNotifRetryMinimumWaitInterval
local USPNotifRetryIntervalMultiplier ControllerCode Protocol Destination coap_host coap_path coap_port
local Reference Topic mqtt stomp
local Reference Topic mqtt stomp assigned_role_name
validate_controller_section "${1}" || {
log "Validation of controller section failed"
return 1;
}
if [ -z ${EndpointID} -o -z ${Protocol} ]; then
if [ -z "${EndpointID}" -o -z "${Protocol}" ]; then
log "controller:: EndpointID id and Protocol cannot be empty"
return 1;
fi
@@ -232,7 +275,15 @@ configure_controller() {
db_set Device.LocalAgent.Controller.${controller_num}.Alias "cpe-${controller_num}"
db_set Device.LocalAgent.Controller.${controller_num}.Enable "${Enable}"
db_set Device.LocalAgent.Controller.${controller_num}.EndpointID "${EndpointID}"
#db_set Device.LocalAgent.Controller.${controller_num}.AssignedRole "${AssignedRole}"
if [ -n "${AssignedRole}" ]; then
db_set Device.LocalAgent.Controller.${controller_num}.AssignedRole "${AssignedRole}"
else
if [ -n "${assigned_role_name}" ]; then
AssignedRole=$(get_role_index ${assigned_role_name})
db_set Device.LocalAgent.Controller.${controller_num}.AssignedRole "${AssignedRole}"
fi
fi
db_set Device.LocalAgent.Controller.${controller_num}.PeriodicNotifInterval "${PeriodicNotifInterval}"
if [ -n "${PeriodicNotifTime}" ]; then
db_set Device.LocalAgent.Controller.${controller_num}.PeriodicNotifTime "${PeriodicNotifTime}"
@@ -297,6 +348,74 @@ configure_subscription(){
db_set Device.LocalAgent.Subscription.${subs_num}.Recipient "${Recipient}"
}
validate_challenge_section()
{
uci_validate_section ${CONFIGURATION} challenge "${1}" \
'Enable:bool:true' \
'Alias:string' \
'Description:string' \
'role_name:string' \
'Role:string' \
'Value:string' \
'Retries:uinteger:3' \
'LockoutPeriod:uinteger:0'
}
get_role_index() {
local role="Device.LocalAgent.ControllerTrust.Role"
local index=0
local role_name="${@}"
case "${role_name}" in
'Full Access')
index=1;
;;
'Untrusted')
index=2;
;;
*)
local ji=$(get_role_index_from_json ${role_name})
index=$(( ji + 2 )) # Add predefined roles
esac
echo "${role}.${index}"
}
configure_challenges() {
local Enable Description role_name Role Value Retries LockoutPeriod Alias
validate_challenge_section "${1}" || {
log "Validation of challenge section failed"
exit 1;
}
if [ -z "${role_name}" -a -z ${Role} ]; then
log "Either role_name or Role must defined for a challenge";
return 1;
fi
challenge_num=$(( challenge_num + 1))
db_set Device.LocalAgent.ControllerTrust.Challenge.${challenge_num}.Enable "${Enable}"
if [ -n "${Description}" ]; then
db_set Device.LocalAgent.ControllerTrust.Challenge.${challenge_num}.Description "${Description}"
fi
if [ -z "${Role}" ]; then
Role=$(get_role_index ${role_name})
fi
if [ -z "${Alias}" -a -n "${role_name}" ]; then
Alias=${role_name}
fi
db_set Device.LocalAgent.ControllerTrust.Challenge.${challenge_num}.Alias "${Alias}"
db_set Device.LocalAgent.ControllerTrust.Challenge.${challenge_num}.Role "${Role}"
db_set Device.LocalAgent.ControllerTrust.Challenge.${challenge_num}.Value "${Value}"
db_set Device.LocalAgent.ControllerTrust.Challenge.${challenge_num}.Retries "${Retries}"
db_set Device.LocalAgent.ControllerTrust.Challenge.${challenge_num}.LockoutPeriod "${LockoutPeriod}"
}
configure_mtp() {
local Enable Protocol Reference ResponseTopicConfigured PublishQoS
local stomp mqtt
@@ -366,7 +485,7 @@ configure_stomp_connection() {
db_set Device.STOMP.Connection.${stomp_num}.Alias "cpe-${stomp_num}"
db_set Device.STOMP.Connection.${stomp_num}.Enable "${Enable}"
db_set Device.STOMP.Connection.${stomp_num}.Port "${Port}"
db_set Device.STOMP.Connection.${stomp_num}.X_ARRIS-COM_EnableEncryption "${encryption}"
db_set Device.STOMP.Connection.${stomp_num}.EnableEncryption "${encryption}"
db_set Device.STOMP.Connection.${stomp_num}.VirtualHost "${VirtualHost}"
db_set Device.STOMP.Connection.${stomp_num}.EnableHeartbeats "${EnableHeartbeats}"
db_set Device.STOMP.Connection.${stomp_num}.OutgoingHeartbeat "${OutgoingHeartbeat}"
@@ -412,14 +531,15 @@ configure_mqtt_client(){
configure_obuspa() {
local enabled trust_cert ifname interface debug log_level db_file log_dest
local enabled trust_cert ifname interface debug log_level db_file log_dest role_file
validate_obuspa_section "global" || {
log "Validation of global section failed"
return 1;
}
[ ${enabled} -eq 0 ] && exit 0
role_def_file="${role_file}"
[ ${enabled} -eq 0 ] && return 0
if [ ${debug} -eq 1 ]; then
# Forward stdout of the command to logd
@@ -483,6 +603,7 @@ db_init() {
config_foreach configure_stomp_connection stomp
config_foreach configure_mqtt_client mqtt
config_foreach configure_subscription subscription
config_foreach configure_challenges challenge
db_set Internal.Reboot.Cause "LocalFactoryReset"
}
@@ -504,7 +625,42 @@ remove_db() {
start
}
service_running() {
local AgentEndpointID serial oui user pass
local opt=""
ubus -t 10 wait_for usp.raw
config_load obuspa
config_get AgentEndpointID localagent EndpointID ""
if [ -z "${AgentEndpointID}" ]; then
serial=$(ubus -t 1 call usp.raw get '{"path":"Device.DeviceInfo.SerialNumber"}'|jsonfilter -e '@["parameters"][0].value')
oui=$(ubus -t 1 call usp.raw get '{"path":"Device.DeviceInfo.ManufacturerOUI"}'|jsonfilter -e '@["parameters"][0].value')
AgentEndpointID="os::${oui}-${serial}"
fi
config_get user localmqtt Username
if [ -n "${user}" ]; then
opt="-u ${user}"
fi
config_get pass localmqtt Password
if [ -n "${pass}" ]; then
opt="${opt} -P ${pass}"
fi
# publish Agent's EndpointID in mosquito broker for discovery
# This is a work around till obuspa does not support advertising
log "Publishing EndpointID ${AgentEndpointID} to local mqtt broker"
mosquitto_pub -r -t "obuspa/EndpointID" -m "${AgentEndpointID}" ${opt}
procd_running ${CONFIGURATION}
}
start_service() {
ubus wait_for usp.raw
if [ "$?" -ne 0 ]; then
log "OBUSPA failed to start usp.raw not available"
return 0
fi
procd_open_instance ${CONFIGURATION}
procd_set_param command ${PROG}
db_init
@@ -527,11 +683,33 @@ reload_service() {
}
service_triggers() {
procd_add_reload_trigger "uspd"
procd_add_reload_trigger "uspd" "mosquitto"
procd_add_config_trigger "config.change" "${CONFIGURATION}" /etc/init.d/obuspa remove_db
local interface
config_load obuspa
config_get interface global interface
[ -n "$interface" ] && procd_add_interface_trigger "interface.*" "$interface" /etc/init.d/obuspa reload
# Create a reload trigger if schema update avaialble
procd_open_trigger
json_add_array
json_add_string "" "usp.raw"
json_add_array
json_add_string "" "if"
json_add_array
json_add_string "" "eq"
json_add_string "" "action"
json_add_string "" "schema_update_available"
json_close_array
json_add_array
json_add_string "" "run_script"
json_add_string "" "/etc/init.d/obuspa"
json_add_string "" "reload"
json_close_array
json_close_array
json_add_int "" "1000"
json_close_array
procd_close_trigger
# local interface
# config_load obuspa
# config_get interface global interface
# [ -n "$interface" ] && procd_add_interface_trigger "interface.*" "$interface" /etc/init.d/obuspa reload
}

View File

@@ -0,0 +1,97 @@
{
"roles": [
{
"name": "admin",
"permission": [
{
"object": "Device.",
"perm": [
"PERMIT_NONE"
]
},
{
"object": "Device.DeviceInfo.",
"perm": [
"PERMIT_GET",
"PERMIT_GET_INST"
]
},
{
"object": "Device.WiFi.",
"perm": [
"PERMIT_GET",
"PERMIT_SET",
"PERMIT_ADD",
"PERMIT_DEL",
"PERMIT_OPER",
"PERMIT_SUBS_VAL_CHANGE",
"PERMIT_SUBS_OBJ_ADD",
"PERMIT_SUBS_OBJ_DEL",
"PERMIT_SUBS_EVT_OPER_COMP",
"PERMIT_GET_INST",
"PERMIT_OBJ_INFO",
"PERMIT_CMD_INFO"
]
},
{
"object": "Device.IP.",
"perm": [
"PERMIT_GET",
"PERMIT_GET_INST"
]
}
]
},
{
"name": "user",
"permission": [
{
"object": "Device.",
"perm": [
"PERMIT_NONE"
]
},
{
"object": "Device.DeviceInfo.",
"perm": [
"PERMIT_GET",
"PERMIT_GET_INST"
]
},
{
"object": "Device.WiFi.",
"perm": [
"PERMIT_GET",
"PERMIT_OPER",
"PERMIT_SUBS_VAL_CHANGE",
"PERMIT_SUBS_OBJ_ADD",
"PERMIT_SUBS_OBJ_DEL",
"PERMIT_SUBS_EVT_OPER_COMP",
"PERMIT_GET_INST",
"PERMIT_OBJ_INFO",
"PERMIT_CMD_INFO"
]
},
{
"object": "Device.IP.",
"perm": [
"PERMIT_GET",
"PERMIT_GET_INST"
]
}
]
},
{
"name": "undefined-1"
},
{
"name": "undefined-2"
},
{
"name": "undefined-3"
},
{
"name": "undefined-4"
}
]
}

View File

@@ -5,13 +5,14 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=owsd
PKG_VERSION:=1.1.2
PKG_VERSION:=1.1.3
PKG_RELEASE:=1
PKG_SOURCE_PROTO=git
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/owsd.git
PKG_SOURCE_VERSION:=fd696e9d1be8278db3eb1d9be97e1a66afd6e1f6
PKG_SOURCE_VERSION:=f78f7198944758cd2140887ecd8970432f678fc1
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

@@ -1,5 +1,6 @@
config owsd 'global'
option sock '/var/run/ubus.sock'
option enable '0'
# option sock '/var/run/ubus/ubus.sock'
option www '/www'
# option redirect '/cgi-bin/luci:/cacheflush.html'
# option www_maxage '3600'

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