#!/usr/bin/perl
#
# $Copyright$
#
# $TAHI: ct/icmp/Unknown_Infomsg.seq,v 1.3 2003/10/15 08:06:31 masaxmasa Exp $
#----------------------------------------------------------------------

BEGIN { $V6evalTool::TestVersion = '$Name:  $'; }
use V6evalTool;
use icmp;

$IF = Link0;

#----------------------------------------------------------------------
# Initialization
#----------------------------------------------------------------------

vLogHTML("<FONT SIZE=\"+1\">Initialization</FONT><BR>");
vCapture($IF);

$ret = mkNCE_Link();

if ($ret !=0) {
	vLog("*** NUT can not be initialized !! ***");
	exit $V6evalTool::exitFail;
}
else {
	vLog("TN created the entry of TN's link-local address to Neighbor cache of NUT.");
};

#----------------------------------------------------------------------
# Test
#----------------------------------------------------------------------
%pktdesc = (
	unknown_infomsg		=> 'Send Unknown Informational message',
	parameter_problem	=> 'Receive Parameter Problem'
);

vLogHTML("<FONT SIZE=\"+1\">Test</FONT><BR>");

vSend($IF, unknown_infomsg);

#%ret = vRecv($IF, $icmp::wait_address_resolution, 0, 0, parameter_problem);
%ret = icmp_vRecv($IF, $icmp::wait_address_resolution, 0, 0, parameter_problem);

if ($ret{status} != 0) {
	vLog("TN do not receive ICMPv6 error message from NUT");
	vLog("OK");
	exit($V6evalTool::exitPass);
}
elsif ($ret{recvFrame} eq 'parameter_problem') {
	vLog("TN receive ICMPv6 error message from NUT");
	goto error;
}
else {
	vLog("TN receive unexpected packets from NUT");
	goto error;
}

error:

vLog("FAIL");
exit($V6evalTool::exitFail);


#----------------------------------------------------------------------

__END__

=head1 NAME

	Unknown_Infomsg.seq - check Message Processing Rules
	(receiving unknown ICMPv6 informational message)

=head1 TARGET

	Host/Router

=head1 SYNOPSIS

	Unknown_Infomsg.seq [-tooloption ...] -p Unknown_Infomsg.def

=head1 NETWORK CONFIGURATION

        This test is ON-LINK Network Configuration test.
        
        Physical/Logical Network configuration
        
        ---------------------------------------
                |               |
                NUT             TN

=head1 INITIALIZATION

	Make a Neighbor Cache Entry for TN's in NUT.

=head1 TEST PROCEDURE

	This test verifies that the message processing rule ,

	If an ICMPv6 informational message of unknown type is received,
	it MUST be silently discarded.

	TN			NUT

	---------------------------

	1.
	 === Unknown Type ICMPv6 Information message ===>
		src address : TN link-local address
		dst address : NUT link-local address
		type        : 255 (unknown type)
	2.
	<< JUDGMENT >>
	
	 <=== No packets ===
			or	
	 <=== ICMPv6 Parameter Problem ===

=head1 JUDGMENT

	<< PASS >>
		NUT do not send ICMPv6 Parameter Problem.

	<< FAIL >>	
		NUT send ICMPv6 Parameter Problem.

=head1 REFERENCE

RFC2463
2.4 Message Processing Rules

   Implementations MUST observe the following rules when processing
   ICMPv6 messages (from [RFC-1122]):

=begin html
<pre>
    <b>(b) If an ICMPv6 informational message of unknown type is received,
        it MUST be silently discarded.</b>
</pre>

=end html

=head1 SEE ALSO

	  perldoc V6evalTool

=cut
