Lines Matching refs:ifa

305 #define	IFNET_FOREACH_IFA(ifp, ifa)					\  argument
306 CK_STAILQ_FOREACH((ifa), &(ifp)->if_addrhead, ifa_link) \
307 if ((ifa)->ifa_carp != NULL)
309 #define CARP_FOREACH_IFA(sc, ifa) \ argument
313 ((ifa) = sc->sc_ifas[_i]) != NULL; \
378 struct ifaddr *ifa; in carp_hmac_prepare() local
407 CARP_FOREACH_IFA(sc, ifa) { in carp_hmac_prepare()
408 in.s_addr = ifatoia(ifa)->ia_addr.sin_addr.s_addr; in carp_hmac_prepare()
409 if (ifa->ifa_addr->sa_family == AF_INET && in carp_hmac_prepare()
426 CARP_FOREACH_IFA(sc, ifa) { in carp_hmac_prepare()
427 in6 = ifatoia6(ifa)->ia_addr.sin6_addr; in carp_hmac_prepare()
430 if (ifa->ifa_addr->sa_family == AF_INET6 && in carp_hmac_prepare()
632 carp_source_is_self(struct mbuf *m, struct ifaddr *ifa, sa_family_t af) in carp_source_is_self() argument
647 in4 = ifatoia(ifa)->ia_addr.sin_addr; in carp_source_is_self()
653 in6 = ifatoia6(ifa)->ia_addr.sin6_addr; in carp_source_is_self()
666 struct ifaddr *ifa, *match; in carp_input_c() local
688 IFNET_FOREACH_IFA(ifp, ifa) { in carp_input_c()
689 if (match == NULL && ifa->ifa_carp != NULL && in carp_input_c()
690 ifa->ifa_addr->sa_family == af && in carp_input_c()
691 ifa->ifa_carp->sc_vhid == ch->carp_vhid) in carp_input_c()
692 match = ifa; in carp_input_c()
693 if (ch->carp_vhid == 0 && carp_source_is_self(m, ifa, af)) in carp_input_c()
696 ifa = error ? NULL : match; in carp_input_c()
697 if (ifa != NULL) in carp_input_c()
698 ifa_ref(ifa); in carp_input_c()
700 if (ifa == NULL) { in carp_input_c()
717 ifa_free(ifa); in carp_input_c()
722 sc = ifa->ifa_carp; in carp_input_c()
724 if (ifa->ifa_addr->sa_family == AF_INET) { in carp_input_c()
729 ifa_free(ifa); in carp_input_c()
932 struct ifaddr *ifa, *best; in carp_best_ifa() local
939 CK_STAILQ_FOREACH(ifa, &ifp->if_addrhead, ifa_link) { in carp_best_ifa()
940 if (ifa->ifa_addr->sa_family == af && in carp_best_ifa()
941 (best == NULL || ifa_preferred(best, ifa))) in carp_best_ifa()
942 best = ifa; in carp_best_ifa()
954 struct ifaddr *ifa; in carp_send_ad_locked() local
1004 ifa = carp_best_ifa(AF_INET, sc->sc_carpdev); in carp_send_ad_locked()
1005 if (ifa != NULL) { in carp_send_ad_locked()
1007 ifatoia(ifa)->ia_addr.sin_addr.s_addr; in carp_send_ad_locked()
1008 ifa_free(ifa); in carp_send_ad_locked()
1053 ifa = carp_best_ifa(AF_INET6, sc->sc_carpdev); in carp_send_ad_locked()
1054 if (ifa != NULL) { in carp_send_ad_locked()
1055 bcopy(IFA_IN6(ifa), &ip6->ip6_src, in carp_send_ad_locked()
1057 ifa_free(ifa); in carp_send_ad_locked()
1096 struct ifaddr *ifa; in carp_addroute() local
1098 CARP_FOREACH_IFA(sc, ifa) in carp_addroute()
1099 carp_ifa_addroute(ifa); in carp_addroute()
1103 carp_ifa_addroute(struct ifaddr *ifa) in carp_ifa_addroute() argument
1106 switch (ifa->ifa_addr->sa_family) { in carp_ifa_addroute()
1109 in_addprefix(ifatoia(ifa)); in carp_ifa_addroute()
1110 ifa_add_loopback_route(ifa, in carp_ifa_addroute()
1111 (struct sockaddr *)&ifatoia(ifa)->ia_addr); in carp_ifa_addroute()
1116 ifa_add_loopback_route(ifa, in carp_ifa_addroute()
1117 (struct sockaddr *)&ifatoia6(ifa)->ia_addr); in carp_ifa_addroute()
1118 nd6_add_ifa_lle(ifatoia6(ifa)); in carp_ifa_addroute()
1127 struct ifaddr *ifa; in carp_delroute() local
1129 CARP_FOREACH_IFA(sc, ifa) in carp_delroute()
1130 carp_ifa_delroute(ifa); in carp_delroute()
1134 carp_ifa_delroute(struct ifaddr *ifa) in carp_ifa_delroute() argument
1137 switch (ifa->ifa_addr->sa_family) { in carp_ifa_delroute()
1140 ifa_del_loopback_route(ifa, in carp_ifa_delroute()
1141 (struct sockaddr *)&ifatoia(ifa)->ia_addr); in carp_ifa_delroute()
1142 in_scrubprefix(ifatoia(ifa), LLE_STATIC); in carp_ifa_delroute()
1147 ifa_del_loopback_route(ifa, in carp_ifa_delroute()
1148 (struct sockaddr *)&ifatoia6(ifa)->ia_addr); in carp_ifa_delroute()
1149 nd6_rem_ifa_lle(ifatoia6(ifa), 1); in carp_ifa_delroute()
1156 carp_master(struct ifaddr *ifa) in carp_master() argument
1158 struct carp_softc *sc = ifa->ifa_carp; in carp_master()
1172 struct ifaddr *ifa; in carp_send_arp() local
1177 CARP_FOREACH_IFA(sc, ifa) { in carp_send_arp()
1178 if (ifa->ifa_addr->sa_family != AF_INET) in carp_send_arp()
1180 addr = ((struct sockaddr_in *)ifa->ifa_addr)->sin_addr; in carp_send_arp()
1186 carp_iamatch(struct ifaddr *ifa, uint8_t **enaddr) in carp_iamatch() argument
1188 struct carp_softc *sc = ifa->ifa_carp; in carp_iamatch()
1204 struct ifaddr *ifa; in carp_send_na() local
1207 CARP_FOREACH_IFA(sc, ifa) { in carp_send_na()
1208 if (ifa->ifa_addr->sa_family != AF_INET6) in carp_send_na()
1211 in6 = IFA_IN6(ifa); in carp_send_na()
1225 struct ifaddr *ifa; in carp_iamatch6() local
1229 ifa = NULL; in carp_iamatch6()
1230 CK_STAILQ_FOREACH(ifa, &ifp->if_addrhead, ifa_link) { in carp_iamatch6()
1231 if (ifa->ifa_addr->sa_family != AF_INET6) in carp_iamatch6()
1233 if (!IN6_ARE_ADDR_EQUAL(taddr, IFA_IN6(ifa))) in carp_iamatch6()
1235 if (ifa->ifa_carp && ifa->ifa_carp->sc_state != MASTER) in carp_iamatch6()
1236 ifa = NULL; in carp_iamatch6()
1238 ifa_ref(ifa); in carp_iamatch6()
1242 return (ifa); in carp_iamatch6()
1248 struct ifaddr *ifa; in carp_macmatch6() local
1252 IFNET_FOREACH_IFA(ifp, ifa) in carp_macmatch6()
1253 if (ifa->ifa_addr->sa_family == AF_INET6 && in carp_macmatch6()
1254 IN6_ARE_ADDR_EQUAL(taddr, IFA_IN6(ifa))) { in carp_macmatch6()
1255 struct carp_softc *sc = ifa->ifa_carp; in carp_macmatch6()
1961 carp_get_vhid(struct ifaddr *ifa) in carp_get_vhid() argument
1964 if (ifa == NULL || ifa->ifa_carp == NULL) in carp_get_vhid()
1967 return (ifa->ifa_carp->sc_vhid); in carp_get_vhid()
1971 carp_attach(struct ifaddr *ifa, int vhid) in carp_attach() argument
1973 struct ifnet *ifp = ifa->ifa_ifp; in carp_attach()
1978 KASSERT(ifa->ifa_carp == NULL, ("%s: ifa %p attached", __func__, ifa)); in carp_attach()
1980 switch (ifa->ifa_addr->sa_family) { in carp_attach()
2006 error = carp_multicast_setup(cif, ifa->ifa_addr->sa_family); in carp_attach()
2017 switch (ifa->ifa_addr->sa_family) { in carp_attach()
2032 ifa_ref(ifa); in carp_attach()
2035 sc->sc_ifas[index - 1] = ifa; in carp_attach()
2036 ifa->ifa_carp = sc; in carp_attach()
2047 carp_detach(struct ifaddr *ifa, bool keep_cif) in carp_detach() argument
2049 struct ifnet *ifp = ifa->ifa_ifp; in carp_detach()
2051 struct carp_softc *sc = ifa->ifa_carp; in carp_detach()
2054 KASSERT(sc != NULL, ("%s: %p not attached", __func__, ifa)); in carp_detach()
2062 if (sc->sc_ifas[i] == ifa) in carp_detach()
2064 KASSERT(i < index, ("%s: %p no backref", __func__, ifa)); in carp_detach()
2069 switch (ifa->ifa_addr->sa_family) { in carp_detach()
2084 carp_ifa_delroute(ifa); in carp_detach()
2085 carp_multicast_cleanup(cif, ifa->ifa_addr->sa_family); in carp_detach()
2087 ifa->ifa_carp = NULL; in carp_detach()
2088 ifa_free(ifa); in carp_detach()