mirror of
https://github.com/e1732a364fed/v2ray_simple.git
synced 2025-10-04 00:16:37 +08:00
48 lines
1.0 KiB
Go
48 lines
1.0 KiB
Go
package netLayer
|
||
|
||
const UnknownNetwork = 0
|
||
const (
|
||
// Transport Layer Protocols, 使用uint16 mask,所以最多支持16种
|
||
TCP uint16 = 1 << iota
|
||
UDP
|
||
Dual //use both tcp and udp
|
||
UNIX //unix domain socket
|
||
IP
|
||
Raw_socket
|
||
KCP
|
||
Quic //quic是一个横跨多个层的协议,这里也算一个,毕竟与kcp类似
|
||
|
||
)
|
||
|
||
// 若字符串无法被解析为网络类型,则返回 UnknownNetwork
|
||
func StrToTransportProtocol(s string) uint16 {
|
||
switch s {
|
||
case "tcp", "tcp4", "tcp6", "TCP", "TCP4", "TCP6":
|
||
return TCP
|
||
case "ip", "ipv4", "ipv6", "ip4", "ip6":
|
||
return IP
|
||
case "udp", "udp4", "udp6", "UDP", "UDP4", "UDP6":
|
||
return UDP
|
||
case DualNetworkName, "mix", "mixed", "Mix", "MIX":
|
||
return Dual
|
||
case "unix", "Unix", "UNIX":
|
||
return UNIX
|
||
case "raw", "RAW":
|
||
return Raw_socket
|
||
case "kcp", "KCP":
|
||
return KCP
|
||
case "quic", "Quic", "QUIC":
|
||
return Quic
|
||
}
|
||
return UnknownNetwork
|
||
}
|
||
|
||
func NetworkHasNoPortField(s string) bool {
|
||
n := StrToTransportProtocol(s)
|
||
switch n {
|
||
case UNIX, IP, Raw_socket:
|
||
return true
|
||
}
|
||
return false
|
||
}
|