20180718
1、errno打印错误信息 2、发包时寻找发包网卡根据routdir方向,而非指定某个网卡是客户端
This commit is contained in:
213
kni.c
213
kni.c
@@ -31,7 +31,7 @@
|
||||
#include "kni.h"
|
||||
|
||||
|
||||
int g_kni_version_VERSION_20180711_3;
|
||||
int g_kni_version_VERSION_20180718;
|
||||
|
||||
struct kni_var_comm g_kni_comminfo;
|
||||
struct kni_var_struct g_kni_structinfo;
|
||||
@@ -39,6 +39,7 @@ struct kni_var_maat g_kni_maatinfo;
|
||||
struct kni_fs2_info g_kni_fs2_info;
|
||||
struct kni_switch_info g_kni_switch_info;
|
||||
|
||||
char g_kni_cardname[KNI_CARD_NUM][KNI_CONF_MAXLEN];
|
||||
int g_kni_threadseq[KNI_MAX_THREADNUM];
|
||||
const char *g_kni_fs2_name[FS2_COLUMN_NUM] ={"RECV_PKTS","FWD_PKTS","DROP_PKTS","WRITE_PKTS","READ_PKTS","SEND_PKTS"};
|
||||
|
||||
@@ -267,7 +268,7 @@ static int kni_send_fds(int socket, int *fds, int n,int protocol)
|
||||
// if (sendmsg (socket, &msg, 0) < 0)
|
||||
if (sendmsg (socket, &msg, flags) < 0)
|
||||
{
|
||||
MESA_handle_runtime_log(g_kni_comminfo.logger, RLOG_LV_FATAL,"kni_send_fds","sendmsg()error,errno:%d",errno);
|
||||
MESA_handle_runtime_log(g_kni_comminfo.logger, RLOG_LV_FATAL,"kni_send_fds","sendmsg()error,errno:%d,%s",errno,strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -328,14 +329,14 @@ int tun_alloc_mq(char *dev, int queues, int *fds)
|
||||
{
|
||||
if ((fd = open(clonedev, O_RDWR)) < 0)
|
||||
{
|
||||
MESA_handle_runtime_log(g_kni_comminfo.logger, RLOG_LV_FATAL,KNI_MODULE_INIT,"tun_alloc_mq():open error,errno is:%d,action:%s",errno,KNI_ACTION_EXIT);
|
||||
MESA_handle_runtime_log(g_kni_comminfo.logger, RLOG_LV_FATAL,KNI_MODULE_INIT,"tun_alloc_mq():open error,errno is:%d,%s,action:%s",errno,strerror(errno),KNI_ACTION_EXIT);
|
||||
tun_error(i,fds);
|
||||
return -1;
|
||||
}
|
||||
err = ioctl(fd, TUNSETIFF, (void *)&ifr);
|
||||
if (err)
|
||||
{
|
||||
MESA_handle_runtime_log(g_kni_comminfo.logger, RLOG_LV_FATAL,KNI_MODULE_INIT,"tun_alloc_mq():ioctl error,errno is:%d,action:%s",errno,KNI_ACTION_EXIT);
|
||||
MESA_handle_runtime_log(g_kni_comminfo.logger, RLOG_LV_FATAL,KNI_MODULE_INIT,"tun_alloc_mq():ioctl error,errno is:%d,%s,action:%s",errno,strerror(errno),KNI_ACTION_EXIT);
|
||||
close(fd);
|
||||
tun_error(i,fds);
|
||||
return -1;
|
||||
@@ -345,12 +346,12 @@ int tun_alloc_mq(char *dev, int queues, int *fds)
|
||||
flag= fcntl(fd, F_GETFL, 0);
|
||||
if(flag<0)
|
||||
{
|
||||
MESA_handle_runtime_log(g_kni_comminfo.logger, RLOG_LV_FATAL,KNI_MODULE_INIT,"fcntl():getfl error,errno is:%d",errno);
|
||||
MESA_handle_runtime_log(g_kni_comminfo.logger, RLOG_LV_FATAL,KNI_MODULE_INIT,"fcntl():getfl error,errno is:%d,%s",errno,strerror(errno));
|
||||
}
|
||||
|
||||
if( fcntl( fd, F_SETFL, flag|O_NONBLOCK ) < 0 )
|
||||
{
|
||||
MESA_handle_runtime_log(g_kni_comminfo.logger, RLOG_LV_FATAL,KNI_MODULE_INIT,"fcntl():setfl error,errno is:%d",errno);
|
||||
MESA_handle_runtime_log(g_kni_comminfo.logger, RLOG_LV_FATAL,KNI_MODULE_INIT,"fcntl():setfl error,errno is:%d,%s",errno,strerror(errno));
|
||||
}
|
||||
|
||||
//end
|
||||
@@ -414,7 +415,7 @@ int tun_read_data(int fd,char* recv_buf,int max_buflen)
|
||||
}
|
||||
else if(recv_len <0)
|
||||
{
|
||||
MESA_handle_runtime_log(g_kni_comminfo.logger, RLOG_LV_FATAL,KNI_MODULE_WRITETUN,"tun_read_data error,msg is: %s\n",strerror(errno));
|
||||
MESA_handle_runtime_log(g_kni_comminfo.logger, RLOG_LV_FATAL,KNI_MODULE_WRITETUN,"tun_read_data error %d, %s\n",errno,strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
else
|
||||
@@ -440,7 +441,7 @@ char tun_write_data(int fd,char* send_buf,int send_buflen,struct streaminfo* pst
|
||||
if((succ_sendlen<0)&&(pstream!=NULL))
|
||||
{
|
||||
MESA_kill_tcp(pstream,(const void*)send_buf);
|
||||
MESA_handle_runtime_log(g_kni_comminfo.logger, RLOG_LV_FATAL,KNI_MODULE_WRITETUN,"write() error!msg is %s",strerror(errno));
|
||||
MESA_handle_runtime_log(g_kni_comminfo.logger, RLOG_LV_FATAL,KNI_MODULE_WRITETUN,"write() error %d, %s",errno,strerror(errno));
|
||||
ret=APP_STATE_DROPPKT|APP_STATE_DROPME;
|
||||
}
|
||||
else if(succ_sendlen<send_buflen)
|
||||
@@ -480,7 +481,85 @@ int tun_write_data_v6(int fd,char* send_buf,int send_buflen)
|
||||
|
||||
}
|
||||
|
||||
int kni_sendpkt_eth(int thread_seq,int iplen,char* ip,struct stream_tuple4_v4* ipv4_addr,int iprever_flag,uchar* smac,uchar* dmac)
|
||||
|
||||
|
||||
int kni_sendpkt_routdir(int thread_seq,int iplen,char* ip,struct stream_tuple4_v4* ipv4_addr,int iprever_flag,int routdir,uchar* smac,uchar* dmac)
|
||||
{
|
||||
int ret=0;
|
||||
int buflen=iplen+KNI_ETHER_LEN;
|
||||
|
||||
unsigned char buf[2000]={0};
|
||||
unsigned short eth_type=0x0800;
|
||||
|
||||
uchar* tmp_smac;
|
||||
uchar* tmp_dmac;
|
||||
|
||||
char* if_name=NULL;
|
||||
if(iprever_flag==0)
|
||||
{
|
||||
tmp_smac=smac;
|
||||
tmp_dmac=dmac;
|
||||
}
|
||||
else
|
||||
{
|
||||
tmp_smac=dmac;
|
||||
tmp_dmac=smac;
|
||||
}
|
||||
|
||||
if_name=g_kni_cardname[1-routdir];
|
||||
|
||||
struct ifreq ifr;
|
||||
size_t ifname_len=strlen(if_name);
|
||||
if(ifname_len<sizeof(ifr.ifr_name))
|
||||
{
|
||||
memset(ifr.ifr_name,0,IFNAMSIZ);
|
||||
memcpy(ifr.ifr_name,if_name,ifname_len);
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("interface name is too long\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
if(-1==ioctl(g_kni_comminfo.ipv4_fd[thread_seq],SIOCGIFINDEX,&ifr))
|
||||
{
|
||||
printf("get if index error:%d,%s",errno,strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
|
||||
struct sockaddr_ll addr={0};
|
||||
addr.sll_family=AF_PACKET;
|
||||
addr.sll_halen=ETHER_ADDR_LEN;
|
||||
addr.sll_ifindex=ifr.ifr_ifindex;
|
||||
addr.sll_protocol=htons(ETH_P_IP);
|
||||
memcpy(addr.sll_addr,tmp_dmac,ETHER_ADDR_LEN);
|
||||
|
||||
|
||||
if(ioctl(g_kni_comminfo.ipv4_fd[thread_seq],SIOCGIFHWADDR,&ifr)==-1)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
sendpacket_build_ethernet((unsigned char*)tmp_dmac,(unsigned char*)tmp_smac,eth_type,(const unsigned char*)ip,iplen,(unsigned char*)buf);
|
||||
|
||||
ret=sendto(g_kni_comminfo.ipv4_fd[thread_seq],buf,buflen,0,(struct sockaddr*)&addr,sizeof(addr));
|
||||
if(ret<0)
|
||||
{
|
||||
MESA_handle_runtime_log(g_kni_comminfo.logger,RLOG_LV_FATAL,KNI_MODULE_SENDPKT,"sendto() error,errno:%d,msg:%s!",errno,strerror(errno));
|
||||
}
|
||||
else
|
||||
{
|
||||
kni_debug_info_v4((char*)KNI_MODULE_SENDPKT,KNI_FLAG_SSL,(struct ip*)ip);
|
||||
}
|
||||
|
||||
|
||||
return ret;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
int kni_sendpkt_eth(int thread_seq,int iplen,char* ip,struct stream_tuple4_v4* ipv4_addr,int iprever_flag,int routdir,uchar* smac,uchar* dmac)
|
||||
{
|
||||
int ret=0;
|
||||
int buflen=iplen+KNI_ETHER_LEN;
|
||||
@@ -525,7 +604,7 @@ int kni_sendpkt_eth(int thread_seq,int iplen,char* ip,struct stream_tuple4_v4* i
|
||||
|
||||
if(-1==ioctl(g_kni_comminfo.ipv4_fd[thread_seq],SIOCGIFINDEX,&ifr))
|
||||
{
|
||||
printf("get if index error:%d",errno);
|
||||
printf("get if index error:%d,%s",errno,strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -643,6 +722,16 @@ long kni_readtun_htable_cb_v4(void* data,const unsigned char* key,unsigned int s
|
||||
{
|
||||
memcpy(args->smac,datainfo->smac,KNI_MACADDR_LEN);
|
||||
memcpy(args->dmac,datainfo->dmac,KNI_MACADDR_LEN);
|
||||
if(args->iprevers==0)
|
||||
{
|
||||
args->routdir=datainfo->route_dir;
|
||||
}
|
||||
else
|
||||
{
|
||||
// args->routdir=MESA_dir_reverse(datainfo->route_dir);
|
||||
args->routdir=1-datainfo->route_dir;
|
||||
|
||||
}
|
||||
|
||||
if(datainfo->wndpro_flag[1-args->iprevers]>0)
|
||||
{
|
||||
@@ -698,7 +787,7 @@ int init_domain_fd()
|
||||
if ( ( i_fd = socket( AF_UNIX, SOCK_STREAM, 0 ) ) < 0 )
|
||||
// if ( ( i_fd = socket( AF_UNIX, SOCK_DGRAM, 0 ) ) < 0 )
|
||||
{
|
||||
MESA_handle_runtime_log(g_kni_comminfo.logger, RLOG_LV_FATAL,KNI_MODULE_INIT,"init_domain_fd():socket error,errno is %d,action:%s",errno,KNI_ACTION_EXIT);
|
||||
MESA_handle_runtime_log(g_kni_comminfo.logger, RLOG_LV_FATAL,KNI_MODULE_INIT,"init_domain_fd():socket error,errno is %d,%s,,action:%s",errno,strerror(errno),KNI_ACTION_EXIT);
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -712,7 +801,7 @@ int init_domain_fd()
|
||||
if ( connect( i_fd, ( struct sockaddr * )&addr, i_addr_len ) < 0 )
|
||||
{
|
||||
close(i_fd);
|
||||
MESA_handle_runtime_log(g_kni_comminfo.logger, RLOG_LV_FATAL,KNI_MODULE_INIT,"init_domain_fd():connect error,errno is %d,action:%s",errno,KNI_ACTION_EXIT);
|
||||
MESA_handle_runtime_log(g_kni_comminfo.logger, RLOG_LV_FATAL,KNI_MODULE_INIT,"init_domain_fd():connect error,errno is %d,%s,action:%s",errno,strerror(errno),KNI_ACTION_EXIT);
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -746,7 +835,8 @@ int kni_process_readdata(int thread_seq,int buflen,char* buf)
|
||||
if(result==1)
|
||||
{
|
||||
|
||||
kni_sendpkt_eth(thread_seq,buflen,buf,&ipv4_addr,iprever_flag,args.smac,args.dmac);
|
||||
// kni_sendpkt_eth(thread_seq,buflen,buf,&ipv4_addr,iprever_flag,args.routdir,args.smac,args.dmac);
|
||||
kni_sendpkt_routdir(thread_seq,buflen,buf,&ipv4_addr,iprever_flag,args.routdir,args.smac,args.dmac);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -928,21 +1018,21 @@ int tcprepair_set_state(int sk,struct kni_tcp_state* tcp)
|
||||
|
||||
if (setsockopt(sk, SOL_TCP, TCP_REPAIR, &yes, sizeof(yes))==-1)
|
||||
{
|
||||
MESA_handle_runtime_log(g_kni_comminfo.logger, RLOG_LV_FATAL,"tcprepair_set_state","setsockopt() TCP_REPAIR error,errno:%d",errno);
|
||||
MESA_handle_runtime_log(g_kni_comminfo.logger, RLOG_LV_FATAL,"tcprepair_set_state","setsockopt() TCP_REPAIR error,errno:%d,%s",errno,strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
if (setsockopt(sk, SOL_IP, IP_TRANSPARENT, &yes, sizeof(yes)) < 0)
|
||||
{
|
||||
MESA_handle_runtime_log(g_kni_comminfo.logger, RLOG_LV_FATAL,"tcprepair_set_state","setsockopt() IP_TRANSPARENT error,errno:%d",errno);
|
||||
MESA_handle_runtime_log(g_kni_comminfo.logger, RLOG_LV_FATAL,"tcprepair_set_state","setsockopt() IP_TRANSPARENT error,errno:%d,%s",errno,strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
if (setsockopt(sk, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(yes)) == -1)
|
||||
{
|
||||
MESA_handle_runtime_log(g_kni_comminfo.logger, RLOG_LV_FATAL,"tcprepair_set_state","setsockopt() SO_REUSEADDR error,errno:%d",errno);
|
||||
MESA_handle_runtime_log(g_kni_comminfo.logger, RLOG_LV_FATAL,"tcprepair_set_state","setsockopt() SO_REUSEADDR error,errno:%d,%s",errno,strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
/*
|
||||
@@ -960,28 +1050,28 @@ int tcprepair_set_state(int sk,struct kni_tcp_state* tcp)
|
||||
val = TCP_SEND_QUEUE;
|
||||
if (setsockopt(sk, SOL_TCP, TCP_REPAIR_QUEUE, &val, sizeof(val)))
|
||||
{
|
||||
MESA_handle_runtime_log(g_kni_comminfo.logger, RLOG_LV_FATAL,"tcprepair_set_state","setsockopt() TCP_REPAIR_QUEUE,TCP_SEND_QUEUE error,errno:%d",errno);
|
||||
MESA_handle_runtime_log(g_kni_comminfo.logger, RLOG_LV_FATAL,"tcprepair_set_state","setsockopt() TCP_REPAIR_QUEUE,TCP_SEND_QUEUE error,errno:%d,%s",errno,strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
|
||||
val = tcp->seq;
|
||||
if (setsockopt(sk, SOL_TCP, TCP_QUEUE_SEQ, &val, sizeof(val)))
|
||||
{
|
||||
MESA_handle_runtime_log(g_kni_comminfo.logger, RLOG_LV_FATAL,"tcprepair_set_state","setsockopt() TCP_QUEUE_SEQ error,errno:%d",errno);
|
||||
MESA_handle_runtime_log(g_kni_comminfo.logger, RLOG_LV_FATAL,"tcprepair_set_state","setsockopt() TCP_QUEUE_SEQ error,errno:%d,%s",errno,strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
|
||||
val = TCP_RECV_QUEUE;
|
||||
if (setsockopt(sk, SOL_TCP, TCP_REPAIR_QUEUE, &val, sizeof(val)))
|
||||
{
|
||||
MESA_handle_runtime_log(g_kni_comminfo.logger, RLOG_LV_FATAL,"tcprepair_set_state","setsockopt() TCP_REPAIR_QUEUE,TCP_RECV_QUEUE error,errno:%d",errno);
|
||||
MESA_handle_runtime_log(g_kni_comminfo.logger, RLOG_LV_FATAL,"tcprepair_set_state","setsockopt() TCP_REPAIR_QUEUE,TCP_RECV_QUEUE error,errno:%d,%s",errno,strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
|
||||
val = tcp->ack;
|
||||
if (setsockopt(sk, SOL_TCP, TCP_QUEUE_SEQ, &val, sizeof(val)))
|
||||
{
|
||||
MESA_handle_runtime_log(g_kni_comminfo.logger, RLOG_LV_FATAL,"tcprepair_set_state","setsockopt() TCP_QUEUE_SEQ error,errno:%d",errno);
|
||||
MESA_handle_runtime_log(g_kni_comminfo.logger, RLOG_LV_FATAL,"tcprepair_set_state","setsockopt() TCP_QUEUE_SEQ error,errno:%d,%s",errno,strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -1009,7 +1099,7 @@ int tcprepair_set_state(int sk,struct kni_tcp_state* tcp)
|
||||
|
||||
if (bind(sk, (struct sockaddr *) &addr, sizeof(addr)))
|
||||
{
|
||||
MESA_handle_runtime_log(g_kni_comminfo.logger, RLOG_LV_FATAL,"tcprepair_set_state","bind() error,errno:%d",errno);
|
||||
MESA_handle_runtime_log(g_kni_comminfo.logger, RLOG_LV_FATAL,"tcprepair_set_state","bind() error,errno:%d,%s",errno,strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -1020,7 +1110,7 @@ int tcprepair_set_state(int sk,struct kni_tcp_state* tcp)
|
||||
|
||||
if (connect(sk, (struct sockaddr *) &addr, sizeof(addr)))
|
||||
{
|
||||
MESA_handle_runtime_log(g_kni_comminfo.logger, RLOG_LV_FATAL,"tcprepair_set_state","connect() error,errno:%d",errno);
|
||||
MESA_handle_runtime_log(g_kni_comminfo.logger, RLOG_LV_FATAL,"tcprepair_set_state","connect() error,errno:%d,%s",errno,strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -1048,14 +1138,14 @@ int tcprepair_set_state(int sk,struct kni_tcp_state* tcp)
|
||||
|
||||
if (setsockopt(sk, SOL_TCP, TCP_REPAIR_OPTIONS,opts, onr * sizeof(struct tcp_repair_opt)) < 0)
|
||||
{
|
||||
MESA_handle_runtime_log(g_kni_comminfo.logger, RLOG_LV_FATAL,"tcprepair_set_state","setsockopt() TCP_REPAIR_OPTIONS error,errno:%d",errno);
|
||||
MESA_handle_runtime_log(g_kni_comminfo.logger, RLOG_LV_FATAL,"tcprepair_set_state","setsockopt() TCP_REPAIR_OPTIONS error,errno:%d,%s",errno,strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
|
||||
val = 0;
|
||||
if (setsockopt(sk, SOL_TCP, TCP_REPAIR, &val, sizeof(val)))
|
||||
{
|
||||
MESA_handle_runtime_log(g_kni_comminfo.logger, RLOG_LV_FATAL,"tcprepair_set_state","setsockopt() TCP_REPAIR close error,errno:%d",errno);
|
||||
MESA_handle_runtime_log(g_kni_comminfo.logger, RLOG_LV_FATAL,"tcprepair_set_state","setsockopt() TCP_REPAIR close error,errno:%d,%s",errno,strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -1465,7 +1555,8 @@ int kni_htable_add(const struct streaminfo* pstream,const struct ip* ip_hdr,stru
|
||||
}
|
||||
else
|
||||
{
|
||||
datainfo->route_dir=MESA_dir_reverse(pstream->routedir);
|
||||
// datainfo->route_dir=MESA_dir_reverse(pstream->routedir);
|
||||
datainfo->route_dir=1-pstream->routedir;
|
||||
memcpy(datainfo->smac,mac_addr->dst_mac,MAC_ADDR_LEN);
|
||||
memcpy(datainfo->dmac,mac_addr->src_mac,MAC_ADDR_LEN);
|
||||
}
|
||||
@@ -2012,6 +2103,77 @@ int init_kni_stat_htable()
|
||||
}
|
||||
|
||||
|
||||
int kni_read_cardname()
|
||||
{
|
||||
int offset=0;
|
||||
char* token=NULL;
|
||||
char buf[KNI_CONF_MAXLEN]={0};
|
||||
|
||||
int routdir=0;
|
||||
|
||||
FILE* fp=fopen("./conf/send_raw_pkt.conf","r");
|
||||
if(fp==NULL)
|
||||
{
|
||||
|
||||
MESA_handle_runtime_log(g_kni_comminfo.logger, RLOG_LV_FATAL,"kni_read_cardname","fopen ./conf/send_raw_pkt.conf err,errno:%d,%s",errno,strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
|
||||
while(feof(fp)==0)
|
||||
{
|
||||
routdir=0;
|
||||
memset(buf,0,KNI_CONF_MAXLEN);
|
||||
|
||||
if((fgets(buf,KNI_CONF_MAXLEN,fp)==NULL))
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
if(buf[0]=='#')
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
token=strtok(buf,"\t, ");
|
||||
offset=1;
|
||||
|
||||
while(token!=NULL)
|
||||
{
|
||||
switch(offset)
|
||||
{
|
||||
case KNI_OFFSET_ROUTDIR:
|
||||
routdir=atoi(token);
|
||||
if((routdir!=0)&&(routdir!=1))
|
||||
{
|
||||
MESA_handle_runtime_log(g_kni_comminfo.logger, RLOG_LV_FATAL,"kni_read_cardname","routdir :%d error",routdir);
|
||||
return -1;
|
||||
}
|
||||
break;
|
||||
|
||||
case KNI_OFFSET_CARDNAME:
|
||||
memcpy(g_kni_cardname[routdir],token,strlen(token));
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
token=strtok(NULL,"\t, ");
|
||||
offset++;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
fclose(fp);
|
||||
fp=NULL;
|
||||
|
||||
|
||||
MESA_handle_runtime_log(g_kni_comminfo.logger, RLOG_LV_FATAL,"kni_read_cardname","card name:%s,%s",g_kni_cardname[0],g_kni_cardname[1]);
|
||||
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
|
||||
extern "C" char kni_init()
|
||||
@@ -2154,6 +2316,7 @@ extern "C" char kni_init()
|
||||
|
||||
|
||||
//test init raw_socket
|
||||
kni_read_cardname();
|
||||
g_kni_comminfo.ipv4_fd=(int*)malloc(g_kni_comminfo.thread_num*sizeof(int));
|
||||
for(i=0;i<g_kni_comminfo.thread_num;i++)
|
||||
{
|
||||
|
||||
8
kni.h
8
kni.h
@@ -60,11 +60,14 @@
|
||||
#define KNI_ACTION_EXIT "exit..."
|
||||
|
||||
//init profile info
|
||||
#define KNI_CONF_MAXLEN 256
|
||||
#define KNI_CONF_MAXLEN 1024
|
||||
#define KNI_CONF_FILENAME "./kniconf/kni.conf"
|
||||
#define KNI_CONF_MODE "Module"
|
||||
#define KNI_CONF_FILENAME_MAIN "./conf/main.conf"
|
||||
|
||||
#define KNI_OFFSET_ROUTDIR 1
|
||||
#define KNI_OFFSET_CARDNAME 3
|
||||
#define KNI_CARD_NUM 2
|
||||
|
||||
|
||||
|
||||
@@ -355,9 +358,10 @@ struct kni_tcp_state
|
||||
|
||||
struct args_read_tun
|
||||
{
|
||||
int thread_seq;
|
||||
int thread_seq; //in
|
||||
int iprevers; //in
|
||||
int iplen; //in
|
||||
int routdir; //out
|
||||
char* a_packet; //in
|
||||
unsigned char smac[KNI_MACADDR_LEN]; //out
|
||||
unsigned char dmac[KNI_MACADDR_LEN]; //ouit
|
||||
|
||||
Reference in New Issue
Block a user