BINDRESVPORT(3)

BINDRESVPORT(3) | 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 contain the allocated port.

If sin is the `NULL` pointer, a port will be allocated (as above). However, 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 prototype. Note that both functions behave exactly the same, and both support `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 specified for the calls bind(2), getsockopt(2), or setsockopt(2).

# SEE ALSO

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

January 27, 2007 | NetBSD 9.0