libeXosip2  5.3.0
Data Structures | Macros | Enumerations | Functions
eXosip2 configuration API

Data Structures

struct  eXosip_dns_cache
 
struct  eXosip_stats
 
struct  eXosip_tls_credentials_s
 
struct  eXosip_tls_ctx_s
 

Macros

#define EXOSIP_OPT_UDP_KEEP_ALIVE   (EXOSIP_OPT_BASE_OPTION + 1)
 
#define EXOSIP_OPT_AUTO_MASQUERADE_CONTACT   (EXOSIP_OPT_BASE_OPTION + 2)
 
#define EXOSIP_OPT_USE_RPORT   (EXOSIP_OPT_BASE_OPTION + 7)
 
#define EXOSIP_OPT_SET_IPV4_FOR_GATEWAY   (EXOSIP_OPT_BASE_OPTION + 8)
 
#define EXOSIP_OPT_ADD_DNS_CACHE   (EXOSIP_OPT_BASE_OPTION + 9)
 
#define EXOSIP_OPT_DELETE_DNS_CACHE   (EXOSIP_OPT_BASE_OPTION + 10)
 
#define EXOSIP_OPT_SET_IPV6_FOR_GATEWAY   (EXOSIP_OPT_BASE_OPTION + 12)
 
#define EXOSIP_OPT_ADD_ACCOUNT_INFO   (EXOSIP_OPT_BASE_OPTION + 13)
 
#define EXOSIP_OPT_DNS_CAPABILITIES   (EXOSIP_OPT_BASE_OPTION + 14)
 
#define EXOSIP_OPT_SET_DSCP   (EXOSIP_OPT_BASE_OPTION + 15)
 
#define EXOSIP_OPT_REGISTER_WITH_DATE   (EXOSIP_OPT_BASE_OPTION + 16)
 
#define EXOSIP_OPT_SET_HEADER_USER_AGENT   (EXOSIP_OPT_BASE_OPTION + 17)
 
#define EXOSIP_OPT_ENABLE_DNS_CACHE   (EXOSIP_OPT_BASE_OPTION + 18)
 
#define EXOSIP_OPT_ENABLE_AUTOANSWERBYE   (EXOSIP_OPT_BASE_OPTION + 19)
 
#define EXOSIP_OPT_ENABLE_IPV6   (EXOSIP_OPT_BASE_OPTION + 20)
 
#define EXOSIP_OPT_ENABLE_REUSE_TCP_PORT   (EXOSIP_OPT_BASE_OPTION + 21)
 
#define EXOSIP_OPT_ENABLE_USE_EPHEMERAL_PORT   (EXOSIP_OPT_BASE_OPTION + 22)
 
#define EXOSIP_OPT_SET_CALLBACK_WAKELOCK   (EXOSIP_OPT_BASE_OPTION + 23)
 
#define EXOSIP_OPT_ENABLE_OUTBOUND   (EXOSIP_OPT_BASE_OPTION + 24)
 
#define EXOSIP_OPT_SET_OC_LOCAL_ADDRESS   (EXOSIP_OPT_BASE_OPTION + 25)
 
#define EXOSIP_OPT_SET_OC_PORT_RANGE   (EXOSIP_OPT_BASE_OPTION + 26)
 
#define EXOSIP_OPT_REMOVE_PREROUTESET   (EXOSIP_OPT_BASE_OPTION + 27)
 
#define EXOSIP_OPT_SET_SIP_INSTANCE   (EXOSIP_OPT_BASE_OPTION + 28)
 
#define EXOSIP_OPT_SET_MAX_MESSAGE_TO_READ   (EXOSIP_OPT_BASE_OPTION + 29)
 
#define EXOSIP_OPT_SET_MAX_READ_TIMEOUT   (EXOSIP_OPT_BASE_OPTION + 30)
 
#define EXOSIP_OPT_SET_DEFAULT_CONTACT_DISPLAYNAME   (EXOSIP_OPT_BASE_OPTION + 31)
 
