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)
if fAddr.IsValid() {
fromAddr, _ := netip.AddrFromSlice(fromUDPAddr.IP)
fromAddr.Unmap()
if oAddr == fromAddr {
fromUDPAddr.IP = fAddr.AsSlice()
fromUDPAddr = &(*fromUDPAddr) // make a copy
if fromAddr, ok := netip.AddrFromSlice(fromUDPAddr.IP); ok {
if fAddr.IsValid() && (oAddr.Unmap() == fromAddr.Unmap()) {
fromUDPAddr.IP = fAddr.Unmap().AsSlice()
} else {
fromUDPAddr.IP = fromAddr.Unmap().AsSlice()
}
}