Compare commits

...

69 Commits

Author SHA1 Message Date
Martin Weinelt
800c3b2bac docs, README: Gluon v2018.2.2 2019-06-24 14:23:42 +02:00
Martin Weinelt
ea5d3f01f6 docs: Add v2018.2.2 release notes 2019-06-24 14:23:42 +02:00
bobcanthelpyou
c63346fa6e docs: update links (moved permanently)
(cherry picked from commit 8549438063)
2019-06-24 14:18:39 +02:00
bobcanthelpyou
75c8e00f83 docs: remove unavailable devices (#1667)
- A Picostation M5 never existed
- TL-WR710N v1 and v2.1 are part of ar71xx-generic not ar71xx-tiny

(cherry picked from commit e8b37b2d7c)
2019-06-24 14:18:24 +02:00
bobcanthelpyou
0986ec7e9b docs: fix typos and common misspellings (#1668)
(cherry picked from commit 170c494f40)
2019-06-24 14:18:16 +02:00
bobcanthelpyou
eb46e5a9f1 docs: add new <%| tag for escaped expressions (#1683)
the tag was added by dd23a805c2

(cherry picked from commit cae79eb074)
2019-06-24 14:17:54 +02:00
bobcanthelpyou
04f6d0a261 docs: fix typos and small text improvements
(cherry picked from commit ff7aeafad2)
2019-06-24 14:17:29 +02:00
Vincent Wiemann
c98580946d docs: faq: add note for supported hardware (#1665)
A table with hardware supported by Gluon can be found on the OpenWrt Wiki. This commit adds a corresponding FAQ entry.

(cherry picked from commit deb020d3ef)
2019-06-24 14:15:37 +02:00
Martin Weinelt
3ae816d38d docs: fix reference to #noibss in v2018.2.1 release notes
Uncovered by sphinx-build:
docs/releases/v2018.2.1.rst:19: WARNING: Too many autonumbered footnote references: only 0 corresponding footnotes available.
docs/releases/v2018.2.1.rst:19: WARNING: Unknown target name: "noibss".
docs/releases/v2018.2.1.rst:26: WARNING: Unknown target name: "noibss".
docs/releases/v2018.2.1.rst:30: WARNING: Unknown target name: "noibss".
docs/releases/v2018.2.1.rst:34: WARNING: Unknown target name: "noibss".
docs/releases/v2018.2.1.rst:35: WARNING: Unknown target name: "noibss".
2019-06-21 00:45:58 +02:00
Matthias Schiffer
5cb69254cc
modules: update OpenWrt
fc1dae5be797 brcm2708: Revert "staging: vc04_services: prevent integer overflow in create_pagelist()"
84aba5796ea2 gemini: 4.14: Fix up DNS-313 compatible string
9656f49ea009 base-files: fix uci led oneshot/timer trigger
bd0c3988e742 kernel: bump 4.14 to 4.14.128

(cherry picked from commit 99f344bac3)
2019-06-21 00:22:03 +02:00
Martin Weinelt
bc55bb1db1
modules: update OpenWrt
2999c342aa kernel: bump 4.14 to 4.14.127
9de2f4d4ce kernel: bump 4.9 to 4.9.182
5fe809d718 Revert "ipq806x: fix EA8500 switch control"
e493230e84 kernel: bump 4.14 to 4.14.126
c449130bb2 mvebu: fixes commit f63a1caf22cb
6fa6f74e37 kernel: backport 4.18 patch adding DMI_PRODUCT_SKU
2cd234d96b mac80211: brcmfmac: backport important fixes from kernel 5.2
85eda6f61e kernel: mt29f_spinand: fix memory leak during page program
a0543d8e70 uboot-fritz4040: update PKG_MIRROR_HASH
f63a1caf22 kernel: bump 4.14 to 4.14.125
40b1e899ba kernel: bump 4.9 to 4.9.181
5dbac47426 kernel: re-add bridge allow reception on disabled port
5d27e87de7 rpcd: fix init script reload action
1867f10807 kernel: bump 4.14 to 4.14.123
7fe1b4a4b2 kernel: bump 4.9 to 4.9.180
6563e494a0 kernel: bump 4.14 to 4.14.122
e3408d09b0 kernel: bump 4.9 to 4.9.179
b2b1265a1d apm821xx: backport accepted linux-crypto patches

Fixes: CVE-2019-11477, CVE-2019-11478, CVE-2019-11479

Compile-tested: x86_64
Runtime-tested: x86_64
(cherry picked from commit 1b06a15bbd)
2019-06-21 00:22:02 +02:00
Matthias Schiffer
b7bca40423
gluon-mesh-vpn-core: move common VPN config to gluon UCI package
We now keep the VPN enable state, bandwidth limit enable and actual limits
in the core config to avoid having to recover "user intent" from different
config files when the used VPN packages change.

Fixes #1736

(cherry picked from commit 818c31afdd)
2019-06-20 20:57:23 +02:00
Matthias Schiffer
4ddde78b86
gluon-mesh-vpn-core: don't consider tunneldigger when fastd is installed
None of our scripts can handle fastd and tunneldigger running at the same
time. When both are installed, ignore tunneldigger.

(cherry picked from commit f6df3b0541)
2019-06-20 20:57:23 +02:00
Martin Weinelt
be967d8f04
modules: update Gluon packages
524ae77 tunneldigger: update to newest upstream commit (#216)
2019-06-18 15:43:01 +02:00
Matthias Schiffer
d43dbdca09
ar71xx: Onion Omega is BROKEN
This device doesn't have an Ethernet port, and even with the Ethernet
shield, eth0 is not configured.

(cherry picked from commit a44a5dce02)
2019-06-15 23:33:02 +02:00
Martin Weinelt
d3033163a1 modules: update routing
c07326c batman-adv: Fix duplicated OGMs on NETDEV_UP

fixes #1446

(cherry picked from commit 9e00ecd8e4)
2019-06-09 00:04:54 +02:00
Martin Weinelt
c49e04745d modules: update routing
cad1fba Merge pull request #469 from ecsv/batadv-for-18.06
145ba7f batman-adv: Merge bugfixes from 2019.2
40b7519 batman-adv: Reorder patches

(cherry picked from commit 832de8615a)
2019-06-09 00:04:50 +02:00
Martin Weinelt
d69426da42 modules: update packages
5d3cb594e Merge pull request #9058 from micmac1/sqlite3-arm-endian-owrt18
d13f831ba sqlite3: fix arm endian issue
48687a581 Merge pull request #8966 from BKPepe/18.06-ytdl
5387239ad youtube-dl: update to version 2019.05.11
76ebe2be0 Merge pull request #8765 from BKPepe/1806-urllib3
ec5e894ce Merge pull request #8954 from jonathanunderwood/openwrt-18.06-getdns-stubby-from-master
54928eb69 nfs-kernel-server: use portmap, drop rpcbind
09e18eef7 stubby: set PKG_SOURCE_VERSION using PKG_VERSION
f8c8b96e7 stubby: remove PKG_SOURCE from Makefile
28c328d66 stubby: add support for TLS configuration options
eec23a91b stubby: add support for tls_port resolver config option (#8889)
5415cc7b2 stubby: update to 0.2.6
b1cc26adf getdns: update to version 1.5.2
813d49c69 stubby: Update PKG_RELEASE
3b498844a stubby: fix handling of pkis in config (#8888)
95daecd81 stubby: fixed duplicate IPv6 address in stubby.yml; fixed typo in README.md
eca82ce3d Merge pull request #8938 from lucize/doveup18
2c87aeba1 dovecot: update to 2.2.36.1
8459433eb python-urllib3: update to 1.24.3
014106741 Merge pull request #8781 from neheb/pros
41c85f8ef Merge pull request #8767 from neheb/cr2
9e4966bd3 Merge pull request #8816 from neheb/lo
55b505f82 Merge pull request #8815 from neheb/gr
1663a0186 Merge pull request #8881 from micmac1/maria_10.1.39
78328ebe3 libxslt: add PKG_CPE_ID for proper CVE tracking
816c7aed6 Merge pull request #8882 from micmac1/xslt-cve-18
2eb2a94da mariadb: bump to 10.1.39
d03db02bc libxslt: backport patch for CVE-2019-11068
d3c324d8b Merge pull request #8871 from neheb/ad
fb9238b61 addrwatch: Add -std=gnu89 to fix compilation
5fae371ab Merge pull request #8779 from neheb/libsec
3ca88ff6d Merge pull request #8780 from neheb/apc
1d44e408f Merge pull request #8770 from neheb/es
759e83674 Merge pull request #8772 from neheb/oa
ea1429f69 Merge pull request #8778 from neheb/liba
46d30c221 Merge pull request #8850 from EricLuehrsen/unbound_dhcp_1806
7f7fda67b add rpcbind
80429e0a5 unbound: fix local dns synthesis corner cases
1f77a0582 Merge pull request #8777 from neheb/sendm
071a926dd Merge pull request #8817 from neheb/bonnnnn
ddc48c3d5 bonnie++: Remove wrongly added patch during cherry-pick
21de3c1ac loudmouth: Disable debug and fix compilation
79e69bf41 grilo: Remove build dependency on perl-xml-parser
c3f6660b8 nfs-kernel-server: fix missing libbsd dependency
d2f254a72 nfs-kernel-server: update to 2.3.3
dac119d49 nfs-kernel-server: Switch to xz tarball
f1ab32ab6 nfs-kernel-server: switch to libtirpc, enable ipv6
5ab569a06 nfs-kernel-server: fix missing host symbol res_querydomain/missing-include-dir
20809ba6a nfs-kernel-server: add -Wno-error=format-security to TARGET_CFLAGS to a fix compily error
2c137a7a5 nfs-kernel-server: update to 2.3.2
765ae2798 libtirpc: enable host build
9b3414fd1 znc: Clean up Makefile and fix compilation on PPC
a8316a5c6 nano: update to 4.2
f69a00efb Merge pull request #8764 from BKPepe/1806-youtubedl
024543fb1 Merge pull request #8766 from neheb/qu
c69c1aea4 Merge pull request #8768 from neheb/cmd
d018e0946 Merge pull request #8776 from neheb/luas
9f74ef0f8 luasec: cleanup Makefile
bbfd71a59 luasec: use gcc to link instead of ld
7059f9476 luasec: Replace -fPIC with $(FPIC)
a3d99ad90 youtube-dl: update to version 2019.04.24
9e532f225 Merge pull request #8773 from neheb/cla
bcf889b36 intltool: Add patch to fix regular expressions and avoid warnings in perl 5.22 and later.
2653eabd4 prosody: Change linker from LD to CC
c15b779b8 prosody: Update prosody to 0.11.2 Update Fixes CVE-2018-10847
9104a1f14 apcupsd: preset shutdown binary
e484057d0 libseccomp: Update to 2.3.3
f61ee11d0 libartnet: Fix compile with GCC7
9d2bf88ec sendmail: link with gcc instead of ld
dd2c1e03e Merge pull request #8769 from neheb/da
3a478756f Merge pull request #8774 from neheb/psq
cf4537574 psqlodbc: Update to 11.00.0000
8ca29a4f3 psqlodbc: bump to 10.03.0000, fix --with-unixodbc
81a6687a6 Merge pull request #8771 from neheb/pia
fa060f40e clamsmtp: Really fix compilation
850126c0d oath-toolkit: Add patch from Fedora to fix compilation
fd52a3df0 pianod: Update to 174.09 release (removes BSD dependencies)
a0ca3e308 espeak: Fix build issues. Cleanup patches
d02a17b35 darkstat: Remove libbsd dependency
0a4f26f3c cmdpad: Fix compile
27af84f57 crtmpserver: Update to official git repo
1a7d79d98 quassel-irc: Update to latest version
873762ce2 quasselc: Update to latest commit
c8c8c1a4a Merge pull request #8759 from neheb/bon2
76132b044 bonnie++: Update to 1.98
df7f21bcd Merge pull request #8718 from neheb/lcd
588f971f0 Merge pull request #8716 from neheb/wifi
4e0a836c5 Merge pull request #8717 from neheb/setser
403d40d91 Merge pull request #8720 from neheb/iio
03a4afe5f Merge pull request #8719 from neheb/unix
d42547cd3 Merge pull request #8733 from jefferyto/openwrt-18.06-python-cve-2019-9636
fbcac2d53 python,python3: Fix CVE-2019-9636 - urlsplit missing NFKC normalization
01f90caa1 Merge pull request #8706 from nxhack/18_06_icu_support_reiwa
e0bee26f4 libiio: add missing dependency to zlib
7220dab75 unixodbc: save unixodbc_conf.h for host build
01a2f4353 unixodbc: fix clean-build compilation
bd380a3c7 unixodbc: Fix LIB_PREFIX in host build
9b5b23f44 lcd4linux: Update to 1204
c26a03a1d setserial: Don't build docs to remove nroff dependency
2a85006ab wifidog: Change to use TLS above 1.0
94b07876e icu: [openwrt-18.06] support for new Japanese era Reiwa
c9aedd9a5 nano: update to 4.1
49e759b28 Merge pull request #8638 from mwarning/zerotier
890993d40 Merge pull request #8477 from BKPepe/openwrt-18.06_perl
d6ed5c22b net/mosquitto: correct config file option name
05e16dd22 zerotier: fix multiple instance handling and port setting
59c6457ec zerotier: update to version 1.2.12
4db102755 Merge pull request #8595 from EricLuehrsen/openwrt-18.06
43c1d6c2a unbound: correct forward of root domain
b8970833b perlmod: fix ability to build module out-of-feed

(cherry picked from commit bbd52db511)
2019-06-09 00:04:47 +02:00
Martin Weinelt
df142f7508 modules: update OpenWrt
6761961919 openssl: update to 1.0.2s
9591155737 kernel: Fix arc kernel 4.14 build
dc1b578a4c curl: Fix multiple security problems
40ed8389ef mbedtls: update to version 2.16.1
7e07320dc4 kernel: bump 4.14 to 4.14.121
054aecdf0b kernel: bump 4.9 to 4.9.178
e9a7344550 uci: fix heap use after free (FS#2288)
4b633affff brcm63xx: drop linux,part-probe usage where possible
cfb72eed69 brcm63xx: drop own implementation of DT partitions in favour of upstream
68a5e662c2 kernel: bump 4.14 to 4.14.120
85294fc5e7 kernel: bump 4.9 to 4.9.177
152755c9a2 kernel: bump 4.14 to 4.14.119
82e4b4250d kernel: bump 4.9 to 4.9.176
cf2aa873ea ar71xx: Fix network setup for TP-Link Archer C25 v1
e6928e6b29 kernel: Fix arc kernel build
3239f56136 uboot-fritz4040: Add host flags for host compiler
b5ce5217e2 ramips: rt305x: Reduce size of a5-v11 image
d3053b1bdc kernel: bump 4.14 to 4.14.118
f053a8ce41 kernel: bump 4.9 to 4.9.175
412d80cdb7 kernel: bump 4.14 to 4.14.115
f105a9c35c kernel: bump 4.9 to 4.9.172
4685bf1d2f kernel: bump 4.14 to 4.14.114
2faceb1a39 kernel: bump 4.9 to 4.9.171
e0505cc018 Revert "uhttpd: disable concurrent requests by default"
24aefaec62 tools/pkg-config: Handle variable substitution of 'bindir' to redirect to STAGING_DIR/bin
aaa34526c4 tools/pkg-config: pass arguments at the end
3103bd54c5 kernel: bump 4.14 to 4.14.113
a5c62c933b kernel: bump 4.9 to 4.9.170
ac3b5f00e1 kernel: bump 4.14 to 4.14.112
15a70d085d kernel: bump 4.9 to 4.9.169
e6e5435c5b ar71xx: GL.iNet AR300M family: correct LED definitions
ecfe0f1cc4 ca-certificates: update to version 20190110
2d2e615dee mac80211: brcmfmac: really add early fw crash recovery
02aed76968 mac80211: brcmfmac: early work on FullMAC firmware crash recovery
1a6d7a651f lantiq: tdw89x0: Fix WLAN LED on TP-Link W8970 v1.2 (FS#2232)
6ac061f319 ar71xx: Fix IMAGE_SIZE for TP-Link Archer C7 v5
7268ebb1e4 ar71xx: Correct MAC address for WAN interface of Archer C7 v5
c7eb679047 ar71xx: Add "info" partition for TP-Link Archer C7 v5
9c4fa1bb5b ar71xx: Remove ath10k packages from archer-c7-v1 (fixes FS#1743)
6c81f5fac6 kernel: bump 4.14 to 4.14.111
aa0e6fc489 kernel: bump 4.9 to 4.9.168
dad220a00c kernel: bump 4.14 to 4.14.110
07bd5b7a81 kernel: bump 4.9 to 4.9.167
4b4de23dfb openssl: update to 1.0.2r

Build-tested: x86-64
(cherry picked from commit f8bbdd96f0)
2019-06-09 00:04:44 +02:00
Matthias Schiffer
c50423993d gluon-mesh-batman-adv: drop packets from mesh with next-node source or destination address (#1714)
Fixes #1659

(cherry picked from commit 09916f6e35)
2019-06-09 00:04:35 +02:00
Matthias Schiffer
d039502ff9 Refresh openwrt patches
(cherry picked from commit 6412177a45)
2019-06-09 00:04:24 +02:00
Martin Weinelt
cba3f090b1 modules: update routing
e5fe4b6 Merge pull request #462 from ecsv/batadv-18.06
ee2d981 batman-adv: Merge bugfixes from 2019.1
4d7a182 nodogsplash: fix invalid pointer bug when clock is turned back (#456)
2ad165c Merge pull request #452 from dangowrt/openwrt-18.06
71f9aae luci-app-bmx7: update to v0.1-alpha
0e3d701 bmx7: update to git snapshot as of 2018-12-29
42af835 batman-adv: Refresh patches

(cherry picked from commit b6c4e06b40)
2019-06-09 00:04:13 +02:00
Martin Weinelt
bae72d9a66 modules: update packages
b7bcf24a0 znc: backport CVE fixes to 1.6
f91539e92 Merge pull request #7807 from D-Albers/openwrt-18.06
550de2331 Merge pull request #8449 from micmac1/ssh2-1806-181
16fcd6d38 mosquitto: bump to v1.5.8
1a23db5b2 php7: Add PKG_CPE_ID for proper CVE tracking
7aacf2423 php7: update to 7.2.16
27433fc3e php7: fix cross compiling patch (fixes #8166)
00f6119bd php7: update to 7.2.15
ef57201aa php7: update to 7.2.14
e9271cf27 php7: update to 7.2.13
1308ba92c php7: update to 7.2.12
9e330d6e9 php7: update to 7.2.11
5e25be535 php7: update to 7.2.10
85c616557 php7: adjust load priority for openssl (fixes #6893)
31d279c96 nano: update to 4.0
59aa52ccd libssh2: version bump/CVE fixes
e47fe43ea Jinja2: Update to 2.10
8d7e62d95 ruby: update to 2.5.5
17a0279dd ruby: fix build for uclibc
017b74d35 vpnc: fix IPv6-triggered inoperability
563aafcee postgresql: Revert adding build dependency to zlib/host
3323ebddf Merge pull request #8403 from BKPepe/transmission_openwrt-18.06
c0293cd99 Merge pull request #8402 from BKPepe/netdata_openwrt-18.06
9bb4bcc9b Merge pull request #8395 from EricLuehrsen/unbound_191_1806
d444a910f transmission: update to version 2.94
99c3670bb Netdata: update to version 1.12.2
1e347beb3 libtalloc: Merge 2.1.14 from master (remove libbsd dependency)
a476bf8d0 unbound: update to 1.9.1
060e59a28 Merge pull request #8386 from wvdakker/openwrt-18.06
86efe678a Shorewall6: Bump to 5.2.0.5.
9cdc22eef Shorewall: Bump to 5.2.0.5.
3669215b2 Shorewall6-lite: Bump to 5.2.0.5.
762093fe7 Shorewall-lite: Bump to 5.2.0.5.
1a97a8444 Shorewall-core: Bump to 5.2.0.5.
121072523 postgresql: add HOST_BUILD_DEPENDS:=zlib/host
daef6665b gnurl: update to version 7.64.0
5fff80472 libgabe: add package
cb253649a libpbc: add new package
f03acaa39 Merge pull request #8346 from Cynerd/jinja2-missing-dep-18.06
2324d341e Jinja2: add missing dependency on markupsafe
0ba0e0d1b gnunet: revert accidentally applied libmicrohttpd changes
799c409d3 gnunet-secushare: add package (replacing gnunet-social package)
d70e35ba1 gnunet: GNUnet v0.11.0 release
799f553b2 postgresql: update to version 9.6.12
257dfbb55 libextractor: update to version 1.9
6c2266acf gnurl: update to version 7.63.0
3e6d392e0 openvswitch: bump to version 2.8.5
931070c26 jool: Backport two fixes for newer kernels.

(cherry picked from commit 23cc093bd0)
2019-06-09 00:04:10 +02:00
Martin Weinelt
93be7ad5e4 modules: update OpenWrt
ca8b4d684b kernel: bump 4.14 to 4.14.109
1ff4cd1ff1 kernel: bump 4.9 to 4.9.166
22a3e65662 kernel: bump 4.14 to 4.14.108
dac25a5f22 kernel: bump 4.9 to 4.9.165
6c3ca1d1ea kernel: bump 4.14 to 4.14.107
dcdf50956f kernel: bump 4.9 to 4.9.164
4336cfda12 ramips: allow packets with ttl=0
13eb73b278 mt76: update to latest openwrt-18.06 branch
0a637c7f87 kernel: bump 4.14 to 4.14.106
24f32072d2 kernel: bump 4.9 to 4.9.163
dcfca830a8 ipq40xx: copy Fritz4040 UBoot to STAGING_DIR_IMAGE
400601f0e3 tools/libelf: Add mirrors as main site is dead
f87a1874ef mt76: update to latest openwrt-18.06 branch
9f2cbcad6d busybox: add missing install dir
4918fe0291 kernel: bump 4.14 to 4.14.105
2b9d2f6624 kernel: bump 4.9 to 4.9.162

Build-tested: ar71xx-generci, ramips-mt7621
Runtime-tested: ramips-mt7621 (D-Link DIR-860L B1)
(cherry picked from commit e79fce2c6d)
2019-06-09 00:04:06 +02:00
Matthias Schiffer
2dc2dca73e gluon-site: add better error message for domain name conflicts
When two domains alias the same name (or one aliases another), display a
meaningful error message like:

    Failed to alias domain 'foo' as 'bar', name already taken by
    domain 'baz'.

(cherry picked from commit c208fc4fd9)
2019-06-09 00:03:47 +02:00
bobcanthelpyou
371bdf3e28 gluon-web: fix typos
(cherry picked from commit 3b55cbc1f3)
2019-06-09 00:01:55 +02:00
Sven Eckelmann
0924074a34 gluon-mesh-batman-adv: Only use local TT to count non-wifi clients (#1676)
The amount of local wifi clients is currently counted by two different
ways:

* asking the kernel wifi layer for the number of of clients on 2.4GHz and
  5GHz band
* asking batman-adv for the number of non-timed out entries in the local
  translation table with WiFi flag

The number of wifi24+wifi5 and the number of TT wifi client counts are
reported via respondd to various consumers. The ffrgb meshviewer is
displaying these values as:

* 2,4 GHz: wifi24
* 5 GHz: wifi5
* other: (TT local wifi+non-wifi clients) - (wifi24 + wifi5)

But the local translation table is holding entries much longer than the
wifi layer. It can therefore easily happen that a wifi client disappears in
the kernel wifi layer and batman-adv still has the entry stored in the
local TT.

The ffrgb meshviewer would then show this count in the category "other".
This often results in confusions because "other" is usually for ethernet
clients. And nodes with a frequently disappearing larger group of clients
(near bus stations or larger intersections) often show most clients under
the group "other" even when this devices doesn't have a LAN ethernet port.

It is better for presentation to calculate the number of total wifi clients
by summing up wifi24 + wifi5. And getting the number of total clients (non
wifi + wifi) by adding the result of the previous calculation to the sum of
non-wifi client in the local batman-adv translation table.

Fixes: 89a9d8138c ("gluon-mesh-batman-adv-core: Announce client count by frequency")
Reported-by: Pascal Wettin <p.wettin@gmx.de>
(cherry picked from commit b850fff7e4)
2019-06-09 00:01:40 +02:00
David Bauer
eed810aac1
ramips: fix R6120 factory image
The factory firmware omits the JFFS2 end-marker while flashing via
web-interface. Add a 64k padding after the marker fixes this problem.

When the end-marker is not present, OpenWRT won't save the overlayfs
after initial flash.

(cherry picked from commit dca50d2f26)
2019-05-10 18:19:10 +02:00
Matthias Schiffer
6229c5997a
build: move hostapd-mini package from generic target to Makefile
By passing the package name through merge_packages, it becomes possible to
override the package choice in GLUON_SITE_PACKAGES again, for example:

	GLUON_SITE_PACKAGES += -hostapd-mini hostapd

(cherry picked from commit 134a6460a7)
2019-04-19 13:55:23 +02:00
Tata
96a821e0dd gluon-config-mode-mesh-vpn: 0300-mesh-vpn.lua fix limit_ingress default value (#1682)
in case of default disabled simple-tc for tunneldigger

Signed-off-by: Jan-Tarek Butt <tarek@ring0.de>
2019-04-12 01:03:10 +02:00
bobcanthelpyou
5161a62a23 docs: add notice for opkg repo change (#1693) 2019-04-11 08:55:34 +02:00
bobcanthelpyou
015b0d681a docs: rename target sunxi to sunxi-cortexa7
renamed by 210d97c53e
2019-03-26 00:35:49 +01:00
bobcanthelpyou
c283f20dd7 docs: remove target ipq806x
was marked as broken by #1526 cause of #1505
2019-03-26 00:35:42 +01:00
lrnzo
de82e58cf2 docs: update upgrade.rst
small grammatical fix
2019-03-18 21:53:34 +01:00
Martin Weinelt
d6cab552df docs, README: Gluon v2018.2.1 2019-03-15 22:48:47 +01:00
Martin Weinelt
66f30e98a3 docs: add v2018.2.1 release notes 2019-03-15 22:48:47 +01:00
Martin Weinelt
0a0da76bda ramips-mt76x8: fix image name for wr841n v13 2019-03-14 12:30:28 +01:00
Martin Weinelt
c5c973b176 patches/openwrt: refresh 0006-generic-vxlan-backport-support-for-VXLAN-over-link-local-IPv6-to-4.9.patch (#1663) 2019-03-14 00:36:47 +01:00
Martin Weinelt
8890777d95 modules: update OpenWrt
8de93ce745 mt76: update to the latest version
85cb473f93 mac80211: add a fix to prevent unsafe queue wake calls during restart
08db9397c9 mac80211: backport tx queue start/stop fix
810ee3b84a kernel: bump 4.14 to 4.14.104
5183df0dbf kernel: bump 4.9 to 4.9.161
eea538204b kernel: fix refcnt leak in LED netdev trigger on interface rename
f1803e3492 oxnas: add SoC restart driver for reboot
1bfe1ce5c4 oxnas: cheery-pick DTS improvements from master
9ee8c8daf4 kernel: bump 4.14 to 4.14.103
e2ba7a4b47 kernel: bump 4.9 to 4.9.160

Compile-tested: ramips-mt7621, ar71xx-generic
2019-03-14 00:36:42 +01:00
Sven Eckelmann
ca69e9e391 ath10k/ath10k-ct: fix incorrect multicast/broadcast rate setting
If no mcast_rate is set for the wifi-iface then there is no rate_idx (0)
set for the bss. This breaks for example 5GHz meshpoint interfaces because
0 maps to a CCK rate (11Mbit/s).

It must also be avoided that the ath10k-ct internal state for the rates is
not synced with the mac80211 rates state. Otherwise, the user specified
rate (e.g. a wifi-iface mcast_rate for a meshpoint interface) will only be
set on startup. And a short while after that, ath10k-ct specific code in
ath10k_check_apply_special_rates is missing a valid rate in its own
structures and is then recalculating a new default rate. This default rate
is in most situations not the requested rate.

Fixes: a399b60735 ("ath10k/ath10k-ct: support multicast and management rate control")
2019-03-14 00:36:32 +01:00
bobcanthelpyou
d8aa17c9e5 gluon-web-node-role: Update i18n role translation (#1655) 2019-02-26 00:40:44 +01:00
Martin Weinelt
278108dd8e modules: update packages
5de163d67 vallumd: bump to 0.1.4
b8c2c2b1b mosquitto: update to 1.5.7
8a2d56684 irssi: update to 1.2.0
d0f5ae180 [18.06] python3: fix [CVE-2018-20406]
dad217d34 shadowsocks-libev: flush ss rules on entry
bbc2e68ed mosquitto: bump to 1.5.6
9ffcfea19 mariadb: bump to 10.1.38
09b794ecc stubby: update to version 0.2.4
41c4f82f8 stubby: Remove iamperson347 from maintainer
2cf2210d8 stubby: add Jonathan Underwood as co-maintainer (#7307)
709a73604 stubby: add reload_config to documentation
aa8380721 stubby: fix loading of config file
6e2451dd0 stubby: add uci support to init file
7a2b9df89 stubby: bump PKG_RELEASE
304596d21 stubby: remove unnecessary core limit
fd8505f76 stubby: add SPKI pin set for Cloudflare cert
b77053d35 stubby: add Cloudflare 1.0.0.1 and ::1001 servers
3f17c54f2 stubby: use EDNS client-subnet privacy by default
935126632 stubby: fix config file definition
d3b090a31 stubby: rearrange Makefile for clarity
a3a73ef7b stubby: add missing dependency on ca-certificates
ccf0c71ac getdns: update to version 1.5.0
07e647645 getdns: Remove iamperson347 from maintainer
ca7555e52 getdns: fix missing libbsd dependency
cc8439566 acme: Fix loading credentials
fb3dd71ef youtube-dl: update to version 2019.01.30.1
4368783e9 python-idna: Add missing dependency on python(3)-codecs
480e4d7e8 python/python3: Fix lib2to3 fixes search
02dd97d14 libsndfile: update to 42132c543358cee9f7c3e9e9b15bb6c1063a608e
34dec8190 python3: backport CVE-2018-14647 patch from upstream [18.06]
3785db429 python: backport CVE-2018-14647 patches from upstream [18.06]
8f41fa7f8 nut: Default to run as root but fix alt runas
f7048b725 libsndfile: update to 8ddc442d539ca775d80cdbc7af17a718634a743f a/ulaw: fix multiple buffer overflows
e3f32b75b python/python3: fix .dist-info missing for setuptools and pip

Compile-tested: ramips-mt7621, ar71xx-generic
2019-02-26 00:40:38 +01:00
Martin Weinelt
f63f97aa11 modules: update OpenWrt
1be6ff6dc0 kernel: bump 4.14 to 4.14.102
e9cb40caa4 kernel: bump 4.9 to 4.9.159
d32bbd7477 mac80211: brcmfmac: backport 5.0 & 5.1 important changes/fixes
ce3a53c4f6 dnsmasq: prefer localuse over resolvfile guesswork
87fb8aea87 dnsmasq: allow using dnsmasq as the sole resolver
405840631c build: Accept BIN_DIR parameter for legacy-images
bc3eb970ab ar71xx: Fix 5 GHz MAC address for Archer C60 v2
20f1b7d3f5 kernel: bump 4.14 4.14.101
d669be4654 kernel: bump 4.9 to 4.9.158

Compile-tested: ramips-mt7621, ar71xx-generic
Runtime-tested: ramips-mt7621 (D-Link DIR860L B1)
2019-02-26 00:40:32 +01:00
David Bauer
aa4cc3ea68 gluon-mesh-batman-adv: use libnl-tiny to get IPv6 addresses (#1616) 2019-02-26 00:40:27 +01:00
Martin Weinelt
2398dcb8a6 docs: link gluon-scheduled-domain-switch in nav 2019-02-26 00:40:21 +01:00
David Bauer
f8b15a6f2e ramips-mt76x8: add support for Netgear R6120 (#1650) 2019-02-26 00:40:12 +01:00
Martin Weinelt
2f0d32ee97 modules: update OpenWrt
62feabecd8 kernel: bump 4.14 to 4.14.99
9fb3710a8b kernel: bump 4.9 to 4.9.156
e5ace80759 mt76: update to the latest version
fbb2186fbd kernel: bump 4.14 to 4.14.98
72870cc108 kernel: bump 4.9 to 4.9.155
19a6c4b2b3 mac80211: brcmfmac: fix a possible NULL pointer dereference
d997712c71 ath9k: register GPIO chip for OF targets

Compile-tested: ipq40xx, ramips-mt7621
Runtime-tested: none
2019-02-26 00:40:06 +01:00
David Bauer
ed3d890b1f gluon-scheduled-domain-switch: add package (#1555)
This package allows to automatically switch to another domain, either
at a given point in time or after the node was offline long enough.
2019-02-26 00:39:54 +01:00
Sven Eckelmann
39948de22e ath10k/ath10k-ct: support multicast and management rate control
Drivers with software rate control can directly use the selected multicast
rate for multicast/broadcast frames and the minimal basic rate for
management frames. But drivers with offloaded rate control algorithms must
be informed about such upper layer decisions to configure the
hardware/firmware.

A new BSS_CHANGED_MCAST_RATE is introduced in mac80211 to automatically
inform all drivers. ath10k can detect this event and forward it via WMI to
the driver. The already existing BSS_CHANGED_BASIC_RATES can be used to
select the management rate.

Without the WMI commands, a low rate (not necessarily one from the basic
rates) is used for bcast/mcast/management frames. This means that the
/etc/config/wireless settings basic_rate and mcast_rate would have no
effect on the rates selected by this driver for the mentioned frames.
2019-02-26 00:39:39 +01:00
David Bauer
49dff9cee9 ramips-mt76x8: add support for TP-Link Archer C50 v4 (#1641)
This backports the TP-Link Archer C50 v4.

We are dropping the following upstream commits. They add support for the
TP-Link recovery-flag which enabled the web-recovery. As they are not
needed for the router to work, we drop them for now.

28cd2ca base-files: sysupgrade: support additional mtd options
1e06482 mtd: add logic for TP-Link ramips recovery magic
2019-02-26 00:39:06 +01:00
Martin Weinelt
b515248125 docs: improve references to the IRC chatroom (#1643) 2019-02-26 00:38:28 +01:00
David Bauer
9d8045f0f2 ramips-mt76x8: remove broken flag (#1608)
This commit removes the broken flag from all devices in the mt76x8
subtarget.

The stability of the mt76 driver for the mt7628 and mt7612 has greatly
improved in the last half-year. It might be still behind ath9k and
ath10k but it is suitable for daily use.

This affects the following devices:

 - GL.iNet MT300N v2
 - TP-Link Archer C50 v3
 - TP-Link TL-WR841 v13
2019-02-26 00:38:07 +01:00
oszilloskop
30f9665d6e ar71xx: fix incorrect gl-ar150 and gl-ar300m image names (#1640)
also added manifest aliases for gl-ar150, gl-ar300m, gl-ar750
2019-02-12 13:34:21 +01:00
Martin Weinelt
bb6338af36 brcm2708-bcm2708: add manifest alias for Raspberry Pi Model B Plus Rev 1.2 2019-02-04 16:52:37 +01:00
Martin Weinelt
c58f780e48 modules: update OpenWrt
9b14c7d3d1 netifd: handle hotplug event socket errors
e33612484a brcm63xx: HG655b: fix the imagetag at dts
ef17edae3d kernel: bump 4.14 to 4.14.97
21762fe9d6 kernel: bump 4.9 to 4.9.154
ab41836321 mt76: update to the latest version
026f08a610 kernel: bump 4.14 to 4.14.96
1f1f421af6 kernel: bump 4.9 to 4.9.153

Compile-tested: ar71xx-generic, ramips-mt7621, x86-64
2019-02-04 16:52:32 +01:00
Martin Weinelt
fcb08eaa83 modules: update OpenWrt
13eeee7b2b mt76: update to the latest version
ac1ce25671 OpenWrt v18.06.2: revert to branch defaults
a02809f61b OpenWrt v18.06.2: adjust config defaults
cddd7b4c77 base-files: config_get: prevent filename globbing
e6162b2127 dnsmasq: backport missing braces fix
d4178c8f47 build: fix umask detection bashism
b98b55a64f build: fix STAGING_DIR cleaning for packages
e6c2f3feb1 ar71xx: use correct wan mac address for the TP-Link Archer C7 v4
2c7a1ccaea ar71xx: Add usb drivers in Archer C7 v4/v5 images
39c3b5139f openssl: bump to 1.0.2q
80ed6ebc56 dnsmasq: backport upstream static lease fix
4f2199f528 wireguard: bump to 0.0.20190123
8c105c62e4 wireguard: Update to snapshot 0.0.20181218
1447924c95 mbedtls: update to 2.14.1 for 18.06
e5a0b6cde0 uhttpd: disable concurrent requests by default
11bfb39e39 kernel: bump 4.14 to 4.14.95
dd5fa217dc kernel: bump 4.9 to 4.9.152
91d3b87353 uboot-fritz4040: fix crash caused by interaction with gcc 7.1+

Compile-tested: ar71xx-generic, mpc85xx-generic, ramips-mt7621
Runtime-tested: ramips-mt7621 (D-Link DIR860L)
2019-02-04 16:52:28 +01:00
Martin Weinelt
1ae362f851 modules: update routing
ea345d1 Merge pull request #442 from ecsv/batadv-18.06
0231308 batman-adv: Merge bugfixes from 2019.0

Compile-tested: ar71xx-{tiny,generic}, ramips-mt7621, x86-64
Runtime-tested: ar71xx-generic (TP-Link TL-WR1043NDv2)
2019-02-04 16:52:22 +01:00
Martin Weinelt
f845cd982e modules: update OpenWrt
6e16dd1234 mt76: update to the latest version
76037756d0 kernel: bump 4.14 to 4.14.94
455bfd1065 kernel: bump 4.9 to 4.9.151
fafd7691e6 opkg: update to latest Git head
e789bd2243 opkg: drop argument from check_signature in opkg.conf
3603c2321d ramips: mt7621: fix 5GHz WiFi LED on ZBT WG3526
7f98cd8d50 odhcpd: fix onlink IA check (FS#2060)
abd0f7995e kmod-sched-cake: bump to latest cake

Compile-tested: ar71xx-{tiny,generic}, ramips-mt7621, x86-64
2019-02-04 16:52:17 +01:00
Martin Weinelt
35b34e2d8e gluon-core: fix unifiac-{lite,pro} primary mac selection
fixes #1629
2019-02-04 16:52:11 +01:00
Martin Weinelt
114b8b21cd gluon-core: sort 010-primary-mac by target and board_name 2019-02-04 16:52:06 +01:00
Malte Moeller
657e2e4711 change device identifier to match machine identifier
this matches the output of
lua -e 'print(require(platform_info).get_image_name())'

This way the manifest file is accepted by the autoupdater
2019-02-04 16:51:59 +01:00
Manu.WTF
dc7ec5740b ramips-mt7620: add support for Nexx WT3020 (8M) 2019-02-04 16:51:51 +01:00
Martin Weinelt
17d22a5661 modules: update OpenWrt
939fa07b04 kernel: bump 4.14 to 4.14.93
cae263227f kernel: bump 4.9 to 4.9.150
f34ad1a8f0 mt76: update to the latest version
d58c6aedb6 tools/firmware-utils: fix sysupgrade typo in mkdapimg2
0cef35f096 tools/firmware-utils: fix sysupgrade typo in mkdapimg
0d6eaa0ba5 octeon: fix typo in platform.sh
069fda746e fstools: update to the latest master branch
3b4e779e93 fstools: update to git HEAD
d7275c0312 fstools: filter unknown action in mount.hotplug script
e0daa62af6 fstools: Install mount.hotplug and 10-fstab.defaults as 600
4c0e15fc16 base-files: install missing /etc/iproute2/ematch_map
c3fef269d6 cns3xxx: use actual size reads for PCIe
367ccf7a2d kernel: bump 4.14 to 4.14.91
b9dcf2de5f kernel: bump 4.9 to 4.9.148
a8cc06c537 mac80211: brcmfmac: backport firmware loading changes & fix memory bugs
c5c20f510a odhcpd: noop to fix PKG_SOURCE_DATE
62ddfaff32 odhcpd: filter routes based on prefix_filter
8a9b0b95df apm821xx: switch MX60(W)'s recovery images to multi-image method
afcdf099b7 kernel: fix f2fs on big endian machines
016a71a18a odhcpd: backport prefix filter/NETEV_ADDR6LIST_CHANGE event fixes
806b570a35 ath10k: update QCA4019 firmware
baa00b2182 brcm2708-gpu-fw: update to git HEAD
5af6b7976f bcm53xx: backport DTS changes queued for the 4.21
dbbba84ed4 bcm53xx: rename dts backport patches changing their prefixes

Compile-tested: ar71xx, ramips-{mt7621,mt76x8}, x86-64
Runtime-tested: ramips-mt7621 (D-Link DIR860L)
2019-02-04 16:51:46 +01:00
Martin Weinelt
e019d8bd67 ar71xx: add support for FRITZ!Repeater 300E (#1604)
Signed-off-by: Martin Weinelt <martin@darmstadt.freifunk.net>
2019-02-04 16:51:22 +01:00
David Bauer
4b236263ea gluon-core: distribute dualband radios (#1606)
This commit distributes dualband radios evenly on 2.4 GHz and 5GHz with
2.4 GHz being prioritised higher than 5 GHz. This means in case a device
has only a single radio and this radio supports operation in both bands,
it will be set to 2.4 GHz.

Tested-by: Martin Weinelt <martin@darmstadt.freifunk.net>
Signed-off-by: David Bauer <mail@david-bauer.net>
2019-02-04 16:50:54 +01:00
Martin Weinelt
b4a37a44db gluon-status-page: rebuild status-page.js after 02dfc66
The original commit only applied its changes to the source file and did
not rebuild the minified file, therefore the change never went live.
2019-01-18 15:27:40 +01:00
Matthias Schiffer
a152a6e09d
gluon-config-mode-geo-location: fix source/i18n mismatch
The text was changed in the i18n files, but the corresponding change in the
Lua sources seemingly got lost during a rebase.

Closes #1611

(cherry picked from commit 2aa324ecf7)
2019-01-03 03:17:57 +01:00
Matthias Schiffer
aa9d69f2cc
docs: releases/v2018.2: fix feature/package name for config wizard map 2019-01-02 20:19:39 +01:00
Ralf Jung
6a8848a021
docs: releases/v2018.2: add renamed target information to changelog 2019-01-02 20:16:25 +01:00
111 changed files with 3434 additions and 355 deletions

View File

@ -106,6 +106,8 @@ list-targets: FORCE
@$(foreach target,$(GLUON_TARGETS),echo '$(target)';) @$(foreach target,$(GLUON_TARGETS),echo '$(target)';)
GLUON_DEFAULT_PACKAGES := hostapd-mini
GLUON_FEATURE_PACKAGES := $(shell scripts/features.sh '$(GLUON_FEATURES)' || echo '__ERROR__') GLUON_FEATURE_PACKAGES := $(shell scripts/features.sh '$(GLUON_FEATURES)' || echo '__ERROR__')
ifneq ($(filter __ERROR__,$(GLUON_FEATURE_PACKAGES)),) ifneq ($(filter __ERROR__,$(GLUON_FEATURE_PACKAGES)),)
$(error Error while evaluating GLUON_FEATURES) $(error Error while evaluating GLUON_FEATURES)
@ -118,7 +120,7 @@ define merge_packages
GLUON_PACKAGES := $$(strip $$(filter-out -$$(patsubst -%,%,$(pkg)) $$(patsubst -%,%,$(pkg)),$$(GLUON_PACKAGES)) $(pkg)) GLUON_PACKAGES := $$(strip $$(filter-out -$$(patsubst -%,%,$(pkg)) $$(patsubst -%,%,$(pkg)),$$(GLUON_PACKAGES)) $(pkg))
) )
endef endef
$(eval $(call merge_packages,$(GLUON_FEATURE_PACKAGES) $(GLUON_SITE_PACKAGES))) $(eval $(call merge_packages,$(GLUON_DEFAULT_PACKAGES) $(GLUON_FEATURE_PACKAGES) $(GLUON_SITE_PACKAGES)))
config: FORCE config: FORCE
@$(CheckExternal) @$(CheckExternal)

View File

@ -4,7 +4,9 @@ https://gluon.readthedocs.io/.
If you're new to Gluon and ready to get your feet wet, have a look at the If you're new to Gluon and ready to get your feet wet, have a look at the
[Getting Started Guide](https://gluon.readthedocs.io/en/latest/user/getting_started.html). [Getting Started Guide](https://gluon.readthedocs.io/en/latest/user/getting_started.html).
**Gluon IRC channel: `#gluon` in [hackint](https://hackint.org/)** Gluon's developers frequent an IRC chatroom at [#gluon](ircs://irc.hackint.org/#gluon)
on [hackint](https://hackint.org/). There is also a [webchat](https://webirc.hackint.org/#irc://irc.hackint.org/#gluon)
that allows for access from within your browser.
## Issues & Feature requests ## Issues & Feature requests
@ -19,7 +21,7 @@ the future development of Gluon.
Please refrain from using the `master` branch for anything else but development purposes! Please refrain from using the `master` branch for anything else but development purposes!
Use the most recent release instead. You can list all releases by running `git tag` Use the most recent release instead. You can list all releases by running `git tag`
and switch to one by running `git checkout v2018.2 && make update`. and switch to one by running `git checkout v2018.2.2 && make update`.
If you're using the autoupdater, do not autoupdate nodes with anything but releases. If you're using the autoupdater, do not autoupdate nodes with anything but releases.
If you upgrade using random master commits the nodes *will break* eventually. If you upgrade using random master commits the nodes *will break* eventually.

View File

@ -47,12 +47,12 @@ master_doc = 'index'
# General information about the project. # General information about the project.
project = 'Gluon' project = 'Gluon'
copyright = '2015-2018, Project Gluon' copyright = '2015-2019, Project Gluon'
# The version info for the project you're documenting, acts as replacement for # The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the # |version| and |release|, also used in various other places throughout the
# built documents. # built documents.
version = release = '2018.2' version = release = '2018.2.2'
# The language for content autogenerated by Sphinx. Refer to documentation # The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages. # for a list of supported languages.

View File

@ -15,9 +15,13 @@ The `main repo`_ does have issues enabled.
IRC IRC
--- ---
Gluon's developers frequent `#gluon on hackint`_. You're welcome to join us! Gluon's developers frequent the IRC chatroom `#gluon`_ on `hackint`_.
There is a `webchat`_ that allows for easy access from within your
webbrowser. You're welcome to join us!
.. _#gluon on hackint: irc://irc.hackint.org/#gluon .. _#gluon: ircs://irc.hackint.org/#gluon
.. _hackint: https://hackint.org/
.. _webchat: https://webirc.hackint.org/#irc://irc.hackint.org/#gluon
Working with repositories Working with repositories
@ -32,9 +36,9 @@ rerun
`make update` also applies the patches that can be found in the directories found in `make update` also applies the patches that can be found in the directories found in
`patches`; the resulting branch will be called `patched`, while the commit specified in `modules` `patches`; the resulting branch will be called `patched`, while the commit specified in `modules`
can be refered to by the branch `base`. can be referred to by the branch `base`.
After new patches have been commited on top of the `patched` branch (or existing commits After new patches have been committed on top of the `patched` branch (or existing commits
since the base commit have been edited or removed), the patch directories can be regenerated since the base commit have been edited or removed), the patch directories can be regenerated
using using

View File

@ -31,14 +31,14 @@ can work::
lua -e 'print(require("platform_info").get_image_name())' lua -e 'print(require("platform_info").get_image_name())'
While porting Gluon to a new device, it might happen that the profile name is un- While porting Gluon to a new device, it might happen that the profile name is
known. Best practise is to generate an image first by using an arbitrary value unknown. Best practise is to generate an image first by using an arbitrary value
and then executing the lua command on the device and use its output from then on. and then executing the lua command on the device and use its output from then on.
The second parameter defines the name of the image files generated by OpenWrt. Usually, The second parameter defines the name of the image files generated by OpenWrt. Usually,
it is also the OpenWrt profile name; for devices that still use the old image build it is also the OpenWrt profile name; for devices that still use the old image build
code, a third parameter with the OpenWrt profile name can be passed. The profile names code, a third parameter with the OpenWrt profile name can be passed. The profile names
can be found in the image Makefiles in ``lede/target/linux/<target>/image/Makefile``. can be found in the image Makefiles in ``openwrt/target/linux/<target>/image/Makefile``.
Examples:: Examples::
@ -99,7 +99,7 @@ target supports *per-default rootfs*).
Configuration Configuration
''''''''''''' '''''''''''''
The ``config`` command allows to add arbitary target-specific OpenWrt configuration The ``config`` command allows to add arbitrary target-specific OpenWrt configuration
to be emitted to ``.config``. to be emitted to ``.config``.
Notes Notes

View File

@ -74,7 +74,7 @@ Feature flags provide a convenient way to define package selections without
making it necessary to list each package explicitly. making it necessary to list each package explicitly.
The main feature flag definition file is ``package/features``, but each package The main feature flag definition file is ``package/features``, but each package
feed can provide additional defintions in a file called ``features`` at the root feed can provide additional definitions in a file called ``features`` at the root
of the feed repository. of the feed repository.
Each flag *$flag* without any explicit definition will simply include the package Each flag *$flag* without any explicit definition will simply include the package

View File

@ -11,7 +11,7 @@ from Lua scripts. Example:
The *site* object in this example does not directly represent the *site.conf* data structure; The *site* object in this example does not directly represent the *site.conf* data structure;
instead, it is wrapped in a way that makes it more convenient to access deeply nested elements. instead, it is wrapped in a way that makes it more convenient to access deeply nested elements.
To access the the underlying values, they must be unwrapped using the function call notation To access the underlying values, they must be unwrapped using the function call notation
(the ``()`` after ``site.wifi24.ap.ssid`` in the example). (the ``()`` after ``site.wifi24.ap.ssid`` in the example).
The wrapper objects have two advantages over simple Lua tables: The wrapper objects have two advantages over simple Lua tables:

View File

@ -23,7 +23,7 @@ Best practices
This allows using the same code to create the initial configuration and upgrade configurations on upgrades. This allows using the same code to create the initial configuration and upgrade configurations on upgrades.
* If it is unavoidable to run different code during the initial installation, the ``sysconfig.gluon_version`` variable * If it is unavoidable to run different code during the initial installation, the ``sysconfig.gluon_version`` variable
can be checked. This variable is ``nil`` during the initial installation and contains the previously install Gluon can be checked. This variable is ``nil`` during the initial installation and contains the previously installed Gluon
version otherwise. version otherwise.
Script ordering Script ordering

View File

@ -5,7 +5,7 @@ As the WAN port of a node will be connected to a user's private network, it
is essential that the node only uses the WAN when it is absolutely necessary. is essential that the node only uses the WAN when it is absolutely necessary.
There are two cases in which the WAN port is used: There are two cases in which the WAN port is used:
* Mesh VPN (package ``gluon-mesh-vpn-fastd`` * Mesh VPN (package ``gluon-mesh-vpn-fastd``)
* DNS to resolve the VPN servers' addresses (package ``gluon-wan-dnsmasq``) * DNS to resolve the VPN servers' addresses (package ``gluon-wan-dnsmasq``)
After the VPN connection has been established, the node should be able to reach After the VPN connection has been established, the node should be able to reach

View File

@ -2,7 +2,7 @@ Config Mode
=========== ===========
The `Config Mode` consists of several modules that provide a range of different The `Config Mode` consists of several modules that provide a range of different
condiguration options: configuration options:
gluon-config-mode-core gluon-config-mode-core
This modules provides the core functionality for the config mode. This modules provides the core functionality for the config mode.

View File

@ -71,7 +71,7 @@ Useful functions:
values for the given key. values for the given key.
- *status* (*code*, *message*): Writes the HTTP status to the reply. Has no effect - *status* (*code*, *message*): Writes the HTTP status to the reply. Has no effect
if a status has already been sent or non-header data has been written. if a status has already been sent or non-header data has been written.
- *header* (*key*, *value*): Adds an HTTP header to the reply to be sent to to - *header* (*key*, *value*): Adds an HTTP header to the reply to be sent to
the client. Has no effect when non-header data has already been written. the client. Has no effect when non-header data has already been written.
- *prepare_content* (*mime*): Sets the *Content-Type* header to the given MIME - *prepare_content* (*mime*): Sets the *Content-Type* header to the given MIME
type, potentially setting additional headers or modifying the MIME type to type, potentially setting additional headers or modifying the MIME type to

View File

@ -51,14 +51,14 @@ Classes and methods
- *Form:write* () - *Form:write* ()
Is called after the form has beed submitted (but only if the data is valid). It Is called after the form has been submitted (but only if the data is valid). It
is called last (after all options' *write* methods) and is usually used is called last (after all options' *write* methods) and is usually used
to commit changed UCI packages. to commit changed UCI packages.
The default implementation of *write* doesn't do anything, but it can be The default implementation of *write* doesn't do anything, but it can be
overridden. overridden.
- *Section* (usually instanciated through *Form:section*) - *Section* (usually instantiated through *Form:section*)
- *Section:option* (*type*, *id*, *title*, *description*) - *Section:option* (*type*, *id*, *title*, *description*)

View File

@ -11,7 +11,9 @@ Views are partial HTML pages, with additional template tags that allow
to embed Lua code and translation strings. The following tags are defined: to embed Lua code and translation strings. The following tags are defined:
- ``<%`` ... ``%>`` evaluates the enclosed Lua expression. - ``<%`` ... ``%>`` evaluates the enclosed Lua expression.
- ``<%=`` ... ``%>`` evaluates the enclosed Lua expression and prints its value. - ``<%|`` ... ``%>`` evaluates the enclosed Lua expression and prints its value.
- ``<%=`` ... ``%>`` evaluates the enclosed Lua expression and prints its value
*without escaping HTML entities*. This is useful when the value contains HTML code.
- ``<%+`` ... ``%>`` includes another template. - ``<%+`` ... ``%>`` includes another template.
- ``<%:`` ... ``%>`` translates the enclosed string using the loaded i18n catalog. - ``<%:`` ... ``%>`` translates the enclosed string using the loaded i18n catalog.
- ``<%_`` ... ``%>`` translates the enclosed string *without escaping HTML entities* - ``<%_`` ... ``%>`` translates the enclosed string *without escaping HTML entities*

View File

@ -39,8 +39,8 @@ A fully automated nightly build could use the following commands:
make update make update
make clean GLUON_TARGET=ar71xx-generic make clean GLUON_TARGET=ar71xx-generic
NUM_CORES_PLUS_ONE=$(expr $(nproc) + 1) NUM_CORES_PLUS_ONE=$(expr $(nproc) + 1)
make -j$NUM_CORES_PLUS_ONE GLUON_TARGET=ar71xx-generic GLUON_BRANCH=experimental make -j$NUM_CORES_PLUS_ONE GLUON_TARGET=ar71xx-generic GLUON_BRANCH=experimental GLUON_RELEASE=$GLUON_RELEASE
make manifest GLUON_BRANCH=$GLUON_BRANCH GLUON_RELEASE=$GLUON_RELEASE make manifest GLUON_BRANCH=experimental GLUON_RELEASE=$GLUON_RELEASE
contrib/sign.sh $SECRETKEY output/images/sysupgrade/experimental.manifest contrib/sign.sh $SECRETKEY output/images/sysupgrade/experimental.manifest
rm -rf /where/to/put/this/experimental rm -rf /where/to/put/this/experimental

View File

@ -15,7 +15,7 @@ Activating Config Mode
Config Mode is automatically entered at the first boot. You can re-enter Config Mode is automatically entered at the first boot. You can re-enter
Config Mode by pressing and holding the RESET/WPS button for about three Config Mode by pressing and holding the RESET/WPS button for about three
seconds. The device should reboot (all LEDs will turn of briefly) and seconds. The device should reboot (all LEDs will turn off briefly) and
Config Mode will be available. Config Mode will be available.

View File

@ -24,7 +24,7 @@ Information to be announced is currently split into three categories:
interfaces. This data can be used to determine the network topology. interfaces. This data can be used to determine the network topology.
All categories will have a ``node_id`` key. It should be used to All categories will have a ``node_id`` key. It should be used to
relate data of different catagories. relate data of different categories.
Accessing Node Information Accessing Node Information
-------------------------- --------------------------
@ -117,7 +117,7 @@ The supported requests are:
gluon-neighbour-info gluon-neighbour-info
~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~
The programm `gluon-neighbour-info` can be used to retrieve The program `gluon-neighbour-info` can be used to retrieve
information from other nodes. information from other nodes.
:: ::

View File

@ -161,7 +161,7 @@ site.conf only variables
- mesh_vpn.fastd.syslog_level - mesh_vpn.fastd.syslog_level
- wifi*.supported_rates - wifi*.supported_rates
- wifi*.basic_rates - wifi*.basic_rate
- timezone - timezone
- regdom - regdom
@ -193,8 +193,8 @@ domain.conf only variables
- prefix4 - prefix4
- extra_prefixes6 - extra_prefixes6
- To prevent accidential bridging of different domains, all meshing - To prevent accidental bridging of different domains, all meshing
technologies should be seperated: technologies should be separated:
- domain_seed (wired mesh) - domain_seed (wired mesh)

View File

@ -1,7 +1,7 @@
Private WLAN Private WLAN
============ ============
It is possible to set up a private WLAN that bridges the WAN port and is seperated from the mesh network. It is possible to set up a private WLAN that bridges the WAN port and is separated from the mesh network.
Please note that you should not enable ``mesh_on_wan`` simultaneously. Please note that you should not enable ``mesh_on_wan`` simultaneously.
The private WLAN can be enabled through the config mode if the package ``gluon-web-private-wifi`` is installed. The private WLAN can be enabled through the config mode if the package ``gluon-web-private-wifi`` is installed.
@ -19,7 +19,7 @@ You may also enable a private WLAN using the command line::
uci set wireless.wan_radio$RID.ssid="$SSID" uci set wireless.wan_radio$RID.ssid="$SSID"
uci set wireless.wan_radio$RID.key="$KEY" uci set wireless.wan_radio$RID.key="$KEY"
uci set wireless.wan_radio$RID.disabled=0 uci set wireless.wan_radio$RID.disabled=0
uci set wireless.wan_radio$RID.macaddr="$($(echo "lua -e print(require('gluon.util').generate_mac(3+4*$RID))"))" uci set wireless.wan_radio$RID.macaddr=$(lua -e "print(require('gluon.util').generate_mac(3+4*$RID))")
uci commit uci commit
wifi wifi

View File

@ -20,7 +20,7 @@ Wired mesh encapsulation
Since version 2018.1, Gluon supports encapsulating wired mesh traffic in Since version 2018.1, Gluon supports encapsulating wired mesh traffic in
`VXLAN <https://en.wikipedia.org/wiki/Virtual_Extensible_LAN>`_, a new standard with `VXLAN <https://en.wikipedia.org/wiki/Virtual_Extensible_LAN>`_, a new standard with
usecases similar to VLANs, but a much greater ID space of 24bit; in addition, VXLAN use cases similar to VLANs, but a much greater ID space of 24bit; in addition, VXLAN
packets pass through VLAN-aware switches without any special configuration. packets pass through VLAN-aware switches without any special configuration.
Encapsulating mesh traffic has two advantages: Encapsulating mesh traffic has two advantages:

View File

@ -1,8 +1,8 @@
Welcome to Gluon Welcome to Gluon
================ ================
Gluon is a modular framework for creating OpenWrt-based firmwares for wireless mesh nodes. Gluon is a modular framework for creating OpenWrt-based firmware images for wireless mesh nodes.
Several Freifunk communities in Germany use Gluon as the foundation of their Freifunk firmwares. Several Freifunk communities in Germany use Gluon as the foundation of their Freifunk firmware.
.. toctree:: .. toctree::
@ -63,6 +63,7 @@ Several Freifunk communities in Germany use Gluon as the foundation of their Fre
package/gluon-ebtables-limit-arp package/gluon-ebtables-limit-arp
package/gluon-ebtables-source-filter package/gluon-ebtables-source-filter
package/gluon-radv-filterd package/gluon-radv-filterd
package/gluon-scheduled-domain-switch
package/gluon-web-admin package/gluon-web-admin
package/gluon-web-logging package/gluon-web-logging
@ -70,6 +71,8 @@ Several Freifunk communities in Germany use Gluon as the foundation of their Fre
:caption: Releases :caption: Releases
:maxdepth: 1 :maxdepth: 1
releases/v2018.2.2
releases/v2018.2.1
releases/v2018.2 releases/v2018.2
releases/v2018.1.4 releases/v2018.1.4
releases/v2018.1.3 releases/v2018.1.3
@ -135,6 +138,7 @@ ar71xx-generic
* AVM * AVM
- Fritz!Box 4020 [#avmflash]_ - Fritz!Box 4020 [#avmflash]_
- Fritz!WLAN Repeater 300E [#avmflash]_
- Fritz!WLAN Repeater 450E [#avmflash]_ - Fritz!WLAN Repeater 450E [#avmflash]_
* Buffalo * Buffalo
@ -171,10 +175,6 @@ ar71xx-generic
- Koala [#ath10k]_ - Koala [#ath10k]_
* Onion
- Omega
* OpenMesh * OpenMesh
- A40 - A40
@ -221,7 +221,7 @@ ar71xx-generic
- Loco M2/M5 XW - Loco M2/M5 XW
- Nanostation M2/M5 - Nanostation M2/M5
- Nanostation M2/M5 XW - Nanostation M2/M5 XW
- Picostation M2/M5 - Picostation M2
- Rocket M2/M5 - Rocket M2/M5
- Rocket M2/M5 Ti - Rocket M2/M5 Ti
- Rocket M2/M5 XW - Rocket M2/M5 XW
@ -282,7 +282,7 @@ ar71xx-tiny
- TL-WA7210N (v2) - TL-WA7210N (v2)
- TL-WA7510N (v1) - TL-WA7510N (v1)
- TL-WR703N (v1) - TL-WR703N (v1)
- TL-WR710N (v1, v2, v2.1) - TL-WR710N (v2)
- TL-WR740N (v1, v3, v4, v5) - TL-WR740N (v1, v3, v4, v5)
- TL-WR741N/ND (v1, v2, v4, v5) - TL-WR741N/ND (v1, v2, v4, v5)
- TL-WR743N/ND (v1, v2) - TL-WR743N/ND (v1, v2)
@ -328,13 +328,6 @@ ipq40xx
- NBG6617 [#80211s]_ - NBG6617 [#80211s]_
- WRE6606 [#80211s]_ - WRE6606 [#80211s]_
ipq806x
^^^^^^^
* TP-Link
- Archer C2600 [#80211s]_
mpc85xx-generic mpc85xx-generic
^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^
@ -351,6 +344,10 @@ ramips-mt7620
- GL-MT300N [#80211s]_ - GL-MT300N [#80211s]_
- GL-MT750 [#80211s]_ - GL-MT750 [#80211s]_
* Nexx
- WT3020AD/F/H
ramips-mt7621 ramips-mt7621
^^^^^^^^^^^^^ ^^^^^^^^^^^^^
@ -371,6 +368,20 @@ ramips-mt7621
ramips-mt76x8 ramips-mt76x8
^^^^^^^^^^^^^ ^^^^^^^^^^^^^
* GL.iNet
- GL-MT300N v2 [#80211s]_
* NETGEAR
- R6120 [#80211s]_
* TP-Link
- TL-WR841N v13 [#80211s]_
- Archer C50 v3 [#80211s]_
- Archer C50 v4 [#80211s]_
* VoCore * VoCore
- VoCore2 [#80211s]_ - VoCore2 [#80211s]_
@ -388,8 +399,8 @@ ramips-rt305x
- VoCore (8M, 16M) [#80211s]_ - VoCore (8M, 16M) [#80211s]_
sunxi sunxi-cortexa7
^^^^^ ^^^^^^^^^^^^^^
* LeMaker * LeMaker
@ -432,7 +443,7 @@ Footnotes
is explicitly set to something other than *11s* is explicitly set to something other than *11s*
.. [#avmflash] .. [#avmflash]
For instructions on how to flash AVM devices, visit https://www.fritzfla.sh For instructions on how to flash AVM devices, visit https://fritzfla.sh
License License
------- -------

View File

@ -5,7 +5,7 @@ the node will be placed in. If the selection has changed the upgrade scripts in
``/lib/gluon/upgrade/`` are triggered to update the nodes configuration. ``/lib/gluon/upgrade/`` are triggered to update the nodes configuration.
Hiding domains could be useful for default or testing domains, which should not Hiding domains could be useful for default or testing domains, which should not
be accidentally selected by a node operater. be accidentally selected by a node operator.
domains/\*.conf domains/\*.conf
--------------- ---------------

View File

@ -11,7 +11,7 @@ Selected router
--------------- ---------------
The router selection mechanism is independent from the batman-adv gateway mode. The router selection mechanism is independent from the batman-adv gateway mode.
In contrast, the device originating the router advertisment could be any router In contrast, the device originating the router advertisement could be any router
or client connected to the mesh, as radv-filterd captures all router or client connected to the mesh, as radv-filterd captures all router
advertisements originating from it. All nodes announcing router advertisement advertisements originating from it. All nodes announcing router advertisement
**with** a default lifetime greater than 0 are being considered as candidates. **with** a default lifetime greater than 0 are being considered as candidates.

View File

@ -0,0 +1,38 @@
gluon-scheduled-domain-switch
=============================
This package allows to switch a routers domain at a given point
in time. This is needed for switching between incompatible transport
protocols (e.g. 802.11s and IBSS or VXLAN).
Nodes will switch when the defined *switch-time* has passed. In case the node was
powered off while this was supposed to happen, it might not be able to acquire the
correct time. In this case, the node will switch after it has not seen any gateway
for a given period of time.
site.conf
---------
All those settings have to be defined exclusively in the domain, not the site.
domain_switch : optional (needed for domains to switch)
target_domain :
- target domain to switch to
switch_after_offline_mins :
- amount of time without reachable gateway to switch unconditionally
switch_time :
- UNIX epoch after which domain will be switched
connection_check_targets :
- array of IPv6 addresses which are probed to determine if the node is
connected to the mesh
Example::
domain_switch = {
target_domain = 'new_domain',
switch_after_offline_mins = 120,
switch_time = 1546344000, -- 01.01.2019 - 12:00 UTC
connection_check_targets = {
'2001:4860:4860::8888',
'2001:4860:4860::8844',
},
},

View File

@ -3,7 +3,7 @@ gluon-web-admin
This package allows the user to set options like the password for ssh access This package allows the user to set options like the password for ssh access
within config mode. You can define in your ``site.conf`` whether it should be within config mode. You can define in your ``site.conf`` whether it should be
possible to access the nodes via ssh with a password or not and what the mimimum possible to access the nodes via ssh with a password or not and what the minimum
password length must be. password length must be.
site.conf site.conf

View File

@ -31,7 +31,7 @@ and slowly increase to 1 until ``PRIORITY`` days have passed. From then, the pro
be configured in ``site.conf``. If the autoupdater is unable to determine the correct time, it will fall back to be configured in ``site.conf``. If the autoupdater is unable to determine the correct time, it will fall back to
a behavior similar to the old implementation (i.e. hourly update attempts). a behavior similar to the old implementation (i.e. hourly update attempts).
Seperation of announced data Separation of announced data
---------------------------- ----------------------------
The data announced by alfred has been split into two data types: The data announced by alfred has been split into two data types:
@ -73,7 +73,7 @@ which allows simple configuration of batman-adv on the WAN interface.
Site validators Site validators
--------------- ---------------
The content of the ``site.conf`` is now validated when the images are built to make it less likely to accidentially The content of the ``site.conf`` is now validated when the images are built to make it less likely to accidentally
build broken images. build broken images.
gluon-firewall gluon-firewall

View File

@ -43,7 +43,7 @@ See the *Site changes* section for details.
Experimental support for batman-adv compat 15 Experimental support for batman-adv compat 15
--------------------------------------------- ---------------------------------------------
As batman-adv has broken compatiblity starting with batman-adv 2014.0 As batman-adv has broken compatibility starting with batman-adv 2014.0
(bumping the "compat level" to 15), Gluon users must decide which (bumping the "compat level" to 15), Gluon users must decide which
batman-adv version to use. The package for the old batman-adv version batman-adv version to use. The package for the old batman-adv version
``gluon-mesh-batman-adv`` has been renamed to ``gluon-mesh-batman-adv-14``, ``gluon-mesh-batman-adv`` has been renamed to ``gluon-mesh-batman-adv-14``,

View File

@ -24,7 +24,7 @@ Bugfixes
~~~~~~~~ ~~~~~~~~
* Fix download of OpenSSL during build because of broken OpenSSL download servers (again...) * Fix download of OpenSSL during build because of broken OpenSSL download servers (again...)
* Fix another ABI incompatiblity with the upstream kernel modules which prevented loading some filesystem-related modules * Fix another ABI incompatibility with the upstream kernel modules which prevented loading some filesystem-related modules
* Fix potential MAC address conflicts on x86 target when using mesh-on-wan/lan * Fix potential MAC address conflicts on x86 target when using mesh-on-wan/lan
* Fix signal strength indicators on TP-LINK CPE210/510 * Fix signal strength indicators on TP-LINK CPE210/510
* Fix the model name string on some NETGEAR WNDR3700v2 * Fix the model name string on some NETGEAR WNDR3700v2

View File

@ -82,7 +82,7 @@ All config and expert mode modules contain both English and German texts now. Th
locale should always be enabled in ``site.mk`` (as English is the fallback language), locale should always be enabled in ``site.mk`` (as English is the fallback language),
German can be enabled in addition using the ``GLUON_LANGS`` setting. German can be enabled in addition using the ``GLUON_LANGS`` setting.
The language shown is autmatically determined from the headers sent by the user's The language shown is automatically determined from the headers sent by the user's
browser. browser.
Mesh-on-LAN Mesh-on-LAN
@ -106,7 +106,7 @@ the WLAN adapters' transmission power can be changed in this package.
fastd "performance mode" fastd "performance mode"
^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^
The new package `gluon-luci-mesh-vpn-fastd` allows the user to switch between the `security` and The new package `gluon-luci-mesh-vpn-fastd` allows the user to switch between the `security` and
`performance` VPN settions. In `performance mode`, the method `null` will be prepended to the `performance` VPN sections. In `performance mode`, the method `null` will be prepended to the
method list. method list.
The new option ``configurable`` in the ``fastd_mesh_vpn`` section of ``site.conf`` must be set to `true` The new option ``configurable`` in the ``fastd_mesh_vpn`` section of ``site.conf`` must be set to `true`
@ -131,7 +131,7 @@ ffmap backend has been adjusted accordingly.
Nested peer groups Nested peer groups
^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^
Nested peer groups for the `fastd-mesh-vpn-fastd` package can now be configured in ``site.conf``, Nested peer groups for the `fastd-mesh-vpn-fastd` package can now be configured in ``site.conf``,
each with its own peer limit. This allows to add additional constaints, for example to connect each with its own peer limit. This allows to add additional constraints, for example to connect
to 2 peers altogether, but only 1 peer in each data center. to 2 peers altogether, but only 1 peer in each data center.
Autoupdater manual branch override Autoupdater manual branch override

View File

@ -19,8 +19,8 @@ Build
Don't overwrite the opkg repository key on each build. Don't overwrite the opkg repository key on each build.
AirOS 5.6.x compatiblity AirOS 5.6.x compatibility
^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^
Downgrading to AirOS 5.5.x before flashing Gluon on Airmax M XM/XW devices Downgrading to AirOS 5.5.x before flashing Gluon on Airmax M XM/XW devices
(NanoStation, Bullet, ...) is not necessary anymore. (NanoStation, Bullet, ...) is not necessary anymore.
@ -28,9 +28,9 @@ Downgrading to AirOS 5.5.x before flashing Gluon on Airmax M XM/XW devices
Status page Status page
^^^^^^^^^^^ ^^^^^^^^^^^
* Fix purging of disappered neighbours from the list * Fix purging of disappeared neighbours from the list
* Don't clear the signal graphs when scrolling in mobile browsers * Don't clear the signal graphs when scrolling in mobile browsers
* Improve browser compability (don't assume the Internationalization API is available, * Improve browser compatibility (don't assume the Internationalization API is available,
fixes the display of numbers in Firefox for Android) fixes the display of numbers in Firefox for Android)
Config mode Config mode
@ -53,7 +53,7 @@ Known Issues
* 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>`_) * 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 promicious mode is disallowed). This may lead to issues in environments where a fixed MAC address is expected (like VMware when promiscuous mode is disallowed).
* Inconsistent respondd/announced API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_) * Inconsistent respondd/announced API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_)

View File

@ -22,7 +22,7 @@ Known Issues
* 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>`_) * 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 promicious mode is disallowed). This may lead to issues in environments where a fixed MAC address is expected (like VMware when promiscuous mode is disallowed).
* Inconsistent respondd API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_) * Inconsistent respondd API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_)

View File

@ -27,7 +27,7 @@ Known Issues
* 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>`_) * 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 promicious mode is disallowed). This may lead to issues in environments where a fixed MAC address is expected (like VMware when promiscuous mode is disallowed).
* Inconsistent respondd API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_) * Inconsistent respondd API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_)

View File

@ -30,7 +30,7 @@ Known Issues
* 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>`_) * 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 promicious mode is disallowed). This may lead to issues in environments where a fixed MAC address is expected (like VMware when promiscuous mode is disallowed).
* Inconsistent respondd API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_) * Inconsistent respondd API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_)

View File

@ -59,7 +59,7 @@ Known Issues
* 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>`_) * 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 promicious mode is disallowed). This may lead to issues in environments where a fixed MAC address is expected (like VMware when promiscuous mode is disallowed).
* Inconsistent respondd API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_) * Inconsistent respondd API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_)

View File

@ -48,7 +48,7 @@ Known Issues
* 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>`_) * 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 promicious mode is disallowed). This may lead to issues in environments where a fixed MAC address is expected (like VMware when promiscuous mode is disallowed).
* Inconsistent respondd API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_) * Inconsistent respondd API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_)

View File

@ -54,7 +54,7 @@ New features
Kernel module opkg repository Kernel module opkg repository
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
We've not been able to keep ABI compatiblity with the kernel of the official OpenWrt images. We've not been able to keep ABI compatibility with the kernel of the official OpenWrt images.
Therefore, Gluon now generates an opkg repository with modules itself. Therefore, Gluon now generates an opkg repository with modules itself.
The repository can be found at `output/modules/` by default, the image output directory has The repository can be found at `output/modules/` by default, the image output directory has
@ -269,7 +269,7 @@ Known Issues
* batman-adv causes stability issues for both alfred and respondd/announced (`#177 <https://github.com/freifunk-gluon/gluon/issues/177>`_) * batman-adv causes stability issues for both alfred and respondd/announced (`#177 <https://github.com/freifunk-gluon/gluon/issues/177>`_)
* 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>`_) * 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 promicious mode is disallowed). This may lead to issues in environments where a fixed MAC address is expected (like VMware when promiscuous mode is disallowed).
* Inconsistent respondd/announced API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_) * Inconsistent respondd/announced API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_)

View File

@ -45,7 +45,7 @@ Known Issues
* 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>`_) * 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 promicious mode is disallowed). This may lead to issues in environments where a fixed MAC address is expected (like VMware when promiscuous mode is disallowed).
* Inconsistent respondd API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_) * Inconsistent respondd API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_)

View File

@ -71,7 +71,7 @@ Known Issues
* 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>`_) * 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 promicious mode is disallowed). This may lead to issues in environments where a fixed MAC address is expected (like VMware when promiscuous mode is disallowed).
* Inconsistent respondd API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_) * Inconsistent respondd API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_)

View File

@ -55,7 +55,7 @@ Known Issues
* 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>`_) * 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 promicious mode is disallowed). This may lead to issues in environments where a fixed MAC address is expected (like VMware when promiscuous mode is disallowed).
* Inconsistent respondd API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_) * Inconsistent respondd API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_)

View File

@ -48,7 +48,7 @@ Known Issues
* 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>`_) * 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 promicious mode is disallowed). This may lead to issues in environments where a fixed MAC address is expected (like VMware when promiscuous mode is disallowed).
* Inconsistent respondd API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_) * Inconsistent respondd API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_)

View File

@ -29,7 +29,7 @@ Known Issues
* 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>`_) * 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 promicious mode is disallowed). This may lead to issues in environments where a fixed MAC address is expected (like VMware when promiscuous mode is disallowed).
* Inconsistent respondd API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_) * Inconsistent respondd API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_)

View File

@ -50,7 +50,7 @@ Known Issues
* 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>`_) * 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 promicious mode is disallowed). This may lead to issues in environments where a fixed MAC address is expected (like VMware when promiscuous mode is disallowed).
* Inconsistent respondd API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_) * Inconsistent respondd API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_)

View File

@ -24,7 +24,7 @@ Known Issues
* 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>`_) * 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 promicious mode is disallowed). This may lead to issues in environments where a fixed MAC address is expected (like VMware when promiscuous mode is disallowed).
* Inconsistent respondd API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_) * Inconsistent respondd API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_)

View File

@ -172,7 +172,7 @@ Known Issues
* 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>`_) * 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 promicious mode is disallowed). This may lead to issues in environments where a fixed MAC address is expected (like VMware when promiscuous mode is disallowed).
* Inconsistent respondd API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_) * Inconsistent respondd API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_)

View File

@ -34,7 +34,7 @@ Known issues
* 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>`_) * 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 promicious mode is disallowed). This may lead to issues in environments where a fixed MAC address is expected (like VMware when promiscuous mode is disallowed).
* Inconsistent respondd API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_) * Inconsistent respondd API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_)

View File

@ -71,7 +71,7 @@ Known issues
* 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>`_) * 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 promicious mode is disallowed). This may lead to issues in environments where a fixed MAC address is expected (like VMware when promiscuous mode is disallowed).
* Inconsistent respondd API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_) * Inconsistent respondd API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_)

View File

@ -14,7 +14,7 @@ Bugfixes
CVE-2017-14492, CVE-2017-14493, CVE-2017-14494, 2017-CVE-14495 and CVE-2017-14492, CVE-2017-14493, CVE-2017-14494, 2017-CVE-14495 and
2017-CVE-14496 2017-CVE-14496
While many of the most severe (remote code execution) vulnarabilities are in While many of the most severe (remote code execution) vulnerabilities are in
the DHCP component of dnsmasq, which is not active on a Gluon node unless in the DHCP component of dnsmasq, which is not active on a Gluon node unless in
Config Mode, CVE-2017-14491 does affect us. An attacker can cause memory Config Mode, CVE-2017-14491 does affect us. An attacker can cause memory
corruption and possibly remote code execution by deploying a malicious DNS corruption and possibly remote code execution by deploying a malicious DNS
@ -26,7 +26,7 @@ Bugfixes
of the Gluon build, including tcpdump, curl and mbedtls of the Gluon build, including tcpdump, curl and mbedtls
Please refer to the Please refer to the
`LEDE commit log <https://git.openwrt.org/?p=source.git;a=shortlog;h=refs/heads/lede-17.01>`_ `LEDE commit log <https://git.openwrt.org/?p=openwrt/openwrt.git;a=shortlog;h=refs/heads/lede-17.01>`_
for details. for details.
* Filtering of multicast packets between the mesh and the *local-node* interface * Filtering of multicast packets between the mesh and the *local-node* interface
@ -52,7 +52,7 @@ Known issues
* 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>`_) * 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 promicious mode is disallowed). This may lead to issues in environments where a fixed MAC address is expected (like VMware when promiscuous mode is disallowed).
* Inconsistent respondd API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_) * Inconsistent respondd API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_)

View File

@ -43,7 +43,7 @@ Known issues
* 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>`_) * 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 promicious mode is disallowed). This may lead to issues in environments where a fixed MAC address is expected (like VMware when promiscuous mode is disallowed).
* Inconsistent respondd API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_) * Inconsistent respondd API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_)

View File

@ -41,7 +41,7 @@ Known issues
* 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>`_) * 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 promicious mode is disallowed). This may lead to issues in environments where a fixed MAC address is expected (like VMware when promiscuous mode is disallowed).
* Inconsistent respondd API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_) * Inconsistent respondd API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_)

View File

@ -81,7 +81,7 @@ Known issues
* 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>`_) * 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 promicious mode is disallowed). This may lead to issues in environments where a fixed MAC address is expected (like VMware when promiscuous mode is disallowed).
* Inconsistent respondd API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_) * Inconsistent respondd API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_)

View File

@ -24,7 +24,7 @@ Known issues
* 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>`_) * 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 promicious mode is disallowed). This may lead to issues in environments where a fixed MAC address is expected (like VMware when promiscuous mode is disallowed).
* Inconsistent respondd API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_) * Inconsistent respondd API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_)

View File

@ -36,7 +36,7 @@ Bugfixes
and a number of other minor issues) and a number of other minor issues)
The listed bugs could lead to high rates of batman-adv management traffic The listed bugs could lead to high rates of batman-adv management traffic
(causing considerable load), trigger warnings about packet checksum failues (causing considerable load), trigger warnings about packet checksum failures
in certain non-standard interface configurations, and possibly other issues. in certain non-standard interface configurations, and possibly other issues.
@ -61,7 +61,7 @@ Known issues
* 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>`_) * 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 promicious mode is disallowed). This may lead to issues in environments where a fixed MAC address is expected (like VMware when promiscuous mode is disallowed).
* Inconsistent respondd API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_) * Inconsistent respondd API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_)

View File

@ -71,7 +71,7 @@ x86-generic
^^^^^^^^^^^ ^^^^^^^^^^^
The *x86-kvm* and *x86-xen_domu* targets have been removed; the *x86-generic* The *x86-kvm* and *x86-xen_domu* targets have been removed; the *x86-generic*
images now support these usecases as well, so no separate targets are needed images now support these use cases as well, so no separate targets are needed
anymore. anymore.
x86-geode x86-geode
@ -225,7 +225,7 @@ Known issues
* 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>`_) * 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 promicious mode is disallowed). This may lead to issues in environments where a fixed MAC address is expected (like VMware when promiscuous mode is disallowed).
* Inconsistent respondd API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_) * Inconsistent respondd API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_)

View File

@ -40,7 +40,7 @@ Known issues
* 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>`_) * 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 promicious mode is disallowed). This may lead to issues in environments where a fixed MAC address is expected (like VMware when promiscuous mode is disallowed).
* Inconsistent respondd API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_) * Inconsistent respondd API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_)

