| 2235 | } |
| 2236 | |
| 2237 | static int |
| 2238 | sysctl_iflist_ifm(struct ifnet *ifp, const struct if_data *src_ifd, |
| 2239 | struct rt_addrinfo *info, struct walkarg *w, int len) |
| 2240 | { |
| 2241 | struct if_msghdr *ifm; |
| 2242 | struct if_data *ifd; |
| 2243 | |
| 2244 | ifm = (struct if_msghdr *)w->w_tmem; |
| 2245 | |
| 2246 | #ifdef COMPAT_FREEBSD32 |
| 2247 | if (w->w_req->flags & SCTL_MASK32) { |
| 2248 | struct if_msghdr32 *ifm32; |
| 2249 | |
| 2250 | ifm32 = (struct if_msghdr32 *)ifm; |
| 2251 | ifm32->ifm_addrs = info->rti_addrs; |
| 2252 | ifm32->ifm_flags = ifp->if_flags | ifp->if_drv_flags; |
| 2253 | ifm32->ifm_index = ifp->if_index; |
| 2254 | ifm32->_ifm_spare1 = 0; |
| 2255 | ifd = &ifm32->ifm_data; |
| 2256 | } else |
| 2257 | #endif |
| 2258 | { |
| 2259 | ifm->ifm_addrs = info->rti_addrs; |
| 2260 | ifm->ifm_flags = ifp->if_flags | ifp->if_drv_flags; |
| 2261 | ifm->ifm_index = ifp->if_index; |
| 2262 | ifm->_ifm_spare1 = 0; |
| 2263 | ifd = &ifm->ifm_data; |
| 2264 | } |
| 2265 | |
| 2266 | memcpy(ifd, src_ifd, sizeof(*ifd)); |
| 2267 | |
| 2268 | return (SYSCTL_OUT(w->w_req, (caddr_t)ifm, len)); |
| 2269 | } |
| 2270 | |
| 2271 | static int |
| 2272 | sysctl_iflist_ifaml(struct ifaddr *ifa, struct rt_addrinfo *info, |
no test coverage detected