AGRAVIS Oldenburg/config: Unterschied zwischen den Versionen

Aus Freifunk Nordwest Wiki
Zur Navigation springen Zur Suche springen
(Multiood)
Zeile 794: Zeile 794:
 
uci commit firewall
 
uci commit firewall
 
</pre>
 
</pre>
 +
 +
== Multihood ==
 +
 +
=== /lib/netifd/proto/bat.sh ===
 +
Make executable
 +
#!/bin/sh
 +
 +
. /lib/functions.sh
 +
. ../netifd-proto.sh
 +
init_proto "$@"
 +
 +
proto_bat_init_config() {
 +
no_device=1
 +
available=1
 +
renew_handler=1
 +
 +
proto_config_add_string 'gw_mode'
 +
}
 +
 +
lookup_site() {
 +
local path="$1" default="$2"
 +
lua -e "print(require('gluon.site').$path('$default'))"
 +
}
 +
 +
lookup_uci() {
 +
local path="$1" default="$2"
 +
uci -q get "$path" || echo "$default"
 +
}
 +
 +
proto_bat_renew() {
 +
local CONFIG="$1"
 +
 +
local ifname
 +
json_get_vars ifname
 +
 +
local IFNAME="${ifname:-$CONFIG}"
 +
 +
lock /var/lock/"$IFNAME".bat.lock
 +
 +
ubus call network.interface dump | jsonfilter \
 +
-e "@.interface[@.proto='batif' && @.data.mesh='${IFNAME:4}' && @.up=true].device" \
 +
| xargs -r -n 1 batctl -m "$IFNAME" interface add
 +
 +
lock -u /var/lock/"$IFNAME".bat.lock
 +
}
 +
 +
proto_bat_setup() {
 +
local CONFIG="$1"
 +
 +
local routing_algo=$(lookup_site 'mesh.batman_adv.routing_algo' 'BATMAN_IV')
 +
 +
local gw_mode ifname
 +
json_get_vars gw_mode ifname
 +
 +
local IFNAME="${ifname:-$CONFIG}"
 +
 +
batctl -m "$IFNAME" routing_algo "$routing_algo"
 +
batctl -m "$IFNAME" interface create
 +
 +
batctl -m "$IFNAME" orig_interval 5000
 +
batctl -m "$IFNAME" hop_penalty "$(lookup_uci 'gluon.mesh_batman_adv.hop_penalty' 15)"
 +
batctl -m "$IFNAME" multicast_mode 0
 +
 +
case "$gw_mode" in
 +
server)
 +
batctl -m "$IFNAME" gw_mode "server"
 +
;;
 +
client)
 +
local gw_sel_class="$(lookup_site 'mesh.batman_adv.gw_sel_class')"
 +
if [ -n "$gw_sel_class" ]; then
 +
batctl -m "$IFNAME" gw_mode "client" "$gw_sel_class"
 +
else
 +
batctl -m "$IFNAME" gw_mode "client"
 +
fi
 +
;;
 +
*)
 +
batctl -m "$IFNAME" gw_mode "off"
 +
;;
 +
esac
 +
 +
 +
local primary0_mac="$(lua -e 'print(require("gluon.util").generate_mac(3))')"
 +
 +
ip link add "pri-${IFNAME:4}" type dummy
 +
echo 1 > /proc/sys/net/ipv6/conf/"pri-${IFNAME:4}"/disable_ipv6
 +
ip link set "pri-${IFNAME:4}" address "$primary0_mac" mtu 1532 up
 +
 +
ip link set "$IFNAME" address "$(lua -e 'print(require("gluon.sysconfig").primary_mac)')"
 +
 +
batctl -m "$IFNAME" interface add "pri-${IFNAME:4}"
 +
 +
proto_init_update "pri-${IFNAME:4}" 1
 +
proto_init_update "$IFNAME" 1
 +
proto_send_update "$CONFIG"
 +
 +
proto_bat_renew "$1"
 +
}
 +
 +
