Lines Matching defs:rt
980 struct rtentry *rt = NULL;
1016 rt = icmp6_mtudisc_clone(&sin6, m->m_pkthdr.ph_rtableid, 0);
1018 if (rt != NULL && ISSET(rt->rt_flags, RTF_HOST) &&
1019 !(rt->rt_locks & RTV_MTU)) {
1022 rtmtu = atomic_load_int(&rt->rt_mtu);
1026 ifp = if_get(rt->rt_ifidx);
1029 atomic_cas_uint(&rt->rt_mtu, rtmtu, mtu);
1034 rtfree(rt);
1052 struct rtentry *rt = NULL;
1141 rt = rtalloc(sin6tosa(&sa6_dst), 0, rtableid);
1142 if (rtisvalid(rt) && ISSET(rt->rt_flags, RTF_LOCAL) &&
1143 !ISSET(ifatoia6(rt->rt_ifa)->ia6_flags,
1147 rtfree(rt);
1148 rt = NULL;
1160 rt = rtalloc(sa, RT_RESOLVE, rtableid);
1161 if (!rtisvalid(rt)) {
1168 rtfree(rt);
1171 ia6 = in6_ifawithscope(rt->rt_ifa->ifa_ifp, &t, rtableid, rt);
1175 src = &ifatoia6(rt->rt_ifa)->ia_addr.sin6_addr;
1179 rtfree(rt);
1233 struct rtentry *rt = NULL;
1299 rt = rtalloc(sin6tosa(&sin6), 0, m->m_pkthdr.ph_rtableid);
1300 if (rt) {
1301 if (rt->rt_gateway == NULL ||
1302 rt->rt_gateway->sa_family != AF_INET6) {
1307 rtfree(rt);
1311 gw6 = &(satosin6(rt->rt_gateway)->sin6_addr);
1319 rtfree(rt);
1329 rtfree(rt);
1330 rt = NULL;
1433 icmp6_redirect_output(struct mbuf *m0, struct rtentry *rt)
1454 if (m0 == NULL || !rtisvalid(rt))
1457 ifp = if_get(rt->rt_ifidx);
1516 if (rt->rt_gateway && (rt->rt_flags & RTF_GATEWAY)) {
1518 sin6 = satosin6(rt->rt_gateway);
1542 if (rt->rt_flags & RTF_GATEWAY) {
1787 struct rtentry *rt;
1790 rt = rtalloc(sin6tosa(dst), RT_RESOLVE, rtableid);
1793 if (!rtisvalid(rt))
1796 if (!ipsec && (rt->rt_flags & (RTF_REJECT|RTF_BLACKHOLE)))
1803 if (ISSET(rt->rt_flags, RTF_LOCAL) ||
1804 (ISSET(rt->rt_flags, RTF_LLINFO) && rt->rt_expire == 0))
1808 if ((rt->rt_flags & RTF_HOST) == 0) {
1814 info.rti_ifa = rt->rt_ifa;
1817 info.rti_info[RTAX_GATEWAY] = rt->rt_gateway;
1819 rtlabel_id2sa(rt->rt_labelid, &sa_rl);
1821 error = rtrequest(RTM_ADD, &info, rt->rt_priority, &nrt,
1825 nrt->rt_rmx = rt->rt_rmx;
1826 rtfree(rt);
1827 rt = nrt;
1828 rtm_send(rt, RTM_ADD, 0, rtableid);
1830 error = rt_timer_add(rt, &icmp6_mtudisc_timeout_q, rtableid);
1834 return (rt);
1836 rtfree(rt);
1841 icmp6_mtudisc_timeout(struct rtentry *rt, u_int rtableid)
1847 ifp = if_get(rt->rt_ifidx);
1851 if ((rt->rt_flags & (RTF_DYNAMIC|RTF_HOST)) == (RTF_DYNAMIC|RTF_HOST)) {
1852 rtdeletemsg(rt, ifp, rtableid);
1854 if (!(rt->rt_locks & RTV_MTU))
1855 atomic_store_int(&rt->rt_mtu, 0);