Although batman-adv config is cycled in config_foreach, changes
are made in the network config. Thus, this one has to be committed.
Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
batman-adv allows to configure three different objects:
* batadv hardif
- network interface used by batadv meshif to transport the batman-adv
packets
- its master interface is set to the batadv meshif
* batadv (meshif/softif)
- virtual interface that emulates a normal 802.3 interface on top
- encapsulates traffic and forwards it via the batadv hardifs
* batadv vlan
- potential VLAN ID on top of batadv meshif
- allows filtering of traffic from specific VIDs
While batadv vlan objects were already represented as an own proto
"batadv_vlan", the batadv meshif could never be fully configured using
/etc/config/network. Instead, parts of its configuration were stored in
/etc/config/batman_adv and some in the interfaces with the "batadv" proto.
To increase the confusion, the "batadv" proto wasn't used to define the
batadv meshif but to identify batadv (slave) hardifs. The batman-adv
meshifs were also never created directly but only when a hardif was
configured. The actual modification of the configuration settings was then
applied using a hotplug script hack. The batadv meshif network interface
could therefore only be created when an hardif was available and not
manipulated with ifup/ifdown. Also `/etc/init.d/network reload` didn't
modify the batadv meshif interface configuration correctly.
The "batadv" is now renamed to "batadv_hardif" and a new "batadv" proto is
used to configure the main (meshif) network interface with all its
configuration.
A simple network configuration with WiFi & ethernet interfaces and static
IP on top of bat0 would look like:
# batadv meshif bat0
config interface 'bat0'
option proto 'batadv'
option routing_algo 'BATMAN_IV'
option aggregated_ogms 1
option ap_isolation 0
option bonding 0
option fragmentation 1
#option gw_bandwidth '10000/2000'
option gw_mode 'off'
#option gw_sel_class 20
option log_level 0
option orig_interval 1000
option bridge_loop_avoidance 1
option distributed_arp_table 1
option multicast_mode 1
option network_coding 0
option hop_penalty 30
option isolation_mark '0x00000000/0x00000000'
# add *single* wifi-iface with network bat0_hardif_wlan as hardif to bat0
config interface 'bat0_hardif_wlan'
option mtu '1536'
option proto 'batadv_hardif'
option master 'bat0'
# option ifname is filled out by the wifi-iface
# add eth0 as hardif to bat0
config interface 'bat0_hardif_eth0'
option proto 'batadv_hardif'
option master 'bat0'
option ifname 'eth0'
option mtu '1536'
# configure IP on bat0
config interface 'bat0_lan'
option ifname 'bat0'
option proto 'static'
option ipaddr '192.168.1.1'
option netmask '255.255.255.0'
option ip6assign '60'
Signed-off-by: Sven Eckelmann <sven@narfation.org>
hop_penalty is the last remaining setting which is directly writing to
sysfs instead of using a implementation (sysfs vs. netlink) abstraction
layer. batctl now provides a wrapper function that allows the script to
directly use it to take care of communicating with the driver.
Signed-off-by: Sven Eckelmann <sven@narfation.org>
The batman-adv scripts are still using sysfs for setting the hop_penalty.
Since the sysfs is deprecated, the batctl interface should be used to make
it independent of implementation details (sysfs vs. netlink).
Signed-off-by: Sven Eckelmann <sven@narfation.org>
The batctl tool should be used for modifying settings in the batman-adv
driver to keep the scripts consistent and allow to use the correct way of
communicating with the kernel (sysfs vs. netlink).
The gw_mode, gw_bandwidth and gw_sel_class options are all handled by
the same gw_mode command in batctl and thus have to be combined depending
on the "gw_mode" value.
Signed-off-by: Sven Eckelmann <sven@narfation.org>
The actual memset fix for cfg80211_get_station's sinfo is already part of
the mac80211 package and doesn't have to be shipped anymore with
batman-adv.
Signed-off-by: Sven Eckelmann <sven@narfation.org>
__poll_t is already defined by the mac80211's backports and
doesn't have to be redefined in the compat-hacks.h.
Signed-off-by: Sven Eckelmann <sven@narfation.org>
from_timer is already defined by the mac80211's backports and
doesn't have to be redefined in the compat-hacks.h.
Signed-off-by: Sven Eckelmann <sven@narfation.org>
skb_put* is already defined by the mac80211's backports and
doesn't have to be redefined in the compat-hacks.h.
Signed-off-by: Sven Eckelmann <sven@narfation.org>
nla_put_u64_64bit is already defined by the mac80211's backports and
doesn't have to be redefined in the compat-hacks.h.
Signed-off-by: Sven Eckelmann <sven@narfation.org>
netif_trans_update is already defined by the mac80211's backports and
doesn't have to be redefined in the compat-hacks.h.
Signed-off-by: Sven Eckelmann <sven@narfation.org>
NL80211_STA_INFO_EXPECTED_THROUGHPUT is defined by the mac80211 package and
doesn't have to be redefined in the compat-hacks.h.
Signed-off-by: Sven Eckelmann <sven@narfation.org>
The linux/build_bug.h is already provided by mac80211's backports. It is
not needed anymore to adjust the includes to use the older linux/bug.h
Signed-off-by: Sven Eckelmann <sven@narfation.org>
* correct binary for batctl-default to /usr/libexec/batctl-default
* while at it fix description of batctl-full
Signed-off-by: Sven Roederer <freifunk@it-solutions.geroedel.de>
* support latest kernels (3.16 - 5.0)
* coding style cleanups and refactoring
* allow to enable debug tracing without full batman-adv debugfs support
* enable inconsistency reporting for most netlink dump commands
* bugs squashed:
- avoid unnecessary kernel warning (panic) during detection of interface loops
- work around incorrect ethernet header offset in transmit code path
Signed-off-by: Sven Eckelmann <sven@narfation.org>
* coding style cleanups and refactoring
* add gateway selection manpage section for B.A.T.M.A.N. V
* bugs squashed:
- re-integrate support for translation table unicast/multicast filter
- avoid incorrect warning about disabled mesh interface when debugfs
support is not enabled in batman-adv
Signed-off-by: Sven Eckelmann <sven@narfation.org>
Due to rearrangements of the libmicrohttpd the non
ssl variant is now called libmicrohttpd.
Signed-off-by: Daniel Engberg <daniel.engberg.lists@pyret.net>
The batctl binary is currently optional for batman-adv installations. But
new configuration settings will only be exposed via generic netlink. The
batctl tool will therefore be required to modify them.
batctl must therefore no longer depend on batman-adv but batman-adv must
depend on batctl. Some already implemented settings are already moved to
batctl.
Signed-off-by: Sven Eckelmann <sven@narfation.org>
The batctl binary is currently optional for batman-adv installations. But
new configuration settings will only be exposed via generic netlink. The
batctl tool will therefore be required to modify them.
To also fit batctl in some of the smaller devices, a new variant
batctl-tiny is build which only provides the settings subcommands. The
batctl-default variant is equal to the old batctl package and batctl-full
also provides the commands which were disabled until now.
Signed-off-by: Sven Eckelmann <sven@narfation.org>
The network topology of a BMX6 mesh can be obtained by asking all the nodes
about their links via the bmx6-info script. The wget() function in the
bmx6json.lua file is part of the process, but it often returns nil, even if
the remote data can actually be fetched, in what seems to be a race condition.
By calling the sys.exec("") function empty, the race condition disappears.
Dirty fix to https://github.com/openwrt-routing/packages/issues/436.
Signed-off-by: Roger Pueyo Centelles <roger.pueyo@guifi.net>
The bmx6-info script will return null when no tunnels are known to BMX6.
However, the "Graph" and the "Tunnels" pages expect a JSON structure with an
array of tunnels. In case no tunnels are known to BMX6, bmx6-info now returns
'{ "tunnels" : [] }'.
Fixes#434
Signed-off-by: Roger Pueyo Centelles <roger.pueyo@guifi.net>
The JavaScript code of the network graph tried to fetch the topology from
%HOST/cgi-bin/luci/status/bmx6/topology, but the topology entry is now located
at admin->network->BMX6 (i.e., %HOST/cgi-bin/luci/admin/network/BMX6/topology).
Fixes#432
Signed-off-by: Roger Pueyo Centelles <roger.pueyo@guifi.net>
This commit fixes a bug in bmx7-info script's "$info" call when no
interfaces are being used by BMX7, or when no links have been
established. In those cases, the generated JSON output struct contained
extra commas, which made it invalid.
Closes#430
Signed-off-by: Roger Pueyo Centelles <roger.pueyo@guifi.net>