Compare commits

...

317 Commits

Author SHA1 Message Date
nevadita.chatterjee
b7597b920d ieee1905: 4.10.40 2023-06-21 12:14:45 +05:30
Grzegorz Sluja
749678804a Update package dectmngr 3.5.8
Anonymous call to DECT should be displayed as "Withheld"
2023-06-15 12:33:56 +02:00
Vivek Kumar Dutta
d6d623e761 icwmp: 8.4.26.10 2023-06-15 09:12:09 +05:30
Grzegorz Sluja
2264847f69 Update package dectmngr
6ea57b3 Fix the bug that missed calls are not cleared after reading from the handset
ae9e8f3 Change narrow band to wide band for incoming calls to DECT handsets
a9b4e71 Fix memory corruption in converAsciiToHexString()
b48f408 CI: move code-analysis to own container registry (IOP-9341)
903ea46 Fix the second caller id display issue
83f89a8 Stop building libdect.so
a3ce12a Always use pthread_t as the type of thread id other than u32
2023-06-13 10:49:16 +02:00
Filip Matusiak
4e773fb976 map-agent: 2.10.4.1 2023-06-12 09:44:20 +02:00
Jakob Olsson
68f5ac2402 map-agent: remove legacy parts of vlan teardown 2023-06-08 15:52:46 +02:00
Jakob Olsson
5cb9293bd9 map-agent: traffic_separation: set guest zone default fw rule to DROP 2023-06-08 14:29:14 +02:00
nevadita.chatterjee
6fb739d980 ieee1905: 4.10.39 2023-06-08 16:21:46 +05:30
Jakob Olsson
19d34e3417 map-agent: 2.10.4.0 2023-06-03 19:28:27 +02:00
Jakob Olsson
2bf41d47b0 map-agent: traffic_separation: remove patch and diff teardown usage 2023-06-03 19:28:27 +02:00
Jakob Olsson
fb4abd07eb map-agent: traffic_separation: update guest ping fw rule 2023-06-02 13:57:50 +02:00
Jakob Olsson
cedcb18ce9 map-agent: traffic_separation: refactor teardown 2023-06-02 13:57:50 +02:00
Jakob Olsson
41c4512235 Revert "Revert "map-agent: traffic_separation: allow al-bridge to untag primary""
This reverts commit 5fe134d348.
2023-06-02 13:57:29 +02:00
Jakob Olsson
fc87cf8197 map-agent: traffic_separation: create 8021q interfaces from network cfg 2023-06-02 13:57:29 +02:00
Marek Puzyniak
9a119ba0dd map-agent: 2.10.3.4 2023-05-31 11:10:20 +00:00
Jakob Olsson
5fe134d348 Revert "map-agent: traffic_separation: allow al-bridge to untag primary"
This reverts commit b5f38bf1f5.
2023-05-24 16:49:10 +02:00
Filip Matusiak
de057f0d58 map-agent: 2.10.3.3 2023-05-24 10:52:59 +02:00
Jakob Olsson
ffc0f1cad1 map-agent: 2.10.3.2 2023-05-23 13:52:40 +02:00
Jakob Olsson
379f1bc95a map-agent: traffic_separation: fixes to fw rules and their teardown 2023-05-23 13:50:30 +02:00
Filip Matusiak
ec7a8d0244 map-controller: 2.8.0.25
Signed-off-by: Filip Matusiak <filip.matusiak@iopsys.eu>
2023-05-22 13:32:41 +02:00
Filip Matusiak
ffa7f9bbc6 map-controller: 2.8.0.24
Signed-off-by: Filip Matusiak <filip.matusiak@iopsys.eu>
2023-05-17 16:25:02 +02:00
Jakob Olsson
0d3da06f85 map-agent: 2.10.3.1 2023-05-17 14:16:44 +00:00
Jakob Olsson
55cc54e7f7 map-agent: traffic_separation: update ebtable isolation rules for ethports 2023-05-17 14:16:44 +00:00
Jakob Olsson
b5f38bf1f5 map-agent: traffic_separation: allow al-bridge to untag primary 2023-05-17 14:16:44 +00:00
Jakob Olsson
e43631ecaa map-agent: traffic_separation: allow guests only access to DHCP and DNS 2023-05-17 14:16:44 +00:00
Jakob Olsson
ddf478f77a map-agent: multiap: attempt to update ebtable rules when uplink changes 2023-05-17 14:16:44 +00:00
nevadita.chatterjee
38d9ef7526 decollector: 2.10.1.2 2023-05-17 17:02:50 +05:30
Jakob Olsson
6b8ee5491a map-agent: traffic_separation: add support for guest-to-guest isolation across eth backhaul 2023-05-15 12:16:49 +02:00
Jakob Olsson
38b64c584e map-agent: traffic_separation: fixes and properly set tags on extender bridge 2023-05-11 09:45:30 +02:00
Amit Kumar
492cc5c029 map-topology: Added flag to get active connection
Added compilation flag in Makefile that enables fetch of
active connection using netlink from libconntrack.
2023-05-10 16:10:02 +05:30
Filip Matusiak
f030674f68 map-controller: 2.8.0.23
Signed-off-by: Filip Matusiak <filip.matusiak@iopsys.eu>
2023-05-10 12:10:29 +02:00
Filip Matusiak
32a13d12f0 ieee1905: 4.10.38
Signed-off-by: Filip Matusiak <filip.matusiak@iopsys.eu>
2023-05-09 14:44:12 +02:00
nevadita.chatterjee
3dbe7f7f3e map-topology: 2.5.0.16 2023-05-04 17:16:35 +05:30
Jakob Olsson
f1b3ec5a7d map-agent: 2.10.3.0 2023-05-02 14:39:40 +00:00
Jakob Olsson
b839ad3a35 map-agent: add dependency on patch and diff 2023-05-02 14:39:40 +00:00
Jakob Olsson
50d8f9536c map-agent: platform scripts: fix guest-to-guest isolation and guest pkt leak 2023-05-02 14:39:40 +00:00
suvendhu
1829f69726 icwmpd: remove DHCP option 125 deletion 2023-05-02 19:57:59 +05:30
Vivek Kumar Dutta
d228445386 icwmp: 8.4.26.8 2023-05-01 12:17:36 +05:30
Vivek Kumar Dutta
80dbe5da48 icwmp: 8.4.26.7 2023-04-27 10:52:15 +05:30
Filip Matusiak
11540c919a map-controller: 2.8.0.22 2023-04-26 14:51:20 +02:00
Filip Matusiak
1278e4d936 ieee1905: 4.10.37
Signed-off-by: Filip Matusiak <filip.matusiak@iopsys.eu>
2023-04-24 10:50:43 +02:00
Vivek Kumar Dutta
402ac6f5b2 icwmp: 8.4.26.6 2023-04-21 16:02:11 +05:30
Vivek Kumar Dutta
5097780ae3 icwmp: 8.4.26.5 2023-04-13 10:48:41 +05:30
Anjan Chanda
16d0184b73 ieee1905: 4.10.36 2023-04-12 08:31:26 +02:00
Vivek Kumar Dutta
282026b14d bbf: 6.8.9.35 2023-04-11 11:08:48 +05:30
Marek Puzyniak
faf81bbe2b ieee1905: 4.10.35 2023-04-06 07:08:27 +00:00
Marek Puzyniak
cfce60fd58 map-controller: 2.8.0.21 2023-04-06 06:52:59 +00:00
Marek Puzyniak
486b6c4b1f map-agent: 2.10.2.12 2023-04-06 06:01:44 +00:00
Vivek Kumar Dutta
e180e17bfe icwmp: 8.4.26.4 2023-04-03 15:43:59 +05:30
Vivek Kumar Dutta
14b3cf4657 icwmp: 8.4.26.3 2023-03-31 15:10:57 +05:30
Vivek Kumar Dutta
77d641c688 icwmp: Fix duplicate Bootstap 2023-03-30 13:02:47 +05:30
Grzegorz Sluja
5cfc71114c endptmngr: Fix for congestion tone not played 2023-03-27 09:02:58 +02:00
vdutta
9fdc3d6126 icwmp: Fix probable crashes 2023-03-23 19:04:01 +05:30
Anjan Chanda
316e6d080a wfadatad: 2.10.1.1 2023-03-22 15:51:54 +01:00
Anjan Chanda
652e6335e5 easy-soc-libs: 6.5.60 2023-03-22 15:32:33 +01:00
nevadita.chatterjee
82a68b2f27 ieee1905: 4.10.34 2023-03-17 15:07:49 +05:30
Filip Matusiak
2d638220b2 map-agent: 2.10.2.11 2023-03-10 12:59:51 +01:00
Filip Matusiak
0811488af9 map-controller: 2.8.0.20 2023-03-10 12:59:43 +01:00
Omar Kallel
18eb5d7f58 icwmp: Fix Vendor Conf Download issue 2023-03-08 17:31:32 +01:00
Jakob Olsson
14d2d0934f map-agent: 2.10.2.10 2023-02-21 10:01:08 +01:00
vdutta
3fd9ca090d bbf: 6.8.9.34 2023-02-17 10:45:22 +05:30
vdutta
8ea89f2b98 icwmp: 8.4.25.17 2023-02-15 18:17:52 +05:30
Jakob Olsson
39f8886e25 map-agent: 2.10.2.9 2023-02-15 10:55:18 +01:00
vdutta
22d496ac67 obuspa: 5.0.0.16.7 2023-02-13 14:56:29 +05:30
Jakob Olsson
cc7ad3a31c map-agent: 2.10.2.8 2023-02-06 10:06:23 +01:00
vdutta
29e9923bf7 icwmp: 8.4.25.16 2023-02-03 18:46:34 +05:30
Anjan Chanda
9fa6c02fa7 wfadatad: 2.10.1.0 2023-02-03 10:46:10 +01:00
vdutta
35396ea204 icwmp: 8.4.25.15 2023-02-03 15:10:46 +05:30
vdutta
7f108c27ee bbf: 6.8.9.33 2023-01-31 20:19:49 +05:30
vdutta
9d3db6e1a0 icwmp: 8.4.25.14 2023-01-31 20:18:18 +05:30
Omar Kallel
767aff87b8 icwmp: Update dhcp option 60 handling 2023-01-31 14:46:35 +00:00
nevadita.chatterjee
65cf5ba958 map-topology:2.5.0.15 2023-01-31 19:07:37 +05:30
Jakob Olsson
c8cfbc194d map-agent: 2.10.2.7 2023-01-31 10:22:31 +01:00
Jakob Olsson
364b6223fa map-controller: 2.8.0.19 2023-01-31 10:21:11 +01:00
Omar Kallel
64fb2de39a icwmp: set dslforum.org as value for option 60 2023-01-27 14:37:00 +01:00
vdutta
98ea0bbf05 bbf: align with icwmp 2023-01-27 16:30:04 +05:30
vdutta
901666827e icwmp: Updated notification handling 2023-01-27 16:26:17 +05:30
vdutta
08a9824d5e uspd: 2.2.14.3 2023-01-26 18:54:49 +05:30
vdutta
330ce960fc bbf: 6.8.9.31 2023-01-26 18:54:12 +05:30
vdutta
ea8a6fd790 Revert "bbf: 6.8.9.31"
This reverts commit 531b441f80.
2023-01-26 18:52:09 +05:30
vdutta
531b441f80 bbf: 6.8.9.31 2023-01-26 18:49:44 +05:30
Jakob Olsson
471c8d8e5e map-controller: 2.8.0.18 2023-01-26 14:05:16 +01:00
Amin Ben Romdhane
5981e5b563 ssdpd: 1.0.5
(cherry picked from commit a715e0a659)
2023-01-26 04:20:01 +00:00
Anjan Chanda
90ca84517c easy-soc-libs: 6.5.57 2023-01-25 14:23:38 +01:00
Anjan Chanda
0fe517315e ieee1905: 4.10.33 2023-01-25 14:08:31 +01:00
Anjan Chanda
21f18cfd34 easy-soc-libs: 6.5.55 2023-01-25 08:21:00 +01:00
nevadita.chatterjee
ad39e7603b ieee1905: 4.10.32 2023-01-24 17:32:51 +05:30
Marek Puzyniak
be0595cb13 easy-soc-libs: 6.4.54 2023-01-24 09:30:53 +00:00
Filip Matusiak
1b9c7328a3 map-controller: validate thresholds in sta_steering section of config
Signed-off-by: Filip Matusiak <filip.matusiak@iopsys.eu>
2023-01-16 11:07:21 +00:00
Sukru Senli
3aa9e7fbe2 iop: genconfig: in customerconfigs use the same branch as in iowrt repo 2023-01-16 11:59:18 +01:00
Marek Puzyniak
6c1a16b3b4 wifimngr: 14.0.10 2023-01-13 13:10:39 +00:00
Marek Puzyniak
860c9ce9e9 easy-soc-libs: 6.4.53 2023-01-13 13:07:59 +00:00
Jakob Olsson
c5de1a939f wfadatad: 2.10.0.8 2023-01-13 13:09:20 +01:00
vdutta
7ccd66f2e0 bbf: 6.8.9.30 2023-01-13 17:04:23 +05:30
vdutta
886bc94363 ssdpd: 1.0.4 2023-01-13 12:29:02 +05:30
vdutta
03bd91650b sulu: 1.3.26 2023-01-13 12:28:26 +05:30
suvendhu
b6d834467d icwmp: cherry-pick option43 handling 2023-01-12 12:47:48 +05:30
Amit Kumar
a69268966c map-topology: enhanced wan per host statistics 2023-01-11 09:21:22 +05:30
Amit Kumar
35c02b68d3 topologyd: enabled timestamp flag in nf conntrack 2023-01-10 14:10:59 +05:30
Wenpeng Song
8605c1e455 Update packages endptmngr and dectmngr
dectmngr-3.5.6: Send CALL_REJECT only for an unanswered incoming call 
endptmngr: Fix CALL_REJECT and ON-HOOK handling
2023-01-03 13:24:41 +00:00
vdutta
76457bc80a ssdpd: 1.0.3 2022-12-23 13:53:15 +05:30
vdutta
0a17b21d66 obuspa: 5.0.0.16.6 2022-12-22 16:24:25 +05:30
vdutta
579e188bc8 icwmp: 8.4.25.11 2022-12-22 16:10:41 +05:30
vdutta
42c3fd9ce4 bbf: 6.8.9.29 2022-12-22 15:54:51 +05:30
nevadita.chatterjee
d3d638dd6f map-topology: 2.5.0.14 2022-12-22 10:28:20 +05:30
Jakob Olsson
3c9aabbc1b ieee1905: 4.10.31 2022-12-21 15:52:40 +01:00
Jakob Olsson
ccb83f2c91 map-agent: 2.10.2.6 2022-12-21 15:51:59 +01:00
sverma
6d9b07317b add psk mode on i1905, agent and controller 2022-12-21 17:17:00 +05:30
sverma
69cca97ff6 map-agent: add support for other enc modes 2022-12-21 14:48:46 +05:30
sverma
fdf4abda52 map-controller: add support for wpa/wpa2 2022-12-21 14:40:17 +05:30
Jakob Olsson
cbbdbca752 map-agent: 2.10.2.5 2022-12-20 16:13:15 +01:00
Jakob Olsson
1bb1733238 map-controller: 2.8.0.17 2022-12-20 16:12:35 +01:00
Saurabh Verma
6b44d95bd5 map-controller: init.d: add support for other enc methods 2022-12-20 14:56:43 +00:00
suvendhu
8289dce603 Fix GW info overwrite on boot
(cherry picked from commit 7353a6bfe7)
2022-12-20 12:51:30 +00:00
sverma
d0ca976d71 wfadatad: 2.10.0.7 2022-12-19 12:17:07 +00:00
Anjan Chanda
2bb5272e3d ieee1905: 4.10.30 2022-12-19 13:14:09 +01:00
Amin Ben Romdhane
7bc170188b Add ssdpd package
(cherry picked from commit 39f2dab3f2)
2022-12-19 11:24:48 +00:00
vdutta
6bd264e6d5 sulu: 1.3.24 2022-12-19 16:53:03 +05:30
vdutta
d0e229743c bbf: 6.8.9.28 2022-12-19 16:27:15 +05:30
vdutta
79edd055bf bbf: gateway info fallback 2022-12-19 15:54:56 +05:30
Vivek Kumar Dutta
2408f215ac icwmp: dhcp handling for option 125 2022-12-19 07:28:46 +00:00
Jakob Olsson
d66e7fab9b map-controller: 2.8.0.16 2022-12-14 12:34:43 +01:00
Jakob Olsson
b96ebeb84c map-agent: 2.10.2.4 2022-12-14 12:34:09 +01:00
vdutta
2a7ba5608f bbf: 6.8.9.26 2022-12-09 17:16:09 +05:30
Jakob Olsson
ec61d302c5 map-agent: 2.10.2.3 2022-12-09 11:52:43 +01:00
Jakob Olsson
186e8a960d map-agent: traffic_separation: check for existing bridge-vlan section before appending new one 2022-12-09 11:51:59 +01:00
Jakob Olsson
1692ed2afe map-agent: 2.10.2.2 2022-12-07 15:50:26 +01:00
vdutta
404ae888a8 sulu: 1.3.15 2022-12-07 19:40:08 +05:30
vdutta
bbe4473f40 uspd: 2.2.14.2 2022-12-07 19:37:56 +05:30
vdutta
51707f0272 bbf: 6.8.9.25 2022-12-07 16:56:05 +05:30
Jakob Olsson
c598a47281 map-agent: traffic_separation: fix bridge var typo 2022-12-07 10:45:39 +01:00
Jakob Olsson
63c5275f42 map-agent: 2.10.2.1 2022-12-07 10:44:46 +01:00
Jakob Olsson
8875203b9b map-topology: 2.5.0.13 2022-12-06 16:17:45 +01:00
vdutta
1d9e70a1d2 sulu: 1.3.13 2022-12-05 18:54:39 +05:30
Jakob Olsson
c8042b2b6c Revert "mapagent: port add delete to bridge using uci ubus"
This reverts commit a316b74555.
2022-12-05 09:32:06 +01:00
Amit Kumar
a316b74555 mapagent: port add delete to bridge using uci ubus 2022-12-05 08:22:47 +05:30
Jakob Olsson
91a81169bc map-agent: 2.10.2.0 2022-11-30 16:30:04 +01:00
Marek Puzyniak
d12aff727c easy-soc-libs: 6.4.52 2022-11-29 14:28:07 +00:00
Jakob Olsson
0daddcd84f ieee1905: uci-default: change al-iface ifname from list to option 2022-11-29 14:18:19 +01:00
vdutta
7a684f0a40 bbf: 6.8.9.24 2022-11-29 18:44:43 +05:30
vdutta
bc8bc4bd48 bbf: 6.8.9.23 2022-11-28 15:43:59 +05:30
vdutta
5316eb2cca obuspa: 5.0.0.16.5 2022-11-28 15:43:30 +05:30
vdutta
37621309e8 uspd: 2.2.14.1 2022-11-28 15:43:04 +05:30
Wenpeng Song
ac7abe0536 bbf: 6.8.9.22 2022-11-23 10:04:41 +00:00
Yalu Zhang
242fc21967 Update package endptmngr
Correction of codec names for codecs ubus call
2022-11-23 10:30:03 +01:00
Filip Matusiak
8d4453b107 map-agent: 2.10.1.2
Signed-off-by: Filip Matusiak <filip.matusiak@iopsys.eu>
2022-11-22 10:47:28 +01:00
vdutta
5213d64579 sulu: 1.3.8 2022-11-17 11:57:58 +00:00
Jakob Olsson
3e872da3ce map-controller: 2.8.0.15 2022-11-15 16:59:13 +01:00
Anjan Chanda
c35824f5ec wfadatad: 2.10.0.6 2022-11-15 10:34:08 +01:00
Grzegorz Sluja
bf6e0244f4 endptmngr: Refactor inconsistency about call_id, pcm_id and pcm_state 2022-11-11 10:29:49 +01:00
Yalu Zhang
dc20fe3654 Update package voicemngr
Fix a compiling error for release-6.5 branch
2022-11-10 16:09:52 +01:00
Yalu Zhang
c3b0ecb042 Add package voicemngr 2022-11-10 15:39:21 +01:00
vdutta
38c0a6b60f bbf: 6.8.9.21 2022-11-03 12:26:13 +05:30
vdutta
fc475de4da icwmp: 8.4.25.10 2022-11-03 12:24:42 +05:30
Jakob Olsson
74f4716ccd map-agent: 2.11.1.1 2022-10-28 12:57:19 +02:00
Jakob Olsson
24f125ff94 map-agent: 2.11.1.0 2022-10-27 15:08:20 +02:00
Sukru Senli
caccbdfdf0 icwmp: 8.4.25.9
Make the enable/disable of GetRPCMethods ACS methods done via cwmp uci option
2022-10-27 11:44:38 +02:00
Jakob Olsson
ce124fc5da map-agent: 2.10.0.28 2022-10-26 12:16:39 +02:00
Jakob Olsson
8abc606452 map-agent: config: add missing otpions options 2022-10-26 10:48:06 +02:00
Jakob Olsson
6417542d62 map-agent: 2.10.0.27 2022-10-26 10:46:12 +02:00
Jakob Olsson
98ef763849 map-agent: 2.10.0.26 2022-10-25 16:31:51 +02:00
Jakob Olsson
e0f501a75f map-agent: 2.10.0.25 2022-10-25 10:14:47 +02:00
Jakob Olsson
a9850c25cb map-agent: traffic_seperation: add func isolate guest by ebtables 2022-10-24 17:41:18 +02:00
Jakob Olsson
91509243e5 map-agent: 2.10.0.24 2022-10-21 15:14:02 +02:00
Jakob Olsson
3b8c236546 map-agent: 2.10.0.23 2022-10-20 15:55:02 +02:00
Anjan Chanda
c2ccb89855 ieee1905: 4.10.28 2022-10-19 17:18:44 +02:00
Jakob Olsson
1994c26d23 map-agent: 2.10.0.22 2022-10-19 16:09:49 +02:00
vdutta
6ece55c134 bbf: 6.8.9.20 2022-10-19 18:19:12 +05:30
vdutta
ed58db0758 obuspa: 5.0.0.16.4 2022-10-19 18:18:46 +05:30
Anjan Chanda
d2f317c20c wfadatad: 2.10.0.2 2022-10-19 10:17:04 +02:00
Jakob Olsson
efb4429e76 easy-soc-libs: 6.4.51 2022-10-18 20:50:15 +02:00
Anjan Chanda
e3836e6dff ieee1905: 4.10.27 2022-10-18 16:40:52 +02:00
Jakob Olsson
cb9ddf3b59 map-controller: 2.8.0.14 2022-10-18 15:44:40 +02:00
Grzegorz Sluja
956ae7d35e dectmngr: Play dial tone if called number is not included in call establish message 2022-10-18 11:26:45 +02:00
Jakob Olsson
b7767e0333 map-controller: 2.8.0.13 2022-10-17 11:35:57 +02:00
Jakob Olsson
255aab4ef2 map-agent: 2.10.0.21 2022-10-14 17:04:35 +02:00
Jakob Olsson
827d19e557 map-agent: multiap: disable_lower_prio: always enable passed ifname 2022-10-14 16:14:44 +02:00
Marek Puzyniak
096310eca3 map-agent: don't enable bsta
When call bsta_disable_lower_priority
do not enable bsta.

