Deleted Added
full compact
kern_sendfile.c (1542) kern_sendfile.c (1549)
1/*
2 * Copyright (c) 1982, 1986, 1989, 1990, 1993
3 * The Regents of the University of California. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

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

29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31 * SUCH DAMAGE.
32 *
33 * @(#)uipc_syscalls.c 8.4 (Berkeley) 2/21/94
34 */
35
36#include <sys/param.h>
1/*
2 * Copyright (c) 1982, 1986, 1989, 1990, 1993
3 * The Regents of the University of California. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

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

29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31 * SUCH DAMAGE.
32 *
33 * @(#)uipc_syscalls.c 8.4 (Berkeley) 2/21/94
34 */
35
36#include <sys/param.h>
37#include <sys/systm.h>
37#include <sys/filedesc.h>
38#include <sys/proc.h>
39#include <sys/file.h>
40#include <sys/buf.h>
41#include <sys/malloc.h>
42#include <sys/mbuf.h>
43#include <sys/protosw.h>
44#include <sys/socket.h>

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

56
57extern struct fileops socketops;
58
59struct socket_args {
60 int domain;
61 int type;
62 int protocol;
63};
38#include <sys/filedesc.h>
39#include <sys/proc.h>
40#include <sys/file.h>
41#include <sys/buf.h>
42#include <sys/malloc.h>
43#include <sys/mbuf.h>
44#include <sys/protosw.h>
45#include <sys/socket.h>

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

