Lines Matching refs:info
164 cleanup_xaddrs_lladdr(struct rt_addrinfo *info) in cleanup_xaddrs_lladdr() argument
166 struct sockaddr_dl *sdl = (struct sockaddr_dl *)info->rti_info[RTAX_GATEWAY]; in cleanup_xaddrs_lladdr()
181 cleanup_xaddrs_gateway(struct rt_addrinfo *info) in cleanup_xaddrs_gateway() argument
183 struct sockaddr *gw = info->rti_info[RTAX_GATEWAY]; in cleanup_xaddrs_gateway()
185 if (info->rti_flags & RTF_LLDATA) in cleanup_xaddrs_gateway()
186 return (cleanup_xaddrs_lladdr(info)); in cleanup_xaddrs_gateway()
235 remove_netmask(struct rt_addrinfo *info) in remove_netmask() argument
237 info->rti_info[RTAX_NETMASK] = NULL; in remove_netmask()
238 info->rti_flags |= RTF_HOST; in remove_netmask()
239 info->rti_addrs &= ~RTA_NETMASK; in remove_netmask()
243 cleanup_xaddrs_inet(struct rt_addrinfo *info) in cleanup_xaddrs_inet() argument
248 dst_sa = (struct sockaddr_in *)info->rti_info[RTAX_DST]; in cleanup_xaddrs_inet()
249 mask_sa = (struct sockaddr_in *)info->rti_info[RTAX_NETMASK]; in cleanup_xaddrs_inet()
271 remove_netmask(info); in cleanup_xaddrs_inet()
274 if (info->rti_info[RTAX_GATEWAY] != NULL) in cleanup_xaddrs_inet()
275 return (cleanup_xaddrs_gateway(info)); in cleanup_xaddrs_inet()
282 cleanup_xaddrs_inet6(struct rt_addrinfo *info) in cleanup_xaddrs_inet6() argument
288 dst_sa = (struct sockaddr_in6 *)info->rti_info[RTAX_DST]; in cleanup_xaddrs_inet6()
289 mask_sa = (struct sockaddr_in6 *)info->rti_info[RTAX_NETMASK]; in cleanup_xaddrs_inet6()
307 remove_netmask(info); in cleanup_xaddrs_inet6()
310 if (info->rti_info[RTAX_GATEWAY] != NULL) in cleanup_xaddrs_inet6()
311 return (cleanup_xaddrs_gateway(info)); in cleanup_xaddrs_inet6()
318 cleanup_xaddrs(struct rt_addrinfo *info) in cleanup_xaddrs() argument
322 if (info->rti_info[RTAX_DST] == NULL) in cleanup_xaddrs()
325 if (info->rti_flags & RTF_LLDATA) { in cleanup_xaddrs()
331 remove_netmask(info); in cleanup_xaddrs()
334 switch (info->rti_info[RTAX_DST]->sa_family) { in cleanup_xaddrs()
336 error = cleanup_xaddrs_inet(info); in cleanup_xaddrs()
340 error = cleanup_xaddrs_inet6(info); in cleanup_xaddrs()
349 rtm_get_jailed(struct rt_addrinfo *info, struct ifnet *ifp, in rtm_get_jailed() argument
358 info->rti_info[RTAX_IFA] = nh->nh_ifa->ifa_addr; in rtm_get_jailed()
362 switch (info->rti_info[RTAX_DST]->sa_family) { in rtm_get_jailed()
400 info->rti_info[RTAX_IFA] = (struct sockaddr *)&saun->sin; in rtm_get_jailed()
444 info->rti_info[RTAX_IFA] = (struct sockaddr *)&saun->sin6; in rtm_get_jailed()
455 fill_blackholeinfo(struct rt_addrinfo *info, union sockaddr_union *saun) in fill_blackholeinfo() argument
464 info->rti_ifp = V_loif; in fill_blackholeinfo()
466 saf = info->rti_info[RTAX_DST]->sa_family; in fill_blackholeinfo()
468 CK_STAILQ_FOREACH(ifa, &info->rti_ifp->if_addrhead, ifa_link) { in fill_blackholeinfo()
470 info->rti_ifa = ifa; in fill_blackholeinfo()
474 if (info->rti_ifa == NULL) in fill_blackholeinfo()
494 info->rti_info[RTAX_GATEWAY] = &saun->sa; in fill_blackholeinfo()
495 info->rti_flags |= RTF_GATEWAY; in fill_blackholeinfo()
506 fill_addrinfo(struct rt_msghdr *rtm, int len, u_int fibnum, struct rt_addrinfo *info) in fill_addrinfo() argument
512 info->rti_addrs = rtm->rtm_addrs; in fill_addrinfo()
514 info->rti_mflags = rtm->rtm_inits; in fill_addrinfo()
515 info->rti_rmx = &rtm->rtm_rmx; in fill_addrinfo()
522 if (rt_xaddrs((caddr_t)(rtm + 1), len + (caddr_t)rtm, info)) in fill_addrinfo()
527 info->rti_flags = rtm->rtm_flags; in fill_addrinfo()
528 error = cleanup_xaddrs(info); in fill_addrinfo()
531 saf = info->rti_info[RTAX_DST]->sa_family; in fill_addrinfo()
550 if (info->rti_info[RTAX_GATEWAY] != NULL && in fill_addrinfo()
551 info->rti_info[RTAX_GATEWAY]->sa_family != AF_LINK) { in fill_addrinfo()
561 gdst = info->rti_info[RTAX_GATEWAY]; in fill_addrinfo()
576 info->rti_flags &= ~RTF_GATEWAY; in fill_addrinfo()
577 info->rti_flags |= RTF_GWFLAG_COMPAT; in fill_addrinfo()
630 handle_rtm_get(struct rt_addrinfo *info, u_int fibnum, in handle_rtm_get() argument
638 saf = info->rti_info[RTAX_DST]->sa_family; in handle_rtm_get()
660 info->rti_info[RTAX_DST], &rnh->head); in handle_rtm_get()
663 info->rti_info[RTAX_DST], in handle_rtm_get()
664 info->rti_info[RTAX_NETMASK], &rnh->head); in handle_rtm_get()
671 nh = select_nhop(rt_get_raw_nhop(rc->rc_rt), info->rti_info[RTAX_GATEWAY]); in handle_rtm_get()
690 ifa = ifa_ifwithnet(info->rti_info[RTAX_DST], 1, in handle_rtm_get()
709 nh = select_nhop(rt_get_raw_nhop(rc->rc_rt), info->rti_info[RTAX_GATEWAY]); in handle_rtm_get()
935 update_rtm_from_rc(struct rt_addrinfo *info, struct rt_msghdr **prtm, in update_rtm_from_rc() argument
946 int family = info->rti_info[RTAX_DST]->sa_family; in update_rtm_from_rc()
950 info->rti_info[RTAX_DST] = &sa_dst.sa; in update_rtm_from_rc()
951 info->rti_info[RTAX_NETMASK] = rt_is_host(rc->rc_rt) ? NULL : &sa_mask.sa; in update_rtm_from_rc()
952 info->rti_info[RTAX_GATEWAY] = &nh->gw_sa; in update_rtm_from_rc()
953 info->rti_info[RTAX_GENMASK] = 0; in update_rtm_from_rc()
957 info->rti_info[RTAX_IFP] = in update_rtm_from_rc()
959 error = rtm_get_jailed(info, ifp, nh, in update_rtm_from_rc()
964 info->rti_info[RTAX_BRD] = in update_rtm_from_rc()
968 info->rti_info[RTAX_IFP] = NULL; in update_rtm_from_rc()
969 info->rti_info[RTAX_IFA] = NULL; in update_rtm_from_rc()
975 rtsock_msg_buffer(rtm->rtm_type, info, NULL, &len); in update_rtm_from_rc()
999 rtsock_msg_buffer(rtm->rtm_type, info, &w, &len); in update_rtm_from_rc()
1007 rtm->rtm_addrs = info->rti_addrs; in update_rtm_from_rc()
1037 struct rt_addrinfo info; in ff_rtioctl() local
1067 bzero(&info, sizeof(info)); in ff_rtioctl()
1083 if ((error = fill_addrinfo(rtm, len, fibnum, &info)) != 0) { in ff_rtioctl()
1087 saf = info.rti_info[RTAX_DST]->sa_family; in ff_rtioctl()
1091 error = lla_rt_output(rtm, &info); in ff_rtioctl()
1103 error = fill_blackholeinfo(&info, &gw_saun); in ff_rtioctl()
1115 if (info.rti_info[RTAX_GATEWAY] == NULL) in ff_rtioctl()
1118 error = rib_action(fibnum, rtm->rtm_type, &info, &rc); in ff_rtioctl()
1139 error = rib_action(fibnum, RTM_DELETE, &info, &rc); in ff_rtioctl()
1160 error = handle_rtm_get(&info, fibnum, rtm, &rc); in ff_rtioctl()
1167 info.rti_info[RTAX_NETMASK] == NULL, in ff_rtioctl()
1168 info.rti_info[RTAX_DST])) { in ff_rtioctl()
1172 error = update_rtm_from_rc(&info, &rtm, alloc_len, &rc, nh, maxlen); in ff_rtioctl()
1206 if (info.rti_info[i] == NULL) in ff_rtioctl()
1208 if (info.rti_info[i]->sa_family != AF_INET6) in ff_rtioctl()
1210 bcopy(info.rti_info[i], sin6, sizeof(*sin6)); in ff_rtioctl()
1212 bcopy(sin6, info.rti_info[i], in ff_rtioctl()
1242 struct rt_addrinfo info;
1271 bzero(&info, sizeof(info));
1284 info.rti_addrs = rtm->rtm_addrs;
1286 info.rti_mflags = rtm->rtm_inits;
1287 info.rti_rmx = &rtm->rtm_rmx;
1294 if (rt_xaddrs((caddr_t)(rtm + 1), len + (caddr_t)rtm, &info))
1297 info.rti_flags = rtm->rtm_flags;
1298 if (info.rti_info[RTAX_DST] == NULL ||
1299 info.rti_info[RTAX_DST]->sa_family >= AF_MAX ||
1300 (info.rti_info[RTAX_GATEWAY] != NULL &&
1301 info.rti_info[RTAX_GATEWAY]->sa_family >= AF_MAX))
1303 saf = info.rti_info[RTAX_DST]->sa_family;
1313 if (info.rti_info[RTAX_GATEWAY] != NULL &&
1314 info.rti_info[RTAX_GATEWAY]->sa_family != AF_LINK) {
1323 gdst = info.rti_info[RTAX_GATEWAY];
1338 info.rti_flags &= ~RTF_GATEWAY;
1339 info.rti_flags |= RTF_GWFLAG_COMPAT;
1350 if (info.rti_info[RTAX_GATEWAY] == NULL)
1355 if (info.rti_info[RTAX_GATEWAY]->sa_family == AF_LINK &&
1357 error = lla_rt_output(rtm, &info);
1364 error = rtrequest1_fib(rtm->rtm_type, &info, &saved_nrt,
1380 if (info.rti_info[RTAX_GATEWAY] &&
1381 (info.rti_info[RTAX_GATEWAY]->sa_family == AF_LINK) &&
1383 error = lla_rt_output(rtm, &info);
1390 error = rtrequest1_fib(RTM_DELETE, &info, &saved_nrt, fibnum);
1409 if (info.rti_info[RTAX_NETMASK] == NULL &&
1417 info.rti_info[RTAX_DST], &rnh->head);
1420 info.rti_info[RTAX_DST],
1421 info.rti_info[RTAX_NETMASK], &rnh->head);
1437 (rtm->rtm_type != RTM_GET || info.rti_info[RTAX_GATEWAY])) {
1438 rt = rt_mpath_matchgate(rt, info.rti_info[RTAX_GATEWAY]);
1458 ifa = ifa_ifwithnet(info.rti_info[RTAX_DST], 1,
1491 info.rti_info[RTAX_DST] = rt_key(rt);
1492 info.rti_info[RTAX_GATEWAY] = rt->rt_gateway;
1493 info.rti_info[RTAX_NETMASK] = rtsock_fix_netmask(rt_key(rt),
1495 info.rti_info[RTAX_GENMASK] = 0;
1499 info.rti_info[RTAX_IFP] =
1501 error = rtm_get_jailed(&info, ifp, rt,
1508 info.rti_info[RTAX_BRD] =
1512 info.rti_info[RTAX_IFP] = NULL;
1513 info.rti_info[RTAX_IFA] = NULL;
1520 rtsock_msg_buffer(rtm->rtm_type, &info, NULL, &len);
1541 rtsock_msg_buffer(rtm->rtm_type, &info, &w, &len);
1549 rtm->rtm_addrs = info.rti_addrs;
1568 if (info.rti_info[i] == NULL)
1570 if (info.rti_info[i]->sa_family != AF_INET6)
1572 bcopy(info.rti_info[i], sin6, sizeof(*sin6));
1574 bcopy(sin6, info.rti_info[i],