2008-08-20 17:00:34 +03:00
|
|
|
--- a/networking/ping.c
|
|
|
|
+++ b/networking/ping.c
|
2009-02-21 17:07:45 +02:00
|
|
|
@@ -91,7 +91,7 @@ static void ping4(len_and_sockaddr *lsa)
|
2007-10-05 03:27:49 +03:00
|
|
|
struct sockaddr_in pingaddr;
|
|
|
|
struct icmp *pkt;
|
|
|
|
int pingsock, c;
|
|
|
|
- char packet[DEFDATALEN + MAXIPLEN + MAXICMPLEN];
|
|
|
|
+ char packet[datalen + ICMP_MINLEN + MAXIPLEN + MAXICMPLEN];
|
|
|
|
|
|
|
|
pingsock = create_icmp_socket();
|
2008-08-20 17:00:34 +03:00
|
|
|
pingaddr = lsa->u.sin;
|
2009-02-21 17:07:45 +02:00
|
|
|
@@ -101,7 +101,7 @@ static void ping4(len_and_sockaddr *lsa)
|
2007-10-05 03:27:49 +03:00
|
|
|
pkt->icmp_type = ICMP_ECHO;
|
|
|
|
pkt->icmp_cksum = in_cksum((unsigned short *) pkt, sizeof(packet));
|
|
|
|
|
|
|
|
- c = xsendto(pingsock, packet, DEFDATALEN + ICMP_MINLEN,
|
|
|
|
+ c = xsendto(pingsock, packet, datalen + ICMP_MINLEN,
|
|
|
|
(struct sockaddr *) &pingaddr, sizeof(pingaddr));
|
|
|
|
|
|
|
|
/* listen for replies */
|
2009-02-21 17:07:45 +02:00
|
|
|
@@ -135,7 +135,7 @@ static void ping6(len_and_sockaddr *lsa)
|
2007-10-05 03:27:49 +03:00
|
|
|
struct icmp6_hdr *pkt;
|
|
|
|
int pingsock, c;
|
|
|
|
int sockopt;
|
|
|
|
- char packet[DEFDATALEN + MAXIPLEN + MAXICMPLEN];
|
|
|
|
+ char packet[datalen + ICMP_MINLEN + MAXIPLEN + MAXICMPLEN];
|
|
|
|
|
|
|
|
pingsock = create_icmp6_socket();
|
2008-08-20 17:00:34 +03:00
|
|
|
pingaddr = lsa->u.sin6;
|
2009-02-21 17:07:45 +02:00
|
|
|
@@ -147,7 +147,7 @@ static void ping6(len_and_sockaddr *lsa)
|
2007-10-05 03:27:49 +03:00
|
|
|
sockopt = offsetof(struct icmp6_hdr, icmp6_cksum);
|
|
|
|
setsockopt(pingsock, SOL_RAW, IPV6_CHECKSUM, &sockopt, sizeof(sockopt));
|
|
|
|
|
|
|
|
- c = xsendto(pingsock, packet, DEFDATALEN + sizeof (struct icmp6_hdr),
|
|
|
|
+ c = xsendto(pingsock, packet, datalen + sizeof (struct icmp6_hdr),
|
|
|
|
(struct sockaddr *) &pingaddr, sizeof(pingaddr));
|
|
|
|
|
|
|
|
/* listen for replies */
|