summaryrefslogtreecommitdiffstats
path: root/meta/recipes-extended/iputils/iputils/0004-arping-return-success-when-unsolicited-ARP-mode-dest.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-extended/iputils/iputils/0004-arping-return-success-when-unsolicited-ARP-mode-dest.patch')
-rw-r--r--meta/recipes-extended/iputils/iputils/0004-arping-return-success-when-unsolicited-ARP-mode-dest.patch45
1 files changed, 45 insertions, 0 deletions
diff --git a/meta/recipes-extended/iputils/iputils/0004-arping-return-success-when-unsolicited-ARP-mode-dest.patch b/meta/recipes-extended/iputils/iputils/0004-arping-return-success-when-unsolicited-ARP-mode-dest.patch
new file mode 100644
index 0000000000..923e06e30b
--- /dev/null
+++ b/meta/recipes-extended/iputils/iputils/0004-arping-return-success-when-unsolicited-ARP-mode-dest.patch
@@ -0,0 +1,45 @@
1From 68f12fc4a0dbef4ae4c404da24040d22c5a14339 Mon Sep 17 00:00:00 2001
2From: Sami Kerola <kerolasa@iki.fi>
3Date: Sat, 8 Feb 2020 14:12:18 +0000
4Subject: [PATCH] arping: return success when unsolicited ARP mode destination
5 does not answer
6
7Manual page is making promise answers are not expected when -U (or -A)
8option is in use. Either I am looking wrong or this has been broken since
9at the beginning of git history.
10
11Addresses: https://github.com/iputils/iputils/issues/247
12Signed-off-by: Sami Kerola <kerolasa@iki.fi>
13Upstream-Status: Backport [https://github.com/iputils/iputils/commit/68f12fc4a0dbef4ae4c404da24040d22c5a14339]
14Signed-off-by: Diego Santa Cruz <Diego.SantaCruz@spinetix.com>
15---
16 arping.c | 6 ++++--
17 1 file changed, 4 insertions(+), 2 deletions(-)
18
19diff --git a/arping.c b/arping.c
20index 996cf2b..5180ae0 100644
21--- a/arping.c
22+++ b/arping.c
23@@ -794,7 +794,9 @@ static int event_loop(struct run_state *ctl)
24 close(tfd);
25 freeifaddrs(ctl->ifa0);
26 rc |= finish(ctl);
27- if (ctl->dad && ctl->quit_on_reply)
28+ if (ctl->unsolicited)
29+ /* nothing */;
30+ else if (ctl->dad && ctl->quit_on_reply)
31 /* Duplicate address detection mode return value */
32 rc |= !(ctl->brd_sent != ctl->received);
33 else
34@@ -943,7 +945,7 @@ int main(int argc, char **argv)
35 }
36 memset(&saddr, 0, sizeof(saddr));
37 saddr.sin_family = AF_INET;
38- if (ctl.source || ctl.gsrc.s_addr) {
39+ if (!ctl.unsolicited && (ctl.source || ctl.gsrc.s_addr)) {
40 saddr.sin_addr = ctl.gsrc;
41 if (bind(probe_fd, (struct sockaddr *)&saddr, sizeof(saddr)) == -1)
42 error(2, errno, "bind");
43--
442.18.4
45