Signed-off-by: Marek Puzyniak <marek.puzyniak@iopsys.eu>
2022-10-14 11:05:00 +00:00
Anjan Chanda
4afc0d6b10 ieee1905: 4.10.26 2022-10-14 09:53:58 +02:00
vdutta
01b12e0f59 bbf: 6.8.9.19 2022-10-13 19:20:59 +05:30
vdutta
f164d0f23f icwmp: 8.4.25.8 2022-10-13 17:24:26 +05:30
vdutta
bb8e213cdd icwmp: 8.4.25.7 2022-10-13 12:17:36 +05:30
vdutta
3998edded4 bbf: 6.8.9.18 2022-10-13 12:16:21 +05:30
Jakob Olsson
478e87d472 map-controller: 2.8.0.12 2022-10-12 17:23:58 +02:00
Rahul Thakur
05829038fa ponmngr: update serial number generation logic 2022-10-12 13:22:29 +00:00
Jakob Olsson
5cffc3cae3 map-agent: add ip-bridge dependency 2022-10-12 09:54:08 +02:00
Jakob Olsson
904f18411d map-agent: initd: remove legacy vlan setup 2022-10-12 09:29:57 +02:00
Anjan Chanda
f8ba7f0dcf ieee1905: 4.10.15 2022-10-11 22:32:14 +02:00
Jakob Olsson
5cb8608927 map-agent: 2.10.0.20 2022-10-11 16:34:14 +02:00
Jakob Olsson
9acead4347 map-controller: 2.8.0.11 2022-10-11 15:44:48 +02:00
Janusz Dziedzic
42bec0b4c8 wifimngr: 14.0.9
Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
2022-10-11 08:31:21 +00:00
Janusz Dziedzic
f038e661b6 easy-soc-libs: 6.4.50
Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
2022-10-11 08:30:20 +00:00
Jakob Olsson
84f93c585d map-controller: 2.8.0.10 2022-10-10 18:16:38 +02:00
Jakob Olsson
f609fe8845 Revert "map-agent: 2.10.0.20"
This reverts commit f254adbfb2.
2022-10-10 18:15:58 +02:00
Jakob Olsson
f254adbfb2 map-agent: 2.10.0.20 2022-10-10 18:15:44 +02:00
vdutta
a41fa2790e bbf: 6.8.9.17 2022-10-10 10:48:05 +05:30
vdutta
6c16e88598 icwmp: 8.4.25.6 2022-10-10 10:32:48 +05:30
Jakob Olsson
3c581fca1a map-agent: 2.10.0.19 2022-10-07 15:12:27 +02:00
Jakob Olsson
035263a450 map-agent: 2.10.0.18 2022-10-06 15:40:42 +02:00
vdutta
11287b6faa bbf: 6.8.9.16 2022-10-06 18:22:24 +05:30
suvendhu
b6371cba1a icwmpd: 8.4.25.5 2022-10-06 18:19:46 +05:30
vdutta
c5097fc375 obuspa: 5.0.0.16.3 2022-10-06 14:42:20 +05:30
Grzegorz Sluja
ebaab686ed dectmngr: Change DECT handset presence check to RSSI request 2022-10-05 14:54:42 +02:00
vdutta
c758ec49fe bulkdata: 2.0.3.1 2022-10-04 12:11:45 +05:30
vdutta
84a52004bb bbf: 6.8.9.15 2022-10-04 12:10:28 +05:30
Marek Puzyniak
85df013680 map-agent: 2.10.0.17 2022-10-03 17:12:20 +00:00
Jakob Olsson
5c491c84dd map-agent: multiap: del vid on iface teardown 2022-10-03 17:04:17 +02:00
Jakob Olsson
ef34422a54 map-agent: 2.10.0.16 2022-10-03 16:01:27 +02:00
Jakob Olsson
50949e63b0 map-controller: 2.8.0.9 2022-09-30 16:11:56 +02:00
Filip Matusiak
38a07a87a0 map-controller: load rcpi plugin by default
Signed-off-by: Filip Matusiak <filip.matusiak@iopsys.eu>
2022-09-30 14:09:45 +00:00
Jakob Olsson
eb0cf4f1fa map-controller: 2.8.0.8 2022-09-30 12:49:55 +02:00
Jakob Olsson
1a15a4c42d map-topology: 2.5.0.12 2022-09-30 12:49:23 +02:00
Jakob Olsson
cd262d78b6 map-agent: 2.10.0.15 2022-09-30 12:48:57 +02:00
Jakob Olsson
654c047df7 map-controller: pass CFLAGS EASYMESH_VENDOR_EXT 2022-09-30 12:48:32 +02:00
Jakob Olsson
28cf302e58 map-agent: pass CFLAGS EASYMESH_VENDOR_EXT 2022-09-30 12:48:32 +02:00
Janusz Dziedzic
972eb125f0 easy-soc-libs: 6.4.49
Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
2022-09-27 13:18:27 +00:00
vdutta
d429fd24ee icwmp: 8.4.25.4 2022-09-26 19:10:36 +05:30
vdutta
6dda009eb5 twamp: 1.2.2
(cherry picked from commit 2660d8ad2e)
2022-09-26 09:07:26 +00:00
Janusz Dziedzic
84754a2704 map-agent: enable pktfwd when no TS
Enable pktfwd again when we disable
traffic separation.
Flush also FlowCache rules.

Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
2022-09-23 10:21:30 +00:00
vdutta
4a0a34cc19 bbf: 6.8.9.14 2022-09-23 15:29:02 +05:30
vdutta
4c0aac777e icwmp: 8.4.25.3 2022-09-23 08:51:45 +05:30
Anjan Chanda
0c14c69c2c wfadatad: 2.10.0.1 2022-09-22 21:21:55 +02:00
Jakob Olsson
f44fdd8db1 map-agent: 2.10.0.14 2022-09-22 10:58:44 +02:00
Jakob Olsson
1d849bd57a map-agent: ts: add func to clean stale vids from network conf 2022-09-22 10:58:28 +02:00
Janusz Dziedzic
d906c17eb0 easy-soc-libs: 6.4.48
Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
2022-09-21 18:22:51 +00:00
Jakob Olsson
dffe253f12 map-agent: 2.10.0.13 2022-09-21 12:17:22 +02:00
Sukru Senli
b26ddb4edb evoice: remove from 6.5 as it is incomplete 2022-09-20 17:47:59 +02:00
Jakob Olsson
eff6d9b96b map-agent: 2.10.0.12 2022-09-20 16:26:07 +02:00
suvendhu
2e852c5a99 twamp: 1.2.1
(cherry picked from commit 2391836769)
2022-09-20 13:02:26 +00:00
vdutta
3ee627c4ce bbf: 6.8.9.13 2022-09-20 15:06:13 +05:30
Jakob Olsson
726982c3e6 map-agent: 2.10.0.11 2022-09-20 10:50:10 +02:00
Janusz Dziedzic
ab6c67f643 map-agent: 2.10.0.10
Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
2022-09-19 13:10:22 +00:00
vdutta
06f7f65b4d icwmp: 8.4.25.2 2022-09-19 16:28:21 +05:30
Jakob Olsson
77f7315b53 map-agent: 2.10.0.9 2022-09-19 12:03:27 +02:00
Janusz Dziedzic
47f8651078 map-agent: 2.10.0.8
Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
2022-09-19 09:25:31 +00:00
Janusz Dziedzic
b903a4f332 wifimngr: 14.0.8
Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
2022-09-19 08:45:34 +00:00
Janusz Dziedzic
b627749ae6 easy-soc-libs: 6.4.47
Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
2022-09-19 08:44:28 +00:00
Jakob Olsson
62120c6769 map-agent: 2.10.0.7 2022-09-16 16:18:14 +02:00
Jakob Olsson
13bf602a93 map-agent: 2.10.0.6 2022-09-15 13:58:44 +02:00
Grzegorz Sluja
be36ca0ab0 endptmngr: Add debug for RTP statistics received from Brcm 2022-09-15 08:06:32 +02:00
Jakob Olsson
3bf9566a62 map-agent: 2.10.0.5 2022-09-14 11:47:00 +02:00
Jakob Olsson
3a6295d370 map-topology: 2.5.0.11 2022-09-13 12:03:02 +02:00
Jakob Olsson
7418afc3e1 map-agent: 2.10.0.4 2022-09-12 10:44:20 +02:00
vdutta
026814da18 bbf: 6.8.9.12 2022-09-09 15:26:00 +05:30
Jakob Olsson
a11c28214c map-agent: 2.10.0.3 2022-09-09 11:34:11 +02:00
Jakob Olsson
9af889d28e map-agent: 2.10.0.2 2022-09-09 09:48:43 +02:00
Jakob Olsson
70294978f5 6.5 vlan teardown 2022-09-08 13:28:07 +00:00
Anjan Chanda
be01ee85f6 ieee1905: 4.10.14 2022-09-08 10:16:38 +02:00
Erik Karlsson
72e5126a0f icwmp: fix starting of icwmpd when enabled
When disabling, it is necessary to run start after stop. This will not
actually start icwmpd as there is a condition in start_service but it
is needed for the triggers to be registered. Otherwise, icwmpd will
not start later when enabled.
2022-09-08 11:52:04 +05:30
vdutta
038f5af58f bbf: 6.8.9.11 2022-09-08 11:50:14 +05:30
Anjan Chanda
9d6d189707 wfadatad: 2.8.1.5 2022-09-06 20:45:59 +02:00
Jakob Olsson
3f1aae0d5a map-agent: 2.10.0.0 2022-09-06 16:09:03 +02:00
Janusz Dziedzic
e15dd68933 map-agent: ts: use PVID for eth ports
Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
2022-09-06 16:08:51 +02:00
Janusz Dziedzic
5cd72947e9 map-agent: ts: skip eth name check add wlanX.staY
On DSA platform we could have lan/lanX/wan ports.
Tested on ex400.

Version: 2.10.2.0

Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
2022-09-06 16:08:51 +02:00
Janusz Dziedzic
24cb62f6e3 map-agent: verD: files traffic_separation
Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
2022-09-06 16:08:51 +02:00
vdutta
9910cde335 obuspa: Fix zombie instances for non-existent parameters 2022-09-06 11:52:31 +05:30
Anjan Chanda
63cfcd9968 wfadatad: 2.8.1.1 2022-09-05 21:16:16 +02:00
vdutta
cf91dc7a2a bbf: 6.8.9.10 2022-09-05 16:49:20 +05:30
Anjan Chanda
122b14c8b0 map-topology: add config EASYMESH_VENDOR_EXT_OUI 2022-09-02 13:44:22 +02:00
Anjan Chanda
7eb490ce87 map-controller: add config EASYMESH_VENDOR_EXT_OUI 2022-09-02 13:44:13 +02:00
Anjan Chanda
38cb923a38 map-agent: add config EASYMESH_VENDOR_EXT_OUI 2022-09-02 13:44:00 +02:00
Jakob Olsson
5b8dca53e9 map-topology: 2.5.0.10 2022-09-02 10:39:24 +02:00
Jakob Olsson
4799456b48 Map-agent: 2.9.1.2 2022-09-02 10:38:18 +02:00
Jakob Olsson
50492f67c3 map-controller: 2.8.0.7 2022-09-02 10:36:55 +02:00
Sukru Senli
717b83f0e4 sulu: 1.0.16 2022-08-31 15:12:40 +02:00
vdutta
d7da9d900c swmodd: Added cgroup mount handler package 2022-08-31 17:57:45 +05:30
Jakob Olsson
ebf076b539 map-agent: 2.9.1.1 2022-08-31 13:42:10 +02:00
vdutta
4a843187c8 bbf: 6.8.9.9 2022-08-31 16:09:49 +05:30
Jakob Olsson
94aa904234 map-agent: 2.9.1.0 2022-08-31 12:27:38 +02:00
Jakob Olsson
ebc7ab4334 map-agent: multiap: update bsta_clear_bssid API 2022-08-30 17:06:32 +02:00
Grzegorz Sluja
f30abfe5bd dectmngr: Send CMBS_EV_DEE_CALL_ANSWER to target when the remote party answers an outgoing call 2022-08-30 14:30:52 +02:00
Grzegorz Sluja
61882e980a endptmngr: Inform dectmngr about answer-call signal from asterisk 2022-08-30 14:29:32 +02:00
Sukru Senli
739faa80fe sulu: 1.0.15 2022-08-26 14:28:26 +02:00
Jakob Olsson
3ccc122539 wfadatad: 2.8.1.0 2022-08-26 13:41:04 +02:00
Jakob Olsson
eac510d7ea map-agent: 2.9.0.8 2022-08-25 16:57:46 +02:00
vdutta
1d34ac77e5 bbf: 6.8.9.8 2022-08-22 09:35:57 +05:30
Sukru Senli
e79f917e7e sulu-1.0.14 2022-08-19 13:37:53 +02:00
vdutta
bf59291610 bbf: 6.8.9.7 2022-08-19 15:58:38 +05:30
Jakob Olsson
17b223d35f map-agent: 2.9.0.7 2022-08-19 11:42:29 +02:00
Jakob Olsson
755efd42ae map-agent: 2.9.0.6 2022-08-19 10:58:05 +02:00
Rahul
46b8d717d5 urlfilter: update dns transaction id generation 2022-08-19 08:16:55 +05:30
Rahul Thakur
9be656695c ponmngr: configure serial no. at start 2022-08-17 17:51:19 +00:00
Jakob Olsson
8c242bbdad wfa-capi: 1.1.3 2022-08-17 10:20:51 +02:00
Jakob Olsson
d36da9d94b map-topology: 2.5.0.9 2022-08-15 09:08:22 +02:00
Anjan Chanda
ec4ac5a195 wfadatad: 2.8.0.2 2022-08-12 10:32:14 +02:00
Grzegorz Sluja
238f8bf928 dectmngr: Release the incoming call if it cannot be proceeded 2022-08-09 12:33:49 +02:00
Grzegorz Sluja
787abf300f endptmngr: Send DECT_UNAVAILABLE event to Asterisk if there is no handset available for an incoming call 2022-08-09 12:31:31 +02:00
Erik Karlsson
a96c18eb17 mosquitto-auth-shadow: initial implementation
Plugin for the mosquitto MQTT broker that allows authentication of
users via /etc/shadow
2022-08-09 12:11:05 +05:30
vdutta
f3d05939c8 sulu: Use system login credential for mqtt auth 2022-08-09 10:49:52 +05:30
vdutta
d438d4d269 bbf: 6.8.9.6 2022-08-09 10:43:04 +05:30
vdutta
b4985825c6 bbf: Free mem check before up/download diagnostics 2022-08-05 09:33:09 +05:30
nevadita.chatterjee
9fa8f7c8a6 ieee1905: 4.10.6 2022-08-04 09:35:55 +02:00
Grzegorz Sluja
5195434ee0 dectmngr: Release the incoming call if it cannot be proceeded 2022-08-03 11:09:04 +02:00
Grzegorz Sluja
1c4fee3b2d endptmngr: Send DECT_UNAVAILABLE event to Asterisk if there is no free DECT handset 2022-08-03 11:07:29 +02:00
vdutta
4d609b0d4c bbf: 6.8.9.4 2022-08-01 20:57:48 +05:30
Marek Puzyniak
9f2e663c66 easy-soc-libs: 6.4.46
Signed-off-by: Marek Puzyniak <marek.puzyniak@iopsys.eu>
2022-07-29 12:58:29 +00:00
Rahul
02de70ad19 qosmngr: update queue setup
Update q setup that allows better coverage of q setup specially in
mixed mode scheduling.
Also remove dead code related to stats since that is already taken
care of by qosmngr daemon now.
And lastly, simplify the logic to calculate q precedence.
2022-07-29 10:47:35 +00:00
vdutta
15dd3f227c bbf: Optimal memory allocation for json plugins 2022-07-29 10:45:46 +05:30
Grzegorz Sluja
2dab01fcf7 dectmngr: Add new dspg FW 4.13 Build17 2022-07-28 09:54:49 +02:00
vdutta
f1f31b1373 bbf: 6.8.9.2 2022-07-27 13:04:31 +05:30
vdutta
c405f8d9aa obuspa: Support for async operate restart callback 2022-07-27 12:58:29 +05:30
vdutta
2a3128f08c uspd: 2.2.14 2022-07-27 11:23:35 +05:30
vdutta
3d4aac4cef uspd: 2.2.13 2022-07-27 11:23:24 +05:30
vdutta
0f7d11e247 bbf: 6.8.9.1 2022-07-22 19:25:58 +05:30
Amin Ben Ramdhane
10407ee99a bbf: 6.8.9 2022-07-22 19:21:05 +05:30
Amin Ben Ramdhane
9ee39a451f uspd: 2.2.12 2022-07-22 19:20:24 +05:30
Jakob Olsson
141fd56567 map-controller: 2.8.0.6: add enable_ts uci docs and validator 2022-07-22 10:28:51 +02:00
nevadita.chatterjee
2f91df7419 map-topology: 2.5.0.8 2022-07-22 10:49:34 +05:30
Rahul
5e4a805880 ponmngr: resolve pon startup issues 2022-07-22 03:54:41 +00:00
Jakob Olsson
11f5012b63 map-controller: add enable_ts to example config 2022-07-21 17:01:57 +02:00
Jakob Olsson
4776861483 map-agent: 2.9.0.5 2022-07-21 16:34:15 +02:00
Jakob Olsson
40f255189f ieee1905: 4.10.5 2022-07-19 17:29:27 +02:00
Jakob Olsson
b71991ac56 map-agent: traffic_separation: do network restart if vid mapping is incorrect on reload 2022-07-19 15:28:34 +00:00
vdutta
5c9d1f09a6 stunc: 1.1.12 2022-07-18 19:16:43 +05:30
vdutta
c3ba98f2f3 icwmp: 8.4.25.1 2022-07-18 19:16:00 +05:30
Amin Ben Ramdhane
307b828994 bbf: 6.8.8 2022-07-15 17:33:29 +05:30
Jakob Olsson
1dbacbb880 ieee1905: 4.10.4 2022-07-15 13:59:46 +02:00
73 changed files with 2649 additions and 1084 deletions

View File

