| 1384 | } |
| 1385 | |
| 1386 | int |
| 1387 | ff_accept4(int s, struct linux_sockaddr * addr, |
| 1388 | socklen_t * addrlen, int flags) |
| 1389 | { |
| 1390 | int rc; |
| 1391 | struct file *fp; |
| 1392 | struct sockaddr *pf = NULL; |
| 1393 | socklen_t socklen = sizeof(struct sockaddr_storage); |
| 1394 | |
| 1395 | if ((rc = kern_accept4(curthread, s, &pf, &socklen, linux2freebsd_socket_flags(flags), &fp))) |
| 1396 | goto kern_fail; |
| 1397 | |
| 1398 | rc = curthread->td_retval[0]; |
| 1399 | fdrop(fp, curthread); |
| 1400 | |
| 1401 | if (addr && pf) |
| 1402 | freebsd2linux_sockaddr(addr, pf); |
| 1403 | |
| 1404 | if (addrlen) |
| 1405 | *addrlen = pf->sa_len; |
| 1406 | |
| 1407 | if(pf != NULL) |
| 1408 | free(pf, M_SONAME); |
| 1409 | return (rc); |
| 1410 | |
| 1411 | kern_fail: |
| 1412 | if(pf != NULL) |
| 1413 | free(pf, M_SONAME); |
| 1414 | ff_os_errno(rc); |
| 1415 | return (-1); |
| 1416 | } |
| 1417 | |
| 1418 | int |
| 1419 | ff_listen(int s, int backlog) |
no test coverage detected