summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJens Låås <jens@jelaas.eu>2017-04-27 15:39:00 +0200
committerSami Kerola <kerolasa@iki.fi>2018-10-22 20:53:52 +0100
commita169f10df2eb4c216753e80709ddb5d3a95dee34 (patch)
treef1103a779d53b98e0aec023ca7d26e8a03374866
parentb0cf4ff088d7439e5f70d5dd72b0d4063e0485f8 (diff)
downloadiputils-a169f10df2eb4c216753e80709ddb5d3a95dee34.tar.gz
arping: honor setting source to 0.0.0.0
Useful for using arping without having a local IP-address. Reviewed-by: Sami Kerola <kerolasa@iki.fi> Reference: https://github.com/iputils/iputils/pull/84
-rw-r--r--arping.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/arping.c b/arping.c
index 30bf6b1..3998d97 100644
--- a/arping.c
+++ b/arping.c
@@ -1102,10 +1102,10 @@ main(int argc, char **argv)
exit(2);
}
- if (!dad && unsolicited && gsrc.s_addr == 0)
+ if (!dad && unsolicited && source == NULL)
gsrc = gdst;
- if (!dad || gsrc.s_addr) {
+ if (!dad || source) {
struct sockaddr_in saddr;
int probe_fd = socket(AF_INET, SOCK_DGRAM, 0);
@@ -1123,7 +1123,7 @@ main(int argc, char **argv)
}
memset(&saddr, 0, sizeof(saddr));
saddr.sin_family = AF_INET;
- if (gsrc.s_addr) {
+ if (source || gsrc.s_addr) {
saddr.sin_addr = gsrc;
if (bind(probe_fd, (struct sockaddr*)&saddr, sizeof(saddr)) == -1) {
perror("bind");
@@ -1182,7 +1182,7 @@ main(int argc, char **argv)
printf("from %s %s\n", inet_ntoa(gsrc), device.name ? device.name : "");
}
- if (!gsrc.s_addr && !dad) {
+ if (!source && !gsrc.s_addr && !dad) {
fprintf(stderr, "arping: no source address in not-DAD mode\n");
exit(2);
}