Message ID | 20181031005015.5433-1-zhangckid@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [V2] net/filter-rewriter.c: Fix coverity static analysis issue | expand |
On 2018/10/31 上午8:50, Zhang Chen wrote: > The original code just follow the TCP state diagram, > but in this case, we can skip the TCPS_TIME_WAIT state to simplify > the implementation. > > Signed-off-by: Zhang Chen <zhangckid@gmail.com> > --- > net/filter-rewriter.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/net/filter-rewriter.c b/net/filter-rewriter.c > index bb8f4d93b1..2e26839bc2 100644 > --- a/net/filter-rewriter.c > +++ b/net/filter-rewriter.c > @@ -155,12 +155,13 @@ static int handle_primary_tcp_pkt(RewriterState *rf, > * Active close step 2. > */ > if (conn->tcp_state == TCPS_FIN_WAIT_1) { > - conn->tcp_state = TCPS_TIME_WAIT; > /* > * For simplify implementation, we needn't wait 2MSL time > * in filter rewriter. Because guest kernel will track the > * TCP status and wait 2MSL time, if client resend the FIN > * packet, guest will apply the last ACK too. > + * So, we skip the TCPS_TIME_WAIT state here and go straight > + * to TCPS_CLOSED state. > */ > conn->tcp_state = TCPS_CLOSED; > g_hash_table_remove(rf->connection_track_table, key); Applied. Thanks
On 2 November 2018 at 02:21, Jason Wang <jasowang@redhat.com> wrote: > > On 2018/10/31 上午8:50, Zhang Chen wrote: >> >> The original code just follow the TCP state diagram, >> but in this case, we can skip the TCPS_TIME_WAIT state to simplify >> the implementation. >> >> Signed-off-by: Zhang Chen <zhangckid@gmail.com> >> --- >> net/filter-rewriter.c | 3 ++- >> 1 file changed, 2 insertions(+), 1 deletion(-) >> >> diff --git a/net/filter-rewriter.c b/net/filter-rewriter.c >> index bb8f4d93b1..2e26839bc2 100644 >> --- a/net/filter-rewriter.c >> +++ b/net/filter-rewriter.c >> @@ -155,12 +155,13 @@ static int handle_primary_tcp_pkt(RewriterState *rf, >> * Active close step 2. >> */ >> if (conn->tcp_state == TCPS_FIN_WAIT_1) { >> - conn->tcp_state = TCPS_TIME_WAIT; >> /* >> * For simplify implementation, we needn't wait 2MSL time >> * in filter rewriter. Because guest kernel will track the >> * TCP status and wait 2MSL time, if client resend the FIN >> * packet, guest will apply the last ACK too. >> + * So, we skip the TCPS_TIME_WAIT state here and go straight >> + * to TCPS_CLOSED state. >> */ >> conn->tcp_state = TCPS_CLOSED; >> g_hash_table_remove(rf->connection_track_table, key); > > > > Applied. Ping -- this doesn't seem to have made it into master? thanks -- PMM
On 2018/11/15 下午6:32, Peter Maydell wrote: > On 2 November 2018 at 02:21, Jason Wang <jasowang@redhat.com> wrote: >> On 2018/10/31 上午8:50, Zhang Chen wrote: >>> The original code just follow the TCP state diagram, >>> but in this case, we can skip the TCPS_TIME_WAIT state to simplify >>> the implementation. >>> >>> Signed-off-by: Zhang Chen <zhangckid@gmail.com> >>> --- >>> net/filter-rewriter.c | 3 ++- >>> 1 file changed, 2 insertions(+), 1 deletion(-) >>> >>> diff --git a/net/filter-rewriter.c b/net/filter-rewriter.c >>> index bb8f4d93b1..2e26839bc2 100644 >>> --- a/net/filter-rewriter.c >>> +++ b/net/filter-rewriter.c >>> @@ -155,12 +155,13 @@ static int handle_primary_tcp_pkt(RewriterState *rf, >>> * Active close step 2. >>> */ >>> if (conn->tcp_state == TCPS_FIN_WAIT_1) { >>> - conn->tcp_state = TCPS_TIME_WAIT; >>> /* >>> * For simplify implementation, we needn't wait 2MSL time >>> * in filter rewriter. Because guest kernel will track the >>> * TCP status and wait 2MSL time, if client resend the FIN >>> * packet, guest will apply the last ACK too. >>> + * So, we skip the TCPS_TIME_WAIT state here and go straight >>> + * to TCPS_CLOSED state. >>> */ >>> conn->tcp_state = TCPS_CLOSED; >>> g_hash_table_remove(rf->connection_track_table, key); >> >> >> Applied. > Ping -- this doesn't seem to have made it into master? > > thanks > -- PMM > Will send a pull request soon. Thanks
diff --git a/net/filter-rewriter.c b/net/filter-rewriter.c index bb8f4d93b1..2e26839bc2 100644 --- a/net/filter-rewriter.c +++ b/net/filter-rewriter.c @@ -155,12 +155,13 @@ static int handle_primary_tcp_pkt(RewriterState *rf, * Active close step 2. */ if (conn->tcp_state == TCPS_FIN_WAIT_1) { - conn->tcp_state = TCPS_TIME_WAIT; /* * For simplify implementation, we needn't wait 2MSL time * in filter rewriter. Because guest kernel will track the * TCP status and wait 2MSL time, if client resend the FIN * packet, guest will apply the last ACK too. + * So, we skip the TCPS_TIME_WAIT state here and go straight + * to TCPS_CLOSED state. */ conn->tcp_state = TCPS_CLOSED; g_hash_table_remove(rf->connection_track_table, key);
The original code just follow the TCP state diagram, but in this case, we can skip the TCPS_TIME_WAIT state to simplify the implementation. Signed-off-by: Zhang Chen <zhangckid@gmail.com> --- net/filter-rewriter.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)