vlc_network.h File Reference

This file defines interface to communicate with network plug-ins. More...

Include dependency graph for vlc_network.h:

Go to the source code of this file.

Data Structures

struct  virtual_socket_t
struct  pollfd
struct  addrinfo

Defines

#define net_errno   errno
#define net_Connect(a, b, c, d, e)   __net_Connect(VLC_OBJECT(a), b, c, d, e)
#define net_ListenTCP(a, b, c)   net_Listen(VLC_OBJECT(a), b, c, IPPROTO_TCP)
#define net_ConnectTCP(a, b, c)   __net_ConnectTCP(VLC_OBJECT(a), b, c)
#define net_Accept(a, b)   net_Accept(VLC_OBJECT(a), b)
#define net_ConnectDgram(a, b, c, d, e)   __net_ConnectDgram(VLC_OBJECT(a), b, c, d, e)
#define net_OpenDgram(a, b, c, d, e, g, h)   __net_OpenDgram(VLC_OBJECT(a), b, c, d, e, g, h)
#define net_Read(a, b, c, d, e, f)   __net_Read(VLC_OBJECT(a),b,c,d,e,f)
#define net_Write(a, b, c, d, e)   __net_Write(VLC_OBJECT(a),b,c,d,e)
#define net_Gets(a, b, c)   __net_Gets(VLC_OBJECT(a),b,c)
#define net_vaPrintf(a, b, c, d, e)   __net_vaPrintf(VLC_OBJECT(a),b,c,d,e)
#define inet_pton   vlc_inet_pton
#define inet_ntop   vlc_inet_ntop
#define poll(a, b, c)   vlc_poll(a, b, c)
#define net_Close(fd)   (void)close (fd)
#define EAI_BADFLAGS   -1
#define EAI_NONAME   -2
#define EAI_AGAIN   -3
#define EAI_FAIL   -4
#define EAI_NODATA   -5
#define EAI_FAMILY   -6
#define EAI_SOCKTYPE   -7
#define EAI_SERVICE   -8
#define EAI_ADDRFAMILY   -9
#define EAI_MEMORY   -10
#define EAI_OVERFLOW   -11
#define EAI_SYSTEM   -12
#define NI_MAXHOST   1025
#define NI_MAXSERV   32
#define NI_MAXNUMERICHOST   64
#define NI_NUMERICHOST   0x01
#define NI_NUMERICSERV   0x02
#define NI_NOFQDN   0x04
#define NI_NAMEREQD   0x08
#define NI_DGRAM   0x10
#define AI_PASSIVE   1
#define AI_CANONNAME   2
#define AI_NUMERICHOST   4
#define AI_NUMERICSERV   0

Enumerations

enum  {
  POLLIN = 1, POLLOUT = 2, POLLPRI = 4, POLLERR = 8,
  POLLHUP = 16, POLLNVAL = 32
}

Functions

int net_Socket (vlc_object_t *obj, int family, int socktype, int proto)
int net_SetupSocket (int fd)
int __net_Connect (vlc_object_t *p_this, const char *psz_host, int i_port, int socktype, int protocol)
int * net_Listen (vlc_object_t *p_this, const char *psz_host, int i_port, int protocol)
static int __net_ConnectTCP (vlc_object_t *obj, const char *host, int port)
int net_AcceptSingle (vlc_object_t *obj, int lfd)
int net_Accept (vlc_object_t *, int *)
 Accepts an new connection on a set of listening sockets.
int __net_ConnectDgram (vlc_object_t *p_this, const char *psz_host, int i_port, int hlim, int proto)
static int net_ConnectUDP (vlc_object_t *obj, const char *host, int port, int hlim)
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)
static int net_ListenUDP1 (vlc_object_t *obj, const char *host, int port)
void net_ListenClose (int *fd)
int net_Subscribe (vlc_object_t *obj, int fd, const struct sockaddr *addr, socklen_t addrlen)
int net_SetCSCov (int fd, int sendcov, int recvcov)
 net_SetCSCov: Sets the send and receive checksum coverage of a socket:
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)
ssize_t __net_Write (vlc_object_t *p_this, int fd, const v_socket_t *, const void *p_data, size_t i_data)
char * __net_Gets (vlc_object_t *p_this, int fd, const v_socket_t *)
 Reads a line from a file descriptor.
ssize_t net_Printf (vlc_object_t *p_this, int fd, const v_socket_t *, const char *psz_fmt,...)
ssize_t __net_vaPrintf (vlc_object_t *p_this, int fd, const v_socket_t *, const char *psz_fmt, va_list args)
int vlc_inet_pton (int af, const char *src, void *dst)
 inet_pton() replacement
const char * vlc_inet_ntop (int af, const void *src, char *dst, socklen_t cnt)
 inet_ntop() replacement
int vlc_poll (struct pollfd *fds, unsigned nfds, int timeout)
const char * vlc_gai_strerror (int)
int vlc_getnameinfo (const struct sockaddr *, int, char *, int, int *, int)
int vlc_getaddrinfo (vlc_object_t *, const char *, int, const struct addrinfo *, struct addrinfo **)
 Resolves a host name to a list of socket addresses (like getaddrinfo()).
