libosip  5.3.0
Classes | Macros | Typedefs | Enumerations | Functions
osip.h File Reference

oSIP fsm Routines More...

#include <osipparser2/osip_const.h>
#include <osip2/osip_time.h>
#include <osipparser2/osip_parser.h>
#include <osip2/osip_fifo.h>

Go to the source code of this file.

Classes

struct  osip_ict
 
struct  osip_nict
 
struct  osip_ist
 
struct  osip_nist
 
struct  osip_srv_entry
 
struct  osip_srv_record
 
struct  osip_naptr
 
struct  osip_transaction
 
struct  ixt
 
struct  osip
 
struct  osip_event
 

Macros

#define DEFAULT_T1   500 /* 500 ms */
 
#define DEFAULT_T1_TCP_PROGRESS   500 /* 500ms */
 
#define DEFAULT_T2   4000 /* 4s */
 
#define DEFAULT_T4   5000 /* 5s */
 
#define OSIP_SRV_STATE_UNKNOWN   0
 
#define OSIP_SRV_STATE_RETRYLATER   2
 
#define OSIP_SRV_STATE_COMPLETED   3
 
#define OSIP_SRV_STATE_NOTSUPPORTED   4
 
#define OSIP_NAPTR_STATE_UNKNOWN   0
 
#define OSIP_NAPTR_STATE_INPROGRESS   1
 
#define OSIP_NAPTR_STATE_NAPTRDONE   2
 
#define OSIP_NAPTR_STATE_SRVINPROGRESS   3
 
#define OSIP_NAPTR_STATE_SRVDONE   4
 
#define OSIP_NAPTR_STATE_RETRYLATER   5
 
#define OSIP_NAPTR_STATE_NOTSUPPORTED   6
 
#define EVT_IS_RCV_INVITE(event)   (event->type == RCV_REQINVITE)
 
#define EVT_IS_RCV_ACK(event)   (event->type == RCV_REQACK)
 
#define EVT_IS_RCV_REQUEST(event)   (event->type == RCV_REQUEST)
 
#define EVT_IS_RCV_STATUS_1XX(event)   (event->type == RCV_STATUS_1XX)
 
#define EVT_IS_RCV_STATUS_2XX(event)   (event->type == RCV_STATUS_2XX)
 
#define EVT_IS_RCV_STATUS_3456XX(event)   (event->type == RCV_STATUS_3456XX)
 
#define EVT_IS_SND_INVITE(event)   (event->type == SND_REQINVITE)
 
#define EVT_IS_SND_ACK(event)   (event->type == SND_REQACK)
 
#define EVT_IS_SND_REQUEST(event)   (event->type == SND_REQUEST)
 
#define EVT_IS_SND_STATUS_1XX(event)   (event->type == SND_STATUS_1XX)
 
#define EVT_IS_SND_STATUS_2XX(event)   (event->type == SND_STATUS_2XX)
 
#define EVT_IS_SND_STATUS_3456XX(event)   (event->type == SND_STATUS_3456XX)
 
#define EVT_IS_INCOMINGMSG(event)   (event->type >= RCV_REQINVITE && event->type <= RCV_STATUS_3456XX)
 
#define EVT_IS_INCOMINGREQ(event)   (EVT_IS_RCV_INVITE(event) || EVT_IS_RCV_ACK(event) || EVT_IS_RCV_REQUEST(event))
 
#define EVT_IS_INCOMINGRESP(event)   (EVT_IS_RCV_STATUS_1XX(event) || EVT_IS_RCV_STATUS_2XX(event) || EVT_IS_RCV_STATUS_3456XX(event))
 
#define EVT_IS_OUTGOINGMSG(event)   (event->type >= SND_REQINVITE && event->type <= SND_STATUS_3456XX)
 
#define EVT_IS_OUTGOINGREQ(event)   (EVT_IS_SND_INVITE(event) || EVT_IS_SND_ACK(event) || EVT_IS_SND_REQUEST(event))
 
#define EVT_IS_OUTGOINGRESP(event)   (EVT_IS_SND_STATUS_1XX(event) || EVT_IS_SND_STATUS_2XX(event) || EVT_IS_SND_STATUS_3456XX(event))
 
