Deleted Added
full compact
sctp_syscalls.c (123094) sctp_syscalls.c (123811)
1/*
2 * Copyright (c) 1982, 1986, 1989, 1990, 1993
3 * The Regents of the University of California. All rights reserved.
4 *
5 * sendfile(2) and related extensions:
6 * Copyright (c) 1998, David Greenman. All rights reserved.
7 *
8 * Redistribution and use in source and binary forms, with or without

--- 23 unchanged lines hidden (view full) ---

32 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
33 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
34 * SUCH DAMAGE.
35 *
36 * @(#)uipc_syscalls.c 8.4 (Berkeley) 2/21/94
37 */
38
39#include <sys/cdefs.h>
1/*
2 * Copyright (c) 1982, 1986, 1989, 1990, 1993
3 * The Regents of the University of California. All rights reserved.
4 *
5 * sendfile(2) and related extensions:
6 * Copyright (c) 1998, David Greenman. All rights reserved.
7 *
8 * Redistribution and use in source and binary forms, with or without

--- 23 unchanged lines hidden (view full) ---

32 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
33 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
34 * SUCH DAMAGE.
35 *
36 * @(#)uipc_syscalls.c 8.4 (Berkeley) 2/21/94
37 */
38
39#include <sys/cdefs.h>
40__FBSDID("$FreeBSD: head/sys/kern/uipc_syscalls.c 123094 2003-12-01 22:12:50Z dg $");
40__FBSDID("$FreeBSD: head/sys/kern/uipc_syscalls.c 123811 2003-12-24 18:47:43Z alfred $");
41
42#include "opt_compat.h"
43#include "opt_ktrace.h"
44#include "opt_mac.h"
45
46#include <sys/param.h>
47#include <sys/systm.h>
48#include <sys/kernel.h>

--- 179 unchanged lines hidden (view full) ---

