Commit Graph

1285 Commits

Author SHA1 Message Date
David Bauer
5f19706756 gluon-core: fix mesh radios not being created
This commit fixes a bug where on first setup, mesh interfaces won't be
created for 2.4GHz radios.
2019-05-21 13:42:22 +02:00
David Bauer
1aa4ffc514 gluon-config-mode gluon-core: fix incorrect gluon.platform reference
The is_outdoor function is placed inside the gluon.platform module, not
the platform_info module. Currently, the outdoor-mode wizard component
and the upgrade script fail due to nil-value calls.
2019-05-21 13:42:22 +02:00
Martin Weinelt
ad1a1906ab
gluon-core: fix reference to outdoors config site variable 2019-04-29 16:08:10 +02:00
Martin Weinelt
501c3b38bb add gluon-config-mode-outdoor package
adds a section to the wizard for outdoor capable devices
that informs the user of of the regulatory situation and
allows a quick toggle of the outdoor mode.
2019-04-28 18:19:43 +02:00
Martin Weinelt
e20d5b0a3e gluon-core: allow presetting the outdoor mode for new installations 2019-04-28 18:19:43 +02:00
Martin Weinelt
423aafbd29 gluon-core: improve channel and add chanlist validation 2019-04-28 18:17:40 +02:00
Martin Weinelt
bf55249159 gluon-core: add outdoor support for 5 ghz radios
Add the `wifi5.outdoor_chanlist` site configuration that
allows specifying an outdoor channel range that can be
switched to for regulatory compliance.

Upon enabling the outdoor option the device will
 - configure the `outdoor_chanlist` on all 5 GHz radios
 - which may enable DFS/TPC, based on the regulatory domain
 - disable ibss/mesh on the 5 GHz radio, as DFS *will*
   break mesh connections
 - allow for htmode reconfiguration on 5 GHz radios

The outdoor option can be toggled from
 - Advanced Settings
   - W-LAN
     - Outdoor Installation