#define EXOSIP_OPT_SET_SESSIONTIMERS_FORCE    (EXOSIP_OPT_BASE_OPTION + 32)
 
#define EXOSIP_OPT_FORCE_CONNECTIONREUSE   (EXOSIP_OPT_BASE_OPTION + 33)
 
#define EXOSIP_OPT_SET_CONTACT_DIALOG_EXTRA_PARAMS   (EXOSIP_OPT_BASE_OPTION + 34)
 
#define EXOSIP_OPT_SET_TLS_VERIFY_CERTIFICATE   (EXOSIP_OPT_BASE_OPTION + 500)
 
#define EXOSIP_OPT_SET_TLS_CERTIFICATES_INFO   (EXOSIP_OPT_BASE_OPTION + 501)
 
#define EXOSIP_OPT_SET_TLS_CLIENT_CERTIFICATE_NAME   (EXOSIP_OPT_BASE_OPTION + 502)
 
#define EXOSIP_OPT_SET_TLS_SERVER_CERTIFICATE_NAME   (EXOSIP_OPT_BASE_OPTION + 503)
 
#define EXOSIP_OPT_SET_TSC_SERVER   (EXOSIP_OPT_BASE_OPTION + 1001)
 
#define EXOSIP_OPT_GET_STATISTICS   (EXOSIP_OPT_BASE_OPTION + 2000)
 

Enumerations

enum  eXosip_tls_ctx_error {
  TLS_OK = 0 ,
  TLS_ERR_NO_RAND = -1 ,
  TLS_ERR_NO_DH_PARAM = -2 ,
  TLS_ERR_NO_PW = -3 ,
  TLS_ERR_NO_ROOT_CA = -4 ,
  TLS_ERR_MISSING_AUTH_PART = -5
}
 

Functions

struct eXosip_t * eXosip_malloc (void)
 
int eXosip_init (struct eXosip_t *excontext)
 
void eXosip_quit (struct eXosip_t *excontext)
 
int eXosip_lock (struct eXosip_t *excontext)
 
int eXosip_unlock (struct eXosip_t *excontext)
 
int eXosip_execute (struct eXosip_t *excontext)
 
int eXosip_set_option (struct eXosip_t *excontext, int opt, const void *value)
 
struct osip_naptr * eXosip_dnsutils_naptr (struct eXosip_t *excontext, const char *domain, const char *protocol, const char *transport, int keep_in_cache)
 
void eXosip_dnsutils_release (struct osip_naptr *naptr_record)
 
int eXosip_dnsutils_dns_process (struct osip_naptr *output_record, int force)
 
int eXosip_dnsutils_rotate_srv (struct osip_srv_record *output_record)
 
int eXosip_listen_addr (struct eXosip_t *excontext, int transport, const char *addr, int port, int family, int secure)
 
int eXosip_reset_transports (struct eXosip_t *excontext)
 
int eXosip_set_socket (struct eXosip_t *excontext, int transport, int socket, int port)
 
void eXosip_set_user_agent (struct eXosip_t *excontext, const char *user_agent)
 
const char * eXosip_get_version (void)
 
int eXosip_set_cbsip_message (struct eXosip_t *excontext, CbSipCallback cbsipCallback)
 
void eXosip_masquerade_contact (struct eXosip_t *excontext, const char *public_address, int port)
 
int eXosip_find_free_port (struct eXosip_t *excontext, int free_port, int transport)
 

Detailed Description

Macro Definition Documentation

◆ EXOSIP_OPT_UDP_KEEP_ALIVE

#define EXOSIP_OPT_UDP_KEEP_ALIVE   (EXOSIP_OPT_BASE_OPTION + 1)

int *: interval for keep alive packets (UDP, TCP, TLS, DTLS)

◆ EXOSIP_OPT_AUTO_MASQUERADE_CONTACT

#define EXOSIP_OPT_AUTO_MASQUERADE_CONTACT   (EXOSIP_OPT_BASE_OPTION + 2)

int *: specific re-usage of "rport"

◆ EXOSIP_OPT_USE_RPORT