proto_bat_teardown() {
 +
local CONFIG="$1"
 +
local IFNAME="$2"
 +
 +
batctl -m "$IFNAME" interface destroy
 +
ip link del "pri-${IFNAME:4}"
 +
}
 +
 +
add_protocol bat
 +
 +
=== /lib/netifd/proto/batif.sh ===
 +
Make executable
 +
#!/bin/sh
 +
 +
. /lib/functions.sh
 +
. ../netifd-proto.sh
 +
init_proto "$@"
 +
 +
proto_batif_init_config() {
 +
proto_config_add_string 'mesh'
 +
}
 +
 +
proto_batif_setup() {
 +
local CONFIG="$1"
 +
local IFNAME="$2"
 +
 +
local mesh
 +
json_get_vars mesh
 +
 +
ubus call network.interface."$CONFIG" set_data "{\"mesh\":\"$mesh\"}"
 +
 +
proto_init_update "$IFNAME" 1
 +
proto_send_update "$CONFIG"
 +
 +
ubus call network.interface."bat_${mesh}" renew
 +
}
 +
 +
proto_batif_teardown() {
 +
local CONFIG="$1"
 +
local IFNAME="$2"
 +
 +
batctl -m "bat-${mesh}" interface -M del "$IFNAME" 2>/dev/null
 +
}
 +
 +
add_protocol batif
 +
 +
=== Beispiel Netzwerkkonfiguration ===
 +
config interface 'mesh_vlan123'
 +
option ifname 'eth0.123'
 +
option proto 'batif'
 +
option mesh 'hood2'
 +
   
 +
config interface 'bat_hood2'
 +
option ifname 'bat-hood2'
 +
option gw_mode 'client'
 +
option proto 'bat'

Version vom 4. Februar 2021, 17:47 Uhr

Network

package network

config switch_vlan
	option device 'switch0'
	option vlan '1'
	option ports '2 6t'

config switch_vlan
	option device 'switch0'
	option vlan '2'
	option ports '6t'
	
config switch_vlan
	option device 'switch0'
	option vlan '120'
	option ports '0t 1 3t 4t 6t'
	
config switch_vlan
	option device 'switch0'
	option vlan '3'
	option ports '3 4 6t'
	
config switch_vlan
	option device 'switch0'
	option vlan '10'
	option ports '0t 6t'
	
config switch_vlan
	option device 'switch0'
	option vlan '11'
	option ports '0t 6t'
	
config switch_vlan
	option device 'switch0'
	option vlan '12'
	option ports '0t 6t'
	
config switch_vlan
	option device 'switch0'
	option vlan '13'
	option ports '0t 6t'
	
config switch_vlan
	option device 'switch0'
	option vlan '14'
	option ports '0t 6t'
	
config switch_vlan
	option device 'switch0'
	option vlan '15'
	option ports '0t 6t'
	
config switch_vlan
	option device 'switch0'
	option vlan '16'
	option ports '0t 6t'
	
config switch_vlan
	option device 'switch0'
	option vlan '17'
	option ports '0t 6t'
	
config switch_vlan
	option device 'switch0'
	option vlan '18'
	option ports '0t 6t'
	
config switch_vlan
	option device 'switch0'
	option vlan '19'
	option ports '0t 6t'
	
config switch_vlan
	option device 'switch0'
	option vlan '20'
	option ports '0t 6t'
	
config switch_vlan
	option device 'switch0'
	option vlan '21'
	option ports '0t 6t'
	
config switch_vlan
	option device 'switch0'
	option vlan '22'
	option ports '0t 6t'
	
config switch_vlan
	option device 'switch0'
	option vlan '23'
	option ports '0t 6t'
	
config switch_vlan
	option device 'switch0'
	option vlan '24'
	option ports '0t 6t'
	
config switch_vlan
	option device 'switch0'
	option vlan '25'
	option ports '0t 6t'
	
config switch_vlan
	option device 'switch0'
	option vlan '26'
	option ports '0t 6t'
	
config switch_vlan
	option device 'switch0'
	option vlan '27'
	option ports '0t 6t'
	
