#!/usr/local/bin/perl
#
# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
# Yokogawa Electric Corporation, YDC Corporation,
# IPA (Information-technology Promotion Agency, Japan).
# All rights reserved.
# 
# Redistribution and use of this software in source and binary forms, with 
# or without modification, are permitted provided that the following 
# conditions and disclaimer are agreed and accepted by the user:
# 
# 1. Redistributions of source code must retain the above copyright 
# notice, this list of conditions and the following disclaimer.
# 
# 2. Redistributions in binary form must reproduce the above copyright 
# notice, this list of conditions and the following disclaimer in the 
# documentation and/or other materials provided with the distribution.
# 
# 3. Neither the names of the copyrighters, the name of the project which 
# is related to this software (hereinafter referred to as "project") nor 
# the names of the contributors may be used to endorse or promote products 
# derived from this software without specific prior written permission.
# 
# 4. No merchantable use may be permitted without prior written 
# notification to the copyrighters. However, using this software for the 
# purpose of testing or evaluating any products including merchantable 
# products may be permitted without any notification to the copyrighters.
# 
# 
# 
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHTERS, THE PROJECT AND 
# CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING 
# BUT NOT LIMITED THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
# FOR A PARTICULAR PURPOSE, ARE DISCLAIMED.  IN NO EVENT SHALL THE 
# COPYRIGHTERS, THE PROJECT OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
# CONTRACT,STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 
# THE POSSIBILITY OF SUCH DAMAGE.
#
# $TAHI: v6eval/bin/remotes/manual/tunnel.rmt,v 1.15 2010/03/24 02:42:35 mario Exp $
#
########################################################################
use V6evalRemote;
use File::Basename;

rArg() || goto error;

my $basename	= basename($0, '.rmt');
my $prompt	= "$basename> ";

print "\n";

#$rOpt_addrfamily
#$rOpt_dstaddr
#$rOpt_gateway
#$rOpt_if
#$rOpt_indstaddr
#$rOpt_insrcaddr
#$rOpt_prefix
#$rOpt_prefixlen
#$rOpt_routeprefixlen
#$rOpt_srcaddr
	#$rOpt_timeout

$NUT_TUNNEL_device="";
#$NUT_TUNNEL_token="::a012:3456:789";
#$NUT_TUNNEL_token_length="6";

my $basename	= basename($0, '.rmt');
my $prompt	= "$basename> ";

