Compare commits

...

179 Commits

Author SHA1 Message Date
716daff077
testing something
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2023-05-20 17:34:46 +02:00
f8806d672c
apt update
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
2023-05-20 12:47:24 +02:00
1e187f21ef
installed file dependency
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
2023-05-20 12:45:43 +02:00
d5f9f5dd46
added ci pipeline
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
2023-05-20 12:39:42 +02:00
David Bauer
979dd354fa
Merge pull request #2901 from maurerle/patch-3
gluon-info: Add domain to gluon-info
2023-05-10 13:30:06 +02:00
Florian Maurer
f0246b65e2
gluon-info: Add current domain to gluon-info
- provides easier information of the currently active domain
- tested by patching a running node
2023-05-10 10:02:27 +02:00
David Bauer
079f449d9d
Merge pull request #2794 from Djfe/add_cudy_wr1300v1
ramips: add support for Cudy WR1300 v1
2023-05-10 01:24:29 +02:00
Jan-Niklas Burfeind
b840afe95f
Merge pull request #2898 from blocktrron/gluon-2022.1.4-master
[master] [forward-port] docs: Add v2022.1.4 release notes
2023-05-10 00:02:50 +02:00
Jan-Niklas Burfeind
02878ee083
Merge pull request #2899 from freifunk-gluon/readthedocs-yaml
readthedocs: specify build-container
2023-05-10 00:01:54 +02:00
David Bauer
44a891807c readthedocs: specify build-container
Docs builds currently fail with

