ARP_CLIENT
if (arptable[ARP_CLIENT].ipaddr.s_addr != ip->dest.s_addr)
seed = currticks() + *(int32_t *)&arptable[ARP_CLIENT].node
+ ((int16_t *)arptable[ARP_CLIENT].node)[2];
if (! inet_aton (ip, &arptable[ARP_CLIENT].ipaddr))
if (IP_BROADCAST == (netmask | arptable[ARP_CLIENT].ipaddr.s_addr)
|| netmask == (netmask | arptable[ARP_CLIENT].ipaddr.s_addr)
etherboot_printf ("Address: %@\n", arptable[ARP_CLIENT].ipaddr.s_addr);
sip->sn_ciaddr = arptable[ARP_CLIENT].ipaddr.s_addr;
memcpy(sip->sn_macaddr, arptable[ARP_CLIENT].node, ETH_ALEN);
memcpy(arptable[ARP_CLIENT].node, dhcpreply->bp_hwaddr, ETH_ALEN);
arptable[ARP_CLIENT].ipaddr.s_addr = dhcpreply->bp_yiaddr.s_addr;
arptable[ARP_CLIENT].node, /* node_addr */
int net = ntohl(arptable[ARP_CLIENT].ipaddr.s_addr) >> 24;
(arptable[ARP_CLIENT].ipaddr.s_addr & netmask)) &&
memcpy(arpreq.shwaddr, arptable[ARP_CLIENT].node, ETH_ALEN);
memcpy(arpreq.sipaddr, &arptable[ARP_CLIENT].ipaddr, sizeof(in_addr));
ip->src.s_addr = arptable[ARP_CLIENT].ipaddr.s_addr;
memcpy(&arptable[ARP_CLIENT].ipaddr, arpreply->tipaddr, sizeof(in_addr));
memcpy(&rarpreq.shwaddr, arptable[ARP_CLIENT].node, ETH_ALEN);
memcpy(&rarpreq.thwaddr, arptable[ARP_CLIENT].node, ETH_ALEN);
(memcmp(arptable[ARP_CLIENT].node, bootpreply->bp_hwaddr, ETH_ALEN) != 0)) {
arptable[ARP_CLIENT].ipaddr.s_addr = bootpreply->bp_yiaddr.s_addr;
memcpy(&xid, &arptable[ARP_CLIENT].node[2], sizeof(xid));
memcpy(ip.bp.bp_hwaddr, arptable[ARP_CLIENT].node, ETH_ALEN);
(memcmp(arptable[ARP_CLIENT].node, dhcpreply->bp_hwaddr, ETH_ALEN) != 0)) {
arptable[ARP_CLIENT].ipaddr.s_addr = dhcpreply->bp_yiaddr.s_addr;
memcpy(&xid, &arptable[ARP_CLIENT].node[2], sizeof(xid));
memcpy(ip.bp.bp_hwaddr, arptable[ARP_CLIENT].node, ETH_ALEN);
(tmp == arptable[ARP_CLIENT].ipaddr.s_addr)) {
memcpy(arpreply->sipaddr, &arptable[ARP_CLIENT].ipaddr, sizeof(in_addr));
memcpy(arpreply->shwaddr, arptable[ARP_CLIENT].node, ETH_ALEN);
unsigned char b = arptable[ARP_CLIENT].node[i];