config switch_vlan
	option device 'switch0'
	option vlan '28'
	option ports '0t 6t'
	
config switch_vlan
	option device 'switch0'
	option vlan '29'
	option ports '0t 6t'
	
config switch_vlan
	option device 'switch0'
	option vlan '30'
	option ports '0t 6t'
	
config switch_vlan
	option device 'switch0'
	option vlan '31'
	option ports '0t 6t'
	
config switch_vlan
	option device 'switch0'
	option vlan '32'
	option ports '0t 6t'
	
config switch_vlan
	option device 'switch0'
	option vlan '33'
	option ports '0t 6t'
	
config switch_vlan
	option device 'switch0'
	option vlan '34'
	option ports '0t 6t'
	
config switch_vlan
	option device 'switch0'
	option vlan '35'
	option ports '0t 6t'
	
config switch_vlan
	option device 'switch0'
	option vlan '36'
	option ports '0t 6t'
	
config switch_vlan
	option device 'switch0'
	option vlan '37'
	option ports '0t 6t'
	
config switch_vlan
	option device 'switch0'
	option vlan '38'
	option ports '0t 6t'
	
config switch_vlan
	option device 'switch0'
	option vlan '39'
	option ports '0t 6t'
	
config switch_vlan
	option device 'switch0'
	option vlan '40'
	option ports '0t 6t'
	
config switch_vlan
	option device 'switch0'
	option vlan '41'
	option ports '0t 6t'
	
config switch_vlan
	option device 'switch0'
	option vlan '42'
	option ports '0t 6t'
	
config switch_vlan
	option device 'switch0'
	option vlan '43'
	option ports '0t 6t'
	
config switch_vlan
	option device 'switch0'
	option vlan '44'
	option ports '0t 6t'
	
config switch_vlan
	option device 'switch0'
	option vlan '45'
	option ports '0t 6t'
	
config switch_vlan
	option device 'switch0'
	option vlan '46'
	option ports '0t 6t'
	
config switch_vlan
	option device 'switch0'
	option vlan '47'
	option ports '0t 6t'
	
config switch_vlan
	option device 'switch0'
	option vlan '48'
	option ports '0t 6t'
	
config switch_vlan
	option device 'switch0'
	option vlan '49'
	option ports '0t 6t'
	
config switch_vlan
	option device 'switch0'
	option vlan '50'
	option ports '0t 6t'
	
config switch_vlan
	option device 'switch0'
	option vlan '51'
	option ports '0t 6t'
	
config switch_vlan
	option device 'switch0'
	option vlan '52'
	option ports '0t 6t'
	
config switch_vlan
	option device 'switch0'
	option vlan '53'
	option ports '0t 6t'
	
config switch_vlan
	option device 'switch0'
	option vlan '54'
	option ports '0t 6t'
	
config switch_vlan
	option device 'switch0'
	option vlan '55'
	option ports '0t 6t'
	
config switch_vlan
	option device 'switch0'
	option vlan '56'
	option ports '0t 6t'
	
config switch_vlan
	option device 'switch0'
	option vlan '57'
	option ports '0t 6t'
	
config switch_vlan
	option device 'switch0'
	option vlan '58'
	option ports '0t 6t'
	
config switch_vlan
	option device 'switch0'
	option vlan '59'
	option ports '0t 6t'
	
config switch_vlan
	option device 'switch0'
	option vlan '60'
	option ports '0t 6t'
	
config switch_vlan
	option device 'switch0'
	option vlan '61'
	option ports '0t 6t'
	
config switch_vlan
	option device 'switch0'
	option vlan '62'
	option ports '0t 6t'
	
config switch_vlan
	option device 'switch0'
	option vlan '63'
	option ports '0t 6t'
	
config switch_vlan
	option device 'switch0'
	option vlan '64'
	option ports '0t 6t'
	
config switch_vlan
	option device 'switch0'
	option vlan '65'
	option ports '0t 6t'
	
config switch_vlan
	option device 'switch0'
	option vlan '66'
	option ports '0t 6t'
	
