Read /etc/tinc/nets.boot to find the networks that have to be started.
This commit is contained in:
		
							parent
							
								
									8d4ab991b8
								
							
						
					
					
						commit
						e7d583adfa
					
				
					 1 changed files with 47 additions and 20 deletions
				
			
		
							
								
								
									
										67
									
								
								debian/init.d
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										67
									
								
								debian/init.d
									
										
									
									
										vendored
									
									
								
							|  | @ -1,38 +1,56 @@ | |||
| #! /usr/bin/perl -w | ||||
| # | ||||
| # System startup script for tinc | ||||
| # $Id: init.d,v 1.6 2000/05/16 14:34:44 zarq Exp $ | ||||
| # $Id: init.d,v 1.7 2000/05/18 23:09:31 zarq Exp $ | ||||
| # | ||||
| # Based on Lubomir Bulej's Redhat init script. | ||||
| # | ||||
| # Create a file $NETSFILE (/etc/tinc/nets.boot), and put all the names of | ||||
| # the networks in there.  These names must be valid directory names under | ||||
| # $TCONF (/etc/tinc).  Lines starting with a # will be ignored in this | ||||
| # file. | ||||
| # | ||||
| 
 | ||||
| my $DAEMON="/usr/sbin/tincd"; | ||||
| my $NAME="tinc"; | ||||
| my $DESC="tinc daemons"; | ||||
| my $TCONF="/etc/tinc"; | ||||
| my $EXTRA=""; | ||||
| 
 | ||||
| # Put your VPN names in here. | ||||
| my $NETS="";  # This is a space-separated list of networks to be started. | ||||
| my $NETSFILE="$TCONF/nets.boot"; | ||||
| my @NETS=(); | ||||
| 
 | ||||
| 
 | ||||
| if (! -f $DAEMON) { exit 0; } | ||||
| 
 | ||||
| if ($NETS eq "") { | ||||
|     warn "Please edit /etc/init.d/tinc before attempting to start tinc.\n"; | ||||
|     exit 0; | ||||
| 
 | ||||
| 
 | ||||
| sub find_nets { | ||||
|     open(FH, $NETSFILE) || die "Please create $NETSFILE.\n"; | ||||
|     while (<FH>) { | ||||
| 	chomp; | ||||
| 	if( /^[ ]*([^ \#]+)/i ) { | ||||
| 	    push(@NETS, "$1"); | ||||
| 	} | ||||
|     } | ||||
|     if($#NETS == -1) { | ||||
| 	die "$NETSFILE doesn't contain any nets.\n"; | ||||
|     } | ||||
|      | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| ############################################################################## | ||||
| # vpn_load ()		Loads VPN configuration | ||||
| #  | ||||
| # $_[0] ... VPN to load | ||||
| 
 | ||||
| 
 | ||||
| sub vpn_load { | ||||
|     my @addr; | ||||
|     $CFG="$TCONF/$_[0]/tinc.conf"; | ||||
|     open($CFG, "< $CFG") || die "tinc: $CFG does not exist"; | ||||
|     if(! open($CFG, "< $CFG")) { | ||||
| 	warn "tinc: $CFG does not exist\n"; | ||||
| 	return 0; | ||||
|     } | ||||
| 
 | ||||
|     # load TINCD config | ||||
|     while(<$CFG>) { | ||||
|  | @ -49,26 +67,32 @@ sub vpn_load { | |||
| 	} | ||||
|     } | ||||
|     if(!defined($DEV)) { | ||||
| 	die "tinc: There must be a TapDevice"; | ||||
| 	warn "tinc: There must be a TapDevice\n"; | ||||
| 	return 0; | ||||
|     } | ||||
|     if($DEV eq "") { | ||||
| 	die "tinc: TapDevice should be of the form /dev/tapN"; | ||||
| 	warn "tinc: TapDevice should be of the form /dev/tapN\n"; | ||||
| 	return 0; | ||||
|     } | ||||
|     if(!defined($VPN)) { | ||||
| 	die "tinc: MyVirtualIP required"; | ||||
| 	warn "tinc: MyVirtualIP required\n"; | ||||
| 	return 0; | ||||
|     } | ||||
|     if($VPN eq "") { | ||||
| 	die "tinc: No argument to MyVirtualIP/MyOwnVPNIP"; | ||||
| 	warn "tinc: No argument to MyVirtualIP/MyOwnVPNIP\n"; | ||||
| 	return 0; | ||||
|     } | ||||
|     if(defined($VPNMASK) && $VPNMASK eq "") { | ||||
| 	die "tinc: Invalid argument to VpnMask"; | ||||
| 	warn "tinc: Invalid argument to VpnMask\n"; | ||||
| 	return 0; | ||||
|     } | ||||
|     $ADR = $VPN; | ||||
|     $ADR =~ s/^([^\/]+)\/.*$/$1/; | ||||
|     $LEN = $VPN; | ||||
|     $LEN =~ s/^.*\/([^\/]+)$/$1/; | ||||
|     if($ADR eq "" || $LEN eq "") { | ||||
| 	die "tinc: Badly formed MyVirtualIP/MyOwnVPNIP"; | ||||
| 	warn "tinc: Badly formed MyVirtualIP/MyOwnVPNIP\n"; | ||||
| 	return 0; | ||||
|     } | ||||
|     @addr = split(/\./, $ADR); | ||||
| 
 | ||||
|  | @ -92,7 +116,7 @@ sub vpn_load { | |||
| # $_[0] ... VPN to start | ||||
| 
 | ||||
| sub vpn_start { | ||||
|     vpn_load($_[0]) || die "tinc: could not vpn_load $_[0]"; | ||||
|     vpn_load($_[0]) || return 0; | ||||
| 
 | ||||
|     system("insmod ethertap -s --name=\"ethertap$NUM\" unit=\"$NUM\" >/dev/null"); | ||||
|     system("ifconfig $DEV hw ether $MAC"); | ||||
|  | @ -126,28 +150,31 @@ if(!defined($ARGV[0])) { | |||
| } | ||||
| 
 | ||||
| if($ARGV[0] eq "start") { | ||||
|     find_nets; | ||||
|     print "Starting $DESC:"; | ||||
|     foreach $n (split(" ", $NETS)) { | ||||
|     foreach $n (@NETS) { | ||||
| 	print " $n"; | ||||
| 	vpn_start($n); | ||||
|     } | ||||
|     print ".\n"; | ||||
| } elsif ($ARGV[0] eq "stop") { | ||||
|     find_nets; | ||||
|     print "Stopping $DESC:"; | ||||
|     foreach $n (split(" ", $NETS)) { | ||||
|     foreach $n (@NETS) { | ||||
| 	print " $n"; | ||||
| 	vpn_stop($n); | ||||
|     } | ||||
|     print ".\n"; | ||||
| } elsif ($ARGV[0] eq "restart" || $ARGV[0] eq "force-reload") { | ||||
|     find_nets; | ||||
|     print "Stopping $DESC:"; | ||||
|     foreach $n (split(" ", $NETS)) { | ||||
|     foreach $n (@NETS) { | ||||
| 	print " $n"; | ||||
| 	vpn_stop($n); | ||||
|     } | ||||
|     print ".\n"; | ||||
|     print "Starting $DESC:"; | ||||
|     foreach $n (split(" ", $NETS)) { | ||||
|     foreach $n (@NETS) { | ||||
| 	print " $n"; | ||||
| 	vpn_start($n); | ||||
|     } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue