Files
conduit/policy/input/net.go
2025-10-10 10:05:28 +02:00

43 lines
791 B
Go

package input
import (
"net"
)
// Addr represents a [net.Addr].
type Addr struct {
Network string `json:"network"` // Type of address.
IP string `json:"ip"` // IP address.
Port int `json:"port,omitempty"` // Port (if any).
}
func NewAddr(addr net.Addr) *Addr {
if addr == nil {
return nil
}
switch addr := addr.(type) {
case *net.IPAddr:
return &Addr{
Network: addr.Network(),
IP: addr.IP.String(),
}
case *net.TCPAddr:
return &Addr{
Network: addr.Network(),
IP: addr.IP.String(),
Port: addr.Port,
}
case *net.UDPAddr:
return &Addr{
Network: addr.Network(),
IP: addr.IP.String(),
Port: addr.Port,
}
default:
return &Addr{
Network: addr.Network(),
IP: addr.String(),
}
}
}