packet.go 678 B

12345678910111213141516171819202122
  1. package inbound
  2. import (
  3. C "github.com/metacubex/mihomo/constant"
  4. "github.com/metacubex/mihomo/transport/socks5"
  5. )
  6. // NewPacket is PacketAdapter generator
  7. func NewPacket(target socks5.Addr, packet C.UDPPacket, source C.Type, additions ...Addition) (C.UDPPacket, *C.Metadata) {
  8. metadata := parseSocksAddr(target)
  9. metadata.NetWork = C.UDP
  10. metadata.Type = source
  11. metadata.RawSrcAddr = packet.LocalAddr()
  12. metadata.RawDstAddr = metadata.UDPAddr()
  13. ApplyAdditions(metadata, WithSrcAddr(packet.LocalAddr()))
  14. if p, ok := packet.(C.UDPPacketInAddr); ok {
  15. ApplyAdditions(metadata, WithInAddr(p.InAddr()))
  16. }
  17. ApplyAdditions(metadata, additions...)
  18. return packet, metadata
  19. }