Lines Matching refs:ifa
142 struct ifaddr *ifa;
173 IFADDR_READER_FOREACH(ifa, ifp) {
174 if (sockaddr_cmp(&u.sa, ifa->ifa_addr) == 0) {
175 ifa_acquire(ifa, &psref);
183 ifa_release(ifa, &psref);
186 ifa = if_first_addr(ifp, AF_LINK);
187 if (ifa == NULL) {
193 if (ifa == ifp->if_dl)
198 if (ifa == ifp->if_hwdl)
202 ifa->ifa_addr);
204 ifa = NULL;
208 if (ifa == NULL)
210 else if (ifa == ifp->if_dl || ifa == ifp->if_hwdl)
214 rt_addrmsg(RTM_DELETE, ifa);
216 ifaref(ifa);
217 ifa_release(ifa, &psref);
218 ifa_remove(ifp, ifa);
219 KASSERTMSG(ifa->ifa_refcnt == 1, "ifa_refcnt=%d",
220 ifa->ifa_refcnt);
221 ifafree(ifa);
222 ifa = NULL;
226 if (ifa == NULL) {
227 ifa = if_dl_create(ifp, &nsdl);
228 if (ifa == NULL) {
232 ifa_acquire(ifa, &psref);
233 sockaddr_copy(ifa->ifa_addr,
234 ifa->ifa_addr->sa_len, &u.sa);
235 ifa_insert(ifp, ifa);
236 rt_addrmsg(RTM_ADD, ifa);
240 isactive = (ifa == ifp->if_dl);
243 if_activate_sadl(ifp, ifa, nsdl);
244 rt_addrmsg(RTM_CHANGE, ifa);
249 ifa_release(ifa, &psref);