Lines Matching refs:ifa

289 #define	IFNET_FOREACH_IFA(ifp, ifa)					\  argument
290 CK_STAILQ_FOREACH((ifa), &(ifp)->if_addrhead, ifa_link) \
291 if ((ifa)->ifa_carp != NULL)
293 #define CARP_FOREACH_IFA(sc, ifa) \ argument
297 ((ifa) = sc->sc_ifas[_i]) != NULL; \
344 struct ifaddr *ifa; in carp_hmac_prepare() local
373 CARP_FOREACH_IFA(sc, ifa) { in carp_hmac_prepare()
374 in.s_addr = ifatoia(ifa)->ia_addr.sin_addr.s_addr; in carp_hmac_prepare()
375 if (ifa->ifa_addr->sa_family == AF_INET && in carp_hmac_prepare()
392 CARP_FOREACH_IFA(sc, ifa) { in carp_hmac_prepare()
393 in6 = ifatoia6(ifa)->ia_addr.sin6_addr; in carp_hmac_prepare()
396 if (ifa->ifa_addr->sa_family == AF_INET6 && in carp_hmac_prepare()
616 carp_source_is_self(struct mbuf *m, struct ifaddr *ifa, sa_family_t af) in carp_source_is_self() argument
631 in4 = ifatoia(ifa)->ia_addr.sin_addr; in carp_source_is_self()
637 in6 = ifatoia6(ifa)->ia_addr.sin6_addr; in carp_source_is_self()
650 struct ifaddr *ifa, *match; in carp_input_c() local
671 IFNET_FOREACH_IFA(ifp, ifa) { in carp_input_c()
672 if (match == NULL && ifa->ifa_carp != NULL && in carp_input_c()
673 ifa->ifa_addr->sa_family == af && in carp_input_c()
674 ifa->ifa_carp->sc_vhid == ch->carp_vhid) in carp_input_c()
675 match = ifa; in carp_input_c()
676 if (ch->carp_vhid == 0 && carp_source_is_self(m, ifa, af)) in carp_input_c()
679 ifa = error ? NULL : match; in carp_input_c()
680 if (ifa != NULL) in carp_input_c()
681 ifa_ref(ifa); in carp_input_c()
683 if (ifa == NULL) { in carp_input_c()
700 ifa_free(ifa); in carp_input_c()
705 sc = ifa->ifa_carp; in carp_input_c()
707 ifa_free(ifa); in carp_input_c()
902 struct ifaddr *ifa, *best; in carp_best_ifa() local
909 CK_STAILQ_FOREACH(ifa, &ifp->if_addrhead, ifa_link) { in carp_best_ifa()
910 if (ifa->ifa_addr->sa_family == af && in carp_best_ifa()
911 (best == NULL || ifa_preferred(best, ifa))) in carp_best_ifa()
912 best = ifa; in carp_best_ifa()
924 struct ifaddr *ifa; in carp_send_ad_locked() local
973 ifa = carp_best_ifa(AF_INET, sc->sc_carpdev); in carp_send_ad_locked()
974 if (ifa != NULL) { in carp_send_ad_locked()
976 ifatoia(ifa)->ia_addr.sin_addr.s_addr; in carp_send_ad_locked()
977 ifa_free(ifa); in carp_send_ad_locked()
1023 ifa = carp_best_ifa(AF_INET6, sc->sc_carpdev); in carp_send_ad_locked()
1024 if (ifa != NULL) { in carp_send_ad_locked()
1025 bcopy(IFA_IN6(ifa), &ip6->ip6_src, in carp_send_ad_locked()
1027 ifa_free(ifa); in carp_send_ad_locked()
1064 struct ifaddr *ifa; in carp_addroute() local
1066 CARP_FOREACH_IFA(sc, ifa) in carp_addroute()
1067 carp_ifa_addroute(ifa); in carp_addroute()
1071 carp_ifa_addroute(struct ifaddr *ifa) in carp_ifa_addroute() argument
1074 switch (ifa->ifa_addr->sa_family) { in carp_ifa_addroute()
1077 in_addprefix(ifatoia(ifa)); in carp_ifa_addroute()
1078 ifa_add_loopback_route(ifa, in carp_ifa_addroute()
1079 (struct sockaddr *)&ifatoia(ifa)->ia_addr); in carp_ifa_addroute()
1084 ifa_add_loopback_route(ifa, in carp_ifa_addroute()
1085 (struct sockaddr *)&ifatoia6(ifa)->ia_addr); in carp_ifa_addroute()
1086 nd6_add_ifa_lle(ifatoia6(ifa)); in carp_ifa_addroute()
1095 struct ifaddr *ifa; in carp_delroute() local
1097 CARP_FOREACH_IFA(sc, ifa) in carp_delroute()
1098 carp_ifa_delroute(ifa); in carp_delroute()
1102 carp_ifa_delroute(struct ifaddr *ifa) in carp_ifa_delroute() argument
1105 switch (ifa->ifa_addr->sa_family) { in carp_ifa_delroute()
1108 ifa_del_loopback_route(ifa, in carp_ifa_delroute()
1109 (struct sockaddr *)&ifatoia(ifa)->ia_addr); in carp_ifa_delroute()
1110 in_scrubprefix(ifatoia(ifa), LLE_STATIC); in carp_ifa_delroute()
1115 ifa_del_loopback_route(ifa, in carp_ifa_delroute()
1116 (struct sockaddr *)&ifatoia6(ifa)->ia_addr); in carp_ifa_delroute()
1117 nd6_rem_ifa_lle(ifatoia6(ifa), 1); in carp_ifa_delroute()
1124 carp_master(struct ifaddr *ifa) in carp_master() argument
1126 struct carp_softc *sc = ifa->ifa_carp; in carp_master()
1140 struct ifaddr *ifa; in carp_send_arp() local
1145 CARP_FOREACH_IFA(sc, ifa) { in carp_send_arp()
1146 if (ifa->ifa_addr->sa_family != AF_INET) in carp_send_arp()
1148 addr = ((struct sockaddr_in *)ifa->ifa_addr)->sin_addr; in carp_send_arp()
1154 carp_iamatch(struct ifaddr *ifa, uint8_t **enaddr) in carp_iamatch() argument
1156 struct carp_softc *sc = ifa->ifa_carp; in carp_iamatch()
1172 struct ifaddr *ifa; in carp_send_na() local
1175 CARP_FOREACH_IFA(sc, ifa) { in carp_send_na()
1176 if (ifa->ifa_addr->sa_family != AF_INET6) in carp_send_na()
1179 in6 = IFA_IN6(ifa); in carp_send_na()
1193 struct ifaddr *ifa; in carp_iamatch6() local
1197 ifa = NULL; in carp_iamatch6()
1198 CK_STAILQ_FOREACH(ifa, &ifp->if_addrhead, ifa_link) { in carp_iamatch6()
1199 if (ifa->ifa_addr->sa_family != AF_INET6) in carp_iamatch6()
1201 if (!IN6_ARE_ADDR_EQUAL(taddr, IFA_IN6(ifa))) in carp_iamatch6()
1203 if (ifa->ifa_carp && ifa->ifa_carp->sc_state != MASTER) in carp_iamatch6()
1204 ifa = NULL; in carp_iamatch6()
1206 ifa_ref(ifa); in carp_iamatch6()
1210 return (ifa); in carp_iamatch6()
1216 struct ifaddr *ifa; in carp_macmatch6() local
1220 IFNET_FOREACH_IFA(ifp, ifa) in carp_macmatch6()
1221 if (ifa->ifa_addr->sa_family == AF_INET6 && in carp_macmatch6()
1222 IN6_ARE_ADDR_EQUAL(taddr, IFA_IN6(ifa))) { in carp_macmatch6()
1223 struct carp_softc *sc = ifa->ifa_carp; in carp_macmatch6()
1900 carp_get_vhid(struct ifaddr *ifa) in carp_get_vhid() argument
1903 if (ifa == NULL || ifa->ifa_carp == NULL) in carp_get_vhid()
1906 return (ifa->ifa_carp->sc_vhid); in carp_get_vhid()
1910 carp_attach(struct ifaddr *ifa, int vhid) in carp_attach() argument
1912 struct ifnet *ifp = ifa->ifa_ifp; in carp_attach()
1917 KASSERT(ifa->ifa_carp == NULL, ("%s: ifa %p attached", __func__, ifa)); in carp_attach()
1919 switch (ifa->ifa_addr->sa_family) { in carp_attach()
1945 error = carp_multicast_setup(cif, ifa->ifa_addr->sa_family); in carp_attach()
1956 switch (ifa->ifa_addr->sa_family) { in carp_attach()
1971 ifa_ref(ifa); in carp_attach()
1974 sc->sc_ifas[index - 1] = ifa; in carp_attach()
1975 ifa->ifa_carp = sc; in carp_attach()
1986 carp_detach(struct ifaddr *ifa, bool keep_cif) in carp_detach() argument
1988 struct ifnet *ifp = ifa->ifa_ifp; in carp_detach()
1990 struct carp_softc *sc = ifa->ifa_carp; in carp_detach()
1993 KASSERT(sc != NULL, ("%s: %p not attached", __func__, ifa)); in carp_detach()
2001 if (sc->sc_ifas[i] == ifa) in carp_detach()
2003 KASSERT(i < index, ("%s: %p no backref", __func__, ifa)); in carp_detach()
2008 switch (ifa->ifa_addr->sa_family) { in carp_detach()
2023 carp_ifa_delroute(ifa); in carp_detach()
2024 carp_multicast_cleanup(cif, ifa->ifa_addr->sa_family); in carp_detach()
2026 ifa->ifa_carp = NULL; in carp_detach()
2027 ifa_free(ifa); in carp_detach()