#!/usr/bin/perl
#
# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 Yokogawa Electric Corporation.
# 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.
# 
# 5. The copyrighters, the project and the contributors may prohibit
#    the use of this software at any time.
# 
# 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.
#
# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 Yokogawa Electric Corporation.
# 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.
# 
# 5. The copyrighters, the project and the contributors may prohibit
#    the use of this software at any time.
# 
# 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: ct/icmp/Unknown_Infomsg.seq,v 1.5 2004/08/19 09:04:33 akisada Exp $
#----------------------------------------------------------------------

BEGIN { $V6evalTool::TestVersion = '$Name: V6PC_P1_1_3_3 $'; }
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.
	<< JUDGEMENT >>
	
	 <=== No packets ===
			or	
	 <=== ICMPv6 Parameter Problem ===

=head1 JUDGEMENT

	<< 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
