*/
void rarp_receive(struct ip_udp_hdr *ip, unsigned len)
{
- ARP_t *arp;
+ struct arp_hdr *arp;
- debug("Got RARP\n");
- arp = (ARP_t *)ip;
+ debug_cond(DEBUG_NET_PKT, "Got RARP\n");
+ arp = (struct arp_hdr *)ip;
if (len < ARP_HDR_SIZE) {
printf("bad length %d < %d\n", len, ARP_HDR_SIZE);
return;
if (NetServerIP == 0)
NetCopyIP(&NetServerIP, &arp->ar_data[6]);
memcpy(NetServerEther, &arp->ar_data[0], 6);
- debug("Got good RARP\n");
+ debug_cond(DEBUG_DEV_PKT, "Got good RARP\n");
net_auto_load();
}
}
void RarpRequest(void)
{
uchar *pkt;
- ARP_t *rarp;
+ struct arp_hdr *rarp;
+ int eth_hdr_size;
printf("RARP broadcast %d\n", ++RarpTry);
pkt = NetTxPacket;
- pkt += NetSetEther(pkt, NetBcastAddr, PROT_RARP);
+ eth_hdr_size = NetSetEther(pkt, NetBcastAddr, PROT_RARP);
+ pkt += eth_hdr_size;
- rarp = (ARP_t *)pkt;
+ rarp = (struct arp_hdr *)pkt;
rarp->ar_hrd = htons(ARP_ETHER);
rarp->ar_pro = htons(PROT_IP);
/* dest IP addr set to broadcast */
memset(&rarp->ar_data[16], 0xff, 4);
- NetSendPacket(NetTxPacket, (pkt - NetTxPacket) + ARP_HDR_SIZE);
+ NetSendPacket(NetTxPacket, eth_hdr_size + ARP_HDR_SIZE);
NetSetTimeout(TIMEOUT, RarpTimeout);
}