upd4
This commit is contained in:
@@ -0,0 +1 @@
|
||||
examples/
|
||||
@@ -1,13 +1,12 @@
|
||||
# Networking Library for V
|
||||
|
||||
**netio** is a networking library for V programming language.
|
||||
This implementation aims to be as flexible and portable.
|
||||
**netio** is a flexible networking library for V programming language.
|
||||
It heavily relies on the libc.
|
||||
|
||||
Differences with the V standard library **net** module:
|
||||
Differences with the V standard library `net` module:
|
||||
|
||||
* Provides the low-level wrappers around C API functions.
|
||||
* Supports any kind of: socket type, socket option, address family and protocol.
|
||||
* Provides the low-level wrappers around C API.
|
||||
* Supports any kind of sockets, socket options, address families and protocols.
|
||||
|
||||
**netio** provides a high-level abstractions over BSD sockets: `TCPListener`,
|
||||
**netio** also provides a high-level abstractions over BSD sockets: `TCPListener`,
|
||||
`TCPStream`, `UDPSocket`.
|
||||
|
||||
@@ -1,44 +0,0 @@
|
||||
module netio
|
||||
|
||||
/*
|
||||
Address families defined on Darwin.
|
||||
*/
|
||||
|
||||
pub const af_appletalk = AddrFamily(C.AF_APPLETALK)
|
||||
pub const af_ccitt = AddrFamily(C.AF_CCITT)
|
||||
pub const af_chaos = AddrFamily(C.AF_CHAOS)
|
||||
pub const af_cnt = AddrFamily(C.AF_CNT)
|
||||
pub const af_coip = AddrFamily(C.AF_COIP)
|
||||
pub const af_datakit = AddrFamily(C.AF_DATAKIT)
|
||||
pub const af_decnet = AddrFamily(C.AF_DECnet)
|
||||
pub const af_dli = AddrFamily(C.AF_DLI)
|
||||
pub const af_e164 = AddrFamily(C.AF_E164)
|
||||
pub const af_ecma = AddrFamily(C.AF_ECMA)
|
||||
pub const af_hylink = AddrFamily(C.AF_HYLINK)
|
||||
pub const af_ieee80211 = AddrFamily(C.AF_IEEE80211)
|
||||
pub const af_implink = AddrFamily(C.AF_IMPLINK)
|
||||
pub const af_inet6 = AddrFamily(C.AF_INET6)
|
||||
pub const af_inet = AddrFamily(C.AF_INET)
|
||||
pub const af_ipx = AddrFamily(C.AF_IPX)
|
||||
pub const af_isdn = AddrFamily(C.AF_ISDN)
|
||||
pub const af_iso = AddrFamily(C.AF_ISO)
|
||||
pub const af_lat = AddrFamily(C.AF_LAT)
|
||||
pub const af_link = AddrFamily(C.AF_LINK)
|
||||
pub const af_local = AddrFamily(C.AF_LOCAL)
|
||||
pub const af_max = AddrFamily(C.AF_MAX)
|
||||
pub const af_natm = AddrFamily(C.AF_NATM)
|
||||
pub const af_ndrv = AddrFamily(C.AF_NDRV)
|
||||
pub const af_netbios = AddrFamily(C.AF_NETBIOS)
|
||||
pub const af_ns = AddrFamily(C.AF_NS)
|
||||
pub const af_osi = AddrFamily(C.AF_OSI)
|
||||
pub const af_ppp = AddrFamily(C.AF_PPP)
|
||||
pub const af_pup = AddrFamily(C.AF_PUP)
|
||||
pub const af_reserved_36 = AddrFamily(C.AF_RESERVED_36)
|
||||
pub const af_route = AddrFamily(C.AF_ROUTE)
|
||||
pub const af_sip = AddrFamily(C.AF_SIP)
|
||||
pub const af_sna = AddrFamily(C.AF_SNA)
|
||||
pub const af_system = AddrFamily(C.AF_SYSTEM)
|
||||
pub const af_unix = AddrFamily(C.AF_UNIX)
|
||||
pub const af_unspec = AddrFamily(C.AF_UNSPEC)
|
||||
pub const af_utun = AddrFamily(C.AF_UTUN)
|
||||
pub const af_vsock = AddrFamily(C.AF_VSOCK)
|
||||
@@ -1,10 +0,0 @@
|
||||
module netio
|
||||
|
||||
/*
|
||||
Common address families. Should work on most platforms.
|
||||
*/
|
||||
|
||||
pub const af_unspec = AddrFamily(C.AF_UNSPEC)
|
||||
pub const af_unix = AddrFamily(C.AF_UNIX)
|
||||
pub const af_inet = AddrFamily(C.AF_INET)
|
||||
pub const af_inet6 = AddrFamily(C.AF_INET6)
|
||||
@@ -1,96 +0,0 @@
|
||||
module netio
|
||||
|
||||
/*
|
||||
Address families defined on FreeBSD.
|
||||
*/
|
||||
|
||||
pub const af_appletalk = AddrFamily(C.AF_APPLETALK)
|
||||
pub const af_arp = AddrFamily(C.AF_ARP)
|
||||
pub const af_atm = AddrFamily(C.AF_ATM)
|
||||
pub const af_bluetooth = AddrFamily(C.AF_BLUETOOTH)
|
||||
pub const af_ccitt = AddrFamily(C.AF_CCITT)
|
||||
pub const af_chaos = AddrFamily(C.AF_CHAOS)
|
||||
pub const af_cnt = AddrFamily(C.AF_CNT)
|
||||
pub const af_coip = AddrFamily(C.AF_COIP)
|
||||
pub const af_datakit = AddrFamily(C.AF_DATAKIT)
|
||||
pub const af_decnet = AddrFamily(C.AF_DECnet)
|
||||
pub const af_divert = AddrFamily(C.AF_DIVERT)
|
||||
pub const af_dli = AddrFamily(C.AF_DLI)
|
||||
pub const af_e164 = AddrFamily(C.AF_E164)
|
||||
pub const af_ecma = AddrFamily(C.AF_ECMA)
|
||||
pub const af_hylink = AddrFamily(C.AF_HYLINK)
|
||||
pub const af_hyperv = AddrFamily(C.AF_HYPERV)
|
||||
pub const af_ieee80211 = AddrFamily(C.AF_IEEE80211)
|
||||
pub const af_implink = AddrFamily(C.AF_IMPLINK)
|
||||
pub const af_inet6 = AddrFamily(C.AF_INET6)
|
||||
pub const af_inet6_sdp = AddrFamily(C.AF_INET6_SDP)
|
||||
pub const af_inet = AddrFamily(C.AF_INET)
|
||||
pub const af_inet_sdp = AddrFamily(C.AF_INET_SDP)
|
||||
pub const af_ipfwlog = AddrFamily(C.AF_IPFWLOG)
|
||||
pub const af_ipx = AddrFamily(C.AF_IPX)
|
||||
pub const af_isdn = AddrFamily(C.AF_ISDN)
|
||||
pub const af_iso = AddrFamily(C.AF_ISO)
|
||||
pub const af_lat = AddrFamily(C.AF_LAT)
|
||||
pub const af_link = AddrFamily(C.AF_LINK)
|
||||
pub const af_local = AddrFamily(C.AF_LOCAL)
|
||||
pub const af_max = AddrFamily(C.AF_MAX)
|
||||
pub const af_natm = AddrFamily(C.AF_NATM)
|
||||
pub const af_netbios = AddrFamily(C.AF_NETBIOS)
|
||||
pub const af_netgraph = AddrFamily(C.AF_NETGRAPH)
|
||||
pub const af_netlink = AddrFamily(C.AF_NETLINK)
|
||||
pub const af_osi = AddrFamily(C.AF_OSI)
|
||||
pub const af_pup = AddrFamily(C.AF_PUP)
|
||||
pub const af_route = AddrFamily(C.AF_ROUTE)
|
||||
pub const af_scluster = AddrFamily(C.AF_SCLUSTER)
|
||||
pub const af_sip = AddrFamily(C.AF_SIP)
|
||||
pub const af_slow = AddrFamily(C.AF_SLOW)
|
||||
pub const af_sna = AddrFamily(C.AF_SNA)
|
||||
pub const af_unix = AddrFamily(C.AF_UNIX)
|
||||
pub const af_unspec = AddrFamily(C.AF_UNSPEC)
|
||||
pub const af_vendor00 = AddrFamily(C.AF_VENDOR00)
|
||||
pub const af_vendor01 = AddrFamily(C.AF_VENDOR01)
|
||||
pub const af_vendor03 = AddrFamily(C.AF_VENDOR03)
|
||||
pub const af_vendor04 = AddrFamily(C.AF_VENDOR04)
|
||||
pub const af_vendor05 = AddrFamily(C.AF_VENDOR05)
|
||||
pub const af_vendor06 = AddrFamily(C.AF_VENDOR06)
|
||||
pub const af_vendor07 = AddrFamily(C.AF_VENDOR07)
|
||||
pub const af_vendor08 = AddrFamily(C.AF_VENDOR08)
|
||||
pub const af_vendor09 = AddrFamily(C.AF_VENDOR09)
|
||||
pub const af_vendor10 = AddrFamily(C.AF_VENDOR10)
|
||||
pub const af_vendor11 = AddrFamily(C.AF_VENDOR11)
|
||||
pub const af_vendor12 = AddrFamily(C.AF_VENDOR12)
|
||||
pub const af_vendor13 = AddrFamily(C.AF_VENDOR13)
|
||||
pub const af_vendor14 = AddrFamily(C.AF_VENDOR14)
|
||||
pub const af_vendor15 = AddrFamily(C.AF_VENDOR15)
|
||||
pub const af_vendor16 = AddrFamily(C.AF_VENDOR16)
|
||||
pub const af_vendor17 = AddrFamily(C.AF_VENDOR17)
|
||||
pub const af_vendor18 = AddrFamily(C.AF_VENDOR18)
|
||||
pub const af_vendor19 = AddrFamily(C.AF_VENDOR19)
|
||||
pub const af_vendor20 = AddrFamily(C.AF_VENDOR20)
|
||||
pub const af_vendor21 = AddrFamily(C.AF_VENDOR21)
|
||||
pub const af_vendor22 = AddrFamily(C.AF_VENDOR22)
|
||||
pub const af_vendor23 = AddrFamily(C.AF_VENDOR23)
|
||||
pub const af_vendor24 = AddrFamily(C.AF_VENDOR24)
|
||||
pub const af_vendor25 = AddrFamily(C.AF_VENDOR25)
|
||||
pub const af_vendor26 = AddrFamily(C.AF_VENDOR26)
|
||||
pub const af_vendor27 = AddrFamily(C.AF_VENDOR27)
|
||||
pub const af_vendor28 = AddrFamily(C.AF_VENDOR28)
|
||||
pub const af_vendor29 = AddrFamily(C.AF_VENDOR29)
|
||||
pub const af_vendor30 = AddrFamily(C.AF_VENDOR30)
|
||||
pub const af_vendor31 = AddrFamily(C.AF_VENDOR31)
|
||||
pub const af_vendor32 = AddrFamily(C.AF_VENDOR32)
|
||||
pub const af_vendor33 = AddrFamily(C.AF_VENDOR33)
|
||||
pub const af_vendor34 = AddrFamily(C.AF_VENDOR34)
|
||||
pub const af_vendor35 = AddrFamily(C.AF_VENDOR35)
|
||||
pub const af_vendor36 = AddrFamily(C.AF_VENDOR36)
|
||||
pub const af_vendor37 = AddrFamily(C.AF_VENDOR37)
|
||||
pub const af_vendor38 = AddrFamily(C.AF_VENDOR38)
|
||||
pub const af_vendor39 = AddrFamily(C.AF_VENDOR39)
|
||||
pub const af_vendor40 = AddrFamily(C.AF_VENDOR40)
|
||||
pub const af_vendor41 = AddrFamily(C.AF_VENDOR41)
|
||||
pub const af_vendor42 = AddrFamily(C.AF_VENDOR42)
|
||||
pub const af_vendor43 = AddrFamily(C.AF_VENDOR43)
|
||||
pub const af_vendor44 = AddrFamily(C.AF_VENDOR44)
|
||||
pub const af_vendor45 = AddrFamily(C.AF_VENDOR45)
|
||||
pub const af_vendor46 = AddrFamily(C.AF_VENDOR46)
|
||||
pub const af_vendor47 = AddrFamily(C.AF_VENDOR47)
|
||||
@@ -1,56 +0,0 @@
|
||||
module netio
|
||||
|
||||
/*
|
||||
Address families defined on Linux.
|
||||
*/
|
||||
|
||||
pub const af_alg = AddrFamily(C.AF_ALG)
|
||||
pub const af_appletalk = AddrFamily(C.AF_APPLETALK)
|
||||
pub const af_ash = AddrFamily(C.AF_ASH)
|
||||
pub const af_atmpvc = AddrFamily(C.AF_ATMPVC)
|
||||
pub const af_atmsvc = AddrFamily(C.AF_ATMSVC)
|
||||
pub const af_ax25 = AddrFamily(C.AF_AX25)
|
||||
pub const af_bluetooth = AddrFamily(C.AF_BLUETOOTH)
|
||||
pub const af_bridge = AddrFamily(C.AF_BRIDGE)
|
||||
pub const af_caif = AddrFamily(C.AF_CAIF)
|
||||
pub const af_can = AddrFamily(C.AF_CAN)
|
||||
pub const af_decnet = AddrFamily(C.AF_DECnet)
|
||||
pub const af_econet = AddrFamily(C.AF_ECONET)
|
||||
pub const af_file = AddrFamily(C.AF_FILE)
|
||||
pub const af_ib = AddrFamily(C.AF_IB)
|
||||
pub const af_ieee802154 = AddrFamily(C.AF_IEEE802154)
|
||||
pub const af_inet6 = AddrFamily(C.AF_INET6)
|
||||
pub const af_inet = AddrFamily(C.AF_INET)
|
||||
pub const af_ipx = AddrFamily(C.AF_IPX)
|
||||
pub const af_irda = AddrFamily(C.AF_IRDA)
|
||||
pub const af_isdn = AddrFamily(C.AF_ISDN)
|
||||
pub const af_iucv = AddrFamily(C.AF_IUCV)
|
||||
pub const af_kcm = AddrFamily(C.AF_KCM)
|
||||
pub const af_key = AddrFamily(C.AF_KEY)
|
||||
pub const af_llc = AddrFamily(C.AF_LLC)
|
||||
pub const af_local = AddrFamily(C.AF_LOCAL)
|
||||
pub const af_max = AddrFamily(C.AF_MAX)
|
||||
pub const af_mctp = AddrFamily(C.AF_MCTP)
|
||||
pub const af_mpls = AddrFamily(C.AF_MPLS)
|
||||
pub const af_netbeui = AddrFamily(C.AF_NETBEUI)
|
||||
pub const af_netlink = AddrFamily(C.AF_NETLINK)
|
||||
pub const af_netrom = AddrFamily(C.AF_NETROM)
|
||||
pub const af_nfc = AddrFamily(C.AF_NFC)
|
||||
pub const af_packet = AddrFamily(C.AF_PACKET)
|
||||
pub const af_phonet = AddrFamily(C.AF_PHONET)
|
||||
pub const af_pppox = AddrFamily(C.AF_PPPOX)
|
||||
pub const af_qipcrtr = AddrFamily(C.AF_QIPCRTR)
|
||||
pub const af_rds = AddrFamily(C.AF_RDS)
|
||||
pub const af_rose = AddrFamily(C.AF_ROSE)
|
||||
pub const af_route = AddrFamily(C.AF_ROUTE)
|
||||
pub const af_rxrpc = AddrFamily(C.AF_RXRPC)
|
||||
pub const af_security = AddrFamily(C.AF_SECURITY)
|
||||
pub const af_smc = AddrFamily(C.AF_SMC)
|
||||
pub const af_sna = AddrFamily(C.AF_SNA)
|
||||
pub const af_tipc = AddrFamily(C.AF_TIPC)
|
||||
pub const af_unix = AddrFamily(C.AF_UNIX)
|
||||
pub const af_unspec = AddrFamily(C.AF_UNSPEC)
|
||||
pub const af_vsock = AddrFamily(C.AF_VSOCK)
|
||||
pub const af_wanpipe = AddrFamily(C.AF_WANPIPE)
|
||||
pub const af_x25 = AddrFamily(C.AF_X25)
|
||||
pub const af_xdp = AddrFamily(C.AF_XDP)
|
||||
@@ -1,16 +0,0 @@
|
||||
module netio
|
||||
|
||||
/*
|
||||
getaddrinfo(3) flags defined on FreeBSD.
|
||||
*/
|
||||
|
||||
pub const ai_addrconfig = C.AI_ADDRCONFIG
|
||||
pub const ai_all = C.AI_ALL
|
||||
pub const ai_canonname = C.AI_CANONNAME
|
||||
pub const ai_default = C.AI_DEFAULT
|
||||
pub const ai_mask = C.AI_MASK
|
||||
pub const ai_numerichost = C.AI_NUMERICHOST
|
||||
pub const ai_numericserv = C.AI_NUMERICSERV
|
||||
pub const ai_passive = C.AI_PASSIVE
|
||||
pub const ai_v4mapped = C.AI_V4MAPPED
|
||||
pub const ai_v4mapped_cfg = C.AI_V4MAPPED_CFG
|
||||
@@ -1,13 +0,0 @@
|
||||
module netio
|
||||
|
||||
/*
|
||||
getaddrinfo(3) flags defined on Linux.
|
||||
*/
|
||||
|
||||
pub const ai_addrconfig = C.AI_ADDRCONFIG
|
||||
pub const ai_canonname = C.AI_CANONNAME
|
||||
pub const ai_all = C.AI_ALL
|
||||
pub const ai_v4mapped = C.AI_V4MAPPED
|
||||
pub const ai_numericserv = C.AI_NUMERICSERV
|
||||
pub const ai_passive = C.AI_PASSIVE
|
||||
pub const ai_numerichost = C.AI_NUMERICHOST
|
||||
@@ -0,0 +1,17 @@
|
||||
module netio
|
||||
|
||||
/*
|
||||
Common constants. Should work on most systems.
|
||||
*/
|
||||
|
||||
pub const af_unspec = AddrFamily(C.AF_UNSPEC)
|
||||
pub const af_unix = AddrFamily(C.AF_UNIX)
|
||||
pub const af_inet = AddrFamily(C.AF_INET)
|
||||
pub const af_inet6 = AddrFamily(C.AF_INET6)
|
||||
|
||||
pub const sock_stream = SocketType(C.SOCK_STREAM)
|
||||
pub const sock_dgram = SocketType(C.SOCK_DGRAM)
|
||||
pub const sock_seqpacket = SocketType(C.SOCK_SEQPACKET)
|
||||
pub const sock_raw = SocketType(C.SOCK_RAW)
|
||||
|
||||
pub const sol_socket = SocketLevel(C.SOL_SOCKET)
|
||||
@@ -0,0 +1,422 @@
|
||||
module netio
|
||||
|
||||
/*
|
||||
This file is generated by mkconst.sh, DO NOT EDIT.
|
||||
*/
|
||||
|
||||
pub const af_appletalk = AddrFamily(C.AF_APPLETALK)
|
||||
pub const af_arp = AddrFamily(C.AF_ARP)
|
||||
pub const af_atm = AddrFamily(C.AF_ATM)
|
||||
pub const af_bluetooth = AddrFamily(C.AF_BLUETOOTH)
|
||||
pub const af_ccitt = AddrFamily(C.AF_CCITT)
|
||||
pub const af_chaos = AddrFamily(C.AF_CHAOS)
|
||||
pub const af_cnt = AddrFamily(C.AF_CNT)
|
||||
pub const af_coip = AddrFamily(C.AF_COIP)
|
||||
pub const af_datakit = AddrFamily(C.AF_DATAKIT)
|
||||
pub const af_decnet = AddrFamily(C.AF_DECnet)
|
||||
pub const af_divert = AddrFamily(C.AF_DIVERT)
|
||||
pub const af_dli = AddrFamily(C.AF_DLI)
|
||||
pub const af_e164 = AddrFamily(C.AF_E164)
|
||||
pub const af_ecma = AddrFamily(C.AF_ECMA)
|
||||
pub const af_hylink = AddrFamily(C.AF_HYLINK)
|
||||
pub const af_hyperv = AddrFamily(C.AF_HYPERV)
|
||||
pub const af_ieee80211 = AddrFamily(C.AF_IEEE80211)
|
||||
pub const af_implink = AddrFamily(C.AF_IMPLINK)
|
||||
pub const af_inet6 = AddrFamily(C.AF_INET6)
|
||||
pub const af_inet6_sdp = AddrFamily(C.AF_INET6_SDP)
|
||||
pub const af_inet = AddrFamily(C.AF_INET)
|
||||
pub const af_inet_sdp = AddrFamily(C.AF_INET_SDP)
|
||||
pub const af_ipfwlog = AddrFamily(C.AF_IPFWLOG)
|
||||
pub const af_ipx = AddrFamily(C.AF_IPX)
|
||||
pub const af_isdn = AddrFamily(C.AF_ISDN)
|
||||
pub const af_iso = AddrFamily(C.AF_ISO)
|
||||
pub const af_lat = AddrFamily(C.AF_LAT)
|
||||
pub const af_link = AddrFamily(C.AF_LINK)
|
||||
pub const af_local = AddrFamily(C.AF_LOCAL)
|
||||
pub const af_max = AddrFamily(C.AF_MAX)
|
||||
pub const af_natm = AddrFamily(C.AF_NATM)
|
||||
pub const af_netbios = AddrFamily(C.AF_NETBIOS)
|
||||
pub const af_netgraph = AddrFamily(C.AF_NETGRAPH)
|
||||
pub const af_netlink = AddrFamily(C.AF_NETLINK)
|
||||
pub const af_osi = AddrFamily(C.AF_OSI)
|
||||
pub const af_pup = AddrFamily(C.AF_PUP)
|
||||
pub const af_route = AddrFamily(C.AF_ROUTE)
|
||||
pub const af_scluster = AddrFamily(C.AF_SCLUSTER)
|
||||
pub const af_sip = AddrFamily(C.AF_SIP)
|
||||
pub const af_slow = AddrFamily(C.AF_SLOW)
|
||||
pub const af_sna = AddrFamily(C.AF_SNA)
|
||||
pub const af_unix = AddrFamily(C.AF_UNIX)
|
||||
pub const af_unspec = AddrFamily(C.AF_UNSPEC)
|
||||
pub const af_vendor00 = AddrFamily(C.AF_VENDOR00)
|
||||
pub const af_vendor01 = AddrFamily(C.AF_VENDOR01)
|
||||
pub const af_vendor03 = AddrFamily(C.AF_VENDOR03)
|
||||
pub const af_vendor04 = AddrFamily(C.AF_VENDOR04)
|
||||
pub const af_vendor05 = AddrFamily(C.AF_VENDOR05)
|
||||
pub const af_vendor06 = AddrFamily(C.AF_VENDOR06)
|
||||
pub const af_vendor07 = AddrFamily(C.AF_VENDOR07)
|
||||
pub const af_vendor08 = AddrFamily(C.AF_VENDOR08)
|
||||
pub const af_vendor09 = AddrFamily(C.AF_VENDOR09)
|
||||
pub const af_vendor10 = AddrFamily(C.AF_VENDOR10)
|
||||
pub const af_vendor11 = AddrFamily(C.AF_VENDOR11)
|
||||
pub const af_vendor12 = AddrFamily(C.AF_VENDOR12)
|
||||
pub const af_vendor13 = AddrFamily(C.AF_VENDOR13)
|
||||
pub const af_vendor14 = AddrFamily(C.AF_VENDOR14)
|
||||
pub const af_vendor15 = AddrFamily(C.AF_VENDOR15)
|
||||
pub const af_vendor16 = AddrFamily(C.AF_VENDOR16)
|
||||
pub const af_vendor17 = AddrFamily(C.AF_VENDOR17)
|
||||
pub const af_vendor18 = AddrFamily(C.AF_VENDOR18)
|
||||
pub const af_vendor19 = AddrFamily(C.AF_VENDOR19)
|
||||
pub const af_vendor20 = AddrFamily(C.AF_VENDOR20)
|
||||
pub const af_vendor21 = AddrFamily(C.AF_VENDOR21)
|
||||
pub const af_vendor22 = AddrFamily(C.AF_VENDOR22)
|
||||
pub const af_vendor23 = AddrFamily(C.AF_VENDOR23)
|
||||
pub const af_vendor24 = AddrFamily(C.AF_VENDOR24)
|
||||
pub const af_vendor25 = AddrFamily(C.AF_VENDOR25)
|
||||
pub const af_vendor26 = AddrFamily(C.AF_VENDOR26)
|
||||
pub const af_vendor27 = AddrFamily(C.AF_VENDOR27)
|
||||
pub const af_vendor28 = AddrFamily(C.AF_VENDOR28)
|
||||
pub const af_vendor29 = AddrFamily(C.AF_VENDOR29)
|
||||
pub const af_vendor30 = AddrFamily(C.AF_VENDOR30)
|
||||
pub const af_vendor31 = AddrFamily(C.AF_VENDOR31)
|
||||
pub const af_vendor32 = AddrFamily(C.AF_VENDOR32)
|
||||
pub const af_vendor33 = AddrFamily(C.AF_VENDOR33)
|
||||
pub const af_vendor34 = AddrFamily(C.AF_VENDOR34)
|
||||
pub const af_vendor35 = AddrFamily(C.AF_VENDOR35)
|
||||
pub const af_vendor36 = AddrFamily(C.AF_VENDOR36)
|
||||
pub const af_vendor37 = AddrFamily(C.AF_VENDOR37)
|
||||
pub const af_vendor38 = AddrFamily(C.AF_VENDOR38)
|
||||
pub const af_vendor39 = AddrFamily(C.AF_VENDOR39)
|
||||
pub const af_vendor40 = AddrFamily(C.AF_VENDOR40)
|
||||
pub const af_vendor41 = AddrFamily(C.AF_VENDOR41)
|
||||
pub const af_vendor42 = AddrFamily(C.AF_VENDOR42)
|
||||
pub const af_vendor43 = AddrFamily(C.AF_VENDOR43)
|
||||
pub const af_vendor44 = AddrFamily(C.AF_VENDOR44)
|
||||
pub const af_vendor45 = AddrFamily(C.AF_VENDOR45)
|
||||
pub const af_vendor46 = AddrFamily(C.AF_VENDOR46)
|
||||
pub const af_vendor47 = AddrFamily(C.AF_VENDOR47)
|
||||
pub const ai_addrconfig = AddrInfoFlag(C.AI_ADDRCONFIG)
|
||||
pub const ai_all = AddrInfoFlag(C.AI_ALL)
|
||||
pub const ai_canonname = AddrInfoFlag(C.AI_CANONNAME)
|
||||
pub const ai_default = AddrInfoFlag(C.AI_DEFAULT)
|
||||
pub const ai_mask = AddrInfoFlag(C.AI_MASK)
|
||||
pub const ai_numerichost = AddrInfoFlag(C.AI_NUMERICHOST)
|
||||
pub const ai_numericserv = AddrInfoFlag(C.AI_NUMERICSERV)
|
||||
pub const ai_passive = AddrInfoFlag(C.AI_PASSIVE)
|
||||
pub const ai_v4mapped = AddrInfoFlag(C.AI_V4MAPPED)
|
||||
pub const ai_v4mapped_cfg = AddrInfoFlag(C.AI_V4MAPPED_CFG)
|
||||
pub const ipproto_3pc = SocketLevel(C.IPPROTO_3PC)
|
||||
pub const ipproto_adfs = SocketLevel(C.IPPROTO_ADFS)
|
||||
pub const ipproto_ahip = SocketLevel(C.IPPROTO_AHIP)
|
||||
pub const ipproto_ah = SocketLevel(C.IPPROTO_AH)
|
||||
pub const ipproto_apes = SocketLevel(C.IPPROTO_APES)
|
||||
pub const ipproto_argus = SocketLevel(C.IPPROTO_ARGUS)
|
||||
pub const ipproto_ax25 = SocketLevel(C.IPPROTO_AX25)
|
||||
pub const ipproto_bha = SocketLevel(C.IPPROTO_BHA)
|
||||
pub const ipproto_blt = SocketLevel(C.IPPROTO_BLT)
|
||||
pub const ipproto_brsatmon = SocketLevel(C.IPPROTO_BRSATMON)
|
||||
pub const ipproto_carp = SocketLevel(C.IPPROTO_CARP)
|
||||
pub const ipproto_cftp = SocketLevel(C.IPPROTO_CFTP)
|
||||
pub const ipproto_chaos = SocketLevel(C.IPPROTO_CHAOS)
|
||||
pub const ipproto_cmtp = SocketLevel(C.IPPROTO_CMTP)
|
||||
pub const ipproto_cphb = SocketLevel(C.IPPROTO_CPHB)
|
||||
pub const ipproto_cpnx = SocketLevel(C.IPPROTO_CPNX)
|
||||
pub const ipproto_dccp = SocketLevel(C.IPPROTO_DCCP)
|
||||
pub const ipproto_ddp = SocketLevel(C.IPPROTO_DDP)
|
||||
pub const ipproto_dgp = SocketLevel(C.IPPROTO_DGP)
|
||||
pub const ipproto_divert = SocketLevel(C.IPPROTO_DIVERT)
|
||||
pub const ipproto_done = SocketLevel(C.IPPROTO_DONE)
|
||||
pub const ipproto_dstopts = SocketLevel(C.IPPROTO_DSTOPTS)
|
||||
pub const ipproto_egp = SocketLevel(C.IPPROTO_EGP)
|
||||
pub const ipproto_emcon = SocketLevel(C.IPPROTO_EMCON)
|
||||
pub const ipproto_encap = SocketLevel(C.IPPROTO_ENCAP)
|
||||
pub const ipproto_eon = SocketLevel(C.IPPROTO_EON)
|
||||
pub const ipproto_esp = SocketLevel(C.IPPROTO_ESP)
|
||||
pub const ipproto_etherip = SocketLevel(C.IPPROTO_ETHERIP)
|
||||
pub const ipproto_fragment = SocketLevel(C.IPPROTO_FRAGMENT)
|
||||
pub const ipproto_ggp = SocketLevel(C.IPPROTO_GGP)
|
||||
pub const ipproto_gmtp = SocketLevel(C.IPPROTO_GMTP)
|
||||
pub const ipproto_gre = SocketLevel(C.IPPROTO_GRE)
|
||||
pub const ipproto_hello = SocketLevel(C.IPPROTO_HELLO)
|
||||
pub const ipproto_hip = SocketLevel(C.IPPROTO_HIP)
|
||||
pub const ipproto_hmp = SocketLevel(C.IPPROTO_HMP)
|
||||
pub const ipproto_hopopts = SocketLevel(C.IPPROTO_HOPOPTS)
|
||||
pub const ipproto_icmpv6 = SocketLevel(C.IPPROTO_ICMPV6)
|
||||
pub const ipproto_icmp = SocketLevel(C.IPPROTO_ICMP)
|
||||
pub const ipproto_idpr = SocketLevel(C.IPPROTO_IDPR)
|
||||
pub const ipproto_idp = SocketLevel(C.IPPROTO_IDP)
|
||||
pub const ipproto_idrp = SocketLevel(C.IPPROTO_IDRP)
|
||||
pub const ipproto_igmp = SocketLevel(C.IPPROTO_IGMP)
|
||||
pub const ipproto_igp = SocketLevel(C.IPPROTO_IGP)
|
||||
pub const ipproto_igrp = SocketLevel(C.IPPROTO_IGRP)
|
||||
pub const ipproto_il = SocketLevel(C.IPPROTO_IL)
|
||||
pub const ipproto_inlsp = SocketLevel(C.IPPROTO_INLSP)
|
||||
pub const ipproto_inp = SocketLevel(C.IPPROTO_INP)
|
||||
pub const ipproto_ipcomp = SocketLevel(C.IPPROTO_IPCOMP)
|
||||
pub const ipproto_ipcv = SocketLevel(C.IPPROTO_IPCV)
|
||||
pub const ipproto_ipeip = SocketLevel(C.IPPROTO_IPEIP)
|
||||
pub const ipproto_ipip = SocketLevel(C.IPPROTO_IPIP)
|
||||
pub const ipproto_ippc = SocketLevel(C.IPPROTO_IPPC)
|
||||
pub const ipproto_ipv4 = SocketLevel(C.IPPROTO_IPV4)
|
||||
pub const ipproto_ipv6 = SocketLevel(C.IPPROTO_IPV6)
|
||||
pub const ipproto_ip = SocketLevel(C.IPPROTO_IP)
|
||||
pub const ipproto_irtp = SocketLevel(C.IPPROTO_IRTP)
|
||||
pub const ipproto_kryptolan = SocketLevel(C.IPPROTO_KRYPTOLAN)
|
||||
pub const ipproto_larp = SocketLevel(C.IPPROTO_LARP)
|
||||
pub const ipproto_leaf1 = SocketLevel(C.IPPROTO_LEAF1)
|
||||
pub const ipproto_leaf2 = SocketLevel(C.IPPROTO_LEAF2)
|
||||
pub const ipproto_max = SocketLevel(C.IPPROTO_MAX)
|
||||
pub const ipproto_meas = SocketLevel(C.IPPROTO_MEAS)
|
||||
pub const ipproto_mhrp = SocketLevel(C.IPPROTO_MHRP)
|
||||
pub const ipproto_mh = SocketLevel(C.IPPROTO_MH)
|
||||
pub const ipproto_micp = SocketLevel(C.IPPROTO_MICP)
|
||||
pub const ipproto_mobile = SocketLevel(C.IPPROTO_MOBILE)
|
||||
pub const ipproto_mpls = SocketLevel(C.IPPROTO_MPLS)
|
||||
pub const ipproto_mtp = SocketLevel(C.IPPROTO_MTP)
|
||||
pub const ipproto_mux = SocketLevel(C.IPPROTO_MUX)
|
||||
pub const ipproto_nd = SocketLevel(C.IPPROTO_ND)
|
||||
pub const ipproto_nhrp = SocketLevel(C.IPPROTO_NHRP)
|
||||
pub const ipproto_none = SocketLevel(C.IPPROTO_NONE)
|
||||
pub const ipproto_nsp = SocketLevel(C.IPPROTO_NSP)
|
||||
pub const ipproto_nvpii = SocketLevel(C.IPPROTO_NVPII)
|
||||
pub const ipproto_old_divert = SocketLevel(C.IPPROTO_OLD_DIVERT)
|
||||
pub const ipproto_ospfigp = SocketLevel(C.IPPROTO_OSPFIGP)
|
||||
pub const ipproto_pfsync = SocketLevel(C.IPPROTO_PFSYNC)
|
||||
pub const ipproto_pgm = SocketLevel(C.IPPROTO_PGM)
|
||||
pub const ipproto_pigp = SocketLevel(C.IPPROTO_PIGP)
|
||||
pub const ipproto_pim = SocketLevel(C.IPPROTO_PIM)
|
||||
pub const ipproto_prm = SocketLevel(C.IPPROTO_PRM)
|
||||
pub const ipproto_pup = SocketLevel(C.IPPROTO_PUP)
|
||||
pub const ipproto_pvp = SocketLevel(C.IPPROTO_PVP)
|
||||
pub const ipproto_raw = SocketLevel(C.IPPROTO_RAW)
|
||||
pub const ipproto_rccmon = SocketLevel(C.IPPROTO_RCCMON)
|
||||
pub const ipproto_rdp = SocketLevel(C.IPPROTO_RDP)
|
||||
pub const ipproto_reserved_253 = SocketLevel(C.IPPROTO_RESERVED_253)
|
||||
pub const ipproto_reserved_254 = SocketLevel(C.IPPROTO_RESERVED_254)
|
||||
pub const ipproto_routing = SocketLevel(C.IPPROTO_ROUTING)
|
||||
pub const ipproto_rsvp = SocketLevel(C.IPPROTO_RSVP)
|
||||
pub const ipproto_rvd = SocketLevel(C.IPPROTO_RVD)
|
||||
pub const ipproto_satexpak = SocketLevel(C.IPPROTO_SATEXPAK)
|
||||
pub const ipproto_satmon = SocketLevel(C.IPPROTO_SATMON)
|
||||
pub const ipproto_sccsp = SocketLevel(C.IPPROTO_SCCSP)
|
||||
pub const ipproto_sctp = SocketLevel(C.IPPROTO_SCTP)
|
||||
pub const ipproto_sdrp = SocketLevel(C.IPPROTO_SDRP)
|
||||
pub const ipproto_send = SocketLevel(C.IPPROTO_SEND)
|
||||
pub const ipproto_shim6 = SocketLevel(C.IPPROTO_SHIM6)
|
||||
pub const ipproto_skip = SocketLevel(C.IPPROTO_SKIP)
|
||||
pub const ipproto_spacer = SocketLevel(C.IPPROTO_SPACER)
|
||||
pub const ipproto_srpc = SocketLevel(C.IPPROTO_SRPC)
|
||||
pub const ipproto_st = SocketLevel(C.IPPROTO_ST)
|
||||
pub const ipproto_svmtp = SocketLevel(C.IPPROTO_SVMTP)
|
||||
pub const ipproto_swipe = SocketLevel(C.IPPROTO_SWIPE)
|
||||
pub const ipproto_tcf = SocketLevel(C.IPPROTO_TCF)
|
||||
pub const ipproto_tcp = SocketLevel(C.IPPROTO_TCP)
|
||||
pub const ipproto_tlsp = SocketLevel(C.IPPROTO_TLSP)
|
||||
pub const ipproto_tpxx = SocketLevel(C.IPPROTO_TPXX)
|
||||
pub const ipproto_tp = SocketLevel(C.IPPROTO_TP)
|
||||
pub const ipproto_trunk1 = SocketLevel(C.IPPROTO_TRUNK1)
|
||||
pub const ipproto_trunk2 = SocketLevel(C.IPPROTO_TRUNK2)
|
||||
pub const ipproto_ttp = SocketLevel(C.IPPROTO_TTP)
|
||||
pub const ipproto_udplite = SocketLevel(C.IPPROTO_UDPLITE)
|
||||
pub const ipproto_udp = SocketLevel(C.IPPROTO_UDP)
|
||||
pub const ipproto_vines = SocketLevel(C.IPPROTO_VINES)
|
||||
pub const ipproto_visa = SocketLevel(C.IPPROTO_VISA)
|
||||
pub const ipproto_vmtp = SocketLevel(C.IPPROTO_VMTP)
|
||||
pub const ipproto_wbexpak = SocketLevel(C.IPPROTO_WBEXPAK)
|
||||
pub const ipproto_wbmon = SocketLevel(C.IPPROTO_WBMON)
|
||||
pub const ipproto_wsn = SocketLevel(C.IPPROTO_WSN)
|
||||
pub const ipproto_xnet = SocketLevel(C.IPPROTO_XNET)
|
||||
pub const ipproto_xtp = SocketLevel(C.IPPROTO_XTP)
|
||||
pub const ipv6_autoflowlabel = SocketOption(C.IPV6_AUTOFLOWLABEL)
|
||||
pub const ipv6_bindany = SocketOption(C.IPV6_BINDANY)
|
||||
pub const ipv6_bindv6only = SocketOption(C.IPV6_BINDV6ONLY)
|
||||
pub const ipv6_checksum = SocketOption(C.IPV6_CHECKSUM)
|
||||
pub const ipv6_default_multicast_hops = SocketOption(C.IPV6_DEFAULT_MULTICAST_HOPS)
|
||||
pub const ipv6_default_multicast_loop = SocketOption(C.IPV6_DEFAULT_MULTICAST_LOOP)
|
||||
pub const ipv6_dontfrag = SocketOption(C.IPV6_DONTFRAG)
|
||||
pub const ipv6_dstopts = SocketOption(C.IPV6_DSTOPTS)
|
||||
pub const ipv6_flowid = SocketOption(C.IPV6_FLOWID)
|
||||
pub const ipv6_flowtype = SocketOption(C.IPV6_FLOWTYPE)
|
||||
pub const ipv6_fw_add = SocketOption(C.IPV6_FW_ADD)
|
||||
pub const ipv6_fw_del = SocketOption(C.IPV6_FW_DEL)
|
||||
pub const ipv6_fw_flush = SocketOption(C.IPV6_FW_FLUSH)
|
||||
pub const ipv6_fw_get = SocketOption(C.IPV6_FW_GET)
|
||||
pub const ipv6_fw_zero = SocketOption(C.IPV6_FW_ZERO)
|
||||
pub const ipv6_hoplimit = SocketOption(C.IPV6_HOPLIMIT)
|
||||
pub const ipv6_hopopts = SocketOption(C.IPV6_HOPOPTS)
|
||||
pub const ipv6_ipsec_policy = SocketOption(C.IPV6_IPSEC_POLICY)
|
||||
pub const ipv6_join_group = SocketOption(C.IPV6_JOIN_GROUP)
|
||||
pub const ipv6_leave_group = SocketOption(C.IPV6_LEAVE_GROUP)
|
||||
pub const ipv6_max_group_src_filter = SocketOption(C.IPV6_MAX_GROUP_SRC_FILTER)
|
||||
pub const ipv6_max_memberships = SocketOption(C.IPV6_MAX_MEMBERSHIPS)
|
||||
pub const ipv6_max_sock_src_filter = SocketOption(C.IPV6_MAX_SOCK_SRC_FILTER)
|
||||
pub const ipv6_msfilter = SocketOption(C.IPV6_MSFILTER)
|
||||
pub const ipv6_multicast_hops = SocketOption(C.IPV6_MULTICAST_HOPS)
|
||||
pub const ipv6_multicast_if = SocketOption(C.IPV6_MULTICAST_IF)
|
||||
pub const ipv6_multicast_loop = SocketOption(C.IPV6_MULTICAST_LOOP)
|
||||
pub const ipv6_nexthop = SocketOption(C.IPV6_NEXTHOP)
|
||||
pub const ipv6_origdstaddr = SocketOption(C.IPV6_ORIGDSTADDR)
|
||||
pub const ipv6_pathmtu = SocketOption(C.IPV6_PATHMTU)
|
||||
pub const ipv6_pktinfo = SocketOption(C.IPV6_PKTINFO)
|
||||
pub const ipv6_portrange = SocketOption(C.IPV6_PORTRANGE)
|
||||
pub const ipv6_portrange_default = SocketOption(C.IPV6_PORTRANGE_DEFAULT)
|
||||
pub const ipv6_portrange_high = SocketOption(C.IPV6_PORTRANGE_HIGH)
|
||||
pub const ipv6_portrange_low = SocketOption(C.IPV6_PORTRANGE_LOW)
|
||||
pub const ipv6_prefer_tempaddr = SocketOption(C.IPV6_PREFER_TEMPADDR)
|
||||
pub const ipv6_recvdstopts = SocketOption(C.IPV6_RECVDSTOPTS)
|
||||
pub const ipv6_recvflowid = SocketOption(C.IPV6_RECVFLOWID)
|
||||
pub const ipv6_recvhoplimit = SocketOption(C.IPV6_RECVHOPLIMIT)
|
||||
pub const ipv6_recvhopopts = SocketOption(C.IPV6_RECVHOPOPTS)
|
||||
pub const ipv6_recvorigdstaddr = SocketOption(C.IPV6_RECVORIGDSTADDR)
|
||||
pub const ipv6_recvpathmtu = SocketOption(C.IPV6_RECVPATHMTU)
|
||||
pub const ipv6_recvpktinfo = SocketOption(C.IPV6_RECVPKTINFO)
|
||||
pub const ipv6_recvrssbucketid = SocketOption(C.IPV6_RECVRSSBUCKETID)
|
||||
pub const ipv6_recvrthdr = SocketOption(C.IPV6_RECVRTHDR)
|
||||
pub const ipv6_recvtclass = SocketOption(C.IPV6_RECVTCLASS)
|
||||
pub const ipv6_rssbucketid = SocketOption(C.IPV6_RSSBUCKETID)
|
||||
pub const ipv6_rthdrdstopts = SocketOption(C.IPV6_RTHDRDSTOPTS)
|
||||
pub const ipv6_rthdr = SocketOption(C.IPV6_RTHDR)
|
||||
pub const ipv6_rthdr_loose = SocketOption(C.IPV6_RTHDR_LOOSE)
|
||||
pub const ipv6_rthdr_strict = SocketOption(C.IPV6_RTHDR_STRICT)
|
||||
pub const ipv6_rthdr_type_0 = SocketOption(C.IPV6_RTHDR_TYPE_0)
|
||||
pub const ipv6_sockopt_reserved1 = SocketOption(C.IPV6_SOCKOPT_RESERVED1)
|
||||
pub const ipv6_tclass = SocketOption(C.IPV6_TCLASS)
|
||||
pub const ipv6_unicast_hops = SocketOption(C.IPV6_UNICAST_HOPS)
|
||||
pub const ipv6_use_min_mtu = SocketOption(C.IPV6_USE_MIN_MTU)
|
||||
pub const ipv6_v6only = SocketOption(C.IPV6_V6ONLY)
|
||||
pub const ipv6_vlan_pcp = SocketOption(C.IPV6_VLAN_PCP)
|
||||
pub const ip_add_membership = SocketOption(C.IP_ADD_MEMBERSHIP)
|
||||
pub const ip_add_source_membership = SocketOption(C.IP_ADD_SOURCE_MEMBERSHIP)
|
||||
pub const ip_bindany = SocketOption(C.IP_BINDANY)
|
||||
pub const ip_block_source = SocketOption(C.IP_BLOCK_SOURCE)
|
||||
pub const ip_default_multicast_loop = SocketOption(C.IP_DEFAULT_MULTICAST_LOOP)
|
||||
pub const ip_default_multicast_ttl = SocketOption(C.IP_DEFAULT_MULTICAST_TTL)
|
||||
pub const ip_dontfrag = SocketOption(C.IP_DONTFRAG)
|
||||
pub const ip_drop_membership = SocketOption(C.IP_DROP_MEMBERSHIP)
|
||||
pub const ip_drop_source_membership = SocketOption(C.IP_DROP_SOURCE_MEMBERSHIP)
|
||||
pub const ip_dummynet3 = SocketOption(C.IP_DUMMYNET3)
|
||||
pub const ip_dummynet_configure = SocketOption(C.IP_DUMMYNET_CONFIGURE)
|
||||
pub const ip_dummynet_del = SocketOption(C.IP_DUMMYNET_DEL)
|
||||
pub const ip_dummynet_flush = SocketOption(C.IP_DUMMYNET_FLUSH)
|
||||
pub const ip_dummynet_get = SocketOption(C.IP_DUMMYNET_GET)
|
||||
pub const ip_flowid = SocketOption(C.IP_FLOWID)
|
||||
pub const ip_flowtype = SocketOption(C.IP_FLOWTYPE)
|
||||
pub const ip_fw3 = SocketOption(C.IP_FW3)
|
||||
pub const ip_fw_add = SocketOption(C.IP_FW_ADD)
|
||||
pub const ip_fw_del = SocketOption(C.IP_FW_DEL)
|
||||
pub const ip_fw_flush = SocketOption(C.IP_FW_FLUSH)
|
||||
pub const ip_fw_get = SocketOption(C.IP_FW_GET)
|
||||
pub const ip_fw_nat_cfg = SocketOption(C.IP_FW_NAT_CFG)
|
||||
pub const ip_fw_nat_del = SocketOption(C.IP_FW_NAT_DEL)
|
||||
pub const ip_fw_nat_get_config = SocketOption(C.IP_FW_NAT_GET_CONFIG)
|
||||
pub const ip_fw_nat_get_log = SocketOption(C.IP_FW_NAT_GET_LOG)
|
||||
pub const ip_fw_resetlog = SocketOption(C.IP_FW_RESETLOG)
|
||||
pub const ip_fw_table_add = SocketOption(C.IP_FW_TABLE_ADD)
|
||||
pub const ip_fw_table_del = SocketOption(C.IP_FW_TABLE_DEL)
|
||||
pub const ip_fw_table_flush = SocketOption(C.IP_FW_TABLE_FLUSH)
|
||||
pub const ip_fw_table_getsize = SocketOption(C.IP_FW_TABLE_GETSIZE)
|
||||
pub const ip_fw_table_list = SocketOption(C.IP_FW_TABLE_LIST)
|
||||
pub const ip_fw_zero = SocketOption(C.IP_FW_ZERO)
|
||||
pub const ip_hdrincl = SocketOption(C.IP_HDRINCL)
|
||||
pub const ip_ipsec_policy = SocketOption(C.IP_IPSEC_POLICY)
|
||||
pub const ip_max_group_src_filter = SocketOption(C.IP_MAX_GROUP_SRC_FILTER)
|
||||
pub const ip_max_memberships = SocketOption(C.IP_MAX_MEMBERSHIPS)
|
||||
pub const ip_max_sock_mute_filter = SocketOption(C.IP_MAX_SOCK_MUTE_FILTER)
|
||||
pub const ip_max_sock_src_filter = SocketOption(C.IP_MAX_SOCK_SRC_FILTER)
|
||||
pub const ip_minttl = SocketOption(C.IP_MINTTL)
|
||||
pub const ip_msfilter = SocketOption(C.IP_MSFILTER)
|
||||
pub const ip_multicast_if = SocketOption(C.IP_MULTICAST_IF)
|
||||
pub const ip_multicast_loop = SocketOption(C.IP_MULTICAST_LOOP)
|
||||
pub const ip_multicast_ttl = SocketOption(C.IP_MULTICAST_TTL)
|
||||
pub const ip_multicast_vif = SocketOption(C.IP_MULTICAST_VIF)
|
||||
pub const ip_onesbcast = SocketOption(C.IP_ONESBCAST)
|
||||
pub const ip_options = SocketOption(C.IP_OPTIONS)
|
||||
pub const ip_origdstaddr = SocketOption(C.IP_ORIGDSTADDR)
|
||||
pub const ip_portrange = SocketOption(C.IP_PORTRANGE)
|
||||
pub const ip_portrange_default = SocketOption(C.IP_PORTRANGE_DEFAULT)
|
||||
pub const ip_portrange_high = SocketOption(C.IP_PORTRANGE_HIGH)
|
||||
pub const ip_portrange_low = SocketOption(C.IP_PORTRANGE_LOW)
|
||||
pub const ip_recvdstaddr = SocketOption(C.IP_RECVDSTADDR)
|
||||
pub const ip_recvflowid = SocketOption(C.IP_RECVFLOWID)
|
||||
pub const ip_recvif = SocketOption(C.IP_RECVIF)
|
||||
pub const ip_recvopts = SocketOption(C.IP_RECVOPTS)
|
||||
pub const ip_recvorigdstaddr = SocketOption(C.IP_RECVORIGDSTADDR)
|
||||
pub const ip_recvretopts = SocketOption(C.IP_RECVRETOPTS)
|
||||
pub const ip_recvrssbucketid = SocketOption(C.IP_RECVRSSBUCKETID)
|
||||
pub const ip_recvtos = SocketOption(C.IP_RECVTOS)
|
||||
pub const ip_recvttl = SocketOption(C.IP_RECVTTL)
|
||||
pub const ip_retopts = SocketOption(C.IP_RETOPTS)
|
||||
pub const ip_rssbucketid = SocketOption(C.IP_RSSBUCKETID)
|
||||
pub const ip_rsvp_off = SocketOption(C.IP_RSVP_OFF)
|
||||
pub const ip_rsvp_on = SocketOption(C.IP_RSVP_ON)
|
||||
pub const ip_rsvp_vif_off = SocketOption(C.IP_RSVP_VIF_OFF)
|
||||
pub const ip_rsvp_vif_on = SocketOption(C.IP_RSVP_VIF_ON)
|
||||
pub const ip_sendsrcaddr = SocketOption(C.IP_SENDSRCADDR)
|
||||
pub const ip_tos = SocketOption(C.IP_TOS)
|
||||
pub const ip_ttl = SocketOption(C.IP_TTL)
|
||||
pub const ip_unblock_source = SocketOption(C.IP_UNBLOCK_SOURCE)
|
||||
pub const ip_vlan_pcp = SocketOption(C.IP_VLAN_PCP)
|
||||
pub const ni_dgram = NameInfoFlag(C.NI_DGRAM)
|
||||
pub const ni_maxhost = NameInfoFlag(C.NI_MAXHOST)
|
||||
pub const ni_maxserv = NameInfoFlag(C.NI_MAXSERV)
|
||||
pub const ni_namereqd = NameInfoFlag(C.NI_NAMEREQD)
|
||||
pub const ni_nofqdn = NameInfoFlag(C.NI_NOFQDN)
|
||||
pub const ni_numerichost = NameInfoFlag(C.NI_NUMERICHOST)
|
||||
pub const ni_numericscope = NameInfoFlag(C.NI_NUMERICSCOPE)
|
||||
pub const ni_numericserv = NameInfoFlag(C.NI_NUMERICSERV)
|
||||
pub const sock_cloexec = SocketType(C.SOCK_CLOEXEC)
|
||||
pub const sock_clofork = SocketType(C.SOCK_CLOFORK)
|
||||
pub const sock_dgram = SocketType(C.SOCK_DGRAM)
|
||||
pub const sock_maxaddrlen = SocketType(C.SOCK_MAXADDRLEN)
|
||||
pub const sock_nonblock = SocketType(C.SOCK_NONBLOCK)
|
||||
pub const sock_raw = SocketType(C.SOCK_RAW)
|
||||
pub const sock_rdm = SocketType(C.SOCK_RDM)
|
||||
pub const sock_seqpacket = SocketType(C.SOCK_SEQPACKET)
|
||||
pub const sock_stream = SocketType(C.SOCK_STREAM)
|
||||
pub const sol_socket = SocketLevel(C.SOL_SOCKET)
|
||||
pub const so_acceptconn = SocketOption(C.SO_ACCEPTCONN)
|
||||
pub const so_acceptfilter = SocketOption(C.SO_ACCEPTFILTER)
|
||||
pub const so_bintime = SocketOption(C.SO_BINTIME)
|
||||
pub const so_broadcast = SocketOption(C.SO_BROADCAST)
|
||||
pub const so_debug = SocketOption(C.SO_DEBUG)
|
||||
pub const so_domain = SocketOption(C.SO_DOMAIN)
|
||||
pub const so_dontroute = SocketOption(C.SO_DONTROUTE)
|
||||
pub const so_error = SocketOption(C.SO_ERROR)
|
||||
pub const so_fib = SocketOption(C.SO_FIB)
|
||||
pub const so_keepalive = SocketOption(C.SO_KEEPALIVE)
|
||||
pub const so_label = SocketOption(C.SO_LABEL)
|
||||
pub const so_linger = SocketOption(C.SO_LINGER)
|
||||
pub const so_listenincqlen = SocketOption(C.SO_LISTENINCQLEN)
|
||||
pub const so_listenqlen = SocketOption(C.SO_LISTENQLEN)
|
||||
pub const so_listenqlimit = SocketOption(C.SO_LISTENQLIMIT)
|
||||
pub const so_max_pacing_rate = SocketOption(C.SO_MAX_PACING_RATE)
|
||||
pub const so_nosigpipe = SocketOption(C.SO_NOSIGPIPE)
|
||||
pub const so_no_ddp = SocketOption(C.SO_NO_DDP)
|
||||
pub const so_no_offload = SocketOption(C.SO_NO_OFFLOAD)
|
||||
pub const so_oobinline = SocketOption(C.SO_OOBINLINE)
|
||||
pub const so_peerlabel = SocketOption(C.SO_PEERLABEL)
|
||||
pub const so_protocol = SocketOption(C.SO_PROTOCOL)
|
||||
pub const so_prototype = SocketOption(C.SO_PROTOTYPE)
|
||||
pub const so_rcvbuf = SocketOption(C.SO_RCVBUF)
|
||||
pub const so_rcvlowat = SocketOption(C.SO_RCVLOWAT)
|
||||
pub const so_rcvtimeo = SocketOption(C.SO_RCVTIMEO)
|
||||
pub const so_rerror = SocketOption(C.SO_RERROR)
|
||||
pub const so_reuseaddr = SocketOption(C.SO_REUSEADDR)
|
||||
pub const so_reuseport = SocketOption(C.SO_REUSEPORT)
|
||||
pub const so_reuseport_lb = SocketOption(C.SO_REUSEPORT_LB)
|
||||
pub const so_setfib = SocketOption(C.SO_SETFIB)
|
||||
pub const so_sndbuf = SocketOption(C.SO_SNDBUF)
|
||||
pub const so_sndlowat = SocketOption(C.SO_SNDLOWAT)
|
||||
pub const so_sndtimeo = SocketOption(C.SO_SNDTIMEO)
|
||||
pub const so_splice = SocketOption(C.SO_SPLICE)
|
||||
pub const so_timestamp = SocketOption(C.SO_TIMESTAMP)
|
||||
pub const so_ts_bintime = SocketOption(C.SO_TS_BINTIME)
|
||||
pub const so_ts_clock = SocketOption(C.SO_TS_CLOCK)
|
||||
pub const so_ts_clock_max = SocketOption(C.SO_TS_CLOCK_MAX)
|
||||
pub const so_ts_default = SocketOption(C.SO_TS_DEFAULT)
|
||||
pub const so_ts_monotonic = SocketOption(C.SO_TS_MONOTONIC)
|
||||
pub const so_ts_realtime = SocketOption(C.SO_TS_REALTIME)
|
||||
pub const so_ts_realtime_micro = SocketOption(C.SO_TS_REALTIME_MICRO)
|
||||
pub const so_type = SocketOption(C.SO_TYPE)
|
||||
pub const so_useloopback = SocketOption(C.SO_USELOOPBACK)
|
||||
pub const so_user_cookie = SocketOption(C.SO_USER_COOKIE)
|
||||
pub const so_vendor = SocketOption(C.SO_VENDOR)
|
||||
+354
@@ -0,0 +1,354 @@
|
||||
module netio
|
||||
|
||||
/*
|
||||
This file is generated by mkconst.sh, DO NOT EDIT.
|
||||
*/
|
||||
|
||||
pub const af_alg = AddrFamily(C.AF_ALG)
|
||||
pub const af_appletalk = AddrFamily(C.AF_APPLETALK)
|
||||
pub const af_ash = AddrFamily(C.AF_ASH)
|
||||
pub const af_atmpvc = AddrFamily(C.AF_ATMPVC)
|
||||
pub const af_atmsvc = AddrFamily(C.AF_ATMSVC)
|
||||
pub const af_ax25 = AddrFamily(C.AF_AX25)
|
||||
pub const af_bluetooth = AddrFamily(C.AF_BLUETOOTH)
|
||||
pub const af_bridge = AddrFamily(C.AF_BRIDGE)
|
||||
pub const af_caif = AddrFamily(C.AF_CAIF)
|
||||
pub const af_can = AddrFamily(C.AF_CAN)
|
||||
pub const af_decnet = AddrFamily(C.AF_DECnet)
|
||||
pub const af_econet = AddrFamily(C.AF_ECONET)
|
||||
pub const af_file = AddrFamily(C.AF_FILE)
|
||||
pub const af_ib = AddrFamily(C.AF_IB)
|
||||
pub const af_ieee802154 = AddrFamily(C.AF_IEEE802154)
|
||||
pub const af_inet6 = AddrFamily(C.AF_INET6)
|
||||
pub const af_inet = AddrFamily(C.AF_INET)
|
||||
pub const af_ipx = AddrFamily(C.AF_IPX)
|
||||
pub const af_irda = AddrFamily(C.AF_IRDA)
|
||||
pub const af_isdn = AddrFamily(C.AF_ISDN)
|
||||
pub const af_iucv = AddrFamily(C.AF_IUCV)
|
||||
pub const af_kcm = AddrFamily(C.AF_KCM)
|
||||
pub const af_key = AddrFamily(C.AF_KEY)
|
||||
pub const af_llc = AddrFamily(C.AF_LLC)
|
||||
pub const af_local = AddrFamily(C.AF_LOCAL)
|
||||
pub const af_max = AddrFamily(C.AF_MAX)
|
||||
pub const af_mctp = AddrFamily(C.AF_MCTP)
|
||||
pub const af_mpls = AddrFamily(C.AF_MPLS)
|
||||
pub const af_netbeui = AddrFamily(C.AF_NETBEUI)
|
||||
pub const af_netlink = AddrFamily(C.AF_NETLINK)
|
||||
pub const af_netrom = AddrFamily(C.AF_NETROM)
|
||||
pub const af_nfc = AddrFamily(C.AF_NFC)
|
||||
pub const af_packet = AddrFamily(C.AF_PACKET)
|
||||
pub const af_phonet = AddrFamily(C.AF_PHONET)
|
||||
pub const af_pppox = AddrFamily(C.AF_PPPOX)
|
||||
pub const af_qipcrtr = AddrFamily(C.AF_QIPCRTR)
|
||||
pub const af_rds = AddrFamily(C.AF_RDS)
|
||||
pub const af_rose = AddrFamily(C.AF_ROSE)
|
||||
pub const af_route = AddrFamily(C.AF_ROUTE)
|
||||
pub const af_rxrpc = AddrFamily(C.AF_RXRPC)
|
||||
pub const af_security = AddrFamily(C.AF_SECURITY)
|
||||
pub const af_smc = AddrFamily(C.AF_SMC)
|
||||
pub const af_sna = AddrFamily(C.AF_SNA)
|
||||
pub const af_tipc = AddrFamily(C.AF_TIPC)
|
||||
pub const af_unix = AddrFamily(C.AF_UNIX)
|
||||
pub const af_unspec = AddrFamily(C.AF_UNSPEC)
|
||||
pub const af_vsock = AddrFamily(C.AF_VSOCK)
|
||||
pub const af_wanpipe = AddrFamily(C.AF_WANPIPE)
|
||||
pub const af_x25 = AddrFamily(C.AF_X25)
|
||||
pub const af_xdp = AddrFamily(C.AF_XDP)
|
||||
pub const ai_addrconfig = AddrInfoFlag(C.AI_ADDRCONFIG)
|
||||
pub const ai_all = AddrInfoFlag(C.AI_ALL)
|
||||
pub const ai_canonname = AddrInfoFlag(C.AI_CANONNAME)
|
||||
pub const ai_numerichost = AddrInfoFlag(C.AI_NUMERICHOST)
|
||||
pub const ai_numericserv = AddrInfoFlag(C.AI_NUMERICSERV)
|
||||
pub const ai_passive = AddrInfoFlag(C.AI_PASSIVE)
|
||||
pub const ai_v4mapped = AddrInfoFlag(C.AI_V4MAPPED)
|
||||
pub const ipproto_ah = SocketLevel(C.IPPROTO_AH)
|
||||
pub const ipproto_beetph = SocketLevel(C.IPPROTO_BEETPH)
|
||||
pub const ipproto_comp = SocketLevel(C.IPPROTO_COMP)
|
||||
pub const ipproto_dccp = SocketLevel(C.IPPROTO_DCCP)
|
||||
pub const ipproto_dstopts = SocketLevel(C.IPPROTO_DSTOPTS)
|
||||
pub const ipproto_egp = SocketLevel(C.IPPROTO_EGP)
|
||||
pub const ipproto_encap = SocketLevel(C.IPPROTO_ENCAP)
|
||||
pub const ipproto_esp = SocketLevel(C.IPPROTO_ESP)
|
||||
pub const ipproto_ethernet = SocketLevel(C.IPPROTO_ETHERNET)
|
||||
pub const ipproto_fragment = SocketLevel(C.IPPROTO_FRAGMENT)
|
||||
pub const ipproto_gre = SocketLevel(C.IPPROTO_GRE)
|
||||
pub const ipproto_hopopts = SocketLevel(C.IPPROTO_HOPOPTS)
|
||||
pub const ipproto_icmpv6 = SocketLevel(C.IPPROTO_ICMPV6)
|
||||
pub const ipproto_icmp = SocketLevel(C.IPPROTO_ICMP)
|
||||
pub const ipproto_idp = SocketLevel(C.IPPROTO_IDP)
|
||||
pub const ipproto_igmp = SocketLevel(C.IPPROTO_IGMP)
|
||||
pub const ipproto_ipip = SocketLevel(C.IPPROTO_IPIP)
|
||||
pub const ipproto_ipv6 = SocketLevel(C.IPPROTO_IPV6)
|
||||
pub const ipproto_ip = SocketLevel(C.IPPROTO_IP)
|
||||
pub const ipproto_l2tp = SocketLevel(C.IPPROTO_L2TP)
|
||||
pub const ipproto_mh = SocketLevel(C.IPPROTO_MH)
|
||||
pub const ipproto_mpls = SocketLevel(C.IPPROTO_MPLS)
|
||||
pub const ipproto_mptcp = SocketLevel(C.IPPROTO_MPTCP)
|
||||
pub const ipproto_mtp = SocketLevel(C.IPPROTO_MTP)
|
||||
pub const ipproto_none = SocketLevel(C.IPPROTO_NONE)
|
||||
pub const ipproto_pim = SocketLevel(C.IPPROTO_PIM)
|
||||
pub const ipproto_pup = SocketLevel(C.IPPROTO_PUP)
|
||||
pub const ipproto_raw = SocketLevel(C.IPPROTO_RAW)
|
||||
pub const ipproto_routing = SocketLevel(C.IPPROTO_ROUTING)
|
||||
pub const ipproto_rsvp = SocketLevel(C.IPPROTO_RSVP)
|
||||
pub const ipproto_sctp = SocketLevel(C.IPPROTO_SCTP)
|
||||
pub const ipproto_smc = SocketLevel(C.IPPROTO_SMC)
|
||||
pub const ipproto_tcp = SocketLevel(C.IPPROTO_TCP)
|
||||
pub const ipproto_tp = SocketLevel(C.IPPROTO_TP)
|
||||
pub const ipproto_udplite = SocketLevel(C.IPPROTO_UDPLITE)
|
||||
pub const ipproto_udp = SocketLevel(C.IPPROTO_UDP)
|
||||
pub const ipv6_2292dstopts = SocketOption(C.IPV6_2292DSTOPTS)
|
||||
pub const ipv6_2292hoplimit = SocketOption(C.IPV6_2292HOPLIMIT)
|
||||
pub const ipv6_2292hopopts = SocketOption(C.IPV6_2292HOPOPTS)
|
||||
pub const ipv6_2292pktinfo = SocketOption(C.IPV6_2292PKTINFO)
|
||||
pub const ipv6_2292pktoptions = SocketOption(C.IPV6_2292PKTOPTIONS)
|
||||
pub const ipv6_2292rthdr = SocketOption(C.IPV6_2292RTHDR)
|
||||
pub const ipv6_addrform = SocketOption(C.IPV6_ADDRFORM)
|
||||
pub const ipv6_addr_preferences = SocketOption(C.IPV6_ADDR_PREFERENCES)
|
||||
pub const ipv6_add_membership = SocketOption(C.IPV6_ADD_MEMBERSHIP)
|
||||
pub const ipv6_authhdr = SocketOption(C.IPV6_AUTHHDR)
|
||||
pub const ipv6_autoflowlabel = SocketOption(C.IPV6_AUTOFLOWLABEL)
|
||||
pub const ipv6_checksum = SocketOption(C.IPV6_CHECKSUM)
|
||||
pub const ipv6_dontfrag = SocketOption(C.IPV6_DONTFRAG)
|
||||
pub const ipv6_drop_membership = SocketOption(C.IPV6_DROP_MEMBERSHIP)
|
||||
pub const ipv6_dstopts = SocketOption(C.IPV6_DSTOPTS)
|
||||
pub const ipv6_freebind = SocketOption(C.IPV6_FREEBIND)
|
||||
pub const ipv6_hdrincl = SocketOption(C.IPV6_HDRINCL)
|
||||
pub const ipv6_hoplimit = SocketOption(C.IPV6_HOPLIMIT)
|
||||
pub const ipv6_hopopts = SocketOption(C.IPV6_HOPOPTS)
|
||||
pub const ipv6_ipsec_policy = SocketOption(C.IPV6_IPSEC_POLICY)
|
||||
pub const ipv6_join_anycast = SocketOption(C.IPV6_JOIN_ANYCAST)
|
||||
pub const ipv6_join_group = SocketOption(C.IPV6_JOIN_GROUP)
|
||||
pub const ipv6_leave_anycast = SocketOption(C.IPV6_LEAVE_ANYCAST)
|
||||
pub const ipv6_leave_group = SocketOption(C.IPV6_LEAVE_GROUP)
|
||||
pub const ipv6_minhopcount = SocketOption(C.IPV6_MINHOPCOUNT)
|
||||
pub const ipv6_mtu = SocketOption(C.IPV6_MTU)
|
||||
pub const ipv6_mtu_discover = SocketOption(C.IPV6_MTU_DISCOVER)
|
||||
pub const ipv6_multicast_all = SocketOption(C.IPV6_MULTICAST_ALL)
|
||||
pub const ipv6_multicast_hops = SocketOption(C.IPV6_MULTICAST_HOPS)
|
||||
pub const ipv6_multicast_if = SocketOption(C.IPV6_MULTICAST_IF)
|
||||
pub const ipv6_multicast_loop = SocketOption(C.IPV6_MULTICAST_LOOP)
|
||||
pub const ipv6_nexthop = SocketOption(C.IPV6_NEXTHOP)
|
||||
pub const ipv6_origdstaddr = SocketOption(C.IPV6_ORIGDSTADDR)
|
||||
pub const ipv6_pathmtu = SocketOption(C.IPV6_PATHMTU)
|
||||
pub const ipv6_pktinfo = SocketOption(C.IPV6_PKTINFO)
|
||||
pub const ipv6_pmtudisc_dont = SocketOption(C.IPV6_PMTUDISC_DONT)
|
||||
pub const ipv6_pmtudisc_do = SocketOption(C.IPV6_PMTUDISC_DO)
|
||||
pub const ipv6_pmtudisc_interface = SocketOption(C.IPV6_PMTUDISC_INTERFACE)
|
||||
pub const ipv6_pmtudisc_omit = SocketOption(C.IPV6_PMTUDISC_OMIT)
|
||||
pub const ipv6_pmtudisc_probe = SocketOption(C.IPV6_PMTUDISC_PROBE)
|
||||
pub const ipv6_pmtudisc_want = SocketOption(C.IPV6_PMTUDISC_WANT)
|
||||
pub const ipv6_recvdstopts = SocketOption(C.IPV6_RECVDSTOPTS)
|
||||
pub const ipv6_recverr = SocketOption(C.IPV6_RECVERR)
|
||||
pub const ipv6_recverr_rfc4884 = SocketOption(C.IPV6_RECVERR_RFC4884)
|
||||
pub const ipv6_recvfragsize = SocketOption(C.IPV6_RECVFRAGSIZE)
|
||||
pub const ipv6_recvhoplimit = SocketOption(C.IPV6_RECVHOPLIMIT)
|
||||
pub const ipv6_recvhopopts = SocketOption(C.IPV6_RECVHOPOPTS)
|
||||
pub const ipv6_recvorigdstaddr = SocketOption(C.IPV6_RECVORIGDSTADDR)
|
||||
pub const ipv6_recvpathmtu = SocketOption(C.IPV6_RECVPATHMTU)
|
||||
pub const ipv6_recvpktinfo = SocketOption(C.IPV6_RECVPKTINFO)
|
||||
pub const ipv6_recvrthdr = SocketOption(C.IPV6_RECVRTHDR)
|
||||
pub const ipv6_recvtclass = SocketOption(C.IPV6_RECVTCLASS)
|
||||
pub const ipv6_router_alert = SocketOption(C.IPV6_ROUTER_ALERT)
|
||||
pub const ipv6_router_alert_isolate = SocketOption(C.IPV6_ROUTER_ALERT_ISOLATE)
|
||||
pub const ipv6_rthdrdstopts = SocketOption(C.IPV6_RTHDRDSTOPTS)
|
||||
pub const ipv6_rthdr = SocketOption(C.IPV6_RTHDR)
|
||||
pub const ipv6_rthdr_loose = SocketOption(C.IPV6_RTHDR_LOOSE)
|
||||
pub const ipv6_rthdr_strict = SocketOption(C.IPV6_RTHDR_STRICT)
|
||||
pub const ipv6_rthdr_type_0 = SocketOption(C.IPV6_RTHDR_TYPE_0)
|
||||
pub const ipv6_rxdstopts = SocketOption(C.IPV6_RXDSTOPTS)
|
||||
pub const ipv6_rxhopopts = SocketOption(C.IPV6_RXHOPOPTS)
|
||||
pub const ipv6_tclass = SocketOption(C.IPV6_TCLASS)
|
||||
pub const ipv6_transparent = SocketOption(C.IPV6_TRANSPARENT)
|
||||
pub const ipv6_unicast_hops = SocketOption(C.IPV6_UNICAST_HOPS)
|
||||
pub const ipv6_unicast_if = SocketOption(C.IPV6_UNICAST_IF)
|
||||
pub const ipv6_v6only = SocketOption(C.IPV6_V6ONLY)
|
||||
pub const ipv6_xfrm_policy = SocketOption(C.IPV6_XFRM_POLICY)
|
||||
pub const ip_add_membership = SocketOption(C.IP_ADD_MEMBERSHIP)
|
||||
pub const ip_add_source_membership = SocketOption(C.IP_ADD_SOURCE_MEMBERSHIP)
|
||||
pub const ip_bind_address_no_port = SocketOption(C.IP_BIND_ADDRESS_NO_PORT)
|
||||
pub const ip_block_source = SocketOption(C.IP_BLOCK_SOURCE)
|
||||
pub const ip_checksum = SocketOption(C.IP_CHECKSUM)
|
||||
pub const ip_default_multicast_loop = SocketOption(C.IP_DEFAULT_MULTICAST_LOOP)
|
||||
pub const ip_default_multicast_ttl = SocketOption(C.IP_DEFAULT_MULTICAST_TTL)
|
||||
pub const ip_drop_membership = SocketOption(C.IP_DROP_MEMBERSHIP)
|
||||
pub const ip_drop_source_membership = SocketOption(C.IP_DROP_SOURCE_MEMBERSHIP)
|
||||
pub const ip_freebind = SocketOption(C.IP_FREEBIND)
|
||||
pub const ip_hdrincl = SocketOption(C.IP_HDRINCL)
|
||||
pub const ip_ipsec_policy = SocketOption(C.IP_IPSEC_POLICY)
|
||||
pub const ip_local_port_range = SocketOption(C.IP_LOCAL_PORT_RANGE)
|
||||
pub const ip_max_memberships = SocketOption(C.IP_MAX_MEMBERSHIPS)
|
||||
pub const ip_minttl = SocketOption(C.IP_MINTTL)
|
||||
pub const ip_msfilter = SocketOption(C.IP_MSFILTER)
|
||||
pub const ip_mtu = SocketOption(C.IP_MTU)
|
||||
pub const ip_mtu_discover = SocketOption(C.IP_MTU_DISCOVER)
|
||||
pub const ip_multicast_all = SocketOption(C.IP_MULTICAST_ALL)
|
||||
pub const ip_multicast_if = SocketOption(C.IP_MULTICAST_IF)
|
||||
pub const ip_multicast_loop = SocketOption(C.IP_MULTICAST_LOOP)
|
||||
pub const ip_multicast_ttl = SocketOption(C.IP_MULTICAST_TTL)
|
||||
pub const ip_nodefrag = SocketOption(C.IP_NODEFRAG)
|
||||
pub const ip_options = SocketOption(C.IP_OPTIONS)
|
||||
pub const ip_origdstaddr = SocketOption(C.IP_ORIGDSTADDR)
|
||||
pub const ip_passsec = SocketOption(C.IP_PASSSEC)
|
||||
pub const ip_pktinfo = SocketOption(C.IP_PKTINFO)
|
||||
pub const ip_pktoptions = SocketOption(C.IP_PKTOPTIONS)
|
||||
pub const ip_pmtudisc = SocketOption(C.IP_PMTUDISC)
|
||||
pub const ip_pmtudisc_dont = SocketOption(C.IP_PMTUDISC_DONT)
|
||||
pub const ip_pmtudisc_do = SocketOption(C.IP_PMTUDISC_DO)
|
||||
pub const ip_pmtudisc_interface = SocketOption(C.IP_PMTUDISC_INTERFACE)
|
||||
pub const ip_pmtudisc_omit = SocketOption(C.IP_PMTUDISC_OMIT)
|
||||
pub const ip_pmtudisc_probe = SocketOption(C.IP_PMTUDISC_PROBE)
|
||||
pub const ip_pmtudisc_want = SocketOption(C.IP_PMTUDISC_WANT)
|
||||
pub const ip_protocol = SocketOption(C.IP_PROTOCOL)
|
||||
pub const ip_recverr = SocketOption(C.IP_RECVERR)
|
||||
pub const ip_recverr_rfc4884 = SocketOption(C.IP_RECVERR_RFC4884)
|
||||
pub const ip_recvfragsize = SocketOption(C.IP_RECVFRAGSIZE)
|
||||
pub const ip_recvopts = SocketOption(C.IP_RECVOPTS)
|
||||
pub const ip_recvorigdstaddr = SocketOption(C.IP_RECVORIGDSTADDR)
|
||||
pub const ip_recvretopts = SocketOption(C.IP_RECVRETOPTS)
|
||||
pub const ip_recvtos = SocketOption(C.IP_RECVTOS)
|
||||
pub const ip_recvttl = SocketOption(C.IP_RECVTTL)
|
||||
pub const ip_retopts = SocketOption(C.IP_RETOPTS)
|
||||
pub const ip_router_alert = SocketOption(C.IP_ROUTER_ALERT)
|
||||
pub const ip_tos = SocketOption(C.IP_TOS)
|
||||
pub const ip_transparent = SocketOption(C.IP_TRANSPARENT)
|
||||
pub const ip_ttl = SocketOption(C.IP_TTL)
|
||||
pub const ip_unblock_source = SocketOption(C.IP_UNBLOCK_SOURCE)
|
||||
pub const ip_unicast_if = SocketOption(C.IP_UNICAST_IF)
|
||||
pub const ip_xfrm_policy = SocketOption(C.IP_XFRM_POLICY)
|
||||
pub const ni_dgram = NameInfoFlag(C.NI_DGRAM)
|
||||
pub const ni_maxhost = NameInfoFlag(C.NI_MAXHOST)
|
||||
pub const ni_maxserv = NameInfoFlag(C.NI_MAXSERV)
|
||||
pub const ni_namereqd = NameInfoFlag(C.NI_NAMEREQD)
|
||||
pub const ni_nofqdn = NameInfoFlag(C.NI_NOFQDN)
|
||||
pub const ni_numerichost = NameInfoFlag(C.NI_NUMERICHOST)
|
||||
pub const ni_numericserv = NameInfoFlag(C.NI_NUMERICSERV)
|
||||
pub const sock_cloexec = SocketType(C.SOCK_CLOEXEC)
|
||||
pub const sock_dccp = SocketType(C.SOCK_DCCP)
|
||||
pub const sock_dgram = SocketType(C.SOCK_DGRAM)
|
||||
pub const sock_nonblock = SocketType(C.SOCK_NONBLOCK)
|
||||
pub const sock_packet = SocketType(C.SOCK_PACKET)
|
||||
pub const sock_raw = SocketType(C.SOCK_RAW)
|
||||
pub const sock_rdm = SocketType(C.SOCK_RDM)
|
||||
pub const sock_seqpacket = SocketType(C.SOCK_SEQPACKET)
|
||||
pub const sock_stream = SocketType(C.SOCK_STREAM)
|
||||
pub const sol_aal = SocketLevel(C.SOL_AAL)
|
||||
pub const sol_alg = SocketLevel(C.SOL_ALG)
|
||||
pub const sol_atm = SocketLevel(C.SOL_ATM)
|
||||
pub const sol_bluetooth = SocketLevel(C.SOL_BLUETOOTH)
|
||||
pub const sol_caif = SocketLevel(C.SOL_CAIF)
|
||||
pub const sol_dccp = SocketLevel(C.SOL_DCCP)
|
||||
pub const sol_decnet = SocketLevel(C.SOL_DECNET)
|
||||
pub const sol_icmpv6 = SocketLevel(C.SOL_ICMPV6)
|
||||
pub const sol_ipv6 = SocketLevel(C.SOL_IPV6)
|
||||
pub const sol_ip = SocketLevel(C.SOL_IP)
|
||||
pub const sol_irda = SocketLevel(C.SOL_IRDA)
|
||||
pub const sol_iucv = SocketLevel(C.SOL_IUCV)
|
||||
pub const sol_kcm = SocketLevel(C.SOL_KCM)
|
||||
pub const sol_llc = SocketLevel(C.SOL_LLC)
|
||||
pub const sol_mctp = SocketLevel(C.SOL_MCTP)
|
||||
pub const sol_mptcp = SocketLevel(C.SOL_MPTCP)
|
||||
pub const sol_netbeui = SocketLevel(C.SOL_NETBEUI)
|
||||
pub const sol_netlink = SocketLevel(C.SOL_NETLINK)
|
||||
pub const sol_nfc = SocketLevel(C.SOL_NFC)
|
||||
pub const sol_packet = SocketLevel(C.SOL_PACKET)
|
||||
pub const sol_pnpipe = SocketLevel(C.SOL_PNPIPE)
|
||||
pub const sol_pppol2tp = SocketLevel(C.SOL_PPPOL2TP)
|
||||
pub const sol_raw = SocketLevel(C.SOL_RAW)
|
||||
pub const sol_rds = SocketLevel(C.SOL_RDS)
|
||||
pub const sol_rxrpc = SocketLevel(C.SOL_RXRPC)
|
||||
pub const sol_smc = SocketLevel(C.SOL_SMC)
|
||||
pub const sol_socket = SocketLevel(C.SOL_SOCKET)
|
||||
pub const sol_tipc = SocketLevel(C.SOL_TIPC)
|
||||
pub const sol_tls = SocketLevel(C.SOL_TLS)
|
||||
pub const sol_vsock = SocketLevel(C.SOL_VSOCK)
|
||||
pub const sol_x25 = SocketLevel(C.SOL_X25)
|
||||
pub const sol_xdp = SocketLevel(C.SOL_XDP)
|
||||
pub const so_acceptconn = SocketOption(C.SO_ACCEPTCONN)
|
||||
pub const so_attach_bpf = SocketOption(C.SO_ATTACH_BPF)
|
||||
pub const so_attach_filter = SocketOption(C.SO_ATTACH_FILTER)
|
||||
pub const so_attach_reuseport_cbpf = SocketOption(C.SO_ATTACH_REUSEPORT_CBPF)
|
||||
pub const so_attach_reuseport_ebpf = SocketOption(C.SO_ATTACH_REUSEPORT_EBPF)
|
||||
pub const so_bindtodevice = SocketOption(C.SO_BINDTODEVICE)
|
||||
pub const so_bindtoifindex = SocketOption(C.SO_BINDTOIFINDEX)
|
||||
pub const so_bpf_extensions = SocketOption(C.SO_BPF_EXTENSIONS)
|
||||
pub const so_broadcast = SocketOption(C.SO_BROADCAST)
|
||||
pub const so_bsdcompat = SocketOption(C.SO_BSDCOMPAT)
|
||||
pub const so_buf_lock = SocketOption(C.SO_BUF_LOCK)
|
||||
pub const so_busy_poll = SocketOption(C.SO_BUSY_POLL)
|
||||
pub const so_busy_poll_budget = SocketOption(C.SO_BUSY_POLL_BUDGET)
|
||||
pub const so_cnx_advice = SocketOption(C.SO_CNX_ADVICE)
|
||||
pub const so_cookie = SocketOption(C.SO_COOKIE)
|
||||
pub const so_debug = SocketOption(C.SO_DEBUG)
|
||||
pub const so_detach_bpf = SocketOption(C.SO_DETACH_BPF)
|
||||
pub const so_detach_filter = SocketOption(C.SO_DETACH_FILTER)
|
||||
pub const so_detach_reuseport_bpf = SocketOption(C.SO_DETACH_REUSEPORT_BPF)
|
||||
pub const so_devmem_dmabuf = SocketOption(C.SO_DEVMEM_DMABUF)
|
||||
pub const so_devmem_dontneed = SocketOption(C.SO_DEVMEM_DONTNEED)
|
||||
pub const so_devmem_linear = SocketOption(C.SO_DEVMEM_LINEAR)
|
||||
pub const so_domain = SocketOption(C.SO_DOMAIN)
|
||||
pub const so_dontroute = SocketOption(C.SO_DONTROUTE)
|
||||
pub const so_error = SocketOption(C.SO_ERROR)
|
||||
pub const so_get_filter = SocketOption(C.SO_GET_FILTER)
|
||||
pub const so_incoming_cpu = SocketOption(C.SO_INCOMING_CPU)
|
||||
pub const so_incoming_napi_id = SocketOption(C.SO_INCOMING_NAPI_ID)
|
||||
pub const so_inq = SocketOption(C.SO_INQ)
|
||||
pub const so_keepalive = SocketOption(C.SO_KEEPALIVE)
|
||||
pub const so_linger = SocketOption(C.SO_LINGER)
|
||||
pub const so_lock_filter = SocketOption(C.SO_LOCK_FILTER)
|
||||
pub const so_mark = SocketOption(C.SO_MARK)
|
||||
pub const so_max_pacing_rate = SocketOption(C.SO_MAX_PACING_RATE)
|
||||
pub const so_meminfo = SocketOption(C.SO_MEMINFO)
|
||||
pub const so_netns_cookie = SocketOption(C.SO_NETNS_COOKIE)
|
||||
pub const so_nofcs = SocketOption(C.SO_NOFCS)
|
||||
pub const so_no_check = SocketOption(C.SO_NO_CHECK)
|
||||
pub const so_oobinline = SocketOption(C.SO_OOBINLINE)
|
||||
pub const so_passcred = SocketOption(C.SO_PASSCRED)
|
||||
pub const so_passpidfd = SocketOption(C.SO_PASSPIDFD)
|
||||
pub const so_passrights = SocketOption(C.SO_PASSRIGHTS)
|
||||
pub const so_passsec = SocketOption(C.SO_PASSSEC)
|
||||
pub const so_peek_off = SocketOption(C.SO_PEEK_OFF)
|
||||
pub const so_peercred = SocketOption(C.SO_PEERCRED)
|
||||
pub const so_peergroups = SocketOption(C.SO_PEERGROUPS)
|
||||
pub const so_peername = SocketOption(C.SO_PEERNAME)
|
||||
pub const so_peerpidfd = SocketOption(C.SO_PEERPIDFD)
|
||||
pub const so_peersec = SocketOption(C.SO_PEERSEC)
|
||||
pub const so_prefer_busy_poll = SocketOption(C.SO_PREFER_BUSY_POLL)
|
||||
pub const so_priority = SocketOption(C.SO_PRIORITY)
|
||||
pub const so_protocol = SocketOption(C.SO_PROTOCOL)
|
||||
pub const so_rcvbufforce = SocketOption(C.SO_RCVBUFFORCE)
|
||||
pub const so_rcvbuf = SocketOption(C.SO_RCVBUF)
|
||||
pub const so_rcvlowat = SocketOption(C.SO_RCVLOWAT)
|
||||
pub const so_rcvmark = SocketOption(C.SO_RCVMARK)
|
||||
pub const so_rcvpriority = SocketOption(C.SO_RCVPRIORITY)
|
||||
pub const so_rcvtimeo = SocketOption(C.SO_RCVTIMEO)
|
||||
pub const so_rcvtimeo_new = SocketOption(C.SO_RCVTIMEO_NEW)
|
||||
pub const so_rcvtimeo_old = SocketOption(C.SO_RCVTIMEO_OLD)
|
||||
pub const so_reserve_mem = SocketOption(C.SO_RESERVE_MEM)
|
||||
pub const so_reuseaddr = SocketOption(C.SO_REUSEADDR)
|
||||
pub const so_reuseport = SocketOption(C.SO_REUSEPORT)
|
||||
pub const so_rxq_ovfl = SocketOption(C.SO_RXQ_OVFL)
|
||||
pub const so_security_authentication = SocketOption(C.SO_SECURITY_AUTHENTICATION)
|
||||
pub const so_security_encryption_network = SocketOption(C.SO_SECURITY_ENCRYPTION_NETWORK)
|
||||
pub const so_security_encryption_transport = SocketOption(C.SO_SECURITY_ENCRYPTION_TRANSPORT)
|
||||
pub const so_select_err_queue = SocketOption(C.SO_SELECT_ERR_QUEUE)
|
||||
pub const so_sndbufforce = SocketOption(C.SO_SNDBUFFORCE)
|
||||
pub const so_sndbuf = SocketOption(C.SO_SNDBUF)
|
||||
pub const so_sndlowat = SocketOption(C.SO_SNDLOWAT)
|
||||
pub const so_sndtimeo = SocketOption(C.SO_SNDTIMEO)
|
||||
pub const so_sndtimeo_new = SocketOption(C.SO_SNDTIMEO_NEW)
|
||||
pub const so_sndtimeo_old = SocketOption(C.SO_SNDTIMEO_OLD)
|
||||
pub const so_timestamping = SocketOption(C.SO_TIMESTAMPING)
|
||||
pub const so_timestamping_new = SocketOption(C.SO_TIMESTAMPING_NEW)
|
||||
pub const so_timestamping_old = SocketOption(C.SO_TIMESTAMPING_OLD)
|
||||
pub const so_timestampns = SocketOption(C.SO_TIMESTAMPNS)
|
||||
pub const so_timestampns_new = SocketOption(C.SO_TIMESTAMPNS_NEW)
|
||||
pub const so_timestampns_old = SocketOption(C.SO_TIMESTAMPNS_OLD)
|
||||
pub const so_timestamp = SocketOption(C.SO_TIMESTAMP)
|
||||
pub const so_timestamp_new = SocketOption(C.SO_TIMESTAMP_NEW)
|
||||
pub const so_timestamp_old = SocketOption(C.SO_TIMESTAMP_OLD)
|
||||
pub const so_txrehash = SocketOption(C.SO_TXREHASH)
|
||||
pub const so_txtime = SocketOption(C.SO_TXTIME)
|
||||
pub const so_type = SocketOption(C.SO_TYPE)
|
||||
pub const so_wifi_status = SocketOption(C.SO_WIFI_STATUS)
|
||||
pub const so_zerocopy = SocketOption(C.SO_ZEROCOPY)
|
||||
@@ -13,7 +13,7 @@ fn main() {
|
||||
|
||||
for a in ai {
|
||||
socket = netio.Socket.new(a.family, a.sock_type, a.protocol)!
|
||||
socket.set_option(C.IPPROTO_IPV6, C.IPV6_V6ONLY, 0)!
|
||||
socket.set_option(netio.ipproto_ipv6, netio.ipv6_v6only, 0)!
|
||||
socket.bind(a.addr) or {
|
||||
socket.close()!
|
||||
continue
|
||||
@@ -37,9 +37,11 @@ fn main() {
|
||||
eprintln('ACCEPT: ${err}')
|
||||
exit(1)
|
||||
}
|
||||
eprintln(netio.name(remote_addr)!)
|
||||
eprintln('Remote address: ${remote_addr} | ${remote_addr.family()} | ${remote_addr.size()}')
|
||||
eprintln(remote_addr.u8_array())
|
||||
eprintln(netio.translate_name(remote_addr,
|
||||
flags: netio.ni_numerichost | netio.ni_numericserv
|
||||
)!)
|
||||
eprintln(netio.translate_name(remote_addr)!)
|
||||
eprintln('Remote address: ${remote_addr}')
|
||||
conn.close()!
|
||||
}
|
||||
}
|
||||
Executable
+45
@@ -0,0 +1,45 @@
|
||||
#!/bin/sh
|
||||
|
||||
program_linux='
|
||||
#include <netinet/in.h>
|
||||
#include <sys/socket.h>
|
||||
#include <netdb.h>
|
||||
'
|
||||
|
||||
program_freebsd='
|
||||
#include <netinet/in.h>
|
||||
#include <sys/socket.h>
|
||||
#include <netdb.h>
|
||||
'
|
||||
|
||||
system=$(uname -s)
|
||||
|
||||
case $system in
|
||||
Linux) PROGRAM=$program_linux;;
|
||||
FreeBSD) PROGRAM=$program_freebsd;;
|
||||
*) echo $0: $system is unsupported >&2; exit 1;;
|
||||
esac
|
||||
|
||||
KIND=$1
|
||||
KIND=${KIND:-"SocketType,SocketLevel,SocketOption,AddrFamily,AddrInfoFlag,NameInfoFlag"}
|
||||
|
||||
echo module netio
|
||||
echo
|
||||
echo '/*'
|
||||
echo -e "\tThis file is generated by mkconst.sh, DO NOT EDIT."
|
||||
echo '*/'
|
||||
echo
|
||||
|
||||
echo "$PROGRAM" | ${CC:-"cc"} -x c - -E -dM ${CFLAGS:-""} |
|
||||
awk -v KIND=$KIND '
|
||||
$1 != "#define" || $2 ~ /\(/ || $3 == "" {next}
|
||||
$2 ~ /^_/ {next}
|
||||
$2 ~ /^[a-z]/ {next}
|
||||
$2 ~ /^SOCK_/ && KIND ~ "SocketType" {printf "pub const %s = SocketType(C.%s)\n", tolower($2), $2}
|
||||
$2 ~ /^(SOL|IPPROTO)_/ && KIND ~ "SocketLevel" {printf "pub const %s = SocketLevel(C.%s)\n", tolower($2), $2}
|
||||
$2 ~ /^(SO|IP|IPV6)_/ && KIND ~ "SocketOption" {printf "pub const %s = SocketOption(C.%s)\n", tolower($2), $2}
|
||||
$2 ~ /^AF_/ && KIND ~ "AddrFamily" {printf "pub const %s = AddrFamily(C.%s)\n", tolower($2), $2}
|
||||
$2 ~ /^AI_/ && KIND ~ "AddrInfoFlag" {printf "pub const %s = AddrInfoFlag(C.%s)\n", tolower($2), $2}
|
||||
$2 ~ /^NI_/ && KIND ~ "NameInfoFlag" {printf "pub const %s = NameInfoFlag(C.%s)\n", tolower($2), $2}
|
||||
KIND ~ "Any" {printf "%s\n", $0}
|
||||
{next}' | sort -k 2 -V
|
||||
@@ -4,9 +4,8 @@ module netio
|
||||
// See [address_families(7)](https://www.man7.org/linux/man-pages/man7/address_families.7.html).
|
||||
pub type AddrFamily = int
|
||||
|
||||
// The protocol number type.
|
||||
// See [protocols(5)](https://man7.org/linux/man-pages/man5/protocols.5.html),
|
||||
// and [getprotoent(3)](https://man7.org/linux/man-pages/man3/getprotoent.3.html) for details.
|
||||
// The protocol number.
|
||||
// See [protocols(5)](https://man7.org/linux/man-pages/man5/protocols.5.html).
|
||||
pub type Protocol = int
|
||||
|
||||
// The socket type.
|
||||
@@ -17,3 +16,11 @@ pub type SocketLevel = int
|
||||
|
||||
// The socket option type.
|
||||
pub type SocketOption = int
|
||||
|
||||
// Flag type for `translate_addr()`.
|
||||
// See [getaddrinfo(3)](https://man7.org/linux/man-pages/man3/getaddrinfo.3.html) for details.
|
||||
pub type AddrInfoFlag = int
|
||||
|
||||
// Flag type for `translate_name()`.
|
||||
// See [getnameinfo(3)](https://man7.org/linux/man-pages/man3/getnameinfo.3.html) for details.
|
||||
pub type NameInfoFlag = int
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
# Protocols Database
|
||||
|
||||
The **protocol** module provides thread-safe access to the protocols database.
|
||||
The **protocol** module provides thread-safe access to the operatins system protocols database.
|
||||
|
||||
See [protocols(5)](https://www.man7.org/linux/man-pages/man5/protocols.5.html)
|
||||
and [getprotoent(3)](https://man7.org/linux/man-pages/man3/getprotoent.3.html)
|
||||
|
||||
@@ -1,47 +0,0 @@
|
||||
module netio
|
||||
|
||||
/*
|
||||
Socket options defined on Darwin.
|
||||
*/
|
||||
|
||||
pub const so_acceptconn = SocketOption(C.SO_ACCEPTCONN)
|
||||
pub const so_bindtodevice = SocketOption(C.SO_BINDTODEVICE)
|
||||
pub const so_broadcast = SocketOption(C.SO_BROADCAST)
|
||||
pub const so_debug = SocketOption(C.SO_DEBUG)
|
||||
pub const so_dontroute = SocketOption(C.SO_DONTROUTE)
|
||||
pub const so_donttrunc = SocketOption(C.SO_DONTTRUNC)
|
||||
pub const so_error = SocketOption(C.SO_ERROR)
|
||||
pub const so_keepalive = SocketOption(C.SO_KEEPALIVE)
|
||||
pub const so_label = SocketOption(C.SO_LABEL)
|
||||
pub const so_linger = SocketOption(C.SO_LINGER)
|
||||
pub const so_linger_sec = SocketOption(C.SO_LINGER_SEC)
|
||||
pub const so_netsvc_marking_level = SocketOption(C.SO_NETSVC_MARKING_LEVEL)
|
||||
pub const so_net_service_type = SocketOption(C.SO_NET_SERVICE_TYPE)
|
||||
pub const so_nke = SocketOption(C.SO_NKE)
|
||||
pub const so_noaddrerr = SocketOption(C.SO_NOADDRERR)
|
||||
pub const so_nosigpipe = SocketOption(C.SO_NOSIGPIPE)
|
||||
pub const so_notifyconflict = SocketOption(C.SO_NOTIFYCONFLICT)
|
||||
pub const so_np_extensions = SocketOption(C.SO_NP_EXTENSIONS)
|
||||
pub const so_nread = SocketOption(C.SO_NREAD)
|
||||
pub const so_numrcvpkt = SocketOption(C.SO_NUMRCVPKT)
|
||||
pub const so_nwrite = SocketOption(C.SO_NWRITE)
|
||||
pub const so_oobinline = SocketOption(C.SO_OOBINLINE)
|
||||
pub const so_peerlabel = SocketOption(C.SO_PEERLABEL)
|
||||
pub const so_randomport = SocketOption(C.SO_RANDOMPORT)
|
||||
pub const so_rcvbuf = SocketOption(C.SO_RCVBUF)
|
||||
pub const so_rcvlowat = SocketOption(C.SO_RCVLOWAT)
|
||||
pub const so_rcvtimeo = SocketOption(C.SO_RCVTIMEO)
|
||||
pub const so_resolver_signature = SocketOption(C.SO_RESOLVER_SIGNATURE)
|
||||
pub const so_reuseaddr = SocketOption(C.SO_REUSEADDR)
|
||||
pub const so_reuseport = SocketOption(C.SO_REUSEPORT)
|
||||
pub const so_reuseshareuid = SocketOption(C.SO_REUSESHAREUID)
|
||||
pub const so_sndbuf = SocketOption(C.SO_SNDBUF)
|
||||
pub const so_sndlowat = SocketOption(C.SO_SNDLOWAT)
|
||||
pub const so_sndtimeo = SocketOption(C.SO_SNDTIMEO)
|
||||
pub const so_timestamp = SocketOption(C.SO_TIMESTAMP)
|
||||
pub const so_timestamp_monotonic = SocketOption(C.SO_TIMESTAMP_MONOTONIC)
|
||||
pub const so_type = SocketOption(C.SO_TYPE)
|
||||
pub const so_upcallclosewait = SocketOption(C.SO_UPCALLCLOSEWAIT)
|
||||
pub const so_useloopback = SocketOption(C.SO_USELOOPBACK)
|
||||
pub const so_wantmore = SocketOption(C.SO_WANTMORE)
|
||||
pub const so_wantoobflag = SocketOption(C.SO_WANTOOBFLAG)
|
||||
@@ -1,53 +0,0 @@
|
||||
module netio
|
||||
|
||||
/*
|
||||
Socket options defined on FreeBSD.
|
||||
*/
|
||||
|
||||
pub const so_acceptconn = SocketOption(C.SO_ACCEPTCONN)
|
||||
pub const so_acceptfilter = SocketOption(C.SO_ACCEPTFILTER)
|
||||
pub const so_bintime = SocketOption(C.SO_BINTIME)
|
||||
pub const so_broadcast = SocketOption(C.SO_BROADCAST)
|
||||
pub const so_debug = SocketOption(C.SO_DEBUG)
|
||||
pub const so_domain = SocketOption(C.SO_DOMAIN)
|
||||
pub const so_dontroute = SocketOption(C.SO_DONTROUTE)
|
||||
pub const so_error = SocketOption(C.SO_ERROR)
|
||||
pub const so_fib = SocketOption(C.SO_FIB)
|
||||
pub const so_keepalive = SocketOption(C.SO_KEEPALIVE)
|
||||
pub const so_label = SocketOption(C.SO_LABEL)
|
||||
pub const so_linger = SocketOption(C.SO_LINGER)
|
||||
pub const so_listenincqlen = SocketOption(C.SO_LISTENINCQLEN)
|
||||
pub const so_listenqlen = SocketOption(C.SO_LISTENQLEN)
|
||||
pub const so_listenqlimit = SocketOption(C.SO_LISTENQLIMIT)
|
||||
pub const so_max_pacing_rate = SocketOption(C.SO_MAX_PACING_RATE)
|
||||
pub const so_nosigpipe = SocketOption(C.SO_NOSIGPIPE)
|
||||
pub const so_no_ddp = SocketOption(C.SO_NO_DDP)
|
||||
pub const so_no_offload = SocketOption(C.SO_NO_OFFLOAD)
|
||||
pub const so_oobinline = SocketOption(C.SO_OOBINLINE)
|
||||
pub const so_peerlabel = SocketOption(C.SO_PEERLABEL)
|
||||
pub const so_protocol = SocketOption(C.SO_PROTOCOL)
|
||||
pub const so_prototype = SocketOption(C.SO_PROTOTYPE)
|
||||
pub const so_rcvbuf = SocketOption(C.SO_RCVBUF)
|
||||
pub const so_rcvlowat = SocketOption(C.SO_RCVLOWAT)
|
||||
pub const so_rcvtimeo = SocketOption(C.SO_RCVTIMEO)
|
||||
pub const so_rerror = SocketOption(C.SO_RERROR)
|
||||
pub const so_reuseaddr = SocketOption(C.SO_REUSEADDR)
|
||||
pub const so_reuseport = SocketOption(C.SO_REUSEPORT)
|
||||
pub const so_reuseport_lb = SocketOption(C.SO_REUSEPORT_LB)
|
||||
pub const so_setfib = SocketOption(C.SO_SETFIB)
|
||||
pub const so_sndbuf = SocketOption(C.SO_SNDBUF)
|
||||
pub const so_sndlowat = SocketOption(C.SO_SNDLOWAT)
|
||||
pub const so_sndtimeo = SocketOption(C.SO_SNDTIMEO)
|
||||
pub const so_splice = SocketOption(C.SO_SPLICE)
|
||||
pub const so_timestamp = SocketOption(C.SO_TIMESTAMP)
|
||||
pub const so_ts_bintime = SocketOption(C.SO_TS_BINTIME)
|
||||
pub const so_ts_clock = SocketOption(C.SO_TS_CLOCK)
|
||||
pub const so_ts_clock_max = SocketOption(C.SO_TS_CLOCK_MAX)
|
||||
pub const so_ts_default = SocketOption(C.SO_TS_DEFAULT)
|
||||
pub const so_ts_monotonic = SocketOption(C.SO_TS_MONOTONIC)
|
||||
pub const so_ts_realtime = SocketOption(C.SO_TS_REALTIME)
|
||||
pub const so_ts_realtime_micro = SocketOption(C.SO_TS_REALTIME_MICRO)
|
||||
pub const so_type = SocketOption(C.SO_TYPE)
|
||||
pub const so_useloopback = SocketOption(C.SO_USELOOPBACK)
|
||||
pub const so_user_cookie = SocketOption(C.SO_USER_COOKIE)
|
||||
pub const so_vendor = SocketOption(C.SO_VENDOR)
|
||||
@@ -1,94 +0,0 @@
|
||||
module netio
|
||||
|
||||
/*
|
||||
Socket options defined on Linux.
|
||||
*/
|
||||
|
||||
pub const so_acceptconn = SocketOption(C.SO_ACCEPTCONN)
|
||||
pub const so_attach_bpf = SocketOption(C.SO_ATTACH_BPF)
|
||||
pub const so_attach_filter = SocketOption(C.SO_ATTACH_FILTER)
|
||||
pub const so_attach_reuseport_cbpf = SocketOption(C.SO_ATTACH_REUSEPORT_CBPF)
|
||||
pub const so_attach_reuseport_ebpf = SocketOption(C.SO_ATTACH_REUSEPORT_EBPF)
|
||||
pub const so_bindtodevice = SocketOption(C.SO_BINDTODEVICE)
|
||||
pub const so_bindtoifindex = SocketOption(C.SO_BINDTOIFINDEX)
|
||||
pub const so_bpf_extensions = SocketOption(C.SO_BPF_EXTENSIONS)
|
||||
pub const so_broadcast = SocketOption(C.SO_BROADCAST)
|
||||
pub const so_bsdcompat = SocketOption(C.SO_BSDCOMPAT)
|
||||
pub const so_buf_lock = SocketOption(C.SO_BUF_LOCK)
|
||||
pub const so_busy_poll = SocketOption(C.SO_BUSY_POLL)
|
||||
pub const so_busy_poll_budget = SocketOption(C.SO_BUSY_POLL_BUDGET)
|
||||
pub const so_cnx_advice = SocketOption(C.SO_CNX_ADVICE)
|
||||
pub const so_cookie = SocketOption(C.SO_COOKIE)
|
||||
pub const so_debug = SocketOption(C.SO_DEBUG)
|
||||
pub const so_detach_bpf = SocketOption(C.SO_DETACH_BPF)
|
||||
pub const so_detach_filter = SocketOption(C.SO_DETACH_FILTER)
|
||||
pub const so_detach_reuseport_bpf = SocketOption(C.SO_DETACH_REUSEPORT_BPF)
|
||||
pub const so_devmem_dmabuf = SocketOption(C.SO_DEVMEM_DMABUF)
|
||||
pub const so_devmem_dontneed = SocketOption(C.SO_DEVMEM_DONTNEED)
|
||||
pub const so_devmem_linear = SocketOption(C.SO_DEVMEM_LINEAR)
|
||||
pub const so_domain = SocketOption(C.SO_DOMAIN)
|
||||
pub const so_dontroute = SocketOption(C.SO_DONTROUTE)
|
||||
pub const so_error = SocketOption(C.SO_ERROR)
|
||||
pub const so_get_filter = SocketOption(C.SO_GET_FILTER)
|
||||
pub const so_incoming_cpu = SocketOption(C.SO_INCOMING_CPU)
|
||||
pub const so_incoming_napi_id = SocketOption(C.SO_INCOMING_NAPI_ID)
|
||||
pub const so_inq = SocketOption(C.SO_INQ)
|
||||
pub const so_keepalive = SocketOption(C.SO_KEEPALIVE)
|
||||
pub const so_linger = SocketOption(C.SO_LINGER)
|
||||
pub const so_lock_filter = SocketOption(C.SO_LOCK_FILTER)
|
||||
pub const so_mark = SocketOption(C.SO_MARK)
|
||||
pub const so_max_pacing_rate = SocketOption(C.SO_MAX_PACING_RATE)
|
||||
pub const so_meminfo = SocketOption(C.SO_MEMINFO)
|
||||
pub const so_netns_cookie = SocketOption(C.SO_NETNS_COOKIE)
|
||||
pub const so_nofcs = SocketOption(C.SO_NOFCS)
|
||||
pub const so_no_check = SocketOption(C.SO_NO_CHECK)
|
||||
pub const so_oobinline = SocketOption(C.SO_OOBINLINE)
|
||||
pub const so_passcred = SocketOption(C.SO_PASSCRED)
|
||||
pub const so_passpidfd = SocketOption(C.SO_PASSPIDFD)
|
||||
pub const so_passrights = SocketOption(C.SO_PASSRIGHTS)
|
||||
pub const so_passsec = SocketOption(C.SO_PASSSEC)
|
||||
pub const so_peek_off = SocketOption(C.SO_PEEK_OFF)
|
||||
pub const so_peercred = SocketOption(C.SO_PEERCRED)
|
||||
pub const so_peergroups = SocketOption(C.SO_PEERGROUPS)
|
||||
pub const so_peername = SocketOption(C.SO_PEERNAME)
|
||||
pub const so_peerpidfd = SocketOption(C.SO_PEERPIDFD)
|
||||
pub const so_peersec = SocketOption(C.SO_PEERSEC)
|
||||
pub const so_prefer_busy_poll = SocketOption(C.SO_PREFER_BUSY_POLL)
|
||||
pub const so_priority = SocketOption(C.SO_PRIORITY)
|
||||
pub const so_protocol = SocketOption(C.SO_PROTOCOL)
|
||||
pub const so_rcvbufforce = SocketOption(C.SO_RCVBUFFORCE)
|
||||
pub const so_rcvbuf = SocketOption(C.SO_RCVBUF)
|
||||
pub const so_rcvlowat = SocketOption(C.SO_RCVLOWAT)
|
||||
pub const so_rcvmark = SocketOption(C.SO_RCVMARK)
|
||||
pub const so_rcvpriority = SocketOption(C.SO_RCVPRIORITY)
|
||||
pub const so_rcvtimeo = SocketOption(C.SO_RCVTIMEO)
|
||||
pub const so_rcvtimeo_new = SocketOption(C.SO_RCVTIMEO_NEW)
|
||||
pub const so_rcvtimeo_old = SocketOption(C.SO_RCVTIMEO_OLD)
|
||||
pub const so_reserve_mem = SocketOption(C.SO_RESERVE_MEM)
|
||||
pub const so_reuseaddr = SocketOption(C.SO_REUSEADDR)
|
||||
pub const so_reuseport = SocketOption(C.SO_REUSEPORT)
|
||||
pub const so_rxq_ovfl = SocketOption(C.SO_RXQ_OVFL)
|
||||
pub const so_security_authentication = SocketOption(C.SO_SECURITY_AUTHENTICATION)
|
||||
pub const so_security_encryption_network = SocketOption(C.SO_SECURITY_ENCRYPTION_NETWORK)
|
||||
pub const so_security_encryption_transport = SocketOption(C.SO_SECURITY_ENCRYPTION_TRANSPORT)
|
||||
pub const so_select_err_queue = SocketOption(C.SO_SELECT_ERR_QUEUE)
|
||||
pub const so_sndbufforce = SocketOption(C.SO_SNDBUFFORCE)
|
||||
pub const so_sndbuf = SocketOption(C.SO_SNDBUF)
|
||||
pub const so_sndlowat = SocketOption(C.SO_SNDLOWAT)
|
||||
pub const so_sndtimeo = SocketOption(C.SO_SNDTIMEO)
|
||||
pub const so_sndtimeo_new = SocketOption(C.SO_SNDTIMEO_NEW)
|
||||
pub const so_sndtimeo_old = SocketOption(C.SO_SNDTIMEO_OLD)
|
||||
pub const so_timestamping = SocketOption(C.SO_TIMESTAMPING)
|
||||
pub const so_timestamping_new = SocketOption(C.SO_TIMESTAMPING_NEW)
|
||||
pub const so_timestamping_old = SocketOption(C.SO_TIMESTAMPING_OLD)
|
||||
pub const so_timestampns = SocketOption(C.SO_TIMESTAMPNS)
|
||||
pub const so_timestampns_new = SocketOption(C.SO_TIMESTAMPNS_NEW)
|
||||
pub const so_timestampns_old = SocketOption(C.SO_TIMESTAMPNS_OLD)
|
||||
pub const so_timestamp = SocketOption(C.SO_TIMESTAMP)
|
||||
pub const so_timestamp_new = SocketOption(C.SO_TIMESTAMP_NEW)
|
||||
pub const so_timestamp_old = SocketOption(C.SO_TIMESTAMP_OLD)
|
||||
pub const so_txrehash = SocketOption(C.SO_TXREHASH)
|
||||
pub const so_txtime = SocketOption(C.SO_TXTIME)
|
||||
pub const so_type = SocketOption(C.SO_TYPE)
|
||||
pub const so_wifi_status = SocketOption(C.SO_WIFI_STATUS)
|
||||
pub const so_zerocopy = SocketOption(C.SO_ZEROCOPY)
|
||||
@@ -1,10 +0,0 @@
|
||||
module netio
|
||||
|
||||
/*
|
||||
Common socket types.
|
||||
*/
|
||||
|
||||
pub const sock_stream = SocketType(C.SOCK_STREAM)
|
||||
pub const sock_dgram = SocketType(C.SOCK_DGRAM)
|
||||
pub const sock_seqpacket = SocketType(C.SOCK_SEQPACKET)
|
||||
pub const sock_raw = SocketType(C.SOCK_RAW)
|
||||
@@ -1,13 +0,0 @@
|
||||
module netio
|
||||
|
||||
/*
|
||||
Socket types defined on FreeBSD.
|
||||
*/
|
||||
|
||||
pub const sock_stream = SocketType(C.SOCK_STREAM)
|
||||
pub const sock_dgram = SocketType(C.SOCK_DGRAM)
|
||||
pub const sock_raw = SocketType(C.SOCK_RAW)
|
||||
pub const sock_seqpacket = SocketType(C.SOCK_SEQPACKET)
|
||||
pub const sock_cloexec = SocketType(C.SOCK_CLOEXEC)
|
||||
pub const sock_clofork = SocketType(C.SOCK_CLOFORK)
|
||||
pub const sock_nonblock = SocketType(C.SOCK_NONBLOCK)
|
||||
@@ -1,13 +0,0 @@
|
||||
module netio
|
||||
|
||||
/*
|
||||
Socket types defined on Linux.
|
||||
*/
|
||||
|
||||
pub const sock_stream = SocketType(C.SOCK_STREAM)
|
||||
pub const sock_dgram = SocketType(C.SOCK_DGRAM)
|
||||
pub const sock_seqpacket = SocketType(C.SOCK_SEQPACKET)
|
||||
pub const sock_raw = SocketType(C.SOCK_RAW)
|
||||
pub const sock_rdm = SocketType(C.SOCK_RDM)
|
||||
pub const sock_nonblock = SocketType(C.SOCK_NONBLOCK)
|
||||
pub const sock_cloexec = SocketType(C.SOCK_CLOEXEC)
|
||||
+20
-11
@@ -13,7 +13,7 @@ fn C.accept(i32, voidptr, voidptr) i32
|
||||
fn C.shutdown(i32, i32) i32
|
||||
fn C.close(i32) i32
|
||||
fn C.setsockopt(i32, i32, i32, voidptr, i32) i32
|
||||
fn C.getsockopt(i32, i32, i32, voidptr, i32) i32
|
||||
fn C.getsockopt(i32, i32, i32, voidptr, voidptr) i32
|
||||
|
||||
struct C.sockaddr_storage {}
|
||||
|
||||
@@ -25,8 +25,8 @@ pub:
|
||||
// Socket.new creates new socket.
|
||||
// See [socket(7)](https://www.man7.org/linux/man-pages/man7/socket.7.html) and
|
||||
// [socket(3)](https://man7.org/linux/man-pages/man3/socket.3p.html) for details.
|
||||
pub fn Socket.new(domain AddrFamily, typ SocketType, protocol Protocol) !Socket {
|
||||
fd := C.socket(i32(domain), i32(typ), i32(protocol))
|
||||
pub fn Socket.new(domain AddrFamily, st SocketType, proto Protocol) !Socket {
|
||||
fd := C.socket(i32(domain), i32(st), i32(proto))
|
||||
if fd == -1 {
|
||||
return os.last_error()
|
||||
}
|
||||
@@ -42,9 +42,9 @@ pub fn (s Socket) type_of() !SocketType {
|
||||
|
||||
// Socket shutdown modes. See [shutdown(3p)](https://man7.org/linux/man-pages/man3/shutdown.3p.html) for details.
|
||||
pub enum Shutdown {
|
||||
read = C.SHUT_RD
|
||||
write = C.SHUT_WR
|
||||
read_and_write = C.SHUT_RDWR
|
||||
read
|
||||
write
|
||||
read_and_write
|
||||
}
|
||||
|
||||
// connect connects a socket.
|
||||
@@ -86,16 +86,25 @@ pub fn (s Socket) accept() !(Socket, SocketAddr) {
|
||||
return sock, sock_addr
|
||||
}
|
||||
|
||||
// set_option sets the socket option.
|
||||
pub fn (s Socket) set_option(level SocketLevel, option SocketOption, value int) ! {
|
||||
if C.setsockopt(s.fd, i32(level), i32(option), i32(value), sizeof(value)) == -1 {
|
||||
// set_option sets the socket option. See [socket(7)](https://man7.org/linux/man-pages/man7/socket.7.html)
|
||||
// and [setsockopt(3p)](https://man7.org/linux/man-pages/man3/setsockopt.3p.html) for details.
|
||||
pub fn (s Socket) set_option(level SocketLevel, option SocketOption, value voidptr) ! {
|
||||
if C.setsockopt(s.fd, i32(level), i32(option), value, sizeof(value)) == -1 {
|
||||
return os.last_error()
|
||||
}
|
||||
}
|
||||
|
||||
// get_option gets the socket option as int.
|
||||
// get_option gets the socket option. See [socket(7)](https://man7.org/linux/man-pages/man7/socket.7.html)
|
||||
// and [getsockopt(3p)](https://man7.org/linux/man-pages/man3/getsockopt.3p.html) for details.
|
||||
pub fn (s Socket) get_option(level SocketLevel, option SocketOption, mut value voidptr, mut size voidptr) ! {
|
||||
if C.getsockopt(s.fd, i32(level), i32(option), value, size) == -1 {
|
||||
return os.last_error()
|
||||
}
|
||||
}
|
||||
|
||||
// get_option gets the socket option as int. The same as `get_option`, but always returns int.
|
||||
pub fn (s Socket) get_option_int(level SocketLevel, option SocketOption) !int {
|
||||
mut result := 0
|
||||
mut result := -1
|
||||
if C.getsockopt(s.fd, i32(level), i32(option), &result, sizeof(result)) == -1 {
|
||||
return os.last_error()
|
||||
}
|
||||
|
||||
+7
-100
@@ -1,24 +1,6 @@
|
||||
module netio
|
||||
|
||||
import encoding.binary
|
||||
import os
|
||||
|
||||
#include <netdb.h>
|
||||
|
||||
struct C.addrinfo {
|
||||
mut:
|
||||
ai_flags i32
|
||||
ai_family i32
|
||||
ai_socktype i32
|
||||
ai_protocol i32
|
||||
ai_addrlen i32
|
||||
ai_addr voidptr
|
||||
ai_canonname voidptr
|
||||
ai_next voidptr
|
||||
}
|
||||
|
||||
fn C.getaddrinfo(&char, &char, &C.addrinfo, &&C.addrinfo) i32
|
||||
fn C.freeaddrinfo(&C.addrinfo)
|
||||
|
||||
// max_unix_path_size value is used to pad the sockaddr_un struct.
|
||||
const max_unix_path_size = $if linux {
|
||||
@@ -29,83 +11,6 @@ const max_unix_path_size = $if linux {
|
||||
104
|
||||
}
|
||||
|
||||
// AddrInfo represents the [addrinfo](https://man7.org/linux/man-pages/man3/getaddrinfo.3.html).
|
||||
pub struct AddrInfo {
|
||||
pub:
|
||||
flags int
|
||||
family AddrFamily
|
||||
sock_type SocketType
|
||||
protocol Protocol
|
||||
addr SocketAddr
|
||||
canonical string
|
||||
}
|
||||
|
||||
@[params]
|
||||
pub struct TranslateAddrHints {
|
||||
pub:
|
||||
node ?string
|
||||
service ?string
|
||||
family AddrFamily = af_unspec
|
||||
sock_type SocketType
|
||||
protocol Protocol
|
||||
flags int
|
||||
}
|
||||
|
||||
// translate_addr translates the network address. This is a low-level wrapper around
|
||||
// the [getaddrinfo(3)](https://man7.org/linux/man-pages/man3/getaddrinfo.3.html) C API.
|
||||
// Example:
|
||||
// ```v
|
||||
// import os
|
||||
// import netio
|
||||
//
|
||||
// // Resolve the host FQND
|
||||
// addr_info := netio.translate_addr(node: os.hostname()!, flags: ai_canonname)!
|
||||
// for addr in addr_info {
|
||||
// println(addr.canonical)
|
||||
// }
|
||||
// ```
|
||||
pub fn translate_addr(hints TranslateAddrHints) ![]AddrInfo {
|
||||
mut hints_ := C.addrinfo{}
|
||||
unsafe { vmemset(&hints_, 0, int(sizeof(hints_))) }
|
||||
hints_.ai_family = i32(hints.family)
|
||||
hints_.ai_socktype = i32(hints.sock_type)
|
||||
hints_.ai_protocol = i32(hints.protocol)
|
||||
hints_.ai_flags = i32(hints.flags)
|
||||
mut node := unsafe { nil }
|
||||
if hints.node != none {
|
||||
node = &char(hints.node.str)
|
||||
}
|
||||
mut service := unsafe { nil }
|
||||
if hints.service != none {
|
||||
service = &char(hints.service.str)
|
||||
}
|
||||
mut results := &C.addrinfo(unsafe { nil })
|
||||
if C.getaddrinfo(node, service, &hints_, &results) == -1 {
|
||||
return os.last_error()
|
||||
}
|
||||
defer {
|
||||
C.freeaddrinfo(results)
|
||||
}
|
||||
mut addrs := []AddrInfo{}
|
||||
for result := unsafe { results }; !isnil(result); result = result.ai_next {
|
||||
addrs << AddrInfo{
|
||||
flags: int(result.ai_flags)
|
||||
family: int(result.ai_family)
|
||||
sock_type: int(result.ai_socktype)
|
||||
protocol: int(result.ai_protocol)
|
||||
addr: unsafe { SocketAddr.from_ptr(result.ai_addr, result.ai_addrlen)! }
|
||||
canonical: if isnil(result.ai_canonname) {
|
||||
''
|
||||
} else {
|
||||
unsafe {
|
||||
cstring_to_vstring(result.ai_canonname)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return addrs
|
||||
}
|
||||
|
||||
// SocketAddr.ipv4 creates new AF_INET socket address.
|
||||
// addr must be set in network (big-endian) byte order.
|
||||
pub fn SocketAddr.ipv4(addr [4]u8, port u16) SocketAddr {
|
||||
@@ -149,9 +54,6 @@ pub fn SocketAddr.unix(path string) !SocketAddr {
|
||||
// the address itself, you need to do that manually. The benefit is that you can create the
|
||||
// any kind of socket address.
|
||||
//
|
||||
// Note: This function sets the address family struct field for you, it is always first
|
||||
// and 2-byte size (`u16` type).
|
||||
//
|
||||
// SocketAddr is a "constructor" for
|
||||
// [sockaddr(3type)](https://www.man7.org/linux/man-pages/man3/sockaddr.3type.html) objects.
|
||||
// Use this function only if you understand what you do. You must manually write the data
|
||||
@@ -169,7 +71,7 @@ pub fn SocketAddr.unix(path string) !SocketAddr {
|
||||
// Data must be padded to sockaddr struct size which is 16 bytes. Each field is then
|
||||
// written in turn, from top to bottom. Keep in mind that two-byte address family field
|
||||
// (sin_family in this case) is already written. According to the manual page, the
|
||||
// address and port are written using the network (big endian) byte order.
|
||||
// address and port are written using the network (big-endian) byte order.
|
||||
//
|
||||
// Example:
|
||||
// ```v
|
||||
@@ -194,6 +96,7 @@ pub fn SocketAddr.unix(path string) !SocketAddr {
|
||||
// sa.push(binary.big_endian_get_u16(u16(1080)))!
|
||||
// sa.push([u8(127), 0, 0, 1])!
|
||||
// }
|
||||
// println(sa)
|
||||
// ```
|
||||
@[unsafe]
|
||||
pub fn SocketAddr.new(af AddrFamily, size isize) SocketAddr {
|
||||
@@ -276,6 +179,10 @@ pub fn (a SocketAddr) u8_array() []u8 {
|
||||
}
|
||||
|
||||
// str returns the string representation of socket address.
|
||||
// Supported address families are AF_INET, AF_INET6, and AF_UNIX.
|
||||
// For others a string like 'SocketAddr(0x00000000)' will be returned.
|
||||
// Examples: '172.16.16.132:1080', '[fdf1:72d1:0033:0000:0000:0000:0000:0247]:25535,
|
||||
// '/run/app.sock'. See also `translate_name()`.
|
||||
pub fn (a SocketAddr) str() string {
|
||||
match a.family() {
|
||||
af_inet {
|
||||
@@ -320,7 +227,7 @@ pub fn (a SocketAddr) str() string {
|
||||
return res
|
||||
}
|
||||
else {
|
||||
return 'SocketAddr(${a.data.str()})'
|
||||
return 'SocketAddr(0x${a.data:08x})'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
module netio
|
||||
|
||||
/*
|
||||
Common socket levels.
|
||||
*/
|
||||
|
||||
pub const sol_socket = C.SOL_SOCKET
|
||||
@@ -1,35 +0,0 @@
|
||||
module netio
|
||||
|
||||
/*
|
||||
Socket levels defined on Linux.
|
||||
*/
|
||||
|
||||
pub const sol_aal = SocketOption(C.SOL_AAL)
|
||||
pub const sol_alg = SocketOption(C.SOL_ALG)
|
||||
pub const sol_atm = SocketOption(C.SOL_ATM)
|
||||
pub const sol_bluetooth = SocketOption(C.SOL_BLUETOOTH)
|
||||
pub const sol_caif = SocketOption(C.SOL_CAIF)
|
||||
pub const sol_dccp = SocketOption(C.SOL_DCCP)
|
||||
pub const sol_decnet = SocketOption(C.SOL_DECNET)
|
||||
pub const sol_irda = SocketOption(C.SOL_IRDA)
|
||||
pub const sol_iucv = SocketOption(C.SOL_IUCV)
|
||||
pub const sol_kcm = SocketOption(C.SOL_KCM)
|
||||
pub const sol_llc = SocketOption(C.SOL_LLC)
|
||||
pub const sol_mctp = SocketOption(C.SOL_MCTP)
|
||||
pub const sol_mptcp = SocketOption(C.SOL_MPTCP)
|
||||
pub const sol_netbeui = SocketOption(C.SOL_NETBEUI)
|
||||
pub const sol_netlink = SocketOption(C.SOL_NETLINK)
|
||||
pub const sol_nfc = SocketOption(C.SOL_NFC)
|
||||
pub const sol_packet = SocketOption(C.SOL_PACKET)
|
||||
pub const sol_pnpipe = SocketOption(C.SOL_PNPIPE)
|
||||
pub const sol_pppol2tp = SocketOption(C.SOL_PPPOL2TP)
|
||||
pub const sol_raw = SocketOption(C.SOL_RAW)
|
||||
pub const sol_rds = SocketOption(C.SOL_RDS)
|
||||
pub const sol_rxrpc = SocketOption(C.SOL_RXRPC)
|
||||
pub const sol_smc = SocketOption(C.SOL_SMC)
|
||||
pub const sol_socket = SocketOption(C.SOL_SOCKET)
|
||||
pub const sol_tipc = SocketOption(C.SOL_TIPC)
|
||||
pub const sol_tls = SocketOption(C.SOL_TLS)
|
||||
pub const sol_vsock = SocketOption(C.SOL_VSOCK)
|
||||
pub const sol_x25 = SocketOption(C.SOL_X25)
|
||||
pub const sol_xdp = SocketOption(C.SOL_XDP)
|
||||
+112
-6
@@ -2,13 +2,119 @@ module netio
|
||||
|
||||
import os
|
||||
|
||||
fn C.getnameinfo(voidptr, i32, &char, i32, &char, i32, i32) i32
|
||||
#include <netdb.h>
|
||||
|
||||
pub fn name(sa SocketAddr) !(string, string) {
|
||||
mut addr := []u8{len: 16}
|
||||
mut srv := []u8{len: 2}
|
||||
if C.getnameinfo(sa.ptr(), sa.size(), addr.data, 16, srv.data, 2, C.NI_NUMERICHOST) == -1 {
|
||||
fn C.getaddrinfo(&char, &char, &C.addrinfo, &&C.addrinfo) i32
|
||||
fn C.freeaddrinfo(&C.addrinfo)
|
||||
fn C.getnameinfo(voidptr, i32, &char, i32, &char, i32, i32) i32
|
||||
fn C.gai_strerror(i32) &char
|
||||
|
||||
struct C.addrinfo {
|
||||
mut:
|
||||
ai_flags i32
|
||||
ai_family i32
|
||||
ai_socktype i32
|
||||
ai_protocol i32
|
||||
ai_addrlen i32
|
||||
ai_addr voidptr
|
||||
ai_canonname voidptr
|
||||
ai_next voidptr
|
||||
}
|
||||
|
||||
// AddrInfo represents the [addrinfo](https://man7.org/linux/man-pages/man3/getaddrinfo.3.html) struct.
|
||||
pub struct AddrInfo {
|
||||
pub:
|
||||
flags AddrInfoFlag
|
||||
family AddrFamily
|
||||
sock_type SocketType
|
||||
protocol Protocol
|
||||
addr SocketAddr
|
||||
canonical string
|
||||
}
|
||||
|
||||
@[params]
|
||||
pub struct TranslateAddrParams {
|
||||
pub:
|
||||
node ?string
|
||||
service ?string
|
||||
family AddrFamily = af_unspec
|
||||
sock_type SocketType
|
||||
protocol Protocol
|
||||
flags AddrInfoFlag
|
||||
}
|
||||
|
||||
// translate_addr translates the network address. This is a low-level wrapper around
|
||||
// the [getaddrinfo(3)](https://man7.org/linux/man-pages/man3/getaddrinfo.3.html) C API.
|
||||
pub fn translate_addr(hints TranslateAddrParams) ![]AddrInfo {
|
||||
mut hints_ := C.addrinfo{}
|
||||
unsafe { vmemset(&hints_, 0, int(sizeof(hints_))) }
|
||||
hints_.ai_family = i32(hints.family)
|
||||
hints_.ai_socktype = i32(hints.sock_type)
|
||||
hints_.ai_protocol = i32(hints.protocol)
|
||||
hints_.ai_flags = i32(hints.flags)
|
||||
mut node := unsafe { nil }
|
||||
if hints.node != none {
|
||||
node = &char(hints.node.str)
|
||||
}
|
||||
mut service := unsafe { nil }
|
||||
if hints.service != none {
|
||||
service = &char(hints.service.str)
|
||||
}
|
||||
mut results := &C.addrinfo(unsafe { nil })
|
||||
code := C.getaddrinfo(node, service, &hints_, &results)
|
||||
if code != 0 {
|
||||
if code == C.EAI_SYSTEM {
|
||||
return os.last_error()
|
||||
}
|
||||
return addr.str(), ''
|
||||
msg := C.gai_strerror(code)
|
||||
return error_with_code(unsafe { cstring_to_vstring(msg) }, code)
|
||||
}
|
||||
defer {
|
||||
C.freeaddrinfo(results)
|
||||
}
|
||||
mut addrs := []AddrInfo{}
|
||||
for result := unsafe { results }; !isnil(result); result = result.ai_next {
|
||||
addrs << AddrInfo{
|
||||
flags: int(result.ai_flags)
|
||||
family: int(result.ai_family)
|
||||
sock_type: int(result.ai_socktype)
|
||||
protocol: int(result.ai_protocol)
|
||||
addr: unsafe { SocketAddr.from_ptr(result.ai_addr, result.ai_addrlen)! }
|
||||
canonical: if isnil(result.ai_canonname) {
|
||||
''
|
||||
} else {
|
||||
unsafe {
|
||||
cstring_to_vstring(result.ai_canonname)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return addrs
|
||||
}
|
||||
|
||||
@[params]
|
||||
pub struct TranslateNameParams {
|
||||
pub:
|
||||
flags NameInfoFlag
|
||||
}
|
||||
|
||||
// translate_name does address-to-name translation and returns the host and service names.
|
||||
// See [getnameinfo(3)](https://man7.org/linux/man-pages/man3/getnameinfo.3.html) for details.
|
||||
pub fn translate_name(sa SocketAddr, params TranslateNameParams) !(string, string) {
|
||||
mut addr := []u8{len: C.NI_MAXHOST}
|
||||
mut serv := []u8{len: C.NI_MAXSERV}
|
||||
code := C.getnameinfo(sa.ptr(), sa.size(), addr.data, addr.len, serv.data, serv.len,
|
||||
params.flags)
|
||||
if code != 0 {
|
||||
if code == C.EAI_SYSTEM {
|
||||
return os.last_error()
|
||||
}
|
||||
msg := C.gai_strerror(code)
|
||||
return error_with_code(unsafe { cstring_to_vstring(msg) }, code)
|
||||
}
|
||||
return unsafe {
|
||||
tos_clone(&u8(addr.data))
|
||||
}, unsafe {
|
||||
tos_clone(&u8(serv.data))
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user