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'