Lines Matching defs:rt

322 	struct rtentry *rt = NULL;
542 rt = saved_nrt;
543 RT_LOCK(rt);
558 rt = rt_lookup(TRUE, info.rti_info[RTAX_DST], info.rti_info[RTAX_NETMASK], rnh, ifscope);
559 if (rt == NULL)
561 RT_LOCK(rt);
574 RT_LOCK_ASSERT_HELD(rt);
575 info.rti_info[RTAX_DST] = rt_key(rt);
577 info.rti_info[RTAX_GATEWAY] = rt->rt_gateway;
578 info.rti_info[RTAX_NETMASK] = rt_mask(rt);
579 info.rti_info[RTAX_GENMASK] = rt->rt_genmask;
581 ifp = rt->rt_ifp;
588 info.rti_info[RTAX_IFA] = rt->rt_ifa->ifa_addr;
594 } else if ((ifp = rt->rt_ifp) != NULL) {
607 RT_UNLOCK(rt);
621 rtm->rtm_flags = rt->rt_flags;
622 rt_getmetrics(rt, &rtm->rtm_rmx);
630 if (info.rti_info[RTAX_GATEWAY] && (error = rt_setgate(rt,
631 rt_key(rt), info.rti_info[RTAX_GATEWAY]))) {
633 RT_UNLOCK(rt);
643 if ((rt->rt_flags & RTF_GATEWAY) && !info.rti_info[RTAX_GATEWAY])
644 info.rti_info[RTAX_GATEWAY] = rt->rt_gateway;
652 rt_setif(rt, info.rti_info[RTAX_IFP], info.rti_info[RTAX_IFA], info.rti_info[RTAX_GATEWAY],
657 rt);
660 if (rt->rt_ifa && rt->rt_ifa->ifa_rtrequest)
661 rt->rt_ifa->ifa_rtrequest(RTM_ADD, rt, info.rti_info[RTAX_GATEWAY]);
664 rt->rt_genmask = info.rti_info[RTAX_GENMASK];
669 rt->rt_rmx.rmx_locks &= ~(rtm->rtm_inits);
670 rt->rt_rmx.rmx_locks |=
674 RT_UNLOCK(rt);
687 if (rt != NULL) {
688 RT_LOCK_ASSERT_NOTHELD(rt);
689 rtfree_locked(rt);
743 rt_setexpire(struct rtentry *rt, uint64_t expiry)
746 rt->rt_expire = expiry;
748 rt->rt_rmx.rmx_expire = expiry + rt->base_calendartime -
749 rt->base_uptime;
751 rt->rt_rmx.rmx_expire = 0;
825 rt_setif(struct rtentry *rt, struct sockaddr *Ifpaddr, struct sockaddr *Ifaaddr,
835 RT_LOCK_ASSERT_HELD(rt);
842 if (rt->rt_flags & RTF_CONDEMNED)
846 RT_ADDREF_LOCKED(rt);
849 RT_CONVERT_LOCK(rt);
886 RT_UNLOCK(rt);
887 if ((ifa = ifa_ifwithroute_scoped_locked(rt->rt_flags,
888 rt_key(rt), Gate, ifscope)) != NULL)
890 RT_LOCK(rt);
892 if (rt->rt_flags & RTF_CONDEMNED) {
896 RT_REMREF_LOCKED(rt);
902 struct ifaddr *oifa = rt->rt_ifa;
909 ifa_rtrequest(RTM_DELETE, rt, Gate);
911 rtsetifa(rt, ifa);
913 if (rt->rt_ifp != ifp) {
917 if (rt->rt_llinfo_purge != NULL)
918 rt->rt_llinfo_purge(rt);
923 if (rt->rt_if_ref_fn != NULL) {
924 rt->rt_if_ref_fn(ifp, 1);
925 rt->rt_if_ref_fn(rt->rt_ifp, -1);
928 rt->rt_ifp = ifp;
933 if (rt_primary_default(rt, rt_key(rt))) {
934 set_primary_ifscope(rt_key(rt)->sa_family,
935 rt->rt_ifp->if_index);
937 rt->rt_rmx.rmx_mtu = ifp->if_mtu;
938 if (rt->rt_ifa != NULL) {
939 IFA_LOCK_SPIN(rt->rt_ifa);
940 ifa_rtrequest = rt->rt_ifa->ifa_rtrequest;
941 IFA_UNLOCK(rt->rt_ifa);
943 ifa_rtrequest(RTM_ADD, rt, Gate);
947 RT_REMREF_LOCKED(rt);
954 if (rt->rt_ifa != NULL) {
955 IFA_LOCK_SPIN(rt->rt_ifa);
956 ifa_rtrequest = rt->rt_ifa->ifa_rtrequest;
957 IFA_UNLOCK(rt->rt_ifa);
959 ifa_rtrequest(RTM_ADD, rt, Gate);
963 RT_REMREF_LOCKED(rt);
1262 rt_newaddrmsg(int cmd, struct ifaddr *ifa, int error, struct rtentry *rt)
1272 RT_LOCK_ASSERT_HELD(rt);
1278 RT_CONVERT_LOCK(rt);
1318 if (rt == 0)
1320 info.rti_info[RTAX_NETMASK] = rt_mask(rt);
1321 info.rti_info[RTAX_DST] = sa = rt_key(rt);
1322 info.rti_info[RTAX_GATEWAY] = rt->rt_gateway;
1327 rtm->rtm_flags |= rt->rt_flags;
1386 struct rtentry *rt = (struct rtentry *)rn;
1390 RT_LOCK(rt);
1391 if (w->w_op == NET_RT_FLAGS && !(rt->rt_flags & w->w_arg)) {
1392 RT_UNLOCK(rt);
1396 info.rti_info[RTAX_DST] = rt_key(rt);
1397 info.rti_info[RTAX_GATEWAY] = rt->rt_gateway;
1398 info.rti_info[RTAX_NETMASK] = rt_mask(rt);
1399 info.rti_info[RTAX_GENMASK] = rt->rt_genmask;
1407 rtm->rtm_flags = rt->rt_flags;
1408 rtm->rtm_use = rt->rt_use;
1409 rt_getmetrics(rt, &rtm->rtm_rmx);
1410 rtm->rtm_index = rt->rt_ifp->if_index;
1416 RT_UNLOCK(rt);
1425 rtm->rtm_flags = rt->rt_flags;
1426 rtm->rtm_use = rt->rt_use;
1427 rt_getmetrics(rt, &rtm->rtm_rmx);
1428 rtm->rtm_index = rt->rt_ifp->if_index;
1429 rtm->rtm_refcnt = rt->rt_refcnt;
1430 if (rt->rt_parent)
1431 rtm->rtm_parentflags = rt->rt_parent->rt_flags;
1437 RT_UNLOCK(rt);
1441 RT_UNLOCK(rt);
1452 struct rtentry *rt = (struct rtentry *)rn;
1456 RT_LOCK(rt);
1457 if (w->w_op == NET_RT_DUMPX_FLAGS && !(rt->rt_flags & w->w_arg)) {
1458 RT_UNLOCK(rt);
1462 info.rti_info[RTAX_DST] = rt_key(rt);
1463 info.rti_info[RTAX_GATEWAY] = rt->rt_gateway;
1464 info.rti_info[RTAX_NETMASK] = rt_mask(rt);
1465 info.rti_info[RTAX_GENMASK] = rt->rt_genmask;
1472 ertm->rtm_flags = rt->rt_flags;
1473 ertm->rtm_use = rt->rt_use;
1474 rt_getmetrics(rt, &ertm->rtm_rmx);
1475 ertm->rtm_index = rt->rt_ifp->if_index;
1480 if (rt->rt_llinfo_get_ri == NULL) {
1487 rt->rt_llinfo_get_ri(rt, &ertm->rtm_ri);
1490 RT_UNLOCK(rt);
1493 RT_UNLOCK(rt);