/* * This file is part of the Sofia-SIP package * * Copyright (C) 2005 Nokia Corporation. * * Contact: Pekka Pessi * * 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 * */ /**@CFILE nta_tag.c * @brief Tags for Nokia SIP Transaction API * * @note This file is used to automatically generate * nta_tag_ref.c and nta_tag_dll.c * * @author Pekka Pessi * * @date Created: Tue Jul 24 22:28:34 2001 ppessi */ #include "config.h" #include #include #define TAG_NAMESPACE "nta" #include "sofia-sip/nta_tag.h" #include #include #include #include tag_typedef_t ntatag_any = NSTAG_TYPEDEF(*); /**@def NTATAG_MCLASS(x) * * Message class used by NTA. * * The nta can use a custom or extended parser created with * msg_mclass_clone(). * * @par Used with * nua_create(), nua_set_params(), * nta_agent_create(), nta_agent_set_params() * * @par Parameter type * pointer to #msg_mclass_t. * * @par Values * - custom or extended parser created with msg_mclass_clone() * - NULL - use default parser * * @par Default Value * - Value returned by sip_default_mclass() * * @sa NTATAG_SIPFLAGS() */ tag_typedef_t ntatag_mclass = PTRTAG_TYPEDEF(mclass); /**@def NTATAG_BAD_REQ_MASK(x) * * Mask for bad request messages. * * If an incoming request has erroneous headers matching with the mask, nta * automatically returns a 400 Bad Message response to them. * * If mask ~0U (all bits set) is specified, all requests with any bad header * are dropped. By default only the requests with bad headers essential for * request processing or proxying are dropped. * * @par Used with * nua_create(), nua_set_params(), * nta_agent_create(), nta_agent_set_params() * * @par Parameter type * unsigned int * * @par Values * - bitwise or of enum #sip_bad_mask values * * @par Default Value * - sip_mask_response | sip_mask_ua | sip_mask_100rel |
* sip_mask_events | sip_mask_timer | sip_mask_publish * The following headers are considered essential by default: * - @ref sip_request \"request line\"", @From, @To, @CSeq, @CallID, * @ContentLength, @Via, @ContentType, @ContentDisposition, * @ContentEncoding, @Supported, @Contact, @Require, @RecordRoute, @RAck, * @RSeq, @Event, @Expires, @SubscriptionState, @SessionExpires, * @MinSE, @SIPETag, and @SIPIfMatch. * * @sa enum #sip_bad_mask, NTATAG_BAD_RESP_MASK() */ tag_typedef_t ntatag_bad_req_mask = UINTTAG_TYPEDEF(bad_req_mask); /**@def NTATAG_BAD_RESP_MASK(x) * * Mask for bad response messages. * * If an incoming response has erroneous headers matching with the mask, nta * drops the response message. * * If mask ~0U (all bits set) is specified, all responses with any bad header * are dropped. By default only the responses with bad headers essential for * response processing or proxying are dropped. * * @par Used with * nua_create(), nua_set_params(), * nta_agent_create(), nta_agent_set_params() * * @par Parameter type * unsigned int * * @par Values * - bitwise or of enum #sip_bad_mask values * * @sa enum #sip_bad_mask, NTATAG_BAD_REQ_MASK() * * @par Default Value * - sip_mask_response | sip_mask_ua | sip_mask_100rel |
* sip_mask_events | sip_mask_timer | sip_mask_publish * The following headers are considered essential by default: * - @ref sip_status \"status line\"", @From, @To, @CSeq, @CallID, * @ContentLength, @Via, @ContentType, @ContentDisposition, * @ContentEncoding, @Supported, @Contact, @Require, @RecordRoute, @RAck, * @RSeq, @Event, @Expires, @SubscriptionState, @SessionExpires, * @MinSE, @SIPETag, and @SIPIfMatch. */ tag_typedef_t ntatag_bad_resp_mask = UINTTAG_TYPEDEF(bad_resp_mask); /**@def NTATAG_DEFAULT_PROXY(x) * * URL for (default) proxy. * * The requests are sent towards the default outbound proxy regardless * the values of request-URI or @Route headers in the request. The URL of * the default proxy is not added to the request in the @Route header or in * the request-URI (against the recommendation of @RFC3261 section 8.1.2). * * The outbound proxy set by NTATAG_DEFAULT_PROXY() is used even if the * dialog had an established route set or registration provided User-Agent * with a @ServiceRoute set. * * @par Used with * nua_create(), nua_set_params(), * nta_agent_create(), nta_agent_set_params(), * nta_outgoing_mcreate(), nta_outgoing_tcreate(), * nta_outgoing_tcancel(), nta_outgoing_prack(), nta_msg_tsend() * * @par Parameter type * Pointer to a url_t structure or a string containg a SIP or SIPS URI * * @par Values * - Valid SIP or SIPS URI */ tag_typedef_t ntatag_default_proxy = URLTAG_TYPEDEF(default_proxy); /**@def NTATAG_CONTACT(x) * * Contact used by NTA. */ tag_typedef_t ntatag_contact = SIPHDRTAG_NAMED_TYPEDEF(contact, contact); /** @def NTATAG_TARGET(x) * * Dialog target (contact) used by NTA. */ tag_typedef_t ntatag_target = SIPHDRTAG_NAMED_TYPEDEF(target, contact); /** @def NTATAG_ALIASES(x) * * Aliases used by NTA. * @deprecated */ tag_typedef_t ntatag_aliases = SIPHDRTAG_NAMED_TYPEDEF(aliases, contact); /**@def NTATAG_METHOD(x) * * Method name. * * Create a dialogless #nta_leg_t object matching only requests with * the specified method. * * @par Used with * nta_leg_tcreate() * * @par Parameter type * String containing method name. * * @par Values * - A SIP method name (e.g., "SUBSCRIBE"). * * @par Default Value * - None (i.e., all requests methods match with the leg) * */ tag_typedef_t ntatag_method = STRTAG_TYPEDEF(method); /**@def NTATAG_BRANCH_KEY(x) * * Branch ID to the topmost @Via header. * * The NTA generates a random branch ID for the topmost @Via header by default. * The application can the branch by itself, for intance, if it wants to * create a @RFC2543-era transaction. * * Note that according to @RFC3261 the branch ID must start with "z9hG4bK". * * @par Used with * nta_outgoing_mcreate(), nta_outgoing_tcreate(), * nta_outgoing_tcancel(), nta_outgoing_prack(), nta_msg_tsend() * * @par Parameter type * string * * @par Value * - The "branch" ID to to insert into topmost @Via header of the * request to be sent * * @par Default Value * - A token is generated, either by random when a client transaction is * created or by hashing the headers and contents of the request when * request is sent statelessly * * @sa @RFC3261 section 8.1.1.7 */ tag_typedef_t ntatag_branch_key = STRTAG_TYPEDEF(branch_key); /**@def NTATAG_ACK_BRANCH(x) * * Branch of the transaction to ACK. * * When creating a ACK transaction, the application should provide the * branch parameter from the original transaction to the stack. The ACK * transaction object then receives all the retransmitted 2XX responses to * the original INVITE transaction. * * @par Used with * nta_outgoing_mcreate(), nta_outgoing_tcreate() * * @par Parameter type * string * * @par Value * - "branch" ID used to store the ACK transaction in the nta hash * table for outgoing client transaction * * @par Default Value * - The INVITE transaction is looked from the hash table using the @CallID, * @CSeq, @From and @To tags and its branch ID is used */ tag_typedef_t ntatag_ack_branch = STRTAG_TYPEDEF(ack_branch); /**@def NTATAG_COMP(x) * * Compression algorithm. * * Set compression algorithm for request as described in @RFC3486. * * @note This tag is has no effect without a compression plugin. * * @par Used with * nta_outgoing_mcreate(), nta_outgoing_tcreate(), * nta_outgoing_tcancel(), nta_outgoing_prack(), nta_msg_tsend() * * @par * Note that NTATAG_COMP(NULL) can be used with nta_incoming_set_params() * and nta_incoming_treply(), too. It indicates that the response is sent * uncompressed, no matter what the client has in @a comp parameter of @Via * header. * * @par Parameter type * string * * @par Values * - name of the compression algorithm * * @par Default Value * - "sigcomp" * * @sa @RFC3320, @RFC3486, TPTAG_COMPARTMENT(), * NTATAG_SIGCOMP_ALGORITHM(), NTATAG_SIGCOMP_AWARE(), * NTATAG_SIGCOMP_CLOSE(), NTATAG_SIGCOMP_OPTIONS() */ tag_typedef_t ntatag_comp = CSTRTAG_TYPEDEF(comp); /**@def NTATAG_MSG(x) * * Pass a SIP message to treply()/tcreate() functions. * * @par Used with * nta_outgoing_tcreate(), nta_incoming_treply() * * @par Parameter type * #msg_t * * @par Values * - A message object which will be completed, serialized and encoded. * Note that the functions modify directly the message. * * @par Default Value * - A new message object is created and populated by the function call. * * @sa msg_copy(), msg_dup(), msg_create(), sip_default_mclass() */ tag_typedef_t ntatag_msg = PTRTAG_TYPEDEF(msg); /**@def NTATAG_TPORT(x) * * Pass a transport object. The transport object is used to send the request * or response message(s). * * @par Used with * nta_outgoing_tcreate(), nta_outgoing_mcreate(), nta_outgoing_tcancel(), * nta_incoming_create(), nta_msg_tsend(), nta_msg_mreply() * * @par Parameter type * - #tport_t * * @par Values * - A pointer to the transport object. Note that a new reference to the transport * is created. * * @par Default Value * - The transport is selected by resolving the outbound URI (specified with * NTATAG_DEFAULT_PROXY(), the topmost @Route URI or Request-URI. */ tag_typedef_t ntatag_tport = PTRTAG_TYPEDEF(tport); /**@def NTATAG_SMIME(x) * * Provide S/MIME context to NTA. * * @todo S/MIME is not implemented. */ tag_typedef_t ntatag_smime = PTRTAG_TYPEDEF(smime); /**@def NTATAG_REMOTE_CSEQ(x) * * Remote CSeq number. * * Specify remote command sequence number for a #nta_leg_t dialog object. If * an request is received matching with the dialog but with @CSeq number * less than the remote sequence number associated with the dialog, a 500 * Internal Server Error response is automatically returned to the client. * * @par Used with * nta_leg_tcreate() * * @par Parameter type * - uint32_t * * @par Values * - Remote command sequence number * * @par Default Value * - Initially 0, then determined by the received requests * */ tag_typedef_t ntatag_remote_cseq = UINTTAG_TYPEDEF(remote_cseq); /**@def NTATAG_MAXSIZE(x) * * Maximum size of incoming message. * * If the size of an incoming request message would exceed the * given limit, the stack will automatically respond with 413 Request * Entity Too Large. * * @par Used with * nua_create(), nua_set_params(), * nta_agent_create(), nta_agent_set_params() * * @par Parameter type * - #usize_t * * @par Values * - Maximum acceptable size of an incoming request message. * * @par Default Value * - 2097152 (bytes or 2 megabytes) * * @sa msg_maxsize(), NTATAG_UDP_MTU() */ tag_typedef_t ntatag_maxsize = USIZETAG_TYPEDEF(maxsize); /**@def NTATAG_MAX_PROCEEDING(x) * * Maximum size of proceeding queue. * * If the size of the proceedng message queue would exceed the * given limit, the stack will automatically respond with 503 * Service Unavailable. * * @par Used with * nua_create(), nua_set_params(), * nta_agent_create(), nta_agent_set_params() * * @par Parameter type * - #usize_t * * @par Values * - Maximum acceptable size of a queue (size_t). * */ tag_typedef_t ntatag_max_proceeding = USIZETAG_TYPEDEF(max_proceeding); /**@def NTATAG_UDP_MTU(x) * * Maximum size of outgoing UDP request. * * The maximum UDP request size is used to control use of UDP with overtly * large messages. The IETF requires that the SIP requests over 1300 bytes * are sent over congestion-controlled transport such as TCP. If a SIP * message size exceeds the UDP MTU, the TCP is tried instead of UDP. (If * the TCP connection is refused, the stack reverts back to UDP). * * @par Used with * nua_create(), nua_set_params(), * nta_agent_create(), nta_agent_set_params() * * @par Parameter type * - unsigned * * @par Values * - Maximum size of an outgoing UDP request * * @par Default Value * - 1300 (bytes) * * @sa @RFC3261 section 18.1.1, NTATAG_MAXSIZE() */ tag_typedef_t ntatag_udp_mtu = UINTTAG_TYPEDEF(udp_mtu); /**@def NTATAG_MAX_FORWARDS(x) * * Default value for @MaxForwards header. * * The default value of @MaxForwards header added to the requests. The * initial value recommended by @RFC3261 is 70, but usually SIP proxies use * much lower default value, such as 24. * * @par Used with * nua_create(), nua_set_params(), * nta_agent_create(), nta_agent_set_params() * * @par Parameter type * unsigned * * @par Values * - Default value added to the @MaxForwards header in the sent requests * * @par Default Value * - 70 (hops) * * @since New in @VERSION_1_12_2. */ tag_typedef_t ntatag_max_forwards = UINTTAG_TYPEDEF(max_forwards); /**@def NTATAG_SIP_T1(x) * * Initial retransmission interval (in milliseconds) * * Set the T1 retransmission interval used by the SIP transaction engine. The * T1 is the initial duration used by request retransmission timers A and E * (UDP) as well as response retransmission timer G. * * @par Used with * nua_create(), nua_set_params(), * nta_agent_create(), nta_agent_set_params() * * @par Parameter type * unsigned int * * @par Values * - Value of SIP T1 in milliseconds * * @par Default Value * - #NTA_SIP_T1 or 500 (milliseconds) * * @sa @RFC3261 appendix A, #NTA_SIP_T1, NTATAG_SIP_T1X4(), NTATAG_SIP_T1(), NTATAG_SIP_T4() */ tag_typedef_t ntatag_sip_t1 = UINTTAG_TYPEDEF(sip_t1); /**@def NTATAG_SIP_T1X64(x) * * Transaction timeout (defaults to T1 * 64). * * Set the T1x64 timeout value used by the SIP transaction engine. The T1x64 is * duration used for timers B, F, H, and J (UDP) by the SIP transaction engine. * The timeout value T1x64 can be adjusted separately from the initial * retransmission interval T1, which is set with NTATAG_SIP_T1(). * * The default value for T1x64 is 64 times value of T1, or 32000 milliseconds. * * @par Used with * nua_create(), nua_set_params(), * nta_agent_create(), nta_agent_set_params() * * @par Parameter type * unsigned int * * @par Values * - Value of T1x64 in milliseconds * * @par Default Value * - 64 * #NTA_SIP_T1 or 32000 (milliseconds) * * @sa @RFC3261 appendix A, #NTA_SIP_T1, NTATAG_SIP_T1(), NTATAG_SIP_T2(), NTATAG_SIP_T4() * */ tag_typedef_t ntatag_sip_t1x64 = UINTTAG_TYPEDEF(sip_t1x64); /**@def NTATAG_SIP_T2(x) * * Maximum retransmission interval (in milliseconds) * * Set the maximum retransmission interval used by the SIP transaction * engine. The T2 is the maximum duration used for the timers E (UDP) and G * by the SIP transaction engine. Note that the timer A is not capped by T2. * Retransmission interval of INVITE requests grows exponentially until the * timer B fires. * * @par Used with * nua_create(), nua_set_params(), * nta_agent_create(), nta_agent_set_params() * * @par Parameter type * unsigned int * * @par Values * - Value of SIP T2 in milliseconds * * @par Default Value * - #NTA_SIP_T2 or 4000 (milliseconds) * * @sa @RFC3261 appendix A, #NTA_SIP_T2, NTATAG_SIP_T1(), NTATAG_SIP_T1X4(), NTATAG_SIP_T4() */ tag_typedef_t ntatag_sip_t2 = UINTTAG_TYPEDEF(sip_t2); /**@def NTATAG_SIP_T4(x) * * Transaction lifetime (in milliseconds) * * Set the lifetime for completed transactions used by the SIP transaction * engine. A completed transaction is kept around for the duration of T4 in * order to catch late responses. The T4 is the maximum duration for the * messages to stay in the network and the duration of SIP timer K. * * @par Used with * nua_create(), nua_set_params(), * nta_agent_create(), nta_agent_set_params() * * @par Parameter type * unsigned int * * @par Values * - Value of SIP T4 in milliseconds * * @par Default Value * - #NTA_SIP_T4 or 4000 (milliseconds) * * @sa @RFC3261 appendix A, #NTA_SIP_T4, NTATAG_SIP_T1(), NTATAG_SIP_T1X4(), NTATAG_SIP_T2() */ tag_typedef_t ntatag_sip_t4 = UINTTAG_TYPEDEF(sip_t4); /**@def NTATAG_PROGRESS(x) * * Progress timer for User-Agents (interval for retranmitting 1XXs). * * The UAS should retransmit preliminary responses to the INVITE * transactions every minute in order to re-set the timer C within the * intermediate proxies. * * The default value for the progress timer is 60000. * * @par Used with * nua_create(), nua_set_params(), * nta_agent_create(), nta_agent_set_params() * * @par Parameter type * unsigned int * * @par Values * Value of progress timer in milliseconds. * * @par Default Value * - 90000 (milliseconds, 1.5 minutes) * * @sa @RFC3261 sections 13.3.1.1, 16.7 and 16.8, NTATAG_TIMER_C(), * NTATAG_SIP_T1(), NTATAG_SIP_T1X4(), NTATAG_SIP_T2(), NTATAG_SIP_T4() */ tag_typedef_t ntatag_progress = UINTTAG_TYPEDEF(progress); /**@def NTATAG_TIMER_C(x) * * Value for timer C in milliseconds. * * By default the INVITE transaction will not timeout after a preliminary * response has been received. However, an intermediate proxy can timeout * the transaction using timer C. Timer C is reset every time a response * belonging to the transaction is received. * * The default value for the timer C is 185000 milliseconds (3 minutes and 5 * seconds). By default, timer C is not run on user agents (if NTATAG_UA(1) * without NTATAG_TIMER_C() is given). * * @par Used with * nua_create(), nua_set_params(), * nta_agent_create(), nta_agent_set_params() * * @par Parameter type * unsigned int * * @par Values * Value of SIP timer C in milliseconds. The default value is used * instead if NTATAG_TIMER_C(0) is given. * * @par Default Value * - 180000 (milliseconds, 3 minutes) * * @sa @RFC3261 sections 13.3.1.1, 16.7 and 16.8, * NTATAG_UA(1), NTATAG_TIMER_C(), * NTATAG_SIP_T1(), NTATAG_SIP_T1X4(), NTATAG_SIP_T2(), NTATAG_SIP_T4() * * @NEW_1_12_7. */ tag_typedef_t ntatag_timer_c = UINTTAG_TYPEDEF(timer_c); /**@def NTATAG_GRAYLIST(x) * * Avoid failed servers. * * The NTATAG_GRAYLIST() provides the time that the servers are avoided * after a request sent to them has been failed. Avoiding means that if a * domain provides multiple servers, the failed servers are tried last. * * @par Used with * nua_create(), nua_set_params(), * nta_agent_create(), nta_agent_set_params() * * @par Parameter type * unsigned int * * @par Values * - Number of seconds that server is kept in graylist, from 0 to 86400. * * @par Default Value * - 600 (graylist server for 10 minutes) * * @sa NTATAG_BLACKLIST(), NTATAG_TIMEOUT_408() */ tag_typedef_t ntatag_graylist = UINTTAG_TYPEDEF(graylist); /**@def NTATAG_BLACKLIST(x) * * Add Retry-After header to error responses returned to application. * * The NTATAG_BLACKLIST() provides a default value for @RetryAfter header * added to the internally generated responses such as 503 DNS Error * or 408 Timeout. The idea is that the application can retain its * current state and retry the operation after a while. * * @par Used with * nua_create(), nua_set_params(), * nta_agent_create(), nta_agent_set_params() * * @par Parameter type * unsigned int * * @par Values * - Value of @a delta-seconds in @RetryAfter header, from 0 to 86400 * * @par Default Value * - 0 (no @RetryAfter header is included) * * @sa NTATAG_TIMEOUT_408() */ tag_typedef_t ntatag_blacklist = UINTTAG_TYPEDEF(blacklist); /**@def NTATAG_DEBUG_DROP_PROB(x) * * Packet drop probability for debugging. * * The packet drop probability parameter is useful mainly for debugging * purposes. The stack drops an incoming message received over an unreliable * transport (such as UDP) with the given probability. The range is in 0 .. * 1000, 500 means p=0.5. * * @par Used with * nua_create(), nua_set_params(), * nta_agent_create(), nta_agent_set_params() * * @par Parameter type * unsigned integer * * @par Values * - Valid values are in range 0 ... 1000 * - Probablity to drop a given message is value / 1000. * * @par Default Value * - 0 (no packets are dropped) * * @sa TPTAG_DEBUG_DROP() */ tag_typedef_t ntatag_debug_drop_prob = UINTTAG_TYPEDEF(debug_drop_prob); /**@def NTATAG_SIGCOMP_OPTIONS(x) * * Semicolon-separated SigComp options. * * @note This tag is has no effect without a SigComp plugin. * * @par Used with * nua_create(), nua_set_params(), * nta_agent_create(), nta_agent_set_params(), * nta_agent_add_tport() * * @par Parameter type * string * * @par Values * - semicolon-separated parameter-value pairs, passed to the SigComp plugin * * @sa NTATAG_COMP(), NTATAG_SIGCOMP_ALGORITHM(), NTATAG_SIGCOMP_AWARE(), * NTATAG_SIGCOMP_CLOSE(), @RFC3320 */ tag_typedef_t ntatag_sigcomp_options = STRTAG_TYPEDEF(sigcomp_options); /**@def NTATAG_SIGCOMP_CLOSE(x) * * Close SigComp compartment after completing transaction. * * @note This tag is has no effect without a SigComp plugin. * * @par Used with * nta_incoming_set_params(), nta_incoming_treply() * nta_outgoing_mcreate(), nta_outgoing_tcreate(), * nta_outgoing_tmcreate(), nta_outgoing_tcancel(), * nta_outgoing_prack(), nta_msg_tsend(), nta_msg_treply() * * @par Parameter type * boolean: true (non-zero or non-NULL pointer) * or false (zero or NULL pointer) * * @par Values * - true - application takes care of compartment management * - false - stack manages compartments * * @sa NTATAG_COMP(), TPTAG_COMPARTMENT(), * NTATAG_SIGCOMP_ALGORITHM(), NTATAG_SIGCOMP_AWARE(), * NTATAG_SIGCOMP_OPTIONS(), @RFC3320 */ tag_typedef_t ntatag_sigcomp_close = BOOLTAG_TYPEDEF(sigcomp_close); /**@def NTATAG_SIGCOMP_AWARE(x) * * Indicate that the application is SigComp-aware. * * @note This tag is has no effect without a SigComp plugin. * * @par Used with * nua_create(), nua_set_params(), * nta_agent_create(), nta_agent_set_params() * * @par Parameter type * boolean: true (non-zero or non-NULL pointer) * or false (zero or NULL pointer) * * @par Values * - true - application takes care of compartment management * - false - stack manages compartments * * @sa NTATAG_COMP(), NTATAG_SIGCOMP_ALGORITHM(), NTATAG_SIGCOMP_CLOSE(), * NTATAG_SIGCOMP_OPTIONS(), @RFC3320 */ tag_typedef_t ntatag_sigcomp_aware = BOOLTAG_TYPEDEF(sigcomp_aware); /**@def NTATAG_SIGCOMP_ALGORITHM(x) * * Specify SigComp algorithm. * * @note This tag is has no effect without a SigComp plugin. * * @par Used with * nua_create(), nua_set_params(), * nta_agent_create(), nta_agent_set_params(), * nta_agent_add_tport() * * @par Parameter type * string * * @par Values * - opaque string passed to the SigComp plugin * * @sa NTATAG_COMP(), NTATAG_SIGCOMP_AWARE(), NTATAG_SIGCOMP_CLOSE(), * NTATAG_SIGCOMP_OPTIONS(), @RFC3320 */ tag_typedef_t ntatag_sigcomp_algorithm = STRTAG_TYPEDEF(sigcomp_algorithm); /**@def NTATAG_UA(x) * * If true, NTA acts as User Agent Server or Client by default. * * When acting as an UA, the NTA stack will * - respond with 481 to a PRACK request with no matching "100rel" response * - check for out-of-order CSeq headers for each #nta_leg_t dialog object * - if NTATAG_MERGE_482(1) is also used, return 482 Request Merged to * a duplicate request with same @CallID, @CSeq, @From tag but different * topmost @Via header (see @RFC3261 section 8.2.2.2 Merged Requests) * - silently discard duplicate final responses to INVITE * - retransmit preliminary responses (101..199) to INVITE request in regular * intervals ("timer N2") * - retransmit 2XX response to INVITE request with exponential intervals * - handle ACK sent in 2XX response to an INVITE using the * #nta_ack_cancel_f callback bound to #nta_incoming_t with * nta_incoming_bind() * - not use timer C unless its value has been explicitly set * * @note This NUTAG_UA(1) is set internally by nua_create() * * @par Used with * nta_agent_create() \n * nta_agent_set_params() \n * * @par Parameter type * boolean: true (non-zero or non-NULL pointer) * or false (zero or NULL pointer) * * @par Values * - true - act as an UA * - false - act as an proxy * * @par Default Value * - 0 (false) * * @sa NTATAG_MERGE_482() */ tag_typedef_t ntatag_ua = BOOLTAG_TYPEDEF(ua); /**@def NTATAG_STATELESS(x) * * Enable stateless processing. * * @par Server side * The incoming requests are processed statefully if there is a default leg * (created with nta_leg_default()). This option is provided for proxies or * other server elements that process requests statelessly. * * @par Used with * nua_create(), nua_set_params(), * nta_agent_create(), nta_agent_set_params() * * @par Values * - true - do not pass incoming requests to default leg * - false - pass incoming requests to default leg, if it exists * * @par Default Value * - 0 (false, pass incoming requests to default leg) * * @par Client side * The outgoing requests can be sent statelessly, too, if the * NTATAG_STATELESS(1) is included in the tag list of nta_outgoing_tcreate(). * * @par Used with * nta_outgoing_mcreate(), nta_outgoing_tcreate(), * nta_outgoing_tcancel(), nta_outgoing_prack() * * @par Parameter type * boolean: true (non-zero or non-NULL pointer) * or false (zero or NULL pointer) * * @par Values * - true - create only a transient #nta_outgoing_t transaction object * - false - create an ordinary client transaction object * * @par Default Value * - 0 (false, create client transaction) * * @sa NTATAG_IS_UA(), nta_incoming_default(), nta_outgoing_default(), * nta_leg_default() */ tag_typedef_t ntatag_stateless = BOOLTAG_TYPEDEF(stateless); /**@def NTATAG_USER_VIA(x) * * Allow application to insert Via headers. * * @par Used with * nua_create(), nua_set_params(), * nta_agent_create(), nta_agent_set_params(), * nta_outgoing_mcreate(), nta_outgoing_tcreate(), * nta_outgoing_tcancel(), nta_outgoing_prack(), nta_msg_tsend() * * @par Parameter type * boolean: true (non-zero or non-NULL pointer) * or false (zero or NULL pointer) * * @par Values * - true - do not add @Via header to the request (if it has one) * - false - always add a @Via header * * @par Default Value * - 0 (false, always add a @Via header) * * @sa NTATAG_BRANCH(), NTATAG_TPORT() */ tag_typedef_t ntatag_user_via = BOOLTAG_TYPEDEF(user_via); /**@def NTATAG_PASS_100(x) * * Pass "100 Trying" provisional answers to the application. * * By default, the stack silently processes the 100 Trying responses * from the server. Usually the 100 Trying responses are not * important to the application but rather sent by the outgoing proxy * immediately after it has received the request. However, the application * can ask nta for them by setting NTATAG_PASS_100(1) if, for instance, the * 100 Trying responses are needed for user feedback. * * @par Used with * nua_create(), nua_set_params(), * nta_agent_create(), nta_agent_set_params(), * nta_outgoing_mcreate(), nta_outgoing_tcreate(), * nta_outgoing_tcancel(), nta_outgoing_prack(), nta_msg_tsend() * * @par Parameter type * boolean: true (non-zero or non-NULL pointer) * or false (zero or NULL pointer) * * @par Values * - true - pass 100 Trying to application * - false - silently process 100 Trying responses * * @par Default Value * - 0 (false, save application from seeing 100 Trying) * * @sa NTATAG_EXTRA_100(), NTATAG_DEFAULT_PROXY() */ tag_typedef_t ntatag_pass_100 = BOOLTAG_TYPEDEF(pass_100); /**@def NTATAG_EXTRA_100(x) * * Respond with "100 Trying" if application has not responded. * * As per recommended by @RFC4320, the stack can generate a 100 Trying * response to the non-INVITE requests if the application has not responded * to a request within half of the SIP T2 (the default value for T2 is 4000 * milliseconds, so the extra 100 Trying would be sent after 2 seconds). * * @par Used with * nua_create(), nua_set_params(), * nta_agent_create(), nta_agent_set_params() * * @par Parameter type * boolean: true (non-zero or non-NULL pointer) * or false (zero or NULL pointer) * * @par Values * - true - send extra 100 Trying if application does not respond * - false - do not send 100 Trying * * @par Default Value * - 0 (false, do not respond with 100 Trying to retransmissions) * @sa @RFC4320, NTATAG_PASS_408(), NTATAG_TIMEOUT_408() */ tag_typedef_t ntatag_extra_100 = BOOLTAG_TYPEDEF(extra_100); /**@def NTATAG_TIMEOUT_408(x) * * Generate "408 Request Timeout" response when request times out. * * This tag is used to prevent stack from generating extra 408 response * messages to non-INVITE requests upon timeout. As per recommended by * @RFC4320, the 408 Request Timeout responses to non-INVITE * transaction are not sent over the network to the client by default. The * application can ask stack to pass the 408 responses with * NTATAG_PASS_408(1). * * @par Used with * nua_create(), nua_set_params(), * nta_agent_create(), nta_agent_set_params() * * @par Parameter type * boolean: true (non-zero or non-NULL pointer) * or false (zero or NULL pointer) * * @par Values * - true - generate 408 response * - false - invoke #nta_response_f callback with NULL sip pointer * when a non-INVITE transaction times out * * @sa @RFC4320, NTATAG_PASS_408(), NTATAG_EXTRA_100(), */ tag_typedef_t ntatag_timeout_408 = BOOLTAG_TYPEDEF(timeout_408); /**@def NTATAG_PASS_408(x) * * Pass "408 Request Timeout" responses to the client. * * As per recommended by @RFC4320, the 408 Request Timeout responses * to non-INVITE transaction are not sent over the network to the client by * default. The application can ask stack to pass the 408 responses with * NTATAG_PASS_408(1). * * Note that unlike NTATAG_PASS_100(), this tags changes the way server side * works. * * @par Used with * nua_create(), nua_set_params(), * nta_agent_create(), nta_agent_set_params() * * @par Parameter type * boolean: true (non-zero or non-NULL pointer) * or false (zero or NULL pointer) * * @par Values * - true - pass superfluous 408 responses * - false - discard superfluous 408 responses * * @sa @RFC4320, NTATAG_EXTRA_100(), NTATAG_TIMEOUT_408() * */ tag_typedef_t ntatag_pass_408 = BOOLTAG_TYPEDEF(pass_408); /**@def NTATAG_MERGE_482(x) * * Merge requests, send 482 to other requests. * * If an User-Agent receives a duplicate request with same @CallID, @CSeq, * @From tag but different topmost @Via header (see @RFC3261 section 8.2.2.2 * Merged Requests), it should return 482 Request Merged response to * the duplicate request. Such a duplicate request has been originally * generated by a forking proxy and usually routed via different route to * the User-Agent. The User-Agent should only respond meaningfully to the * first request and return the 482 response to the following forked * requests. * * Note that also NTATAG_UA(1) should be set before nta detects merges and * responds with 482 to them. * * @note If your application is an multi-lined user-agent, you may consider * disabling request merging. However, you have to somehow handle merging * within a single line. * * @par Used with * nua_create(), nua_set_params(), * nta_agent_create(), nta_agent_set_params() * * @par Parameter type * boolean: true (non-zero or non-NULL pointer) * or false (zero or NULL pointer) * * @par Values * - true - detect duplicate requests and respond with 482 to them * - false - process duplicate requests separately * * @sa NTATAG_UA(1) */ tag_typedef_t ntatag_merge_482 = BOOLTAG_TYPEDEF(merge_482); /**@def NTATAG_CANCEL_2543(x) * *Follow @RFC2543 semantics with CANCEL. * * By default, the nta follows "@RFC3261" semantics when CANCELing a * request. The CANCEL does not terminate transaction, rather, it is just a * hint to the server that it should respond immediately (with 487 * Request Terminated if it has no better response). Also, if the * original request was sent over unreliable transport such as UDP, the * CANCEL is delayed until the server has sent a preliminary response to the * original request. * * If NTATAG_CANCEL_2543(1) is given, the transaction is canceled * immediately internally (a 487 response is generated locally) and the * CANCEL request is sent without waiting for an provisional response. * * @par Used with * nua_create(), nua_set_params(), * nta_agent_create(), nta_agent_set_params() * nta_outgoing_tcancel() * * @par Parameter type * boolean: true (non-zero or non-NULL pointer) * or false (zero or NULL pointer) * * @par Values * - true - follow "RFC 2543" semantics with CANCEL * - false - follow "RFC 3261" semantics with CANCEL * * @sa NTATAG_CANCEL_408() */ tag_typedef_t ntatag_cancel_2543 = BOOLTAG_TYPEDEF(cancel_2543); /**@def NTATAG_CANCEL_408(x) * * Do not send a CANCEL but just timeout the request. * * Calling nta_outgoing_tcancel() with this tag set marks request as * canceled but does not actually send a CANCEL request. If * NTATAG_CANCEL_2543(1) is also included, a 487 response is generated * internally. * * @par Used with * nta_outgoing_tcancel() \n * * @par Parameter type * boolean: true (non-zero or non-NULL pointer) * or false (zero or NULL pointer) * * @par Values * - true - do not send CANCEL * - false - let request to timeout * * @sa NTATAG_CANCEL_2543() */ tag_typedef_t ntatag_cancel_408 = BOOLTAG_TYPEDEF(cancel_408); /**@def NTATAG_CANCEL_487(x) * * When a CANCEL is received, automatically return 487 response to original request. * * When the CANCEL is received for an ongoing server transaction * #nta_incoming_t, the stack will automatically return a 487 Request * Terminated response to the client after returning from the * #nta_incoming_f callback bound to the transaction with * nta_incoming_bind() * * The application can delay sending the response to the original request * when NTATAG_CANCEL_408(0) is used. This is useful, for instance, with a * proxy that forwards the CANCEL downstream and the forwards the response * back to upstream. * * @par Used with * nua_create(), nua_set_params(), * nta_agent_create(), nta_agent_set_params() * * @par Parameter type * boolean: true (non-zero or non-NULL pointer) * or false (zero or NULL pointer) * * @par Values * - true - respond automatically to the CANCELed transaction * - false - application takes care of responding * * @sa NTATAG_CANCEL_2543(), nta_incoming_bind() */ tag_typedef_t ntatag_cancel_487 = BOOLTAG_TYPEDEF(cancel_487); /**@def NTATAG_TAG_3261(x) * * When responding to requests, use unique tags. * * If set the UA would generate an unique @From/@To tag for all dialogs. If * unset UA would reuse same tag in order to make it easier to re-establish * dialog state after a reboot. * * @par Used with * nua_create(), nua_set_params(), * nta_agent_create(), nta_agent_set_params() * * @par Parameter type * boolean: true (non-zero or non-NULL pointer) * or false (zero or NULL pointer) * * @par Values * - true - use different tag for each dialog * - false - use same tag for all dialogs * * @sa @RFC3261 section 12.2.2 */ tag_typedef_t ntatag_tag_3261 = BOOLTAG_TYPEDEF(tag_3261); /**@def NTATAG_REL100(x) * * Include rel100 in INVITE requests. * * Include feature tag "100rel" in @Supported header of the INVITE requests. * * @par Used with * nua_create(), nua_set_params(), * nta_agent_create(), nta_agent_set_params() * * @par Parameter type * boolean: true (non-zero or non-NULL pointer) * or false (zero or NULL pointer) * * @par Values * - true - include "100rel" * - false - do not include "100rel" * * @sa nta_outgoing_prack(), nta_reliable_treply(), nta_reliable_mreply() */ tag_typedef_t ntatag_rel100 = BOOLTAG_TYPEDEF(rel100); /**@def NTATAG_NO_DIALOG(x) * * Create a leg without dialog. */ tag_typedef_t ntatag_no_dialog = BOOLTAG_TYPEDEF(no_dialog); /**@def NTATAG_USE_TIMESTAMP(x) * * Use @Timestamp header. * * If set, a @Timestamp header would be added to stateful requests. The * header can be used to calculate the roundtrip transport latency between * client and server. * * @par Used with * nua_create(), * nta_agent_create(), * nta_agent_set_params(), * nta_outgoing_mcreate(), nta_outgoing_tcreate(), * nta_outgoing_tcancel(), and nta_outgoing_prack(). * * @par Parameter type * boolean: true (non-zero or non-NULL pointer) * or false (zero or NULL pointer) * * @par Values * - true - Add @Timestamp header * - false - do not add @Timestamp header * * @sa @RFC3261 section 8.2.6 */ tag_typedef_t ntatag_use_timestamp = BOOLTAG_TYPEDEF(use_timestamp); /**@def NTATAG_SIPFLAGS(x) * * Set SIP parser flags. * * The SIP parser flags affect how the messages are parsed and the result * presented to the application. They also control encoding of messages. * The most important flags are as follows: * - MSG_FLG_COMPACT - use compact form * (single-letter header names, minimum whitespace) * - MSG_FLG_EXTRACT_COPY - cache printable copy of headers when parsing. * Using this flag can speed up proxy processing considerably. It is * implied when the parsed messages are logged (because #TPORT_LOG * environment variable is set, or TPTAG_LOG() is used. * * @par Used with * nua_create(), nua_set_params(), * nta_agent_create(), nta_agent_set_params() * * @par Parameter type * unsigned int * * @par Values * - Bitwise OR of SIP parser flags (enum #msg_flg_user) * * @sa NTATAG_PRELOAD(), enum #msg_flg_user, sip_s::sip_flags */ tag_typedef_t ntatag_sipflags = UINTTAG_TYPEDEF(sipflags); /**@def NTATAG_CLIENT_RPORT(x) * * Enable client-side "rport". * * This tag controls @RFC3581 support on client side. The "rport" parameter * is used when the response has to be routed symmetrically through a NAT box. * * The client-side support involves just adding the "rport" parameter to the topmost * @Via header before the request is sent. * * @note By default, the client "rport" is disabled when nta is used, and * enabled when nua is used. * * @par Used with * nua_create() (nua uses NTATAG_CLIENT_RPORT(1) by default) \n * nta_agent_create() \n * nta_agent_set_params() \n * * @par Parameter type * boolean: true (non-zero or non-NULL pointer) * or false (zero or NULL pointer) * * @par Values * - true - add "rport" parameter * - false - do not add "rport" parameter * * @note The NTATAG_RPORT() is a synonym for this. * * @sa @RFC3581, NTATAG_SERVER_RPORT(), NTATAG_TCP_RPORT(), NTATAG_TLS_RPORT(), @Via */ tag_typedef_t ntatag_client_rport = BOOLTAG_TYPEDEF(client_rport); /**@def NTATAG_SERVER_RPORT(x) * * Use rport parameter at server. * * This tag controls @RFC3581 support on server side. The "rport" parameter * is used when the response has to be routed symmetrically through a NAT * box. * * If the topmost @Via header has an "rport" parameter, the server stores * the port number from which the request was sent in it. When sending the * response back to the client, the server uses the port number in the * "rport" parameter rather than the client-supplied port number in @Via * header. * * Note that on server-side the port number is stored regardless of the * transport protocol. (It is assumed that client supports rport if it * includes "rport" parameter in @Via field). * * @par Used with * nua_create(), nua_set_params(), * nta_agent_create(), nta_agent_set_params() * * @par Parameter type * boolean: true (non-zero or non-NULL pointer) * or false (zero or NULL pointer) * * @par Values * - 2 - add "rport" parameter even if was not present in request * - 1 - use "rport" parameter (default) * - 0 - do not use "rport" parameter * * @sa @RFC3581, NTATAG_CLIENT_RPORT(), NTATAG_TCP_RPORT(), NTATAG_TLS_RPORT(), @Via */ tag_typedef_t ntatag_server_rport = INTTAG_TYPEDEF(server_rport); /**@def NTATAG_TCP_RPORT(x) * * Use rport with TCP, too. * * @par Used with * nua_create(), nua_set_params(), * nta_agent_create(), nta_agent_set_params() * * @par Parameter type * boolean: true (non-zero or non-NULL pointer) * or false (zero or NULL pointer) * * @par Values * - true - include rport parameter in the TCP via line on client side * - false - do not include rport parameter in the TCP via line on client side * * @sa @RFC3581, NTATAG_CLIENT_RPORT(), NTATAG_SERVER_RPORT(), @Via */ tag_typedef_t ntatag_tcp_rport = BOOLTAG_TYPEDEF(tcp_rport); /**@def NTATAG_TLS_RPORT(x) * * Use rport with TLS, too. * * @par Used with * nua_create(), nua_set_params(), * nta_agent_create(), nta_agent_set_params() * * @par Parameter type * boolean: true (non-zero or non-NULL pointer) * or false (zero or NULL pointer) * * @par Values * - true - include rport parameter in the TLS via line on client side * - false - do not include rport parameter in the TLS via line * on client side * * @sa @RFC3581, NTATAG_CLIENT_RPORT(), NTATAG_SERVER_RPORT(), @Via */ tag_typedef_t ntatag_tls_rport = BOOLTAG_TYPEDEF(tls_rport); /**@def NTATAG_PRELOAD(x) * * Preload by N bytes. * * When the memory block is allocated for an incoming request by the stack, * the stack can allocate some extra memory for the parser in addition to * the memory used by the actual message contents. * * While wasting some memory, this can speed up parsing considerably. * Recommended amount of preloading per packet is 1500 bytes. * * @par Used with * nua_create(), nua_set_params(), * nta_agent_create(), nta_agent_set_params() * * @par Parameter type * unsigned * * @par Values * Amount of extra per-message memory allocated for parser. * * @sa NTATAG_SIPFLAGS() and #MSG_FLG_EXTRACT_COPY */ tag_typedef_t ntatag_preload = UINTTAG_TYPEDEF(preload); /**@def NTATAG_USE_NAPTR(x) * * If true, try to use NAPTR records when resolving. * * The application can disable NTA from using NAPTR records when resolving * SIP URIs. * * @par Used with * nua_create(), nua_set_params(), * nta_agent_create(), nta_agent_set_params() * * @par Parameter type * boolean: true (non-zero or non-NULL pointer) * or false (zero or NULL pointer) * * @par Values * - true - enable NAPTR resolving * - false - disable NAPTR resolving * * @bug NAPTRs are not used with SIPS URIs in any case. * * @sa @RFC3263, NTATAG_USE_SRV() */ tag_typedef_t ntatag_use_naptr = BOOLTAG_TYPEDEF(naptr); /**@def NTATAG_USE_SRV(x) * * If true, try to use SRV records when resolving. * * The application can disable NTA from using SRV records when resolving * SIP URIs. * * @par Used with * nua_create(), nua_set_params(), * nta_agent_create(), nta_agent_set_params() * * @par Parameter type * boolean: true (non-zero or non-NULL pointer) * or false (zero or NULL pointer) * * @par Values * - true - enable SRV resolving * - false - disable SRV resolving * * @sa @RFC3263, NTATAG_USE_NAPTR() */ tag_typedef_t ntatag_use_srv = BOOLTAG_TYPEDEF(srv); /**@def NTATAG_RSEQ(x) * * @RSeq value for nta_outgoing_prack(). * * @par Used with * nta_outgoing_prack() * * @par Parameter type * @c unsigned @c int * * @par Values * Response sequence number from the @RSeq header. */ tag_typedef_t ntatag_rseq = UINTTAG_TYPEDEF(rseq); /* Status */ /**@def NTATAG_S_IRQ_HASH_REF(x) * * Get size of hash table for server-side transactions. * * Return number of transactions that fit in the hash table for server-side * transactions. * * @sa nta_agent_get_stats(), NTATAG_S_IRQ_HASH_USED_REF(), * NTATAG_S_ORQ_HASH_REFxs(), NTATAG_S_LEG_HASH_REF() */ tag_typedef_t ntatag_s_irq_hash = USIZETAG_TYPEDEF(s_irq_hash); /**@def NTATAG_S_ORQ_HASH_REF(x) * * Get size of hash table for client-side transactions. * * Return number of transactions that fit in the hash table for client-side * transactions. * * @sa nta_agent_get_stats(), NTATAG_S_ORQ_HASH_USED_REF(), * NTATAG_S_IRQ_HASH_REF(), NTATAG_S_LEG_HASH_REF() */ tag_typedef_t ntatag_s_orq_hash = USIZETAG_TYPEDEF(s_orq_hash); /**@def NTATAG_S_LEG_HASH_REF(x) * * Get size of hash table for dialogs. * * Return number of dialog objects that fit in the hash table for dialogs. * * @sa nta_agent_get_stats(), NTATAG_S_LEG_HASH_USED_REF(), * NTATAG_S_IRQ_HASH_REF(), NTATAG_S_ORQ_HASH_REF() */ tag_typedef_t ntatag_s_leg_hash = USIZETAG_TYPEDEF(s_leg_hash); /**@def NTATAG_S_IRQ_HASH_USED_REF(x) * * Get number of server-side transactions in the hash table. * * Return number of server-side transactions objects in the hash table. The * number includes all transactions destroyed by the application which have * not expired yet. * * @sa nta_agent_get_stats(), NTATAG_S_IRQ_HASH_REF(), * NTATAG_S_ORQ_HASH_USED_REF(), NTATAG_S_LEG_HASH_USED_REF() */ /**@def NTATAG_S_IRQ_HASH_USED_REF(x) * * Get number of server-side transactions in the hash table. * * Return number of server-side transactions objects in the hash table. The * number includes all transactions destroyed by the application which have * not expired yet. * * @sa nta_agent_get_stats(), NTATAG_S_IRQ_HASH_REF(), * NTATAG_S_ORQ_HASH_USED_REF(), NTATAG_S_LEG_HASH_USED_REF() */ tag_typedef_t ntatag_s_irq_hash_used = USIZETAG_TYPEDEF(s_irq_hash_used); /**@def NTATAG_S_ORQ_HASH_USED_REF(x) * * Get number of client-side transactions in the hash table. * * Return number of client-side transactions objects in the hash table. The * number includes all transactions destroyed by the application which have * not expired yet. * * @sa nta_agent_get_stats(), NTATAG_S_ORQ_HASH_REF(), * NTATAG_S_IRQ_HASH_USED_REF(), NTATAG_S_LEG_HASH_USED_REF() */ tag_typedef_t ntatag_s_orq_hash_used = USIZETAG_TYPEDEF(s_orq_hash_used); /**@def NTATAG_S_LEG_HASH_USED_REF(x) * * Get number of dialogs in the hash table. * * Return number of dialog objects in the hash table. Note that the * nta_leg_t objects created with NTATAG_NO_DIALOG(1) and this not * corresponding to a dialog are not included in the number. * * @sa nta_agent_get_stats(), NTATAG_S_LEG_HASH_REF(), * NTATAG_S_IRQ_HASH_USED_REF(), NTATAG_S_ORQ_HASH_USED_REF() */ tag_typedef_t ntatag_s_leg_hash_used = USIZETAG_TYPEDEF(s_leg_hash_used); /**@def NTATAG_S_RECV_MSG_REF(x) * * Get number of SIP messages received. * * Return number SIP messages that has been received. The number includes * also bad and unparsable messages. * * @sa nta_agent_get_stats(), NTATAG_S_BAD_MESSAGE_REF(), * NTATAG_S_RECV_REQUEST_REF(), NTATAG_S_RECV_RESPONSE_REF() */ tag_typedef_t ntatag_s_recv_msg = USIZETAG_TYPEDEF(s_recv_msg); /**@def NTATAG_S_RECV_REQUEST_REF(x) * * Get number of SIP requests received. * * Return number SIP requests that has been received. The number includes * also number of bad requests available with NTATAG_S_BAD_REQUEST_REF(). * * @sa nta_agent_get_stats(), NTATAG_S_BAD_REQUEST_REF(), * NTATAG_S_RECV_MSG_REF(), NTATAG_S_RECV_RESPONSE_REF() */ tag_typedef_t ntatag_s_recv_request = USIZETAG_TYPEDEF(s_recv_request); /**@def NTATAG_S_RECV_RESPONSE_REF(x) * * Get number of SIP responses received. * * Return number SIP responses that has been received. The number includes * also number of bad and unusable responses available with * NTATAG_S_BAD_RESPONSE_REF(). * * @sa nta_agent_get_stats(), NTATAG_S_BAD_RESPONSE_REF(), * NTATAG_S_RECV_MSG_REF(), NTATAG_S_RECV_REQUEST_REF() */ tag_typedef_t ntatag_s_recv_response = USIZETAG_TYPEDEF(s_recv_response); /**@def NTATAG_S_BAD_MESSAGE_REF(x) * * Get number of bad SIP messages received. * * Return number of bad SIP messages that has been received. * * @sa nta_agent_get_stats(), NTATAG_S_RECV_MSG_REF(), * NTATAG_S_BAD_REQUEST_REF(), NTATAG_S_BAD_RESPONSE_REF(). */ tag_typedef_t ntatag_s_bad_message = USIZETAG_TYPEDEF(s_bad_message); /**@def NTATAG_S_BAD_REQUEST_REF(x) * * Get number of bad SIP requests received. * * Return number of bad SIP requests that has been received. * * @sa nta_agent_get_stats(), NTATAG_S_BAD_MESSAGE_REF(), * NTATAG_S_BAD_RESPONSE_REF(). */ tag_typedef_t ntatag_s_bad_request = USIZETAG_TYPEDEF(s_bad_request); /**@def NTATAG_S_BAD_RESPONSE_REF(x) * * Get number of bad SIP responses received. * * Return number of bad SIP responses that has been received. * * @sa nta_agent_get_stats(), NTATAG_S_BAD_MESSAGE_REF(), * NTATAG_S_BAD_REQUEST_REF() */ tag_typedef_t ntatag_s_bad_response = USIZETAG_TYPEDEF(s_bad_response); /**@def NTATAG_S_DROP_REQUEST_REF(x) * * Get number of SIP requests dropped. * * Return number of SIP requests that has been randomly dropped after * receiving them because of NTATAG_DEBUG_DROP_PROB() has been set. * * @sa nta_agent_get_stats(), NTATAG_DEBUG_DROP_PROB(), * NTATAG_S_DROP_RESPONSE_REF() * * @note The value was not calculated before @VERSION_1_12_7. */ tag_typedef_t ntatag_s_drop_request = USIZETAG_TYPEDEF(s_drop_request); /**@def NTATAG_S_DROP_RESPONSE_REF(x) * * Get number of SIP responses dropped. * * Return number of SIP responses that has been randomly dropped after * receiving them because of NTATAG_DEBUG_DROP_PROB() has been set. * * @sa nta_agent_get_stats(), NTATAG_DEBUG_DROP_PROB(), * NTATAG_S_DROP_REQUEST_REF() * * @note The value was not calculated before @VERSION_1_12_7. */ tag_typedef_t ntatag_s_drop_response = USIZETAG_TYPEDEF(s_drop_response); /**@def NTATAG_S_CLIENT_TR_REF(x) * * Get number of client transactions created. * * Return number of client transactions created. The number also includes * client transactions with which stack failed to send the request because * the DNS resolving failed or the transport failed. * * @note The number include stateless requests sent with nta_msg_tsend(), * too. * * @sa nta_agent_get_stats(), NTATAG_S_SENT_REQUEST_REF(), * NTATAG_S_SERVER_TR_REF(). */ tag_typedef_t ntatag_s_client_tr = USIZETAG_TYPEDEF(s_client_tr); /**@def NTATAG_S_SERVER_TR_REF(x) * * Get number of server transactions created. * * Return number of server transactions created. * * @sa nta_agent_get_stats(), NTATAG_S_RECV_RESPONSE_REF(), * NTATAG_S_CLIENT_TR_REF(), NTATAG_S_DIALOG_TR_REF(), */ tag_typedef_t ntatag_s_server_tr = USIZETAG_TYPEDEF(s_server_tr); /**@def NTATAG_S_DIALOG_TR_REF(x) * * Get number of in-dialog server transactions created. * * Return number of in-dialog server transactions created. The number * includes only those transactions that were correlated with a dialog * object. * * @sa nta_agent_get_stats(), NTATAG_S_SERVER_TR_REF(), * NTATAG_S_CLIENT_TR_REF(), NTATAG_S_RECV_RESPONSE_REF(). */ tag_typedef_t ntatag_s_dialog_tr = USIZETAG_TYPEDEF(s_dialog_tr); /**@def NTATAG_S_ACKED_TR_REF(x) * * Get number of server transactions that have received ACK. * * Return number of INVITE server transactions for which an ACK request has * been received. * * @sa nta_agent_get_stats(), NTATAG_S_SERVER_TR_REF(), * NTATAG_S_CANCELED_TR_REF() */ tag_typedef_t ntatag_s_acked_tr = USIZETAG_TYPEDEF(s_acked_tr); /**@def NTATAG_S_CANCELED_TR_REF(x) * * Get number of server transactions that have been CANCELed. * * Return number of server transactions for which an CANCEL request has been * received. Currently, the count includes only INVITE server transactions * that have been CANCELed. * * @sa nta_agent_get_stats(), NTATAG_S_SERVER_TR_REF(), * NTATAG_S_ACKED_TR_REF(). */ tag_typedef_t ntatag_s_canceled_tr = USIZETAG_TYPEDEF(s_canceled_tr); /**@def NTATAG_S_TRLESS_REQUEST_REF(x) * * Get number of requests that were processed stateless. * * Return number of received requests that were processed statelessly, * either with #nta_message_f message callback given with the * nta_agent_create() or, missing the callback, by returning a 501 Not * Implemented response to the request. * * @sa nta_agent_get_stats(), , * nta_agent_create(), #nta_message_f, NTATAG_S_TRLESS_TO_TR_REF(), * NTATAG_S_TRLESS_RESPONSE_REF() */ tag_typedef_t ntatag_s_trless_request = USIZETAG_TYPEDEF(s_trless_request); /**@def NTATAG_S_TRLESS_TO_TR_REF(x) * * Get number of requests converted to transactions by message callback. * * Return number of requests that were converted to a server transaction * with nta_incoming_create(). * * @sa nta_agent_get_stats(), nta_incoming_create(), nta_agent_create(), * #nta_message_f, NTATAG_S_TRLESS_REQUEST_REF() */ tag_typedef_t ntatag_s_trless_to_tr = USIZETAG_TYPEDEF(s_trless_to_tr); /**@def NTATAG_S_TRLESS_RESPONSE_REF(x) * * Get number of responses without matching request. * * Return number of received responses for which no matching client * transaction was found. Such responses are processed either by the * client transaction created with nta_outgoing_default(), the * #nta_message_f message callback given to nta_agent_create(), or, missing * both the default client transaction and message callback, they are * silently discarded. * * The NTATAG_S_TRLESS_200_REF() counter counts those successful 2XX * responses to the INVITE without client transaction which are silently * discarded. * * @sa nta_agent_get_stats(), nta_outgoing_default(), nta_agent_create(), * , #nta_message_f, nta_msg_ackbye(), * NTATAG_S_TRLESS_REQUEST_REF(), NTATAG_S_TRLESS_200_REF(). */ tag_typedef_t ntatag_s_trless_response = USIZETAG_TYPEDEF(s_trless_response); /**@def NTATAG_S_TRLESS_200_REF(x) * * Get number of successful responses missing INVITE client transaction. * * Return number of received 2XX responses to INVITE transaction for which * no matching client transaction was found nor which were processed by a * default client transaction created with nta_outgoing_default() or * #nta_message_f message callback given to nta_agent_create(). * * @sa nta_agent_get_stats(), nta_outgoing_default(), nta_agent_create(), * , #nta_message_f, nta_msg_ackbye(), * NTATAG_S_TRLESS_RESPONSE_REF(). */ tag_typedef_t ntatag_s_trless_200 = USIZETAG_TYPEDEF(s_trless_200); /**@def NTATAG_S_MERGED_REQUEST_REF(x) * * Get number of requests merged by UAS. * * Return number of requests for which UAS already has returned a response * and which were merged (that is, returned a 482 Request Merged * response). * * @sa nta_agent_get_stats(), NTATAG_UA(1), @RFC3261 section 8.2.2.2 */ tag_typedef_t ntatag_s_merged_request = USIZETAG_TYPEDEF(s_merged_request); /**@def NTATAG_S_SENT_MSG_REF(x) * * Get number of SIP messages sent by stack. * * Return number of SIP messages given to the transport layer for * transmission by the SIP stack. The number includes also messages which * the transport layer failed to send for different reasons. * * @sa nta_agent_get_stats(), NTATAG_S_RECV_MSG_REF(), * NTATAG_S_SENT_REQUEST_REF(), NTATAG_S_SENT_RESPONSE_REF() */ tag_typedef_t ntatag_s_sent_msg = USIZETAG_TYPEDEF(s_sent_msg); /**@def NTATAG_S_SENT_REQUEST_REF(x) * * Get number of SIP requests sent by stack. * * Return number of SIP requests given to the transport layer for * transmission by the SIP stack. The number includes retransmissions and * messages which the transport layer failed to send for different reasons. * * @sa nta_agent_get_stats(), NTATAG_S_RECV_REQUEST_REF(), * NTATAG_S_SENT_MSG_REF(), NTATAG_S_SENT_RESPONSE_REF() */ tag_typedef_t ntatag_s_sent_request = USIZETAG_TYPEDEF(s_sent_request); /**@def NTATAG_S_SENT_RESPONSE_REF(x) * * Get number of SIP responses sent by stack. * * Return number of SIP responses given to the transport layer for * transmission by the SIP stack. The number includes retransmissions and * messages which the transport layer failed to send for different reasons. * * @sa nta_agent_get_stats(), NTATAG_S_RECV_RESPONSE_REF(), * NTATAG_S_SENT_MSG_REF(), NTATAG_S_SENT_REQUEST_REF() */ tag_typedef_t ntatag_s_sent_response = USIZETAG_TYPEDEF(s_sent_response); /**@def NTATAG_S_RETRY_REQUEST_REF(x) * * Get number of SIP requests retransmitted by stack. * * Return number of SIP requests given to the transport layer for * retransmission by the SIP stack. The number includes messages which the * transport layer failed to send for different reasons. * * @sa nta_agent_get_stats(), NTATAG_S_SENT_MSG_REF(), * NTATAG_S_SENT_REQUEST_REF(), NTATAG_S_RETRY_RESPONSE_REF() */ tag_typedef_t ntatag_s_retry_request = USIZETAG_TYPEDEF(s_retry_request); /**@def NTATAG_S_RETRY_RESPONSE_REF(x) * * Get number of SIP responses retransmitted by stack. * * Return number of SIP responses given to the transport layer for * retransmission by the SIP stack. The number includes messages which the * transport layer failed to send for different reasons. * * @sa nta_agent_get_stats(), NTATAG_S_SENT_MSG_REF(), * NTATAG_S_SENT_REQUEST_REF(), NTATAG_S_RETRY_REQUEST_REF() */ tag_typedef_t ntatag_s_retry_response = USIZETAG_TYPEDEF(s_retry_response); /**@def NTATAG_S_RECV_RETRY_REF(x) * * Get number of retransmitted SIP requests received by stack. * * Return number of SIP requests received by the stack. This number only * includes retransmission for which a matching server transaction object * was found. * * @sa nta_agent_get_stats(), NTATAG_S_RETRY_REQUEST_REF(). */ tag_typedef_t ntatag_s_recv_retry = USIZETAG_TYPEDEF(s_recv_retry); /**@def NTATAG_S_TOUT_REQUEST_REF(x) * * Get number of SIP client transactions that has timeout. * * Return number of SIP client transactions that has timeout. * * @sa nta_agent_get_stats(), NTATAG_S_TOUT_RESPONSE_REF(). */ tag_typedef_t ntatag_s_tout_request = USIZETAG_TYPEDEF(s_tout_request); /**@def NTATAG_S_TOUT_RESPONSE_REF(x) * * Get number of SIP server transactions that has timeout. * * Return number of SIP server transactions that has timeout. The number * includes only the INVITE transactions for which the stack has received no * ACK requests. * * @sa nta_agent_get_stats(), NTATAG_S_TOUT_REQUEST_REF(). */ tag_typedef_t ntatag_s_tout_response = USIZETAG_TYPEDEF(s_tout_response); /* Internal */ tag_typedef_t ntatag_delay_sending = BOOLTAG_TYPEDEF(delay_sending); tag_typedef_t ntatag_incomplete = BOOLTAG_TYPEDEF(incomplete);