conn_flags definition in ip_vs.h is in contradiction with that in conn.h. It will cause the usr.conn_flags was overwrited by conn->flags.
see follow:
for example,
DPVS_CONN_F_IN_TIMER = 0x0200,
define IP_VS_CONN_F_OUT_SEQ 0x0200 / must do output seq adjust /
DPVS_CONN_F_NOFASTXMIT = 0x2000,
define IP_VS_CONN_F_ONE_PACKET 0x2000 / forward only one packet /
conn_flags definition in ip_vs.h is in contradiction with that in conn.h. It will cause the usr.conn_flags was overwrited by conn->flags. see follow: for example, DPVS_CONN_F_IN_TIMER = 0x0200,
define IP_VS_CONN_F_OUT_SEQ 0x0200 / must do output seq adjust /
DPVS_CONN_F_NOFASTXMIT = 0x2000,
define IP_VS_CONN_F_ONE_PACKET 0x2000 / forward only one packet /
======================================= ip_vs.h /*
define IP_VS_CONN_F_FWD_MASK 0x0007 / mask for the fwd methods /
define IP_VS_CONN_F_MASQ 0x0000 / masquerading/NAT /
define IP_VS_CONN_F_LOCALNODE 0x0001 / local node /
define IP_VS_CONN_F_TUNNEL 0x0002 / tunneling /
define IP_VS_CONN_F_DROUTE 0x0003 / direct routing /
define IP_VS_CONN_F_BYPASS 0x0004 / cache bypass /
define IP_VS_CONN_F_FULLNAT 0x0005 / full nat mode /
define IP_VS_CONN_F_SNAT 0x0006 / SNAT mode /
define IP_VS_CONN_F_SYNC 0x0020 / entry created by sync /
define IP_VS_CONN_F_HASHED 0x0040 / hashed entry /
define IP_VS_CONN_F_NOOUTPUT 0x0080 / no output packets /
define IP_VS_CONN_F_INACTIVE 0x0100 / not established /
define IP_VS_CONN_F_OUT_SEQ 0x0200 / must do output seq adjust /
define IP_VS_CONN_F_IN_SEQ 0x0400 / must do input seq adjust /
define IP_VS_CONN_F_SEQ_MASK 0x0600 / in/out sequence mask /
define IP_VS_CONN_F_NO_CPORT 0x0800 / no client port set yet /
define IP_VS_CONN_F_TEMPLATE 0x1000 / template, not connection /
define IP_VS_CONN_F_ONE_PACKET 0x2000 / forward only one packet /
conn.h enum { DPVS_CONN_F_HASHED = 0x0040, DPVS_CONN_F_REDIRECT_HASHED = 0x0080, DPVS_CONN_F_INACTIVE = 0x0100, DPVS_CONN_F_IN_TIMER = 0x0200, DPVS_CONN_F_SYNPROXY = 0x8000, DPVS_CONN_F_TEMPLATE = 0x1000, DPVS_CONN_F_NOFASTXMIT = 0x2000, };
usr conn_flags set case 'i': set_option(options, OPT_FORWARD); ce->dest.user.conn_flags = IP_VS_CONN_F_TUNNEL; break; case 'g': set_option(options, OPT_FORWARD); ce->dest.user.conn_flags = IP_VS_CONN_F_DROUTE; break; case 'b': set_option(options, OPT_FORWARD); ce->dest.user.conn_flags = IP_VS_CONN_F_FULLNAT; break; case 'J': set_option(options, OPT_FORWARD); ce->dest.user.conn_flags = IP_VS_CONN_F_SNAT; break; case 'm': set_option(options, OPT_FORWARD); ce->dest.user.conn_flags = IP_VS_CONN_F_MASQ;
copy to conn->flags static int dp_vs_conn_bind_dest(struct dp_vs_conn conn, struct dp_vs_dest dest) { /* ATTENTION: