oSIP fsm Handling
[State Machines]


Classes

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

Defines

#define DEFAULT_T1   500
#define DEFAULT_T2   4000
#define DEFAULT_T4   5000
#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)
#define EVT_IS_INCOMINGREQ(event)
#define EVT_IS_INCOMINGRESP(event)
#define EVT_IS_OUTGOINGMSG(event)
#define EVT_IS_OUTGOINGREQ(event)
#define EVT_IS_OUTGOINGRESP(event)
#define EVT_IS_MSG(event)
#define EVT_IS_KILL_TRANSACTION(event)   (event->type==KILL_TRANSACTION)

Typedefs

typedef enum _state_t state_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_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_t 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 *instance)
void * osip_transaction_get_your_instance (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_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))

Define Documentation

#define DEFAULT_T1   500

You can re-define the default value for T1. (T1 is defined in rfcxxxx) The default value is 500ms.

#define DEFAULT_T2   4000

You can re-define the default value for T2. (T2 is defined in rfcxxxx) The default value is 4000ms.

#define DEFAULT_T4   5000

You can re-define the default value for T4. (T1 is defined in rfcxxxx) The default value is 5000ms.

#define EVT_IS_INCOMINGMSG ( event   ) 

Value:

(event->type>=RCV_REQINVITE \
                                       &&event->type<=RCV_STATUS_3456XX)
Check if the sipevent is of an incoming SIP MESSAGE.
Parameters:
event the event to check.

#define EVT_IS_INCOMINGREQ ( event   ) 

Value:

(EVT_IS_RCV_INVITE(event) \
                                       ||EVT_IS_RCV_ACK(event) \
                                       ||EVT_IS_RCV_REQUEST(event))
Check if the sipevent is of an incoming SIP REQUEST.
Parameters:
event the event to check.

#define EVT_IS_INCOMINGRESP ( event   ) 

Value:

Check if the sipevent is of an incoming SIP RESPONSE.
Parameters:
event the event to check.

#define EVT_IS_KILL_TRANSACTION ( event   )     (event->type==KILL_TRANSACTION)

Check if the sipevent is of type KILL_TRANSACTION. NOTE: THIS IS AN INTERNAL METHOD ONLY

Parameters:
event the event to check.

#define EVT_IS_MSG ( event   ) 

Value:

(event->type>=RCV_REQINVITE \
                                       &&event->type<=SND_STATUS_3456XX)
Check if the sipevent is a SIP MESSAGE.
Parameters:
event the event to check.

#define EVT_IS_OUTGOINGMSG ( event   ) 

Value:

(event->type>=SND_REQINVITE \
                                       &&event->type<=SND_STATUS_3456XX)
Check if the sipevent is of an outgoing SIP MESSAGE.
Parameters:
event the event to check.

#define EVT_IS_OUTGOINGREQ ( event   ) 

Value:

(EVT_IS_SND_INVITE(event) \
                                       ||EVT_IS_SND_ACK(event) \
                                       ||EVT_IS_SND_REQUEST(event))
Check if the sipevent is of an outgoing SIP REQUEST.
Parameters:
event the event to check.

#define EVT_IS_OUTGOINGRESP ( event   ) 

Value:

Check if the sipevent is of an outgoing SIP RESPONSE.
Parameters:
event the event to check.

#define EVT_IS_RCV_ACK ( event   )     (event->type==RCV_REQACK)

Check if the sipevent is of type RCV_REQACK.

Parameters:
event the event to check.

#define EVT_IS_RCV_INVITE ( event   )     (event->type==RCV_REQINVITE)

Check if the sipevent is of type RCV_REQINVITE.

Parameters:
event the event to check.

#define EVT_IS_RCV_REQUEST ( event   )     (event->type==RCV_REQUEST)

Check if the sipevent is of type RCV_REQUEST.

Parameters:
event the event to check.

#define EVT_IS_RCV_STATUS_1XX ( event   )     (event->type==RCV_STATUS_1XX)

Check if the sipevent is of type RCV_STATUS_1XX.

Parameters:
event the event to check.

#define EVT_IS_RCV_STATUS_2XX ( event   )     (event->type==RCV_STATUS_2XX)

Check if the sipevent is of type RCV_STATUS_2XX.

Parameters:
event the event to check.

#define EVT_IS_RCV_STATUS_3456XX ( event   )     (event->type==RCV_STATUS_3456XX)

Check if the sipevent is of type RCV_STATUS_3456XX.

Parameters:
event the event to check.

#define EVT_IS_SND_ACK ( event   )     (event->type==SND_REQACK)

Check if the sipevent is of type SND_REQACK.

