359 lines
7.5 KiB
C
359 lines
7.5 KiB
C
|
|
#ifndef _APP_STREAM_BASE_H_
|
|||
|
|
#define _APP_STREAM_BASE_H_
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
#include <sys/types.h>
|
|||
|
|
#include <netinet/in.h>
|
|||
|
|
#include <netinet/ip.h>
|
|||
|
|
#include <netinet/ip6.h>
|
|||
|
|
#include <netinet/tcp.h>
|
|||
|
|
#include <netinet/udp.h>
|
|||
|
|
#include <stdlib.h>
|
|||
|
|
#include <string.h>
|
|||
|
|
|
|||
|
|
#ifndef UINT8
|
|||
|
|
typedef unsigned char UINT8;
|
|||
|
|
#endif
|
|||
|
|
#ifndef UCHAR
|
|||
|
|
typedef unsigned char UCHAR;
|
|||
|
|
#endif
|
|||
|
|
#ifndef UINT16
|
|||
|
|
typedef unsigned short UINT16;
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
#ifndef UINT32
|
|||
|
|
typedef unsigned int UINT32;
|
|||
|
|
#endif
|
|||
|
|
#ifndef UINT64
|
|||
|
|
typedef unsigned long long UINT64;
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
#define DIR_C2S 0x01
|
|||
|
|
#define DIR_S2C 0x02
|
|||
|
|
#define DIR_DOUBLE 0x03
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
#define DIR_ROUTE_UP 0x00
|
|||
|
|
#define DIR_ROUTE_DOWN 0x01
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͷ<EFBFBD><CDB6><EFBFBD>
|
|||
|
|
#define PKT_TYPE_NORMAL (0x0)
|
|||
|
|
#define PKT_TYPE_IPREBUILD (1<<0) //ip<69><70>Ƭ<EFBFBD><C6AC><EFBFBD>鱨<EFBFBD><E9B1A8>
|
|||
|
|
#define PKT_TYPE_TCPUNORDER (1<<1) //TCP<43><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
//<2F><>ַ<EFBFBD><D6B7><EFBFBD>Ͷ<EFBFBD><CDB6><EFBFBD>, <20><>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD> addr_type_to_string() ת<><D7AA><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>ʽ.
|
|||
|
|
enum addr_type_t{
|
|||
|
|
__ADDR_TYPE_INIT = 0,
|
|||
|
|
ADDR_TYPE_IPV4, /* 1, <20><><EFBFBD><EFBFBD>IPv4<76><34>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>Ϣ */
|
|||
|
|
ADDR_TYPE_IPV6, /* 2, <20><><EFBFBD><EFBFBD>IPv6<76><36>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>Ϣ */
|
|||
|
|
ADDR_TYPE_VLAN, /* 3 */
|
|||
|
|
ADDR_TYPE_MAC, /* 4 */
|
|||
|
|
ADDR_TYPE_ARP = 5, /* 5 */
|
|||
|
|
ADDR_TYPE_GRE, /* 6 */
|
|||
|
|
ADDR_TYPE_MPLS, /* 7 */
|
|||
|
|
ADDR_TYPE_PPPOE_SES, /* 8 */
|
|||
|
|
ADDR_TYPE_TCP, /* 9 */
|
|||
|
|
ADDR_TYPE_UDP = 10, /* 10 */
|
|||
|
|
ADDR_TYPE_L2TP, /* 11 */
|
|||
|
|
__ADDR_TYPE_IP_PAIR_V4, /* 12, <20><>IPv4<76><34>ַ<EFBFBD><D6B7> */
|
|||
|
|
__ADDR_TYPE_IP_PAIR_V6, /* 13, <20><>IPv6<76><36>ַ<EFBFBD><D6B7> */
|
|||
|
|
ADDR_TYPE_PPP, /* 14 */
|
|||
|
|
__ADDR_TYPE_MAX, /* 15 */
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
#define TCP_TAKEOVER_STATE_FLAG_OFF 0
|
|||
|
|
#define TCP_TAKEOVER_STATE_FLAG_ON 1
|
|||
|
|
|
|||
|
|
|
|||
|
|
//Ӧ<>ò㿴<C3B2><E3BFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>
|
|||
|
|
#define OP_STATE_PENDING 0
|
|||
|
|
#define OP_STATE_REMOVE_ME 1
|
|||
|
|
#define OP_STATE_CLOSE 2
|
|||
|
|
#define OP_STATE_DATA 3
|
|||
|
|
|
|||
|
|
//Ӧ<>ò㷵<C3B2>ؽ<EFBFBD><D8BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
#define APP_STATE_GIVEME 0x00
|
|||
|
|
#define APP_STATE_DROPME 0x01
|
|||
|
|
#define APP_STATE_FAWPKT 0x00
|
|||
|
|
#define APP_STATE_DROPPKT 0x10
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͷ<EFBFBD><CDB6><EFBFBD>
|
|||
|
|
enum stream_type_t{
|
|||
|
|
STREAM_TYPE_NON = 0, /* <20><><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD>, <20><>VLAN, IP<49><50><EFBFBD><EFBFBD> */
|
|||
|
|
STREAM_TYPE_TCP,
|
|||
|
|
STREAM_TYPE_UDP,
|
|||
|
|
STREAM_TYPE_VLAN,
|
|||
|
|
STREAM_TYPE_SOCKS4,
|
|||
|
|
STREAM_TYPE_SOCKS5,
|
|||
|
|
STREAM_TYPE_HTTP_PROXY,
|
|||
|
|
STREAM_TYPE_PPPOE,
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
typedef struct raw_ipfrag_list{
|
|||
|
|
void *frag_packet;
|
|||
|
|
int pkt_len;
|
|||
|
|
int type; /* IPv4 or IPv6 */
|
|||
|
|
struct raw_ipfrag_list *next;
|
|||
|
|
}raw_ipfrag_list_t;
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
/* 2014-11-19 lijia modify */
|
|||
|
|
#ifndef STRUCT_TUPLE4_DEFINED
|
|||
|
|
#define STRUCT_TUPLE4_DEFINED (1)
|
|||
|
|
/* <20><><EFBFBD><EFBFBD>papp */
|
|||
|
|
struct tuple4 {
|
|||
|
|
u_int saddr;
|
|||
|
|
u_int daddr;
|
|||
|
|
u_short source;
|
|||
|
|
u_short dest;
|
|||
|
|
};
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
struct tuple6
|
|||
|
|
{
|
|||
|
|
UCHAR saddr[16] ;
|
|||
|
|
UCHAR daddr[16] ;
|
|||
|
|
UINT16 source;
|
|||
|
|
UINT16 dest;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
/* network-order */
|
|||
|
|
struct stream_tuple4_v4{
|
|||
|
|
UINT32 saddr; /* network order */
|
|||
|
|
UINT32 daddr; /* network order */
|
|||
|
|
UINT16 source; /* network order */
|
|||
|
|
UINT16 dest; /* network order */
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
|
|||
|
|
#ifndef IPV6_ADDR_LEN
|
|||
|
|
#define IPV6_ADDR_LEN (sizeof(struct in6_addr))
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
struct stream_tuple4_v6
|
|||
|
|
{
|
|||
|
|
UCHAR saddr[IPV6_ADDR_LEN] ;
|
|||
|
|
UCHAR daddr[IPV6_ADDR_LEN] ;
|
|||
|
|
UINT16 source; /* network order */
|
|||
|
|
UINT16 dest; /* network order */
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
#define GRE_TAG_LEN (4)
|
|||
|
|
struct layer_addr_gre
|
|||
|
|
{
|
|||
|
|
UINT16 gre_id;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
|
|||
|
|
#define VLAN_ID_MASK (0x0FFF)
|
|||
|
|
#define VLAN_TAG_LEN (4)
|
|||
|
|
struct layer_addr_vlan
|
|||
|
|
{
|
|||
|
|
UINT16 vlan_id; /* network order */
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
#define VLAN_ID_LEN 4
|
|||
|
|
struct tuplevlan
|
|||
|
|
{
|
|||
|
|
UCHAR vlan_id[VLAN_ID_LEN];
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
struct layer_addr_pppoe_session
|
|||
|
|
{
|
|||
|
|
#if __BYTE_ORDER == __LITTLE_ENDIAN
|
|||
|
|
unsigned int ver:4;
|
|||
|
|
unsigned int type:4;
|
|||
|
|
#endif
|
|||
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|||
|
|
unsigned int type:4;
|
|||
|
|
unsigned int ver:4;
|
|||
|
|
#endif
|
|||
|
|
unsigned char code;
|
|||
|
|
unsigned short session_id;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
#ifndef MAC_ADDR_LEN
|
|||
|
|
#define MAC_ADDR_LEN (6)
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
struct layer_addr_mac
|
|||
|
|
{
|
|||
|
|
UCHAR src_mac[MAC_ADDR_LEN]; /* network order */
|
|||
|
|
UCHAR dst_mac[MAC_ADDR_LEN]; /* network order */
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
struct layer_addr_ipv4
|
|||
|
|
{
|
|||
|
|
UINT32 saddr; /* network order */
|
|||
|
|
UINT32 daddr; /* network order */
|
|||
|
|
/* 2014-04-21 lijia add,
|
|||
|
|
Ϊ<EFBFBD>˿ռ䡢<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԡ<EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD>, <EFBFBD><EFBFBD>ǿ<EFBFBD>ư<EFBFBD>Э<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><EFBFBD><EFBFBD>,
|
|||
|
|
IP<EFBFBD><EFBFBD><EFBFBD>洢<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ, TCP<EFBFBD><EFBFBD>ֻ<EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD><EFBFBD>ڴ<EFBFBD>,
|
|||
|
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD>ʱ, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫget_tuple4()<EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IP, <EFBFBD>˿<EFBFBD><EFBFBD><EFBFBD>ϢΪ0;
|
|||
|
|
*/
|
|||
|
|
UINT16 source; /* network order */
|
|||
|
|
UINT16 dest; /* network order */
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
struct layer_addr_ipv6
|
|||
|
|
{
|
|||
|
|
UCHAR saddr[IPV6_ADDR_LEN] ; /* network order */
|
|||
|
|
UCHAR daddr[IPV6_ADDR_LEN] ; /* network order */
|
|||
|
|
/* 2014-04-21 lijia add,
|
|||
|
|
Ϊ<EFBFBD>˿ռ䡢<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԡ<EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD>, <EFBFBD><EFBFBD>ǿ<EFBFBD>ư<EFBFBD>Э<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><EFBFBD><EFBFBD>,
|
|||
|
|
IP<EFBFBD><EFBFBD><EFBFBD>洢<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ, TCP<EFBFBD><EFBFBD>ֻ<EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD><EFBFBD>ڴ<EFBFBD>,
|
|||
|
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD>ʱ, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫget_tuple4()<EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IP, <EFBFBD>˿<EFBFBD><EFBFBD><EFBFBD>ϢΪ0;
|
|||
|
|
*/
|
|||
|
|
UINT16 source;/* network order */
|
|||
|
|
UINT16 dest;/* network order */
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
struct layer_addr_tcp
|
|||
|
|
{
|
|||
|
|
UINT16 source; /* network order */
|
|||
|
|
UINT16 dest; /* network order */
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
struct layer_addr_udp
|
|||
|
|
{
|
|||
|
|
UINT16 source; /* network order */
|
|||
|
|
UINT16 dest; /* network order */
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
struct layer_addr_l2tp
|
|||
|
|
{
|
|||
|
|
UINT32 tunnelid; /* network order */
|
|||
|
|
UINT32 sessionid; /* network order */
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
struct layer_addr_mpls
|
|||
|
|
{
|
|||
|
|
unsigned int mpls_pkt;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
|
|||
|
|
struct layer_addr
|
|||
|
|
{
|
|||
|
|
UCHAR addrtype; // <20><>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> enum addr_type_t
|
|||
|
|
UCHAR addrlen;
|
|||
|
|
UCHAR pkttype; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ,<2C>μ<EFBFBD><CEBC>궨<EFBFBD><EAB6A8>PKT_TYPE_xxx
|
|||
|
|
UCHAR __pad[5]; //<2F><><EFBFBD><EFBFBD>8<EFBFBD>ֽڶ<D6BD><DAB6><EFBFBD>
|
|||
|
|
// Ϊ<>˷<EFBFBD><CBB7><EFBFBD>Ӧ<EFBFBD>ò<EFBFBD><C3B2><EFBFBD>ȡ<EFBFBD><C8A1>ַ, <20>˴<EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, ʡȥָ<C8A5><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD><C7BF>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
union
|
|||
|
|
{
|
|||
|
|
struct stream_tuple4_v4 *tuple4_v4;
|
|||
|
|
struct stream_tuple4_v6 *tuple4_v6;
|
|||
|
|
struct layer_addr_ipv4 *ipv4;
|
|||
|
|
struct layer_addr_ipv6 *ipv6;
|
|||
|
|
struct layer_addr_vlan *vlan;
|
|||
|
|
struct layer_addr_mac *mac;
|
|||
|
|
struct layer_addr_gre *gre;
|
|||
|
|
struct layer_addr_tcp *tcp;
|
|||
|
|
struct layer_addr_udp *udp;
|
|||
|
|
struct layer_addr_pppoe_session *pppoe_ses;
|
|||
|
|
struct layer_addr_l2tp *l2tp;
|
|||
|
|
void *paddr;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>˽ṹ<CBBD><E1B9B9><EFBFBD>ں<EFBFBD>papp<70><70><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>ʱ, <20><><EFBFBD><EFBFBD>struct layer_addrǿת.
|
|||
|
|
struct ipaddr
|
|||
|
|
{
|
|||
|
|
UCHAR addrtype; // <20><>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> enum addr_type_t
|
|||
|
|
UCHAR addrlen;
|
|||
|
|
UCHAR pkttype; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ,<2C>μ<EFBFBD><CEBC>궨<EFBFBD><EAB6A8>PKT_TYPE_xxx
|
|||
|
|
UCHAR __pad[5]; //<2F><><EFBFBD><EFBFBD>8<EFBFBD>ֽڶ<D6BD><DAB6><EFBFBD>
|
|||
|
|
union
|
|||
|
|
{
|
|||
|
|
struct stream_tuple4_v4 *v4;
|
|||
|
|
struct stream_tuple4_v6 *v6;
|
|||
|
|
void *paddr;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
struct tcpdetail
|
|||
|
|
{
|
|||
|
|
void *pdata; //<2F><><EFBFBD><EFBFBD>
|
|||
|
|
UINT32 datalen; //<2F><><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
|||
|
|
UINT32 lostlen;
|
|||
|
|
UINT32 serverpktnum;
|
|||
|
|
UINT32 clientpktnum;
|
|||
|
|
UINT32 serverbytes;
|
|||
|
|
UINT32 clientbytes;
|
|||
|
|
UINT64 createtime;
|
|||
|
|
UINT64 lastmtime;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
struct udpdetail
|
|||
|
|
{
|
|||
|
|
void *pdata; //<2F><><EFBFBD><EFBFBD>
|
|||
|
|
UINT32 datalen; //<2F><><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
|||
|
|
UINT32 pad; //Ԥ<><D4A4><EFBFBD><EFBFBD>Ϣ
|
|||
|
|
UINT32 serverpktnum;
|
|||
|
|
UINT32 clientpktnum;
|
|||
|
|
UINT32 serverbytes;
|
|||
|
|
UINT32 clientbytes;
|
|||
|
|
UINT64 createtime;
|
|||
|
|
UINT64 lastmtime;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
struct streaminfo
|
|||
|
|
{
|
|||
|
|
struct layer_addr addr; //<2F><><EFBFBD><EFBFBD>Э<EFBFBD><D0AD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7>Ϣ
|
|||
|
|
struct streaminfo *pfather;//<2F>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD>ṹ<EFBFBD><E1B9B9>
|
|||
|
|
UCHAR type; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
UCHAR threadnum; // <20><><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD>
|
|||
|
|
UCHAR dir; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч, <20><><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD>˫<EFBFBD><CBAB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0x01:c-->s; 0x02:s-->c; 0x03 c<-->s;
|
|||
|
|
UCHAR curdir; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч, <20><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD>, 0x01:c-->s; 0x02:s-->c
|
|||
|
|
UCHAR opstate; //<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
|||
|
|
UCHAR pktstate; //<2F><><EFBFBD>ӵİ<D3B5><C4B0><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
UCHAR routedir; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч, <20><><EFBFBD>˹<EFBFBD>ָ<EFBFBD><D6B8>, <20><><EFBFBD><EFBFBD><EFBFBD>ڷ<EFBFBD><DAB7><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ͬ, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
UCHAR stream_state; // ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD>ڵĶ<DAB5><C4B6><EFBFBD>״̬
|
|||
|
|
UINT32 hash_index; // ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>hash<73><68><EFBFBD><EFBFBD>
|
|||
|
|
UINT32 stream_index; // ÿ<><C3BF>stream<61>ڵ<EFBFBD><DAB5>߳<EFBFBD>ȫ<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
union
|
|||
|
|
{
|
|||
|
|
struct tcpdetail *ptcpdetail;
|
|||
|
|
struct udpdetail *pudpdetail;
|
|||
|
|
void *pdetail; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD><CFB8>Ϣ
|
|||
|
|
};
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
#ifdef __cplusplus
|
|||
|
|
extern "C" {
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
//<2F>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>غ<EFBFBD><D8BA><EFBFBD>
|
|||
|
|
void *dictator_malloc(int thread_seq,size_t size);
|
|||
|
|
void dictator_free(int thread_seq,void *pbuf);
|
|||
|
|
void *dictator_realloc(int thread_seq, void* pbuf, size_t size);
|
|||
|
|
|
|||
|
|
//<2F><>ȡ<EFBFBD><C8A1>ǰϵͳ<CFB5><CDB3><EFBFBD>еIJ<D0B5><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD><DFB3><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
int get_thread_count(void);
|
|||
|
|
|
|||
|
|
/* <20><><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD>ɿɴ<C9BF>ӡ<EFBFBD><D3A1><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>ʽ */
|
|||
|
|
const char *addr_type_to_string(enum addr_type_t type);
|
|||
|
|
|
|||
|
|
const char *printaddr (struct layer_addr *paddrinfo,int threadindex);
|
|||
|
|
|
|||
|
|
#ifdef __cplusplus
|
|||
|
|
}
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
#endif
|
|||
|
|
|