diff options
author | shin <shin@FreeBSD.org> | 2000-01-26 09:02:42 +0000 |
---|---|---|
committer | shin <shin@FreeBSD.org> | 2000-01-26 09:02:42 +0000 |
commit | eb4463295ba6da7a5b6c1d94f38f7d52ef926c06 (patch) | |
tree | d340dd9f5ee7e86b28e10103cf6e6db099e4e4f0 /lib/libc/rpc/bindresvport.3 | |
parent | 4a29dd1cc9c6cafad16282641b92dd12b7a7ec01 (diff) | |
download | FreeBSD-src-eb4463295ba6da7a5b6c1d94f38f7d52ef926c06.zip FreeBSD-src-eb4463295ba6da7a5b6c1d94f38f7d52ef926c06.tar.gz |
bindresvport related changes
-changed bindresvport2 to bindresvport_sa
-merged the man into bindresvport.3
All discussion between Jean-Luc Richier <Jean-Luc.Richier@imag.fr>,
Theo de Raadt <deraadt@cvs.openbsd.org>, itojun, is reflected to
this code. (Actually Theo de Raadt write the code simultaneously as the
discussion change.)
Diffstat (limited to 'lib/libc/rpc/bindresvport.3')
-rw-r--r-- | lib/libc/rpc/bindresvport.3 | 85 |
1 files changed, 77 insertions, 8 deletions
diff --git a/lib/libc/rpc/bindresvport.3 b/lib/libc/rpc/bindresvport.3 index 8d1f975..d37aeff 100644 --- a/lib/libc/rpc/bindresvport.3 +++ b/lib/libc/rpc/bindresvport.3 @@ -5,30 +5,99 @@ .Dt BINDRESVPORT 3 .Os .Sh NAME -.Nm bindresvport +.Nm bindresvport , +.Nm bindresvport_sa , .Ndbind a socket to a privileged IP port .Sh SYNOPSIS .Fd #include <sys/types.h> .Fd #include <netinet/in.h> .Ft int -.Fn bindresvport "int sd" "struct sockaddr_in **sin" +.Fn bindresvport "int sd" "struct sockaddr_in *sin" +.Ft int +.Fn bindresvport_sa "int sd" "struct sockaddr *sa" .Sh DESCRIPTION .Nm Bindresvport -is used to bind a socket descriptor to a privileged +and +.Nm Bindresvport_sa +are used to bind a socket descriptor to a privileged .Tn IP port, that is, a port number in the range 0-1023. -The routine returns 0 if it is successful, -otherwise -1 is returned and -.Va errno -set to reflect the cause of the error. .Pp Only root can bind to a privileged port; this call will fail for any other users. .Pp +When +.Va sin +is not null, +.Va sin->sin_family +must be initialized to the address family of the socket, passed by +.Va sd . If the value of sin->sin_port is non-zero .Fn bindresvport will attempt to use that specific port. If it fails, it chooses another privileged port automatically. +.Pp +It is legal to pass null pointer to +.Va sin . +In this case, the caller cannot get the port number +.Fn bindresvport +has picked. +.Pp +Function prototype of +.Fn bindresvport +is biased to +.Dv AF_INET +socket. +.Fn bindresvport_sa +acts exactly the same, with more neutral function prototype. +Note that both functions behave exactly the same, and +both support +.Dv AF_INET6 +sockets as well as +.Dv AF_INET +sockets. +.Sh RETURN VALUES +.Fn bindresvport +returns 0 if it is successful, otherwise \-1 is returned and +.Va errno +set to reflect the cause of the error. +.Sh ERRORS +The +.Fn bindresvport +function fails if: +.Bl -tag -width Er +.It Bq Er EBADF +.Fa sd +is not a valid descriptor. +.It Bq Er ENOTSOCK +.Fa sd +is not a socket. +.It Bq Er EADDRNOTAVAIL +The specified address is not available from the local machine. +.It Bq Er EADDRINUSE +The specified address is already in use. +.It Bq Er EINVAL +The socket is already bound to an address, +or the socket family and the family of specified address mismatch. +.It Bq Er EACCES +The requested address is protected, and the current user +has inadequate permission to access it. +.It Bq Er EFAULT +The +.Fa name +parameter is not in a valid part of the user +address space. +.It Bq Er ENOBUFS +Insufficient resources were available in the system +to perform the operation. +.It Bq Er EPFNOSUPPORT +The protocol family has not been configured into the +system, no implementation for it exists, +or address family did not match between arguments. +.El .Sh "SEE ALSO" -.Xr bindresvport2 3
\ No newline at end of file +.Xr bind 2 , +.Xr socket 2 , +.Xr rresvport 3 , +.Xr rresvport_af 3 |