From d203188977ccc1e4715e3d5e2cbca5b7ad646d7f Mon Sep 17 00:00:00 2001 From: liuyang Date: Wed, 11 Jul 2018 14:51:29 +0800 Subject: [PATCH] =?UTF-8?q?20180711=EF=BC=9A=20=E6=9B=B4=E6=AD=A3TCP=5FREP?= =?UTF-8?q?AIR=5FOPTIONS=E6=97=B6sack=E5=86=85=E5=AE=B9=EF=BC=8Ctype?= =?UTF-8?q?=E5=8C=BA=E5=88=86TCPOPT=5FSACK=5FPERMITTED=E5=92=8CTCPOPT=5FSA?= =?UTF-8?q?CK=EF=BC=8Cval=E5=BF=85=E9=A1=BB=E4=B8=BA0=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kni.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/kni.c b/kni.c index 2575c06..3ca49e0 100644 --- a/kni.c +++ b/kni.c @@ -1010,16 +1010,19 @@ int tcprepair_set_state(int sk,struct kni_tcp_state* tcp) opts[onr].opt_val = tcp->mss_src; onr++; - opts[onr].opt_code = TCPOPT_SACK; - opts[onr].opt_val = (tcp->sack_src)&&(tcp->sack_dst); - onr++; - + if((tcp->sack_src)&&(tcp->sack_dst)) + { + opts[onr].opt_code = TCPOPT_SACK_PERMITTED; + opts[onr].opt_val = 0; + onr++; + } +/* opts[onr].opt_code = TCPOPT_TIMESTAMP; opts[onr].opt_val = (tcp->timestamps_src)&&(tcp->timestamps_dst); onr++; +*/ - - MESA_handle_runtime_log(g_kni_comminfo.logger, RLOG_LV_FATAL,"tcprepair_set_state","wscale_src:%d,wscale_dst:%d,wscale:%x,mss:%d,sack:%d,timestamp:%d",tcp->wscale_src,tcp->wscale_dst,opts[0].opt_val,opts[1].opt_val,opts[2].opt_val,opts[3].opt_val); + MESA_handle_runtime_log(g_kni_comminfo.logger, RLOG_LV_FATAL,"tcprepair_set_state","wscale_src:%d,wscale_dst:%d,wscale:%x,mss:%d,sack:%d",tcp->wscale_src,tcp->wscale_dst,opts[0].opt_val,opts[1].opt_val,opts[2].opt_val); if (setsockopt(sk, SOL_TCP, TCP_REPAIR_OPTIONS,opts, onr * sizeof(struct tcp_repair_opt)) < 0) { @@ -1740,11 +1743,8 @@ char kni_close_opstate(const struct streaminfo* pstream,void** pme,int thread_se extern "C" char kni_tcpall_entry(const struct streaminfo* pstream,void** pme,int thread_seq,const void* ip_hdr) { -/* - struct ip* ipv4=(struct ip*)ip_hdr; - tun_write_data(g_kni_comminfo.fd_tun[thread_seq],(char*)ip_hdr,ntohs(ipv4->ip_len),(struct streaminfo*)pstream); - return APP_STATE_DROPPKT|APP_STATE_GIVEME; -*/ + +// return APP_STATE_FAWPKT|APP_STATE_GIVEME; char ret=APP_STATE_FAWPKT|APP_STATE_DROPME; if((g_kni_comminfo.kni_mode_cur==KNI_MODE_BYPASS)||(pstream->addr.addrtype==ADDR_TYPE_IPV6)) {