#define EVT_IS_MSG(event)   (event->type >= RCV_REQINVITE && event->type <= SND_STATUS_3456XX)
 
#define EVT_IS_KILL_TRANSACTION(event)   (event->type == KILL_TRANSACTION)
 

Typedefs

typedef enum _state_t state_t
 
typedef enum type_t type_t
 
typedef enum osip_fsm_type_t osip_fsm_type_t
 
typedef struct osip_ict osip_ict_t
 
typedef struct osip_nict osip_nict_t
 
typedef struct osip_ist osip_ist_t
 
typedef struct osip_nist osip_nist_t
 
typedef struct osip_srv_entry osip_srv_entry_t
 
typedef struct osip_srv_record osip_srv_record_t
 
typedef struct osip_naptr osip_naptr_t
 
typedef struct osip_transaction osip_transaction_t
 
typedef enum osip_message_callback_type osip_message_callback_type_t
 
typedef enum osip_kill_callback_type osip_kill_callback_type_t
 
typedef enum osip_transport_error_callback_type osip_transport_error_callback_type_t
 
typedef void(* osip_message_cb_t) (int type, osip_transaction_t *, osip_message_t *)
 
typedef void(* osip_kill_transaction_cb_t) (int type, osip_transaction_t *)
 
typedef void(* osip_transport_error_cb_t) (int type, osip_transaction_t *, int error)
 
typedef struct ixt ixt_t
 
typedef struct osip osip_t
 
typedef struct osip_event osip_event_t
 

Enumerations

enum  _state_t {
  ICT_PRE_CALLING , ICT_CALLING , ICT_PROCEEDING , ICT_COMPLETED ,
  ICT_TERMINATED , IST_PRE_PROCEEDING , IST_PROCEEDING , IST_COMPLETED ,
  IST_CONFIRMED , IST_TERMINATED , NICT_PRE_TRYING , NICT_TRYING ,
  NICT_PROCEEDING , NICT_COMPLETED , NICT_TERMINATED , NIST_PRE_TRYING ,
  NIST_TRYING , NIST_PROCEEDING , NIST_COMPLETED , NIST_TERMINATED
}
 
enum  type_t {
  TIMEOUT_A , TIMEOUT_B , TIMEOUT_D , TIMEOUT_E ,
  TIMEOUT_F , TIMEOUT_K , TIMEOUT_G , TIMEOUT_H ,
  TIMEOUT_I , TIMEOUT_J , RCV_REQINVITE , RCV_REQACK ,
  RCV_REQUEST , RCV_STATUS_1XX , RCV_STATUS_2XX , RCV_STATUS_3456XX ,
  SND_REQINVITE , SND_REQACK , SND_REQUEST , SND_STATUS_1XX ,
  SND_STATUS_2XX , SND_STATUS_3456XX , KILL_TRANSACTION , UNKNOWN_EVT
}
 
enum  osip_fsm_type_t { ICT , IST , NICT , NIST }
 
