aboutgitcodebugslistschat
path: root/passt.c
diff options
context:
space:
mode:
authorDavid Gibson <david@gibson.dropbear.id.au>2023-08-11 15:12:24 +1000
committerStefano Brivio <sbrivio@redhat.com>2023-08-13 17:30:07 +0200
commit05f606ab0b85fdca083e1dfe71331353c4efe02e (patch)
treec06872fba9b364532642d5b15d6acd58e07532f7 /passt.c
parentd850caab66190678d15b968052116e2570e9ffe1 (diff)
downloadpasst-05f606ab0b85fdca083e1dfe71331353c4efe02e.tar
passt-05f606ab0b85fdca083e1dfe71331353c4efe02e.tar.gz
passt-05f606ab0b85fdca083e1dfe71331353c4efe02e.tar.bz2
passt-05f606ab0b85fdca083e1dfe71331353c4efe02e.tar.lz
passt-05f606ab0b85fdca083e1dfe71331353c4efe02e.tar.xz
passt-05f606ab0b85fdca083e1dfe71331353c4efe02e.tar.zst
passt-05f606ab0b85fdca083e1dfe71331353c4efe02e.zip
epoll: Split handling of ICMP and ICMPv6 sockets
We have different epoll type values for ICMP and ICMPv6 sockets, but they both call the same handler function, icmp_sock_handler(). However that function does essentially nothing in common for the two cases. So, split it into icmp_sock_handler() and icmpv6_sock_handler() and dispatch them separately from the top level. While we're there remove some parameters that the function was never using anyway. Also move the test for c->no_icmp into the functions, so that all the logic specific to ICMP is within the handler, rather than in the top level dispatch code. Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
Diffstat (limited to 'passt.c')
-rw-r--r--passt.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/passt.c b/passt.c
index 5ec829c..aa9ba8a 100644
--- a/passt.c
+++ b/passt.c
@@ -329,9 +329,10 @@ loop:
udp_sock_handler(&c, ref, eventmask, &now);
break;
case EPOLL_TYPE_ICMP:
+ icmp_sock_handler(&c, ref);
+ break;
case EPOLL_TYPE_ICMPV6:
- if (!c.no_icmp)
- icmp_sock_handler(&c, ref, eventmask, &now);
+ icmpv6_sock_handler(&c, ref);
break;
default:
/* Can't happen */