Skip to content

std.net.addr

ipv4 and socket addresses

pub AddrError :: errors {
bad_format,
octet_range,
}
  • bad_format: not a dotted-quad a.b.c.d
  • octet_range: an octet was > 255
pub IpV4 :: struct {
a: u8,
b: u8,
c: u8,
d: u8,
}

ipv4 address; #derive(Eq) gives a.eq(&b); format prints 127.0.0.1

pub to_net :: fn(self: *Self) -> u32

packed u32 in network byte order, as in sockaddr_in

pub is_loopback :: fn(self: *Self) -> bool

127.x.x.x

pub is_unspecified :: fn(self: *Self) -> bool

0.0.0.0, “any interface”

pub format :: fn(self: *Self, sb: *StringBuilder)

dotted quad into sb

pub ipv4 :: fn(a: u8, b: u8, c: u8, d: u8) -> IpV4

address from four octets

pub localhost :: fn() -> IpV4

127.0.0.1

pub any :: fn() -> IpV4

0.0.0.0; bind to every interface

pub broadcast :: fn() -> IpV4

255.255.255.255, limited broadcast

pub from_net :: fn(n: u32) -> IpV4

network-order in_addr -> octets; inverse of to_net

pub parse :: fn(s: []const u8) -> IpV4 ! AddrError

parse a dotted quad

pub SocketAddr :: struct {
ip: IpV4,
port: u16,
}

ipv4 address + port

pub format :: fn(self: *Self, sb: *StringBuilder)
pub socket_addr :: fn(ip: IpV4, port: u16) -> SocketAddr