1*8b26181fSAndroid Build Coastguard Worker /* -*- Mode: c; tab-width: 8; indent-tabs-mode: 1; c-basic-offset: 8; -*- */ 2*8b26181fSAndroid Build Coastguard Worker /* 3*8b26181fSAndroid Build Coastguard Worker * Copyright (c) 1993, 1994, 1995, 1996, 1997 4*8b26181fSAndroid Build Coastguard Worker * The Regents of the University of California. All rights reserved. 5*8b26181fSAndroid Build Coastguard Worker * 6*8b26181fSAndroid Build Coastguard Worker * Redistribution and use in source and binary forms, with or without 7*8b26181fSAndroid Build Coastguard Worker * modification, are permitted provided that the following conditions 8*8b26181fSAndroid Build Coastguard Worker * are met: 9*8b26181fSAndroid Build Coastguard Worker * 1. Redistributions of source code must retain the above copyright 10*8b26181fSAndroid Build Coastguard Worker * notice, this list of conditions and the following disclaimer. 11*8b26181fSAndroid Build Coastguard Worker * 2. Redistributions in binary form must reproduce the above copyright 12*8b26181fSAndroid Build Coastguard Worker * notice, this list of conditions and the following disclaimer in the 13*8b26181fSAndroid Build Coastguard Worker * documentation and/or other materials provided with the distribution. 14*8b26181fSAndroid Build Coastguard Worker * 3. All advertising materials mentioning features or use of this software 15*8b26181fSAndroid Build Coastguard Worker * must display the following acknowledgement: 16*8b26181fSAndroid Build Coastguard Worker * This product includes software developed by the Computer Systems 17*8b26181fSAndroid Build Coastguard Worker * Engineering Group at Lawrence Berkeley Laboratory. 18*8b26181fSAndroid Build Coastguard Worker * 4. Neither the name of the University nor of the Laboratory may be used 19*8b26181fSAndroid Build Coastguard Worker * to endorse or promote products derived from this software without 20*8b26181fSAndroid Build Coastguard Worker * specific prior written permission. 21*8b26181fSAndroid Build Coastguard Worker * 22*8b26181fSAndroid Build Coastguard Worker * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 23*8b26181fSAndroid Build Coastguard Worker * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 24*8b26181fSAndroid Build Coastguard Worker * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 25*8b26181fSAndroid Build Coastguard Worker * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 26*8b26181fSAndroid Build Coastguard Worker * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 27*8b26181fSAndroid Build Coastguard Worker * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 28*8b26181fSAndroid Build Coastguard Worker * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 29*8b26181fSAndroid Build Coastguard Worker * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30*8b26181fSAndroid Build Coastguard Worker * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 31*8b26181fSAndroid Build Coastguard Worker * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 32*8b26181fSAndroid Build Coastguard Worker * SUCH DAMAGE. 33*8b26181fSAndroid Build Coastguard Worker */ 34*8b26181fSAndroid Build Coastguard Worker 35*8b26181fSAndroid Build Coastguard Worker #ifndef lib_pcap_socket_h 36*8b26181fSAndroid Build Coastguard Worker #define lib_pcap_socket_h 37*8b26181fSAndroid Build Coastguard Worker 38*8b26181fSAndroid Build Coastguard Worker /* 39*8b26181fSAndroid Build Coastguard Worker * Some minor differences between sockets on various platforms. 40*8b26181fSAndroid Build Coastguard Worker * We include whatever sockets are needed for Internet-protocol 41*8b26181fSAndroid Build Coastguard Worker * socket access on UN*X and Windows. 42*8b26181fSAndroid Build Coastguard Worker */ 43*8b26181fSAndroid Build Coastguard Worker #ifdef _WIN32 44*8b26181fSAndroid Build Coastguard Worker /* Need windef.h for defines used in winsock2.h under MingW32 */ 45*8b26181fSAndroid Build Coastguard Worker #ifdef __MINGW32__ 46*8b26181fSAndroid Build Coastguard Worker #include <windef.h> 47*8b26181fSAndroid Build Coastguard Worker #endif 48*8b26181fSAndroid Build Coastguard Worker #include <winsock2.h> 49*8b26181fSAndroid Build Coastguard Worker #include <ws2tcpip.h> 50*8b26181fSAndroid Build Coastguard Worker 51*8b26181fSAndroid Build Coastguard Worker /* 52*8b26181fSAndroid Build Coastguard Worker * Winsock doesn't have this POSIX type; it's used for the 53*8b26181fSAndroid Build Coastguard Worker * tv_usec value of struct timeval. 54*8b26181fSAndroid Build Coastguard Worker */ 55*8b26181fSAndroid Build Coastguard Worker typedef long suseconds_t; 56*8b26181fSAndroid Build Coastguard Worker #else /* _WIN32 */ 57*8b26181fSAndroid Build Coastguard Worker #include <sys/types.h> 58*8b26181fSAndroid Build Coastguard Worker #include <sys/socket.h> 59*8b26181fSAndroid Build Coastguard Worker #include <netdb.h> /* for struct addrinfo/getaddrinfo() */ 60*8b26181fSAndroid Build Coastguard Worker #include <netinet/in.h> /* for sockaddr_in, in BSD at least */ 61*8b26181fSAndroid Build Coastguard Worker #include <arpa/inet.h> 62*8b26181fSAndroid Build Coastguard Worker 63*8b26181fSAndroid Build Coastguard Worker /*! 64*8b26181fSAndroid Build Coastguard Worker * \brief In Winsock, a socket handle is of type SOCKET; in UN*X, it's 65*8b26181fSAndroid Build Coastguard Worker * a file descriptor, and therefore a signed integer. 66*8b26181fSAndroid Build Coastguard Worker * We define SOCKET to be a signed integer on UN*X, so that it can 67*8b26181fSAndroid Build Coastguard Worker * be used on both platforms. 68*8b26181fSAndroid Build Coastguard Worker */ 69*8b26181fSAndroid Build Coastguard Worker #ifndef SOCKET 70*8b26181fSAndroid Build Coastguard Worker #define SOCKET int 71*8b26181fSAndroid Build Coastguard Worker #endif 72*8b26181fSAndroid Build Coastguard Worker 73*8b26181fSAndroid Build Coastguard Worker /*! 74*8b26181fSAndroid Build Coastguard Worker * \brief In Winsock, the error return if socket() fails is INVALID_SOCKET; 75*8b26181fSAndroid Build Coastguard Worker * in UN*X, it's -1. 76*8b26181fSAndroid Build Coastguard Worker * We define INVALID_SOCKET to be -1 on UN*X, so that it can be used on 77*8b26181fSAndroid Build Coastguard Worker * both platforms. 78*8b26181fSAndroid Build Coastguard Worker */ 79*8b26181fSAndroid Build Coastguard Worker #ifndef INVALID_SOCKET 80*8b26181fSAndroid Build Coastguard Worker #define INVALID_SOCKET -1 81*8b26181fSAndroid Build Coastguard Worker #endif 82*8b26181fSAndroid Build Coastguard Worker #endif /* _WIN32 */ 83*8b26181fSAndroid Build Coastguard Worker 84*8b26181fSAndroid Build Coastguard Worker #endif /* lib_pcap_socket_h */ 85