# NAME

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

# TARGET

            Router

# SYNOPSIS

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

# INITIALIZATION

    	Before this test starts, run initialize.seq.

# TEST PROCEDURE

            This test verifies that NUT translates between IPv6 (no fragment hdr)
            and IPv4 (DF=1). It also tests ICMPv6 echo <-> ICMPv4 echo
            translation.

            Network Topology

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

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

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

            1.1.1
            ===================>
            ICMPv6 Echo Request
                    IPv6 Header
                            src address : TN LINK0 IPv4 embedded IPv6 address
                            dst address : TN LINK1 IPv4 embedded IPv6 address
                    ICMPv6 echo request

            1.1.2
            <<JUDGMENT>>
                                        ===================>
            ICMPv4 Echo request
                    IPv4 Header
                            src address : TN LINK0 IPv4 address
                            dst address : TN LINK1 IPv4 address
                            Don't Fragment = 1
                            More fragments = 0
                    ICMPv4 echo request

            1.2.1
                                        <===================
            ICMPv4 Echo Reply
                    IPv4 Header
                            src address : TN LINK1 IPv4 address
                            dst address : TN LINK0 IPv4 address
                            Don't Fragment = 1
                            More fragments = 0
                    ICMPv4 echo reply

            1.2.2
            <<JUDGMENT>>
            <===================
            ICMPv6 Echo Reply
                    IPv6 Header
                            src address : TN LINK1 IPv4 embedded IPv6 address
                            dst address : TN LINK0 IPv4 embedded IPv6 address
                            FlowLabel = 0
                    ICMPv6 echo reply

    =head1 JUDGMENT

            << PASS >>
                    TN (Link1) received ICMPv4 echo request,
                    with DF=1 in IPv4 header.
                    TN (Link0) received ICMPv6 echo reply,
                    with no fragment header after IPv6 header.

            << FAIL >>
                    NUT did not translate between ICMPv6 echo and ICMPv4 echo,
                    or NUT did not translate between IPv6 fragment header
                    and IPv4 DF option.

# NOTE

# REFERENCE

RFC2765

3.1. Translating IPv4 Headers into IPv6 Headers

       If the DF bit is set and the packet is not a fragment (i.e., the MF
       flag is not set and the Fragment Offset is zero) then there is no
       need to add a fragment header to the packet.

             Flow Label:
                     0 (all zero bits)

3.3. Translating ICMPv4 Headers into ICMPv6 Headers

            Echo and Echo Reply (Type 8 and Type 0)
               Adjust the type to 128 and 129, respectively, and adjust the
               ICMP checksum both to take the type change into account and
               to include the ICMPv6 pseudo-header.

4.1. Translating IPv6 Headers into IPv4 Headers

       If there is no IPv6 Fragment header the IPv4 header fields are set as
       follows:

             Flags:
                     The More Fragments flag is set to zero.  The Don't
                     Fragments flag is set to one.

4.2. Translating ICMPv6 Headers into ICMPv4 Headers

            Echo Request and Echo Reply (Type 128 and 129)
               Adjust the type to 0 and 8, respectively, and adjust the ICMP
               checksum both to take the type change into account and to
               exclude the ICMPv6 pseudo-header.

# SEE ALSO

            perldoc V6evalTool