fix: tun udp with 4in6 ip

This commit is contained in:
gVisor bot 2023-02-13 22:06:09 +08:00
parent 7119a8426c
commit 100f193a6a

View file

@ -44,11 +44,12 @@ func handleUDPToLocal(packet C.UDPPacket, pc net.PacketConn, key string, oAddr,
} }
fromUDPAddr := from.(*net.UDPAddr) fromUDPAddr := from.(*net.UDPAddr)
if fAddr.IsValid() { fromUDPAddr = &(*fromUDPAddr) // make a copy
fromAddr, _ := netip.AddrFromSlice(fromUDPAddr.IP) if fromAddr, ok := netip.AddrFromSlice(fromUDPAddr.IP); ok {
fromAddr.Unmap() if fAddr.IsValid() && (oAddr.Unmap() == fromAddr.Unmap()) {
if oAddr == fromAddr { fromUDPAddr.IP = fAddr.Unmap().AsSlice()
fromUDPAddr.IP = fAddr.AsSlice() } else {
fromUDPAddr.IP = fromAddr.Unmap().AsSlice()
} }
} }