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

📄 t_funcs.h

📁 用来作为linux中SIP SERVER,完成VOIP网络电话中服务器的功能
💻 H
字号:
/* * $Id: t_funcs.h,v 1.60.2.1 2005/02/16 23:24:14 bogdan Exp $ * * Copyright (C) 2001-2003 FhG Fokus * * This file is part of ser, a free SIP server. * * ser is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version * * For a license to use the ser software under conditions * other than those described here, or to purchase support for this * software, please contact iptel.org by e-mail at the following addresses: *    info@iptel.org * * ser 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 General Public License for more details. * * You should have received a copy of the GNU General Public License  * along with this program; if not, write to the Free Software  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */ /* History:  * --------  *  2003-02-18  updated various function prototypes (andrei)  *  2003-03-10  removed ifdef _OBSO & made redefined all the *UNREF* macros  *               in a non-gcc specific way (andrei)  *  2003-03-13  now send_pr_buffer will be called w/ function/line info  *               only when compiling w/ -DEXTRA_DEBUG (andrei)  *  2003-03-31  200 for INVITE/UAS resent even for UDP (jiri)   */#ifndef _T_FUNCS_H#define _T_FUNCS_H#include "defs.h"#include <errno.h>#include <netdb.h>#include "../../mem/shm_mem.h"#include "../../parser/msg_parser.h"#include "../../globals.h"#include "../../udp_server.h"#include "../../msg_translator.h"#include "../../timer.h"#include "../../forward.h"#include "../../mem/mem.h"#include "../../md5utils.h"#include "../../ip_addr.h"#include "../../parser/parse_uri.h"#include "../../usr_avp.h"#include "config.h"#include "lock.h"#include "timer.h"#include "sip_msg.h"#include "h_table.h"#include "ut.h"struct s_table;struct timer;struct entry;struct cell;extern int noisy_ctimer;/* default names for timer's AVPs  */#define FR_TIMER_AVP      "callee_fr_timer"#define FR_INV_TIMER_AVP  "callee_fr_inv_timer"/* send a private buffer: utilize a retransmission structure   but take a separate buffer not referred by it; healthy   for reducing time spend in REPLIES locks*//* send a buffer -- 'PR' means private, i.e., it is assumed noone   else can affect the buffer during sending time*/#ifdef EXTRA_DEBUGint send_pr_buffer( struct retr_buf *rb,	void *buf, int len, char* file, char *function, int line );#define SEND_PR_BUFFER(_rb,_bf,_le ) \	send_pr_buffer( (_rb), (_bf), (_le), __FILE__,  __FUNCTION__, __LINE__ )#elseint send_pr_buffer( struct retr_buf *rb, void *buf, int len);#define SEND_PR_BUFFER(_rb,_bf,_le ) \	send_pr_buffer( (_rb), (_bf), (_le))#endif#define SEND_BUFFER( _rb ) \	SEND_PR_BUFFER( (_rb) , (_rb)->buffer , (_rb)->buffer_len )#define UNREF_UNSAFE(_T_cell) ((_T_cell)->ref_count--)#define UNREF(_T_cell) do{ \	LOCK_HASH( (_T_cell)->hash_index ); \	UNREF_UNSAFE(_T_cell); \	UNLOCK_HASH( (_T_cell)->hash_index ); }while(0)#define REF_UNSAFE(_T_cell) ((_T_cell)->ref_count++)#define INIT_REF_UNSAFE(_T_cell) ((_T_cell)->ref_count=1)#define IS_REFFED_UNSAFE(_T_cell) ((_T_cell)->ref_count!=0)/* * Parse and fixup the fr_*_timer AVP specs */int init_avp_params(char *fr_timer_param, char *fr_inv_timer_param);/* * Get the FR_{INV}_TIMER from corresponding AVP */int fr_avp2timer(unsigned int* timer);int fr_inv_avp2timer(unsigned int* timer);static void inline _set_fr_retr( struct retr_buf *rb, int retr ){	unsigned int timer;	if (retr) {		rb->retr_list=RT_T1_TO_1;		set_timer( &rb->retr_timer, RT_T1_TO_1, 0 );	}	if (!fr_avp2timer(&timer)) {		DBG("_set_fr_retr: FR_TIMER = %d\n", timer);		set_timer(&rb->fr_timer, FR_TIMER_LIST, &timer);	} else {		set_timer(&rb->fr_timer, FR_TIMER_LIST, 0);	}}static void inline start_retr(struct retr_buf *rb){	_set_fr_retr(rb, rb->dst.proto==PROTO_UDP);}static void inline force_retr(struct retr_buf *rb){	_set_fr_retr(rb, 1);}void tm_shutdown();/* function returns: *       1 - a new transaction was created *      -1 - error, including retransmission */int  t_add_transaction( struct sip_msg* p_msg  );/* returns 1 if everything was OK or -1 for error */int t_release_transaction( struct cell *trans );int get_ip_and_port_from_uri( str* uri , unsigned int *param_ip,	unsigned int *param_port);void put_on_wait(  struct cell  *Trans  );#ifdef _OBSOLETEDvoid start_retr( struct retr_buf *rb );#endifvoid cleanup_localcancel_timers( struct cell *t );int t_relay_to( struct sip_msg  *p_msg ,	struct proxy_l *proxy, int proto, int replicate ) ;#endif

⌨️ 快捷键说明

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