1 | --- a/networking/ping.c |
2 | +++ b/networking/ping.c |
3 | @@ -79,6 +79,7 @@ static int in_cksum(unsigned short *buf, |
4 | /* simple version */ |
5 | |
6 | static char *hostname; |
7 | +static unsigned datalen = DEFDATALEN; |
8 | |
9 | static void noresp(int ign UNUSED_PARAM) |
10 | { |
11 | @@ -91,7 +92,7 @@ static void ping4(len_and_sockaddr *lsa) |
12 | struct sockaddr_in pingaddr; |
13 | struct icmp *pkt; |
14 | int pingsock, c; |
15 | - char packet[DEFDATALEN + MAXIPLEN + MAXICMPLEN]; |
16 | + char packet[datalen + ICMP_MINLEN + MAXIPLEN + MAXICMPLEN]; |
17 | |
18 | pingsock = create_icmp_socket(); |
19 | pingaddr = lsa->u.sin; |
20 | @@ -101,7 +102,7 @@ static void ping4(len_and_sockaddr *lsa) |
21 | pkt->icmp_type = ICMP_ECHO; |
22 | pkt->icmp_cksum = in_cksum((unsigned short *) pkt, sizeof(packet)); |
23 | |
24 | - c = xsendto(pingsock, packet, DEFDATALEN + ICMP_MINLEN, |
25 | + c = xsendto(pingsock, packet, datalen + ICMP_MINLEN, |
26 | (struct sockaddr *) &pingaddr, sizeof(pingaddr)); |
27 | |
28 | /* listen for replies */ |
29 | @@ -135,7 +136,7 @@ static void ping6(len_and_sockaddr *lsa) |
30 | struct icmp6_hdr *pkt; |
31 | int pingsock, c; |
32 | int sockopt; |
33 | - char packet[DEFDATALEN + MAXIPLEN + MAXICMPLEN]; |
34 | + char packet[datalen + ICMP_MINLEN + MAXIPLEN + MAXICMPLEN]; |
35 | |
36 | pingsock = create_icmp6_socket(); |
37 | pingaddr = lsa->u.sin6; |
38 | @@ -147,7 +148,7 @@ static void ping6(len_and_sockaddr *lsa) |
39 | sockopt = offsetof(struct icmp6_hdr, icmp6_cksum); |
40 | setsockopt(pingsock, SOL_RAW, IPV6_CHECKSUM, &sockopt, sizeof(sockopt)); |
41 | |
42 | - c = xsendto(pingsock, packet, DEFDATALEN + sizeof (struct icmp6_hdr), |
43 | + c = xsendto(pingsock, packet, datalen + sizeof (struct icmp6_hdr), |
44 | (struct sockaddr *) &pingaddr, sizeof(pingaddr)); |
45 | |
46 | /* listen for replies */ |
47 | |