Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-15-SP4:Update
iputils.34137
0002-arping-Fix-unsolicited-ARP-regressions-on-...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0002-arping-Fix-unsolicited-ARP-regressions-on-c-1.patch of Package iputils.34137
From 5de892d15eea467775420c4fd641df229f024259 Mon Sep 17 00:00:00 2001 From: Petr Vorel <pvorel@suse.cz> Date: Fri, 24 May 2024 00:05:53 +0200 Subject: [PATCH 2/2] arping: Fix unsolicited ARP regressions on -c > 1 4db1de6 tried to fix a regression 1 sec delay due poll() for unsolicited ARP, .i.e. -A and -U (introduced in 67e070d, reported as issue #536). But skipping the while loop entirely introduced another regression for -A and -U, which behave like -c1 (sending *always* only a single packet). Fixing it by checking in while loop and comparing also count (as it was done in 67e070d before the rewrite). NOTE: use exit_loop with continue instead of simple break to keep things consistent. Fixes: 4db1de6 ("arping: Fix 1s delay on exit for unsolicited arpings") Fixes: 67e070d ("arping: use signalfd() and timerfd() rather than signals") Fixes: https://github.com/iputils/iputils/issues/536 Closes: https://github.com/iputils/iputils/pull/543 Fixes: bsc#1224877 Reported-by: David Bond <dbond@suse.com> Reviewed-by: Andrea Cervesato <andrea.cervesato@suse.com> Reviewed-by: Cyril Hrubis <chrubis@suse.cz> Signed-off-by: Petr Vorel <pvorel@suse.cz> [ upstream commit 5de892d15eea467775420c4fd641df229f024259, fix of regression in 0001-arping-Fix-1s-delay-on-exit-for-unsolicited-arpings.patch ] --- arping.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/arping.c b/arping.c index 7ad927e..340ba0c 100644 --- a/arping.c +++ b/arping.c @@ -775,10 +775,15 @@ static int event_loop(struct run_state *ctl) pfds[POLLFD_SOCKET].events = POLLIN | POLLERR | POLLHUP; send_pack(ctl); - while (!(exit_loop || ctl->unsolicited)) { + while (!exit_loop) { int ret; size_t i; + if ((ctl->sent == ctl->count) && ctl->unsolicited) { + exit_loop = 1; + continue; + } + ret = poll(pfds, POLLFD_COUNT, -1); if (ret <= 0) { if (errno == EAGAIN) @@ -839,6 +844,7 @@ static int event_loop(struct run_state *ctl) } } } + close(sfd); close(tfd); freeifaddrs(ctl->ifa0); -- 2.45.1
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor