Go to the documentation of this file.
   28 # define VLC_NETWORK_H 
   40 #include <sys/types.h> 
   44 #   define _NO_OLDNAMES 1 
   45 #   include <winsock2.h> 
   46 #   include <ws2tcpip.h> 
   47 #   define net_errno (WSAGetLastError()) 
   48 #   define net_Close(fd) ((void)closesocket((SOCKET)fd)) 
   50 #       define IPV6_V6ONLY 27 
   53 #   include <sys/socket.h> 
   54 #   include <netinet/in.h> 
   56 #   define net_errno errno 
   57 #   define net_Close(fd) ((void)vlc_close(fd)) 
   61 # define MSG_NOSIGNAL 0 
  125 #define net_Connect(a, b, c, d, e) net_Connect(VLC_OBJECT(a), b, c, d, e) 
  129 #define net_ListenTCP(a, b, c) net_Listen(VLC_OBJECT(a), b, c, \ 
  130                                           SOCK_STREAM, IPPROTO_TCP) 
  134     return net_Connect (obj, host, port, SOCK_STREAM, IPPROTO_TCP);
 
  136 #define net_ConnectTCP(a, b, c) net_ConnectTCP(VLC_OBJECT(a), b, c) 
  141 #define net_Accept(a, b) \ 
  142         net_Accept(VLC_OBJECT(a), b) 
  145 #define net_ConnectDgram(a, b, c, d, e ) \ 
  146         net_ConnectDgram(VLC_OBJECT(a), b, c, d, e) 
  154 #define net_OpenDgram( a, b, c, d, e, g ) \ 
  155         net_OpenDgram(VLC_OBJECT(a), b, c, d, e, g) 
  159     return net_OpenDgram (obj, host, port, NULL, 0, IPPROTO_UDP);
 
  170 #define net_Read(a,b,c,d) net_Read(VLC_OBJECT(a),b,c,d) 
  172 #define net_Write(a,b,c,d) net_Write(VLC_OBJECT(a),b,c,d) 
  174 #define net_Gets(a,b) net_Gets(VLC_OBJECT(a),b) 
  178 #define net_Printf(o,fd,...) net_Printf(VLC_OBJECT(o),fd, __VA_ARGS__) 
  180 #define net_vaPrintf(a,b,c,d) net_vaPrintf(VLC_OBJECT(a),b,c,d) 
  188 #define NI_MAXNUMERICHOST 64 
  190 #ifndef AI_NUMERICSERV 
  191 # define AI_NUMERICSERV 0 
  198 # if !defined(WINAPI_FAMILY) || WINAPI_FAMILY != WINAPI_FAMILY_APP 
  200 #  define gai_strerror gai_strerrorA 
  206                              const struct addrinfo *, 
struct addrinfo **);
 
  208                                  const struct addrinfo *, 
struct addrinfo **);
 
  213     switch (addr->sa_family)
 
  218             const struct sockaddr_in *v4 = (
const struct sockaddr_in *)addr;
 
  219             if ((
size_t)len < 
sizeof (*v4))
 
  221             return IN_MULTICAST (ntohl (v4->sin_addr.s_addr)) != 0;
 
  225 #ifdef IN6_IS_ADDR_MULTICAST 
  228             const struct sockaddr_in6 *v6 = (
const struct sockaddr_in6 *)addr;
 
  229             if ((
size_t)len < 
sizeof (*v6))
 
  231             return IN6_IS_ADDR_MULTICAST (&v6->sin6_addr) != 0;
 
  242     struct sockaddr_storage addr;
 
  243     socklen_t addrlen = 
sizeof( addr );
 
  245     return getsockname( fd, (
struct sockaddr *)&addr, &addrlen )
 
  253     struct sockaddr_storage addr;
 
  254     socklen_t addrlen = 
