| 1321 | } |
| 1322 | |
| 1323 | static int |
| 1324 | udp6_send(struct socket *so, int flags, struct mbuf *m, |
| 1325 | struct sockaddr *addr, struct mbuf *control, struct thread *td) |
| 1326 | { |
| 1327 | int error; |
| 1328 | |
| 1329 | if (addr) { |
| 1330 | if (addr->sa_len != sizeof(struct sockaddr_in6)) { |
| 1331 | error = EINVAL; |
| 1332 | goto bad; |
| 1333 | } |
| 1334 | if (addr->sa_family != AF_INET6) { |
| 1335 | error = EAFNOSUPPORT; |
| 1336 | goto bad; |
| 1337 | } |
| 1338 | } |
| 1339 | |
| 1340 | return (udp6_output(so, flags, m, addr, control, td)); |
| 1341 | |
| 1342 | bad: |
| 1343 | if (control) |
| 1344 | m_freem(control); |
| 1345 | m_freem(m); |
| 1346 | return (error); |
| 1347 | } |
| 1348 | |
| 1349 | struct pr_usrreqs udp6_usrreqs = { |
| 1350 | .pru_abort = udp6_abort, |
nothing calls this directly
no test coverage detected