• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /macosx-10.10/xnu-2782.1.97/bsd/net/

Lines Matching refs:rt

299 	struct rtentry *rt = NULL;
500 rt = saved_nrt;
501 RT_LOCK(rt);
516 rt = rt_lookup(TRUE, info.rti_info[RTAX_DST],
518 if (rt == NULL)
520 RT_LOCK(rt);
532 RT_LOCK_ASSERT_HELD(rt);
533 info.rti_info[RTAX_DST] = rt_key(rt);
535 info.rti_info[RTAX_GATEWAY] = rt->rt_gateway;
536 info.rti_info[RTAX_NETMASK] = rt_mask(rt);
537 info.rti_info[RTAX_GENMASK] = rt->rt_genmask;
539 ifp = rt->rt_ifp;
548 rt->rt_ifa->ifa_addr;
554 } else if ((ifp = rt->rt_ifp) != NULL) {
566 RT_UNLOCK(rt);
580 rtm->rtm_flags = rt->rt_flags;
581 rt_getmetrics(rt, &rtm->rtm_rmx);
590 (error = rt_setgate(rt, rt_key(rt),
593 RT_UNLOCK(rt);
603 if ((rt->rt_flags & RTF_GATEWAY) &&
605 info.rti_info[RTAX_GATEWAY] = rt->rt_gateway;
612 rt_setif(rt,
616 rt_setmetrics(rtm->rtm_inits, &rtm->rtm_rmx, rt);
618 rt->rt_genmask = info.rti_info[RTAX_GENMASK];
621 rt->rt_rmx.rmx_locks &= ~(rtm->rtm_inits);
622 rt->rt_rmx.rmx_locks |=
626 RT_UNLOCK(rt);
639 if (rt != NULL) {
640 RT_LOCK_ASSERT_NOTHELD(rt);
641 rtfree_locked(rt);
696 rt_setexpire(struct rtentry *rt, uint64_t expiry)
699 rt->rt_expire = expiry;
701 rt->rt_rmx.rmx_expire = expiry + rt->base_calendartime -
702 rt->base_uptime;
704 rt->rt_rmx.rmx_expire = 0;
775 rt_setif(struct rtentry *rt, struct sockaddr *Ifpaddr, struct sockaddr *Ifaaddr,
784 RT_LOCK_ASSERT_HELD(rt);
787 if (rt->rt_flags & RTF_CONDEMNED)
791 RT_ADDREF_LOCKED(rt);
794 RT_CONVERT_LOCK(rt);
831 RT_UNLOCK(rt);
832 if ((ifa = ifa_ifwithroute_scoped_locked(rt->rt_flags,
833 rt_key(rt), Gate, ifscope)) != NULL)
835 RT_LOCK(rt);
837 if (rt->rt_flags & RTF_CONDEMNED) {
841 RT_REMREF_LOCKED(rt);
848 if (rt_key(rt)->sa_family == AF_INET)
851 else if (rt_key(rt)->sa_family == AF_INET6)
856 struct ifaddr *oifa = rt->rt_ifa;
863 ifa_rtrequest(RTM_DELETE, rt, Gate);
865 rtsetifa(rt, ifa);
867 if (rt->rt_ifp != ifp) {
871 if (rt->rt_llinfo_purge != NULL)
872 rt->rt_llinfo_purge(rt);
877 if (rt->rt_if_ref_fn != NULL) {
878 rt->rt_if_ref_fn(ifp, 1);
879 rt->rt_if_ref_fn(rt->rt_ifp, -1);
882 rt->rt_ifp = ifp;
887 if (rt_primary_default(rt, rt_key(rt))) {
888 set_primary_ifscope(rt_key(rt)->sa_family,
889 rt->rt_ifp->if_index);
895 if (!(rt->rt_rmx.rmx_locks & RTV_MTU))
896 rt->rt_rmx.rmx_mtu = rt->rt_ifp->if_mtu;
898 if (rt->rt_ifa != NULL) {
899 IFA_LOCK_SPIN(rt->rt_ifa);
900 ifa_rtrequest = rt->rt_ifa->ifa_rtrequest;
901 IFA_UNLOCK(rt->rt_ifa);
903 ifa_rtrequest(RTM_ADD, rt, Gate);
907 RT_REMREF_LOCKED(rt);
915 if (rt->rt_ifa != NULL) {
916 IFA_LOCK_SPIN(rt->rt_ifa);
917 ifa_rtrequest = rt->rt_ifa->ifa_rtrequest;
918 IFA_UNLOCK(rt->rt_ifa);
920 ifa_rtrequest(RTM_ADD, rt, Gate);
927 if ((rt->rt_ifp->if_flags & IFF_LOOPBACK) &&
928 (rt->rt_flags & RTF_HOST) && rt->rt_ifa->ifa_ifp == rt->rt_ifp) {
929 ifa = ifa_ifwithaddr(rt_key(rt));
931 if (ifa != rt->rt_ifa)
932 rtsetifa(rt, ifa);
938 RT_REMREF_LOCKED(rt);
1246 rt_newaddrmsg(int cmd, struct ifaddr *ifa, int error, struct rtentry *rt)
1256 RT_LOCK_ASSERT_HELD(rt);
1262 RT_CONVERT_LOCK(rt);
1302 if (rt == NULL)
1304 info.rti_info[RTAX_NETMASK] = rt_mask(rt);
1305 info.rti_info[RTAX_DST] = sa = rt_key(rt);
1306 info.rti_info[RTAX_GATEWAY] = rt->rt_gateway;
1311 rtm->rtm_flags |= rt->rt_flags;
1446 struct rtentry *rt = (struct rtentry *)rn;
1453 RT_LOCK(rt);
1454 if (w->w_op == NET_RT_FLAGS && !(rt->rt_flags & w->w_arg))
1457 info.rti_info[RTAX_DST] = rt_key(rt);
1458 info.rti_info[RTAX_GATEWAY] = rt->rt_gateway;
1459 info.rti_info[RTAX_NETMASK] = rt_mask(rt);
1460 info.rti_info[RTAX_GENMASK] = rt->rt_genmask;
1468 rtm->rtm_flags = rt->rt_flags;
1469 rtm->rtm_use = rt->rt_use;
1470 rt_getmetrics(rt, &rtm->rtm_rmx);
1471 rtm->rtm_index = rt->rt_ifp->if_index;
1484 rtm->rtm_flags = rt->rt_flags;
1485 rtm->rtm_use = rt->rt_use;
1486 rt_getmetrics(rt, &rtm->rtm_rmx);
1487 rtm->rtm_index = rt->rt_ifp->if_index;
1488 rtm->rtm_refcnt = rt->rt_refcnt;
1489 if (rt->rt_parent)
1490 rtm->rtm_parentflags = rt->rt_parent->rt_flags;
1500 RT_UNLOCK(rt);
1512 struct rtentry *rt = (struct rtentry *)rn;
1519 RT_LOCK(rt);
1520 if (w->w_op == NET_RT_DUMPX_FLAGS && !(rt->rt_flags & w->w_arg))
1523 info.rti_info[RTAX_DST] = rt_key(rt);
1524 info.rti_info[RTAX_GATEWAY] = rt->rt_gateway;
1525 info.rti_info[RTAX_NETMASK] = rt_mask(rt);
1526 info.rti_info[RTAX_GENMASK] = rt->rt_genmask;
1533 ertm->rtm_flags = rt->rt_flags;
1534 ertm->rtm_use = rt->rt_use;
1535 rt_getmetrics(rt, &ertm->rtm_rmx);
1536 ertm->rtm_index = rt->rt_ifp->if_index;
1541 if (rt->rt_llinfo_get_ri == NULL) {
1547 rt->rt_llinfo_get_ri(rt, &ertm->rtm_ri);
1553 RT_UNLOCK(rt);