Lines Matching refs:rt

170 nd6_llreach_alloc(struct rtentry *rt, struct ifnet *ifp, void *addr,
173 struct llinfo_nd6 *ln = rt->rt_llinfo;
177 !(rt->rt_ifp->if_flags & IFF_LOOPBACK) &&
184 RT_CONVERT_LOCK(rt);
197 VERIFY(rt->rt_llinfo_purge != NULL);
198 rt->rt_llinfo_purge(rt);
227 &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);
856 struct rtentry *rt;
948 if ((rt = nd6_lookup(&taddr6, 0, ifp, 0)) == NULL) {
952 if ((rt = nd6_lookup(&taddr6, 0, NULL, 0)) == NULL)
955 RT_LOCK_ASSERT_HELD(rt);
956 if (rt->rt_ifp != ifp) {
960 if (rt->rt_llinfo_purge != NULL)
961 rt->rt_llinfo_purge(rt);
964 if (rt->rt_if_ref_fn != NULL) {
965 rt->rt_if_ref_fn(ifp, 1);
966 rt->rt_if_ref_fn(rt->rt_ifp, -1);
970 rt->rt_ifp = ifp;
976 if (!(rt->rt_rmx.rmx_locks & RTV_MTU))
977 rt->rt_rmx.rmx_mtu = rt->rt_ifp->if_mtu;
981 RT_LOCK_ASSERT_HELD(rt);
982 if ((ln = rt->rt_llinfo) == NULL ||
983 (sdl = SDL(rt->rt_gateway)) == NULL) {
984 RT_REMREF_LOCKED(rt);
985 RT_UNLOCK(rt);
997 RT_REMREF_LOCKED(rt);
998 RT_UNLOCK(rt);
1013 ndi = ND_IFINFO(rt->rt_ifp);
1019 RT_UNLOCK(rt);
1023 RT_LOCK(rt);
1035 RT_UNLOCK(rt);
1039 RT_LOCK(rt);
1087 RT_REMREF_LOCKED(rt);
1088 RT_UNLOCK(rt);
1119 RT_UNLOCK(rt);
1123 RT_LOCK(rt);
1141 struct ifnet *rt_ifp = rt->rt_ifp;
1144 (void *)rt_key(rt))->sin6_addr;
1146 RT_UNLOCK(rt);
1166 RT_LOCK(rt);
1170 RT_LOCK_ASSERT_HELD(rt);
1171 rt->rt_flags &= ~RTF_REJECT;
1174 nd6_llreach_alloc(rt, ifp, LLADDR(sdl), sdl->sdl_alen, TRUE);
1182 rtkey_to_sa6(rt, &sin6);
1196 RT_UNLOCK(rt);
1197 nd6_output(ifp, ifp, m_hold, &sin6, rt, NULL);
1198 RT_LOCK_SPIN(rt);
1203 RT_REMREF_LOCKED(rt);
1204 RT_UNLOCK(rt);
2310 struct rtentry *rt;
2320 rt = rtalloc1_scoped_locked((struct sockaddr *)sin6, 1, 0,
2322 if (rt != NULL) {
2323 RT_LOCK(rt);
2324 VERIFY(rt->rt_flags & RTF_LLINFO);
2325 VERIFY(rt->rt_llinfo);
2327 ln = rt->rt_llinfo;
2340 RT_UNLOCK(rt);
2341 RT_REMREF(rt);
2346 if (rt == NULL) {
2359 struct rtentry *rt;
2367 rt = rtalloc1_scoped_locked((struct sockaddr *)sin6, 0, 0,
2369 if (rt != NULL) {
2370 RT_LOCK(rt);
2372 if (!(rt->rt_flags & (RTF_CLONING|RTF_PRCLONING)) &&
2373 (rt->rt_flags & (RTF_HOST|RTF_LLINFO|RTF_WASCLONED)) ==
2375 rt->rt_flags |= RTF_CONDEMNED;
2376 RT_UNLOCK(rt);
2378 (void) rtrequest_locked(RTM_DELETE, rt_key(rt),
2379 (struct sockaddr *)NULL, rt_mask(rt), 0,
2382 rtfree_locked(rt);
2384 RT_REMREF_LOCKED(rt);
2385 RT_UNLOCK(rt);