NAME

        rfc2765_4.1_options.seq - Verify IPv6 <-> IPv4 header 
        translation in accordance with RFC2765 [SIIT]


TARGET

        Router


SYNOPSIS

        rfc2765_4.1_options.seq [-tooloption ...] 
        -p rfc2765_4.1_options.def


INITIALIZATION

	Before this test starts, run initialize.seq.


TEST PROCEDURE

        This test verifies that NUT drops packets with unexpired Routing 
        Headers, and sends back ICMPv6 Parameter Problem errors.
        
        Network Topology

        Link0
        --------------------------
            |               |
           TN              NUT
            |               |
        --------------------------
        Link1

        TN -- (Link0) -- NUT        NUT -- (Link1) -- TN
        
        ---------------------      ------------------------

        1.1.
        ===================>
        ICMPv6 Echo Request
                IPv6 Header
                        src address : TN LINK0 IPv4 embedded IPv6 address
                        dst address : TN LINK1 IPv4 embedded IPv6 address
                Routing option header
                        RoutingType = 1;
                        SegmentsLeft = 0;
                        Address = TN LINK1 IPv4 embedded IPv6 address
                ICMPv6 echo request

        1.2.
        <<JUDGMENT>>
        <===================
        ICMPv6 Parameter Problem (Type 4, Code 0)
                IPv6 Header
                        src address : NUT LINK0 global IPv6 address
                        dst address : TN LINK0 IPv4 embedded IPv6 address
                ICMPv6 Parameter Problem
                        Type = 4
                        Code = 0
                        Pointer = 43
                        Payload = IPv6 Echo Request packet

        2.1.
        ===================>
        ICMPv6 Echo Request
                IPv6 Header
                        src address : TN LINK0 IPv4 embedded IPv6 address
                        dst address : TN LINK1 IPv4 embedded IPv6 address
                Hop-By-Hop option header
                        PadN (3 bytes)
                        Pad1 (1 bytes)
                        Pad1 (1 bytes)
                        Pad1 (1 bytes)
                Routing option header
                        RoutingType = 0;
                        SegmentsLeft = 1;
                        Address = TN LINK1 IPv4 embedded IPv6 address
                Fragment option header
                        NextHeader = 60; // Destination option header
                Destination option header
                        PadN (3 bytes)
                        Pad1 (1 bytes)
                        Pad1 (1 bytes)
                        Pad1 (1 bytes)
                ICMPv6 echo request

        2.2.
        <<JUDGMENT>>
        <===================
        ICMPv6 Parameter Problem (Type 4, Code 0)
                IPv6 Header
                        src address : NUT LINK0 global IPv6 address
                        dst address : TN LINK0 IPv4 embedded IPv6 address
                ICMPv6 Parameter Problem
                        Type = 4
                        Code = 0
                        Pointer = 51
                        Payload = IPv6 Echo Request packet


JUDGMENT

        << PASS >>
                NUT sends back two ICMPv6 Parameter Problem packets.

        << FAIL >>      
                NUT translates the ICMPv6 echo requests to 
                ICMPv4 echo requests or doesn't send back two 
                ICMPv6 Parameter Problem packets.


NOTE


REFERENCE

RFC2765

4.1. Translating IPv6 Headers into IPv4 Headers

   If a routing header with a non-zero Segments Left field is present
   then the packet MUST NOT be translated, and an ICMPv6 "parameter
   problem/ erroneous header field encountered" (Type 4/Code 0) error
   message, with the Pointer field indicating the first byte of the
   Segments Left field, SHOULD be returned to the sender.


SEE ALSO

        perldoc V6evalTool