Blame man/bindresvport.3t

Packit Service 4f68e0
.\" @(#)bindresvport.3n	2.2 88/08/02 4.0 RPCSRC; from 1.7 88/03/14 SMI
Packit Service 4f68e0
.\"
Packit Service 4f68e0
.Dd November 22, 1987
Packit Service 4f68e0
.Dt BINDRESVPORT 3
Packit Service 4f68e0
.Os
Packit Service 4f68e0
.Sh NAME
Packit Service 4f68e0
.Nm bindresvport ,
Packit Service 4f68e0
.Nm bindresvport_sa
Packit Service 4f68e0
.Nd bind a socket to a privileged IP port
Packit Service 4f68e0
.Sh SYNOPSIS
Packit Service 4f68e0
.In sys/types.h
Packit Service 4f68e0
.In rpc/rpc.h
Packit Service 4f68e0
.Ft int
Packit Service 4f68e0
.Fn bindresvport "int sd" "struct sockaddr_in *sin"
Packit Service 4f68e0
.Ft int
Packit Service 4f68e0
.Fn bindresvport_sa "int sd" "struct sockaddr *sa"
Packit Service 4f68e0
.Sh DESCRIPTION
Packit Service 4f68e0
The
Packit Service 4f68e0
.Fn bindresvport
Packit Service 4f68e0
and
Packit Service 4f68e0
.Fn bindresvport_sa
Packit Service 4f68e0
functions
Packit Service 4f68e0
are used to bind a socket descriptor to a privileged
Packit Service 4f68e0
.Tn IP
Packit Service 4f68e0
port, that is, a
Packit Service 4f68e0
port number in the range 0-1023.
Packit Service 4f68e0
.Pp
Packit Service 4f68e0
If
Packit Service 4f68e0
.Fa sin
Packit Service 4f68e0
is a pointer to a
Packit Service 4f68e0
.Ft "struct sockaddr_in"
Packit Service 4f68e0
then the appropriate fields in the structure should be defined.
Packit Service 4f68e0
Note that
Packit Service 4f68e0
.Fa sin->sin_family
Packit Service 4f68e0
must be initialized to the address family of the socket, passed by
Packit Service 4f68e0
.Fa sd .
Packit Service 4f68e0
If
Packit Service 4f68e0
.Fa sin->sin_port
Packit Service 4f68e0
is
Packit Service 4f68e0
.Sq 0
Packit Service 4f68e0
then an anonymous port (in the range 600-1023) will be
Packit Service 4f68e0
chosen, and if
Packit Service 4f68e0
.Xr bind 2
Packit Service 4f68e0
is successful, the
Packit Service 4f68e0
.Fa sin->sin_port
Packit Service 4f68e0
will be updated to contain the allocated port.
Packit Service 4f68e0
.Pp
Packit Service 4f68e0
If
Packit Service 4f68e0
.Fa sin
Packit Service 4f68e0
is the
Packit Service 4f68e0
.Dv NULL
Packit Service 4f68e0
pointer,
Packit Service 4f68e0
an anonymous port will be allocated (as above).
Packit Service 4f68e0
However, there is no way for
Packit Service 4f68e0
.Fn bindresvport
Packit Service 4f68e0
to return the allocated port in this case.
Packit Service 4f68e0
.Pp
Packit Service 4f68e0
Only root can bind to a privileged port; this call will fail for any
Packit Service 4f68e0
other users.
Packit Service 4f68e0
.Pp
Packit Service 4f68e0
Function prototype of
Packit Service 4f68e0
.Fn bindresvport
Packit Service 4f68e0
is biased to
Packit Service 4f68e0
.Dv AF_INET
Packit Service 4f68e0
socket.
Packit Service 4f68e0
The
Packit Service 4f68e0
.Fn bindresvport_sa
Packit Service 4f68e0
function
Packit Service 4f68e0
acts exactly the same, with more neutral function prototype.
Packit Service 4f68e0
Note that both functions behave exactly the same, and
Packit Service 4f68e0
both support
Packit Service 4f68e0
.Dv AF_INET6
Packit Service 4f68e0
sockets as well as
Packit Service 4f68e0
.Dv AF_INET
Packit Service 4f68e0
sockets.
Packit Service 4f68e0
.Sh RETURN VALUES
Packit Service 4f68e0
.Rv -std bindresvport
Packit Service 4f68e0
.Sh ERRORS
Packit Service 4f68e0
.Bl -tag -width Er
Packit Service 4f68e0
.It Bq Er EPFNOSUPPORT
Packit Service 4f68e0
If second argument was supplied,
Packit Service 4f68e0
and address family did not match between arguments.
Packit Service 4f68e0
.El
Packit Service 4f68e0
.Pp
Packit Service 4f68e0
The
Packit Service 4f68e0
.Fn bindresvport
Packit Service 4f68e0
function
Packit Service 4f68e0
may also fail and set
Packit Service 4f68e0
.Va errno
Packit Service 4f68e0
for any of the errors specified for the calls
Packit Service 4f68e0
.Xr bind 2 ,
Packit Service 4f68e0
.Xr getsockopt 2 ,
Packit Service 4f68e0
or
Packit Service 4f68e0
.Xr setsockopt 2 .
Packit Service 4f68e0
.Sh AVAILABILITY
Packit Service 4f68e0
The
Packit Service 4f68e0
.Fn bindresvport
Packit Service 4f68e0
function is part of libtirpc.
Packit Service 4f68e0
.Sh SEE ALSO
Packit Service 4f68e0
.Xr bind 2 ,
Packit Service 4f68e0
.Xr getsockopt 2 ,
Packit Service 4f68e0
.Xr setsockopt 2