2006-12-21 06:30:28 +00:00
|
|
|
/*
|
|
|
|
* This file is part of the Sofia-SIP package
|
|
|
|
*
|
|
|
|
* Copyright (C) 2006 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
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef NUA_PARAMS_H
|
|
|
|
/** Defined when <nua_params.h> has been included. */
|
|
|
|
#define NUA_PARAMS_H
|
|
|
|
|
|
|
|
/**@internal @file nua_params.h
|
|
|
|
* @brief Parameters and their handling
|
|
|
|
*
|
|
|
|
* @author Pekka Pessi <Pekka.Pessi@nokia.com>
|
|
|
|
* @author Kai Vehmanen <Kai.Vehmanen@nokia.com>
|
|
|
|
*
|
|
|
|
* @date Created: Wed Mar 8 11:38:18 EET 2006 ppessi
|
|
|
|
*/
|
|
|
|
|
Sync to current darcs tree:
Mon Sep 17 14:50:04 EDT 2007 Pekka.Pessi@nokia.com
* sofia-sip/sip_util.h: updated documentation
Mon Sep 17 14:50:18 EDT 2007 Pekka.Pessi@nokia.com
* sofia-sip/tport_tag.h: updated documentation
Mon Sep 17 14:50:28 EDT 2007 Pekka.Pessi@nokia.com
* soa_tag.c: updated documentation
Wed Sep 19 12:50:01 EDT 2007 Pekka.Pessi@nokia.com
* msg: updated documentation
Wed Sep 19 13:29:50 EDT 2007 Pekka.Pessi@nokia.com
* url: updated documentation
Wed Sep 19 13:32:14 EDT 2007 Pekka.Pessi@nokia.com
* nth: updated documentation
Wed Sep 19 13:32:27 EDT 2007 Pekka.Pessi@nokia.com
* nea: updated documentation
Wed Sep 19 13:33:36 EDT 2007 Pekka.Pessi@nokia.com
* http: updated documentation
Wed Sep 19 13:36:58 EDT 2007 Pekka.Pessi@nokia.com
* bnf: updated documentation
Wed Sep 19 13:38:58 EDT 2007 Pekka.Pessi@nokia.com
* nua: updated nua_stack_init_handle() prototype
Wed Sep 19 18:45:56 EDT 2007 Pekka.Pessi@nokia.com
* sip: added sip_name_addr_xtra(), sip_name_addr_dup()
Wed Sep 19 19:00:19 EDT 2007 Pekka.Pessi@nokia.com
* sip_basic.c: cleaned old crud
Thu Sep 20 13:34:04 EDT 2007 Pekka.Pessi@nokia.com
* iptsec: updated documentation
Thu Sep 20 13:36:22 EDT 2007 Pekka.Pessi@nokia.com
* tport: updated documentation
Thu Sep 20 13:36:56 EDT 2007 Pekka.Pessi@nokia.com
* su: updated documentation
Removed internal files from doxygen-generated documentation.
Thu Sep 20 13:38:29 EDT 2007 Pekka.Pessi@nokia.com
* soa: fixed documentation
Thu Sep 20 13:39:56 EDT 2007 Pekka.Pessi@nokia.com
* sdp: updated documentation
Thu Sep 20 13:40:16 EDT 2007 Pekka.Pessi@nokia.com
* ipt: updated documentation
Thu Sep 20 14:24:20 EDT 2007 Pekka.Pessi@nokia.com
* nta: updated documentation
Thu Sep 20 14:41:04 EDT 2007 Pekka.Pessi@nokia.com
* nua: updated documentation
Updated tag documentation.
Moved doxygen doc entries from sofia-sip/nua_tag.h to nua_tag.c.
Removed internal datatypes and files from the generated documents.
Wed Sep 19 13:34:20 EDT 2007 Pekka.Pessi@nokia.com
* docs: updated the generation of documentation. Updated links to header files.
Thu Sep 20 08:45:32 EDT 2007 Pekka.Pessi@nokia.com
* sip/Makefile.am: added tags to <sofia-sip/sip_extra.h>
Added check for extra tags in torture_sip.c.
Thu Sep 20 14:45:22 EDT 2007 Pekka.Pessi@nokia.com
* stun: updated documentation
Wed Jul 4 18:55:20 EDT 2007 Pekka.Pessi@nokia.com
* torture_heap.c: added tests for ##sort() and su_smoothsort()
Wed Jul 4 18:56:59 EDT 2007 Pekka.Pessi@nokia.com
* Makefile.am: added smoothsort.c
Fri Jul 13 12:38:44 EDT 2007 Pekka.Pessi@nokia.com
* sofia-sip/heap.h: heap_remove() now set()s index to 0 on removed item
Mon Jul 23 11:14:22 EDT 2007 Pekka.Pessi@nokia.com
* sofia-sip/heap.h: fixed bug in heap##remove()
If left kid was in heap but right was not, left kid was ignored.
Wed Jul 4 18:51:08 EDT 2007 Pekka.Pessi@nokia.com
* smoothsort.c: added
Wed Jul 4 18:51:34 EDT 2007 Pekka.Pessi@nokia.com
* heap.h: using su_smoothsort()
Fri Jul 6 10:20:27 EDT 2007 Pekka.Pessi@nokia.com
* smoothsort.c: added
Wed Sep 19 17:40:30 EDT 2007 Pekka.Pessi@nokia.com
* msg_parser.awk: generate two parser tables, default and extended
Wed Sep 19 18:39:45 EDT 2007 Pekka.Pessi@nokia.com
* msg_parser.awk: just generate list of extra headers
Allocate extended parser dynamically.
Wed Sep 19 18:59:59 EDT 2007 Pekka.Pessi@nokia.com
* sip: added Remote-Party-ID, P-Asserted-Identity, P-Preferred-Identity
Added functions sip_update_default_mclass() and sip_extend_mclass()
for handling the extended parser. Note that Reply-To and Alert-Info are only
available with the extended parser.
Wed Sep 19 19:05:44 EDT 2007 Pekka.Pessi@nokia.com
* RELEASE: updated
Thu Sep 20 13:38:59 EDT 2007 Pekka.Pessi@nokia.com
* sip: updated documentation
Thu Sep 20 14:17:28 EDT 2007 Pekka.Pessi@nokia.com
* docs/conformance.docs: updated
Mon Oct 1 10:11:14 EDT 2007 Pekka.Pessi@nokia.com
* tport_tag.c: re-enabled tptag_trusted
Thu Oct 4 09:21:07 EDT 2007 Pekka.Pessi@nokia.com
* su_osx_runloop.c: moved virtual function table after struct definition
Preparing for su_port_vtable_t refactoring.
Thu Oct 4 10:22:03 EDT 2007 Pekka.Pessi@nokia.com
* su_source.c: refactored initialization/deinitialization
Fri Oct 5 04:58:18 EDT 2007 Pekka Pessi <Pekka.Pessi@nokia.com>
* sip_extra.c: fixed prototypes with isize_t
Fri Oct 5 04:58:45 EDT 2007 Pekka Pessi <Pekka.Pessi@nokia.com>
* test_nta_api.c: removed warnings about signedness
Fri Oct 5 04:59:02 EDT 2007 Pekka Pessi <Pekka.Pessi@nokia.com>
* test_nua_params.c: removed warnings about constness
Fri Oct 5 07:20:26 EDT 2007 Pekka Pessi <first.lastname@nokia.com>
* su_port.h, su_root.c: cleaned argument checking
The su_root_*() and su_port_*() functions now check their arguments once
and do not assert() with NULL arguments. The sur_task->sut_port should
always be valid while su_root_t is alive.
Fri Oct 5 07:22:09 EDT 2007 Pekka Pessi <first.lastname@nokia.com>
* su: added su_root_obtain(), su_root_release() and su_root_has_thread()
When root is created with su_root_create() or cloned with su_clone_start(),
the resulting root is obtained by the calling or created thread,
respectively.
The root can be released with su_root_release() and another thread can
obtain it.
The function su_root_has_thread() can be used to check if a thread has
obtained or released the root.
Implementation upgraded the su_port_own_thread() method as su_port_thread().
Fri Oct 5 07:28:10 EDT 2007 Pekka Pessi <first.lastname@nokia.com>
* su_port.h: removed su_port_threadsafe() and su_port_yield() methods
su_port_wait_events() replaces su_port_yield().
Fri Oct 5 13:26:04 EDT 2007 Pekka Pessi <Pekka.Pessi@nokia.com>
* msg_parser.awk: not extending header structure unless needed.
Removed gawk-ish /* comments */.
Fri Oct 5 14:32:25 EDT 2007 Pekka Pessi <Pekka.Pessi@nokia.com>
* run_test_su: removed GNUisms
Fri Oct 5 14:32:47 EDT 2007 Pekka Pessi <Pekka.Pessi@nokia.com>
* Makefile.am: removed implicit check target test_urlmap
Fri Oct 5 14:22:32 EDT 2007 Pekka Pessi <first.lastname@nokia.com>
* torture_sresolv.c: use CLOCK_REALTIME if no CLOCK_PROCESS_CPUTIME_ID available
Casting timespec tv_sec to unsigned long.
Fri Oct * nua_s added handling nua_prack()
Thanks to Fabio Margarido for the patch.
Mon Oct 8 10:24:35 EDT 2007 Pekka.Pessi@nokia.com
* test_nua: added test for sf.net bug #1803686
Mon Oct 8 08:15:23 EDT 2007 Pekka.Pessi@nokia.com
* RELEASE: updated.
Mon Oct 8 09:30:36 EDT 2007 Pekka.Pessi@nokia.com
* nua_stack: added handling nua_prack()
Thanks to Fabio Margarido for the patch.
Mon Oct 8 10:24:35 EDT 2007 Pekka.Pessi@nokia.com
* test_nua: added test for sf.net bug #1803686
Mon Oct 8 10:26:31 EDT 2007 Pekka.Pessi@nokia.com
* nua: added test for nua_prack() (sf.net bug #1804248)
Avoid sending nua_i_state after nua_prack() if no SDP O/A is happening, too.
Mon Oct 8 10:32:04 EDT 2007 Mikhail Zabaluev <mikhail.zabaluev@nokia.com>
* su_source.c: don t leak the wait arrays
Mon Oct 8 10:37:11 EDT 2007 Pekka.Pessi@nokia.com
* RELEASE: updated
Wed Oct 10 11:55:21 EDT 2007 Pekka.Pessi@nokia.com
* sip_parser.c: silenced warning about extra const in sip_extend_mclass()
Wed Oct 10 11:57:08 EDT 2007 Pekka.Pessi@nokia.com
* nta_tag.c: updated tag documentation
Wed Oct 10 13:16:40 EDT 2007 Pekka.Pessi@nokia.com
* nua: fix logging crash if outbound used with application contact
Silenced warnings.
Wed Oct 10 13:30:45 EDT 2007 Pekka.Pessi@nokia.com
* msg_parser.awk: removed extra "const"
Wed Oct 10 13:31:45 EDT 2007 Pekka.Pessi@nokia.com
* Makefile.am's: fixed distclean of documentation
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@5840 d0543943-73ff-0310-b7d9-9358b9ac24b2
2007-10-11 14:16:59 +00:00
|
|
|
/**@internal @brief NUA preferences.
|
2006-12-21 06:30:28 +00:00
|
|
|
*
|
|
|
|
* This structure contains values for various preferences and a separate
|
|
|
|
* bitmap (nhp_set) for each preference. Preferences are set using
|
|
|
|
* nua_set_params() or nua_set_hparams() or a handle-specific operation
|
|
|
|
* setting the preferences, including nua_invite(), nua_respond(),
|
|
|
|
* nua_ack(), nua_prack(), nua_update(), nua_info(), nua_bye(),
|
|
|
|
* nua_options(), nua_message(), nua_register(), nua_publish(), nua_refer(),
|
|
|
|
* nua_subscribe(), nua_notify(), nua_refer(), and nua_notifier().
|
|
|
|
*
|
|
|
|
* The stack uses preference value if corresponding bit in bitmap is set,
|
|
|
|
* otherwise it uses preference value from default handle.
|
|
|
|
*
|
|
|
|
* @see NHP_GET(), NH_PGET(), NHP_ISSET(), NH_PISSET()
|
|
|
|
*/
|
|
|
|
typedef struct nua_handle_preferences
|
|
|
|
{
|
|
|
|
unsigned nhp_retry_count; /**< times to retry a request */
|
|
|
|
unsigned nhp_max_subscriptions;
|
|
|
|
|
|
|
|
/* Session-related preferences */
|
|
|
|
char const *nhp_soa_name;
|
|
|
|
unsigned nhp_media_enable:1;
|
|
|
|
unsigned nhp_invite_enable:1;
|
|
|
|
unsigned nhp_auto_alert:1;
|
|
|
|
unsigned nhp_early_answer:1; /**< Include answer in 1XX */
|
|
|
|
unsigned nhp_early_media:1; /**< Establish early media with 100rel */
|
|
|
|
unsigned nhp_only183_100rel:1;/**< Only 100rel 183. */
|
|
|
|
unsigned nhp_auto_answer:1;
|
|
|
|
unsigned nhp_auto_ack:1; /**< Automatically ACK a final response */
|
|
|
|
unsigned :0;
|
|
|
|
|
|
|
|
/** INVITE timeout.
|
|
|
|
*
|
|
|
|
* If no response is received in nhp_invite_timeout seconds,
|
|
|
|
* INVITE client transaction times out
|
|
|
|
*/
|
|
|
|
unsigned nhp_invite_timeout;
|
|
|
|
/** Default session timer (in seconds, 0 disables) */
|
|
|
|
unsigned nhp_session_timer;
|
|
|
|
/** Default Min-SE Delta value */
|
|
|
|
unsigned nhp_min_se;
|
|
|
|
/** no (preference), local or remote */
|
|
|
|
enum nua_session_refresher nhp_refresher;
|
|
|
|
unsigned nhp_update_refresh:1; /**< Use UPDATE to refresh */
|
|
|
|
|
|
|
|
/* Messaging preferences */
|
|
|
|
unsigned nhp_message_enable : 1;
|
|
|
|
/** Be bug-compatible with Windows Messenger */
|
|
|
|
unsigned nhp_win_messenger_enable : 1;
|
|
|
|
/** PIM-IW hack */
|
|
|
|
unsigned nhp_message_auto_respond : 1;
|
|
|
|
|
|
|
|
/* Preferences for registration (and dialog establishment) */
|
|
|
|
unsigned nhp_callee_caps:1; /**< Add callee caps to contact */
|
|
|
|
unsigned nhp_media_features:1;/**< Add media features to caps*/
|
|
|
|
/** Enable Service-Route */
|
|
|
|
unsigned nhp_service_route_enable:1;
|
|
|
|
/** Enable Path */
|
|
|
|
unsigned nhp_path_enable:1;
|
2007-04-15 02:03:41 +00:00
|
|
|
/** Authentication cache policy */
|
|
|
|
unsigned nhp_auth_cache:1;
|
|
|
|
|
2006-12-21 06:30:28 +00:00
|
|
|
/** Always include id with Event: refer */
|
|
|
|
unsigned nhp_refer_with_id:1;
|
|
|
|
unsigned:0;
|
|
|
|
|
|
|
|
/* Default lifetime for implicit subscriptions created by REFER */
|
|
|
|
unsigned nhp_refer_expires;
|
|
|
|
|
|
|
|
/* Subscriber state, i.e. nua_substate_pending */
|
|
|
|
unsigned nhp_substate;
|
2008-03-07 17:34:46 +00:00
|
|
|
unsigned nhp_sub_expires;
|
2006-12-21 06:30:28 +00:00
|
|
|
|
2007-09-19 16:24:40 +00:00
|
|
|
/* REGISTER keepalive intervals */
|
2006-12-21 06:30:28 +00:00
|
|
|
unsigned nhp_keepalive, nhp_keepalive_stream;
|
|
|
|
char const *nhp_registrar;
|
|
|
|
|
|
|
|
sip_allow_t *nhp_allow;
|
|
|
|
sip_supported_t *nhp_supported;
|
|
|
|
sip_allow_events_t *nhp_allow_events;
|
|
|
|
char const *nhp_user_agent;
|
|
|
|
char const *nhp_organization;
|
|
|
|
|
|
|
|
char const *nhp_m_display;
|
|
|
|
char const *nhp_m_username;
|
|
|
|
char const *nhp_m_params;
|
|
|
|
char const *nhp_m_features;
|
|
|
|
char const *nhp_instance;
|
|
|
|
|
2007-09-19 16:24:40 +00:00
|
|
|
/** Outbound OPTIONS */
|
2006-12-21 06:30:28 +00:00
|
|
|
char const *nhp_outbound;
|
|
|
|
|
|
|
|
sip_allow_t *nhp_appl_method;
|
|
|
|
|
2007-09-19 16:24:40 +00:00
|
|
|
/** Initial route set */
|
|
|
|
sip_route_t *nhp_initial_route;
|
|
|
|
|
2006-12-21 06:30:28 +00:00
|
|
|
union { struct {
|
|
|
|
/* A bit for each feature set by application */
|
2008-03-07 17:34:46 +00:00
|
|
|
/* NOTE:
|
|
|
|
Some compilers behave weird if there are bitfields
|
|
|
|
together with width > 32
|
|
|
|
So there should be a padding field (unsigned:0;)
|
|
|
|
every 32 bits.
|
|
|
|
*/
|
2006-12-21 06:30:28 +00:00
|
|
|
unsigned nhb_retry_count:1;
|
|
|
|
unsigned nhb_max_subscriptions:1;
|
|
|
|
|
|
|
|
unsigned nhb_soa_name:1;
|
|
|
|
unsigned nhb_media_enable:1;
|
|
|
|
unsigned nhb_invite_enable:1;
|
|
|
|
unsigned nhb_auto_alert:1;
|
|
|
|
unsigned nhb_early_answer:1;
|
|
|
|
unsigned nhb_early_media:1;
|
|
|
|
unsigned nhb_only183_100rel:1;
|
|
|
|
unsigned nhb_auto_answer:1;
|
|
|
|
unsigned nhb_auto_ack:1;
|
|
|
|
unsigned nhb_invite_timeout:1;
|
|
|
|
|
|
|
|
unsigned nhb_session_timer:1;
|
|
|
|
unsigned nhb_min_se:1;
|
|
|
|
unsigned nhb_refresher:1;
|
|
|
|
unsigned nhb_update_refresh:1;
|
|
|
|
unsigned nhb_message_enable:1;
|
|
|
|
unsigned nhb_win_messenger_enable:1;
|
|
|
|
unsigned nhb_message_auto_respond:1;
|
|
|
|
unsigned nhb_callee_caps:1;
|
|
|
|
unsigned nhb_media_features:1;
|
|
|
|
unsigned nhb_service_route_enable:1;
|
|
|
|
unsigned nhb_path_enable:1;
|
2007-04-15 02:03:41 +00:00
|
|
|
unsigned nhb_auth_cache:1;
|
2006-12-21 06:30:28 +00:00
|
|
|
unsigned nhb_refer_with_id:1;
|
|
|
|
unsigned nhb_refer_expires:1;
|
|
|
|
unsigned nhb_substate:1;
|
2008-03-07 17:34:46 +00:00
|
|
|
unsigned nhb_sub_expires:1;
|
2006-12-21 06:30:28 +00:00
|
|
|
unsigned nhb_keepalive:1;
|
|
|
|
unsigned nhb_keepalive_stream:1;
|
|
|
|
unsigned nhb_registrar:1;
|
|
|
|
|
|
|
|
unsigned nhb_allow:1;
|
2008-03-07 17:34:46 +00:00
|
|
|
unsigned :0; /* at most 32 bits before this point */
|
2006-12-21 06:30:28 +00:00
|
|
|
unsigned nhb_supported:1;
|
2008-03-07 17:34:46 +00:00
|
|
|
|
2007-04-15 02:03:41 +00:00
|
|
|
unsigned nhb_allow_events:1;
|
2006-12-21 06:30:28 +00:00
|
|
|
unsigned nhb_user_agent:1;
|
|
|
|
unsigned nhb_organization:1;
|
|
|
|
|
|
|
|
unsigned nhb_m_display:1;
|
|
|
|
unsigned nhb_m_username:1;
|
|
|
|
unsigned nhb_m_params:1;
|
|
|
|
unsigned nhb_m_features:1;
|
|
|
|
unsigned nhb_instance:1;
|
|
|
|
unsigned nhb_outbound:1;
|
|
|
|
unsigned nhb_appl_method:1;
|
2007-09-19 16:24:40 +00:00
|
|
|
unsigned nhb_initial_route:1;
|
2006-12-21 06:30:28 +00:00
|
|
|
unsigned :0;
|
|
|
|
} set_bits;
|
|
|
|
unsigned set_unsigned[2];
|
|
|
|
} nhp_set_;
|
|
|
|
} nua_handle_preferences_t;
|
|
|
|
|
|
|
|
#define nhp_set nhp_set_.set_bits
|
|
|
|
|
2008-03-07 17:34:46 +00:00
|
|
|
/** Global preferences for nua. */
|
|
|
|
typedef struct {
|
|
|
|
/** Network detection: NONE, INFORMAL, TRY_FULL */
|
|
|
|
signed int ngp_detect_network_updates:3;
|
|
|
|
/** Pass events during shutdown, too */
|
|
|
|
int ngp_shutdown_events:1;
|
|
|
|
|
|
|
|
unsigned :0; /* pad */
|
|
|
|
union { struct {
|
|
|
|
/* A bit for each feature set by application */
|
|
|
|
unsigned ngp_detect_network_updates:1;
|
|
|
|
unsigned ngp_shutdown_events:1;
|
|
|
|
unsigned :0;
|
|
|
|
} set_bits;
|
|
|
|
unsigned set_unsigned[2];
|
|
|
|
} ngp_set_;
|
|
|
|
} nua_global_preferences_t;
|
|
|
|
|
|
|
|
#define ngp_set ngp_set_.set_bits
|
|
|
|
|
2006-12-21 06:30:28 +00:00
|
|
|
#define DNHP_GET(dnhp, pref) ((dnhp)->nhp_##pref)
|
|
|
|
|
|
|
|
#define NHP_GET(nhp, dnhp, pref) \
|
|
|
|
((nhp)->nhp_set.nhb_##pref \
|
|
|
|
? (nhp)->nhp_##pref : (dnhp)->nhp_##pref)
|
|
|
|
|
|
|
|
#define NHP_SET(nhp, pref, value) \
|
|
|
|
((nhp)->nhp_##pref = (value), \
|
|
|
|
(nhp)->nhp_set.nhb_##pref = 1)
|
|
|
|
|
|
|
|
/* Check if preference is set */
|
|
|
|
#define NHP_ISSET(nhp, pref) \
|
|
|
|
((nhp)->nhp_set.nhb_##pref)
|
|
|
|
|
|
|
|
#define NHP_UNSET_ALL(nhp) (memset(&(nhp)->nhp_set, 0, sizeof (nhp)->nhp_set))
|
|
|
|
#define NHP_SET_ALL(nhp) (memset(&(nhp)->nhp_set, 255, sizeof (nhp)->nhp_set))
|
|
|
|
|
|
|
|
/* Get preference from handle, if set, otherwise from default handle */
|
|
|
|
#define NH_PGET(nh, pref) \
|
|
|
|
NHP_GET((nh)->nh_prefs, (nh)->nh_nua->nua_dhandle->nh_prefs, pref)
|
|
|
|
|
|
|
|
/* Get preference from handle, if exists and set,
|
|
|
|
otherwise from default handle */
|
|
|
|
#define NUA_PGET(nua, nh, pref) \
|
|
|
|
NHP_GET((nh) ? (nh)->nh_prefs : (nua)->nua_dhandle->nh_prefs, \
|
|
|
|
(nua)->nua_dhandle->nh_prefs, \
|
|
|
|
pref)
|
|
|
|
|
|
|
|
/* Get preference from default handle */
|
|
|
|
#define DNH_PGET(dnh, pref) \
|
|
|
|
DNHP_GET((dnh)->nh_prefs, pref)
|
|
|
|
/* Check if preference is set in the handle */
|
|
|
|
#define NH_PISSET(nh, pref) \
|
|
|
|
(NHP_ISSET((nh)->nh_prefs, pref) && \
|
|
|
|
(nh)->nh_nua->nua_dhandle->nh_prefs != (nh)->nh_prefs)
|
|
|
|
|
2007-04-15 02:03:41 +00:00
|
|
|
/* Check if preference has been set by applicationx */
|
|
|
|
#define NUA_PISSET(nua, nh, pref) \
|
|
|
|
(NHP_ISSET((nua)->nua_dhandle->nh_prefs, pref) || \
|
|
|
|
((nh) && NHP_ISSET((nh)->nh_prefs, pref)))
|
|
|
|
|
2006-12-21 06:30:28 +00:00
|
|
|
#endif /* NUA_PARAMS_H */
|