summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWilliam Tu <u9012063@gmail.com>2020-04-27 08:42:29 -0700
committerIlya Maximets <i.maximets@ovn.org>2021-01-26 20:57:14 +0100
commitb3a59a24a1db48dd6fe951443028577fa66890ae (patch)
treefb9886459f23a8714303f5bce672453da377cca9
parentd4f84875e301e5dbe1ccaf4bbccfc233037445a8 (diff)
downloadopenvswitch-b3a59a24a1db48dd6fe951443028577fa66890ae.tar.gz
conntrack: Fix icmp conntrack state.
ICMP conntrack state should be ICMPS_REPLY after seeing both side of ICMP traffic. Signed-off-by: William Tu <u9012063@gmail.com> Acked-by: Yi-Hung Wei <yihung.wei@gmail.com>
-rw-r--r--lib/conntrack-icmp.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/lib/conntrack-icmp.c b/lib/conntrack-icmp.c
index 63246f012..6cbf9656d 100644
--- a/lib/conntrack-icmp.c
+++ b/lib/conntrack-icmp.c
@@ -50,9 +50,12 @@ icmp_conn_update(struct conntrack *ct, struct conn *conn_,
struct dp_packet *pkt OVS_UNUSED, bool reply, long long now)
{
struct conn_icmp *conn = conn_icmp_cast(conn_);
- conn->state = reply ? ICMPS_REPLY : ICMPS_FIRST;
- conn_update_expiration(ct, &conn->up, icmp_timeouts[conn->state], now);
+ if (reply && conn->state == ICMPS_FIRST) {
+ conn->state = ICMPS_REPLY;
+ }
+
+ conn_update_expiration(ct, &conn->up, icmp_timeouts[conn->state], now);
return CT_UPDATE_VALID;
}