@@ -5,11 +5,11 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=libbbfdm
PKG_VERSION:=6.8.7
PKG_VERSION:=6.8.9.35
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/bbf.git
PKG_SOURCE_VERSION:=28ed108048c4d63bd0dc16dbf37ad52ea60c57b6
PKG_SOURCE_VERSION:=bce36468325a3cc4761a7c571583ec5d2b48a08d
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_MIRROR_HASH:=skip
@@ -142,8 +142,10 @@ define Package/libbbfdm/default/install
$(INSTALL_DIR) $(1)/etc/bbfdm/dmmap
$(INSTALL_DIR) $(1)/etc/bbfdm/json
$(INSTALL_DIR) $(1)/usr/lib/bbfdm
$(INSTALL_DIR) $(1)/usr/libexec/rpcd
$(CP) $(PKG_BUILD_DIR)/libbbfdm.so $(1)/lib/
$(INSTALL_BIN) $(PKG_BUILD_DIR)/scripts/* $(1)/usr/share/bbfdm
$(LN) /usr/share/bbfdm/bbf.diag $(1)/usr/libexec/rpcd/bbf.diag
endef
define Package/libbbfdm/default/prerm

View File

@@ -8,13 +8,13 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=bulkdata
PKG_VERSION:=2.0.3
PKG_VERSION:=2.0.3.1
LOCAL_DEV:=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/bulkdata.git
PKG_SOURCE_VERSION:=85d7486a21a9eb0e0f345b587b3ac506edcb72fe
PKG_SOURCE_VERSION:=33a6648de9ee0af33c44518656b56b0a30b6c1ab
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_MIRROR_HASH:=skip
endif

View File

@@ -8,13 +8,13 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=dectmngr
PKG_RELEASE:=3
PKG_VERSION:=3.5.4
PKG_VERSION:=3.5.8
LOCAL_DEV=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/dectmngr.git
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=54ebb54162fae9fdd6e327e430cf57aa217c176d
PKG_SOURCE_VERSION:=18dece420502e25a9bd9f3b534bc6c338fcc9377
PKG_MIRROR_HASH:=skip
endif

Binary file not shown.

Binary file not shown.

View File

@@ -7,13 +7,13 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=easy-soc-libs
PKG_VERSION:=6.4.44
PKG_VERSION:=6.5.60
PKG_RELEASE:=1
LOCAL_DEV=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=e4f811b7cd2836cdcce5ea0f97f515a317da5bc3
PKG_SOURCE_VERSION:=ec2e8d0341e246ff371481ae20418d8301dfcf12
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/easy-soc-libs.git
PKG_MAINTAINER:=Anjan Chanda <anjan.chanda@iopsys.eu>
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)_$(PKG_SOURCE_VERSION).tar.xz

View File

@@ -13,7 +13,7 @@ LOCAL_DEV=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/endptmngr.git
PKG_SOURCE_VERSION:=c099d6b0438f945d91bf3c9718da730a8a52ff27
PKG_SOURCE_VERSION:=e711227576cf876c1ae8139ebfa9170bae3c664e
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_MIRROR_HASH:=skip
endif

View File

@@ -1,75 +0,0 @@
#
# Copyright (C) 2022 IOPSYS Software Solutions AB
#
include $(TOPDIR)/rules.mk
PKG_NAME:=evoice
PKG_VERSION:=0.2.1
LOCAL_DEV=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/evoice.git
PKG_SOURCE_VERSION:=f2477946f9e142d01820b38e32ce98a781e0310e
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_MIRROR_HASH:=skip
endif
PKG_LICENSE:=PROPRIETARY
PKG_LICENSE_FILES:=LICENSE
# 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
include $(INCLUDE_DIR)/package.mk
define Package/$(PKG_NAME)
CATEGORY:=Network
SUBMENU:=Telephony
TITLE:=Ensemble Voice
URL:=
DEPENDS:= +libubox +libubus +libpicoevent +libuci +libstdcpp +TARGET_iopsys_brcm63xx_arm:bcmkernel +TARGET_iopsys_econet:kmod-voip_driver
endef
define Package/$(PKG_NAME)/description
Ensemble Voice. A stand alone SIP VoIP application.
endef
ifeq ($(LOCAL_DEV),1)
# If you want to build the code from your own local repositiory enable
# LOCAL_DEV and change the path below to your own git repository.
define Build/Prepare
rsync -av /swdev/bide/evoice_clean/* $(PKG_BUILD_DIR)/
endef
endif
ifeq ($(CONFIG_TARGET_iopsys_brcm63xx_arm),y)
TARGET_PLATFORM=BROADCOM
export IDIR = $(STAGING_DIR)/usr/include
export BDIR = bcm963xx/userspace/private/apps/voice
export _XFLAGS = -I$(IDIR) -I$(IDIR)/$(BDIR)/inc -I$(IDIR)/bcm963xx/xchg/bos/publicInc -I$(IDIR)/bcm963xx/bcmdrivers/broadcom/include/bcm963xx
else ifeq ($(CONFIG_TARGET_iopsys_econet),y)
TARGET_PLATFORM=ECONET
endif
export TARGET_PLATFORM
define Build/Compile
@echo "TARGET_PLATFORM=${TARGET_PLATFORM}"
+$(MAKE) -r -R -C $(PKG_BUILD_DIR) -f _bld/src/cdabs.mk SWB=b_gxxqca6 HWA=a_openwrt HWC=c_hosted OSP=p_posix TRG=SVrgBcmFxs LIF=cerder DBG=dbg
+$(MAKE) -r -R -C $(PKG_BUILD_DIR) -f _bld/src/cdabs.mk SWB=b_gxxqca6 HWA=a_openwrt HWC=c_hosted OSP=p_posix TRG=libvoiceservice LIF=cerder DBG=dbg
endef
define Package/evoice/install
$(CP) ./files/* $(1)/
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_DIR) $(1)/usr/lib/bbfdm
$(INSTALL_BIN) $(PKG_BUILD_DIR)/_bin/a_openwrt/evoice $(1)/usr/sbin/
$(INSTALL_BIN) $(PKG_BUILD_DIR)/_bin/a_openwrt/libvoiceservice.so $(1)/usr/lib/bbfdm/
endef
$(eval $(call BuildPackage,evoice))

View File

@@ -1,345 +0,0 @@
config SIPClient 'Client1'
option Enable '1'
option RegisterMode 'RFC3261'
option AuthUserName '51234'
option AuthPassword '51234'
option Network 'Network1'
option MaxSessions '5'
option RegisiterURI '51234@sip-proxy.iopsys.eu'
option E164Format '1'
config SIPClient 'Client2'
option Enable '1'
option RegisterMode 'RFC3261'
option AuthUserName '51235'
option AuthPassword '51235'
option Network 'Network1'
option MaxSessions '5'
option RegisiterURI '51235@sip-proxy.iopsys.eu'
option E164Format '1'
config SIPNetwork 'Network1'
option Enable '1'
option ProxyServer 'sip-proxy.iopsys.eu'
option ProxyServerPort '5060'
option ProxyServerTransport 'UDP'
option RegistrarServer 'sip-proxy.iopsys.eu'
option RegistrarServerPort '5060'
option RegistrarServerTransport 'UDP'
option RegistrationPeriod '3240'
option RegisterExpires '3600'
option UserAgentDomain ' '
option TimerRegistrationFailed '120'
option TimerT1 '500'
option VoIPProfile 'VoIPProfile1'
list CodecList '1CodecProfile1'
list CodecList '1CodecProfile2'
list CodecList '1CodecProfile3'
list CodecList '1CodecProfile5'
list CodecList '1CodecProfile4'
config Capabilities 'Capabilities'
option FacilityActions 'CW_ACTIVE,CFU_ACTIVE'
config CapabilitiesCodec 'Codec1'
option Codec 'G.711ALaw'
config CapabilitiesCodec 'Codec2'
option Codec 'G.711MuLaw'
config CapabilitiesCodec 'Codec3'
option Codec 'G.726'
config CapabilitiesCodec 'Codec4'
option Codec 'G.722'
config CapabilitiesCodec 'Codec5'
option Codec 'G.729'
config CodecProfile '1CodecProfile1'
option Enable '1'
option Codec 'Codec1'
option PacketizationPeriod '20'
option SilenceSupression '1'
config CodecProfile '1CodecProfile2'
option Enable '1'
option Codec 'Codec2'
option PacketizationPeriod '20'
option SilenceSupression '1'
config CodecProfile '1CodecProfile3'
option Enable '1'
option Codec 'Codec3'
option PacketizationPeriod '20'
option SilenceSupression '0'
config CodecProfile '1CodecProfile4'
option Enable '1'
option Codec 'Codec4'
option PacketizationPeriod '20'
option SilenceSupression '0'
config CodecProfile '1CodecProfile5'
option Enable '1'
option Codec 'Codec5'
option PacketizationPeriod '20'
option SilenceSupression '0'
config VoIPProfile 'VoIPProfile1'
option Enable '1'
option DTMFMethod 'RFC4733'
option RTP '1RTP'
config RTP '1RTP'
option LocalPortMin '10020'
option LocalPortMax '10039'
option JitterBufferType 'Static'
config FXXPorts 'POTS'
option Region 'US'
config FXSPorts 'FXS1'
option Enable '1'
option DialType 'Tone'
option TransmitGain '0'
option ReceiveGain '0'
option EchoCancellationEnable '1'
config FXSPorts 'FXS2'
option Enable '1'
option DialType 'Tone'
option TransmitGain '0'
option ReceiveGain '0'
option EchoCancellationEnable '1'
config Extension 'Extension1'
option Enable '1'
option ExtensionNumber '10#'
option Provider 'FXS1'
option CallingFeatures 'Set1'
option Name 'Phone 1'
config Extension 'Extension2'
option Enable '1'
option ExtensionNumber '11#'
option Provider 'FXS2'
option CallingFeatures 'Set1'
option Name 'Phone 2'
config Line 'Line1'
option Enable '1'
option Provider 'Client1'
option CallingFeatures 'Set1'
config Line 'Line2'
option Enable '1'
option Provider 'Client2'
option CallingFeatures 'Set2'
config IncomingMap 'IncomingMap1'
option Enable '1'
option Extension 'Extension1'
option Line 'Line1'
config IncomingMap 'IncomingMap2'
option Enable '1'
option Extension 'Extension2'
option Line 'Line2'
config IncomingMap 'IncomingMap3'
option Enable '1'
option Extension 'Extension2'
option Line 'Line1'
config OutgoingMap 'OutgoingMap1'
option Enable '1'
option Extension 'Extension1'
option Line 'Line1'
config OutgoingMap 'OutgoingMap2'
option Enable '1'
option Extension 'Extension2'
option Line 'Line2'
config CallingFeatures 'Set1'
option CallerIDEnable '1'
option CallerIDNameEnable '1'
option CallForwardUnconditionalEnable '0'
option CallForwardUnconditionalNumber ' '
option CallForwardOnBusyEnable '0'
option CallForwardOnBusyNumber ' '
option CallForwardOnNoAnswerEnable '0'
option CallForwardOnNoAnswerRingTimeout '24'
option CallForwardOnNoAnswerNumber ' '
option CallTransferEnable '1'
option MWIEnable '1'
option VMWIEnable '1'
option LineMessagesWaiting '0'
option AnonymousCallRejectionEnable '0'
option AnonymousCallEnable '1'
option DoNotDisturbEnable '1'
option RepeatDialEnable '1'
option VoiceMailEnable '1'
option CallPickUpEnable '1'
option CCBSEnable '1'
option CallWaitingEnable '0'
config CallingFeatures 'Set2'
option CallerIDEnable '1'
option CallerIDNameEnable '1'
option CallForwardUnconditionalEnable '0'
option CallForwardUnconditionalNumber ' '
option CallForwardOnBusyEnable '0'
option CallForwardOnBusyNumber ' '
option CallForwardOnNoAnswerEnable '0'
option CallForwardOnNoAnswerRingTimeout '24'
option CallForwardOnNoAnswerNumber ' '
option CallTransferEnable '1'
option MWIEnable '1'
option VMWIEnable '1'
option LineMessagesWaiting '0'
option AnonymousCallRejectionEnable '0'
option AnonymousCallEnable '1'
option DoNotDisturbEnable '1'
option RepeatDialEnable '1'
option VoiceMailEnable '1'
option CallPickUpEnable '1'
option CCBSEnable '1'
option CallWaitingEnable '1'
config NumberingPlan 'NumberingPlan1'
option MinimumNumberOfDigits '1'
option MaximumNumberOfDigits '15'
option InterDigitTimerStd '2000'
option InterDigitTimerOpen '2000'
option TerminationDigit '#'
config NumberingPlan 'NumberingPlan2'
option MinimumNumberOfDigits '5'
option MaximumNumberOfDigits '15'
option InterDigitTimerStd '2000'
option InterDigitTimerOpen '2000'
option TerminationDigit ' '
list PrefixList '3PrefixInfo1'
list PrefixList '3PrefixInfo2'
list PrefixList '3PrefixInfo3'
list PrefixList '3PrefixInfo4'
list PrefixList '3PrefixInfo5'
list PrefixList '3PrefixInfo6'
list PrefixList '3PrefixInfo7'
list PrefixList '3PrefixInfo8'
list PrefixList '3PrefixInfo9'
config NumberingPlan 'NumberingPlan3'
option MinimumNumberOfDigits '5'
option MaximumNumberOfDigits '15'
option InterDigitTimerStd '2000'
option InterDigitTimerOpen '2000'
option TerminationDigit '#'
list PrefixList '4PrefixInfo1'
config PrefixInfo '3PrefixInfo1'
option Enable '1'
option PrefixRange '*43#'
option PrefixMinNumberOfDigits '4'
option PrefixMaxNumberOfDigits '4'
option NumberOfDigitsToRemove '0'
option PosOfDigitsToRemove '0'
option FacilityAction 'CW_ACTIVATE'
option FacilityActionArgument ' '
config PrefixInfo '3PrefixInfo2'
option Enable '1'
option PrefixRange '#43#'
option PrefixMinNumberOfDigits '4'
option PrefixMaxNumberOfDigits '4'
option NumberOfDigitsToRemove '0'
option PosOfDigitsToRemove '0'
option FacilityAction 'CW_DEACTIVATE'
option FacilityActionArgument ' '
config PrefixInfo '3PrefixInfo3'
option Enable '1'
option PrefixRange '*21*(X+)#'
option PrefixMinNumberOfDigits '9'
option PrefixMaxNumberOfDigits '9'
option NumberOfDigitsToRemove '0'
option PosOfDigitsToRemove '0'
option FacilityAction 'CFU_ACTIVATE'
option FacilityActionArgument ' '
config PrefixInfo '3PrefixInfo4'
option Enable '1'
option PrefixRange '#21#'
option PrefixMinNumberOfDigits '4'
option PrefixMaxNumberOfDigits '4'
option NumberOfDigitsToRemove '0'
option PosOfDigitsToRemove '0'
option FacilityAction 'CFU_DEACTIVATE'
option FacilityActionArgument ' '
config PrefixInfo '3PrefixInfo5'
option Enable '1'
option PrefixRange '*67*(X+)#'
option PrefixMinNumberOfDigits '9'
option PrefixMaxNumberOfDigits '9'
option NumberOfDigitsToRemove '0'
option PosOfDigitsToRemove '0'
option FacilityAction 'CFB_ACTIVATE'
option FacilityActionArgument ' '
config PrefixInfo '3PrefixInfo6'
option Enable '1'
option PrefixRange '#67#'
option PrefixMinNumberOfDigits '4'
option PrefixMaxNumberOfDigits '4'
option NumberOfDigitsToRemove '0'
option PosOfDigitsToRemove '0'
option FacilityAction 'CFB_DEACTIVATE'
option FacilityActionArgument ' '
config PrefixInfo '3PrefixInfo7'
option Enable '1'
option PrefixRange '*61*(X+(*X+)?)#'
option PrefixMinNumberOfDigits '15'
option PrefixMaxNumberOfDigits '15'
option NumberOfDigitsToRemove '0'
option PosOfDigitsToRemove '0'
option FacilityAction 'CFNR_ACTIVATE'
option FacilityActionArgument ' '
config PrefixInfo '3PrefixInfo8'
option Enable '1'
option PrefixRange '#61#'
option PrefixMinNumberOfDigits '4'
option PrefixMaxNumberOfDigits '4'
option NumberOfDigitsToRemove '0'
option PosOfDigitsToRemove '0'
option FacilityAction 'CFNR_DEACTIVATE'
option FacilityActionArgument ' '
config PrefixInfo '3PrefixInfo9'
option Enable '1'
option PrefixRange '*31*'
option PrefixMinNumberOfDigits '4'
option PrefixMaxNumberOfDigits '4'
option NumberOfDigitsToRemove '0'
option PosOfDigitsToRemove '0'
option FacilityAction 'CA_ACTIVATE'
option FacilityActionArgument ' '
config PrefixInfo '4PrefixInfo1'
option Enable '1'
option PrefixRange '110|112'
option PrefixMinNumberOfDigits '7'
option PrefixMaxNumberOfDigits '7'
option NumberOfDigitsToRemove '0'
option PosOfDigitsToRemove '0'
option FacilityAction 'X_IOPSYS_EU_EMERGENCY'
option FacilityActionArgument ' '
config DialPlan 'X_IOPSYS_EU_InternalNumber1'
option RegExp '1X#'

View File

@@ -1,38 +0,0 @@
# Capabilties are platform dependent. Keep these separated from customer configuration
config capabilities_prm 'limits'
option MaxCallLogCount '100'
config capabilities_prm 'features'
option QIModelsSupported 'G.107'
config CapabilitiesCodec 'Codec1'
option Codec 'G.711ALaw'
option BitRate '64000'
option PacketizationPeriod '20,30'
option SilenceSupression '1'
config CapabilitiesCodec 'Codec2'
option Codec 'G.711MuLaw'
option BitRate '64000'
option PacketizationPeriod '20,30'
option SilenceSupression '1'
config CapabilitiesCodec 'Codec3'
option Codec 'G.726'
option BitRate '32000'
option PacketizationPeriod '20,30'
option SilenceSupression '0'
config CapabilitiesCodec 'Codec4'
option Codec 'G.722'
option BitRate '64000'
option PacketizationPeriod '20,30'
option SilenceSupression '0'
config CapabilitiesCodec 'Codec4'
option Codec 'G.729'
option BitRate '8000'
option PacketizationPeriod '20,30'
option SilenceSupression '0'

View File

@@ -1,166 +0,0 @@
# RO (Main)
config account 'map_board'
option HW_Has_Voice 'hw.board.hasVoice'
option HW_Has_DECT 'hw.board.hasDect'
option HW_Nr_Of_POTS_Ports 'hw.board.VoicePorts'
option ProductID 'device.deviceinfo.ModelName'
option I3_VERSION 'device.deviceinfo.SoftwareVersion'
option SerialNumber 'device.deviceinfo.SerialNumber'
config account 'map_pots'
option Country 'voice.POTS.Region'
# Voice Service navigation paths
# Not used to initialize internal configuration
config navigation 'map_vs'
option Account 'voice.Client@.'
option Network 'voice.Client@.Network'
option VoIPProfile 'voice.Network@.VoIPProfile'
option CfAccount 'voice.Line@.CallingFeatures'
option CfPhone 'voice.Extension@.CallingFeatures'
option CodecList 'voice.Network@.CodecList'
option Codec 'voice.Codec@.Codec'
option OutgoingMapEnabled 'voice.OutgoingMap@.Enable'
option From_Phone 'voice.OutgoingMap@.Extension'
option Extension 'voice.Extension@.Provider'
option To_Account 'voice.OutgoingMap@.Line'
option Line 'voice.Line@.Provider'
option LineEnable 'voice.Line@.Enable'
option LineProvider 'voice.Line@.Provider'
option IncomingMapEnabled 'voice.IncomingMap@.Enable'
option From_Account 'voice.IncomingMap@.Line'
option To_Phone 'voice.IncomingMap@.Extension'
option ExtensionEnable 'voice.Extension@.Enable'
option ExtensionProvider 'voice.Extension@.Provider'
# Registration for account A-Z is associate with SIP.Clienti.Enable
# All parameters in this table are written to internal configuration
config account 'map_account'
option Registration 'voice.Client@.Enable'
option Display_Name ''
option PhoneNumber 'voice.Client@.RegisiterURI'
option Username 'voice.Client@.AuthUserName'
option Password 'voice.Client@.AuthPassword'
option SIP_Telephone_Syntax 'voice.Client@.E164Format'
option Device_Description 'voice.Client@.UserAgent'
# Network stuff associated with an account.
# All parameters in this table are written to internal configuration
config network 'map_net'
option Enable 'voice.Network@.Enable'
option Registration_Server 'voice.Network@.RegistrarServer'
option Outbound_Proxy 'voice.Network@.ProxyServer'
option SIP_Port 'voice.Network@.RegistrarServerPort'
option SIP_Transport 'voice.Network@.RegistrarServerTransport'
option RegistrationPeriod 'voice.Network@.RegistrationPeriod'
option Registration_Interval 'voice.Network@.RegisterExpires'
option Reg_Failure_Interval 'voice.Network@.TimerRegistrationFailed'
option T1 'voice.Network@.TimerT1'
option UserAgentDomain 'voice.Network@.UserAgentDomain'
config VoIPProfile 'map_voip'
option Enable 'voice.VoIPProfile@.Enable'
option DTMF_Method 'voice.VoIPProfile@.DTMFMethod'
option RTP 'voice.VoIPProfile@.RTP'
config RTP 'map_rtp'
option RTP_Port_Base 'voice.@RTP@.LocalPortMin'
option RTP_Port_End 'voice.@RTP@.LocalPortMax'
config codecs 'map_codec'
option Codec 'voice.CodecProfile@.Codec'
option enable 'voice.CodecProfile@.Enable'
option ptime 'voice.CodecProfile@.PacketizationPeriod'
option dtx 'voice.CodecProfile@.SilenceSupression'
config extensioninfo 'map_ext'
option Enable 'voice.Extension@.Enable'
option Internal_Number_Phone 'voice.Extension@.ExtensionNumber'
option Display_Name_Phone 'voice.Extension@.Name'
config capabilities 'map_capa'
option Call_Waiting_Enable 'voice.Capabilities@FacilityActions'
option Enable_Call_Diversion 'voice.Capabilities@FacilityActions'
config cs_account 'map_set'
option BusyCallWait 'voice.Set@.CallWaitingEnable'
option AlwaysDivert 'voice.Set@.CallForwardUnconditionalEnable'
option CFU_Number 'voice.Set@.CallForwardUnconditionalNumber'
option BusyDivert 'voice.Set@.CallForwardOnBusyEnable'
option CFB_Number 'voice.Set@.CallForwardOnBusyNumber'
option NoAnswDivert 'voice.Set@.CallForwardOnNoAnswerEnable'
option CFNR_Number 'voice.Set@.CallForwardOnNoAnswerNumber'
option CFNR_Timeout 'voice.Set@.CallForwardOnNoAnswerRingTimeout'
option Enable_Call_Transfer 'voice.Set@.CallTransferEnable'
option AnonymousReject 'voice.Set@.AnonymousCallRejectionEnable'
option AllowAnonymousConf 'voice.Set@.AnonymousCallEnable'
option CallerIDEnable 'voice.Set@.CallerIDEnable'
config cs_xvendor 'map_np_cs'
option np_sc_actCW 'voice.X_IOPSYS_EU_NpSc@.CW_ACT'
option np_sc_actCW_output 'voice.X_IOPSYS_EU_NpSc@.CW_OUT'
option np_sc_deactCW 'voice.X_IOPSYS_EU_NpSc@.CW_DEACT'
option np_sc_isactCW 'voice.X_IOPSYS_EU_NpSc@.CW_ISACT'
option np_sc_actCFU 'voice.X_IOPSYS_EU_NpSc@.CFU_ACT'
option np_sc_actCFU_output 'voice.X_IOPSYS_EU_NpSc@.CFU_OUT'
option np_sc_deactCFU 'voice.X_IOPSYS_EU_NpSc@.CFU_DEACT'
option np_sc_actCFB 'voice.X_IOPSYS_EU_NpSc@.CFB_ACT'
option np_sc_actCFB_output 'voice.X_IOPSYS_EU_NpSc@.CFB_OUT'
option np_sc_deactCFB 'voice.X_IOPSYS_EU_NpSc@.CFB_DEACT'
option np_sc_actCFNR 'voice.X_IOPSYS_EU_NpSc@.CFNR_ACT'
option np_sc_actCFNR_output 'voice.X_IOPSYS_EU_NpSc@.CFNR_OUT'
option np_sc_deactCFNR 'voice.X_IOPSYS_EU_NpSc@.CFNR_DEACT'
option np_sc_actRA 'voice.X_IOPSYS_EU_NpSc@.RA_ACT'
option np_sc_deactRA 'voice.X_IOPSYS_EU_NpSc@.RA_DEACT'
option np_sc_actAC 'voice.X_IOPSYS_EU_NpSc@.AC_ACT'
option np_sc_deactAC 'voice.X_IOPSYS_EU_NpSc@.AC_DEACT'
option np_sc_actAA 'voice.X_IOPSYS_EU_NpSc@.AA_ACT'
option np_sc_deactAA 'voice.X_IOPSYS_EU_NpSc@.AA_DEACT'
option np_sc_actAD 'voice.X_IOPSYS_EU_NpSc@.AD_ACT'
option np_sc_actAD_output 'voice.X_IOPSYS_EU_NpSc@.AD_OUT'
option np_sc_deactAD 'voice.X_IOPSYS_EU_NpSc@.AD_DEACT'
option np_sc_actMWSplash 'voice.X_IOPSYS_EU_NpSc@.MWI_SPLASH_ACT'
option np_sc_deactMWSplash 'voice.X_IOPSYS_EU_NpSc@.MWI_SPLASH_DEACT'
option np_sc_actMWTone 'voice.X_IOPSYS_EU_NpSc@.MWI_TONE_ACT'
option np_sc_deactMWTone 'voice.X_IOPSYS_EU_NpSc@.MWI_TONE_DEACT'
option np_sc_redial 'voice.X_IOPSYS_EU_NpSc@.REDIAL'
option np_sc_setMiscConf 'voice.X_IOPSYS_EU_NpSc@.SET_MISC'
config cc_xvendor 'map_np_in'
option np_in_limitExp 'voice.X_IOPSYS_EU_InternalNumber@.RegExp'
config cc_xvendor 'map_np_sh'
option sh_no_str 'voice.X_IOPSYS_EU_ShortNumber@.RegExp'
config cc_xvendor 'map_np_eme'
option np_eme 'voice.X_IOPSYS_EU_EmergencyNumber@.RegExp'
option np_eme_out 'voice.X_IOPSYS_EU_EmergencyNumber@.OutStr'
config cc_xvendor 'map_np_rn'
option np_rn 'voice.X_IOPSYS_EU_RegularNumber@.RegExp'
option np_rn_out 'voice.X_IOPSYS_EU_RegularNumber@.OutStr'
option np_rn_account 'voice.X_IOPSYS_EU_RegularNumber@.AccStr'
config cc_xvendor 'map_np_bn'
option np_bn 'voice.X_IOPSYS_EU_BarredNumber@.RegExp'
option np_bn_out 'voice.X_IOPSYS_EU_BarredNumber@.OutStr'
config TR104NumberingPlan 'map_np_tr'
option min_digits 'voice.NumberingPlan@.MinimumNumberOfDigits'
option max_digits 'voice.NumberingPlan@.MaximumNumberOfDigits'
option tmo_std 'voice.NumberingPlan@.InterDigitTimerStd'
option tmo_open 'voice.NumberingPlan@.InterDigitTimerOpen'
option term_digit 'voice.NumberingPlan@.TerminationDigit'
option prefix_list 'voice.NumberingPlan@.PrefixList'
config TR104NumberingPlanPrefix 'map_np_pf'
option enable 'voice.@PrefixInfo@.Enable'
option range 'voice.@PrefixInfo@.PrefixRange'
option prefix_min_digits 'voice.@PrefixInfo@.PrefixMinNumberOfDigits'
option prefix_max_digits 'voice.@PrefixInfo@.PrefixMaxNumberOfDigits'
option remove_digits 'voice.@PrefixInfo@.NumberOfDigitsToRemove'
option remove_pos 'voice.@PrefixInfo@.NumberOfDigitsToRemove'
option facility_act 'voice.@PrefixInfo@.FacilityAction'
option facility_arg 'voice.@PrefixInfo@.FacilityActionArgument'

View File

@@ -1,57 +0,0 @@
config static_prm 'defaults'
option Print_Control '4'
option Print_UDP_Addr '192.168.1.3'
option Print_UDP_Port '60000'
option Verbosity 'On'
option Failure_Log 'On'
option Message_Log 'On'
option Method_Trace 'Off'
option Dial_Cache_Size '0'
option Reverse_Fax_Detection '0'
option DSP_24 '0'
option DSP_36 '0'
option DSP_43 '0'
option Swap_Name_Nr_CID '0'
option R_Button_Lower_Lim '100'
option R_Button_Upper_Lim '800'
option HookOn_Delay '0'
option SupportLDD '0'
option LDD_Min_Break_Time '41'
option LDD_Max_Break_Time '94'
option LDD_Percent_Break '55'
option Tone_On_Hangup '1'
option BusyTone_On_Hangup '1'
option Enable_Analouge_Conf '0'
option SIP_SessTmrEnable '0'
option PrackUsage '1'
option SIP_SupportedPath '0'
option IMS_Access_Network_Info ' '
option SIP_Reason_Protocol '0'
option SIP_Body_QOST '0'
option SIP_HistoryInfo '0'
option Customer_Spec2 '1'
option UTF8_Enable '0'
option RFC3325 '0'
option Accept_From_Registered '0'
option Polarity_Reversal '0'
option Closed_Dial_Plan '0'
option Netw_Dial '0'
option No_Answer_Tmo '180'
option UPnP_Enabled '0'
option NAT_Address ' '
option NAT_Address_From_SIP '0'
option HookOn_Transfer '0'
option Enable_Call_Transfer '1'
option CallerIDEnable '1'
option Multiparty_Transp '0'
option Presence_Indication '0'
option Login_Note ' '
option Login_Description ' '
option Logout_Note ' '
option Logout_Description ' '
option Resolve_Every_Transaction '2'
option Translate_Plus '1'
option Mid_Call_Services '0'
option Account_Restriction '0'
option Answering_Machine_Enable '0'

View File

@@ -8,11 +8,11 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=icwmp
PKG_VERSION:=8.4.25
PKG_VERSION:=8.4.26.10
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/icwmp.git
PKG_SOURCE_VERSION:=cbfff1b644efceca0b5c72d062535bc766ca1e54
PKG_SOURCE_VERSION:=ac7410a726a7269dcaef4c80061cab7a4447f6d1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_MIRROR_HASH:=skip
@@ -22,11 +22,6 @@ PKG_LICENSE:=GPLv2
PKG_LICENSE_FILES:=LICENSE
PKG_FIXUP:=autoreconf
PKG_CONFIG_DEPENDS:= \
CONFIG_CWMP_ACS_MULTI \
CONFIG_CWMP_ACS_HDM \
CONFIG_CWMP_DEBUG \
CONFIG_CWMP_DEVEL_DEBUG
include $(INCLUDE_DIR)/package.mk
@@ -38,20 +33,10 @@ define Package/icwmp/default
DEPENDS:=+libuci +libubox +libblobmsg-json +libubus +libjson-c +libcurl +mxml
endef
define Package/icwmp/config
source "$(SOURCE)/Config_cwmp.in"
endef
TARGET_CFLAGS += \
-D_GNU_SOURCE \
-D_GNU_SOURCE -g \
"-DCWMP_REVISION=\\\"$(PKG_SOURCE_VERSION)\\\""
define Package/icwmp
$(Package/icwmp/default)
TITLE += (internal)
VARIANT:=internal
endef
define Package/icwmp-openssl
$(Package/icwmp/default)
TITLE += (openssl)
@@ -88,16 +73,6 @@ ifeq ($(BUILD_VARIANT),mbedtls)
CONFIGURE_ARGS += --enable-libmbedtls
endif
ifeq ($(CONFIG_CWMP_ACS_MULTI),y)
CONFIGURE_ARGS += \
--enable-acs=multi
endif
ifeq ($(CONFIG_CWMP_ACS_HDM),y)
CONFIGURE_ARGS += \
--enable-acs=hdm
endif
USE_LOCAL=$(shell ls ./src/ 2>/dev/null >/dev/null && echo 1)
ifneq ($(USE_LOCAL),)
define Build/Prepare
@@ -113,6 +88,7 @@ define Package/icwmp/default/install
$(INSTALL_DIR) $(1)/etc/uci-defaults
$(INSTALL_DIR) $(1)/lib/upgrade/keep.d
$(INSTALL_DIR) $(1)/etc/bbfdm/json/
$(INSTALL_DIR) $(1)/etc/udhcpc.user.d
$(INSTALL_BIN) $(PKG_BUILD_DIR)/icwmpd $(1)/usr/sbin/icwmpd
$(INSTALL_DATA) ./files/etc/config/cwmp $(1)/etc/config/cwmp
$(INSTALL_BIN) ./files/etc/firewall.cwmp $(1)/etc/firewall.cwmp
@@ -122,13 +98,14 @@ define Package/icwmp/default/install
$(INSTALL_DATA) ./files/lib/upgrade/keep.d/icwmp $(1)/lib/upgrade/keep.d/icwmp
$(INSTALL_BIN) ./files/etc/icwmpd/update.sh $(1)/etc/icwmpd/update.sh
$(INSTALL_DATA) ./files/etc/bbfdm/json/CWMPManagementServer.json $(1)/etc/bbfdm/json/
$(INSTALL_BIN) $(PKG_BUILD_DIR)/files/etc/udhcpc.user.d/udhcpc_icwmp_opt125.user $(1)/etc/udhcpc.user.d/udhcpc_icwmp_opt125.user
$(INSTALL_BIN) $(PKG_BUILD_DIR)/files/etc/udhcpc.user.d/udhcpc_icwmp_opt43.user $(1)/etc/udhcpc.user.d/udhcpc_icwmp_opt43.user
endef
Package/icwmp-openssl/install = $(Package/icwmp/default/install)
Package/icwmp-wolfssl/install = $(Package/icwmp/default/install)
Package/icwmp-mbedtls/install = $(Package/icwmp/default/install)
$(eval $(call BuildPackage,icwmp))
$(eval $(call BuildPackage,icwmp-openssl))
$(eval $(call BuildPackage,icwmp-wolfssl))
$(eval $(call BuildPackage,icwmp-mbedtls))

View File

@@ -17,6 +17,7 @@ config acs 'acs'
config cpe 'cpe'
option enable '1'
option default_wan_interface 'wan'
option default_lan_interface 'lan'
option log_to_console 'disable'
option log_to_file 'disable'
# log_severity: INFO (Default)

View File

@@ -64,13 +64,192 @@ enable_dhcp_option43() {
fi
newreqopts="$reqopts 43"
if [ "${proto}" == "dhcp" ]; then
if [ "${proto}" = "dhcp" ]; then
uci -q set network.$wan.reqopts="$newreqopts"
uci commit network
ubus call network reload
fi
}
convert_to_hex() {
local val=""
local optval="${1}"
OPTIND=1
while getopts ":" opt "-$optval"
do
temp=$(printf "%02X" "'${OPTARG:-:}")
val="${val}:${temp}"
done
echo "${val}"
}
configure_send_op125() {
local sendopt="${1}"
local intf="${2}"
local uci="${3}"
local hex_oui=""
local hex_serial=""
local hex_class=""
local oui_len=0
local serial_len=0
local class_len=0
if [ "${uci}" = "network" ]; then
local opt125="125:00:00:0D:E9"
else
local opt125="125,00:00:0D:E9"
fi
config_get oui cpe manufacturer_oui ""
if [ -z "${oui}" ]; then
oui=$(db -q get device.deviceinfo.ManufacturerOUI)
fi
oui=$(echo "${oui}" | tr 'a-f' 'A-F')
config_get serial cpe serial_number ""
if [ -z "${serial}" ]; then
serial=$(db -q get device.deviceinfo.SerialNumber)
fi
config_get class cpe product_class ""
if [ -z "${class}" ]; then
class=$(db -q get device.deviceinfo.ProductClass)
fi
oui_len=$(echo -n "${oui}" | wc -m)
serial_len=$(echo -n "${serial}" | wc -m)
class_len=$(echo -n "${class}" | wc -m)
if [ ${oui_len} -eq 0 ] || [ ${serial_len} -eq 0 ]; then
return 0
fi
opt125_len=$((oui_len + serial_len + class_len))
if [ ${class_len} -gt 0 ]; then
opt125_len=$((opt125_len + 6))
else
opt125_len=$((opt125_len + 4))
fi
hex_opt125_len=$(printf "%02X" "${opt125_len}")
opt125="${opt125}:${hex_opt125_len}"
hex_oui=$(convert_to_hex "${oui}")
if [ -z "${hex_oui}" ]; then
return 0
fi
hex_oui_len=$(printf "%02X" "${oui_len}")
if [ "${uci}" = "network" ]; then
opt125="${opt125}:01:${hex_oui_len}${hex_oui}"
else
opt125="${opt125}:04:${hex_oui_len}${hex_oui}"
fi
hex_serial=$(convert_to_hex "${serial}")
if [ -z "${hex_serial}" ]; then
return 0
fi
hex_serial_len=$(printf "%02X" "${serial_len}")
if [ "${uci}" = "network" ]; then
opt125="${opt125}:02:${hex_serial_len}${hex_serial}"
else
opt125="${opt125}:05:${hex_serial_len}${hex_serial}"
fi
if [ ${class_len} -gt 0 ]; then
hex_class=$(convert_to_hex "${class}")
if [ -z "${hex_class}" ]; then
return 0
fi
hex_class_len=$(printf "%02X" "${class_len}")
if [ "${uci}" = "network" ]; then
opt125="${opt125}:03:${hex_class_len}${hex_class}"
else
opt125="${opt125}:06:${hex_class_len}${hex_class}"
fi
fi
if [ "${uci}" = "network" ]; then
new_send_opt="$sendopt $opt125"
uci -q set network.$intf.sendopts="$new_send_opt"
else
uci -q add_list dhcp.$intf.dhcp_option="$opt125"
fi
}
enable_dnsmasq_option125() {
local lan="${1}"
local send125_present=0
local opt125="125,"
local proto="$(uci -q get dhcp.$lan.dhcpv4)"
if [ "${proto}" = "server" ]; then
opt_list="$(uci -q get dhcp.$lan.dhcp_option)"
for sopt in $opt_list; do
if [[ "$sopt" == "$opt125"* ]]; then
send125_present=1
break
fi
done
if [ ${send125_present} -eq 0 ]; then
configure_send_op125 "" "${lan}" "dhcp"
ubus call uci commit '{"config":"dhcp"}'
fi
fi
}
enable_dhcp_option125() {
local wan="${1}"
local reqopts="$(uci -q get network.$wan.reqopts)"
local sendopts="$(uci -q get network.$wan.sendopts)"
local proto="$(uci -q get network.$wan.proto)"
local newreqopts=""
local newsendopts=""
local req125_present=0
local send125_present=0
local network_uci_update=0
local opt125="125:"
for ropt in $reqopts; do
case $ropt in
125) req125_present=1 ;;
*) ;;
esac
done
for sopt in $sendopts; do
if [[ "$sopt" == "$opt125"* ]]; then
send125_present=1
break
fi
done
if [ "${proto}" = "dhcp" ]; then
if [ ${req125_present} -eq 0 ]; then
newreqopts="$reqopts 125"
uci -q set network."${wan}".reqopts="$newreqopts"
network_uci_update=1
fi
if [ ${send125_present} -eq 0 ]; then
configure_send_op125 "${sendopts}" "${wan}" "network"
network_uci_update=1
fi
fi
if [ ${network_uci_update} -eq 1 ]; then
uci commit network
ubus call network reload
fi
}
wait_for_resolvfile() {
local time=$1
local tm=1
@@ -88,12 +267,6 @@ wait_for_resolvfile() {
copy_cwmp_etc_files_to_varstate() {
mkdir -p /var/run/icwmpd
if [ -f /etc/icwmpd/cwmp ]; then
uci -q -c /etc/icwmpd delete cwmp.acs
uci -q -c /etc/icwmpd commit cwmp
cp -f /etc/icwmpd/cwmp /var/state/cwmp
fi
if [ -f /etc/icwmpd/icwmpd_backup_session.xml ]; then
cp -f /etc/icwmpd/icwmpd_backup_session.xml /var/run/icwmpd/ 2>/dev/null
fi
@@ -101,6 +274,7 @@ copy_cwmp_etc_files_to_varstate() {
if [ -f /etc/icwmpd/dm_enabled_notify.xml ]; then
cp -f /etc/icwmpd/dm_enabled_notify /var/run/icwmpd/ 2>/dev/null
fi
touch /var/run/icwmpd/cwmp
}
copy_cwmp_varstate_files_to_etc() {
@@ -112,10 +286,6 @@ copy_cwmp_varstate_files_to_etc() {
cp -f /var/run/icwmpd/dm_enabled_notify /etc/icwmpd/ 2>/dev/null
fi
if [ -f /var/state/cwmp ]; then
cp -f /var/state/cwmp /etc/icwmpd/
fi
# move the successful custom notify import marker to persistent storage
if [ -f /var/run/icwmpd/icwmpd_notify_import_marker ]; then
cp -f /var/run/icwmpd/icwmpd_notify_import_marker /etc/icwmpd/
@@ -173,10 +343,13 @@ validate_defaults() {
return 1;
}
ssl_capath="${ssl_capath%/}"
# Put the cert pem file in keep list
if [ -d "${ssl_capath}" ]; then
if ! grep "${ssl_capath}" /lib/upgrade/keep.d/icwmp; then
if ! grep "*.pem\|*.crt" /lib/upgrade/keep.d/icwmp; then
echo "${ssl_capath}"'/*.pem' >> /lib/upgrade/keep.d/icwmp
echo "${ssl_capath}"'/*.crt' >> /lib/upgrade/keep.d/icwmp
echo "${ssl_capath}"'/*.0' >> /lib/upgrade/keep.d/icwmp
fi
fi
@@ -188,16 +361,51 @@ validate_defaults() {
return 0;
}
set_vendor_id() {
local wan="${1}"
local proto="$(uci -q get network.$wan.proto)"
if [ "${proto}" == "dhcp" ]; then
vendorid="$(uci -q get network.$wan.vendorid)"
if [ -z "${vendorid}" ]; then
uci -q set network.$wan.vendorid="dslforum.org"
ubus call uci commit '{"config":"network"}'
elif [[ $vendorid != *"dslforum.org"* ]]; then
uci -q set network.$wan.vendorid="${vendorid},dslforum.org"
ubus call uci commit '{"config":"network"}'
fi
fi
}
boot() {
local enable_cwmp="0"
local dhcp_discovery="0"
config_load cwmp
config_get_bool enable_cwmp cpe enable 1
if [ "$enable_cwmp" = "0" ]; then
return 0
fi
config_get dhcp_discovery acs dhcp_discovery "0"
config_get wan_interface cpe default_wan_interface "wan"
if [ "${dhcp_discovery}" == "enable" ] || [ "${dhcp_discovery}" == "1" ]; then
# Set dhcp option 43 if not already configured
config_get wan_interface cpe default_wan_interface "wan"
enable_dhcp_option43 "${wan_interface}"
# Set dhcp option 60
set_vendor_id "${wan_interface}"
fi
config_get lan_interface cpe default_lan_interface ""
if [ -n "${lan_interface}" ]; then
# Set dhcp_option 125 if not already configured
enable_dhcp_option125 "${wan_interface}"
enable_dnsmasq_option125 "${lan_interface}"
fi
config_get ssl_capath acs ssl_capath
@@ -206,6 +414,10 @@ boot() {
regenerate_ssl_link "${ssl_capath}"
fi
# Copy backup data so that if it restart latter on it gets the info
copy_cwmp_etc_files_to_varstate
touch /etc/icwmpd/cwmp_notifications
start
}
@@ -228,9 +440,6 @@ start_service() {
return 1;
}
# Copy backup data so that if it restart latter on it gets the info
copy_cwmp_etc_files_to_varstate
procd_open_instance icwmp
procd_set_param command "$PROG"
procd_append_param command -b
@@ -242,26 +451,32 @@ start_service() {
procd_close_instance
}
service_stopped()
stop_service()
{
copy_cwmp_varstate_files_to_etc
}
reload_service() {
local ret
config_load cwmp
config_get_bool enable_cwmp cpe enable 1
ret="0"
if [ "$enable_cwmp" = "0" ]; then
stop
start
return 0
fi
status="$(ubus -t 1 call tr069 status |jsonfilter -qe '@.cwmp.status')"
ret="$?"
if [ "$status" = "up" ]; then
ubus -t 1 call tr069 command '{"command":"reload"}'
ret="$?"
fi
if [ "$status" = "init" ] || [ "$?" -ne "0" ]; then
if [ "$status" = "init" ] || [ "$ret" -ne "0" ]; then
log "Restarting CWMP client"
stop
start

View File

@@ -1 +1,2 @@
/var/run/icwmpd/icwmpd_backup_session.xml
/etc/icwmpd/cwmp_notifications

View File

@@ -5,12 +5,12 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=ieee1905
PKG_VERSION:=4.10.3
PKG_VERSION:=4.10.40
LOCAL_DEV=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=3781ec6784f4186a6b7e93c83dcccbbf63ebe465
PKG_SOURCE_VERSION:=4533751a58cfb0fcf4ee878785f6c0872949c68d
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/ieee1905.git
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)_$(PKG_SOURCE_VERSION).tar.xz
PKG_MIRROR_HASH:=skip

View File

@@ -44,7 +44,8 @@ validate_ap_section() {
uci_validate_section ieee1905 $section "${1}" \
'band:or("2", "5", "60")' \
'ssid:string' \
'encryption:or("psk2", "sae-mixed", "sae", string)' \
'encryption:or("psk2", "sae-mixed", "sae",
"psk", "psk-mixed", "none", string)' \
'key:string' \
'uuid:string' \
'manufacturer:string' \

View File

@@ -0,0 +1,17 @@
#!/bin/sh
. /lib/functions.sh
config_load ieee1905
list_to_ifname() {
local section=$1
config_get ifname $section ifname # get list as space separated values
uci del ieee1905.${section}.ifname # delete entry
uci set ieee1905.${section}.ifname="$ifname" # writeback entry as option
}
config_foreach list_to_ifname al-iface

View File

@@ -254,11 +254,22 @@ function genconfig {
setup_dirs()
{
git remote -v | grep -q http || {
CUSTBRANCH="$(git rev-parse --abbrev-ref HEAD)"
if git ls-remote $CUSTREPO -q 2>/dev/null; then
if [ ! -d "$CUSTPATH" ]; then
git clone "$CUSTREPO" "$CUSTPATH"
echo "Cloning $CUSTBRANCH branch of $CUSTREPO"
git clone -b "$CUSTBRANCH" "$CUSTREPO" "$CUSTPATH" 2>/dev/null || {
DEFBRANCH="$(git remote show $CUSTREPO | grep 'HEAD branch' | cut -d' ' -f5)"
echo "$CUSTBRANCH branch is not found, cloning $DEFBRANCH branch of $CUSTREPO"
git clone "$CUSTREPO" "$CUSTPATH"
}
elif [ $IMPORT -eq 1 ]; then
cd $CUSTPATH
echo "Checking out $CUSTBRANCH branch in $CUSTPATH"
git checkout "$CUSTBRANCH" 2>/dev/null || {
DEFBRANCH="$(git symbolic-ref refs/remotes/origin/HEAD | cut -d '/' -f4)"
echo "Checking out $CUSTBRANCH branch has failed, using $DEFBRANCH branch in $CUSTPATH"
}
v "git pull"
git pull
cd - >/dev/null #go back

View File

@@ -170,12 +170,6 @@ function genconfig_min {
git remote -v | grep -qE '(git@|ssh://)' && {
DEVELOPER=1
bcmAllowed=0
endptAllowed=0
git ls-remote git@dev.iopsys.eu:broadcom/bcmcreator.git -q 2>/dev/null && bcmAllowed=1
git ls-remote git@dev.iopsys.eu:iopsys/endptmngr.git -q 2>/dev/null && endptAllowed=1
}
v() {

View File

@@ -13,5 +13,22 @@ config AGENT_ISLAND_PREVENTION
config AGENT_EASYMESH_R2_CERT
bool "Compile for WFA test bed"
config AGENT_EASYMESH_VENDOR_EXT
bool "Enable extra features through Easymesh vendor extension"
default y
config AGENT_EASYMESH_VENDOR_EXT_OUI_DEFAULT
string
default "\\\\x11\\\\x22\\\\x33"
config AGENT_EASYMESH_VENDOR_EXT_OUI
string "Vendor OUI in '\\\\xAB\\\\xCD\\\\xEF' format"
default AGENT_EASYMESH_VENDOR_EXT_OUI_DEFAULT
help
Extra features not covered by the base Easymesh specification can be
enabled through AGENT_EASYMESH_VENDOR_EXT. Please provide the Vendor's OUI
through which such features would be exposed.
endmenu
endif

View File

@@ -5,9 +5,9 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=map-agent
PKG_VERSION:=2.9.0.4
PKG_VERSION:=2.10.4.1
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE_VERSION:=6b3db98e4ff39f13daf41e3e8247947a4934f6cb
PKG_SOURCE_VERSION:=9e52e1476bd012914dfdd454cb16b292c99a0669
PKG_MAINTAINER:=Anjan Chanda <anjan.chanda@iopsys.eu>
PKG_LICENSE:=BSD-3-Clause
@@ -28,7 +28,7 @@ define Package/map-agent
CATEGORY:=Utilities
TITLE:=WiFi multi-AP Agent (EasyMesh R2)
DEPENDS:=+libwifi +libuci +libubox +ubus +libeasy +libieee1905 +ieee1905 \
+map-plugin
+map-plugin +ip-bridge
endef
@@ -70,6 +70,12 @@ ifeq ($(CONFIG_AGENT_EASYMESH_R2_CERT),y)
TARGET_CFLAGS += -DEASYMESH_R2_CERT
endif
ifeq ($(CONFIG_AGENT_EASYMESH_VENDOR_EXT),y)
TARGET_CFLAGS += -DEASYMESH_VENDOR_EXT_OUI=\\\"$(CONFIG_AGENT_EASYMESH_VENDOR_EXT_OUI)\\\"
TARGET_CFLAGS += -DEASYMESH_VENDOR_EXT
endif
MAKE_PATH:=src
define Package/map-agent/install

View File

@@ -6,6 +6,8 @@ config agent 'agent'
option netdev 'wlan'
option island_prevention '0'
option eth_onboards_wifi_bhs '0'
option ap_follow_sta_dfs '0'
option guest_isolation '0'
# option controller_macaddr '0a:1b:2c:3d:4e:50'
config dynamic_backhaul

View File

@@ -10,54 +10,6 @@ IS_CFG_VALID=1
MAP_DEV="map_dev"
MAP_IF="map"
create_map() {
ip link add lei type veth peer name lei_map 2>/dev/null
ip link add link lei name lei_lan type vlan id 1 2>/dev/null
uci -q set network.${MAP_DEV}=device
uci -q set network.${MAP_DEV}.name=br-map
uci -q set network.${MAP_DEV}.type=bridge
uci -q show network.${MAP_DEV}.ports | grep -q lei_map || {
uci -q add_list network.${MAP_DEV}.ports='lei_map'
}
uci -q set network.${MAP_IF}=interface
uci -q set network.${MAP_IF}.device=br-map
uci -q set network.${MAP_IF}.is_lan=1
uci -q show network.br_lan.ports | grep -q lei_lan || {
uci -q add_list network.br_lan.ports="lei_lan"
}
uci -q set mapagent.agent.al_bridge=br-map
uci -q commit
ubus call network reload
ubus -t 5 wait_for network.interface.map
brctl addif br-map lei_map 2>/dev/null
brctl addif br-lan lei_lan 2>/dev/null
ip link set lei up 2>/dev/null
ip link set lei_map up 2>/dev/null
ip link set lei_lan up 2>/dev/null
}
remove_map() {
ip link delete ${MAP_VETH} &>/dev/null
uci -q delete network.${MAP_DEV}
uci -q delete network.${MAP_IF}
uci -q set mapagent.agent.al_bridge=br-lan
uci -q commit
ubus call network reload
}
start_dynbhd_service() {
rm -f /tmp/multiap.backhaul
procd_open_instance
@@ -150,7 +102,11 @@ validate_radio_section() {
'include_sta_metric:bool:false' \
'rcpi_hysteresis_margin:range(0,255)' \
'report_util_threshold:range(0,255)' \
'encryption:or("sae", "psk2", "sae-mixed")'
'encryption:or("sae", "sae+aes", "psk2",
"psk2+aes", "sae-mixed", "sae-mixed+aes",
"none", "psk-mixed", "psk-mixed+aes",
"wpa", "wpa+aes", "wpa2", "wpa2+aes",
"psk", "psk+aes")' \
[ "$?" -ne 0 ] && {
logger -s -t "mapagent" "Validation of radio section failed"
@@ -229,10 +185,6 @@ start_service() {
config_get_bool enabled agent enabled 1
[ "$enabled" -eq 0 ] && return 1
local ts
config_get_bool ts agent vlan_segregation 0
[ "$ts" -eq 1 ] && create_map #|| remove_map
procd_open_instance
procd_set_param command "/usr/sbin/mapagent" "-d"
procd_set_param respawn
@@ -241,10 +193,6 @@ start_service() {
procd_close_instance
}
#stop_service() {
# remove_map
#}
service_triggers()
{
procd_add_reload_trigger "mapagent"

View File

@@ -404,6 +404,7 @@ teardown_iface() {
uci -q set mapagent.${section}.enabled="0"
uci -q set mapagent.${section}.ssid="DISABLED-SSID"
uci -q set mapagent.${section}.key="DISABLED-KEY"
#uci -q del mapagent.${section}.vid
# subshell in hopes to maintain mapagent config loaded
(mapagent_teardown_wireless $ifname)
@@ -683,29 +684,43 @@ bsta_enable_all() {
bsta_scan_on_enabled
}
bsta_clear_all_bssid() {
# arg = one interface to clear
# no arg = clear all interfaces
bsta_clear_bssid() {
local iface=$1
mapagent_remove_bssid() {
local iface=$2
config_get ifname $1 ifname
[ -n "$iface" -a "$iface" != "$ifname" ] && return
uci -q set mapagent.$1.enabled="1"
uci -q del mapagent.$1.bssid
}
wireless_remove_bssid() {
local iface=$2
config_get mode $1 mode
config_get ifname $1 ifname
[ "$mode" != "sta" ] && return
[ -n "$iface" -a "$iface" != "$ifname" ] && return
uci -q del wireless.$1.bssid
wpa_cli -i "$ifname" bssid 0 00:00:00:00:00:00 > /dev/null 2>&1
wpa_cli -i "$ifname" save_config > /dev/null 2>&1
}
config_load mapagent
config_foreach mapagent_remove_bssid bsta
config_foreach mapagent_remove_bssid bsta $iface
uci commit mapagent
config_load wireless
config_foreach wireless_remove_bssid wifi-iface
config_foreach wireless_remove_bssid wifi-iface $iface
uci commit wireless
}
@@ -778,6 +793,10 @@ bsta_disable_lower_priority() {
[ "$ifname" != "$2" -a "$priority" -gt "$3" ] && enabled="0"
# enable passed ifname explicitly
# don't explicitly enable other higher prio interfaces
[ "$ifname" != "$2" -a "$enabled" = "1" ] && return
uci -q set mapagent.$1.enabled="$enabled"
(mapagent_apply_wl_bsta $ifname $enabled) > /dev/null
@@ -845,6 +864,40 @@ set_uplink_backhaul_info() {
) 200>/var/lock/map.backhaul.lock
}
update_isolate_ebtables() {
parse_fh() {
local brcm_setup="$(uci -q get mapagent.agent.brcm_setup)"
local guest_isolate="$(uci -q get mapagent.agent.guest_isolation)"
local pvid="$(uci -q get mapagent.@policy[0].pvid)"
local section=$1
local prefix="TODO"
local action="del"
config_get vid $section vid
config_get band $section band
config_get ifname $section ifname
[ $vid -gt 4094 -o $vid -lt 1 ] && vid=$pvid
[ "$guest_isolate" = "1" -a "$vid" != "$pvid" ] && action="add"
if [ "$brcm_setup" = "1" ]; then
prefix="wds"
else
#todo
break;
fi
ts_sub "isolate" "$action" "$pvid" "$vid" "$band" "$ifname" "$prefix"
}
config_load mapagent
config_foreach parse_fh ap
}
set_uplink() {
local type=$1
local ifname=$2
@@ -862,8 +915,7 @@ set_uplink() {
) 200>/var/lock/map.backhaul.lock
json_cleanup
config_load mapagent
update_isolate_ebtables
island_prevention="$(uci -q get mapagent.agent.island_prevention)"
if [ "$island_prevention" = "1" -a "$type" = "eth" ]; then
@@ -875,8 +927,6 @@ set_uplink() {
unset_uplink() {
local type=${1:-wifi}
config_load mapagent
island_prevention="$(uci -q get mapagent.agent.island_prevention)"
if [ "$island_prevention" = "1" -a "$type" = "eth" ]; then
@@ -910,7 +960,7 @@ case "$func" in
sync_mapcontroller_from_wireless) sync_mapcontroller_from_wireless $@;;
ts) ts_sub $@;;
bsta_enable_all) bsta_enable_all $@;;
bsta_clear_all_bssid) bsta_clear_all_bssid $@;;
bsta_clear_bssid) bsta_clear_bssid $@;;
bsta_blacklist_bssid_set) bsta_blacklist_bssid_set $@;;
bsta_blacklist_bssid_clear) bsta_blacklist_bssid_clear $@;;
bsta_disable_lower_priority) bsta_disable_lower_priority $@;;

View File

@@ -4,10 +4,11 @@
AL_BRIDGE=${AL_BRIDGE-"br-lan"}
PRIMARY_VID=${PRIMARY_VID-1}
MAP_BH_FILE="/tmp/multiap.backhaul"
### Traffic Separation ###
dbg() {
ts_dbg() {
logger -t traffic_separation $@
}
@@ -22,63 +23,81 @@ EOF
exit 1
}
ts_create() {
_net_setup() {
local name=$1
local vid=$2
local proto=$3
local dev=$4
local port_dev=$5
_dhcp_cleanup() {
vid=$1
[ -z "$(uci -q get network.${name})" ] || return
[ -n "$(uci -q get dhcp.guest${vid})" ] && {
uci -q delete dhcp.guest${vid}
uci commit dhcp
/etc/init.d/dnsmasq reload
}
}
local ip_addr="192.168.${vid}.1"
local br_dev="${AL_BRIDGE/-/_}"
local tag=":t"
_firewall_cleanup() {
vid=$1
[ "${vid}" = "${PRIMARY_VID}" ] && {
tag=""
guest_teardown() {
local section=$1
local config=$2
local val=$3
local option=$4
# Global options
[ -z "$(uci -q get network.${br_dev}.vlan_filtering)" ] && {
uci -q set network.${br_dev}.vlan_filtering=1;
}
config_get name "$section" "$option"
uci -q delete network.lan.proto
uci -q delete network.lan.ipaddr
uci -q delete network.lan.netmask
uci -q delete network.lan.ip6assign
[ "$val" != "$name" ] && continue
uci delete ${config}.${section}
uci commit ${config}
}
uci -q set network.${name}="interface"
uci -q set network.${name}.device="$dev"
uci -q set network.${name}.is_lan="1"
[ -n "$(uci -q get firewall.guest${vid}_dns)" ] && {
uci -q delete firewall.guest${vid}_dns
uci commit firewall
}
if [ "$proto" = "static" ] ; then
uci -q set network.${name}.proto="static"
# TODO vid > 255
uci -q set network.${name}.ipaddr="${ip_addr}"
uci -q set network.${name}.netmask="255.255.255.0"
uci -q set network.${name}.ip6assign '60'
else
uci -q set network.${name}.proto="dhcp"
fi
[ -n "$(uci -q get firewall.guest${vid}_dhcp)" ] && {
uci -q delete firewall.guest${vid}_dhcp
uci commit firewall
}
uci -q add network bridge-vlan
uci -q set network.@bridge-vlan[-1].device="$AL_BRIDGE"
uci -q set network.@bridge-vlan[-1].vlan="$vid"
[ -n "$(uci -q get firewall.guest${vid}_ping)" ] && {
uci -q delete firewall.guest${vid}_ping
uci commit firewall
}
for port in $(uci -q get network.${br_dev}.ports) ; do
echo $port | grep -q eth || continue
uci -q add_list network.@bridge-vlan[-1].ports="${port}${tag}"
done
config_load firewall
config_foreach guest_teardown forwarding "firewall" guest${vid} "src" #delete firewall section with name = guest${vid}
config_load firewall
config_foreach guest_teardown zone "firewall" guest${vid} "name" #delete firewall section with name = guest${vid}
}
uci -q add_list network.${br_dev}.ports="$port_dev"
uci -q add_list network.@bridge-vlan[-1].ports="$port_dev"
_network_cleanup() {
vid=$1
uci -q commit network
[ -n "$(uci -q get network.vlan${vid})" ] && {
uci -q delete network.vlan${vid}
uci commit network
}
[ -n "$(uci -q get network.guest${vid})" ] && {
uci -q delete network.guest${vid}
uci commit network
}
[ -n "$(uci -q get network.guest${vid}_8021q)" ] && {
uci -q delete network.guest${vid}_8021q
uci commit network
}
}
_guest_cleanup() {
vid=$1
_dhcp_cleanup $vid
_firewall_cleanup $vid
_network_cleanup $vid
}
ts_create() {
_dhcp_setup() {
local name=$1
@@ -99,44 +118,207 @@ EOF
uci -q commit dhcp
}
_firewall_setup() {
local name=$1
local network=$1
local vid=$2
local zone_exist=0
local exists=0
local diff=0
local subnet=$(($vid % 256))
local ipaddr="192.168.${subnet}.1"
config_load firewall
_process_zone() {
local section=$1
local new_name=$2
local val=$3
local name
config_get name $section name
config_get name $section $val
[ "$name" == "$new_name" ] && zone_exist=1
[ "$name" == "$new_name" ] && exists=1
}
config_foreach _process_zone zone $name
[ "$zone_exist" != "0" ] && return
[ "${vid}" = "${PRIMARY_VID}" ] && {
uci -q delete firewall.lan
config_foreach _process_zone zone $name "name"
[ "$exists" == "0" ] && {
uci -q add firewall zone
uci -q set firewall.@zone[-1].name="$name"
uci -q add_list firewall.@zone[-1].network="$network"
uci -q set firewall.@zone[-1].input='DROP'
uci -q set firewall.@zone[-1].output='ACCEPT'
uci -q set firewall.@zone[-1].forward='DROP'
diff=1
}
uci -q add firewall zone
uci -q set firewall.@zone[-1].name="$name"
uci -q add_list firewall.@zone[-1].network="$network"
uci -q set firewall.@zone[-1].input='ACCEPT'
uci -q set firewall.@zone[-1].output='ACCEPT'
uci -q set firewall.@zone[-1].forward='ACCEPT'
exists=0
config_foreach _process_zone forwarding $name "src"
[ "$exists" == "0" ] && {
uci -q add firewall forwarding
uci -q set firewall.@forwarding[-1].src="$name"
uci -q set firewall.@forwarding[-1].dest="wan"
diff=1
}
uci -q add firewall forwarding
uci -q set firewall.@forwarding[-1].src="$name"
uci -q set firewall.@forwarding[-1].dest="wan"
[ -z "$(uci -q get firewall.${name}_dns)" ] && {
uci set firewall.${name}_dns=rule
uci set firewall.${name}_dns.name="Allow-DNS-${name}"
uci set firewall.${name}_dns.src="${name}"
uci set firewall.${name}_dns.dest_port="53"
uci set firewall.${name}_dns.proto="tcp udp"
uci set firewall.${name}_dns.target="ACCEPT"
diff=1
}
uci -q commit firewall
[ -z "$(uci -q get firewall.${name}_dhcp)" ] && {
uci set firewall.${name}_dhcp=rule
uci set firewall.${name}_dhcp.name="Allow-DHCP-${name}"
uci set firewall.${name}_dhcp.src="${name}"
uci set firewall.${name}_dhcp.src_port="68"
uci set firewall.${name}_dhcp.dest_port="67"
uci set firewall.${name}_dhcp.proto="udp"
uci set firewall.${name}_dhcp.family="ipv4"
uci set firewall.${name}_dhcp.target="ACCEPT"
diff=1
}
[ -z "$(uci -q get firewall.${name}_ping)" ] && {
uci set firewall.${name}_ping=rule
uci set firewall.${name}_ping.name="Allow-Ping-${name}"
uci set firewall.${name}_ping.src="${name}"
uci set firewall.${name}_ping.dest_ip="${ipaddr}"
uci set firewall.${name}_ping.proto="icmp"
uci set firewall.${name}_ping.icmp_type="echo-request"
uci set firewall.${name}_ping.family="ipv4"
uci set firewall.${name}_ping.target="ACCEPT"
diff=1
}
[ $diff -eq 1 ] && uci -q commit firewall
}
_net_setup() {
net_check_for_vlan() {
local section=$1
local vid=$2
config_get vlan "$section" vlan
[ "$vid" = "$vlan" ] && {
echo "1"
break
}
}
net_check_for_network() {
local section=$1
local vid=$2
config_get device "$section" device
[ "${AL_BRIDGE}.$vid" = "$device" ] && {
echo "1"
break
}
}
net_set_primary() {
local section=$1
local pvid=$2
config_get device "$section" device
[ "${AL_BRIDGE}" = "$device" ] && {
uci -q set network.${section}.device="${AL_BRIDGE}.${pvid}"
uci -q commit network
diff="1"
break;
}
}
local vid=$1
diff=""
config_load network
#[ -x "/usr/sbin/mapcontroller" ] && config_foreach net_set_primary interface $PRIMARY_VID
exists=$(config_foreach net_check_for_vlan bridge-vlan $vid)
[ -z "$exists" ] && {
local name="vlan${vid}"
local br_dev="${AL_BRIDGE/-/_}"
local tag=":t"
local self_flags="untagged"
uci -q set network.${name}="bridge-vlan"
uci -q set network.${name}.name="${name}"
uci -q set network.${name}.device="$AL_BRIDGE"
uci -q set network.${name}.vlan="$vid"
[ "${vid}" = "${PRIMARY_VID}" ] && {
# self_flags="untagged pvid"
uci -q set network.${name}.flags="untagged pvid"
tag=":*"
}
# uci -q set network.${name}.flags="${self_flags}"
uci -q set network.${name}.local='1'
for port in $(uci -q get network.${br_dev}.ports) ; do
uci -q get network.${name}.ports | grep -q "${port}${tag}" && continue
uci -q add_list network.${name}.ports="${port}${tag}"
done
uci -q commit network
diff="1"
}
exists=$(config_foreach net_check_for_network interface $vid)
[ -z "$exists" -a "$PRIMARY_VID" != "$vid" -a -x "/usr/sbin/mapcontroller" ] && {
net_get_albridge_ip() {
local section=$1
config_get device "$section" device
[ "${AL_BRIDGE}" = "$device" -o "${AL_BRIDGE}.${PRIMARY_VID}" = "$device" ] && {
ipaddr="$(uci -q get network.${section}.ipaddr)"
netmask="$(uci -q get network.${section}.netmask)"
break;
}
}
local name="guest${vid}"
local br_dev="${AL_BRIDGE/-/_}"
local tag=":t"
local self_flags="untagged"
local subnet=$(($vid % 256))
netmask="255.255.255.0"
ipaddr="192.168.1.1"
config_load network
config_foreach net_get_albridge_ip interface $PRIMARY_VID
# replace third octet of the ip with $subnet
ipaddr=$(echo $ipaddr | sed "s/\(\([0-9]\{1,3\}\.\)\{2\}\)[0-9]\{1,3\}/\1${subnet}/")
uci -q set network.${name}="interface"
uci -q set network.${name}.device="${AL_BRIDGE}.$vid"
uci -q set network.${name}.ipaddr="$ipaddr"
uci -q set network.${name}.netmask="$netmask"
uci -q set network.${name}.proto="static"
uci -q commit network
diff="1"
}
[ -z "$(uci -q get network.guest${vid}_8021q)" -a $PRIMARY_VID != $vid ] && {
uci -q set network.guest${vid}_8021q="device"
uci -q set network.guest${vid}_8021q.ifname="${AL_BRIDGE}"
uci -q set network.guest${vid}_8021q.name="${AL_BRIDGE}.$vid"
uci -q set network.guest${vid}_8021q.type="8021q"
uci -q set network.guest${vid}_8021q.vid="$vid"
uci -q set network.guest${vid}_8021q.native="1"
}
}
vid=$1
@@ -148,62 +330,212 @@ EOF
exit 1
}
ip link show sink${vid} 2> /dev/null || {
ip link add sink${vid} type veth peer name sink_peer${vid}
logger -t vlan "setup ts vid $vid"
_net_setup ${vid}
[ -x "/usr/sbin/mapcontroller" -a "$PRIMARY_VID" != "$vid" ] && {
_dhcp_setup guest${vid}
_firewall_setup guest${vid} $vid
}
ip link set sink${vid} up
ip link set sink_peer${vid} up
proto="dhcp"
[ -x "/usr/sbin/mapcontroller" ] && proto="static" ;
_net_setup "vlan${vid}" ${vid} ${proto} "sink${vid}" "sink_peer${vid}"
[ -x "/usr/sbin/mapcontroller" ] && {
_dhcp_setup vlan${vid}
_firewall_setup vlan${vid} ${vid}
}
# Disable pktfwd here and flush FlowCache rules
echo 0 > /proc/pktfwd_dhd/enable
echo 0 > /proc/pktfwd_wl/enable
fcctl flush
}
ts_reload() {
# TODO check it again
local dhcp_reload=$1
restart=""
# workaround for missing backhaul wifi.ap.* ubus obj's:
# iterate in config and setup bh
# config_load wireless
bridge_verify_vid_mapping() {
local section=$1
# _setup_bh_iface() {
# local sec=$1
# local iface=$2
# local bridge=$3
check_port_vid() {
local port="$1"
local vlan="$2"
# config_get ifname $sec ifname
added=$(bridge vlan show dev $port | grep -w "$vlan")
if [ "$added" = "" ]; then
restart="1"
break
fi
}
# config_get mode $sec mode
# config_get multi_ap $sec multi_ap "0"
# [ "$mode" = "ap" -a "$multi_ap" = "1" ] && {
# ts_create bh $ifname 1 2 br-map
# }
#}
config_get vlan "$section" vlan "0"
[ "$vlan" = "0" ] && continue
config_list_foreach "$section" "ports" check_port_vid "$vlan"
[ "$restart" = "1" ] && break
}
config_load network
config_foreach bridge_verify_vid_mapping bridge-vlan
# config_foreach _setup_bh_iface wifi-iface
[ -n "dhcp_reload" ] && /etc/init.d/dnsmasq reload
ubus call uci commit '{"config":"network"}'
if [ "$restart" = "1" ]; then
ts_dbg "trigger network restart"
/etc/init.d/network restart
else
ubus call uci commit '{"config":"network"}'
fi
/etc/init.d/firewall reload
#for sink in $(ubus list network.interface.sink*) ; do
# local sink_vlan=${sink/network.interface./}_vlan
#done
}
# maintain VIDs passed as args in network config, remove rest
ts_keep() {
local al_bridge=$(uci -q get mapagent.agent.al_bridge)
restart=""
[ "$al_bridge" = "" ] && al_bridge="br-lan"
bridge_vlan_teardown() {
local section=$1
shift
local bridge=$1
shift
local keep="$@"
config_get device "$section" device
[ "$bridge" != "$device" ] && continue
config_get vlan "$section" vlan
for i in $@; do
if [ "$i" -eq "$vlan" ] ; then
return
fi
done
restart="1"
_guest_cleanup $vlan
}
config_load network
config_foreach bridge_vlan_teardown bridge-vlan $al_bridge $@
if [ "$restart" = "1" ]; then
uci commit network
ts_dbg "trigger network restart"
/etc/init.d/network restart
fi
}
ts_cleanup() {
guest_teardown() {
local section=$1
local config=$2
local val=$3
local option=$4
config_get name "$section" "$option"
[ "$val" != "$name" ] && continue
uci delete ${config}.${section}
uci commit ${config}
restart="1"
}
local vid=$1
restart=""
_guest_cleanup $vid
# enable pktfwd again and flush FlowCache rules
echo 1 > /proc/pktfwd_dhd/enable
echo 1 > /proc/pktfwd_wl/enable
echo 0 > /proc/pktfwd_dhd/enable
echo 0 > /proc/pktfwd_wl/enable
echo 1 > /proc/pktfwd_dhd/enable
echo 1 > /proc/pktfwd_wl/enable
fcctl flush
}
ts_isolate() {
ts_isolate_radio() {
local section=$1
local action=$2
local band=$3
local vid=$4
local ifname=$5
config_get apband "$section" band
[ "$band" = "$apband" ] && continue
config_get apvid "$section" vid
[ "$vid" != "$apvid" ] && continue
config_get apifname "$section" ifname
[ "$ifname" = "$apifname" ] && continue # this should never happen
ebtables -D FORWARD -i $ifname --o $apifname -j DROP > /dev/null 2>&1
[ "$action" != "add" ] && continue
ebtables -A FORWARD -i $ifname --o $apifname -j DROP > /dev/null 2>&1
}
local action=$1
shift
local pvid=$1 # pvid
shift
local vid=$1 # vid
shift
local band=$1 # band
shift
local ifname=$1 # guest fbss name
shift
local ifprefix=$1 # 4addr mode ifname prefix
local br_dev="${AL_BRIDGE/-/_}"
[ -z "$pvid" -o -z "$ifprefix" -o -z "$ifname" ] && return
config_load mapagent
config_foreach ts_isolate_radio ap $action $band $vid $ifname
# must not drop traffic to upstream
json_load "$(cat $MAP_BH_FILE)"
json_get_var bk_ifname ifname
json_cleanup
for prefix in $@; do
ebtables -D FORWARD -i $ifname --o ${prefix}+ -j DROP > /dev/null 2>&1
ebtables -D FORWARD -i ${prefix}+ --o $ifname -j DROP > /dev/null 2>&1
# isolate eth interfaces
for port in $(uci -q get network.${br_dev}.ports) ; do
ebtables -D FORWARD -i $ifname --o $port -j DROP > /dev/null 2>&1
ebtables -D FORWARD -i $port --o $ifname -j DROP > /dev/null 2>&1
[ "$action" != "add" -o "$port" = "$bk_ifname" ] && continue
ebtables -A FORWARD -i $ifname --o $port -j DROP > /dev/null 2>&1
ebtables -A FORWARD -i $port --o $ifname -j DROP > /dev/null 2>&1
done
[ "$action" != "add" ] && continue
ebtables -A FORWARD -i $ifname --o ${prefix}+ -j DROP > /dev/null 2>&1
ebtables -A FORWARD -i ${prefix}+ --o $ifname -j DROP > /dev/null 2>&1
done
}
local func=$1
shift
case "$func" in
create) dbg "create $@"; ts_create $@;;
reload) dbg "reload $@"; ts_reload $@;;
create) ts_dbg "create $@"; ts_create $@;;
keep) ts_dbg "keep $@"; ts_keep $@;;
reload) ts_dbg "reload $@"; ts_reload $@;;
cleanup) ts_dbg "cleanup $@"; ts_cleanup $@;;
isolate) ts_dbg "isolate $@"; ts_isolate $@;;
--help|help) ts_usage;;
*) ts_usage; exit 1;;
esac

View File

@@ -6,5 +6,21 @@ config CONTROLLER_SYNC_DYNAMIC_CNTLR_CONFIG
bool "Support Dynamic Controller configuration sync"
default y if MULTIAP_DYNAMIC_CNTLR_SYNC_CONFIG
config CONTROLLER_EASYMESH_VENDOR_EXT
bool "Enable extra features through Easymesh vendor extension"
default y
config CONTROLLER_EASYMESH_VENDOR_EXT_OUI_DEFAULT
string
default "\\\\x11\\\\x22\\\\x33"
config CONTROLLER_EASYMESH_VENDOR_EXT_OUI
string "Vendor OUI in '\\\\xAB\\\\xCD\\\\xEF' format"
default CONTROLLER_EASYMESH_VENDOR_EXT_OUI_DEFAULT
help
Extra features not covered by the base Easymesh specification can be
enabled through CONTROLLER_EASYMESH_VENDOR_EXT. Please provide the Vendor's OUI
through which such features would be exposed.
endmenu
endif

View File

@@ -5,9 +5,9 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=map-controller
PKG_VERSION:=2.8.0.5
PKG_VERSION:=2.8.0.25
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE_VERSION:=da283946e96e2d8b982b0b0518fa84102f0ef4df
PKG_SOURCE_VERSION:=209ffb0bb4932e29e3d4d05f515b71985491abce
LOCAL_DEV=0
ifneq ($(LOCAL_DEV),1)
@@ -48,11 +48,18 @@ ifeq ($(CONFIG_CONTROLLER_SYNC_DYNAMIC_CNTLR_CONFIG),y)
TARGET_CFLAGS += -DCONTROLLER_SYNC_DYNAMIC_CNTLR_CONFIG
endif
ifeq ($(CONFIG_CONTROLLER_EASYMESH_VENDOR_EXT),y)
TARGET_CFLAGS += -DEASYMESH_VENDOR_EXT_OUI=\\\"$(CONFIG_CONTROLLER_EASYMESH_VENDOR_EXT_OUI)\\\"
TARGET_CFLAGS += -DEASYMESH_VENDOR_EXT
endif
define Package/map-controller/install
$(INSTALL_DIR) $(1)/etc
$(CP) ./files/* $(1)/
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/src/mapcontroller $(1)/usr/sbin/
$(INSTALL_DIR) $(1)/usr/lib/mapcontroller
$(CP) $(PKG_BUILD_DIR)/src/plugins/steer/rcpi/rcpi.so $(1)/usr/lib/mapcontroller/rcpi.so
endef
ifeq ($(LOCAL_DEV),1)

View File

@@ -6,8 +6,9 @@ config controller 'controller'
option enable_bsta_steer '0'
option use_bcn_metrics '0'
option use_usta_metrics '0'
option primary_vid '0'
option primary_vid '1'
option primary_pcp '0'
option enable_ts '0'
option allow_bgdfs '0'
option channel_plan '0'

View File

@@ -25,7 +25,12 @@ validate_controller_section() {
'use_bcn_metrics:bool:false' \
'use_usta_metrics:bool:false' \
'allow_bgdfs:range(0,2629744)' \
'channel_plan:range(0,2629744)'
'channel_plan:range(0,2629744)' \
'enable_ts:bool:false' \
'rcpi_threshold_2g:range(0,220)' \
'rcpi_threshold_5g:range(0,220)' \
'report_rcpi_threshold_2g:range(0,220)' \
'report_rcpi_threshold_5g:range(0,220)'
[ "$?" -ne 0 ] && {
logger -s -t "mapcontroller" "Validation of controller section failed"
@@ -42,7 +47,10 @@ validate_ap_section() {
'band:or("2", "5")' \
'ssid:string' \
'encryption:or("sae", "sae+aes", "psk2",
"psk2+aes", "sae-mixed", "sae-mixed+aes")' \
"psk2+aes", "sae-mixed", "sae-mixed+aes",
"none", "psk-mixed", "psk-mixed+aes",
"wpa", "wpa+aes", "wpa2", "wpa2+aes",
"psk", "psk+aes")' \
'key:string' \
'vid:range(1,65535):1' \
'type:or("backhaul", "fronthaul", "combined")' \

26
map-topology/Config.in Normal file
View File

@@ -0,0 +1,26 @@
if (PACKAGE_map-topology)
menu "Configurations"
config TOPOLOGYD_EASYMESH_VENDOR_EXT
bool "Enable extra features through Easymesh vendor extension"
default y
config TOPOLOGYD_EASYMESH_VENDOR_EXT_OUI_DEFAULT
string
default "\\\\x11\\\\x22\\\\x33"
config TOPOLOGYD_EASYMESH_VENDOR_EXT_OUI
string "Vendor OUI in '\\\\xAB\\\\xCD\\\\xEF' format"
default TOPOLOGYD_EASYMESH_VENDOR_EXT_OUI_DEFAULT
help
Extra features not covered by the base Easymesh specification can be
enabled through TOPOLOGYD_EASYMESH_VENDOR_EXT. Please provide the Vendor's OUI
through which such features would be exposed.
config TOPOLOGYD_ACTIVE_CONN_LIBCONNTRACK
bool "Support active connection fetch using netlink"
default n
endmenu
endif

View File

@@ -6,11 +6,11 @@ include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=map-topology
PKG_VERSION:=2.5.0.7
PKG_VERSION:=2.5.0.17
LOCAL_DEV:=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_VERSION:=601f5fdc8b4051811593efa714954d4cb3d7b7dd
PKG_SOURCE_VERSION:=c8928b4364eab3762ae94ecbd471a98f20c47462
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
@@ -31,6 +31,10 @@ define Package/map-topology
TITLE:=Utility to build topology of a multi-AP network
endef
define Package/map-topology/config
source "$(SOURCE)/Config.in"
endef
TARGET_CFLAGS += \
-I$(STAGING_DIR)/usr/include \
-I$(STAGING_DIR)/usr/include/libnl3 \
@@ -43,6 +47,15 @@ endef
MAKE_PATH:=src
ifeq ($(CONFIG_TOPOLOGYD_ACTIVE_CONN_LIBCONNTRACK),y)
TARGET_CFLAGS += -DACTIVE_CONN_LIBCONNTRACK
endif
ifeq ($(CONFIG_TOPOLOGYD_EASYMESH_VENDOR_EXT),y)
TARGET_CFLAGS += -DEASYMESH_VENDOR_EXT_OUI=\\\"$(CONFIG_TOPOLOGYD_EASYMESH_VENDOR_EXT_OUI)\\\"
endif
ifeq ($(LOCAL_DEV),1)
define Build/Prepare
$(CP) -rf ~/git/map-topology/* $(PKG_BUILD_DIR)/

View File

@@ -2,3 +2,4 @@
config global 'global'
option ageing_timer '1440'
option reboot_persistent '0'
option ifname 'br-lan'

View File

@@ -24,7 +24,8 @@ validate_topology_config() {
validate_global_section() {
uci_validate_section hosts global "global" \
'ageing_timer:uinteger' \
'reboot_persistent:bool'
'reboot_persistent:bool' \
'ifname:string'
[ "$?" -ne 0 ] && {
logger -s -t "hosts" "Validation of global section failed"
@@ -71,6 +72,9 @@ start_service() {
config_load "hosts"
validate_hosts_config || return 1;
if [ -f "/proc/sys/net/netfilter/nf_conntrack_timestamp" ]; then
echo 1 >/proc/sys/net/netfilter/nf_conntrack_timestamp
fi
procd_open_instance
procd_set_param command "/usr/sbin/topologyd"
procd_set_param respawn

View File

@@ -0,0 +1,45 @@
#
# Copyright (c) 2022 Genexis B.V.
#
# This program and the accompanying materials are made available under the
# terms of the Eclipse Public License 2.0 which is available at
# https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
# Contributors:
# Erik Karlsson - initial implementation
#
include $(TOPDIR)/rules.mk
PKG_NAME:=mosquitto-auth-shadow
PKG_VERSION:=1.0.0
PKG_MAINTAINER:=Erik Karlsson <erik.karlsson@genexis.eu>
PKG_LICENSE:=EPL-2.0
PKG_BUILD_PARALLEL:=1
include $(INCLUDE_DIR)/package.mk
define Package/mosquitto-auth-shadow
SECTION:=net
CATEGORY:=Network
TITLE:=mosquitto - /etc/shadow authentication plugin
DEPENDS:=mosquitto
USERID:=mosquitto=200:mosquitto=200 mosquitto=200:shadow=11
endef
define Package/mosquitto-auth-shadow/description
Plugin for the mosquitto MQTT message broker that authenticates
users using /etc/shadow
endef
define Package/mosquitto-auth-shadow/install
$(INSTALL_DIR) $(1)/usr/lib
$(INSTALL_BIN) $(PKG_BUILD_DIR)/mosquitto_auth_shadow.so $(1)/usr/lib/
$(CP) ./files/* $(1)/
endef
$(eval $(call BuildPackage,mosquitto-auth-shadow))

View File

@@ -0,0 +1 @@
chown root:shadow /etc/shadow && chmod 0640 /etc/shadow

View File

@@ -0,0 +1,25 @@
#
# Copyright (c) 2022 Genexis B.V.
#
# This program and the accompanying materials are made available under the
# terms of the Eclipse Public License 2.0 which is available at
# https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
# Contributors:
# Erik Karlsson - initial implementation
#
TARGETS = mosquitto_auth_shadow.so
all: $(TARGETS)
%.pic.o: %.c
$(CC) $(CFLAGS) -Wall -Werror -fPIC -c -o $@ $<
mosquitto_auth_shadow.so: mosquitto_auth_shadow.pic.o
$(CC) $(LDFLAGS) -shared -o $@ $^
clean:
rm -f *.o $(TARGETS)

View File

@@ -0,0 +1,80 @@
/*
* Copyright (c) 2022 Genexis B.V.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Erik Karlsson - initial implementation
*/
#include <string.h>
#include <shadow.h>
#include <crypt.h>
#include <mosquitto.h>
#include <mosquitto_broker.h>
#include <mosquitto_plugin.h>
static int basic_auth_callback(int event, void *event_data, void *userdata)
{
struct mosquitto_evt_basic_auth *ed = event_data;
struct spwd spbuf, *sp = NULL;
char buf[256];
struct crypt_data data;
char *hash;
/* Let other plugins or broker decide about anonymous login */
if (ed->username == NULL)
return MOSQ_ERR_PLUGIN_DEFER;
getspnam_r(ed->username, &spbuf, buf, sizeof(buf), &sp);
if (sp == NULL || sp->sp_pwdp == NULL)
return MOSQ_ERR_AUTH;
/* Empty string as hash means password is not required */
if (sp->sp_pwdp[0] == 0)
return MOSQ_ERR_SUCCESS;
if (ed->password == NULL)
return MOSQ_ERR_AUTH;
memset(&data, 0, sizeof(data));
hash = crypt_r(ed->password, sp->sp_pwdp, &data);
if (hash == NULL)
return MOSQ_ERR_AUTH;
if (strcmp(hash, sp->sp_pwdp) == 0)
return MOSQ_ERR_SUCCESS;
return MOSQ_ERR_AUTH;
}
int mosquitto_plugin_version(int supported_version_count,
const int *supported_versions)
{
return 5;
}
int mosquitto_plugin_init(mosquitto_plugin_id_t *identifier,
void **user_data,
struct mosquitto_opt *opts, int opt_count)
{
*user_data = identifier;
return mosquitto_callback_register(identifier, MOSQ_EVT_BASIC_AUTH,
basic_auth_callback, NULL, NULL);
}
int mosquitto_plugin_cleanup(void *user_data,
struct mosquitto_opt *opts, int opt_count)
{
mosquitto_plugin_id_t *identifier = user_data;
return mosquitto_callback_unregister(identifier, MOSQ_EVT_BASIC_AUTH,
basic_auth_callback, NULL);
}

