mirror of
https://git.FreeBSD.org/ports.git
synced 2024-11-20 00:21:35 +00:00
net/fping: Avoid ident collisions
fping derives the ident it puts in the outbound packet to from the low 16 bits of the process id. This means a busy nagios server can see collisions. More details on this issue and a patch to solve it here: https://github.com/schweikert/fping/issues/206 Apply the patch from the github issue: PR: 264402 Reported by: Case Larsen Approved by: jharris (maintainer)
This commit is contained in:
parent
6a8d8b737b
commit
65d71ce9bd
@ -2,7 +2,7 @@
|
||||
|
||||
PORTNAME= fping
|
||||
PORTVERSION= 5.0
|
||||
PORTREVISION= 1
|
||||
PORTREVISION= 2
|
||||
CATEGORIES= net
|
||||
MASTER_SITES= http://fping.org/dist/ \
|
||||
https://github.com/schweikert/${PORTNAME}/releases/download/v${PORTVERSION}/
|
||||
|
@ -14,3 +14,26 @@
|
||||
socket_set_src_addr_ipv6(socket6, &src_addr6, (socktype6 == SOCK_DGRAM) ? &ident6 : NULL);
|
||||
}
|
||||
#endif
|
||||
@@ -2299,6 +2299,22 @@ int wait_for_reply(int64_t wait_time)
|
||||
#endif
|
||||
else {
|
||||
return 1;
|
||||
+ }
|
||||
+
|
||||
+ /* Check that src address is one of the hosts we pinged before */
|
||||
+ int found = 0;
|
||||
+ for (int i = 0; i < num_hosts; i++) {
|
||||
+ HOST_ENTRY *h = table[i];
|
||||
+ if (!addr_cmp((struct sockaddr*)&response_addr, (struct sockaddr*)&h->saddr)) {
|
||||
+ found = 1;
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+ if (!found) {
|
||||
+ // char buf[INET6_ADDRSTRLEN];
|
||||
+ // getnameinfo((struct sockaddr*)&response_addr, sizeof(response_addr), buf, INET6_ADDRSTRLEN, NULL, 0, NI_NUMERICHOST);
|
||||
+ // fprintf(stderr, "ignoring response from %s\n", buf);
|
||||
+ return 1; /* packet received, but not from a host we pinged */
|
||||
}
|
||||
|
||||
seqmap_value = seqmap_fetch(seq, current_time_ns);
|
||||
|
Loading…
Reference in New Issue
Block a user