X-Git-Url: http://sjero.net/git/?p=wget;a=blobdiff_plain;f=src%2Fhost.h;h=4d89ecf5a37f0a2350cd7c8633c8e41f524b45d3;hp=95566c583737cb0854af4a0e245025f99a2f15a0;hb=cb4003403509b46d2f6ef6936baf969906ff1430;hpb=222e9465b7cef12a75e5ce0d6cc7df60c934566f diff --git a/src/host.h b/src/host.h index 95566c58..4d89ecf5 100644 --- a/src/host.h +++ b/src/host.h @@ -1,5 +1,5 @@ /* Declarations for host.c - Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. + Copyright (C) 1995, 1996, 1997, 2001 Free Software Foundation, Inc. This file is part of GNU Wget. @@ -20,18 +20,71 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef HOST_H #define HOST_H +#include + +#undef INET6 + struct url; +struct address_list; + +/* wget_sockaddr is used instead of sockaddr where an IPV6 address + must fit. */ + +typedef union { + struct sockaddr sa; /* Generic but too small */ + struct sockaddr_in sin; /* IPv4 socket address */ +#ifdef INET6 + struct sockaddr_in6 sin6; /* IPv6 socket address */ +#endif +} wget_sockaddr; + +typedef struct { + unsigned char bytes[4]; +} ip4_address; + +/* If compiled with IPv6 support, we internally represent all IP + addresses as IPv6 addresses. IPv4 addresses are dynamically mapped + to IPv6, i.e. stored in the format ::ffff:. */ + +#ifdef INET6 +# define MAX_IP_ADDRESS_SIZE 16 +#else +# define MAX_IP_ADDRESS_SIZE 4 +#endif + +typedef struct { + unsigned char bytes[MAX_IP_ADDRESS_SIZE]; +} ip_address; /* Function declarations */ +struct address_list *lookup_host PARAMS ((const char *, int)); +char *herrmsg PARAMS ((int)); -struct hostent *ngethostbyname PARAMS ((const char *)); -int store_hostaddress PARAMS ((unsigned char *, const char *)); +void address_list_get_bounds PARAMS ((struct address_list *, int *, int *)); +void address_list_copy_one PARAMS ((struct address_list *, int, + ip_address *)); +int address_list_match_all PARAMS ((struct address_list *, + struct address_list *)); +void address_list_set_faulty PARAMS ((struct address_list *, int)); +void address_list_release PARAMS ((struct address_list *)); -void host_cleanup PARAMS ((void)); +char *pretty_print_address PARAMS ((ip_address *)); int accept_domain PARAMS ((struct url *)); int sufmatch PARAMS ((const char **, const char *)); -char *herrmsg PARAMS ((int)); +void host_cleanup PARAMS ((void)); + +void wget_sockaddr_set_address PARAMS((wget_sockaddr *, int, + unsigned short, ip_address *)); +void wget_sockaddr_set_port PARAMS((wget_sockaddr *, unsigned short)); +void *wget_sockaddr_get_addr PARAMS((wget_sockaddr *)); +unsigned short wget_sockaddr_get_port PARAMS((const wget_sockaddr *)); +int sockaddr_len PARAMS(()); +void map_ipv4_to_ip PARAMS((ip4_address *, ip_address *)); +int map_ip_to_ipv4 PARAMS((ip_address *, ip4_address *)); + +extern int ip_default_family; /* defined in host.c */ + #endif /* HOST_H */