sizeof( addr );
 
  256     return getpeername( fd, (
struct sockaddr *)&addr, &addrlen )
 
  264     switch (addr->sa_family)
 
  268             return ((
const struct sockaddr_in6 *)addr)->sin6_port;
 
  271             return ((
const struct sockaddr_in *)addr)->sin_port;
 
  276 static inline void net_SetPort (
struct sockaddr *addr, uint16_t port)
 
  278     switch (addr->sa_family)
 
  282             ((
struct sockaddr_in6 *)addr)->sin6_port = port;
 
  286             ((
struct sockaddr_in *)addr)->sin_port = port;
 
  
#define VLC_FORMAT(x, y)
Definition: vlc_common.h:100
int net_SetCSCov(int fd, int sendcov, int recvcov)
net_SetCSCov: Sets the send and receive checksum coverage of a socket:
Definition: udp.c:684
#define VLC_API
Definition: fourcc_gen.c:30
int vlc_getnameinfo(const struct sockaddr *, int, char *, int, int *, int)
Definition: getaddrinfo.c:39
#define net_Printf(o, fd,...)
Definition: vlc_network.h:178
#define net_Gets(a, b)
Definition: vlc_network.h:174
static bool net_SockAddrIsMulticast(const struct sockaddr *addr, socklen_t len)
Definition: vlc_network.h:211
#define net_vaPrintf(a, b, c, d)
Definition: vlc_network.h:180
#define net_Connect(a, b, c, d, e)
Definition: vlc_network.h:125
int * net_Listen(vlc_object_t *p_this, const char *psz_host, int i_port, int socktype, int protocol)
Definition: io.c:104
char * vlc_getProxyUrl(const char *)
Determines the network proxy server to use (if any).
Definition: specific.c:315
#define VLC_EGENERIC
Unspecified error.
Definition: vlc_common.h:350
int vlc_getaddrinfo_i11e(const char *, unsigned, const struct addrinfo *, struct addrinfo **)
Definition: getaddrinfo.c:38
static int net_ConnectUDP(vlc_object_t *obj, const char *host, int port, int hlim)
Definition: vlc_network.h:148
int vlc_getaddrinfo(const char *, unsigned, const struct addrinfo *, struct addrinfo **)
Resolves a host name to a list of socket addresses (like getaddrinfo()).
Definition: getaddrinfo.c:77
int net_Subscribe(vlc_object_t *obj, int fd, const struct sockaddr *addr, socklen_t addrlen)
Definition: udp.c:393
int net_Socket(vlc_object_t *obj, int family, int socktype, int proto)
Definition: io.c:53
static uint16_t net_GetPort(const struct sockaddr *addr)
Definition: vlc_network.h:262
#define net_OpenDgram(a, b, c, d, e, g)
Definition: vlc_network.h:154
#define net_ConnectTCP(a, b, c)
Definition: vlc_network.h:136
The main vlc_object_t structure.
Definition: vlc_objects.h:39
#define net_ConnectDgram(a, b, c, d, e)
Definition: vlc_network.h:145
#define VLC_USED
Definition: fourcc_gen.c:31
static int net_GetSockAddress(int fd, char *address, int *port)
Definition: vlc_network.h:240
int vlc_close(int)
Closes a file descriptor.
Definition: filesystem.c:88
static int net_ListenUDP1(vlc_object_t *obj, const char *host, int port)
Definition: vlc_network.h:157
#define net_Read(a, b, c, d)
Definition: vlc_network.h:170
static int net_GetPeerAddress(int fd, char *address, int *port)
Definition: vlc_network.h:251
void net_ListenClose(int *fd)
Definition: tcp.c:527
#define net_Write(a, b, c, d)
Definition: vlc_network.h:172
#define net_Accept(a, b)
Definition: vlc_network.h:141
int vlc_socketpair(int pf, int type, int proto, int fds[2], bool nonblock)
Creates a pair of socket file descriptors.
Definition: filesystem.c:323
int vlc_accept(int lfd, struct sockaddr *addr, socklen_t *alen, bool nonblock)
Accepts an inbound connection request on a listening socket.
Definition: filesystem.c:333
#define NI_MAXNUMERICHOST
Definition: vlc_network.h:188
static void net_SetPort(struct sockaddr *addr, uint16_t port)
Definition: vlc_network.h:276
int vlc_socket(int pf, int type, int proto, bool nonblock)
Creates a socket file descriptor.
Definition: filesystem.c:315
uint16_t i_port
Definition: keystore.c:210
int net_AcceptSingle(vlc_object_t *obj, int lfd)
Definition: tcp.c:239