config switch_vlan
	option device 'switch0'
	option vlan '67'
	option ports '0t 6t'
	
config switch_vlan
	option device 'switch0'
	option vlan '68'
	option ports '0t 6t'
	
config switch_vlan
	option device 'switch0'
	option vlan '69'
	option ports '0t 6t'

config interface 'mesh_vlan3'
	option ifname 'eth0.3'
	option index '0'
	option proto 'gluon_wired'
	option disabled '0'
	option transitive '1'

config interface 'mesh_vlan10'
	option ifname 'eth0.10'
	option index '0'
	option proto 'gluon_wired'
	option disabled '0'
	option transitive '1'
	
config interface 'mesh_vlan11'
	option ifname 'eth0.11'
	option index '0'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	
config interface 'mesh_vlan12'
	option ifname 'eth0.12'
	option index '0'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	
config interface 'mesh_vlan13'
	option ifname 'eth0.13'
	option index '0'
	option proto 'gluon_wired'
	option disabled '0'
	option transitive '1'
	
config interface 'mesh_vlan14'
	option ifname 'eth0.14'
	option index '0'
	option proto 'gluon_wired'
	option disabled '0'
	option transitive '1'
	
config interface 'mesh_vlan15'
	option ifname 'eth0.15'
	option index '0'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	
config interface 'mesh_vlan16'
	option ifname 'eth0.16'
	option index '0'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	
config interface 'mesh_vlan17'
	option ifname 'eth0.17'
	option index '0'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	
config interface 'mesh_vlan18'
	option ifname 'eth0.18'
	option index '0'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	
config interface 'mesh_vlan19'
	option ifname 'eth0.19'
	option index '0'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	
config interface 'mesh_vlan20'
	option ifname 'eth0.20'
	option index '0'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	
config interface 'mesh_vlan21'
	option ifname 'eth0.21'
	option index '0'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	
config interface 'mesh_vlan22'
	option ifname 'eth0.22'
	option index '0'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	
config interface 'mesh_vlan23'
	option ifname 'eth0.23'
	option index '0'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	
config interface 'mesh_vlan24'
	option ifname 'eth0.24'
	option index '0'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	
config interface 'mesh_vlan25'
	option ifname 'eth0.25'
	option index '0'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	
config interface 'mesh_vlan26'
	option ifname 'eth0.26'
	option index '0'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	
config interface 'mesh_vlan27'
	option ifname 'eth0.27'
	option index '0'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	
config interface 'mesh_vlan28'
	option ifname 'eth0.28'
	option index '0'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	
config interface 'mesh_vlan29'
	option ifname 'eth0.29'
	option index '0'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	
config interface 'mesh_vlan30'
	option ifname 'eth0.30'
	option proto 'batif'
	option mesh 'rastede'

config interface 'mesh_vlan31'
	option ifname 'eth0.31'
	option proto 'batif'
	option mesh 'ol2'
	
config interface 'mesh_vlan32'
	option ifname 'eth0.32'
	option index '0'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	
config interface 'mesh_vlan33'
	option ifname 'eth0.33'
	option index '0'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	
config interface 'mesh_vlan34'
	option ifname 'eth0.34'
	option index '0'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	
config interface 'mesh_vlan35'
	option ifname 'eth0.35'
	option index '0'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	
config interface 'mesh_vlan36'
	option ifname 'eth0.36'
	option index '0'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	
config interface 'mesh_vlan37'
	option ifname 'eth0.37'
	option index '0'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	
config interface 'mesh_vlan38'
	option ifname 'eth0.38'
	option index '0'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	
config interface 'mesh_vlan39'
	option ifname 'eth0.39'
	option index '0'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	
config interface 'mesh_vlan40'
	option ifname 'eth0.40'
	option index '0'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	
config interface 'mesh_vlan41'
	option ifname 'eth0.41'
	option index '0'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	
config interface 'mesh_vlan42'
	option ifname 'eth0.42'
	option index '0'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	
config interface 'mesh_vlan43'
	option ifname 'eth0.43'
	option index '0'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	
