AGRAVIS Oldenburg/config

< AGRAVIS Oldenburg
Version vom 29. März 2022, 16:18 Uhr von Sk (Diskussion | Beiträge) (IPv6 Client Multidomain)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

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 proto 'gluon_wired'
	option disabled '0'
	option transitive '1'
	option macaddr '02:fb:e4:51:9a:10'

config interface 'mesh_vlan11'
	option ifname 'eth0.11'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	option macaddr '02:fb:e4:51:9a:11'

config interface 'mesh_vlan12'
	option ifname 'eth0.12'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	option macaddr '02:fb:e4:51:9a:12'

config interface 'mesh_vlan13'
	option ifname 'eth0.13'
	option index '0'
	option proto 'gluon_wired'
	option disabled '0'
	option transitive '1'
	option macaddr '02:fb:e4:51:9a:13'

config interface 'mesh_vlan14'
	option ifname 'eth0.14'
	option proto 'gluon_wired'
	option disabled '0'
	option transitive '1'
	option macaddr '02:fb:e4:51:9a:14'

config interface 'mesh_vlan15'
	option ifname 'eth0.15'
	option proto 'gluon_wired'
	option disabled '0'
	option transitive '1'
	option macaddr '02:fb:e4:51:9a:15'

config interface 'mesh_vlan16'
	option ifname 'eth0.16'
	option proto 'agravis_wired'
	option domain 'oldenburg2'
	option domainif 'ol2'
	option disabled '0'
	option transitive '1'
	option macaddr '02:fb:e4:51:9a:16'

config interface 'mesh_vlan17'
	option ifname 'eth0.17'
	option proto 'gluon_wired'
	option disabled '0'
	option transitive '1'
	option macaddr '02:fb:e4:51:9a:17'

config interface 'mesh_vlan18'
	option ifname 'eth0.18'
	option proto 'gluon_wired'
	option disabled '0'
	option transitive '1'
	option macaddr '02:fb:e4:51:9a:18'

config interface 'mesh_vlan19'
	option ifname 'eth0.19'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	option macaddr '02:fb:e4:51:9a:19'

config interface 'mesh_vlan20'
	option ifname 'eth0.20'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	option macaddr '02:fb:e4:51:9a:20'

config interface 'mesh_vlan21'
	option ifname 'eth0.21'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	option macaddr '02:fb:e4:51:9a:21'

config interface 'mesh_vlan22'
	option ifname 'eth0.22'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	option macaddr '02:fb:e4:51:9a:22'

config interface 'mesh_vlan23'
	option ifname 'eth0.23'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	option macaddr '02:fb:e4:51:9a:23'

config interface 'mesh_vlan24'
	option ifname 'eth0.24'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	option macaddr '02:fb:e4:51:9a:24'

config interface 'mesh_vlan25'
	option ifname 'eth0.25'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	option macaddr '02:fb:e4:51:9a:25'

config interface 'mesh_vlan26'
	option ifname 'eth0.26'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	option macaddr '02:fb:e4:51:9a:26'

config interface 'mesh_vlan27'
	option ifname 'eth0.27'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	option macaddr '02:fb:e4:51:9a:27'

config interface 'mesh_vlan28'
	option ifname 'eth0.28'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	option macaddr '02:fb:e4:51:9a:28'

config interface 'mesh_vlan29'
	option ifname 'eth0.29'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	option macaddr '02:fb:e4:51:9a:29'

config interface 'mesh_vlan30'
	option ifname 'eth0.30'
	option proto 'agravis_wired'
	option domain 'rastede'
	option domainif 'rastede'
	option disabled '0'
	option transitive '1'
	option macaddr '02:fb:e4:51:9a:30'

config interface 'mesh_vlan31'
	option ifname 'eth0.31'
	option proto 'agravis_wired'
	option domain 'oldenburg2'
	option domainif 'ol2'
	option disabled '0'
	option transitive '1'
	option macaddr '02:fb:e4:51:9a:31'

config interface 'mesh_vlan32'
	option ifname 'eth0.32'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	option macaddr '02:fb:e4:51:9a:32'

config interface 'mesh_vlan33'
	option ifname 'eth0.33'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	option macaddr '02:fb:e4:51:9a:33'

