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)) 127 VLC_API ssize_t
vlc_send(
int fd,
const void *buf,
size_t buflen,
int flags);
150 const struct sockaddr *dst, socklen_t dstlen);
174 #define net_Connect(a, b, c, d, e) net_Connect(VLC_OBJECT(a), b, c, d, e) 178 #define net_ListenTCP(a, b, c) net_Listen(VLC_OBJECT(a), b, c, \ 179 SOCK_STREAM, IPPROTO_TCP) 182 #define net_ConnectTCP(a, b, c) net_ConnectTCP(VLC_OBJECT(a), b, c) 201 #define net_Accept(a, b) \ 202 net_Accept(VLC_OBJECT(a), b) 205 #define net_ConnectDgram(a, b, c, d, e ) \ 206 net_ConnectDgram(VLC_OBJECT(a), b, c, d, e) 214 #define net_OpenDgram( a, b, c, d, e, g ) \ 215 net_OpenDgram(VLC_OBJECT(a), b, c, d, e, g) 219 return net_OpenDgram (obj, host, port, NULL, 0, IPPROTO_UDP);
236 #define net_Read(a,b,c,d) net_Read(VLC_OBJECT(a),b,c,d) 249 #define net_Write(a,b,c,d) net_Write(VLC_OBJECT(a),b,c,d) 256 static inline int vlc_getsockopt(
int s,
int level,
int name,
257 void *val, socklen_t *len)
259 return getsockopt(s, level, name, (
char *)val, len);
261 #define getsockopt vlc_getsockopt 263 static inline int vlc_setsockopt(
int s,
int level,
int name,
264 const void *val, socklen_t len)
266 return setsockopt(s, level, name, (
const char *)val, len);
268 #define setsockopt vlc_setsockopt 273 #define NI_MAXNUMERICHOST 64 275 #ifndef AI_NUMERICSERV 276 # define AI_NUMERICSERV 0 283 # if !defined(WINAPI_FAMILY) || WINAPI_FAMILY != WINAPI_FAMILY_APP 285 # define gai_strerror gai_strerrorA 291 const struct addrinfo *,
struct addrinfo **);
293 const struct addrinfo *,
struct addrinfo **);
298 switch (addr->sa_family)
303 const struct sockaddr_in *v4 = (
const struct sockaddr_in *)addr;
304 if ((
size_t)len <
sizeof (*v4))
306 return IN_MULTICAST (ntohl (v4->sin_addr.s_addr)) != 0;
310 #ifdef IN6_IS_ADDR_MULTICAST 313 const struct sockaddr_in6 *v6 = (
const struct sockaddr_in6 *)addr;
314 if ((
size_t)len <
sizeof (*v6))
316 return IN6_IS_ADDR_MULTICAST (&v6->sin6_addr) != 0;
327 struct sockaddr_storage addr;
328 socklen_t addrlen =
sizeof( addr );
330 return getsockname( fd, (
struct sockaddr *)&addr, &addrlen )
338 struct sockaddr_storage addr;
339 socklen_t addrlen =
sizeof( addr );
341 return getpeername( fd, (
struct sockaddr *)&addr, &addrlen )
#define NI_MAXNUMERICHOST
Definition: vlc_network.h:274
static bool net_SockAddrIsMulticast(const struct sockaddr *addr, socklen_t len)
Definition: vlc_network.h:297
#define net_ConnectTCP(a, b, c)
Definition: vlc_network.h:183
static int net_GetPeerAddress(int fd, char *address, int *port)
Definition: vlc_network.h:337
#define net_Read(a, b, c, d)
Definition: vlc_network.h:237
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:342
#define net_ConnectDgram(a, b, c, d, e)
Definition: vlc_network.h:206
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:202
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:250
ssize_t vlc_sendmsg(int fd, const struct msghdr *msg, int flags)
Sends a socket message.
Definition: filesystem.c:344
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:327
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:209
#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:175
static int net_GetSockAddress(int fd, char *address, int *port)
Definition: vlc_network.h:326
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:218
ssize_t vlc_send(int fd, const void *buf, size_t buflen, int flags)
Sends data.
Definition: filesystem.c:322
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:215