20180620:对应issues1,KNI与TFE的unix domain socket由SOCK_STREAM改为SOCK_DGRAM
This commit is contained in:
42
kni.c
42
kni.c
@@ -27,6 +27,7 @@
|
||||
#include "Maat_rule.h"
|
||||
#include "kni.h"
|
||||
|
||||
int g_kni_version_VERSION_20180620;
|
||||
|
||||
struct kni_var_comm g_kni_comminfo;
|
||||
struct kni_var_struct g_kni_structinfo;
|
||||
@@ -372,11 +373,11 @@ int kni_sendpkt_eth(int thread_seq,int iplen,char* ip,struct stream_tuple4_v4* i
|
||||
int buflen=iplen+KNITEST_ETH_LEN;
|
||||
|
||||
unsigned char buf[2000]={0};
|
||||
char* card_in="p7p1";
|
||||
char* card_out="em2";
|
||||
char* card_in=(char*)"p7p1";
|
||||
char* card_out=(char*)"em2";
|
||||
unsigned short eth_type=0x0800;
|
||||
|
||||
struct ip* iphdr=(struct ip*)ip;
|
||||
// struct ip* iphdr=(struct ip*)ip;
|
||||
uchar* tmp_smac;
|
||||
uchar* tmp_dmac;
|
||||
|
||||
@@ -472,9 +473,9 @@ long kni_readtun_htable_cb_v4(void* data,const unsigned char* key,unsigned int s
|
||||
|
||||
int kni_process_readdata(int thread_seq,int buflen,char* buf)
|
||||
{
|
||||
int ret=0;
|
||||
// int ret=0;
|
||||
int iprever_flag=0;
|
||||
unsigned char routdir=0;
|
||||
// unsigned char routdir=0;
|
||||
long result=0;
|
||||
|
||||
struct datainfo_to_tun datainfo;
|
||||
@@ -492,10 +493,10 @@ int kni_process_readdata(int thread_seq,int buflen,char* buf)
|
||||
{
|
||||
if(iprever_flag==1)
|
||||
{
|
||||
routdir=MESA_dir_reverse(datainfo.route_dir);
|
||||
// routdir=MESA_dir_reverse(datainfo.route_dir);
|
||||
}
|
||||
|
||||
ret=kni_sendpkt_eth(thread_seq,buflen,buf,&ipv4_addr,iprever_flag,datainfo.smac,datainfo.dmac);
|
||||
kni_sendpkt_eth(thread_seq,buflen,buf,&ipv4_addr,iprever_flag,datainfo.smac,datainfo.dmac);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -662,15 +663,13 @@ return:
|
||||
*********************************************************************************************************************/
|
||||
int kni_process_fs(void* a_packet,unsigned int mss)
|
||||
{
|
||||
int ret=0;
|
||||
int val = 1;
|
||||
// int ret=0;
|
||||
// int val = 1;
|
||||
int fds[2]={0};
|
||||
int client_fd=0;
|
||||
int server_fd=0;
|
||||
|
||||
client_fd=socket(AF_INET, SOCK_FORGE, 0);
|
||||
server_fd=socket(AF_INET, SOCK_FORGE, 0);
|
||||
if (client_fd < 0 || server_fd< 0)
|
||||
fds[KNI_FDS_INDEX_CLIENT]=socket(AF_INET, SOCK_FORGE, 0);
|
||||
fds[KNI_FDS_INDEX_SERVER]=socket(AF_INET, SOCK_FORGE, 0);
|
||||
if (fds[KNI_FDS_INDEX_CLIENT] < 0 || fds[KNI_FDS_INDEX_SERVER]< 0)
|
||||
{
|
||||
perror("SOCK_FORGE socket");
|
||||
fprintf(stderr, "(Did you insmod forge_socket.ko?)\n");
|
||||
@@ -683,19 +682,17 @@ int kni_process_fs(void* a_packet,unsigned int mss)
|
||||
fs_get_modify_state(fake_client,fake_server,a_packet,mss);
|
||||
|
||||
|
||||
fs_set_state(client_fd,fake_server);
|
||||
fs_set_state(server_fd,fake_client);
|
||||
fs_set_state(fds[KNI_FDS_INDEX_CLIENT],fake_server);
|
||||
fs_set_state(fds[KNI_FDS_INDEX_SERVER],fake_client);
|
||||
|
||||
fds[KNI_FDS_INDEX_CLIENT]=client_fd;
|
||||
fds[KNI_FDS_INDEX_SERVER]=server_fd;
|
||||
|
||||
|
||||
kni_send_fds(g_kni_comminfo.fd_domain,fds,2);
|
||||
|
||||
|
||||
kni_debug_info_v4((char*)KNI_MODULE_SENDFD,STAT_FLAG_SSL_NOBMD,(struct ip*)a_packet);
|
||||
// close(client_socket);
|
||||
// close(server_socket);
|
||||
close(fds[KNI_FDS_INDEX_CLIENT]);
|
||||
close(fds[KNI_FDS_INDEX_SERVER]);
|
||||
|
||||
return 0;
|
||||
|
||||
@@ -939,7 +936,7 @@ unsigned short kni_get_mss(struct kni_tcp_hdr* tcphdr,int tcp_hdr_len)
|
||||
|
||||
long kni_state_htable_cb_v4(void* data,const unsigned char* key,unsigned int size,void* user_arg)
|
||||
{
|
||||
unsigned short mss=KNI_DEFAULT_MSS;
|
||||
// unsigned short mss=KNI_DEFAULT_MSS;
|
||||
long state_flag=STAT_FLAG_NONE;
|
||||
|
||||
int sni_len=0;
|
||||
@@ -1177,7 +1174,8 @@ int init_domain_fd()
|
||||
char serverpath[32] = "/home/server_unixsocket_file";
|
||||
int i_addr_len = sizeof( struct sockaddr_un );
|
||||
|
||||
if ( ( i_fd = socket( AF_UNIX, SOCK_STREAM, 0 ) ) < 0 )
|
||||
// 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);
|
||||
return -1;
|
||||
|
||||
Reference in New Issue
Block a user