uipc_syscalls.c (274408) | uipc_syscalls.c (274476) |
---|---|
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 --- 19 unchanged lines hidden (view full) --- 28 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 29 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 30 * SUCH DAMAGE. 31 * 32 * @(#)uipc_syscalls.c 8.4 (Berkeley) 2/21/94 33 */ 34 35#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 --- 19 unchanged lines hidden (view full) --- 28 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 29 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 30 * SUCH DAMAGE. 31 * 32 * @(#)uipc_syscalls.c 8.4 (Berkeley) 2/21/94 33 */ 34 35#include <sys/cdefs.h> |
36__FBSDID("$FreeBSD: head/sys/kern/uipc_syscalls.c 274408 2014-11-11 22:08:18Z glebius $"); | 36__FBSDID("$FreeBSD: head/sys/kern/uipc_syscalls.c 274476 2014-11-13 18:01:51Z kib $"); |
37 38#include "opt_capsicum.h" 39#include "opt_inet.h" 40#include "opt_inet6.h" 41#include "opt_compat.h" 42#include "opt_ktrace.h" 43 44#include <sys/param.h> --- 192 unchanged lines hidden (view full) --- 237 int namelen; 238 } */ *uap; 239{ 240 struct sockaddr *sa; 241 int error; 242 243 error = getsockaddr(&sa, uap->name, uap->namelen); 244 if (error == 0) { | 37 38#include "opt_capsicum.h" 39#include "opt_inet.h" 40#include "opt_inet6.h" 41#include "opt_compat.h" 42#include "opt_ktrace.h" 43 44#include <sys/param.h> --- 192 unchanged lines hidden (view full) --- 237 int namelen; 238 } */ *uap; 239{ 240 struct sockaddr *sa; 241 int error; 242 243 error = getsockaddr(&sa, uap->name, uap->namelen); 244 if (error == 0) { |
245 error = kern_bind(td, uap->s, sa); | 245 error = kern_bindat(td, AT_FDCWD, uap->s, sa); |
246 free(sa, M_SONAME); 247 } 248 return (error); 249} 250 | 246 free(sa, M_SONAME); 247 } 248 return (error); 249} 250 |
251static int | 251int |
252kern_bindat(struct thread *td, int dirfd, int fd, struct sockaddr *sa) 253{ 254 struct socket *so; 255 struct file *fp; 256 cap_rights_t rights; 257 int error; 258 259 AUDIT_ARG_FD(fd); --- 17 unchanged lines hidden (view full) --- 277 error = sobindat(dirfd, so, sa, td); 278#ifdef MAC 279 } 280#endif 281 fdrop(fp, td); 282 return (error); 283} 284 | 252kern_bindat(struct thread *td, int dirfd, int fd, struct sockaddr *sa) 253{ 254 struct socket *so; 255 struct file *fp; 256 cap_rights_t rights; 257 int error; 258 259 AUDIT_ARG_FD(fd); --- 17 unchanged lines hidden (view full) --- 277 error = sobindat(dirfd, so, sa, td); 278#ifdef MAC 279 } 280#endif 281 fdrop(fp, td); 282 return (error); 283} 284 |
285int 286kern_bind(struct thread *td, int fd, struct sockaddr *sa) 287{ 288 289 return (kern_bindat(td, AT_FDCWD, fd, sa)); 290} 291 | |
292/* ARGSUSED */ 293int 294sys_bindat(td, uap) 295 struct thread *td; 296 struct bindat_args /* { 297 int fd; 298 int s; 299 caddr_t name; --- 290 unchanged lines hidden (view full) --- 590 int namelen; 591 } */ *uap; 592{ 593 struct sockaddr *sa; 594 int error; 595 596 error = getsockaddr(&sa, uap->name, uap->namelen); 597 if (error == 0) { | 285/* ARGSUSED */ 286int 287sys_bindat(td, uap) 288 struct thread *td; 289 struct bindat_args /* { 290 int fd; 291 int s; 292 caddr_t name; --- 290 unchanged lines hidden (view full) --- 583 int namelen; 584 } */ *uap; 585{ 586 struct sockaddr *sa; 587 int error; 588 589 error = getsockaddr(&sa, uap->name, uap->namelen); 590 if (error == 0) { |
598 error = kern_connect(td, uap->s, sa); | 591 error = kern_connectat(td, AT_FDCWD, uap->s, sa); |
599 free(sa, M_SONAME); 600 } 601 return (error); 602} 603 | 592 free(sa, M_SONAME); 593 } 594 return (error); 595} 596 |
604static int | 597int |
605kern_connectat(struct thread *td, int dirfd, int fd, struct sockaddr *sa) 606{ 607 struct socket *so; 608 struct file *fp; 609 cap_rights_t rights; 610 int error, interrupted = 0; 611 612 AUDIT_ARG_FD(fd); --- 46 unchanged lines hidden (view full) --- 659 so->so_state &= ~SS_ISCONNECTING; 660 if (error == ERESTART) 661 error = EINTR; 662done1: 663 fdrop(fp, td); 664 return (error); 665} 666 | 598kern_connectat(struct thread *td, int dirfd, int fd, struct sockaddr *sa) 599{ 600 struct socket *so; 601 struct file *fp; 602 cap_rights_t rights; 603 int error, interrupted = 0; 604 605 AUDIT_ARG_FD(fd); --- 46 unchanged lines hidden (view full) --- 652 so->so_state &= ~SS_ISCONNECTING; 653 if (error == ERESTART) 654 error = EINTR; 655done1: 656 fdrop(fp, td); 657 return (error); 658} 659 |
667int 668kern_connect(struct thread *td, int fd, struct sockaddr *sa) 669{ 670 671 return (kern_connectat(td, AT_FDCWD, fd, sa)); 672} 673 | |
674/* ARGSUSED */ 675int 676sys_connectat(td, uap) 677 struct thread *td; 678 struct connectat_args /* { 679 int fd; 680 int s; 681 caddr_t name; --- 1899 unchanged lines hidden --- | 660/* ARGSUSED */ 661int 662sys_connectat(td, uap) 663 struct thread *td; 664 struct connectat_args /* { 665 int fd; 666 int s; 667 caddr_t name; --- 1899 unchanged lines hidden --- |