enum  osip_message_callback_type {
  OSIP_ICT_INVITE_SENT = 0 , OSIP_ICT_INVITE_SENT_AGAIN , OSIP_ICT_ACK_SENT , OSIP_ICT_ACK_SENT_AGAIN ,
  OSIP_ICT_STATUS_1XX_RECEIVED , OSIP_ICT_STATUS_2XX_RECEIVED , OSIP_ICT_STATUS_2XX_RECEIVED_AGAIN , OSIP_ICT_STATUS_3XX_RECEIVED ,
  OSIP_ICT_STATUS_4XX_RECEIVED , OSIP_ICT_STATUS_5XX_RECEIVED , OSIP_ICT_STATUS_6XX_RECEIVED , OSIP_ICT_STATUS_3456XX_RECEIVED_AGAIN ,
  OSIP_IST_INVITE_RECEIVED , OSIP_IST_INVITE_RECEIVED_AGAIN , OSIP_IST_ACK_RECEIVED , OSIP_IST_ACK_RECEIVED_AGAIN ,
  OSIP_IST_STATUS_1XX_SENT , OSIP_IST_STATUS_2XX_SENT , OSIP_IST_STATUS_2XX_SENT_AGAIN , OSIP_IST_STATUS_3XX_SENT ,
  OSIP_IST_STATUS_4XX_SENT , OSIP_IST_STATUS_5XX_SENT , OSIP_IST_STATUS_6XX_SENT , OSIP_IST_STATUS_3456XX_SENT_AGAIN ,
  OSIP_NICT_REGISTER_SENT , OSIP_NICT_BYE_SENT , OSIP_NICT_OPTIONS_SENT , OSIP_NICT_INFO_SENT ,
  OSIP_NICT_CANCEL_SENT , OSIP_NICT_NOTIFY_SENT , OSIP_NICT_SUBSCRIBE_SENT , OSIP_NICT_UNKNOWN_REQUEST_SENT ,
  OSIP_NICT_REQUEST_SENT_AGAIN , OSIP_NICT_STATUS_1XX_RECEIVED , OSIP_NICT_STATUS_2XX_RECEIVED , OSIP_NICT_STATUS_2XX_RECEIVED_AGAIN ,
  OSIP_NICT_STATUS_3XX_RECEIVED , OSIP_NICT_STATUS_4XX_RECEIVED , OSIP_NICT_STATUS_5XX_RECEIVED , OSIP_NICT_STATUS_6XX_RECEIVED ,
  OSIP_NICT_STATUS_3456XX_RECEIVED_AGAIN , OSIP_NIST_REGISTER_RECEIVED , OSIP_NIST_BYE_RECEIVED , OSIP_NIST_OPTIONS_RECEIVED ,
  OSIP_NIST_INFO_RECEIVED , OSIP_NIST_CANCEL_RECEIVED , OSIP_NIST_NOTIFY_RECEIVED , OSIP_NIST_SUBSCRIBE_RECEIVED ,
  OSIP_NIST_UNKNOWN_REQUEST_RECEIVED , OSIP_NIST_REQUEST_RECEIVED_AGAIN , OSIP_NIST_STATUS_1XX_SENT , OSIP_NIST_STATUS_2XX_SENT ,
  OSIP_NIST_STATUS_2XX_SENT_AGAIN , OSIP_NIST_STATUS_3XX_SENT , OSIP_NIST_STATUS_4XX_SENT , OSIP_NIST_STATUS_5XX_SENT ,
  OSIP_NIST_STATUS_6XX_SENT , OSIP_NIST_STATUS_3456XX_SENT_AGAIN , OSIP_ICT_STATUS_TIMEOUT , OSIP_NICT_STATUS_TIMEOUT ,
  OSIP_MESSAGE_CALLBACK_COUNT
}
 
enum  osip_kill_callback_type {
  OSIP_ICT_KILL_TRANSACTION , OSIP_IST_KILL_TRANSACTION , OSIP_NICT_KILL_TRANSACTION , OSIP_NIST_KILL_TRANSACTION ,
  OSIP_KILL_CALLBACK_COUNT
}
 
enum  osip_transport_error_callback_type {
  OSIP_ICT_TRANSPORT_ERROR , OSIP_IST_TRANSPORT_ERROR , OSIP_NICT_TRANSPORT_ERROR , OSIP_NIST_TRANSPORT_ERROR ,
  OSIP_TRANSPORT_ERROR_CALLBACK_COUNT
}
 

Functions

int osip_set_message_callback (osip_t *osip, int type, osip_message_cb_t cb)
 
int osip_set_kill_transaction_callback (osip_t *osip, int type, osip_kill_transaction_cb_t cb)
 
int osip_set_transport_error_callback (osip_t *osip, int type, osip_transport_error_cb_t cb)
 
int osip_transaction_init (osip_transaction_t **transaction, osip_fsm_type_t ctx_type, osip_t *osip, osip_message_t *request)
 
int osip_transaction_free (osip_transaction_t *transaction)
 
int osip_transaction_free2 (osip_transaction_t *transaction)
 
void osip_response_get_destination (osip_message_t *response, char **address, int *portnum)
 
int osip_ict_set_destination (osip_ict_t *ict, char *destination, int port)
 
