FFmpeg  4.0
Data Structures | Macros | Functions
network.h File Reference
#include <errno.h>
#include <stdint.h>
#include "config.h"
#include "libavutil/error.h"
#include "os_support.h"
#include "avio.h"
#include "url.h"
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/tcp.h>
#include <netdb.h>

Go to the source code of this file.

Data Structures

struct  sockaddr_storage
 
union  sockaddr_union
 
struct  addrinfo
 

Macros

#define ff_neterrno()   AVERROR(errno)
 
#define MSG_NOSIGNAL   0
 
#define EAI_AGAIN   2
 
#define EAI_BADFLAGS   3
 
#define EAI_FAIL   4
 
#define EAI_FAMILY   5
 
#define EAI_MEMORY   6
 
#define EAI_NODATA   7
 
#define EAI_NONAME   8
 
#define EAI_SERVICE   9
 
#define EAI_SOCKTYPE   10
 
#define AI_PASSIVE   1
 
#define AI_CANONNAME   2
 
#define AI_NUMERICHOST   4
 
#define NI_NOFQDN   1
 
#define NI_NUMERICHOST   2
 
#define NI_NAMERQD   4
 
#define NI_NUMERICSERV   8
 
#define NI_DGRAM   16
 
#define getaddrinfo   ff_getaddrinfo
 
#define freeaddrinfo   ff_freeaddrinfo
 
#define getnameinfo   ff_getnameinfo
 
#define gai_strerror   ff_gai_strerror
 
#define INADDR_LOOPBACK   0x7f000001
 
#define INET_ADDRSTRLEN   16
 
#define INET6_ADDRSTRLEN   INET_ADDRSTRLEN
 
#define IN_MULTICAST(a)   ((((uint32_t)(a)) & 0xf0000000) == 0xe0000000)
 
#define IN6_IS_ADDR_MULTICAST(a)   (((uint8_t *) (a))[0] == 0xff)
 
#define POLLING_TIME   100
 

Functions

int ff_socket_nonblock (int socket, int enable)
 
int ff_network_init (void)
 
void ff_network_close (void)
 
int ff_tls_init (void)
 
void ff_tls_deinit (void)
 
int ff_network_wait_fd (int fd, int write)
 
int ff_network_wait_fd_timeout (int fd, int write, int64_t timeout, AVIOInterruptCB *int_cb)
 This works similarly to ff_network_wait_fd, but waits up to 'timeout' microseconds Uses ff_network_wait_fd in a loop. More...
 
int ff_network_sleep_interruptible (int64_t timeout, AVIOInterruptCB *int_cb)
 Waits for up to 'timeout' microseconds. More...
 
int ff_getaddrinfo (const char *node, const char *service, const struct addrinfo *hints, struct addrinfo **res)
 
void ff_freeaddrinfo (struct addrinfo *res)
 
int ff_getnameinfo (const struct sockaddr *sa, int salen, char *host, int hostlen, char *serv, int servlen, int flags)
 
const char * ff_gai_strerror (int ecode)
 
int ff_is_multicast_address (struct sockaddr *addr)
 
int ff_listen_bind (int fd, const struct sockaddr *addr, socklen_t addrlen, int timeout, URLContext *h)
 Bind to a file descriptor and poll for a connection. More...
 
int ff_listen (int fd, const struct sockaddr *addr, socklen_t addrlen)
 Bind to a file descriptor to an address without accepting connections. More...
 
int ff_accept (int fd, int timeout, URLContext *h)
 Poll for a single connection on the passed file descriptor. More...
 
int ff_listen_connect (int fd, const struct sockaddr *addr, socklen_t addrlen, int timeout, URLContext *h, int will_try_next)
 Connect to a file descriptor and poll for result. More...
 
int ff_http_match_no_proxy (const char *no_proxy, const char *hostname)
 
int ff_socket (int domain, int type, int protocol)
 

Macro Definition Documentation

◆ ff_neterrno

#define ff_neterrno ( )    AVERROR(errno)

◆ MSG_NOSIGNAL

#define MSG_NOSIGNAL   0

Definition at line 130 of file network.h.

Referenced by ff_sctp_send(), sctp_write(), tcp_write(), and unix_write().

◆ EAI_AGAIN

#define EAI_AGAIN   2

Definition at line 148 of file network.h.

◆ EAI_BADFLAGS

#define EAI_BADFLAGS   3

Definition at line 151 of file network.h.

◆ EAI_FAIL

#define EAI_FAIL   4

Definition at line 154 of file network.h.

◆ EAI_FAMILY

#define EAI_FAMILY   5

Definition at line 157 of file network.h.

◆ EAI_MEMORY

#define EAI_MEMORY   6

Definition at line 160 of file network.h.

◆ EAI_NODATA

#define EAI_NODATA   7

Definition at line 163 of file network.h.

◆ EAI_NONAME

#define EAI_NONAME   8

Definition at line 166 of file network.h.

◆ EAI_SERVICE

#define EAI_SERVICE   9

Definition at line 169 of file network.h.

◆ EAI_SOCKTYPE

#define EAI_SOCKTYPE   10

Definition at line 172 of file network.h.

◆ AI_PASSIVE

#define AI_PASSIVE   1

Definition at line 176 of file network.h.

Referenced by libsrt_setup(), tcp_open(), and udp_socket_create().

◆ AI_CANONNAME

#define AI_CANONNAME   2

Definition at line 180 of file network.h.

◆ AI_NUMERICHOST

#define AI_NUMERICHOST   4

Definition at line 184 of file network.h.

Referenced by ff_tls_open_underlying(), ff_url_join(), and get_sockaddr().

◆ NI_NOFQDN

#define NI_NOFQDN   1

Definition at line 188 of file network.h.

◆ NI_NUMERICHOST

#define NI_NUMERICHOST   2

Definition at line 192 of file network.h.

Referenced by ff_rtsp_open_transport_ctx().

◆ NI_NAMERQD

#define NI_NAMERQD   4

Definition at line 196 of file network.h.

◆ NI_NUMERICSERV

#define NI_NUMERICSERV   8

Definition at line 200 of file network.h.

Referenced by udp_port().

◆ NI_DGRAM

#define NI_DGRAM   16

Definition at line 204 of file network.h.

◆ getaddrinfo

#define getaddrinfo   ff_getaddrinfo

◆ freeaddrinfo

#define freeaddrinfo   ff_freeaddrinfo

◆ getnameinfo

#define getnameinfo   ff_getnameinfo

Definition at line 216 of file network.h.

Referenced by ff_rtsp_open_transport_ctx(), and udp_port().

◆ gai_strerror

#define gai_strerror   ff_gai_strerror

◆ INADDR_LOOPBACK

#define INADDR_LOOPBACK   0x7f000001

Definition at line 226 of file network.h.

◆ INET_ADDRSTRLEN

#define INET_ADDRSTRLEN   16

Definition at line 230 of file network.h.

◆ INET6_ADDRSTRLEN

#define INET6_ADDRSTRLEN   INET_ADDRSTRLEN

Definition at line 234 of file network.h.

◆ IN_MULTICAST

#define IN_MULTICAST (   a)    ((((uint32_t)(a)) & 0xf0000000) == 0xe0000000)

Definition at line 238 of file network.h.

Referenced by ff_is_multicast_address().

◆ IN6_IS_ADDR_MULTICAST

#define IN6_IS_ADDR_MULTICAST (   a)    (((uint8_t *) (a))[0] == 0xff)

Definition at line 241 of file network.h.

Referenced by ff_is_multicast_address().

◆ POLLING_TIME

#define POLLING_TIME   100

Function Documentation

◆ ff_socket_nonblock()

int ff_socket_nonblock ( int  socket,
int  enable 
)

◆ ff_network_init()

int ff_network_init ( void  )

◆ ff_network_close()

void ff_network_close ( void  )

◆ ff_tls_init()

int ff_tls_init ( void  )

Definition at line 30 of file network.c.

Referenced by avformat_network_init().

◆ ff_tls_deinit()

void ff_tls_deinit ( void  )

Definition at line 45 of file network.c.

Referenced by avformat_network_deinit().

◆ ff_network_wait_fd()

int ff_network_wait_fd ( int  fd,
int  write 
)

◆ ff_network_wait_fd_timeout()

int ff_network_wait_fd_timeout ( int  fd,
int  write,
int64_t  timeout,
AVIOInterruptCB int_cb 
)

This works similarly to ff_network_wait_fd, but waits up to 'timeout' microseconds Uses ff_network_wait_fd in a loop.

Socket descriptor Set 1 to wait for socket able to be read, 0 to be written Timeout interval, in microseconds. Actual precision is 100000 mcs, due to ff_network_wait_fd usage