config interface 'mesh_vlan34'
	option ifname 'eth0.34'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	option macaddr '02:fb:e4:51:9a:34'

config interface 'mesh_vlan35'
	option ifname 'eth0.35'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	option macaddr '02:fb:e4:51:9a:35'

config interface 'mesh_vlan36'
	option ifname 'eth0.36'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	option macaddr '02:fb:e4:51:9a:36'

config interface 'mesh_vlan37'
	option ifname 'eth0.37'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	option macaddr '02:fb:e4:51:9a:37'

config interface 'mesh_vlan38'
	option ifname 'eth0.38'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	option macaddr '02:fb:e4:51:9a:38'

config interface 'mesh_vlan39'
	option ifname 'eth0.39'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	option macaddr '02:fb:e4:51:9a:39'

config interface 'mesh_vlan40'
	option ifname 'eth0.40'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	option macaddr '02:fb:e4:51:9a:40'

config interface 'mesh_vlan41'
	option ifname 'eth0.41'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	option macaddr '02:fb:e4:51:9a:41'

config interface 'mesh_vlan42'
	option ifname 'eth0.42'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	option macaddr '02:fb:e4:51:9a:42'

config interface 'mesh_vlan43'
	option ifname 'eth0.43'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	option macaddr '02:fb:e4:51:9a:43'

config interface 'mesh_vlan44'
	option ifname 'eth0.44'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	option macaddr '02:fb:e4:51:9a:44'

config interface 'mesh_vlan45'
	option ifname 'eth0.45'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	option macaddr '02:fb:e4:51:9a:45'

config interface 'mesh_vlan46'
	option ifname 'eth0.46'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	option macaddr '02:fb:e4:51:9a:46'

config interface 'mesh_vlan47'
	option ifname 'eth0.47'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	option macaddr '02:fb:e4:51:9a:47'

config interface 'mesh_vlan48'
	option ifname 'eth0.48'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	option macaddr '02:fb:e4:51:9a:48'

config interface 'mesh_vlan49'
	option ifname 'eth0.49'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	option macaddr '02:fb:e4:51:9a:49'

config interface 'mesh_vlan50'
	option ifname 'eth0.50'
	option proto 'agravis_wired'
	option domain 'oldenburg2'
	option domainif 'ol2'
	option disabled '0'
	option transitive '1'
	option macaddr '02:fb:e4:51:9a:50'

config interface 'mesh_vlan51'
	option ifname 'eth0.51'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	option macaddr '02:fb:e4:51:9a:51'

config interface 'mesh_vlan52'
	option ifname 'eth0.52'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	option macaddr '02:fb:e4:51:9a:52'

config interface 'mesh_vlan53'
	option ifname 'eth0.53'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	option macaddr '02:fb:e4:51:9a:53'

config interface 'mesh_vlan54'
	option ifname 'eth0.54'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	option macaddr '02:fb:e4:51:9a:54'

config interface 'mesh_vlan55'
	option ifname 'eth0.55'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	option macaddr '02:fb:e4:51:9a:55'

config interface 'mesh_vlan56'
	option ifname 'eth0.56'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	option macaddr '02:fb:e4:51:9a:56'

config interface 'mesh_vlan57'
	option ifname 'eth0.57'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	option macaddr '02:fb:e4:51:9a:57'

config interface 'mesh_vlan58'
	option ifname 'eth0.58'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	option macaddr '02:fb:e4:51:9a:58'

config interface 'mesh_vlan59'
	option ifname 'eth0.59'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	option macaddr '02:fb:e4:51:9a:59'

config interface 'mesh_vlan60'
	option ifname 'eth0.60'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	option macaddr '02:fb:e4:51:9a:60'

config interface 'mesh_vlan61'
	option ifname 'eth0.61'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	option macaddr '02:fb:e4:51:9a:61'

config interface 'mesh_vlan62'
	option ifname 'eth0.62'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	option macaddr '02:fb:e4:51:9a:62'

config interface 'mesh_vlan63'
	option ifname 'eth0.63'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	option macaddr '02:fb:e4:51:9a:63'

config interface 'mesh_vlan64'
	option ifname 'eth0.64'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	option macaddr '02:fb:e4:51:9a:64'

