Lines Matching defs:rt

277 		struct rtentry *rt = ln->ln_rt;
279 if (rt->rt_expire && rt->rt_expire <= uptime)
280 if (nd6_llinfo_timer(rt, i_am_router))
283 if (rt->rt_expire && rt->rt_expire < expire)
284 expire = rt->rt_expire;
301 * Returns 1 if `rt' should no longer be used, 0 otherwise.
304 nd6_llinfo_timer(struct rtentry *rt, int i_am_router)
306 struct llinfo_nd6 *ln = (struct llinfo_nd6 *)rt->rt_llinfo;
307 struct sockaddr_in6 *dst = satosin6(rt_key(rt));
312 if ((ifp = if_get(rt->rt_ifidx)) == NULL)
336 m->m_pkthdr.ph_ifidx = rt->rt_ifidx;
350 nd6_free(rt, i_am_router);
366 nd6_free(rt, i_am_router);
387 nd6_free(rt, i_am_router);
489 struct rtentry *rt;
492 rt = ln->ln_rt;
493 if (rt != NULL && rt->rt_gateway != NULL &&
494 rt->rt_gateway->sa_family == AF_LINK) {
495 sdl = satosdl(rt->rt_gateway);
497 nd6_free(rt, i_am_router);
506 struct rtentry *rt;
516 rt = rtalloc(sin6tosa(&sin6), flags, rtableid);
517 if (rt != NULL && (rt->rt_flags & RTF_LLINFO) == 0) {
525 rtfree(rt);
526 rt = NULL;
529 if (rt == NULL) {
558 error = rtrequest(RTM_ADD, &info, RTP_CONNECTED, &rt,
563 ln = (struct llinfo_nd6 *)rt->rt_llinfo;
577 if ((rt->rt_flags & RTF_GATEWAY) || (rt->rt_flags & RTF_LLINFO) == 0 ||
578 rt->rt_gateway->sa_family != AF_LINK || rt->rt_llinfo == NULL ||
579 (ifp != NULL && rt->rt_ifidx != ifp->if_index)) {
587 rtfree(rt);
590 return (rt);
602 struct rtentry *rt;
634 rt = nd6_lookup(&addr->sin6_addr, 0, ifp, ifp->if_rdomain);
635 if (rt != NULL) {
636 rtfree(rt);
644 nd6_invalidate(struct rtentry *rt)
647 struct sockaddr_dl *sdl = satosdl(rt->rt_gateway);
650 ln = (struct llinfo_nd6 *)rt->rt_llinfo;
666 nd6_free(struct rtentry *rt, int i_am_router)
668 struct llinfo_nd6 *ln = (struct llinfo_nd6 *)rt->rt_llinfo;
669 struct in6_addr in6 = satosin6(rt_key(rt))->sin6_addr;
674 ifp = if_get(rt->rt_ifidx);
687 KASSERT(!ISSET(rt->rt_flags, RTF_LOCAL));
688 nd6_invalidate(rt);
695 if (!ISSET(rt->rt_flags, RTF_STATIC|RTF_CACHED))
696 rtdeletemsg(rt, ifp, ifp->if_rdomain);
707 nd6_nud_hint(struct rtentry *rt)
714 ifp = if_get(rt->rt_ifidx);
718 if ((rt->rt_flags & RTF_GATEWAY) != 0 ||
719 (rt->rt_flags & RTF_LLINFO) == 0 ||
720 rt->rt_llinfo == NULL || rt->rt_gateway == NULL ||
721 rt->rt_gateway->sa_family != AF_LINK) {
726 ln = (struct llinfo_nd6 *)rt->rt_llinfo;
746 nd6_rtrequest(struct ifnet *ifp, int req, struct rtentry *rt)
748 struct sockaddr *gate = rt->rt_gateway;
753 if (ISSET(rt->rt_flags, RTF_GATEWAY|RTF_MULTICAST|RTF_MPLS))
756 if (nd6_need_cache(ifp) == 0 && (rt->rt_flags & RTF_HOST) == 0) {
782 rt->rt_flags &= ~RTF_LLINFO;
788 if (rt->rt_flags & RTF_CLONING) {
789 rt->rt_expire = 0;
792 if ((rt->rt_flags & RTF_LOCAL) && rt->rt_llinfo == NULL)
793 rt->rt_expire = 0;
815 if (rt->rt_llinfo != NULL) {
823 rt->rt_llinfo = (caddr_t)ln;
824 ln->ln_rt = rt;
825 rt->rt_flags |= RTF_LLINFO;
838 * When req == RTM_RESOLVE, rt is created and
879 * check if rt_key(rt) is one of my address assigned
883 &satosin6(rt_key(rt))->sin6_addr);
886 (rt->rt_flags & RTF_ANNOUNCE)) {
889 rt->rt_expire = 0;
895 (rt->rt_flags & RTF_ANNOUNCE) &&
900 llsol = satosin6(rt_key(rt))->sin6_addr;
922 ln = (struct llinfo_nd6 *)rt->rt_llinfo;
930 rt->rt_expire = 0;
931 rt->rt_llinfo = NULL;
932 rt->rt_flags &= ~RTF_LLINFO;
939 if ((rt->rt_flags & RTF_ANNOUNCE) != 0 &&
944 llsol = satosin6(rt_key(rt))->sin6_addr;
960 if (!ISSET(rt->rt_flags, RTF_LOCAL))
961 nd6_invalidate(rt);
971 struct rtentry *rt;
998 rt = nd6_lookup(&nb_addr, 0, ifp, ifp->if_rdomain);
1000 if (rt == NULL ||
1001 (ln = (struct llinfo_nd6 *)rt->rt_llinfo) == NULL) {
1003 rtfree(rt);
1019 rtfree(rt);
1038 struct rtentry *rt;
1068 rt = nd6_lookup(from, 0, ifp, ifp->if_rdomain);
1069 if (rt == NULL) {
1070 rt = nd6_lookup(from, 1, ifp, ifp->if_rdomain);
1074 if (ISSET(rt->rt_flags, RTF_STATIC|RTF_LOCAL)) {
1075 rtfree(rt);
1081 if (!rt)
1083 if ((rt->rt_flags & (RTF_GATEWAY | RTF_LLINFO)) != RTF_LLINFO) {
1085 nd6_free(rt, i_am_router);
1086 rtfree(rt);
1089 ln = (struct llinfo_nd6 *)rt->rt_llinfo;
1092 if (rt->rt_gateway == NULL)
1094 if (rt->rt_gateway->sa_family != AF_LINK)
1096 sdl = satosdl(rt->rt_gateway);
1163 rt_key(rt), rt);
1235 rtfree(rt);
1269 struct rtentry *rt;
1281 rt = rt_getll(rt0);
1283 if (ISSET(rt->rt_flags, RTF_REJECT) &&
1284 (rt->rt_expire == 0 || rt->rt_expire > uptime)) {
1286 return (rt == rt0 ? EHOSTDOWN : EHOSTUNREACH);
1295 if (!ISSET(rt->rt_flags, RTF_LLINFO)) {
1299 &satosin6(rt_key(rt))->sin6_addr, addr, sizeof(addr)));
1303 if (rt->rt_gateway->sa_family != AF_LINK) {
1309 ln = (struct llinfo_nd6 *)rt->rt_llinfo;
1344 sdl = satosdl(rt->rt_gateway);