适配tfe_stream_addr;为了编译通过,注释mirror_stream.cpp中的代码;

This commit is contained in:
zhengchao
2018-09-04 11:36:22 +08:00
parent 046569828c
commit 4d1e9034c9
7 changed files with 59 additions and 61 deletions

View File

@@ -42,7 +42,7 @@ struct tfe_conn
struct tfe_stream struct tfe_stream
{ {
struct layer_addr addr; struct tfe_stream_addr* addr;
enum tfe_stream_proto proto; enum tfe_stream_proto proto;
struct tfe_conn upstream; struct tfe_conn upstream;
struct tfe_conn downstream; struct tfe_conn downstream;

View File

@@ -1,5 +1,5 @@
add_library(decrypt-mirroring src/deliver.cpp src/sendpkt.cpp) add_library(decrypt-mirroring src/decrypt_mirror_plugin.cpp src/mirror_stream.cpp src/sendpkt.cpp)
target_include_directories(decrypt-mirroring PRIVATE include/internal) target_include_directories(decrypt-mirroring PRIVATE include/internal)
target_include_directories(decrypt-mirroring PUBLIC include/external) target_include_directories(decrypt-mirroring PUBLIC include/external)
target_link_libraries(decrypt-mirroring common) target_link_libraries(decrypt-mirroring common)

View File

@@ -1,15 +0,0 @@
#pragma once
#include <tfe_stream.h>
int decrypt_mirror_init(void *proxy);
enum tfe_stream_action decrypt_mirror_on_open_cb(const struct tfe_stream * stream, unsigned int thread_id,
enum tfe_conn_dir dir, const unsigned char * data, size_t len, void ** pme);
enum tfe_stream_action decrypt_mirror_on_data_cb(const struct tfe_stream * stream, unsigned int thread_id,
enum tfe_conn_dir dir, const unsigned char * data, size_t len, void ** pme);
void decrypt_mirror_on_close_cb(const struct tfe_stream * stream, unsigned int thread_id,
enum tfe_stream_close_reason reason, void ** pme);
void decrypt_mirror_deinit(void);

View File

@@ -41,7 +41,7 @@ Return:
0:succes 0:succes
<0:error <0:error
***************************************************************************/ ***************************************************************************/
int mirror_stream_open(struct origin_stream_addr* addr,void** pme); int mirror_stream_open(int thread_id, const struct tfe_stream_addr* addr,void** pme);
@@ -57,7 +57,7 @@ Return:
0:succes 0:succes
<0:error <0:error
***************************************************************************/ ***************************************************************************/
int mirror_stream_write(enum tfe_conn_dir cur_dir,const unsigned char * data, size_t len, void** pme,int thread_seq); int mirror_stream_write(int cur_dir,const unsigned char * data, size_t len, void** pme,int thread_id);

View File

@@ -76,7 +76,7 @@ struct deliver_comm_info
struct deliver_pkt_info struct deliver_pkt_info
{ {
enum tfe_conn_dir dir; int dir;
unsigned int seq; //host order unsigned int seq; //host order
unsigned int ack; //host order unsigned int ack; //host order
unsigned int len; //host order,tcp payload len unsigned int len; //host order,tcp payload len
@@ -99,7 +99,7 @@ struct deliver_session_info
struct deliver_pme_info struct deliver_pme_info
{ {
unsigned char dst_macaddr[DELIVER_MACADDR_LEN]; unsigned char dst_macaddr[DELIVER_MACADDR_LEN];
struct origin_stream_addr addr_info; struct tfe_stream_addr* addr_info;
struct deliver_pkt_info pkt_info; struct deliver_pkt_info pkt_info;
struct deliver_session_info session_info; struct deliver_session_info session_info;
}; };

View File

@@ -1,41 +1,53 @@
#include "mirror_stream.h" #include "mirror_stream.h"
#include <tfe_stream.h> #include <tfe_stream.h>
#include <tfe_plugin.h>
#include <assert.h>
int decrypt_mirror_init(void *proxy) int decrypt_mirror_init(struct tfe_proxy * proxy)
{ {
const char* filepath="./conf/decrypt_mirror.conf"; const char* filepath="./conf/decrypt_mirror.conf";
int thread_num=2;//todo: aquire from proxy; int thread_num=2, ret=0;//todo: aquire from proxy;
int mirro_stream_init(thread_num, filepath); ret=mirror_stream_init(thread_num, filepath);
assert(ret==0);
return 0; return 0;
} }
enum tfe_stream_action decrypt_mirror_on_open_cb(const struct tfe_stream * stream, unsigned int thread_id, int decrypt_mirror_on_open_cb(const struct tfe_stream * stream, unsigned int thread_id,
enum tfe_conn_dir dir, const unsigned char * data, size_t len, void ** pme) enum tfe_conn_dir dir, void ** pme)
{ {
struct layer_addr* addr=NULL; //=stream->addr;
int ret=0; int ret=0;
ret=mirror_stream_open(thread_id, addr, pme); ret=mirror_stream_open(thread_id, stream->addr, pme);
assert(ret==0); assert(ret==0);
return ACTION_FORWARD_DATA; return 0;
} }
enum tfe_stream_action decrypt_mirror_on_data_cb(const struct tfe_stream * stream, unsigned int thread_id, enum tfe_stream_action decrypt_mirror_on_data_cb(const struct tfe_stream * stream, unsigned int thread_id,
enum tfe_conn_dir dir, const unsigned char * data, size_t len, void ** pme) enum tfe_conn_dir dir, const unsigned char * data, size_t len, void ** pme)
{ {
int ret=0; int ret=0;
ret=mirror_stream_write(thread_id, data,len, pme, thread_id); ret=mirror_stream_write(dir, data,len, pme, thread_id);
return ACTION_FORWARD_DATA; return ACTION_FORWARD_DATA;
} }
void decrypt_mirror_on_close_cb(const struct tfe_stream * stream, unsigned int thread_id, void decrypt_mirror_on_close_cb(const struct tfe_stream * stream, unsigned int thread_id,
enum tfe_stream_close_reason reason, void ** pme) enum tfe_stream_close_reason reason, void ** pme)
{ {
int ret=0; mirror_stream_close(pme, thread_id);
ret=mirror_stream_close(pme, thread_id);
return; return;
} }
void decrypt_mirror_deinit(void) void decrypt_mirror_deinit(struct tfe_proxy * proxy)
{ {
return; return;
} }
struct tfe_plugin decrypt_mirror_spec={
.symbol=NULL,
.type = TFE_PLUGIN_TYPE_BUSINESS,
.proto = APP_PROTO_HTTP1, //???
.on_init = decrypt_mirror_init,
.on_deinit = decrypt_mirror_deinit,
.on_open = decrypt_mirror_on_open_cb,
.on_data = decrypt_mirror_on_data_cb,
.on_close = decrypt_mirror_on_close_cb};
TFE_PLUGIN_REGISTER(decrypt_mirror,decrypt_mirror_spec)

View File

@@ -128,6 +128,7 @@ int deliver_debug_log_v6(int level,char* module,struct deliver_pme_info* pmeinfo
{ {
struct deliver_session_info* session_info=&(pmeinfo->session_info); struct deliver_session_info* session_info=&(pmeinfo->session_info);
struct deliver_pkt_info* pkt_info=&(pmeinfo->pkt_info); struct deliver_pkt_info* pkt_info=&(pmeinfo->pkt_info);
#if 0
struct sockaddr_in6* client_addr=(struct sockaddr_in6*)&(pmeinfo->addr_info.client); struct sockaddr_in6* client_addr=(struct sockaddr_in6*)&(pmeinfo->addr_info.client);
struct sockaddr_in6* server_addr=(struct sockaddr_in6*)&(pmeinfo->addr_info.server); struct sockaddr_in6* server_addr=(struct sockaddr_in6*)&(pmeinfo->addr_info.server);
@@ -157,6 +158,7 @@ int deliver_debug_log_v6(int level,char* module,struct deliver_pme_info* pmeinfo
break; break;
} }
#endif
return 0; return 0;
} }
@@ -166,6 +168,7 @@ int deliver_debug_log_v4(int level,char* module,struct deliver_pme_info* pmeinfo
{ {
struct deliver_session_info* session_info=&(pmeinfo->session_info); struct deliver_session_info* session_info=&(pmeinfo->session_info);
struct deliver_pkt_info* pkt_info=&(pmeinfo->pkt_info); struct deliver_pkt_info* pkt_info=&(pmeinfo->pkt_info);
#if 0
struct sockaddr_in* client_addr=(struct sockaddr_in*)&(pmeinfo->addr_info.client); struct sockaddr_in* client_addr=(struct sockaddr_in*)&(pmeinfo->addr_info.client);
struct sockaddr_in* server_addr=(struct sockaddr_in*)&(pmeinfo->addr_info.server); struct sockaddr_in* server_addr=(struct sockaddr_in*)&(pmeinfo->addr_info.server);
@@ -194,7 +197,7 @@ int deliver_debug_log_v4(int level,char* module,struct deliver_pme_info* pmeinfo
session_info->send_pkt,session_info->recv_byte); session_info->send_pkt,session_info->recv_byte);
break; break;
} }
#endif
return 0; return 0;
} }
@@ -240,7 +243,7 @@ int deliver_sendpkt_ether(int thread_seq,int buflen,unsigned char* buf,unsigned
} }
int deliver_init_pmeinfo(struct origin_stream_addr* addr,void** pme) int deliver_init_pmeinfo(const struct tfe_stream_addr* addr,void** pme)
{ {
//TODO:choose dst mac //TODO:choose dst mac
int i=deliver_rand()%(g_deliver_sendinfo.receiver_num); int i=deliver_rand()%(g_deliver_sendinfo.receiver_num);
@@ -256,11 +259,11 @@ int deliver_init_pmeinfo(struct origin_stream_addr* addr,void** pme)
} }
int deliver_send_v6(int thread_seq,struct deliver_pme_info* pmeinfo,int payload_len,char* payload) int deliver_send_v6(int thread_seq,struct deliver_pme_info* pmeinfo,int payload_len,const unsigned char* payload)
{ {
int offset = 0; int offset = 0;
unsigned short eth_type=0x0800; unsigned short eth_type=0x0800;
#if 0
struct sockaddr_in6* client_addr=NULL; struct sockaddr_in6* client_addr=NULL;
struct sockaddr_in6* server_addr=NULL; struct sockaddr_in6* server_addr=NULL;
@@ -307,18 +310,18 @@ int deliver_send_v6(int thread_seq,struct deliver_pme_info* pmeinfo,int payload_
pmeinfo->session_info.send_byte+=payload_len; pmeinfo->session_info.send_byte+=payload_len;
deliver_debug_log_v6(RLOG_LV_DEBUG,(char*)DELIVER_SENDPKT_DEBUG,pmeinfo,DELIVER_FLAG_SENDPKT,0); deliver_debug_log_v6(RLOG_LV_DEBUG,(char*)DELIVER_SENDPKT_DEBUG,pmeinfo,DELIVER_FLAG_SENDPKT,0);
#endif
return 0; return 0;
} }
int deliver_send_v4(int thread_seq,struct deliver_pme_info* pmeinfo,int payload_len,char* payload) int deliver_send_v4(int thread_seq,struct deliver_pme_info* pmeinfo,int payload_len,const unsigned char* payload)
{ {
int offset = 0; int offset = 0;
unsigned short eth_type=0x0800; unsigned short eth_type=0x0800;
#if 0
struct sockaddr_in* client_addr=NULL; struct sockaddr_in* client_addr=NULL;
struct sockaddr_in* server_addr=NULL; struct sockaddr_in* server_addr=NULL;
@@ -365,7 +368,7 @@ int deliver_send_v4(int thread_seq,struct deliver_pme_info* pmeinfo,int payload_
pmeinfo->session_info.send_byte+=payload_len; pmeinfo->session_info.send_byte+=payload_len;
deliver_debug_log_v4(RLOG_LV_DEBUG,(char*)DELIVER_SENDPKT_DEBUG,pmeinfo,DELIVER_FLAG_SENDPKT,0); deliver_debug_log_v4(RLOG_LV_DEBUG,(char*)DELIVER_SENDPKT_DEBUG,pmeinfo,DELIVER_FLAG_SENDPKT,0);
#endif
return 0; return 0;
@@ -381,8 +384,7 @@ int deliver_send_syn(int thread_seq,struct deliver_pme_info* pmeinfo)
pmeinfo->pkt_info.win = deliver_rand_range(1460, 65500); pmeinfo->pkt_info.win = deliver_rand_range(1460, 65500);
pmeinfo->pkt_info.ipid = deliver_rand() % 65535; pmeinfo->pkt_info.ipid = deliver_rand() % 65535;
pmeinfo->pkt_info.ttl=deliver_rand_range(32,65); pmeinfo->pkt_info.ttl=deliver_rand_range(32,65);
if(pmeinfo->addr_info->addrtype==ADDR_TYPE_IPV4)
if(pmeinfo->addr_info.client.sa_family==AF_INET)
{ {
deliver_send_v4(thread_seq,pmeinfo,0,NULL); deliver_send_v4(thread_seq,pmeinfo,0,NULL);
deliver_debug_log_v4(RLOG_LV_INFO,(char*)DELIVER_SENDPKT_START,pmeinfo,DELIVER_FLAG_SENDPKT,0); deliver_debug_log_v4(RLOG_LV_INFO,(char*)DELIVER_SENDPKT_START,pmeinfo,DELIVER_FLAG_SENDPKT,0);
@@ -404,8 +406,7 @@ int deliver_send_syn_ack(int thread_seq,struct deliver_pme_info* pmeinfo)
pmeinfo->pkt_info.seq= deliver_rand(); pmeinfo->pkt_info.seq= deliver_rand();
pmeinfo->pkt_info.flag=TH_SYN|TH_ACK; pmeinfo->pkt_info.flag=TH_SYN|TH_ACK;
if(pmeinfo->addr_info->addrtype==ADDR_TYPE_IPV4)
if(pmeinfo->addr_info.client.sa_family==AF_INET)
{ {
deliver_send_v4(thread_seq,pmeinfo,0,NULL); deliver_send_v4(thread_seq,pmeinfo,0,NULL);
} }
@@ -430,7 +431,7 @@ int deliver_send_ack(int thread_seq,struct deliver_pme_info* pmeinfo)
pmeinfo->pkt_info.flag=TH_ACK; pmeinfo->pkt_info.flag=TH_ACK;
if(pmeinfo->addr_info.client.sa_family==AF_INET) if(pmeinfo->addr_info->addrtype==ADDR_TYPE_IPV4)
{ {
deliver_send_v4(thread_seq,pmeinfo,0,NULL); deliver_send_v4(thread_seq,pmeinfo,0,NULL);
} }
@@ -443,7 +444,7 @@ int deliver_send_ack(int thread_seq,struct deliver_pme_info* pmeinfo)
} }
int deliver_set_pktinfo(struct deliver_pme_info* pmeinfo,int flag,enum tfe_conn_dir cur_dir,int payload_len) int deliver_set_pktinfo(struct deliver_pme_info* pmeinfo,int flag, int cur_dir,int payload_len)
{ {
struct deliver_pkt_info last_pkt_info; struct deliver_pkt_info last_pkt_info;
memcpy((void*)&last_pkt_info,(void*)&(pmeinfo->pkt_info),sizeof(struct deliver_pkt_info)); memcpy((void*)&last_pkt_info,(void*)&(pmeinfo->pkt_info),sizeof(struct deliver_pkt_info));
@@ -471,7 +472,7 @@ int deliver_set_pktinfo(struct deliver_pme_info* pmeinfo,int flag,enum tfe_conn_
int deliver_send_rst(int thread_seq,struct deliver_pme_info* pmeinfo) int deliver_send_rst(int thread_seq,struct deliver_pme_info* pmeinfo)
{ {
deliver_set_pktinfo(pmeinfo,TH_RST,DELIVER_DIR_C2S,0); deliver_set_pktinfo(pmeinfo,TH_RST,DELIVER_DIR_C2S,0);
if(pmeinfo->addr_info.client.sa_family==AF_INET) if(pmeinfo->addr_info->addrtype==ADDR_TYPE_IPV4)
{ {
deliver_send_v4(thread_seq,pmeinfo,0,NULL); deliver_send_v4(thread_seq,pmeinfo,0,NULL);
} }
@@ -482,7 +483,7 @@ int deliver_send_rst(int thread_seq,struct deliver_pme_info* pmeinfo)
deliver_set_pktinfo(pmeinfo,TH_RST,DELIVER_DIR_S2C,0); deliver_set_pktinfo(pmeinfo,TH_RST,DELIVER_DIR_S2C,0);
if(pmeinfo->addr_info.client.sa_family==AF_INET) if(pmeinfo->addr_info->addrtype==ADDR_TYPE_IPV4)
{ {
deliver_send_v4(thread_seq,pmeinfo,0,NULL); deliver_send_v4(thread_seq,pmeinfo,0,NULL);
deliver_debug_log_v4(RLOG_LV_INFO,(char*)DELIVER_SENDPKT_END,pmeinfo,DELIVER_FLAG_ENT,0); deliver_debug_log_v4(RLOG_LV_INFO,(char*)DELIVER_SENDPKT_END,pmeinfo,DELIVER_FLAG_ENT,0);
@@ -498,37 +499,37 @@ int deliver_send_rst(int thread_seq,struct deliver_pme_info* pmeinfo)
int mirror_stream_open(int thread_seq,struct origin_stream_addr* addr,void** pme) int mirror_stream_open(int thread_id, const struct tfe_stream_addr* addr,void** pme)
{ {
struct deliver_pme_info* pmeinfo=NULL; struct deliver_pme_info* pmeinfo=NULL;
deliver_init_pmeinfo(addr,pme); deliver_init_pmeinfo(addr,pme);
pmeinfo=(struct deliver_pme_info*)*pme; pmeinfo=(struct deliver_pme_info*)*pme;
deliver_send_syn(thread_seq,pmeinfo); deliver_send_syn(thread_id,pmeinfo);
deliver_send_syn_ack(thread_seq,pmeinfo); deliver_send_syn_ack(thread_id,pmeinfo);
deliver_send_ack(thread_seq,pmeinfo); deliver_send_ack(thread_id,pmeinfo);
return 0; return 0;
} }
int mirror_stream_write(enum tfe_conn_dir cur_dir,const unsigned char * data, size_t len, void** pme,int thread_seq) int mirror_stream_write(int cur_dir,const unsigned char * data, size_t len, void** pme,int thread_id)
{ {
int i=0; int i=0;
char* payload=data; const unsigned char* payload=data;
int payload_len=0; int payload_len=0;
int remain_len=len; int remain_len=len;
int pkt_num=(len/(g_deliver_sendinfo.mtu))+1; int pkt_num=(len/(g_deliver_sendinfo.mtu))+1;
struct deliver_pme_info* pmeinfo=(struct deliver_pme_info*)*pme; struct deliver_pme_info* pmeinfo=(struct deliver_pme_info*)*pme;
deliver_set_filestate2(thread_seq,FS2_COLUME_RECVPKT,1); deliver_set_filestate2(thread_id,FS2_COLUME_RECVPKT,1);
deliver_set_filestate2(thread_seq,FS2_COLUME_RECVBYTE,len); deliver_set_filestate2(thread_id,FS2_COLUME_RECVBYTE,len);
pmeinfo->session_info.recv_pkt++; pmeinfo->session_info.recv_pkt++;
pmeinfo->session_info.recv_byte+=len; pmeinfo->session_info.recv_byte+=len;
if(pmeinfo->addr_info.client.sa_family==AF_INET) if(pmeinfo->addr_info->addrtype==ADDR_TYPE_IPV4)
{ {
deliver_debug_log_v4(RLOG_LV_DEBUG,(char*)DELIVER_RECVPKT_DEBUG,pmeinfo,DELIVER_FLAG_RECVPKT,len); deliver_debug_log_v4(RLOG_LV_DEBUG,(char*)DELIVER_RECVPKT_DEBUG,pmeinfo,DELIVER_FLAG_RECVPKT,len);
} }
@@ -544,13 +545,13 @@ int mirror_stream_write(enum tfe_conn_dir cur_dir,const unsigned char * data, si
remain_len-=g_deliver_sendinfo.mtu; remain_len-=g_deliver_sendinfo.mtu;
deliver_set_pktinfo(pmeinfo,TH_ACK,cur_dir,payload_len); deliver_set_pktinfo(pmeinfo,TH_ACK,cur_dir,payload_len);
if(pmeinfo->addr_info.client.sa_family==AF_INET) if(pmeinfo->addr_info->addrtype==ADDR_TYPE_IPV4)
{ {
deliver_send_v4(thread_seq,pmeinfo,payload_len,payload); deliver_send_v4(thread_id,pmeinfo,payload_len,payload);
} }
else else
{ {
deliver_send_v6(thread_seq,pmeinfo,payload_len,payload); deliver_send_v6(thread_id,pmeinfo,payload_len,payload);
} }
} }