MCPcopy Create free account
hub / github.com/F-Stack/f-stack / sysctl_iflist_ifml

Function sysctl_iflist_ifml

freebsd/net/rtsock.c:2197–2235  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2195}
2196
2197static int
2198sysctl_iflist_ifml(struct ifnet *ifp, const struct if_data *src_ifd,
2199 struct rt_addrinfo *info, struct walkarg *w, int len)
2200{
2201 struct if_msghdrl *ifm;
2202 struct if_data *ifd;
2203
2204 ifm = (struct if_msghdrl *)w->w_tmem;
2205
2206#ifdef COMPAT_FREEBSD32
2207 if (w->w_req->flags & SCTL_MASK32) {
2208 struct if_msghdrl32 *ifm32;
2209
2210 ifm32 = (struct if_msghdrl32 *)ifm;
2211 ifm32->ifm_addrs = info->rti_addrs;
2212 ifm32->ifm_flags = ifp->if_flags | ifp->if_drv_flags;
2213 ifm32->ifm_index = ifp->if_index;
2214 ifm32->_ifm_spare1 = 0;
2215 ifm32->ifm_len = sizeof(*ifm32);
2216 ifm32->ifm_data_off = offsetof(struct if_msghdrl32, ifm_data);
2217 ifm32->_ifm_spare2 = 0;
2218 ifd = &ifm32->ifm_data;
2219 } else
2220#endif
2221 {
2222 ifm->ifm_addrs = info->rti_addrs;
2223 ifm->ifm_flags = ifp->if_flags | ifp->if_drv_flags;
2224 ifm->ifm_index = ifp->if_index;
2225 ifm->_ifm_spare1 = 0;
2226 ifm->ifm_len = sizeof(*ifm);
2227 ifm->ifm_data_off = offsetof(struct if_msghdrl, ifm_data);
2228 ifm->_ifm_spare2 = 0;
2229 ifd = &ifm->ifm_data;
2230 }
2231
2232 memcpy(ifd, src_ifd, sizeof(*ifd));
2233
2234 return (SYSCTL_OUT(w->w_req, (caddr_t)ifm, len));
2235}
2236
2237static int
2238sysctl_iflist_ifm(struct ifnet *ifp, const struct if_data *src_ifd,

Callers 1

sysctl_iflistFunction · 0.85

Calls 1

memcpyFunction · 0.50

Tested by

no test coverage detected