Parameters:
event the event to check.

#define EVT_IS_SND_INVITE ( event   )     (event->type==SND_REQINVITE)

Check if the sipevent is of type SND_REQINVITE.

Parameters:
event the event to check.

#define EVT_IS_SND_REQUEST ( event   )     (event->type==SND_REQUEST)

Check if the sipevent is of type SND_REQUEST.

Parameters:
event the event to check.

#define EVT_IS_SND_STATUS_1XX ( event   )     (event->type==SND_STATUS_1XX)

Check if the sipevent is of type SND_STATUS_1XX.

Parameters:
event the event to check.

#define EVT_IS_SND_STATUS_2XX ( event   )     (event->type==SND_STATUS_2XX)

Check if the sipevent is of type SND_STATUS_2XX.

Parameters:
event the event to check.

#define EVT_IS_SND_STATUS_3456XX ( event   )     (event->type==SND_STATUS_3456XX)

Check if the sipevent is of type SND_STATUS_3456XX.

Parameters:
event the event to check.


Typedef Documentation

ixt_t

Structure for 2XX retransmission management.

osip_event_t

Structure for osip event handling. A osip_event_t element will have a type and will be related to a transaction. In the general case, it is used by the application layer to give SIP messages to the oSIP finite state machine.

osip_ict_t

Structure for INVITE CLIENT TRANSACTION (outgoing INVITE transaction).

osip_ist_t

Structure for INVITE SERVER TRANSACTION (incoming INVITE transaction).

osip_kill_transaction_cb_t

Callback definition for end of transaction announcements.

osip_message_cb_t

Callback definition for message announcements.

osip_nict_t

Structure for NON-INVITE CLIENT TRANSACTION (outgoing NON-INVITE transaction).

osip_nist_t

Structure for NON-INVITE SERVER TRANSACTION (incoming SERVER transaction).

osip_srv_entry_t

Structure for SRV record entry.

osip_srv_record_t

Structure for SRV record.

osip_t

Structure for osip handling. In order to use osip, you have to manage at least one global instance of an osip_t element. Then, you'll register a set of required callbacks and a set of optional ones.

osip_transaction_t

Structure for transaction handling.

osip_transport_error_callback_type_t

Enumeration for callback type used when a transport error is detected.

osip_transport_error_cb_t

Callback definition for transport error announcements.


Enumeration Type Documentation

enum _state_t

Enumeration for transaction state. Those states are extracted from the diagram found in rfc3261.txt

enum osip_fsm_type_t

Enumeration for transaction type. A transaction can be either of: ICT, IST, NICT, NIST,

Enumerator:
ICT  Invite Client (outgoing) Transaction
IST  Invite Server (incoming) Transaction
NICT  Non-Invite Client (outgoing) Transaction
NIST  Non-Invite Server (incoming) Transaction

enum osip_kill_callback_type

Enumeration for callback type used when transaction is over.

Enumerator:
OSIP_ICT_KILL_TRANSACTION  end of Client INVITE transaction
OSIP_IST_KILL_TRANSACTION  end of Server INVITE transaction
OSIP_NICT_KILL_TRANSACTION  end of Client Non-INVITE transaction
OSIP_NIST_KILL_TRANSACTION  end of Server Non-INVITE transaction
OSIP_KILL_CALLBACK_COUNT  END OF ENUM

enum osip_message_callback_type

Enumeration for callback type.