View File

@ -46,7 +46,7 @@ Known issues
* 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>`_) * 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 promicious mode is disallowed). This may lead to issues in environments where a fixed MAC address is expected (like VMware when promiscuous mode is disallowed).
* Inconsistent respondd API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_) * Inconsistent respondd API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_)

View File

@ -17,7 +17,7 @@ Known issues
* 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>`_) * 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 promicious mode is disallowed). This may lead to issues in environments where a fixed MAC address is expected (like VMware when promiscuous mode is disallowed).
* Inconsistent respondd API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_) * Inconsistent respondd API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_)

View File

@ -18,7 +18,7 @@ Bugfixes
* Fix unintended difference between autoupdater version comparison and dpkg/opkg * Fix unintended difference between autoupdater version comparison and dpkg/opkg
Alphanumeric characters were considered less than end-of-string, when the Alphanumeric characters were considered less than end-of-string, when the
intended bahaviour (as implemented by dpkg and opkg) is that only ``~`` is intended behaviour (as implemented by dpkg and opkg) is that only ``~`` is
less than end-of-string. This broke relations like the following: less than end-of-string. This broke relations like the following:
* ``1.0`` < ``1.0a`` * ``1.0`` < ``1.0a``
@ -35,7 +35,7 @@ Known issues
* 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>`_) * 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 promicious mode is disallowed). This may lead to issues in environments where a fixed MAC address is expected (like VMware when promiscuous mode is disallowed).
* Inconsistent respondd API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_) * Inconsistent respondd API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_)

View File

@ -150,7 +150,7 @@ anymore.
Filtering IGMP/MLD queries directed towards the mesh ensures that each node becomes the multicast querier Filtering IGMP/MLD queries directed towards the mesh ensures that each node becomes the multicast querier
for its own clients (unless there are other multicast-aware switches connected to the node), rather for its own clients (unless there are other multicast-aware switches connected to the node), rather
than electing a single, basically arbitrary node in the mesh to become the querier. Overall, than electing a single, basically arbitrary node in the mesh to become the querier. Overall,
this should significantly improve the reliablity of multicast in the mesh. This is especially this should significantly improve the reliability of multicast in the mesh. This is especially
important for IPv6, as the IPv6 Neighbour Discovery Protocol (NDP) is based on local multicast. important for IPv6, as the IPv6 Neighbour Discovery Protocol (NDP) is based on local multicast.
See also the documentation of the :ref:`site.conf mesh section <user-site-mesh>`. See also the documentation of the :ref:`site.conf mesh section <user-site-mesh>`.
@ -176,7 +176,7 @@ Public key in respondd data (optional)
====================================== ======================================
If desired, the fastd public key of a node can be included in the respondd nodeinfo data, If desired, the fastd public key of a node can be included in the respondd nodeinfo data,
faciliating the correlations of VPN peers and nodes. As the VPN key is transmitted unencrypted facilitating the correlations of VPN peers and nodes. As the VPN key is transmitted unencrypted
in the fastd handshake, this would theoretically allow an ISP to determine which nodes in the fastd handshake, this would theoretically allow an ISP to determine which nodes
are operated behind which internet line. Therefore, this feature must be enabled explicitly are operated behind which internet line. Therefore, this feature must be enabled explicitly
by setting *mesh_vpn.pubkey_privacy* to ``false`` in *site.conf*. by setting *mesh_vpn.pubkey_privacy* to ``false`` in *site.conf*.
@ -389,7 +389,7 @@ Known issues
* 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>`_) * 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 promicious mode is disallowed). This may lead to issues in environments where a fixed MAC address is expected (like VMware when promiscuous mode is disallowed).
* Inconsistent respondd API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_) * Inconsistent respondd API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_)

