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

📄 sipp.hpp

📁 学习sip协议的好工具
💻 HPP
字号:
/* *  This program 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. * *  This program 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 * *  Author : Richard GAYRAUD - 04 Nov 2003 *           From Hewlett Packard Company. */#ifndef __SIPP__#define __SIPP__/* Std C includes */#include <stdio.h>#include <stdlib.h>#include <string.h>#include <pthread.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <netinet/tcp.h>#include <sys/time.h>#include <sys/poll.h>#include <sys/resource.h>#include <fcntl.h>#include <unistd.h>#include <arpa/inet.h>#include <errno.h>#include <netdb.h>#include <ctype.h>#include <signal.h>#include <time.h>#include <vector>#include <string>/* Sipp includes */#include "xp_parser.h"#include "scenario.hpp"#include "screen.hpp"#include "call.hpp"#include "comp.h"#include "stat.hpp"#include "actions.hpp"#include "variables.hpp"#ifndef __CYGWIN#ifndef FD_SETSIZE#define FD_SETSIZE 65000#endif#else#ifndef FD_SETSIZE#define FD_SETSIZE 1024#endif#endif/*  * If this files is included in the Main, then extern definitions * are removed, and the _DEFAULT macro becomes '= value;'. Else  * extern definition does not contain default values assignment */#ifdef GLOBALS_FULL_DEFINITION#define extern#define _DEFVAL(value) = value#else#define _DEFVAL(value)#endif/************************** Constants **************************/#define T_UDP                      0#define T_TCP                      1#define TRANSPORT_TO_STRING(p)     ((p) ? "TCP" : "UDP")#define SIPP_MAXFDS                65536#define SIPP_MAX_MSG_SIZE          65536#define MSG_RETRANS_FIRST          0#define MSG_RETRANS_RETRANSMISSION 1#define MSG_RETRANS_NEVER          2#define DISPLAY_STAT_SCREEN        1#define DISPLAY_REPARTITION_SCREEN 2#define DISPLAY_SCENARIO_SCREEN    3#define DISPLAY_VARIABLE_SCREEN    4#define MAX_RECV_LOOPS             1000//#define MAX_LINES_IN_FILE          1000/******************** Default parameters ***********************/#define DEFAULT_RATE                 10.0#define DEFAULT_RATE_PERIOD_S        1.0#define DEFAULT_TRANSPORT            T_UDP#define DEFAULT_PORT                 5060  #ifdef __3PCC__#define DEFAULT_3PCC_PORT            6060#endif#define DEFAULT_SERVICE              ((char *)"service")#define DEFAULT_REPORT_FREQ          1000#define DEFAULT_REPORT_FREQ_DUMP_LOG 60000#define DEFAULT_TIMER_RESOLUTION     200/************ User controls and command line options ***********/extern int                duration                _DEFVAL(0);extern double             rate                    _DEFVAL(DEFAULT_RATE);extern double             rate_period_s           _DEFVAL(DEFAULT_RATE_PERIOD_S);extern int                transport               _DEFVAL(DEFAULT_TRANSPORT);extern int                retrans_enabled         _DEFVAL(1);extern int                multisocket             _DEFVAL(0);extern int                compression             _DEFVAL(0);extern void             * monosocket_comp_state   _DEFVAL(0);extern char             * service                 _DEFVAL(DEFAULT_SERVICE);extern unsigned long      report_freq             _DEFVAL(DEFAULT_REPORT_FREQ);extern unsigned long      report_freq_dumpLog     _DEFVAL                                                (DEFAULT_REPORT_FREQ_DUMP_LOG);extern char               local_ip[20];extern int                local_port              _DEFVAL(0);extern char               media_ip[20];extern int                media_port              _DEFVAL(0);extern char               remote_ip[20];extern int                remote_port             _DEFVAL(DEFAULT_PORT);extern unsigned int       pid                     _DEFVAL(0);extern int                print_all_responses     _DEFVAL(0);extern unsigned long      stop_after              _DEFVAL(0xffffffff);extern int                quitting                _DEFVAL(0);extern int                interrupt               _DEFVAL(0);extern int                paused                  _DEFVAL(0);extern int                lose_packets            _DEFVAL(0);extern char               remote_host[255]; #ifdef __3PCC__extern char               twinSippHost[255];extern char               twinSippIp[20];extern int                twinSippPort            _DEFVAL(DEFAULT_3PCC_PORT);extern bool               twinSippMode            _DEFVAL(false);#endifextern bool               backgroundMode          _DEFVAL(false);        extern int                currentScreenToDisplay  _DEFVAL                                                  (DISPLAY_SCENARIO_SCREEN);// extern field file managementtypedef std::vector<std::string>    IN_FILE_CONTENTS;extern IN_FILE_CONTENTS   fileContents;extern int                numLinesInFile          _DEFVAL(0);/************************ Statistics **************************/extern unsigned long total_calls                  _DEFVAL(0);extern unsigned long last_report_calls            _DEFVAL(0);extern unsigned long rtd_sum                      _DEFVAL(0);extern unsigned long rtd_nb                       _DEFVAL(0);extern unsigned long call_duration_sum            _DEFVAL(0);extern unsigned long call_duration_nb             _DEFVAL(0);extern unsigned long nb_net_send_errors           _DEFVAL(0);extern unsigned long nb_net_cong                  _DEFVAL(0);extern unsigned long nb_net_recv_errors           _DEFVAL(0);extern bool          cpu_max                      _DEFVAL(false);extern int           open_calls_peak              _DEFVAL(0);extern unsigned long open_calls_peak_time         _DEFVAL(0);extern int           open_calls_user_setting      _DEFVAL(0);extern int           nb_out_of_the_blue           _DEFVAL(0);extern int           resynch_send                 _DEFVAL(0);extern int           resynch_recv                 _DEFVAL(0);extern unsigned long rtp_pckts                    _DEFVAL(0);extern unsigned long rtp_bytes                    _DEFVAL(0);/************* Rate Control & Contexts variables **************/extern int           open_calls                   _DEFVAL(0);extern unsigned int  open_calls_allowed           _DEFVAL(0);extern unsigned long last_rate_change_time        _DEFVAL(1);extern unsigned long last_report_time             _DEFVAL(1);extern unsigned long last_dump_time               _DEFVAL(1);extern unsigned long calls_since_last_rate_change _DEFVAL(0);/********************** Clock variables ***********************/extern unsigned long clock_tick                   _DEFVAL(1);extern unsigned long scheduling_loops             _DEFVAL(0);extern unsigned long last_timer_cycle             _DEFVAL(0);#define GET_TIME(clock)       \{                             \  struct timezone tzp;        \  gettimeofday (clock, &tzp); \}/*********************** Global Sockets  **********************/extern int           main_socket                  _DEFVAL(0);extern int           tcp_multiplex                _DEFVAL(0);extern int           media_socket                 _DEFVAL(0);#ifdef __3PCC__extern int           twinSippSocket               _DEFVAL(0);extern int           localTwinSippSocket          _DEFVAL(0);extern struct sockaddr_in twinSipp_sockaddr;#endifextern struct sockaddr_in remote_sockaddr;extern struct sockaddr_in remote_rtp_addr;extern short              use_remote_sending_addr _DEFVAL(0);extern struct sockaddr_in remote_sending_sockaddr;enum E_Alter_YesNo  {    E_ALTER_YES=0,    E_ALTER_NO  };/************************** Trace Files ***********************/extern FILE * screenf                             _DEFVAL(0);extern FILE * messagef                            _DEFVAL(0);extern FILE * timeoutf                            _DEFVAL(0);extern int    useMessagef                         _DEFVAL(0);extern int    useScreenf                          _DEFVAL(0);extern int    useTimeoutf                         _DEFVAL(0);extern int    dumpInFile                          _DEFVAL(0);extern char * scenario_file;#define TRACE_MSG(arg)      \{                           \  if(messagef) {            \    FILE * s = messagef;    \    fprintf arg;            \    fflush(messagef);       \  }                         \}#define TRACE_TIMEOUT(arg)  \{                           \  if(timeoutf) {            \    FILE * s = timeoutf;    \    fprintf arg;            \    fflush(timeoutf);       \  }                         \}/********************* Mini-Parser Routines *******************/int get_method(char *msg);char * get_peer_tag(char *msg);unsigned long get_reply_code(char *msg);/********************** Network Interfaces ********************/void sipp_customize_socket(int socket);int send_message(int s, void ** comp_state, char * msg);void pollset_remove(int idx);int pollset_add(call * p_call, int socket);#if defined (__hpux) || defined (__alpha)#define sipp_socklen_t  int#else#define sipp_socklen_t  socklen_t#endif/********************* Reset global kludge  *******************/#ifdef GLOBALS_FULL_DEFINITION#undef extern#endif#endif // __SIPP__

⌨️ 快捷键说明

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