|
|
|
|
@@ -119,22 +119,19 @@ void* deliver_filestat2(void* arg)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int deliver_debug_log_v6(int level,char* module,struct deliver_pme_info* pmeinfo,int flag,int recv_len)
|
|
|
|
|
{
|
|
|
|
|
#if 0
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
struct deliver_session_info* session_info=&(pmeinfo->session_info);
|
|
|
|
|
struct deliver_pkt_info* pkt_info=&(pmeinfo->pkt_info);
|
|
|
|
|
|
|
|
|
|
struct sockaddr_in6* client_addr=(struct sockaddr_in6*)&(pmeinfo->addr_info.client);
|
|
|
|
|
struct sockaddr_in6* server_addr=(struct sockaddr_in6*)&(pmeinfo->addr_info.server);
|
|
|
|
|
const struct tfe_stream_addr_tuple4_v6* tuple4_v6 = pmeinfo->addr_info->tuple4_v6;
|
|
|
|
|
|
|
|
|
|
char saddr_v6[INET6_ADDRSTRLEN ]={0};
|
|
|
|
|
char daddr_v6[INET6_ADDRSTRLEN ]={0};
|
|
|
|
|
unsigned short sport=ntohs(client_addr->sin6_port);
|
|
|
|
|
unsigned short dport=ntohs(server_addr->sin6_port);
|
|
|
|
|
unsigned short sport=ntohs(tuple4_v6->source);
|
|
|
|
|
unsigned short dport=ntohs(tuple4_v6->dest);
|
|
|
|
|
|
|
|
|
|
inet_ntop(AF_INET6, (void *)&(client_addr->sin6_addr), saddr_v6, INET6_ADDRSTRLEN);
|
|
|
|
|
inet_ntop(AF_INET6, (void *)&(server_addr->sin6_addr), daddr_v6, INET6_ADDRSTRLEN);
|
|
|
|
|
inet_ntop(AF_INET6, (void *)&(tuple4_v6->saddr), saddr_v6, INET6_ADDRSTRLEN);
|
|
|
|
|
inet_ntop(AF_INET6, (void *)&(tuple4_v6->daddr), daddr_v6, INET6_ADDRSTRLEN);
|
|
|
|
|
|
|
|
|
|
switch(flag)
|
|
|
|
|
{
|
|
|
|
|
@@ -154,28 +151,28 @@ int deliver_debug_log_v6(int level,char* module,struct deliver_pme_info* pmeinfo
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int deliver_debug_log_v4(int level,char* module,struct deliver_pme_info* pmeinfo,int flag,int recv_len)
|
|
|
|
|
{
|
|
|
|
|
#if 0
|
|
|
|
|
{
|
|
|
|
|
struct deliver_session_info* session_info=&(pmeinfo->session_info);
|
|
|
|
|
struct deliver_pkt_info* pkt_info=&(pmeinfo->pkt_info);
|
|
|
|
|
|
|
|
|
|
struct sockaddr_in* client_addr=(struct sockaddr_in*)&(pmeinfo->addr_info.client);
|
|
|
|
|
struct sockaddr_in* server_addr=(struct sockaddr_in*)&(pmeinfo->addr_info.server);
|
|
|
|
|
|
|
|
|
|
const struct tfe_stream_addr_tuple4_v4* tuple4_v4 = pmeinfo->addr_info->tuple4_v4;
|
|
|
|
|
|
|
|
|
|
char saddr_v4[INET_ADDRSTRLEN]={0};
|
|
|
|
|
char daddr_v4[INET_ADDRSTRLEN]={0};
|
|
|
|
|
unsigned short sport=ntohs(client_addr->sin_port);
|
|
|
|
|
unsigned short dport=ntohs(server_addr->sin_port);
|
|
|
|
|
unsigned short sport=ntohs(tuple4_v4->source);
|
|
|
|
|
unsigned short dport=ntohs(tuple4_v4->dest);
|
|
|
|
|
|
|
|
|
|
inet_ntop(AF_INET, (void *)&(client_addr->sin_addr.s_addr), saddr_v4, INET_ADDRSTRLEN);
|
|
|
|
|
inet_ntop(AF_INET, (void *)&(server_addr->sin_addr.s_addr), daddr_v4, INET_ADDRSTRLEN);
|
|
|
|
|
inet_ntop(AF_INET, (void *)&(tuple4_v4->saddr), saddr_v4, INET_ADDRSTRLEN);
|
|
|
|
|
inet_ntop(AF_INET, (void *)&(tuple4_v4->daddr), daddr_v4, INET_ADDRSTRLEN);
|
|
|
|
|
|
|
|
|
|
switch(flag)
|
|
|
|
|
{
|
|
|
|
|
@@ -194,11 +191,12 @@ int deliver_debug_log_v4(int level,char* module,struct deliver_pme_info* pmeinfo
|
|
|
|
|
session_info->send_pkt,session_info->recv_byte);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int deliver_sendpkt_ether(int thread_seq,int buflen,unsigned char* buf,unsigned char* dmac)
|
|
|
|
|
{
|
|
|
|
|
int ret=0;
|
|
|
|
|
@@ -298,7 +296,7 @@ int deliver_send_v6(int thread_seq,struct deliver_pme_info* pmeinfo,int payload_
|
|
|
|
|
|
|
|
|
|
deliver_do_checksum(g_deliver_globle_info.sendbuf[thread_seq]+offset, IPPROTO_TCP, SENDPACKET_TCP_H+payload_len);
|
|
|
|
|
|
|
|
|
|
deliver_do_checksum(g_deliver_globle_info.sendbuf[thread_seq]+offset, IPPROTO_IP, SENDPACKET_IP_H);
|
|
|
|
|
// deliver_do_checksum(g_deliver_globle_info.sendbuf[thread_seq]+offset, IPPROTO_IP, SENDPACKET_IP_H);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
deliver_build_ethernet((unsigned char*)(pmeinfo->dst_macaddr),(unsigned char*)(g_deliver_globle_info.sendinfo.src_macaddr),
|
|
|
|
|
@@ -388,16 +386,20 @@ int deliver_send_syn(int thread_seq,struct deliver_pme_info* pmeinfo)
|
|
|
|
|
pmeinfo->pkt_info.win = deliver_rand_range(1460, 65500);
|
|
|
|
|
pmeinfo->pkt_info.ipid = deliver_rand() % 65535;
|
|
|
|
|
pmeinfo->pkt_info.ttl=deliver_rand_range(32,65);
|
|
|
|
|
if(pmeinfo->addr_info->addrtype==TFE_ADDR_IPV4)
|
|
|
|
|
if(pmeinfo->addr_info->addrtype==TFE_ADDR_STREAM_TUPLE4_V4)
|
|
|
|
|
{
|
|
|
|
|
deliver_send_v4(thread_seq,pmeinfo,0,NULL);
|
|
|
|
|
deliver_debug_log_v4(RLOG_LV_INFO,(char*)DELIVER_SENDPKT_START,pmeinfo,DELIVER_FLAG_SENDPKT,0);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
else if(pmeinfo->addr_info->addrtype==TFE_ADDR_STREAM_TUPLE4_V6)
|
|
|
|
|
{
|
|
|
|
|
deliver_send_v6(thread_seq,pmeinfo,0,NULL);
|
|
|
|
|
deliver_debug_log_v6(RLOG_LV_INFO,(char*)DELIVER_SENDPKT_START,pmeinfo,DELIVER_FLAG_SENDPKT,0);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
//TODO
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
@@ -410,14 +412,18 @@ int deliver_send_syn_ack(int thread_seq,struct deliver_pme_info* pmeinfo)
|
|
|
|
|
pmeinfo->pkt_info.seq= deliver_rand();
|
|
|
|
|
pmeinfo->pkt_info.flag=TH_SYN|TH_ACK;
|
|
|
|
|
|
|
|
|
|
if(pmeinfo->addr_info->addrtype==TFE_ADDR_IPV4)
|
|
|
|
|
if(pmeinfo->addr_info->addrtype==TFE_ADDR_STREAM_TUPLE4_V4)
|
|
|
|
|
{
|
|
|
|
|
deliver_send_v4(thread_seq,pmeinfo,0,NULL);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
else if(pmeinfo->addr_info->addrtype==TFE_ADDR_STREAM_TUPLE4_V6)
|
|
|
|
|
{
|
|
|
|
|
deliver_send_v6(thread_seq,pmeinfo,0,NULL);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
//TODO
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
@@ -435,14 +441,18 @@ int deliver_send_ack(int thread_seq,struct deliver_pme_info* pmeinfo)
|
|
|
|
|
pmeinfo->pkt_info.flag=TH_ACK;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(pmeinfo->addr_info->addrtype==TFE_ADDR_IPV4)
|
|
|
|
|
if(pmeinfo->addr_info->addrtype==TFE_ADDR_STREAM_TUPLE4_V4)
|
|
|
|
|
{
|
|
|
|
|
deliver_send_v4(thread_seq,pmeinfo,0,NULL);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
else if(pmeinfo->addr_info->addrtype==TFE_ADDR_STREAM_TUPLE4_V6)
|
|
|
|
|
{
|
|
|
|
|
deliver_send_v6(thread_seq,pmeinfo,0,NULL);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
//todo
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
@@ -476,27 +486,35 @@ int deliver_set_pktinfo(struct deliver_pme_info* pmeinfo,int flag, int cur_dir,i
|
|
|
|
|
int deliver_send_rst(int thread_seq,struct deliver_pme_info* pmeinfo)
|
|
|
|
|
{
|
|
|
|
|
deliver_set_pktinfo(pmeinfo,TH_RST,CONN_DIR_DOWNSTREAM,0);
|
|
|
|
|
if(pmeinfo->addr_info->addrtype==TFE_ADDR_IPV4)
|
|
|
|
|
if(pmeinfo->addr_info->addrtype==TFE_ADDR_STREAM_TUPLE4_V4)
|
|
|
|
|
{
|
|
|
|
|
deliver_send_v4(thread_seq,pmeinfo,0,NULL);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
else if(pmeinfo->addr_info->addrtype==TFE_ADDR_STREAM_TUPLE4_V6)
|
|
|
|
|
{
|
|
|
|
|
deliver_send_v6(thread_seq,pmeinfo,0,NULL);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
//TODO
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
deliver_set_pktinfo(pmeinfo,TH_RST,CONN_DIR_UPSTREAM,0);
|
|
|
|
|
if(pmeinfo->addr_info->addrtype==TFE_ADDR_IPV4)
|
|
|
|
|
if(pmeinfo->addr_info->addrtype==TFE_ADDR_STREAM_TUPLE4_V4)
|
|
|
|
|
{
|
|
|
|
|
deliver_send_v4(thread_seq,pmeinfo,0,NULL);
|
|
|
|
|
deliver_debug_log_v4(RLOG_LV_INFO,(char*)DELIVER_SENDPKT_END,pmeinfo,DELIVER_FLAG_ENT,0);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
else if(pmeinfo->addr_info->addrtype==TFE_ADDR_STREAM_TUPLE4_V6)
|
|
|
|
|
{
|
|
|
|
|
deliver_send_v6(thread_seq,pmeinfo,0,NULL);
|
|
|
|
|
deliver_debug_log_v6(RLOG_LV_INFO,(char*)DELIVER_SENDPKT_END,pmeinfo,DELIVER_FLAG_ENT,0);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
//TODO
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
@@ -505,6 +523,12 @@ int deliver_send_rst(int thread_seq,struct deliver_pme_info* pmeinfo)
|
|
|
|
|
|
|
|
|
|
int mirror_stream_open(int thread_id, const struct tfe_stream_addr* addr,void** pme)
|
|
|
|
|
{
|
|
|
|
|
if(g_deliver_globle_info.deliver_switch == 0)
|
|
|
|
|
{
|
|
|
|
|
MESA_handle_runtime_log(g_deliver_globle_info.comminfo.logger,RLOG_LV_INFO,DELIVER_MODULE_INIT,"mirror_stream switch is 0,not run....");
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
struct deliver_pme_info* pmeinfo=NULL;
|
|
|
|
|
|
|
|
|
|
deliver_init_pmeinfo(addr,pme);
|
|
|
|
|
@@ -520,6 +544,11 @@ int mirror_stream_open(int thread_id, const struct tfe_stream_addr* addr,void**
|
|
|
|
|
|
|
|
|
|
int mirror_stream_write(int cur_dir,const unsigned char * data, size_t len, void** pme,int thread_id)
|
|
|
|
|
{
|
|
|
|
|
if(g_deliver_globle_info.deliver_switch == 0)
|
|
|
|
|
{
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int i=0;
|
|
|
|
|
const unsigned char* payload=data;
|
|
|
|
|
int payload_len=0;
|
|
|
|
|
@@ -533,14 +562,18 @@ int mirror_stream_write(int cur_dir,const unsigned char * data, size_t len, void
|
|
|
|
|
|
|
|
|
|
pmeinfo->session_info.recv_pkt++;
|
|
|
|
|
pmeinfo->session_info.recv_byte+=len;
|
|
|
|
|
if(pmeinfo->addr_info->addrtype==TFE_ADDR_IPV4)
|
|
|
|
|
if(pmeinfo->addr_info->addrtype==TFE_ADDR_STREAM_TUPLE4_V4)
|
|
|
|
|
{
|
|
|
|
|
deliver_debug_log_v4(RLOG_LV_DEBUG,(char*)DELIVER_RECVPKT_DEBUG,pmeinfo,DELIVER_FLAG_RECVPKT,len);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
else if(pmeinfo->addr_info->addrtype==TFE_ADDR_STREAM_TUPLE4_V6)
|
|
|
|
|
{
|
|
|
|
|
deliver_debug_log_v6(RLOG_LV_DEBUG,(char*)DELIVER_RECVPKT_DEBUG,pmeinfo,DELIVER_FLAG_RECVPKT,len);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
//TODO
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for(i=0;i<pkt_num;i++)
|
|
|
|
|
{
|
|
|
|
|
@@ -549,14 +582,18 @@ int mirror_stream_write(int cur_dir,const unsigned char * data, size_t len, void
|
|
|
|
|
remain_len-=g_deliver_globle_info.sendinfo.mtu;
|
|
|
|
|
|
|
|
|
|
deliver_set_pktinfo(pmeinfo,TH_ACK,cur_dir,payload_len);
|
|
|
|
|
if(pmeinfo->addr_info->addrtype==TFE_ADDR_IPV4)
|
|
|
|
|
if(pmeinfo->addr_info->addrtype==TFE_ADDR_STREAM_TUPLE4_V4)
|
|
|
|
|
{
|
|
|
|
|
deliver_send_v4(thread_id,pmeinfo,payload_len,payload);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
else if(pmeinfo->addr_info->addrtype==TFE_ADDR_STREAM_TUPLE4_V6)
|
|
|
|
|
{
|
|
|
|
|
deliver_send_v6(thread_id,pmeinfo,payload_len,payload);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
//TODO
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
@@ -565,6 +602,12 @@ int mirror_stream_write(int cur_dir,const unsigned char * data, size_t len, void
|
|
|
|
|
|
|
|
|
|
void mirror_stream_close(void** pme, int thread_id)
|
|
|
|
|
{
|
|
|
|
|
if(g_deliver_globle_info.deliver_switch == 0)
|
|
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
struct deliver_pme_info* pmeinfo=(struct deliver_pme_info*)*pme;
|
|
|
|
|
|
|
|
|
|
deliver_send_rst(thread_id,pmeinfo);
|
|
|
|
|
@@ -608,6 +651,9 @@ int deliver_profile_init(const char* filepath,int* logger_level,char* logger_fil
|
|
|
|
|
char mac_addr_str[DELIVER_MACADDR_STR_LEN];
|
|
|
|
|
char receiver_mac_name[DELIVER_CARDNAME_LEN]={0};
|
|
|
|
|
|
|
|
|
|
//switch
|
|
|
|
|
MESA_load_profile_int_def(filepath,(char*)DELIVER_CONF_MODE,(char*)"mirror_switch",&(g_deliver_globle_info.deliver_switch),0);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//runtime log
|
|
|
|
|
MESA_load_profile_int_def(filepath,(char*)DELIVER_CONF_MODE,(char*)"logger_level",logger_level,RLOG_LV_INFO);
|
|
|
|
|
@@ -700,6 +746,7 @@ int mirror_stream_init(int thread_num, const char* filepath)
|
|
|
|
|
//profile
|
|
|
|
|
deliver_profile_init(filepath,&logger_level,logger_filepath);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//init runtime log
|
|
|
|
|
g_deliver_globle_info.comminfo.logger=MESA_create_runtime_log_handle(logger_filepath,logger_level);
|
|
|
|
|
if(g_deliver_globle_info.comminfo.logger==NULL)
|
|
|
|
|
|