#!/usr/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/racontrol.rmt,v 1.8 2010/03/24 02:42:35 mario Exp $
#
########################################################################
use V6evalRemote;
use File::Basename;

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

my $fd = select(STDIN);  $| = 1; select($fd);
   $fd = select(STDOUT); $| = 1; select($fd);
   $fd = select(STDERR); $| = 1; select($fd);

rArg();

# $rOpt_mode
unless(($rOpt_mode eq 'start') || ($rOpt_mode eq 'stop')) {
	print "lio_start". "\n";
	print STDERR "unknown mode -- $rOpt_mode\n";
	print "lio_stop". "\n";
	goto error;
}

# $rOpt_timeout
unless($rOpt_timeout) {
	$rOpt_timeout = 5;
}

# $rOpt_link0, $rOpt_link1
if($rOpt_mode eq 'start') {
	unless(($rOpt_link0) || ($rOpt_link1)) {
		print "lio_start". "\n";
		print STDERR 'at least, '.
			"one interface must be specified\n";
		print "lio_stop". "\n";
		goto error;
	}
}

print "\n";
print $prompt . "\n";
print "lio_start". "\n";

if($rOpt_mode eq 'stop') {
	print $prompt . "Stop to send RA.\n";
} else {
	my $bool = 0;

	print $prompt . "Start to send RA using following configuration.\n";
	if (defined($rOpt_link0) && !defined($rOpt_link1)) {
		print $prompt . "\tAdvertising Interface: $rOpt_link0\n";
	}

	if (!defined($rOpt_link0) && defined($rOpt_link1)) {
		print $prompt . "\tAdvertising Interface: $rOpt_link1\n";
	}

	if (defined($rOpt_link0) && defined($rOpt_link1)) {
		print $prompt . "\tAdvertising Interfaces: $rOpt_link0, $rOpt_link1\n";
	}

	if (defined($rOpt_maxinterval)) {
		print $prompt . "\tMaxRtrAdvInterval: $rOpt_maxinterval\n";
		$bool ++;
	}

	if (defined($rOpt_mininterval)) {
		print $prompt . "\tMinRtrAdvInterval: $rOpt_mininterval\n";
		$bool ++;
	}

	if (defined($rOpt_chlim)) {
		print $prompt . "\tAdvCurHopLimit: $rOpt_chlim\n";
		$bool ++;
	}

	if (defined($rOpt_raflagsM)) {
		print $prompt . "\tAdvManagedFlag: $rOpt_raflagsM\n";
		$bool ++;
	}

	if (defined($rOpt_raflagsO)) {
		print $prompt . "\tAdvOtherConfigFlag $rOpt_raflagsO\n";
		$bool ++;
	}

	if (defined($rOpt_rltime)) {
		print $prompt . "\tAdvDefaultLifetime: $rOpt_rltime\n";
		$bool ++;
	}

	if (defined($rOpt_rtime)) {
		print $prompt . "\tAdvReachableTime: $rOpt_rtime\n";
		$bool ++;
	}

	if (defined($rOpt_retrans)) {
		print $prompt . "\tAdvRetransTimer: $rOpt_retrans\n";
		$bool ++;
	}

	if (defined($rOpt_pinfoflagsL)) {
		print $prompt . "\tAdvOnLinkFlag: $rOpt_pinfoflagsL\n";
		$bool ++;
	}

	if (defined($rOpt_pinfoflagsA)) {
		print $prompt . "\tAdvAutonomousFlag: $rOpt_pinfoflagsA\n";
		$bool ++;
	}

	if (defined($rOpt_vltime)) {
		print $prompt . "\tAdvValidLifetime: $rOpt_vltime\n";
		$bool ++;
	}

	if (defined($rOpt_pltime)) {
		print $prompt . "\tAdvPreferredLifetime: $rOpt_pltime\n";
		$bool ++;
	}

	if (defined($rOpt_link0_prefix)) {
		print $prompt . "\tAdvPrefix: $rOpt_link0_prefix\n";
		$bool ++;
	}

	if($bool && !defined($rOpt_link0_prefix)) {
		print $prompt . "\tAdvPrefix: 3ffe:501:ffff:100::\n";
		$bool ++;
	}

	if (defined($rOpt_mtu)) {
		print $prompt . "\tAdvLinkMTU: $rOpt_mtu\n";
		$bool ++;
	}

	print $prompt . "\n";

	if($bool) {
		print $prompt . "\tother configuration should be ".
			"the value specified in RFC 4861.\n";
	} else {
		print $prompt . "\tconfiguration should be ".
			"the value specified in RFC 4861.\n";
	}
}

print $prompt . "\n";
print $prompt . "Press Enter key for continue. \a\n";
print "lio_start". "\n";
<STDIN>;
print $prompt . "\n";
print "\n";

exit($V6evalRemote::exitPass);

error:
	exit($V6evalRemote::exitFail);
