libgpac
Documentation of the core library of GPAC
Loading...
Searching...
No Matches
os_net.c File Reference
#include <gpac/network.h>
#include <unistd.h>
#include <fcntl.h>
#include <netdb.h>
#include <errno.h>
#include <sys/time.h>
#include <netinet/in.h>
#include <netinet/tcp.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <arpa/inet.h>
#include <assert.h>
#include <gpac/list.h>

Data Structures

struct  GF_Socket
 abstracted socket object More...
 
struct  GF_SockGroup
 abstracted socket group object More...
 

Macros

#define INADDR_NONE   ((unsigned long)-1)
 
#define INVALID_SOCKET   -1
 
#define SOCKET_ERROR   -1
 
#define LASTSOCKERROR   errno
 
#define closesocket(v)   close(v)
 
#define SSO_CAST   (const char *)
 
#define NULL_SOCKET   (SOCKET)NULL
 
#define gf_gethostbyname   gethostbyname
 

Typedefs

typedef s32 SOCKET
 

Enumerations

enum  {
  GF_SOCK_IS_TCP = 1<<9 , GF_SOCK_IS_IPV6 = 1<<10 , GF_SOCK_NON_BLOCKING = 1<<11 , GF_SOCK_IS_MULTICAST = 1<<12 ,
  GF_SOCK_IS_LISTENING = 1<<13 , GF_SOCK_HAS_PEER = 1<<14 , GF_SOCK_IS_UN = 1<<15 , GF_SOCK_HAS_CONNECT = 1<<16
}
 

Functions

GF_EXPORT const char * gf_errno_str (int errnoval)
 error code description
 
GF_EXPORT u32 gf_net_has_ipv6 ()
 gets ipv6 support
 
GF_EXPORT Bool gf_net_is_ipv6 (const char *address)
 checks address type
 
GF_EXPORT GF_Err gf_sk_get_host_name (char *buffer)
 get local host name
 
GF_EXPORT GF_Err gf_sk_get_local_ip (GF_Socket *sock, char *buffer)
 get local IP
 
GF_EXPORT GF_Socket * gf_sk_new (u32 SocketType)
 socket constructor
 
GF_EXPORT GF_Err gf_sk_set_buffer_size (GF_Socket *sock, Bool SendBuffer, u32 NewSize)
 socket buffer size control
 
GF_EXPORT GF_Err gf_sk_set_block_mode (GF_Socket *sock, Bool NonBlockingOn)
 blocking mode control
 
static void gf_sk_free (GF_Socket *sock)
 
GF_EXPORT void gf_sk_del (GF_Socket *sock)
 socket destructor
 
GF_EXPORT void gf_sk_reset (GF_Socket *sock)
 reset internal buffer
 
GF_EXPORT s32 gf_sk_get_handle (GF_Socket *sock)
 gets socket handle
 
GF_EXPORT void gf_sk_set_usec_wait (GF_Socket *sock, u32 usec_wait)
 
GF_EXPORT GF_Err gf_sk_connect (GF_Socket *sock, const char *PeerName, u16 PortNumber, const char *local_ip)
 connects a socket
 
GF_EXPORT GF_Err gf_sk_bind (GF_Socket *sock, const char *local_ip, u16 port, const char *peer_name, u16 peer_port, u32 options)
 socket binding
 
static GF_Err poll_select (GF_Socket *sock, GF_SockSelectMode mode, u32 usec, Bool force_select)
 
GF_EXPORT GF_Err gf_sk_send_ex (GF_Socket *sock, const u8 *buffer, u32 length, u32 *written)
 data emission
 
GF_EXPORT GF_Err gf_sk_send (GF_Socket *sock, const u8 *buffer, u32 length)
 data emission
 
GF_Err gf_sk_select (GF_Socket *sock, u32 mode)
 
GF_EXPORT u32 gf_sk_is_multicast_address (const char *multi_IPAdd)
 multicast address test
 
static GF_Err sk_join_ipv4 (GF_Socket *sock, struct ip_mreq *M_req, u32 TTL, const char **src_ip_inc, u32 nb_src_ip_inc, const char **src_ip_exc, u32 nb_src_ip_exc)
 
GF_EXPORT GF_Err gf_sk_setup_multicast_ex (GF_Socket *sock, const char *multi_IPAdd, u16 MultiPortNumber, u32 TTL, Bool NoBind, char *local_interface_ip, const char **src_ip_inc, u32 nb_src_ip_inc, const char **src_ip_exc, u32 nb_src_ip_exc)
 source-specific multicast setup
 
GF_EXPORT GF_Err gf_sk_setup_multicast (GF_Socket *sock, const char *multi_IPAdd, u16 MultiPortNumber, u32 TTL, Bool NoBind, char *local_interface_ip)
 multicast setup
 
