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