228 * accept1()
229 * MPSAFE
230 */
231static int
232accept1(td, uap, compat)
233 struct thread *td;
234 register struct accept_args /* {
235 int s;
41
42#include "opt_compat.h"
43#include "opt_ktrace.h"
44#include "opt_mac.h"
45
46#include <sys/param.h>
47#include <sys/systm.h>
48#include <sys/kernel.h>

--- 179 unchanged lines hidden (view full) ---

228 * accept1()
229 * MPSAFE
230 */
231static int
232accept1(td, uap, compat)
233 struct thread *td;
234 register struct accept_args /* {
235 int s;
236 caddr_t name;
237 int *anamelen;
236 struct sockaddr * __restrict name;
237 socklen_t * __restrict anamelen;
238 } */ *uap;
239 int compat;
240{
241 struct filedesc *fdp;
242 struct file *nfp = NULL;
243 struct sockaddr *sa;
238 } */ *uap;
239 int compat;
240{
241 struct filedesc *fdp;
242 struct file *nfp = NULL;
243 struct sockaddr *sa;
244 int namelen, error, s;
244 socklen_t namelen;
245 int error, s;
245 struct socket *head, *so;
246 int fd;
247 u_int fflag;
248 pid_t pgid;
249 int tmp;
250
251 fdp = td->td_proc->p_fd;
252 if (uap->name) {

--- 658 unchanged lines hidden (view full) ---

911 register struct thread *td;
912 int s;
913 register struct msghdr *mp;
914 void *namelenp;
915{
916 struct uio auio;
917 register struct iovec *iov;
918 register int i;
246 struct socket *head, *so;
247 int fd;
248 u_int fflag;
249 pid_t pgid;
250 int tmp;
251
252 fdp = td->td_proc->p_fd;
253 if (uap->name) {

--- 658 unchanged lines hidden (view full) ---

912 register struct thread *td;
913 int s;
914 register struct msghdr *mp;
915 void *namelenp;
916{
917 struct uio auio;
918 register struct iovec *iov;
919 register int i;
919 int len, error;
920 socklen_t len;
921 int error;
920 struct mbuf *m, *control = 0;
921 caddr_t ctlbuf;
922 struct socket *so;
923 struct sockaddr *fromsa = 0;
924#ifdef KTRACE
925 struct iovec *ktriov = NULL;
926 struct uio ktruio;
927 int iovlen;

--- 36 unchanged lines hidden (view full) ---

964 ktruio = auio;
965 }
966#endif
967 len = auio.uio_resid;
968 error = so->so_proto->pr_usrreqs->pru_soreceive(so, &fromsa, &auio,
969 (struct mbuf **)0, mp->msg_control ? &control : (struct mbuf **)0,
970 &mp->msg_flags);
971 if (error) {
922 struct mbuf *m, *control = 0;
923 caddr_t ctlbuf;
924 struct socket *so;
925 struct sockaddr *fromsa = 0;
926#ifdef KTRACE
927 struct iovec *ktriov = NULL;
928 struct uio ktruio;
929 int iovlen;

--- 36 unchanged lines hidden (view full) ---

966 ktruio = auio;
967 }
968#endif
969 len = auio.uio_resid;
970 error = so->so_proto->pr_usrreqs->pru_soreceive(so, &fromsa, &auio,
971 (struct mbuf **)0, mp->msg_control ? &control : (struct mbuf **)0,
972 &mp->msg_flags);
973 if (error) {
972 if (auio.uio_resid != len && (error == ERESTART ||
974 if (auio.uio_resid != (int)len && (error == ERESTART ||
973 error == EINTR || error == EWOULDBLOCK))
974 error = 0;
975 }
976#ifdef KTRACE
977 if (ktriov != NULL) {
978 if (error == 0) {
979 ktruio.uio_iov = ktriov;
975 error == EINTR || error == EWOULDBLOCK))
976 error = 0;
977 }
978#ifdef KTRACE
979 if (ktriov != NULL) {
980 if (error == 0) {
981 ktruio.uio_iov = ktriov;
980 ktruio.uio_resid = len - auio.uio_resid;
982 ktruio.uio_resid = (int)len - auio.uio_resid;
981 ktrgenio(s, UIO_READ, &ktruio, error);
982 }
983 FREE(ktriov, M_TEMP);
984 }
985#endif
986 if (error)
987 goto out;
983 ktrgenio(s, UIO_READ, &ktruio, error);
984 }
985 FREE(ktriov, M_TEMP);
986 }
987#endif
988 if (error)
989 goto out;
988 td->td_retval[0] = len - auio.uio_resid;
990 td->td_retval[0] = (int)len - auio.uio_resid;
989 if (mp->msg_name) {
990 len = mp->msg_namelen;
991 if (len <= 0 || fromsa == 0)
992 len = 0;
993 else {
994 /* save sa_len before it is destroyed by MSG_COMPAT */
995 len = MIN(len, fromsa->sa_len);
996#ifdef COMPAT_OLDSOCK
997 if (mp->msg_flags & MSG_COMPAT)
998 ((struct osockaddr *)fromsa)->sa_family =
999 fromsa->sa_family;
1000#endif
1001 error = copyout(fromsa, mp->msg_name, (unsigned)len);
1002 if (error)
1003 goto out;
1004 }
1005 mp->msg_namelen = len;
1006 if (namelenp &&
991 if (mp->msg_name) {
992 len = mp->msg_namelen;
993 if (len <= 0 || fromsa == 0)
994 len = 0;
995 else {
996 /* save sa_len before it is destroyed by MSG_COMPAT */
997 len = MIN(len, fromsa->sa_len);
998#ifdef COMPAT_OLDSOCK
999 if (mp->msg_flags & MSG_COMPAT)
1000 ((struct osockaddr *)fromsa)->sa_family =
1001 fromsa->sa_family;
1002#endif
1003 error = copyout(fromsa, mp->msg_name, (unsigned)len);
1004 if (error)
1005 goto out;
1006 }
1007 mp->msg_namelen = len;
1008 if (namelenp &&
1007 (error = copyout(&len, namelenp, sizeof (int)))) {
1009 (error = copyout(&len, namelenp, sizeof (socklen_t)))) {
1008#ifdef COMPAT_OLDSOCK
1009 if (mp->msg_flags & MSG_COMPAT)
1010 error = 0; /* old recvfrom didn't check */
1011 else
1012#endif
1013 goto out;
1014 }
1015 }

--- 59 unchanged lines hidden (view full) ---

1075int
1076recvfrom(td, uap)
1077 struct thread *td;
1078 register struct recvfrom_args /* {
1079 int s;
1080 caddr_t buf;
1081 size_t len;
1082 int flags;
1010#ifdef COMPAT_OLDSOCK
1011 if (mp->msg_flags & MSG_COMPAT)
1012 error = 0; /* old recvfrom didn't check */
1013 else
1014#endif
1015 goto out;
1016 }
1017 }

--- 59 unchanged lines hidden (view full) ---

1077int
1078recvfrom(td, uap)
1079 struct thread *td;
1080 register struct recvfrom_args /* {
1081 int s;
1082 caddr_t buf;
1083 size_t len;
1084 int flags;
1083 caddr_t from;
1084 int *fromlenaddr;
1085 struct sockaddr * __restrict from;
1086 socklen_t * __restrict fromlenaddr;
1085 } */ *uap;
1086{
1087 struct msghdr msg;
1088 struct iovec aiov;
1089 int error;
1090
1091 if (uap->fromlenaddr) {
1092 error = copyin(uap->fromlenaddr,

--- 237 unchanged lines hidden (view full) ---

1330/* ARGSUSED */
1331int
1332getsockopt(td, uap)
1333 struct thread *td;
1334 register struct getsockopt_args /* {
1335 int s;
1336 int level;
1337 int name;
1087 } */ *uap;
1088{
1089 struct msghdr msg;
1090 struct iovec aiov;
1091 int error;
1092
1093 if (uap->fromlenaddr) {
1094 error = copyin(uap->fromlenaddr,

--- 237 unchanged lines hidden (view full) ---

1332/* ARGSUSED */
1333int
1334getsockopt(td, uap)
1335 struct thread *td;
1336 register struct getsockopt_args /* {
1337 int s;
1338 int level;
1339 int name;
1338 caddr_t val;
1339 int *avalsize;
1340 void * __restrict val;
1341 socklen_t * __restrict avalsize;
1340 } */ *uap;
1341{
1342 } */ *uap;
1343{
1342 int valsize, error;
1344 socklen_t valsize;
1345 int error;
1343 struct socket *so;
1344 struct sockopt sopt;
1345
1346 mtx_lock(&Giant);
1347 if ((error = fgetsock(td, uap->s, &so, NULL)) != 0)
1348 goto done2;
1349 if (uap->val) {
1350 error = copyin(uap->avalsize, &valsize, sizeof (valsize));

--- 32 unchanged lines hidden (view full) ---

1383 * MPSAFE
1384 */
1385/* ARGSUSED */
1386static int
1387getsockname1(td, uap, compat)
1388 struct thread *td;
1389 register struct getsockname_args /* {
1390 int fdes;
1346 struct socket *so;
1347 struct sockopt sopt;
1348
1349 mtx_lock(&Giant);
1350 if ((error = fgetsock(td, uap->s, &so, NULL)) != 0)
1351 goto done2;
1352 if (uap->val) {
1353 error = copyin(uap->avalsize, &valsize, sizeof (valsize));

--- 32 unchanged lines hidden (view full) ---

1386 * MPSAFE
1387 */
1388/* ARGSUSED */
1389static int
1390getsockname1(td, uap, compat)
1391 struct thread *td;
1392 register struct getsockname_args /* {
1393 int fdes;
1391 caddr_t asa;
1392 int *alen;
1394 struct sockaddr * __restrict asa;
1395 socklen_t * __restrict alen;
1393 } */ *uap;
1394 int compat;
1395{
1396 struct socket *so;
1397 struct sockaddr *sa;
1396 } */ *uap;
1397 int compat;
1398{
1399 struct socket *so;
1400 struct sockaddr *sa;
1398 int len, error;
1401 socklen_t len;
1402 int error;
1399
1400 mtx_lock(&Giant);
1401 if ((error = fgetsock(td, uap->fdes, &so, NULL)) != 0)
1402 goto done2;
1403 error = copyin(uap->alen, &len, sizeof (len));
1404 if (error)
1405 goto done1;
1406 if (len < 0) {

--- 60 unchanged lines hidden (view full) ---

1467 * MPSAFE
1468 */
1469/* ARGSUSED */
1470static int
1471getpeername1(td, uap, compat)
1472 struct thread *td;
1473 register struct getpeername_args /* {
1474 int fdes;
1403
1404 mtx_lock(&Giant);
1405 if ((error = fgetsock(td, uap->fdes, &so, NULL)) != 0)
1406 goto done2;
1407 error = copyin(uap->alen, &len, sizeof (len));
1408 if (error)
1409 goto done1;
1410 if (len < 0) {

--- 60 unchanged lines hidden (view full) ---

1471 * MPSAFE
1472 */
1473/* ARGSUSED */
1474static int
1475getpeername1(td, uap, compat)
1476 struct thread *td;
1477 register struct getpeername_args /* {
1478 int fdes;
1475 caddr_t asa;
1476 int *alen;
1479 struct sockaddr * __restrict asa;
1480 socklen_t * __restrict alen;
1477 } */ *uap;
1478 int compat;
1479{
1480 struct socket *so;
1481 struct sockaddr *sa;
1481 } */ *uap;
1482 int compat;
1483{
1484 struct socket *so;
1485 struct sockaddr *sa;
1482 int len, error;
1486 socklen_t len;
1487 int error;
1483
1484 mtx_lock(&Giant);
1485 if ((error = fgetsock(td, uap->fdes, &so, NULL)) != 0)
1486 goto done2;
1487 if ((so->so_state & (SS_ISCONNECTED|SS_ISCONFIRMING)) == 0) {
1488 error = ENOTCONN;
1489 goto done1;
1490 }

--- 514 unchanged lines hidden ---
1488
1489 mtx_lock(&Giant);
1490 if ((error = fgetsock(td, uap->fdes, &so, NULL)) != 0)
1491 goto done2;
1492 if ((so->so_state & (SS_ISCONNECTED|SS_ISCONFIRMING)) == 0) {
1493 error = ENOTCONN;
1494 goto done1;
1495 }

--- 514 unchanged lines hidden ---