X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=include%2Fvlc_network.h;h=2e20ac69cf08f9e76459ec8c096b3d7f9dc124a5;hb=4f0b2161aa473c6d2a88216ad32087ff3586d77f;hp=8f938f6e82fcb15a11248b14f6ebc3cbb4e6e72a;hpb=af64d14a00bbaca4c17b7f3feb7399d7a0363f23;p=vlc diff --git a/include/vlc_network.h b/include/vlc_network.h index 8f938f6e82..2e20ac69cf 100644 --- a/include/vlc_network.h +++ b/include/vlc_network.h @@ -64,19 +64,29 @@ struct msghdr # define IPV6_V6ONLY 27 # endif #else +# include +# include # include -# ifdef HAVE_NETINET_IN_H -# include -# endif -# ifdef HAVE_ARPA_INET_H -# include -# elif defined( SYS_BEOS ) -# include -# endif +# include # include # 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 @@ -84,12 +94,13 @@ extern "C" { /* Portable networking layer communication */ int net_Socket (vlc_object_t *obj, int family, int socktype, int proto); -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) { @@ -97,13 +108,13 @@ 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) @@ -112,48 +123,45 @@ static inline int net_ConnectUDP (vlc_object_t *obj, const char *host, int port, 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_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_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_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) ); 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 @@ -163,9 +171,11 @@ VLC_EXPORT (int, vlc_poll, (struct pollfd *fds, unsigned nfds, int timeout)); # define SHUT_RDWR SD_BOTH # define net_Close( fd ) closesocket ((SOCKET)fd) #else -#ifdef HAVE_UNISTD_H -#include -#endif +# ifdef __OS2__ +# define SHUT_RD 0 +# define SHUT_WR 1 +# define SHUT_RDWR 2 +# endif # define net_Close( fd ) (void)close (fd) #endif @@ -216,39 +226,12 @@ VLC_EXPORT (int, vlc_poll, (struct pollfd *fds, unsigned nfds, int timeout)); # 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