ping: SO_RCVBUF must be bigger than packet size,
otherwise large ping packets might fail to be received.
This commit is contained in:
parent
15f2fdb2b9
commit
5770715588
@ -576,8 +576,9 @@ static void ping4(len_and_sockaddr *lsa)
|
|||||||
/* enable broadcast pings */
|
/* enable broadcast pings */
|
||||||
setsockopt_broadcast(pingsock);
|
setsockopt_broadcast(pingsock);
|
||||||
|
|
||||||
/* set recv buf for broadcast pings */
|
/* set recv buf (needed if we can get lots of responses: flood ping,
|
||||||
sockopt = 48 * 1024; /* explain why 48k? */
|
* broadcast ping etc) */
|
||||||
|
sockopt = (datalen * 2) + 7 * 1024; /* giving it a bit of extra room */
|
||||||
setsockopt(pingsock, SOL_SOCKET, SO_RCVBUF, &sockopt, sizeof(sockopt));
|
setsockopt(pingsock, SOL_SOCKET, SO_RCVBUF, &sockopt, sizeof(sockopt));
|
||||||
|
|
||||||
signal(SIGINT, print_stats_and_exit);
|
signal(SIGINT, print_stats_and_exit);
|
||||||
@ -640,8 +641,9 @@ static void ping6(len_and_sockaddr *lsa)
|
|||||||
/* enable broadcast pings */
|
/* enable broadcast pings */
|
||||||
setsockopt_broadcast(pingsock);
|
setsockopt_broadcast(pingsock);
|
||||||
|
|
||||||
/* set recv buf for broadcast pings */
|
/* set recv buf (needed if we can get lots of responses: flood ping,
|
||||||
sockopt = 48 * 1024; /* explain why 48k? */
|
* broadcast ping etc) */
|
||||||
|
sockopt = (datalen * 2) + 7 * 1024; /* giving it a bit of extra room */
|
||||||
setsockopt(pingsock, SOL_SOCKET, SO_RCVBUF, &sockopt, sizeof(sockopt));
|
setsockopt(pingsock, SOL_SOCKET, SO_RCVBUF, &sockopt, sizeof(sockopt));
|
||||||
|
|
||||||
sockopt = offsetof(struct icmp6_hdr, icmp6_cksum);
|
sockopt = offsetof(struct icmp6_hdr, icmp6_cksum);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user