2 * networking.h: Portable networking functions
5 * Rodrigo Kumpera (kumpera@gmail.com)
11 #ifndef __MONO_NETWORKING_H__
12 #define __MONO_NETWORKING_H__
14 #include <arpa/inet.h>
15 #include <sys/types.h>
16 #include <sys/socket.h>
17 #include <mono/utils/mono-compiler.h>
20 MONO_HINT_UNSPECIFIED
= 0,
23 MONO_HINT_CANONICAL_NAME
= 4,
24 MONO_HINT_CONFIGURED_ONLY
= 8,
25 } MonoGetAddressHints
;
27 typedef struct _MonoAddressEntry MonoAddressEntry
;
29 struct _MonoAddressEntry
{
38 const char *canonical_name
;
39 MonoAddressEntry
*next
;
43 MonoAddressEntry
*entries
;
48 struct sockaddr_in v4
;
49 struct sockaddr_in6 v6
;
53 /* This only supports IPV4 / IPV6 and tcp */
54 int mono_get_address_info (const char *hostname
, int port
, int flags
, MonoAddressInfo
**res
) MONO_INTERNAL
;
56 void mono_free_address_info (MonoAddressInfo
*ai
) MONO_INTERNAL
;
58 void mono_socket_address_init (MonoSocketAddress
*sa
, socklen_t
*len
, int family
, const void *address
, int port
) MONO_INTERNAL
;
60 void *mono_get_local_interfaces (int family
, int *interface_count
) MONO_INTERNAL
;
62 #ifndef HAVE_INET_PTON
63 int inet_pton (int family
, const char *address
, void *inaddrp
) MONO_INTERNAL
;
66 int mono_networking_get_tcp_protocol (void) MONO_INTERNAL
;
67 int mono_networking_get_ip_protocol (void) MONO_INTERNAL
;
68 int mono_networking_get_ipv6_protocol (void) MONO_INTERNAL
;