void vlc_freeaddrinfo (struct addrinfo *)
static bool net_SockAddrIsMulticast (const struct sockaddr *addr, socklen_t len)
static int net_GetSockAddress (int fd, char *address, int *port)
static int net_GetPeerAddress (int fd, char *address, int *port)
static uint16_t net_GetPort (const struct sockaddr *addr)
static void net_SetPort (struct sockaddr *addr, uint16_t port)


Detailed Description

This file defines interface to communicate with network plug-ins.


Define Documentation

#define AI_CANONNAME   2

#define AI_NUMERICHOST   4

#define AI_NUMERICSERV   0

Referenced by vlc_getaddrinfo().

#define AI_PASSIVE   1

#define EAI_ADDRFAMILY   -9

#define EAI_AGAIN   -3

Referenced by gai_error_from_herrno().

#define EAI_BADFLAGS   -1

#define EAI_FAIL   -4

Referenced by gai_error_from_herrno().

#define EAI_FAMILY   -6

#define EAI_MEMORY   -10

#define EAI_NODATA   -5

Referenced by gai_error_from_herrno().

#define EAI_NONAME   -2

#define EAI_OVERFLOW   -11

Referenced by stub_getnameinfo().

#define EAI_SERVICE   -8

#define EAI_SOCKTYPE   -7

Referenced by stub_getaddrinfo().

#define EAI_SYSTEM   -12

#define inet_ntop   vlc_inet_ntop

Referenced by ParseConnection(), and vlc_inet_ntop().

#define inet_pton   vlc_inet_pton

#define net_Accept ( a,
 )     net_Accept(VLC_OBJECT(a), b)

Referenced by Open(), Run(), and vlclua_net_accept().

#define net_Close ( fd   )     (void)close (fd)

#define net_Connect ( a,
b,
c,
d,
 )     __net_Connect(VLC_OBJECT(a), b, c, d, e)

Referenced by Open().

#define net_ConnectDgram ( a,
b,
c,
d,
 )     __net_ConnectDgram(VLC_OBJECT(a), b, c, d, e)

Referenced by net_ConnectUDP(), Open(), and RtspHandler().

#define net_ConnectTCP ( a,
b,
 )     __net_ConnectTCP(VLC_OBJECT(a), b, c)

#define net_errno   errno

#define net_Gets ( a,
b,
 )     __net_Gets(VLC_OBJECT(a),b,c)

#define net_ListenTCP ( a,
b,
 )     net_Listen(VLC_OBJECT(a), b, c, IPPROTO_TCP)

#define net_OpenDgram ( a,
b,
c,
d,
e,
g,
 )     __net_OpenDgram(VLC_OBJECT(a), b, c, d, e, g, h)

Referenced by net_ListenUDP1(), Open(), and OpenRTCP().

#define net_Read ( a,
b,
c,
d,
e,
 )     __net_Read(VLC_OBJECT(a),b,c,d,e,f)

#define net_vaPrintf ( a,
b,
c,
d,
 )     __net_vaPrintf(VLC_OBJECT(a),b,c,d,e)

Referenced by __msg_rc(), and net_Printf().

#define net_Write ( a,
b,
c,
d,
 )     __net_Write(VLC_OBJECT(a),b,c,d,e)

#define NI_DGRAM   0x10

#define NI_MAXHOST   1025

Referenced by vlc_getaddrinfo().

#define NI_MAXNUMERICHOST   64

#define NI_MAXSERV   32

#define NI_NAMEREQD   0x08

Referenced by stub_getnameinfo().

#define NI_NOFQDN   0x04

#define NI_NUMERICHOST   0x01

#define NI_NUMERICSERV   0x02

Referenced by vlc_getnameinfo().

#define poll ( a,
b,
 )     vlc_poll(a, b, c)


Enumeration Type Documentation

anonymous enum

Enumerator:
POLLIN 
POLLOUT 
POLLPRI 
POLLERR 
POLLHUP 
POLLNVAL 


Function Documentation

int __net_Connect ( vlc_object_t p_this,
const char *  psz_host,
int  i_port,
int  socktype,
int  protocol 
)

int __net_ConnectDgram ( vlc_object_t p_this,
const char *  psz_host,
int  i_port,
int  hlim,
int  proto 
)

static int __net_ConnectTCP ( vlc_object_t obj,
const char *  host,
int  port 
) [inline, static]

References __net_Connect().

char* __net_Gets ( vlc_object_t p_this,
int  fd,
const v_socket_t p_vs 
)

Reads a line from a file descriptor.

This function is not thread-safe; the same file descriptor cI/O annot be read by another thread at the same time (although it can be written to).

Returns:
nul-terminated heap-allocated string, or NULL on I/O error.

References net_Read.

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 
)

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 
)

ssize_t __net_vaPrintf ( vlc_object_t p_this,
int  fd,
const v_socket_t ,
const char *  psz_fmt,
va_list  args 
)

References __net_Write(), and vasprintf().

