netsupp.h
来自「konqueror3 embedded版本, KDE环境下的当家浏览器的嵌入式版」· C头文件 代码 · 共 302 行
H
302 行
/* * This file is part of the KDE libraries * Copyright (C) 2000-2003 Thiago Macieira <thiago.macieira@kdemail.net>> * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public License * along with this library; see the file COPYING.LIB. If not, write to * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. **/#ifndef _NETSUPP_H_#define _NETSUPP_H_#include "kdelibs_export.h"#ifdef HAVE_CONFIG_H#include <config.h>#endif#include <sys/socket.h>#include <netdb.h>//#include "ksockaddr.h"#ifdef __CYGWIN__ typedef unsigned ksocklen_t;#endif /* * Seems some systems don't know about AF_LOCAL */#ifndef AF_LOCAL#define AF_LOCAL AF_UNIX#define PF_LOCAL PF_UNIX#endif#ifdef CLOBBER_IN6#define kde_in6_addr in6_addr#define kde_sockaddr_in6 sockaddr_in6#endif/*** IPv6 structures that might be missing from some implementations ***//** @internal * An IPv6 address. * This is taken from RFC 2553 */struct kde_in6_addr{ unsigned char __u6_addr[16];};/** @internal * An IPv6 socket address * This is taken from RFC 2553. */struct kde_sockaddr_in6{#ifdef HAVE_STRUCT_SOCKADDR_SA_LEN Q_UINT8 sin6_len; Q_UINT8 sin6_family;#else //HAVE_STRUCT_SOCKADDR_SA_LEN Q_UINT16 sin6_family;#endif unsigned short sin6_port; /* RFC says in_port_t */ Q_UINT32 sin6_flowinfo; struct kde_in6_addr sin6_addr; Q_UINT32 sin6_scope_id;};/* IPv6 test macros that could be missing from some implementations */#define KDE_IN6_IS_ADDR_UNSPECIFIED(a) \ (((Q_UINT32 *) (a))[0] == 0 && ((Q_UINT32 *) (a))[1] == 0 && \ ((Q_UINT32 *) (a))[2] == 0 && ((Q_UINT32 *) (a))[3] == 0)#define KDE_IN6_IS_ADDR_LOOPBACK(a) \ (((Q_UINT32 *) (a))[0] == 0 && ((Q_UINT32 *) (a))[1] == 0 && \ ((Q_UINT32 *) (a))[2] == 0 && ((Q_UINT32 *) (a))[3] == htonl (1))#define KDE_IN6_IS_ADDR_MULTICAST(a) (((u_int8_t *) (a))[0] == 0xff)#define KDE_IN6_IS_ADDR_LINKLOCAL(a) \ ((((Q_UINT32 *) (a))[0] & htonl (0xffc00000)) == htonl (0xfe800000))#define KDE_IN6_IS_ADDR_SITELOCAL(a) \ ((((Q_UINT32 *) (a))[0] & htonl (0xffc00000)) == htonl (0xfec00000))#define KDE_IN6_IS_ADDR_V4MAPPED(a) \ ((((Q_UINT32 *) (a))[0] == 0) && (((Q_UINT32 *) (a))[1] == 0) && \ (((Q_UINT32 *) (a))[2] == htonl (0xffff)))#define KDE_IN6_IS_ADDR_V4COMPAT(a) \ ((((Q_UINT32 *) (a))[0] == 0) && (((Q_UINT32 *) (a))[1] == 0) && \ (((Q_UINT32 *) (a))[2] == 0) && (ntohl (((Q_UINT32 *) (a))[3]) > 1))#define KDE_IN6_ARE_ADDR_EQUAL(a,b) \ ((((Q_UINT32 *) (a))[0] == ((Q_UINT32 *) (b))[0]) && \ (((Q_UINT32 *) (a))[1] == ((Q_UINT32 *) (b))[1]) && \ (((Q_UINT32 *) (a))[2] == ((Q_UINT32 *) (b))[2]) && \ (((Q_UINT32 *) (a))[3] == ((Q_UINT32 *) (b))[3]))#define KDE_IN6_IS_ADDR_MC_NODELOCAL(a) \ (KDE_IN6_IS_ADDR_MULTICAST(a) && ((((Q_UINT8 *) (a))[1] & 0xf) == 0x1))#define KDE_IN6_IS_ADDR_MC_LINKLOCAL(a) \ (KDE_IN6_IS_ADDR_MULTICAST(a) && ((((Q_UINT8 *) (a))[1] & 0xf) == 0x2))#define KDE_IN6_IS_ADDR_MC_SITELOCAL(a) \ (KDE_IN6_IS_ADDR_MULTICAST(a) && ((((Q_UINT8 *) (a))[1] & 0xf) == 0x5))#define KDE_IN6_IS_ADDR_MC_ORGLOCAL(a) \ (KDE_IN6_IS_ADDR_MULTICAST(a) && ((((Q_UINT8 *) (a))[1] & 0xf) == 0x8))#define KDE_IN6_IS_ADDR_MC_GLOBAL(a) \ (KDE_IN6_IS_ADDR_MULTICAST(a) && ((((Q_UINT8 *) (a))[1] & 0xf) == 0xe))#ifdef NEED_IN6_TESTS# define IN6_IS_ADDR_UNSPECIFIED KDE_IN6_IS_ADDR_UNSPECIFIED# define IN6_IS_ADDR_LOOPBACK KDE_IN6_IS_ADDR_LOOPBACK# define IN6_IS_ADDR_MULTICAST KDE_IN6_IS_ADDR_MULTICAST# define IN6_IS_ADDR_LINKLOCAL KDE_IN6_IS_ADDR_LINKLOCAL# define IN6_IS_ADDR_SITELOCAL KDE_IN6_IS_ADDR_SITELOCAL# define IN6_IS_ADDR_V4MAPPED KDE_IN6_IS_ADDR_V4MAPPED# define IN6_IS_ADDR_V4COMPAT KDE_IN6_IS_ADDR_V4COMPAT# define IN6_ARE_ADDR_EQUAL KDE_IN6_ARE_ADDR_EQUAL# define IN6_IS_ADDR_MC_NODELOCAL KDE_IN6_IS_ADDR_MC_NODELOCAL# define IN6_IS_ADDR_MC_LINKLOCAL KDE_IN6_IS_ADDR_MC_LINKLOCAL# define IN6_IS_ADDR_MC_SITELOCAL KDE_IN6_IS_ADDR_MC_SITELOCAL# define IN6_IS_ADDR_MC_ORGLOCAL KDE_IN6_IS_ADDR_MC_ORGLOCAL# define IN6_IS_ADDR_MC_GLOBAL KDE_IN6_IS_ADDR_MC_GLOBAL#endif/* Special internal structure */#define KAI_SYSTEM 0 /* data is all-system */#define KAI_LOCALUNIX 1 /* data contains a Unix addrinfo allocated by us */#define KAI_QDNS 2 /* data contains data derived from QDns */struct addrinfo; /* forward declaration; this could be needed *//** * @internal * Special purpose structure, to return data from kde_getaddrinfo to the * library functions. This defines an extra field to let us know how to * process this better. * * Currently, we use it to determine how to deallocate this stuff */struct kde_addrinfo{ struct addrinfo *data; int origin;};extern KDECORE_EXPORT int kde_getaddrinfo(const char *name, const char *service, const struct addrinfo* hint, struct kde_addrinfo** result);extern KDECORE_EXPORT void kde_freeaddrinfo(struct kde_addrinfo *p);#if !defined(HAVE_GETADDRINFO) || defined(HAVE_BROKEN_GETADDRINFO)# ifndef HAVE_STRUCT_ADDRINFO/** * @internal */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. */ int 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. */};# endif# ifdef AI_PASSIVE# undef AI_PASSIVE# undef AI_CANONNAME# undef AI_NUMERICHOST# endif/* Possible values for `ai_flags' field in `addrinfo' structure. */# define AI_PASSIVE 1 /* Socket address is intended for `bind'. */# define AI_CANONNAME 2 /* Request for canonical name. */# define AI_NUMERICHOST 4 /* Don't use name resolution. */# ifdef EAI_ADDRFAMILY# undef EAI_ADDRFAMILY# undef EAI_AGAIN# undef EAI_BADFLAGS# undef EAI_FAIL# undef EAI_FAMILY# undef EAI_MEMORY# undef EAI_NODATA# undef EAI_NONAME# undef EAI_SERVICE# undef EAI_SOCKTYPE# undef EAI_SYSTEM# endif/* Error values for `getaddrinfo' function. */# define EAI_ADDRFAMILY 1 /* Address family for NAME not supported. */# define EAI_AGAIN 2 /* Temporary failure in name resolution. */# define EAI_BADFLAGS 3 /* Invalid value for `ai_flags' field. */# define EAI_FAIL 4 /* Non-recoverable failure in name res. */# define EAI_FAMILY 5 /* `ai_family' not supported. */# define EAI_MEMORY 6 /* Memory allocation failure. */# define EAI_NODATA 7 /* No address associated with NAME. */# define EAI_NONAME 8 /* NAME or SERVICE is unknown. */# define EAI_SERVICE 9 /* SERVICE not supported for `ai_socktype'. */# define EAI_SOCKTYPE 10 /* `ai_socktype' not supported. */# define EAI_SYSTEM 11 /* System error returned in `errno'. *//* * These are specified in the RFC * We won't undefine them. If someone defined them to a different value * the preprocessor will generate an error */# define NI_MAXHOST 1025# define NI_MAXSERV 32# ifdef NI_NUMERICHOST# undef NI_NUMERICHOST# undef NI_NUMERICSERV# undef NI_NOFQDN# undef NI_NAMEREQD# undef NI_DGRAM# endif# 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. */# ifdef getaddrinfo# undef getaddrinfo# endifnamespace KDE{ /** \internal */ extern KDECORE_EXPORT int getaddrinfo(const char *name, const char *service, const struct addrinfo* hint, struct addrinfo** result); /** \internal */ extern KDECORE_EXPORT void freeaddrinfo(struct addrinfo* ai); /** \internal */ extern KDECORE_EXPORT char *gai_strerror(int errorcode); /** \internal */ extern KDECORE_EXPORT int getnameinfo(const struct sockaddr *sa, unsigned int salen, char *host, size_t hostlen, char *serv, size_t servlen, int flags);}# define getaddrinfo KDE::getaddrinfo# define freeaddrinfo KDE::freeaddrinfo# define gai_strerror KDE::gai_strerror# define getnameinfo KDE::getnameinfo#endif#ifndef HAVE_INET_PTONnamespace KDE{ /** \internal */ extern KDECORE_EXPORT int inet_pton(int af, const char *cp, void* buf);}# define inet_pton KDE::inet_pton#endif#ifndef HAVE_INET_NTOPnamespace KDE{ /** \internal */ extern KDECORE_EXPORT const char* inet_ntop(int af, const void *cp, char *buf, size_t len);}# define inet_ntop KDE::inet_ntop#endif#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?