#!/usr/bin/perl -w

use strict;

#system("echo @ARGV > /tmp/vpn.opts");

my %option=qw;
tunserv 217.172.172.73
;;
$option{mode}=shift();
$option{tunserv}=shift();
$option{dev}=shift();
$option{tunstart}=shift();
$option{tunend}=shift();


my %gw;
my $ipre=qr/[.0-9]+/;
my $route="/sbin/route";
my $ifconfig="/sbin/ifconfig";
open(PIPE, "route -n |") or die $!;
my $line=<PIPE>;
$line=<PIPE>;
while(<PIPE>) {
  next unless /^($ipre)\s+($ipre)/;
  $gw{$1}=$2;
}
close(PIPE);

#sub sys {print "@_\n"}
sub sys {system (@_)}

if($option{mode} eq "up") {
  sys($ifconfig, $option{dev}, $option{tunstart}, "pointopoint", $option{tunend}, "mtu", "1450");
  sys($route, "del", "default", "gw", $gw{"0.0.0.0"});
  sys($route, "add", "-host", $option{tunserv}, "gw", $gw{"0.0.0.0"});
  sys($route, "add", "default", "gw", $option{tunend});
  #sys($route qw"add -net 192.168.0.0 netmask 255.255.0.0 gw", $option{tunend});
} else {
  sys($route, "del", "default", "gw", $gw{"0.0.0.0"});
  sys($route, "del", "-host", $option{tunserv}, "gw", $gw{$option{tunserv}});
  sys($route, "add", "default", "gw", $gw{$option{tunserv}});
}

