vcl: align the RST behaviour with kernel 64/37164/3
authorYacan Liu <liuyacan@corp.netease.com>
Tue, 20 Sep 2022 06:19:19 +0000 (14:19 +0800)
committerFlorin Coras <florin.coras@gmail.com>
Tue, 20 Sep 2022 16:56:40 +0000 (16:56 +0000)
commitf5e0a17c9cca09822296a0ed3196fde36c1ca5f8
treeb71e6578c70a82cb5af4e0d9e8f6e76c30d7ff95
parentc872cec3f0b31f7baf36dd50d75c285f0d0f4bec
vcl: align the RST behaviour with kernel

When ESTABLISHED TCP connection is terminated by an RST packet,
EPOLLHUP + EPOLLRDHUP would be updeliever by VCL. If not using
VPP, app would receive EPOLLHUP + EPOLLERR + EPOLLIN(if requested) +
EPOLLRDHUP(if requested).

libevent will interpret the two cases as different EV combinations.

Below is the code snippet for libevent v2.12:

  if (what & EPOLLERR) {
    ev = EV_READ | EV_WRITE;
  } else if ((what & EPOLLHUP) && !(what & EPOLLRDHUP)) {
    ev = EV_READ | EV_WRITE;
  } else {
    if (what & EPOLLIN)
      ev |= EV_READ;
    if (what & EPOLLOUT)
      ev |= EV_WRITE;
    if (what & EPOLLRDHUP)
      ev |= EV_CLOSED;
 }

Type: fix
Signed-off-by: Yacan Liu <liuyacan@corp.netease.com>
Change-Id: Ice3d2861183b6ea499f66b727bbe175eeae5cb05
src/vcl/vppcom.c