#define EXOSIP_OPT_USE_RPORT   (EXOSIP_OPT_BASE_OPTION + 7)

int *: enable or disable rport in via

◆ EXOSIP_OPT_SET_IPV4_FOR_GATEWAY

#define EXOSIP_OPT_SET_IPV4_FOR_GATEWAY   (EXOSIP_OPT_BASE_OPTION + 8)

char *: usually, this is the proxy address

◆ EXOSIP_OPT_ADD_DNS_CACHE

#define EXOSIP_OPT_ADD_DNS_CACHE   (EXOSIP_OPT_BASE_OPTION + 9)

struct eXosip_dns_cache *: force some cache entry to avoid DNS

◆ EXOSIP_OPT_DELETE_DNS_CACHE

#define EXOSIP_OPT_DELETE_DNS_CACHE   (EXOSIP_OPT_BASE_OPTION + 10)

struct eXosip_dns_cache *: force removal of some cache entry to avoid DNS

◆ EXOSIP_OPT_SET_IPV6_FOR_GATEWAY

#define EXOSIP_OPT_SET_IPV6_FOR_GATEWAY   (EXOSIP_OPT_BASE_OPTION + 12)

char *: usually, this is the proxy address

◆ EXOSIP_OPT_ADD_ACCOUNT_INFO

#define EXOSIP_OPT_ADD_ACCOUNT_INFO   (EXOSIP_OPT_BASE_OPTION + 13)

struct eXosip_account_info *: internal stuff

◆ EXOSIP_OPT_DNS_CAPABILITIES

#define EXOSIP_OPT_DNS_CAPABILITIES   (EXOSIP_OPT_BASE_OPTION + 14)

int *: 0 to disable, 2 (default) to use NAPTR/SRV record

◆ EXOSIP_OPT_SET_DSCP

#define EXOSIP_OPT_SET_DSCP   (EXOSIP_OPT_BASE_OPTION + 15)

int *: set a dscp value for SIP socket

◆ EXOSIP_OPT_REGISTER_WITH_DATE

#define EXOSIP_OPT_REGISTER_WITH_DATE   (EXOSIP_OPT_BASE_OPTION + 16)

int *: enable usage of Date header in REGISTER

◆ EXOSIP_OPT_SET_HEADER_USER_AGENT

#define EXOSIP_OPT_SET_HEADER_USER_AGENT   (EXOSIP_OPT_BASE_OPTION + 17)

char *: set the User-Agent header

◆ EXOSIP_OPT_ENABLE_DNS_CACHE

#define EXOSIP_OPT_ENABLE_DNS_CACHE   (EXOSIP_OPT_BASE_OPTION + 18)

int *: 0 to disable use of cache

◆ EXOSIP_OPT_ENABLE_AUTOANSWERBYE

#define EXOSIP_OPT_ENABLE_AUTOANSWERBYE   (EXOSIP_OPT_BASE_OPTION + 19)

int *: 0 to disable automatic answer of BYE

◆ EXOSIP_OPT_ENABLE_IPV6

#define EXOSIP_OPT_ENABLE_IPV6   (EXOSIP_OPT_BASE_OPTION + 20)

int *: 0 to disable, 1 to use only IPv6, 2 to use choose the best -this is a per-eXosip_t parameter for using IPv6 DNS request

◆ EXOSIP_OPT_ENABLE_REUSE_TCP_PORT

#define EXOSIP_OPT_ENABLE_REUSE_TCP_PORT   (EXOSIP_OPT_BASE_OPTION + 21)

int *: 0 to disable, 1 to enable reusing local tcp port for outgoing tcp connection

◆ EXOSIP_OPT_ENABLE_USE_EPHEMERAL_PORT

#define EXOSIP_OPT_ENABLE_USE_EPHEMERAL_PORT   (EXOSIP_OPT_BASE_OPTION + 22)

int *: 0 to disable, 1 to enable usage of emphemeral tcp port in Contact headers instead of local listening port for TCP/TLS

