| 1430 | } |
| 1431 | |
| 1432 | void |
| 1433 | arp_ifinit(struct ifnet *ifp, struct ifaddr *ifa) |
| 1434 | { |
| 1435 | struct epoch_tracker et; |
| 1436 | const struct sockaddr_in *dst_in; |
| 1437 | const struct sockaddr *dst; |
| 1438 | |
| 1439 | if (ifa->ifa_carp != NULL) |
| 1440 | return; |
| 1441 | |
| 1442 | dst = ifa->ifa_addr; |
| 1443 | dst_in = (const struct sockaddr_in *)dst; |
| 1444 | |
| 1445 | if (ntohl(dst_in->sin_addr.s_addr) == INADDR_ANY) |
| 1446 | return; |
| 1447 | NET_EPOCH_ENTER(et); |
| 1448 | arp_announce_ifaddr(ifp, dst_in->sin_addr, IF_LLADDR(ifp)); |
| 1449 | NET_EPOCH_EXIT(et); |
| 1450 | if (garp_rexmit_count > 0) { |
| 1451 | garp_timer_start(ifa); |
| 1452 | } |
| 1453 | |
| 1454 | arp_add_ifa_lle(ifp, dst); |
| 1455 | } |
| 1456 | |
| 1457 | void |
| 1458 | arp_announce_ifaddr(struct ifnet *ifp, struct in_addr addr, u_char *enaddr) |
no test coverage detected