Lines Matching refs:rt

455     struct rtentry *rt, union sockaddr_union *saun, struct ucred *cred)
459 if (prison_if(cred, rt->rt_ifa->ifa_addr) == 0) {
460 info->rti_info[RTAX_IFA] = rt->rt_ifa->ifa_addr;
494 ia = ((struct sockaddr_in *)rt->rt_ifa->ifa_addr)->
537 ia6 = ((struct sockaddr_in6 *)rt->rt_ifa->ifa_addr)->
564 struct rtentry *rt = NULL;
713 rt = saved_nrt;
730 rt = (struct rtentry *) rnh->rnh_lookup(info.rti_info[RTAX_DST],
732 if (rt == NULL) { /* XXX looks bogus */
747 rt = rt_mpath_matchgate(rt, info.rti_info[RTAX_GATEWAY]);
748 if (!rt) {
763 if (rt->rt_ifp != NULL &&
764 rt->rt_ifp->if_type == IFT_PROPVIRTUAL) {
773 rt_maskedcopy(rt->rt_ifa->ifa_addr,
775 rt->rt_ifa->ifa_netmask);
777 * refactor rt and no lock operation necessary
779 rt = (struct rtentry *)rnh->rnh_matchaddr(&laddr, rnh);
780 if (rt == NULL) {
785 RT_LOCK(rt);
786 RT_ADDREF(rt);
803 (!rt_mask(rt) != !info.rti_info[RTAX_NETMASK])) {
804 RT_UNLOCK(rt);
812 RT_LOCK_ASSERT(rt);
813 if ((rt->rt_flags & RTF_HOST) == 0
816 rt_key(rt)) != 0) {
817 RT_UNLOCK(rt);
820 info.rti_info[RTAX_DST] = rt_key(rt);
821 info.rti_info[RTAX_GATEWAY] = rt->rt_gateway;
822 info.rti_info[RTAX_NETMASK] = rt_mask(rt);
825 ifp = rt->rt_ifp;
829 error = rtm_get_jailed(&info, ifp, rt,
832 RT_UNLOCK(rt);
837 rt->rt_ifa->ifa_dstaddr;
843 } else if ((ifp = rt->rt_ifp) != NULL) {
851 RT_UNLOCK(rt);
858 if (rt->rt_flags & RTF_GWFLAG_COMPAT)
860 (rt->rt_flags & ~RTF_GWFLAG_COMPAT);
862 rtm->rtm_flags = rt->rt_flags;
863 rt_getmetrics(&rt->rt_rmx, &rtm->rtm_rmx);
873 if (((rt->rt_flags & RTF_GATEWAY) &&
878 rt->rt_ifa->ifa_addr))) {
879 RT_UNLOCK(rt);
881 error = rt_getifa_fib(&info, rt->rt_fibnum);
892 RT_LOCK(rt);
895 info.rti_ifa != rt->rt_ifa &&
896 rt->rt_ifa != NULL &&
897 rt->rt_ifa->ifa_rtrequest != NULL) {
898 rt->rt_ifa->ifa_rtrequest(RTM_DELETE, rt,
900 ifa_free(rt->rt_ifa);
903 RT_UNLOCK(rt);
905 RT_LOCK(rt);
907 error = rt_setgate(rt, rt_key(rt),
911 RT_UNLOCK(rt);
914 rt->rt_flags &= ~RTF_GATEWAY;
915 rt->rt_flags |= (RTF_GATEWAY & info.rti_flags);
918 info.rti_ifa != rt->rt_ifa) {
920 rt->rt_ifa = info.rti_ifa;
921 rt->rt_ifp = info.rti_ifp;
924 rt->rt_flags = (rt->rt_flags & ~RTF_FMASK) |
927 &rt->rt_rmx);
928 rtm->rtm_index = rt->rt_ifp->if_index;
929 if (rt->rt_ifa && rt->rt_ifa->ifa_rtrequest)
930 rt->rt_ifa->ifa_rtrequest(RTM_ADD, rt, &info);
936 RT_UNLOCK(rt);
950 if (rt) /* XXX can this be true? */
951 RTFREE(rt);
1350 rt_newaddrmsg_fib(int cmd, struct ifaddr *ifa, int error, struct rtentry *rt,
1396 if (rt == NULL)
1398 info.rti_info[RTAX_NETMASK] = rt_mask(rt);
1399 info.rti_info[RTAX_DST] = sa = rt_key(rt);
1400 info.rti_info[RTAX_GATEWAY] = rt->rt_gateway;
1405 rtm->rtm_flags |= rt->rt_flags;
1421 rt_newaddrmsg(int cmd, struct ifaddr *ifa, int error, struct rtentry *rt)
1424 rt_newaddrmsg_fib(cmd, ifa, error, rt, RTS_ALLFIBS);
1576 struct rtentry *rt = (struct rtentry *)rn;
1580 if (w->w_op == NET_RT_FLAGS && !(rt->rt_flags & w->w_arg))
1582 if ((rt->rt_flags & RTF_HOST) == 0
1584 : prison_if(w->w_req->td->td_ucred, rt_key(rt)) != 0)
1587 info.rti_info[RTAX_DST] = rt_key(rt);
1588 info.rti_info[RTAX_GATEWAY] = rt->rt_gateway;
1589 info.rti_info[RTAX_NETMASK] = rt_mask(rt);
1591 if (rt->rt_ifp) {
1592 info.rti_info[RTAX_IFP] = rt->rt_ifp->if_addr->ifa_addr;
1593 info.rti_info[RTAX_IFA] = rt->rt_ifa->ifa_addr;
1594 if (rt->rt_ifp->if_flags & IFF_POINTOPOINT)
1595 info.rti_info[RTAX_BRD] = rt->rt_ifa->ifa_dstaddr;
1601 if (rt->rt_flags & RTF_GWFLAG_COMPAT)
1603 (rt->rt_flags & ~RTF_GWFLAG_COMPAT);
1605 rtm->rtm_flags = rt->rt_flags;
1609 rtm->rtm_fmask = rt->rt_rmx.rmx_pksent;
1610 rt_getmetrics(&rt->rt_rmx, &rtm->rtm_rmx);
1611 rtm->rtm_index = rt->rt_ifp->if_index;