39 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			39 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| --- a/networking/ping.c
 | |
| +++ b/networking/ping.c
 | |
| @@ -91,7 +91,7 @@ static void ping4(len_and_sockaddr *lsa)
 | |
|  	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();
 | |
|  	pingaddr = lsa->u.sin;
 | |
| @@ -101,7 +101,7 @@ static void ping4(len_and_sockaddr *lsa)
 | |
|  	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 */
 | |
| @@ -135,7 +135,7 @@ static void ping6(len_and_sockaddr *lsa)
 | |
|  	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();
 | |
|  	pingaddr = lsa->u.sin6;
 | |
| @@ -147,7 +147,7 @@ static void ping6(len_and_sockaddr *lsa)
 | |
|  	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 */
 | 
