code: func makeRoute(netProto tcpip.NetworkProtocolNumber, localAddr, remoteAddr tcpip.Address, localLinkAddr tcpip.LinkAddress, ref *referencedNetworkEndpoint, handleLocal, multicastLoop bool) Route {
  	loop := PacketOut
  	if handleLocal && localAddr != "" && remoteAddr == localAddr {
  		loop = PacketLoop
  	} else if multicastLoop && (header.IsV4MulticastAddress(remoteAddr) || header.IsV6MulticastAddress(remoteAddr)) {
  		loop |= PacketLoop
  	}
  
  	return Route{
  		NetProto:         netProto,
  		LocalAddress:     localAddr,
  		LocalLinkAddress: localLinkAddr,
  		RemoteAddress:    remoteAddr,
  		ref:              ref,
  		loop:             loop,
  	}
  }
docs: // makeRoute initializes a new route. It takes ownership of the provided
  // reference to a network endpoint.