summaryrefslogtreecommitdiffstats
path: root/lib/libc/rpc/bindresvport.3
diff options
context:
space:
mode:
authorshin <shin@FreeBSD.org>2000-01-26 09:02:42 +0000
committershin <shin@FreeBSD.org>2000-01-26 09:02:42 +0000
commiteb4463295ba6da7a5b6c1d94f38f7d52ef926c06 (patch)
treed340dd9f5ee7e86b28e10103cf6e6db099e4e4f0 /lib/libc/rpc/bindresvport.3
parent4a29dd1cc9c6cafad16282641b92dd12b7a7ec01 (diff)
downloadFreeBSD-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.385
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
OpenPOWER on IntegriCloud