◆ EXOSIP_OPT_SET_CALLBACK_WAKELOCK

#define EXOSIP_OPT_SET_CALLBACK_WAKELOCK   (EXOSIP_OPT_BASE_OPTION + 23)

CbSipWakeLock *: set a callback to be called upon start/end of transaction

◆ EXOSIP_OPT_ENABLE_OUTBOUND

#define EXOSIP_OPT_ENABLE_OUTBOUND   (EXOSIP_OPT_BASE_OPTION + 24)

int *: 0 to disable, 1 to enable usage of ob parmeter (rfc 5626) in dialog's contact headers

◆ EXOSIP_OPT_SET_OC_LOCAL_ADDRESS

#define EXOSIP_OPT_SET_OC_LOCAL_ADDRESS   (EXOSIP_OPT_BASE_OPTION + 25)

char *: set the ip address to bind for outbound connection

◆ EXOSIP_OPT_SET_OC_PORT_RANGE

#define EXOSIP_OPT_SET_OC_PORT_RANGE   (EXOSIP_OPT_BASE_OPTION + 26)

int[2] *: set the port range (min, max) to bind for outbound connection (if EXOSIP_OPT_SET_OC_LOCAL_ADDRESS is not used, this options apply to TCP/TLS only)

◆ EXOSIP_OPT_REMOVE_PREROUTESET

#define EXOSIP_OPT_REMOVE_PREROUTESET   (EXOSIP_OPT_BASE_OPTION + 27)

int *: 0: keep pre-route set in initial INVITE/SUBSCRIBE/REFER, 1 (default): remove pre-route set

◆ EXOSIP_OPT_SET_SIP_INSTANCE

#define EXOSIP_OPT_SET_SIP_INSTANCE   (EXOSIP_OPT_BASE_OPTION + 28)

char *: define +sip.instance parameter in Contact headers (example: urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6)

◆ EXOSIP_OPT_SET_MAX_MESSAGE_TO_READ

#define EXOSIP_OPT_SET_MAX_MESSAGE_TO_READ   (EXOSIP_OPT_BASE_OPTION + 29)

int: set the number of message to read at once for each network processing (high load traffic use-case: DO NOT USE FOR COMMON USAGE)

◆ EXOSIP_OPT_SET_MAX_READ_TIMEOUT

#define EXOSIP_OPT_SET_MAX_READ_TIMEOUT   (EXOSIP_OPT_BASE_OPTION + 30)

long int: set the period in nano seconds during we read for sip message. (high load traffic use-case: DO NOT USE FOR COMMON USAGE)

◆ EXOSIP_OPT_SET_DEFAULT_CONTACT_DISPLAYNAME

#define EXOSIP_OPT_SET_DEFAULT_CONTACT_DISPLAYNAME   (EXOSIP_OPT_BASE_OPTION + 31)

char *: define a display name to be added in Contact headers (example: "john Doe")

◆ EXOSIP_OPT_SET_SESSIONTIMERS_FORCE

#define EXOSIP_OPT_SET_SESSIONTIMERS_FORCE    (EXOSIP_OPT_BASE_OPTION + 32)

int *: 0 (default): activate "session timers" if supported on both side, 1: if remote side (UAS) do not indicate support for "session timers", activate feature on UAC (local) side

◆ EXOSIP_OPT_FORCE_CONNECTIONREUSE

#define EXOSIP_OPT_FORCE_CONNECTIONREUSE   (EXOSIP_OPT_BASE_OPTION + 33)

int *: 0 to disable, 1 to force reusing established connection for ACK and dialog message

◆ EXOSIP_OPT_SET_CONTACT_DIALOG_EXTRA_PARAMS

#define EXOSIP_OPT_SET_CONTACT_DIALOG_EXTRA_PARAMS   (EXOSIP_OPT_BASE_OPTION + 34)

char *: define extra parameters in Contact headers (example: "audio;video;xxx=yyy" parameter must not contains initial ";")

◆ EXOSIP_OPT_SET_TLS_VERIFY_CERTIFICATE

