Lines Matching defs:rtm

191 static void	rt_setmetrics(const struct rt_msghdr *rtm, struct rtentry *rt);
553 struct rt_msghdr *rtm = NULL;
574 if (len < sizeof(*rtm) ||
579 R_Malloc(rtm, struct rt_msghdr *, len);
580 if (rtm == NULL) {
584 m_copydata(m, 0, len, (caddr_t)rtm);
585 if (rtm->rtm_version != RTM_VERSION) {
589 rtm->rtm_pid = curproc->p_pid;
591 info.rti_addrs = rtm->rtm_addrs;
597 if (rt_xaddrs((caddr_t)(rtm + 1), len + (caddr_t)rtm, &info)) {
601 info.rti_flags = rtm->rtm_flags;
612 if (rtm->rtm_type != RTM_GET) {
653 switch (rtm->rtm_type) {
663 (rtm->rtm_flags & RTF_LLDATA) != 0) {
664 error = lla_rt_output(rtm, &info);
678 rt_setmetrics(rtm, saved_nrt);
679 rtm->rtm_index = saved_nrt->rt_ifp->if_index;
690 (rtm->rtm_flags & RTF_LLDATA) != 0) {
691 error = lla_rt_output(rtm, &info);
722 rtm->rtm_type == RTM_GET) {
749 (rtm->rtm_type != RTM_GET || info.rti_info[RTAX_GATEWAY])) {
763 if (rtm->rtm_flags & RTF_ANNOUNCE) {
792 switch(rtm->rtm_type) {
808 if (rtm->rtm_addrs & (RTA_IFP | RTA_IFA)) {
822 rtm->rtm_index = ifp->if_index;
828 rtm->rtm_index = ifp->if_index;
830 len = rt_msg2(rtm->rtm_type, &info, NULL, NULL);
831 if (len > rtm->rtm_msglen) {
838 bcopy(rtm, new_rtm, rtm->rtm_msglen);
839 Free(rtm); rtm = new_rtm;
841 (void)rt_msg2(rtm->rtm_type, &info, (caddr_t)rtm, NULL);
843 rtm->rtm_flags = RTF_GATEWAY |
846 rtm->rtm_flags = rt->rt_flags;
847 rt_getmetrics(rt, &rtm->rtm_rmx);
848 rtm->rtm_addrs = info.rti_addrs;
909 (rtm->rtm_flags & RTF_FMASK);
910 rt_setmetrics(rtm, rt);
911 rtm->rtm_index = rt->rt_ifp->if_index;
927 if (rtm) {
929 rtm->rtm_errno = error;
931 rtm->rtm_flags |= RTF_DONE;
942 if (rtm)
943 Free(rtm);
950 if (rtm) {
953 /* sin6_scope_id is recovered before sending rtm. */
967 m_copyback(m, 0, rtm->rtm_msglen, (caddr_t)rtm);
968 if (m->m_pkthdr.len < rtm->rtm_msglen) {
971 } else if (m->m_pkthdr.len > rtm->rtm_msglen)
972 m_adj(m, rtm->rtm_msglen - m->m_pkthdr.len);
989 /* info.rti_info[RTAX_DST] (used above) can point inside of rtm */
990 if (rtm)
991 Free(rtm);
998 rt_setmetrics(const struct rt_msghdr *rtm, struct rtentry *rt)
1001 if (rtm->rtm_inits & RTV_MTU)
1002 rt->rt_mtu = rtm->rtm_rmx.rmx_mtu;
1003 if (rtm->rtm_inits & RTV_WEIGHT)
1004 rt->rt_weight = rtm->rtm_rmx.rmx_weight;
1006 if (rtm->rtm_inits & RTV_EXPIRE)
1007 rt->rt_expire = rtm->rtm_rmx.rmx_expire ?
1008 rtm->rtm_rmx.rmx_expire - time_second + time_uptime : 0;
1073 struct rt_msghdr *rtm;
1118 rtm = mtod(m, struct rt_msghdr *);
1119 bzero((caddr_t)rtm, len);
1140 rtm->rtm_msglen = len;
1141 rtm->rtm_version = RTM_VERSION;
1142 rtm->rtm_type = type;
1245 struct rt_msghdr *rtm = (struct rt_msghdr *)cp0;
1247 rtm->rtm_version = RTM_VERSION;
1248 rtm->rtm_type = type;
1249 rtm->rtm_msglen = len;
1264 struct rt_msghdr *rtm;
1281 rtm = mtod(m, struct rt_msghdr *);
1282 rtm->rtm_flags = RTF_DONE | flags;
1283 rtm->rtm_errno = error;
1284 rtm->rtm_addrs = rtinfo->rti_addrs;
1382 struct rt_msghdr *rtm;
1393 rtm = mtod(m, struct rt_msghdr *);
1394 rtm->rtm_index = ifp->if_index;
1395 rtm->rtm_flags |= rt->rt_flags;
1396 rtm->rtm_errno = error;
1397 rtm->rtm_addrs = info.rti_addrs;
1581 struct rt_msghdr *rtm = (struct rt_msghdr *)w->w_tmem;
1584 rtm->rtm_flags = RTF_GATEWAY |
1587 rtm->rtm_flags = rt->rt_flags;
1588 rt_getmetrics(rt, &rtm->rtm_rmx);
1589 rtm->rtm_index = rt->rt_ifp->if_index;
1590 rtm->rtm_errno = rtm->rtm_pid = rtm->rtm_seq = 0;
1591 rtm->rtm_addrs = info.rti_addrs;
1592 error = SYSCTL_OUT(w->w_req, (caddr_t)rtm, size);