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 fd19c42d12..ff66073e6e 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 */ } |