# endif
# ifdef HAVE_ARPA_INET_H
# include <arpa/inet.h>
-# elif defined( SYS_BEOS )
-# include <net/netdb.h>
# endif
# include <netdb.h>
# define net_errno errno
#endif
+#if defined( __SYMBIAN32__ )
+# undef AF_INET6
+# undef IN6_IS_ADDR_MULTICAST
+# undef IPV6_V6ONLY
+# undef IPV6_MULTICAST_HOPS
+# undef IPV6_MULTICAST_IF
+# undef IPV6_TCLASS
+# undef IPV6_JOIN_GROUP
+#endif
+
+int vlc_socket (int, int, int, bool nonblock) VLC_USED;
+
+struct sockaddr;
+VLC_API int vlc_accept( int, struct sockaddr *, socklen_t *, bool ) VLC_USED;
+
# ifdef __cplusplus
extern "C" {
# endif
/* Portable networking layer communication */
int net_Socket (vlc_object_t *obj, int family, int socktype, int proto);
-int net_SetupSocket (int fd);
-VLC_EXPORT( int, net_Connect, (vlc_object_t *p_this, const char *psz_host, int i_port, int socktype, int protocol) );
+VLC_API int net_Connect(vlc_object_t *p_this, const char *psz_host, int i_port, int socktype, int protocol);
#define net_Connect(a, b, c, d, e) net_Connect(VLC_OBJECT(a), b, c, d, e)
-VLC_EXPORT( int *, net_Listen, (vlc_object_t *p_this, const char *psz_host, int i_port, int protocol) );
+VLC_API int * net_Listen(vlc_object_t *p_this, const char *psz_host, int i_port, int socktype, int protocol);
-#define net_ListenTCP(a, b, c) net_Listen(VLC_OBJECT(a), b, c, IPPROTO_TCP)
+#define net_ListenTCP(a, b, c) net_Listen(VLC_OBJECT(a), b, c, \
+ SOCK_STREAM, IPPROTO_TCP)
static inline int net_ConnectTCP (vlc_object_t *obj, const char *host, int port)
{
}
#define net_ConnectTCP(a, b, c) net_ConnectTCP(VLC_OBJECT(a), b, c)
-VLC_EXPORT( int, net_AcceptSingle, (vlc_object_t *obj, int lfd) );
+VLC_API int net_AcceptSingle(vlc_object_t *obj, int lfd);
-VLC_EXPORT( int, net_Accept, ( vlc_object_t *, int * ) );
+VLC_API int net_Accept( vlc_object_t *, int * );
#define net_Accept(a, b) \
net_Accept(VLC_OBJECT(a), b)
-VLC_EXPORT( int, net_ConnectDgram, ( vlc_object_t *p_this, const char *psz_host, int i_port, int hlim, int proto ) );
+VLC_API int net_ConnectDgram( vlc_object_t *p_this, const char *psz_host, int i_port, int hlim, int proto );
#define net_ConnectDgram(a, b, c, d, e ) \
net_ConnectDgram(VLC_OBJECT(a), b, c, d, e)
return net_ConnectDgram (obj, host, port, hlim, IPPROTO_UDP);
}
-VLC_EXPORT( int, net_OpenDgram, ( vlc_object_t *p_this, const char *psz_bind, int i_bind, const char *psz_server, int i_server, int family, int proto ) );
-#define net_OpenDgram( a, b, c, d, e, g, h ) \
- net_OpenDgram(VLC_OBJECT(a), b, c, d, e, g, h)
+VLC_API int net_OpenDgram( vlc_object_t *p_this, const char *psz_bind, int i_bind, const char *psz_server, int i_server, int proto );
+#define net_OpenDgram( a, b, c, d, e, g ) \
+ net_OpenDgram(VLC_OBJECT(a), b, c, d, e, g)
static inline int net_ListenUDP1 (vlc_object_t *obj, const char *host, int port)
{
- return net_OpenDgram (obj, host, port, NULL, 0, 0, IPPROTO_UDP);
+ return net_OpenDgram (obj, host, port, NULL, 0, IPPROTO_UDP);
}
-VLC_EXPORT( void, net_ListenClose, ( int *fd ) );
+VLC_API void net_ListenClose( int *fd );
int net_Subscribe (vlc_object_t *obj, int fd, const struct sockaddr *addr,
socklen_t addrlen);
-VLC_EXPORT( int, net_SetCSCov, ( int fd, int sendcov, int recvcov ) );
+VLC_API int net_SetCSCov( int fd, int sendcov, int recvcov );
/* Functions to read from or write to the networking layer */
struct virtual_socket_t
{
void *p_sys;
- int (*pf_recv) ( void *, void *, int );
- int (*pf_send) ( void *, const void *, int );
+ int (*pf_recv) ( void *, void *, size_t );
+ int (*pf_send) ( void *, const void *, size_t );
};
-VLC_EXPORT( ssize_t, net_Read, ( vlc_object_t *p_this, int fd, const v_socket_t *, void *p_data, size_t i_data, bool b_retry ) );
+VLC_API ssize_t net_Read( vlc_object_t *p_this, int fd, const v_socket_t *, void *p_data, size_t i_data, bool b_retry );
#define net_Read(a,b,c,d,e,f) net_Read(VLC_OBJECT(a),b,c,d,e,f)
-VLC_EXPORT( ssize_t, net_Write, ( vlc_object_t *p_this, int fd, const v_socket_t *, const void *p_data, size_t i_data ) );
+VLC_API ssize_t net_Write( vlc_object_t *p_this, int fd, const v_socket_t *, const void *p_data, size_t i_data );
#define net_Write(a,b,c,d,e) net_Write(VLC_OBJECT(a),b,c,d,e)
-VLC_EXPORT( char *, net_Gets, ( vlc_object_t *p_this, int fd, const v_socket_t * ) );
+VLC_API char * net_Gets( vlc_object_t *p_this, int fd, const v_socket_t * );
#define net_Gets(a,b,c) net_Gets(VLC_OBJECT(a),b,c)
-VLC_EXPORT( ssize_t, net_Printf, ( vlc_object_t *p_this, int fd, const v_socket_t *, const char *psz_fmt, ... ) LIBVLC_FORMAT( 4, 5 ) );
-VLC_EXPORT( ssize_t, net_vaPrintf, ( vlc_object_t *p_this, int fd, const v_socket_t *, const char *psz_fmt, va_list args ) );
+VLC_API ssize_t net_Printf( vlc_object_t *p_this, int fd, const v_socket_t *, const char *psz_fmt, ... ) VLC_FORMAT( 4, 5 );
+#define net_Printf(o,fd,vs,...) net_Printf(VLC_OBJECT(o),fd,vs, __VA_ARGS__)
+VLC_API ssize_t net_vaPrintf( vlc_object_t *p_this, int fd, const v_socket_t *, const char *psz_fmt, va_list args );
#define net_vaPrintf(a,b,c,d,e) net_vaPrintf(VLC_OBJECT(a),b,c,d,e)
-VLC_EXPORT (int, vlc_inet_pton, (int af, const char *src, void *dst) );
-VLC_EXPORT (const char *, vlc_inet_ntop, (int af, const void *src,
- char *dst, socklen_t cnt) );
+VLC_API int vlc_inet_pton(int af, const char *src, void *dst);
+VLC_API const char *vlc_inet_ntop(int af, const void *src,
+ char *dst, socklen_t cnt);
struct pollfd;
-VLC_EXPORT (int, vlc_poll, (struct pollfd *fds, unsigned nfds, int timeout));
+VLC_API int vlc_poll(struct pollfd *fds, unsigned nfds, int timeout);
#ifdef WIN32
# define SHUT_RDWR SD_BOTH
# define net_Close( fd ) closesocket ((SOCKET)fd)
#else
+# ifdef __OS2__
+# define SHUT_RD 0
+# define SHUT_WR 1
+# define SHUT_RDWR 2
+# endif
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
# endif
# define NI_MAXNUMERICHOST 64
-# ifndef NI_NUMERICHOST
-# define NI_NUMERICHOST 0x01
-# define NI_NUMERICSERV 0x02
-# define NI_NOFQDN 0x04
-# define NI_NAMEREQD 0x08
-# define NI_DGRAM 0x10
-# endif
-
-# ifndef HAVE_STRUCT_ADDRINFO
-struct addrinfo
-{
- int ai_flags;
- int ai_family;
- int ai_socktype;
- int ai_protocol;
- size_t ai_addrlen;
- struct sockaddr *ai_addr;
- char *ai_canonname;
- struct addrinfo *ai_next;
-};
-# define AI_PASSIVE 1
-# define AI_CANONNAME 2
-# define AI_NUMERICHOST 4
-# endif /* if !HAVE_STRUCT_ADDRINFO */
-
#ifndef AI_NUMERICSERV
# define AI_NUMERICSERV 0
#endif
-VLC_EXPORT( const char *, vlc_gai_strerror, ( int ) );
-VLC_EXPORT( int, vlc_getnameinfo, ( const struct sockaddr *, int, char *, int, int *, int ) );
-VLC_EXPORT( int, vlc_getaddrinfo, ( vlc_object_t *, const char *, int, const struct addrinfo *, struct addrinfo ** ) );
-VLC_EXPORT( void, vlc_freeaddrinfo, ( struct addrinfo * ) );
+VLC_API int vlc_getnameinfo( const struct sockaddr *, int, char *, int, int *, int );
+VLC_API int vlc_getaddrinfo( vlc_object_t *, const char *, int, const struct addrinfo *, struct addrinfo ** );
static inline bool