1/* Licensed to the Apache Software Foundation (ASF) under one or more 2 * contributor license agreements. See the NOTICE file distributed with 3 * this work for additional information regarding copyright ownership. 4 * The ASF licenses this file to You under the Apache License, Version 2.0 5 * (the "License"); you may not use this file except in compliance with 6 * the License. You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17#ifndef NETWORK_IO_H 18#define NETWORK_IO_H 19 20#include "apr_network_io.h" 21#include "apr_general.h" 22#include "apr_poll.h" 23 24typedef struct sock_userdata_t sock_userdata_t; 25struct sock_userdata_t { 26 sock_userdata_t *next; 27 const char *key; 28 void *data; 29}; 30 31struct apr_socket_t { 32 apr_pool_t *pool; 33 SOCKET socketdes; 34 int type; /* SOCK_STREAM, SOCK_DGRAM */ 35 int protocol; 36 apr_sockaddr_t *local_addr; 37 apr_sockaddr_t *remote_addr; 38 int timeout_ms; /* MUST MATCH if timeout > 0 */ 39 apr_interval_time_t timeout; 40 apr_int32_t disconnected; 41 int local_port_unknown; 42 int local_interface_unknown; 43 int remote_addr_unknown; 44 apr_int32_t options; 45 apr_int32_t inherit; 46#if APR_HAS_SENDFILE 47 /* As of 07.20.04, the overlapped structure is only used by 48 * apr_socket_sendfile and that's where it will be allocated 49 * and initialized. 50 */ 51 OVERLAPPED *overlapped; 52#endif 53 sock_userdata_t *userdata; 54 55 /* if there is a timeout set, then this pollset is used */ 56 apr_pollset_t *pollset; 57}; 58 59#ifdef _WIN32_WCE 60#ifndef WSABUF 61typedef struct _WSABUF { 62 u_long len; /* the length of the buffer */ 63 char FAR * buf; /* the pointer to the buffer */ 64} WSABUF, FAR * LPWSABUF; 65#endif 66#else 67#ifdef _MSC_VER 68#define HAVE_STRUCT_IPMREQ 69#endif 70#endif 71 72apr_status_t status_from_res_error(int); 73 74const char *apr_inet_ntop(int af, const void *src, char *dst, apr_size_t size); 75int apr_inet_pton(int af, const char *src, void *dst); 76void apr_sockaddr_vars_set(apr_sockaddr_t *, int, apr_port_t); 77 78#define apr_is_option_set(skt, option) \ 79 (((skt)->options & (option)) == (option)) 80 81#define apr_set_option(skt, option, on) \ 82 do { \ 83 if (on) \ 84 (skt)->options |= (option); \ 85 else \ 86 (skt)->options &= ~(option); \ 87 } while (0) 88 89#endif /* ! NETWORK_IO_H */ 90 91