/usr/include/sofia-sip-1.12/sofia-sip/nua.h is in libsofia-sip-ua-dev 1.12.11+20110422.1-2ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 | /*
* This file is part of the Sofia-SIP package
*
* Copyright (C) 2005 Nokia Corporation.
*
* Contact: Pekka Pessi <pekka.pessi@nokia.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA
*
*/
/**@file sofia-sip/nua.h
* @brief Sofia-SIP User Agent Library API
*
* @author Pekka Pessi <Pekka.Pessi@nokia.com>
*
* @date Created: Wed Feb 14 17:09:44 2001 ppessi
*/
#ifndef NUA_H
/** Defined when <sofia-sip/nua.h> has been included. */
#define NUA_H
#ifndef SU_WAIT_H
#include <sofia-sip/su_wait.h>
#endif
#ifndef URL_H
#include <sofia-sip/url.h>
#endif
#ifndef SIP_H
#include <sofia-sip/sip.h>
#endif
#ifndef NUA_TAG_H
#include <sofia-sip/nua_tag.h>
#endif
SOFIA_BEGIN_DECLS
#ifndef NUA_MAGIC_T
#define NUA_MAGIC_T void
#endif
/** Application context for NUA agent. */
typedef NUA_MAGIC_T nua_magic_t;
#ifndef NUA_HMAGIC_T
#define NUA_HMAGIC_T void
#endif
/** Application context for NUA handle. */
typedef NUA_HMAGIC_T nua_hmagic_t;
#define NUA_NONE ((void *)(intptr_t)-1)
/**Network change event levels given to NUTAG_DETECT_NETWORK_UPDATES().
*
* @sa NUTAG_DETECT_NETWORK_UPDATES(), #nua_i_network_changed
*
* @since New in @VERSION_1_12_2.
*/
typedef enum nua_nw_detector_e {
NUA_NW_DETECT_NOTHING = 0,
NUA_NW_DETECT_ONLY_INFO,
NUA_NW_DETECT_TRY_FULL
} nua_nw_detector_t;
/** Events */
typedef enum nua_event_e {
/* Event used by stack internally */
nua_i_none = -1,
/* Indications */
nua_i_error, /**< Error indication */
nua_i_invite, /**< Incoming call INVITE */
nua_i_cancel, /**< Incoming INVITE has been cancelled */
nua_i_ack, /**< Final response to INVITE has been ACKed */
nua_i_fork, /**< Outgoing call has been forked */
nua_i_active, /**< A call has been activated */
nua_i_terminated, /**< A call has been terminated */
nua_i_state, /**< Call state has changed */
nua_i_outbound, /**< Status from outbound processing */
nua_i_bye, /**< Incoming BYE call hangup */
nua_i_options, /**< Incoming OPTIONS */
nua_i_refer, /**< Incoming REFER call transfer */
nua_i_publish, /**< Incoming PUBLISH */
nua_i_prack, /**< Incoming PRACK */
nua_i_info, /**< Incoming session INFO */
nua_i_update, /**< Incoming session UPDATE */
nua_i_message, /**< Incoming MESSAGE */
nua_i_chat, /**< Incoming chat MESSAGE */
nua_i_subscribe, /**< Incoming SUBSCRIBE */
nua_i_subscription, /**< Incoming subscription to be authorized */
nua_i_notify, /**< Incoming event NOTIFY */
nua_i_method, /**< Incoming, unknown method */
nua_i_media_error, /**< Offer-answer error indication */
/* Responses */
nua_r_set_params, /**< Answer to nua_set_params() or
* nua_get_hparams(). */
nua_r_get_params, /**< Answer to nua_get_params() or
* nua_get_hparams(). */
nua_r_shutdown, /**< Answer to nua_shutdown() */
nua_r_notifier, /**< Answer to nua_notifier() */
nua_r_terminate, /**< Answer to nua_terminate() */
nua_r_authorize, /**< Answer to nua_authorize() */
/* SIP responses */
nua_r_register, /**< Answer to outgoing REGISTER */
nua_r_unregister, /**< Answer to outgoing un-REGISTER */
nua_r_invite, /**< Answer to outgoing INVITE */
nua_r_cancel, /**< Answer to outgoing CANCEL */
nua_r_bye, /**< Answer to outgoing BYE */
nua_r_options, /**< Answer to outgoing OPTIONS */
nua_r_refer, /**< Answer to outgoing REFER */
nua_r_publish, /**< Answer to outgoing PUBLISH */
nua_r_unpublish, /**< Answer to outgoing un-PUBLISH */
nua_r_info, /**< Answer to outgoing INFO */
nua_r_prack, /**< Answer to outgoing PRACK */
nua_r_update, /**< Answer to outgoing UPDATE */
nua_r_message, /**< Answer to outgoing MESSAGE */
nua_r_chat, /**< Answer to outgoing chat message */
nua_r_subscribe, /**< Answer to outgoing SUBSCRIBE */
nua_r_unsubscribe, /**< Answer to outgoing un-SUBSCRIBE */
nua_r_notify, /**< Answer to outgoing NOTIFY */
nua_r_method, /**< Answer to unknown outgoing method */
nua_r_authenticate, /**< Answer to nua_authenticate() */
/* Internal events: nua hides them from application */
nua_r_redirect,
nua_r_destroy,
nua_r_respond,
nua_r_nit_respond,
nua_r_ack, /*#< Answer to ACK */
/* NOTE: Post 1.12 release events come here (below) to keep ABI
compatibility! */
nua_i_network_changed, /**< Local IP(v6) address has changed.
@NEW_1_12_2 */
nua_i_register /**< Incoming REGISTER. @NEW_1_12_4. */
} nua_event_t;
typedef struct event_s {
nua_handle_t *e_nh;
int e_event;
short e_always;
short e_status;
char const *e_phrase;
msg_t *e_msg;
tagi_t e_tags[1];
} nua_event_data_t;
/** NUA API version */
#define NUA_VERSION "2.0"
/** NUA module version */
SOFIAPUBVAR char const nua_version[];
/** Typedef of NUA event callback. */
typedef void (*nua_callback_f)(nua_event_t event,
int status, char const *phrase,
nua_t *nua, nua_magic_t *magic,
nua_handle_t *nh, nua_hmagic_t *hmagic,
sip_t const *sip,
tagi_t tags[]);
/** Create a NUA agent. */
SOFIAPUBFUN nua_t *nua_create(su_root_t *root,
nua_callback_f callback,
nua_magic_t *magic,
tag_type_t tag, tag_value_t value,
...);
/** Shutdown NUA stack. */
SOFIAPUBFUN void nua_shutdown(nua_t *nua);
/** Destroy the NUA stack. */
SOFIAPUBFUN void nua_destroy(nua_t *nua);
/** Fetch callback context from nua. */
SOFIAPUBFUN nua_magic_t *nua_magic(nua_t *nua);
/** Set NUA parameters. */
SOFIAPUBFUN void nua_set_params(nua_t *, tag_type_t, tag_value_t, ...);
/** Get NUA parameters. */
SOFIAPUBFUN void nua_get_params(nua_t *nua, tag_type_t, tag_value_t, ...);
/** Obtain default operation handle of the NUA stack object. */
SOFIAPUBFUN nua_handle_t *nua_default(nua_t *nua);
/** Create an operation handle */
SOFIAPUBFUN nua_handle_t *nua_handle(nua_t *nua, nua_hmagic_t *hmagic,
tag_type_t, tag_value_t, ...);
/** Destroy a handle */
SOFIAPUBFUN void nua_handle_destroy(nua_handle_t *h);
/** Make a new reference to handle */
SOFIAPUBFUN nua_handle_t *nua_handle_ref(nua_handle_t *);
/** Destroy reference to handle */
SOFIAPUBFUN int nua_handle_unref(nua_handle_t *);
/** Bind a callback context to an operation handle. */
SOFIAPUBFUN void nua_handle_bind(nua_handle_t *nh, nua_hmagic_t *magic);
/** Fetch a callback context from an operation handle. */
SOFIAPUBFUN nua_hmagic_t *nua_handle_magic(nua_handle_t *nh);
/** Set handle parameters. */
SOFIAPUBFUN void nua_set_hparams(nua_handle_t *, tag_type_t, tag_value_t, ...);
/** Get handle parameters. */
SOFIAPUBFUN void nua_get_hparams(nua_handle_t *, tag_type_t, tag_value_t, ...);
/** Check if operation handle is used for INVITE */
SOFIAPUBFUN int nua_handle_has_invite(nua_handle_t const *nh);
/** Check if operation handle has been used with outgoing SUBSCRIBE of REFER request. */
SOFIAPUBFUN int nua_handle_has_subscribe(nua_handle_t const *nh);
/** Check if operation handle has been used with nua_register() or nua_unregister(). */
SOFIAPUBFUN int nua_handle_has_register(nua_handle_t const *nh);
/** Check if operation handle has an active call */
SOFIAPUBFUN int nua_handle_has_active_call(nua_handle_t const *nh);
/** Check if operation handle has a call on hold */
SOFIAPUBFUN int nua_handle_has_call_on_hold(nua_handle_t const *nh);
/** Check if handle has active event subscriptions (refers sent). */
SOFIAPUBFUN int nua_handle_has_events(nua_handle_t const *nh);
/** Check if operation handle has active registrations */
SOFIAPUBFUN int nua_handle_has_registrations(nua_handle_t const *nh);
/** Get the remote address (From/To header) of operation handle */
SOFIAPUBFUN sip_to_t const *nua_handle_remote(nua_handle_t const *nh);
/** Get the local address (From/To header) of operation handle */
SOFIAPUBFUN sip_to_t const *nua_handle_local(nua_handle_t const *nh);
/** Get name for NUA event. */
SOFIAPUBFUN char const *nua_event_name(nua_event_t event);
/** Get name for NUA callstate. */
SOFIAPUBFUN char const *nua_callstate_name(enum nua_callstate state);
/** Return name of subscription state. @NEW_1_12_5. */
SOFIAPUBFUN char const *nua_substate_name(enum nua_substate substate);
/** Convert string to enum nua_substate. @NEW_1_12_5. */
SOFIAPUBFUN enum nua_substate nua_substate_make(char const *sip_substate);
/** Send SIP REGISTER request to the registrar. */
SOFIAPUBFUN void nua_register(nua_handle_t *nh, tag_type_t, tag_value_t, ...);
/** Unregister. */
SOFIAPUBFUN void nua_unregister(nua_handle_t *nh, tag_type_t, tag_value_t, ...);
/** Place a call using SIP INVITE method. */
SOFIAPUBFUN void nua_invite(nua_handle_t *nh, tag_type_t, tag_value_t, ...);
/** Acknowledge a succesfull response to INVITE request. */
SOFIAPUBFUN void nua_ack(nua_handle_t *nh, tag_type_t, tag_value_t, ...);
/** Acknowledge a reliable preliminary response to INVITE request. */
SOFIAPUBFUN void nua_prack(nua_handle_t *nh, tag_type_t, tag_value_t, ...);
/** Query capabilities from server */
SOFIAPUBFUN void nua_options(nua_handle_t *nh, tag_type_t, tag_value_t, ...);
/** Send PUBLISH request to publication server. */
SOFIAPUBFUN void nua_publish(nua_handle_t *nh, tag_type_t, tag_value_t, ...);
/** Send un-PUBLISH request to publication server. */
SOFIAPUBFUN void nua_unpublish(nua_handle_t *nh, tag_type_t, tag_value_t, ...);
/** Send an instant message. */
SOFIAPUBFUN void nua_message(nua_handle_t *nh, tag_type_t, tag_value_t, ...);
/** Send a chat message. */
SOFIAPUBFUN void nua_chat(nua_handle_t *nh, tag_type_t, tag_value_t, ...);
/** Send an INFO request. */
SOFIAPUBFUN void nua_info(nua_handle_t *nh, tag_type_t, tag_value_t, ...);
/** Subscribe a SIP event. */
SOFIAPUBFUN void nua_subscribe(nua_handle_t *nh, tag_type_t, tag_value_t, ...);
/** Unsubscribe an event. */
SOFIAPUBFUN void nua_unsubscribe(nua_handle_t *, tag_type_t, tag_value_t, ...);
/** Send a NOTIFY message. */
SOFIAPUBFUN void nua_notify(nua_handle_t *, tag_type_t, tag_value_t, ...);
/** Create an event server. */
SOFIAPUBFUN void nua_notifier(nua_handle_t *, tag_type_t, tag_value_t, ...);
/** Terminate an event server. */
SOFIAPUBFUN void nua_terminate(nua_handle_t *, tag_type_t, tag_value_t, ...);
/** Transfer a call. */
SOFIAPUBFUN void nua_refer(nua_handle_t *, tag_type_t, tag_value_t, ...);
/** Update a call */
SOFIAPUBFUN void nua_update(nua_handle_t *, tag_type_t, tag_value_t, ...);
/** Hangdown a call. */
SOFIAPUBFUN void nua_bye(nua_handle_t *, tag_type_t, tag_value_t, ...);
/** Cancel an INVITE operation */
SOFIAPUBFUN void nua_cancel(nua_handle_t *, tag_type_t, tag_value_t, ...);
/** Authenticate an operation. */
SOFIAPUBFUN void nua_authenticate(nua_handle_t *, tag_type_t, tag_value_t, ...);
/** Authorize a subscriber. */
SOFIAPUBFUN void nua_authorize(nua_handle_t *, tag_type_t, tag_value_t, ...);
/*# Redirect an operation. @deprecated */
SOFIAPUBFUN void nua_redirect(nua_handle_t *, tag_type_t, tag_value_t, ...);
/** Send a request message with an extension method. */
SOFIAPUBFUN void nua_method(nua_handle_t *, tag_type_t, tag_value_t, ...);
/** Respond to a request with given status code and phrase. */
SOFIAPUBFUN void nua_respond(nua_handle_t *nh,
int status, char const *phrase,
tag_type_t, tag_value_t,
...);
/** Check if event can be responded with nua_respond() */
SOFIAPUBFUN int nua_event_is_incoming_request(nua_event_t e);
/** Cast a #nua_handle_t pointer to a #su_home_t. */
#define nua_handle_home(nh) ((su_home_t *)(nh))
/** Generate an instance identifier. */
SOFIAPUBFUN char const *nua_generate_instance_identifier(su_home_t *);
#ifndef NUA_SAVED_EVENT_T
#define NUA_SAVED_EVENT_T struct nua_saved_event *
#endif
/** Abstract type for saved nua events. */
typedef NUA_SAVED_EVENT_T nua_saved_event_t;
/** Save last nua event */
SOFIAPUBFUN int nua_save_event(nua_t *nua, nua_saved_event_t return_saved[1]);
/** Get information from saved event */
SOFIAPUBFUN nua_event_data_t const *nua_event_data(nua_saved_event_t const saved[1]);
/** Destroy a save nua event */
SOFIAPUBFUN void nua_destroy_event(nua_saved_event_t *saved);
/** Get request message from saved nua event. */
SOFIAPUBFUN msg_t *nua_saved_event_request(nua_saved_event_t const *saved);
/** Get current request message. */
SOFIAPUBFUN msg_t *nua_current_request(nua_t const *nua);
SOFIAPUBFUN sip_replaces_t *nua_handle_make_replaces(nua_handle_t *nh,
su_home_t *home,
int early_only);
SOFIAPUBFUN nua_handle_t *nua_handle_by_replaces(nua_t *nua,
sip_replaces_t const *rp);
SOFIAPUBFUN nua_handle_t *nua_handle_by_call_id(nua_t *nua, const char *call_id);
SOFIA_END_DECLS
#endif
|