Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[POC] - Move PSL1GHT net code to newlib #2

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions newlib/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -318,6 +318,18 @@ endif
$(INSTALL_DATA) $$i $(DESTDIR)$(tooldir)/include/`basename $$i`; \
else true; fi ; \
done ; \
$(mkinstalldirs) $(DESTDIR)$(tooldir)/include/arpa; \
for i in $(srcdir)/libc/sys/$(sys_dir)/include/arpa/*.h; do \
if [ -f $$i ]; then \
$(INSTALL_DATA) $$i $(DESTDIR)$(tooldir)/include/arpa/`basename $$i`; \
else true; fi ; \
done ; \
$(mkinstalldirs) $(DESTDIR)$(tooldir)/include/netinet; \
for i in $(srcdir)/libc/sys/$(sys_dir)/include/netinet/*.h; do \
if [ -f $$i ]; then \
$(INSTALL_DATA) $$i $(DESTDIR)$(tooldir)/include/netinet/`basename $$i`; \
else true; fi ; \
done ; \
for i in $(srcdir)/libc/sys/$(sys_dir)/include/*; do \
if [ -d $$i ]; then \
for j in $$i/*.h; do \
Expand Down
12 changes: 12 additions & 0 deletions newlib/Makefile.in
Original file line number Diff line number Diff line change
Expand Up @@ -1025,6 +1025,18 @@ install-data-local: install-toollibLIBRARIES
$(INSTALL_DATA) $$i $(DESTDIR)$(tooldir)/include/`basename $$i`; \
else true; fi ; \
done ; \
$(mkinstalldirs) $(DESTDIR)$(tooldir)/include/netinet; \
for i in $(srcdir)/libc/sys/$(sys_dir)/include/netinet/*.h; do \
if [ -f $$i ]; then \
$(INSTALL_DATA) $$i $(DESTDIR)$(tooldir)/include/netinet/`basename $$i`; \
else true; fi ; \
done ; \
$(mkinstalldirs) $(DESTDIR)$(tooldir)/include/arpa; \
for i in $(srcdir)/libc/sys/$(sys_dir)/include/arpa/*.h; do \
if [ -f $$i ]; then \
$(INSTALL_DATA) $$i $(DESTDIR)$(tooldir)/include/arpa/`basename $$i`; \
else true; fi ; \
done ; \
for i in $(srcdir)/libc/sys/$(sys_dir)/include/*; do \
if [ -d $$i ]; then \
for j in $$i/*.h; do \
Expand Down
3 changes: 2 additions & 1 deletion newlib/libc/sys/lv2/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@ AM_CCASFLAGS = $(INCLUDES)

noinst_LIBRARIES = lib.a

lib_a_SOURCES = getreent.c lock.c lock_recursive.c lock_internal.c
NET_SOURCES = poll.c select.c socket.c net/gethostbyaddr.c net/gethostbyname.c net/getservbyport.c net/inet_addr.c net/inet_aton.c net/inet_lnaof.c net/inet_makeaddr.c net/inet_netof.c net/inet_network.c net/inet_ntoa.c net/inet_ntop.c net/inet_pton.c net/net_init.c
lib_a_SOURCES = getreent.c lock.c lock_recursive.c lock_internal.c ${NET_SOURCES}
lib_a_CCASFLAGS = $(AM_CCASFLAGS)
lib_a_CFLAGS = $(AM_CFLAGS)

Expand Down
110 changes: 108 additions & 2 deletions newlib/libc/sys/lv2/Makefile.in
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,17 @@ LIBRARIES = $(noinst_LIBRARIES)
ARFLAGS = cru
lib_a_AR = $(AR) $(ARFLAGS)
lib_a_LIBADD =
am_net_objects = lib_a-poll.$(OBJEXT) lib_a-select.$(OBJEXT) \
lib_a-socket.$(OBJEXT) lib_a-gethostbyaddr.$(OBJEXT) \
lib_a-gethostbyname.$(OBJEXT) lib_a-getservbyport.$(OBJEXT) \
lib_a-inet_addr.$(OBJEXT) lib_a-inet_aton.$(OBJEXT) \
lib_a-inet_lnaof.$(OBJEXT) lib_a-inet_makeaddr.$(OBJEXT) \
lib_a-inet_netof.$(OBJEXT) lib_a-inet_network.$(OBJEXT) \
lib_a-inet_ntoa.$(OBJEXT) lib_a-inet_ntop.$(OBJEXT) \
lib_a-inet_pton.$(OBJEXT) lib_a-net_init.$(OBJEXT)
am_lib_a_OBJECTS = lib_a-getreent.$(OBJEXT) lib_a-lock.$(OBJEXT) \
lib_a-lock_recursive.$(OBJEXT) lib_a-lock_internal.$(OBJEXT)
lib_a-lock_recursive.$(OBJEXT) lib_a-lock_internal.$(OBJEXT) \
$(am_net_objects)
lib_a_OBJECTS = $(am_lib_a_OBJECTS)
DEFAULT_INCLUDES = -I.@am__isrc@
depcomp =
Expand Down Expand Up @@ -170,7 +179,8 @@ AUTOMAKE_OPTIONS = cygnus
INCLUDES = $(NEWLIB_CFLAGS) $(CROSS_CFLAGS) $(TARGET_CFLAGS)
AM_CCASFLAGS = $(INCLUDES)
noinst_LIBRARIES = lib.a
lib_a_SOURCES = getreent.c lock.c lock_recursive.c lock_internal.c
NET_SOURCES = poll.c select.c socket.c net/gethostbyaddr.c net/gethostbyname.c net/getservbyport.c net/inet_addr.c net/inet_aton.c net/inet_lnaof.c net/inet_makeaddr.c net/inet_netof.c net/inet_network.c net/inet_ntoa.c net/inet_ntop.c net/inet_pton.c net/net_init.c
lib_a_SOURCES = getreent.c lock.c lock_recursive.c lock_internal.c ${NET_SOURCES}
lib_a_CCASFLAGS = $(AM_CCASFLAGS)
lib_a_CFLAGS = $(AM_CFLAGS)
ACLOCAL_AMFLAGS = -I ../../.. -I ../../../..
Expand Down Expand Up @@ -257,6 +267,102 @@ lib_a-lock_internal.o: lock_internal.c
lib_a-lock_internal.obj: lock_internal.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-lock_internal.obj `if test -f 'lock_internal.c'; then $(CYGPATH_W) 'lock_internal.c'; else $(CYGPATH_W) '$(srcdir)/lock_internal.c'; fi`

lib_a-poll.o: poll.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-poll.o `test -f 'poll.c' || echo '$(srcdir)/'`poll.c

lib_a-poll.obj: poll.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-poll.obj `if test -f 'poll.c'; then $(CYGPATH_W) 'poll.c'; else $(CYGPATH_W) '$(srcdir)/poll.c'; fi`

lib_a-select.o: select.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-select.o `test -f 'select.c' || echo '$(srcdir)/'`select.c

lib_a-select.obj: select.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-select.obj `if test -f 'select.c'; then $(CYGPATH_W) 'select.c'; else $(CYGPATH_W) '$(srcdir)/select.c'; fi`

lib_a-socket.o: socket.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-socket.o `test -f 'socket.c' || echo '$(srcdir)/'`socket.c

lib_a-socket.obj: socket.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-socket.obj `if test -f 'socket.c'; then $(CYGPATH_W) 'socket.c'; else $(CYGPATH_W) '$(srcdir)/socket.c'; fi`

lib_a-gethostbyaddr.o: net/gethostbyaddr.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-gethostbyaddr.o `test -f 'net/gethostbyaddr.c' || echo '$(srcdir)/'`net/gethostbyaddr.c

lib_a-gethostbyaddr.obj: net/gethostbyaddr.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-gethostbyaddr.obj `if test -f 'net/gethostbyaddr.c'; then $(CYGPATH_W) 'net/gethostbyaddr.c'; else $(CYGPATH_W) '$(srcdir)/net/gethostbyaddr.c'; fi`

lib_a-gethostbyname.o: net/gethostbyname.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-gethostbyname.o `test -f 'net/gethostbyname.c' || echo '$(srcdir)/'`net/gethostbyname.c

lib_a-gethostbyname.obj: net/gethostbyname.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-gethostbyname.obj `if test -f 'net/gethostbyname.c'; then $(CYGPATH_W) 'net/gethostbyname.c'; else $(CYGPATH_W) '$(srcdir)/net/gethostbyname.c'; fi`

lib_a-getservbyport.o: net/getservbyport.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-getservbyport.o `test -f 'net/getservbyport.c' || echo '$(srcdir)/'`net/getservbyport.c

lib_a-getservbyport.obj: net/getservbyport.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-getservbyport.obj `if test -f 'net/getservbyport.c'; then $(CYGPATH_W) 'net/getservbyport.c'; else $(CYGPATH_W) '$(srcdir)/net/getservbyport.c'; fi`

lib_a-inet_addr.o: net/inet_addr.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-inet_addr.o `test -f 'net/inet_addr.c' || echo '$(srcdir)/'`net/inet_addr.c

lib_a-inet_addr.obj: net/inet_addr.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-inet_addr.obj `if test -f 'net/inet_addr.c'; then $(CYGPATH_W) 'net/inet_addr.c'; else $(CYGPATH_W) '$(srcdir)/net/inet_addr.c'; fi`

lib_a-inet_aton.o: net/inet_aton.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-inet_aton.o `test -f 'net/inet_aton.c' || echo '$(srcdir)/'`net/inet_aton.c

lib_a-inet_aton.obj: net/inet_aton.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-inet_aton.obj `if test -f 'net/inet_aton.c'; then $(CYGPATH_W) 'net/inet_aton.c'; else $(CYGPATH_W) '$(srcdir)/net/inet_aton.c'; fi`

lib_a-inet_lnaof.o: net/inet_lnaof.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-inet_lnaof.o `test -f 'net/inet_lnaof.c' || echo '$(srcdir)/'`net/inet_lnaof.c

lib_a-inet_lnaof.obj: net/inet_lnaof.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-inet_lnaof.obj `if test -f 'net/inet_lnaof.c'; then $(CYGPATH_W) 'net/inet_lnaof.c'; else $(CYGPATH_W) '$(srcdir)/net/inet_lnaof.c'; fi`

lib_a-inet_makeaddr.o: net/inet_makeaddr.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-inet_makeaddr.o `test -f 'net/inet_makeaddr.c' || echo '$(srcdir)/'`net/inet_makeaddr.c

lib_a-inet_makeaddr.obj: net/inet_makeaddr.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-inet_makeaddr.obj `if test -f 'net/inet_makeaddr.c'; then $(CYGPATH_W) 'net/inet_makeaddr.c'; else $(CYGPATH_W) '$(srcdir)/net/inet_makeaddr.c'; fi`

lib_a-inet_netof.o: net/inet_netof.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-inet_netof.o `test -f 'net/inet_netof.c' || echo '$(srcdir)/'`net/inet_netof.c

lib_a-inet_netof.obj: net/inet_netof.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-inet_netof.obj `if test -f 'net/inet_netof.c'; then $(CYGPATH_W) 'net/inet_netof.c'; else $(CYGPATH_W) '$(srcdir)/net/inet_netof.c'; fi`

lib_a-inet_network.o: net/inet_network.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-inet_network.o `test -f 'net/inet_network.c' || echo '$(srcdir)/'`net/inet_network.c

lib_a-inet_network.obj: net/inet_network.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-inet_network.obj `if test -f 'net/inet_network.c'; then $(CYGPATH_W) 'net/inet_network.c'; else $(CYGPATH_W) '$(srcdir)/net/inet_network.c'; fi`

lib_a-inet_ntoa.o: net/inet_ntoa.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-inet_ntoa.o `test -f 'net/inet_ntoa.c' || echo '$(srcdir)/'`net/inet_ntoa.c

lib_a-inet_ntoa.obj: net/inet_ntoa.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-inet_ntoa.obj `if test -f 'net/inet_ntoa.c'; then $(CYGPATH_W) 'net/inet_ntoa.c'; else $(CYGPATH_W) '$(srcdir)/net/inet_ntoa.c'; fi`

lib_a-inet_ntop.o: net/inet_ntop.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-inet_ntop.o `test -f 'net/inet_ntop.c' || echo '$(srcdir)/'`net/inet_ntop.c

lib_a-inet_ntop.obj: net/inet_ntop.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-inet_ntop.obj `if test -f 'net/inet_ntop.c'; then $(CYGPATH_W) 'net/inet_ntop.c'; else $(CYGPATH_W) '$(srcdir)/net/inet_ntop.c'; fi`

lib_a-inet_pton.o: net/inet_pton.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-inet_pton.o `test -f 'net/inet_pton.c' || echo '$(srcdir)/'`net/inet_pton.c

lib_a-inet_pton.obj: net/inet_pton.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-inet_pton.obj `if test -f 'net/inet_pton.c'; then $(CYGPATH_W) 'net/inet_pton.c'; else $(CYGPATH_W) '$(srcdir)/net/inet_pton.c'; fi`

lib_a-net_init.o: net/net_init.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-net_init.o `test -f 'net/net_init.c' || echo '$(srcdir)/'`net/net_init.c

lib_a-net_init.obj: net/net_init.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-net_init.obj `if test -f 'net/net_init.c'; then $(CYGPATH_W) 'net/net_init.c'; else $(CYGPATH_W) '$(srcdir)/net/net_init.c'; fi`

ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
Expand Down
30 changes: 30 additions & 0 deletions newlib/libc/sys/lv2/include/arpa/inet.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
#ifndef __INET_H__
#define __INET_H__

#ifdef __cplusplus
extern "C" {
#endif

#include <netinet/in.h>

#define htonl(hostlong) (hostlong)
#define htons(hostshort) (hostshort)
#define ntohl(netlong) (netlong)
#define ntohs(netshort) (netshort)

in_addr_t inet_addr(const char* cp);
in_addr_t inet_lnaof(struct in_addr in);
struct in_addr inet_makeaddr(in_addr_t net, in_addr_t lna);
in_addr_t inet_netof(struct in_addr in);
in_addr_t inet_network(const char* cp);
char * inet_ntoa(struct in_addr in);
int inet_aton(const char* cp, struct in_addr* inp);
const char * inet_ntop(int af, const void* src, char* dst, socklen_t size);
int inet_pton(int af, const char* src, void* dst);

#ifdef __cplusplus
}
#endif

#endif

23 changes: 23 additions & 0 deletions newlib/libc/sys/lv2/include/net_init.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
#ifndef __LV2_NET_INIT_H__
#define __LV2_NET_INIT_H__

#include <net/net.h>

void * __netMemory;

#define LIBNET_MEMORY_SIZE 0x20000 // 128KB
#define LIBNET_INITIALZED (__netMemory)

#ifdef __cplusplus
extern "C" {
#endif

int32_t netInitialize();
int32_t netDeinitialize();
int32_t netErrno(int ret);

#ifdef __cplusplus
}
#endif

#endif
86 changes: 86 additions & 0 deletions newlib/libc/sys/lv2/include/netdb.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
#ifndef __NETDB_H__
#define __NETDB_H__

#ifdef __cplusplus
extern "C" {
#endif

#include <socket.h>

#define NETDB_INTERNAL -1
#define NETDB_SUCCESS 0x00
#define HOST_NOT_FOUND 0x01
#define TRY_AGAIN 0x02
#define NO_RECOVERY 0x03
#define NO_DATA 0x04
#define NO_ADDRESS NO_DATA

#define NI_MAXHOST 1025
#define NI_MAXSERV 32

#define NI_NUMERICHOST 1 /* Don't try to look up hostname. */
#define NI_NUMERICSERV 2 /* Don't convert port number to name. */
#define NI_NOFQDN 4 /* Only return nodename portion. */
#define NI_NAMEREQD 8 /* Don't return numeric addresses. */
#define NI_DGRAM 16 /* Look up UDP service rather than TCP. */
#define NI_IDN 32 /* Convert name from IDN format. */
#define NI_IDN_ALLOW_UNASSIGNED 64 /* Don't reject unassigned Unicode code points. */
#define NI_IDN_USE_STD3_ASCII_RULES 128 /* Validate strings according to STD3 rules. */

