Lines Matching refs:ifp
186 struct ifnet *ifp, int bridged, struct llentry *la);
187 static void arp_mark_lle_reachable(struct llentry *la, struct ifnet *ifp);
188 static void arp_iflladdr(void *arg __unused, struct ifnet *ifp);
206 struct ifnet *ifp; in arptimer() local
231 ifp = lle->lle_tbl->llt_ifp; in arptimer()
232 CURVNET_SET(ifp->if_vnet); in arptimer()
259 arprequest(ifp, NULL, &dst, NULL); in arptimer()
291 IF_AFDATA_LOCK(ifp); in arptimer()
299 IF_AFDATA_UNLOCK(ifp); in arptimer()
316 arp_fillheader(struct ifnet *ifp, struct arphdr *ah, int bcast, u_char *buf, in arp_fillheader() argument
332 error = ifp->if_requestencap(ifp, &ereq); in arp_fillheader()
346 arprequest_internal(struct ifnet *ifp, const struct in_addr *sip, in arprequest_internal() argument
367 CK_STAILQ_FOREACH(ifa, &ifp->if_addrhead, ifa_link) { in arprequest_internal()
390 enaddr = carpaddr ? carpaddr : (u_char *)IF_LLADDR(ifp); in arprequest_internal()
395 2 * ifp->if_addrlen; in arprequest_internal()
401 mac_netinet_arp_send(ifp, m); in arprequest_internal()
404 ah->ar_hln = ifp->if_addrlen; /* hardware address length */ in arprequest_internal()
416 error = arp_fillheader(ifp, ah, 1, linkhdr, &linkhdrsize); in arprequest_internal()
420 if_name(ifp), error); in arprequest_internal()
430 error = (*ifp->if_output)(ifp, m, &sa, &ro); in arprequest_internal()
435 if_name(ifp), error); in arprequest_internal()
441 arprequest(struct ifnet *ifp, const struct in_addr *sip, in arprequest() argument
445 (void) arprequest_internal(ifp, sip, tip, enaddr); in arprequest()
460 arpresolve_full(struct ifnet *ifp, int is_gw, int flags, struct mbuf *m, in arpresolve_full() argument
477 la = lla_lookup(LLTABLE(ifp), LLE_EXCLUSIVE, dst); in arpresolve_full()
478 if (la == NULL && (ifp->if_flags & (IFF_NOARP | IFF_STATICARP)) == 0) { in arpresolve_full()
479 la = lltable_alloc_entry(LLTABLE(ifp), 0, dst); in arpresolve_full()
486 if_name(ifp)); in arpresolve_full()
491 IF_AFDATA_WLOCK(ifp); in arpresolve_full()
493 la_tmp = lla_lookup(LLTABLE(ifp), LLE_EXCLUSIVE, dst); in arpresolve_full()
496 lltable_link_entry(LLTABLE(ifp), la); in arpresolve_full()
497 IF_AFDATA_WUNLOCK(ifp); in arpresolve_full()
499 lltable_free_entry(LLTABLE(ifp), la); in arpresolve_full()
512 ll_len = ifp->if_addrlen; in arpresolve_full()
566 e = arprequest_internal(ifp, NULL, &SIN(dst)->sin_addr, NULL); in arpresolve_full()
597 arpresolve(struct ifnet *ifp, int is_gw, struct mbuf *m, in arpresolve() argument
614 ifp->if_broadcastaddr, ifp->if_addrlen); in arpresolve()
624 la = lla_lookup(LLTABLE(ifp), plle ? LLE_EXCLUSIVE : LLE_UNLOCKED, dst); in arpresolve()
642 return (arpresolve_full(ifp, is_gw, la == NULL ? LLE_CREATE : 0, m, dst, in arpresolve()
654 struct ifnet *ifp; in arpintr() local
658 ifp = m->m_pkthdr.rcvif; in arpintr()
663 if_name(ifp)); in arpintr()
673 if_name(ifp)); in arpintr()
709 "%s\n", ntohs(ar->ar_hrd), if_name(ifp)); in arpintr()
717 layer, ar->ar_hln, if_name(ifp)); in arpintr()
769 struct ifnet *ifp = m->m_pkthdr.rcvif; in in_arpinput() local
795 if (ifp->if_bridge) in in_arpinput()
797 if (ifp->if_type == IFT_BRIDGE) in in_arpinput()
818 ifp->if_addrlen, (u_char *)ar_sha(ah), ":"); in in_arpinput()
835 if (((bridged && ia->ia_ifp->if_bridge == ifp->if_bridge) || in in_arpinput()
836 ia->ia_ifp == ifp) && in in_arpinput()
845 if (((bridged && ia->ia_ifp->if_bridge == ifp->if_bridge) || in in_arpinput()
846 ia->ia_ifp == ifp) && in in_arpinput()
852 #define BDG_MEMBER_MATCHES_ARP(addr, ifp, ia) \ in in_arpinput() argument
853 (ia->ia_ifp->if_bridge == ifp->if_softc && \ in in_arpinput()
854 !bcmp(IF_LLADDR(ia->ia_ifp), IF_LLADDR(ifp), ifp->if_addrlen) && \ in in_arpinput()
864 if (BDG_MEMBER_MATCHES_ARP(itaddr.s_addr, ifp, ia)) { in in_arpinput()
866 ifp = ia->ia_ifp; in in_arpinput()
877 CK_STAILQ_FOREACH(ifa, &ifp->if_addrhead, ifa_link) in in_arpinput()
894 enaddr = (u_int8_t *)IF_LLADDR(ifp); in in_arpinput()
898 if (!bcmp(ar_sha(ah), enaddr, ifp->if_addrlen)) in in_arpinput()
900 if (!bcmp(ar_sha(ah), ifp->if_broadcastaddr, ifp->if_addrlen)) { in in_arpinput()
906 if (ifp->if_addrlen != ah->ar_hln) { in in_arpinput()
908 "i/f %d (ignored)\n", ifp->if_addrlen, in in_arpinput()
910 ifp->if_addrlen); in in_arpinput()
923 ifp->if_addrlen, (u_char *)ar_sha(ah), ":", in in_arpinput()
924 inet_ntoa_r(isaddr, addrbuf), ifp->if_xname); in in_arpinput()
929 if (ifp->if_flags & IFF_STATICARP) in in_arpinput()
937 la = lla_lookup(LLTABLE(ifp), LLE_EXCLUSIVE, dst); in in_arpinput()
939 arp_check_update_lle(ah, isaddr, ifp, bridged, la); in in_arpinput()
946 if (lltable_calc_llheader(ifp, AF_INET, ar_sha(ah), linkhdr, in in_arpinput()
951 la = lltable_alloc_entry(LLTABLE(ifp), 0, dst); in in_arpinput()
961 lltable_set_entry_addr(ifp, la, linkhdr, linkhdrsize, in in_arpinput()
964 IF_AFDATA_WLOCK(ifp); in in_arpinput()
966 la_tmp = lla_lookup(LLTABLE(ifp), LLE_EXCLUSIVE, dst); in in_arpinput()
985 lltable_link_entry(LLTABLE(ifp), la); in in_arpinput()
986 IF_AFDATA_WUNLOCK(ifp); in in_arpinput()
989 arp_mark_lle_reachable(la, ifp); in in_arpinput()
993 lltable_free_entry(LLTABLE(ifp), la); in in_arpinput()
996 arp_check_update_lle(ah, isaddr, ifp, bridged, la); in in_arpinput()
1018 lle = lla_lookup(LLTABLE(ifp), 0, (struct sockaddr *)&sin); in in_arpinput()
1032 nh = fib4_lookup(ifp->if_fib, itaddr, 0, 0, 0); in in_arpinput()
1041 if (nh->nh_ifp == ifp) in in_arpinput()
1054 nh = fib4_lookup(ifp->if_fib, isaddr, 0, 0, 0); in in_arpinput()
1057 if (nh->nh_ifp != ifp) { in in_arpinput()
1061 ifp->if_xname); in in_arpinput()
1098 error = arp_fillheader(ifp, ah, 0, linkhdr, &linkhdrsize); in in_arpinput()
1107 if_name(ifp), error); in in_arpinput()
1116 (*ifp->if_output)(ifp, m, &sa, &ro); in in_arpinput()
1140 arp_flush_holdchain(struct ifnet *ifp, struct llentry *la, struct mbuf *chain) in arp_flush_holdchain() argument
1159 (*ifp->if_output)(ifp, m_hold, (struct sockaddr *)&sin, &ro); in arp_flush_holdchain()
1168 arp_check_update_lle(struct arphdr *ah, struct in_addr isaddr, struct ifnet *ifp, in arp_check_update_lle() argument
1179 if (!bridged && la->lle_tbl->llt_ifp != ifp) { in arp_check_update_lle()
1185 ifp->if_addrlen, (u_char *)ar_sha(ah), ":", in arp_check_update_lle()
1186 ifp->if_xname); in arp_check_update_lle()
1191 bcmp(ar_sha(ah), la->ll_addr, ifp->if_addrlen)) { in arp_check_update_lle()
1198 ifp->if_addrlen, in arp_check_update_lle()
1201 ifp->if_xname); in arp_check_update_lle()
1208 ifp->if_addrlen, in arp_check_update_lle()
1210 ifp->if_addrlen, (u_char *)ar_sha(ah), ":", in arp_check_update_lle()
1211 ifp->if_xname); in arp_check_update_lle()
1217 if (lltable_calc_llheader(ifp, AF_INET, ar_sha(ah), linkhdr, in arp_check_update_lle()
1227 if (lltable_try_set_entry_addr(ifp, la, linkhdr, linkhdrsize, in arp_check_update_lle()
1237 arp_mark_lle_reachable(la, ifp); in arp_check_update_lle()
1251 arp_flush_holdchain(ifp, la, chain); in arp_check_update_lle()
1257 arp_mark_lle_reachable(struct llentry *la, struct ifnet *ifp) in arp_mark_lle_reachable() argument
1266 if ((ifp->if_flags & IFF_STICKYARP) != 0) in arp_mark_lle_reachable()
1288 arp_add_ifa_lle(struct ifnet *ifp, const struct sockaddr *dst) in arp_add_ifa_lle() argument
1297 lle = lltable_alloc_entry(LLTABLE(ifp), LLE_IFADDR | LLE_STATIC, dst); in arp_add_ifa_lle()
1304 IF_AFDATA_WLOCK(ifp); in arp_add_ifa_lle()
1307 lle_tmp = lla_lookup(LLTABLE(ifp), LLE_EXCLUSIVE, dst); in arp_add_ifa_lle()
1309 lltable_unlink_entry(LLTABLE(ifp), lle_tmp); in arp_add_ifa_lle()
1311 lltable_link_entry(LLTABLE(ifp), lle); in arp_add_ifa_lle()
1312 IF_AFDATA_WUNLOCK(ifp); in arp_add_ifa_lle()
1320 lltable_free_entry(LLTABLE(ifp), lle_tmp); in arp_add_ifa_lle()
1434 arp_ifinit(struct ifnet *ifp, struct ifaddr *ifa) in arp_ifinit() argument
1449 arp_announce_ifaddr(ifp, dst_in->sin_addr, IF_LLADDR(ifp)); in arp_ifinit()
1455 arp_add_ifa_lle(ifp, dst); in arp_ifinit()
1459 arp_announce_ifaddr(struct ifnet *ifp, struct in_addr addr, u_char *enaddr) in arp_announce_ifaddr() argument
1463 arprequest(ifp, &addr, &addr, enaddr); in arp_announce_ifaddr()
1471 arp_handle_ifllchange(struct ifnet *ifp) in arp_handle_ifllchange() argument
1475 CK_STAILQ_FOREACH(ifa, &ifp->if_addrhead, ifa_link) { in arp_handle_ifllchange()
1477 arp_ifinit(ifp, ifa); in arp_handle_ifllchange()
1485 arp_iflladdr(void *arg __unused, struct ifnet *ifp) in arp_iflladdr() argument
1489 if (ifp->if_afdata[AF_INET] == NULL) in arp_iflladdr()
1492 lltable_update_ifaddr(LLTABLE(ifp)); in arp_iflladdr()
1494 if ((ifp->if_flags & IFF_UP) != 0) in arp_iflladdr()
1495 arp_handle_ifllchange(ifp); in arp_iflladdr()