GF_SockGroup * gf_sk_group_new ()
 
void gf_sk_group_del (GF_SockGroup *sg)
 
void gf_sk_group_register (GF_SockGroup *sg, GF_Socket *sk)
 
void gf_sk_group_unregister (GF_SockGroup *sg, GF_Socket *sk)
 
GF_Err gf_sk_group_select (GF_SockGroup *sg, u32 usec_wait, GF_SockSelectMode mode)
 
Bool gf_sk_group_sock_is_set (GF_SockGroup *sg, GF_Socket *sk, GF_SockSelectMode mode)
 
GF_Err gf_sk_receive_internal (GF_Socket *sock, char *buffer, u32 length, u32 *BytesRead, Bool do_select)
 
GF_EXPORT GF_Err gf_sk_receive (GF_Socket *sock, u8 *buffer, u32 length, u32 *BytesRead)
 data reception
 
GF_EXPORT GF_Err gf_sk_receive_no_select (GF_Socket *sock, u8 *buffer, u32 length, u32 *BytesRead)
 
GF_EXPORT GF_Err gf_sk_listen (GF_Socket *sock, u32 MaxConnection)
 socket listening
 
GF_EXPORT GF_Err gf_sk_accept (GF_Socket *sock, GF_Socket **newConnection)
 socket accept
 
GF_EXPORT GF_Err gf_sk_get_local_info (GF_Socket *sock, u16 *Port, u32 *Familly)
 get local info
 
GF_EXPORT GF_Err gf_sk_server_mode (GF_Socket *sock, Bool serverOn)
 server socket mode
 
GF_EXPORT GF_Err gf_sk_get_remote_address (GF_Socket *sock, char *buf)
 get remote address
 
GF_EXPORT GF_Err gf_sk_probe (GF_Socket *sock)
 
GF_EXPORT u32 gf_htonl (u32 val)
 
GF_EXPORT u32 gf_ntohl (u32 val)
 
GF_EXPORT u16 gf_htons (u16 val)
 
GF_EXPORT u16 gf_ntohs (u16 val)
 

Variables

Bool gpac_use_poll =GF_TRUE
 

Data Structure Documentation

◆ __tag_socket

struct __tag_socket

abstracted socket object

The abstracted socket object allows you to build client and server applications very simply with support for unicast and multicast Available tools are socket and socket groups and some helper functions for network time

Data Fields
u32 flags
SOCKET socket
struct sockaddr_in dest_addr
u32 dest_addr_len
u32 usec_wait

◆ __tag_sock_group

struct __tag_sock_group

abstracted socket group object

The abstracted socket group object allows querying multiple sockets in a group

Data Fields
GF_List * sockets
fd_set rgroup
fd_set wgroup

Macro Definition Documentation

◆ INADDR_NONE

#define INADDR_NONE   ((unsigned long)-1)

◆ INVALID_SOCKET

#define INVALID_SOCKET   -1

◆ SOCKET_ERROR

#define SOCKET_ERROR   -1

◆ LASTSOCKERROR

#define LASTSOCKERROR   errno

◆ closesocket

#define closesocket (   v)    close(v)

◆ SSO_CAST

#define SSO_CAST   (const char *)

◆ NULL_SOCKET

#define NULL_SOCKET   (SOCKET)NULL

◆ gf_gethostbyname

#define gf_gethostbyname   gethostbyname

Typedef Documentation

◆ SOCKET

typedef s32 SOCKET

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
GF_SOCK_IS_TCP 
GF_SOCK_IS_IPV6 
GF_SOCK_NON_BLOCKING 
GF_SOCK_IS_MULTICAST 
GF_SOCK_IS_LISTENING 
GF_SOCK_HAS_PEER 
GF_SOCK_IS_UN 
GF_SOCK_HAS_CONNECT 

Function Documentation

◆ gf_sk_free()

static void gf_sk_free ( GF_Socket *  sock)
static

◆ poll_select()

static GF_Err poll_select ( GF_Socket *  sock,
GF_SockSelectMode  mode,
u32  usec,
Bool  force_select 
)
static

◆ gf_sk_select()

GF_Err gf_sk_select ( GF_Socket *  sock,
u32  mode 
)

◆ sk_join_ipv4()

static GF_Err sk_join_ipv4 ( GF_Socket *  sock,
struct ip_mreq *  M_req,
u32  TTL,
const char **  src_ip_inc,
u32  nb_src_ip_inc,
const char **  src_ip_exc,
u32  nb_src_ip_exc 
)
static

◆ gf_sk_receive_internal()

GF_Err gf_sk_receive_internal ( GF_Socket *  sock,
char *  buffer,
u32  length,
u32 BytesRead,
Bool  do_select 
)

Variable Documentation

◆ gpac_use_poll

Bool gpac_use_poll =GF_TRUE