config interface 'mesh_vlan44'
	option ifname 'eth0.44'
	option index '0'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	
config interface 'mesh_vlan45'
	option ifname 'eth0.45'
	option index '0'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	
config interface 'mesh_vlan46'
	option ifname 'eth0.46'
	option index '0'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	
config interface 'mesh_vlan47'
	option ifname 'eth0.47'
	option index '0'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	
config interface 'mesh_vlan48'
	option ifname 'eth0.48'
	option index '0'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	
config interface 'mesh_vlan49'
	option ifname 'eth0.49'
	option index '0'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	
config interface 'mesh_vlan50'
	option ifname 'eth0.50'
	option proto 'batif'
	option mesh 'ol2'
	
config interface 'mesh_vlan51'
	option ifname 'eth0.51'
	option index '0'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	
config interface 'mesh_vlan52'
	option ifname 'eth0.52'
	option index '0'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	
config interface 'mesh_vlan53'
	option ifname 'eth0.53'
	option index '0'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	
config interface 'mesh_vlan54'
	option ifname 'eth0.54'
	option index '0'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	
config interface 'mesh_vlan55'
	option ifname 'eth0.55'
	option index '0'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	
config interface 'mesh_vlan56'
	option ifname 'eth0.56'
	option index '0'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	
config interface 'mesh_vlan57'
	option ifname 'eth0.57'
	option index '0'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	
config interface 'mesh_vlan58'
	option ifname 'eth0.58'
	option index '0'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	
config interface 'mesh_vlan59'
	option ifname 'eth0.59'
	option index '0'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	
config interface 'mesh_vlan60'
	option ifname 'eth0.60'
	option index '0'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	
config interface 'mesh_vlan61'
	option ifname 'eth0.61'
	option index '0'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	
config interface 'mesh_vlan62'
	option ifname 'eth0.62'
	option index '0'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	
config interface 'mesh_vlan63'
	option ifname 'eth0.63'
	option index '0'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	
config interface 'mesh_vlan64'
	option ifname 'eth0.64'
	option index '0'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	
config interface 'mesh_vlan65'
	option ifname 'eth0.65'
	option index '0'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	
config interface 'mesh_vlan66'
	option ifname 'eth0.66'
	option index '0'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	
config interface 'mesh_vlan67'
	option ifname 'eth0.67'
	option index '0'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	
config interface 'mesh_vlan68'
	option ifname 'eth0.68'
	option index '0'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	
config interface 'mesh_vlan69'
	option ifname 'eth0.69'
	option index '0'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'

config interface 'bat_ol2'
	option ifname 'bat-ol2'
	option gw_mode 'client'
	option proto 'bat'

config interface 'bat_rastede'
	option ifname 'bat-rastede'
        option gw_mode 'client'                 
        option proto 'bat'

config interface 'mgmt'
	option ifname 'eth0.120'
	option proto 'static'
	option ipaddr '172.20.0.2'
	option netmask '16'
	option ip4table '120'
	option ip6addr 'fe80::1'

config interface 'client4'
	option ifname 'br-client'
	option auto '1'
	option proto 'dhcp'
	option ip4table '120'

config rule
	option in 'mgmt'
	option lookup '120'

Firewall

config zone
	option name 'mgmt'
	list network 'mgmt'
	option input 'ACCEPT'
	option output 'ACCEPT'
	option forward 'ACCEPT'

config forwarding
	option src 'mgmt'
	option dest 'mesh'

uci set firewall.mesh.masq='1'
uci set firewall.mesh.mtu_fix='1'
uci set firewall.mesh.masq_src='mgmt'
uci commit firewall

Multihood

/lib/netifd/proto/bat.sh

Make executable

#!/bin/sh

. /lib/functions.sh
. ../netifd-proto.sh
init_proto "$@"

proto_bat_init_config() {
	no_device=1
	available=1
	renew_handler=1

	proto_config_add_string 'gw_mode'
}

lookup_site() {
	local path="$1" default="$2"
	lua -e "print(require('gluon.site').$path('$default'))"
}

lookup_uci() {
	local path="$1" default="$2"
	uci -q get "$path" || echo "$default"
}

proto_bat_renew() {
	local CONFIG="$1"
	
	local ifname
	json_get_vars ifname
	
	local IFNAME="${ifname:-$CONFIG}"

	lock /var/lock/"$IFNAME".bat.lock

	ubus call network.interface dump | jsonfilter \
		-e "@.interface[@.proto='batif' && @.data.mesh='${IFNAME:4}' && @.up=true].device" \
	| xargs -r -n 1 batctl -m "$IFNAME" interface add

	lock -u /var/lock/"$IFNAME".bat.lock
}

proto_bat_setup() {
	local CONFIG="$1"

	local routing_algo=$(lookup_site 'mesh.batman_adv.routing_algo' 'BATMAN_IV')

	local gw_mode ifname
	json_get_vars gw_mode ifname
	
	local IFNAME="${ifname:-$CONFIG}"

	batctl -m "$IFNAME" routing_algo "$routing_algo"
	batctl -m "$IFNAME" interface create

	batctl -m "$IFNAME" orig_interval 5000
	batctl -m "$IFNAME" hop_penalty "$(lookup_uci 'gluon.mesh_batman_adv.hop_penalty' 15)"
	batctl -m "$IFNAME" multicast_mode 0

	case "$gw_mode" in
		server)
			batctl -m "$IFNAME" gw_mode "server"
		;;
		client)
			local gw_sel_class="$(lookup_site 'mesh.batman_adv.gw_sel_class')"
			if [ -n "$gw_sel_class" ]; then
				batctl -m "$IFNAME" gw_mode "client" "$gw_sel_class"
			else
				batctl -m "$IFNAME" gw_mode "client"
			fi
		;;
		*)
			batctl -m "$IFNAME" gw_mode "off"
		;;
	esac


	local primary0_mac="$(lua -e 'print(require("gluon.util").generate_mac(3))')"

	ip link add "pri-${IFNAME:4}" type dummy
	echo 1 > /proc/sys/net/ipv6/conf/"pri-${IFNAME:4}"/disable_ipv6
	ip link set "pri-${IFNAME:4}" address "$primary0_mac" mtu 1532 up
	
	ip link set "$IFNAME" address "$(lua -e 'print(require("gluon.sysconfig").primary_mac)')"

	batctl -m "$IFNAME" interface add "pri-${IFNAME:4}"

	proto_init_update "pri-${IFNAME:4}" 1
	proto_init_update "$IFNAME" 1
	proto_send_update "$CONFIG"

	proto_bat_renew "$1"
}

proto_bat_teardown() {
	local CONFIG="$1"
	local IFNAME="$2"

	batctl -m "$IFNAME" interface destroy
	ip link del "pri-${IFNAME:4}"
}

add_protocol bat

/lib/netifd/proto/batif.sh

Make executable

#!/bin/sh

. /lib/functions.sh
. ../netifd-proto.sh
init_proto "$@"

proto_batif_init_config() {
	proto_config_add_string 'mesh'
}

proto_batif_setup() {
	local CONFIG="$1"
	local IFNAME="$2"
	
	local mesh
	json_get_vars mesh
	
	ubus call network.interface."$CONFIG" set_data "{\"mesh\":\"$mesh\"}"

	proto_init_update "$IFNAME" 1
	proto_send_update "$CONFIG"
	
	ubus call network.interface."bat_${mesh}" renew
}

proto_batif_teardown() {
	local CONFIG="$1"
	local IFNAME="$2"

	batctl -m "bat-${mesh}" interface -M del "$IFNAME" 2>/dev/null
}

add_protocol batif

Beispiel Netzwerkkonfiguration

config interface 'mesh_vlan123'
	option ifname 'eth0.123'
	option proto 'batif'
	option mesh 'hood2'
   
config interface 'bat_hood2'
	option ifname 'bat-hood2'
	option gw_mode 'client'
	option proto 'bat'