extern struct sockaddr [src]
Fields
family: sa_family_t
data: [14]u8
Members
Source
pub const sockaddr = extern struct {
family: sa_family_t,
data: [14]u8,
pub const SS_MAXSIZE = 128;
pub const storage = extern struct {
family: sa_family_t align(8),
padding: [SS_MAXSIZE - @sizeOf(sa_family_t)]u8 = undefined,
comptime {
assert(@sizeOf(storage) == SS_MAXSIZE);
assert(@alignOf(storage) == 8);
}
};
/// IPv4 socket address
pub const in = extern struct {
family: sa_family_t = AF.INET,
port: in_port_t,
addr: u32,
zero: [8]u8 = [8]u8{ 0, 0, 0, 0, 0, 0, 0, 0 },
};
/// IPv6 socket address
pub const in6 = extern struct {
family: sa_family_t = AF.INET6,
port: in_port_t,
flowinfo: u32,
addr: [16]u8,
scope_id: u32,
};
/// UNIX domain socket address
pub const un = extern struct {
family: sa_family_t = AF.UNIX,
path: [108]u8,
};
/// Packet socket address
pub const ll = extern struct {
family: sa_family_t = AF.PACKET,
protocol: u16,
ifindex: i32,
hatype: u16,
pkttype: u8,
halen: u8,
addr: [8]u8,
};
/// Netlink socket address
pub const nl = extern struct {
family: sa_family_t = AF.NETLINK,
__pad1: c_ushort = 0,
/// port ID
pid: u32,
/// multicast groups mask
groups: u32,
};
pub const xdp = extern struct {
family: u16 = AF.XDP,
flags: u16,
ifindex: u32,
queue_id: u32,
shared_umem_fd: u32,
};
/// Address structure for vSockets
pub const vm = extern struct {
family: sa_family_t = AF.VSOCK,
reserved1: u16 = 0,
port: u32,
cid: u32,
flags: u8,
/// The total size of this structure should be exactly the same as that of struct sockaddr.
zero: [3]u8 = [_]u8{0} ** 3,
comptime {
std.debug.assert(@sizeOf(vm) == @sizeOf(sockaddr));
}
};
}