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.Insert a new SRH in between the IPv6 Header and the received SRH containing the list of segments of B. N08.2. Set the new SRH[0] to the IPv6 DA . N08.3. Set the IPv6 DA to the first segment of B. N08.4. 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. Insert a new SRH in between the IPv6 Header and the received SRH containing the list of segments of B. S16. Set the IPv6 DA to the first SID of B. S17. Submit the packet to the egress IPv6 FIB lookup for transmission to the new destination. S18. }