⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nta_internal.h

📁 Sofia SIP is an open-source SIP User-Agent library, compliant with the IETF RFC3261 specification.
💻 H
📖 第 1 页 / 共 2 页
字号:
/* * 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 * */#ifndef NTA_INTERNAL_H/** Defined when <nta_internal.h> has been included. */#define NTA_INTERNAL_H /**@internal @file nta_internal.h * * @brief Internals of NTA objects. * * @author Pekka Pessi <Pekka.Pessi@nokia.com> * * @date Created: Tue Jul 18 09:18:32 2000 ppessi *//* Resolver context type */#define SRES_CONTEXT_T    nta_outgoing_t/* We are customer of tport_t */#define TP_AGENT_T        nta_agent_t#define TP_MAGIC_T        sip_via_t #define TP_CLIENT_T       nta_outgoing_t#include <sofia-sip/nta.h>#include <sofia-sip/nta_tport.h>#include <sofia-sip/tport.h>#if HAVE_SOFIA_SRESOLV#include <sofia-sip/sresolv.h>#endif#include <sofia-sip/htable.h>#if HAVE_SMIME#include "smimec.h"#endifSOFIA_BEGIN_DECLS/** A sip_flag telling that this message is internally generated. */#define NTA_INTERNAL_MSG (1<<15)/** Resolving order */enum nta_res_order_e{  nta_res_ip6_ip4,  nta_res_ip4_ip6,  nta_res_ip6_only,  nta_res_ip4_only};HTABLE_DECLARE_WITH(leg_htable, lht, nta_leg_t, size_t, hash_value_t);HTABLE_DECLARE_WITH(outgoing_htable, oht, nta_outgoing_t, size_t, hash_value_t);HTABLE_DECLARE_WITH(incoming_htable, iht, nta_incoming_t, size_t, hash_value_t);typedef struct outgoing_queue_t {  nta_outgoing_t **q_tail;  nta_outgoing_t  *q_head;  size_t           q_length;  unsigned         q_timeout;} outgoing_queue_t;typedef struct incoming_queue_t {  nta_incoming_t **q_tail;  nta_incoming_t  *q_head;  size_t           q_length;  unsigned         q_timeout;} incoming_queue_t;typedef struct nta_compressor nta_compressor_t;struct nta_agent_s{  su_home_t             sa_home[1];  su_root_t            *sa_root;  su_timer_t           *sa_timer;  nta_agent_magic_t    *sa_magic;  nta_message_f        *sa_callback;       nta_update_magic_t   *sa_update_magic;  nta_update_tport_f   *sa_update_tport;  su_time_t             sa_now;	 /**< Timestamp in microsecond resolution. */  uint32_t              sa_next; /**< Timestamp for next agent_timer. */  uint32_t              sa_millisec; /**< Timestamp in milliseconds. */  uint32_t              sa_nw_updates; /* Shall we enable network detector? */  uint32_t              sa_flags;	/**< Message flags */  msg_mclass_t const   *sa_mclass;  sip_contact_t        *sa_contact;  sip_via_t            *sa_vias;   /**< @Via headers for all transports */  sip_via_t            *sa_public_vias;   /**< @Vias for public transports */  sip_contact_t        *sa_aliases;/**< List of aliases for agent */  uint64_t              sa_branch; /**< Counter for generating branch parameter */  uint64_t              sa_tags;   /**< Counter for generating tag parameters */  char const           *sa_2543_tag; /**< Fixed tag added to @To when responding */#if HAVE_SOFIA_SRESOLV  sres_resolver_t      *sa_resolver; /**< DNS resolver */#endif  tport_t              *sa_tports;    /* Default outbound proxy */  url_t                *sa_default_proxy;#if HAVE_SMIME  sm_object_t          *sa_smime;#else  void                 *sa_smime;#endif  /** Request error mask */  unsigned              sa_bad_req_mask;  /** Response error mask */  unsigned              sa_bad_resp_mask;  /** Maximum size of incoming messages */  size_t                sa_maxsize;    /** Maximum size of proceeding queue */  size_t                sa_max_proceeding;    /** Maximum size of outgoing UDP requests */  unsigned              sa_udp_mtu;  /** SIP T1 - initial interval of retransmissions (500 ms) */  unsigned              sa_t1;  /** SIP T2 - maximum interval of retransmissions (4000 ms) */  unsigned              sa_t2;  /** SIP T4 - clear message time (5000 ms) */  unsigned              sa_t4;  /** SIP T1X64 - transaction lifetime (32 s) */  unsigned              sa_t1x64;  /** Progress timer - interval between provisional responses sent */  unsigned              sa_progress;  /** SIP timer C - interval between provisional responses receivedxs */  unsigned              sa_timer_c;  /** Graylisting period */  unsigned              sa_graylist;  /** Blacklisting period */  unsigned              sa_blacklist;    /** NTA is used to test packet drop */  unsigned              sa_drop_prob : 10;  /** NTA is acting as an User Agent server */  unsigned              sa_is_a_uas : 1;  /** Process requests outside dialog statelessly */  unsigned              sa_is_stateless : 1;  /** Let application provide @Via headers */  unsigned              sa_user_via:1;  /** Respond with "100 Trying" if application has not responded. */  unsigned              sa_extra_100:1;  /** The "100 Trying" provisional answers are passed to the application */  unsigned              sa_pass_100:1;  /** If true, a "408 Request Timeout" message is generated when outgoing      request expires. */  unsigned              sa_timeout_408:1;  /** If true, a "408 Request Timeout" responses are passed to client. */  unsigned              sa_pass_408:1;  /** If true, a "482 Request Merged" response is sent to merged requests. */  unsigned              sa_merge_482 : 1;  /** If true, send a CANCEL to an INVITE without an provisional response. */  unsigned              sa_cancel_2543 : 1;  /** If true, reply with 487 response when a CANCEL is received. */  unsigned              sa_cancel_487 : 1;  /** If true, use unique tags. */  unsigned              sa_tag_3261 : 1;  /** If true, include 100rel in INVITE requests. */  unsigned              sa_invite_100rel : 1;  /** If true, insert @Timestamp in requests. */  unsigned              sa_timestamp : 1;  /** If true, transports support IPv4. */  unsigned              sa_tport_ip4 : 1;  /** If true, transports support IPv6. */  unsigned              sa_tport_ip6 : 1;  /** If true, transports support UDP. */  unsigned              sa_tport_udp : 1;  /** If true, transports support TCP. */  unsigned              sa_tport_tcp : 1;  /** If true, transports support SCTP. */  unsigned              sa_tport_sctp : 1;  /** If true, transports support TLS. */  unsigned              sa_tport_tls : 1;  /** If true, use NAPTR lookup */  unsigned              sa_use_naptr : 1;  /** If true, use SRV lookup */  unsigned              sa_use_srv : 1;  /** If true, transports use threadpool */  unsigned              sa_tport_threadpool : 1;  /** If true, use rport at client */  unsigned              sa_rport:1;  /** If true, use rport at server */  unsigned              sa_server_rport:2;  /** If true, use rport with tcp, too */  unsigned              sa_tcp_rport:1;  /** If true, automatically create compartments */  unsigned              sa_auto_comp:1;  /** Set when executing timer */  unsigned              sa_in_timer:1;    /** Set if application has set value for timer C */  unsigned              sa_use_timer_c:1;  unsigned              :0;  /** Messages memory preload. */  unsigned              sa_preload;  /** Name of SigComp algorithm */  char const           *sa_algorithm;  /** Options for SigComp. */  char const           *sa_sigcomp_options;  char const* const    *sa_sigcomp_option_list;  char const           *sa_sigcomp_option_free;  nta_compressor_t     *sa_compressor;  /** Resolving order (AAAA/A) */  enum nta_res_order_e  sa_res_order;  /** @MaxForwards */  sip_max_forwards_t    sa_max_forwards[1];  /* Statistics */  struct {    usize_t as_recv_msg;    usize_t as_recv_request;    usize_t as_recv_response;    usize_t as_bad_message;    usize_t as_bad_request;    usize_t as_bad_response;    usize_t as_drop_request;    usize_t as_drop_response;    usize_t as_client_tr;    usize_t as_server_tr;    usize_t as_dialog_tr;    usize_t as_acked_tr;    usize_t as_canceled_tr;    usize_t as_trless_request;    usize_t as_trless_to_tr;    usize_t as_trless_response;    usize_t as_trless_200;    usize_t as_merged_request;    usize_t as_sent_msg;    usize_t as_sent_request;    usize_t as_sent_response;    usize_t as_retry_request;    usize_t as_retry_response;    usize_t as_recv_retry;    usize_t as_tout_request;    usize_t as_tout_response;  }                  sa_stats[1];  /** Hash of dialogs. */  leg_htable_t          sa_dialogs[1];  /** Default leg */  nta_leg_t            *sa_default_leg;  /** Hash of legs without dialogs. */  leg_htable_t          sa_defaults[1];  /** Hash table for outgoing transactions */  outgoing_htable_t     sa_outgoing[1];  nta_outgoing_t       *sa_default_outgoing;  /** Hash table for incoming transactions */  incoming_htable_t     sa_incoming[1];   nta_incoming_t       *sa_default_incoming;  /* Queues (states) for outgoing client transactions */  struct {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -