20180711:
更正TCP_REPAIR_OPTIONS时sack内容,type区分TCPOPT_SACK_PERMITTED和TCPOPT_SACK,val必须为0;
This commit is contained in:
22
kni.c
22
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))
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user