43# define _NO_OLDNAMES 1
46# define net_errno (WSAGetLastError())
47# define net_Close(fd) ((void)closesocket((SOCKET)fd))
49# define IPV6_V6ONLY 27
51# if !defined(SHUT_RDWR)
52# define SHUT_RDWR (SD_BOTH)
53# define SHUT_WR (SD_SEND)
54# define SHUT_RD (SD_RECEIVE)
57# include <sys/socket.h>
58# include <netinet/in.h>
60# define net_errno errno
61# define net_Close(fd) ((void)vlc_close(fd))
133VLC_API ssize_t
vlc_send(
int fd,
const void *buf,
size_t buflen,
int flags);
156 const struct sockaddr *dst, socklen_t dstlen);
180#define net_Connect(a, b, c, d, e) net_Connect(VLC_OBJECT(a), b, c, d, e)
184#define net_ListenTCP(a, b, c) net_Listen(VLC_OBJECT(a), b, c, \
185 SOCK_STREAM, IPPROTO_TCP)
188#define net_ConnectTCP(a, b, c) net_ConnectTCP(VLC_OBJECT(a), b, c)
207#define net_Accept(a, b) \
208 net_Accept(VLC_OBJECT(a), b)
211#define net_ConnectDgram(a, b, c, d, e ) \
212 net_ConnectDgram(VLC_OBJECT(a), b, c, d, e)
220#define net_OpenDgram( a, b, c, d, e, g ) \
221 net_OpenDgram(VLC_OBJECT(a), b, c, d, e, g)
225 return net_OpenDgram (obj, host, port, NULL, 0, IPPROTO_UDP);
242#define net_Read(a,b,c,d) net_Read(VLC_OBJECT(a),b,c,d)
255#define net_Write(a,b,c,d) net_Write(VLC_OBJECT(a),b,c,d)
262static inline int vlc_getsockopt(
int s,
int level,
int name,
263 void *val, socklen_t *len)
265 return getsockopt(s, level,
name, (
char *)val, len);
267#define getsockopt vlc_getsockopt
269static inline int vlc_setsockopt(
int s,
int level,
int name,
270 const void *val, socklen_t len)
272 return setsockopt(s, level,
name, (
const char *)val, len);
274#define setsockopt vlc_setsockopt
279#define NI_MAXNUMERICHOST 64
281#ifndef AI_NUMERICSERV
282# define AI_NUMERICSERV 0
291# define gai_strerror gai_strerrorA
309 const struct addrinfo *p_hints,
310 struct addrinfo **res);
312 const struct addrinfo *,
struct addrinfo **);
317 switch (addr->sa_family)
322 const struct sockaddr_in *v4 = (
const struct sockaddr_in *)addr;
323 if ((
size_t)len <
sizeof (*v4))
325 return IN_MULTICAST (ntohl (v4->sin_addr.s_addr)) != 0;
329#ifdef IN6_IS_ADDR_MULTICAST
332 const struct sockaddr_in6 *v6 = (
const struct sockaddr_in6 *)addr;
333 if ((
size_t)len <
sizeof (*v6))
335 return IN6_IS_ADDR_MULTICAST (&v6->sin6_addr) != 0;
346 struct sockaddr_storage addr;
347 socklen_t addrlen =
sizeof( addr );
349 return getsockname( fd, (
struct sockaddr *)&addr, &addrlen )
357 struct sockaddr_storage addr;
358 socklen_t addrlen =
sizeof( addr );
360 return getpeername( fd, (
struct sockaddr *)&addr, &addrlen )
#define VLC_USED
Definition fourcc_gen.c:32
#define VLC_API
Definition fourcc_gen.c:31
#define VLC_EGENERIC
Unspecified error.
Definition vlc_common.h:480
static bool net_SockAddrIsMulticast(const struct sockaddr *addr, socklen_t len)
Definition vlc_network.h:316
static int net_GetPeerAddress(int fd, char *address, int *port)
Definition vlc_network.h:356
int vlc_getaddrinfo(const char *node, unsigned i_port, const struct addrinfo *p_hints, struct addrinfo **res)
Resolves a host name to a list of socket addresses (like getaddrinfo()).
Definition getaddrinfo.c:65
char * vlc_getProxyUrl(const char *)
Determines the network proxy server to use (if any).
Definition specific.c:334
#define NI_MAXNUMERICHOST
Definition vlc_network.h:280
int vlc_getaddrinfo_i11e(const char *, unsigned, const struct addrinfo *, struct addrinfo **)
Definition getaddrinfo.c:39
static int net_GetSockAddress(int fd, char *address, int *port)
Definition vlc_network.h:345
int vlc_getnameinfo(const struct sockaddr *, int, char *, int, int *, int)
Definition getaddrinfo.c:39
#define net_OpenDgram(a, b, c, d, e, g)
Definition vlc_network.h:221
static int net_ListenUDP1(vlc_object_t *obj, const char *host, unsigned port)
Definition vlc_network.h:224
#define net_Write(a, b, c, d)
Definition vlc_network.h:256
ssize_t vlc_sendmsg(int fd, const struct msghdr *msg, int flags)
Sends a socket message.
Definition filesystem.c:384
#define net_Accept(a, b)
Definition vlc_network.h:208
ssize_t vlc_sendto(int fd, const void *buf, size_t buflen, int flags, const struct sockaddr *dst, socklen_t dstlen)
Sends data to a peer.
Definition filesystem.c:378
ssize_t vlc_send(int fd, const void *buf, size_t buflen, int flags)
Sends data.
Definition filesystem.c:373
static int net_ConnectUDP(vlc_object_t *obj, const char *host, unsigned port, int hlim)
Definition vlc_network.h:215
int vlc_socket(int pf, int type, int proto, bool nonblock)
Creates a socket file descriptor.
Definition filesystem.c:337
#define net_Read(a, b, c, d)
Definition vlc_network.h:243
int * net_Listen(vlc_object_t *p_this, const char *psz_host, unsigned i_port, int socktype, int protocol)
Definition io.c:209
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:355
int vlc_close(int)
Closes a file descriptor.
Definition filesystem.c:91
#define net_Connect(a, b, c, d, e)
Definition vlc_network.h:181
void net_ListenClose(int *fd)
Definition io.c:291
int net_SetCSCov(int fd, int sendcov, int recvcov)
net_SetCSCov: Sets the send and receive checksum coverage of a socket:
Definition udp.c:717
int vlc_socketpair(int pf, int type, int proto, int fds[2], bool nonblock)
Creates a pair of socket file descriptors.
Definition filesystem.c:345
#define net_ConnectDgram(a, b, c, d, e)
Definition vlc_network.h:212
#define net_ConnectTCP(a, b, c)
Definition vlc_network.h:189
int net_Socket(vlc_object_t *obj, int family, int socktype, int proto)
Definition io.c:66
const char name[16]
Definition httpd.c:1298
uint16_t i_port
Definition keystore.c:217
VLC object common members.
Definition vlc_objects.h:53
This file is a collection of common definitions and types.