Lines Matching refs:rt

174 nd6_llreach_alloc(struct rtentry *rt, struct ifnet *ifp, void *addr,
177 struct llinfo_nd6 *ln = rt->rt_llinfo;
181 rt->rt_ifp != lo_ifp &&
188 RT_CONVERT_LOCK(rt);
201 VERIFY(rt->rt_llinfo_purge != NULL);
202 rt->rt_llinfo_purge(rt);
231 &SIN6(rt_key(rt))->sin6_addr, tmp, sizeof (tmp))));
386 struct rtentry *rt;
394 rt = rtalloc1_scoped((struct sockaddr *)&tsin6, 0, 0,
397 if (rt != NULL) {
398 RT_LOCK(rt);
399 if ((rt->rt_flags & RTF_ANNOUNCE) != 0 &&
400 rt->rt_gateway->sa_family == AF_LINK) {
408 proxydl = *SDL(rt->rt_gateway);
411 RT_UNLOCK(rt);
412 rtfree(rt);
857 struct rtentry *rt;
989 if ((rt = nd6_lookup(&taddr6, 0, ifp, 0)) == NULL) {
993 if ((rt = nd6_lookup(&taddr6, 0, NULL, 0)) == NULL)
996 RT_LOCK_ASSERT_HELD(rt);
997 if (rt->rt_ifp != ifp) {
1001 if (rt->rt_llinfo_purge != NULL)
1002 rt->rt_llinfo_purge(rt);
1005 if (rt->rt_if_ref_fn != NULL) {
1006 rt->rt_if_ref_fn(ifp, 1);
1007 rt->rt_if_ref_fn(rt->rt_ifp, -1);
1011 rt->rt_ifp = ifp;
1015 RT_LOCK_ASSERT_HELD(rt);
1016 if ((ln = rt->rt_llinfo) == NULL ||
1017 (sdl = SDL(rt->rt_gateway)) == NULL) {
1018 RT_REMREF_LOCKED(rt);
1019 RT_UNLOCK(rt);
1030 RT_REMREF_LOCKED(rt);
1031 RT_UNLOCK(rt);
1047 ndi = ND_IFINFO(rt->rt_ifp);
1050 ln->ln_expire = rt_expiry(rt, timenow.tv_sec,
1057 ln->ln_expire = rt_expiry(rt, timenow.tv_sec,
1066 RT_UNLOCK(rt);
1070 RT_LOCK(rt);
1116 ln->ln_expire = rt_expiry(rt, timenow.tv_sec,
1119 RT_REMREF_LOCKED(rt);
1120 RT_UNLOCK(rt);
1149 rt_expiry(rt, timenow.tv_sec,
1157 ln->ln_expire = rt_expiry(rt,
1171 struct ifnet *rt_ifp = rt->rt_ifp;
1174 (void *)rt_key(rt))->sin6_addr;
1176 RT_UNLOCK(rt);
1196 RT_LOCK(rt);
1200 RT_LOCK_ASSERT_HELD(rt);
1201 rt->rt_flags &= ~RTF_REJECT;
1204 nd6_llreach_alloc(rt, ifp, LLADDR(sdl), sdl->sdl_alen, TRUE);
1212 rtkey_to_sa6(rt, &sin6);
1226 RT_UNLOCK(rt);
1227 nd6_output(ifp, ifp, m_hold, &sin6, rt, NULL);
1228 RT_LOCK_SPIN(rt);
1233 RT_REMREF_LOCKED(rt);
1234 RT_UNLOCK(rt);
2257 struct rtentry *rt;
2267 rt = rtalloc1_scoped_locked((struct sockaddr *)sin6, 1, 0,
2269 if (rt != NULL) {
2270 RT_LOCK(rt);
2271 VERIFY(rt->rt_flags & RTF_LLINFO);
2272 VERIFY(rt->rt_llinfo);
2274 ln = rt->rt_llinfo;
2287 RT_UNLOCK(rt);
2288 RT_REMREF(rt);
2293 if (rt == NULL) {
2306 struct rtentry *rt;
2314 rt = rtalloc1_scoped_locked((struct sockaddr *)sin6, 0, 0,
2316 if (rt != NULL) {
2317 RT_LOCK(rt);
2319 if (!(rt->rt_flags & (RTF_PINNED|RTF_CLONING|RTF_PRCLONING)) &&
2320 (rt->rt_flags & (RTF_HOST|RTF_LLINFO|RTF_WASCLONED)) ==
2322 rt->rt_flags |= RTF_CONDEMNED;
2323 RT_UNLOCK(rt);
2325 (void) rtrequest_locked(RTM_DELETE, rt_key(rt),
2326 (struct sockaddr *)NULL, rt_mask(rt), 0,
2329 rtfree_locked(rt);
2332 RT_REMREF_LOCKED(rt);
2333 RT_UNLOCK(rt);