Enumerator:
OSIP_ICT_INVITE_SENT  INVITE MESSAGE SENT
OSIP_ICT_INVITE_SENT_AGAIN  INVITE MESSAGE RETRANSMITTED
OSIP_ICT_ACK_SENT  ACK MESSAGE SENT
OSIP_ICT_ACK_SENT_AGAIN  ACK MESSAGE RETRANSMITTED
OSIP_ICT_STATUS_1XX_RECEIVED  1XX FOR INVITE RECEIVED
OSIP_ICT_STATUS_2XX_RECEIVED  2XX FOR INVITE RECEIVED
OSIP_ICT_STATUS_2XX_RECEIVED_AGAIN  2XX FOR INVITE RECEIVED AGAIN
OSIP_ICT_STATUS_3XX_RECEIVED  3XX FOR INVITE RECEIVED
OSIP_ICT_STATUS_4XX_RECEIVED  4XX FOR INVITE RECEIVED
OSIP_ICT_STATUS_5XX_RECEIVED  5XX FOR INVITE RECEIVED
OSIP_ICT_STATUS_6XX_RECEIVED  6XX FOR INVITE RECEIVED
OSIP_ICT_STATUS_3456XX_RECEIVED_AGAIN  RESPONSE RECEIVED AGAIN
OSIP_IST_INVITE_RECEIVED  INVITE MESSAGE RECEIVED
OSIP_IST_INVITE_RECEIVED_AGAIN  INVITE MESSAGE RECEIVED AGAN
OSIP_IST_ACK_RECEIVED  ACK MESSAGE RECEIVED
OSIP_IST_ACK_RECEIVED_AGAIN  ACK MESSAGE RECEIVED AGAIN
OSIP_IST_STATUS_1XX_SENT  1XX FOR INVITE SENT
OSIP_IST_STATUS_2XX_SENT  2XX FOR INVITE SENT
OSIP_IST_STATUS_2XX_SENT_AGAIN  2XX FOR INVITE RETRANSMITTED
OSIP_IST_STATUS_3XX_SENT  3XX FOR INVITE SENT
OSIP_IST_STATUS_4XX_SENT  4XX FOR INVITE SENT
OSIP_IST_STATUS_5XX_SENT  5XX FOR INVITE SENT
OSIP_IST_STATUS_6XX_SENT  6XX FOR INVITE SENT
OSIP_IST_STATUS_3456XX_SENT_AGAIN  RESPONSE RETRANSMITTED
OSIP_NICT_REGISTER_SENT  REGISTER MESSAGE SENT
OSIP_NICT_BYE_SENT  BYE MESSAGE SENT
OSIP_NICT_OPTIONS_SENT  OPTIONS MESSAGE SENT
OSIP_NICT_INFO_SENT  INFO MESSAGE SENT
OSIP_NICT_CANCEL_SENT  CANCEL MESSAGE SENT
OSIP_NICT_NOTIFY_SENT  NOTIFY MESSAGE SENT
OSIP_NICT_SUBSCRIBE_SENT  SUBSCRIBE MESSAGE SENT
OSIP_NICT_UNKNOWN_REQUEST_SENT  UNKNOWN REQUEST MESSAGE SENT
OSIP_NICT_REQUEST_SENT_AGAIN  REQUEST MESSAGE RETRANMITTED
OSIP_NICT_STATUS_1XX_RECEIVED  1XX FOR MESSAGE RECEIVED
OSIP_NICT_STATUS_2XX_RECEIVED  2XX FOR MESSAGE RECEIVED
OSIP_NICT_STATUS_2XX_RECEIVED_AGAIN  2XX FOR MESSAGE RECEIVED AGAIN
OSIP_NICT_STATUS_3XX_RECEIVED  3XX FOR MESSAGE RECEIVED
OSIP_NICT_STATUS_4XX_RECEIVED  4XX FOR MESSAGE RECEIVED
OSIP_NICT_STATUS_5XX_RECEIVED  5XX FOR MESSAGE RECEIVED
OSIP_NICT_STATUS_6XX_RECEIVED  6XX FOR MESSAGE RECEIVED
OSIP_NICT_STATUS_3456XX_RECEIVED_AGAIN  RESPONSE RECEIVED AGAIN
OSIP_NIST_REGISTER_RECEIVED  REGISTER RECEIVED
OSIP_NIST_BYE_RECEIVED  BYE RECEIVED
OSIP_NIST_OPTIONS_RECEIVED  OPTIONS RECEIVED
OSIP_NIST_INFO_RECEIVED  INFO RECEIVED
OSIP_NIST_CANCEL_RECEIVED  CANCEL RECEIVED
OSIP_NIST_NOTIFY_RECEIVED  NOTIFY RECEIVED
OSIP_NIST_SUBSCRIBE_RECEIVED  SUBSCRIBE RECEIVED
OSIP_NIST_UNKNOWN_REQUEST_RECEIVED  UNKNWON REQUEST RECEIVED
OSIP_NIST_REQUEST_RECEIVED_AGAIN  UNKNWON REQUEST RECEIVED AGAIN
OSIP_NIST_STATUS_1XX_SENT  1XX FOR MESSAGE SENT
OSIP_NIST_STATUS_2XX_SENT  2XX FOR MESSAGE SENT
OSIP_NIST_STATUS_2XX_SENT_AGAIN  2XX FOR MESSAGE RETRANSMITTED
OSIP_NIST_STATUS_3XX_SENT  3XX FOR MESSAGE SENT
OSIP_NIST_STATUS_4XX_SENT  4XX FOR MESSAGE SENT
OSIP_NIST_STATUS_5XX_SENT  5XX FOR MESSAGE SENT
OSIP_NIST_STATUS_6XX_SENT  6XX FOR MESSAGE SENT
OSIP_NIST_STATUS_3456XX_SENT_AGAIN  RESPONSE RETRANSMITTED
OSIP_ICT_STATUS_TIMEOUT  TIMER B EXPIRATION: NO REMOTE ANSWER
OSIP_NICT_STATUS_TIMEOUT  TIMER F EXPIRATION: NO REMOTE ANSWER
OSIP_MESSAGE_CALLBACK_COUNT  END OF ENUM

enum osip_transport_error_callback_type

Enumerator:
OSIP_ICT_TRANSPORT_ERROR  transport error for ICT
OSIP_IST_TRANSPORT_ERROR  transport error for IST
OSIP_NICT_TRANSPORT_ERROR  transport error for NICT
OSIP_NIST_TRANSPORT_ERROR  transport error for NIST
OSIP_TRANSPORT_ERROR_CALLBACK_COUNT  END OF ENUM

enum type_t

Enumeration for event type.
The list of values that you need to know is reduced to this:
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,

Enumerator:
TIMEOUT_A  Timer A
TIMEOUT_B  Timer B
TIMEOUT_D  Timer D
TIMEOUT_E  Timer E
TIMEOUT_F  Timer F
TIMEOUT_K  Timer K
TIMEOUT_G  Timer G
TIMEOUT_H  Timer H
TIMEOUT_I  Timer I
TIMEOUT_J  Timer J
RCV_REQINVITE  Event is an incoming INVITE request
RCV_REQACK  Event is an incoming ACK request
RCV_REQUEST  Event is an incoming NON-INVITE and NON-ACK request
RCV_STATUS_1XX  Event is an incoming informational response
RCV_STATUS_2XX  Event is an incoming 2XX response
RCV_STATUS_3456XX  Event is an incoming final response (not 2XX)
SND_REQINVITE  Event is an outgoing INVITE request
SND_REQACK  Event is an outgoing ACK request
SND_REQUEST  Event is an outgoing NON-INVITE and NON-ACK request
SND_STATUS_1XX  Event is an outgoing informational response
SND_STATUS_2XX  Event is an outgoing 2XX response
SND_STATUS_3456XX  Event is an outgoing final response (not 2XX)
KILL_TRANSACTION  Event to 'kill' the transaction before termination


Function Documentation

osip_transaction_t* osip_create_transaction ( osip_t osip,
osip_event_t evt 
)

Create a transaction for this event (MUST be a SIP REQUEST event).

Parameters:
osip The element to work on.
evt The element representing the new SIP REQUEST.

void osip_event_free ( osip_event_t event  ) 

Free all ressource in a sipevent.

Parameters:
event The event to free.

int osip_find_transaction_and_add_event ( osip_t osip,
osip_event_t evt 
)

Search for a transaction that match this event (MUST be a MESSAGE event) and add this event if a transaction is found..

Parameters:
osip The element to work on.
evt The element representing the SIP MESSAGE.

void* osip_get_application_context ( osip_t osip  ) 

Get a pointer in a osip_t element. This help to find your application layer in callbacks.

Parameters:
osip The element to work on.

int osip_ict_execute ( osip_t osip  ) 

Consume ALL pending osip_event_t previously added in the fifos of ict transactions.

Parameters:
osip The element to work on.

int osip_ict_set_destination ( osip_ict_t ict,
char *  destination,
int  port 
)

Set the host and port destination used for sending the SIP message. This can be useful for an application with 'DIRECT ROOTING MODE' NOTE: Instead, you should use the 'Route' header facility which leads to the same behaviour.

Parameters:
ict The element to work on.
destination The destination host.
port The destination port.

int osip_init ( osip_t **  osip  ) 

Allocate an osip_t element.

Parameters:
osip the element to allocate.

int osip_ist_execute ( osip_t osip  ) 

Consume ALL pending osip_event_t previously added in the fifos of ist transactions.

Parameters:
osip The element to work on.

osip_event_t* osip_new_outgoing_sipmessage ( osip_message_t sip  ) 

Allocate a sipevent (we know this message is an OUTGOING SIP message).

Parameters:
sip The SIP message we want to send.

int osip_nict_execute ( osip_t osip  ) 

Consume ALL pending osip_event_t previously added in the fifos of nict transactions.

Parameters:
osip The element to work on.

int osip_nict_set_destination ( osip_nict_t nict,
char *  destination,
int  port 
)

Set the host and port destination used for sending the SIP message. This can be useful for an application with 'DIRECT ROOTING MODE' NOTE: Instead, you should use the 'Route' header facility which leads to the same behaviour.

Parameters:
nict The element to work on.
destination The destination host.
port The destination port.

int osip_nist_execute ( osip_t osip  ) 

Consume ALL pending osip_event_t previously added in the fifos of nist transactions.