#define EXOSIP_OPT_SET_TLS_VERIFY_CERTIFICATE   (EXOSIP_OPT_BASE_OPTION + 500)

int *: enable verification of certificate for TLS connection

◆ EXOSIP_OPT_SET_TLS_CERTIFICATES_INFO

#define EXOSIP_OPT_SET_TLS_CERTIFICATES_INFO   (EXOSIP_OPT_BASE_OPTION + 501)

eXosip_tls_ctx_t *: client and/or server certificate/ca-root/key info

◆ EXOSIP_OPT_SET_TLS_CLIENT_CERTIFICATE_NAME

#define EXOSIP_OPT_SET_TLS_CLIENT_CERTIFICATE_NAME   (EXOSIP_OPT_BASE_OPTION + 502)

char*: user can choose a specific certifcate present in Windows Certificate Store

◆ EXOSIP_OPT_SET_TLS_SERVER_CERTIFICATE_NAME

#define EXOSIP_OPT_SET_TLS_SERVER_CERTIFICATE_NAME   (EXOSIP_OPT_BASE_OPTION + 503)

char*: user can choose a specific certifcate present in Windows Certificate Store

◆ EXOSIP_OPT_SET_TSC_SERVER

#define EXOSIP_OPT_SET_TSC_SERVER   (EXOSIP_OPT_BASE_OPTION + 1001)

deprecated

◆ EXOSIP_OPT_GET_STATISTICS

#define EXOSIP_OPT_GET_STATISTICS   (EXOSIP_OPT_BASE_OPTION + 2000)

struct eXosip_stats*: retreive numerous statistics about transactions, registrations, calls, publications and subscriptions...

Enumeration Type Documentation

◆ eXosip_tls_ctx_error

An enumeration which describes the error which can occur while setting the eXosip_tls_ctx

Enumerator
TLS_OK 

yippieh, everything is fine :)

TLS_ERR_NO_RAND 

no absolute path to the random file was specified

TLS_ERR_NO_DH_PARAM 

no absolute path to the diifie hellman file was specified

TLS_ERR_NO_PW 

no password was specified

TLS_ERR_NO_ROOT_CA 

no absolute path to the rootCA file was specified

TLS_ERR_MISSING_AUTH_PART 

something is missing: the private key or the certificate

Function Documentation

◆ eXosip_malloc()

struct eXosip_t* eXosip_malloc ( void  )

Allocate an eXosip context.

Returns
a new allocated eXosip_t instance.

◆ eXosip_init()

int eXosip_init ( struct eXosip_t *  excontext)

Initiate the eXtented oSIP library.

Parameters
excontexteXosip_t instance.

◆ eXosip_quit()

void eXosip_quit ( struct eXosip_t *  excontext)

Release ressource used by the eXtented oSIP library.

Parameters
excontexteXosip_t instance.

◆ eXosip_lock()

int eXosip_lock ( struct eXosip_t *  excontext)

Lock the eXtented oSIP library.

Parameters
excontexteXosip_t instance.

◆ eXosip_unlock()

int eXosip_unlock ( struct eXosip_t *  excontext)

UnLock the eXtented oSIP library.

Parameters
excontexteXosip_t instance.

◆ eXosip_execute()

int eXosip_execute ( struct eXosip_t *  excontext)

Process (non-threaded mode ONLY) eXosip events.

Parameters
excontexteXosip_t instance.

◆ eXosip_set_option()

int eXosip_set_option ( struct eXosip_t *  excontext,
int  opt,
const void *  value 
)

Set eXosip options. See eXosip_option for available options.

Parameters
excontexteXosip_t instance.
optoption to configure.
valuevalue for options.

◆ eXosip_dnsutils_naptr()

struct osip_naptr* eXosip_dnsutils_naptr ( struct eXosip_t *  excontext,
const char *  domain,
const char *  protocol,
const char *  transport,
int  keep_in_cache 
)

Start and return osip_naptr context. Note that DNS results might not yet be available.

If you provide a FQDN, a NAPTR query will be done on it. For example: "antisip.com"

