code: func (e *endpoint) handleControl(typ stack.ControlType, extra uint32, vv buffer.VectorisedView) {
  	h := header.IPv6(vv.First())
  
  	// We don't use IsValid() here because ICMP only requires that up to
  	// 1280 bytes of the original packet be included. So it's likely that it
  	// is truncated, which would cause IsValid to return false.
  	//
  	// Drop packet if it doesn't have the basic IPv6 header or if the
  	// original source address doesn't match the endpoint's address.
  	if len(h) < header.IPv6MinimumSize || h.SourceAddress() != e.id.LocalAddress {
  		return
  	}
  
  	// Skip the IP header, then handle the fragmentation header if there
  	// is one.
  	vv.TrimFront(header.IPv6MinimumSize)
  	p := h.TransportProtocol()
  	if p == header.IPv6FragmentHeader {
  		f := header.IPv6Fragment(vv.First())
  		if !f.IsValid() || f.FragmentOffset() != 0 {
  			// We can't handle fragments that aren't at offset 0
  			// because they don't have the transport headers.
  			return
  		}
  
  		// Skip fragmentation header and find out the actual protocol
  		// number.
  		vv.TrimFront(header.IPv6FragmentHeaderSize)
  		p = f.TransportProtocol()
  	}
  
  	// Deliver the control packet to the transport endpoint.
  	e.dispatcher.DeliverTransportControlPacket(e.id.LocalAddress, h.DestinationAddress(), ProtocolNumber, p, typ, extra, vv)
  }
docs: // handleControl handles the case when an ICMP packet contains the headers of
  // the original packet that caused the ICMP one to be sent. This information is
  // used to find out which transport endpoint must be notified about the ICMP
  // packet.