2020-08-21 00:01:37 +03:00
|
|
|
module net
|
|
|
|
|
|
|
|
const (
|
|
|
|
socket_max_port = u16(0xFFFF)
|
|
|
|
)
|
|
|
|
|
|
|
|
// validate_port checks whether a port is valid
|
|
|
|
// and returns the port or an error
|
|
|
|
pub fn validate_port(port int) ?u16 {
|
2021-06-13 23:53:38 +03:00
|
|
|
if port <= net.socket_max_port {
|
2020-08-21 00:01:37 +03:00
|
|
|
return u16(port)
|
|
|
|
} else {
|
|
|
|
return err_port_out_of_range
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// split address splits an address into its host name and its port
|
|
|
|
pub fn split_address(addr string) ?(string, u16) {
|
|
|
|
port := addr.all_after_last(':').int()
|
|
|
|
address := addr.all_before_last(':')
|
|
|
|
|
2021-06-13 23:53:38 +03:00
|
|
|
// TODO(emily): Maybe do some more checking here
|
|
|
|
// to validate ipv6 address sanity?
|
|
|
|
|
|
|
|
p := validate_port(port) ?
|
2020-08-21 00:01:37 +03:00
|
|
|
return address, p
|
|
|
|
}
|