📄 net.h
字号:
/* * Copyright (C) 2004 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2000, 2001 Internet Software Consortium. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. *//* $Id: net.h,v 1.2.2.2.8.3 2004/03/08 09:05:13 marka Exp $ */#ifndef LWRES_NET_H#define LWRES_NET_H 1/***** ***** Module Info *****//* * Basic Networking Types * * This module is responsible for defining the following basic networking * types: * * struct in_addr * struct in6_addr * struct sockaddr * struct sockaddr_in * struct sockaddr_in6 * * It ensures that the AF_ and PF_ macros are defined. * * It declares ntoh[sl]() and hton[sl](). * * It declares lwres_net_aton(), lwres_net_ntop(), and lwres_net_pton(). * * It ensures that INADDR_LOOPBACK, INADDR_ANY and IN6ADDR_ANY_INIT * are defined. *//*** *** Imports. ***//* * Because of some sort of problem in the MS header files, this cannot * be simple "#include <winsock2.h>", because winsock2.h tries to include * windows.h, which then generates an error out of mswsock.h. _You_ * figure it out. */#ifndef _WINSOCKAPI_#define _WINSOCKAPI_ /* Prevent inclusion of winsock.h in windows.h */#endif#include <winsock2.h>#include <sys/types.h>#include <lwres/ipv6.h>#include <lwres/platform.h> /* Required for LWRES_PLATFORM_*. */#include <lwres/lang.h>#ifndef INADDR_LOOPBACK#define INADDR_LOOPBACK 0x7f000001UL#endif/* * Fix the FD_SET and FD_CLR Macros to properly cast */#undef FD_CLR#define FD_CLR(fd, set) do { \ u_int __i; \ for (__i = 0; __i < ((fd_set FAR *)(set))->fd_count; __i++) { \ if (((fd_set FAR *)(set))->fd_array[__i] == (SOCKET) fd) { \ while (__i < ((fd_set FAR *)(set))->fd_count-1) { \ ((fd_set FAR *)(set))->fd_array[__i] = \ ((fd_set FAR *)(set))->fd_array[__i+1]; \ __i++; \ } \ ((fd_set FAR *)(set))->fd_count--; \ break; \ } \ } \} while (0)#undef FD_SET#define FD_SET(fd, set) do { \ u_int __i; \ for (__i = 0; __i < ((fd_set FAR *)(set))->fd_count; __i++) { \ if (((fd_set FAR *)(set))->fd_array[__i] == (SOCKET)(fd)) { \ break; \ } \ } \ if (__i == ((fd_set FAR *)(set))->fd_count) { \ if (((fd_set FAR *)(set))->fd_count < FD_SETSIZE) { \ ((fd_set FAR *)(set))->fd_array[__i] = (SOCKET)(fd); \ ((fd_set FAR *)(set))->fd_count++; \ } \ } \} while (0)/* * Windows Sockets errors redefined as regular Berkeley error constants. * These are usually commented out in Windows NT to avoid conflicts with errno.h. * Use the WSA constants instead. */#define EWOULDBLOCK WSAEWOULDBLOCK#define EINPROGRESS WSAEINPROGRESS#define EALREADY WSAEALREADY#define ENOTSOCK WSAENOTSOCK#define EDESTADDRREQ WSAEDESTADDRREQ#define EMSGSIZE WSAEMSGSIZE#define EPROTOTYPE WSAEPROTOTYPE#define ENOPROTOOPT WSAENOPROTOOPT#define EPROTONOSUPPORT WSAEPROTONOSUPPORT#define ESOCKTNOSUPPORT WSAESOCKTNOSUPPORT#define EOPNOTSUPP WSAEOPNOTSUPP#define EPFNOSUPPORT WSAEPFNOSUPPORT#define EAFNOSUPPORT WSAEAFNOSUPPORT#define EADDRINUSE WSAEADDRINUSE#define EADDRNOTAVAIL WSAEADDRNOTAVAIL#define ENETDOWN WSAENETDOWN#define ENETUNREACH WSAENETUNREACH#define ENETRESET WSAENETRESET#define ECONNABORTED WSAECONNABORTED#define ECONNRESET WSAECONNRESET#define ENOBUFS WSAENOBUFS#define EISCONN WSAEISCONN#define ENOTCONN WSAENOTCONN#define ESHUTDOWN WSAESHUTDOWN#define ETOOMANYREFS WSAETOOMANYREFS#define ETIMEDOUT WSAETIMEDOUT#define ECONNREFUSED WSAECONNREFUSED#define ELOOP WSAELOOP#define EHOSTDOWN WSAEHOSTDOWN#define EHOSTUNREACH WSAEHOSTUNREACH#define EPROCLIM WSAEPROCLIM#define EUSERS WSAEUSERS#define EDQUOT WSAEDQUOT#define ESTALE WSAESTALE#define EREMOTE WSAEREMOTELWRES_LANG_BEGINDECLSconst char *lwres_net_ntop(int af, const void *src, char *dst, size_t size);intlwres_net_pton(int af, const char *src, void *dst);intlwres_net_aton(const char *cp, struct in_addr *addr);LWRES_LANG_ENDDECLS#endif /* LWRES_NET_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -