// Package connid contains code to generate the connectionID package connid import ( "net" "strconv" "strings" ) // Compute computes the connectionID from the local socket address. The zero // value is conventionally returned to mean "unknown". func Compute(network, address string) int64 { _, portstring, err := net.SplitHostPort(address) if err != nil { return 0 } portnum, err := strconv.Atoi(portstring) if err != nil { return 0 } if portnum < 0 || portnum > 65535 { return 0 } result := int64(portnum) if strings.Contains(network, "udp") { result *= -1 } else if !strings.Contains(network, "tcp") { result = 0 } return result }