调整目录结构
This commit is contained in:
68
entry/main.cpp
Normal file
68
entry/main.cpp
Normal file
@@ -0,0 +1,68 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//syn包开始回调
|
||||
extern "C" char kni_tcpall_entry(const struct streaminfo* pstream, void** pme, int thread_seq, const void* a_packet){
|
||||
//当前包bypass, 剩下包bypass
|
||||
char ret = APP_STATE_FAWPKT|APP_STATE_DROPME;
|
||||
struct kni_ipv6_hdr* ipv6_hdr = NULL;
|
||||
struct kni_pme_info *pmeinfo = *(struct kni_pme_info **)pme;
|
||||
if(pstream->addr.addrtype==ADDR_TYPE_IPV6){
|
||||
ipv6_hdr = (struct kni_ipv6_hdr*)a_packet;
|
||||
if((a_packet != NULL) && (ipv6_hdr->ip6_nex_hdr != NEXTHDR_TCP)){
|
||||
kni_filestate2_set(thread_seq,FS_DROP_IPV6OPT,0,1);
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
switch(pstream->pktstate){
|
||||
case OP_STATE_PENDING:
|
||||
kni_filestate2_set(thread_seq,FS_PENDING,0,1);
|
||||
kni_filestate2_set(thread_seq,FS_PMENUM,0,1);
|
||||
*pme=pmeinfo=kni_pmeinfo_new();
|
||||
ret=kni_pending_opstate(pstream, pmeinfo, thread_seq, a_packet, PROTO_TYPE_TCP);
|
||||
break;
|
||||
|
||||
case OP_STATE_DATA:
|
||||
ret=kni_data_opstate(pstream, pmeinfo, thread_seq,a_packet, PROTO_TYPE_TCP);
|
||||
break;
|
||||
|
||||
case OP_STATE_CLOSE:
|
||||
if(a_packet == NULL)
|
||||
{
|
||||
kni_filestate2_set(thread_seq,FS_CLOSE_TIMEOUT,0,1);
|
||||
}
|
||||
else
|
||||
{
|
||||
kni_filestate2_set(thread_seq,FS_CLOSE_FIN,0,1);
|
||||
}
|
||||
|
||||
ret=kni_close_opstate(pstream,(struct kni_pme_info*)*pme,thread_seq,a_packet,PROTO_TYPE_TCP);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if((ret&APP_STATE_DROPME)&& pmeinfo!=NULL)
|
||||
{
|
||||
kni_filestate2_set(thread_seq,FS_PMENUM,0,-1);
|
||||
kni_free_pmeinfo(pmeinfo);
|
||||
*pme=NULL;
|
||||
|
||||
if(pstream->pktstate != OP_STATE_CLOSE)
|
||||
{
|
||||
kni_filestate2_set(thread_seq,FS_CLOSE_DROPME,0,1);
|
||||
}
|
||||
}
|
||||
|
||||
clock_gettime(CLOCK_MONOTONIC, &end);
|
||||
|
||||
elapse=(end.tv_sec-start.tv_sec)*1000000+(end.tv_nsec-start.tv_nsec)/1000;
|
||||
FS_operate(g_kni_fs2_info.handler, g_kni_fs2_info.metric_sapp_proc, 0, FS_OP_SET, elapse);
|
||||
|
||||
return ret;
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user