27 # define VLC_NETWORK_H 39 #include <sys/types.h> 43 # define _NO_OLDNAMES 1 44 # include <winsock2.h> 45 # include <ws2tcpip.h> 46 # define net_errno (WSAGetLastError()) 47 # define net_Close(fd) ((void)closesocket((SOCKET)fd)) 49 # define IPV6_V6ONLY 27 52 # include <sys/socket.h> 53 # include <netinet/in.h> 55 # define net_errno errno 56 # define net_Close(fd) ((void)vlc_close(fd)) 60 # define MSG_NOSIGNAL 0 124 #define net_Connect(a, b, c, d, e) net_Connect(VLC_OBJECT(a), b, c, d, e) 128 #define net_ListenTCP(a, b, c) net_Listen(VLC_OBJECT(a), b, c, \ 129 SOCK_STREAM, IPPROTO_TCP) 132 #define net_ConnectTCP(a, b, c) net_ConnectTCP(VLC_OBJECT(a), b, c) 151 #define net_Accept(a, b) \ 152 net_Accept(VLC_OBJECT(a), b) 155 #define net_ConnectDgram(a, b, c, d, e ) \ 156 net_ConnectDgram(VLC_OBJECT(a), b, c, d, e) 164 #define net_OpenDgram( a, b, c, d, e, g ) \ 165 net_OpenDgram(VLC_OBJECT(a), b, c, d, e, g) 169 return net_OpenDgram (obj, host, port, NULL, 0, IPPROTO_UDP);
186 #define net_Read(a,b,c,d) net_Read(VLC_OBJECT(a),b,c,d) 199 #define net_Write(a,b,c,d) net_Write(VLC_OBJECT(a),b,c,d) 206 static inline int vlc_getsockopt(
int s,
int level,
int name,
207 void *val, socklen_t *len)
209 return getsockopt(s, level, name, (
char *)val, len);
211 #define getsockopt vlc_getsockopt 213 static inline int vlc_setsockopt(
int s,
int level,
int name,
214 const void *val, socklen_t len)
216 return setsockopt(s, level, name, (
const char *)val, len);
218 #define setsockopt vlc_setsockopt 223 #define NI_MAXNUMERICHOST 64 225 #ifndef AI_NUMERICSERV 226 # define AI_NUMERICSERV 0 233 # if !defined(WINAPI_FAMILY) || WINAPI_FAMILY != WINAPI_FAMILY_APP 235 # define gai_strerror gai_strerrorA 241 const struct addrinfo *,
struct addrinfo **);
243 const struct addrinfo *,
struct addrinfo **);
248 switch (addr->sa_family)
253 const struct sockaddr_in *v4 = (
const struct sockaddr_in *)addr;
254 if ((
size_t)len <
sizeof (*v4))
256 return IN_MULTICAST (ntohl (v4->sin_addr.s_addr)) != 0;
260 #ifdef IN6_IS_ADDR_MULTICAST 263 const struct sockaddr_in6 *v6 = (
const struct sockaddr_in6 *)addr;
264 if ((
size_t)len <
sizeof (*v6))
266 return IN6_IS_ADDR_MULTICAST (&v6->sin6_addr) != 0;
277 struct sockaddr_storage addr;
278 socklen_t addrlen =
sizeof( addr );
280 return getsockname( fd, (
struct sockaddr *)&addr, &addrlen )
288 struct sockaddr_storage addr;
289 socklen_t addrlen =
sizeof( addr );
291 return getpeername( fd, (
struct sockaddr *)&addr, &addrlen )
#define NI_MAXNUMERICHOST
Definition: vlc_network.h:224
static bool net_SockAddrIsMulticast(const struct sockaddr *addr, socklen_t len)
Definition: vlc_network.h:247
#define net_ConnectTCP(a, b, c)
Definition: vlc_network.h:133
static int net_GetPeerAddress(int fd, char *address, int *port)
Definition: vlc_network.h:287
#define net_Read(a, b, c, d)
Definition: vlc_network.h:187
int vlc_close(int)
Closes a file descriptor.
Definition: filesystem.c:91
char * vlc_getProxyUrl(const char *)
Determines the network proxy server to use (if any).
Definition: specific.c:341
#define net_ConnectDgram(a, b, c, d, e)
Definition: vlc_network.h:156
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:336
int vlc_getaddrinfo_i11e(const char *, unsigned, const struct addrinfo *, struct addrinfo **)
Definition: getaddrinfo.c:39
void net_ListenClose(int *fd)
Definition: io.c:292
int vlc_socket(int pf, int type, int proto, bool nonblock)
Creates a socket file descriptor.
Definition: filesystem.c:318
#define net_Accept(a, b)
Definition: vlc_network.h:152
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 vlc_socketpair(int pf, int type, int proto, int fds[2], bool nonblock)
Creates a pair of socket file descriptors.
Definition: filesystem.c:326
#define net_Write(a, b, c, d)
Definition: vlc_network.h:200
int net_SetCSCov(int fd, int sendcov, int recvcov)
net_SetCSCov: Sets the send and receive checksum coverage of a socket:
Definition: udp.c:690
static int net_ConnectUDP(vlc_object_t *obj, const char *host, unsigned port, int hlim)
Definition: vlc_network.h:159
#define VLC_API
Definition: fourcc_gen.c:31
#define VLC_EGENERIC
Unspecified error.
Definition: vlc_common.h:472
int vlc_getnameinfo(const struct sockaddr *, int, char *, int, int *, int)
Definition: getaddrinfo.c:39
int * net_Listen(vlc_object_t *p_this, const char *psz_host, unsigned i_port, int socktype, int protocol)
Definition: io.c:210
#define net_Connect(a, b, c, d, e)
Definition: vlc_network.h:125
static int net_GetSockAddress(int fd, char *address, int *port)
Definition: vlc_network.h:276
VLC object common members.
Definition: vlc_objects.h:43
static int net_ListenUDP1(vlc_object_t *obj, const char *host, unsigned port)
Definition: vlc_network.h:168
uint16_t i_port
Definition: keystore.c:217
#define VLC_USED
Definition: fourcc_gen.c:32
int net_Socket(vlc_object_t *obj, int family, int socktype, int proto)
Definition: io.c:65
#define net_OpenDgram(a, b, c, d, e, g)
Definition: vlc_network.h:165