57
58extern struct fileops socketops;
59
60struct socket_args {
61 int domain;
62 int type;
63 int protocol;
64};
65int
64socket(p, uap, retval)
65 struct proc *p;
66 register struct socket_args *uap;
67 int *retval;
68{
69 struct filedesc *fdp = p->p_fd;
70 struct socket *so;
71 struct file *fp;

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

87}
88
89struct bind_args {
90 int s;
91 caddr_t name;
92 int namelen;
93};
94/* ARGSUSED */
66socket(p, uap, retval)
67 struct proc *p;
68 register struct socket_args *uap;
69 int *retval;
70{
71 struct filedesc *fdp = p->p_fd;
72 struct socket *so;
73 struct file *fp;

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

89}
90
91struct bind_args {
92 int s;
93 caddr_t name;
94 int namelen;
95};
96/* ARGSUSED */
97int
95bind(p, uap, retval)
96 struct proc *p;
97 register struct bind_args *uap;
98 int *retval;
99{
100 struct file *fp;
101 struct mbuf *nam;
102 int error;

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

110 return (error);
111}
112
113struct listen_args {
114 int s;
115 int backlog;
116};
117/* ARGSUSED */
98bind(p, uap, retval)
99 struct proc *p;
100 register struct bind_args *uap;
101 int *retval;
102{
103 struct file *fp;
104 struct mbuf *nam;
105 int error;

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

113 return (error);
114}
115
116struct listen_args {
117 int s;
118 int backlog;
119};
120/* ARGSUSED */
121int
118listen(p, uap, retval)
119 struct proc *p;
120 register struct listen_args *uap;
121 int *retval;
122{
123 struct file *fp;
124 int error;
125

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

133 caddr_t name;
134 int *anamelen;
135#ifdef COMPAT_OLDSOCK
136 int compat_43; /* pseudo */
137#endif
138};
139
140#ifdef COMPAT_OLDSOCK
122listen(p, uap, retval)
123 struct proc *p;
124 register struct listen_args *uap;
125 int *retval;
126{
127 struct file *fp;
128 int error;
129

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

137 caddr_t name;
138 int *anamelen;
139#ifdef COMPAT_OLDSOCK
140 int compat_43; /* pseudo */
141#endif
142};
143
144#ifdef COMPAT_OLDSOCK
145int
141accept(p, uap, retval)
142 struct proc *p;
143 struct accept_args *uap;
144 int *retval;
145{
146
147 uap->compat_43 = 0;
148 return (accept1(p, uap, retval));
149}
150
146accept(p, uap, retval)
147 struct proc *p;
148 struct accept_args *uap;
149 int *retval;
150{
151
152 uap->compat_43 = 0;
153 return (accept1(p, uap, retval));
154}
155
156int
151oaccept(p, uap, retval)
152 struct proc *p;
153 struct accept_args *uap;
154 int *retval;
155{
156
157 uap->compat_43 = 1;
158 return (accept1(p, uap, retval));
159}
160#else /* COMPAT_OLDSOCK */
161
162#define accept1 accept
163#endif
164
157oaccept(p, uap, retval)
158 struct proc *p;
159 struct accept_args *uap;
160 int *retval;
161{
162
163 uap->compat_43 = 1;
164 return (accept1(p, uap, retval));
165}
166#else /* COMPAT_OLDSOCK */
167
168#define accept1 accept
169#endif
170
171int
165accept1(p, uap, retval)
166 struct proc *p;
167 register struct accept_args *uap;
168 int *retval;
169{
170 struct file *fp;
171 struct mbuf *nam;
172 int namelen, error, s;

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

239}
240
241struct connect_args {
242 int s;
243 caddr_t name;
244 int namelen;
245};
246/* ARGSUSED */
172accept1(p, uap, retval)
173 struct proc *p;
174 register struct accept_args *uap;
175 int *retval;
176{
177 struct file *fp;
178 struct mbuf *nam;
179 int namelen, error, s;

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

246}
247
248struct connect_args {
249 int s;
250 caddr_t name;
251 int namelen;
252};
253/* ARGSUSED */
254int
247connect(p, uap, retval)
248 struct proc *p;
249 register struct connect_args *uap;
250 int *retval;
251{
252 struct file *fp;
253 register struct socket *so;
254 struct mbuf *nam;

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

287}
288
289struct socketpair_args {
290 int domain;
291 int type;
292 int protocol;
293 int *rsv;
294};
255connect(p, uap, retval)
256 struct proc *p;
257 register struct connect_args *uap;
258 int *retval;
259{
260 struct file *fp;
261 register struct socket *so;
262 struct mbuf *nam;

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

295}
296
297struct socketpair_args {
298 int domain;
299 int type;
300 int protocol;
301 int *rsv;
302};
303int
295socketpair(p, uap, retval)
296 struct proc *p;
297 register struct socketpair_args *uap;
298 int retval[];
299{
300 register struct filedesc *fdp = p->p_fd;
301 struct file *fp1, *fp2;
302 struct socket *so1, *so2;

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

349struct sendto_args {
350 int s;
351 caddr_t buf;
352 size_t len;
353 int flags;
354 caddr_t to;
355 int tolen;
356};
304socketpair(p, uap, retval)
305 struct proc *p;
306 register struct socketpair_args *uap;
307 int retval[];
308{
309 register struct filedesc *fdp = p->p_fd;
310 struct file *fp1, *fp2;
311 struct socket *so1, *so2;

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

358struct sendto_args {
359 int s;
360 caddr_t buf;
361 size_t len;
362 int flags;
363 caddr_t to;
364 int tolen;
365};
366int
357sendto(p, uap, retval)
358 struct proc *p;
359 register struct sendto_args *uap;
360 int *retval;
361{
362 struct msghdr msg;
363 struct iovec aiov;
364

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

377
378#ifdef COMPAT_OLDSOCK
379struct osend_args {
380 int s;
381 caddr_t buf;
382 int len;
383 int flags;
384};
367sendto(p, uap, retval)
368 struct proc *p;
369 register struct sendto_args *uap;
370 int *retval;
371{
372 struct msghdr msg;
373 struct iovec aiov;
374

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

387
388#ifdef COMPAT_OLDSOCK
389struct osend_args {
390 int s;
391 caddr_t buf;
392 int len;
393 int flags;
394};
395int
385osend(p, uap, retval)
386 struct proc *p;
387 register struct osend_args *uap;
388 int *retval;
389{
390 struct msghdr msg;
391 struct iovec aiov;
392

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

402}
403
404#define MSG_COMPAT 0x8000
405struct osendmsg_args {
406 int s;
407 caddr_t msg;
408 int flags;
409};
396osend(p, uap, retval)
397 struct proc *p;
398 register struct osend_args *uap;
399 int *retval;
400{
401 struct msghdr msg;
402 struct iovec aiov;
403

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

413}
414
415#define MSG_COMPAT 0x8000
416struct osendmsg_args {
417 int s;
418 caddr_t msg;
419 int flags;
420};
421int
410osendmsg(p, uap, retval)
411 struct proc *p;
412 register struct osendmsg_args *uap;
413 int *retval;
414{
415 struct msghdr msg;
416 struct iovec aiov[UIO_SMALLIOV], *iov;
417 int error;

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

439}
440#endif
441
442struct sendmsg_args {
443 int s;
444 caddr_t msg;
445 int flags;
446};
422osendmsg(p, uap, retval)
423 struct proc *p;
424 register struct osendmsg_args *uap;
425 int *retval;
426{
427 struct msghdr msg;
428 struct iovec aiov[UIO_SMALLIOV], *iov;
429 int error;

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

451}
452#endif
453
454struct sendmsg_args {
455 int s;
456 caddr_t msg;
457 int flags;
458};
459int
447sendmsg(p, uap, retval)
448 struct proc *p;
449 register struct sendmsg_args *uap;
450 int *retval;
451{
452 struct msghdr msg;
453 struct iovec aiov[UIO_SMALLIOV], *iov;
454 int error;

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

473#endif
474 error = sendit(p, uap->s, &msg, uap->flags, retval);
475done:
476 if (iov != aiov)
477 FREE(iov, M_IOV);
478 return (error);
479}
480
460sendmsg(p, uap, retval)
461 struct proc *p;
462 register struct sendmsg_args *uap;
463 int *retval;
464{
465 struct msghdr msg;
466 struct iovec aiov[UIO_SMALLIOV], *iov;
467 int error;

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

486#endif
487 error = sendit(p, uap->s, &msg, uap->flags, retval);
488done:
489 if (iov != aiov)
490 FREE(iov, M_IOV);
491 return (error);
492}
493
494int
481sendit(p, s, mp, flags, retsize)
482 register struct proc *p;
483 int s;
484 register struct msghdr *mp;
485 int flags, *retsize;
486{
487 struct file *fp;
488 struct uio auio;

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

500 auio.uio_iovcnt = mp->msg_iovlen;
501 auio.uio_segflg = UIO_USERSPACE;
502 auio.uio_rw = UIO_WRITE;
503 auio.uio_procp = p;
504 auio.uio_offset = 0; /* XXX */
505 auio.uio_resid = 0;
506 iov = mp->msg_iov;
507 for (i = 0; i < mp->msg_iovlen; i++, iov++) {
495sendit(p, s, mp, flags, retsize)
496 register struct proc *p;
497 int s;
498 register struct msghdr *mp;
499 int flags, *retsize;
500{
501 struct file *fp;
502 struct uio auio;

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

514 auio.uio_iovcnt = mp->msg_iovlen;
515 auio.uio_segflg = UIO_USERSPACE;
516 auio.uio_rw = UIO_WRITE;
517 auio.uio_procp = p;
518 auio.uio_offset = 0; /* XXX */
519 auio.uio_resid = 0;
520 iov = mp->msg_iov;
521 for (i = 0; i < mp->msg_iovlen; i++, iov++) {
508 if (iov->iov_len < 0)
509 return (EINVAL);
510 if ((auio.uio_resid += iov->iov_len) < 0)
511 return (EINVAL);
512 }
513 if (mp->msg_name) {
514 if (error = sockargs(&to, mp->msg_name, mp->msg_namelen,
515 MT_SONAME))
516 return (error);
517 } else

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

584 caddr_t buf;
585 size_t len;
586 int flags;
587 caddr_t from;
588 int *fromlenaddr;
589};
590
591#ifdef COMPAT_OLDSOCK
522 if ((auio.uio_resid += iov->iov_len) < 0)
523 return (EINVAL);
524 }
525 if (mp->msg_name) {
526 if (error = sockargs(&to, mp->msg_name, mp->msg_namelen,
527 MT_SONAME))
528 return (error);
529 } else

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

596 caddr_t buf;
597 size_t len;
598 int flags;
599 caddr_t from;
600 int *fromlenaddr;
601};
602
603#ifdef COMPAT_OLDSOCK
604int
592orecvfrom(p, uap, retval)
593 struct proc *p;
594 struct recvfrom_args *uap;
595 int *retval;
596{
597
598 uap->flags |= MSG_COMPAT;
599 return (recvfrom(p, uap, retval));
600}
601#endif
602
605orecvfrom(p, uap, retval)
606 struct proc *p;
607 struct recvfrom_args *uap;
608 int *retval;
609{
610
611 uap->flags |= MSG_COMPAT;
612 return (recvfrom(p, uap, retval));
613}
614#endif
615
616int
603recvfrom(p, uap, retval)
604 struct proc *p;
605 register struct recvfrom_args *uap;
606 int *retval;
607{
608 struct msghdr msg;
609 struct iovec aiov;
610 int error;

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

627
628#ifdef COMPAT_OLDSOCK
629struct orecv_args {
630 int s;
631 caddr_t buf;
632 int len;
633 int flags;
634};
617recvfrom(p, uap, retval)
618 struct proc *p;
619 register struct recvfrom_args *uap;
620 int *retval;
621{
622 struct msghdr msg;
623 struct iovec aiov;
624 int error;

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

641
642#ifdef COMPAT_OLDSOCK
643struct orecv_args {
644 int s;
645 caddr_t buf;
646 int len;
647 int flags;
648};
649int
635orecv(p, uap, retval)
636 struct proc *p;
637 register struct orecv_args *uap;
638 int *retval;
639{
640 struct msghdr msg;
641 struct iovec aiov;
642

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

656 * overlays the new one, missing only the flags, and with the (old) access
657 * rights where the control fields are now.
658 */
659struct orecvmsg_args {
660 int s;
661 struct omsghdr *msg;
662 int flags;
663};
650orecv(p, uap, retval)
651 struct proc *p;
652 register struct orecv_args *uap;
653 int *retval;
654{
655 struct msghdr msg;
656 struct iovec aiov;
657

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

671 * overlays the new one, missing only the flags, and with the (old) access
672 * rights where the control fields are now.
673 */
674struct orecvmsg_args {
675 int s;
676 struct omsghdr *msg;
677 int flags;
678};
679int
664orecvmsg(p, uap, retval)
665 struct proc *p;
666 register struct orecvmsg_args *uap;
667 int *retval;
668{
669 struct msghdr msg;
670 struct iovec aiov[UIO_SMALLIOV], *iov;
671 int error;

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

698}
699#endif
700
701struct recvmsg_args {
702 int s;
703 struct msghdr *msg;
704 int flags;
705};
680orecvmsg(p, uap, retval)
681 struct proc *p;
682 register struct orecvmsg_args *uap;
683 int *retval;
684{
685 struct msghdr msg;
686 struct iovec aiov[UIO_SMALLIOV], *iov;
687 int error;

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

714}
715#endif
716
717struct recvmsg_args {
718 int s;
719 struct msghdr *msg;
720 int flags;
721};
722int
706recvmsg(p, uap, retval)
707 struct proc *p;
708 register struct recvmsg_args *uap;
709 int *retval;
710{
711 struct msghdr msg;
712 struct iovec aiov[UIO_SMALLIOV], *uiov, *iov;
713 register int error;

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

737 error = copyout((caddr_t)&msg, (caddr_t)uap->msg, sizeof(msg));
738 }
739done:
740 if (iov != aiov)
741 FREE(iov, M_IOV);
742 return (error);
743}
744
723recvmsg(p, uap, retval)
724 struct proc *p;
725 register struct recvmsg_args *uap;
726 int *retval;
727{
728 struct msghdr msg;
729 struct iovec aiov[UIO_SMALLIOV], *uiov, *iov;
730 register int error;

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

754 error = copyout((caddr_t)&msg, (caddr_t)uap->msg, sizeof(msg));
755 }
756done:
757 if (iov != aiov)
758 FREE(iov, M_IOV);
759 return (error);
760}
761
762int
745recvit(p, s, mp, namelenp, retsize)
746 register struct proc *p;
747 int s;
748 register struct msghdr *mp;
749 caddr_t namelenp;
750 int *retsize;
751{
752 struct file *fp;

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

765 auio.uio_iovcnt = mp->msg_iovlen;
766 auio.uio_segflg = UIO_USERSPACE;
767 auio.uio_rw = UIO_READ;
768 auio.uio_procp = p;
769 auio.uio_offset = 0; /* XXX */
770 auio.uio_resid = 0;
771 iov = mp->msg_iov;
772 for (i = 0; i < mp->msg_iovlen; i++, iov++) {
763recvit(p, s, mp, namelenp, retsize)
764 register struct proc *p;
765 int s;
766 register struct msghdr *mp;
767 caddr_t namelenp;
768 int *retsize;
769{
770 struct file *fp;

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

783 auio.uio_iovcnt = mp->msg_iovlen;
784 auio.uio_segflg = UIO_USERSPACE;
785 auio.uio_rw = UIO_READ;
786 auio.uio_procp = p;
787 auio.uio_offset = 0; /* XXX */
788 auio.uio_resid = 0;
789 iov = mp->msg_iov;
790 for (i = 0; i < mp->msg_iovlen; i++, iov++) {
773 if (iov->iov_len < 0)
774 return (EINVAL);
775 if ((auio.uio_resid += iov->iov_len) < 0)
776 return (EINVAL);
777 }
778#ifdef KTRACE
779 if (KTRPOINT(p, KTR_GENIO)) {
780 int iovlen = auio.uio_iovcnt * sizeof (struct iovec);
781
782 MALLOC(ktriov, struct iovec *, iovlen, M_TEMP, M_WAITOK);

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

872 return (error);
873}
874
875struct shutdown_args {
876 int s;
877 int how;
878};
879/* ARGSUSED */
791 if ((auio.uio_resid += iov->iov_len) < 0)
792 return (EINVAL);
793 }
794#ifdef KTRACE
795 if (KTRPOINT(p, KTR_GENIO)) {
796 int iovlen = auio.uio_iovcnt * sizeof (struct iovec);
797
798 MALLOC(ktriov, struct iovec *, iovlen, M_TEMP, M_WAITOK);

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

888 return (error);
889}
890
891struct shutdown_args {
892 int s;
893 int how;
894};
895/* ARGSUSED */
896int
880shutdown(p, uap, retval)
881 struct proc *p;
882 register struct shutdown_args *uap;
883 int *retval;
884{
885 struct file *fp;
886 int error;
887

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

893struct setsockopt_args {
894 int s;
895 int level;
896 int name;
897 caddr_t val;
898 int valsize;
899};
900/* ARGSUSED */
897shutdown(p, uap, retval)
898 struct proc *p;
899 register struct shutdown_args *uap;
900 int *retval;
901{
902 struct file *fp;
903 int error;
904

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

910struct setsockopt_args {
911 int s;
912 int level;
913 int name;
914 caddr_t val;
915 int valsize;
916};
917/* ARGSUSED */
918int
901setsockopt(p, uap, retval)
902 struct proc *p;
903 register struct setsockopt_args *uap;
904 int *retval;
905{
906 struct file *fp;
907 struct mbuf *m = NULL;
908 int error;

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

929struct getsockopt_args {
930 int s;
931 int level;
932 int name;
933 caddr_t val;
934 int *avalsize;
935};
936/* ARGSUSED */
919setsockopt(p, uap, retval)
920 struct proc *p;
921 register struct setsockopt_args *uap;
922 int *retval;
923{
924 struct file *fp;
925 struct mbuf *m = NULL;
926 int error;

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

947struct getsockopt_args {
948 int s;
949 int level;
950 int name;
951 caddr_t val;
952 int *avalsize;
953};
954/* ARGSUSED */
955int
937getsockopt(p, uap, retval)
938 struct proc *p;
939 register struct getsockopt_args *uap;
940 int *retval;
941{
942 struct file *fp;
943 struct mbuf *m = NULL;
944 int valsize, error;

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

964 (void) m_free(m);
965 return (error);
966}
967
968struct pipe_args {
969 int dummy;
970};
971/* ARGSUSED */
956getsockopt(p, uap, retval)
957 struct proc *p;
958 register struct getsockopt_args *uap;
959 int *retval;
960{
961 struct file *fp;
962 struct mbuf *m = NULL;
963 int valsize, error;

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

983 (void) m_free(m);
984 return (error);
985}
986
987struct pipe_args {
988 int dummy;
989};
990/* ARGSUSED */
991int
972pipe(p, uap, retval)
973 struct proc *p;
974 struct pipe_args *uap;
975 int retval[];
976{
977 register struct filedesc *fdp = p->p_fd;
978 struct file *rf, *wf;
979 struct socket *rso, *wso;

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

1020 int fdes;
1021 caddr_t asa;
1022 int *alen;
1023#ifdef COMPAT_OLDSOCK
1024 int compat_43; /* pseudo */
1025#endif
1026};
1027#ifdef COMPAT_OLDSOCK
992pipe(p, uap, retval)
993 struct proc *p;
994 struct pipe_args *uap;
995 int retval[];
996{
997 register struct filedesc *fdp = p->p_fd;
998 struct file *rf, *wf;
999 struct socket *rso, *wso;

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

1040 int fdes;
1041 caddr_t asa;
1042 int *alen;
1043#ifdef COMPAT_OLDSOCK
1044 int compat_43; /* pseudo */
1045#endif
1046};
1047#ifdef COMPAT_OLDSOCK
1048int
1028getsockname(p, uap, retval)
1029 struct proc *p;
1030 struct getsockname_args *uap;
1031 int *retval;
1032{
1033
1034 uap->compat_43 = 0;
1035 return (getsockname1(p, uap, retval));
1036}
1037
1049getsockname(p, uap, retval)
1050 struct proc *p;
1051 struct getsockname_args *uap;
1052 int *retval;
1053{
1054
1055 uap->compat_43 = 0;
1056 return (getsockname1(p, uap, retval));
1057}
1058
1059int
1038ogetsockname(p, uap, retval)
1039 struct proc *p;
1040 struct getsockname_args *uap;
1041 int *retval;
1042{
1043
1044 uap->compat_43 = 1;
1045 return (getsockname1(p, uap, retval));
1046}
1047#else /* COMPAT_OLDSOCK */
1048
1049#define getsockname1 getsockname
1050#endif
1051
1052/* ARGSUSED */
1060ogetsockname(p, uap, retval)
1061 struct proc *p;
1062 struct getsockname_args *uap;
1063 int *retval;
1064{
1065
1066 uap->compat_43 = 1;
1067 return (getsockname1(p, uap, retval));
1068}
1069#else /* COMPAT_OLDSOCK */
1070
1071#define getsockname1 getsockname
1072#endif
1073
1074/* ARGSUSED */
1075int
1053getsockname1(p, uap, retval)
1054 struct proc *p;
1055 register struct getsockname_args *uap;
1056 int *retval;
1057{
1058 struct file *fp;
1059 register struct socket *so;
1060 struct mbuf *m;

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

1094 caddr_t asa;
1095 int *alen;
1096#ifdef COMPAT_OLDSOCK
1097 int compat_43; /* pseudo */
1098#endif
1099};
1100
1101#ifdef COMPAT_OLDSOCK
1076getsockname1(p, uap, retval)
1077 struct proc *p;
1078 register struct getsockname_args *uap;
1079 int *retval;
1080{
1081 struct file *fp;
1082 register struct socket *so;
1083 struct mbuf *m;

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

1117 caddr_t asa;
1118 int *alen;
1119#ifdef COMPAT_OLDSOCK
1120 int compat_43; /* pseudo */
1121#endif
1122};
1123
1124#ifdef COMPAT_OLDSOCK
1125int
1102getpeername(p, uap, retval)
1103 struct proc *p;
1104 struct getpeername_args *uap;
1105 int *retval;
1106{
1107
1108 uap->compat_43 = 0;
1109 return (getpeername1(p, uap, retval));
1110}
1111
1126getpeername(p, uap, retval)
1127 struct proc *p;
1128 struct getpeername_args *uap;
1129 int *retval;
1130{
1131
1132 uap->compat_43 = 0;
1133 return (getpeername1(p, uap, retval));
1134}
1135
1136int
1112ogetpeername(p, uap, retval)
1113 struct proc *p;
1114 struct getpeername_args *uap;
1115 int *retval;
1116{
1117
1118 uap->compat_43 = 1;
1119 return (getpeername1(p, uap, retval));
1120}
1121#else /* COMPAT_OLDSOCK */
1122
1123#define getpeername1 getpeername
1124#endif
1125
1126/* ARGSUSED */
1137ogetpeername(p, uap, retval)
1138 struct proc *p;
1139 struct getpeername_args *uap;
1140 int *retval;
1141{
1142
1143 uap->compat_43 = 1;
1144 return (getpeername1(p, uap, retval));
1145}
1146#else /* COMPAT_OLDSOCK */
1147
1148#define getpeername1 getpeername
1149#endif
1150
1151/* ARGSUSED */
1152int
1127getpeername1(p, uap, retval)
1128 struct proc *p;
1129 register struct getpeername_args *uap;
1130 int *retval;
1131{
1132 struct file *fp;
1133 register struct socket *so;
1134 struct mbuf *m;

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

1156 if (error = copyout(mtod(m, caddr_t), (caddr_t)uap->asa, (u_int)len))
1157 goto bad;
1158 error = copyout((caddr_t)&len, (caddr_t)uap->alen, sizeof (len));
1159bad:
1160 m_freem(m);
1161 return (error);
1162}
1163
1153getpeername1(p, uap, retval)
1154 struct proc *p;
1155 register struct getpeername_args *uap;
1156 int *retval;
1157{
1158 struct file *fp;
1159 register struct socket *so;
1160 struct mbuf *m;

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

1182 if (error = copyout(mtod(m, caddr_t), (caddr_t)uap->asa, (u_int)len))
1183 goto bad;
1184 error = copyout((caddr_t)&len, (caddr_t)uap->alen, sizeof (len));
1185bad:
1186 m_freem(m);
1187 return (error);
1188}
1189
1190int
1164sockargs(mp, buf, buflen, type)
1165 struct mbuf **mp;
1166 caddr_t buf;
1167 int buflen, type;
1168{
1169 register struct sockaddr *sa;
1170 register struct mbuf *m;
1171 int error;

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

1195 sa->sa_family = sa->sa_len;
1196#endif
1197 sa->sa_len = buflen;
1198 }
1199 }
1200 return (error);
1201}
1202
1191sockargs(mp, buf, buflen, type)
1192 struct mbuf **mp;
1193 caddr_t buf;
1194 int buflen, type;
1195{
1196 register struct sockaddr *sa;
1197 register struct mbuf *m;
1198 int error;

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

1222 sa->sa_family = sa->sa_len;
1223#endif
1224 sa->sa_len = buflen;
1225 }
1226 }
1227 return (error);
1228}
1229
1230int
1203getsock(fdp, fdes, fpp)
1204 struct filedesc *fdp;
1205 int fdes;
1206 struct file **fpp;
1207{
1208 register struct file *fp;
1209
1210 if ((unsigned)fdes >= fdp->fd_nfiles ||
1211 (fp = fdp->fd_ofiles[fdes]) == NULL)
1212 return (EBADF);
1213 if (fp->f_type != DTYPE_SOCKET)
1214 return (ENOTSOCK);
1215 *fpp = fp;
1216 return (0);
1217}
1231getsock(fdp, fdes, fpp)
1232 struct filedesc *fdp;
1233 int fdes;
1234 struct file **fpp;
1235{
1236 register struct file *fp;
1237
1238 if ((unsigned)fdes >= fdp->fd_nfiles ||
1239 (fp = fdp->fd_ofiles[fdes]) == NULL)
1240 return (EBADF);
1241 if (fp->f_type != DTYPE_SOCKET)
1242 return (ENOTSOCK);
1243 *fpp = fp;
1244 return (0);
1245}