+ if (PREDICT_FALSE (outer_frag != NULL))
+ {
+ outer_frag->next_hdr = ip6->protocol;
+ outer_frag->identification = outer_frag_id;
+ outer_frag->rsv = 0;
+ outer_frag->fragment_offset_and_more = ip6_frag_hdr_offset_and_more (0, 1);
+ ip6->protocol = IP_PROTOCOL_IPV6_FRAGMENTATION;
+ ip6->payload_length = u16_net_add (ip6->payload_length,
+ sizeof (*outer_frag));
+ }
+
+ //Truncate when ICMPv6 error message exceeds the minimal IPv6 MTU
+ if (p->current_length > 1280 && icmp->type < 128)