@ -591,8 +591,8 @@ NetSendPacket(uchar *pkt, int len)
( void ) eth_send ( pkt , len ) ;
( void ) eth_send ( pkt , len ) ;
}
}
int
int NetSendUDPPacket ( uchar * ether , IPaddr_t dest , int dport , int sport ,
NetSendUDPPacket ( uchar * ether , IPaddr_t dest , int dport , int sport , int len )
int payload_ len )
{
{
uchar * pkt ;
uchar * pkt ;
@ -618,14 +618,14 @@ NetSendUDPPacket(uchar *ether, IPaddr_t dest, int dport, int sport, int len)
pkt = NetArpWaitTxPacket ;
pkt = NetArpWaitTxPacket ;
pkt + = NetSetEther ( pkt , NetArpWaitPacketMAC , PROT_IP ) ;
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 +
memcpy ( pkt + IP_UDP_HDR_SIZE , ( uchar * ) NetTxPacket +
( pkt - ( uchar * ) NetArpWaitTxPacket ) +
( pkt - ( uchar * ) NetArpWaitTxPacket ) +
IP_UDP_HDR_SIZE , len ) ;
IP_UDP_HDR_SIZE , payload_ len) ;
/* size of the waiting packet */
/* size of the waiting packet */
NetArpWaitTxPacketSize = ( pkt - NetArpWaitTxPacket ) +
NetArpWaitTxPacketSize = ( pkt - NetArpWaitTxPacket ) +
IP_UDP_HDR_SIZE + len ;
IP_UDP_HDR_SIZE + payload_ len;
/* and do the ARP request */
/* and do the ARP request */
NetArpWaitTry = 1 ;
NetArpWaitTry = 1 ;
@ -638,8 +638,9 @@ NetSendUDPPacket(uchar *ether, IPaddr_t dest, int dport, int sport, int len)
pkt = ( uchar * ) NetTxPacket ;
pkt = ( uchar * ) NetTxPacket ;
pkt + = NetSetEther ( pkt , ether , PROT_IP ) ;
pkt + = NetSetEther ( pkt , ether , PROT_IP ) ;
NetSetIP ( pkt , dest , dport , sport , len ) ;
NetSetIP ( pkt , dest , dport , sport , payload_len ) ;
eth_send ( NetTxPacket , ( pkt - NetTxPacket ) + IP_UDP_HDR_SIZE + len ) ;
eth_send ( NetTxPacket , ( pkt - NetTxPacket ) + IP_UDP_HDR_SIZE +
payload_len ) ;
return 0 ; /* transmitted */
return 0 ; /* transmitted */
}
}