oRTP 0.16.5
|
00001 /* 00002 The oRTP library is an RTP (Realtime Transport Protocol - rfc3550) stack. 00003 Copyright (C) 2001 Simon MORLAT simon.morlat@linphone.org 00004 00005 This library is free software; you can redistribute it and/or 00006 modify it under the terms of the GNU Lesser General Public 00007 License as published by the Free Software Foundation; either 00008 version 2.1 of the License, or (at your option) any later version. 00009 00010 This library is distributed in the hope that it will be useful, 00011 but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00013 Lesser General Public License for more details. 00014 00015 You should have received a copy of the GNU Lesser General Public 00016 License along with this library; if not, write to the Free Software 00017 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00018 */ 00019 00020 /* ==================================================================== 00021 * The Vovida Software License, Version 1.0 * * Copyright (c) 2000 Vovida Networks, Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The names "VOCAL", "Vovida Open Communication Application Library", * and "Vovida Open Communication Application Library (VOCAL)" must * not be used to endorse or promote products derived from this * software without prior written permission. For written * permission, please contact vocal@vovida.org. * * 4. Products derived from this software may not be called "VOCAL", nor * may "VOCAL" appear in their name, without prior written * permission of Vovida Networks, Inc. * * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND * NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL VOVIDA * NETWORKS, INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT DAMAGES * IN EXCESS OF $1,000, NOR FOR ANY INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. * * ==================================================================== * * This software consists of voluntary contributions made by Vovida * Networks, Inc. and many individuals on behalf of Vovida Networks, * Inc. For more information on Vovida Networks, Inc., please see * <http://www.vovida.org/>. 00022 * 00023 */ 00024 00025 #ifndef __STUN_UDP_H__ 00026 #define __STUN_UDP_H__ 00027 00028 #ifndef __cplusplus 00029 //#define bool int 00030 //#define false 0 00031 //#define true 1 00032 #endif 00033 00034 #ifdef __MACH__ 00035 #include <sys/socket.h> 00036 #ifndef _SOCKLEN_T 00037 typedef int socklen_t; 00038 #endif 00039 #endif 00040 00041 #include <ortp/port.h> 00042 00043 #if !defined(_WIN32_WCE) 00044 #include <errno.h> 00045 #endif 00046 00047 #if defined(WIN32) || defined(_WIN32_WCE) 00048 #define snprintf _snprintf 00049 00050 #include <winsock2.h> 00051 /* #include <io.h> */ 00052 00053 typedef int socklen_t; 00054 typedef SOCKET Socket; 00055 00056 #define EWOULDBLOCK WSAEWOULDBLOCK 00057 #define EINPROGRESS WSAEINPROGRESS 00058 #define EALREADY WSAEALREADY 00059 #define ENOTSOCK WSAENOTSOCK 00060 #define EDESTADDRREQ WSAEDESTADDRREQ 00061 #define EMSGSIZE WSAEMSGSIZE 00062 #define EPROTOTYPE WSAEPROTOTYPE 00063 #define ENOPROTOOPT WSAENOPROTOOPT 00064 #define EPROTONOSUPPORT WSAEPROTONOSUPPORT 00065 #define ESOCKTNOSUPPORT WSAESOCKTNOSUPPORT 00066 #define EOPNOTSUPP WSAEOPNOTSUPP 00067 #define EPFNOSUPPORT WSAEPFNOSUPPORT 00068 #define EAFNOSUPPORT WSAEAFNOSUPPORT 00069 #define EADDRINUSE WSAEADDRINUSE 00070 #define EADDRNOTAVAIL WSAEADDRNOTAVAIL 00071 #define ENETDOWN WSAENETDOWN 00072 #define ENETUNREACH WSAENETUNREACH 00073 #define ENETRESET WSAENETRESET 00074 #define ECONNABORTED WSAECONNABORTED 00075 #define ECONNRESET WSAECONNRESET 00076 #define ENOBUFS WSAENOBUFS 00077 #define EISCONN WSAEISCONN 00078 #define ENOTCONN WSAENOTCONN 00079 #define ESHUTDOWN WSAESHUTDOWN 00080 #define ETOOMANYREFS WSAETOOMANYREFS 00081 #define ETIMEDOUT WSAETIMEDOUT 00082 #define ECONNREFUSED WSAECONNREFUSED 00083 #define ELOOP WSAELOOP 00084 #define EHOSTDOWN WSAEHOSTDOWN 00085 #define EHOSTUNREACH WSAEHOSTUNREACH 00086 #define EPROCLIM WSAEPROCLIM 00087 #define EUSERS WSAEUSERS 00088 #define EDQUOT WSAEDQUOT 00089 #define ESTALE WSAESTALE 00090 #define EREMOTE WSAEREMOTE 00091 00092 typedef LONGLONG Int64; 00093 00094 #else 00095 00096 typedef int Socket; 00097 #ifndef INVALID_SOCKET 00098 #define INVALID_SOCKET -1 00099 #endif 00100 #ifndef SOCKET_ERROR 00101 #define SOCKET_ERROR -1 00102 #endif 00103 00104 #define closesocket(fd) close(fd) 00105 00106 #define WSANOTINITIALISED EPROTONOSUPPORT 00107 00108 #endif 00109 00110 #ifdef __cplusplus 00111 extern "C"{ 00112 #endif 00113 00114 int getErrno(void); 00115 00116 /* Open a UDP socket to receive on the given port - if port is 0, pick a a 00117 port, if interfaceIp!=0 then use ONLY the interface specified instead of 00118 all of them */ 00119 Socket 00120 openPort( unsigned short port, unsigned int interfaceIp); 00121 00122 00123 /* recive a UDP message */ 00124 bool_t 00125 getMessage( Socket fd, char* buf, int* len, 00126 unsigned int* srcIp, unsigned short* srcPort); 00127 00128 00129 /* send a UDP message */ 00130 bool_t 00131 sendMessage( Socket fd, char* msg, int len, 00132 unsigned int dstIp, unsigned short dstPort); 00133 00134 00135 /* set up network - does nothing in unix but needed for windows */ 00136 void 00137 initNetwork(void); 00138 00139 #ifdef __cplusplus 00140 } 00141 #endif 00142 00143 #endif