mirror of
https://github.com/SagerNet/sing-tun.git
synced 2025-03-31 10:27:39 +03:00
42 lines
1,011 B
Go
42 lines
1,011 B
Go
package tun
|
|
|
|
import (
|
|
"strconv"
|
|
|
|
"github.com/sagernet/sing-tun/internal/gtcpip"
|
|
"github.com/sagernet/sing-tun/internal/gtcpip/header"
|
|
F "github.com/sagernet/sing/common/format"
|
|
N "github.com/sagernet/sing/common/network"
|
|
)
|
|
|
|
func NetworkName(network uint8) string {
|
|
switch tcpip.TransportProtocolNumber(network) {
|
|
case header.TCPProtocolNumber:
|
|
return N.NetworkTCP
|
|
case header.UDPProtocolNumber:
|
|
return N.NetworkUDP
|
|
case header.ICMPv4ProtocolNumber:
|
|
return N.NetworkICMPv4
|
|
case header.ICMPv6ProtocolNumber:
|
|
return N.NetworkICMPv6
|
|
}
|
|
return F.ToString(network)
|
|
}
|
|
|
|
func NetworkFromName(name string) uint8 {
|
|
switch name {
|
|
case N.NetworkTCP:
|
|
return uint8(header.TCPProtocolNumber)
|
|
case N.NetworkUDP:
|
|
return uint8(header.UDPProtocolNumber)
|
|
case N.NetworkICMPv4:
|
|
return uint8(header.ICMPv4ProtocolNumber)
|
|
case N.NetworkICMPv6:
|
|
return uint8(header.ICMPv6ProtocolNumber)
|
|
}
|
|
parseNetwork, err := strconv.ParseUint(name, 10, 8)
|
|
if err != nil {
|
|
return 0
|
|
}
|
|
return uint8(parseNetwork)
|
|
}
|