View File

@@ -5,12 +5,12 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=obuspa
PKG_VERSION:=5.0.0.16
PKG_VERSION:=5.0.0.16.7
LOCAL_DEV:=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=cd47bcaf1cc82dfd5c10ea76491fd0dae4436cc6
PKG_SOURCE_VERSION:=6477337ec0d5dd6fa5586b42ba6423a892643106
PKG_SOURCE_URL:=https://dev.iopsys.eu/fork/obuspa.git
PKG_MAINTAINER:=Vivek Dutta <vivek.dutta@iopsys.eu>
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
@@ -91,6 +91,7 @@ endif
ifeq ($(LOCAL_DEV),1)
define Build/Prepare
$(CP) -rf ~/git/obuspa/* $(PKG_BUILD_DIR)/
$(Build/Patch)
endef
endif

View File

@@ -2,7 +2,7 @@ config obuspa 'global'
option enabled '1'
option interface 'loopback'
#option ifname 'lo'
option debug '1'
option debug '0'
option log_level '1'
option prototrace '0'
#option db_file '/etc/obuspa/usp.db'

View File

@@ -1,7 +1,7 @@
#!/bin/sh /etc/rc.common
START=99
STOP=2
STOP=02
USE_PROCD=1
PROG=/usr/sbin/obuspa

View File

@@ -1,7 +1,8 @@
{
"dmcaching_exclude": [
"Device.DeviceInfo.ProcessStatus.Process.",
"Device.InterfaceStack.",
"Device.Hosts.Host.",
"Device.IEEE1905.",
"Device.WiFi.DataElements."
]
}

View File

@@ -0,0 +1,42 @@
--- a/src/core/cli_server.c
+++ b/src/core/cli_server.c
@@ -733,10 +733,6 @@ int ExecuteCli_Get(char *arg1, char *arg
USP_ASSERT(gge->value != NULL);
SendCliResponse("%s => %s\n", gge->path, gge->value);
}
- else
- {
- SendCliResponse("ERROR: %d retrieving %s (%s)\n", gge->err_code, gge->path, gge->err_msg);
- }
}
GROUP_GET_VECTOR_Destroy(&ggv);
--- a/src/core/handle_get.c
+++ b/src/core/handle_get.c
@@ -252,24 +252,14 @@ void FormPathExprResponse(int get_expr_i
return;
}
- // If there was an error in getting any of the parameters associated with the path expression,
- // then just add the first error, without any of the parameter values, for this path expression result
- for (i=0; i < gi->num_entries; i++)
- {
- gge = &ggv->vector[gi->index + i];
- if (gge->err_code != USP_ERR_OK)
- {
- (void)AddGetResp_ReqPathRes(resp, path_expr, gge->err_code, gge->err_msg);
- return;
- }
- }
-
// If the code gets here, then the value of all parameters were retrieved successfully, so add their values to the result_params
req_path_result = AddGetResp_ReqPathRes(resp, path_expr, USP_ERR_OK, "");
for (i=0; i < gi->num_entries; i++)
{
gge = &ggv->vector[gi->index + i];
+ if (gge->err_code != USP_ERR_OK)
+ continue;
#ifdef GET_RESPONSE_SIMPLE_FORMAT
// Simple format contains a resolved_path_result for every object (and sub object)
AddResolvedPathResult(req_path_result, gge->path, gge->value, 0);

View File

@@ -0,0 +1,20 @@
--- a/src/core/data_model.c
+++ b/src/core/data_model.c
@@ -1239,7 +1239,7 @@ int DATA_MODEL_NotifyInstanceAdded(char
// Exit if instance already exists - nothing to do
if (exists)
{
- USP_ERR_SetMessage("%s: Object (%s) already exists in the data model", __FUNCTION__, path);
+ // USP_ERR_SetMessage("%s: Object (%s) already exists in the data model", __FUNCTION__, path);
return USP_ERR_CREATION_FAILURE;
}
@@ -1324,7 +1324,7 @@ int DATA_MODEL_NotifyInstanceDeleted(cha
// Exit if instance does not exist - nothing to do
if (exists == false)
{
- USP_ERR_SetMessage("%s: Object (%s) does not exist in the data model", __FUNCTION__, path);
+ // USP_ERR_SetMessage("%s: Object (%s) does not exist in the data model", __FUNCTION__, path);
return USP_ERR_OBJECT_DOES_NOT_EXIST;
}

View File

@@ -1,22 +1,37 @@
#!/bin/sh /etc/rc.common
START=19
STOP=10
STOP=91
USE_PROCD=1
. /lib/functions.sh
include /lib/xpon
configure_serial_number() {
# serial number generation is taken care in the uci defaults, so if
# serial number is not found here its a misconfig
serial_number="$(uci -q get xpon.ani.serial_number)"
if [ ${#serial_number} -eq 12 ]; then
vendor_id="${serial_number:0:4}"
vssn="${serial_number:4:8}"
else
logger -s -t "xpon" "Serial number not found in uci, ont will probably not be registered at the olt"
logger -s -t "xpon" "Please configure a valid serial number"
return
fi
set_serial_number $vendor_id $vssn
}
start_service() {
if [ "$(uci -q get xpon.ani.enable)" == "1" ]; then
configure_serial_number
init_xpon
fi
}
stop_service() {
# stopping omcid does not bring down the pon link, which should happen
# if ANI is disabled or stopped (go to O1)
deinit_xpon
}

View File

@@ -1,17 +1,34 @@
#!/bin/sh
configure_serial_number() {
# check if serial number is present in the production data
production_sn="$(fw_printenv -n gponsn)"
if [ ${#production_sn} -eq 12 ]; then
uci set xpon.ani.serial_number=$production_sn
else
macaddr="$(fw_printenv -n ethaddr | tr -d ':' | tr 'a-z' 'A-Z')"
vendor_id="IOPS"
vssn="${macaddr:4:8}"
uci set xpon.ani.serial_number=$vendor_id$vssn
fi
}
if [ -s "/etc/config/xpon" ]; then
if uci -q get xpon.ani >/dev/null; then
# return if there is any valid content
# generate serial number in case its not present and return
serial_number="$(uci -q get xpon.ani.serial_number)"
if [ ${#serial_number} -ne 12 ]; then
configure_serial_number
fi
exit
else
rm -f /etc/config/xpon
fi
fi
touch /etc/config/xpon
uci set xpon.ani=ani
uci set xpon.ani.enable="1"
uci commit xpon
configure_serial_number

View File

@@ -1,20 +1,30 @@
#!/bin/sh
USE_PROCD=1
. /lib/functions.sh
set_serial_number() {
vendor_id=$1
vssn=$2
vendor_id="$(echo $vendor_id | hexdump -e '4/1 "%02X" "\n"')"
vendor_id=${vendor_id:0:8}
bs /b/c gpon onu_sn={vendor_id=$vendor_id,vendor_specific=$vssn}
}
init_xpon() {
procd_open_instance pon_msgd
procd_set_param command bcm_msgd -c gpon
procd_close_instance
procd_open_instance pon_daemon
procd_set_param command omcid start -n
procd_set_param respawn
procd_close_instance
}
deinit_xpon() {
# stopping omcid does not bring down the pon link, which should happen
# if ANI is disabled or stopped (go to O1)
gponctl stop
}

View File

@@ -7,20 +7,15 @@ BR_RULE=""
BR6_RULE=""
POLICER_COUNT=0
INTF_NAME=""
Q_COUNT=0
ITER=0
PREV_ORDER=""
CURR_ORDER=""
MAX_ORDER=""
SP_Q_PRIO=7
# Function to handle a queue order and
# update total number of queues
handle_q_order() {
qid="$1" #queue section ID
local qid="$1" #queue section ID
config_get is_enable "$qid" "enable"
config_get is_enable "$qid" "enable" 1
# No need to configure disabled queues
if [ $is_enable == '0' ]; then
@@ -36,7 +31,7 @@ handle_q_order() {
# Create precedence file containing queue order per
# interface.
local precedence_file="/tmp/qos/$ifname/q_order"
local q_no=$(cat /tmp/qos/queue_stats/$ifname/q_idx)
local q_no=$(cat /tmp/qos/$ifname/q_idx)
config_get precedence "$qid" "precedence"
value=${precedence}_q${q_no}
@@ -44,71 +39,32 @@ handle_q_order() {
# Update the number of queues per interface.
q_no=$((q_no + 1))
echo $q_no > /tmp/qos/queue_stats/$ifname/q_idx
echo $q_no > /tmp/qos/$ifname/q_idx
}
# Function to check if values are greater than (total number
# of queue -1) and map them to corresponding value.
configure_precedence_to_file() {
order="$1"
line="$2"
order_file="$3"
if [ $order == "$PREV_ORDER" ]; then
queue_id=${line#*_}
val=${CURR_ORDER}_${queue_id}
echo $val >> $order_file
else
PREV_ORDER=$order
queue_id=${line#*_}
val=${MAX_ORDER}_${queue_id}
echo $val >> $order_file
CURR_ORDER=$MAX_ORDER
MAX_ORDER=$((MAX_ORDER - 1))
fi
}
# Fucntion to map queue precedence per interface
# ranging from 1-X to 0-(no of queues -1)
map_queue_precedence() {
# Sort queue, lower value in uci means higher precedence, so this
# function sorts the precedence in decending order
sort_q_by_precedence() {
ifname="$1"
total_q=$(cat /tmp/qos/queue_stats/$ifname/q_idx)
q_no=`expr $total_q - 1`
MAX_ORDER=$q_no
local precedence_file="/tmp/qos/$ifname/q_precedence"
local order_file="/tmp/qos/$ifname/q_order"
local tmp_order_file="/tmp/qos/$ifname/q_order.tmp"
sort -n -r -k1 $order_file >> $precedence_file
rm $order_file
while read line
do
order=${line%_*}
if [ $order -gt $q_no ]; then
ITER=$((ITER + 1))
configure_precedence_to_file $order $line $order_file
else
if [ $ITER == '0' ]; then
echo $line >> $order_file
else
configure_precedence_to_file $order $line $order_file
fi
fi
done < $precedence_file
sort -n -k1 $order_file > $tmp_order_file
cp $tmp_order_file $order_file
rm -f $tmp_order_file
}
map_precedence() {
sort_by_precedence() {
for interf in $(db -q get hw.board.ethernetPortOrder); do
map_queue_precedence $interf
sort_q_by_precedence $interf
done
}
# function to handle a queue section
handle_queue() {
qid="$1" #queue section ID
local qid="$1" #queue section ID
local intf_name="$2"
config_get is_enable "$qid" "enable"
@@ -124,33 +80,35 @@ handle_queue() {
fi
# This is to get the qid per interface.
if [ "$INTF_NAME" == $ifname ]; then
Q_COUNT=$((Q_COUNT + 1))
else
Q_COUNT='0'
if [ "$intf_name" != "$ifname" ]; then
return
fi
INTF_NAME=$ifname
local precedence_file="/tmp/qos/$ifname/q_order"
local total_q=$(cat /tmp/qos/queue_stats/$ifname/q_idx)
q_no=`expr $total_q - 1` local
precedence_file="/tmp/qos/$ifname/q_order"
local temp_order=0
while read -r line; do
line_qid=${line: -1}
if [ "$line_qid" == "$Q_COUNT" ]; then
break
fi
temp_order=$((temp_order + 1))
done < "$precedence_file"
# TR181 suggests lower the precedence value higher the priority
# but in the chip its the opposite ie lower the value, lower
# the priority of queue on this chip. So we need to reverse the
# precedence value.
precedence="$(grep -i q${Q_COUNT} $precedence_file)"
precedence=${precedence%_*}
order=`expr $q_no - $precedence`
# for sp queue, no matter what the precedence value is configured in the uci file
# broadcom recommends that the highest precedence queue should have priority value
#7, the next priority q 6 and so on.
# Here, we have the index of the queue when sorted by precedence value in the file
# precedence_file so the order is calculated accordingly.
local order=`expr $SP_Q_PRIO - $temp_order`
config_get sc_alg "$qid" "scheduling"
config_get wgt "$qid" "weight"
config_get wgt "$qid" "weight" 1
config_get rate "$qid" "rate"
config_get bs "$qid" "burst_size"
config_get qsize "$qid" "queue_size" 1024
salg=1
local salg=1
case "$sc_alg" in
"SP") salg=1
@@ -163,31 +121,15 @@ handle_queue() {
;;
esac
# ignore precedence value in case of WRR
# ignore precedence value in case of WRR, broadcom recommends that WRR queue should
# always have precedence value set to 0
if [ $salg -eq 2 ]; then
order=0
fi
# Call tmctl which is a broadcomm command to configure queues on a port.
tmctl setqcfg --devtype 0 --if $ifname --qid $Q_COUNT --priority $order --qsize $qsize --weight $wgt --schedmode $salg --shapingrate $rate --burstsize $bs
# In BCM968 chips, the counters for queues are read, on other model, its read and reset. So, to maintain counter
# value and uniform behaviour, we are storing counter value for each queue in files
local d_name="/tmp/qos/queue_stats/${ifname}/q_${Q_COUNT}"
mkdir $d_name
local f_name="$d_name/txPackets"
touch $f_name
echo 0 > $f_name
f_name="$d_name/txBytes"
touch $f_name
echo 0 > $f_name
f_name="$d_name/droppedPackets"
touch $f_name
echo 0 > $f_name
f_name="$d_name/droppedBytes"
touch $f_name
echo 0 > $f_name
Q_COUNT=$((Q_COUNT + 1))
}
#function to handle a policer section
@@ -1092,28 +1034,20 @@ configure_classify() {
pre_configure_queue() {
# Delete queues
rm -rf /tmp/qos/queue_stats
for intf in $(db get hw.board.ethernetPortOrder); do
rm -rf /tmp/qos/$intf
mkdir -p /tmp/qos/queue_stats/$intf
touch /tmp/qos/queue_stats/$intf/q_idx
echo 0 > /tmp/qos/queue_stats/$intf/q_idx
mkdir -p /tmp/qos/$intf
touch /tmp/qos/$intf/q_order
touch /tmp/qos/$intf/q_idx
echo 0 > /tmp/qos/$intf/q_idx
# tm initialization pushing ahead of delcfg as
# porttminit bydefault configures all queue as SP configuration.
# that was causing WRR queue configuration failure.
tmctl porttminit --devtype 0 --if $intf --flag 0 --numqueues 8
tmctl porttminit --devtype 0 --if $intf --numqueues 8
i=0
for i in 0 1 2 3 4 5 6 7; do
tmctl delqcfg --devtype 0 --if $intf --qid $i &>/dev/null
done
mkdir -p /tmp/qos/$intf
touch /tmp/qos/$intf/q_order
touch /tmp/qos/$intf/q_precedence
done
}
@@ -1121,8 +1055,15 @@ configure_queue() {
# Load UCI file
config_load qos
config_foreach handle_q_order queue
map_precedence
config_foreach handle_queue queue
sort_by_precedence
for interf in $(db -q get hw.board.ethernetPortOrder); do
Q_COUNT=0
# sp queue have max priority value = no. of queue configured on the port
# hence read and update SP_Q_PRIO here
local q_no=$(cat /tmp/qos/$interf/q_idx)
SP_Q_PRIO=`expr $q_no - 1`
config_foreach handle_queue queue $interf
done
}
configure_policer() {

56
ssdpd/Makefile Normal file
View File

@@ -0,0 +1,56 @@
#
# Copyright (C) 2022 OpenWrt.org
#
include $(TOPDIR)/rules.mk
PKG_NAME:=ssdpd
PKG_VERSION:=1.0.4
LOCAL_DEV:=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/miniupnp/miniupnp.git
PKG_SOURCE_VERSION:=207cf440a22c075cb55fb067a850be4f9c204e6e
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_MIRROR_HASH:=skip
endif
PKG_LICENSE:=BSD-3-Clause
PKG_LICENSE_FILES:=LICENSE
include $(INCLUDE_DIR)/package.mk
define Package/ssdpd
SECTION:=net
CATEGORY:=Network
DEPENDS:=+libnfnetlink +libpthread +libubox +libubus +libblobmsg-json +libcurl +mxml
TITLE:=MiniSSDPd - SSDP daemon
URL:=https://miniupnp.tuxfamily.org/minissdpd.html
endef
MAKE_PATH:=minissdpd
TARGET_CFLAGS += \
-D_GNU_SOURCE \
-Wall -Wextra -Werror
TARGET_LDFLAGS += \
-lpthread -lubox -lubus -lblobmsg_json -lcurl -lmxml
ifeq ($(LOCAL_DEV),1)
define Build/Prepare
$(CP) -rf ~/git/sspd/* $(PKG_BUILD_DIR)/
endef
endif
define Package/ssdpd/install
$(INSTALL_DIR) $(1)/etc/config
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_CONF) ./files/etc/config/ssdpd $(1)/etc/config/ssdpd
$(INSTALL_BIN) ./files/etc/init.d/ssdpd $(1)/etc/init.d/ssdpd
$(INSTALL_BIN) $(PKG_BUILD_DIR)/minissdpd/minissdpd $(1)/usr/sbin/ssdpd
endef
$(eval $(call BuildPackage,ssdpd))

View File

@@ -0,0 +1,9 @@
config ssdpd 'ssdp'
option enabled '1'
option ipv6_enabled '0'
option socket_path '/var/run/minissdpd.sock'
option ttl '2'
option interface 'br-lan'
option debug '0'

76
ssdpd/files/etc/init.d/ssdpd Executable file
View File

@@ -0,0 +1,76 @@
#!/bin/sh /etc/rc.common
START=99
STOP=02
USE_PROCD=1
PROG=/usr/sbin/ssdpd
log() {
echo "${@}"|logger -t ssdpd.init -p info
}
validate_ssdpd_ssdp_section()
{
uci_validate_section ssdpd ssdpd "ssdp" \
'enabled:bool:true' \
'debug:bool:false' \
'ipv6_enabled:bool:false' \
'socket_path:string' \
'ttl:uinteger' \
'interface:string'
}
configure_ssdp()
{
local enabled ipv6_enabled socket_path ttl interface
config_load ssdpd
validate_ssdpd_ssdp_section || {
log "Validation of ssdp section failed"
return 1;
}
[ ${enabled} -eq 0 ] && return 0
mkdir -p /tmp/ssdp/description/
procd_set_param command ${PROG}
if [ ${ipv6_enabled} -eq 1 ]; then
procd_append_param command -6
fi
if [ ${debug} -eq 1 ]; then
procd_append_param command -d
fi
if [ -n "${socket_path}" ]; then
procd_append_param command -s ${socket_path}
fi
if [ -n "${ttl}" ]; then
procd_append_param command -t ${ttl}
fi
# If no interface is given defaults for br-lan
procd_append_param command -i ${interface:-br-lan}
}
start_service() {
procd_open_instance ssdp
configure_ssdp
procd_set_param respawn
procd_close_instance
}
reload_service() {
stop
start
}
service_triggers()
{
procd_add_reload_trigger "ssdpd"
}

View File

@@ -0,0 +1,20 @@
--- a/minissdpd/openssdpsocket.c
+++ b/minissdpd/openssdpsocket.c
@@ -11,6 +11,7 @@
#include <unistd.h>
#include <sys/ioctl.h>
#include <sys/socket.h>
+#include <sys/time.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <net/if.h>
--- a/minissdpd/ifacewatch.c
+++ b/minissdpd/ifacewatch.c
@@ -130,6 +130,7 @@ ProcessInterfaceWatch(int s, int s_ssdp,
/* case RTM_DELLINK: */
case RTM_DELADDR:
is_del = 1;
+ // fall through
case RTM_NEWADDR:
/* http://linux-hacks.blogspot.fr/2009/01/sample-code-to-learn-netlink.html */
ifa = (struct ifaddrmsg *)NLMSG_DATA(nlhdr);

