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 the MPLS label stack for B. N08.2. Submit the packet to the MPLS engine for transmission. 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 the MPLS label stack for B. S16. Submit the packet to the MPLS engine for transmission.