2021-06-13 22:53:38 +02:00
|
|
|
module net
|
|
|
|
|
|
|
|
const max_unix_path = 108
|
|
|
|
|
|
|
|
struct C.addrinfo {
|
|
|
|
mut:
|
|
|
|
ai_family int
|
|
|
|
ai_socktype int
|
|
|
|
ai_flags int
|
|
|
|
ai_protocol int
|
|
|
|
ai_addrlen int
|
|
|
|
ai_addr voidptr
|
|
|
|
ai_canonname voidptr
|
|
|
|
ai_next voidptr
|
|
|
|
}
|
|
|
|
|
|
|
|
struct C.sockaddr_in {
|
2022-02-18 10:23:45 +01:00
|
|
|
mut:
|
2021-06-13 22:53:38 +02:00
|
|
|
sin_family u16
|
|
|
|
sin_port u16
|
|
|
|
sin_addr u32
|
|
|
|
}
|
|
|
|
|
|
|
|
struct C.sockaddr_in6 {
|
2022-02-18 10:23:45 +01:00
|
|
|
mut:
|
2021-06-13 22:53:38 +02:00
|
|
|
sin6_family u16
|
|
|
|
sin6_port u16
|
|
|
|
sin6_addr [4]u32
|
|
|
|
}
|
|
|
|
|
|
|
|
struct C.sockaddr_un {
|
2022-02-18 10:23:45 +01:00
|
|
|
mut:
|
2021-06-13 22:53:38 +02:00
|
|
|
sun_family u16
|
|
|
|
sun_path [max_unix_path]char
|
|
|
|
}
|
|
|
|
|
|
|
|
[_pack: '1']
|
|
|
|
struct Ip6 {
|
|
|
|
port u16
|
|
|
|
flow_info u32
|
|
|
|
addr [16]byte
|
|
|
|
scope_id u32
|
|
|
|
}
|
|
|
|
|
|
|
|
[_pack: '1']
|
|
|
|
struct Ip {
|
|
|
|
port u16
|
|
|
|
addr [4]byte
|
|
|
|
// Pad to size so that socket functions
|
|
|
|
// dont complain to us (see in.h and bind())
|
|
|
|
// TODO(emily): I would really like to use
|
|
|
|
// some constant calculations here
|
|
|
|
// so that this doesnt have to be hardcoded
|
|
|
|
sin_pad [8]byte
|
|
|
|
}
|
|
|
|
|
|
|
|
struct Unix {
|
|
|
|
path [max_unix_path]byte
|
|
|
|
}
|
|
|
|
|
|
|
|
[_pack: '1']
|
|
|
|
struct Addr {
|
|
|
|
pub:
|
|
|
|
f u16
|
|
|
|
addr AddrData
|
|
|
|
}
|