Lines Matching refs:rt

156 	struct rtentry *rt = (struct rtentry *)treenodes;
157 struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *)(void *)rt_key(rt);
161 RT_LOCK_ASSERT_HELD(rt);
171 if ((rt->rt_flags & RTF_DYNAMIC) != 0 &&
179 rt->rt_flags |= RTF_MULTICAST;
181 if (!(rt->rt_flags & (RTF_HOST | RTF_CLONING | RTF_MULTICAST))) {
182 rt->rt_flags |= RTF_PRCLONING;
199 if (rt->rt_flags & RTF_HOST) {
200 IFA_LOCK_SPIN(rt->rt_ifa);
201 if (IN6_ARE_ADDR_EQUAL(&satosin6(rt->rt_ifa->ifa_addr)
204 rt->rt_flags |= RTF_LOCAL;
206 IFA_UNLOCK(rt->rt_ifa);
209 if (!rt->rt_rmx.rmx_mtu && !(rt->rt_rmx.rmx_locks & RTV_MTU)
210 && rt->rt_ifp)
211 rt->rt_rmx.rmx_mtu = rt->rt_ifp->if_mtu;
214 if (ret == NULL && (rt->rt_flags & RTF_HOST)) {
222 RTF_CLONING | RTF_PRCLONING, sin6_get_ifscope(rt_key(rt)));
246 } else if (ret == NULL && (rt->rt_flags & RTF_CLONING)) {
261 RTF_CLONING | RTF_PRCLONING, sin6_get_ifscope(rt_key(rt)));
268 && rt2->rt_ifp == rt->rt_ifp) {
276 if (ret != NULL && (rt->rt_flags & RTF_DYNAMIC) != 0)
291 struct rtentry *rt = (struct rtentry *)rn;
292 RT_LOCK_SPIN(rt);
293 if ((rt->rt_flags & RTF_DYNAMIC) != 0)
295 RT_UNLOCK(rt);
307 struct rtentry *rt = (struct rtentry *)rn;
309 RT_LOCK_ASSERT_HELD(rt);
312 if (rt->rt_refcnt == 0 && (rt->rt_flags & RTPRF_OURS)) {
313 rt->rt_flags &= ~RTPRF_OURS;
314 rt_setexpire(rt, 0);
372 struct rtentry *rt = (struct rtentry *)rn;
375 RT_LOCK_ASSERT_HELD(rt);
377 if (!(rt->rt_flags & RTF_UP))
380 if ((rt->rt_flags & (RTF_LLINFO | RTF_HOST)) != RTF_HOST)
383 if (rt->rt_flags & RTPRF_OURS)
386 if (!(rt->rt_flags & (RTF_WASCLONED | RTF_DYNAMIC)))
394 if ((rt->rt_flags & RTF_DELCLONE) || rtq_reallyold == 0) {
404 RT_UNLOCK(rt);
405 if (rtrequest_locked(RTM_DELETE, rt_key(rt),
406 rt->rt_gateway, rt_mask(rt), rt->rt_flags, &rt) == 0) {
408 RT_LOCK(rt);
409 RT_REMREF_LOCKED(rt);
411 RT_LOCK(rt);
417 rt->rt_flags |= RTPRF_OURS;
418 rt_setexpire(rt,
419 rt_expiry(rt, timenow, rtq_reallyold));
444 struct rtentry *rt = (struct rtentry *)rn;
451 RT_LOCK(rt);
452 if (rt->rt_flags & RTPRF_OURS) {
454 VERIFY(rt->rt_expire == 0 || rt->rt_rmx.rmx_expire != 0);
455 VERIFY(rt->rt_expire != 0 || rt->rt_rmx.rmx_expire == 0);
456 if (ap->draining || rt->rt_expire <= timenow ||
457 ((rt->rt_flags & RTF_DYNAMIC) != 0 &&
460 if (rt->rt_refcnt > 0)
466 * can no longer refer to 'rt' upon returning
472 RT_UNLOCK(rt);
473 err = rtrequest_locked(RTM_DELETE, rt_key(rt),
474 rt->rt_gateway, rt_mask(rt), rt->rt_flags, 0);
482 (rt->rt_expire - timenow) >
483 rt_expiry(rt, 0, rtq_reallyold)) {
484 rt_setexpire(rt, rt_expiry(rt,
488 rt->rt_expire);
489 RT_UNLOCK(rt);
492 RT_UNLOCK(rt);
563 struct rtentry *rt = (struct rtentry *)rn;
570 if (!rt)
571 panic("rt == NULL in in6_mtuexpire");
573 RT_LOCK(rt);
574 VERIFY(rt->rt_expire == 0 || rt->rt_rmx.rmx_expire != 0);
575 VERIFY(rt->rt_expire != 0 || rt->rt_rmx.rmx_expire == 0);
576 if (rt->rt_expire && !(rt->rt_flags & RTF_PROBEMTU)) {
577 if (rt->rt_expire <= timenow) {
578 rt->rt_flags |= RTF_PROBEMTU;
581 rt->rt_expire);
584 RT_UNLOCK(rt);