The `preserve_channel` flag overrules the outdoor channel
selection.
2019-04-28 18:17:11 +02:00
Martin Weinelt
4f60f6dbc6 gluon-core: disable legacy_rates by default, drop support for supported and basic rates (#1716) 2019-04-28 16:47:29 +02:00
Matthias Schiffer
09916f6e35
gluon-mesh-batman-adv: drop packets from mesh with next-node source or destination address (#1714)
Fixes #1659
2019-04-28 14:56:09 +02:00
bobcanthelpyou
fe521db441 build: add site check for obsolete settings (#1702) 2019-04-28 14:38:08 +02:00
Tata
e81d1a390f Add mechanism to reload domain related services (#1710) 2019-04-23 17:34:49 +02:00
Matthias Schiffer
59a44274cb
gluon-respondd: do not join link-local multicast group on br-client
Fixes #1701
2019-04-21 19:31:32 +02:00
Matthias Schiffer
a5614a5019
gluon-neighbour-info: fix outgoing interface for non-link-local multicast addresses 2019-04-21 19:19:02 +02:00
Matthias Schiffer
e9e1e2d18a
gluon-neighbour-info: exit on unknown parameters 2019-04-21 19:19:02 +02:00
Matthias Schiffer
7dec8ebf87
gluon-neighbour-info: fix mixed tab/space indentation 2019-04-21 19:19:02 +02:00
Matthias Schiffer
fc5f93604e
gluon-neighbour-info: fix inet_pton() error message
inet_pton() doesn't set errno on regular parse errors, so using perror()
doesn't make sense (and we avoid a confusing "Success" message).
2019-04-21 19:19:02 +02:00
Linus Lüssing
8e04679be6 gluon-mesh-batman-adv: add batctl dependency to gluon-mesh-batman-adv-14
The batctl v2013.4 build was removed from the batman-adv-legacy package
as the current, upstream batctl releases work with batman-adv-legacy,
too.

As a replacement we need to add the upstream batctl dependency to
gluon-mesh-batman-adv-14 to have a batctl available again here.

Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>
2019-04-16 12:03:20 +02:00
bobcanthelpyou
149b55526f gluon.mk: fix reference to LuaSrcDiet binary 2019-04-14 11:21:31 +02:00
Tata
d4c066a0f8 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-11 08:50:48 +02:00
Sven Eckelmann
e13a614420 gluon-status-page-mesh-batman-adv: Save if metrics chose neighbor as own best nexthop
The commit a080049735 ("gluon-status-page-mesh-batman-adv: Retrieve TQ of
neighbors with non-best direct link") removed the check whether a neighbor
has the BATADV_ATTR_FLAG_BEST set. But consumers may still want to filter
out or mark neighbors which don't have this flag set. To assist with such a
feature, enhance the neighbor object with an extra boolean "best" attribute
which stores whether the BATADV_ATTR_FLAG_BEST was found or not.

Reported-by: Vincent Wiemann <webmaster@codefetch.de>
2019-04-09 01:31:51 +02:00
Sven Eckelmann
cef21e584a gluon-mesh-batman-adv: Save if metrics chose neighbor as own best nexthop
The commit ee63ed42fe ("gluon-mesh-batman-adv: List neighbors with
non-best direct link") removed the check whether a neighbor has the
BATADV_ATTR_FLAG_BEST set. But consumers may still want to filter out or
mark neighbors which don't have this flag set. To assist with such a
feature, enhance the neighbor object with an extra boolean "best" attribute
which stores whether the BATADV_ATTR_FLAG_BEST was found or not.

Reported-by: Vincent Wiemann <webmaster@codefetch.de>
2019-04-09 01:31:51 +02:00
Sven Eckelmann
d0df47d943 gluon-status-page-mesh-batman-adv: Retrieve TQ of neighbors with non-best direct link
Links between two direct neighbors are not always the best route between
these devices. The flag BATADV_ATTR_FLAG_BEST would not be set for these
originator entries and the respondd module would just ignore this entry.

If these neighbors are not accepted and returned to the status page then
some of the neighbor entries will show a name, (acceptable) signal strength
and mac address but no TQ value.

Fixes: 28668c8c52 ("gluon-status-page: API")
2019-04-09 01:31:51 +02:00
Sven Eckelmann
ec72d30b8f gluon-mesh-batman-adv: List neighbors with non-best direct link
Links between two direct neighbors are not always the best route between
these devices. The flag BATADV_ATTR_FLAG_BEST would not be set for these
originator entries and the respondd module would just ignore this entry.

This causes missing links in meshviewer and similar tools. And when the
link quality is nearly equal and but fluctuates slightly, these links will
from time to time appear and disappear on the map.

Fixes: 2e0e24a992 ("announce neighbours using alfred/gluon-announce")
2019-04-09 01:31:51 +02:00
Manu.WTF
3b0e5fab71 ramips-mt7620: add support for Xiaomi MiWifi Mini (#1638) 2019-03-29 12:43:05 +01:00
David Bauer
a9a4abb637 ipq806x: add support for NETGEAR R7800 (#1669)
The device is broken until the next release. The LEDs are currently not
working (fixed in current OpenWRT master).

Also give a brief explanation about the BROKEN status being dependent on
the WiFi chip used and not the SoC family in general.
2019-03-28 14:49:17 +01:00
Matthias Schiffer
c208fc4fd9
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'.
2019-03-22 20:15:25 +01:00
bobcanthelpyou
3b55cbc1f3 gluon-web: fix typos 2019-03-18 21:49:54 +01:00
Sven Eckelmann
b850fff7e4 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>
2019-03-16 13:37:49 +01:00
bobcanthelpyou
dcf5f192a0 gluon-web-node-role: Update i18n role translation (#1655) 2019-02-25 21:24:08 +01:00
David Bauer
f52bd99e71 gluon-mesh-batman-adv: use libnl-tiny to get IPv6 addresses (#1616) 2019-02-17 19:53:24 +01:00
bobcanthelpyou
5cdb6e86c7 package: update urls to https 2019-02-16 19:25:49 +01:00
David Bauer
c1b9ea2d9c 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-12 11:00:29 +01:00
David Bauer
387a9b4fe4 gluon-core: assert WiFi driver provides 4 MAC-addresses (#1626)
Gluon has multiple ways to obtain unique MAC-addresses. They are either
provided by the WiFi driver or derived from the primary MAC-address.

Quoting the same file:

> It's necessary that the first 45 bits of the MAC address don't
> vary on a single hardware interface, since some chips are using
> a hardware MAC filter. (e.g 'rt305x')

This currently fails in case the rt35xx based chips mac address differs
from the primary MAC. In this case, the MAC address for the client0 radio
(vif 1) comes from the WiFi driver. As there is only a single
MAC-address provided by '/sys/class/ieee80211/phyX/addresses' but the
MAC-address for mesh 0 (vif 2) is derived from the Node-ID, resulting in
different first 45 bits. The WiFi won't come up altogether in this case.

This commit verifies at least 4 MAC-Addresses are provided by the WiFi
driver. If this is not the case, all MAC-addresses are derived from the
primary MAC. This way, affected radios are working correctly.
2019-02-11 21:22:46 +01:00
Martin Weinelt
9153b38117 gluon-core: fix unifiac-{lite,pro} primary mac selection
fixes #1629
2019-01-25 01:50:53 +01:00
Martin Weinelt
c4d435c9c7 gluon-core: sort 010-primary-mac by target and board_name 2019-01-25 01:50:53 +01:00
Martin Weinelt
86148bdfc3 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-17 23:25:31 +01:00
Matthias Schiffer
2aa324ecf7
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
2019-01-03 03:16:11 +01:00
David Bauer
888cddb662 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>
2018-12-29 21:48:12 +01:00
Martin Weinelt
76f591995e gluon-client-bridge: set ra_holdoff interval to 30 seconds (#1597)
Allow odhcp6c to fork the script to handle router
advertisments in 30 seconds intervals. This is the value
that was previously used in Gluon v2018.1 / LEDE 17.01.

The default value is 3 seconds and while it is RFC compliant
it can put alot of pressure on even moderately sized devices.

Signed-off-by: Martin Weinelt <martin@darmstadt.freifunk.net>
2018-12-07 21:40:13 +01:00
Christof Schulze
8c058af89d gluon-mesh-babel: remove broken log-file option from config
log-file /dev/stderr is broken for babeld as it eats log messages for debug log.
This commit gets rid of the option. This allows -d N to be used as babeld command
line option.
2018-12-05 00:21:33 +01:00
Julian
68ee1db91e gluon-core: fix pattern %v in opkg URLs (#1594)
$VERSION_ID is a lowercase value
2018-12-02 16:59:06 +01:00
bobcanthelpyou
f3fa17d0f7 gluon-mesh-babel: Variable 'uret' is reassigned a value before the old one has been used. 2018-11-29 23:57:06 +01:00
bobcanthelpyou
62f06c1b16 gluon-mesh-babel: Unsigned variable 'total' can't be negative 2018-11-29 23:57:06 +01:00
bobcanthelpyou
083b7ef675 gluon-mesh-babel: 'buf' nulled but not freed upon failure 2018-11-29 23:57:06 +01:00
Martin Weinelt
bcf4d076e1 gluon-status-page: display position and link it with geo uri scheme (#1587)
Fixes: #659
Signed-off-by: Martin Weinelt <martin@darmstadt.freifunk.net>
2018-11-27 23:16:32 +01:00
Andreas Ziegler
1d2e36dab5 Revert "gluon-config-mode-geo-location: allow to store coordinates without sharing"
This reverts commit 104d7455fa.
in its current form it requires you to enter coordinates, which we don't want to enforce by default.
2018-11-27 02:07:04 +01:00
Andreas Ziegler
f5dc9601c3
Merge pull request #1577 from freifunk-ffm/wireguard-prep
Prepare existing babel stack for wireguard
2018-11-26 01:22:14 +01:00
Christof Schulze
62406509fc gluon-core: enable ECN 2018-11-26 01:20:31 +01:00
Christof Schulze
e5b238e04a gluon-mesh-babel: exit with error if unable to connect to babeld 2018-11-26 01:20:31 +01:00
Christof Schulze
89b7612fdb gluon-l3roamd: init: dynamically configure mesh interfaces gracefully during reload
This patch makes use of the new feature in l3roamd to gracefully
add, remove and list the mesh interfaces that are currently in use. This
helps when changing mesh interfaces often - a characteristic of the
wireguard protocol implementation as in the previous behavior all local
clients are dropped when adjusting mesh interfaces.
2018-11-26 01:20:31 +01:00
Jan-Tarek Butt
104d7455fa gluon-config-mode-geo-location: allow to store coordinates without sharing 2018-11-24 15:02:49 +01:00
Christof Schulze
171c293ebe gluon-core, gluon-mesh-babel: move lua functions that generate ll-addresses from a mac into gluon-core 2018-11-21 20:56:35 +01:00
Christof Schulze
c23e6e4b53 gluon-mesh-babel: babel-respond: stop relying on mac addresses and instead obtain ll-address from nic 2018-11-21 20:56:35 +01:00
Christof Schulze
bd96bd4024 gluon-mesh-babel: explicitly specify the use of the busybox netcat 2018-11-21 20:56:35 +01:00
Christof Schulze
b90d214da9 gluon-iptables-clamp-mss-to-pmtu: clamp mss on all mesh interfaces for all destinations to pmtu 2018-11-21 20:47:39 +01:00
Matthias Schiffer
eda3aa3333
gluon-mesh-vpn-core: add gluon-wan exec wrapper
gluon-wan is a sudo-like exec wrapper that switches the process group to
gluon-mesh-vpn, making it use the WAN dnsmasq rather than resolving over
the mesh.

Note that this only affects DNS at the moment. Processes running under
gluon-wan will still use the regular mesh IPv6 routing table, and not the
WAN routing table. This is not a problem for IPv4, as there is only one
IPv4 routing table.

Fixes #1575
2018-11-21 12:09:10 +01:00
Matthias Schiffer
6d4d4792d5
gluon-mesh-*: do not count wifi clients/neighbours inactive for more than 60s 2018-11-18 11:45:16 +01:00
Matthias Schiffer
f61d252361
gluon-mesh-batman-adv: respondd: do not count batadv clients inactive for more than 60s 2018-11-17 20:07:00 +01:00
Matthias Schiffer
af9c1f7e9f
gluon-mesh-babel: fix respondd provider build/install
Rename to respondd.c / respondd.so, gluon.mk expects these names. This way
we can remove the install code. The installed filename is changed to
gluon-mesh-babel.so, bringing it in line with out common naming scheme.
2018-11-17 19:45:18 +01:00
T-X
cb35b0d10a gluon-ebtables: build kernel with ebt_dnat and ebt_redirect (#1472)
The redirect and dnat target are needed for gluon-alt-esc-client to
forward frames to the selected, alternative gateways.

Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>
2018-11-16 21:33:59 +01:00
David Bauer
665cc49d67 ar71xx: add support for Archer C7 v5 2018-10-15 00:38:18 +02:00
Andreas Ziegler
849f72b0a6 gluon-status-page: don't cache index meta redirect 2018-10-11 03:23:29 +02:00
Andreas Ziegler
1628f2d49e gluon-config-mode-core: don't cache index meta redirect 2018-10-11 03:23:29 +02:00
David Bauer
246a617d71 ar71xx: add support for TL-WR902AC v1 (#1546)
This adds support for the TP-Link TL-WR902Ac v1 travel router.

The device is marked as broken due to 64MB which might be insufficient
in certain environments.
2018-10-11 03:21:51 +02:00
Matthias Schiffer
c584d81952
gluon-config-mode-hostname: fix site check for prefill
Do not require this setting in site.conf.
2018-09-29 14:09:28 +02:00
David Bauer
9de78e27b6 gluon-config-mode-hostname: add option to use default hostname (#1529)
Before 7827f89, mandatory hostname field in config mode was
pre-filled with the default hostname.

This commit adds the config_mode.hostname.prefill option for
controlling the default value.
2018-09-15 22:36:07 +02:00
Tata
1a690d2fd6 package/features: add gluon-ebtables-limit-arp to batman feature (#1516)
this activates the package by default when using the batman feature
while still allowing to explicitly remove it like this:

GLUON_SITE_PACKAGES := \
  -gluon-ebtables-limit-arp
2018-09-05 04:45:41 +02:00
Matthias Schiffer
a8d736ac7b
gluon-config-mode-geo-location-osm: add OSM-based location picker
gluon-config-mode-geo-location-osm extends the
gluon-config-mode-geo-location with a location picker based on
OpenStreetMaps.

Based-on-patch-by: Jan-Tarek Butt <tarek@ring0.de>
2018-09-01 11:35:39 +02:00
Matthias Schiffer
0d4188d40b
gluon-web-osm: base on OpenLayers 5, add model class
The new code is shorter and uses more readable variable names. It does not
depend on specifically named input fields anymore (allowing to use multiple
maps on the same page), and only uses well-defined interfaces to trigger
revalidation of input fields.

The Map model class allows to add OSM maps to gluon-web forms.
2018-09-01 11:35:33 +02:00
Matthias Schiffer
ba1df47dba
gluon-web-model: add custom events for form elements 2018-09-01 11:28:12 +02:00
Matthias Schiffer
a3a1d217f2
gluon-web-model, gluon-config-mode-theme: replace old gluon-map class, fix Form id 2018-09-01 11:28:12 +02:00
Matthias Schiffer
9a732f30dd
gluon-web-model: reorder Node arguments so Section:option() can just pass them through 2018-09-01 11:28:12 +02:00
Matthias Schiffer
653c132013
gluon-web-model: remove unused Section attribute "fields" 2018-09-01 11:28:12 +02:00
Matthias Schiffer
a2be178ce8
gluon-web: add view helper for JSON-encoded values
Can be used for inserting Lua values into inline JS code.
2018-09-01 11:28:12 +02:00
Matthias Schiffer
897ee73d14
gluon-mesh-batman-adv: respondd: remove incorrect field width limits
At least the ifindex and the flags fields can be larger than 0xff.

Fixes #1523
2018-09-01 11:12:22 +02:00
Matthias Schiffer
d3d6637c7f
Merge pull request #1517 from blocktrron/pr-memory-calculation 2018-08-25 01:55:01 +02:00
David Bauer
02dfc66438 gluon-status-page: update memory usage estimation
Let gluon-respondd expose "MemAvailable" from /proc/meminfo to allow for
a more realistic memory-usage estimation.

Information on MemAvailable can be found here:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/
commit/?id=34e431b0ae398fc54ea69ff85ec700722c9da773
2018-08-25 00:57:44 +02:00
David Bauer
44c70ca4d6 gluon-respondd: expose MemAvailable 2018-08-25 00:57:44 +02:00
Tata
20d22f66dd gluon-mesh-vpn-core: add abstraction layer for VPN interface name (#1518) 2018-08-24 23:21:43 +02:00
Matthias Schiffer
6ebe2ccd1b
gluon-config-mode-geo-location: fix typo 2018-08-23 23:01:43 +02:00
Matthias Schiffer
a72cf0b86b
gluon-config-mode-geo-location: revise altitude label overrides
As already done with other config mode texts, the altitude field now has
default texts that are used when they are not set in the site i18n files.
The altitude-help text has been removed from site i18n; instead, the
geo-location-help text now overrides the whole section description
including the part that mentions the altitude.
2018-08-19 20:58:26 +02:00
Matthias Schiffer
b4346ff9e6
gluon-config-mode-geo-location: make altitude show behaviour match docs
Do not show by default, delete old altitude value when a form without
altitude shown is saved.

Fixes #1493
2018-08-19 20:20:31 +02:00
Ruben Barkow
2b16257896 gluon-web-mesh-vpn-fastd: clarify config of default crypto method (#1502) 2018-08-06 21:36:05 +02:00
Andreas Ziegler
78ed75ee28 Revert "gluon-core: make sure dns traffic leaves the correct interface when there is ipv6 wan uplink"
This reverts commit b3d7011130.

with this change, DNS in batman-adv based networks is broken.
although the revert breaks babel based networks, this is not as big of a problem.
2018-08-03 15:04:26 +02:00
Christof Schulze
a304814c80 gluon-l3roamd: set gc_thresh for ipv4 and ipv6 to obtain DELNEIGH messages 2018-08-02 00:58:51 +02:00
Christof Schulze
d17cef06a2 gluon-l3roamd: obtain uci cursor 2018-08-02 00:58:51 +02:00
Christof Schulze
b3d7011130 gluon-core: make sure dns traffic leaves the correct interface when there is ipv6 wan uplink 2018-08-02 00:58:51 +02:00
Christof Schulze
0f9ab5e306 gluon-mesh-babel: add new package 2018-08-02 00:58:51 +02:00
Christof Schulze
6241ba5435 gluon-iptables-clamp-mss-to-pmtu: add new package 2018-08-02 00:58:51 +02:00
Tata
cf9b6e34ff gluon-web-osm: add javascript static osm source (#1483)
Signed-off-by: Jan-Tarek Butt <tarek@ring0.de>
2018-07-29 16:07:39 +02:00
Felix Kaechele
d87c4b521b gluon-mesh-vpn: support ingress bandwidth shaping with tunneldigger (#1460)
Signed-off-by: Felix Kaechele <felix@kaechele.ca>
2018-07-26 01:26:00 +02:00
Ruben Barkow
b9b61ed79c gluon-config-mode-theme: background grey of clicked buttons (#1492) 2018-07-25 22:36:48 +02:00
Ruben Barkow
ca2929a61f gluon-web-admin: add site-commit to info page (#1482) 2018-07-25 22:30:29 +02:00
Sven Eckelmann
b9ec173ffb ipq40xx: add support for OpenMesh A62
This device is a dual 5GHz device. It is recommended to manually change the
radio of the first device to the lower 5GHz channels and the second radio
to the upper 5GHz channels.
2018-07-25 22:27:16 +02:00
Sven Eckelmann
36a5604dfe ipq40xx: add support for OpenMesh A42 2018-07-25 22:27:16 +02:00
Sven Eckelmann
3ef28a4684 gluon-client-bridge: Revert "move IPv4 local subnet route to br-client (#1312)"
The commit b3762fc61c ("gluon-client-bridge: move IPv4 local subnet route
to br-client (#1312)") moves the IPv4 prefix from the local-port interface
to br-client. A client requesting an IPv4 connection to the IPv4 anycast
address of the node (the device running gluon) will create following
packets:

1. ARP packet from client to get the MAC of the mac address of the anycast
   IPv4 address
2. ARP reply from node to client with the anycast MAC address for the IPv4
   anycast address
3. IPv4 packet from client which requires reply (for example ICMP echo
   request)
4. ARP request for the client MAC address for its IPv4 address in prefix4
   (done with the mac address of br-client and transmitted over br-client)
5. IPv4 packet from node (transmitted over br-client with br-client MAC
   address) as reply for the client IPv4 packet (for example ICMP echo
   reply)

The step 4 and 5 are problematic here because packets use the node specific
MAC addresses from br-client instead of the anycast MAC address. The client
will receive the ARP packet with the node specific MAC address and change
their own neighbor IP (translation) table. This will for example break the
access to the status page to the connected device or the anycast DNS
forwarder implementation when the client roams to a different node.

This reverts commit b3762fc61c and adds an
upgrade code to remove local_node_route on on existing installations.
2018-07-22 16:42:41 +02:00
Sven Eckelmann
fc59d5208d gluon-mesh-batman-adv: Drop IPv4 anycast related packets from/to bat0
The commit b3762fc61c ("gluon-client-bridge: move IPv4 local subnet route
to br-client (#1312)") moves the IPv4 prefix from the local-port interface
to br-client. A client requesting an IPv4 connection to the IPv4 anycast
address of the node (the device running gluon) will create following
packets:

1. ARP packet from client to get the MAC of the mac address of the anycast
   IPv4 address
2. ARP reply from node to client with the anycast MAC address for the IPv4
   anycast address
3. IPv4 packet from client which requires reply (for example ICMP echo
   request)
4. ARP request for the client MAC address for its IPv4 address in prefix4
   (done with the mac address of br-client and transmitted over br-client)
5. IPv4 packet from node (transmitted over br-client with br-client MAC
   address) as reply for the client IPv4 packet (for example ICMP echo
   reply)

The step 4 is extremely problematic here. ARP replies with the anycast IPv4
address must not be submitted or received via bat0 - expecially not when it
contains an node specific MAC address as source. When it is still done then
the wrong MAC address is stored in the batadv DAT cache and ARP packet is
maybe even forwarded to clients. This latter is especially true for ARP
requests which are broadcast and will be flooded to the complete mesh.

Clients will see these ARP packets and change their own neighbor IP
(translation) table. They will then try to submit the packets for IPv4
anycast addresses to the complete wrong device in the mesh. This will for
example break the access to the status page to the connected device or the
anycast DNS forwarder implementation. Especially the latter causes extreme
latency when clients try to connect to server using a domain name or even
breaks the connection setup process completely. Both are caused by the
unanswered DNS requests which at first glance look like packet loss.

An node must therefore take care of:

* not transmitting ARP packets related to the anycast IPv4 address over
  bat0
* drop ARP packets related to the anycast IPv4 when they are received on
  bat0 from a still broken node
* don't accept ARP packets related to the anycast IPv4 replies on local
  node when it comes from bat0

Fixes: b3762fc61c ("gluon-client-bridge: move IPv4 local subnet route to br-client (#1312)")
2018-07-22 16:42:41 +02:00
Adorfer
65d172f835
gluon-config-mode-mesh-vpn: i18n/de: fix missing comma 2018-07-19 19:28:48 +02:00
Matthias Schiffer
017bcd43ce
gluon-core: remove nixio dependency 2018-07-17 20:08:16 +02:00
Matthias Schiffer
06a9d61523
gluon-web-*: replace nixio with luaposix 2018-07-17 20:08:16 +02:00
Matthias Schiffer
92d90cdfb7
gluon-config-mode-*: replace nixio with gluon.util 2018-07-17 20:08:16 +02:00
Matthias Schiffer
90031ba97a
gluon-status-page: replace nixio with luaposix 2018-07-17 20:08:16 +02:00
Matthias Schiffer
5fc04fb34a
gluon-wan-dnsmasq: replace nixio with luaposix 2018-07-17 20:08:15 +02:00
Matthias Schiffer
32394dc694
gluon-mesh-vpn-core: replace nixio with luaposix 2018-07-17 20:08:15 +02:00
Matthias Schiffer
fd10d7cbb0
gluon-core: replace nixio with luaposix and luabitops 2018-07-17 20:08:15 +02:00
Matthias Schiffer
60a0e78a4a
gluon-core: gluon.util: remove unused function readline() 2018-07-17 20:08:15 +02:00
David Bauer
c4b1febd31 ipq40xx: add target
This commit adds support for the new ipq40xx target.
2018-07-16 01:39:36 +02:00
Matthias Schiffer
7e4bfee3c9
gluon-core: upgrade: remove unused variables 2018-07-14 13:35:28 +02:00
Matthias Schiffer
f1f2bae94f
gluon-core: remove obsolete gluon.site_config library 2018-07-13 23:16:33 +02:00
David Bauer
52bc028e6b ar71xx: add support for OCEDO Koala (#1475) 2018-07-13 01:25:58 +02:00
Matthias Schiffer
210d97c53e
Switch to OpenWrt 18.06 branch 2018-07-10 22:57:40 +02:00
Matthias Schiffer
da058c5ef9
gluon-status-page: move neighbours-batadv wrapper to batadv-specific package 2018-06-30 16:03:13 +02:00
Andreas Ziegler
5cf7c53e69
gluon-config-mode-geo-location: allow overriding geo location description text 2018-06-29 21:01:24 +02:00
Andreas Ziegler
533ea986ad
gluon-config-mode-hostname: allow overriding hostname description text 2018-06-29 20:55:32 +02:00
Ralf Jung
1649635be4
gluon-config-mode-contact-info: allow overriding contact field help and note in site 2018-06-24 19:47:52 +02:00
J0WI
ee97fe8b9e gluon-web-admin: show sha256sum to verify upgrade (#1441) 2018-06-19 19:24:27 +02:00
Sven Eckelmann
ef819cc196 ar71xx: add support for OpenMesh OM2P(-HS)v4 (#1426) 2018-06-09 13:55:38 +02:00
Sven Eckelmann
9d719a2e57 ar71xx: add support for OpenMesh A40/A60 (#1424) 2018-06-08 20:18:30 +02:00
Jan-Philipp Litza
e909d45ab0 gluon-radv-filterd: Invalidate originators cache after some time (#1343) 2018-06-05 21:55:30 +02:00
Matthias Schiffer
603912dd0d
gluon-config-mode-contact-info: restore datatype definition
optional = true does not make sense without a datatype. When no datatype is
set, the empty string will be a valid value, so data is never unset in the
write function. Restore the minlength(1) datatype so the contact setting is
deleted as intended when no value is provided.
2018-06-04 23:37:32 +02:00
Matthias Schiffer
b8fa1b2a99
gluon-config-mode-contact-info: remove useless description
The first half was just the package title, the second was outdated.
2018-06-04 23:15:59 +02:00
Matthias Schiffer
f51eac7582
gluon-status-page: add contact information again
The field was accidentally removed during the status-page rewrite.

Fixes #1401
2018-05-22 22:48:27 +02:00
Christof Schulze
ab7f1acd0c gluon-config-mode-contact-info: provide enhancements for german, english and french translation to comply with DSGVO (#1394)
* do not allow to obligatorily require contact information
* add remark that the data is provided voluntarily
* mention how to delete the data
* be very clear about the fact that the data being entered is public and
  can be downloaded and processed by anyone.
2018-05-19 19:26:33 +02:00
David Bauer
ed7d68490d gluon-config-mode: add platform on config-mode reboot (#1397)
This commit adds the ability to show information about the platform on
config-mode reboot.
2018-05-17 02:30:29 +02:00
lemoer
73c30b0916 gluon-respondd: fix whitespace after "if" 2018-05-05 15:09:30 +02:00
lemoer
dde708692c gluon-respondd: use %SCNu64 instead of %llu for uint64_t 2018-05-05 15:09:30 +02:00
lemoer
6ac7e97fae gluon-respondd: add information from /proc/stat to "statistics"
This commit adds information about:
- how cpu time is spent since boot in jiffies (1/100*sek) (cpu)
    - the value is summed for all cores, so in 10 seconds the
      summed values will increase by 4000, if the cpu has
      4 cores
- context switches since boot (ctxt)
- interrupt counters since boot (intr, softirq)
- forks since boot (processes)

    { "stat": {
       "cpu": {
         "user": 219403,
         "nice": 1714,
         "system": 75159,
         "idle": 2727739,
         "iowait": 2943,
         "irq": 0,
         "softirq": 571
       },
       "intr": 8426340,
       "ctxt": 50992590,
       "processes": 10549,
       "softirq": 5161884
    } }
2018-05-05 15:09:30 +02:00
Matthias Schiffer
1f7ed28b76
gluon-core: set VXLAN/legacy mode in site config
In multidomain setups, VXLAN is enabled by default, but can be disabled in
domain configs using the mesh/vxlan option. In single domain setups, the
mesh/vxlan option is mandatory.

The UCI option for legacy mode is removed.

Fixes #1364
2018-04-27 18:05:50 +02:00
Matthias Schiffer
5d92f125cd
gluon-web-network: remove legacy option for wired mesh 2018-04-27 17:48:36 +02:00
Matthias Schiffer
3519f4e61b
gluon-radv-filterd: correct call to ebtables-tiny
Fixes: 8e5abf02ae ("treewide: switch to ebtables-tiny")
2018-04-27 14:38:01 +02:00
Christof Schulze
2465a103f6
gluon-status-page: when prettifying undefined numbers, show - instead of NaN 2018-04-16 10:23:15 +02:00
Matthias Schiffer
62943f9ca1
gluon-mesh-vpn-tunneldigger: fix typo in description 2018-04-15 22:48:23 +02:00
Matthias Schiffer
6304a317e4
gluon-l3roamd: fix interface checks in initscript
The local_node ifstatus must be checked for local-node, not client. While
we're at it, also clean up the syntax a bit.
2018-04-15 12:49:52 +02:00
Christof Schulze
8959d8c3ea
gluon-status-page: make status page mesh protocol agnostic
batman-adv-specific parts are moved to a new package
gluon-status-page-mesh-batman-adv.
2018-04-15 12:46:01 +02:00
Christof Schulze
b70d4ce20a
gluon-core, gluon-l3roamd: introduce script gluon-list-mesh-interfaces that lists all currently active mesh interfaces 2018-04-15 12:41:01 +02:00
Christof Schulze
6dff120e3c
gluon-status-page: reduce usage of absolute paths in cgi-bin scripts neighbours-nodeinfo and stations 2018-04-15 12:39:36 +02:00
Matthias Schiffer
35ade80f1c
gluon-status-page: move mesh protocol specific definitions into a separate file 2018-04-15 11:36:37 +02:00
Matthias Schiffer
3282a63ea7
gluon-status-page: remove "lastseen" field from neighbours-batadv output
The field is unused.
2018-04-15 10:09:36 +02:00
Matthias Schiffer
433af56f99
gluon-status-page: fix code indentation 2018-04-15 10:01:25 +02:00
Matthias Schiffer
994c94918a
treewide: automatically set SECTION and CATEGORY for Gluon packages 2018-04-14 00:01:04 +02:00
Matthias Schiffer
6f0d9f1e2d
gluon-status-page: fix typo in comment 2018-04-13 22:50:37 +02:00
Matthias Schiffer
74f4119c1b
treewide: add support for building kernel modules used by Gluon into the kernel 2018-04-13 17:32:20 +02:00
Matthias Schiffer
8e5abf02ae
treewide: switch to ebtables-tiny 2018-04-13 16:00:58 +02:00
Matthias Schiffer
543eb17882
gluon-core: remove DNS cache feature
dnsmasq's caching is severly broken and does not handle all answer records
equally. In particular, its cached answers are missing DNSKEY and DS
records, breaking DNSSEC validation on clients.

Remove the cache for now. It may return if dnsmasq is fixed or we switch to
a different resolver.
2018-04-13 15:15:40 +02:00
Matthias Schiffer
395266e404
gluon-core: remove obsolete dnsmasq upgrade script
The script cleaned up an old setting that was removed in 2014.
2018-04-13 15:01:43 +02:00
Matthias Schiffer
ba9fc94e85
gluon-core: get rid of old sysctl settings 2018-04-13 14:41:01 +02:00
Matthias Schiffer
9b937a8c64
gluon-core: remove unused gluon.sysctl Lua module 2018-04-13 14:41:01 +02:00
Matthias Schiffer
25b32ec2fe
treewide: move sysctl settings to /etc/sysctl.d
net.ipv6.conf.br-client.forwarding is moved from gluon-client-bridge to
gluon-mesh-batman-adv, as the setting is not useful with non-bridged
protocols.
2018-04-13 14:41:01 +02:00
Matthias Schiffer
46c5effae3
gluon-core: reduce mac80211 fq_codel memory limit to 256KB on devices with 32MB RAM 2018-04-11 08:33:30 +02:00
Linus Lüssing
951b6632bc gluon-ebtables-limit-arp: do not add multicast addresses to filter
With the batman-adv multicast support compiled back in again we end up
with multicast addresses in the batman-adv translation table.

Currently we wrongly interpret multicast addresses returned by TT as a
unique host, too, which adds them with a source address filter to
ebtables as well. However, the source address of an ethernet frames is
never supposed to be a multicat one.

This leads to unnecessary entries in ebtables. Fixing this by ignoring
those MAC addreses returned by TT which have the multicast bit set.

Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>
2018-04-01 03:26:50 +02:00