-
Notifications
You must be signed in to change notification settings - Fork 322
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
gluon-mesh-batman-adv: refactor interface management
We now create bat0 and primary0 independently of the lower mesh interfaces, making the whole setup a lot more robust. In particular: - we can't accidentially destroy primary0 because of concurrent setup and teardown runs of different interfaces - bat0 will always exist, even when no mesh interfaces are up (e.g. no link on wired mesh) - interfaces going down and up again will never tear down the whole of batman-adv - we can enable and disable bat0 independently of the lower interface states
- Loading branch information
Showing
6 changed files
with
82 additions
and
68 deletions.
There are no files selected for viewing
3 changes: 3 additions & 0 deletions
3
...age/gluon-mesh-batman-adv/files/lib/gluon/core/mesh/post-setup.d/30-gluon-mesh-batman-adv
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
#!/bin/sh | ||
|
||
ubus call network.interface.gluon_bat0 renew |
12 changes: 11 additions & 1 deletion
12
package/gluon-mesh-batman-adv/files/lib/gluon/core/mesh/setup.d/30-gluon-mesh-batman-adv
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,13 @@ | ||
#!/bin/sh | ||
|
||
exec /lib/gluon/mesh-batman-adv/config_mesh_interface setup | ||
if [ "$FIXED_MTU" -eq 0 ]; then | ||
# In case on VLAN on IBSS, first set MTU of the underlying interface | ||
for lower in /sys/class/net/"$IFNAME"/lower_*/wireless; do | ||
lower="${lower%%\/wireless}" | ||
lower="${lower##*\/lower_}" | ||
ip link set dev "$lower" mtu 1536 | ||
break | ||
done | ||
|
||
ip link set dev "$IFNAME" mtu 1532 | ||
fi |
4 changes: 3 additions & 1 deletion
4
package/gluon-mesh-batman-adv/files/lib/gluon/core/mesh/teardown.d/70-gluon-mesh-batman-adv
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,5 @@ | ||
#!/bin/sh | ||
|
||
exec /lib/gluon/mesh-batman-adv/config_mesh_interface teardown | ||
lock /var/lock/gluon_bat0.lock | ||
(echo 'none' > "/sys/class/net/$IFNAME/batman_adv/mesh_iface") 2>/dev/null | ||
lock -u /var/lock/gluon_bat0.lock |
59 changes: 59 additions & 0 deletions
59
package/gluon-mesh-batman-adv/files/lib/netifd/proto/gluon_bat0.sh
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
#!/bin/sh | ||
|
||
. /lib/functions.sh | ||
. ../netifd-proto.sh | ||
init_proto "$@" | ||
|
||
proto_gluon_bat0_init_config() { | ||
no_device=1 | ||
available=1 | ||
renew_handler=1 | ||
} | ||
|
||
proto_gluon_bat0_renew() { | ||
local config="$1" | ||
|
||
lock /var/lock/gluon_bat0.lock | ||
|
||
local ifdump="$(ubus call network.interface dump)" | ||
|
||
echo "$ifdump" | jsonfilter \ | ||
-e "@.interface[@.proto='gluon_mesh' && @.up=true]['device','data']" \ | ||
| while read dev; do | ||
read data | ||
|
||
echo bat0 > "/sys/class/net/$dev/batman_adv/mesh_iface" | ||
|
||
! [ "$(echo "$data" | jsonfilter -e "@.transitive")" = 'true' ] | ||
transitive=$? | ||
|
||
(echo "$transitive" > "/sys/class/net/$dev/batman_adv/no_rebroadcast") 2>/dev/null | ||
done | ||
|
||
lock -u /var/lock/gluon_bat0.lock | ||
} | ||
|
||
proto_gluon_bat0_setup() { | ||
local config="$1" | ||
|
||
local primary0_mac="$(lua -lgluon.util -e 'print(gluon.util.generate_mac(3))')" | ||
|
||
ip link add primary0 type dummy | ||
echo 1 > /proc/sys/net/ipv6/conf/primary0/disable_ipv6 | ||
ip link set primary0 address "$primary0_mac" mtu 1532 up | ||
echo bat0 > /sys/class/net/primary0/batman_adv/mesh_iface | ||
|
||
proto_init_update primary0 1 | ||
proto_send_update "$config" | ||
|
||
proto_gluon_bat0_renew "$1" | ||
} | ||
|
||
proto_gluon_bat0_teardown() { | ||
local config="$1" | ||
|
||
ip link del bat0 | ||
ip link del primary0 | ||
} | ||
|
||
add_protocol gluon_bat0 |
66 changes: 0 additions & 66 deletions
66
package/gluon-mesh-batman-adv/luasrc/lib/gluon/mesh-batman-adv/config_mesh_interface
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters