⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 apr_network_io.h

📁 apache的软件linux版本
💻 H
📖 第 1 页 / 共 3 页
字号:
/* Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements.  See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License.  You may obtain a copy of the License at * *     http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */#ifndef APR_NETWORK_IO_H#define APR_NETWORK_IO_H/** * @file apr_network_io.h * @brief APR Network library */#include "apr.h"#include "apr_pools.h"#include "apr_file_io.h"#include "apr_errno.h"#include "apr_inherit.h" #if APR_HAVE_NETINET_IN_H#include <netinet/in.h>#endif#ifdef __cplusplusextern "C" {#endif /* __cplusplus *//** * @defgroup apr_network_io Network Routines * @ingroup APR  * @{ */#ifndef APR_MAX_SECS_TO_LINGER/** Maximum seconds to linger */#define APR_MAX_SECS_TO_LINGER 30#endif#ifndef MAX_SECS_TO_LINGER/** @deprecated @see APR_MAX_SECS_TO_LINGER */#define MAX_SECS_TO_LINGER APR_MAX_SECS_TO_LINGER#endif#ifndef APRMAXHOSTLEN/** Maximum hostname length */#define APRMAXHOSTLEN 256#endif#ifndef APR_ANYADDR/** Default 'any' address */#define APR_ANYADDR "0.0.0.0"#endif/** * @defgroup apr_sockopt Socket option definitions * @{ */#define APR_SO_LINGER        1    /**< Linger */#define APR_SO_KEEPALIVE     2    /**< Keepalive */#define APR_SO_DEBUG         4    /**< Debug */#define APR_SO_NONBLOCK      8    /**< Non-blocking IO */#define APR_SO_REUSEADDR     16   /**< Reuse addresses */#define APR_SO_TIMEOUT       32   /**< Timeout */#define APR_SO_SNDBUF        64   /**< Send buffer */#define APR_SO_RCVBUF        128  /**< Receive buffer */#define APR_SO_DISCONNECTED  256  /**< Disconnected */#define APR_TCP_NODELAY      512  /**< For SCTP sockets, this is mapped                                   * to STCP_NODELAY internally.                                   */#define APR_TCP_NOPUSH       1024 /**< No push */#define APR_RESET_NODELAY    2048 /**< This flag is ONLY set internally                                   * when we set APR_TCP_NOPUSH with                                   * APR_TCP_NODELAY set to tell us that                                   * APR_TCP_NODELAY should be turned on                                   * again when NOPUSH is turned off                                   */#define APR_INCOMPLETE_READ 4096  /**< Set on non-blocking sockets				   * (timeout != 0) on which the				   * previous read() did not fill a buffer				   * completely.  the next apr_socket_recv()                                    * will first call select()/poll() rather than				   * going straight into read().  (Can also				   * be set by an application to force a				   * select()/poll() call before the next				   * read, in cases where the app expects				   * that an immediate read would fail.)				   */#define APR_INCOMPLETE_WRITE 8192 /**< like APR_INCOMPLETE_READ, but for write                                   * @see APR_INCOMPLETE_READ                                   */#define APR_IPV6_V6ONLY     16384 /**< Don't accept IPv4 connections on an                                   * IPv6 listening socket.                                   *//** @} *//** Define what type of socket shutdown should occur. */typedef enum {    APR_SHUTDOWN_READ,          /**< no longer allow read request */    APR_SHUTDOWN_WRITE,         /**< no longer allow write requests */    APR_SHUTDOWN_READWRITE      /**< no longer allow read or write requests */} apr_shutdown_how_e;#define APR_IPV4_ADDR_OK  0x01  /**< @see apr_sockaddr_info_get() */#define APR_IPV6_ADDR_OK  0x02  /**< @see apr_sockaddr_info_get() */#if (!APR_HAVE_IN_ADDR)/** * We need to make sure we always have an in_addr type, so APR will just * define it ourselves, if the platform doesn't provide it. */struct in_addr {    apr_uint32_t  s_addr; /**< storage to hold the IP# */};#endif/** * @def APR_INET * Not all platforms have these defined, so we'll define them here * The default values come from FreeBSD 4.1.1 */#define APR_INET     AF_INET/** @def APR_UNSPEC * Let the system decide which address family to use */#ifdef AF_UNSPEC#define APR_UNSPEC   AF_UNSPEC#else#define APR_UNSPEC   0#endif#if APR_HAVE_IPV6#define APR_INET6    AF_INET6#endif/** * @defgroup IP_Proto IP Protocol Definitions for use when creating sockets * @{ */#define APR_PROTO_TCP       6   /**< TCP  */#define APR_PROTO_UDP      17   /**< UDP  */#define APR_PROTO_SCTP    132   /**< SCTP *//** @} *//** * Enum to tell us if we're interested in remote or local socket */typedef enum {    APR_LOCAL,    APR_REMOTE} apr_interface_e;/** * The specific declaration of inet_addr's ... some platforms fall back * inet_network (this is not good, but necessary) */#if APR_HAVE_INET_ADDR#define apr_inet_addr    inet_addr#elif APR_HAVE_INET_NETWORK        /* only DGUX, as far as I know *//** * @warning * not generally safe... inet_network() and inet_addr() perform * different functions */#define apr_inet_addr    inet_network#endif/** A structure to represent sockets */typedef struct apr_socket_t     apr_socket_t;/** * A structure to encapsulate headers and trailers for apr_socket_sendfile */typedef struct apr_hdtr_t       apr_hdtr_t;/** A structure to represent in_addr */typedef struct in_addr          apr_in_addr_t;/** A structure to represent an IP subnet */typedef struct apr_ipsubnet_t apr_ipsubnet_t;/** @remark use apr_uint16_t just in case some system has a short that isn't 16 bits... */typedef apr_uint16_t            apr_port_t;/** @remark It's defined here as I think it should all be platform safe... * @see apr_sockaddr_t */typedef struct apr_sockaddr_t apr_sockaddr_t;/** * APRs socket address type, used to ensure protocol independence */struct apr_sockaddr_t {    /** The pool to use... */    apr_pool_t *pool;    /** The hostname */    char *hostname;    /** Either a string of the port number or the service name for the port */    char *servname;    /** The numeric port */    apr_port_t port;    /** The family */    apr_int32_t family;    /** Union of either IPv4 or IPv6 sockaddr. */    union {        /** IPv4 sockaddr structure */        struct sockaddr_in sin;#if APR_HAVE_IPV6        /** IPv6 sockaddr structure */        struct sockaddr_in6 sin6;#endif    } sa;    /** How big is the sockaddr we're using? */    apr_socklen_t salen;    /** How big is the ip address structure we're using? */    int ipaddr_len;    /** How big should the address buffer be?  16 for v4 or 46 for v6     *  used in inet_ntop... */    int addr_str_len;    /** This points to the IP address structure within the appropriate     *  sockaddr structure.  */    void *ipaddr_ptr;    /** If multiple addresses were found by apr_sockaddr_info_get(), this      *  points to a representation of the next address. */    apr_sockaddr_t *next;};#if APR_HAS_SENDFILE/**  * Support reusing the socket on platforms which support it (from disconnect, * specifically Win32. * @remark Optional flag passed into apr_socket_sendfile()  */#define APR_SENDFILE_DISCONNECT_SOCKET      1#endif/** A structure to encapsulate headers and trailers for apr_socket_sendfile */struct apr_hdtr_t {    /** An iovec to store the headers sent before the file. */    struct iovec* headers;    /** number of headers in the iovec */    int numheaders;    /** An iovec to store the trailers sent after the file. */    struct iovec* trailers;    /** number of trailers in the iovec */    int numtrailers;};/* function definitions *//** * Create a socket. * @remark With APR 1.0, this function follows the prototype  * of apr_socket_create_ex. * @param new_sock The new socket that has been set up. * @param family The address family of the socket (e.g., APR_INET). * @param type The type of the socket (e.g., SOCK_STREAM). * @param cont The pool to use */APR_DECLARE(apr_status_t) apr_socket_create(apr_socket_t **new_sock,                                             int family, int type,                                            apr_pool_t *cont);/** * Create a socket. * @remark With APR 1.0, this function is deprecated and apr_socket_create  * follows this prototype. * @param new_sock The new socket that has been set up. * @param family The address family of the socket (e.g., APR_INET). * @param type The type of the socket (e.g., SOCK_STREAM). * @param protocol The protocol of the socket (e.g., APR_PROTO_TCP). * @param cont The pool to use */APR_DECLARE(apr_status_t) apr_socket_create_ex(apr_socket_t **new_sock,                                                int family, int type,                                               int protocol,                                               apr_pool_t *cont);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -