Commit Graph

62 Commits

Author SHA1 Message Date
Matthias Schiffer
41a9f9b06c
gluon-mesh-batman-adv-core: fix ARP resolution of next-node IPv4 address
The ebtables rules were not adjusted when switching from macvlan to veth.
2017-03-08 22:52:25 +01:00
Jan-Tarek Butt
c9f62fc278
gluon-mesh-batman-adv-core: Move lua file into luasrc dir 2017-02-23 20:27:23 +01:00
Matthias Schiffer
57f8b9bc6a
Switch back roles of br-client and local-node interfaces
When preparing the migration from macvlan to veth for local-node, MAC
address conflicts occurred as some ports of br-client had the same address
as local-node. Reverting the roles of both interfaces fixes this.

By default, br-client is left as an interface without addresses and
firewall rules that drop everything, so the bridge is used to connect its
ports only. gluon-mesh-batman-adv-core changes this to the usual set
of addresses and firewall rules.
2017-02-10 09:58:23 +01:00
Matthias Schiffer
8c4403ba11
gluon-client-bridge, gluon-mesh-batman-adv-core: switch roles of br-client and local-node interfaces
MAC and IP addresses are switched. This makes the gluon-client-bridge
package more useful for different routing protocols that don't need a
unique address on the client bridge.

As a side effect, gluon-radvd is now using the next-node address, which had
been considered before, but was dismissed to avoid having gluon-radvd
depend on gluon-next-node and gluon-mesh-batman-adv. This will be useful
for announcing default routes via gluon-radvd.

