Lines Matching refs:rtm

321 	struct rt_msghdr *rtm = NULL;
348 if (len < sizeof(*rtm) ||
353 R_Malloc(rtm, struct rt_msghdr *, len);
354 if (rtm == NULL) {
358 m_copydata(m, 0, len, (caddr_t)rtm);
359 if (rtm->rtm_version != RTM_VERSION) {
368 if (rtm->rtm_type == RTM_GET_SILENT) {
372 rtm->rtm_type = RTM_GET;
379 if (rtm->rtm_type != RTM_GET && (so->so_state & SS_PRIV) == 0) {
384 rtm->rtm_pid = proc_selfpid();
385 info.rti_addrs = rtm->rtm_addrs;
386 if (rt_xaddrs((caddr_t)(rtm + 1), len + (caddr_t)rtm, &info)) {
433 if (rtm->rtm_flags & RTF_IFSCOPE) {
436 ifscope = rtm->rtm_index;
442 if (rtm->rtm_flags & RTF_PROXY)
457 switch (rtm->rtm_type) {
492 info.rti_info[RTAX_NETMASK], rtm->rtm_flags, &saved_nrt, ifscope);
527 rt_setmetrics(rtm->rtm_inits,
528 &rtm->rtm_rmx, saved_nrt);
529 saved_nrt->rt_rmx.rmx_locks &= ~(rtm->rtm_inits);
531 (rtm->rtm_inits & rtm->rtm_rmx.rmx_locks);
540 info.rti_info[RTAX_GATEWAY], info.rti_info[RTAX_NETMASK], rtm->rtm_flags, &saved_nrt, ifscope);
568 switch(rtm->rtm_type) {
580 if (rtm->rtm_addrs & (RTA_IFP | RTA_IFA)) {
589 rtm->rtm_index = ifp->if_index;
595 rtm->rtm_index = ifp->if_index;
599 len = rt_msg2(rtm->rtm_type, &info, (caddr_t)0,
603 if (len > rtm->rtm_msglen) {
612 Bcopy(rtm, new_rtm, rtm->rtm_msglen);
613 R_Free(rtm); rtm = new_rtm;
617 (void)rt_msg2(rtm->rtm_type, &info, (caddr_t)rtm,
621 rtm->rtm_flags = rt->rt_flags;
622 rt_getmetrics(rt, &rtm->rtm_rmx);
623 rtm->rtm_addrs = info.rti_addrs;
656 rt_setmetrics(rtm->rtm_inits, &rtm->rtm_rmx,
669 rt->rt_rmx.rmx_locks &= ~(rtm->rtm_inits);
671 (rtm->rtm_inits & rtm->rtm_rmx.rmx_locks);
681 if (rtm) {
683 rtm->rtm_errno = error;
685 rtm->rtm_flags |= RTF_DONE;
700 if (rtm)
701 R_Free(rtm);
708 if (rtm) {
709 m_copyback(m, 0, rtm->rtm_msglen, (caddr_t)rtm);
710 if (m->m_pkthdr.len < rtm->rtm_msglen) {
713 } else if (m->m_pkthdr.len > rtm->rtm_msglen)
714 m_adj(m, rtm->rtm_msglen - m->m_pkthdr.len);
715 R_Free(rtm);
1016 struct rt_msghdr *rtm;
1054 rtm = mtod(m, struct rt_msghdr *);
1055 bzero((caddr_t)rtm, len);
1086 rtm->rtm_msglen = len;
1087 rtm->rtm_version = RTM_VERSION;
1088 rtm->rtm_type = type;
1187 struct rt_msghdr *rtm = (struct rt_msghdr *)(void *)cp0;
1189 rtm->rtm_version = RTM_VERSION;
1190 rtm->rtm_type = type;
1191 rtm->rtm_msglen = len;
1205 struct rt_msghdr *rtm;
1215 rtm = mtod(m, struct rt_msghdr *);
1216 rtm->rtm_flags = RTF_DONE | flags;
1217 rtm->rtm_errno = error;
1218 rtm->rtm_addrs = rtinfo->rti_addrs;
1316 struct rt_msghdr *rtm;
1325 rtm = mtod(m, struct rt_msghdr *);
1326 rtm->rtm_index = ifp->if_index;
1327 rtm->rtm_flags |= rt->rt_flags;
1328 rtm->rtm_errno = error;
1329 rtm->rtm_addrs = info.rti_addrs;
1404 struct rt_msghdr *rtm =
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;
1411 rtm->rtm_pid = 0;
1412 rtm->rtm_seq = 0;
1413 rtm->rtm_errno = 0;
1414 rtm->rtm_addrs = info.rti_addrs;
1415 error = SYSCTL_OUT(w->w_req, (caddr_t)rtm, size);
1422 struct rt_msghdr2 *rtm =
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;
1431 rtm->rtm_parentflags = rt->rt_parent->rt_flags;
1433 rtm->rtm_parentflags = 0;
1434 rtm->rtm_reserved = 0;
1435 rtm->rtm_addrs = info.rti_addrs;
1436 error = SYSCTL_OUT(w->w_req, (caddr_t)rtm, size);