print "lio_start". "\n";
if(defined($rOpt_deletetunnel)) {
	print "\n";
	print $prompt . "Remove following Static Route of NUT manually:\n\n";
	print $prompt . "command                      ".
		"= delete\n";
	print $prompt . "address family               ".
		"= $rOpt_addrfamily\n"
			if ($rOpt_addrfamily ne undef);
	print $prompt . "address type                 ".
		"= $rOpt_addrtype\n"
			if ($rOpt_addrtype ne undef);
	print $prompt . "prefix                       ".
		"= $rOpt_prefix\n"
			if ($rOpt_prefix ne undef);
	print $prompt . "prefix length                ".
		"= $rOpt_prefixlen\n"
			if ($rOpt_prefix ne undef);
	print $prompt . "router prefix length         ".
		"= $rOpt_routeprefixlen\n"
			if ($rOpt_routeprefixlen ne undef);
	print $prompt . "gateway                      ".
		"= $rOpt_gateway\n"
			if ($rOpt_gateway ne undef);
	print $prompt . "netmask                      ".
		"= $rOpt_netmask\n"
			if ($rOpt_netmask ne undef);
	print $prompt . "interface                    ".
		"= $rOpt_if\n"
			if ($rOpt_if ne undef);
	print $prompt . "tunnel interface             ".
		"= $NUT_TUNNEL_device\n"
			if ($NUT_TUNNEL_device ne undef);
	print "\n";

	print $prompt . "Remove following Configured Tunnel ".
		"of NUT manually:\n\n";
	print $prompt . "physical source address      ".
		"= $rOpt_srcaddr\n";
	print $prompt . "physical destination address ".
		"= $rOpt_dstaddr\n";
	print $prompt . "internal source address      ".
		"= $rOpt_insrcaddr\n"
			if ($rOpt_insrcaddr ne undef);
	print $prompt . "internal destination address ".
		"= $rOpt_indstaddr\n"
			if ($rOpt_indstaddr ne undef);
	print $prompt . "tunnel device                ".
		"= $NUT_TUNNEL_device\n"
			if ($NUT_TUNNEL_device ne undef);
	print $prompt . "tunnel token                 ".
		"= $NUT_TUNNEL_token\n"
			if ($NUT_TUNNEL_token ne undef);
	print $prompt . "tunnel token length          ".
		"= $NUT_TUNNEL_token_length\n"
			if ($NUT_TUNNEL_token_length ne undef);
	print "\n";
} else {
	print "\n";
	print $prompt . "Set Configured Tunnel of NUT manually as following:\n\n";
	print $prompt . "physical source address      ".
		"= $rOpt_srcaddr\n";
	print $prompt . "physical destination address ".
		"= $rOpt_dstaddr\n";
	print $prompt . "internal source address      ".
		"= $rOpt_insrcaddr\n"
			if ($rOpt_insrcaddr ne undef);
	print $prompt . "internal destination address ".
		"= $rOpt_indstaddr\n"
			if ($rOpt_indstaddr ne undef);
	print $prompt . "tunnel device                ".
		"= $NUT_TUNNEL_device\n"
			if ($NUT_TUNNEL_device ne undef);
	print $prompt . "tunnel token                 ".
		"= $NUT_TUNNEL_token\n"
			if ($NUT_TUNNEL_token ne undef);
	print $prompt . "tunnel token length          ".
		"= $NUT_TUNNEL_token_length\n"
			if ($NUT_TUNNEL_token_length ne undef);
	print "\n";

	print $prompt . "Set Static Route of NUT manually as following:\n\n";
	print $prompt . "command                      ".
		"= add\n";
	print $prompt . "address family               ".
		"= $rOpt_addrfamily\n"
			if ($rOpt_addrfamily ne undef);
	print $prompt . "address type                 ".
		"= $rOpt_addrtype\n"
			if ($rOpt_addrtype ne undef);
	print $prompt . "prefix                       ".
		"= $rOpt_prefix\n"
			if ($rOpt_prefix ne undef);
	print $prompt . "prefix length                ".
		"= $rOpt_prefixlen\n"
			if ($rOpt_prefix ne undef);
	print $prompt . "router prefix length         ".
		"= $rOpt_routeprefixlen\n"
			if ($rOpt_routeprefixlen ne undef);
	print $prompt . "gateway                      ".
		"= $rOpt_gateway\n"
			if ($rOpt_gateway ne undef);
	print $prompt . "netmask                      ".
		"= $rOpt_netmask\n"
			if ($rOpt_netmask ne undef);
	print $prompt . "interface                    ".
		"= $rOpt_if\n"
			if ($rOpt_if ne undef);
	print $prompt . "tunnel interface             ".
		"= $NUT_TUNNEL_device\n"
			if ($NUT_TUNNEL_device ne undef);
	print "\n";
}

print $prompt . "then press enter key.\a\n";
print "lio_stop". "\n";
<STDIN>;


exit($V6evalRemote::exitPass);

error:
    exit($V6evalRemote::exitFail);

########################################################################
sub usage()
{
    print STDERR "tunnel.rmt [-commonoption ...] if=interfaceID ";
    print STDERR "srcaddr=ADDR dstaddr=ADDR [timeout=SEC_VALUE]\n";
}

########################################################################
__END__

=head1 NAME

B<tunnel.rmt> - config configured tunnel

=head1 SYNOPSIS

B<tunnel.rmt> [-commonoption ...] addrfamily=address_family 
prefixlen=tunnel_prefixlen routeprefixlen=offlink_prefixlen 
prefix=offlink_address srcaddr=outer_src_address 
dstaddr=outer_dst_address insrcaddr=inner_src_address 
indstaddr=inner_src_address 

=head1 DESCRIPTION

B<tunnel.rmt> configures a specific tunnel.
Default timeout value is five seconds.
Do ``preldoc V6evalRemote'' for common options.

=head1 RETURN VALUES

The B<tunnel.rmt> exits with one of the following values:
 0    command completed successfully
 x>0  command failed

=head1 SEE ALSO

perldoc V6evalRemote

=cut