config interface 'mesh_vlan65'
	option ifname 'eth0.65'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	option macaddr '02:fb:e4:51:9a:65'

config interface 'mesh_vlan66'
	option ifname 'eth0.66'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	option macaddr '02:fb:e4:51:9a:66'

config interface 'mesh_vlan67'
	option ifname 'eth0.67'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	option macaddr '02:fb:e4:51:9a:67'

config interface 'mesh_vlan68'
	option ifname 'eth0.68'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	option macaddr '02:fb:e4:51:9a:68'

config interface 'mesh_vlan69'
	option ifname 'eth0.69'
	option proto 'gluon_wired'
	option disabled '1'
	option transitive '1'
	option macaddr '02:fb:e4:51:9a:69'

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 rule
	option in 'mgmt'
	option goto '100000'

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

config rule 'routing_bat0'
	option priority '100000'
	option lookup '100'

config interface 'agravis_bat_ol2'
	option gw_mode 'client'
	option proto 'agravis_bat'
	option domain 'oldenburg2'
	option domainif 'ol2'

config interface 'bat_ol2'
	option multicast_router '2'
	option ifname 'bat-ol2'
	option auto '1'
	option macaddr 'b4:fb:e4:51:9a:46'
	option learning '1'
	option proto 'none'

config interface 'client_ol2'
	option ifname 'bat-ol2'
	option auto '1'
	option proto 'dhcp'
	option ipv6 '1'
	option ip4table '101'
	option ip6table '101'

config rule 'routing_ol2'
	option priority '100001'
	option lookup '101'

config rule6 'routing6_ol2'
	option priority '100001'
	option lookup '101'

config interface 'agravis_bat_rastede'
	option gw_mode 'client'
	option proto 'agravis_bat'
	option domain 'rastede'
	option domainif 'rastede'

config interface 'bat_rastede'
	option multicast_router '2'
	option ifname 'bat-rastede'
	option auto '1'
	option macaddr 'b4:fb:e4:51:9a:46'
	option learning '1'
	option proto 'none'

config interface 'client_rastede'
	option ifname 'bat-rastede'
	option auto '1'
	option proto 'dhcp'
	option ipv6 '1'
	option ip4table '102'
	option ip6table '102'

config rule 'routing_rastede'
	option priority '100002'
	option lookup '102'

config rule6 'routing6_rastede'
	option priority '100002'
	option lookup '102'

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/gluon/upgrade/742-agravis

#!/bin/sh
function mkifsetupteardown() {
	mkdir "$2"
	find "$1" -type d -print | sed -n "s|^$1/||p" | while IFS= read -r dir; do
		mkdir "$2/$dir"
	done
	find "$1" -type f -print | sed -n "s|^$1/||p" | while IFS= read -r file; do
		sed 's/gluon_bat0/agravis_bat_$DOMAINIF/' "$1/$file" > "$2/$file"
        chmod +x "$2/$file"
	done
}

mkifsetupteardown "/lib/gluon/core/mesh/setup.d" "/lib/gluon/core/mesh/agravis-setup.d"
mkifsetupteardown "/lib/gluon/core/mesh/post-setup.d" "/lib/gluon/core/mesh/agravis-post-setup.d"
mkifsetupteardown "/lib/gluon/core/mesh/teardown.d" "/lib/gluon/core/mesh/agravis-teardown.d"

# TODO lua -e "print(require('gluon.site').$path('$default'))" returning correct site?
sed -e 's/gluon_bat0.lock/agravis_bat_$domainif.lock/' \
    -e 's/gluon_bat0/agravis_bat/' \
    -e 's/local gw_mode/local gw_mode domain domainif/' \
    -e 's/json_get_vars gw_mode/json_get_vars gw_mode domain domainif/' \
    -e 's/primary0_/pri_/' \
    -e 's/primary0/pri-$domainif/' \
    -e 's/batctl/batctl -m "bat-$domainif"/' \
    -e '/^proto_agravis_bat_renew() {$/{N;s/proto_agravis_bat_renew() {\n\tlocal config="$1"/proto_agravis_bat_renew() {\n\tlocal config="$1"\n\n\tlocal domain domainif\n\tjson_get_vars domain domainif/}' \
    -e '/^proto_agravis_bat_teardown() {$/{N;s/proto_agravis_bat_teardown() {\n\tlocal config="$1"/proto_agravis_bat_teardown() {\n\tlocal config="$1"\n\n\tlocal domain domainif\n\tjson_get_vars domain domainif/}' \
    -e "s/@.proto='gluon_mesh'/@.proto='agravis_mesh' \&\& @.data.domainif='\$domainif'/" \
    -e "s/proto_config_add_string 'gw_mode'/proto_config_add_string 'gw_mode'\n\tproto_config_add_string 'domain'\n\tproto_config_add_string 'domainif'/" \
    /lib/netifd/proto/gluon_bat0.sh >/lib/netifd/proto/agravis_bat.sh
