my $cfg = $CONFIG->{fastd_mesh_vpn}; my $backbone = $cfg->{backbone}; my $add_methods = ''; for (@{$cfg->{methods}}) { $add_methods .= "uci add_list fastd.mesh_vpn.method='$_'\n"; } my $set_peer_limit; if ($backbone->{limit}) { $set_peer_limit = "uci_set fastd mesh_vpn_backbone peer_limit '$backbone->{limit}'\n"; } else { $set_peer_limit = "uci_remove fastd mesh_vpn_backbone peer_limit\n"; } print <{mtu}' uci_remove fastd mesh_vpn method $add_methods uci_remove fastd mesh_vpn_backbone uci_add fastd peer_group mesh_vpn_backbone uci_set fastd mesh_vpn_backbone enabled '1' uci_set fastd mesh_vpn_backbone net 'mesh_vpn' $set_peer_limit END foreach my $name (sort keys %{$backbone->{peers}}) { my $peer = $backbone->{peers}->{$name}; print <{key}' EOF for (@{$peer->{remotes}}) { print "uci add_list fastd.mesh_vpn_backbone_peer_$name.remote='$_'\n"; } } print <<'END'; uci_add network interface mesh_vpn uci_set network mesh_vpn ifname 'mesh-vpn' uci_set network mesh_vpn proto 'batadv' uci_set network mesh_vpn mesh 'bat0' mainaddr=$(sysconfig primary_mac) oIFS="$IFS"; IFS=":"; set -- $mainaddr; IFS="$oIFS" b2mask=0x02 vpnaddr=$(printf "%02x:%s:%s:%02x:%s:%s" $(( 0x$1 | $b2mask )) $2 $3 $(( (0x$4 + 1) % 0x100 )) $5 $6) uci_set network mesh_vpn macaddr "$vpnaddr" uci_commit fastd uci_commit network END