1/*- 2 * Copyright (c) 1980, 1983, 1988, 1993 3 * The Regents of the University of California. All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 41 unchanged lines hidden (view full) --- 50 * SOFTWARE. 51 * - 52 * --Copyright-- 53 */ 54 55/* 56 * @(#)netdb.h 8.1 (Berkeley) 6/2/93 57 * From: Id: netdb.h,v 8.9 1996/11/19 08:39:29 vixie Exp $ |
58 * $FreeBSD: head/include/netdb.h 146244 2005-05-15 20:15:15Z ume $ |
59 */ 60 61#ifndef _NETDB_H_ 62#define _NETDB_H_ 63 64#include <sys/cdefs.h> 65#include <sys/_types.h> |
66#include <machine/_limits.h> 67#include <machine/endian.h> |
68 69#ifndef _SIZE_T_DECLARED 70typedef __size_t size_t; 71#define _SIZE_T_DECLARED 72#endif 73 74#ifndef _SOCKLEN_T_DECLARED 75typedef __socklen_t socklen_t; 76#define _SOCKLEN_T_DECLARED 77#endif 78 |
79#ifndef _UINT32_T_DECLARED 80typedef __uint32_t uint32_t; 81#define _UINT32_T_DECLARED 82#endif 83 |
84#ifndef _PATH_HEQUIV 85# define _PATH_HEQUIV "/etc/hosts.equiv" 86#endif 87#define _PATH_HOSTS "/etc/hosts" 88#define _PATH_NETWORKS "/etc/networks" 89#define _PATH_PROTOCOLS "/etc/protocols" 90#define _PATH_SERVICES "/etc/services" 91 --- 9 unchanged lines hidden (view full) --- 101 char **h_aliases; /* alias list */ 102 int h_addrtype; /* host address type */ 103 int h_length; /* length of address */ 104 char **h_addr_list; /* list of addresses from name server */ 105#define h_addr h_addr_list[0] /* address, for backward compatibility */ 106}; 107 108/* |
109 * Note: n_net used to be an unsigned long integer. 110 * In XNS5, and subsequently in POSIX-2001 it was changed to an 111 * uint32_t. 112 * To accomodate for this while preserving binary compatibility with 113 * the old interface, we prepend or append 32 bits of padding, 114 * depending on the (LP64) architecture's endianness. 115 * 116 * This should be deleted the next time the libc major number is 117 * incremented. |
118 */ 119struct netent { 120 char *n_name; /* official name of net */ 121 char **n_aliases; /* alias list */ 122 int n_addrtype; /* net address type */ |
123#if __LONG_BIT == 64 && _BYTE_ORDER == _BIG_ENDIAN 124 uint32_t __n_pad0; /* ABI compatibility */ 125#endif 126 uint32_t n_net; /* network # */ 127#if __LONG_BIT == 64 && _BYTE_ORDER == _LITTLE_ENDIAN 128 uint32_t __n_pad0; /* ABI compatibility */ 129#endif |
130}; 131 132struct servent { 133 char *s_name; /* official service name */ 134 char **s_aliases; /* alias list */ 135 int s_port; /* port # */ 136 char *s_proto; /* protocol to use */ 137}; 138 139struct protoent { 140 char *p_name; /* official protocol name */ 141 char **p_aliases; /* alias list */ 142 int p_proto; /* protocol # */ 143}; 144 |
145/* 146 * Note: ai_addrlen used to be a size_t, per RFC 2553. 147 * In XNS5.2, and subsequently in POSIX-2001 and RFC 3493 it was 148 * changed to a socklen_t. 149 * To accomodate for this while preserving binary compatibility with the 150 * old interface, we prepend or append 32 bits of padding, depending on 151 * the (LP64) architecture's endianness. 152 * 153 * This should be deleted the next time the libc major number is 154 * incremented. 155 */ |
156struct addrinfo { 157 int ai_flags; /* AI_PASSIVE, AI_CANONNAME, AI_NUMERICHOST */ 158 int ai_family; /* PF_xxx */ 159 int ai_socktype; /* SOCK_xxx */ 160 int ai_protocol; /* 0 or IPPROTO_xxx for IPv4 and IPv6 */ |
161#if __LONG_BIT == 64 && _BYTE_ORDER == _BIG_ENDIAN 162 uint32_t __ai_pad0; /* ABI compatibility */ 163#endif 164 socklen_t ai_addrlen; /* length of ai_addr */ 165#if __LONG_BIT == 64 && _BYTE_ORDER == _LITTLE_ENDIAN 166 uint32_t __ai_pad0; /* ABI compatibility */ 167#endif |
168 char *ai_canonname; /* canonical name for hostname */ 169 struct sockaddr *ai_addr; /* binary address */ 170 struct addrinfo *ai_next; /* next structure in linked list */ 171}; 172 173/* 174 * Error return codes from gethostbyname() and gethostbyaddr() 175 * (left in h_errno). --- 81 unchanged lines hidden (view full) --- 257void endservent(void); 258void freehostent(struct hostent *); 259struct hostent *gethostbyaddr(const char *, int, int); 260struct hostent *gethostbyname(const char *); 261struct hostent *gethostbyname2(const char *, int); 262struct hostent *gethostent(void); 263struct hostent *getipnodebyaddr(const void *, size_t, int, int *); 264struct hostent *getipnodebyname(const char *, int, int, int *); |
265#if __LONG_BIT == 64 266struct netent *getnetbyaddr(unsigned long, int); /* ABI compatibility */ 267#else 268struct netent *getnetbyaddr(uint32_t, int); 269#endif |
270struct netent *getnetbyname(const char *); 271struct netent *getnetent(void); 272int getnetgrent(char **, char **, char **); 273struct protoent *getprotobyname(const char *); 274struct protoent *getprotobynumber(int); 275struct protoent *getprotoent(void); 276struct servent *getservbyname(const char *, const char *); 277struct servent *getservbyport(int, const char *); --- 26 unchanged lines hidden --- |