N01. If (DA.Argument != 0) { N02. If (IPv6 Hop Limit <= 1) { N03. Send an ICMP Time Exceeded message to the Source Address, Code 0 (Hop limit exceeded in transit), interrupt packet processing and discard the packet. N04. } N05. Copy DA.Argument into the bits [LBL..(LBL+AL-1)] of the Destination Address. N06. Set the bits [(LBL+AL)..127] of the Destination Address to zero. N07. Decrement IPv6 Hop Limit by 1. N08.1. Push a new IPv6 header with its own SRH containing B. N08.2. Set the outer IPv6 SA to A. N08.3. Set the outer IPv6 DA to the first SID of B. N08.4. Set the outer Payload Length, Traffic Class, Flow Label, Hop Limit, and Next Header fields. N08.5. Submit the packet to the egress IPv6 FIB lookup for transmission to the next destination. N09. } S02. If (Segments Left == 0) { S03. Stop processing the SRH and proceed to process the next header in the packet, whose type is identified by the Next Header field in the routing header. S04. } S05. If (IPv6 Hop Limit <= 1) { S06. Send an ICMP Time Exceeded message to the Source Address with Code 0 (Hop limit exceeded in transit), interrupt packet processing, and discard the packet. S07. } S08. max_LE = (Hdr Ext Len / 2) - 1 S09. If ((Last Entry > max_LE) or (Segments Left > Last Entry+1)) { S10. Send an ICMP Parameter Problem to the Source Address with Code 0 (Erroneous header field encountered) and Pointer set to the Segments Left field, interrupt packet processing, and discard the packet. S11. } S12. Decrement IPv6 Hop Limit by 1. S13. Decrement Segments Left by 1. S14. Update IPv6 DA with Segment List[Segments Left]. S15. Push a new IPv6 header with its own SRH containing B. S16. Set the outer IPv6 SA to A. S17. Set the outer IPv6 DA to the first SID of B. S18. Set the outer Payload Length, Traffic Class, Flow Label, Hop Limit, and Next Header fields. S19. Submit the packet to the egress IPv6 FIB lookup for transmission to the new destination.