20180620:对应issues1,KNI与TFE的unix domain socket由SOCK_STREAM改为SOCK_DGRAM

This commit is contained in:
liuyang
2018-06-20 10:45:58 +08:00
parent 01b5b4a9f6
commit 4c6d0af1dd

42
kni.c
View File

@@ -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;