?? sip_util.h
字號:
#ifndef _SIP_UTILITY_H#define _SIP_UTILITY_H#include<stdio.h>#include<string.h>#include<stdlib.h>#include<sys/types.h>#include<unistd.h>#include<netdb.h>#include<sys/socket.h>#include<netinet/in.h>#include<arpa/inet.h>#include<sys/time.h>#define MAX_MESSAGE 21000 /* SIPメッセ〖ジの呵絡矢機眶 */#define MAX_FIELD 1024 /* ヘッダ〖フ?!讥毳?乖の呵絡矢機眶 */#define SIP_PORT 5060 /* SIPで蝗脫するポ〖ト戎規(guī) */#define SIP_VERSION "SIP/2.0" /* SIPのバ〖ジョン */#define PROTOCOL_UDP "UDP" /* メッセ〖ジ啪流脫プロトコル */#define MAX_COUNT 70 /* Max-Frowardsの猛 */#define MAX_NAME 256 /* ホスト嘆の呵絡矢機眶 */#define MAX_EXPIRES 7200 /* REGISTERの銅跟箕粗 */#define UNREGISTER_EXPIRES 0 /* 判峽縮久脫のExpiresの猛 */#define ADDR_SIZE 16 /* IPアドレスの呵絡墓 */#define CONFIG_FILE_NAME "sip.conf"#define CONTENT_TYPE "application/sdp"#define IP_TYPE "IP4"#define HEADER_VIA "Via: "#define HEADER_MAXFORWARDS "Max-Forwards: "#define HEADER_FROM "From: "#define HEADER_TO "To: "#define HEADER_CALLID "Call-ID: "#define HEADER_CSEQ "CSeq: "#define HEADER_CONTACT "Contact: "#define HEADER_CONTENTTYPE "Content-Type: "#define HEADER_CONTENTLENGTH "Content-Length: "#define HEADER_EXPIRES "Expires: "#define METHOD_REGISTER "REGISTER"#define METHOD_INVITE "INVITE"#define METHOD_TRYING "100 Trying"#define METHOD_RINGING "180 Ringing"#define METHOD_ACK "ACK"#define METHOD_OK "200 OK"#define METHOD_BYE "BYE"#define METHOD_CANCEL "CANCEL"#define METHOD_BUSY "486 Busy Here"#define METHOD_TERMINATE "487 Request Terminate"#define CODEC_AUDIO "PCMU" /* G.711 */#define AUDIO_RATE 8000 /* 8000samples/sec */#define RTPTYPE 0 /* PCMUのペイロ〖ドタイプ */#define RANDOM(x) (rand()%(x))#define debug(s) printf(s)/* SIPサ〖バ蝗脫、踏蝗脫の惰侍 */enum registerflag{ eRNull = 0, /* 踏蝗脫 */ eRRegister, /* 蝗脫している */};/* 券慨莢、緬慨莢の惰侍 */enum callflag{ eCNull = 0, /* 介袋猛 */ eCSender, /* 券慨莢 */ eCReceiver /* 緬慨莢 */};/* RTP流慨 */enum send_flag{ null = 0, ok , ng };/* SIPスタックの覺輪 */enum callstate{ eSNull = 0, /* 介袋覺輪 */ eSRegister, /* REGISTER流慨 */ eSIdle, /* REGISTER窗位 */ eSWaitBusy, /* 儡魯借妄面 */ eSBusy, /* 奶廈面 */ eSWaitDisc, /* 磊們借妄面 */ eSUnRegister /* REGISTER豺近借妄面 */};/* SIPメッセ〖ジのメソッド */enum method{ Method_Register = 0, /* REGISTER */ Method_Invite, /* INVITE */ Method_Ack, /* ACK */ Method_Bye, /* BYE */ Method_Cancel, /* CANCEL */ Method_Trying, /* 100 Trying */ Method_Ringing, /* 180 Ringing */ Method_OK, /* 200 OK */ Method_Busy, /* 486 Busy Here */ Method_RequestTerminate /* 487 Request Terminate */};/* メッセ〖ジの柒推を呈羌する菇隴攣 */typedef struct{ char save_Msg[MAX_MESSAGE]; /* SIPメッセ〖ジ */ char save_beforMsg[MAX_MESSAGE]; /* シ〖ケンスで1つ漣に瘦賂したSIPメッセ〖ジ */ char save_Via[MAX_FIELD]; /* 瘦賂したViaヘッダ */ char save_Via2nd[MAX_FIELD]; /* 瘦賂したViaヘッダ2 */ char save_From[MAX_FIELD]; /* 瘦賂したFrom */ char save_To[MAX_FIELD]; /* 瘦賂したTo */ char save_CallID[MAX_FIELD]; /* 瘦賂したCall-ID */ char save_Cseq[MAX_FIELD]; /* 瘦賂したCSeq */}SAVE_MSG;/* スタック攫鼠 */typedef struct{ enum registerflag server_flag; /* サ〖バ蝗脫冉年 */ enum callflag session_flag; /* 券緬冉年脫フラグ */ enum callstate state; /* SIPスタックの覺輪 */ char username[MAX_NAME]; /* 極眉瑣ユ〖ザ〖嘆 */ char fqdn[MAX_NAME]; /* 極眉瑣FQDN */ char addr[ADDR_SIZE]; /* 極眉瑣IPアドレス */ char serv_addr[ADDR_SIZE]; /* SIPサ〖バのIPアドレス */ char serv_fqdn[MAX_NAME]; /* SIPサ〖バのFQDN */ struct in_addr partner; /* SIPの陵緘眉瑣IPアドレス */ char rtp_addr[ADDR_SIZE]; /* RTPの陵緘眉瑣IPアドレス */ int seq; /* シ〖ケンス戎規(guī) */ int rtpport; /* 不蘭奶慨に蝗脫するポ〖ト戎規(guī) */ char y_rtpport[10]; /* 陵緘眉瑣の不蘭奶慨に蝗脫するポ〖ト戎規(guī) */}STACK_INFO;typedef struct{ int sock; SAVE_MSG* pmsg; STACK_INFO* pinfo; enum send_flag* psend_switch;}RECV_INFO;#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -