From dd581730e54b934f80d5b6a820136707dc71c664 Mon Sep 17 00:00:00 2001 From: Stefano Brivio Date: Sun, 26 Sep 2021 23:38:22 +0200 Subject: tap: Completely de-serialise input message batches Until now, messages would be passed to protocol handlers in a single batch only if they happened to be dequeued in a row. Packets interleaved between different connections would result in multiple calls to the same protocol handler for a single connection. Instead, keep track of incoming packet descriptors, arrange them in sequences, and call protocol handlers only as we completely sorted input messages in batches. Signed-off-by: Stefano Brivio --- udp.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'udp.h') diff --git a/udp.h b/udp.h index bdafcaf..c20f936 100644 --- a/udp.h +++ b/udp.h @@ -6,8 +6,8 @@ void udp_sock_handler(struct ctx *c, union epoll_ref ref, uint32_t events, struct timespec *now); int udp_tap_handler(struct ctx *c, int af, void *addr, - struct tap_msg *msg, int count, struct timespec *now); -int udp_sock_init(struct ctx *c); + struct tap_l4_msg *msg, int count, struct timespec *now); +int udp_sock_init(struct ctx *c, struct timespec *now); void udp_timer(struct ctx *c, struct timespec *ts); void udp_update_l2_buf(unsigned char *eth_d, unsigned char *eth_s, uint32_t *ip_da); -- cgit v1.2.3