20180730:

TCP_REPAIR_OPT中mss取syn,syn/ack中最小值,而非单纯src_mss
This commit is contained in:
liuyang
2018-07-30 13:31:03 +08:00
parent 65db937450
commit 8f679f7973
2 changed files with 14 additions and 8 deletions

19
kni.c
View File

@@ -41,7 +41,7 @@ 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","WRITE_PKTS","READ_PKTS","SEND_PKTS","BMD_IP","BMD_DOMAIN","HTTP_PKTS","SSL_PKTS"};
const char *g_kni_fs2_name[FS2_COLUMN_NUM] ={"RECV_PKTS","WRITE_PKTS","READ_PKTS","SEND_PKTS","BMD_IP","BMD_DOMAIN","HTTP_PKTS","SSL_PKTS","DROP_PKTS"};
extern int g_iThreadNum;
@@ -92,14 +92,14 @@ int kni_set_filestate2(int thread_seq,int colum_index,int bytes,int pktnum)
int kni_filestate2_init()
{
int i=0;
int j=0;
// int j=0;
int value=1;
unsigned int fs2_sport;
char fs2_filename[KNI_MAX_BUFLEN]={0};
char fs2_sip[KNI_MAX_BUFLEN]={0};
MESA_load_profile_string_def((char*)KNI_CONF_FILENAME,(char*)KNI_CONF_MODE,(char*)"filestat2_filename",fs2_filename,KNI_MAX_BUFLEN,(char*)"./log/kni_fs2.log");
MESA_load_profile_string_def((char*)KNI_CONF_FILENAME,(char*)KNI_CONF_MODE,(char*)"filestat2_sip",fs2_sip,KNI_MAX_BUFLEN,(char*)"10.127.208.15");
MESA_load_profile_string_def((char*)KNI_CONF_FILENAME,(char*)KNI_CONF_MODE,(char*)"filestat2_sip",fs2_sip,KNI_MAX_BUFLEN,(char*)"192.168.11.241");
MESA_load_profile_uint_def((char*)KNI_CONF_FILENAME,(char*)KNI_CONF_MODE,(char*)"filestat2_sport",(unsigned int*)&fs2_sport,8125);
g_kni_fs2_info.handler=FS_create_handle();
@@ -253,6 +253,7 @@ static int kni_send_fds(int socket, int *fds, int n,int protocol)
struct cmsghdr *cmsg;
char buf[CMSG_SPACE(n * sizeof(int))], dup[256]={0};
memset(buf, 0, sizeof(buf));
// struct iovec io = { .iov_base = &dup, .iov_len = sizeof(struct kni_tlv_info) };
struct iovec io = { .iov_base = &dup, .iov_len = sizeof(dup) };
@@ -412,7 +413,7 @@ return:
*********************************************************************************************************************/
char tun_write_data(int fd,char* send_buf,int send_buflen,struct streaminfo* pstream,int thread_seq)
{
kni_set_filestate2(thread_seq,FS2_COLUME_WRITE,0,1);
char ret=APP_STATE_DROPPKT|APP_STATE_GIVEME;
int succ_sendlen=0;
@@ -420,6 +421,7 @@ char tun_write_data(int fd,char* send_buf,int send_buflen,struct streaminfo* pst
succ_sendlen = write(fd, send_buf,send_buflen);
if((succ_sendlen<0)&&(pstream!=NULL))
{
kni_set_filestate2(thread_seq,FS2_COLUME_DROPPKT,0,1);
MESA_kill_tcp(pstream,(const void*)send_buf);
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;
@@ -429,6 +431,7 @@ char tun_write_data(int fd,char* send_buf,int send_buflen,struct streaminfo* pst
MESA_handle_runtime_log(g_kni_comminfo.logger, RLOG_LV_FATAL,KNI_MODULE_WRITETUN,"succ_sendlen is %d,send_buflen is %d",succ_sendlen,send_buflen);
}
kni_set_filestate2(thread_seq,FS2_COLUME_WRITE,0,1);
kni_debug_info_v4((char*)KNI_MODULE_WRITETUN,KNI_FLAG_SSL,(struct ip*)send_buf);
return ret;
@@ -1098,7 +1101,7 @@ int tcprepair_set_state(int sk,struct kni_tcp_state* tcp)
onr++;
opts[onr].opt_code = TCPOPT_MAXSEG;
opts[onr].opt_val = tcp->mss_src;
opts[onr].opt_val = (tcp->mss_src<tcp->mss_dst)?tcp->mss_src:tcp->mss_dst;
onr++;
if((tcp->sack_src)&&(tcp->sack_dst))
@@ -1831,11 +1834,13 @@ extern "C" char kni_tcpall_entry(const struct streaminfo* pstream,void** pme,int
kni_free_pmeinfo(pme);
*pme=NULL;
}
/*
/*
if(ret&APP_STATE_DROPPKT)
{
kni_set_filestate2(thread_seq,FS2_COLUME_DROP,0,1);
kni_set_filestate2(thread_seq,FS2_COLUME_DROPPKT,0,1);
}
else
{
kni_set_filestate2(thread_seq,FS2_COLUME_FWD,0,1);

3
kni.h
View File

@@ -150,7 +150,7 @@
#define KNI_DEFAULT_MODE_BYPASS 1
//filestate2
#define FS2_COLUMN_NUM 8
#define FS2_COLUMN_NUM 9
#define FS2_APPNAME "KNI"
@@ -164,6 +164,7 @@ enum kni_FS_COLUME
FS2_COLUME_WITELIST_DOMAIN,
FS2_COLUME_HTTP,
FS2_COLUME_SSL,
FS2_COLUME_DROPPKT,
};