X-Git-Url: https://www.tinc-vpn.org/git/browse?p=tinc;a=blobdiff_plain;f=debian%2Finit.d;h=de3b308657a5aee8896b9fe82585868cea43b097;hp=d2b14975c806ed8db8600b44f07012f18fd4dbd5;hb=cdab82d6fb7d7d32194cb2162a814fbc89b7db4c;hpb=a0c4e7fe6d46988f3fb1100ef00db7b747c86f72 diff --git a/debian/init.d b/debian/init.d index d2b14975..de3b3086 100644 --- a/debian/init.d +++ b/debian/init.d @@ -1,7 +1,9 @@ #! /usr/bin/perl -w # # System startup script for tinc -# $Id: init.d,v 1.4 2000/05/15 09:41:34 guus Exp $ +# $Id: init.d,v 1.6 2000/05/16 14:34:44 zarq Exp $ +# +# Based on Lubomir Bulej's Redhat init script. # my $DAEMON="/usr/sbin/tincd"; @@ -10,13 +12,17 @@ my $DESC="tinc daemons"; my $TCONF="/etc/tinc"; my $EXTRA=""; -# $NETS is a space seperated list of all tinc networks. -my $NETS=""; +# Put your VPN names in here. +my $NETS=""; # This is a space-separated list of networks to be started. -if ("$NETS" eq "") { print "No tinc networks configured."; exit 0; } if (! -f $DAEMON) { exit 0; } +if ($NETS eq "") { + warn "Please edit /etc/init.d/tinc before attempting to start tinc.\n"; + exit 0; +} + ############################################################################## # vpn_load () Loads VPN configuration # @@ -38,6 +44,8 @@ sub vpn_load { } elsif ( /^[ ]*(MyOwnVPNIP|MyVirtualIP)[ =]+([^ \#]+)/i ) { $VPN=$2; chomp($VPN); + } elsif ( /^[ ]*VpnMask[ =]+([^ \#]+)/i ) { + $VPNMASK=$1; } } if(!defined($DEV)) { @@ -52,6 +60,9 @@ sub vpn_load { if($VPN eq "") { die "tinc: No argument to MyVirtualIP/MyOwnVPNIP"; } + if(defined($VPNMASK) && $VPNMASK eq "") { + die "tinc: Invalid argument to VpnMask"; + } $ADR = $VPN; $ADR =~ s/^([^\/]+)\/.*$/$1/; $LEN = $VPN; @@ -83,17 +94,13 @@ sub vpn_load { sub vpn_start { vpn_load($_[0]) || die "tinc: could not vpn_load $_[0]"; - if (! -c "/dev/$DEV") { - if (-e "/dev/$DEV") { - unlink("/dev/$DEV"); - } - $num = $NUM + 16; - system("echo mknod --mode=0600 /dev/$DEV c 36 $num"); - } system("insmod ethertap -s --name=\"ethertap$NUM\" unit=\"$NUM\" >/dev/null"); system("ifconfig $DEV hw ether $MAC"); - system("ifconfig $DEV $ADR netmask $MSK broadcast $BRD"); + system("ifconfig $DEV $ADR netmask $MSK broadcast $BRD -arp"); system("start-stop-daemon --start --quiet --pidfile /var/run/$NAME.$_[0].pid --exec $DAEMON -- -n $_[0] $EXTRA"); + if(defined($VPNMASK)) { + system("route add -net $ADR netmask $VPNMASK dev $DEV"); + } } @@ -102,7 +109,7 @@ sub vpn_start { ############################################################################## # vpn_stop () Stops specified VPN # -# $1 ... VPN to stop +# $_[0] ... VPN to stop sub vpn_stop { vpn_load($_[0]) || return 1;