chmod +x /lib/netifd/proto/agravis_bat.sh

sed -e 's/gluon_mesh/agravis_mesh/' \
    -e 's!/lib/gluon/core/mesh/!/lib/gluon/core/mesh/agravis-!' \
    -e 's/local fixed_mtu transitive/local fixed_mtu transitive domain domainif/' \
    -e 's/json_get_vars fixed_mtu transitive/json_get_vars fixed_mtu transitive domain domainif/' \
    -e 's/export TRANSITIVE="${transitive:-0}"/export TRANSITIVE="${transitive:-0}"\n\texport DOMAIN="$domain"\n\texport DOMAINIF="$domainif"/' \
    -e 's/json_add_boolean transitive "$TRANSITIVE"/json_add_boolean transitive "$TRANSITIVE"\n\tjson_add_string domain "$DOMAIN"\n\tjson_add_string domainif "$DOMAINIF"/' \
    -e 's/proto_config_add_boolean transitive/proto_config_add_boolean transitive\n\tproto_config_add_string domain\n\tproto_config_add_string domainif/' \
    -e 's!for script in /lib/gluon/core/mesh/agravis-teardown.d/!local domain domainif\n\tjson_get_vars domain domainif\n\texport DOMAIN="$domain"\n\texport DOMAINIF="$domainif"\n\n\tfor script in /lib/gluon/core/mesh/agravis-teardown.d/!' \
    /lib/netifd/proto/gluon_mesh.sh >/lib/netifd/proto/agravis_mesh.sh
chmod +x /lib/netifd/proto/agravis_mesh.sh

sed -e 's/gluon_wired/agravis_wired/' \
    -e 's/proto_config_add_string vxpeer6addr/proto_config_add_string vxpeer6addr\n\tproto_config_add_string domain\n\tproto_config_add_string domainif/' \
    -e 's/local transitive index vxlan vxpeer6addr/local transitive index vxlan vxpeer6addr domain domainif/' \
    -e 's/json_get_vars transitive index vxlan vxpeer6addr/json_get_vars transitive index vxlan vxpeer6addr domain domainif/' \
    -e "s/json_add_string proto 'gluon_mesh'/json_add_string proto 'agravis_mesh'\n\tjson_add_string domain \"\$domain\"\n\tjson_add_string domainif \"\$domainif\"/" \
    -e "s#require(\"gluon.util\").domain_seed_bytes(#require(\"gluon.agravis\").domain_seed_bytes(\"'\"\$(cat /lib/gluon/domains/\"\$domain\".json | jsonfilter -e \"@.domain_seed\")\"'\", #" \
    /lib/netifd/proto/gluon_wired.sh >/lib/netifd/proto/agravis_wired.sh
chmod +x /lib/netifd/proto/agravis_wired.sh

cat <<EOF >/usr/lib/lua/gluon/agravis.lua
local util = require 'gluon.util'

local M = {}

function M.domain_seed_bytes(domain_seed, key, length)
	local ret = ''
	local v = ''
	local i = 0

	-- Inspired by HKDF key expansion, but much simpler, as we don't need
	-- cryptographic strength
	while ret:len() < 2*length do
		i = i + 1
		v = hash.md5(v .. key .. domain_seed:lower() .. i)
		ret = ret .. v
	end

	return ret:sub(0, 2*length)
end

return M
EOF

sed -i "s/@.proto='gluon_mesh'/(@.proto='gluon_mesh' || @.proto='agravis_mesh')/" /etc/init.d/gluon-respondd