Lines Matching refs:ifa

1198 rtsetifa(struct rtentry *rt, struct ifaddr* ifa)
1204 if (rt->rt_ifa == ifa)
1210 /* Release the old ifa */
1215 rt->rt_ifa = ifa;
1217 /* Take a reference to the ifa */
1237 struct ifaddr *ifa = NULL;
1261 if ((ifa = ifa_ifwithnet_scoped(gateway, ifscope)) == NULL) {
1276 * possibility of rt_ifa/ifa's ifa_addr from changing (e.g.
1281 ifa->ifa_addr))) {
1284 IFA_REMREF(ifa);
1285 if ((ifa = ifa_ifwithaddr(gateway))) {
1286 IFA_REMREF(ifa);
1287 ifa = NULL;
1292 if (ifa) {
1293 IFA_REMREF(ifa);
1294 ifa = NULL;
1397 struct ifaddr *ifa;
1400 ifa = ifa_ifwithroute_locked(flags, dst, gateway);
1403 return (ifa);
1430 struct ifaddr *ifa = NULL;
1468 ifa = ifa_ifwithdstaddr(dst);
1470 if (ifa == NULL)
1471 ifa = ifa_ifwithaddr_scoped(gw, ifscope);
1478 ifa = ifa_ifwithdstaddr(gw);
1480 if (ifa == NULL)
1481 ifa = ifa_ifwithnet_scoped(gw, ifscope);
1482 if (ifa == NULL) {
1488 ifa = rt->rt_ifa;
1489 if (ifa != NULL) {
1492 IFA_ADDREF(ifa);
1500 * Holding rnh_lock here prevents the possibility of ifa from
1504 if (ifa != NULL && ifa->ifa_addr->sa_family != dst->sa_family) {
1507 newifa = ifaof_ifpforaddr(dst, ifa->ifa_ifp);
1509 IFA_REMREF(ifa);
1510 ifa = newifa;
1519 * on new entries from rtinit, hence (ifa->ifa_addr != gw).
1521 if ((ifa == NULL ||
1522 !equal(ifa->ifa_addr, (struct sockaddr *)(size_t)gw)) &&
1525 if (ifa != NULL)
1526 IFA_REMREF(ifa);
1528 ifa = rt->rt_ifa;
1529 if (ifa != NULL) {
1532 IFA_ADDREF(ifa);
1543 ifa != NULL && ifa->ifa_ifp->if_index != ifscope) {
1544 IFA_REMREF(ifa);
1545 ifa = NULL;
1548 return (ifa);
1605 struct ifaddr *ifa = NULL;
1732 if ((ifa = rt->rt_ifa) != NULL) {
1733 IFA_LOCK_SPIN(ifa);
1734 ifa_rtrequest = ifa->ifa_rtrequest;
1735 IFA_UNLOCK(ifa);
1739 ifa = NULL;
1800 ifa = rt->rt_ifa;
1801 IFA_ADDREF(ifa);
1861 ifa = ifa_ifwithroute_scoped_locked(flags, dst0,
1864 ifa = ifa_ifwithroute_locked(flags, dst0, gateway);
1866 if (ifa == NULL)
1906 * Note that we now have a reference to the ifa.
1908 * examine the ifa and ifa->ifa_ifp if it so desires.
1910 rtsetifa(rt, ifa);
2009 IFA_LOCK_SPIN(ifa);
2010 ifa_rtrequest = ifa->ifa_rtrequest;
2011 IFA_UNLOCK(ifa);
2014 IFA_REMREF(ifa);
2015 ifa = NULL;
2059 if (ifa)
2060 IFA_REMREF(ifa);
2824 rtinit(struct ifaddr *ifa, int cmd, int flags)
2829 error = rtinit_locked(ifa, cmd, flags);
2835 rtinit_locked(struct ifaddr *ifa, int cmd, int flags)
2846 * Holding rnh_lock here prevents the possibility of ifa from
2850 dst = flags & RTF_HOST ? ifa->ifa_dstaddr : ifa->ifa_addr;
2853 * interface or we might scrub a route to another ifa which would
2862 if ((flags & RTF_HOST) == 0 && ifa->ifa_netmask) {
2868 rt_maskedcopy(dst, deldst, ifa->ifa_netmask);
2885 if (rt->rt_ifa != ifa) {
2921 IFA_LOCK_SPIN(ifa);
2922 ifa_flags = ifa->ifa_flags;
2923 IFA_UNLOCK(ifa);
2924 error = rtrequest_locked(cmd, dst, ifa->ifa_addr, ifa->ifa_netmask,
2937 rt_newaddrmsg(cmd, ifa, error, nrt);
2954 if (rt->rt_ifa != ifa) {
2960 printf("rtinit: wrong ifa (%p) was (%p)\n",
2961 ifa, rt->rt_ifa);
2973 * Set the route's ifa.
2975 rtsetifa(rt, ifa);
2977 if (rt->rt_ifp != ifa->ifa_ifp) {
2987 rt->rt_if_ref_fn(ifa->ifa_ifp, 1);
2996 rt->rt_ifp = ifa->ifa_ifp;
2997 rt->rt_rmx.rmx_mtu = ifa->ifa_ifp->if_mtu; /*XXX*/
3002 IFA_LOCK_SPIN(ifa);
3003 ifa_rtrequest = ifa->ifa_rtrequest;
3004 IFA_UNLOCK(ifa);
3011 rt_newaddrmsg(cmd, ifa, error, nrt);