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} |