source: trunk/libtransmission/net.h @ 2614

Last change on this file since 2614 was 2614, checked in by joshe, 16 years ago

Use BEOS to test for beos instead of relying on the build to set SYS_BEOS.
Add missing headers and other miscellaneous fixes for beos.

  • Property svn:keywords set to Date Rev Author Id
File size: 3.7 KB
Line 
1/******************************************************************************
2 * $Id: net.h 2614 2007-08-04 01:17:39Z joshe $
3 *
4 * Copyright (c) 2005-2006 Transmission authors and contributors
5 *
6 * Permission is hereby granted, free of charge, to any person obtaining a
7 * copy of this software and associated documentation files (the "Software"),
8 * to deal in the Software without restriction, including without limitation
9 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
10 * and/or sell copies of the Software, and to permit persons to whom the
11 * Software is furnished to do so, subject to the following conditions:
12 *
13 * The above copyright notice and this permission notice shall be included in
14 * all copies or substantial portions of the Software.
15 *
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22 * DEALINGS IN THE SOFTWARE.
23 *****************************************************************************/
24
25#ifndef _TR_NET_H_
26#define _TR_NET_H_
27
28#ifdef WIN32
29    #include <stdint.h>
30    #include <winsock2.h>
31    typedef int socklen_t;
32    typedef uint16_t tr_port_t;
33#elif defined(__BEOS__)
34    #include <sys/socket.h>
35    #include <netinet/in.h>
36    typedef unsigned short tr_port_t;
37    typedef int socklen_t;
38#else
39    #include <sys/socket.h>
40    #include <netinet/in.h>
41    #include <arpa/inet.h>
42    typedef in_port_t tr_port_t;
43#endif
44
45#ifdef WIN32
46    #define ECONNREFUSED WSAECONNREFUSED
47    #define ECONNRESET   WSAECONNRESET
48    #define EHOSTUNREACH WSAEHOSTUNREACH
49    #define EINPROGRESS  WSAEINPROGRESS
50    #define ENOTCONN     WSAENOTCONN
51    #define EWOULDBLOCK  WSAEWOULDBLOCK
52    #define sockerrno WSAGetLastError( )
53#else
54    #include <errno.h>
55    #define sockerrno errno
56#endif
57
58#ifndef INADDR_NONE
59#define INADDR_NONE 0xffffffff
60#endif
61
62struct in_addr;
63struct sockaddr_in;
64
65/***********************************************************************
66 * DNS resolution
67 **********************************************************************/
68int tr_netResolve( const char *, struct in_addr * );
69
70typedef struct tr_resolve_s tr_resolve_t;
71void           tr_netResolveThreadInit( void );
72void           tr_netResolveThreadClose( void );
73tr_resolve_t * tr_netResolveInit( const char * address );
74tr_tristate_t  tr_netResolvePulse( tr_resolve_t *, struct in_addr * );
75void           tr_netResolveClose( tr_resolve_t * );
76
77
78/***********************************************************************
79 * TCP and UDP sockets
80 **********************************************************************/
81int  tr_netOpenTCP  ( const struct in_addr * addr, tr_port_t port, int priority );
82int  tr_netOpenUDP  ( const struct in_addr * addr, tr_port_t port, int priority );
83int  tr_netMcastOpen( int port, const struct in_addr * addr );
84int  tr_netBindTCP  ( int port );
85int  tr_netBindUDP  ( int port );
86int  tr_netAccept   ( int s, struct in_addr *, tr_port_t * );
87void tr_netClose    ( int s );
88
89#define TR_NET_BLOCK 0x80000000
90#define TR_NET_CLOSE 0x40000000
91int  tr_netSend    ( int s, const void * buf, int size );
92#define tr_netRecv( s, buf, size ) tr_netRecvFrom( (s), (buf), (size), NULL )
93int  tr_netRecvFrom( int s, uint8_t * buf, int size, struct sockaddr_in * );
94
95void tr_netNtop( const struct in_addr * addr, char * buf, int len );
96
97void tr_netInit ( void );
98
99
100#define tr_addrcmp( aa, bb )    memcmp( ( void * )(aa), ( void * )(bb), 4)
101
102#endif /* _TR_NET_H_ */
Note: See TracBrowser for help on using the repository browser.