wip: migrate to mono-repo. SPN has already been moved to spn/
This commit is contained in:
75
service/network/reference/protocols.go
Normal file
75
service/network/reference/protocols.go
Normal file
@@ -0,0 +1,75 @@
|
||||
package reference
|
||||
|
||||
import (
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
var (
|
||||
protocolNames = map[uint8]string{
|
||||
1: "ICMP",
|
||||
2: "IGMP",
|
||||
6: "TCP",
|
||||
17: "UDP",
|
||||
27: "RDP",
|
||||
58: "ICMP6",
|
||||
33: "DCCP",
|
||||
136: "UDP-LITE",
|
||||
}
|
||||
|
||||
protocolNumbers = map[string]uint8{
|
||||
"ICMP": 1,
|
||||
"IGMP": 2,
|
||||
"TCP": 6,
|
||||
"UDP": 17,
|
||||
"RDP": 27,
|
||||
"DCCP": 33,
|
||||
"ICMP6": 58,
|
||||
"UDP-LITE": 136,
|
||||
}
|
||||
)
|
||||
|
||||
// GetProtocolName returns the name of a IP protocol number.
|
||||
func GetProtocolName(protocol uint8) (name string) {
|
||||
name, ok := protocolNames[protocol]
|
||||
if ok {
|
||||
return name
|
||||
}
|
||||
return strconv.Itoa(int(protocol))
|
||||
}
|
||||
|
||||
// GetProtocolNumber returns the number of a IP protocol name.
|
||||
func GetProtocolNumber(protocol string) (number uint8, ok bool) {
|
||||
number, ok = protocolNumbers[strings.ToUpper(protocol)]
|
||||
if ok {
|
||||
return number, true
|
||||
}
|
||||
return 0, false
|
||||
}
|
||||
|
||||
// IsPacketProtocol returns whether the given protocol number is a known packet based protocol.
|
||||
// Note: Not fully complete. Calling IsPacketProtocol() does not equal calling !IsStreamProtocol().
|
||||
func IsPacketProtocol(protocol uint8) bool {
|
||||
switch protocol {
|
||||
case 1, // ICMP
|
||||
17, // UDP
|
||||
27, // RDP
|
||||
58, // ICMP6
|
||||
33, // DCCP
|
||||
136: // UDP-LITE
|
||||
return true
|
||||
default:
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
// IsStreamProtocol returns whether the given protocol number is a known stream based protocol.
|
||||
// Note: Not fully complete. Calling IsPacketProtocol() does not equal calling !IsStreamProtocol().
|
||||
func IsStreamProtocol(protocol uint8) bool {
|
||||
switch protocol {
|
||||
case 6: // TCP
|
||||
return true
|
||||
default:
|
||||
return false
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user