Getting from an epoll event to the relevant handler function is currently several levels of functions and tests. This series simplifies this to be pretty close to a single switch on a value in the epoll ref dispatching directly to the appropriate handler. Doing this requires some preliminary cleaning up of the handling of errors or disconnects on the tap device. Changes since v2: * Removed a (pre-existing) redundant close() and EPOLL_CTL_DEL in one of the tap reset paths * Fixed incorrect parameter to trace() message Changes since v1: * Give listening TCP sockets their own reference type * Fold "tap reset" series into this one Changes since v2 of tap reset series: * More thorough cleanup of handling error events on the listening Unix socket. Changes since v1 of the tap reset series: * Two extra patches that further clean up the reset path David Gibson (13): tap: Clean up tap reset path tap: Clean up behaviour for errors on listening Unix socket tap: Fold reset handling into tap_handler_pasta() tap: Fold reset handling into tap_handler_passt() epoll: Generalize epoll_ref to cover things other than sockets epoll: Always use epoll_ref for the epoll data variable epoll: Fold sock_handler into general switch on epoll event fd epoll: Split handling of ICMP and ICMPv6 sockets epoll: Tiny cleanup to udp_sock_handler() epoll: Split handling of TCP timerfds into its own handler function epoll: Split handling of listening TCP sockets into their own handler epoll: Split listening Unix domain socket into its own type epoll: Use different epoll types for passt and pasta tap fds icmp.c | 118 ++++++++++++++++++++++++------------------- icmp.h | 9 ++-- passt.c | 90 +++++++++++++++++++-------------- passt.h | 56 ++++++++++++++++----- pasta.c | 8 ++- tap.c | 138 +++++++++++++++++++++++++-------------------------- tap.h | 7 ++- tcp.c | 84 +++++++++++++------------------ tcp.h | 28 +++++++---- tcp_conn.h | 4 +- tcp_splice.c | 8 +-- tcp_splice.h | 2 +- udp.c | 16 +++--- util.c | 27 +++++++--- 14 files changed, 334 insertions(+), 261 deletions(-) -- 2.41.0