arptable
if (!udp_transmit(arptable[ARP_SERVER].ipaddr.s_addr, ++iport,
if (!udp_transmit(arptable[ARP_SERVER].ipaddr.s_addr,
udp_transmit(arptable[ARP_SERVER].ipaddr.s_addr,
udp_transmit(arptable[ARP_SERVER].ipaddr.s_addr,
udp_transmit(arptable[ARP_SERVER].ipaddr.s_addr, iport,
if (! udp_transmit (arptable[ARP_SERVER].ipaddr.s_addr,
udp_transmit (arptable[ARP_SERVER].ipaddr.s_addr,
udp_transmit (arptable[ARP_SERVER].ipaddr.s_addr,
udp_transmit (arptable[ARP_SERVER].ipaddr.s_addr, iport,
return udp_transmit (arptable[ARP_SERVER].ipaddr.s_addr, ++iport,
if (eb_pxenv_tftp_open(name, arptable[ARP_SERVER].ipaddr,
arptable[ARP_GATEWAY].ipaddr, &packetsize) == 0)
if (arptable[ARP_CLIENT].ipaddr.s_addr != ip->dest.s_addr)
(void) eb_pxenv_tftp_open(saved_name, arptable[ARP_SERVER].ipaddr,
arptable[ARP_GATEWAY].ipaddr, &packetsize);
rc = eb_pxenv_tftp_get_fsize(saved_name, arptable[ARP_SERVER].ipaddr,
arptable[ARP_GATEWAY].ipaddr, &filemax);
if (eb_pxenv_tftp_open(saved_name, arptable[ARP_SERVER].ipaddr,
arptable[ARP_GATEWAY].ipaddr, &packetsize) == 0)
extern struct arptable_t arptable[MAX_ARP];
seed = currticks() + *(int32_t *)&arptable[ARP_CLIENT].node
+ ((int16_t *)arptable[ARP_CLIENT].node)[2];
memcpy(&arptable[ARP_GATEWAY].ipaddr, p+2, sizeof(in_addr));
if (! inet_aton (ip, &arptable[ARP_CLIENT].ipaddr))
if (gw && ! inet_aton (gw, &arptable[ARP_GATEWAY].ipaddr))
grub_memset (arptable[ARP_GATEWAY].node, 0, ETH_ALEN);
if (svr && ! inet_aton (svr, &arptable[ARP_SERVER].ipaddr))
grub_memset (arptable[ARP_SERVER].node, 0, ETH_ALEN);
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);
etherboot_printf ("Gateway: %@\n", arptable[ARP_GATEWAY].ipaddr.s_addr);
etherboot_printf ("Server: %@\n", arptable[ARP_SERVER].ipaddr.s_addr);
sip->sn_ciaddr = arptable[ARP_CLIENT].ipaddr.s_addr;
sip->sn_siaddr = arptable[ARP_SERVER].ipaddr.s_addr;
sip->sn_giaddr = arptable[ARP_GATEWAY].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_SERVER].ipaddr.s_addr = dhcpreply->bp_siaddr.s_addr;
memset(arptable[ARP_SERVER].node, 0, ETH_ALEN); /* Kill arp */
arptable[ARP_GATEWAY].ipaddr.s_addr = dhcpreply->bp_giaddr.s_addr;
memset(arptable[ARP_GATEWAY].node, 0, ETH_ALEN); /* Kill arp */
arptable[ARP_CLIENT].node, /* node_addr */
grub_memset((char *)arptable, 0, MAX_ARP * sizeof(struct arptable_t));
int net = ntohl(arptable[ARP_CLIENT].ipaddr.s_addr) >> 24;
memcpy(arptable[ival].node, arpreply->shwaddr, ETH_ALEN);
struct arptable_t arptable[MAX_ARP];
(arptable[ARP_CLIENT].ipaddr.s_addr & netmask)) &&
arptable[ARP_GATEWAY].ipaddr.s_addr)
destip = arptable[ARP_GATEWAY].ipaddr.s_addr;
if (arptable[arpentry].ipaddr.s_addr == destip) break;
if (arptable[arpentry].node[i])
memcpy(arpreq.shwaddr, arptable[ARP_CLIENT].node, ETH_ALEN);
memcpy(arpreq.sipaddr, &arptable[ARP_CLIENT].ipaddr, sizeof(in_addr));
eth_transmit(arptable[arpentry].node, IP, len, buf);
ip->src.s_addr = arptable[ARP_CLIENT].ipaddr.s_addr;
memcpy(arptable[ARP_SERVER].node, arpreply->shwaddr, ETH_ALEN);
memcpy(&arptable[ARP_SERVER].ipaddr, arpreply->sipaddr, sizeof(in_addr));
memcpy(&arptable[ARP_CLIENT].ipaddr, arpreply->tipaddr, sizeof(in_addr));
memset(&arptable[ARP_GATEWAY].ipaddr, 0, 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;
arptable[ARP_SERVER].ipaddr.s_addr = bootpreply->bp_siaddr.s_addr;
memset(arptable[ARP_SERVER].node, 0, ETH_ALEN); /* Kill arp */
arptable[ARP_GATEWAY].ipaddr.s_addr = bootpreply->bp_giaddr.s_addr;
memset(arptable[ARP_GATEWAY].node, 0, ETH_ALEN); /* Kill arp */
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;
arptable[ARP_SERVER].ipaddr.s_addr = dhcpreply->bp_siaddr.s_addr;
memset(arptable[ARP_SERVER].node, 0, ETH_ALEN); /* Kill arp */
arptable[ARP_GATEWAY].ipaddr.s_addr = dhcpreply->bp_giaddr.s_addr;
memset(arptable[ARP_GATEWAY].node, 0, ETH_ALEN); /* Kill arp */
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];
static struct arptable atable[ARP_TABLE_SIZE];