mirror of
https://github.com/bolucat/Archive.git
synced 2026-04-23 00:17:16 +08:00
28 lines
460 B
Go
28 lines
460 B
Go
package pingtunnel
|
|
|
|
import "net"
|
|
|
|
var icmpDatagram bool
|
|
|
|
func setICMPDatagram(enabled bool) {
|
|
icmpDatagram = enabled
|
|
}
|
|
|
|
func icmpDstAddr(ip *net.IPAddr) net.Addr {
|
|
if icmpDatagram {
|
|
return &net.UDPAddr{IP: ip.IP}
|
|
}
|
|
return ip
|
|
}
|
|
|
|
func icmpSrcToIPAddr(addr net.Addr) *net.IPAddr {
|
|
switch v := addr.(type) {
|
|
case *net.IPAddr:
|
|
return v
|
|
case *net.UDPAddr:
|
|
return &net.IPAddr{IP: v.IP, Zone: v.Zone}
|
|
default:
|
|
return &net.IPAddr{IP: net.IPv4zero}
|
|
}
|
|
}
|