BINDRESVPORT(3) | Library Functions Manual | BINDRESVPORT(3) |
bindresvport
,
bindresvport_sa
— bind a
socket to a privileged IP port
#include
<sys/types.h>
#include <netinet/in.h>
int
bindresvport
(int
sd, struct sockaddr_in
*sin);
int
bindresvport_sa
(int
sd, struct sockaddr
*sa);
The
bindresvport
()
and
bindresvport_sa
()
functions are used to bind a socket descriptor to a privileged IP port, that
is, a port number in the range 0-1023. The
bindresvport
() function operates solely on
AF_INET
sockets, whereas the
bindresvport_sa
() function is capable of binding
both AF_INET
and AF_INET6
sockets.
Only the superuser may bind to a privileged port; these functions will fail for any other user.
sd should be a socket descriptor that was returned by a call to socket(2).
If sin is not the NULL
pointer, sin->sin_family must be initialized to the
address family of the socket sd. If the value of
sin->sin_port is non-zero,
bindresvport
()
will attempt to use the specified port. Otherwise, a free port in the range
600-1023 will be chosen and, if the
bind(2) succeeds,
sin->sin_port will be updated with the port that
was assigned.
If sin is the NULL
pointer, a free port in the range 600-1023 will be chosen (as above), but in
this case there is no way for
bindresvport
()
to communicate to the caller which port was assigned.
bindresvport
() returns 0 if it is
successful, otherwise -1 is returned and errno set to
reflect the cause of the error.
The bindresvport
() function fails if:
EBADF
]ENOTSOCK
]EADDRNOTAVAIL
]EADDRINUSE
]EINVAL
]EINVAL
]EACCES
]EFAULT
]ENOBUFS
]EPFNOSUPPORT
]June 5, 2013 | OpenBSD-6.5 |