diff options
Diffstat (limited to 'net')
| -rw-r--r-- | net/net.c | 15 | 
1 files changed, 8 insertions, 7 deletions
| @@ -591,8 +591,8 @@ NetSendPacket(uchar *pkt, int len)  	(void) eth_send(pkt, len);  } -int -NetSendUDPPacket(uchar *ether, IPaddr_t dest, int dport, int sport, int len) +int NetSendUDPPacket(uchar *ether, IPaddr_t dest, int dport, int sport, +		int payload_len)  {  	uchar *pkt; @@ -618,14 +618,14 @@ NetSendUDPPacket(uchar *ether, IPaddr_t dest, int dport, int sport, int len)  		pkt = NetArpWaitTxPacket;  		pkt += NetSetEther(pkt, NetArpWaitPacketMAC, PROT_IP); -		NetSetIP(pkt, dest, dport, sport, len); +		NetSetIP(pkt, dest, dport, sport, payload_len);  		memcpy(pkt + IP_UDP_HDR_SIZE, (uchar *)NetTxPacket +  		       (pkt - (uchar *)NetArpWaitTxPacket) + -		       IP_UDP_HDR_SIZE, len); +		       IP_UDP_HDR_SIZE, payload_len);  		/* size of the waiting packet */  		NetArpWaitTxPacketSize = (pkt - NetArpWaitTxPacket) + -			IP_UDP_HDR_SIZE + len; +			IP_UDP_HDR_SIZE + payload_len;  		/* and do the ARP request */  		NetArpWaitTry = 1; @@ -638,8 +638,9 @@ NetSendUDPPacket(uchar *ether, IPaddr_t dest, int dport, int sport, int len)  	pkt = (uchar *)NetTxPacket;  	pkt += NetSetEther(pkt, ether, PROT_IP); -	NetSetIP(pkt, dest, dport, sport, len); -	eth_send(NetTxPacket, (pkt - NetTxPacket) + IP_UDP_HDR_SIZE + len); +	NetSetIP(pkt, dest, dport, sport, payload_len); +	eth_send(NetTxPacket, (pkt - NetTxPacket) + IP_UDP_HDR_SIZE + +		payload_len);  	return 0;	/* transmitted */  } |