code: func (e *endpoint) handleControl(typ stack.ControlType, extra uint32, vv buffer.VectorisedView) {
  	h := header.IPv4(vv.First())
  
  	// We don't use IsValid() here because ICMP only requires that the IP
  	// header plus 8 bytes of the transport header 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 IPv4 header or if the
  	// original source address doesn't match the endpoint's address.
  	if len(h) < header.IPv4MinimumSize || h.SourceAddress() != e.id.LocalAddress {
  		return
  	}
  
  	hlen := int(h.HeaderLength())
  	if vv.Size() < hlen || h.FragmentOffset() != 0 {
  		// We won't be able to handle this if it doesn't contain the
  		// full IPv4 header, or if it's a fragment not at offset 0
  		// (because it won't have the transport header).
  		return
  	}
  
  	// Skip the ip header, then deliver control message.
  	vv.TrimFront(hlen)
  	p := h.TransportProtocol()
  	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.