code: func (f *Forwarder) HandlePacket(r *stack.Route, id stack.TransportEndpointID, netHeader buffer.View, vv buffer.VectorisedView) bool {
  	s := newSegment(r, id, vv)
  	defer s.decRef()
  
  	// We only care about well-formed SYN packets.
  	if !s.parse() || !s.csumValid || s.flags != header.TCPFlagSyn {
  		return false
  	}
  
  	opts := parseSynSegmentOptions(s)
  
  	f.mu.Lock()
  	defer f.mu.Unlock()
  
  	// We have an inflight request for this id, ignore this one for now.
  	if _, ok := f.inFlight[id]; ok {
  		return true
  	}
  
  	// Ignore the segment if we're beyond the limit.
  	if len(f.inFlight) >= f.maxInFlight {
  		return true
  	}
  
  	// Launch a new goroutine to handle the request.
  	f.inFlight[id] = struct{}{}
  	s.incRef()
  	go f.handler(&ForwarderRequest{
  		forwarder:  f,
  		segment:    s,
  		synOptions: opts,
  	})
  
  	return true
  }
docs: // HandlePacket handles a packet if it is of interest to the forwarder (i.e., if
  // it's a SYN packet), returning true if it's the case. Otherwise the packet
  // is not handled and false is returned.
  //
  // This function is expected to be passed as an argument to the
  // stack.SetTransportProtocolHandler function.