ssize_t __net_Write ( vlc_object_t p_this,
int  fd,
const v_socket_t ,
const void *  p_data,
size_t  i_data 
)

int net_Accept ( vlc_object_t p_this,
int *  pi_fd 
)

Accepts an new connection on a set of listening sockets.

If there are no pending connections, this function will wait.

Note:
If the thread needs to handle events other than incoming connections, you need to use poll() and net_AcceptSingle() instead.
Parameters:
p_this VLC object for logging and object kill signal
pi_fd listening socket set
Returns:
-1 on error (may be transient error due to network issues), a new socket descriptor on success.

References pollfd::events, pollfd::fd, i, msg_Err, net_AcceptSingle(), net_errno, poll, POLLIN, pollfd::revents, and vlc_object_waitpipe().

int net_AcceptSingle ( vlc_object_t obj,
int  lfd 
)

References pollfd::fd, msg_Dbg, msg_Err, net_errno, and net_SetupSocket().

Referenced by net_Accept(), and Run().

static int net_ConnectUDP ( vlc_object_t obj,
const char *  host,
int  port,
int  hlim 
) [inline, static]

References net_ConnectDgram.

Referenced by Activate(), and CheckAndSend().

static int net_GetPeerAddress ( int  fd,
char *  address,
int *  port 
) [inline, static]

static uint16_t net_GetPort ( const struct sockaddr addr  )  [inline, static]

static int net_GetSockAddress ( int  fd,
char *  address,
int *  port 
) [inline, static]

int* net_Listen ( vlc_object_t p_this,
const char *  psz_host,
int  i_port,
int  protocol 
)

void net_ListenClose ( int *  fd  ) 

static int net_ListenUDP1 ( vlc_object_t obj,
const char *  host,
int  port 
) [inline, static]

References net_OpenDgram.

Referenced by Activate(), InitSocket(), and MMSOpen().

ssize_t net_Printf ( vlc_object_t p_this,
int  fd,
const v_socket_t ,
const char *  psz_fmt,
  ... 
)

int net_SetCSCov ( int  fd,
int  sendcov,
int  recvcov 
)

net_SetCSCov: Sets the send and receive checksum coverage of a socket:

Parameters:
fd socket
sendcov payload coverage of sent packets (bytes), -1 for full
recvcov minimum payload coverage of received packets, -1 for full

References SOL_DCCP, SOL_UDPLITE, VLC_EGENERIC, VLC_SUCCESS, and VLC_UNUSED.

Referenced by Open().

static void net_SetPort ( struct sockaddr addr,
uint16_t  port 
) [inline, static]

Referenced by ParseSDP().

int net_SetupSocket ( int  fd  ) 

Referenced by net_AcceptSingle(), and net_Socket().

static bool net_SockAddrIsMulticast ( const struct sockaddr addr,
socklen_t  len 
) [inline, static]

int net_Socket ( vlc_object_t obj,
int  family,
int  socktype,
int  proto 
)

int net_Subscribe ( vlc_object_t obj,
int  fd,
const struct sockaddr addr,
socklen_t  addrlen 
)

void vlc_freeaddrinfo ( struct addrinfo  ) 

const char* vlc_gai_strerror ( int   ) 

int vlc_getaddrinfo ( vlc_object_t p_this,
const char *  node,
int  i_port,
const struct addrinfo p_hints,
struct addrinfo **  res 
)

Resolves a host name to a list of socket addresses (like getaddrinfo()).

Parameters:
p_this a VLC object
node host name to resolve (encoded as UTF-8), or NULL
i_port port number for the socket addresses
p_hints parameters (see getaddrinfo() manual page)
res pointer set to the resulting chained list.
Returns:
0 on success, a getaddrinfo() error otherwise. On failure, *res is undefined. On success, it must be freed with vlc_freeaddrinfo().

References AF_UNSPEC, AI_CANONNAME, addrinfo::ai_family, addrinfo::ai_flags, AI_NUMERICHOST, AI_NUMERICSERV, AI_PASSIVE, addrinfo::ai_protocol, addrinfo::ai_socktype, EAI_BADFLAGS, EAI_SERVICE, LocaleFree(), msg_Err, NI_MAXHOST, ToLocale(), and var_CreateGetBool.

Referenced by __net_Connect(), __net_ConnectDgram(), __net_OpenDgram(), ACL_Resolve(), net_Listen(), net_ListenSingle(), SocksHandshakeTCP(), and sout_AnnounceRegisterSDP().

int vlc_getnameinfo ( const struct sockaddr ,
int  ,
char *  ,
int  ,
int *  ,
int   
)

const char* vlc_inet_ntop ( int  af,
const void *  src,
char *  dst,
socklen_t  cnt 
)

inet_ntop() replacement

References EAI_FAMILY, inet_ntop, and NI_NUMERICHOST.

int vlc_inet_pton ( int  af,
const char *  src,
void *  dst 
)

int vlc_poll ( struct pollfd fds,
unsigned  nfds,
int  timeout 
)


Generated on Sun Nov 22 08:05:26 2009 for VLC by  doxygen 1.5.6