132
docs/releases/v2018.2.1.rst Normal file
View File

@ -0,0 +1,132 @@
Gluon 2018.2.1
==============
Added hardware support
~~~~~~~~~~~~~~~~~~~~~~
ar71xx-generic
^^^^^^^^^^^^^^
* AVM
- Fritz!WLAN Repeater 300E
ramips-mt7620
^^^^^^^^^^^^^
* Nexx
- WT3020AD/F/H [#noibss]_
ramips-mt76x8
^^^^^^^^^^^^^
* Gl.iNet
- MT300N (v2) [#noibss]_
* Netgear
- R6120 [#noibss]_
* TP-Link
- Archer C50 (v3, v4) [#noibss]_
- TL-WR841N (v13) [#noibss]_
.. [#noibss]
Device or target does not support AP+IBSS mode: This device or target will not be built
when *GLUON_WLAN_MESH* is set to ``ibss``.
Bugfixes
~~~~~~~~
* Fixes a bug in the batman-adv respondd module that caused duplicate
IPv6 addresses in nodeinfo replies (`#1615 <https://github.com/freifunk-gluon/gluon/issues/1615>`_)
This was visible on the status page and several map implementations.
The new implementation uses netlink instead of parsing `/proc/net/if_inet6`.
* Fixes a localization issue in gluon-config-mode-geo-location which
resulted in a partial translation of the wizard's location section
text. (`#1611 <https://github.com/freifunk-gluon/gluon/issues/1611>`_)
* Fixes the display of the improved memory usage estimation in gluon-status-page
This change was actually already merged in time for v2018.2 but the
JavaScript was not rebuilt.
* Fixes automatic updates for several devices by adding and updating
the autoupdater image names
This affects the following devices:
* GL.iNet GL-AR150,
* GL.iNet GL-AR300M
* GL.iNet GL-AR750
* Raspberry Pi Model B+ Rev 1.2
* Fixes the primary MAC address selection for Unifi AC
Lite/Mesh/Pro/Mesh Pro (`#1629 <https://github.com/freifunk-gluon/gluon/issues/1629>`_)
* Fixes low data rate selection for multicast and management frames on
ath10k and ath10k-ct (`#1644 <https://github.com/freifunk-gluon/gluon/pull/1644>`_)
A patchset has been backported that notifies these drivers of requested data rate changes
* Fixes the data rate selection in ath10k and ath10k-ct when no
`mcast_rate` is configured (`#1657 <https://github.com/freifunk-gluon/gluon/pull/1657>`_)
Previously a missing mcast_rate could result in broken 5 GHz connectivity
New features
~~~~~~~~~~~~
Scheduled domain switch
^^^^^^^^^^^^^^^^^^^^^^^
Gluon has support for multiple domains since its v2018.1 release.
The scheduled domain switch allows for reliable migrations between
domains at a preconfigured time.
This can be useful for communities that, among other things, plan to
* migrate between IBSS and 802.11s
* activate VXLAN encapsulation on wired mesh links
Improved frequency band distribution of dual-band radios
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
A new algorithm that improves the distribution of dual-band radios was
added. They will now be evenly distributed between the 2.4 and 5 GHz
band, with a preference towards 2.4 GHz.
If a device has only a single dual-band radio, like the AVM FRITZ!WLAN
Repeater 300E, it will be configured for 2.4 GHz.
Known issues
~~~~~~~~~~~~
* 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.
* 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).
* Inconsistent respondd API
(`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_)
The current API is inconsistent and will be replaced eventually. The old API
will still be supported for a while.
* Frequent reboots due to out-of-memory or high load due to memory pressure on
weak hardware specially in larger meshes
(`#1243 <https://github.com/freifunk-gluon/gluon/issues/1243>`_)
Optimizations in Gluon 2018.1 have significantly improved memory usage.
There are still known bugs leading to unreasonably high load that we hope to
solve in future releases.

View File

@ -0,0 +1,69 @@
Gluon 2018.2.2
==============
Removed hardware support
~~~~~~~~~~~~~~~~~~~~~~~~
Support for the Onion Omega has been removed since the device does not
have an ethernet port, and even with the ethernet shield connected the
interface would not have been configured.
Bugfixes
~~~~~~~~
* Fixes vulnerabilities that allowed for remote crashes and denial of service attacks through the Linux kernels
TCP selective acknowledgement implementation. (CVE-2019-11477, CVE-2019-11478 and CVE-2019-11479)
* Fixes a bug in the image generation for the Netgear R6120 where the OverlayFS might not be created on boot as
the JFFS2 end-of-filesystem marker was omitted by the vendor firmware. This resulted in the router not being
able to save its configuration and seemingly "being stuck" in config-mode. (`#1722 <https://github.com/freifunk-gluon/gluon/pull/1722>`_)
* Fixes oddities in the calculation of non-wireless clients published through respondd on batman-adv networks.
Previously both the kernel wifi layer and batman-adv were consulted, which led to issues because they use
different timeout values. (`#1676 <https://github.com/freifunk-gluon/gluon/pull/1676>`_)
* Fixes doubled batman-adv management overhead, introduced with Gluon v2017.1. A timer in batman-adv was
wrongly started twice, resulting in each node emitting not one but two OGMs from the same originator per 5 seconds.
(`#1446 <https://github.com/freifunk-gluon/gluon/issues/1446>`_)
* Fixes an issue, where services provided by a node (such as DNS resolver or status-page)
might become unavailable due to other misbehaving nodes on the same layer 2 segment.
(`#1659 <https://github.com/freifunk-gluon/gluon/issues/1659>`_)
* Fixes traffic shaping not working correctly when using tunneldigger, as well as the migration between fastd
and tunneldigger (`#1736 <https://github.com/freifunk-gluon/gluon/issues/1736>`_)
Other changes
~~~~~~~~~~~~~
* Linux kernel has been updated to 4.9.182 or 4.14.128, depending on the target
Known issues
~~~~~~~~~~~~
* 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.
* 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).
* Inconsistent respondd API
(`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_)
The current API is inconsistent and will be replaced eventually. The old API
will still be supported for a while.
* Frequent reboots due to out-of-memory or high load due to memory pressure on
weak hardware specially in larger meshes
(`#1243 <https://github.com/freifunk-gluon/gluon/issues/1243>`_)
Optimizations in Gluon 2018.1 have significantly improved memory usage.
There are still known bugs leading to unreasonably high load that we hope to
solve in future releases.

View File

@ -81,6 +81,12 @@ ramips-mt7621 [#noibss]_
AP+IBSS mode unsupported: This target is not built when *GLUON_WLAN_MESH* is AP+IBSS mode unsupported: This target is not built when *GLUON_WLAN_MESH* is
set to ``ibss``. set to ``ibss``.
.. note::
The *ramips-mt7628* target has been renamed to *ramips-mt76x8*, and the *sunxi*
target has been renamed to *sunxi-cortexa7*. You might have to update your build
scripts accordingly.
New features New features
************ ************
@ -90,10 +96,11 @@ following larger new features:
OpenStreetMap-based map in config wizard OpenStreetMap-based map in config wizard
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
When the features *web-wizard* and *web-osm* are enabled, the configuration When the feature *config-mode-geo-location-osm* (package
wizard will try to load an OSM-based map to allow the user to specify the node *gluon-config-mode-geo-location-osm*) is enabled, the configuration wizard will
location. Loading the map requires a working internet connection, for example try to load an OSM-based map to allow the user to specify the node location.
via WLAN (while connected to the Gluon node via Ethernet). Loading the map requires a working internet connection, for example via WLAN
(while connected to the Gluon node via Ethernet).
See the :ref:`config_mode <user-site-config_mode>` section for the *site.conf* See the :ref:`config_mode <user-site-config_mode>` section for the *site.conf*
configuration of this feature. configuration of this feature.
@ -120,8 +127,12 @@ adding ``-gluon-ebtables-limit-arp`` to *GLUON_SITE_PACKAGES*.
Site changes Site changes
************ ************
No changes need to be made to *site.conf* or *site.mk* when upgrading from If an opkg repository for ``lede`` was configured the key needs to be migrated
Gluon v2018.1.x. to ``openwrt``. ``lede`` is ignored and without an ``openwrt`` key the default
OpenWrt repository is used.
No other changes need to be made to *site.conf* or *site.mk* when upgrading
from Gluon v2018.1.x.
Internals Internals
********* *********
@ -141,7 +152,7 @@ Known issues
disabled (`#496 <https://github.com/freifunk-gluon/gluon/issues/496>`_) disabled (`#496 <https://github.com/freifunk-gluon/gluon/issues/496>`_)
This may lead to issues in environments where a fixed MAC address is expected This may lead to issues in environments where a fixed MAC address is expected
(like VMware when promicious mode is disallowed). (like VMware when promiscuous mode is disallowed).
* Inconsistent respondd API * Inconsistent respondd API
(`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_) (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_)

View File

@ -1,4 +1,4 @@
-- This is an example site configuration for Gluon v2018.2 -- This is an example site configuration for Gluon v2018.2.2
-- --
-- Take a look at the documentation located at -- Take a look at the documentation located at
-- https://gluon.readthedocs.io/ for details. -- https://gluon.readthedocs.io/ for details.

View File

@ -1,10 +1,20 @@
Frequently Asked Questions Frequently Asked Questions
========================== ==========================
.. _faq-hardware:
What hardware is supported?
~~~~~~~~~~~~~~~~~~~~~~~~~~~
A table with hardware supported by Gluon can be found on the `OpenWrt Wiki`_.
If you want to find out if your device can potentially be supported
have a look at :doc:`../dev/hardware` for detailed hardware requirements.
.. _OpenWrt Wiki: https://openwrt.org/toh/views/toh_gluon_supported
.. _faq-dns: .. _faq-dns:
DNS does not work on the nodes Why does DNS not work on the nodes?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Gluon nodes will ignore the DNS server on the WAN port for everything except Gluon nodes will ignore the DNS server on the WAN port for everything except
the mesh VPN, which can lead to confusion. the mesh VPN, which can lead to confusion.
@ -18,8 +28,8 @@ in this case, the *radvd* is only used to announce the DNS server.
.. _faq-mtu: .. _faq-mtu:
What is a good MTU on the mesh-vpn What is a good MTU on the mesh-vpn?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Setting the MTU on the transport interface requires careful consideration, as Setting the MTU on the transport interface requires careful consideration, as
setting it too low will cause excessive fragmentation and setting it too high setting it too low will cause excessive fragmentation and setting it too high
@ -30,7 +40,7 @@ Consider these key values:
- Payload: Allow for the transport of IPv6 packets, by adhering to the minimum MTU - Payload: Allow for the transport of IPv6 packets, by adhering to the minimum MTU
of 1280 Byte specified in RFC 2460 of 1280 Byte specified in RFC 2460
- and configure `MSS clamping`_ accordingly, - and configure `MSS clamping`_ accordingly,
- and announce your link MTU via Router Advertisments and DHCP - 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://www.tldp.org/HOWTO/Adv-Routing-HOWTO/lartc.cookbook.mtu-mss.html
@ -48,7 +58,7 @@ For reference, the complete MTU stack looks like this:
Minimum MTU Minimum MTU
----------- -----------
Calculcate the minimum transport MTU by adding the encapsulation overhead to the Calculate the minimum transport MTU by adding the encapsulation overhead to the
minimum payload MTU required. This is the lowest recommended value, since going minimum payload MTU required. This is the lowest recommended value, since going
lower would cause unnecessary fragmentation for clients which respect the announced lower would cause unnecessary fragmentation for clients which respect the announced
link MTU. link MTU.

View File

@ -8,7 +8,7 @@ Gluon's releases are managed using `Git tags`_. If you are just getting
started with Gluon we recommend to use the latest stable release of Gluon. started with Gluon we recommend to use the latest stable release of Gluon.
Take a look at the `list of gluon releases`_ and notice the latest release, Take a look at the `list of gluon releases`_ and notice the latest release,
e.g. *v2018.2*. Always get Gluon using git and don't try to download it e.g. *v2018.2.2*. Always get Gluon using git and don't try to download it
as a Zip archive as the archive will be missing version information. as a Zip archive as the archive will be missing version information.
Please keep in mind that there is no "default Gluon" build; a site configuration Please keep in mind that there is no "default Gluon" build; a site configuration
@ -44,7 +44,7 @@ Building the images
------------------- -------------------
To build Gluon, first check out the repository. Replace *RELEASE* with the To build Gluon, first check out the repository. Replace *RELEASE* with the
version you'd like to checkout, e.g. *v2018.2*. version you'd like to checkout, e.g. *v2018.2.2*.
:: ::
@ -172,7 +172,7 @@ GLUON_PRIORITY
GLUON_REGION GLUON_REGION
Some devices (at the moment the TP-Link Archer C7) contain a region code that restricts Some devices (at the moment the TP-Link Archer C7) contain a region code that restricts
firmware installations. Set GLUON_REGION to ``eu`` or ``us`` to make the resulting firmware installations. Set GLUON_REGION to ``eu`` or ``us`` to make the resulting
images installable from the respective stock firmwares. images installable from the respective stock firmware.
GLUON_RELEASE GLUON_RELEASE
Firmware release number: This string is displayed in the config mode, announced Firmware release number: This string is displayed in the config mode, announced
@ -186,9 +186,6 @@ GLUON_TARGET
Special variables Special variables
................. .................
GLUON_BUILDDIR
Working directory during build. Defaults to ``build``.
GLUON_IMAGEDIR GLUON_IMAGEDIR
Path where images will be stored. Defaults to ``$(GLUON_OUTPUTDIR)/images``. Path where images will be stored. Defaults to ``$(GLUON_OUTPUTDIR)/images``.

View File

@ -24,7 +24,7 @@ site_code
domain_seed domain_seed
32 bytes of random data, encoded in hexadecimal, used to seed other random 32 bytes of random data, encoded in hexadecimal, used to seed other random
values specific to the mesh domain. It must be the same for all nodes of one values specific to the mesh domain. It must be the same for all nodes of one
mesh, but should be different for firmwares that are not supposed to mesh with mesh, but should be different for firmware that is not supposed to mesh with
each other. each other.
The recommended way to generate a value for a new site is: The recommended way to generate a value for a new site is:
@ -69,7 +69,7 @@ timezone
-- Europe/Berlin -- Europe/Berlin
timezone = 'CET-1CEST,M3.5.0,M10.5.0/3' timezone = 'CET-1CEST,M3.5.0,M10.5.0/3'
ntp_server ntp_servers
List of NTP servers available in your community or used by your community, e.g.: List of NTP servers available in your community or used by your community, e.g.:
:: ::
@ -152,7 +152,7 @@ wifi24 \: optional
don't want users to connect to this mesh-SSID, so use a cryptic id that no 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. one will accidentally mistake for the client WiFi.
``ibss`` requires two parametersr: ``ssid`` (a string) and ``bssid`` (a MAC). ``ibss`` requires two parameters: ``ssid`` (a string) and ``bssid`` (a MAC).
An optional parameter ``vlan`` (integer) is supported. An optional parameter ``vlan`` (integer) is supported.
Both ``mesh`` and ``ibss`` accept an optional ``mcast_rate`` (kbit/s) parameter for Both ``mesh`` and ``ibss`` accept an optional ``mcast_rate`` (kbit/s) parameter for
@ -247,7 +247,7 @@ mesh
throughput is at least 1500 kbit/s faster than the throughput of the throughput is at least 1500 kbit/s faster than the throughput of the
currently selected gateway. currently selected gateway.
For details on determining the threshhold, when to switch to a new gateway, For details on determining the threshold, when to switch to a new gateway,
see `batctl manpage`_, section "gw_mode". see `batctl manpage`_, section "gw_mode".
.. _batctl manpage: https://www.open-mesh.org/projects/batman-adv/wiki/Gateways .. _batctl manpage: https://www.open-mesh.org/projects/batman-adv/wiki/Gateways
@ -546,7 +546,7 @@ Feature flags
With the addition of more and more features that interact in complex ways, it With the addition of more and more features that interact in complex ways, it
has become necessary to split certain packages into multiple parts, so it is has become necessary to split certain packages into multiple parts, so it is
possible to install just what is needed for a specific usecase. One example possible to install just what is needed for a specific use case. One example
is the package *gluon-status-page-mesh-batman-adv*: There are batman-adv-specific is the package *gluon-status-page-mesh-batman-adv*: There are batman-adv-specific
status page components; they should only be installed when both batman-adv and status page components; they should only be installed when both batman-adv and
the status page are enabled, making the addition of a specific package for this the status page are enabled, making the addition of a specific package for this
@ -661,7 +661,7 @@ Site modules
The file ``modules`` in the site repository is completely optional and can be used The file ``modules`` in the site repository is completely optional and can be used
to supply additional package feeds from which packages are built. The git repositories to supply additional package feeds from which packages are built. The git repositories
specified here are retrieved in addition to the default feeds when ``make update`` specified here are retrieved in addition to the default feeds when ``make update``
it called. is called.
This file's format is very similar to the toplevel ``modules`` file of the Gluon This file's format is very similar to the toplevel ``modules`` file of the Gluon
tree, with the important different that the list of feeds must be assigned to tree, with the important different that the list of feeds must be assigned to

View File

@ -19,8 +19,8 @@ The following targets for x86 images exist:
* `virtualbox` (VDI image) * `virtualbox` (VDI image)
* `vmware` (VMDK image) * `vmware` (VMDK image)
These images only differ in the image file format, the content is the same. Therefore there is These images differ in the image file format, the content is the same. Therefore
only a single `x86-generic` sysupgrade image instead of three. a single `x86-generic` sysupgrade image is provided, only.
`x86-geode` `x86-geode`
x86 image for Geode CPUs. x86 image for Geode CPUs.

View File

@ -2,19 +2,19 @@ GLUON_FEEDS='packages routing luci gluon'
OPENWRT_REPO=https://git.openwrt.org/openwrt/openwrt.git OPENWRT_REPO=https://git.openwrt.org/openwrt/openwrt.git
OPENWRT_BRANCH=openwrt-18.06 OPENWRT_BRANCH=openwrt-18.06
OPENWRT_COMMIT=eef6bd3393f406f73187a670fa34d5e6a228f9e8 OPENWRT_COMMIT=fc1dae5be797f54d45f5a61ae17fe548e108dd0d
PACKAGES_PACKAGES_REPO=https://github.com/openwrt/packages.git PACKAGES_PACKAGES_REPO=https://github.com/openwrt/packages.git
PACKAGES_PACKAGES_BRANCH=openwrt-18.06 PACKAGES_PACKAGES_BRANCH=openwrt-18.06
PACKAGES_PACKAGES_COMMIT=d05b98c6c86da58db5cbda3c945007be09583609 PACKAGES_PACKAGES_COMMIT=5d3cb594e49132158ca7b41f4246421078e8f92a
PACKAGES_ROUTING_REPO=https://github.com/openwrt-routing/packages.git PACKAGES_ROUTING_REPO=https://github.com/openwrt-routing/packages.git
PACKAGES_ROUTING_BRANCH=openwrt-18.06 PACKAGES_ROUTING_BRANCH=openwrt-18.06
PACKAGES_ROUTING_COMMIT=bc6e7f6903c8237c77131aedfc92dba40e1bc6ac PACKAGES_ROUTING_COMMIT=7589804a56baac804421b492c93004c28a627abb
PACKAGES_LUCI_REPO=https://github.com/openwrt/luci.git PACKAGES_LUCI_REPO=https://github.com/openwrt/luci.git
PACKAGES_LUCI_BRANCH=openwrt-18.06 PACKAGES_LUCI_BRANCH=openwrt-18.06
PACKAGES_LUCI_COMMIT=4ba85e3d82b684262c570e38a72d2dc3bb712a13 PACKAGES_LUCI_COMMIT=4ba85e3d82b684262c570e38a72d2dc3bb712a13
PACKAGES_GLUON_REPO=https://github.com/freifunk-gluon/packages.git PACKAGES_GLUON_REPO=https://github.com/freifunk-gluon/packages.git
PACKAGES_GLUON_COMMIT=a52d5ced54acfe399b3ac36b33d53034f341f06b PACKAGES_GLUON_COMMIT=524ae77e9bb20002252af19b63e6607155b3af4d

View File

@ -15,7 +15,7 @@ return function(form, uci)
if not text then if not text then
text = pkg_i18n.translate( text = pkg_i18n.translate(
'If you want the location of your node to ' .. 'If you want the location of your node to ' ..
'be displayed on the map, you can enter its coordinates here.' 'be displayed on public maps, you can enter its coordinates here.'
) )
if osm then if osm then
text = text .. ' ' .. osm.help(i18n) text = text .. ' ' .. osm.help(i18n)

View File

@ -24,51 +24,39 @@ return function(form, uci)
local o local o
local meshvpn = s:option(Flag, "meshvpn", pkg_i18n.translate("Use internet connection (mesh VPN)")) local meshvpn = s:option(Flag, "meshvpn", pkg_i18n.translate("Use internet connection (mesh VPN)"))
meshvpn.default = uci:get_bool("fastd", "mesh_vpn", "enabled") or uci:get_bool("tunneldigger", "mesh_vpn", "enabled") meshvpn.default = uci:get_bool("gluon", "mesh_vpn", "enabled")
function meshvpn:write(data) function meshvpn:write(data)
if has_fastd then uci:set("gluon", "mesh_vpn", "enabled", data)
uci:set("fastd", "mesh_vpn", "enabled", data)
end
if has_tunneldigger then
uci:set("tunneldigger", "mesh_vpn", "enabled", data)
end
end end
local limit = s:option(Flag, "limit_enabled", pkg_i18n.translate("Limit bandwidth")) local limit = s:option(Flag, "limit_enabled", pkg_i18n.translate("Limit bandwidth"))
limit:depends(meshvpn, true) limit:depends(meshvpn, true)
limit.default = uci:get_bool("simple-tc", "mesh_vpn", "enabled") limit.default = uci:get_bool("gluon", "mesh_vpn", "limit_enabled")
function limit:write(data) function limit:write(data)
uci:set("simple-tc", "mesh_vpn", "interface") uci:set("gluon", "mesh_vpn", "limit_enabled", data)
uci:set("simple-tc", "mesh_vpn", "enabled", data)
uci:set("simple-tc", "mesh_vpn", "ifname", "mesh-vpn")
if not data and has_tunneldigger then
uci:delete("tunneldigger", "mesh_vpn", "limit_bw_down")
end
end end
o = s:option(Value, "limit_ingress", pkg_i18n.translate("Downstream (kbit/s)")) o = s:option(Value, "limit_ingress", pkg_i18n.translate("Downstream (kbit/s)"))
o:depends(limit, true) o:depends(limit, true)
if has_tunneldigger then o.default = uci:get("gluon", "mesh_vpn", "limit_ingress")
o.default = uci:get("tunneldigger", "mesh_vpn", "limit_bw_down")
else
o.default = uci:get("simple-tc", "mesh_vpn", "limit_ingress")
end
o.datatype = "uinteger" o.datatype = "uinteger"
function o:write(data) function o:write(data)
if has_tunneldigger then uci:set("gluon", "mesh_vpn", "limit_ingress", data)
uci:set("tunneldigger", "mesh_vpn", "limit_bw_down", data)
else
uci:set("simple-tc", "mesh_vpn", "limit_ingress", data)
end
end end
o = s:option(Value, "limit_egress", pkg_i18n.translate("Upstream (kbit/s)")) o = s:option(Value, "limit_egress", pkg_i18n.translate("Upstream (kbit/s)"))
o:depends(limit, true) o:depends(limit, true)
o.default = uci:get("simple-tc", "mesh_vpn", "limit_egress") o.default = uci:get("gluon", "mesh_vpn", "limit_egress")
o.datatype = "uinteger" o.datatype = "uinteger"
function o:write(data) function o:write(data)
uci:set("simple-tc", "mesh_vpn", "limit_egress", data) uci:set("gluon", "mesh_vpn", "limit_egress", data)
end end
return {'fastd', 'tunneldigger', 'simple-tc'} function s:handle()
Section.handle(s)
uci:save('gluon')
os.execute('exec /lib/gluon/mesh-vpn/update-config')
end
return {'gluon', 'fastd', 'tunneldigger', 'simple-tc'}
end end

View File

@ -3,15 +3,6 @@ need_string(in_site({'site_name'}))
-- this_domain() returns nil when multidomain support is disabled -- this_domain() returns nil when multidomain support is disabled
if this_domain() then if this_domain() then
function need_domain_name(path)
need_string(path)
need(path, function(default_domain)
local f = io.open(os.getenv('IPKG_INSTROOT') .. '/lib/gluon/domains/' .. default_domain .. '.json')
if not f then return false end
f:close()
return true
end, nil, 'be a valid domain name')
end
need_domain_name(in_site({'default_domain'})) need_domain_name(in_site({'default_domain'}))
need_table(in_domain({'domain_names'}), function(domain) need_table(in_domain({'domain_names'}), function(domain)

View File

@ -26,10 +26,10 @@ end
if platform.match('ar71xx', 'generic', {'tl-wdr3600', 'tl-wdr4300', if platform.match('ar71xx', 'generic', {'tl-wdr3600', 'tl-wdr4300',
'tl-wr902ac-v1'}) then 'tl-wr902ac-v1'}) then
table.insert(try_files, 1, '/sys/class/ieee80211/phy1/macaddress') table.insert(try_files, 1, '/sys/class/ieee80211/phy1/macaddress')
elseif platform.match('ramips', 'mt7621', {'dir-860l-b1'}) then elseif platform.match('ar71xx', 'generic', {'a40', 'a60',
table.insert(try_files, 1, '/sys/class/ieee80211/phy1/macaddress') 'archer-c7-v4', 'archer-c7-v5',
elseif platform.match('ar71xx', 'generic', {'unifi-outdoor-plus', 'carambola2', 'carambola2',
'a40', 'a60', 'koala', 'koala',
'mr600', 'mr600v2', 'mr600', 'mr600v2',
'mr900', 'mr900v2', 'mr900', 'mr900v2',
'mr1750', 'mr1750v2', 'mr1750', 'mr1750v2',
@ -39,7 +39,8 @@ elseif platform.match('ar71xx', 'generic', {'unifi-outdoor-plus', 'carambola2',
'om2p-lc', 'om2p-lc',
'om5p', 'om5p-an', 'om5p', 'om5p-an',
'om5p-ac', 'om5p-acv2', 'om5p-ac', 'om5p-acv2',
'archer-c7-v4', 'archer-c7-v5'}) then 'unifi-outdoor-plus',
'unifiac-lite', 'unifiac-pro'}) then
table.insert(try_files, 1, '/sys/class/net/eth0/address') table.insert(try_files, 1, '/sys/class/net/eth0/address')
elseif platform.match('ar71xx', 'generic', {'archer-c5', 'archer-c58-v1', elseif platform.match('ar71xx', 'generic', {'archer-c5', 'archer-c58-v1',
'archer-c59-v1', 'archer-c60-v1', 'archer-c59-v1', 'archer-c60-v1',
@ -48,6 +49,8 @@ elseif platform.match('ar71xx', 'generic', {'archer-c5', 'archer-c58-v1',
elseif platform.match('ipq40xx', nil, {'avm,fritzbox-4040', elseif platform.match('ipq40xx', nil, {'avm,fritzbox-4040',
'openmesh,a42', 'openmesh,a62'}) then 'openmesh,a42', 'openmesh,a62'}) then
table.insert(try_files, 1, '/sys/class/net/eth0/address') table.insert(try_files, 1, '/sys/class/net/eth0/address')
elseif platform.match('ramips', 'mt7621', {'dir-860l-b1'}) then
table.insert(try_files, 1, '/sys/class/ieee80211/phy1/macaddress')
end end

View File

@ -10,6 +10,43 @@ local uci = require('simple-uci').cursor()
-- Initial -- Initial
if not sysconfig.gluon_version then if not sysconfig.gluon_version then
uci:delete_all('wireless', 'wifi-iface') uci:delete_all('wireless', 'wifi-iface')
-- First count all radios with a fixed frequency band.
-- This is needed to distribute devices which have radios
-- capable of operating in the 2.4 GHz and 5 GHz band need
-- to be distributed evenly.
local radio_band_count = {band24=0, band5=0}
util.foreach_radio(uci, function(radio, index, config)
local hwmodes = iwinfo.nl80211.hwmodelist(util.find_phy(radio))
if (hwmodes.a or hwmodes.ac) and hwmodes.g then
-- Dualband - do nothing in this step
elseif hwmodes.g then
-- 2.4 GHz
radio_band_count["band24"] = radio_band_count["band24"] + 1
elseif hwmodes.a or hwmodes.ac then
-- 5 GHz
radio_band_count["band5"] = radio_band_count["band5"] + 1
end
end)
-- Use the number of all fixed 2.4G GHz and 5 GHz radios to
-- distribute dualband radios in this step.
util.foreach_radio(uci, function(radio, index, config)
local radio_name = radio['.name']
local hwmodes = iwinfo.nl80211.hwmodelist(util.find_phy(radio))
if (hwmodes.a or hwmodes.ac) and hwmodes.g then
-- Dualband radio
if radio_band_count["band24"] <= radio_band_count["band5"] then
-- Assign radio to 2.4GHz band
radio_band_count["band24"] = radio_band_count["band24"] + 1
uci:set('wireless', radio_name, 'hwmode', '11g')
else
-- Assign radio to 5GHz band
radio_band_count["band5"] = radio_band_count["band5"] + 1
uci:set('wireless', radio_name, 'hwmode', '11a')
end
end
end)
end end
local function get_channel(radio, config) local function get_channel(radio, config)

View File

@ -253,3 +253,12 @@ function foreach_radio(uci, f)
end end
end end
end end
function get_uptime()
local uptime_file = readfile("/proc/uptime")
if uptime_file == nil then
-- Something went wrong reading "/proc/uptime"
return nil
end
return tonumber(uptime_file:match('^[^ ]+'))
end

View File

@ -7,6 +7,9 @@ local macaddr = client_bridge.next_node_macaddr()
rule('FORWARD --logical-out br-client -i bat0 -o local-port -j DROP') rule('FORWARD --logical-out br-client -i bat0 -o local-port -j DROP')
rule('FORWARD --logical-out br-client -i local-port -o bat0 -j DROP') rule('FORWARD --logical-out br-client -i local-port -o bat0 -j DROP')
rule('PREROUTING --logical-in br-client -i bat0 -s ' .. macaddr .. ' -j DROP', 'nat')
rule('PREROUTING --logical-in br-client -i bat0 -d ' .. macaddr .. ' -j DROP', 'nat')
rule('FORWARD --logical-out br-client -o bat0 -d ' .. macaddr .. ' -j DROP') rule('FORWARD --logical-out br-client -o bat0 -d ' .. macaddr .. ' -j DROP')
rule('OUTPUT --logical-out br-client -o bat0 -d ' .. macaddr .. ' -j DROP') rule('OUTPUT --logical-out br-client -o bat0 -d ' .. macaddr .. ' -j DROP')
rule('FORWARD --logical-out br-client -o bat0 -s ' .. macaddr .. ' -j DROP') rule('FORWARD --logical-out br-client -o bat0 -s ' .. macaddr .. ' -j DROP')

View File

@ -26,6 +26,7 @@
#include <respondd.h> #include <respondd.h>
#include <ifaddrs.h>
#include <iwinfo.h> #include <iwinfo.h>
#include <json-c/json.h> #include <json-c/json.h>
#include <libgluonutil.h> #include <libgluonutil.h>
@ -43,12 +44,16 @@
#include <net/if.h> #include <net/if.h>
#include <netinet/in.h> #include <netinet/in.h>
#include <netlink/netlink.h>
#include <netlink/genl/genl.h>
#include <sys/types.h> #include <sys/types.h>
#include <sys/ioctl.h> #include <sys/ioctl.h>
#include <sys/socket.h> #include <sys/socket.h>
#include <linux/ethtool.h> #include <linux/ethtool.h>
#include <linux/if_addr.h> #include <linux/if_addr.h>
#include <linux/rtnetlink.h>
#include <linux/sockios.h> #include <linux/sockios.h>
#include <batadv-genl.h> #include <batadv-genl.h>
@ -71,55 +76,73 @@ struct gw_netlink_opts {
}; };
struct clients_netlink_opts { struct clients_netlink_opts {
size_t total; size_t non_wifi;
size_t wifi;
struct batadv_nlquery_opts query_opts; struct batadv_nlquery_opts query_opts;
}; };
struct ip_address_information {
unsigned int ifindex;
struct json_object *addresses;
};
static struct json_object * get_addresses(void) { static int get_addresses_cb(struct nl_msg *msg, void *arg) {
FILE *f = fopen("/proc/net/if_inet6", "r"); struct ip_address_information *info = (struct ip_address_information*) arg;
if (!f)
return NULL;
char *line = NULL; struct nlmsghdr *nlh = nlmsg_hdr(msg);
size_t len = 0; struct ifaddrmsg *msg_content = NLMSG_DATA(nlh);
int remaining = nlh->nlmsg_len - NLMSG_LENGTH(sizeof(struct ifaddrmsg));
struct rtattr *hdr;
struct json_object *ret = json_object_new_array(); for (hdr = IFA_RTA(msg_content); RTA_OK(hdr, remaining); hdr = RTA_NEXT(hdr, remaining)) {
char addr_str_buf[INET6_ADDRSTRLEN];
while (getline(&line, &len, f) >= 0) { /* We are only interested in IP-addresses of br-client */
/* IF_NAMESIZE would be enough, but adding 1 here is simpler than subtracting 1 in the format string */ if (hdr->rta_type != IFA_ADDRESS ||
char ifname[IF_NAMESIZE+1]; msg_content->ifa_index != info->ifindex ||
unsigned int flags; msg_content->ifa_flags & (IFA_F_TENTATIVE|IFA_F_DEPRECATED)) {
struct in6_addr addr;
char buf[INET6_ADDRSTRLEN];
if (sscanf(line,
"%2"SCNx8"%2"SCNx8"%2"SCNx8"%2"SCNx8"%2"SCNx8"%2"SCNx8"%2"SCNx8"%2"SCNx8
"%2"SCNx8"%2"SCNx8"%2"SCNx8"%2"SCNx8"%2"SCNx8"%2"SCNx8"%2"SCNx8"%2"SCNx8
" %*x %*x %*x %x %"STRINGIFY(IF_NAMESIZE)"s",
&addr.s6_addr[0], &addr.s6_addr[1], &addr.s6_addr[2], &addr.s6_addr[3],
&addr.s6_addr[4], &addr.s6_addr[5], &addr.s6_addr[6], &addr.s6_addr[7],
&addr.s6_addr[8], &addr.s6_addr[9], &addr.s6_addr[10], &addr.s6_addr[11],
&addr.s6_addr[12], &addr.s6_addr[13], &addr.s6_addr[14], &addr.s6_addr[15],
&flags, ifname) != 18)
continue; continue;
}
if (strcmp(ifname, "br-client")) if (inet_ntop(AF_INET6, (struct in6_addr *) RTA_DATA(hdr), addr_str_buf, INET6_ADDRSTRLEN)) {
continue; json_object_array_add(info->addresses, json_object_new_string(addr_str_buf));
}
if (flags & (IFA_F_TENTATIVE|IFA_F_DEPRECATED))
continue;
inet_ntop(AF_INET6, &addr, buf, sizeof(buf));
json_object_array_add(ret, json_object_new_string(buf));
} }
fclose(f); return NL_OK;
free(line); }
return ret; static struct json_object *get_addresses(void) {
struct ip_address_information info = {
.ifindex = if_nametoindex("br-client"),
.addresses = json_object_new_array(),
};
int err;
/* Open socket */
struct nl_sock *socket = nl_socket_alloc();
if (!socket) {
return info.addresses;
}
err = nl_connect(socket, NETLINK_ROUTE);
if (err < 0) {
goto out_free;
}
/* Send message */
struct ifaddrmsg rt_hdr = { .ifa_family = AF_INET6, };
err = nl_send_simple(socket, RTM_GETADDR, NLM_F_REQUEST | NLM_F_ROOT, &rt_hdr, sizeof(struct ifaddrmsg));
if (err < 0) {
goto out_free;
}
/* Retrieve answer. Message is handled by get_addresses_cb */
nl_socket_modify_cb(socket, NL_CB_VALID, NL_CB_CUSTOM, get_addresses_cb, &info);
nl_recvmsgs_default(socket);
out_free:
nl_socket_free(socket);
return info.addresses;
} }
static void add_if_not_empty(struct json_object *obj, const char *key, struct json_object *val) { static void add_if_not_empty(struct json_object *obj, const char *key, struct json_object *val) {
@ -529,26 +552,24 @@ static int parse_clients_list_netlink_cb(struct nl_msg *msg, void *arg)
flags = nla_get_u32(attrs[BATADV_ATTR_TT_FLAGS]); flags = nla_get_u32(attrs[BATADV_ATTR_TT_FLAGS]);
if (flags & BATADV_TT_CLIENT_NOPURGE) if (flags & (BATADV_TT_CLIENT_NOPURGE | BATADV_TT_CLIENT_WIFI))
return NL_OK; return NL_OK;
lastseen = nla_get_u32(attrs[BATADV_ATTR_LAST_SEEN_MSECS]); lastseen = nla_get_u32(attrs[BATADV_ATTR_LAST_SEEN_MSECS]);
if (lastseen > MAX_INACTIVITY) if (lastseen > MAX_INACTIVITY)
return NL_OK; return NL_OK;
if (flags & BATADV_TT_CLIENT_WIFI) opts->non_wifi++;
opts->wifi++;
opts->total++;
return NL_OK; return NL_OK;
} }
static struct json_object * get_clients(void) { static struct json_object * get_clients(void) {
size_t wifi24 = 0, wifi5 = 0; size_t wifi24 = 0, wifi5 = 0;
size_t total;
size_t wifi;
struct clients_netlink_opts opts = { struct clients_netlink_opts opts = {
.total = 0, .non_wifi = 0,
.wifi = 0,
.query_opts = { .query_opts = {
.err = 0, .err = 0,
}, },
@ -559,10 +580,12 @@ static struct json_object * get_clients(void) {
&opts.query_opts); &opts.query_opts);
count_stations(&wifi24, &wifi5); count_stations(&wifi24, &wifi5);
wifi = wifi24 + wifi5;
total = wifi + opts.non_wifi;
struct json_object *ret = json_object_new_object(); struct json_object *ret = json_object_new_object();
json_object_object_add(ret, "total", json_object_new_int(opts.total)); json_object_object_add(ret, "total", json_object_new_int(total));
json_object_object_add(ret, "wifi", json_object_new_int(opts.wifi)); json_object_object_add(ret, "wifi", json_object_new_int(wifi));
json_object_object_add(ret, "wifi24", json_object_new_int(wifi24)); json_object_object_add(ret, "wifi24", json_object_new_int(wifi24));
json_object_object_add(ret, "wifi5", json_object_new_int(wifi5)); json_object_object_add(ret, "wifi5", json_object_new_int(wifi5));
return ret; return ret;

View File

@ -0,0 +1,48 @@
#!/usr/bin/lua
local uci = require('simple-uci').cursor()
local unistd = require 'posix.unistd'
local vpn
if unistd.access('/lib/gluon/mesh-vpn/fastd') then
vpn = 'fastd'
elseif unistd.access('/lib/gluon/mesh-vpn/tunneldigger') then
vpn = 'tunneldigger'
end
local vpn_config = {
enabled = uci:get_bool('gluon', 'mesh_vpn', 'enabled'),
limit_enabled = uci:get_bool('gluon', 'mesh_vpn', 'limit_enabled'),
limit_egress = uci:get('gluon', 'mesh_vpn', 'limit_egress'),
limit_ingress = uci:get('gluon', 'mesh_vpn', 'limit_ingress'),
}
uci:delete('simple-tc', 'mesh_vpn')
uci:section('simple-tc', 'interface', 'mesh_vpn', {
ifname = 'mesh-vpn',
enabled = vpn_config.limit_enabled,
limit_egress = vpn_config.limit_egress,
})
if vpn == 'fastd' then
uci:set('fastd', 'mesh_vpn', 'enabled', vpn_config.enabled)
uci:set('simple-tc', 'mesh_vpn', 'limit_ingress', vpn_config.limit_ingress)
else
uci:set('fastd', 'mesh_vpn', 'enabled', false)
end
uci:save('fastd')
if vpn == 'tunneldigger' then
uci:set('tunneldigger', 'mesh_vpn', 'enabled', vpn_config.enabled)
if vpn_config.limit_enabled then
uci:set('tunneldigger', 'mesh_vpn', 'limit_bw_down', vpn_config.limit_ingress)
else
uci:delete('tunneldigger', 'mesh_vpn', 'limit_bw_down')
end
else
uci:set('tunneldigger', 'mesh_vpn', 'enabled', false)
end
uci:save('tunneldigger')
uci:save('simple-tc')

View File

@ -24,16 +24,6 @@ if unistd.access('/etc/config/gluon-simple-tc') then
os.rename('/etc/config/gluon-simple-tc', '/etc/config/simple-tc') os.rename('/etc/config/gluon-simple-tc', '/etc/config/simple-tc')
end end
if not uci:get('simple-tc', 'mesh_vpn') then
uci:section('simple-tc', 'interface', 'mesh_vpn', {
ifname = 'mesh-vpn',
enabled = site.mesh_vpn.bandwidth_limit.enabled(false),
limit_ingress = site.mesh_vpn.bandwidth_limit.ingress(),
limit_egress = site.mesh_vpn.bandwidth_limit.egress(),
})
uci:save('simple-tc')
end
-- The previously used user and group are removed, we now have a generic group -- The previously used user and group are removed, we now have a generic group
users.remove_user('gluon-fastd') users.remove_user('gluon-fastd')
@ -49,42 +39,59 @@ uci:save('firewall')
-- VPN migration -- VPN migration
local has_fastd = unistd.access('/lib/gluon/mesh-vpn/fastd') if not uci:get('gluon', 'mesh_vpn') then
local fastd_enabled = uci:get('fastd', 'mesh_vpn', 'enabled') local vpn
if unistd.access('/lib/gluon/mesh-vpn/fastd') then
local has_tunneldigger = unistd.access('/lib/gluon/mesh-vpn/tunneldigger') vpn = 'fastd'
local tunneldigger_enabled = uci:get('tunneldigger', 'mesh_vpn', 'enabled') elseif unistd.access('/lib/gluon/mesh-vpn/tunneldigger') then
vpn = 'tunneldigger'
local enabled
-- If the installed VPN package has its enabled state set, keep the value
if has_fastd and fastd_enabled then
enabled = fastd_enabled == '1'
elseif has_tunneldigger and tunneldigger_enabled then
enabled = tunneldigger_enabled == '1'
-- Otherwise, migrate the other package's value if any is set
elseif fastd_enabled or tunneldigger_enabled then
enabled = fastd_enabled == '1' or tunneldigger_enabled == '1'
-- If nothing is set, use the default
else
enabled = site.mesh_vpn.enabled(false)
end
if has_fastd then
uci:set('fastd', 'mesh_vpn', 'enabled', enabled)
else
uci:delete('fastd', 'mesh_vpn')
end
uci:save('fastd')
if has_tunneldigger then
uci:set('tunneldigger', 'mesh_vpn', 'enabled', enabled)
if site.mesh_vpn.bandwidth_limit.enabled(false) then
uci:set('tunneldigger', 'mesh_vpn', 'limit_bw_down', site.mesh_vpn.bandwidth_limit.ingress())
uci:set('simple-tc', 'mesh_vpn', 'limit_ingress', 0)
uci:save('simple-tc')
end end
else
uci:delete('tunneldigger', 'mesh_vpn') local fastd_enabled = uci:get('fastd', 'mesh_vpn', 'enabled')
local tunneldigger_enabled = uci:get('tunneldigger', 'mesh_vpn', 'enabled')
local enabled
-- If the installed VPN package has its enabled state set, keep the value
if vpn == 'fastd' and fastd_enabled then
enabled = fastd_enabled == '1'
elseif vpn == 'tunneldigger' and tunneldigger_enabled then
enabled = tunneldigger_enabled == '1'
-- Otherwise, migrate the other package's value if any is set
elseif fastd_enabled or tunneldigger_enabled then
enabled = fastd_enabled == '1' or tunneldigger_enabled == '1'
-- If nothing is set, use the default
else
enabled = site.mesh_vpn.enabled(false)
end
local limit_enabled = tonumber((uci:get('simple-tc', 'mesh_vpn', 'enabled')))
if limit_enabled == nil then
limit_enabled = site.mesh_vpn.bandwidth_limit.enabled(false)
end
local limit_ingress = tonumber((uci:get('tunneldigger', 'mesh_vpn', 'limit_bw_down')))
if limit_ingress == nil then
limit_ingress = tonumber((uci:get('simple-tc', 'mesh_vpn', 'limit_ingress')))
end
if limit_ingress == nil then
limit_ingress = site.mesh_vpn.bandwidth_limit.ingress()
end
local limit_egress = tonumber((uci:get('simple-tc', 'mesh_vpn', 'limit_egress')))
if limit_egress == nil then
limit_egress = site.mesh_vpn.bandwidth_limit.egress()
end
uci:section('gluon', 'mesh_vpn', 'mesh_vpn', {
enabled = enabled,
limit_enabled = limit_enabled,
limit_ingress = limit_ingress,
limit_egress = limit_egress,
})
uci:save('gluon')
end end
uci:save('tunneldigger')
os.execute('exec /lib/gluon/mesh-vpn/update-config')

View File

@ -0,0 +1,13 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=gluon-scheduled-domain-switch
PKG_VERSION:=1
include ../gluon.mk
define Package/gluon-scheduled-domain-switch
TITLE:=Allows scheduled migrations between domains
DEPENDS:=+gluon-core @GLUON_MULTIDOMAIN
endef
$(eval $(call BuildPackageGluon,gluon-scheduled-domain-switch))

View File

@ -0,0 +1,6 @@
if need_table(in_domain({'domain_switch'}), check_domain_switch, false) then
need_domain_name(in_domain({'domain_switch', 'target_domain'}))
need_number(in_domain({'domain_switch', 'switch_after_offline_mins'}))
need_number(in_domain({'domain_switch', 'switch_time'}))
need_string_array_match(in_domain({'domain_switch', 'connection_check_targets'}), '^[%x:]+$')
end

View File

@ -0,0 +1,20 @@
#!/usr/bin/lua
local json = require 'jsonc'
local site = require 'gluon.site'
local unistd = require 'posix.unistd'
local cronfile = "/usr/lib/micron.d/gluon-scheduled-domain-switch"
-- Check if domain switch is scheduled
if site.domain_switch() == nil then
-- In case no domain switch is scheduled, remove cronfile
os.remove(cronfile)
os.exit(0)
end
-- Only in case domain switch is scheduled
local f = io.open(cronfile, "w")
f:write("* * * * * /usr/bin/gluon-check-connection\n")
f:write("*/5 * * * * /usr/bin/gluon-switch-domain\n")
f:close()

View File

@ -0,0 +1,36 @@
#!/usr/bin/lua
local unistd = require 'posix.unistd'
local util = require 'gluon.util'
local site = require 'gluon.site'
local offline_flag_file = "/tmp/gluon_offline"
local is_offline = true
-- Check if domain-switch is scheduled
if site.domain_switch() == nil then
-- Switch not applicable for current domain
os.exit(0)
end
-- Check reachability of pre-defined targets
for _, ip in ipairs(site.domain_switch.connection_check_targets()) do
local exit_code = os.execute("ping -c 1 -w 10 " .. ip)
if exit_code == 0 then
is_offline = false
break
end
end
if is_offline then
-- Check if we were previously offline
if unistd.access(offline_flag_file) then
os.exit(0)
end
-- Create offline flag
local f = io.open(offline_flag_file, "w")
f:write(tostring(util.get_uptime()))
f:close()
else
os.remove(offline_flag_file)
end

View File

@ -0,0 +1,67 @@
#!/usr/bin/lua
local uci = require('simple-uci').cursor()
local unistd = require 'posix.unistd'
local util = require 'gluon.util'
local site = require 'gluon.site'
-- Returns true if node was offline long enough to perform domain switch
function switch_after_min_reached()
if not unistd.access("/tmp/gluon_offline") then
return false
end
local switch_after_sec = site.domain_switch.switch_after_offline_mins() * 60
local current_uptime = util.get_uptime()
if current_uptime == nil then
return false
end
local f = util.readfile("/tmp/gluon_offline")
if f == nil then
return false
end
local offline_since = tonumber(f)
local offline_time_sec = current_uptime - offline_since
if offline_time_sec > switch_after_sec then
return true
end
return false
end
-- Returns true in case switch time has passed
function switch_time_passed()
local current_time = os.time()
local switch_time = site.domain_switch.switch_time()
return switch_time < current_time
end
if site.domain_switch() == nil then
-- Switch not applicable for current domain
print("No domain switch defined for the current domain.")
os.exit(0)
end
local current_domain = uci:get("gluon", "core", "domain")
local target_domain = site.domain_switch.target_domain()
if target_domain == current_domain then
-- Current and target domain are equal
print("Domain '" .. target_domain .. "' equals current domain.")
os.exit(1)
end
if not switch_after_min_reached() and not switch_time_passed() then
-- Neither switch-time passed nor switch_after_min reached
os.exit(0)
end
uci:set("gluon", "core", "domain", target_domain)
uci:commit("gluon")
os.execute("gluon-reconfigure")
os.execute("reboot")

View File

@ -49,9 +49,16 @@ define Build/Compile
$(foreach domain,$(patsubst $(GLUON_SITEDIR)/domains/%.conf,%,$(wildcard $(GLUON_SITEDIR)/domains/*.conf)), $(foreach domain,$(patsubst $(GLUON_SITEDIR)/domains/%.conf,%,$(wildcard $(GLUON_SITEDIR)/domains/*.conf)),
[ ! -e '$(PKG_BUILD_DIR)/domains/$(domain).json' ] [ ! -e '$(PKG_BUILD_DIR)/domains/$(domain).json' ]
$(call GenerateJSON,domains/$(domain)) $(call GenerateJSON,domains/$(domain))
lua ../../scripts/domain_aliases.lua '$(PKG_BUILD_DIR)/domains/$(domain).json' | while read alias; do \ @lua ../../scripts/domain_aliases.lua '$(PKG_BUILD_DIR)/domains/$(domain).json' | while read alias; do \
[ "$$$${alias}" != '$(domain)' ] || continue; \ [ "$$$${alias}" != '$(domain)' ] || continue; \
ln -s '$(domain).json' $(PKG_BUILD_DIR)/domains/$$$${alias}.json || exit 1; \ link="$(PKG_BUILD_DIR)/domains/$$$${alias}.json"; \
if ! ln -s '$(domain).json' "$$$$link"; then \
other="$$$$(basename $$$$(readlink -f "$$$$link") .json)"; \
if [ "$$$$other" ]; then \
echo >&2 "Failed to alias domain '"'$(domain)'"' as '$$$$alias', name already taken by domain '$$$$other'."; \
fi; \
exit 1; \
fi; \
done done
) )
endif endif

File diff suppressed because one or more lines are too long

View File

@ -10,18 +10,18 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
msgid "Node role"
msgstr "Verwendungszweck"
msgid "Role"
msgstr "Rolle"
msgid "" msgid ""
"If this node has a special role within the mesh network you can specify this " "If this node has a special role within the mesh network you can specify this "
"role here. Please find out about the available roles and their impact first. " "role here. Please find out about the available roles and their impact first. "
"Only change the role if you know what you are doing." "Only change the role if you know what you are doing."
msgstr "" msgstr ""
"Wenn dein Knoten eine besondere Rolle im Mesh-Netzwerk einnimmt, " "Wenn dein Knoten eine besondere Rolle im Mesh-Netzwerk einnimmt, kannst du "
"kannst du diese hier angeben. Bringe bitte zuvor in Erfahrung, welche " "diese hier angeben. Bringe bitte zuvor in Erfahrung, welche Bedeutung die "
"Bedeutung die zur Verfügung stehenden Rollen haben. " "zur Verfügung stehenden Rollen haben. Setze die Rolle nur, wenn du weißt, "
"Setze die Rolle nur, wenn du weißt, was du tust." "was du tust."
msgid "Node role"
msgstr "Verwendungszweck"
msgid "Role"
msgstr "Rolle"

View File

@ -10,18 +10,18 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
msgid "Node role"
msgstr "Rôle du nœud"
msgid "Role"
msgstr "Rôle"
msgid "" msgid ""
"If this node has a special role within the mesh network you can specify this " "If this node has a special role within the mesh network you can specify this "
"role here. Please find out about the available roles and their impact first. " "role here. Please find out about the available roles and their impact first. "
"Only change the role if you know what you are doing." "Only change the role if you know what you are doing."
msgstr "" msgstr ""
"Si votre nœud a un rôle spécial dans le réseau MESH, vous pouvez " "Si votre nœud a un rôle spécial dans le réseau MESH, vous pouvez spécifier "
"spécifier ce rôle ici. Avant de changer, informez vous sur les rôles " "ce rôle ici. Avant de changer, informez vous sur les rôles disponibles et "
"disponibles et sur leur impacts. Changez de rôle uniquement si vous " "sur leur impacts. Changez de rôle uniquement si vous comprenez ce que vous "
"comprenez ce que vous faites." "faites."
msgid "Node role"
msgstr "Rôle du nœud"
msgid "Role"
msgstr "Rôle"

View File

@ -1,14 +1,14 @@
msgid "" msgid ""
msgstr "Content-Type: text/plain; charset=UTF-8" msgstr "Content-Type: text/plain; charset=UTF-8"
msgid ""
"If this node has a special role within the mesh network you can specify this "
"role here. Please find out about the available roles and their impact first. "
"Only change the role if you know what you are doing."
msgstr ""
msgid "Node role" msgid "Node role"
msgstr "" msgstr ""
msgid "Role" msgid "Role"
msgstr "" msgstr ""
msgid ""
"If this node has a special role within the mesh network you can specify this role here. "
"Please find out about the available roles and their impact first. "
"Only change the role if you know what you are doing."
msgstr ""

View File

@ -1,5 +1,6 @@
local f, s, o local f, s, o
local site = require 'gluon.site' local site = require 'gluon.site'
local site_i18n = i18n 'gluon-site'
local uci = require("simple-uci").cursor() local uci = require("simple-uci").cursor()
local config = 'gluon-node-info' local config = 'gluon-node-info'
@ -9,7 +10,7 @@ local role = uci:get(config, uci:get_first(config, "system"), "role")
f = Form(translate("Node role")) f = Form(translate("Node role"))
s = f:section(Section, nil, translate( s = f:section(Section, nil, translate(
"If this node has a special role within the freifunk network you can specify this role here. " "If this node has a special role within the mesh network you can specify this role here. "
.. "Please find out about the available roles and their impact first. " .. "Please find out about the available roles and their impact first. "
.. "Only change the role if you know what you are doing." .. "Only change the role if you know what you are doing."
)) ))
@ -17,7 +18,7 @@ s = f:section(Section, nil, translate(
o = s:option(ListValue, "role", translate("Role")) o = s:option(ListValue, "role", translate("Role"))
o.default = role o.default = role
for _, role in ipairs(site.roles.list()) do for _, role in ipairs(site.roles.list()) do
o:value(role, translate('gluon-web-node-role:role:' .. role)) o:value(role, site_i18n.translate('gluon-web-node-role:role:' .. role))
end end
function o:write(data) function o:write(data)

View File

@ -17,7 +17,7 @@ msgid "Not Found"
msgstr "Nicht Gefunden" msgstr "Nicht Gefunden"
msgid "Sorry, the object you requested was not found." msgid "Sorry, the object you requested was not found."
msgstr "Entschuldigung, das anfgeforderte Objekt wurde nicht gefunden." msgstr "Entschuldigung, das angeforderte Objekt wurde nicht gefunden."
msgid "Sorry, the server encountered an unexpected error." msgid "Sorry, the server encountered an unexpected error."
msgstr "" msgstr ""

View File

@ -103,13 +103,13 @@ end
-- Content-Type. Stores all extracted data associated with its parameter name -- Content-Type. Stores all extracted data associated with its parameter name
-- in the params table withing the given message object. Multiple parameter -- in the params table withing the given message object. Multiple parameter
-- values are stored as tables, ordinary ones as strings. -- values are stored as tables, ordinary ones as strings.
-- If an optional file callback function is given then it is feeded with the -- If an optional file callback function is given then it is fed with the
-- file contents chunk by chunk and only the extracted file name is stored -- file contents chunk by chunk and only the extracted file name is stored
-- within the params table. The callback function will be called subsequently -- within the params table. The callback function will be called subsequently
-- with three arguments: -- with three arguments:
-- o Table containing decoded (name, file) and raw (headers) mime header data -- o Table containing decoded (name, file) and raw (headers) mime header data
-- o String value containing a chunk of the file data -- o String value containing a chunk of the file data
-- o Boolean which indicates wheather the current chunk is the last one (eof) -- o Boolean which indicates whether the current chunk is the last one (eof)
function mimedecode_message_body(src, msg, filecb) function mimedecode_message_body(src, msg, filecb)
if msg and msg.env.CONTENT_TYPE then if msg and msg.env.CONTENT_TYPE then

View File

@ -58,7 +58,7 @@ return function(config, env)
-- Now finally render the thing -- Now finally render the thing
local stat, err = pcall(template) local stat, err = pcall(template)
assert(stat, "Failed to execute template '" .. name .. "'.\n" .. assert(stat, "Failed to execute template '" .. name .. "'.\n" ..
"A runtime error occured: " .. tostring(err or "(nil)")) "A runtime error occurred: " .. tostring(err or "(nil)"))
end end
--- Render a certain template. --- Render a certain template.

View File

@ -235,7 +235,7 @@ static size_t validate_utf8(const unsigned char **s, size_t l, struct template_b
break; break;
} }
/* advance beyound the last found valid continuation char */ /* advance beyond the last found valid continuation char */
o = v; o = v;
ptr += v; ptr += v;
} }

View File

@ -182,10 +182,10 @@ index 0000000000000000000000000000000000000000..b38b9977bca192eafe9a0d9b8c36a120
+ +
diff --git a/target/linux/generic/backport-4.9/095-0003-vxlan-fix-snooping-for-link-local-IPv6-addresses.patch b/target/linux/generic/backport-4.9/095-0003-vxlan-fix-snooping-for-link-local-IPv6-addresses.patch diff --git a/target/linux/generic/backport-4.9/095-0003-vxlan-fix-snooping-for-link-local-IPv6-addresses.patch b/target/linux/generic/backport-4.9/095-0003-vxlan-fix-snooping-for-link-local-IPv6-addresses.patch
new file mode 100644 new file mode 100644
index 0000000000000000000000000000000000000000..dcfd1ce7c2f015354d21a65f12f6ebd00331b629 index 0000000000000000000000000000000000000000..89523ac027b227a9f84b1130db06a7fc67ff68ce
--- /dev/null --- /dev/null
+++ b/target/linux/generic/backport-4.9/095-0003-vxlan-fix-snooping-for-link-local-IPv6-addresses.patch +++ b/target/linux/generic/backport-4.9/095-0003-vxlan-fix-snooping-for-link-local-IPv6-addresses.patch
@@ -0,0 +1,93 @@ @@ -0,0 +1,88 @@
+From 010b2b541d958e12d78ba1c79734c700f169610b Mon Sep 17 00:00:00 2001 +From 010b2b541d958e12d78ba1c79734c700f169610b Mon Sep 17 00:00:00 2001
+Message-Id: <010b2b541d958e12d78ba1c79734c700f169610b.1515533863.git.mschiffer@universe-factory.net> +Message-Id: <010b2b541d958e12d78ba1c79734c700f169610b.1515533863.git.mschiffer@universe-factory.net>
+In-Reply-To: <f45ba82cd83d27b5d44d3dc417e0e480ba0d3703.1515533863.git.mschiffer@universe-factory.net> +In-Reply-To: <f45ba82cd83d27b5d44d3dc417e0e480ba0d3703.1515533863.git.mschiffer@universe-factory.net>
@ -209,11 +209,9 @@ index 0000000000000000000000000000000000000000..dcfd1ce7c2f015354d21a65f12f6ebd0
+ drivers/net/vxlan.c | 20 +++++++++++++++----- + drivers/net/vxlan.c | 20 +++++++++++++++-----
+ 1 file changed, 15 insertions(+), 5 deletions(-) + 1 file changed, 15 insertions(+), 5 deletions(-)
+ +
+diff --git a/drivers/net/vxlan.c b/drivers/net/vxlan.c
+index 863d9528b900..c28c6f34b3b3 100644
+--- a/drivers/net/vxlan.c +--- a/drivers/net/vxlan.c
++++ b/drivers/net/vxlan.c ++++ b/drivers/net/vxlan.c
+@@ -917,16 +917,25 @@ static int vxlan_fdb_dump(struct sk_buff *skb, struct netlink_callback *cb, +@@ -917,16 +917,25 @@ out:
+ * Return true if packet is bogus and should be dropped. + * Return true if packet is bogus and should be dropped.
+ */ + */
+ static bool vxlan_snoop(struct net_device *dev, + static bool vxlan_snoop(struct net_device *dev,
@ -241,7 +239,7 @@ index 0000000000000000000000000000000000000000..dcfd1ce7c2f015354d21a65f12f6ebd0
+ return false; + return false;
+ +
+ /* Don't migrate static entries, drop packets */ + /* Don't migrate static entries, drop packets */
+@@ -952,7 +961,7 @@ static bool vxlan_snoop(struct net_device *dev, +@@ -952,7 +961,7 @@ static bool vxlan_snoop(struct net_devic
+ NLM_F_EXCL|NLM_F_CREATE, + NLM_F_EXCL|NLM_F_CREATE,
+ vxlan->cfg.dst_port, + vxlan->cfg.dst_port,
+ vxlan->default_dst.remote_vni, + vxlan->default_dst.remote_vni,
@ -250,7 +248,7 @@ index 0000000000000000000000000000000000000000..dcfd1ce7c2f015354d21a65f12f6ebd0
+ spin_unlock(&vxlan->hash_lock); + spin_unlock(&vxlan->hash_lock);
+ } + }
+ +
+@@ -1223,6 +1232,7 @@ static bool vxlan_set_mac(struct vxlan_dev *vxlan, +@@ -1223,6 +1232,7 @@ static bool vxlan_set_mac(struct vxlan_d
+ struct sk_buff *skb) + struct sk_buff *skb)
+ { + {
+ union vxlan_addr saddr; + union vxlan_addr saddr;
@ -258,7 +256,7 @@ index 0000000000000000000000000000000000000000..dcfd1ce7c2f015354d21a65f12f6ebd0
+ +
+ skb_reset_mac_header(skb); + skb_reset_mac_header(skb);
+ skb->protocol = eth_type_trans(skb, vxlan->dev); + skb->protocol = eth_type_trans(skb, vxlan->dev);
+@@ -1244,7 +1254,7 @@ static bool vxlan_set_mac(struct vxlan_dev *vxlan, +@@ -1244,7 +1254,7 @@ static bool vxlan_set_mac(struct vxlan_d
+ } + }
+ +
+ if ((vxlan->flags & VXLAN_F_LEARN) && + if ((vxlan->flags & VXLAN_F_LEARN) &&
@ -267,18 +265,15 @@ index 0000000000000000000000000000000000000000..dcfd1ce7c2f015354d21a65f12f6ebd0
+ return false; + return false;
+ +
+ return true; + return true;
+@@ -1932,7 +1942,7 @@ static void vxlan_encap_bypass(struct sk_buff *skb, struct vxlan_dev *src_vxlan, +@@ -1939,7 +1949,7 @@ static void vxlan_encap_bypass(struct sk
+ } + }
+ +
+ if (dst_vxlan->flags & VXLAN_F_LEARN) + if (dst_vxlan->flags & VXLAN_F_LEARN)
+- vxlan_snoop(skb->dev, &loopback, eth_hdr(skb)->h_source); +- vxlan_snoop(dev, &loopback, eth_hdr(skb)->h_source);
++ vxlan_snoop(skb->dev, &loopback, eth_hdr(skb)->h_source, 0); ++ vxlan_snoop(dev, &loopback, eth_hdr(skb)->h_source, 0);
+ +
+ u64_stats_update_begin(&tx_stats->syncp); + u64_stats_update_begin(&tx_stats->syncp);
+ tx_stats->tx_packets++; + tx_stats->tx_packets++;
+--
+2.15.1
+
diff --git a/target/linux/generic/backport-4.9/095-0004-vxlan-allow-multiple-VXLANs-with-same-VNI-for-IPv6-l.patch b/target/linux/generic/backport-4.9/095-0004-vxlan-allow-multiple-VXLANs-with-same-VNI-for-IPv6-l.patch diff --git a/target/linux/generic/backport-4.9/095-0004-vxlan-allow-multiple-VXLANs-with-same-VNI-for-IPv6-l.patch b/target/linux/generic/backport-4.9/095-0004-vxlan-allow-multiple-VXLANs-with-same-VNI-for-IPv6-l.patch
new file mode 100644 new file mode 100644
index 0000000000000000000000000000000000000000..18ae230a3b04d2b57184109fa14f9533f0fb7192 index 0000000000000000000000000000000000000000..18ae230a3b04d2b57184109fa14f9533f0fb7192

View File

@ -891,7 +891,7 @@ index 0000000000000000000000000000000000000000..d7f8c5955caee15d373a342b75c8c194
+ status = "okay"; + status = "okay";
+}; +};
diff --git a/target/linux/ipq40xx/image/Makefile b/target/linux/ipq40xx/image/Makefile diff --git a/target/linux/ipq40xx/image/Makefile b/target/linux/ipq40xx/image/Makefile
index 38600cf979242142aa08c30163e63d911f0ddb63..d1ee1004fddce6cf6007259229d8eee5b5b2ea3b 100644 index 90d9dfeff0c228765ac24247ce72dec497dc63f0..cb79baccd21b3fa7f35df543bfca1a7d6ba8f83f 100644
--- a/target/linux/ipq40xx/image/Makefile --- a/target/linux/ipq40xx/image/Makefile
+++ b/target/linux/ipq40xx/image/Makefile +++ b/target/linux/ipq40xx/image/Makefile
@@ -1,6 +1,8 @@ @@ -1,6 +1,8 @@

View File

@ -267,7 +267,7 @@ index 640557532c8a02f37bc6f84ade8cb34e7172162d..4568b656219419e9ca1156c6716bd212
# We cannot currently build a factory image. It is the sysupgrade image # We cannot currently build a factory image. It is the sysupgrade image
# prefixed with a header (which is actually written into the MTD device). # prefixed with a header (which is actually written into the MTD device).
diff --git a/target/linux/ipq40xx/image/Makefile b/target/linux/ipq40xx/image/Makefile diff --git a/target/linux/ipq40xx/image/Makefile b/target/linux/ipq40xx/image/Makefile
index d1ee1004fddce6cf6007259229d8eee5b5b2ea3b..5cd11cae237b4658906652967d8120bd0dc080a8 100644 index cb79baccd21b3fa7f35df543bfca1a7d6ba8f83f..a0f81f7d631b6c53a5612dee172e752a9fecd06d 100644
--- a/target/linux/ipq40xx/image/Makefile --- a/target/linux/ipq40xx/image/Makefile
+++ b/target/linux/ipq40xx/image/Makefile +++ b/target/linux/ipq40xx/image/Makefile
@@ -221,7 +221,7 @@ define Device/zyxel_nbg6617 @@ -221,7 +221,7 @@ define Device/zyxel_nbg6617

View File

@ -1,23 +0,0 @@
From: Andreas Ziegler <dev@andreas-ziegler.de>
Date: Thu, 27 Dec 2018 15:02:41 +0100
Subject: ramips: mt7621: fix 5GHz WiFi LED on ZBT WG3526
This fixes the 5GHz WiFi LED which was previously not working.
Signed-off-by: Andreas Ziegler <dev@andreas-ziegler.de>
diff --git a/target/linux/ramips/dts/ZBT-WG3526.dtsi b/target/linux/ramips/dts/ZBT-WG3526.dtsi
index 104a51f8de7110c0f65f760af70033853f3da745..e42ec5e33de7fb69a9c668406f876f6443d2912b 100644
--- a/target/linux/ramips/dts/ZBT-WG3526.dtsi
+++ b/target/linux/ramips/dts/ZBT-WG3526.dtsi
@@ -101,6 +101,10 @@
mediatek,mtd-eeprom = <&factory 0x8000>;
ieee80211-freq-limit = <5000000 6000000>;
};
+
+ led {
+ led-sources = <2>;
+ };
};
};

View File

@ -0,0 +1,26 @@
From: David Bauer <mail@david-bauer.net>
Date: Wed, 28 Nov 2018 23:56:31 +0100
Subject: tools: mktplinkfw2: add split-uboot layout
This commit adds the split-uboot partition layout used by the
Archer C50 v4 to mktplinkfw2.
Signed-off-by: David Bauer <mail@david-bauer.net>
diff --git a/tools/firmware-utils/src/mktplinkfw2.c b/tools/firmware-utils/src/mktplinkfw2.c
index dead49e7af8839bac5d1dee7445cf8921208c970..35db848bbab9f8315526dfa24ed351ad58878dde 100644
--- a/tools/firmware-utils/src/mktplinkfw2.c
+++ b/tools/firmware-utils/src/mktplinkfw2.c
@@ -146,6 +146,12 @@ static struct flash_layout layouts[] = {
.kernel_la = 0x80000000,
.kernel_ep = 0x80000000,
.rootfs_ofs = 0x140000,
+ }, {
+ .id = "8MSUmtk", /* Split U-Boot OS */
+ .fw_max_len = 0x770000,
+ .kernel_la = 0x80000000,
+ .kernel_ep = 0x80000000,
+ .rootfs_ofs = 0x140000,
}, {
.id = "8MLmtk",
.fw_max_len = 0x7b0000,

View File

@ -0,0 +1,370 @@
From: David Bauer <mail@david-bauer.net>
Date: Sun, 3 Feb 2019 00:23:18 +0100
Subject: ramips: add support for Archer C50 v4
This adds support for the TP-Link Archer C50 v4.
It uses the same hardware as the v3 variant, sharing the same FCC-ID.
CPU: MediaTek MT7628 (580MHz)
RAM: 64M DDR2
FLASH: 8M SPI
WiFi: 2.4GHz 2x2 MT7628 b/g/n integrated
WiFI: 5GHz 2x2 MT7612 a/n/ac
ETH: 1x WAN 4x LAN
LED: Power, WiFi2, WiFi5, LAN, WAN, WPS
BTN: WPS/WiFi, RESET
UART: Near ETH ports, 115200 8n1, TP-Link pinout
Create Factory image
--------------------
As all installation methods require a U-Boot to be integrated into the
Image (and we do not ship one with the image) we are not able to create
an image in the OpenWRT build-process.
Download a TP-Link image from their Wesite and a OpenWRT sysupgrade
image for the device and build yourself a factory image like following:
TP-Link image: tpl.bin
OpenWRT sysupgrade image: owrt.bin
> dd if=tpl.bin of=boot.bin bs=131584 count=1
> cat owrt.bin >> boot.bin
Installing via Web-UI
---------------------
Upload the boot.bin via TP-Links firmware upgrade tool in the
web-interface.
Installing via Recovery
-----------------------
Activate Web-Recovery by beginning the upgrade Process with a
Firmware-Image from TP-Link. After starting the Firmware Upgrade,
wait ~3 seconds (When update status is switching to 0%), then
disconnect the power supply from the device. Upgrade flag (which
activates Web-Recovery) is written before the OS-image is touched and
removed after write is succesfull, so this procedure should be safe.
Plug the power back in. It will come up in Recovery-Mode on 192.168.0.1.
When active, all LEDs but the WPS LED are off.
Remeber to assign yourself a static IP-address as DHCP is not active in
this mode.
The boot.bin can now be uploaded and flashed using the web-recovery.
Installing via TFTP
-------------------
Prepare an image like following (Filenames from factory image steps
apply here)
> dd if=/dev/zero of=tp_recovery.bin bs=196608 count=1
> dd if=tpl.bin of=tmp.bin bs=131584 count=1
> dd if=tmp.bin of=boot.bin bs=512 skip=1
> cat boot.bin >> tp_recovery.bin
> cat owrt.bin >> tp_recovery.bin
Place tp_recovery.bin in root directory of TFTP server and listen on
192.168.0.66/24.
Connect router LAN ports with your computer and power up the router
while pressing the reset button. The router will download the image via
tftp and after ~1 Minute reboot into OpenWRT.
U-Boot CLI
----------
U-Boot CLI can be activated by holding down '4' on bootup.
Dual U-Boot
-----------
This is the first TP-Link MediaTek device to feature a split-uboot
design. The first (factory-uboot) provides recovery via TFTP and HTTP,
jumping straight into the second (firmware-uboot) if no recovery needs
to be performed. The firmware-uboot unpacks and executed the kernel.
Web-Recovery
------------
TP-Link integrated a new Web-Recovery like the one on the Archer C7v4 /
TL-WR1043v5. Stock-firmware sets a flag in the "romfile" partition
before beginning to write and removes it afterwards. If the router boots
with this flag set, bootloader will automatically start Web-recovery and
listens on 192.168.0.1. This way, the vendor-firmware or an OpenWRT
factory image can be written.
It is important to note that Web-Recovery is only based on this flag. It
can't detect e.g. a crashing kernel or other means. Once activated it
won't boot the OS before a recovery action (either via TFTP or HTTP) is
performed. This recovery-mode is indicated by an illuminated WPS-LED on
boot.
Signed-off-by: David Bauer <mail@david-bauer.net>
diff --git a/target/linux/ramips/base-files/etc/board.d/01_leds b/target/linux/ramips/base-files/etc/board.d/01_leds
index 6057275978591192e3b7799a8e6d97761c3e23a5..19386b9e139a25fd1ac29cd9a66b738b5b092cdf 100755
--- a/target/linux/ramips/base-files/etc/board.d/01_leds
+++ b/target/linux/ramips/base-files/etc/board.d/01_leds
@@ -410,7 +410,8 @@ tplink,c20-v4)
ucidef_set_led_switch "wan" "wan" "$boardname:green:wan" "switch0" "0x01"
ucidef_set_led_netdev "wlan2g" "wlan2g" "$boardname:green:wlan2g" "wlan0"
;;
-tplink,c50-v3)
+tplink,c50-v3|\
+tplink,c50-v4)
ucidef_set_led_switch "lan" "lan" "$boardname:green:lan" "switch0" "0x1e"
ucidef_set_led_switch "wan" "wan" "$boardname:green:wan" "switch0" "0x01"
ucidef_set_led_wlan "wlan2g" "wlan2g" "$boardname:green:wlan2g" "phy0tpt"
diff --git a/target/linux/ramips/base-files/etc/board.d/02_network b/target/linux/ramips/base-files/etc/board.d/02_network
index ebf40ad1fa874d324b43c8f0613bca53a19ab2d0..1c6cc6b0af745b43b81bbfffc9b5462c1b88defc 100755
--- a/target/linux/ramips/base-files/etc/board.d/02_network
+++ b/target/linux/ramips/base-files/etc/board.d/02_network
@@ -205,6 +205,7 @@ ramips_setup_interfaces()
rt-n14u|\
tplink,c20-v4|\
tplink,c50-v3|\
+ tplink,c50-v4|\
tplink,tl-mr3420-v5|\
tplink,tl-wr842n-v5|\
tl-wr840n-v4|\
diff --git a/target/linux/ramips/base-files/etc/diag.sh b/target/linux/ramips/base-files/etc/diag.sh
index 2f51add331fef4693e997433a4ab0e665da80e02..6d021b6def2f1fe7b71a67f36749c440f3bad1d4 100644
--- a/target/linux/ramips/base-files/etc/diag.sh
+++ b/target/linux/ramips/base-files/etc/diag.sh
@@ -42,6 +42,7 @@ get_status_led() {
r6220|\
tplink,c20-v4|\
tplink,c50-v3|\
+ tplink,c50-v4|\
tplink,tl-mr3420-v5|\
tplink,tl-wr842n-v5|\
tplink,tl-wr902ac-v3|\
diff --git a/target/linux/ramips/base-files/lib/upgrade/platform.sh b/target/linux/ramips/base-files/lib/upgrade/platform.sh
index ffdc5e73e0ede286c10396810954a230c8ea32fc..8055853508fc850a1826166c7e0cbdf443df27cb 100755
--- a/target/linux/ramips/base-files/lib/upgrade/platform.sh
+++ b/target/linux/ramips/base-files/lib/upgrade/platform.sh
@@ -256,6 +256,7 @@ platform_check_image() {
tplink,c20-v1|\
tplink,c20-v4|\
tplink,c50-v3|\
+ tplink,c50-v4|\
tplink,tl-mr3420-v5|\
tplink,tl-wr842n-v5|\
tplink,tl-wr902ac-v3|\
diff --git a/target/linux/ramips/dts/ArcherC50V4.dts b/target/linux/ramips/dts/ArcherC50V4.dts
new file mode 100644
index 0000000000000000000000000000000000000000..bb4a65436fa435e5636aca3bf326b5a3ca61f7e3
--- /dev/null
+++ b/target/linux/ramips/dts/ArcherC50V4.dts
@@ -0,0 +1,93 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/dts-v1/;
+
+#include "TPLINK-8M-SPLIT-UBOOT.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+
+/ {
+ compatible = "tplink,c50-v4", "mediatek,mt7628an-soc";
+ model = "TP-Link Archer C50 v4";
+
+ keys {
+ compatible = "gpio-keys-polled";
+ poll-interval = <20>;
+
+ reset {
+ label = "reset";
+ gpios = <&gpio1 6 GPIO_ACTIVE_LOW>;
+ linux,code = <KEY_RESTART>;
+ };
+
+ rfkill {
+ label = "rfkill";
+ gpios = <&gpio0 5 GPIO_ACTIVE_LOW>;
+ linux,code = <KEY_RFKILL>;
+ };
+ };
+
+ leds {
+ compatible = "gpio-leds";
+
+ led_power: power {
+ label = "c50-v4:green:power";
+ gpios = <&gpio0 11 GPIO_ACTIVE_LOW>;
+ };
+
+ wlan2 {
+ label = "c50-v4:green:wlan2g";
+ gpios = <&gpio1 12 GPIO_ACTIVE_LOW>;
+ };
+
+ wlan5 {
+ label = "c50-v4:green:wlan5g";
+ gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
+ };
+
+ lan {
+ label = "c50-v4:green:lan";
+ gpios = <&gpio1 9 GPIO_ACTIVE_LOW>;
+ };
+
+ wan {
+ label = "c50-v4:green:wan";
+ gpios = <&gpio1 7 GPIO_ACTIVE_LOW>;
+ };
+
+ wan_orange {
+ label = "c50-v4:orange:wan";
+ gpios = <&gpio1 8 GPIO_ACTIVE_LOW>;
+ };
+
+ wps {
+ label = "c50-v4:green:wps";
+ gpios = <&gpio1 11 GPIO_ACTIVE_LOW>;
+ };
+ };
+};
+
+&pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "i2c", "p0led_an", "p1led_an", "p2led_an",
+ "p3led_an", "p4led_an", "wdt", "wled_an";
+ ralink,function = "gpio";
+ };
+ };
+};
+
+&pcie {
+ status = "okay";
+
+ pcie-bridge {
+ mt76@0,0 {
+ reg = <0x0000 0 0 0 0>;
+ device_type = "pci";
+ mediatek,mtd-eeprom = <&radio 0x8000>;
+ ieee80211-freq-limit = <5000000 6000000>;
+ mtd-mac-address = <&rom 0xf100>;
+ mtd-mac-address-increment = <(-1)>;
+ };
+ };
+};
\ No newline at end of file
diff --git a/target/linux/ramips/dts/TPLINK-8M-SPLIT-UBOOT.dtsi b/target/linux/ramips/dts/TPLINK-8M-SPLIT-UBOOT.dtsi
new file mode 100644
index 0000000000000000000000000000000000000000..539f476dce6e1fe43769f3ed41ae94d5f6fbc2cc
--- /dev/null
+++ b/target/linux/ramips/dts/TPLINK-8M-SPLIT-UBOOT.dtsi
@@ -0,0 +1,90 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+#include "mt7628an.dtsi"
+
+/ {
+ chosen {
+ bootargs = "console=ttyS0,115200";
+ };
+
+ memory@0 {
+ device_type = "memory";
+ reg = <0x0 0x4000000>;
+ };
+};
+
+&spi0 {
+ status = "okay";
+
+ flash@0 {
+ compatible = "jedec,spi-nor";
+ reg = <0>;
+ spi-max-frequency = <10000000>;
+ m25p,chunked-io = <32>;
+
+ partitions {
+ compatible = "fixed-partitions";
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ partition@0 {
+ label = "factory-uboot";
+ reg = <0x0 0x30000>;
+ read-only;
+ };
+
+ partition@30000 {
+ label = "boot";
+ reg = <0x30000 0x20000>;
+ read-only;
+ };
+
+ partition@50000 {
+ compatible = "tplink,firmware";
+ label = "firmware";
+ reg = <0x50000 0x770000>;
+ };
+
+ partition@7c0000 {
+ label = "config";
+ reg = <0x7c0000 0x10000>;
+ read-only;
+ };
+
+ rom: partition@7d0000 {
+ label = "rom";
+ reg = <0x7d0000 0x10000>;
+ read-only;
+ };
+
+ partition@7e0000 {
+ label = "romfile";
+ reg = <0x7e0000 0x10000>;
+ };
+
+ radio: partition@7f0000 {
+ label = "radio";
+ reg = <0x7f0000 0x10000>;
+ read-only;
+ };
+ };
+ };
+};
+
+&ehci {
+ status = "disabled";
+};
+
+&ohci {
+ status = "disabled";
+};
+
+&wmac {
+ status = "okay";
+ mtd-mac-address = <&rom 0xf100>;
+ mediatek,mtd-eeprom = <&radio 0x0>;
+};
+
+&ethernet {
+ mtd-mac-address = <&rom 0xf100>;
+ mediatek,portmap = "llllw";
+};
diff --git a/target/linux/ramips/image/mt76x8.mk b/target/linux/ramips/image/mt76x8.mk
index 21c5357a089fdd0675afa6f131ff5b34a9a8f54d..34bd662f3a9490bdb0fd125af5ffa8a0f77c5f16 100644
--- a/target/linux/ramips/image/mt76x8.mk
+++ b/target/linux/ramips/image/mt76x8.mk
@@ -182,6 +182,20 @@ define Device/tplink_c50-v3
endef
TARGET_DEVICES += tplink_c50-v3
+define Device/tplink_c50-v4
+ $(Device/tplink)
+ DTS := ArcherC50V4
+ IMAGE_SIZE := 7616k
+ DEVICE_TITLE := TP-Link ArcherC50 v4
+ TPLINK_FLASHLAYOUT := 8MSUmtk
+ TPLINK_HWID := 0x001D589B
+ TPLINK_HWREV := 0x93
+ TPLINK_HWREVADD := 0x2
+ TPLINK_HVERSION := 3
+ IMAGES := sysupgrade.bin
+endef
+TARGET_DEVICES += tplink_c50-v4
+
define Device/tplink_tl-mr3420-v5
$(Device/tplink)
DTS := TL-MR3420V5

View File

@ -0,0 +1,420 @@
From: Sven Eckelmann <sven@narfation.org>
Date: Fri, 8 Feb 2019 21:20:20 +0100
Subject: mac80211: ath10k: support for multicast and management rate control
Drivers with software rate control can directly use the selected multicast
rate for multicast/broadcast frames and the minimal basic rate for
management frames. But drivers with offloaded rate control algorithms must
be informed about such upper layer decisions to configure the
hardware/firmware.
A new BSS_CHANGED_MCAST_RATE is introduced in mac80211 to automatically
inform all drivers. ath10k can detect this event and forward it via WMI to
the driver. The already existing BSS_CHANGED_BASIC_RATES can be used to
select the management rate.
Without the WMI commands, a low rate (not necessarily one from the basic
rates) is used for bcast/mcast/management frames. This means that the
/etc/config/wireless settings basic_rate and mcast_rate would have no
effect on the rates selected by this driver for the mentioned frames.
Signed-off-by: Sven Eckelmann <sven@narfation.org>
diff --git a/package/kernel/mac80211/patches/975-mac80211-notify-driver-for-change-in-multicast-rates.patch b/package/kernel/mac80211/patches/975-mac80211-notify-driver-for-change-in-multicast-rates.patch
new file mode 100644
index 0000000000000000000000000000000000000000..fb07fa23ecc0518d69eef1f5064328f5c5968360
--- /dev/null
+++ b/package/kernel/mac80211/patches/975-mac80211-notify-driver-for-change-in-multicast-rates.patch
@@ -0,0 +1,98 @@
+From: Pradeep Kumar Chitrapu <pradeepc@codeaurora.org>
+Date: Thu, 22 Mar 2018 12:18:03 -0700
+Subject: [PATCH] mac80211: notify driver for change in multicast rates
+
+With drivers implementing rate control in driver or firmware
+rate_control_send_low() may not get called, and thus the
+driver needs to know about changes in the multicast rate.
+
+Add and use a new BSS change flag for this.
+
+Signed-off-by: Pradeep Kumar Chitrapu <pradeepc@codeaurora.org>
+[rewrite commit message]
+Signed-off-by: Johannes Berg <johannes.berg@intel.com>
+
+Origin: backport, https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=dcbe73ca55a42712bfd0e9966cd2d5a48355ace3
+---
+ include/net/mac80211.h | 3 +++
+ net/mac80211/cfg.c | 2 ++
+ net/mac80211/ibss.c | 2 +-
+ net/mac80211/mesh.c | 3 ++-
+ net/mac80211/util.c | 3 ++-
+ 5 files changed, 10 insertions(+), 3 deletions(-)
+
+diff --git a/include/net/mac80211.h b/include/net/mac80211.h
+index 885690fa39c8d8f4a48f2fa25447646d3d0a7856..48cfee4e26bdf3c7b7dbaaeecd6520492fa375a9 100644
+--- a/include/net/mac80211.h
++++ b/include/net/mac80211.h
+@@ -301,6 +301,8 @@ struct ieee80211_vif_chanctx_switch {
+ * @BSS_CHANGED_MU_GROUPS: VHT MU-MIMO group id or user position changed
+ * @BSS_CHANGED_KEEP_ALIVE: keep alive options (idle period or protected
+ * keep alive) changed.
++ * @BSS_CHANGED_MCAST_RATE: Multicast Rate setting changed for this interface
++ *
+ */
+ enum ieee80211_bss_change {
+ BSS_CHANGED_ASSOC = 1<<0,
+@@ -328,6 +330,7 @@ enum ieee80211_bss_change {
+ BSS_CHANGED_OCB = 1<<22,
+ BSS_CHANGED_MU_GROUPS = 1<<23,
+ BSS_CHANGED_KEEP_ALIVE = 1<<24,
++ BSS_CHANGED_MCAST_RATE = 1<<25,
+
+ /* when adding here, make sure to change ieee80211_reconfig */
+ };
+diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c
+index fb15d3b97cb214078f1533f880350fe280b57c69..0b1984b8e3ab4184b009b6423c73dd0b6959d777 100644
+--- a/net/mac80211/cfg.c
++++ b/net/mac80211/cfg.c
+@@ -2310,6 +2310,8 @@ static int ieee80211_set_mcast_rate(struct wiphy *wiphy, struct net_device *dev,
+ memcpy(sdata->vif.bss_conf.mcast_rate, rate,
+ sizeof(int) * NUM_NL80211_BANDS);
+
++ ieee80211_bss_info_change_notify(sdata, BSS_CHANGED_MCAST_RATE);
++
+ return 0;
+ }
+
+diff --git a/net/mac80211/ibss.c b/net/mac80211/ibss.c
+index e9c6aa3ed05b8ddb8cf03decce82c00e59b4c0a7..f4b0634b80dedecfc3c05998132bdb6dcd043ed1 100644
+--- a/net/mac80211/ibss.c
++++ b/net/mac80211/ibss.c
+@@ -1840,7 +1840,7 @@ int ieee80211_ibss_join(struct ieee80211_sub_if_data *sdata,
+ IEEE80211_HT_OP_MODE_PROTECTION_NONHT_MIXED
+ | IEEE80211_HT_PARAM_RIFS_MODE;
+
+- changed |= BSS_CHANGED_HT;
++ changed |= BSS_CHANGED_HT | BSS_CHANGED_MCAST_RATE;
+ ieee80211_bss_info_change_notify(sdata, changed);
+
+ sdata->smps_mode = IEEE80211_SMPS_OFF;
+diff --git a/net/mac80211/mesh.c b/net/mac80211/mesh.c
+index a550c707cd8a6130ef5756cedf2fa4738ae9a0e7..e9f5c2ae46a7bd83907d0b5ca1ceb0b8d6afd3fe 100644
+--- a/net/mac80211/mesh.c
++++ b/net/mac80211/mesh.c
+@@ -880,7 +880,8 @@ int ieee80211_start_mesh(struct ieee80211_sub_if_data *sdata)
+ BSS_CHANGED_BEACON_ENABLED |
+ BSS_CHANGED_HT |
+ BSS_CHANGED_BASIC_RATES |
+- BSS_CHANGED_BEACON_INT;
++ BSS_CHANGED_BEACON_INT |
++ BSS_CHANGED_MCAST_RATE;
+
+ local->fif_other_bss++;
+ /* mesh ifaces must set allmulti to forward mcast traffic */
+diff --git a/net/mac80211/util.c b/net/mac80211/util.c
+index 6aef6793d05236c19afe00a51f4ddc91bc060a39..6594df0c3e7afe90cf103bac89580e0ad71ed045 100644
+--- a/net/mac80211/util.c
++++ b/net/mac80211/util.c
+@@ -1971,7 +1971,8 @@ int ieee80211_reconfig(struct ieee80211_local *local)
+ BSS_CHANGED_CQM |
+ BSS_CHANGED_QOS |
+ BSS_CHANGED_IDLE |
+- BSS_CHANGED_TXPOWER;
++ BSS_CHANGED_TXPOWER |
++ BSS_CHANGED_MCAST_RATE;
+
+ if (sdata->vif.mu_mimo_owner)
+ changed |= BSS_CHANGED_MU_GROUPS;
diff --git a/package/kernel/mac80211/patches/976-ath10k-support-for-multicast-rate-control.patch b/package/kernel/mac80211/patches/976-ath10k-support-for-multicast-rate-control.patch
new file mode 100644
index 0000000000000000000000000000000000000000..94bc108fb2e1a99f716135d842e0959f8c7cb602
--- /dev/null
+++ b/package/kernel/mac80211/patches/976-ath10k-support-for-multicast-rate-control.patch
@@ -0,0 +1,112 @@
+From: Pradeep Kumar Chitrapu <pradeepc@codeaurora.org>
+Date: Wed, 25 Jul 2018 10:59:39 +0300
+Subject: [PATCH] ath10k: support for multicast rate control
+
+Issues a wmi command to firmware when multicast rate change is received with the
+new BSS_CHANGED_MCAST_RATE flag. Also fixes the incorrect fixed_rate setting
+for CCK rates which got introduced with addition of ath10k_rates_rev2 enum.
+
+Tested on QCA9984 with firmware ver 10.4-3.6-00104
+
+Signed-off-by: Pradeep Kumar Chitrapu <pradeepc@codeaurora.org>
+Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
+
+Origin: backport, https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=cd93b83ad927b2c7979e0add0343ace59328b461
+---
+ drivers/net/wireless/ath/ath10k/mac.c | 54 +++++++++++++++++++++++++--
+ 1 file changed, 50 insertions(+), 4 deletions(-)
+
+diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c
+index 5683f1a5330eedae677aad5bf2621a6232781346..1937526c8c18da85f7730429759391d47e12cf81 100644
+--- a/drivers/net/wireless/ath/ath10k/mac.c
++++ b/drivers/net/wireless/ath/ath10k/mac.c
+@@ -100,6 +100,8 @@ static struct ieee80211_rate ath10k_rates_rev2[] = {
+ #define ath10k_g_rates_rev2 (ath10k_rates_rev2 + 0)
+ #define ath10k_g_rates_rev2_size (ARRAY_SIZE(ath10k_rates_rev2))
+
++#define ath10k_wmi_legacy_rates ath10k_rates
++
+ static bool ath10k_mac_bitrate_is_cck(int bitrate)
+ {
+ switch (bitrate) {
+@@ -5389,8 +5391,12 @@ static void ath10k_bss_info_changed(struct ieee80211_hw *hw,
+ {
+ struct ath10k *ar = hw->priv;
+ struct ath10k_vif *arvif = (void *)vif->drv_priv;
+- int ret = 0;
++ struct cfg80211_chan_def def;
+ u32 vdev_param, pdev_param, slottime, preamble;
++ u16 bitrate, hw_value;
++ u8 rate;
++ int rateidx, ret = 0;
++ enum nl80211_band band;
+
+ mutex_lock(&ar->conf_mutex);
+
+@@ -5558,6 +5564,44 @@ static void ath10k_bss_info_changed(struct ieee80211_hw *hw,
+ arvif->vdev_id, ret);
+ }
+
++ if (changed & BSS_CHANGED_MCAST_RATE &&
++ !WARN_ON(ath10k_mac_vif_chan(arvif->vif, &def))) {
++ band = def.chan->band;
++ rateidx = vif->bss_conf.mcast_rate[band] - 1;
++
++ if (ar->phy_capability & WHAL_WLAN_11A_CAPABILITY)
++ rateidx += ATH10K_MAC_FIRST_OFDM_RATE_IDX;
++
++ bitrate = ath10k_wmi_legacy_rates[rateidx].bitrate;
++ hw_value = ath10k_wmi_legacy_rates[rateidx].hw_value;
++ if (ath10k_mac_bitrate_is_cck(bitrate))
++ preamble = WMI_RATE_PREAMBLE_CCK;
++ else
++ preamble = WMI_RATE_PREAMBLE_OFDM;
++
++ rate = ATH10K_HW_RATECODE(hw_value, 0, preamble);
++
++ ath10k_dbg(ar, ATH10K_DBG_MAC,
++ "mac vdev %d mcast_rate %x\n",
++ arvif->vdev_id, rate);
++
++ vdev_param = ar->wmi.vdev_param->mcast_data_rate;
++ ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id,
++ vdev_param, rate);
++ if (ret)
++ ath10k_warn(ar,
++ "failed to set mcast rate on vdev %i: %d\n",
++ arvif->vdev_id, ret);
++
++ vdev_param = ar->wmi.vdev_param->bcast_data_rate;
++ ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id,
++ vdev_param, rate);
++ if (ret)
++ ath10k_warn(ar,
++ "failed to set bcast rate on vdev %i: %d\n",
++ arvif->vdev_id, ret);
++ }
++
+ mutex_unlock(&ar->conf_mutex);
+ }
+
+@@ -6826,7 +6870,6 @@ ath10k_mac_bitrate_mask_get_single_rate(struct ath10k *ar,
+ const struct cfg80211_bitrate_mask *mask,
+ u8 *rate, u8 *nss)
+ {
+- struct ieee80211_supported_band *sband = &ar->mac.sbands[band];
+ int rate_idx;
+ int i;
+ u16 bitrate;
+@@ -6836,8 +6879,11 @@ ath10k_mac_bitrate_mask_get_single_rate(struct ath10k *ar,
+ if (hweight32(mask->control[band].legacy) == 1) {
+ rate_idx = ffs(mask->control[band].legacy) - 1;
+
+- hw_rate = sband->bitrates[rate_idx].hw_value;
+- bitrate = sband->bitrates[rate_idx].bitrate;
++ if (ar->phy_capability & WHAL_WLAN_11A_CAPABILITY)
++ rate_idx += ATH10K_MAC_FIRST_OFDM_RATE_IDX;
++
++ hw_rate = ath10k_wmi_legacy_rates[rate_idx].hw_value;
++ bitrate = ath10k_wmi_legacy_rates[rate_idx].bitrate;
+
+ if (ath10k_mac_bitrate_is_cck(bitrate))
+ preamble = WMI_RATE_PREAMBLE_CCK;
diff --git a/package/kernel/mac80211/patches/977-ath10k-add-support-for-configuring-management-packet.patch b/package/kernel/mac80211/patches/977-ath10k-add-support-for-configuring-management-packet.patch
new file mode 100644
index 0000000000000000000000000000000000000000..4b2aa5effdb19141178a5bb71eb9488ee7575b93
--- /dev/null
+++ b/package/kernel/mac80211/patches/977-ath10k-add-support-for-configuring-management-packet.patch
@@ -0,0 +1,94 @@
+From: Sriram R <srirrama@codeaurora.org>
+Date: Mon, 10 Sep 2018 11:09:40 +0530
+Subject: [PATCH] ath10k: add support for configuring management packet rate
+
+By default the firmware uses 1Mbps and 6Mbps rate for management packets
+in 2G and 5G bands respectively. But when the user selects different
+basic rates from the userspace, we need to send the management
+packets at the lowest basic rate selected by the user.
+
+This change makes use of WMI_VDEV_PARAM_MGMT_RATE param for configuring the
+management packets rate to the firmware.
+
+Chipsets Tested : QCA988X, QCA9887, QCA9984
+FW Tested : 10.2.4-1.0-41, 10.4-3.6.104
+
+Signed-off-by: Sriram R <srirrama@codeaurora.org>
+Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
+
+Origin: backport, https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=f279294e9ee22a8f306fdc8e4181cf555e6f0f70
+---
+ drivers/net/wireless/ath/ath10k/mac.c | 45 +++++++++++++++++++++++++--
+ 1 file changed, 43 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c
+index 1937526c8c18da85f7730429759391d47e12cf81..47e5992afcd7564743f513eb250b57381aba3233 100644
+--- a/drivers/net/wireless/ath/ath10k/mac.c
++++ b/drivers/net/wireless/ath/ath10k/mac.c
+@@ -155,6 +155,22 @@ u8 ath10k_mac_bitrate_to_idx(const struct ieee80211_supported_band *sband,
+ return 0;
+ }
+
++static int ath10k_mac_get_rate_hw_value(int bitrate)
++{
++ int i;
++ u8 hw_value_prefix = 0;
++
++ if (ath10k_mac_bitrate_is_cck(bitrate))
++ hw_value_prefix = WMI_RATE_PREAMBLE_CCK << 6;
++
++ for (i = 0; i < sizeof(ath10k_rates); i++) {
++ if (ath10k_rates[i].bitrate == bitrate)
++ return hw_value_prefix | ath10k_rates[i].hw_value;
++ }
++
++ return -EINVAL;
++}
++
+ static int ath10k_mac_get_max_vht_mcs_map(u16 mcs_map, int nss)
+ {
+ switch ((mcs_map >> (2 * nss)) & 0x3) {
+@@ -5394,9 +5410,10 @@ static void ath10k_bss_info_changed(struct ieee80211_hw *hw,
+ struct cfg80211_chan_def def;
+ u32 vdev_param, pdev_param, slottime, preamble;
+ u16 bitrate, hw_value;
+- u8 rate;
+- int rateidx, ret = 0;
++ u8 rate, basic_rate_idx;
++ int rateidx, ret = 0, hw_rate_code;
+ enum nl80211_band band;
++ const struct ieee80211_supported_band *sband;
+
+ mutex_lock(&ar->conf_mutex);
+
+@@ -5602,6 +5619,30 @@ static void ath10k_bss_info_changed(struct ieee80211_hw *hw,
+ arvif->vdev_id, ret);
+ }
+
++ if (changed & BSS_CHANGED_BASIC_RATES) {
++ if (WARN_ON(ath10k_mac_vif_chan(vif, &def))) {
++ mutex_unlock(&ar->conf_mutex);
++ return;
++ }
++
++ sband = ar->hw->wiphy->bands[def.chan->band];
++ basic_rate_idx = ffs(vif->bss_conf.basic_rates) - 1;
++ bitrate = sband->bitrates[basic_rate_idx].bitrate;
++
++ hw_rate_code = ath10k_mac_get_rate_hw_value(bitrate);
++ if (hw_rate_code < 0) {
++ ath10k_warn(ar, "bitrate not supported %d\n", bitrate);
++ mutex_unlock(&ar->conf_mutex);
++ return;
++ }
++
++ vdev_param = ar->wmi.vdev_param->mgmt_rate;
++ ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param,
++ hw_rate_code);
++ if (ret)
++ ath10k_warn(ar, "failed to set mgmt tx rate %d\n", ret);
++ }
++
+ mutex_unlock(&ar->conf_mutex);
+ }
+
diff --git a/package/kernel/mac80211/patches/978-ath10k-fix-possible-out-of-bound-access-of-ath10k_ra.patch b/package/kernel/mac80211/patches/978-ath10k-fix-possible-out-of-bound-access-of-ath10k_ra.patch
new file mode 100644
index 0000000000000000000000000000000000000000..b496332574f93b1f6474226e8c09970d6fe0e2fe
--- /dev/null
+++ b/package/kernel/mac80211/patches/978-ath10k-fix-possible-out-of-bound-access-of-ath10k_ra.patch
@@ -0,0 +1,70 @@
+From: Sriram R <srirrama@codeaurora.org>
+Date: Wed, 3 Oct 2018 08:43:50 +0530
+Subject: [PATCH] ath10k: fix possible out of bound access of ath10k_rates array
+
+While using 'ath10k_mac_get_rate_hw_value()' to obtain the hw value
+from the passed bitrate, there is a chance of out of bound array access
+when wrong bitrate is passed. This is fixed by comparing the bitrates
+within the correct size of the ath10k_rates array.
+
+Fixes commit f279294e9ee2 ("ath10k: add support for configuring management
+packet rate"). Also correction made to some indents used in the above commit.
+
+Signed-off-by: Sriram R <srirrama@codeaurora.org>
+Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
+
+Origin: backport, https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=34e141eea7dd8525dd1ef7a925459e455b4d307f
+---
+ drivers/net/wireless/ath/ath10k/mac.c | 30 +++++++++++++--------------
+ 1 file changed, 15 insertions(+), 15 deletions(-)
+
+diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c
+index 47e5992afcd7564743f513eb250b57381aba3233..e93b04c8e6fb2fa7968b910e0cc97ad8144bd7e8 100644
+--- a/drivers/net/wireless/ath/ath10k/mac.c
++++ b/drivers/net/wireless/ath/ath10k/mac.c
+@@ -163,7 +163,7 @@ static int ath10k_mac_get_rate_hw_value(int bitrate)
+ if (ath10k_mac_bitrate_is_cck(bitrate))
+ hw_value_prefix = WMI_RATE_PREAMBLE_CCK << 6;
+
+- for (i = 0; i < sizeof(ath10k_rates); i++) {
++ for (i = 0; i < ARRAY_SIZE(ath10k_rates); i++) {
+ if (ath10k_rates[i].bitrate == bitrate)
+ return hw_value_prefix | ath10k_rates[i].hw_value;
+ }
+@@ -5625,22 +5625,22 @@ static void ath10k_bss_info_changed(struct ieee80211_hw *hw,
+ return;
+ }
+
+- sband = ar->hw->wiphy->bands[def.chan->band];
+- basic_rate_idx = ffs(vif->bss_conf.basic_rates) - 1;
+- bitrate = sband->bitrates[basic_rate_idx].bitrate;
++ sband = ar->hw->wiphy->bands[def.chan->band];
++ basic_rate_idx = ffs(vif->bss_conf.basic_rates) - 1;
++ bitrate = sband->bitrates[basic_rate_idx].bitrate;
+
+- hw_rate_code = ath10k_mac_get_rate_hw_value(bitrate);
+- if (hw_rate_code < 0) {
+- ath10k_warn(ar, "bitrate not supported %d\n", bitrate);
+- mutex_unlock(&ar->conf_mutex);
+- return;
+- }
++ hw_rate_code = ath10k_mac_get_rate_hw_value(bitrate);
++ if (hw_rate_code < 0) {
++ ath10k_warn(ar, "bitrate not supported %d\n", bitrate);
++ mutex_unlock(&ar->conf_mutex);
++ return;
++ }
+
+- vdev_param = ar->wmi.vdev_param->mgmt_rate;
+- ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param,
+- hw_rate_code);
+- if (ret)
+- ath10k_warn(ar, "failed to set mgmt tx rate %d\n", ret);
++ vdev_param = ar->wmi.vdev_param->mgmt_rate;
++ ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param,
++ hw_rate_code);
++ if (ret)
++ ath10k_warn(ar, "failed to set mgmt tx rate %d\n", ret);
+ }
+
+ mutex_unlock(&ar->conf_mutex);

View File

@ -0,0 +1,316 @@
From: Sven Eckelmann <sven@narfation.org>
Date: Fri, 8 Feb 2019 21:20:20 +0100
Subject: ath10k-ct: support for multicast and management rate control
Drivers with software rate control can directly use the selected multicast
rate for multicast/broadcast frames and the minimal basic rate for
management frames. But drivers with offloaded rate control algorithms must
be informed about such upper layer decisions to configure the
hardware/firmware.
A new BSS_CHANGED_MCAST_RATE is introduced in mac80211 to automatically
inform all drivers. ath10k-ct can detect this event and forward it via WMI
to the driver. The already existing BSS_CHANGED_BASIC_RATES can be used to
select the management rate.
Without the WMI commands, a low rate (not necessarily one from the basic
rates) is used for bcast/mcast/management frames. This means that the
/etc/config/wireless settings basic_rate and mcast_rate would have no
effect on the rates selected by this driver for the mentioned frames.
Signed-off-by: Sven Eckelmann <sven@narfation.org>
diff --git a/package/kernel/ath10k-ct/patches/976-ath10k-support-for-multicast-rate-control.patch b/package/kernel/ath10k-ct/patches/976-ath10k-support-for-multicast-rate-control.patch
new file mode 100644
index 0000000000000000000000000000000000000000..bd60bf317dec3a2eec1fd9263037acc30d272e39
--- /dev/null
+++ b/package/kernel/ath10k-ct/patches/976-ath10k-support-for-multicast-rate-control.patch
@@ -0,0 +1,112 @@
+From: Pradeep Kumar Chitrapu <pradeepc@codeaurora.org>
+Date: Wed, 25 Jul 2018 10:59:39 +0300
+Subject: [PATCH] ath10k: support for multicast rate control
+
+Issues a wmi command to firmware when multicast rate change is received with the
+new BSS_CHANGED_MCAST_RATE flag. Also fixes the incorrect fixed_rate setting
+for CCK rates which got introduced with addition of ath10k_rates_rev2 enum.
+
+Tested on QCA9984 with firmware ver 10.4-3.6-00104
+
+Signed-off-by: Pradeep Kumar Chitrapu <pradeepc@codeaurora.org>
+Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
+
+Origin: backport, https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=cd93b83ad927b2c7979e0add0343ace59328b461
+---
+ ath10k-4.13/mac.c | 54 +++++++++++++++++++++++++--
+ 1 file changed, 50 insertions(+), 4 deletions(-)
+
+diff --git a/ath10k-4.13/mac.c b/ath10k-4.13/mac.c
+index 5683f1a5330eedae677aad5bf2621a6232781346..1937526c8c18da85f7730429759391d47e12cf81 100644
+--- a/ath10k-4.13/mac.c
++++ b/ath10k-4.13/mac.c
+@@ -100,6 +100,8 @@ static struct ieee80211_rate ath10k_rates_rev2[] = {
+ #define ath10k_g_rates_rev2 (ath10k_rates_rev2 + 0)
+ #define ath10k_g_rates_rev2_size (ARRAY_SIZE(ath10k_rates_rev2))
+
++#define ath10k_wmi_legacy_rates ath10k_rates
++
+ static bool ath10k_mac_bitrate_is_cck(int bitrate)
+ {
+ switch (bitrate) {
+@@ -5389,8 +5391,12 @@ static void ath10k_bss_info_changed(struct ieee80211_hw *hw,
+ {
+ struct ath10k *ar = hw->priv;
+ struct ath10k_vif *arvif = (void *)vif->drv_priv;
+- int ret = 0;
++ struct cfg80211_chan_def def;
+ u32 vdev_param, pdev_param, slottime, preamble;
++ u16 bitrate, hw_value;
++ u8 rate;
++ int rateidx, ret = 0;
++ enum nl80211_band band;
+
+ mutex_lock(&ar->conf_mutex);
+
+@@ -5558,6 +5564,44 @@ static void ath10k_bss_info_changed(struct ieee80211_hw *hw,
+ arvif->vdev_id, ret);
+ }
+
++ if (changed & BSS_CHANGED_MCAST_RATE &&
++ !WARN_ON(ath10k_mac_vif_chan(arvif->vif, &def))) {
++ band = def.chan->band;
++ rateidx = vif->bss_conf.mcast_rate[band] - 1;
++
++ if (ar->phy_capability & WHAL_WLAN_11A_CAPABILITY)
++ rateidx += ATH10K_MAC_FIRST_OFDM_RATE_IDX;
++
++ bitrate = ath10k_wmi_legacy_rates[rateidx].bitrate;
++ hw_value = ath10k_wmi_legacy_rates[rateidx].hw_value;
++ if (ath10k_mac_bitrate_is_cck(bitrate))
++ preamble = WMI_RATE_PREAMBLE_CCK;
++ else
++ preamble = WMI_RATE_PREAMBLE_OFDM;
++
++ rate = ATH10K_HW_RATECODE(hw_value, 0, preamble);
++
++ ath10k_dbg(ar, ATH10K_DBG_MAC,
++ "mac vdev %d mcast_rate %x\n",
++ arvif->vdev_id, rate);
++
++ vdev_param = ar->wmi.vdev_param->mcast_data_rate;
++ ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id,
++ vdev_param, rate);
++ if (ret)
++ ath10k_warn(ar,
++ "failed to set mcast rate on vdev %i: %d\n",
++ arvif->vdev_id, ret);
++
++ vdev_param = ar->wmi.vdev_param->bcast_data_rate;
++ ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id,
++ vdev_param, rate);
++ if (ret)
++ ath10k_warn(ar,
++ "failed to set bcast rate on vdev %i: %d\n",
++ arvif->vdev_id, ret);
++ }
++
+ mutex_unlock(&ar->conf_mutex);
+ }
+
+@@ -6826,7 +6870,6 @@ ath10k_mac_bitrate_mask_get_single_rate(struct ath10k *ar,
+ const struct cfg80211_bitrate_mask *mask,
+ u8 *rate, u8 *nss)
+ {
+- struct ieee80211_supported_band *sband = &ar->mac.sbands[band];
+ int rate_idx;
+ int i;
+ u16 bitrate;
+@@ -6836,8 +6879,11 @@ ath10k_mac_bitrate_mask_get_single_rate(struct ath10k *ar,
+ if (hweight32(mask->control[band].legacy) == 1) {
+ rate_idx = ffs(mask->control[band].legacy) - 1;
+
+- hw_rate = sband->bitrates[rate_idx].hw_value;
+- bitrate = sband->bitrates[rate_idx].bitrate;
++ if (ar->phy_capability & WHAL_WLAN_11A_CAPABILITY)
++ rate_idx += ATH10K_MAC_FIRST_OFDM_RATE_IDX;
++
++ hw_rate = ath10k_wmi_legacy_rates[rate_idx].hw_value;
++ bitrate = ath10k_wmi_legacy_rates[rate_idx].bitrate;
+
+ if (ath10k_mac_bitrate_is_cck(bitrate))
+ preamble = WMI_RATE_PREAMBLE_CCK;
diff --git a/package/kernel/ath10k-ct/patches/977-ath10k-add-support-for-configuring-management-packet.patch b/package/kernel/ath10k-ct/patches/977-ath10k-add-support-for-configuring-management-packet.patch
new file mode 100644
index 0000000000000000000000000000000000000000..6cc6df271fc73431b9467ac9878c360345e0754f
--- /dev/null
+++ b/package/kernel/ath10k-ct/patches/977-ath10k-add-support-for-configuring-management-packet.patch
@@ -0,0 +1,94 @@
+From: Sriram R <srirrama@codeaurora.org>
+Date: Mon, 10 Sep 2018 11:09:40 +0530
+Subject: [PATCH] ath10k: add support for configuring management packet rate
+
+By default the firmware uses 1Mbps and 6Mbps rate for management packets
+in 2G and 5G bands respectively. But when the user selects different
+basic rates from the userspace, we need to send the management
+packets at the lowest basic rate selected by the user.
+
+This change makes use of WMI_VDEV_PARAM_MGMT_RATE param for configuring the
+management packets rate to the firmware.
+
+Chipsets Tested : QCA988X, QCA9887, QCA9984
+FW Tested : 10.2.4-1.0-41, 10.4-3.6.104
+
+Signed-off-by: Sriram R <srirrama@codeaurora.org>
+Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
+
+Origin: backport, https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=f279294e9ee22a8f306fdc8e4181cf555e6f0f70
+---
+ ath10k-4.13/mac.c | 45 +++++++++++++++++++++++++--
+ 1 file changed, 43 insertions(+), 2 deletions(-)
+
+diff --git a/ath10k-4.13/mac.c b/ath10k-4.13/mac.c
+index 1937526c8c18da85f7730429759391d47e12cf81..47e5992afcd7564743f513eb250b57381aba3233 100644
+--- a/ath10k-4.13/mac.c
++++ b/ath10k-4.13/mac.c
+@@ -155,6 +155,22 @@ u8 ath10k_mac_bitrate_to_idx(const struct ieee80211_supported_band *sband,
+ return 0;
+ }
+
++static int ath10k_mac_get_rate_hw_value(int bitrate)
++{
++ int i;
++ u8 hw_value_prefix = 0;
++
++ if (ath10k_mac_bitrate_is_cck(bitrate))
++ hw_value_prefix = WMI_RATE_PREAMBLE_CCK << 6;
++
++ for (i = 0; i < sizeof(ath10k_rates); i++) {
++ if (ath10k_rates[i].bitrate == bitrate)
++ return hw_value_prefix | ath10k_rates[i].hw_value;
++ }
++
++ return -EINVAL;
++}
++
+ static int ath10k_mac_get_max_vht_mcs_map(u16 mcs_map, int nss)
+ {
+ switch ((mcs_map >> (2 * nss)) & 0x3) {
+@@ -5394,9 +5410,10 @@ static void ath10k_bss_info_changed(struct ieee80211_hw *hw,
+ struct cfg80211_chan_def def;
+ u32 vdev_param, pdev_param, slottime, preamble;
+ u16 bitrate, hw_value;
+- u8 rate;
+- int rateidx, ret = 0;
++ u8 rate, basic_rate_idx;
++ int rateidx, ret = 0, hw_rate_code;
+ enum nl80211_band band;
++ const struct ieee80211_supported_band *sband;
+
+ mutex_lock(&ar->conf_mutex);
+
+@@ -5602,6 +5619,30 @@ static void ath10k_bss_info_changed(struct ieee80211_hw *hw,
+ arvif->vdev_id, ret);
+ }
+
++ if (changed & BSS_CHANGED_BASIC_RATES) {
++ if (WARN_ON(ath10k_mac_vif_chan(vif, &def))) {
++ mutex_unlock(&ar->conf_mutex);
++ return;
++ }
++
++ sband = ar->hw->wiphy->bands[def.chan->band];
++ basic_rate_idx = ffs(vif->bss_conf.basic_rates) - 1;
++ bitrate = sband->bitrates[basic_rate_idx].bitrate;
++
++ hw_rate_code = ath10k_mac_get_rate_hw_value(bitrate);
++ if (hw_rate_code < 0) {
++ ath10k_warn(ar, "bitrate not supported %d\n", bitrate);
++ mutex_unlock(&ar->conf_mutex);
++ return;
++ }
++
++ vdev_param = ar->wmi.vdev_param->mgmt_rate;
++ ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param,
++ hw_rate_code);
++ if (ret)
++ ath10k_warn(ar, "failed to set mgmt tx rate %d\n", ret);
++ }
++
+ mutex_unlock(&ar->conf_mutex);
+ }
+
diff --git a/package/kernel/ath10k-ct/patches/978-ath10k-fix-possible-out-of-bound-access-of-ath10k_ra.patch b/package/kernel/ath10k-ct/patches/978-ath10k-fix-possible-out-of-bound-access-of-ath10k_ra.patch
new file mode 100644
index 0000000000000000000000000000000000000000..cc13e547aa7e983fcff6137de9463e0b706651c5
--- /dev/null
+++ b/package/kernel/ath10k-ct/patches/978-ath10k-fix-possible-out-of-bound-access-of-ath10k_ra.patch
@@ -0,0 +1,70 @@
+From: Sriram R <srirrama@codeaurora.org>
+Date: Wed, 3 Oct 2018 08:43:50 +0530
+Subject: [PATCH] ath10k: fix possible out of bound access of ath10k_rates array
+
+While using 'ath10k_mac_get_rate_hw_value()' to obtain the hw value
+from the passed bitrate, there is a chance of out of bound array access
+when wrong bitrate is passed. This is fixed by comparing the bitrates
+within the correct size of the ath10k_rates array.
+
+Fixes commit f279294e9ee2 ("ath10k: add support for configuring management
+packet rate"). Also correction made to some indents used in the above commit.
+
+Signed-off-by: Sriram R <srirrama@codeaurora.org>
+Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
+
+Origin: backport, https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=34e141eea7dd8525dd1ef7a925459e455b4d307f
+---
+ ath10k-4.13/mac.c | 30 +++++++++++++--------------
+ 1 file changed, 15 insertions(+), 15 deletions(-)
+
+diff --git a/ath10k-4.13/mac.c b/ath10k-4.13/mac.c
+index 47e5992afcd7564743f513eb250b57381aba3233..e93b04c8e6fb2fa7968b910e0cc97ad8144bd7e8 100644
+--- a/ath10k-4.13/mac.c
++++ b/ath10k-4.13/mac.c
+@@ -163,7 +163,7 @@ static int ath10k_mac_get_rate_hw_value(int bitrate)
+ if (ath10k_mac_bitrate_is_cck(bitrate))
+ hw_value_prefix = WMI_RATE_PREAMBLE_CCK << 6;
+
+- for (i = 0; i < sizeof(ath10k_rates); i++) {
++ for (i = 0; i < ARRAY_SIZE(ath10k_rates); i++) {
+ if (ath10k_rates[i].bitrate == bitrate)
+ return hw_value_prefix | ath10k_rates[i].hw_value;
+ }
+@@ -5625,22 +5625,22 @@ static void ath10k_bss_info_changed(struct ieee80211_hw *hw,
+ return;
+ }
+
+- sband = ar->hw->wiphy->bands[def.chan->band];
+- basic_rate_idx = ffs(vif->bss_conf.basic_rates) - 1;
+- bitrate = sband->bitrates[basic_rate_idx].bitrate;
++ sband = ar->hw->wiphy->bands[def.chan->band];
++ basic_rate_idx = ffs(vif->bss_conf.basic_rates) - 1;
++ bitrate = sband->bitrates[basic_rate_idx].bitrate;
+
+- hw_rate_code = ath10k_mac_get_rate_hw_value(bitrate);
+- if (hw_rate_code < 0) {
+- ath10k_warn(ar, "bitrate not supported %d\n", bitrate);
+- mutex_unlock(&ar->conf_mutex);
+- return;
+- }
++ hw_rate_code = ath10k_mac_get_rate_hw_value(bitrate);
++ if (hw_rate_code < 0) {
++ ath10k_warn(ar, "bitrate not supported %d\n", bitrate);
++ mutex_unlock(&ar->conf_mutex);
++ return;
++ }
+
+- vdev_param = ar->wmi.vdev_param->mgmt_rate;
+- ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param,
+- hw_rate_code);
+- if (ret)
+- ath10k_warn(ar, "failed to set mgmt tx rate %d\n", ret);
++ vdev_param = ar->wmi.vdev_param->mgmt_rate;
++ ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param,
++ hw_rate_code);
++ if (ret)
++ ath10k_warn(ar, "failed to set mgmt tx rate %d\n", ret);
+ }
+
+ mutex_unlock(&ar->conf_mutex);

View File

@ -0,0 +1,271 @@
From: Ludwig Thomeczek <ledesrc@wxorx.net>
Date: Tue, 12 Jun 2018 21:17:23 +0200
Subject: ramips: add support for Netgear R6120
This patch adds support for the Netgear R6120, aka Netgear AC1200.
Specification:
- SoC: MediaTek MT7628 (580 MHz)
- Flash: 16 MiB
- RAM: 64 MiB
- Wireless: 2.4Ghz(builtin) and 5Ghz (MT7612E)
- LAN speed: 10/100
- LAN ports: 4
- WAN speed: 10/100
- WAN ports: 1
- Serial baud rate of Bootloader and factory firmware: 57600
To flash use nmrpflash with the provided factory.img.
Flashing via webinterface will not work, for now.
Signed-off-by: Ludwig Thomeczek <ledesrc@wxorx.net>
diff --git a/target/linux/ramips/base-files/etc/board.d/01_leds b/target/linux/ramips/base-files/etc/board.d/01_leds
index 19386b9e139a25fd1ac29cd9a66b738b5b092cdf..4203773b4fa3ec771f07b7a8c414a416a0da0f20 100755
--- a/target/linux/ramips/base-files/etc/board.d/01_leds
+++ b/target/linux/ramips/base-files/etc/board.d/01_leds
@@ -301,6 +301,11 @@ mzk-ex750np)
na930)
set_usb_led "$boardname:blue:status"
;;
+netgear,r6120)
+ ucidef_set_led_switch "lan" "lan" "$boardname:green:lan" "switch0" "0x0f"
+ ucidef_set_led_switch "wan" "wan" "$boardname:green:wan" "switch0" "0x10"
+ ucidef_set_led_wlan "wlan2g" "WiFi 2.4GHz" "$boardname:green:wlan2g" "phy0tpt"
+ ;;
newifi-d1)
set_usb_led "$boardname:red:status"
;;
diff --git a/target/linux/ramips/base-files/etc/board.d/02_network b/target/linux/ramips/base-files/etc/board.d/02_network
index 1c6cc6b0af745b43b81bbfffc9b5462c1b88defc..9424c7ddfd64f9149a24ff91e63b71990265d211 100755
--- a/target/linux/ramips/base-files/etc/board.d/02_network
+++ b/target/linux/ramips/base-files/etc/board.d/02_network
@@ -301,6 +301,10 @@ ramips_setup_interfaces()
"0:lan" "1:lan" "2:lan" "3:lan" "6t@eth0"
ucidef_set_interface_wan "usb0"
;;
+ netgear,r6120)
+ ucidef_add_switch "switch0" \
+ "0:lan:4" "1:lan:3" "2:lan:2" "3:lan:1" "4:wan" "6@eth0"
+ ;;
mzk-dp150n|\
vocore-8M|\
vocore-16M)
diff --git a/target/linux/ramips/base-files/etc/diag.sh b/target/linux/ramips/base-files/etc/diag.sh
index 6d021b6def2f1fe7b71a67f36749c440f3bad1d4..097cc6df569518f64dbfd641eeccc1a4b1b37a2b 100644
--- a/target/linux/ramips/base-files/etc/diag.sh
+++ b/target/linux/ramips/base-files/etc/diag.sh
@@ -38,6 +38,7 @@ get_status_led() {
mzk-w300nh2|\
nbg-419n|\
nbg-419n2|\
+ netgear,r6120|\
pwh2004|\
r6220|\
tplink,c20-v4|\
diff --git a/target/linux/ramips/base-files/lib/upgrade/platform.sh b/target/linux/ramips/base-files/lib/upgrade/platform.sh
index 8055853508fc850a1826166c7e0cbdf443df27cb..7213b22d0c2734488bd96bc34e921f08649b8c2f 100755
--- a/target/linux/ramips/base-files/lib/upgrade/platform.sh
+++ b/target/linux/ramips/base-files/lib/upgrade/platform.sh
@@ -129,6 +129,7 @@ platform_check_image() {
psr-680w|\
px-4885-4M|\
px-4885-8M|\
+ netgear,r6120|\
rb750gr3|\
re6500|\
rp-n53|\
diff --git a/target/linux/ramips/dts/R6120.dts b/target/linux/ramips/dts/R6120.dts
new file mode 100644
index 0000000000000000000000000000000000000000..a0df0072379a7d8f974ec8025483410d5f9f1da1
--- /dev/null
+++ b/target/linux/ramips/dts/R6120.dts
@@ -0,0 +1,142 @@
+/dts-v1/;
+
+#include "mt7628an.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+
+/ {
+ compatible = "netgear,r6120", "mediatek,mt7628an-soc";
+ model = "Netgear R6120";
+
+ memory@0 {
+ device_type = "memory";
+ reg = <0x0 0x4000000>;
+ };
+
+ gpio-keys-polled {
+ compatible = "gpio-keys-polled";
+ poll-interval = <20>;
+
+ reset {
+ label = "reset";
+ gpios = <&gpio1 6 GPIO_ACTIVE_LOW>;
+ linux,code = <KEY_RESTART>;
+ };
+ };
+
+ gpio-leds {
+ compatible = "gpio-leds";
+
+ lan {
+ label = "r6120:green:lan";
+ gpios = <&gpio1 12 GPIO_ACTIVE_LOW>;
+ };
+
+ led_power: power {
+ label = "r6120:green:power";
+ gpios = <&gpio1 11 GPIO_ACTIVE_LOW>;
+ };
+
+ wlan {
+ label = "r6120:green:wlan2g";
+ gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
+ };
+
+ wlan_orange {
+ label = "r6120:orange:wlan2g";
+ gpios = <&gpio1 9 GPIO_ACTIVE_LOW>;
+ };
+
+ wan {
+ label = "r6120:green:wan";
+ gpios = <&gpio1 8 GPIO_ACTIVE_LOW>;
+ };
+
+ wan_orange {
+ label = "r6120:orange:wan";
+ gpios = <&gpio1 7 GPIO_ACTIVE_LOW>;
+ };
+ };
+};
+
+&pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "p0led_an", "p1led_an", "p2led_an",
+ "p3led_an", "p4led_an", "wdt", "wled_an";
+ ralink,function = "gpio";
+ };
+ };
+};
+
+&spi0 {
+ status = "okay";
+
+ flash@0 {
+ compatible = "jedec,spi-nor";
+ reg = <0>;
+ spi-max-frequency = <10000000>;
+ m25p,chunked-io = <32>;
+
+ partitions {
+ compatible = "fixed-partitions";
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ partition@0 {
+ label = "u-boot";
+ reg = <0x0 0x40000>;
+ read-only;
+ };
+
+ factory: partition@40000 {
+ label = "factory";
+ reg = <0x40000 0x20000>;
+ read-only;
+ };
+
+ partition@60000 {
+ label = "nvram";
+ reg = <0x60000 0x30000>;
+ read-only;
+ };
+
+ partition@90000 {
+ label = "firmware";
+ reg = <0x90000 0xf60000>;
+ };
+
+ partition@ff0000 {
+ label = "reserved";
+ reg = <0xff0000 0x10000>;
+ read-only;
+ };
+ };
+ };
+};
+
+&wmac {
+ status = "okay";
+ mtd-mac-address = <&factory 0x4>;
+ mediatek,mtd-eeprom = <&factory 0x0>;
+};
+
+&ethernet {
+ mtd-mac-address = <&factory 0x4>;
+};
+
+&pcie {
+ status = "okay";
+
+ pcie-bridge {
+ mt76@0,0 {
+ reg = <0x0000 0 0 0 0>;
+ device_type = "pci";
+ mediatek,mtd-eeprom = <&factory 0x8000>;
+ ieee80211-freq-limit = <5000000 6000000>;
+ mtd-mac-address = <&factory 0x4>;
+ mtd-mac-address-increment = <(2)>;
+ };
+ };
+};
diff --git a/target/linux/ramips/image/mt76x8.mk b/target/linux/ramips/image/mt76x8.mk
index 34bd662f3a9490bdb0fd125af5ffa8a0f77c5f16..bc282666d8c1a4b6ce5beabe2b492331fb48a23a 100644
--- a/target/linux/ramips/image/mt76x8.mk
+++ b/target/linux/ramips/image/mt76x8.mk
@@ -2,6 +2,17 @@
# MT76x8 Profiles
#
+DEVICE_VARS += SERCOMM_KERNEL_OFFSET SERCOMM_HWID SERCOMM_HWVER SERCOMM_SWVER
+
+define Build/mksercommfw
+ $(STAGING_DIR_HOST)/bin/mksercommfw \
+ $@ \
+ $(SERCOMM_KERNEL_OFFSET) \
+ $(SERCOMM_HWID) \
+ $(SERCOMM_HWVER) \
+ $(SERCOMM_SWVER)
+endef
+
define Device/tplink
TPLINK_FLASHLAYOUT :=
TPLINK_HWID :=
@@ -90,6 +101,23 @@ define Device/mt7628
endef
TARGET_DEVICES += mt7628
+define Device/netgear_r6120
+ DTS := R6120
+ BLOCKSIZE := 64k
+ IMAGE_SIZE := $(ralink_default_fw_size_16M)
+ DEVICE_TITLE := Netgear R6120
+ DEVICE_PACKAGES := kmod-usb2 kmod-usb-ohci
+ SERCOMM_KERNEL_OFFSET := 90000
+ SERCOMM_HWID := CGQ
+ SERCOMM_HWVER := A001
+ SERCOMM_SWVER := 0040
+ IMAGES += factory.img
+ IMAGE/default := append-kernel | pad-to $$$$(BLOCKSIZE)| append-rootfs | pad-rootfs
+ IMAGE/sysupgrade.bin := $$(IMAGE/default) | append-metadata | check-size $$$$(IMAGE_SIZE)
+ IMAGE/factory.img := $$(IMAGE/default) | mksercommfw
+endef
+TARGET_DEVICES += netgear_r6120
+
define Device/omega2
DTS := OMEGA2
IMAGE_SIZE := $(ralink_default_fw_size_16M)

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