One downside is that this introduces a minor dependency on batman-adv in
gluon-respondd: the hotplug script that checked for the client interface
before will now check for local-node. This doesn't really matter: for mesh
protocols without a local-node interface, the check will do nothing (which
makes sense, as there is no interface to bind to for mesh-wide respondd).
2016-12-10 23:43:44 +01:00
Matthias Schiffer
3fc9154d1d
gluon-batman-adv-core: merge gluon-next-node into gluon-batman-adv-core 2016-12-10 23:43:44 +01:00
Jan-Philipp Litza
fcf3abd9c4 gluon-respondd: restart on state change of client iface
Because we unconditionally appended `-i br-client` to the command line of
respondd, it wasn't restarted when br-client changed state. Now, we use a
jsonfilter expression on the network.interface dump data, similar to how the
other interface names are generated, and only add the interface to the argument
list if it is up.
2016-12-09 10:43:24 +01:00
Christof Schulze
ca57cdfe77 gluon-respondd: make initialisation mesh protocol agnostic (#946) 2016-12-08 17:44:29 +01:00
Christof Schulze
65ee128c37
gluon-radvd: externalize arguments
The arguments are now provided by gluon-mesh-batman-adv-core, so
gluon-radvd can be used with other mesh protocols.

[Matthias Schiffer: removed PROVIDES dependency]
2016-07-27 01:24:33 +02:00
Matthias Schiffer
64fdc0d7ba
gluon-mesh-batman-adv-core: add sleep to autoupdater network stop script
Accidentially forgot to commit this. The sleep is necessary so netifd can
actually stop the WLAN interfaces after `wifi down`.
2016-07-19 15:49:07 +02:00
Jan-Tarek Butt
8f5a7c9001
gluon-mesh-batman-adv-core: stop WLAN and batman-adv before autoupdater upgrades
[Matthias Schiffer:
  - improve commit message
  - add pidof check
  - also call `wifi down`
]
2016-07-19 03:41:21 +02:00
Jan-Tarek Butt
1c1f490527
Minify all Lua code 2016-07-10 20:14:25 +02:00
Matthias Schiffer
86ef9b0e97
Fix creation of IBSS interfaces on devices with two radios
Lua's tables are 1-based, so we must decrement the index by 1 to get the
desired MAC addresses. By not doing this, the second IBSS interface would
get the address with index 8, but only indices 0..7 are available.

Fixes: c73a12e0ea
2016-05-14 00:34:04 +02:00
Matthias Schiffer
d77bfe9da9 gluon-mesh-batman-adv-core: fix rssid for setups without 11s 2016-04-27 21:07:46 +02:00
Matthias Schiffer
937fe715c7 gluon-mesh-batman-adv-core: make mesh_lan config a bridge
There are a few devices which have more than one LAN interface (for example
some revision of the TL-WR941ND, which uses a DSA-based switch, so each
switch port has its own netdev.) On these devices we need a bridge for
mesh-on-lan (as the alternative of adding them to batman-adv individually
would need too many MAC addresses.)
2016-04-27 12:20:27 +02:00
lemoer
c73a12e0ea Change MAC schema generation (#715)
While ath9k/ath10k devices can supprt VIFs with any combination of MAC addresses, there are also adapters which have a hardware MAC filter which only allows a few bits to differ. This commit changes the addresses of all VIFs to ony differ in the last 3 bits, which is required to support many Ralink/Mediatek based WLAN adapters.

Technically, the new addresses are generated by calculating an MD5 hash of the primary MAC address and using a part of this hash as a prefix for the MAC addresses.

The addresses (BSSIDs) of the AP VIFs are also reused for the LAN and WAN interfaces in mesh-on-LAN/WAN mode to reduce the number of needed addresses, and thus reduce the chance of collisions. This is not a problem as the MAC addresses of the AP VIFs are never used except as BSSID, and thus not seen by routing protocols like batman-adv.

Fixes #648

[Matthias Schiffer: rewrote commit message]
2016-04-27 12:16:39 +02:00
Matthias Schiffer
f38bbf0d2c gluon-mesh-batman-adv-core: remove 'gluon.batman_adv' Lua module
It is not used anymore.
2016-04-24 09:47:06 +02:00
Matthias Schiffer
ddb9e6b2e5 Merge pull request #679 from T-X/preparations-for-mcast-snooping-final
Preparations for Multicast Snooping Final
2016-04-20 19:44:53 +02:00
Matthias Schiffer
4658afb2c6 gluon-core: commit all UCI configs at the end
Avoid commiting configs inbetween to decrease number of flash writes.

Fixes #714.
2016-04-02 18:56:45 +02:00
Linus Lüssing
c9aa2672bd bridge: Increase IGMP/MLD robustness parameter to three for br-client
We are mostly dealing with the 2.4GHz crap-band here, so increasing the
IGMP/MLD robustness parameter to three to be able to compensate for up
to two consecutive instead of just one lost packet.

Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>
2016-03-10 16:44:34 +01:00
Linus Lüssing
4d00c804c0 bridge: Lower IGMP/MLD query intervals for br-client
There are some devices not acting properly to roaming events, in that
they do not timely reissue IGMP/MLD reports after reconnecting.

To compensate for that this commit reduces the query interval from 125
seconds to 20 and the query response interval from 20 seconds to 5.
This reduces a timeout to 20+5 seconds in the worst-case (12.5s average)
after a roaming event for such broken devices. This should be below the
30s "impatient user threshold" and below any connection timeout.

Until the bridge multicast snooping + querier gets re-enabled this is a
no-op.

Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>
2016-03-10 16:44:05 +01:00
Linus Lüssing
ca9a6f34f3 gluon-mesh-batman-adv-core: Always forward towards mesh/batman-adv
An IGMP/MLD domain split will prevent us from being able to track
multicast listeners on other nodes.

Therefore we need to always hand any multicast packets we received from
local clients to batman-adv. With bridge multicast snooping disabled,
the current setting in Gluon, this is already the case.

However, in preparation to enabling multicast snooping, we need to
enforce forwarding towards batman-adv by setting the bridge port
option "multicast_router" to 2.

Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>
2016-03-08 07:55:55 +01:00
Matthias Schiffer
f0ad8ed5cb gluon-mesh-batman-adv-core: enable mesh_no_rebroadcast for Mesh-on-WAN/LAN
Ethernet links provide transitive connectivity in all but very unusual
setup, enable mesh_no_rebroadcast to reduce load for devices on links with
many nodes.

Fixes #652
2016-02-16 23:26:42 +01:00
Matthias Schiffer
9004028cb4 Convert gluon-announce Lua code to C modules, rename to gluon-respondd
gluon-announced and gluon-announce are merged to gluon-respondd.
2016-02-02 09:18:12 +01:00
Matthias Schiffer
8ffdcaaa1b gluon-mesh-batman-adv-core: announce/neighbours.d: use batman-adv-visdata 2015-12-18 17:46:24 +01:00
Matthias Schiffer
0335ce10e2 gluon-mesh-batman-adv-core: keep disabled state even when the mesh interface section name is changed
Is makes sense to always look for both ibss_radio* and mesh_radio* sections
to determine if the meshing should be enabled when regenerating these
sections. Doing this, the disabled state will survive updates changing the
section name (either updating from pre-2015.2 while keeping IBSS, or
changing from IBSS to 11s or vice-versa).

If both ibss_radio* and mesh_radio* sections exist, the disabled state will
be kept correctly for each section, the behaviour is changed only when
creating a section that didn't exist before.

Fixes #549
2015-11-18 03:01:18 +01:00
Matthias Schiffer
557a073dc7 gluon-mesh-batman-adv-core/gluon-luci-portconfig: fix configuration of br-client ifname with multiple interfaces in lan_ifname
There are a few devices on which lan_ifname contains multiple interface
names separated by spaces.
2015-10-26 22:29:44 +01:00
Nils Schneider
84b6374970 gluon-client-bridge: basic br-client config and wireless AP
This package provides br-client and sets up a wireless AP interface for
clients.
2015-10-26 21:14:32 +01:00
Matthias Schiffer
2fefdeee63 gluon-mesh-batman-adv-core: neighbours.d/wifi: output empty object instead of empty list when there are no neighbours on an interface 2015-10-15 02:42:28 +02:00
Matthias Schiffer
b46d4fd537 gluon-mesh-batman-adv-core: make gateway selection class configurable
Fixes #401
2015-10-12 21:49:02 +02:00
kb-light
955dc886a8 gluon-mesh-batman-adv-core: prepare for 802.11s mesh
keep macfilter and maclist config after fw-update
2015-09-22 10:48:09 +02:00
Nils Schneider
34752c7e0b br-client: convert option ifname to list ifname
Convert option ifname in br-client to use a list instead. This
simplifies adding and remove interfaces:

uci:add_to_set("network", "client", "ifname", "eth0")
uci:remove_from_set("network", "client", "ifname", "eth0")

An option ifname will be automatically converted to a list when
performing an upgrade.

Packages affected: gluon-mesh-batman-adv-core, gluon-luci-portconfig
2015-09-04 20:31:53 +02:00
Jan-Philipp Litza
bccf4f7b21 gluon-mesh-batman-adv-core: Add lua code for iface listing, don't fork 2015-09-03 16:33:13 +02:00
Jan-Philipp Litza
339a6c9959 Remove dependencies on luci.util (and partly nixio.fs) from announce scripts 2015-09-02 13:17:59 +02:00
Matthias Schiffer
d97586dd89 Merge branch 'announce-separate-frequencies' of https://github.com/FreifunkBremen/gluon 2015-08-30 23:53:36 +02:00
Jan-Philipp Litza
89a9d8138c gluon-mesh-batman-adv-core: Announce client count by frequency 2015-08-30 23:39:45 +02:00
Jan-Philipp Litza
15a80aaffd Switch from luci-lib-json to luci-lib-jsonc
Apart from replacing a patch for the former by two patches for latter,
this involved minimal adaptations of the lua scripts in the following
packages:

* gluon-announce
* gluon-announced
* gluon-mesh-batman-adv-core
* gluon-status-page
2015-08-30 21:05:13 +02:00
Nils Schneider
177086b881 gluon-radio-config: basic wireless configuration
Split basic radio configuration from gluon-mesh-batman-adv as this will
be required for virtually any wireless mesh protocol.

This package takes care of setting:

  - wireless channel,
  - htmode and
  - regulatory domain

gluon-mesh-batman-adv-core depends on this package.
2015-08-18 11:41:14 +02:00
Matthias Schiffer
26c6a787f6 Merge remote-tracking branch 'origin/flexible-wifi' 2015-08-07 17:45:23 +02:00
Nils Schneider
2a93c58042 mesh-batadv-core: introduce 11s mesh, refactor wireless config
This is a site.conf-breaking change in regard to the wireless config.
Make sure to read http://gluon.readthedocs.org/en/latest/user/site.html
and update your site.conf accordingly!

Support for 802.11s mesh interfaces has been added. Gluon now supports
three interface types: ap, ibss and mesh. All of them are now optional
and may be configured independently in site.conf.

A sample site.conf may look like this:

    wifi24 = {
            channel = 1,
            htmode = 'HT40+',
            ap = {
                    ssid = 'luebeck.freifunk.net',
            },
            ibss = {
                    ssid = '02:d1:11:37:fc:38',
                    bssid = '02:d1:11:37:fc:38',
                    mcast_rate = 12000,
            },
            mesh = {
                    id = 'ffhl-mesh',
                    mcast_rate = 12000,
            },
    },
2015-08-04 23:05:29 +02:00
Jan-Philipp Litza
4e5b3354d2 gluon-mesh-batman-adv-core: Only announce valid IPv6 addresses
The nodeinfo/network/addresses announcement included deprecated and
tentative addresses, which it clearly shouldn't as the host doesn't want
to be contacted on those addresses. They are now filtered out.
2015-08-04 00:11:45 +02:00
Matthias Schiffer
f6498e8773 Update modules 2015-07-18 18:02:13 +02:00
Matthias Schiffer
34e0451e45 gluon-mesh-batman-adv-core: unconditionally set the WAN MAC address
This fixes MAC address conflicts on devices which use the eth0 as primary
address.
2015-07-11 18:27:35 +02:00
Matthias Schiffer
f5764a4a7b gluon-mesh-batman-adv-core: adjust rssid config to renamed WLAN interfaces
This should fix the signal strength indicators on the TP-Link CPE210/510.
2015-07-10 20:58:46 +02:00
Matthias Schiffer
68a3b5f394 gluon-announce, ...: don't output empty lists where not appropriate
Always output empty objects or nothing at all where objects are expected, but
no elements exist.

Also remove a few unneeded "requires", a few basic modules are provided by
announce.lua by default.
2015-06-15 21:17:00 +02:00
Matthias Schiffer
317478e2b7 gluon-mesh-batman-adv-core: don't break network configuration on upgrades with mesh_on_lan=true 2015-05-28 01:44:25 +02:00
Matthias Schiffer
6a31830600 gluon-mesh-batman-adv-core: always set hop penalty to 15
15 is the default in batman-adv-legacy, the new default 30 in newer batman-adv
versions is too high in larger networks.
2015-05-16 14:00:06 +02:00
Nils Schneider
39d0c8f459 mesh-batman-adv: mesh_on_lan
This adds mesh_on_lan functionality.

A new optional site.conf option, mesh_on_lan, has been added. If set to
'true', all LAN ports will be used for meshing instead of being part of
the client bridge.
2015-05-06 13:57:46 +02:00
Nils Schneider
a349dd07bd nodeinfo: mesh interface classes (wireless, tunnel, other)
This will introduce a new nodeinfo object, network.mesh.bat0.interfaces,
containing any of the the following subordinated objects:

- wireless
- tunnel
- other

Each of these objects contains a (possibly empty) list of MAC addresses
(lowercase, colon-notation) corresponding to a interface of the given
class. Combined with a batman graph it is thus possible to mark
sub-graphs as "wireless" or "vpn".

The previously used object mesh_intefaces is superseded by this new
object structure and mesh_interfaces will be removed in a future Gluon
release.
2015-05-04 19:15:39 +02:00
DO9XE
44beb0c178 gluon-mesh-batman-adv-core: make wireless-disable state survive updates and allow site option 2015-04-25 21:38:57 +02:00
Nils Schneider
653ea4a301 Merge pull request #76 from freifunk-gluon/neighours
announce neighbours using alfred/gluon-announce
2015-03-24 20:56:39 +01:00