View File

@@ -0,0 +1,11 @@
--- a/minissdpd/Makefile
+++ b/minissdpd/Makefile
@@ -41,7 +41,7 @@ endif
EXECUTABLES = minissdpd testminissdpd testcodelength \
showminissdpdnotif
MINISSDPDOBJS = minissdpd.o openssdpsocket.o daemonize.o upnputils.o \
- ifacewatch.o getroute.o getifaddr.o asyncsendto.o
+ ifacewatch.o getroute.o getifaddr.o asyncsendto.o ssdpd.o
TESTMINISSDPDOBJS = testminissdpd.o printresponse.o
SHOWMINISSDPDNOTIFOBJS = showminissdpdnotif.o printresponse.o

View File

@@ -0,0 +1,629 @@
--- /dev/null
+++ b/minissdpd/ssdpd.c
@@ -0,0 +1,626 @@
+/*
+ * Copyright (C) 2022 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 Romdhane <amin.benromdhane@iopsys.eu>
+ */
+
+#include <unistd.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdbool.h>
+#include <string.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <sys/un.h>
+#include <net/if.h>
+#include <syslog.h>
+
+#include <curl/curl.h>
+#include <libubox/uloop.h>
+#include <libubox/blobmsg_json.h>
+#include <libubox/list.h>
+#include <libubus.h>
+#include <mxml.h>
+
+#include "codelength.h"
+
+struct UPNPDev {
+ struct list_head list;
+ char *descURL;
+ char *st;
+ char *usn;
+};
+
+struct desc_list_elt {
+ struct list_head list;
+ char *url;
+ char *desc_path;
+ bool is_device_desc;
+};
+
+#define UPNP_DESC_PATH "/etc/upnp/description"
+#define UPNP_DISCOVER_TIMEOUT (30 * 1000)
+
+#ifndef MIN
+#define MIN(a, b) (((a) < (b)) ? (a) : (b))
+#endif /* MIN */
+
+/* macros used to read from unix socket */
+#define READ_BYTE_BUFFER(c) \
+ if ((int)bufferindex >= n) { \
+ n = read(s, buffer, sizeof(buffer)); \
+ if (n <= 0) break; \
+ bufferindex = 0; \
+ } \
+ c = buffer[bufferindex++];
+
+#define READ_COPY_BUFFER(dst, len) \
+ for (l = len, p = (unsigned char *)dst; l > 0; ) { \
+ unsigned int lcopy; \
+ if ((int)bufferindex >= n) { \
+ n = read(s, buffer, sizeof(buffer)); \
+ if ( n<= 0) break; \
+ bufferindex = 0; \
+ } \
+ lcopy = MIN(l, (n - bufferindex)); \
+ memcpy(p, buffer + bufferindex, lcopy); \
+ l -= lcopy; \
+ p += lcopy; \
+ bufferindex += lcopy; \
+ }
+
+LIST_HEAD(dev_list);
+LIST_HEAD(desc_list);
+
+char *ssdp_sockpath = NULL;
+
+static void upnp_discover_devices(struct uloop_timeout *timeout);
+static struct uloop_timeout upnpdiscover_timer = { .cb = upnp_discover_devices };
+
+static void add_dev_to_dev_list(char *descURL, char *st, char *usn)
+{
+ struct UPNPDev *dev = NULL;
+
+ dev = calloc(1, sizeof(struct UPNPDev));
+ list_add_tail(&dev->list, &dev_list);
+
+ dev->descURL = descURL;
+ dev->st = st;
+ dev->usn = usn;
+}
+
+void free_all_dev_list(void)
+{
+ struct UPNPDev *dev = NULL;
+
+ while (dev_list.next != &dev_list) {
+ dev = list_entry(dev_list.next, struct UPNPDev, list);
+ free(dev->descURL);
+ free(dev->st);
+ free(dev->usn);
+ free(dev);
+ list_del(&dev->list);
+ }
+}
+
+static int connectToMiniSSDPD(void)
+{
+ int s = 0;
+ struct sockaddr_un addr;
+
+ s = socket(AF_UNIX, SOCK_STREAM, 0);
+ if(s < 0)
+ return -1;
+
+ char *ssdp_s = ssdp_sockpath ? ssdp_sockpath : "/var/run/minissdpd.sock";
+
+ memset(&addr, 0, sizeof(addr));
+ addr.sun_family = AF_UNIX;
+
+ strncpy(addr.sun_path, ssdp_s, sizeof(addr.sun_path));
+
+ if(connect(s, (struct sockaddr *)&addr, sizeof(struct sockaddr_un)) < 0) {
+ close(s);
+ return -1;
+ }
+
+ return s;
+}
+
+static int disconnectFromMiniSSDPD(int s)
+{
+ if (close(s) < 0)
+ return -1;
+ return 0;
+}
+
+static int requestDevicesFromMiniSSDPD(int s)
+{
+ unsigned char buffer[256];
+ unsigned char *p = NULL;
+ unsigned int stsize = 0, l = 0;
+ char *devtype = "ssdp:all";
+
+ buffer[0] = 3; /* request type 3 : everything */
+ stsize = strlen(devtype);
+
+ p = buffer + 1;
+ l = stsize; CODELENGTH(l, p);
+ if (p + stsize > buffer + sizeof(buffer))
+ return -1;
+
+ memcpy(p, devtype, stsize);
+ p += stsize;
+ if (write(s, buffer, p - buffer) < 0)
+ return -1;
+
+ return 0;
+}
+
+static int receiveDevicesFromMiniSSDPD(int s)
+{
+ unsigned char buffer[256];
+ ssize_t n;
+ unsigned char *p;
+ unsigned int bufferindex;
+ unsigned int i, ndev;
+ unsigned int urlsize, stsize, usnsize, l;
+ char *url, *st, *usn;
+
+ n = read(s, buffer, sizeof(buffer));
+ if (n <= 0)
+ return -1;
+
+ ndev = buffer[0];
+ bufferindex = 1;
+ for (i = 0; i < ndev; i++) {
+ DECODELENGTH_READ(urlsize, READ_BYTE_BUFFER);
+ if (n <= 0)
+ return -1;
+
+ url = (char *)malloc(urlsize);
+ if (url == NULL)
+ return -1;
+
+ READ_COPY_BUFFER(url, urlsize);
+ if (n <= 0)
+ return -1;
+
+ DECODELENGTH_READ(stsize, READ_BYTE_BUFFER);
+ if (n <= 0)
+ goto free_url_and_return;
+
+ st = (char *)malloc(stsize);
+ if (st == NULL)
+ goto free_url_and_return;
+
+ READ_COPY_BUFFER(st, stsize);
+ if (n <= 0)
+ goto free_url_and_st_and_return;
+
+ DECODELENGTH_READ(usnsize, READ_BYTE_BUFFER);
+ if (n <= 0)
+ goto free_url_and_st_and_return;
+
+ usn = (char *)malloc(usnsize);
+ if (usn == NULL)
+ goto free_url_and_st_and_return;
+
+ READ_COPY_BUFFER(usn, usnsize);
+ if (n <= 0)
+ goto free_url_and_st_and_usn_and_return;
+
+ add_dev_to_dev_list(url, st, usn);
+ }
+
+ return 0;
+
+free_url_and_st_and_usn_and_return:
+ free(usn);
+free_url_and_st_and_return:
+ free(st);
+free_url_and_return:
+ free(url);
+ return -1;
+}
+
+static int getDevicesFromMiniSSDPD(void)
+{
+ int s = 0;
+ int res = 0;
+
+ s = connectToMiniSSDPD();
+ if (s < 0)
+ return -1;
+
+ res = requestDevicesFromMiniSSDPD(s);
+ if (res < 0)
+ goto close_socket_and_return;
+
+ res = receiveDevicesFromMiniSSDPD(s);
+
+close_socket_and_return:
+ disconnectFromMiniSSDPD(s);
+
+ return res;
+}
+
+static void download_file(char *file_path, const char *url)
+{
+ CURL *curl = curl_easy_init();
+ if (curl) {
+ curl_easy_setopt(curl, CURLOPT_URL, url);
+ curl_easy_setopt(curl, CURLOPT_TIMEOUT, 500);
+
+ FILE *fp = fopen(file_path, "wb");
+ if (fp) {
+ curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp);
+ curl_easy_perform(curl);
+ fclose(fp);
+ }
+
+ curl_easy_cleanup(curl);
+ }
+}
+
+static bool is_desc_exist(const char *desc_url)
+{
+ struct desc_list_elt *desc_elt = NULL;
+
+ if (!desc_url)
+ return false;
+
+ list_for_each_entry(desc_elt, &desc_list, list) {
+ if (strcmp(desc_elt->url, desc_url) == 0)
+ return true;
+ }
+
+ return false;
+}
+
+static void get_desc_name(const char *desc_url, char *str, size_t len)
+{
+ if (!desc_url || !str || len == 0)
+ return;
+
+ char *p = strstr(desc_url, "://");
+
+ snprintf(str, len, "%s", p ? p + 3 : desc_url);
+
+ for (int i = 0; str[i]; i++) {
+ if (str[i] == '/')
+ str[i] = '_';
+ }
+}
+
+static void add_desc_to_desc_list(const char *desc_path, const char *url, int is_device_desc)
+{
+ struct desc_list_elt *desc_elt;
+
+ desc_elt = calloc(1, sizeof(struct desc_list_elt));
+ list_add_tail(&desc_elt->list, &desc_list);
+
+ desc_elt->desc_path = strdup(desc_path);
+ desc_elt->url = strdup(url);
+ desc_elt->is_device_desc = is_device_desc;
+}
+
+static void free_all_desc_list(void)
+{
+ struct desc_list_elt *desc_elt = NULL;
+
+ while (desc_list.next != &desc_list) {
+ desc_elt = list_entry(desc_list.next, struct desc_list_elt, list);
+ free(desc_elt->desc_path);
+ free(desc_elt->url);
+ free(desc_elt);
+ list_del(&desc_elt->list);
+ }
+}
+
+static void __upnp_discover_devices(void)
+{
+ struct UPNPDev *dev = NULL;
+ char desc_name[128] = {0};
+ char file_path[256] = {0};
+ int res = 0, is_device_desc = 0;
+
+ /*
+ * Discover devices
+ */
+ if (!list_empty(&dev_list))
+ free_all_dev_list();
+
+ res = getDevicesFromMiniSSDPD();
+ if (res)
+ goto end;
+
+ /*
+ * Download description files
+ */
+ list_for_each_entry_reverse(dev, &dev_list, list) {
+
+ if (is_desc_exist(dev->descURL))
+ continue;
+
+ get_desc_name(dev->descURL, desc_name, sizeof(desc_name));
+ snprintf(file_path, sizeof(file_path), "%s/%s", UPNP_DESC_PATH, desc_name);
+ is_device_desc = (dev->usn && strstr(dev->usn, ":service:")) ? 0 : 1;
+
+ // Download Description
+ download_file(file_path, dev->descURL);
+
+ // Add description to descriptions list
+ add_desc_to_desc_list(file_path, dev->descURL, is_device_desc);
+ }
+
+end:
+ uloop_timeout_set(&upnpdiscover_timer, UPNP_DISCOVER_TIMEOUT);
+}
+
+static int upnp_discovery_res(struct ubus_context *ctx, struct ubus_object *obj __attribute__((unused)),
+ struct ubus_request_data *req, const char *method __attribute__((unused)), struct blob_attr *msg __attribute__((unused)))
+{
+ struct blob_buf bb = {0};
+ struct UPNPDev *dev = NULL;
+
+ memset(&bb,0,sizeof(struct blob_buf));
+ blob_buf_init(&bb, 0);
+
+ void *devices_array = blobmsg_open_array(&bb, "devices");
+ list_for_each_entry_reverse(dev, &dev_list, list) {
+ // Parse Root device and devices
+ if ((dev->st && strstr(dev->st, ":rootdevice") != NULL) || (dev->usn && strstr(dev->usn, ":device:") != NULL)) {
+ void *device_obj = blobmsg_open_table(&bb, NULL);
+ blobmsg_add_string(&bb, "descurl", dev->descURL);
+ blobmsg_add_string(&bb, "st", dev->st);
+ blobmsg_add_string(&bb, "usn", dev->usn);
+ blobmsg_add_string(&bb, "is_root_device", dev->st && strstr(dev->st, ":rootdevice") ? "1" : "0");
+ blobmsg_close_table(&bb, device_obj);
+ }
+ }
+ blobmsg_close_array(&bb, devices_array);
+
+ void *services_array = blobmsg_open_array(&bb, "services");
+ list_for_each_entry_reverse(dev, &dev_list, list) {
+ // Parse Services
+ if (dev->usn && strstr(dev->usn, ":service:") != NULL) {
+ void *service_obj = blobmsg_open_table(&bb, NULL);
+ blobmsg_add_string(&bb, "descurl", dev->descURL);
+ blobmsg_add_string(&bb, "st", dev->st);
+ blobmsg_add_string(&bb, "usn", dev->usn);
+ blobmsg_close_table(&bb, service_obj);
+ }
+ }
+ blobmsg_close_array(&bb, services_array);
+
+ ubus_send_reply(ctx, req, bb.head);
+ blob_buf_free(&bb);
+ return 0;
+}
+
+static void fill_device_instances(struct blob_buf *bb, mxml_node_t *device)
+{
+ void *device_obj = NULL;
+ mxml_node_t *b = device;
+ char buf[64] = {0};
+ bool new_device_discovery = false;
+
+ while (b) {
+
+ if (mxmlGetType(b) != MXML_ELEMENT) {
+ b = mxmlWalkNext(b, device, MXML_DESCEND);
+ continue;
+ }
+
+ const char *elm_name = mxmlGetElement(b);
+ const char *elm_val = mxmlGetOpaque(b);
+
+ if (elm_name && strcmp(elm_name, "device") == 0) {
+
+ if (new_device_discovery && device_obj)
+ blobmsg_close_table(bb, device_obj);
+
+ device_obj = blobmsg_open_table(bb, NULL);
+ blobmsg_add_string(bb, "parent_dev", buf);
+ new_device_discovery = true;
+ }
+
+ if (elm_name && strcmp(elm_name, "deviceType") == 0 && new_device_discovery)
+ blobmsg_add_string(bb, "deviceType", elm_val ? elm_val : "");
+
+ if (elm_name && strcmp(elm_name, "friendlyName") == 0 && new_device_discovery)
+ blobmsg_add_string(bb, "friendlyName", elm_val ? elm_val : "");
+
+ if (elm_name && strcmp(elm_name, "manufacturer") == 0 && new_device_discovery)
+ blobmsg_add_string(bb, "manufacturer", elm_val ? elm_val : "");
+
+ if (elm_name && strcmp(elm_name, "manufacturerURL") == 0 && new_device_discovery)
+ blobmsg_add_string(bb, "manufacturerURL", elm_val ? elm_val : "");
+
+ if (elm_name && strcmp(elm_name, "modelDescription") == 0 && new_device_discovery)
+ blobmsg_add_string(bb, "modelDescription", elm_val ? elm_val : "");
+
+ if (elm_name && strcmp(elm_name, "modelName") == 0 && new_device_discovery)
+ blobmsg_add_string(bb, "modelName", elm_val ? elm_val : "");
+
+ if (elm_name && strcmp(elm_name, "modelNumber") == 0 && new_device_discovery)
+ blobmsg_add_string(bb, "modelNumber", elm_val ? elm_val : "");
+
+ if (elm_name && strcmp(elm_name, "modelURL") == 0 && new_device_discovery)
+ blobmsg_add_string(bb, "modelURL", elm_val ? elm_val : "");
+
+ if (elm_name && strcmp(elm_name, "serialNumber") == 0 && new_device_discovery)
+ blobmsg_add_string(bb, "serialNumber", elm_val ? elm_val : "");
+
+ if (elm_name && strcmp(elm_name, "UDN") == 0 && new_device_discovery) {
+ snprintf(buf, sizeof(buf), "%s", elm_val ? elm_val : "");
+ blobmsg_add_string(bb, "UDN", buf);
+ }
+
+ if (elm_name && strcmp(elm_name, "UPC") == 0 && new_device_discovery)
+ blobmsg_add_string(bb, "UPC", elm_val ? elm_val : "");
+
+ b = mxmlWalkNext(b, device, MXML_DESCEND);
+ }
+
+ if (new_device_discovery && device_obj)
+ blobmsg_close_table(bb, device_obj);
+}
+
+static void fill_service_element(struct blob_buf *bb, mxml_node_t *service)
+{
+ mxml_node_t *b = service;
+ void *service_obj = NULL;
+ char buf[64] = {0};
+ bool new_srv_discovery = false;
+
+ while (b) {
+
+ if (mxmlGetType(b) != MXML_ELEMENT) {
+ b = mxmlWalkNext(b, service, MXML_DESCEND);
+ continue;
+ }
+
+ const char *elm_name = mxmlGetElement(b);
+ const char *elm_val = mxmlGetOpaque(b);
+
+ if (elm_name && strcmp(elm_name, "UDN") == 0)
+ snprintf(buf, sizeof(buf), "%s", elm_val ? elm_val : "");
+
+
+ if (elm_name && strcmp(elm_name, "service") == 0) {
+
+ if (new_srv_discovery && service_obj)
+ blobmsg_close_table(bb, service_obj);
+
+ service_obj = blobmsg_open_table(bb, NULL);
+ blobmsg_add_string(bb, "parent_dev", buf);
+ new_srv_discovery = true;
+ }
+
+ if (elm_name && strcmp(elm_name, "serviceType") == 0 && new_srv_discovery)
+ blobmsg_add_string(bb, "serviceType", elm_val ? elm_val : "");
+
+ if (elm_name && strcmp(elm_name, "serviceId") == 0 && new_srv_discovery)
+ blobmsg_add_string(bb, "serviceId", elm_val ? elm_val : "");
+
+ if (elm_name && strcmp(elm_name, "SCPDURL") == 0 && new_srv_discovery)
+ blobmsg_add_string(bb, "SCPDURL", elm_val ? elm_val : "");
+
+ if (elm_name && strcmp(elm_name, "controlURL") == 0 && new_srv_discovery)
+ blobmsg_add_string(bb, "controlURL", elm_val ? elm_val : "");
+
+ if (elm_name && strcmp(elm_name, "eventSubURL") == 0 && new_srv_discovery)
+ blobmsg_add_string(bb, "eventSubURL", elm_val ? elm_val : "");
+
+ b = mxmlWalkNext(b, service, MXML_DESCEND);
+ }
+
+ if (new_srv_discovery && service_obj)
+ blobmsg_close_table(bb, service_obj);
+}
+
+static int upnp_description_res(struct ubus_context *ctx, struct ubus_object *obj __attribute__((unused)),
+ struct ubus_request_data *req, const char *method __attribute__((unused)), struct blob_attr *msg __attribute__((unused)))
+{
+ struct desc_list_elt *desc_elt = NULL;
+ struct blob_buf bb = {0};
+
+ memset(&bb,0,sizeof(struct blob_buf));
+ blob_buf_init(&bb, 0);
+
+ void *desc_array = blobmsg_open_array(&bb, "descriptions");
+ list_for_each_entry(desc_elt, &desc_list, list) {
+ void *device_obj = blobmsg_open_table(&bb, NULL);
+ blobmsg_add_string(&bb, "desc_url", desc_elt->url);
+ blobmsg_add_u32(&bb, "is_device_desc", desc_elt->is_device_desc);
+ blobmsg_close_table(&bb, device_obj);
+
+ }
+ blobmsg_close_array(&bb, desc_array);
+
+ list_for_each_entry(desc_elt, &desc_list, list) {
+
+ FILE *fp = fopen(desc_elt->desc_path, "r");
+ if (!fp)
+ continue;
+
+ mxml_node_t *tree = mxmlLoadFile(NULL, fp, MXML_OPAQUE_CALLBACK);
+ fclose(fp);
+
+ if (tree) {
+ void *devices_array = blobmsg_open_array(&bb, "devices");
+ mxml_node_t *device = mxmlFindElement(tree, tree, "device", NULL, NULL, MXML_DESCEND);
+ fill_device_instances(&bb, device);
+ blobmsg_close_array(&bb, devices_array);
+
+ void *services_array = blobmsg_open_array(&bb, "services");
+ mxml_node_t *service = mxmlFindElement(tree, tree, "device", NULL, NULL, MXML_DESCEND);
+ fill_service_element(&bb, service);
+ blobmsg_close_array(&bb, services_array);
+
+ mxmlDelete(tree);
+ }
+ }
+
+ ubus_send_reply(ctx, req, bb.head);
+ blob_buf_free(&bb);
+ return 0;
+}
+
+static struct ubus_method upnp_methods[] = {
+ UBUS_METHOD_NOARG("discovery", upnp_discovery_res),
+ UBUS_METHOD_NOARG("description", upnp_description_res),
+};
+
+static struct ubus_object_type upnp_type = UBUS_OBJECT_TYPE("upnp", upnp_methods);
+
+static void upnp_discover_devices(struct uloop_timeout *timeout __attribute__((unused)))
+{
+ __upnp_discover_devices();
+}
+
+static struct ubus_object upnp_object = {
+ .name = "upnp",
+ .type = &upnp_type,
+ .methods = upnp_methods,
+ .n_methods = ARRAY_SIZE(upnp_methods),
+};
+
+void upnp_thread_discover_devices(void)
+{
+ struct ubus_context *ctx = NULL;
+ const char *ubus_socket = NULL;
+ int ret = 0;
+
+ uloop_init();
+
+ ctx = ubus_connect(ubus_socket);
+ if (!ctx) {
+ syslog(LOG_ERR, "Failed to connect to ubus\n");
+ return;
+ }
+
+ ubus_add_uloop(ctx);
+
+ __upnp_discover_devices();
+
+ ret = ubus_add_object(ctx, &upnp_object);
+ if (ret) {
+ syslog(LOG_ERR, "Failed to add 'upnp' ubus object: %s\n", ubus_strerror(ret));
+ goto end;
+ }
+
+ uloop_run();
+
+end:
+ free_all_desc_list();
+ free_all_dev_list();
+ uloop_done();
+ ubus_free(ctx);
+}