/* Possible values for `ai_flags' field in `addrinfo' structure. */
#define AI_PASSIVE 0x0001 /* Socket address is intended for `bind'. */
#define AI_CANONNAME 0x0002 /* Request for canonical name. */
#define AI_NUMERICHOST 0x0004 /* Don't use name resolution. */
#define AI_V4MAPPED 0x0008 /* IPv4 mapped addresses are acceptable. */
#define AI_ALL 0x0010 /* Return IPv4 mapped and IPv6 addresses. */
#define AI_ADDRCONFIG 0x0020 /* Use configuration of this host to choose returned address type.. */

#define AI_IDN 0x0040 /* IDN encode input (assuming it is encoded
in the current locale's character set)
before looking it up. */
#define AI_CANONIDN 0x0080 /* Translate canonical name from IDN format. */
#define AI_IDN_ALLOW_UNASSIGNED 0x0100 /* Don't reject unassigned Unicode code points. */
#define AI_IDN_USE_STD3_ASCII_RULES 0x0200 /* Validate strings according to STD3 rules. */

extern int h_errno;

struct hostent
{
char *h_name;
char **h_aliases;
int h_addrtype;
int h_length;
char **h_addr_list;
#define h_addr h_addr_list[0]
};

struct servent
{
char *s_name; /* Official service name. */
char **s_aliases; /* Alias list. */
int s_port; /* Port number. */
char *s_proto; /* Protocol to use. */
};

/* Structure to contain information about address of a service provider. */
struct addrinfo
{
int ai_flags; /* Input flags. */
int ai_family; /* Protocol family for socket. */
int ai_socktype; /* Socket type. */
int ai_protocol; /* Protocol for socket. */
socklen_t ai_addrlen; /* Length of socket address. */
struct sockaddr *ai_addr; /* Socket address for socket. */
char *ai_canonname; /* Canonical name for service location. */
struct addrinfo *ai_next; /* Pointer to next in list. */
};

struct hostent * gethostbyaddr(const char *addr,socklen_t len,int type);
struct hostent * gethostbyname(const char *name);
struct servent * getservbyport(int port, const char *proto);

#ifdef __cplusplus
}
#endif

#endif
Loading