BINDRESVPORT(3)         NetBSD Library Functions Manual        BINDRESVPORT(3)

NAME
     bindresvport, bindresvport_sa -- bind a socket to a reserved privileged
     IP port

LIBRARY
     Standard C Library (libc, -lc)

SYNOPSIS
     #include <sys/types.h>
     #include <rpc/rpc.h>

     int
     bindresvport(int sd, struct sockaddr_in *sin);

     int
     bindresvport_sa(int sd, struct sockaddr *sa);

DESCRIPTION
     bindresvport() and bindresvport_sa() are used to bind a socket descriptor
     to a reserved privileged 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 errno set to reflect the cause of the error.

     If sin is a pointer to a struct sockaddr_in then the appropriate fields
     in the structure should be defined.  Note that sin->sin_family must be
     initialized to the address family of the socket, passed by sd.  If
     sin->sin_port is `0' then a port (in the range 600-1023) will be chosen,
     and if bind(2) is successful, the sin->sin_port will be updated to con-
     tain the allocated port.

     If sin is the NULL pointer, a port will be allocated (as above).  How-
     ever, there is no way for bindresvport() to return the allocated port in
     this case.  getsockname(2) can be used to determine the assigned port.

     Only root can bind to a privileged port; this call will fail for any
     other users.

     Function prototype of bindresvport() is biased to AF_INET socket.
     bindresvport_sa() acts exactly the same, with more neutral function pro-
     totype.  Note that both functions behave exactly the same, and both sup-
     port AF_INET6 sockets as well as AF_INET sockets.

RETURN VALUES
     If the bind is successful, a 0 value is returned.  A return value of -1
     indicates an error, which is further specified in the global errno.

ERRORS
     [EPFNOSUPPORT]     If second argument was supplied, and address family
                        did not match between arguments.

     bindresvport() may also fail and set errno for any of the errors speci-
     fied for the calls bind(2), getsockopt(2), or setsockopt(2).

SEE ALSO
     bind(2), getsockname(2), getsockopt(2), setsockopt(2), ip(4)

NetBSD 5.0_STABLE              January 27, 2007              NetBSD 5.0_STABLE