View File

@@ -0,0 +1,420 @@
--- a/minissdpd/minissdpd.c
+++ b/minissdpd/minissdpd.c
@@ -32,6 +32,8 @@
#include <pwd.h>
#include <grp.h>
#endif
+/* for uloop thread */
+#include <pthread.h>
/* LOG_PERROR does not exist on Solaris */
#ifndef LOG_PERROR
@@ -52,6 +54,10 @@
#define MIN(x,y) (((x)<(y))?(x):(y))
#endif
+extern char *ssdp_sockpath;
+void upnp_thread_discover_devices(void);
+void ssdpd_ubus_stop(void);
+
/* current request management structure */
struct reqelem {
int socket;
@@ -1220,6 +1226,12 @@ static void ssdpDiscover(int s, int ipv6
}
}
+static void *thread_discover_devices(void *args __attribute__((unused)))
+{
+ upnp_thread_discover_devices();
+ return NULL;
+}
+
/* main(): program entry point */
int main(int argc, char * * argv)
{
@@ -1264,6 +1276,7 @@ int main(int argc, char * * argv)
unsigned char ttl = 2; /* UDA says it should default to 2 */
const char * searched_device = NULL; /* if not NULL, search/filter a specific device type */
int opt;
+ pthread_t upnp_thread;
LIST_INIT(&reqlisthead);
LIST_INIT(&servicelisthead);
@@ -1309,6 +1322,7 @@ int main(int argc, char * * argv)
break;
case 's':
sockpath = optarg;
+ ssdp_sockpath = optarg;
break;
#ifndef NO_BACKGROUND_NO_PIDFILE
case 'p':
@@ -1496,6 +1510,11 @@ int main(int argc, char * * argv)
if(s_ssdp6 >= 0)
ssdpDiscover(s_ssdp6, 1, searched_device);
+ int err = pthread_create(&upnp_thread, NULL, &thread_discover_devices, NULL);
+ if (err < 0) {
+ syslog(LOG_ERR, "Error when creating upnp thread");
+ }
+
/* Main loop */
while(!quitting) {
/* fill readfds fd_set */
@@ -1704,6 +1723,8 @@ quit:
if(unlink(pidfilename) < 0)
syslog(LOG_ERR, "unlink(%s): %m", pidfilename);
#endif
+ ssdpd_ubus_stop();
+ pthread_join(upnp_thread, NULL);
closelog();
return ret;
}
--- a/minissdpd/ssdpd.c
+++ b/minissdpd/ssdpd.c
@@ -39,10 +39,9 @@ struct desc_list_elt {
struct list_head list;
char *url;
char *desc_path;
- bool is_device_desc;
};
-#define UPNP_DESC_PATH "/etc/upnp/description"
+#define UPNP_DESC_PATH "/tmp/ssdp/description"
#define UPNP_DISCOVER_TIMEOUT (30 * 1000)
#ifndef MIN
@@ -93,17 +92,41 @@ static void add_dev_to_dev_list(char *de
dev->usn = usn;
}
-void free_all_dev_list(void)
+static void free_all_dev_list(void)
{
struct UPNPDev *dev = NULL;
+ struct UPNPDev *dev_tmp = NULL;
- while (dev_list.next != &dev_list) {
- dev = list_entry(dev_list.next, struct UPNPDev, list);
+ list_for_each_entry_safe(dev, dev_tmp, &dev_list, list) {
+ list_del(&dev->list);
free(dev->descURL);
free(dev->st);
free(dev->usn);
free(dev);
- list_del(&dev->list);
+ }
+}
+
+static void add_desc_to_desc_list(const char *desc_path, const char *url)
+{
+ struct desc_list_elt *desc_elt;
+
+ desc_elt = calloc(1, sizeof(struct desc_list_elt));
+ list_add_tail(&desc_elt->list, &desc_list);
+
+ desc_elt->desc_path = strdup(desc_path);
+ desc_elt->url = strdup(url);
+}
+
+static void free_all_desc_list(void)
+{
+ struct desc_list_elt *desc_elt = NULL;
+ struct desc_list_elt *desc_elt_tmp = NULL;
+
+ list_for_each_entry_safe(desc_elt, desc_elt_tmp, &desc_list, list) {
+ list_del(&desc_elt->list);
+ free(desc_elt->desc_path);
+ free(desc_elt->url);
+ free(desc_elt);
}
}
@@ -167,8 +190,8 @@ static int receiveDevicesFromMiniSSDPD(i
ssize_t n;
unsigned char *p;
unsigned int bufferindex;
- unsigned int i, ndev;
- unsigned int urlsize, stsize, usnsize, l;
+ unsigned int i = 0, ndev = 0;
+ unsigned int urlsize = 0, stsize = 0, usnsize = 0, l = 0;
char *url, *st, *usn;
n = read(s, buffer, sizeof(buffer));
@@ -182,11 +205,12 @@ static int receiveDevicesFromMiniSSDPD(i
if (n <= 0)
return -1;
- url = (char *)malloc(urlsize);
+ url = (char *)calloc(urlsize + 1, sizeof(char));
if (url == NULL)
return -1;
READ_COPY_BUFFER(url, urlsize);
+ url[urlsize] = 0;
if (n <= 0)
return -1;
@@ -194,11 +218,12 @@ static int receiveDevicesFromMiniSSDPD(i
if (n <= 0)
goto free_url_and_return;
- st = (char *)malloc(stsize);
+ st = (char *)calloc(stsize + 1, sizeof(char));
if (st == NULL)
goto free_url_and_return;
READ_COPY_BUFFER(st, stsize);
+ st[stsize] = 0;
if (n <= 0)
goto free_url_and_st_and_return;
@@ -206,11 +231,12 @@ static int receiveDevicesFromMiniSSDPD(i
if (n <= 0)
goto free_url_and_st_and_return;
- usn = (char *)malloc(usnsize);
+ usn = (char *)calloc(usnsize + 1, sizeof(char));
if (usn == NULL)
goto free_url_and_st_and_return;
READ_COPY_BUFFER(usn, usnsize);
+ usn[usnsize] = 0;
if (n <= 0)
goto free_url_and_st_and_usn_and_return;
@@ -282,6 +308,21 @@ static bool is_desc_exist(const char *de
return false;
}
+static bool is_device_exist(const char *dev_url)
+{
+ struct UPNPDev *dev = NULL;
+
+ if (!dev_url)
+ return false;
+
+ list_for_each_entry(dev, &dev_list, list) {
+ if (strcmp(dev->descURL, dev_url) == 0)
+ return true;
+ }
+
+ return false;
+}
+
static void get_desc_name(const char *desc_url, char *str, size_t len)
{
if (!desc_url || !str || len == 0)
@@ -297,37 +338,14 @@ static void get_desc_name(const char *de
}
}
-static void add_desc_to_desc_list(const char *desc_path, const char *url, int is_device_desc)
-{
- struct desc_list_elt *desc_elt;
-
- desc_elt = calloc(1, sizeof(struct desc_list_elt));
- list_add_tail(&desc_elt->list, &desc_list);
-
- desc_elt->desc_path = strdup(desc_path);
- desc_elt->url = strdup(url);
- desc_elt->is_device_desc = is_device_desc;
-}
-
-static void free_all_desc_list(void)
-{
- struct desc_list_elt *desc_elt = NULL;
-
- while (desc_list.next != &desc_list) {
- desc_elt = list_entry(desc_list.next, struct desc_list_elt, list);
- free(desc_elt->desc_path);
- free(desc_elt->url);
- free(desc_elt);
- list_del(&desc_elt->list);
- }
-}
-
static void __upnp_discover_devices(void)
{
+ struct desc_list_elt *desc_elt = NULL;
+ struct desc_list_elt *desc_elt_tmp = NULL;
struct UPNPDev *dev = NULL;
char desc_name[128] = {0};
char file_path[256] = {0};
- int res = 0, is_device_desc = 0;
+ int res = 0;
/*
* Discover devices
@@ -349,13 +367,26 @@ static void __upnp_discover_devices(void
get_desc_name(dev->descURL, desc_name, sizeof(desc_name));
snprintf(file_path, sizeof(file_path), "%s/%s", UPNP_DESC_PATH, desc_name);
- is_device_desc = (dev->usn && strstr(dev->usn, ":service:")) ? 0 : 1;
// Download Description
download_file(file_path, dev->descURL);
// Add description to descriptions list
- add_desc_to_desc_list(file_path, dev->descURL, is_device_desc);
+ add_desc_to_desc_list(file_path, dev->descURL);
+ }
+
+ /*
+ * Remove unused descriptions
+ */
+ list_for_each_entry_safe(desc_elt, desc_elt_tmp, &desc_list, list) {
+
+ if (is_device_exist(desc_elt->url))
+ continue;
+
+ list_del(&desc_elt->list);
+ free(desc_elt->desc_path);
+ free(desc_elt->url);
+ free(desc_elt);
}
end:
@@ -371,15 +402,27 @@ static int upnp_discovery_res(struct ubu
memset(&bb,0,sizeof(struct blob_buf));
blob_buf_init(&bb, 0);
+ void *root_devices_array = blobmsg_open_array(&bb, "root_devices");
+ list_for_each_entry_reverse(dev, &dev_list, list) {
+ // Parse root device
+ if (dev->st && strstr(dev->st, ":rootdevice") != NULL) {
+ void *device_obj = blobmsg_open_table(&bb, NULL);
+ blobmsg_add_string(&bb, "descurl", dev->descURL);
+ blobmsg_add_string(&bb, "st", dev->st);
+ blobmsg_add_string(&bb, "usn", dev->usn);
+ blobmsg_close_table(&bb, device_obj);
+ }
+ }
+ blobmsg_close_array(&bb, root_devices_array);
+
void *devices_array = blobmsg_open_array(&bb, "devices");
list_for_each_entry_reverse(dev, &dev_list, list) {
- // Parse Root device and devices
- if ((dev->st && strstr(dev->st, ":rootdevice") != NULL) || (dev->usn && strstr(dev->usn, ":device:") != NULL)) {
+ // Parse devices
+ if (dev->usn && strstr(dev->usn, ":device:") != NULL) {
void *device_obj = blobmsg_open_table(&bb, NULL);
blobmsg_add_string(&bb, "descurl", dev->descURL);
blobmsg_add_string(&bb, "st", dev->st);
blobmsg_add_string(&bb, "usn", dev->usn);
- blobmsg_add_string(&bb, "is_root_device", dev->st && strstr(dev->st, ":rootdevice") ? "1" : "0");
blobmsg_close_table(&bb, device_obj);
}
}
@@ -472,7 +515,7 @@ static void fill_device_instances(struct
blobmsg_close_table(bb, device_obj);
}
-static void fill_service_element(struct blob_buf *bb, mxml_node_t *service)
+static void fill_service_instances(struct blob_buf *bb, mxml_node_t *service)
{
mxml_node_t *b = service;
void *service_obj = NULL;
@@ -525,6 +568,32 @@ static void fill_service_element(struct
blobmsg_close_table(bb, service_obj);
}
+static void fill_device_service_instances(struct blob_buf *bb, bool is_device)
+{
+ struct desc_list_elt *desc_elt = NULL;
+
+ list_for_each_entry(desc_elt, &desc_list, list) {
+
+ FILE *fp = fopen(desc_elt->desc_path, "r");
+ if (!fp)
+ continue;
+
+ mxml_node_t *tree = mxmlLoadFile(NULL, fp, MXML_OPAQUE_CALLBACK);
+ fclose(fp);
+
+ if (tree) {
+ mxml_node_t *node = mxmlFindElement(tree, tree, "device", NULL, NULL, MXML_DESCEND);
+
+ if (is_device)
+ fill_device_instances(bb, node);
+ else
+ fill_service_instances(bb, node);
+
+ mxmlDelete(tree);
+ }
+ }
+}
+
static int upnp_description_res(struct ubus_context *ctx, struct ubus_object *obj __attribute__((unused)),
struct ubus_request_data *req, const char *method __attribute__((unused)), struct blob_attr *msg __attribute__((unused)))
{
@@ -534,39 +603,25 @@ static int upnp_description_res(struct u
memset(&bb,0,sizeof(struct blob_buf));
blob_buf_init(&bb, 0);
+ // Descriptions Array
void *desc_array = blobmsg_open_array(&bb, "descriptions");
list_for_each_entry(desc_elt, &desc_list, list) {
void *device_obj = blobmsg_open_table(&bb, NULL);
blobmsg_add_string(&bb, "desc_url", desc_elt->url);
- blobmsg_add_u32(&bb, "is_device_desc", desc_elt->is_device_desc);
blobmsg_close_table(&bb, device_obj);
}
blobmsg_close_array(&bb, desc_array);
- list_for_each_entry(desc_elt, &desc_list, list) {
-
- FILE *fp = fopen(desc_elt->desc_path, "r");
- if (!fp)
- continue;
-
- mxml_node_t *tree = mxmlLoadFile(NULL, fp, MXML_OPAQUE_CALLBACK);
- fclose(fp);
-
- if (tree) {
- void *devices_array = blobmsg_open_array(&bb, "devices");
- mxml_node_t *device = mxmlFindElement(tree, tree, "device", NULL, NULL, MXML_DESCEND);
- fill_device_instances(&bb, device);
- blobmsg_close_array(&bb, devices_array);
-
- void *services_array = blobmsg_open_array(&bb, "services");
- mxml_node_t *service = mxmlFindElement(tree, tree, "device", NULL, NULL, MXML_DESCEND);
- fill_service_element(&bb, service);
- blobmsg_close_array(&bb, services_array);
+ // Devices Array
+ void *devices_array = blobmsg_open_array(&bb, "devices");
+ fill_device_service_instances(&bb, true);
+ blobmsg_close_array(&bb, devices_array);
- mxmlDelete(tree);
- }
- }
+ // Services Array
+ void *services_array = blobmsg_open_array(&bb, "services");
+ fill_device_service_instances(&bb, false);
+ blobmsg_close_array(&bb, services_array);
ubus_send_reply(ctx, req, bb.head);
blob_buf_free(&bb);
@@ -624,3 +679,9 @@ end:
uloop_done();
ubus_free(ctx);
}
+
+void ssdpd_ubus_stop(void)
+{
+ uloop_end();
+}
+
--- a/minissdpd/config.h
+++ b/minissdpd/config.h
@@ -32,7 +32,7 @@
/* When NO_BACKGROUND_NO_PIDFILE is defined, minissdpd does not go to
* background and does not create any pidfile */
-/*#define NO_BACKGROUND_NO_PIDFILE*/
+#define NO_BACKGROUND_NO_PIDFILE
/* define HAVE_IP_MREQN to use struct ip_mreqn instead of struct ip_mreq
* for setsockopt(IP_MULTICAST_IF). Available with Linux 2.4+,

View File

@@ -9,13 +9,13 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=stunc
PKG_RELEASE:=1
PKG_VERSION:=1.1.11
PKG_VERSION:=1.1.12
LOCAL_DEV:=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/stunc.git
PKG_SOURCE_VERSION:=5afef8d2040fa31a73e6320c8a65b891a88518de
PKG_SOURCE_VERSION:=5b65364709a921db0956bf74a4f126217cfb1775
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_MIRROR_HASH:=skip
endif
@@ -64,19 +64,16 @@ TARGET_CFLAGS += \
-Wall -Werror
ifeq ($(BUILD_VARIANT),wolfssl)
TARGET_CFLAGS += -I$(STAGING_DIR)/usr/include/wolfssl
MAKE_FLAGS += \
USE_WOLFSSL="yes"
endif
ifeq ($(BUILD_VARIANT),mbedtls)
TARGET_CFLAGS += -I$(STAGING_DIR)/usr/include/mbedtls
MAKE_FLAGS += \
USE_MBEDTLS="yes"
endif
ifeq ($(BUILD_VARIANT),openssl)
TARGET_CFLAGS += -I$(STAGING_DIR)/usr/include/
MAKE_FLAGS += \
USE_OPENSSL="yes"
endif

View File

@@ -1,15 +1,15 @@
#
# Copyright (C) 2021 IOPSYS
# Copyright (C) 2021-2022 IOPSYS
#
include $(TOPDIR)/rules.mk
PKG_NAME:=sulu
PKG_VERSION:=1.0.12
PKG_VERSION:=1.3.26
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://dev.iopsys.eu/websdk/sulu.git
PKG_SOURCE_VERSION:=fc82a32ab3cdcb18dc3aa7b907c62d8bed29b4ff
PKG_SOURCE_VERSION:=6d6848119bffdbe0ec9b8116caf6375749299dc0
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_SOURCE_VERSION)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_VERSION).tar.gz
@@ -26,9 +26,8 @@ include $(INCLUDE_DIR)/package.mk
define Package/sulu
SECTION:=sulu
CATEGORY:=Utilities
MENU=1
TITLE:=SULU-CE ReactJS based Web UI Package
DEPENDS:=+nginx
DEPENDS:=+nginx +mosquitto-auth-shadow
endef
define Package/sulu/description
@@ -38,9 +37,16 @@ endef
define Package/sulu/install
$(INSTALL_DIR) $(1)/sulu
$(INSTALL_DIR) $(1)/sulu/config
$(INSTALL_DIR) $(1)/sulu/config/widgets
$(INSTALL_DIR) $(1)/etc/nginx/
$(INSTALL_DIR) $(1)/etc/mosquitto/conf.d/
$(CP) $(PKG_BUILD_DIR)/dist/* $(1)/sulu
$(CP) $(PKG_BUILD_DIR)/config/* $(1)/sulu/config
$(CP) $(PKG_BUILD_DIR)/config/*.json $(1)/sulu/config
$(CP) $(PKG_BUILD_DIR)/config/widgets/diagnostics.json $(1)/sulu/config/widgets/
$(CP) $(PKG_BUILD_DIR)/config/widgets/wan.json $(1)/sulu/config/widgets/
ifeq ($(CONFIG_PACKAGE_skopeo)$(CONFIG_PACKAGE_umoci),yy)
$(CP) $(PKG_BUILD_DIR)/config/widgets/lcm-store.json $(1)/sulu/config/widgets/
endif
$(CP) ./files/* $(1)/
endef

View File

@@ -0,0 +1,3 @@
listener 1883 127.0.0.1
allow_anonymous true

View File

@@ -0,0 +1,5 @@
listener 9001
protocol websockets
plugin /usr/lib/mosquitto_auth_shadow.so
require_certificate false
allow_anonymous false

View File

@@ -6,7 +6,7 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=swmodd
PKG_VERSION:=2.1.5
PKG_VERSION:=2.1.5.1
LOCAL_DEV:=0
ifneq ($(LOCAL_DEV),1)
@@ -31,8 +31,9 @@ define Package/swmodd
SUBMENU:=TRx69
TITLE:= Software Modules Daemon
DEPENDS:=+libuci +libubox +ubus +libuuid +opkg +libcurl \
+PACKAGE_liblxc:liblxc +PACKAGE_liblxc:cgroupfs-mount \
+@BUSYBOX_CONFIG_BUSYBOX +@BUSYBOX_CONFIG_FEATURE_SHOW_SCRIPT
+PACKAGE_liblxc:liblxc +@BUSYBOX_CONFIG_BUSYBOX \
+@BUSYBOX_CONFIG_FEATURE_SHOW_SCRIPT +@BUSYBOX_CONFIG_SCRIPT \
+swmodd-cgroup
endef
define Package/swmodd/description
@@ -43,6 +44,14 @@ define Package/swmodd/config
source "$(SOURCE)/Config.in"
endef
define Package/swmodd-cgroup
SECTION:=utils
CATEGORY:=Utilities
SUBMENU:=TRx69
TITLE:= Cgroup mount handler for Software modules daemon
DEPENDS:=+@CONFIG_KERNEL_CGROUPS
endef
TARGET_CFLAGS += \
-I$(STAGING_DIR)/usr/include \
-D_GNU_SOURCE \
@@ -82,4 +91,10 @@ ifeq ($(CONFIG_PACKAGE_liblxc),y)
endif
endef
define Package/swmodd-cgroup/install
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) ./files/etc/init.d/swmodd_cgroup $(1)/etc/init.d/swmodd_cgroup
endef
$(eval $(call BuildPackage,swmodd-cgroup))
$(eval $(call BuildPackage,swmodd))

View File

@@ -0,0 +1,56 @@
#!/bin/sh /etc/rc.common
START=01
log() {
echo "swmodd_cgroup: ${@}" >/dev/console
}
cgroup_remounting_required()
{
if ! mount |grep -q '/sys/fs/cgroup '; then
return 1;
fi
if grep -v '^#' /etc/fstab | grep -q cgroup; then
log "fstab mounted system, remounting of cgroup not required"
return 1
fi
if [ ! -d /sys/fs/cgroup ] && [ ! -e /proc/cgroups ]; then
log "cgroup fs not found"
return 1
fi
umount /sys/fs/cgroup
return 0;
}
mount_cgroup()
{
if ! cgroup_remounting_required; then
log "cgroup remounting not required"
return 1
fi
mount -t tmpfs -o uid=0,gid=0,mode=0755 cgroup /sys/fs/cgroup
cd /sys/fs/cgroup
for sys in $(awk '!/^#/ { if ($4 == 1) print $1 }' /proc/cgroups); do
mkdir -p $sys
if ! mountpoint -q $sys; then
if ! mount -n -t cgroup -o $sys cgroup $sys; then
rm -f $sys || true
fi
fi
done
if [ -e /sys/fs/cgroup/memory/memory.use_hierarchy ]; then
echo 1 > /sys/fs/cgroup/memory/memory.use_hierarchy
fi
}
boot()
{
mount_cgroup
}

View File

@@ -6,13 +6,13 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=twamp
PKG_VERSION:=1.2.0
PKG_VERSION:=1.2.2
LOCAL_DEV:=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/twamp-light.git
PKG_SOURCE_VERSION:=4dfc8609fb0cefaaf9e86b559b1e10488117cf07
PKG_SOURCE_VERSION:=b0111c35ff4908edd82c5d5f4a3c0d6809605b94
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_MIRROR_HASH:=skip
endif
@@ -41,7 +41,7 @@ TARGET_CFLAGS += \
ifeq ($(LOCAL_DEV),1)
define Build/Prepare
$(CP) -rf ~/git/twamp/* $(PKG_BUILD_DIR)/
$(CP) -rf ~/git/twamp-light/* $(PKG_BUILD_DIR)/
endef
endif
@@ -58,6 +58,7 @@ define Package/$(PKG_NAME)/install
$(INSTALL_BIN) ./files/etc/init.d/twampd $(1)/etc/init.d/twampd
$(INSTALL_BIN) ./files/etc/firewall.twamp $(1)/etc/firewall.twamp
$(INSTALL_BIN) ./files/etc/uci-defaults/92-twampfirewall $(1)/etc/uci-defaults/92-twampfirewall
$(INSTALL_BIN) ./files/etc/uci-defaults/93-twamp_fix_reflector $(1)/etc/uci-defaults/93-twamp_fix_reflector
endef
$(eval $(call BuildPackage,$(PKG_NAME)))

View File

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

View File

@@ -29,8 +29,11 @@ function configure_firewall()
function delete_rule()
{
while iptables -w 1 -L zone_${1}_input --line-numbers | grep "TWAMP reflector port" > /dev/null; do
iptables -w 1 -D zone_${1}_input $(iptables -w 1 -L zone_${1}_input --line-numbers | grep "TWAMP reflector port" | head -1|awk '{print $1}');
while iptables -w 1 -L zone_${1}_input --line-numbers 2>/dev/null | grep "TWAMP reflector port"; do
rule_num="$(iptables -w 1 -L zone_${1}_input --line-numbers | grep "TWAMP reflector port" | head -1|awk '{print $1}')"
if [ -n "${rule_num}" ]; then
iptables -w 1 -D zone_${1}_input ${rule_num};
fi
done
}

View File

@@ -0,0 +1,22 @@
#!/bin/sh
. /lib/functions.sh
function rename_section()
{
local enable inst
config_get interface ${1} interface ""
if [ -z "${interface}" ]; then
return 0
fi
inst="$(echo ${1}|cut -d '_' -f 2)"
uci_rename twamp ${1} "${interface}_${inst}"
}
config_load twamp
config_foreach rename_section twamp_reflector
exit 0

View File

@@ -6,13 +6,13 @@ include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=urlfilter
PKG_VERSION:=1.1.3
PKG_VERSION:=1.1.4
LOCAL_DEV:=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/urlfilter.git
PKG_SOURCE_VERSION:=5a64642ac33e629151788b3ff1de920776bcd2ed
PKG_SOURCE_VERSION:=e55a2c2c7c992eb5071e82734bdc8850b71b02e0
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_MIRROR_HASH:=skip
endif

View File

@@ -5,13 +5,13 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=uspd
PKG_VERSION:=2.2.11
PKG_VERSION:=2.2.14.3
LOCAL_DEV:=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/uspd.git
PKG_SOURCE_VERSION:=1bfd9937ae31c6878aff77fca25f9265d822b57d
PKG_SOURCE_VERSION:=e7d95cb3cb4d28b7fe0df678a9d27c3ab173f5bd
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_MIRROR_HASH:=skip
endif

70
voicemngr/Makefile Normal file
View File

@@ -0,0 +1,70 @@
#
# Copyright (C) 2022 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:=voicemngr
PKG_VERSION:=0.1
PKG_LICENSE:=PROPRIETARY
PKG_LICENSE_FILES:=LICENSE
LOCAL_SRC_DIR:=~/git/voip/voicemngr
LOCAL_DEV=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/voicemngr.git
PKG_SOURCE_VERSION:=13a14593daa610a87c363a1a0acd19f31f405a71
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_MIRROR_HASH:=skip
endif
# 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
TARGET_PLATFORM:=
ifeq ($(CONFIG_TARGET_iopsys_brcm63xx_arm),y)
TARGET_PLATFORM:=BROADCOM
else ifeq ($(CONFIG_TARGET_iopsys_qualcomm),y)
TARGET_PLATFORM:=QUALCOMM
endif
export TARGET_PLATFORM
export CONFIG_BRCM_SDK_VER_504021
export CONFIG_BCM_CHIP_ID
include $(INCLUDE_DIR)/package.mk
TARGET_CFLAGS += -Wall -Werror
define Package/voicemngr
CATEGORY:=Utilities
TITLE:=IOPSYS Voice Manager
URL:=
DEPENDS:= +libubox +ubus +libpicoevent +uci +TARGET_iopsys_brcm63xx_arm:bcmkernel +TARGET_iopsys_qualcomm:vtsp
endef
define Package/voicemngr/description
Voice manager is a daemon that bridges Asterisk and platform specific DSP/SLIC APIs
endef
ifeq ($(LOCAL_DEV),1)
define Build/Prepare
@echo "Building from the local source. TARGET_PLATFORM=$(TARGET_PLATFORM)"
rsync -av --exclude=.* $(LOCAL_SRC_DIR)/* $(PKG_BUILD_DIR)/
endef
endif
define Package/voicemngr/install
$(CP) ./files/* $(1)/
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_DIR) $(1)/usr/lib
$(INSTALL_BIN) $(PKG_BUILD_DIR)/voicemngr $(1)/usr/sbin/
$(CP) $(PKG_BUILD_DIR)/libvoice/libvoice.so* $(1)/usr/lib/
endef
$(eval $(call BuildPackage,voicemngr))

View File

@@ -4,14 +4,16 @@ START=68
STOP=12
USE_PROCD=1
NAME=evoice
NAME=voicemngr
start_service() {
[ "$(db -q get hw.board.hasVoice)" = "1" ] || return
procd_open_instance
procd_set_param env hw_board_hasDect=$(db get hw.board.hasDect)
procd_set_param command $NAME
procd_set_param respawn "5" "0" "3"
procd_set_param nice -12
procd_close_instance
}
@@ -20,3 +22,6 @@ reload_service() {
start
}
service_triggers() {
procd_add_reload_trigger asterisk
}

View File

@@ -5,12 +5,12 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=wfa-capi
PKG_VERSION:=1.1.2
PKG_VERSION:=1.1.3
LOCAL_DEV=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=ce29c2d69d0ca96b61f2de5d1ba107c8d31cb5ef
PKG_SOURCE_VERSION:=64d9101c8e4930cbd3fe6ce471fb4cfd2b9b80dc
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/wfa-capi.git
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)_$(PKG_SOURCE_VERSION).tar.xz
PKG_MIRROR_HASH:=skip

View File

@@ -5,12 +5,12 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=wfadatad
PKG_VERSION:=2.8.0.1
PKG_VERSION:=2.10.1.2
LOCAL_DEV=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=01fd303670eef525e35c5337c4cf15418588273f
PKG_SOURCE_VERSION:=40c8630ec755840e0ece16ab3102d056563daef3
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/wfadatad.git
PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_VERSION).tar.gz
PKG_MIRROR_HASH:=skip

View File

@@ -5,12 +5,12 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=wifimngr
PKG_VERSION:=14.0.7
PKG_VERSION:=14.0.10
LOCAL_DEV=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=981ce51b2f135926d6e9135772dcd43d73c39b64
PKG_SOURCE_VERSION:=b6481f096228da9805ff159d17ddac4dbce0e1ab
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/wifimngr.git
PKG_MAINTAINER:=Anjan Chanda <anjan.chanda@iopsys.eu>
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)_$(PKG_SOURCE_VERSION).tar.xz