If you wish to do a ENUM query, you need to specify both the domain to query and the AUS (ie, the number dialed). You will use a "!" separator between them. For example, to query "+123456789" on "e164.org", please use: "e164.org!+123456789"

Parameters
excontexteXosip_t instance.
domaindomain name for NAPTR record OR ENUM query (such as e164.org!+123456789)
protocolprotocol to use ("SIP")
transporttransport to use ("UDP")
keep_in_cachekeep result in cache if >0

◆ eXosip_dnsutils_release()

void eXosip_dnsutils_release ( struct osip_naptr *  naptr_record)

For every eXosip_dnsutils_naptr query you make you must call eXosip_dnsutils_release to release the memory.

Parameters
naptr_recordthe naptr structure to release.

◆ eXosip_dnsutils_dns_process()

int eXosip_dnsutils_dns_process ( struct osip_naptr *  output_record,
int  force 
)

Continue to process asynchronous DNS request (if implemented).

Parameters
output_recordresult structure.
forceforce waiting for final answer if >0

◆ eXosip_dnsutils_rotate_srv()

int eXosip_dnsutils_rotate_srv ( struct osip_srv_record *  output_record)

Rotate first SRV entry to last SRV entry.

Parameters
output_recordresult structure.

◆ eXosip_listen_addr()

int eXosip_listen_addr ( struct eXosip_t *  excontext,
int  transport,
const char *  addr,
int  port,
int  family,
int  secure 
)

Listen on a specified socket.

Parameters
excontexteXosip_t instance.
transportIPPROTO_UDP for udp. (soon to come: TCP/TLS?)
addrthe address to bind (NULL for all interface)
portthe listening port. (0 for random port)
familythe IP family (AF_INET or AF_INET6).
secure0 for UDP or TCP, 1 for TLS (with TCP).

◆ eXosip_reset_transports()

int eXosip_reset_transports ( struct eXosip_t *  excontext)

Reset transport sockets.

Parameters
excontexteXosip_t instance.

◆ eXosip_set_socket()

int eXosip_set_socket ( struct eXosip_t *  excontext,
int  transport,
int  socket,
int  port 
)

Listen on a specified socket.

Parameters
excontexteXosip_t instance.
transportIPPROTO_UDP for udp. (soon to come: TCP/TLS?)
socketsocket to use for listening to UDP sip messages.
portthe listening port for masquerading.

◆ eXosip_set_user_agent()

void eXosip_set_user_agent ( struct eXosip_t *  excontext,
const char *  user_agent 
)

Set the SIP User-Agent: header string.

Parameters
excontexteXosip_t instance.
user_agentthe User-Agent header to insert in messages.

◆ eXosip_get_version()

const char* eXosip_get_version ( void  )

Get the eXosip version as a sring

◆ eXosip_set_cbsip_message()

int eXosip_set_cbsip_message ( struct eXosip_t *  excontext,
CbSipCallback  cbsipCallback 
)

Set a callback to get sent and received SIP messages.

Parameters
excontexteXosip_t instance.
cbsipCallbackthe callback to retreive messages.

◆ eXosip_masquerade_contact()

void eXosip_masquerade_contact ( struct eXosip_t *  excontext,
const char *  public_address,
int  port 
)

This method is used to replace contact address with the public address of your NAT. The ip address should be retreived manually (fixed IP address) or with STUN. This address will only be used when the remote correspondant appears to be on an DIFFERENT LAN.

Parameters
excontexteXosip_t instance.
public_addressthe ip address.
portthe port for masquerading.

If set to NULL, then the local ip address will be guessed automatically (returns to default mode).

◆ eXosip_find_free_port()

int eXosip_find_free_port ( struct eXosip_t *  excontext,
int  free_port,
int  transport 
)

This method is used to find out an free IPPROTO_UDP or IPPROTO_TCP port.

Parameters
excontexteXosip_t instance.
free_portinitial port for search.
transportIPPROTO_UDP or IPPROTO_TCP protocol.