int osip_nict_set_destination (osip_nict_t *nict, char *destination, int port)
 
int osip_transaction_add_event (osip_transaction_t *transaction, osip_event_t *evt)
 
int osip_transaction_execute (osip_transaction_t *transaction, osip_event_t *evt)
 
int osip_transaction_set_your_instance (osip_transaction_t *transaction, void *ptr)
 
int osip_transaction_set_reserved1 (osip_transaction_t *transaction, void *ptr)
 
int osip_transaction_set_reserved2 (osip_transaction_t *transaction, void *ptr)
 
int osip_transaction_set_reserved3 (osip_transaction_t *transaction, void *ptr)
 
int osip_transaction_set_reserved4 (osip_transaction_t *transaction, void *ptr)
 
int osip_transaction_set_reserved5 (osip_transaction_t *transaction, void *ptr)
 
int osip_transaction_set_reserved6 (osip_transaction_t *transaction, void *ptr)
 
void * osip_transaction_get_your_instance (osip_transaction_t *transaction)
 
void * osip_transaction_get_reserved1 (osip_transaction_t *transaction)
 
void * osip_transaction_get_reserved2 (osip_transaction_t *transaction)
 
void * osip_transaction_get_reserved3 (osip_transaction_t *transaction)
 
void * osip_transaction_get_reserved4 (osip_transaction_t *transaction)
 
void * osip_transaction_get_reserved5 (osip_transaction_t *transaction)
 
void * osip_transaction_get_reserved6 (osip_transaction_t *transaction)
 
int osip_transaction_get_destination (osip_transaction_t *transaction, char **ip, int *port)
 
int osip_transaction_set_srv_record (osip_transaction_t *transaction, osip_srv_record_t *record)
 
int osip_transaction_set_naptr_record (osip_transaction_t *transaction, osip_naptr_t *record)
 
int osip_transaction_set_in_socket (osip_transaction_t *transaction, int sock)
 
int osip_transaction_set_out_socket (osip_transaction_t *transaction, int sock)
 
int osip_init (osip_t **osip)
 
void osip_release (osip_t *osip)
 
void osip_set_application_context (osip_t *osip, void *pointer)
 
void * osip_get_application_context (osip_t *osip)
 
int osip_remove_transaction (osip_t *osip, osip_transaction_t *ict)
 
int osip_ict_execute (osip_t *osip)
 
int osip_ist_execute (osip_t *osip)
 
int osip_nict_execute (osip_t *osip)
 
int osip_nist_execute (osip_t *osip)
 
void osip_timers_gettimeout (osip_t *osip, struct timeval *lower_tv)
 
void osip_timers_ict_execute (osip_t *osip)
 
void osip_timers_ist_execute (osip_t *osip)
 
void osip_timers_nict_execute (osip_t *osip)
 
void osip_timers_nist_execute (osip_t *osip)
 
osip_transaction_tosip_transaction_find (osip_list_t *transactions, osip_event_t *evt)
 
int osip_find_transaction_and_add_event (osip_t *osip, osip_event_t *evt)
 
osip_transaction_tosip_create_transaction (osip_t *osip, osip_event_t *evt)
 
osip_event_tosip_parse (const char *buf, size_t length)
 
void osip_retransmissions_execute (osip_t *osip)
 
void osip_start_200ok_retransmissions (osip_t *osip, struct osip_dialog *dialog, osip_message_t *msg200ok, int sock)
 
void osip_start_ack_retransmissions (osip_t *osip, struct osip_dialog *dialog, osip_message_t *ack, char *dest, int port, int sock)
 
struct osip_dialogosip_stop_200ok_retransmissions (osip_t *osip, osip_message_t *ack)
 
void osip_stop_retransmissions_from_dialog (osip_t *osip, struct osip_dialog *dialog)
 
osip_event_tosip_new_outgoing_sipmessage (osip_message_t *sip)
 
void osip_event_free (osip_event_t *event)
 
void osip_set_cb_send_message (osip_t *cf, int(*cb)(osip_transaction_t *, osip_message_t *, char *, int, int))
 

Detailed Description

oSIP fsm Routines