Could not import extension sphinx.builders.linkcheck
(exception: urllib3 v2.0 only supports OpenSSL 1.1.1+,
currently the 'ssl' module is compiled with OpenSSL
1.0.2n  7 Dec 2017.
See: https://github.com/urllib3/urllib3/issues/2168)

The Gluon issuetracker suggests specifying the build-container.

Link: https://github.com/readthedocs/readthedocs.org/issues/10290#issuecomment-1535120995

Signed-off-by: David Bauer <mail@david-bauer.net>
2023-05-09 23:46:49 +02:00
David Bauer
6771803de3 docs: Add v2022.1.4 release notes
(cherry picked from commit 205e66c743)
2023-05-09 21:57:03 +02:00
David Bauer
cc452904b5
Merge pull request #2897 from herbetom/master-updates
modules: update to latest HEAD
2023-05-09 09:40:26 +02:00
Tom Herbers
677d56aea6
modules: update packages
55eed1761 mwan3: bump PKG_VERSION to 2.11.7
675bd01a1 mwan3: reset score to up+down on connected
3c9ad7df7 mwan3: refactoring mwan3track action handling
ce66eecb6  banip: release 0.8.5-2
d63f0e859  banip: release 0.8.5-1
7af20d484 cloudflared: Update to 2023.5.0
20d99ef7b  banip: update 0.8.4-5
8d9c17e91 zoneinfo: adjust to current timezone data file structure
2e667a1f8 sqlite3: Update to 3.41.2
726e94527  banip: update 0.8.4-4
bb8efb657  banip: update 0.8.4-3
02b6973b0 mwan3: bump PKG_VERSION to 2.11.6
3b80d11e2 mwan3: fix addition of routes to mwan3_connected ipset
aa68fc4cb shadowsocks-libev: ss-rules: Add 'auto-merge' flag to avoid conflicts
7398724ec mwan3: bump PKG_VERSION to 2.11.5
4addfcf15 mwan3: fix addition of iptables rules for mwan3 sticky rules
5f26bba47 slang2: Update to 2.3.3, refresh patches
3492a48b0 pbr: update to 1.1.1-1
1086d4f74 librespeed-go: update file permissions for ujail
216261ea4 banip: update 0.8.4-2
c68388fb6 banip: release 0.8.4-1
5b7e01ad5 simple-adblock: implement curl_additional_param compressed_cache_dir
2023-05-08 14:17:06 +02:00
Tom Herbers
70da43fa35
modules: update openwrt
e500494771 wireless-regdb: update to 2023.05.03
2677220d81 kernel: bump 5.10 to 5.10.179
5cc1bd5b21 kernel: bump 5.10 to 5.10.178
dcdd8e9dee kernel: bump 5.10 to 5.10.177
2023-05-08 14:17:05 +02:00
Jan-Niklas Burfeind
ed36f1456f
Merge pull request #2889 from Djfe/fixup
docs: fix supported_devices (missing newline)
2023-05-05 23:31:58 +02:00
Felix Baumann
41b2f002f3 docs: fix supported_devices (missing newline)
I made the mistake of never looking at the rendered version
fixes 95e5d382ec
backport like 8b2cc206d3 is optional
2023-05-05 23:22:18 +02:00
David Bauer
22781dac06
Merge pull request #2887 from Djfe/add_cudy_x6_v2
ramips: add support for Cudy X6 v2
2023-05-05 22:03:16 +02:00
Felix Baumann
5328f17b09 ramips: add support for Cudy X6 v2 2023-05-05 15:45:20 +02:00
David Bauer
eca926abc7
Merge pull request #2793 from Djfe/add_cudy_x6_v1
ramips: add support for Cudy X6 v1
2023-05-05 14:53:56 +02:00
Felix Baumann
76ad25f826 ramips: add support for Cudy X6 v1 2023-05-04 20:43:53 +02:00
David Bauer
91b26c65aa
Merge pull request #2886 from Djfe/master
modules: update openwrt
2023-05-04 19:54:49 +02:00
FFAC
2f463c0353 modules: update openwrt
5f583d31c7 ramips: mt7621: add support for Cudy X6 v2
2023-05-03 22:20:07 +00:00
David Bauer
8b5a282c4a
Merge pull request #2552 from AiyionPrime/ath79-migrate-hiveap-121
ath79-nand: (re)add hiveap-121
2023-05-03 01:01:15 +02:00
David Bauer
4018db1823
Merge pull request #2882 from Djfe/update-modules
modules: update openwrt
2023-05-02 01:32:23 +02:00
Felix Baumann
899dd916d0 modules: update openwrt
749cc6ffc4 ramips: Cudy X6 fixes / improvements
2023-04-30 22:03:51 +02:00
Felix Baumann
e06e555ac2 ramips: add new lines to separate vendors consistently 2023-04-30 20:51:56 +02:00
Felix Baumann
3e3a7987b6 ramips: add support for Cudy WR1300 v1 2023-04-30 20:51:56 +02:00
David Bauer
918e3ce784
Merge pull request #2880 from herbetom/master-updates
modules: update to latest HEAD
2023-04-30 14:09:26 +02:00
Tom Herbers
f7298d70f3
modules: update packages
7d7663dc1 newt: Update to 0.52.23
f64aaa69a dnsproxy: Update to 0.49.1
5d3fc9c5b dnsproxy: Update to 0.49.0
bd2cebf65 xray-core: Update to 1.8.1
f0128ce98 v2ray-core: Update to 5.4.1
4e7f27b21 obfs4proxy: Update to 0.0.14
891299822 ruby: update to 3.0.6
93bd5fad3 htop: update to 3.2.2
698132112 php8: update to 8.1.18
ec321e666 curl: update to 8.0.1
2023-04-28 00:50:18 +02:00
Tom Herbers
2a3a0e32d5
modules: update openwrt
3960c220da OpenWrt v22.03.5: revert to branch defaults
863f769b75 OpenWrt v22.03.5: adjust config defaults
5f15225c1e ramips: reduce Archer AX23 / MR70X SPI-frequency
c1ccae54ce ccache: update to 4.6.3
80653f0c07 tools/ccache: update to 4.6.2
eeff8b3be1 tools/ccache: update to 4.6.1
31b1366bc6 ramips: fix lzma-loader for buffalo_WSR_600DHP
bf81a92171 ath79: create Aruba AP-105 APBoot compatible image
b6cbab1ad7 openssl: fix CVE-2023-464 and CVE-2023-465
2023-04-28 00:50:12 +02:00
Matthias Schiffer
10e52bec3a
Merge pull request #2688 from lemoer/pr_config_mode_ui_for_interface_roles_v2
Config-Mode UI for Interface Role Assignment (v2)
2023-04-27 21:11:33 +02:00
David Bauer
75c62fd2aa
Merge pull request #2601 from AiyionPrime/key-translate
gluon-mesh-vpn-wireguard: add fastd key migration
2023-04-25 23:22:49 +02:00
lemoer
19f3c9d396 gluon-web-network: migrate to SPDX headers for licensing 2023-04-24 21:41:53 +02:00
lemoer
b774f6f434 gluon-web-model: migrate to SPDX headers for licensing 2023-04-24 21:41:53 +02:00
lemoer
abd6d6415d gluon-core: make interface roles exclusive in site config 2023-04-24 21:41:53 +02:00
lemoer
e7da501442 docs: explain that invalid interface roles are removed 2023-04-24 20:59:26 +02:00
lemoer
a31a802e85 gluon-core: fix invalid role configurations during reconfigure 2023-04-24 20:59:26 +02:00
lemoer
1e21dbcfad gluon-web-network: make roles "uplink" / "mesh" and "client" exclusive 2023-04-24 20:59:26 +02:00
lemoer
7805ff700e gluon-web-model: add exclusive options for MultiListValue 2023-04-24 20:59:20 +02:00
Jan-Niklas Burfeind
276cd0ee37 docs: gluon-mesh-vpn-key-translate 2023-04-20 00:22:19 +02:00
aiyion.prime
e4d05e6ba9 gluon-mesh-vpn-wireguard: add fastd key migration 2023-04-20 00:22:13 +02:00
aiyion.prime
759a3436e0 gluon-mesh-vpn-wireguard: add gluon-hex-to-b64
gluon-hex-to-b64 takes base64 content such as a fastd private key
in legacy form via stdin and emits it in base64 encoded (WireGuard) form.

Provides basic return codes.
2023-04-20 00:21:42 +02:00
Jan-Niklas Burfeind
5ed8508a09
Merge pull request #2864 from blocktrron/combine-dual-boot
openwrt: backport combination of dual-flash partitions
2023-04-19 22:07:53 +02:00
Matthias Schiffer
d91b11ec3d
Merge pull request #2860 from jluebbe/libbatadv-uapi-update
libbatadv: Update UAPI from kernel 6.2
2023-04-19 21:48:29 +02:00
Matthias Schiffer
051d10a59f
Merge pull request #2837 from maurerle/feature/build_dependencies
[docs] improve build dependencies and docs
2023-04-19 21:38:20 +02:00
lemoer
03b9ffdb24 gluon-web-model: uglify flag --support-ie8 is now --ie
From uglify 3.14.0 on, this command is called --ie:

ef5f7fc25e
2023-04-19 21:34:29 +02:00
lemoer
d46c5f89c5 gluon-web-network: show pretty interface names 2023-04-19 21:34:29 +02:00
lemoer
f0b2e632d0 gluon-web-network: initial draft of role configuration 2023-04-19 21:04:24 +02:00
lemoer
7cd4a189e0 gluon-web-model: add MultiListValue class 2023-04-19 21:04:23 +02:00
David Bauer
d1b215aeec
Merge pull request #2866 from AiyionPrime/fix-docs-make-linkcheck
docs: use linkcheck_ignore for unreachable links
2023-04-17 19:28:29 +02:00
Jan-Niklas Burfeind
7ca4cb3698 docs: use linkcheck_ignore for unreachable links
Config Mode
- http://192.168.1.1

(not existing) anchors on hackint used to join channels
- https://webirc.hackint.org/#
2023-04-17 16:23:18 +02:00
David Bauer
cc854594b0 openwrt: backport combination of dual-flash partitions
Backport two patches combining dual-flash layouts of OCEDO as well as
UniFi AC boards.

The two firmware partitions are already combined on OpenWrt master to
prolong the life of these devices. It allows the device to store
firmware images up to 14 MB compared to the previous 7 MB.

The intention behind backporting these patches is to allow these devices
to have a wide update path to firmware-versions requiring this extra
space. Otherwise a device might not be able to install an upgrade which
exceeds a single firmware-partition.

For UniFi AC boards it should be noted that factory-installation will
not be possible with an image exceeding a single firmware-partition. In
this case, an older OpenWrt image that fits in a single partition and
supports writing the enlarged partition space is required.

Currently, this is not the case. As these devices are end-of-sale, this
will become less of a concern over time.

Signed-off-by: David Bauer <mail@david-bauer.net>
2023-04-17 06:38:53 +02:00
Jan Luebbe
31d1429ad2 libbatadv: update UAPI and policy from batctl v2023.0
batadv_gw_modes and BATADV_ATTR_GW_MODE were missing from the local
version, so update it and the corresponding policy table from batctl.
2023-04-16 20:24:54 +02:00
Martin Weinelt
297cd5bc3f
Merge pull request #2856 from blocktrron/upstream-master-updates
modules: update to latest HEAD
2023-04-15 20:04:24 +02:00
David Bauer
4faa6f3d61 modules: update gluon
a5259c0 autoupdater: improve handling of interrupted HTTP requests
e4bd7a4 autoupdater: uclient: fix segfault after interrupted HTTP request
5521926 autoupdater: uclient: remove early returns from get_url()
2023-04-15 12:56:37 +02:00
David Bauer
c620ae789e modules: update packages
42b5ae640 golang: Update to 1.19.8
be3a2dce9 lighttpd: update to lighttpd 1.4.69 release hash
ad2f6fd4c lighttpd: remove patch included upstream
6e07b2816 lighttpd: add lighttpd-mod-webdav_min package
e5a1e8bef lighttpd: collect mods now built into lighttpd exe
9116a5880 lighttpd: fix meson build
aa6df20e5 lighttpd: remove patch included upstream
64cdc76c0 lighttpd: update to lighttpd 1.4.68 release hash
0d66dc36c lighttpd: modify build cmd for type: feature opts
8bcfb64a5 lighttpd: add lighttpd-mod-rrdtool dep on rrdtool1
0c0fd4bbd lighttpd: lighttpd-1.4.67-4
10c8bee8c lighttpd: document crypto lib options in Makefile
fb17428a1 cloudflared: Update to 2023.4.0
235acacf0 borgbackup: bump to 1.2.4
31f36e5b2 borgbackup: add missing dependencies
3d12ac7e7  banip: update 0.8.3-2
81a57cdc1  banip: release 0.8.3-1
9b81bca1b v2raya: Update to 2.0.5
bab4d7ebf apinger: add rrd graph support
e5c7e5021 apinger: improve uci and procd support
87c46fde9 rrdtool: update PKG_SOURCE_URL
38cb01297 dnsproxy: Update to 0.48.3
2023-04-15 12:56:30 +02:00
David Bauer
a834298b4e modules: update openwrt
074db57936 kernel: backport fix for recently introduced UBI bug
9af29da281 uclient: update to Git version 2023-04-13
1d4db4e4db OpenWrt v22.03.4: revert to branch defaults
94adc23fa6 OpenWrt v22.03.4: adjust config defaults
38ccc47687 imagebuilder: allow to specific ROOTFS_PARTSIZE
2023-04-15 12:56:16 +02:00
Andreas Ziegler
e40ed5810d
Merge pull request #2848 from herbetom/fix_ath79-generic_wave2
ath79-generic: switch Wave2 firmware to -ct
2023-04-13 23:13:56 +02:00
Andreas Ziegler
f21e3e129a
Merge pull request #2830 from herbetom/add_dlink-dap-x1860-a1
ramips-mt7621: add support for D-Link DAP-X1860 (A1)
2023-04-13 23:12:48 +02:00
Felix Baumann
48b017b1a4
ipq40xx-mikrotik: rename ath10k_packages to smallbuffers (#2850)
The only device using the ATH10K_PACKAGES_IPQ40XX variable in
ipq40xx-mikrotik (the MikroTik hAP ac2) has little RAM and is
using ath10k-ct-smallbuffers by default at the moment. This is
just a suggestion to rename the variable in-case the wifi driver
ever has to be replaced by ath10k.

Analogue to 4a00b8aebb

Signed-off-by: Felix Baumann <felix.bau@gmx.de>
2023-04-13 11:08:28 +02:00
Tom Herbers
4badb2702e
ath79-generic: switch Wave2 firmware to -ct
This partially reverts commit 22c47df242.

Devices in ath79-generic like the TP-Link EAP225-Outdoor v1 are really
unstable with the non -ct Wave2 firmware and regulary crash with 100% memory
consumption when only a handful devices are connected via 5 GHz.

closes freifunk-gluon/gluon#2827
2023-04-12 02:30:41 +02:00
Tom Herbers
e8e956fe57
ramips-mt7621: add support for D-Link DAP-X1860 (A1) 2023-04-09 19:30:55 +02:00
Andreas Ziegler
157a74c5ab
Merge pull request #2844 from herbetom/master-updates
modules: update to latest HEAD
2023-04-09 19:15:04 +02:00
Tom Herbers
c81e9c287b
modules: update packages
1fd9cbcf9 yq: Update to 4.33.2
93b973f51 nano: make nanorc world readable
12bef946f zoneinfo: updated to the latest release
630603042 node: bump to v16.20.0
2023-04-09 12:02:51 +02:00
Tom Herbers
10e0bd1fe0
modules: update openwrt
deafcf9162 ramips: define remapping-range for DAP-X1860
711e45e158 ramips: add support for D-Link DAP-X1860 A1
2a4a6372d3 ramips: lower re305-v3 spi-max-frequency
50d707e344 lantiq: fix lzma-loader for Netgear DGN 3500(B)
fea7478f2d iproute2: add missing libbpf dependency
b2db4fa956 ath79: tiny: Do not build TPLink WPA8630Pv2 by default
c6b6cab858 ramips: mt7621: mikrotik 760igs (hEX S) fix SFP
2faa7ff09e openssl: fix variable reference in conffiles
0636d6b925 ath79: use lzma-loader for Senao initramfs images
70d2e8b4db ath79: Fix glinet ar300m usb not working
9aaeaa8d2a toolchain: musl: Fix symbol loading in gdb
99fddbe4fd wireless-regdb: update to 2023.02.13
f677302cc4 build: fix for sourcing targets image config installed via feeds
50d37b0b37 ramips: rt5350: enable lzma-loader for ALLNET ALL5003
13d3fb3c20 bpf-headers: fix package category
7531ef7f1c sdk: expose PATENTED an NLS build options
4ed98849a5 ksmbd: update to 3.4.7
51cf5aa731 hostapd: add missing return code for the bss_mgmt_enable ubus method
d2f3422e9d kernel: filter out pahole version
5030620db6 dnsmasq: add dhcphostsfile to ujail sandbox
066ac40c29 netifd: strip mask from IP address in DHCP client params
354ad1084a lantiq: nand: don't yield while holding spinlock
6035401f46 mac80211: fix invalid calls to drv_sta_pre_rcu_remove
fc1750b305 ramips: mt7621: ASUS RT-AX53U add NMBM, nest firmware
85b6a7a195 ramips: Alternative name Asus RT-AX1800U for Asus RT-AX53U
a3fbeb2cbb ramips: add missing LEDs to Asus RT-AX53U
21a121af80 uboot-envtools: add support for ramips Asus RX-AX53U
3014c694da ramips: add support for read/write uboot env to Asus RX-AX53U
ff22a20922 comgt: ncm: support Mikrotik R11e-LTE6 modem
5909b6c886 comgt: add quirk for Mikrotik modems based on Mikrotik R11e-LTE6
05ec70f6ae kernel: add support for XMC XM25QH64C
541be7ddb2 ath79: Refresh patches
2023-04-09 12:02:43 +02:00
Magnus Frühling
4a00b8aebb
ipq40xx: use ath10k-smallbuffers for ZyXEL WRE6606 (#2842)
The WRE6066, has in contrast to other ip40xx devices, has only 128MB system RAM.
This results in OOM situations and instability, to circumvent this we need
to use ath10k-smallbuffers.

Signed-off-by: skorpy <skorpy@frankfurt.ccc.de>
2023-04-07 18:30:33 +02:00
Florian Maurer
b70b9d2a05
update install dependency docs
* add missing libelf-dev dependency (to build x86-64)
* remove subversion dependency
* add rsync dependency
* add ecdsautils to docs
2023-04-02 15:58:55 +02:00
Andreas Ziegler
f3b25c1e7d
Merge pull request #2835 from blocktrron/upstream-master-updates
modules: update to latest HEAD
2023-04-01 01:59:03 +02:00
David Bauer
7b2e04e8dc modules: update packages
391e18067 banip: update to 0.8.2-6
9748c394d banip: update to 0.8.2-5
5ae16a7a6 yq: Update to 4.33.1
e9b65e5d7 dnsproxy: Update to 0.48.2
7894fd057 dnsproxy: Update to 0.48.1
8a8c51a92 dnsproxy: Update to 0.48.0
b2c3f2d13 natmap: update to 20230322
7852691b8 banip: update to 0.8.2-4
9fb40dbb8 banip: update to 0.8.2-3
33431b63b sqlite3: Update to 3.41.1
2023-03-31 13:56:43 +02:00
David Bauer
068e8fbdce modules: update openwrt
c2331038b2 kernel: remove obsolete netfilter tcp window size check bypass patch
4ae854d055 mac80211, mt76: add fixes for recently discovered security issues
b573a785e0 ncm: add error check and retry mechanism for gcom call
f61c5cf76b kernel: bump 5.10 to 5.10.176
a4212b77c0 kernel: bump 5.10 to 5.10.175
6b19d24254 kernel: bump 5.10 to 5.10.174
24d84a13a4 kernel: bump 5.10 to 5.10.173
36bf158b47 kernel: tcindex classifier has been retired
999cb9574f x86: fix deprecated CONFIG_MICROCODE_OLD_INTERACE
a88c65507d kernel: bump 5.10 to 5.10.172
cb91aa4b29 kernel: bump 5.10 to 5.10.170
26cc831e44 kernel: bump 5.10 to 5.10.169
28e5045f3a bcm4908: include usbport trigger
836e3d1e5e bcm4908: backport v6.4 pending DTS changes
b7c031d933 ipq40xx: Linksys MR8300: fix the USB port power
0170bc1af1 ramips: mt7621: enable lzma-loader for AFOUNDRY EW1200
96e3fee7ad ramips: fix 5g mac for TOTOLINK X5000R
2023-03-31 13:56:43 +02:00
Jan-Niklas Burfeind
b8d47e6c4b
Merge pull request #2832 from Djfe/TD-W8970
docs: readd TP-Link TD-W8970 v1
2023-03-31 00:55:11 +02:00
Felix Baumann
95e5d382ec docs: readd TP-Link TD-W8970 v1
This device is already supported.
It's a lantiq device that was entered as ar71xx
in to the list of supported device and therefore
removed before the release of Gluon 22.
2023-03-31 00:33:05 +02:00
Jan-Niklas Burfeind
006396620a
Merge pull request #2831 from blocktrron/mr70x
ramips-mt7621: add support for Mercusys MR70X v1
2023-03-29 23:32:18 +02:00
David Bauer
a2056d97a9 ramips-mt7621: add support for Mercusys MR70X v1
Signed-off-by: David Bauer <mail@david-bauer.net>
2023-03-25 23:23:52 +01:00
David Bauer
3a0b0b061a
Merge pull request #2825 from blocktrron/upstream-master-updates
modules: update to latest Git HEAD
2023-03-25 23:21:21 +01:00
David Bauer
1c6405a756
gluon-core: set WAN mac from board-data (#2823)
Set the MAC-adress for the WAN interfacce in case it is defined in the
board-data.

This commit fixes random MAC-Addresses on reboot in case OpenWrt stores
them in the device network configuration.

Fixes #2808

Signed-off-by: David Bauer <mail@david-bauer.net>
2023-03-24 17:20:53 +01:00
David Bauer
44e79fc5c9 modules: update routing
b8e0831 bird1: fix "Form token mismatch" errors in luci-app-bird1-ipv{4,6}
3d7df59 bird1: rename get_bool() to get_a_bool() in bird{4,6}-lib.sh
4e0e702 bird1-openwrt: fix Makefile issues
58a4a00 bird1-openwrt: use a single Makefile for IPv4 and IPv6 packages
2023-03-24 16:22:34 +01:00
David Bauer
63a3921acd modules: update packages
0d566071c adblock: update to 4.1.5-7
05262f346 yq: Update to 4.32.2
245d3479c cloudflared: Update to 2023.3.1
bf9bafd2c v2raya: Update to 2.0.4
66816f0f6 banip: push 0.8.2-2 to stable branch
07e032ee1 v2ray-geodata: Update to latest version
869e5573c xray-core: Update to 1.8.0
b13728e6a strongswan: add fix for CVE-2022-40617
eb4966e54 golang: Update to 1.19.7
b1f684f01 miniupnpd: bump to 2.3.3
1f1bfff84 php8: update to 8.1.16
fe75545e6 gphoto2: fix compilation with BUILD_NLS
19347485a mv88e6xxx_dump: update to 2023.03.08
ae7dd67aa simple-adblock: update init file and config
4ee651287 crowdsec: update to 1.4.6 Update crowdsec to latest upstream release version 1.4.6
6c78413ed frp: update to 0.48.0
4ab4523f7 frp: update to 0.47.0
90749ee59 v2raya: switch to use nftables
70bfe06bb perl-ack: Update to 3.7.0
b53d4f03f v2ray-core: Update to 5.4.0
acddc2050 crowdsec-firewall-bouncer: update to 0.0.25
3c59f514b yt-dlp: update to 2023.3.4
3ea3a0657 haproxy: update to v2.4.22
3e3650bc9 curl: add lang/perl-www-curl/patches/230-curl_7.88_compat.patch
009b2d005 curl: update to 7.88.1
2023-03-24 16:22:34 +01:00
David Bauer
6dc5a4735b modules: update openwrt
f5db04e8ea ramips: add support for Mercusys MR70X
c58959dc45 firmware-utils: tplink-safeloader: add Mercusys MR70X
c1bfb704b1 ramips: fix Archer AX23  WiFi MAC address conflict
3c6692ba03 ramips: add support for TP-Link Archer AX23 v1
a507243bfe firmware-utils: tplink-safeloader: add TP-Link Archer AX23 v1
788a0cf15c mpc85xx: add support for Watchguard Firebox T10
2023-03-24 16:22:34 +01:00
Stefan Weil
cab47e73e4
gluon-status-page: fix status display of wireless mesh for recent openwrt (#2826)
Instead of checking for the deprecated sysfs entry `wireless` which no
longer exists when running newer versions of openwrt, testing for `phy80211`
can be used and works for old and new versions of openwrt.

Signed-off-by: Stefan Weil <sw@weilnetz.de>
2023-03-24 13:34:25 +01:00
lemoer
6504a4dd6e
Merge pull request #2820 from stweil/contributing
actions, docs: fix English typo, wording
2023-03-22 21:19:36 +01:00
lemoer
1a489c5216
Merge pull request #2815 from bobidle/fix_typos
docs: fix typos
2023-03-22 21:18:01 +01:00
Stefan Weil
d81897a467 actions, docs: fix English typo, wording
Signed-off-by: Stefan Weil <sw@weilnetz.de>
2023-03-21 07:16:43 +01:00
Tom Herbers
f80bef8405
ath79-generic: fix WS-AP3705i autoupdater name (#2817)
The device was introduced in #2332 and merged in 102a4b9350.

It appears that the autoupdater name wasn't correct and devices therefore don't receive updates.

root@64295-ggw3-20b399bb366f-132:~# lua -e 'print(require("platform_info").get_image_name())'
enterasys-ws-ap3705i
2023-03-19 20:33:47 +01:00
Bob Idle
337f2f119e docs: fix typos 2023-03-18 05:10:16 +01:00
David Bauer
9a4395d048
Merge pull request #2768 from herbetom/add_gl-xe300
ath79-nand: add support for GL.iNet GL-XE300
2023-03-16 07:51:20 +01:00
Andreas Ziegler
fe79b50473
Merge pull request #2813 from FreifunkChemnitz/gl-mt1300v1
ramips-mt7621: add GL.iNet MT1300
2023-03-12 00:07:34 +01:00
Steffen Förster
2c221bac79 ramips-mt7621: add GL.iNet MT1300
The GL-MT1300 is a high-performance new generation pocket-sized router
that offers a powerful hardware and first-class cybersecurity protocol
with unique and modern design.

Specifications:
- SoC: MT7621A, Dual-Core @880MHz
- RAM: 256 MB DDR3
- Flash: 32 MB
- Ethernet: 3 x 10/100/1000: 2 x LAN + 1 x WAN
- Wireless: 1 x MT7615D Dual-Band 2.4GHz(400Mbps) + 5GHz(867Mbps)
- USB: 1 x USB 3.0 port
- Slot: 1 x MicroSD card slot
- Button: 1 x Reset button
- Switch: 1 x Mode switch
- LED: 1 x Blue LED + 1 x White LED

MAC addresses based on vendor firmware:
WAN : factory 0x4000
LAN : Mac from factory 0x4000 + 1
2.4GHz : factory 0x4
5GHz : Mac form factory 0x4 + 1

Flashing instructions:
1.Connect to one of LAN ports.
2.Set the static IP on the PC to 192.168.1.2.
3.Press the Reset button and power the device (do not release the button).
  After waiting for the blue led to flash 5 times, the white led will
  come on and release the button.
4.Browse the 192.168.1.1 web page and update firmware according to web
  tips.
5.The blue led will flash when the firmware is being upgraded.
6.The blue led stops blinking to indicate that the firmware upgrade is
  complete and U-Boot automatically starts the firmware.
2023-03-11 18:14:24 +01:00
Jan-Niklas Burfeind
02d363eadc
Merge pull request #2811 from bobidle/external_links
docs: Update external links
2023-03-10 19:45:35 +01:00
Bob Idle
2f9d59cdb8 docs: Update external links 2023-03-08 18:20:53 +01:00
David Bauer
bf153bc943
Merge pull request #2810 from blocktrron/upstream-master-updates
modules: update to latest OpenWrt HEAD
2023-03-06 16:37:27 +01:00
David Bauer
ec57f6c666 ath79-generic: remove workaround
Now that OpenWrt implements a proper fix for the stalled boots on 74kc
boards, the previous workaround can be removed.

Signed-off-by: David Bauer <mail@david-bauer.net>
2023-03-05 20:32:01 +01:00
David Bauer
53b84e3424 modules: update routing
cc1dd76 bird2: bump to version 2.0.12
2023-03-05 20:31:04 +01:00
David Bauer
989a16d103 modules: update packages
f06652bc1 v2raya: drop wrong patches
b6fab0750 yq: Update to 4.31.2
614680d93 yq: Update to 4.31.1
781be9731 cloudflared: Update to 2023.3.0
889028f86 cloudflared: Update to 2023.2.2
4b630ba72 sed: remove old libpcre dependency
3e2c1336a msgpack-c: Update to 5.0.0
43ae97707 golang: Update to 1.19.6
692052b8c node: bump to v16.19.1
2fcba9a46 zerotier: update to 1.10.3
651c73467 git: update to 2.34.7
656835201 https-dns-proxy: 2022-10-15-11 update
0790a0626 cloudreve: Update to 3.7.1
11780f597 gg: Update to 0.2.18
a4393e648 dnsproxy: Update to 0.47.0
2ccdd6d27 kcptun: update to version 20230207
48d58b61c simple-adblock: bugfix: ensure directory for jsonFile is created
b0050dc7f simple-adblock: implement procd_boot_wan_timeout support
fc70290d5 adblock: update 4.1.5-6
1e59e5d12 snowflake: update to v2.5.1
c13c734e3 django: bump to version 4.0.10
d3c9e5200 irqbalance: Add upstream fix for AARCH64 irq name parsing
f38c9e1d2 simple-adblock: update to 1.9.4-1
1c0d2ce41 adblock: update 4.1.5-5
2023-03-05 20:31:00 +01:00
David Bauer
f3c7f340b8 modules: update openwrt
0a32f66fea generic: remove patch for unused kernel version
ea6fb9c16d generic: MIPS: Add barriers between dcache & icache flushes
7b05a8d05d kernel: fix mtk dsa tag padding
cfce8ab388 kernel: can: fix MCP251x CAN controller module autoload
55a48b0957 kernel: bump 5.10 to 5.10.168
a66e53d8ed kernel: bump 5.10 to 5.10.167
3167f7c9fa openssl: bump to 1.1.1t
2023-03-05 20:30:51 +01:00
Andreas Ziegler
ac14244b79
Merge pull request #2809 from AiyionPrime/master-v2022.1.3-fp
docs: Add v2022.1.3 release notes
2023-03-04 23:25:46 +01:00
Jan-Niklas Burfeind
25eb6763cd docs: Add v2022.1.3 release notes
(cherry picked from commit 190d7f8701)
2023-03-04 23:19:33 +01:00
Martin Weinelt
82723f3a45
Merge pull request #2803 from freifunk-gluon/dependabot/github_actions/korthout/backport-action-1.2.0
build(deps): bump korthout/backport-action from 1.1.0 to 1.2.0
2023-03-02 13:26:03 +00:00
Jan-Niklas Burfeind
ccca92cf92
Merge pull request #2806 from freifunk-gluon/master-bugfix
gluon-core: fix typo in wireless upgrade script
2023-03-02 14:06:25 +01:00
Andreas Ziegler
94537db4df
gluon-core: fix typo in wireless upgrade script 2023-03-02 00:23:56 +01:00
Jan-Niklas Burfeind
23145c58a0
Merge pull request #2802 from freifunk-gluon/dependabot/github_actions/actions/checkout-3
build(deps): bump actions/checkout from 1 to 3
2023-03-01 09:36:27 +01:00
Jan-Niklas Burfeind
7e8c9f41a6
Merge pull request #2804 from freifunk-gluon/dependabot/pip/docs/sphinx-rtd-theme-1.2.0
build(deps): bump sphinx-rtd-theme from 1.1.1 to 1.2.0 in /docs
2023-03-01 09:28:10 +01:00
dependabot[bot]
43faa4f0d9
build(deps): bump sphinx-rtd-theme from 1.1.1 to 1.2.0 in /docs
Bumps [sphinx-rtd-theme](https://github.com/readthedocs/sphinx_rtd_theme) from 1.1.1 to 1.2.0.
- [Release notes](https://github.com/readthedocs/sphinx_rtd_theme/releases)
- [Changelog](https://github.com/readthedocs/sphinx_rtd_theme/blob/master/docs/changelog.rst)
- [Commits](https://github.com/readthedocs/sphinx_rtd_theme/compare/1.1.1...1.2.0)

---
updated-dependencies:
- dependency-name: sphinx-rtd-theme
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-01 00:57:31 +00:00
dependabot[bot]
1d50bedce8
build(deps): bump korthout/backport-action from 1.1.0 to 1.2.0
Bumps [korthout/backport-action](https://github.com/korthout/backport-action) from 1.1.0 to 1.2.0.
- [Release notes](https://github.com/korthout/backport-action/releases)
- [Commits](https://github.com/korthout/backport-action/compare/v1.1.0...v1.2.0)

---
updated-dependencies:
- dependency-name: korthout/backport-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-01 00:57:18 +00:00
dependabot[bot]
002ace202f
build(deps): bump actions/checkout from 1 to 3
Bumps [actions/checkout](https://github.com/actions/checkout) from 1 to 3.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v1...v3)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-01 00:57:16 +00:00
Jan-Niklas Burfeind
44844262cd
Merge pull request #2654 from T-X/pr-librerouter-v1
ath79-generic: add LibreRouter v1
2023-02-28 16:53:15 +01:00
Matthias Schiffer
a0f8d2ca52
Merge pull request #2695 from Kistelini/preserve_channels
gluon-core: preserve channel list for 5G radios
2023-02-27 23:28:30 +01:00
Christian Buschau
4e68059bc8
gluon-core: preserve channel list for 5G radios
Currently the 'channels' setting of a 5G radio gets overwritten or
deleted even if the 'preserve_channels' option is enabled. Don't touch it
if 'preserve_channels' is set.
2023-02-26 15:14:13 +01:00
Matthias Schiffer
193fe036b0
Merge pull request #2799 from AiyionPrime/workaround-unicast-ct
Revert "ipq40xx: switch Wave2 firmware to -ct (#2541)"
2023-02-26 13:38:55 +01:00
Jan-Niklas Burfeind
22c47df242 Revert "ipq40xx: switch Wave2 firmware to -ct (#2541)"
This is a temporary measure that fixes #2692.

This reverts commit 15ef885836.
2023-02-26 00:54:32 +01:00
Jan-Niklas Burfeind
f71e31a211
Merge pull request #2792 from freifunk-gluon/master-ath79-bugfix
gluon-core:  sleep to wait for device initialisations
2023-02-26 00:10:45 +01:00
Andreas Ziegler
d97673f715
gluon-core: sleep a few seconds during upgrade
wait for device initialisations
workaround for a timing issue during first boot on ath79-generic
after sysupgrade from ar71xx-generic image

GitHub Issue: #2779
2023-02-26 00:04:50 +01:00
Linus Lüssing
0cdaeaa0c9 ath79-generic: add LibreRouter v1
add comments about lacking radios
Co-authored-by: Jan-Niklas Burfeind <git@aiyionpri.me>
Co-authored-by: Matthias Schiffer <mschiffer@universe-factory.net>
2023-02-25 23:58:37 +01:00
Tom Herbers
b28f58dbd4
ath79-nand: add support for GL.iNet GL-XE300
The activated setup mode is indicated by the WLAN LED.

Co-authored-by: David Bauer <mail@david-bauer.net>
2023-02-25 11:44:07 +01:00
Matthias Schiffer
be672eda35
Merge pull request #2791 from FreifunkVogtland/war-ath79-hang
ath79-generic: Work around boot hang on Unifi AC-Mesh
2023-02-22 23:02:01 +01:00
Sven Eckelmann
536c771f3f ath79-generic: Work around boot hang on Unifi AC-Mesh
It looks like boot hangs on an AC-Mesh for unknown reasons. The last
message seen on the console is:

    [    0.000000] Inode-cache hash table entries: 8192 (order: 3, 32768 bytes, linear)

But interestingly, it seems like enabling AIO somehow works around this
problem. Changing any off the following options seem to have the same
effect at the moment for Linux 5.10.160+5.10.161

    # CONFIG_KERNEL_AIO is not set
    # CONFIG_KERNEL_CGROUPS is not set
    # CONFIG_KERNEL_FANOTIFY is not set
    # CONFIG_KERNEL_FHANDLE is not set
    # CONFIG_KERNEL_IO_URING is not set
    # CONFIG_KERNEL_IPV6_MROUTE is not set
    # CONFIG_KERNEL_IPV6_SEG6_LWTUNNEL is not set
    # CONFIG_KERNEL_IP_MROUTE is not set
    CONFIG_KERNEL_PROC_STRIPPED=y

Just enable CONFIG_AIO until the actual problem was fixed.

Link: https://github.com/freifunk-gluon/gluon/issues/2784
2023-02-21 00:05:08 +01:00
Jan-Niklas Burfeind
670da836c7
Merge pull request #2535 from ffgraz/olsr2
OLSRDv2 Support: Initial Meshing
2023-02-16 11:59:13 +01:00
Maciej Krüger
37b88cf790
gluon-mesh-olsrd: remove unused files 2023-02-15 21:40:31 +01:00
Jan-Niklas Burfeind
b9ffb7dcca
Merge pull request #2787 from herbetom/master-updates
modules: update to latest HEAD
2023-02-15 09:27:47 +01:00
Tom Herbers
3354c37f47
modules: update routing
83bc4fc babeld: remove AUTORELEASE
59bc28b babeld: update to 1.12.2
2023-02-14 20:05:14 +01:00
Tom Herbers
6398670b57
modules: update packages
669357351 v2ray-geodata: Update to latest version
04af31728 v2ray-core: Update to 5.3.0
6c13c9363 xray-core: Update to 1.7.5
bfe92ef86 cloudflared: Update to 2023.2.1
ce1d359a7 cloudflared: Update to 2023.1.0
5b8e61edb php8: update to 8.1.15
65b1563d0 xfrpc: update to version 2.1.606
30b0a36c7 xfrpc: Update to 1.11.587
3f023d5af xfrpc: allow server_addr ip and domain
028345fa9 xfrpc: Update to 1.07.582
9167756cb xfrpc: update to 1.06.579
ff4c824e2 xfrpc: set xfrpc's disabled default value to 0
74ed1a15a xfrpc: fix bug of xfrpc.init
8b80ad3b9 xfrpc: update to 1.05.561
b266107c3 xfrpc: Update to 1.05.548
ef5cacd4e xfrpc: fast reverve proxy client in c language
97c38b456 simple-adblock: update to 1.9.3-7
a13b1a64d ci: update github actions to v3
7abfee2e8 ci: Use openwrt/gh-action-sdk@v5
02e95fdef autossh: return from instance function, not exit the script
76ba43711 autossh: Add dropbear proxy (-J) support
09ae01170 mv88e6xxx_dump: add new packages to debug switch issues
1497ef515 bind: update to 9.18.11
2023-02-14 20:05:14 +01:00
Tom Herbers
b8c68307c5
modules: update openwrt
f7541aecdc bpf: ignore missing LLVM bins on package for non compile steps
98b8507e83 bpf: check llvm version only when used
7370479224 at91: sam9x,sama5: fix racy SD card image generation
52564e65d5 at91: sama7: fix racy SD card image generation
863288b49d mac80211: Update to version 5.15.92-1
71cbc95111 kernel: bump 5.10 to 5.10.166
3fd3d99e3a ramips: mt7621-dts: fix phy-mode of external phy on GB-PC2
212c3ffdfc octeontx: add sqaushfs and ramdisk to features
2601873cc5 ath79: add LTE packages for GL-XE300
2702ef9427 ath79: add label-mac-device for GL-XE300
0657576ce1 ath79: add LTE led for GL.iNet GL-XE300
428d720c7f kernel: backport some mv88e6xxx devlink patches
83a13b74f5 kernel: bump 5.10 to 5.10.165
10c79414db kernel: bump 5.10 to 5.10.164
15b9c02d6c kernel: bump 5.10 to 5.10.163
a8025bc2c2 kernel: bump 5.10 to 5.10.162
2023-02-14 20:05:11 +01:00
David Bauer
1780bafafc
Merge pull request #2772 from ffgraz/warn2
gluon-web-model: fix issue with warning blocking save on private-wifi
2023-02-03 03:07:33 +01:00
Jan-Niklas Burfeind
57a0e44458
Merge pull request #2777 from freifunk-gluon/dependabot/github_actions/korthout/backport-action-1.1.0
build(deps): bump korthout/backport-action from 1.0.1 to 1.1.0
2023-02-01 22:21:02 +01:00
dependabot[bot]
2a1873b3c3
build(deps): bump korthout/backport-action from 1.0.1 to 1.1.0
Bumps [korthout/backport-action](https://github.com/korthout/backport-action) from 1.0.1 to 1.1.0.
- [Release notes](https://github.com/korthout/backport-action/releases)
- [Commits](https://github.com/korthout/backport-action/compare/v1.0.1...v1.1.0)

---
updated-dependencies:
- dependency-name: korthout/backport-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-01 00:01:21 +00:00
Jan-Niklas Burfeind
ee36d5a611
editorconfig: exclude docs/_built (#2776)
while not present unless built, they are never meant to be checked
2023-02-01 00:57:04 +01:00
aiyion.prime
a18510c09a ath79-nand: (re)add hiveap-121
Direct migration from 19.07 is currently not possible.

Gone due to
commit 45c84a117b ("ar71xx: drop target")
2023-01-31 10:23:30 +01:00
Jan-Niklas Burfeind
9ac048dbdf
docs,LICENSE: Drop copyright years (#2774) 2023-01-30 21:37:44 +01:00
David Bauer
953a227ab0
Merge pull request #2775 from blocktrron/master-v2022.1.2-bp
docs: add Gluon 2022.1.2 release notes
2023-01-30 17:22:31 +01:00
Jan-Niklas Burfeind
826e6541bc docs: remove trailing spaces
in Gluon 2022.1.2 release notes
2023-01-30 10:31:27 +01:00
David Bauer
83809093e0 docs: add Gluon 2022.1.2 release notes
(cherry picked from commit f000a605cd)
2023-01-29 23:33:26 +01:00
David Bauer
0a2eac6e5d
Merge pull request #2771 from blocktrron/upstream-master-updates
modules: update to latest HEAD
2023-01-28 22:59:58 +01:00
Maciej Krüger
ad8cfe02c2
gluon-web-model: fix Warning field not being hidden
"not self.title" doesn't work because of "self.title = title or """
2023-01-28 20:46:41 +01:00
Maciej Krüger
1f451d4021
gluon-web-model: fix issue with warning blocking save on private-wifi
The other bugfix which made this element inherit from AbstractValue
caused AbstractValue:validate() to be inherited aswell

Now added an if so validate only runs if a datatype is set
(since Element is meant as a generic way to extend web-model without
modifying web-model - also to add custom inputs - just hiding it behind an if sounds like a sane solution)
2023-01-28 20:42:52 +01:00
David Bauer
4fb43ab020 modules: update routing
74948d5 opennds: Release v9.10.0
2023-01-28 15:13:11 +01:00
David Bauer
154a245fc2 modules: update packages
4cb3303d5 nextdns: Update to version 1.39.4
7a756db00 python3: bump to version 3.10.9
bcd299d0c bash: update to version 5.2.15
080466064 pbr: bugfix: fix is_domain()
994dbb785 php8: update to 8.1.14
2023-01-28 15:13:09 +01:00
David Bauer
3597a8ba98 modules: update openwrt
ddeeb35007 mac80211: use 802.11ax iw modes
1f32774ded kernel: mtk-bmt: fix usage of _oob_read
2023-01-28 15:13:00 +01:00
David Bauer
03fe3d4a1d
Merge pull request #2595 from maurerle/feature/o2box6431
targets/lantiq-xrx200: add device Arcadyan VGV7510KW22 aka o2 Box 6431
2023-01-25 17:51:18 +01:00
Florian Maurer
f5a41dd3bc
lantiq-xrx200: add Arcadyan VGV7510KW22 (o2 Box 6431)
update lan, wan separation for o2 6431
2023-01-25 13:32:04 +01:00
Jan-Niklas Burfeind
11b2636ded
Merge pull request #2767 from herbetom/i18n_gluon-web-cellular_de
gluon-web-cellular: add German translation
2023-01-24 19:20:00 +01:00
Tom Herbers
7b25412541 gluon-web-cellular: add German translation
Co-authored-by: Jan-Niklas Burfeind <github@aiyionpri.me>
2023-01-24 16:07:25 +01:00
David Bauer
1df9fbeb54
Merge pull request #2766 from AiyionPrime/master-updates
Master updates
2023-01-23 23:28:26 +01:00
Jan-Niklas Burfeind
703313e2e0 modules: update packages
47fb67e5e v2ray-core: Update to 5.2.1
dc39bbef1 atlas-sw-probe: add more binaries
73cbdbc82 python-docutils: bump to version 0.19
328e64835 frp: update to 0.46.1
02b33536b frp: update to 0.46.0
5ba2c1314 nano: update to 7.2
05844d909 git: update to 2.34.6
2023-01-22 13:32:15 +01:00
Jan-Niklas Burfeind
d65cbdf32a modules: update openwrt
28e1770a3b tools/mkimage: build uboot with NO_SDL=1
1bead4c521 lantiq: xrx200: Fix wifi LED on o2 box 6431
2023-01-22 13:32:09 +01:00
Maciej Krüger
5baa8e07f1
gluon-mesh-olsrd: editorconfig/whitespace fixup 2023-01-20 03:01:24 +01:00
Maciej Krüger
ad378ce60f
gluon-mesh-olsrd: add olsr2 support 2023-01-20 03:01:24 +01:00
Maciej Krüger
052e08e771
gluon-mesh-olsrd: example site 2023-01-20 03:01:24 +01:00
David Bauer
760cf8e87f
Merge pull request #2763 from blocktrron/upstream-master-updates
modules: update master
2023-01-19 09:21:41 +01:00
David Bauer
4c544d4b79 modules: update packages
b4198d7ac xray-core: Update to 1.7.2
057cadb08 yq: Update to 4.30.8
1ae5d856c yq: Update to 4.30.7
37d658ce6 boinc-wrapper: add new package
b31bcb053 python-requests: update URL
28d0c75dd netperf: use git tarball
716c76b1d bc: use @DEBIAN
8e02db2d7 python-exceptiongroup: bump to 1.1.0
d8632f16d borgbackup: bump to 1.2.3
215b235c7 snowflake: update to 2.4.2
4e9dcb98f miredo: add miredo.conf conffile
9e9eb8240 pbr: update to 1.0.1-14
3232bd049 simple-adblock: update sed for allowing domains
2023-01-18 23:40:48 +01:00
David Bauer
13da5ece33 modules: update openwrt
9a12afc5e7 mbedtls: move source modification to patch
c1a26341ab Revert "toolchaini/gcc: fix libstdc++ dual abi model"
2023-01-18 23:40:38 +01:00
David Bauer
95b48893ac
Merge pull request #2760 from blocktrron/upstream-master-updates
modules: update to latest HEAD
2023-01-17 11:04:10 +01:00
David Bauer
e0256f40bd modules: update packages
2417b74fc atlas-sw-probe: update to version 5080
18fa44a14 golang: Update to 1.19.5
e81ff3fcc atlas-probe: update to 2.6.3
360bce6f3 xz: update to version 5.4.1
68d3d099b docker-compose: Update to version 2.15.1
2feedb1e2 speedtestpp: drop libxml2 dependency
df3799fe0 yt-dlp: update to 2023.1.6
69a8305f7 ocserv: disable libmaxminddb detection
5234dc93b knot: disable libmaxminddb detection
709172c95 python-pytz: bump to version 2022.7
0d346fe7f bind: disable geoip
e4a7f86bf docker-compose: Update to version 2.15.0
f709ba1ee stubby: Restart on interface trigger
4ff16a7bf stubby: Update to 0.4.3
8038868ba getdns: Update to 1.7.3
2023-01-17 00:00:53 +01:00
David Bauer
8e5c4b1edf modules: update openwrt
807483d336 dosfstools: switch to AC_CHECK_LIB
3bc6d2af76 tools/dosfstools: fix PKG_SOURCE
c0b4303d2e toolchaini/gcc: fix libstdc++ dual abi model
aa5023b9cd scripts/dl_github_archieve.py: fix generating unreproducible tar
e88e0ace7a ksmbd: Fix ZDI-CAN-18259
aca915e847 ksmbd: update to 3.4.6
2023-01-17 00:00:43 +01:00
David Bauer
355f9f7bae
Merge pull request #2759 from mweinelt/dnsmasq-dnssec-caching
Restore local DNS caching
2023-01-16 19:51:44 +01:00
David Bauer
474b26ae5b docs: remove redundant explanation 2023-01-16 19:49:33 +01:00
Martin Weinelt
d65ce73762
Revert "gluon-core: remove DNS cache feature"
This reverts commit 543eb17882.

Restores the dns caching configuration that should be feasible, since we
now require around 8 MB of flash.
2023-01-15 22:50:14 +01:00
Martin Weinelt
86502c46ba
Migrate to dnsmasq-full to restore query caching
We migrate to dnsmasq-full, while disabling most of its features.
Notably, dhcp and dnssec are compiled in, while other features of the
full variant are deselected.
2023-01-15 22:50:00 +01:00
Jan-Niklas Burfeind
acfd3f1744
Merge pull request #2758 from AiyionPrime/editorconfig-checker-270
workflows/docker: bump editorconfig-checker from 2.6.0 to 2.7.0
2023-01-15 20:01:44 +01:00
Jan-Niklas Burfeind
f1bff05c7b workflows/docker: bump editorconfig-checker from 2.6.0 to 2.7.0
- [Release notes](https://github.com/editorconfig-checker/editorconfig-checker/releases)
- [Commits](https://github.com/editorconfig-checker/editorconfig-checker/compare/2.6.0...2.7.0)

Signed-off-by: Jan-Niklas Burfeind <git@aiyionpri.me>
2023-01-15 17:17:20 +01:00
Andreas Ziegler
b2397ebf30
Merge pull request #2116 from freifunk-gluon/lint-editorconfig
actions: add editorconfig checker
2023-01-15 17:01:27 +01:00
Jan-Niklas Burfeind
17f94663a2 targets: fix indentation 2023-01-15 16:46:32 +01:00
Jan-Niklas Burfeind
edc1260743 editorconfig: add siteconf 2023-01-15 16:46:32 +01:00
Jan-Niklas Burfeind
f2d137b17a editorconfig: add exceptions for Makefiles
- [*.mk]
- [Makefile]

OpenWrt and Gluon use spaces for a better overview,
tabs are used for `make` to mark recipes as such.
2023-01-15 16:46:32 +01:00
Martin Weinelt
48b70a9ea5 contrib: Dockerfile: add editorconfig-checker
Co-authored-by: Jan-Niklas Burfeind <git@aiyionpri.me>
version bump to 2.6.0
aligned indentation
2023-01-15 16:46:25 +01:00
Martin Weinelt
c93eb80bbe actions: add editorconfig checker
Adds `lint-editorconfig` make target.

Co-authored-by: Jan-Niklas Burfeind <git@aiyionpri.me>
version bump to 2.6.0
2023-01-15 16:44:17 +01:00
Jan-Niklas Burfeind
0e5a5d31f5
Merge pull request #2751 from AiyionPrime/c-indentation
C indentation
2023-01-15 15:53:27 +01:00
Jan-Niklas Burfeind
ab89bacb55 libbatadv: fix c indentation 2023-01-12 21:46:55 +01:00
Jan-Niklas Burfeind
896dae59f6 gluon-web: fix c indentation 2023-01-12 21:46:55 +01:00
Jan-Niklas Burfeind
9c023fba57 gluon-status-page: fix c indentation 2023-01-12 21:46:55 +01:00
Jan-Niklas Burfeind
10613b9e52 gluon-status-page-mesh-batman-adv: fix c indentation 2023-01-12 21:46:55 +01:00
Jan-Niklas Burfeind
051c74b987 gluon-respondd: fix c indentation 2023-01-12 21:46:55 +01:00
Jan-Niklas Burfeind
e797ad4c2f gluon-radvd-filterd: fix c indentation 2023-01-12 21:46:55 +01:00
Jan-Niklas Burfeind
36f407877b gluon-neighbour-info: fix c indentation 2023-01-12 21:46:55 +01:00
Jan-Niklas Burfeind
ac7de8414e gluon-mesh-vpn-wireguard: fix c indentation 2023-01-12 21:46:55 +01:00
Jan-Niklas Burfeind
27d52b5ee5 gluon-mesh-vpn-fastd: fix c indentation 2023-01-12 21:46:55 +01:00
Jan-Niklas Burfeind
44c12e87ec gluon-mesh-batman-adv: fix c indentation 2023-01-12 21:46:55 +01:00
Jan-Niklas Burfeind
e43d4290a1 gluon-core: fix c indentation 2023-01-12 21:46:54 +01:00
Jan-Niklas Burfeind
6ff3217903 gluon-ebtables-limit-arp: fix c indentation 2023-01-12 21:46:52 +01:00
Jan-Niklas Burfeind
d7f869ad6d gluon-autoupdater: fix c indentation 2023-01-12 21:44:31 +01:00
126 changed files with 3268 additions and 1307 deletions

3
.ecrc Normal file
View File

@ -0,0 +1,3 @@
{
"Exclude": ["docs/_build"]
}

View File

@ -35,6 +35,9 @@ indent_size = 2
[*.lua]
[{Makefile,*.mk}]
indent_style = unset
[*.md]
indent_style = space
indent_size = 4
@ -58,3 +61,7 @@ indent_size = 2
[CMakeLists.txt]
indent_style = space
indent_size = 2
[{docs,contrib/ci}/*site*/**/*.conf]
indent_style = space
indent_size = 2

View File

@ -1,4 +1,4 @@
# Docs: <https://docs.github.com/en/free-pro-team@latest/github/administering-a-repository/customizing-dependency-updates>
# Docs: <https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/customizing-dependency-updates>
version: 2

View File

@ -13,7 +13,7 @@ jobs:
steps:
- uses: actions/checkout@v3
- name: Create backport PRs
uses: korthout/backport-action@v1.0.1
uses: korthout/backport-action@v1.2.0
with:
# Config README: https://github.com/korthout/backport-action#backport-action
pull_description: |-

View File

@ -34,7 +34,7 @@ jobs:
strategy:
fail-fast: false
matrix:
# Read back changd targets to create build matrix
# Read back changed targets to create build matrix
target: ${{ fromJSON(needs.changed.outputs.targets) }}
runs-on: ubuntu-latest
steps:

View File

@ -30,3 +30,25 @@ jobs:
run: ln -s ./docs/site-example ./site
- name: Lint shell code
run: make lint-sh
editorconfig:
name: Editorconfig
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install Dependencies
run: sudo apt install curl tar
- name: Install editorconfig-checker
env:
VERSION: 2.7.0
OS: linux
ARCH: amd64
run: |
curl -O -L -C - https://github.com/editorconfig-checker/editorconfig-checker/releases/download/$VERSION/ec-$OS-$ARCH.tar.gz
tar xzf ec-$OS-$ARCH.tar.gz
sudo mv ./bin/ec-$OS-$ARCH /usr/bin/editorconfig-checker
sudo chmod +x /usr/bin/editorconfig-checker
- name: Install example site
run: ln -s ./docs/site-example ./site
- name: Lint editorconfig
run: make lint-editorconfig

View File

@ -29,6 +29,7 @@ files["package/**/check_site.lua"] = {
"need",
"need_alphanumeric_key",
"need_array",
"need_array_elements_exclusive",
"need_array_of",
"need_boolean",
"need_chanlist",
@ -50,6 +51,7 @@ files["package/**/check_site.lua"] = {
files["package/**/luasrc/lib/gluon/config-mode/*"] = {
globals = {
"MultiListValue",
"DynamicList",
"Flag",
"Form",

View File

@ -11,6 +11,10 @@ sphinx:
# Optionally set the version of Python and requirements required to build your docs
python:
version: 3.8
install:
- requirements: docs/requirements.txt
build:
os: ubuntu-22.04
tools:
python: "3.8"

30
.woodpecker.yml Normal file
View File

@ -0,0 +1,30 @@
workspace:
base: /build
#clone:
# git:
# image: woodpeckerci/plugin-git
# settings:
# recursive: true
pipeline:
build-${TARGET}:
image: "ubuntu:latest"
pull: true
environment:
- input_version=v2022.1.4
- GLUON_SITEDIR=../site
- FORCE_UNSAFE_CONFIGURE=1
- GLUON_TARGET=${TARGET}
- GLUON_DEPRECATED=1
commands:
- echo ${TARGET}
# - git config --global init.defaultBranch main
# - sed -i 's/install/install file/' contrib/actions/install-dependencies.sh
# - sh contrib/actions/install-dependencies.sh
# - sh contrib/actions/run-build.sh ${TARGET}
matrix:
TARGET:
- ath79-generic
- x86-64

View File

@ -23,8 +23,8 @@ using other parts or why the proposed change breaks other parts of the system.
They might even refuse the idea altogether - after all, they have to sleep well
after merging the changes, too.
The preferred way to discuss in the IRC channel ([#gluon] on irc.hackint.org)
or on the [mailing list], however, you can also open a new issue on Github to
The preferred way to discuss is in the IRC channel ([#gluon] on irc.hackint.org)
or on the [mailing list], however, you can also open a new issue on GitHub to
discuss there. We maintain a [list of rejected features] and we'd like to
kindly ask you to review it first. In general, looking for duplicates may save
you some time.

View File

@ -1,7 +1,7 @@
The code of Project Gluon may be distributed under the following terms, unless
noted otherwise in individual files or subtrees.
Copyright (c) 2013-2022, Project Gluon
Copyright (c) Project Gluon
All rights reserved.
Redistribution and use in source and binary forms, with or without

View File

@ -151,7 +151,10 @@ list-targets: FORCE
echo "$$target"
done
lint: lint-lua lint-sh
lint: lint-editorconfig lint-lua lint-sh
lint-editorconfig: FORCE
@scripts/lint-editorconfig.sh
lint-lua: FORCE
@scripts/lint-lua.sh

View File

@ -1,5 +1,5 @@
[![Build Gluon](https://github.com/freifunk-gluon/gluon/actions/workflows/build-gluon.yml/badge.svg?branch=master)](https://github.com/freifunk-gluon/gluon/actions/workflows/build-gluon.yml)
[![License](https://img.shields.io/badge/License-BSD%202--Clause-orange.svg)](https://opensource.org/licenses/BSD-2-Clause)
[![License](https://img.shields.io/badge/License-BSD%202--Clause-orange.svg)](https://opensource.org/license/bsd-2-clause/)
[![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/freifunk-gluon/gluon?sort=semver)](https://github.com/freifunk-gluon/gluon/releases/latest)
# Gluon

View File

@ -3,6 +3,6 @@
set -e
apt-get -y update
apt-get -y install git subversion build-essential python3 gawk unzip libncurses5-dev zlib1g-dev libssl-dev wget time qemu-utils
apt-get -y install git build-essential python3 gawk unzip libncurses5-dev zlib1g-dev libssl-dev libelf-dev wget rsync time qemu-utils
apt-get -y clean
rm -rf /var/lib/apt/lists/*

1
contrib/ci/olsr-site/i18n Symbolic link
View File

@ -0,0 +1 @@
../minimal-site/i18n

View File

@ -0,0 +1 @@
../minimal-site/modules

View File

@ -0,0 +1,176 @@
-- This is an example site configuration for Gluon v2022.1
--
-- Take a look at the documentation located at
-- https://gluon.readthedocs.io/ for details.
--
-- This configuration will not work as is. You're required to make
-- community specific changes to it!
{
-- Used for generated hostnames, e.g. freifunk-abcdef123456. (optional)
-- hostname_prefix = 'freifunk-',
-- Name of the community.
site_name = 'Continuous Integration',
-- Shorthand of the community.
site_code = 'ci',
-- 32 bytes of random data, encoded in hexadecimal
-- This data must be unique among all sites and domains!
-- Can be generated using: echo $(hexdump -v -n 32 -e '1/1 "%02x"' </dev/urandom)
domain_seed = 'e9608c4ff338b920992d629190e9ff11049de1dfc3f299eac07792dfbcda341c',
-- Prefixes used by clients within the mesh.
-- prefix6 is required, prefix4 can be omitted if next_node.ip4
-- is not set.
prefix6 = 'fdff:cafe:cafe:cafe::/64',
-- Prefixes used by nodes within the mesh
node_prefix6 = 'fdff:cafe:cafe:cafe::/64',
-- Timezone of your community.
-- See https://openwrt.org/docs/guide-user/base-system/system_configuration#time_zones
timezone = 'CET-1CEST,M3.5.0,M10.5.0/3',
-- List of NTP servers in your community.
-- Must be reachable using IPv6!
-- ntp_servers = {'1.ntp.services.ffxx'},
-- Wireless regulatory domain of your community.
regdom = 'DE',
-- Wireless configuration for 2.4 GHz interfaces.
wifi24 = {
-- Wireless channel.
channel = 1,
-- ESSIDs used for client network.
ap = {
ssid = 'gluon-ci-ssid',
-- disabled = true, -- (optional)
-- Configuration for a backward compatible OWE network below.
owe_ssid = 'owe.gluon-ci-ssid', -- (optional - SSID for OWE client network)
owe_transition_mode = true, -- (optional - enables transition-mode - requires ssid as well as owe_ssid)
},
mesh = {
-- Adjust these values!
id = 'ueH3uXjdp', -- usually you don't want users to connect to this mesh-SSID, so use a cryptic id that no one will accidentally mistake for the client WiFi
mcast_rate = 12000,
-- disabled = true, -- (optional)
},
},
-- Wireless configuration for 5 GHz interfaces.
-- This should be equal to the 2.4 GHz variant, except
-- for channel.
wifi5 = {
channel = 44,
outdoor_chanlist = '100-140',
ap = {
ssid = 'gluon-ci-ssid',
-- disabled = true, -- (optional)
-- Configuration for a backward compatible OWE network below.
owe_ssid = 'owe.gluon-ci-ssid', -- (optional - SSID for OWE client network)
owe_transition_mode = true, -- (optional - enables transition-mode - requires ssid as well as owe_ssid)
},
mesh = {
-- Adjust these values!
id = 'ueH3uXjdp',
mcast_rate = 12000,
},
},
-- The next node feature allows clients to always reach the node it is
-- connected to using a known IP address.
next_node = {
-- anycast IPs of all nodes
name = { 'nextnode.location.community.example.org', 'nextnode', 'nn' },
ip4 = '10.0.0.1',
ip6 = 'fd::1',
},
-- Options specific to routing protocols (optional)
mesh = {
vxlan = true,
olsrd = {},
},
mesh_vpn = {
-- enabled = true,
fastd = {
-- Refer to https://fastd.readthedocs.io/en/latest/ to better understand
-- what these options do.
-- List of crypto-methods to use.
methods = {'salsa2012+umac'},
mtu = 1312,
-- configurable = true,
-- syslog_level = 'warn',
groups = {
backbone = {
-- Limit number of connected peers to reduce bandwidth.
limit = 1,
-- List of peers.
peers = {
},
-- Optional: nested peer groups
-- groups = {
-- backbone_sub = {
-- ...
-- },
-- ...
-- },
},
-- Optional: additional peer groups, possibly with other limits
-- backbone2 = {
-- ...
-- },
},
},
bandwidth_limit = {
-- The bandwidth limit can be enabled by default here.
enabled = false,
-- Default upload limit (kbit/s).
egress = 200,
-- Default download limit (kbit/s).
ingress = 3000,
},
},
autoupdater = {
-- Default branch (optional), can be overridden by setting GLUON_AUTOUPDATER_BRANCH when building.
-- Set GLUON_AUTOUPDATER_ENABLED to enable the autoupdater by default for newly installed nodes.
branch = 'stable',
-- List of branches. You may define multiple branches.
branches = {
stable = {
name = 'stable',
-- List of mirrors to fetch images from. IPv6 required!
mirrors = {'http://1.updates.services.ffhl/stable/sysupgrade'},
-- Number of good signatures required.
-- Have multiple maintainers sign your build and only
-- accept it when a sufficient number of them have
-- signed it.
good_signatures = 0,
-- List of public keys of maintainers.
pubkeys = {
},
},
},
},
}

View File

@ -0,0 +1,57 @@
## gluon site.mk makefile example
## GLUON_FEATURES
# Specify Gluon features/packages to enable;
# Gluon will automatically enable a set of packages
# depending on the combination of features listed
GLUON_FEATURES := \
autoupdater \
ebtables-filter-multicast \
ebtables-filter-ra-dhcp \
ebtables-limit-arp \
mesh-olsrd \
mesh-vpn-fastd \
respondd \
status-page \
web-advanced \
web-wizard
GLUON_FEATURES_standard := \
wireless-encryption-wpa3
## GLUON_SITE_PACKAGES
# Specify additional Gluon/OpenWrt packages to include here;
# A minus sign may be prepended to remove a packages from the
# selection that would be enabled by default or due to the
# chosen feature flags
GLUON_SITE_PACKAGES := iwinfo
## DEFAULT_GLUON_RELEASE
# version string to use for images
# gluon relies on
# opkg compare-versions "$1" '>>' "$2"
# to decide if a version is newer or not.
DEFAULT_GLUON_RELEASE := 0.6+exp$(shell date '+%Y%m%d')
# Variables set with ?= can be overwritten from the command line
## GLUON_RELEASE
# call make with custom GLUON_RELEASE flag, to use your own release version scheme.
# e.g.:
# $ make images GLUON_RELEASE=23.42+5
# would generate images named like this:
# gluon-ff%site_code%-23.42+5-%router_model%.bin
GLUON_RELEASE ?= $(DEFAULT_GLUON_RELEASE)
# Default priority for updates.
GLUON_PRIORITY ?= 0
# Region code required for some images; supported values: us eu
GLUON_REGION ?= eu
# Languages to include
GLUON_LANGS ?= en de

View File

@ -5,7 +5,6 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates \
file \
git \
subversion \
python3 \
build-essential \
gawk \
@ -24,6 +23,12 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
RUN mkdir /tmp/ec &&\
wget -O /tmp/ec/ec-linux-amd64.tar.gz https://github.com/editorconfig-checker/editorconfig-checker/releases/download/2.7.0/ec-linux-amd64.tar.gz &&\
tar -xvzf /tmp/ec/ec-linux-amd64.tar.gz &&\
mv bin/ec-linux-amd64 /usr/local/bin/editorconfig-checker &&\
rm -rf /tmp/ec
RUN useradd -d /gluon gluon
USER gluon

View File

@ -20,7 +20,7 @@
# -- Project information -----------------------------------------------------
project = 'Gluon'
copyright = '2015-2022, Project Gluon'
copyright = 'Project Gluon'
author = 'Project Gluon'
# The short X.Y version
@ -71,6 +71,13 @@ pygments_style = None
# Don't highlight code blocks unless requested explicitly
highlight_language = 'none'
# Ignore links to the config mode, as well as anchors on on hackint, which are
# used to mark channel names and do not exist. Regular links are not effected.
linkcheck_ignore = [
'http://192.168.1.1',
'https://webirc.hackint.org/#'
]
# -- Options for HTML output -------------------------------------------------

View File

@ -77,7 +77,7 @@ apply:
- use tabs instead of spaces
- trailing whitespaces must be eliminated
- files need to end with a final newline
- newlines need to have unix line endings (lf)
- newlines need to have Unix line endings (lf)
To that end we provide a ``.editorconfig`` configuration, which is supported by most
of the editors out there.

View File

@ -0,0 +1,51 @@
DNS caching
===========
User experience may be greatly improved when dns is accelerated. Also, it
seems like a good idea to keep the number of packages being exchanged
between node and gateway as small as possible. In order to do this, a
DNS cache may be used on a node. The dnsmasq instance listening on port
53 on the node will be reconfigured to answer requests, use a list of
upstream servers and a specific cache size if the options listed below are
added to site.conf. Upstream servers are the DNS servers which are normally
used by the nodes to resolve hostnames (e.g. gateways/supernodes).
There are the following settings:
servers
cacheentries
To use the node's DNS server, both options should be set. The node will cache at
most 'cacheentries' many DNS records in RAM. The 'servers' list will be used to
resolve the received DNS queries if the request cannot be answered from
cache. Gateways should announce the "next node" address via DHCP and RDNSS (if
any). Note that not setting 'servers' here will lead to DNS not working: Once
the gateways all announce the "next node" address for DNS, there is no way for
nodes to automatically determine DNS servers. They have to be baked into the
firmware.
If these settings do not exist, the cache is not initialized and RAM usage will
not increase.
When next_node.name is set, an A record and an AAAA record for the
next-node IP address are placed in the dnsmasq configuration. This means that
the content of next_node.name may be resolved even without upstream connectivity.
It is suggested to use the same name as the DNS server provides:
e.g. nextnode.location.community.example.org (This way the name also works if a
client uses static DNS Servers). Hint: If next_node.name does not contain a dot
some browsers would open the searchpage instead.
::
dns = {
cacheentries = 5000,
servers = { '2001:db8::1', },
},
next_node = {
name = { 'nextnode.location.community.example.org', 'nextnode', 'nn' },
ip6 = '2001:db8:8::1',
ip4 = '198.51.100.1',
}
Each cache entry will occupy about 90 bytes of RAM.

View File

@ -1,26 +0,0 @@
DNS forwarder
=============
A Gluon node can be configured to act as a DNS forwarder. Requests for the
next-node hostname(s) can be answered locally, without querying the upstream
resolver.
**Note:** While this reduces answer time and allows to use the next-node
hostname without upstream connectivity, this feature should not be used for
next-node hostnames that are FQDN when the zone uses DNSSEC.
One or more upstream resolvers can be configured in the *dns.servers* setting.
When *next_node.name* is set, A and/or AAAA records for the next-node IP
addresses are placed in the dnsmasq configuration.
::
dns = {
servers = { '2001:db8::1', },
},
next_node = {
name = { 'nextnode.location.community.example.org', 'nextnode', 'nn' },
ip6 = '2001:db8:8::1',
ip4 = '198.51.100.1',
}

View File

@ -77,7 +77,7 @@ should always appear before ``null`` in the configuration when both are enabled.
fastd v22 or newer is needed for the ``null@l2tp`` method.
It is often not necessary to enable L2TP offloading on supernodes for
performance reasons. Nodes using offloading can communicate with supornodes that
performance reasons. Nodes using offloading can communicate with supernodes that
don't use offloading as long as both use the ``null@l2tp`` method.
@ -107,7 +107,7 @@ However, the important changes to the fastd config on your Supernode are:
Note that in ``multitap`` mode, which is required when using L2TP offloading,
fastd will create one interface per peer on the supernode's. This allows
offloading the L2TP forwarding into the kernel space. But this also means added
copmlexity with regards to handling those interfaces.
complexity with regards to handling those interfaces.
There are two main options on how you can handle this:
@ -191,6 +191,16 @@ negative effects. Only when a previously connected node reboots the effect
comes into play, as the gateway still knows about the old timestamp of the gluon
node.
gluon-mesh-vpn-key-translate
""""""""""""""""""""""""""""
Many communities already possess a collection of active fastd-keys when they
plan migrating their community to WireGuard.
These public keys known on the server-side can be derived into their WireGuard
equivalent using `gluon-mesh-vpn-key-translate <https://github.com/AiyionPrime/gluon-mesh-vpn-key-translate>`__.
The routers do the necessary reencoding of the private key seamlessly
when updating firmware from fastd to the WireGuard variant.
Gateway / Supernode Configuration
"""""""""""""""""""""""""""""""""

View File

@ -25,7 +25,7 @@ Several Freifunk communities in Germany use Gluon as the foundation of their Fre
features/wlan-configuration
features/private-wlan
features/wired-mesh
features/dns-forwarder
features/dns-cache
features/monitoring
features/multidomain
features/authorized-keys

View File

@ -5,6 +5,9 @@ Release Notes
:caption: Gluon 2022.1
:maxdepth: 2
v2022.1.4
v2022.1.3
v2022.1.2
v2022.1.1
v2022.1

View File

@ -88,6 +88,8 @@ New features
* Add support for making nodes a DNS cache for clients
(`#1000 <https://github.com/freifunk-gluon/gluon/pull/1000>`_)
See also: :doc:`../features/dns-cache`
* Add L2TP via tunneldigger as an alternative VPN system
(`#978 <https://github.com/freifunk-gluon/gluon/pull/978>`_)

View File

@ -28,7 +28,7 @@ Bugfixes
As the path to both config mode and status page were changed between versions
users could be affected by a redirect to a no more valid URL.
* batman-adv has received two bugfixes, which were `backported <https://github.com/openwrt-routing/packages/commit/7bf62cc8b556b5046f9bbd37687376fe9ea175bb>`_ from v2018.4
* batman-adv has received two bugfixes, which were `backported <https://github.com/openwrt/routing/commit/7bf62cc8b556b5046f9bbd37687376fe9ea175bb>`_ from v2018.4
Other changes
~~~~~~~~~~~~~

View File

@ -0,0 +1,37 @@
Gluon 2022.1.2
==============
Bugfixes
--------
* Various build-errors which sporadically occur when building with a large thread-count have been fixed
* Android devices do not lose their IPv6 connectivity after extended idle-time
* The 802.11s mesh network is now using 802.11ax HE-modes when supported by hardware
Known issues
------------
* Upgrading EdgeRouter-X from versions before v2020.1.x may lead to a soft-bricked state due to bad blocks on the NAND flash which the NAND driver before this release does not handle well.
(`#1937 <https://github.com/freifunk-gluon/gluon/issues/1937>`_)
* The integration of the BATMAN_V routing algorithm is incomplete.
- Mesh neighbors don't appear on the status page. (`#1726 <https://github.com/freifunk-gluon/gluon/issues/1726>`_)
Many tools have the BATMAN_IV metric hardcoded, these need to be updated to account for the new throughput
metric.
- Throughput values are not correctly acquired for different interface types.
(`#1728 <https://github.com/freifunk-gluon/gluon/issues/1728>`_)
This affects virtual interface types like bridges and VXLAN.
* Default TX power on many Ubiquiti devices is too high, correct offsets are unknown
(`#94 <https://github.com/freifunk-gluon/gluon/issues/94>`_)
Reducing the TX power in the Advanced Settings is recommended.
* In configurations without VXLAN, the MAC address of the WAN interface is modified even when Mesh-on-WAN is disabled
(`#496 <https://github.com/freifunk-gluon/gluon/issues/496>`_)
This may lead to issues in environments where a fixed MAC address is expected (like VMware when promiscuous mode is disallowed).

View File

@ -0,0 +1,40 @@
Gluon 2022.1.3
==============
Bugfixes
--------
* Ipq40xx Wave2 devices temporarily use non-ct firmware again to work around 802.11s unicast package loss in ath10k-ct
(`#2692 <https://github.com/freifunk-gluon/gluon/issues/2692>`_)
* Modify kernel builds slightly to work around a boot hang on various devices based on the QCA9563 SoC - especially the Unifi AC-* devices
(`#2784 <https://github.com/freifunk-gluon/gluon/issues/2784>`_)
* Work around an issue with wifi setup timing by waiting a bit while device initialisation is ongoing
(`#2779 <https://github.com/freifunk-gluon/gluon/issues/2779>`_)
Known issues
------------
* Upgrading EdgeRouter-X from versions before v2020.1.x may lead to a soft-bricked state due to bad blocks on the NAND flash which the NAND driver before this release does not handle well.
(`#1937 <https://github.com/freifunk-gluon/gluon/issues/1937>`_)
* The integration of the BATMAN_V routing algorithm is incomplete.
- Mesh neighbors don't appear on the status page. (`#1726 <https://github.com/freifunk-gluon/gluon/issues/1726>`_)
Many tools have the BATMAN_IV metric hardcoded, these need to be updated to account for the new throughput
metric.
- Throughput values are not correctly acquired for different interface types.
(`#1728 <https://github.com/freifunk-gluon/gluon/issues/1728>`_)
This affects virtual interface types like bridges and VXLAN.
* Default TX power on many Ubiquiti devices is too high, correct offsets are unknown
(`#94 <https://github.com/freifunk-gluon/gluon/issues/94>`_)
Reducing the TX power in the Advanced Settings is recommended.
* In configurations without VXLAN, the MAC address of the WAN interface is modified even when Mesh-on-WAN is disabled
(`#496 <https://github.com/freifunk-gluon/gluon/issues/496>`_)
This may lead to issues in environments where a fixed MAC address is expected (like VMware when promiscuous mode is disallowed).

136
docs/releases/v2022.1.4.rst Normal file
View File

@ -0,0 +1,136 @@
Gluon 2022.1.4
==============
Added hardware support
----------------------
ath79-generic
~~~~~~~~~~~~~
- LibreRouter
- LibreRouter (v1)
- Teltonika
- RUT230 (v1)
ath79-nand
~~~~~~~~~~
- Aerohive
- HiveAP 121
- NETGEAR
- WNDR4300 (v1)
lantiq-xrx200
~~~~~~~~~~~~~
- Arcadyan
- o2 Box 6431
ramips-mt7621
~~~~~~~~~~~~~
- Cudy
- X6 (v1, v2)
- D-Link
- DAP-X1860 (A1)
- GL.iNet
- GL-MT1300
- Mercusys
- MR70X (v1)
- Xiaomi
- Mi Router 3G
ramips-mt76x8
~~~~~~~~~~~~~
- TP-Link
- RE200 (v3)
realtek-rtl838x
~~~~~~~~~~~~~~~
- D-Link
- DGS-1210-10P
ipq40xx-generic
~~~~~~~~~~~~~~~
- AVM
- FRITZBox 7520
ipq40xx-mikrotik
~~~~~~~~~~~~~~~~
- Mikrotik
- hAP ac2
Bugfixes
--------
* Enterasys WS-AP3705i now uses the correct image-name for use with the autoupdater
(`#2819 <https://github.com/freifunk-gluon/gluon/issues/2819>`_)
* Reduce memory Usage for ath10k on ZyXEL WRE6606 devices
(`#2842 <https://github.com/freifunk-gluon/gluon/issues/2842>`_)
* Replace the Workaround for failed boots on ath79 with a proper fix.
(`#2784 <https://github.com/freifunk-gluon/gluon/issues/2784#issuecomment-1452126501>`_)
* AVM FRITZ!Box 7360 v2 flashed with the incorrect image for v1 will automatically update to the correct image.
* Revert OOM inducing switch of ath79 Wave2 firmware back to -ct
(`#2879 <https://github.com/freifunk-gluon/gluon/pull/2879>`_)
Known issues
------------
* Upgrading EdgeRouter-X from versions before v2020.1.x may lead to a soft-bricked state due to bad blocks on the NAND flash which the NAND driver before this release does not handle well.
(`#1937 <https://github.com/freifunk-gluon/gluon/issues/1937>`_)
* The integration of the BATMAN_V routing algorithm is incomplete.
- Mesh neighbors don't appear on the status page. (`#1726 <https://github.com/freifunk-gluon/gluon/issues/1726>`_)
Many tools have the BATMAN_IV metric hardcoded, these need to be updated to account for the new throughput
metric.
- Throughput values are not correctly acquired for different interface types.
(`#1728 <https://github.com/freifunk-gluon/gluon/issues/1728>`_)
This affects virtual interface types like bridges and VXLAN.
* Default TX power on many Ubiquiti devices is too high, correct offsets are unknown
(`#94 <https://github.com/freifunk-gluon/gluon/issues/94>`_)
Reducing the TX power in the Advanced Settings is recommended.
* In configurations without VXLAN, the MAC address of the WAN interface is modified even when Mesh-on-WAN is disabled
(`#496 <https://github.com/freifunk-gluon/gluon/issues/496>`_)
This may lead to issues in environments where a fixed MAC address is expected (like VMware when promiscuous mode is disallowed).

View File

@ -1 +1 @@
sphinx-rtd-theme==1.1.1
sphinx-rtd-theme==1.2.0

View File

@ -25,18 +25,20 @@ An example configuration can be found in the Gluon repository at *docs/site-exam
Dependencies
------------
To build Gluon, several packages need to be installed on the system. On a
freshly installed Debian Stretch system the following packages are required:
freshly installed Debian Bullseye system the following packages are required:
* `git` (to get Gluon and other dependencies)
* `subversion`
* `python3`
* `build-essential`
* `ecdsautils` (to sign firmware, see `contrib/sign.sh`)
* `gawk`
* `unzip`
* `libncurses-dev` (actually `libncurses5-dev`)
* `libz-dev` (actually `zlib1g-dev`)
* `libssl-dev`
* `libelf-dev` (to build x86-64)
* `wget`
* `rsync`
* `time` (built-in `time` doesn't work)
* `qemu-utils`

View File

@ -15,7 +15,7 @@ Consider these key values:
- and configure `MSS clamping`_ accordingly,
- and announce your link MTU via Router Advertisements and DHCP
.. _MSS clamping: https://www.tldp.org/HOWTO/Adv-Routing-HOWTO/lartc.cookbook.mtu-mss.html
.. _MSS clamping: https://tldp.org/HOWTO/Adv-Routing-HOWTO/lartc.cookbook.mtu-mss.html
- Encapsulation: Account for the overhead created by the configured mesh protocol
encapsulating the payload, which is up to 32 Byte (14 Byte Ethernet + 18 Byte

View File

@ -448,13 +448,8 @@ interfaces \: optional
The ``client`` role requires exclusive control over an interface. When
the ``client`` role is assigned to an interface at the same time as other
roles (like ``'client', 'mesh'`` in the above example), the other roles take
precedence (enabling ``mesh``, but not ``client`` in the example).
Such a default configuration still fulfills a purpose (and is in fact the
recommended way to enable "Mesh-on-LAN" by default): The "LAN interface
meshing" checkbox in the advanced network settings will only add or remove
the ``mesh`` role, so the ``client`` role must already be in the configuration
to make the LAN port a regular client interface when the checkbox is disabled.
precedence (enabling ``mesh``, but not ``client`` in the example). In that
case, the ``client`` role is removed from the config of the interface.
All interface settings are optional. If unset, the following defaults are
used:

View File

@ -57,6 +57,10 @@ ath79-generic
- JT-OR750i
* LibreRouter
- LibreRouter v1 [#missing_radios]_
* Netgear
- WNDR3700 (v1, v2)
@ -139,10 +143,15 @@ ath79-generic
ath79-nand
----------
* Aerohive
- HiveAP 121
* GL.iNet
- GL-AR300M
- GL-AR750S
- GL-XE300
* Netgear
@ -238,6 +247,10 @@ ipq806x-generic
lantiq-xrx200
-------------
* Arcadyan
- VGV7510KW22 (o2 Box 6431)
* AVM
- FRITZ!Box 7360 (v1, v2) [#avmflash]_ [#lan_as_wan]_
@ -245,6 +258,10 @@ lantiq-xrx200
- FRITZ!Box 7362 SL [#eva_ramboot]_ [#lan_as_wan]_
- FRITZ!Box 7412 [#eva_ramboot]_
* TP-Link
- TD-W8970 (v1) [#lan_as_wan]_
lantiq-xway
-----------
@ -343,12 +360,23 @@ ramips-mt7621
* Cudy
- WR1300 (v1)
- WR2100
- X6 (v1, v2)
* D-Link
- DAP-X1860 (A1)
- DIR-860L (B1)
* GL.iNet
- GL-MT1300
* Mercusys
- MR70X (v1)
* NETGEAR
- EX6150 (v1)
@ -496,6 +524,10 @@ Footnotes
.. [#lan_as_wan]
All LAN ports on this device are used as WAN.
.. [#missing_radios]
This device contains more than two WLAN radios, which is currently
unsupported by Gluon. Only the first two radios will work.
.. [#modular_ethernet]
These devices follow a modular principle,
which means even basic functionality like ethernet is provided by an expansion-board,

View File

@ -15,7 +15,7 @@ The following targets for x86 images exist:
There are three images:
* `generic` (compressed "raw" image, can written to a disk directly or booted with qemu)
* `generic` (compressed "raw" image, can be written to a disk directly or booted with qemu)
* `virtualbox` (VDI image)
* `vmware` (VMDK image)

View File

@ -2,15 +2,15 @@ GLUON_FEEDS='packages routing gluon'
OPENWRT_REPO=https://github.com/openwrt/openwrt.git
OPENWRT_BRANCH=openwrt-22.03
OPENWRT_COMMIT=4b7f9e42e2bff91d8eec2f195d0bb3bb6f6c43e2
OPENWRT_COMMIT=e500494771537b9f42f78e4d907bed18b6383606
PACKAGES_PACKAGES_REPO=https://github.com/openwrt/packages.git
PACKAGES_PACKAGES_BRANCH=openwrt-22.03
PACKAGES_PACKAGES_COMMIT=4b30c97b57aa158cbb70190d0aab8bb472875b6a
PACKAGES_PACKAGES_COMMIT=55eed1761207f4dfdb8e7d79138f6f65c8849b50
PACKAGES_ROUTING_REPO=https://github.com/openwrt/routing.git
PACKAGES_ROUTING_BRANCH=openwrt-22.03
PACKAGES_ROUTING_COMMIT=1a87333f268bcf0a11e3a665a357cb0d4ec2d680
PACKAGES_ROUTING_COMMIT=1cc7676b9f32acc30ec47f15fcb70380d5d6ef01
PACKAGES_GLUON_REPO=https://github.com/freifunk-gluon/packages.git
PACKAGES_GLUON_COMMIT=04d2b6ffbb6ee02012f2733b7752d8db0d12eaff
PACKAGES_GLUON_COMMIT=29912ec6308fd10b47763b4cf28a638d07f59973

File diff suppressed because one or more lines are too long

View File

@ -273,6 +273,10 @@ input[type=checkbox] {
text-align: center;
font-size: 1.7em;
}
&[disabled] + label {
background-color: #dcdcdc !important;
}
}
input[type=radio] {
@ -366,6 +370,13 @@ input[type=password] {
min-width: 20em;
}
.gluon-multi-list-option-descr {
display: inline-block;
vertical-align: top;
margin-top: 0.35em;
margin-left: 0.4em;
}
.gluon-button {
@include button;

View File

@ -66,6 +66,7 @@ need_boolean(in_site({'poe_passthrough'}), false)
if need_table({'dns'}, nil, false) then
need_string_array_match({'dns', 'servers'}, '^[%x:]+$')
need_number({'dns', 'cacheentries'}, false)
end
need_string_array(in_domain({'next_node', 'name'}), false)
@ -76,7 +77,11 @@ need_boolean(in_domain({'mesh', 'vxlan'}), false)
local interfaces_roles = {'client', 'uplink', 'mesh'}
for _, config in ipairs({'wan', 'lan', 'single'}) do
need_array_of(in_site({'interfaces', config, 'default_roles'}), interfaces_roles, false)
local default_roles = in_site({'interfaces', config, 'default_roles'})
need_array_of(default_roles, interfaces_roles, false)
need_array_elements_exclusive(default_roles, 'client', 'mesh', false)
need_array_elements_exclusive(default_roles, 'client', 'uplink', false)
end
obsolete({'mesh_on_wan'}, 'Use interfaces.wan.default_roles.')

View File

@ -1,5 +1,10 @@
#!/bin/sh
# Work around an issue with wifi setup timing by waiting a bit
# while device initialisation is ongoing.
# https://github.com/freifunk-gluon/gluon/issues/2779
sleep 3
gluon-reconfigure
exit 0

View File

@ -55,6 +55,14 @@ local function merge(a, b)
return m
end
local function contains(table, val)
for i=1,#table do
if table[i] == val then
return true
end
end
return false
end
local function path_to_string(path)
if path.is_value then
@ -370,6 +378,21 @@ function M.need_array_of(path, array, required)
return M.need_array(path, function(e) M.need_one_of(e, array) end, required)
end
function M.need_array_elements_exclusive(path, a, b, required)
local val = need_type(path, 'table', required, 'be an array')
if not val then
return nil
end
if contains(val, a) and contains(val, b) then
config_error(conf_src(path),
'expected %s to contain only one of the elements %s and %s, but not both.',
path_to_string(path), format(a), format(b))
end
return val
end
function M.need_chanlist(path, channels, required)
local valid_chanlist = check_chanlist(channels)
return M.need(path, valid_chanlist, required,

View File

@ -87,6 +87,9 @@ local primary_addrs = {
{'ipq806x', 'generic', {
'netgear,r7800',
}},
{'lantiq', 'xrx200', {
'arcadyan,vgv7510kw22-nor',
}},
{'lantiq', 'xway', {
'netgear,dgn3500b',
}},

View File

@ -67,6 +67,10 @@ elseif platform.match('ramips', 'mt7621', {
'netgear,wac104',
}) then
lan_ifname, wan_ifname = 'lan2 lan3 lan4', 'lan1'
elseif platform.match('lantiq', 'xrx200', {
'arcadyan,vgv7510kw22-nor',
}) then
lan_ifname, wan_ifname = 'lan1 lan2 lan3 lan4', 'wan'
elseif platform.match('realtek', 'rtl838x', {
'd-link,dgs-1210-10p',
}) then

View File

@ -63,4 +63,19 @@ for iface in pairs(interfaces) do
end
end
-- Fix invalid role configurations
uci:foreach('gluon', 'interface', function(interface)
local function has_role(role)
return util.contains(interface.role, role)
end
if has_role('client') and (has_role('mesh') or has_role('uplink')) then
-- remove 'client' role
util.remove_from_set(interface.role, 'client')
uci:set('gluon', interface['.name'], 'role', interface.role)
end
end)
uci:save('gluon')

View File

@ -4,6 +4,19 @@ local uci = require('simple-uci').cursor()
local sysconfig = require 'gluon.sysconfig'
local util = require 'gluon.util'
local json = require 'jsonc'
local function get_network_mac(name)
local board_data = json.load('/etc/board.json')
local network_data = (board_data or {}).network
if network_data == nil then
return nil
end
local ifdata = network_data[name] or {}
return ifdata.macaddr
end
local wan = uci:get_all('network_gluon-old', 'wan') or {}
local wan6 = uci:get_all('network_gluon-old', 'wan6') or {}
@ -27,6 +40,7 @@ uci:section('network', 'interface', 'wan', {
ipaddr = wan.ipaddr,
netmask = wan.netmask,
gateway = wan.gateway,
macaddr = get_network_mac('wan'),
ifname = util.get_role_interfaces(uci, 'uplink'),
type = 'bridge',
igmp_snooping = true,

View File

@ -53,16 +53,12 @@ local function is_outdoor()
end
local function get_channel(radio, config)
local channel
if wireless.preserve_channels(uci) then
-- preserved channel always wins
channel = radio.channel
elseif radio.band == '5g' and is_outdoor() then
if radio.band == '5g' and is_outdoor() then
-- actual channel will be picked and probed from chanlist
channel = 'auto'
return 'auto'
end
return channel or config.channel()
return config.channel()
end
local function get_htmode(radio)
@ -179,6 +175,20 @@ local function configure_mesh_wireless(radio, index, config, disabled)
)
end
local function set_channels(radio, radio_name, config)
if wireless.preserve_channels(uci) then
return
end
local channel = get_channel(radio, config)
uci:set('wireless', radio_name, 'channel', channel)
local chanlist
if radio.band == '5g' and is_outdoor() then
chanlist = config.outdoor_chanlist()
end
uci:set('wireless', radio_name, 'channels', chanlist)
end
wireless.foreach_radio(uci, function(radio, index, config)
local radio_name = radio['.name']
@ -194,13 +204,13 @@ wireless.foreach_radio(uci, function(radio, index, config)
return
end
local channel = get_channel(radio, config)
local htmode = get_htmode(radio)
local beacon_interval = config.beacon_interval()
uci:delete('wireless', radio_name, 'disabled')
uci:set('wireless', radio_name, 'channel', channel)
set_channels(radio, radio_name, config)
uci:set('wireless', radio_name, 'htmode', htmode)
uci:set('wireless', radio_name, 'country', site.regdom())
@ -218,13 +228,10 @@ wireless.foreach_radio(uci, function(radio, index, config)
uci:set_list('wireless', radio_name, 'hostapd_options', hostapd_options)
if is_outdoor() then
uci:set('wireless', radio_name, 'channels', config.outdoor_chanlist())
-- enforce outdoor channels by filtering the regdom for outdoor channels
uci:set('wireless', radio_name, 'country3', '0x4f')
configure_mesh_wireless(radio, index, config, true)
else
uci:delete('wireless', radio_name, 'channels')
uci:delete('wireless', radio_name, 'country3')
configure_mesh_wireless(radio, index, config)
end

View File

@ -43,6 +43,10 @@ local function setup_ncm_qmi(devpath, control_type, delay)
end
if platform.match('ath79', 'nand', {
'glinet,gl-xe300',
}) then
setup_ncm_qmi('/dev/cdc-wdm0', 'qmi', 15)
elseif platform.match('ath79', 'nand', {
'zte,mf281',
}) then
setup_ncm_qmi('/dev/ttyACM0', 'ncm', 15)

View File

@ -12,7 +12,7 @@ uci:set('dhcp', dnsmasq, 'localise_queries', true)
uci:set('dhcp', dnsmasq, 'localservice', false)
uci:set('dhcp', dnsmasq, 'server', dns.servers)
uci:delete('dhcp', dnsmasq, 'cachesize')
uci:set('dhcp', dnsmasq, 'cachesize', dns.cacheentries)
uci:delete('firewall', 'client_dns')
if dns.servers then

View File

@ -26,6 +26,7 @@ local values = {
.. ' / ' .. util.trim(util.readfile('/lib/gluon/site-version')) },
{ 'Firmware release', util.trim(util.readfile('/lib/gluon/release')) },
{ 'Site', site.site_name() },
{ 'Domain', uci:get('gluon', 'core', 'domain') or 'n/a' },
{ 'Public VPN key', pubkey or 'n/a' },
}

View File

@ -25,6 +25,7 @@ end
function M.is_outdoor_device()
if M.match('ath79', 'generic', {
'devolo,dvl1750x',
'librerouter,librerouter-v1',
'plasmacloud,pa300',
'plasmacloud,pa300e',
'tplink,cpe210-v1',
@ -73,6 +74,7 @@ end
function M.is_cellular_device()
if M.match('ath79', 'nand', {
'zte,mf281',
'glinet,gl-xe300',
}) then
return true
elseif M.match('ipq40xx', 'generic', {

View File

@ -442,7 +442,6 @@ uint32_t hashlittle( const void *key, size_t length, uint32_t initval)
case 0 : return c;
}
}
final(a,b,c);
return c;
}
@ -671,7 +670,7 @@ uint32_t hashbig( const void *key, size_t length, uint32_t initval)
* does it on word boundaries, so is OK with this. But VALGRIND will
* still catch it and complain. The masking trick does make the hash
* noticeably faster for short strings (like English words).
*/
* */
#ifndef VALGRIND
switch(length)
@ -802,11 +801,10 @@ void driver2()
{
for (j=0; j<8; ++j) /*------------------------ for each input bit, */
{
for (m=1; m<8; ++m) /*------------ for several possible initvals, */
for (m=1; m<8; ++m) /*------------ for serveral possible initvals, */
{
for (l=0; l<HASHSTATE; ++l)
e[l]=f[l]=g[l]=h[l]=x[l]=y[l]=~((uint32_t)0);
/*---- check that every output bit is affected by that input bit */
for (k=0; k<MAXPAIR; k+=2)
{

View File

@ -0,0 +1,19 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=gluon-mesh-olsrd
PKG_VERSION=1
include ../gluon.mk
define Package/gluon-mesh-olsrd
TITLE:=olsrd mesh
DEPENDS:= \
+gluon-core \
@IPV6 \
+oonf-olsrd2 \
+firewall \
+gluon-mesh-layer3-common
PROVIDES:=gluon-mesh-provider
endef
$(eval $(call BuildPackageGluon,gluon-mesh-olsrd))

View File

@ -0,0 +1 @@
need_table({'mesh', 'olsrd', 'v2', 'config'}, nil, false)

View File

@ -0,0 +1,10 @@
#!/bin/sh
reload_running() {
if [ -x /etc/init.d/"$1" ] && /etc/init.d/"$1" enabled && /etc/init.d/"$1" running; then
echo "(post-setup.d:$IFNAME) Reloading $1..."
/etc/init.d/"$1" reload
fi
}
reload_running olsrd2

View File

@ -0,0 +1,10 @@
#!/bin/sh
reload_running() {
if [ -x /etc/init.d/"$1" ] && /etc/init.d/"$1" enabled && /etc/init.d/"$1" running; then
echo "(teardown.d:$IFNAME) Reloading $1..."
/etc/init.d/"$1" reload
fi
}
reload_running olsrd2

View File

@ -0,0 +1 @@
mmfd

View File

@ -0,0 +1,7 @@
#!/bin/sh
. /lib/gluon/autoupdater/lib.sh
start_enabled olsrd2
wifi up

View File

@ -0,0 +1,7 @@
#!/bin/sh
. /lib/gluon/autoupdater/lib.sh
stop olsrd2
wifi down

View File

@ -0,0 +1,163 @@
#!/usr/bin/lua
local uci = require('simple-uci').cursor()
local site = require 'gluon.site'
local util = require 'gluon.util'
local wireless = require 'gluon.wireless'
local mesh_interfaces = util.get_role_interfaces(uci, 'mesh')
local uplink_interfaces = util.get_role_interfaces(uci, 'uplink')
local client_interfaces = util.get_role_interfaces(uci, 'client')
local mesh_interfaces_uplink = {}
local mesh_interfaces_client = {}
local mesh_interfaces_other = {}
for _, iface in ipairs(mesh_interfaces) do
if util.contains(uplink_interfaces, iface) then
table.insert(mesh_interfaces_uplink, iface)
elseif util.contains(client_interfaces, iface) then
table.insert(mesh_interfaces_client, iface)
else
table.insert(mesh_interfaces_other, iface)
end
end
local intf = {
wired_mesh = {},
vpn_mesh = {},
radio_mesh = {},
}
intf.all_intfs = {}
for _, l in ipairs({ intf.wired_mesh, intf.vpn_mesh, intf.radio_mesh }) do
for _, n in ipairs(l) do
table.insert(intf.all_intfs, n)
end
end
-- get all mesh radios and mesh lans and then add them to olsrd
wireless.foreach_radio(uci, function(radio, _, _)
local radio_name = radio['.name']
table.insert(intf.radio_mesh, 'mesh_' .. radio_name)
end)
if pcall(function() require 'gluon.mesh-vpn' end) then
local vpn_core = require 'gluon.mesh-vpn'
if vpn_core.enabled() then
-- mesh_vpn is a interface that has the right ifname
-- we can't use mesh-vpn (dash instead of underscore) since it's not a uci interface
table.insert(intf.vpn_mesh, 'mesh_vpn')
end
end
table.insert(intf.wired_mesh, 'loopback')
local has_uplink_mesh = false
local has_other_mesh = false
for _,i in pairs(mesh_interfaces) do
if util.contains(uplink_interfaces, i) then
has_uplink_mesh = true
else
has_other_mesh = true
end
end
if has_uplink_mesh then
table.insert(intf.wired_mesh, 'mesh_uplink')
end
if has_other_mesh then
table.insert(intf.wired_mesh, 'mesh_other')
end
uci:delete_all('olsrd2', 'interface')
if site.mesh.olsrd.v2.enable(true) then
os.execute('/etc/init.d/olsrd2 enable')
local addrs = { }
local lan = { }
local cfg = site.mesh.olsrd.v2
local config = uci:get_first("olsrd2", "olsrv2")
-- set global config
local olsr2Config = {
failfast = 'no',
pidfile = '/var/run/olsrd2.pid',
lockfile = '/var/lock/olsrd2'
}
local extraConf = cfg.config()
if extraConf then
for k, _ in pairs(extraConf) do
olsr2Config[k] = extraConf[k]
end
end
uci:delete_all('olsrd2', 'global')
uci:section('olsrd2', 'global', 'global', olsr2Config)
uci:delete_all('olsrd2', 'telnet')
uci:section('olsrd2', 'telnet', 'telnet', {
})
uci:delete_all('olsrd2', 'http')
uci:section('olsrd2', 'http', 'http', {
})
if cfg.lan() then
lan = cfg.lan()
end
table.insert(addrs, '-127.0.0.1/8')
table.insert(addrs, '-::1/128')
table.insert(addrs, 'default_accept')
uci:set("olsrd2", config, "originator", addrs)
uci:set("olsrd2", config, "lan", lan)
if #intf.wired_mesh then
uci:section('olsrd2', 'interface', 'wired_mesh', {
ifname = intf.wired_mesh,
bindto = addrs,
})
end
if #intf.vpn_mesh then
uci:section('olsrd2', 'interface', 'vpn_mesh', {
ifname = intf.vpn_mesh,
bindto = addrs,
})
end
if #intf.radio_mesh then
uci:section('olsrd2', 'interface', 'radio_mesh', {
ifname = intf.radio_mesh,
bindto = addrs,
})
end
uci:section('olsrd2', 'interface', 'loopback', {
ifname = { 'loopback' },
bindto = addrs,
})
uci:section('firewall', 'rule', 'allow_olsr2_mesh', {
src = 'mesh',
dest_port = '269',
proto = 'udp',
target = 'ACCEPT',
})
else
-- site.mesh.olsrd.v2.enable false
os.execute('/etc/init.d/olsrd2 disable')
uci:delete('firewall', 'allow_olsr2_mesh')
end
uci:save('olsrd2')
uci:save('firewall')
uci:save('network')

View File

@ -0,0 +1,10 @@
#!/usr/bin/lua
local uci = require('simple-uci').cursor()
local util = require 'gluon.util'
local networks = uci:get_list('firewall', 'drop', 'network')
util.remove_from_set(networks, 'client')
uci:set_list('firewall', 'drop', 'network', networks)
uci:save('firewall')

View File

@ -6,7 +6,13 @@ include ../gluon.mk
define Package/gluon-mesh-vpn-wireguard
TITLE:=Support for connecting meshes via wireguard
DEPENDS:=+gluon-core +libgluonutil +gluon-mesh-vpn-core +wireguard-tools +wgpeerselector +libubus
DEPENDS:=+gluon-core +libgluonutil +gluon-mesh-vpn-core +wireguard-tools +wgpeerselector +libubox +libubus
endef
define Package/gluon-mesh-vpn-wireguard/install
$(Gluon/Build/Install)
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/gluon-hex-to-b64 $(1)/usr/sbin/
endef
$(eval $(call BuildPackageGluon,gluon-mesh-vpn-wireguard))

View File

@ -1,18 +1,63 @@
#!/usr/bin/lua
local uci = require('simple-uci').cursor()
local unistd = require 'posix.unistd'
local util = require('gluon.util')
local site = require 'gluon.site'
local sp = util.subprocess
local wait = require 'posix.sys.wait'
local private_key = uci:get("network_gluon-old", 'wg_mesh', "private_key")
local wg_private_key = uci:get("network_gluon-old", 'wg_mesh', "private_key")
if not private_key or not private_key:match("^" .. ("[%a%d+/]"):rep(42) .. "[AEIMQUYcgkosw480]=$") then
private_key = "generate"
local function valid_fastd_key(fastd_key)
return fastd_key and fastd_key:match(('%x'):rep(64))
end
local function valid_wireguard_key(wireguard_key)
return wireguard_key and wireguard_key:match("^" .. ("[%a%d+/]"):rep(42) .. "[AEIMQUYcgkosw480]=$")
end
local function migrate_from_fastd_secret(fastd_secret)
local options = {
stdin = sp.PIPE,
stdout = sp.PIPE,
}
local pid, pipe = sp.popen('gluon-hex-to-b64', {}, options)
if not pid then
return
end
local inw = pipe.stdin
local out = pipe.stdout
unistd.write(inw, string.format('%s\n', fastd_secret))
unistd.close(inw)
local wpid, status, code = wait.wait(pid)
if wpid and status == 'exited' and code == 0 then
local result = unistd.read(out, 44)
unistd.close(out)
return result
end
end
if not valid_wireguard_key(wg_private_key) then
local fastd_secret = uci:get('fastd', 'mesh_vpn', 'secret')
if valid_fastd_key(fastd_secret) then
wg_private_key = migrate_from_fastd_secret(fastd_secret)
end
end
if not valid_wireguard_key(wg_private_key) then
wg_private_key = "generate"
end
uci:section('network', 'interface', 'wg_mesh', {
proto = 'wireguard',
fwmark = 1,
private_key = private_key,
private_key = wg_private_key,
})
uci:section('network', 'interface', 'mesh_wg_mesh', {

View File

@ -1,6 +1,9 @@
all: respondd.so
all: respondd.so gluon-hex-to-b64
CFLAGS += -Wall -Werror-implicit-function-declaration
gluon-hex-to-b64: gluon-hex-to-b64.c
$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -Wall -o $@ $^ $(LDLIBS) -lubox
respondd.so: respondd.c
$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -shared -fPIC -D_GNU_SOURCE -o $@ $^ $(LDLIBS) -lgluonutil -lubus

View File

@ -0,0 +1,101 @@
// SPDX-FileCopyrightText: 2022 Jan-Niklas Burfeind <gluon@aiyionpri.me>
// SPDX-License-Identifier: BSD-2-Clause
// SPDX-FileContributor: read_hex() by Matthias Schiffer <mschiffer@universe-factory.net>
#include <libubox/utils.h>
#include <stdbool.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/**
* how many blocks should be encoded at once - can be configured
*/
#define BLOCK_AMOUNT 32
/**
* smallest possible block size to encode in b64 without further contex
* is three bytes - do not change
*/
#define CHUNK_SIZE (3*BLOCK_AMOUNT)
/** print usage info and exit as failed */
static void usage(void) {
fprintf(stderr, "Usage: gluon-hex-to-b64\n");
exit(1);
}
/**
* read a string of hexadecimal characters and return them as bytes
* return false in case any non-hexadecimal characters are provided
* return true on success
*/
static bool read_hex(uint8_t key[CHUNK_SIZE], const char *hexstr) {
if (strspn(hexstr, "0123456789abcdefABCDEF") != strlen(hexstr))
return false;
size_t i;
for (i = 0; i < CHUNK_SIZE; i++)
sscanf(&hexstr[2 * i], "%02hhx", &key[i]);
return true;
}
int main(int argc, char *argv[]) {
if (argc != 1)
usage();
unsigned char hex_input[CHUNK_SIZE * 2 + 1];
uint8_t as_bytes[CHUNK_SIZE];
int byte_count;
int b64_buflen = B64_ENCODE_LEN(CHUNK_SIZE);
int b64_return;
size_t ret;
char str[b64_buflen];
do {
ret = fread(hex_input, 1, sizeof(hex_input) - 1, stdin);
hex_input[ret] = '\0';
/* in case fread did not fill six characters */
if (ret != sizeof(hex_input)-1) {
/* drop newline by replacing it with a null character */
hex_input[strcspn(hex_input, "\n")] = 0;
/*
* count length of resulting string and make sure it's even,
* as bytes are represented using pairs of hex characters
*/
ret = strlen(hex_input);
if (ret % 2 == 1) {
fprintf(stderr, "Error: Incomplete hex representation of a byte.\n");
exit(EXIT_FAILURE);
}
}
byte_count = ret / 2;
b64_buflen = B64_ENCODE_LEN(byte_count);
/* in case read_hex fails due to invalid characters */
if (!read_hex(as_bytes, hex_input)) {
fprintf(stderr, "Error: Invalid hexadecimal input.\n");
exit(EXIT_FAILURE);
}
b64_return = b64_encode(as_bytes, byte_count, str, b64_buflen);
/* trailing '\0' is not counted by b64_encode(), so we subtract one character */
if (b64_buflen - 1 != b64_return) {
fprintf(stderr, "Error: Encoding bytes as b64 failed.\n");
exit(EXIT_FAILURE);
}
printf("%s", str);
/* repeat until a non full block is read */
} while (ret == sizeof(hex_input)-1);
printf("\n");
exit(EXIT_SUCCESS);
}

View File

@ -9,7 +9,7 @@ include ../gluon.mk
define Package/gluon-setup-mode
TITLE:=Setup mode
DEPENDS:=+gluon-core +gluon-lock-password +ubus +dnsmasq
DEPENDS:=+gluon-core +gluon-lock-password +ubus +dnsmasq-full
endef
define Package/gluon-setup-mode/description

View File

@ -3,18 +3,26 @@
START=96
start() {
local custom_led
/etc/init.d/led start
. /etc/diag.sh
get_status_led 2> /dev/null
if [ -z $status_led ]; then
if [ -z "$status_led" ]; then
status_led="$running"
fi
if [ -z $status_led ]; then
if [ -z "$status_led" ]; then
status_led="$boot"
fi
custom_led="$(lua -e 'print(require("gluon.setup-mode").get_status_led() or "")')"
if [ -z "$status_led" ]; then
status_led="$custom_led"
fi
status_led_set_timer 1000 300
}

View File

@ -0,0 +1,14 @@
local platform = require 'gluon.platform'
local M = {}
function M.get_status_led()
if platform.match('ath79', 'nand', {
'glinet,gl-xe300',
}) then
return "green:wlan"
end
end
return M

View File

@ -67,7 +67,7 @@
iface = lower:sub(pattern:len())
end
return unistd.access('/sys/class/net/' .. iface .. '/wireless') ~= nil
return unistd.access('/sys/class/net/' .. iface .. '/phy80211') ~= nil
end
local uconn = ubus.connect()

View File

@ -6,7 +6,7 @@ include ../gluon.mk
define Package/gluon-wan-dnsmasq
TITLE:=Support for a secondary DNS server using the WAN interface
DEPENDS:=+gluon-core +libubus-lua +dnsmasq +libpacketmark
DEPENDS:=+gluon-core +libubus-lua +dnsmasq-full +libpacketmark
endef
define Package/gluon-wan-dnsmasq/description

View File

@ -0,0 +1,49 @@
msgid ""
msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Project-Id-Version: PACKAGE VERSION\n"
"PO-Revision-Date: 2023-01-23 13:33+0100\n"
"Last-Translator: Tom Herbers <mail@tomherbers.de>\n"
"Language-Team: German\n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
msgid "APN"
msgstr ""
msgid "Cellular"
msgstr ""
msgid "Enabled"
msgstr "Aktiviert"
msgid "IPv4"
msgstr ""
msgid "IPv4/IPv6"
msgstr ""
msgid "IPv6"
msgstr ""
msgid "Password"
msgstr "Passwort"
msgid "SIM PIN"
msgstr ""
msgid "Type"
msgstr "Typ"
msgid "Username"
msgstr "Nutzername"
msgid ""
"You can enable uplink via cellular service. If you decide so, the VPN "
"connection is established using the integrated WWAN modem."
msgstr ""
"Du kannst den Uplink über einen Mobilfunk Service aktivieren. Wenn du "
"dich dafür entscheidest, wird die VPN-Verbindung über das integrierte "
"Mobilfunk-Modem hergestellt."

View File

@ -0,0 +1,25 @@
<%
local br = self.orientation == "horizontal" and '&#160;&#160;&#160;' or '<br>'
local entries = self:entries()
local util = require 'gluon.util'
%>
<div>
<% for i, entry in pairs(entries) do %>
<label<%=
attr("data-index", i) ..
attr("data-depends", self:deplist(entry.deps))
%>>
<input data-update="click change" type="checkbox"<%=
attr("id", id.."."..entry.key) ..
attr("name", id) ..
attr("value", entry.key) ..
attr("checked", (util.contains(self:cfgvalue(), entry.key)) and "checked") ..
attr("data-exclusive-with", self.exclusions[entry.key]) ..
attr("data-update", "change")
%>>
<label<%= attr("for", id.."."..entry.key)%>></label>
<span class="gluon-multi-list-option-descr"><%|entry.value%></span>
</label>
<% if i ~= #entries then write(br) end %>
<% end %>
</div>

View File

@ -1,4 +1,4 @@
<%- if self.title or self.content then -%>
<%- if not self.hide then -%>
<div class="gluon-warning"<%=
attr("id", id) ..
attr("data-index", self.index) ..

View File

@ -1,19 +1,15 @@
/*
Copyright 2008 Steven Barth <steven@midlink.org>
Copyright 2008-2012 Jo-Philipp Wich <jow@openwrt.org>
Copyright 2017 Matthias Schiffer <mschiffer@universe-factory.net>
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
SPDX-License-Identifier: Apache-2.0
SPDX-FileCopyrightText: 2008, Steven Barth <steven@midlink.org>
SPDX-FileCopyrightText: 2008-2012, Jo-Philipp Wich <jow@openwrt.org>
SPDX-FileCopyrightText: 2017, Matthias Schiffer <mschiffer@universe-factory.net>
SPDX-FileCopyrightText: 2023, Leonardo Mörlein <me@irrelefant.net>
*/
/*
Build using:
uglifyjs javascript/gluon-web-model.js -o javascript/gluon-web-model.min.js -c -m --support-ie8
uglifyjs javascript/gluon-web-model.js -o javascript/gluon-web-model.min.js -c -m --ie
*/
@ -219,6 +215,20 @@
parent.parentNode.style.display = (parent.options.length <= 1) ? 'none' : '';
}
var nodes = document.querySelectorAll('[data-exclusive-with]');
for (var i = 0, node; (node = nodes[i]) !== undefined; i++) {
var exclusive_with = JSON.parse(node.getAttribute('data-exclusive-with'));
node.disabled = false;
for (var list_item of exclusive_with) {
var el = document.getElementById(node.name + '.' + list_item);
node.disabled ||= el.checked;
}
if (node.disabled)
node.checked = false;
}
if (state) {
update();
}

File diff suppressed because one or more lines are too long

View File

@ -1,8 +1,10 @@
-- Copyright 2008 Steven Barth <steven@midlink.org>
-- Copyright 2017-2018 Matthias Schiffer <mschiffer@universe-factory.net>
-- Licensed to the public under the Apache License 2.0.
-- SPDX-License-Identifier: Apache-2.0
-- SPDX-FileCopyrightText: 2008, Steven Barth <steven@midlink.org>
-- SPDX-FileCopyrightText: 2017-2018, Matthias Schiffer <mschiffer@universe-factory.net>
-- SPDX-FileCopyrightText: 2023, Leonardo Mörlein <me@irrelefant.net>
local util = require "gluon.web.util"
local gluon_util = require "gluon.util"
local datatypes = require "gluon.web.model.datatypes"
local class = util.class
@ -361,6 +363,83 @@ function ListValue:validate()
end
local MultiListValue = class(AbstractValue)
M.MultiListValue = MultiListValue
function MultiListValue:__init__(...)
AbstractValue.__init__(self, ...)
self.subtemplate = "model/mlvalue"
self.size = 1
self.keys = {}
self.entry_list = {}
end
function MultiListValue:value(key, val, ...)
key = tostring(key)
if self.keys[key] then
return
end
self.keys[key] = true
self.exclusions = {}
val = val or key
table.insert(self.entry_list, {
key = key,
value = tostring(val),
deps = {...},
})
end
function MultiListValue:entries()
local ret = {unpack(self.entry_list)}
return ret
end
function MultiListValue:validate()
for _, val in ipairs(self.data) do
if not self.keys[val] then
return false
end
end
for key, exclusive_with in pairs(self.exclusions) do
if gluon_util.contains(self.data, key) then
for _, exclusion in ipairs(exclusive_with) do
if gluon_util.contains(self.data, exclusion) then
return false
end
end
end
end
return true
end
function MultiListValue:exclusive(a, b)
if not self.exclusions[a] then
self.exclusions[a] = {}
end
if not self.exclusions[b] then
self.exclusions[b] = {}
end
gluon_util.add_to_set(self.exclusions[a], b)
gluon_util.add_to_set(self.exclusions[b], a)
end
function MultiListValue:defaultvalue()
return self.default or {}
end
function MultiListValue:formvalue(http)
return http:formvaluetable(self:id())
end
local DynamicList = class(AbstractValue)
M.DynamicList = DynamicList
@ -429,6 +508,23 @@ function Element:__init__(template, kv, ...)
self.error = false
end
function Element:parse(http)
if not self.datatype then
self.state = M.FORM_VALID
return
end
return AbstractValue:parse(http)
end
function Element:validate()
if not self.datatype then
return true
end
AbstractValue:validate()
end
local Section = class(Node)
M.Section = Section

View File

@ -1,6 +1,6 @@
-- Copyright 2010 Jo-Philipp Wich <jow@openwrt.org>
-- Copyright 2017 Matthias Schiffer <mschiffer@universe-factory.net>
-- Licensed to the public under the Apache License 2.0.
-- SPDX-License-Identifier: Apache-2.0
-- SPDX-FileCopyrightText: 2010, Jo-Philipp Wich <jow@openwrt.org>
-- SPDX-FileCopyrightText: 2017, Matthias Schiffer <mschiffer@universe-factory.net>
local M = {}

View File

@ -28,15 +28,6 @@ msgstr "PoE-Passthrough aktivieren"
msgid "Enable PoE Power Port %s"
msgstr "PoE-Ausgabe auf Port %s aktivieren"
msgid "Enable meshing on the Ethernet interface"
msgstr "Mesh auf dem Ethernet-Port aktivieren"
msgid "Enable meshing on the LAN interface"
msgstr "Mesh auf dem LAN-Port aktivieren"
msgid "Enable meshing on the WAN interface"
msgstr "Mesh auf dem WAN-Port aktivieren"
msgid "Gateway"
msgstr "Gateway"
@ -49,6 +40,12 @@ msgstr "IPv4"
msgid "IPv6"
msgstr "IPv6"
msgid "Interface"
msgstr "Interface"
msgid "LAN Interfaces"
msgstr "LAN-Interfaces"
msgid "Netmask"
msgstr "Netzmaske"
@ -61,5 +58,8 @@ msgstr "Statisch"
msgid "Static DNS servers"
msgstr "Statische DNS-Server"
msgid "WAN Interfaces"
msgstr "WAN-Interfaces"
msgid "WAN connection"
msgstr "WAN-Verbindung"

View File

@ -28,15 +28,6 @@ msgstr ""
msgid "Enable PoE Power Port %s"
msgstr ""
msgid "Enable meshing on the Ethernet interface"
msgstr ""
msgid "Enable meshing on the LAN interface"
msgstr "Activer le réseau MESH sur le port LAN"
msgid "Enable meshing on the WAN interface"
msgstr "Activer le réseau MESH sur les ports WAN"
msgid "Gateway"
msgstr "Passerelle"

View File

@ -19,15 +19,6 @@ msgstr ""
msgid "Enable PoE Power Port %s"
msgstr ""
msgid "Enable meshing on the Ethernet interface"
msgstr ""
msgid "Enable meshing on the LAN interface"
msgstr ""
msgid "Enable meshing on the WAN interface"
msgstr ""
msgid "Gateway"
msgstr ""
@ -40,6 +31,12 @@ msgstr ""
msgid "IPv6"
msgstr ""
msgid "Interface"
msgstr ""
msgid "LAN Interfaces"
msgstr ""
msgid "Netmask"
msgstr ""
@ -52,5 +49,8 @@ msgstr ""
msgid "Static DNS servers"
msgstr ""
msgid "WAN Interfaces"
msgstr ""
msgid "WAN connection"
msgstr ""

View File

@ -1,21 +1,14 @@
--[[
Copyright 2014 Nils Schneider <nils@nilsschneider.net>
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
]]--
-- SPDX-License-Identifier: Apache-2.0
-- SPDX-FileCopyrightText: 2014, Nils Schneider <nils@nilsschneider.net>
-- SPDX-FileCopyrightText: 2023, Leonardo Mörlein <me@irrelefant.net>
local uci = require("simple-uci").cursor()
local sysconfig = require 'gluon.sysconfig'
local util = require 'gluon.util'
local wan = uci:get_all("network", "wan")
local wan6 = uci:get_all("network", "wan6")
local dns_static = uci:get_first("gluon-wan-dnsmasq", "static")
local f = Form(translate("WAN connection"))
local s = f:section(Section)
@ -76,36 +69,30 @@ end
s = f:section(Section)
local wired_mesh_help = {
single = translate('Enable meshing on the Ethernet interface'),
wan = translate('Enable meshing on the WAN interface'),
lan = translate('Enable meshing on the LAN interface'),
local pretty_ifnames = {
["/wan"] = translate("WAN Interfaces"),
["/single"] = translate("Interface"),
["/lan"] = translate("LAN Interfaces")
}
local function wired_mesh(iface)
if not sysconfig[iface .. '_ifname'] then return end
local iface_roles = uci:get_list('gluon', 'iface_' .. iface, 'role')
uci:foreach('gluon', 'interface', function(config)
local section_name = config['.name']
local ifaces = s:option(MultiListValue, section_name, pretty_ifnames[config.name] or config.name)
local option = s:option(Flag, 'mesh_' .. iface, wired_mesh_help[iface])
option.default = util.contains(iface_roles, 'mesh') ~= false
ifaces.orientation = 'horizontal'
ifaces:value('uplink', 'Uplink')
ifaces:value('mesh', 'Mesh')
ifaces:value('client', 'Client')
ifaces:exclusive('uplink', 'client')
ifaces:exclusive('mesh', 'client')
function option:write(data)
local roles = uci:get_list('gluon', 'iface_' .. iface, 'role')
if data then
util.add_to_set(roles, 'mesh')
else
util.remove_from_set(roles, 'mesh')
ifaces.default = config.role
function ifaces:write(data)
uci:set_list("gluon", section_name, "role", data)
end
uci:set_list('gluon', 'iface_' .. iface, 'role', roles)
end)
-- Reconfigure on next reboot
uci:set('gluon', 'core', 'reconfigure', true)
end
end
wired_mesh('single')
wired_mesh('wan')
wired_mesh('lan')
local section
uci:foreach("system", "gpio_switch", function(si)
@ -166,4 +153,5 @@ function f:write()
uci:commit('system')
end
return f

View File

@ -27,10 +27,11 @@ local enabled = s:option(Flag, "enabled", translate("Enabled"))
enabled.default = uci:get('wireless', primary_iface) and not uci:get_bool('wireless', primary_iface, "disabled")
local warning = s:element('model/warning', {
content = mesh_on_wan and translate(
content = translate(
'Meshing on WAN interface is enabled. ' ..
'This can lead to problems.'
) or nil,
),
hide = not mesh_on_wan,
}, 'warning')
warning:depends(enabled, true)

View File

@ -41,58 +41,206 @@
__attribute__ ((visibility ("default")))
struct nla_policy batadv_genl_policy[NUM_BATADV_ATTR] = {
[BATADV_ATTR_VERSION] = { .type = NLA_STRING },
[BATADV_ATTR_ALGO_NAME] = { .type = NLA_STRING },
[BATADV_ATTR_MESH_IFINDEX] = { .type = NLA_U32 },
[BATADV_ATTR_MESH_IFNAME] = { .type = NLA_STRING,
.maxlen = IFNAMSIZ },
[BATADV_ATTR_MESH_ADDRESS] = { .type = NLA_UNSPEC,
[BATADV_ATTR_VERSION] = {
.type = NLA_STRING,
},
[BATADV_ATTR_ALGO_NAME] = {
.type = NLA_STRING,
},
[BATADV_ATTR_MESH_IFINDEX] = {
.type = NLA_U32,
},
[BATADV_ATTR_MESH_IFNAME] = {
.type = NLA_STRING,
.maxlen = IFNAMSIZ,
},
[BATADV_ATTR_MESH_ADDRESS] = {
.type = NLA_UNSPEC,
.minlen = ETH_ALEN,
.maxlen = ETH_ALEN },
[BATADV_ATTR_HARD_IFINDEX] = { .type = NLA_U32 },
[BATADV_ATTR_HARD_IFNAME] = { .type = NLA_STRING,
.maxlen = IFNAMSIZ },
[BATADV_ATTR_HARD_ADDRESS] = { .type = NLA_UNSPEC,
.maxlen = ETH_ALEN,
},
[BATADV_ATTR_HARD_IFINDEX] = {
.type = NLA_U32,
},
[BATADV_ATTR_HARD_IFNAME] = {
.type = NLA_STRING,
.maxlen = IFNAMSIZ,
},
[BATADV_ATTR_HARD_ADDRESS] = {
.type = NLA_UNSPEC,
.minlen = ETH_ALEN,
.maxlen = ETH_ALEN },
[BATADV_ATTR_ORIG_ADDRESS] = { .type = NLA_UNSPEC,
.maxlen = ETH_ALEN,
},
[BATADV_ATTR_ORIG_ADDRESS] = {
.type = NLA_UNSPEC,
.minlen = ETH_ALEN,
.maxlen = ETH_ALEN },
[BATADV_ATTR_TPMETER_RESULT] = { .type = NLA_U8 },
[BATADV_ATTR_TPMETER_TEST_TIME] = { .type = NLA_U32 },
[BATADV_ATTR_TPMETER_BYTES] = { .type = NLA_U64 },
[BATADV_ATTR_TPMETER_COOKIE] = { .type = NLA_U32 },
[BATADV_ATTR_PAD] = { .type = NLA_UNSPEC },
[BATADV_ATTR_ACTIVE] = { .type = NLA_FLAG },
[BATADV_ATTR_TT_ADDRESS] = { .type = NLA_UNSPEC,
.maxlen = ETH_ALEN,
},
[BATADV_ATTR_TPMETER_RESULT] = {
.type = NLA_U8,
},
[BATADV_ATTR_TPMETER_TEST_TIME] = {
.type = NLA_U32,
},
[BATADV_ATTR_TPMETER_BYTES] = {
.type = NLA_U64,
},
[BATADV_ATTR_TPMETER_COOKIE] = {
.type = NLA_U32,
},
[BATADV_ATTR_PAD] = {
.type = NLA_UNSPEC,
},
[BATADV_ATTR_ACTIVE] = {
.type = NLA_FLAG,
},
[BATADV_ATTR_TT_ADDRESS] = {
.type = NLA_UNSPEC,
.minlen = ETH_ALEN,
.maxlen = ETH_ALEN },
[BATADV_ATTR_TT_TTVN] = { .type = NLA_U8 },
[BATADV_ATTR_TT_LAST_TTVN] = { .type = NLA_U8 },
[BATADV_ATTR_TT_CRC32] = { .type = NLA_U32 },
[BATADV_ATTR_TT_VID] = { .type = NLA_U16 },
[BATADV_ATTR_TT_FLAGS] = { .type = NLA_U32 },
[BATADV_ATTR_FLAG_BEST] = { .type = NLA_FLAG },
[BATADV_ATTR_LAST_SEEN_MSECS] = { .type = NLA_U32 },
[BATADV_ATTR_NEIGH_ADDRESS] = { .type = NLA_UNSPEC,
.maxlen = ETH_ALEN,
},
[BATADV_ATTR_TT_TTVN] = {
.type = NLA_U8,
},
[BATADV_ATTR_TT_LAST_TTVN] = {
.type = NLA_U8,
},
[BATADV_ATTR_TT_CRC32] = {
.type = NLA_U32,
},
[BATADV_ATTR_TT_VID] = {
.type = NLA_U16,
},
[BATADV_ATTR_TT_FLAGS] = {
.type = NLA_U32,
},
[BATADV_ATTR_FLAG_BEST] = {
.type = NLA_FLAG,
},
[BATADV_ATTR_LAST_SEEN_MSECS] = {
.type = NLA_U32,
},
[BATADV_ATTR_NEIGH_ADDRESS] = {
.type = NLA_UNSPEC,
.minlen = ETH_ALEN,
.maxlen = ETH_ALEN },
[BATADV_ATTR_TQ] = { .type = NLA_U8 },
[BATADV_ATTR_THROUGHPUT] = { .type = NLA_U32 },
[BATADV_ATTR_BANDWIDTH_UP] = { .type = NLA_U32 },
[BATADV_ATTR_BANDWIDTH_DOWN] = { .type = NLA_U32 },
[BATADV_ATTR_ROUTER] = { .type = NLA_UNSPEC,
.maxlen = ETH_ALEN,
},
[BATADV_ATTR_TQ] = {
.type = NLA_U8,
},
[BATADV_ATTR_THROUGHPUT] = {
.type = NLA_U32,
},
[BATADV_ATTR_BANDWIDTH_UP] = {
.type = NLA_U32,
},
[BATADV_ATTR_BANDWIDTH_DOWN] = {
.type = NLA_U32,
},
[BATADV_ATTR_ROUTER] = {
.type = NLA_UNSPEC,
.minlen = ETH_ALEN,
.maxlen = ETH_ALEN },
[BATADV_ATTR_BLA_OWN] = { .type = NLA_FLAG },
[BATADV_ATTR_BLA_ADDRESS] = { .type = NLA_UNSPEC,
.maxlen = ETH_ALEN,
},
[BATADV_ATTR_BLA_OWN] = {
.type = NLA_FLAG,
},
[BATADV_ATTR_BLA_ADDRESS] = {
.type = NLA_UNSPEC,
.minlen = ETH_ALEN,
.maxlen = ETH_ALEN },
[BATADV_ATTR_BLA_VID] = { .type = NLA_U16 },
[BATADV_ATTR_BLA_BACKBONE] = { .type = NLA_UNSPEC,
.maxlen = ETH_ALEN,
},
[BATADV_ATTR_BLA_VID] = {
.type = NLA_U16,
},
[BATADV_ATTR_BLA_BACKBONE] = {
.type = NLA_UNSPEC,
.minlen = ETH_ALEN,
.maxlen = ETH_ALEN },
[BATADV_ATTR_BLA_CRC] = { .type = NLA_U16 },
.maxlen = ETH_ALEN,
},
[BATADV_ATTR_BLA_CRC] = {
.type = NLA_U16,
},
[BATADV_ATTR_DAT_CACHE_IP4ADDRESS] = {
.type = NLA_U32,
},
[BATADV_ATTR_DAT_CACHE_HWADDRESS] = {
.type = NLA_UNSPEC,
.minlen = ETH_ALEN,
.maxlen = ETH_ALEN,
},
[BATADV_ATTR_DAT_CACHE_VID] = {
.type = NLA_U16,
},
[BATADV_ATTR_MCAST_FLAGS] = {
.type = NLA_U32,
},
[BATADV_ATTR_MCAST_FLAGS_PRIV] = {
.type = NLA_U32,
},
[BATADV_ATTR_VLANID] = {
.type = NLA_U16,
},
[BATADV_ATTR_AGGREGATED_OGMS_ENABLED] = {
.type = NLA_U8,
},
[BATADV_ATTR_AP_ISOLATION_ENABLED] = {
.type = NLA_U8,
},
[BATADV_ATTR_ISOLATION_MARK] = {
.type = NLA_U32,
},
[BATADV_ATTR_ISOLATION_MASK] = {
.type = NLA_U32,
},
[BATADV_ATTR_BONDING_ENABLED] = {
.type = NLA_U8,
},
[BATADV_ATTR_BRIDGE_LOOP_AVOIDANCE_ENABLED] = {
.type = NLA_U8,
},
[BATADV_ATTR_DISTRIBUTED_ARP_TABLE_ENABLED] = {
.type = NLA_U8,
},
[BATADV_ATTR_FRAGMENTATION_ENABLED] = {
.type = NLA_U8,
},
[BATADV_ATTR_GW_BANDWIDTH_DOWN] = {
.type = NLA_U32,
},
[BATADV_ATTR_GW_BANDWIDTH_UP] = {
.type = NLA_U32,
},
[BATADV_ATTR_GW_MODE] = {
.type = NLA_U8,
},
[BATADV_ATTR_GW_SEL_CLASS] = {
.type = NLA_U32,
},
[BATADV_ATTR_HOP_PENALTY] = {
.type = NLA_U8,
},
[BATADV_ATTR_LOG_LEVEL] = {
.type = NLA_U32,
},
[BATADV_ATTR_MULTICAST_FORCEFLOOD_ENABLED] = {
.type = NLA_U8,
},
[BATADV_ATTR_NETWORK_CODING_ENABLED] = {
.type = NLA_U8,
},
[BATADV_ATTR_ORIG_INTERVAL] = {
.type = NLA_U32,
},
[BATADV_ATTR_ELP_INTERVAL] = {
.type = NLA_U32,
},
[BATADV_ATTR_THROUGHPUT_OVERRIDE] = {
.type = NLA_U32,
},
[BATADV_ATTR_MULTICAST_FANOUT] = {
.type = NLA_U32,
},
};
/**

View File

@ -79,10 +79,8 @@ struct batadv_nlquery_opts {
*
* Return: Return true when a attribute is missing, false otherwise
*/
static inline bool
batadv_genl_missing_attrs(struct nlattr *attrs[],
const enum batadv_nl_attrs mandatory[], size_t num)
{
static inline bool batadv_genl_missing_attrs(struct nlattr *attrs[],
const enum batadv_nl_attrs mandatory[], size_t num) {
size_t i;
for (i = 0; i < num; i++) {

View File

@ -1,25 +1,7 @@
/* SPDX-License-Identifier: MIT */
/* Copyright (C) 2016-2017 B.A.T.M.A.N. contributors:
/* Copyright (C) B.A.T.M.A.N. contributors:
*
* Matthias Schiffer
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*/
#ifndef _UAPI_LINUX_BATMAN_ADV_H_
@ -27,6 +9,7 @@
#define BATADV_NL_NAME "batadv"
#define BATADV_NL_MCAST_GROUP_CONFIG "config"
#define BATADV_NL_MCAST_GROUP_TPMETER "tpmeter"
/**
@ -86,11 +69,72 @@ enum batadv_tt_client_flags {
/**
* @BATADV_TT_CLIENT_TEMP: this global client has been detected to be
* part of the network but no nnode has already announced it
* part of the network but no node has already announced it
*/
BATADV_TT_CLIENT_TEMP = (1 << 11),
};
/**
* enum batadv_mcast_flags_priv - Private, own multicast flags
*
* These are internal, multicast related flags. Currently they describe certain
* multicast related attributes of the segment this originator bridges into the
* mesh.
*
* Those attributes are used to determine the public multicast flags this
* originator is going to announce via TT.
*
* For netlink, if BATADV_MCAST_FLAGS_BRIDGED is unset then all querier
* related flags are undefined.
*/
enum batadv_mcast_flags_priv {
/**
* @BATADV_MCAST_FLAGS_BRIDGED: There is a bridge on top of the mesh
* interface.
*/
BATADV_MCAST_FLAGS_BRIDGED = (1 << 0),
/**
* @BATADV_MCAST_FLAGS_QUERIER_IPV4_EXISTS: Whether an IGMP querier
* exists in the mesh
*/
BATADV_MCAST_FLAGS_QUERIER_IPV4_EXISTS = (1 << 1),
/**
* @BATADV_MCAST_FLAGS_QUERIER_IPV6_EXISTS: Whether an MLD querier
* exists in the mesh
*/
BATADV_MCAST_FLAGS_QUERIER_IPV6_EXISTS = (1 << 2),
/**
* @BATADV_MCAST_FLAGS_QUERIER_IPV4_SHADOWING: If an IGMP querier
* exists, whether it is potentially shadowing multicast listeners
* (i.e. querier is behind our own bridge segment)
*/
BATADV_MCAST_FLAGS_QUERIER_IPV4_SHADOWING = (1 << 3),
/**
* @BATADV_MCAST_FLAGS_QUERIER_IPV6_SHADOWING: If an MLD querier
* exists, whether it is potentially shadowing multicast listeners
* (i.e. querier is behind our own bridge segment)
*/
BATADV_MCAST_FLAGS_QUERIER_IPV6_SHADOWING = (1 << 4),
};
/**
* enum batadv_gw_modes - gateway mode of node
*/
enum batadv_gw_modes {
/** @BATADV_GW_MODE_OFF: gw mode disabled */
BATADV_GW_MODE_OFF,
/** @BATADV_GW_MODE_CLIENT: send DHCP requests to gw servers */
BATADV_GW_MODE_CLIENT,
/** @BATADV_GW_MODE_SERVER: announce itself as gateway server */
BATADV_GW_MODE_SERVER,
};
/**
* enum batadv_nl_attrs - batman-adv netlink attributes
*/
@ -272,6 +316,171 @@ enum batadv_nl_attrs {
*/
BATADV_ATTR_BLA_CRC,
/**
* @BATADV_ATTR_DAT_CACHE_IP4ADDRESS: Client IPv4 address
*/
BATADV_ATTR_DAT_CACHE_IP4ADDRESS,
/**
* @BATADV_ATTR_DAT_CACHE_HWADDRESS: Client MAC address
*/
BATADV_ATTR_DAT_CACHE_HWADDRESS,
/**
* @BATADV_ATTR_DAT_CACHE_VID: VLAN ID
*/
BATADV_ATTR_DAT_CACHE_VID,
/**
* @BATADV_ATTR_MCAST_FLAGS: Per originator multicast flags
*/
BATADV_ATTR_MCAST_FLAGS,
/**
* @BATADV_ATTR_MCAST_FLAGS_PRIV: Private, own multicast flags
*/
BATADV_ATTR_MCAST_FLAGS_PRIV,
/**
* @BATADV_ATTR_VLANID: VLAN id on top of soft interface
*/
BATADV_ATTR_VLANID,
/**
* @BATADV_ATTR_AGGREGATED_OGMS_ENABLED: whether the batman protocol
* messages of the mesh interface shall be aggregated or not.
*/
BATADV_ATTR_AGGREGATED_OGMS_ENABLED,
/**
* @BATADV_ATTR_AP_ISOLATION_ENABLED: whether the data traffic going
* from a wireless client to another wireless client will be silently
* dropped.
*/
BATADV_ATTR_AP_ISOLATION_ENABLED,
/**
* @BATADV_ATTR_ISOLATION_MARK: the isolation mark which is used to
* classify clients as "isolated" by the Extended Isolation feature.
*/
BATADV_ATTR_ISOLATION_MARK,
/**
* @BATADV_ATTR_ISOLATION_MASK: the isolation (bit)mask which is used to
* classify clients as "isolated" by the Extended Isolation feature.
*/
BATADV_ATTR_ISOLATION_MASK,
/**
* @BATADV_ATTR_BONDING_ENABLED: whether the data traffic going through
* the mesh will be sent using multiple interfaces at the same time.
*/
BATADV_ATTR_BONDING_ENABLED,
/**
* @BATADV_ATTR_BRIDGE_LOOP_AVOIDANCE_ENABLED: whether the bridge loop
* avoidance feature is enabled. This feature detects and avoids loops
* between the mesh and devices bridged with the soft interface
*/
BATADV_ATTR_BRIDGE_LOOP_AVOIDANCE_ENABLED,
/**
* @BATADV_ATTR_DISTRIBUTED_ARP_TABLE_ENABLED: whether the distributed
* arp table feature is enabled. This feature uses a distributed hash
* table to answer ARP requests without flooding the request through
* the whole mesh.
*/
BATADV_ATTR_DISTRIBUTED_ARP_TABLE_ENABLED,
/**
* @BATADV_ATTR_FRAGMENTATION_ENABLED: whether the data traffic going
* through the mesh will be fragmented or silently discarded if the
* packet size exceeds the outgoing interface MTU.
*/
BATADV_ATTR_FRAGMENTATION_ENABLED,
/**
* @BATADV_ATTR_GW_BANDWIDTH_DOWN: defines the download bandwidth which
* is propagated by this node if %BATADV_ATTR_GW_BANDWIDTH_MODE was set
* to 'server'.
*/
BATADV_ATTR_GW_BANDWIDTH_DOWN,
/**
* @BATADV_ATTR_GW_BANDWIDTH_UP: defines the upload bandwidth which
* is propagated by this node if %BATADV_ATTR_GW_BANDWIDTH_MODE was set
* to 'server'.
*/
BATADV_ATTR_GW_BANDWIDTH_UP,
/**
* @BATADV_ATTR_GW_MODE: defines the state of the gateway features.
* Possible values are specified in enum batadv_gw_modes
*/
BATADV_ATTR_GW_MODE,
/**
* @BATADV_ATTR_GW_SEL_CLASS: defines the selection criteria this node
* will use to choose a gateway if gw_mode was set to 'client'.
*/
BATADV_ATTR_GW_SEL_CLASS,
/**
* @BATADV_ATTR_HOP_PENALTY: defines the penalty which will be applied
* to an originator message's tq-field on every hop and/or per
* hard interface
*/
BATADV_ATTR_HOP_PENALTY,
/**
* @BATADV_ATTR_LOG_LEVEL: bitmask with to define which debug messages
* should be send to the debug log/trace ring buffer
*/
BATADV_ATTR_LOG_LEVEL,
/**
* @BATADV_ATTR_MULTICAST_FORCEFLOOD_ENABLED: whether multicast
* optimizations should be replaced by simple broadcast-like flooding
* of multicast packets. If set to non-zero then all nodes in the mesh
* are going to use classic flooding for any multicast packet with no
* optimizations.
*/
BATADV_ATTR_MULTICAST_FORCEFLOOD_ENABLED,
/**
* @BATADV_ATTR_NETWORK_CODING_ENABLED: whether Network Coding (using
* some magic to send fewer wifi packets but still the same content) is
* enabled or not.
*/
BATADV_ATTR_NETWORK_CODING_ENABLED,
/**
* @BATADV_ATTR_ORIG_INTERVAL: defines the interval in milliseconds in
* which batman sends its protocol messages.
*/
BATADV_ATTR_ORIG_INTERVAL,
/**
* @BATADV_ATTR_ELP_INTERVAL: defines the interval in milliseconds in
* which batman emits probing packets for neighbor sensing (ELP).
*/
BATADV_ATTR_ELP_INTERVAL,
/**
* @BATADV_ATTR_THROUGHPUT_OVERRIDE: defines the throughput value to be
* used by B.A.T.M.A.N. V when estimating the link throughput using
* this interface. If the value is set to 0 then batman-adv will try to
* estimate the throughput by itself.
*/
BATADV_ATTR_THROUGHPUT_OVERRIDE,
/**
* @BATADV_ATTR_MULTICAST_FANOUT: defines the maximum number of packet
* copies that may be generated for a multicast-to-unicast conversion.
* Once this limit is exceeded distribution will fall back to broadcast.
*/
BATADV_ATTR_MULTICAST_FANOUT,
/* add attributes above here, update the policy in netlink.c */
/**
@ -300,10 +509,14 @@ enum batadv_nl_commands {
BATADV_CMD_UNSPEC,
/**
* @BATADV_CMD_GET_MESH_INFO: Query basic information about batman-adv
* device
* @BATADV_CMD_GET_MESH: Get attributes from softif/mesh
*/
BATADV_CMD_GET_MESH_INFO,
BATADV_CMD_GET_MESH,
/**
* @BATADV_CMD_GET_MESH_INFO: Alias for @BATADV_CMD_GET_MESH
*/
BATADV_CMD_GET_MESH_INFO = BATADV_CMD_GET_MESH,
/**
* @BATADV_CMD_TP_METER: Start a tp meter session
@ -321,9 +534,15 @@ enum batadv_nl_commands {
BATADV_CMD_GET_ROUTING_ALGOS,
/**
* @BATADV_CMD_GET_HARDIFS: Query list of hard interfaces
* @BATADV_CMD_GET_HARDIF: Get attributes from a hardif of the
* current softif
*/
BATADV_CMD_GET_HARDIFS,
BATADV_CMD_GET_HARDIF,
/**
* @BATADV_CMD_GET_HARDIFS: Alias for @BATADV_CMD_GET_HARDIF
*/
BATADV_CMD_GET_HARDIFS = BATADV_CMD_GET_HARDIF,
/**
* @BATADV_CMD_GET_TRANSTABLE_LOCAL: Query list of local translations
@ -361,6 +580,39 @@ enum batadv_nl_commands {
*/
BATADV_CMD_GET_BLA_BACKBONE,
/**
* @BATADV_CMD_GET_DAT_CACHE: Query list of DAT cache entries
*/
BATADV_CMD_GET_DAT_CACHE,
/**
* @BATADV_CMD_GET_MCAST_FLAGS: Query list of multicast flags
*/
BATADV_CMD_GET_MCAST_FLAGS,
/**
* @BATADV_CMD_SET_MESH: Set attributes for softif/mesh
*/
BATADV_CMD_SET_MESH,
/**
* @BATADV_CMD_SET_HARDIF: Set attributes for hardif of the
* current softif
*/
BATADV_CMD_SET_HARDIF,
/**
* @BATADV_CMD_GET_VLAN: Get attributes from a VLAN of the
* current softif
*/
BATADV_CMD_GET_VLAN,
/**
* @BATADV_CMD_SET_VLAN: Set attributes for VLAN of the
* current softif
*/
BATADV_CMD_SET_VLAN,
/* add new commands above here */
/**
@ -423,4 +675,30 @@ enum batadv_tp_meter_reason {
BATADV_TP_REASON_TOO_MANY = 133,
};
/**
* enum batadv_ifla_attrs - batman-adv ifla nested attributes
*/
enum batadv_ifla_attrs {
/**
* @IFLA_BATADV_UNSPEC: unspecified attribute which is not parsed by
* rtnetlink
*/
IFLA_BATADV_UNSPEC,
/**
* @IFLA_BATADV_ALGO_NAME: routing algorithm (name) which should be
* used by the newly registered batadv net_device.
*/
IFLA_BATADV_ALGO_NAME,
/* add attributes above here, update the policy in soft-interface.c */
/**
* @__IFLA_BATADV_MAX: internal use
*/
__IFLA_BATADV_MAX,
};
#define IFLA_BATADV_MAX (__IFLA_BATADV_MAX - 1)
#endif /* _UAPI_LINUX_BATMAN_ADV_H_ */

View File

@ -3,10 +3,10 @@ Date: Sun, 5 Jun 2022 23:43:38 +0200
Subject: ramips-mt7621: make DSA images swconfig upgradable
diff --git a/target/linux/ramips/image/mt7621.mk b/target/linux/ramips/image/mt7621.mk
index 961f8a3b7514a3658f8d4795c136d5069830126f..982ca6b9196853df2ab5070c26f175ade6567eaa 100644
index ab0ff95f7529aa43e69e67a4e3a303242c9b2605..4c3a38db442f06d6c1acf77fb729d93a67e2d52a 100644
--- a/target/linux/ramips/image/mt7621.mk
+++ b/target/linux/ramips/image/mt7621.mk
@@ -179,7 +179,6 @@ endef
@@ -180,7 +180,6 @@ endef
TARGET_DEVICES += asiarf_ap7621-nv1
define Device/asus_rt-ac57u
@ -14,7 +14,7 @@ index 961f8a3b7514a3658f8d4795c136d5069830126f..982ca6b9196853df2ab5070c26f175ad
DEVICE_VENDOR := ASUS
DEVICE_MODEL := RT-AC57U
DEVICE_ALT0_VENDOR := ASUS
@@ -1233,7 +1232,6 @@ endef
@@ -1286,7 +1285,6 @@ endef
TARGET_DEVICES += mts_wg430223
define Device/netgear_ex6150
@ -22,7 +22,7 @@ index 961f8a3b7514a3658f8d4795c136d5069830126f..982ca6b9196853df2ab5070c26f175ad
$(Device/uimage-lzma-loader)
DEVICE_VENDOR := NETGEAR
DEVICE_MODEL := EX6150
@@ -1246,7 +1244,6 @@ endef
@@ -1299,7 +1297,6 @@ endef
TARGET_DEVICES += netgear_ex6150
define Device/netgear_sercomm_nand
@ -30,7 +30,7 @@ index 961f8a3b7514a3658f8d4795c136d5069830126f..982ca6b9196853df2ab5070c26f175ad
$(Device/uimage-lzma-loader)
BLOCKSIZE := 128k
PAGESIZE := 2048
@@ -1429,7 +1426,6 @@ endef
@@ -1482,7 +1479,6 @@ endef
TARGET_DEVICES += netgear_wax202
define Device/netgear_wndr3700-v5
@ -38,7 +38,7 @@ index 961f8a3b7514a3658f8d4795c136d5069830126f..982ca6b9196853df2ab5070c26f175ad
$(Device/netgear_sercomm_nor)
$(Device/uimage-lzma-loader)
IMAGE_SIZE := 15232k
@@ -1754,7 +1750,6 @@ endef
@@ -1819,7 +1815,6 @@ endef
TARGET_DEVICES += tplink_tl-wpa8631p-v3
define Device/ubnt_edgerouter_common
@ -46,7 +46,7 @@ index 961f8a3b7514a3658f8d4795c136d5069830126f..982ca6b9196853df2ab5070c26f175ad
$(Device/uimage-lzma-loader)
DEVICE_VENDOR := Ubiquiti
IMAGE_SIZE := 256768k
@@ -2170,7 +2165,6 @@ endef
@@ -2235,7 +2230,6 @@ endef
TARGET_DEVICES += zbtlink_zbt-wg2626
define Device/zbtlink_zbt-wg3526-16m
@ -54,7 +54,7 @@ index 961f8a3b7514a3658f8d4795c136d5069830126f..982ca6b9196853df2ab5070c26f175ad
$(Device/uimage-lzma-loader)
IMAGE_SIZE := 16064k
DEVICE_VENDOR := Zbtlink
@@ -2183,7 +2177,6 @@ endef
@@ -2248,7 +2242,6 @@ endef
TARGET_DEVICES += zbtlink_zbt-wg3526-16m
define Device/zbtlink_zbt-wg3526-32m

View File

@ -208,7 +208,7 @@ index 0000000000000000000000000000000000000000..e3da684dc950ea4c226705d27b23b047
+
+ int system_bridge_addif(struct device *bridge, struct device *dev)
diff --git a/target/linux/generic/config-5.10 b/target/linux/generic/config-5.10
index 4a17e635b2b4ff62e362c1815723aeaf30b1b443..9b11be8fcd59836a0c6351babae78343658a80f2 100644
index a348d4821ecef796c8c2b983a969b7becb7ae334..dad7baabe69f53ca9afeff8e9392397dd9dc35aa 100644
--- a/target/linux/generic/config-5.10
+++ b/target/linux/generic/config-5.10
@@ -738,6 +738,7 @@ CONFIG_BRIDGE=y

View File

@ -0,0 +1,115 @@
From: David Bauer <mail@david-bauer.net>
Date: Tue, 15 Nov 2022 15:25:40 +0100
Subject: ath79: combine OCEDO dual firmware-partitions
In order to maximize the available space on OCEDO boards using a
dual-image partition layout, combine the two OS partitions into a single
partition.
This allows users to access more usable space for additional packages.
Don't limit the usable image size to the size of a single OS partition.
The initial installation has to be done with an older version of OpenWrt
in case the generated image exceeds the space of a single OS
partition in the future.
Signed-off-by: David Bauer <mail@david-bauer.net>
(cherry picked from commit eded295cd7fd53bfa5afcb67a1b91cfda0523ba6)
diff --git a/target/linux/ath79/dts/ar9344_ocedo_raccoon.dts b/target/linux/ath79/dts/ar9344_ocedo_raccoon.dts
index 0bbeb2b533b3fbbdcce53e094412d459ee762d85..3ecd20e2aa8fe04164cddbc84e0eb800e049c011 100644
--- a/target/linux/ath79/dts/ar9344_ocedo_raccoon.dts
+++ b/target/linux/ath79/dts/ar9344_ocedo_raccoon.dts
@@ -91,15 +91,10 @@
};
partition@50000 {
+ /* Dual-Flash layout combined */
compatible = "denx,uimage";
label = "firmware";
- reg = <0x050000 0x740000>;
- };
-
- partition@790000 {
- label = "vendor";
- reg = <0x790000 0x740000>;
- read-only;
+ reg = <0x050000 0xe80000>;
};
partition@ed0000 {
diff --git a/target/linux/ath79/dts/qca9558_ocedo_koala.dts b/target/linux/ath79/dts/qca9558_ocedo_koala.dts
index 66f8c6589b20221edc41a2f882b28229ff8633b9..de9e1bc19c4d03707f5b921ee5e9fe7422f461bb 100644
--- a/target/linux/ath79/dts/qca9558_ocedo_koala.dts
+++ b/target/linux/ath79/dts/qca9558_ocedo_koala.dts
@@ -88,15 +88,10 @@
};
partition@50000 {
+ /* Dual-Flash layout combined */
compatible = "denx,uimage";
label = "firmware";
- reg = <0x050000 0x740000>;
- };
-
- partition@790000 {
- label = "vendor";
- reg = <0x790000 0x740000>;
- read-only;
+ reg = <0x050000 0xe80000>;
};
partition@ed0000 {
diff --git a/target/linux/ath79/dts/qca9558_ocedo_ursus.dts b/target/linux/ath79/dts/qca9558_ocedo_ursus.dts
index 2dc4c07e918c50eb522100eb7f72c8804d5ba5fb..f8b3681bb7f143a498d5cb64897af335b970c43b 100644
--- a/target/linux/ath79/dts/qca9558_ocedo_ursus.dts
+++ b/target/linux/ath79/dts/qca9558_ocedo_ursus.dts
@@ -59,15 +59,10 @@
};
partition@50000 {
+ /* Dual-Flash layout combined */
compatible = "denx,uimage";
label = "firmware";
- reg = <0x050000 0x740000>;
- };
-
- partition@790000 {
- label = "vendor";
- reg = <0x790000 0x740000>;
- read-only;
+ reg = <0x050000 0xe80000>;
};
partition@ed0000 {
diff --git a/target/linux/ath79/image/generic.mk b/target/linux/ath79/image/generic.mk
index f1542e4e38f7540dd9facf4c40f0b271b9ea1e45..87d01a42eda274f9197f3382d955b87ecf615f7d 100644
--- a/target/linux/ath79/image/generic.mk
+++ b/target/linux/ath79/image/generic.mk
@@ -1803,7 +1803,7 @@ define Device/ocedo_koala
DEVICE_MODEL := Koala
DEVICE_PACKAGES := kmod-ath10k-ct ath10k-firmware-qca988x-ct
SUPPORTED_DEVICES += koala
- IMAGE_SIZE := 7424k
+ IMAGE_SIZE := 14848k
endef
TARGET_DEVICES += ocedo_koala
@@ -1811,7 +1811,7 @@ define Device/ocedo_raccoon
SOC := ar9344
DEVICE_VENDOR := Ocedo
DEVICE_MODEL := Raccoon
- IMAGE_SIZE := 7424k
+ IMAGE_SIZE := 14848k
endef
TARGET_DEVICES += ocedo_raccoon
@@ -1820,7 +1820,7 @@ define Device/ocedo_ursus
DEVICE_VENDOR := Ocedo
DEVICE_MODEL := Ursus
DEVICE_PACKAGES := kmod-ath10k-ct ath10k-firmware-qca988x-ct
- IMAGE_SIZE := 7424k
+ IMAGE_SIZE := 14848k
endef
TARGET_DEVICES += ocedo_ursus

View File

@ -0,0 +1,55 @@
From: David Bauer <mail@david-bauer.net>
Date: Thu, 17 Nov 2022 22:53:33 +0100
Subject: ath79: combine UniFi AC dual firmware-partitions
In order to maximize the available space on UniFi AC boards using a
dual-image partition layout, combine the two OS partitions into a single
partition.
This allows users to access more usable space for additional packages.
Don't limit the usable image size to the size of a single OS partition.
The initial installation has to be done with an older version of OpenWrt
in case the generated image exceeds the space of a single kernel
partition in the future.
Signed-off-by: David Bauer <mail@david-bauer.net>
(cherry picked from commit e4a76673ff4f655ba0698d9edb9efbacd0f82fff)
diff --git a/target/linux/ath79/dts/qca9563_ubnt_unifiac.dtsi b/target/linux/ath79/dts/qca9563_ubnt_unifiac.dtsi
index 2e407c348642cf5145f79c15288856fa141b0512..6704ec983b0beed5421a59f663cf8db6d650f559 100644
--- a/target/linux/ath79/dts/qca9563_ubnt_unifiac.dtsi
+++ b/target/linux/ath79/dts/qca9563_ubnt_unifiac.dtsi
@@ -69,17 +69,12 @@
};
partition@70000 {
+ /* Combine kernel0 & kernel1 */
label = "firmware";
- reg = <0x070000 0x790000>;
+ reg = <0x070000 0xf20000>;
compatible = "denx,uimage";
};
- partition@800000 {
- label = "kernel1";
- reg = <0x800000 0x790000>;
- read-only;
- };
-
partition@f90000 {
label = "bs";
reg = <0xf90000 0x020000>;
diff --git a/target/linux/ath79/image/generic-ubnt.mk b/target/linux/ath79/image/generic-ubnt.mk
index 7642c59e02848741996d6f9dcaf923d5dbaf6880..d6898c79d6b4d51d19813781e086db8086537318 100644
--- a/target/linux/ath79/image/generic-ubnt.mk
+++ b/target/linux/ath79/image/generic-ubnt.mk
@@ -221,7 +221,7 @@ TARGET_DEVICES += ubnt_unifi
define Device/ubnt_unifiac
DEVICE_VENDOR := Ubiquiti
SOC := qca9563
- IMAGE_SIZE := 7744k
+ IMAGE_SIZE := 15488k
DEVICE_PACKAGES := kmod-ath10k-ct ath10k-firmware-qca988x-ct
endef

View File

@ -0,0 +1,20 @@
From: Maciej Krüger <mkg20001@gmail.com>
Date: Sun, 10 Apr 2022 01:58:41 +0200
Subject: oonf-olsrd2: add support to check if service is running
diff --git a/oonf-olsrd2/files/olsrd2.init b/oonf-olsrd2/files/olsrd2.init
index debae9883258b821a5ea0aecebe879ddc84e29eb..b6c1e9a5522788005db850ceaf6699aa1eee6877 100755
--- a/oonf-olsrd2/files/olsrd2.init
+++ b/oonf-olsrd2/files/olsrd2.init
@@ -3,4 +3,11 @@
START=82
DAEMON='olsrd2'
+running() {
+ test -e "/tmp/run/olsrd2.pid" && test -e "/proc/$(cat "/tmp/run/olsrd2.pid")" && return 0
+ return 1
+}
+
+extra_command "running" "Check if service is running"
+
. /lib/functions/oonf_init.sh

5
scripts/lint-editorconfig.sh Executable file
View File

@ -0,0 +1,5 @@
#!/bin/sh
set -e
editorconfig-checker .github contrib docs package scripts targets tests ./*.* .luacheckrc .editorconfig

View File

@ -130,7 +130,7 @@ device('d-link-dir825b1', 'dlink_dir-825-b1', {
-- Enterasys
device('enterasys-ws-ap3705', 'enterasys_ws-ap3705i', {
device('enterasys-ws-ap3705i', 'enterasys_ws-ap3705i', {
factory = false,
})
@ -176,6 +176,12 @@ device('joy-it-jt-or750i', 'joyit_jt-or750i', {
factory = false,
})
-- LibreRouter
-- lacks support for additional radios
device('librerouter-v1', 'librerouter_librerouter-v1', {
factory = false,
})
-- Netgear

View File

@ -9,6 +9,11 @@ local ATH10K_PACKAGES_QCA9887 = {
local ATH10K_PACKAGES_QCA9888 = {}
-- Aerohive
device('aerohive-hiveap-121', 'aerohive_hiveap-121')
-- GL.iNet
device('gl.inet-gl-ar300m-nor', 'glinet_gl-ar300m-nor', {
@ -23,6 +28,9 @@ device('gl.inet-gl-ar750s-nor', 'glinet_gl-ar750s-nor', {
packages = ATH10K_PACKAGES_QCA9887,
})
device('gl.inet-gl-xe300', 'glinet_gl-xe300', {
factory = false,
})
-- Netgear

View File

@ -42,6 +42,15 @@ try_config('PACKAGE_usbip', false) -- fails to build
try_config('PACKAGE_ATH_DEBUG', true)
try_config('PACKAGE_dnsmasq_full_dhcpv6', false)
try_config('PACKAGE_dnsmasq_full_auth', false)
try_config('PACKAGE_dnsmasq_full_ipset', false)
try_config('PACKAGE_dnsmasq_full_nftset', false)
try_config('PACKAGE_dnsmasq_full_conntrack', false)
try_config('PACKAGE_dnsmasq_full_noid', false)
try_config('PACKAGE_dnsmasq_full_broken_rtc', false)
try_config('PACKAGE_dnsmasq_full_rtc', false)
try_config('TARGET_SQUASHFS_BLOCK_SIZE', 256)
config('KERNEL_PROC_STRIPPED', true)
@ -59,6 +68,8 @@ config('KERNEL_SECCOMP', false)
-- use try_config, so enabling the package is still possible
try_config('PACKAGE_kmod-mt7915e', false)
try_config('OONF_GENERIC_HTTP', true)
config('COLLECT_KERNEL_DEBUG', true)
config('TARGET_MULTI_PROFILE', true)
@ -81,6 +92,7 @@ config('GLUON_MINIFY', istrue(env.GLUON_MINIFY))
packages {
'-ca-bundle',
'-dnsmasq',
'-kmod-ipt-offload',
'-kmod-nft-offload',
'-libustream-wolfssl',

View File

@ -1,5 +1,27 @@
local ATH10K_PACKAGES_IPQ40XX = {}
local ATH10K_PACKAGES_IPQ40XX_QCA9888 = {}
local ATH10K_PACKAGES_IPQ40XX = {
'kmod-ath10k',
'-kmod-ath10k-ct',
'-kmod-ath10k-ct-smallbuffers',
'ath10k-firmware-qca4019',
'-ath10k-firmware-qca4019-ct',
}
local ATH10K_PACKAGES_IPQ40XX_QCA9888 = {
'kmod-ath10k',
'-kmod-ath10k-ct',
'-kmod-ath10k-ct-smallbuffers',
'ath10k-firmware-qca4019',
'-ath10k-firmware-qca4019-ct',
'ath10k-firmware-qca9888',
'-ath10k-firmware-qca9888-ct',
}
local ATH10K_PACKAGES_IPQ40XX_SMALLBUFFERS = {
'-kmod-ath10k',
'kmod-ath10k-smallbuffers',
'-kmod-ath10k-ct',
'-kmod-ath10k-ct-smallbuffers',
'ath10k-firmware-qca4019',
'-ath10k-firmware-qca4019-ct',
}
defaults {
@ -108,6 +130,7 @@ device('plasma-cloud-pa2200', 'plasmacloud_pa2200', {
device('zyxel-nbg6617', 'zyxel_nbg6617')
device('zyxel-wre6606', 'zyxel_wre6606', {
packages = ATH10K_PACKAGES_IPQ40XX_SMALLBUFFERS,
factory = false,
class = 'tiny', -- 128M ath10k + ath10k
})

View File

@ -1,9 +1,9 @@
include 'mikrotik.inc'
local ATH10K_PACKAGES_IPQ40XX = {}
local ATH10K_PACKAGES_IPQ40XX_SMALLBUFFERS = {}
device('mikrotik-hap-ac2', 'mikrotik_hap-ac2', {
packages = ATH10K_PACKAGES_IPQ40XX,
packages = ATH10K_PACKAGES_IPQ40XX_SMALLBUFFERS,
})
device('mikrotik-sxtsq-5-ac-rbsxtsqg-5acd', 'mikrotik_sxtsq-5-ac', {

View File

@ -4,7 +4,7 @@
-- The QCA9984 on the other hand works fine for 11s meshes on both bands.
local QCA9980_PACKAGES = {'-kmod-ath10k', 'kmod-ath10k-ct', '-ath10k-firmware-qca99x0', 'ath10k-firmware-qca99x0-ct'}
local QCA9984_PACKAGES = {}
local QCA9984_PACKAGES = {'kmod-ath10k', '-kmod-ath10k-ct', 'ath10k-firmware-qca9984', '-ath10k-firmware-qca9984-ct'}
--

View File

@ -47,6 +47,11 @@ device('avm-fritz-box-7412', 'avm_fritz7412', {
factory = false,
})
device('arcadyan-vgv7510kw22', 'arcadyan_vgv7510kw22-nor', {
factory = false,
aliases = {'o2-box-6431'},
})
-- TP-Link
-- CAVEAT: These devices don't have a dedicated WAN port.

View File

@ -7,16 +7,42 @@ device('asus-rt-ac57u', 'asus_rt-ac57u', {
-- Cudy
device('cudy-wr1300', 'cudy_wr1300', {
factory = false,
})
device('cudy-wr2100', 'cudy_wr2100', {
factory = false,
})
device('cudy-x6-v1', 'cudy_x6-v1', {
factory = false,
})
device('cudy-x6-v2', 'cudy_x6-v2', {
factory = false,
})
-- D-Link
device('d-link-dap-x1860-a1', 'dlink_dap-x1860-a1')
device('d-link-dir-860l-b1', 'dlink_dir-860l-b1')
-- GL.iNet
device('gl.inet-gl-mt1300', 'glinet_gl-mt1300', {
factory = false,
})
-- Mercusys
device('mercusys-mr70x-v1', 'mercusys_mr70x-v1')
-- Netgear
device('netgear-ex6150', 'netgear_ex6150', {
@ -47,6 +73,7 @@ device('netgear-wndr3700-v5', 'netgear_wndr3700-v5', {
},
})
-- TP-Link
device('tp-link-archer-c6-v3', 'tplink_archer-c6-v3', {
@ -57,18 +84,21 @@ device('tp-link-re500-v1', 'tplink_re500-v1')
device('tp-link-re650-v1', 'tplink_re650-v1')
-- Ubiquiti
device('ubiquiti-unifi-6-lite', 'ubnt_unifi-6-lite', {
factory = false,
})
-- Wavlink
device('wavlink-ws-wn572hp3-4g', 'wavlink_ws-wn572hp3-4g', {
factory = false,
})
-- Xiaomi
device('xiaomi-mi-router-4a-gigabit-edition', 'xiaomi_mi-router-4a-gigabit', {
@ -83,6 +113,7 @@ device('xiaomi-mi-router-3g-v2', 'xiaomi_mi-router-3g-v2', {
factory = false,
})
-- ZBT
device('zbtlink-zbt-wg3526-16m', 'zbtlink_zbt-wg3526-16m', {