diff --git a/package/gluon-mesh-vpn-fastd/Makefile b/package/gluon-mesh-vpn-fastd/Makefile index 777cb0245b98be6128b94ff7ad14059fef7c75a8..d2322682a1ef0c823fc843810491ed4875a2af1f 100644 --- a/package/gluon-mesh-vpn-fastd/Makefile +++ b/package/gluon-mesh-vpn-fastd/Makefile @@ -27,10 +27,12 @@ define Build/Configure endef define Build/Compile + $(GLUON_CONFIGURE) fastd.pl > $(PKG_BUILD_DIR)/fastd.sh endef define Package/gluon-mesh-vpn-fastd/install - $(CP) ./files/* $(1)/ + $(INSTALL_DIR) $(1)/lib/gluon/upgrade/mesh-vpn-fastd/invariant + $(INSTALL_BIN) $(PKG_BUILD_DIR)/fastd.sh $(1)/lib/gluon/upgrade/mesh-vpn-fastd/invariant/010-mesh-vpn-fastd endef $(eval $(call BuildPackage,gluon-mesh-vpn-fastd)) diff --git a/package/gluon-mesh-vpn-fastd/fastd.pl b/package/gluon-mesh-vpn-fastd/fastd.pl new file mode 100644 index 0000000000000000000000000000000000000000..85bc7e28fc7a79b82138fcc2975259721bf7459b --- /dev/null +++ b/package/gluon-mesh-vpn-fastd/fastd.pl @@ -0,0 +1,59 @@ +my $cfg = $CONFIG->{fastd_mesh_vpn}; +my $backbone = $cfg->{backbone}; + +my $add_methods = ''; +for (@{$cfg->{methods}}) { + $add_methods .= "add_list fastd.mesh_vpn.method='$_'\n"; +} + +my $set_peer_limit; +if ($backbone->{limit}) { + $set_peer_limit = "set fastd.mesh_vpn_backbone.peer_limit='$backbone->{limit}'\n"; +} +else { + $set_peer_limit = "delete fastd.mesh_vpn_backbone.peer_limit\n"; +} + +print <<END; +#/bin/sh + +uci -q batch <<EOF +set fastd.mesh_vpn='fastd' +set fastd.mesh_vpn.syslog_level='verbose' +delete fastd.mesh_vpn.config +delete fastd.mesh_vpn.config_peer_dir + +set fastd.mesh_vpn.interface='mesh-vpn' +set fastd.mesh_vpn.mode='tap' +set fastd.mesh_vpn.mtu='$cfg->{mtu}' +delete fastd.mesh_vpn.method +$add_methods +delete fastd.mesh_vpn_backbone +set fastd.mesh_vpn_backbone='peer_group' +set fastd.mesh_vpn_backbone.enabled='1' +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 <<EOF; + +delete fastd.mesh_vpn_backbone_peer_$name +set fastd.mesh_vpn_backbone_peer_$name='peer' +set fastd.mesh_vpn_backbone_peer_$name.enabled='1' +set fastd.mesh_vpn_backbone_peer_$name.net='mesh_vpn' +set fastd.mesh_vpn_backbone_peer_$name.group='mesh_vpn_backbone' +set fastd.mesh_vpn_backbone_peer_$name.key='$peer->{key}' +EOF + + for (@{$peer->{remotes}}) { + print "add_list fastd.mesh_vpn_backbone_peer_$name.remote='$_'\n"; + } +} + +print <<END; + +commit fastd +EOF +END