| #include "kvm/uip.h" | |
| int uip_tx_do_arp(struct uip_tx_arg *arg) | |
| { | |
| struct uip_arp *arp, *arp2; | |
| struct uip_info *info; | |
| struct uip_buf *buf; | |
| info = arg->info; | |
| buf = uip_buf_clone(arg); | |
| arp = (struct uip_arp *)(arg->eth); | |
| arp2 = (struct uip_arp *)(buf->eth); | |
| /* | |
| * ARP replay code: 2 | |
| */ | |
| arp2->op = htons(0x2); | |
| arp2->dmac = arp->smac; | |
| arp2->dip = arp->sip; | |
| if (arp->dip == htonl(info->host_ip)) { | |
| arp2->smac = info->host_mac; | |
| arp2->sip = htonl(info->host_ip); | |
| uip_buf_set_used(info, buf); | |
| } | |
| return 0; | |
| } |