Parameters
int_cbInterrupt callback, is checked before each ff_network_wait_fd call
Returns
0 if data can be read/written, AVERROR(ETIMEDOUT) if timeout expired, or negative error code

Definition at line 77 of file network.c.

Referenced by tcp_read(), and tcp_write().

◆ ff_network_sleep_interruptible()

int ff_network_sleep_interruptible ( int64_t  timeout,
AVIOInterruptCB int_cb 
)

Waits for up to 'timeout' microseconds.

If the usert's int_cb is set and triggered, return before that. Timeout in microseconds. Maybe have lower actual precision.

Parameters
int_cbInterrupt callback, is checked regularly.
Returns
AVERROR(ETIMEDOUT) if timeout expirted, AVERROR_EXIT if interrupted by int_cb

Definition at line 97 of file network.c.

Referenced by http_read_stream().

◆ ff_getaddrinfo()

int ff_getaddrinfo ( const char *  node,
const char *  service,
const struct addrinfo hints,
struct addrinfo **  res 
)

◆ ff_freeaddrinfo()

void ff_freeaddrinfo ( struct addrinfo res)

◆ ff_getnameinfo()

int ff_getnameinfo ( const struct sockaddr *  sa,
int  salen,
char *  host,
int  hostlen,
char *  serv,
int  servlen,
int  flags 
)

◆ ff_gai_strerror()

const char* ff_gai_strerror ( int  ecode)

◆ ff_is_multicast_address()

int ff_is_multicast_address ( struct sockaddr *  addr)

Definition at line 144 of file network.c.

Referenced by ff_udp_set_remote_url().

◆ ff_listen_bind()

int ff_listen_bind ( int  fd,
const struct sockaddr *  addr,
socklen_t  addrlen,
int  timeout,
URLContext h 
)

Bind to a file descriptor and poll for a connection.

Parameters
fdFirst argument of bind().
addrSecond argument of bind().
addrlenThird argument of bind().
timeoutPolling timeout in milliseconds.
hURLContext providing interrupt check callback and logging context.
Returns
A non-blocking file descriptor on success or an AVERROR on failure.

Definition at line 239 of file network.c.

Referenced by sctp_open(), tcp_open(), and unix_open().

◆ ff_listen()

int ff_listen ( int  fd,
const struct sockaddr *  addr,
socklen_t  addrlen 
)

Bind to a file descriptor to an address without accepting connections.

Parameters
fdFirst argument of bind().
addrSecond argument of bind().
addrlenThird argument of bind().
Returns
0 on success or an AVERROR on failure.

Definition at line 203 of file network.c.

Referenced by ff_listen_bind(), and tcp_open().

◆ ff_accept()

int ff_accept ( int  fd,
int  timeout,
URLContext h 
)

Poll for a single connection on the passed file descriptor.

Parameters
fdThe listening socket file descriptor.
timeoutPolling timeout in milliseconds.
hURLContext providing interrupt check callback and logging context.
Returns
A non-blocking file descriptor on success or an AVERROR on failure.

Definition at line 221 of file network.c.

Referenced by ff_listen_bind(), and tcp_accept().

◆ ff_listen_connect()

int ff_listen_connect ( int  fd,
const struct sockaddr *  addr,
socklen_t  addrlen,
int  timeout,
URLContext h,
int  will_try_next 
)

Connect to a file descriptor and poll for result.

Parameters
fdFirst argument of connect(), will be set as non-blocking.
addrSecond argument of connect().
addrlenThird argument of connect().
timeoutPolling timeout in milliseconds.
hURLContext providing interrupt check callback and logging context.
will_try_nextWhether the caller will try to connect to another address for the same host name, affecting the form of logged errors.
Returns
0 on success, AVERROR on failure.

Definition at line 251 of file network.c.

Referenced by sctp_open(), tcp_open(), and unix_open().

◆ ff_http_match_no_proxy()

int ff_http_match_no_proxy ( const char *  no_proxy,
const char *  hostname 
)

Definition at line 320 of file network.c.

Referenced by ff_tls_open_underlying(), http_open_cnx_internal(), and test().

◆ ff_socket()

int ff_socket ( int  domain,
int  type,
int  protocol 
)

Definition at line 179 of file network.c.

Referenced by sctp_open(), tcp_open(), udp_socket_create(), and unix_open().