/* * Called when eth phy state changes (w/ interrupts disabled) */ void link_changed_callback(int speed){ printf("\neth link changed: speed = %d\n", speed); if (speed != 0){ hal_set_leds(LED_RJ45, LED_RJ45); pkt_ctrl_set_routing_mode(PKT_CTRL_ROUTING_MODE_MASTER); send_gratuitous_arp(); } else{ hal_set_leds(0x0, LED_RJ45); pkt_ctrl_set_routing_mode(PKT_CTRL_ROUTING_MODE_SLAVE); } }
int main(int argc, char **argv){ int ifindex = 0; char *devname = "eth0"; char *ipaddr = "10.0.7.1"; char *src_macaddr = "00:12:34:56:78:9a"; //char *src_macaddr = "00:1c:25:20:c7:63"; char *dst_macaddr = "00:00:00:00:00:00"; struct ifreq ifreq; memset(&ifreq, '\0', sizeof(ifreq)); //ifindex get_ifinfo( devname, &ifreq, SIOCGIFINDEX); ifindex = ifreq.ifr_ifindex; send_gratuitous_arp(ifindex, devname, ipaddr, src_macaddr, dst_macaddr); return 0; }