| 2171 | } |
| 2172 | |
| 2173 | static void |
| 2174 | unp_internalize_cleanup_rights(struct mbuf *control) |
| 2175 | { |
| 2176 | struct cmsghdr *cp; |
| 2177 | struct mbuf *m; |
| 2178 | void *data; |
| 2179 | socklen_t datalen; |
| 2180 | |
| 2181 | for (m = control; m != NULL; m = m->m_next) { |
| 2182 | cp = mtod(m, struct cmsghdr *); |
| 2183 | if (cp->cmsg_level != SOL_SOCKET || |
| 2184 | cp->cmsg_type != SCM_RIGHTS) |
| 2185 | continue; |
| 2186 | data = CMSG_DATA(cp); |
| 2187 | datalen = (caddr_t)cp + cp->cmsg_len - (caddr_t)data; |
| 2188 | unp_freerights(data, datalen / sizeof(struct filedesc *)); |
| 2189 | } |
| 2190 | } |
| 2191 | |
| 2192 | static int |
| 2193 | unp_internalize(struct mbuf **controlp, struct thread *td) |
no test coverage detected