NAME

  EH_HBHOptAfterDstOpt - check Hop-by-Hop Options Header position


TARGET

  Host and Router


SYNOPSIS

  EH_HBHOptAfterDstOpt.seq [-tooloption ...] -pkt EH_HBHOptAfterDstOpt.def
    -tooloption : v6eval tool option


INITIALIZATION

  None


TEST PROCEDURE

  Tester                      Target
    |                           |
    |-------------------------->|
    |   Echo Request            |
    |                           |
    |                           |
    |<--------------------------|
    |   Neighbor Solicitation   |
    |                           |
    |                           |
    |-------------------------->|
    |   Neighbor Advertisement  |
    |                           |
    |                           |
    |<--------------------------|
    |   ICMP Error              |
    |                           |
    v                           v

  1. Send Echo Request
  2. Wait ICMP Error or NS
  3. If NS received then send NA, and wait ICMP Error again
  4. Receive ICMP Error

  Test Packet to Target Data is:

        IPv6 Header
            Version            = 6
            Traffic Class      = 0
            FlowLabel          = 0
            PayloadLength      = 32
            NextHeader         = 60 (Destination Options Header)
            SourceAddress      = Tester Address
            DestinationAddress = Tester Address

        Destination Options Header
            NextHeader      = 0 (Hop-by-Hop Options Header)
            HeaderExtLength = 0
            OptionType      = 1 (PadN)
            OptDataLength   = 4
            pad             = {0,0,0,0}

        Hop-by-Hop Options Header
            NextHeader      = 58 (ICMP)
            HeaderExtLength = 0
            OptionType      = 1 (PadN)
            OptDataLength   = 4
            pad             = {0,0,0,0}

        ICMP Echo Request
            Type           = 128 (Echo Request)
            Code           = 0
            Checksum       = (auto)
            Identifier     = 0xffff
            SequenceNumber = 1
            PayloadData    = {1,2,3,4,5,6,7,8}


JUDGMENT

  PASS: ICMP Error Received

        IPv6 Header
            Version            = 6
            Traffic Class      = 0
            FlowLabel          = 0
            PayloadLength      = 80
            NextHeader         = 58 (ICMP)
            SourceAddress      = Target Address
            DestinationAddress = Tester Address

        ICMP Error
            Type           = 4 (Parameter Problem)
            Code           = 1 (unrecognized Next Header type encountered)
            Checksum       = (auto)
            Pointer        = 40 (Offset to Next Header type)
            PayloadData    = (Sent Packet)


REFERENCE

RFC2460

4. IPv6 Extension Headers

   If, as a result of processing a header, a node is required to proceed
   to the next header but the Next Header value in the current header is
   unrecognized by the node, it should discard the packet and send an
   ICMP Parameter Problem message to the source of the packet, with an
   ICMP Code value of 1 ("unrecognized Next Header type encountered")
   and the ICMP Pointer field containing the offset of the unrecognized
   value within the original packet.  The same action should be taken if
   a node encounters a Next Header value of zero in any header other
   than an IPv6 header.

4.1 Extension Header Order

   When more than one extension header is used in the same packet, it is
   recommended that those headers appear in the following order:

           IPv6 header
           Hop-by-Hop Options header
           Destination Options header (note 1)
           Routing header
           Fragment header
           Authentication header (note 2)
           Encapsulating Security Payload header (note 2)
           Destination Options header (note 3)
           upper-layer header
   IPv6 nodes must accept and attempt to process extension headers in
   any order and occurring any number of times in the same packet,
   except for the Hop-by-Hop Options header which is restricted to
   appear immediately after an IPv6 header only.  Nonetheless, it is
   strongly advised that sources of IPv6 packets adhere to the above
   recommended order until and unless subsequent specifications revise
   that recommendation.


SEE ALSO

  perldoc V6evalTool