diff options
| -rw-r--r-- | include/net.h | 12 | ||||
| -rw-r--r-- | net/net.c | 15 | 
2 files changed, 18 insertions, 9 deletions
| diff --git a/include/net.h b/include/net.h index fd19c42d1..ff66073e6 100644 --- a/include/net.h +++ b/include/net.h @@ -466,9 +466,17 @@ extern void	NetSetTimeout(ulong, thand_f *);/* Set timeout handler */  /* Transmit "NetTxPacket" */  extern void NetSendPacket(uchar *, int); -/* Transmit UDP packet, performing ARP request if needed */ +/* + * Transmit UDP packet, performing ARP request if needed + * + * @param ether Raw packet buffer + * @param dest IP address to send the datagram to + * @param dport Destination UDP port + * @param sport Source UDP port + * @param payload_len Length of data after the UDP header + */  extern int	NetSendUDPPacket(uchar *ether, IPaddr_t dest, int dport, -			int sport, int len); +			int sport, int payload_len);  /* Processes a received packet */  extern void NetReceive(uchar *, int); @@ -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 */  } |