bindresvport(3) — Linux manual page

NAME | LIBRARY | SYNOPSIS | DESCRIPTION | RETURN VALUE | ERRORS | ATTRIBUTES | VERSIONS | NOTES | STANDARDS | SEE ALSO | COLOPHON

bindresvport(3)         Library Functions Manual         bindresvport(3)

NAME         top

       bindresvport - bind a socket to a privileged IP port

LIBRARY         top

       Standard C library (libc, -lc)

SYNOPSIS         top

       #include <sys/types.h>
       #include <netinet/in.h>

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

DESCRIPTION         top

       bindresvport() is used to bind the socket referred to by the file
       descriptor sockfd to a privileged anonymous IP port, that is, a
       port number arbitrarily selected from the range 512 to 1023.

       If the bind(2) performed by bindresvport() is successful, and sin
       is not NULL, then sin->sin_port returns the port number actually
       allocated.

       sin can be NULL, in which case sin->sin_family is implicitly
       taken to be AF_INET.  However, in this case, bindresvport() has
       no way to return the port number actually allocated.  (This
       information can later be obtained using getsockname(2).)

RETURN VALUE         top

       bindresvport() returns 0 on success; otherwise -1 is returned and
       errno is set to indicate the error.

ERRORS         top

       bindresvport() can fail for any of the same reasons as bind(2).
       In addition, the following errors may occur:

       EACCES The calling process was not privileged (on Linux: the
              calling process did not have the CAP_NET_BIND_SERVICE
              capability in the user namespace governing its network
              namespace).

       EADDRINUSE
              All privileged ports are in use.

       EAFNOSUPPORT (EPFNOSUPPORT in glibc 2.7 and earlier)
              sin is not NULL and sin->sin_family is not AF_INET.

ATTRIBUTES         top

       For an explanation of the terms used in this section, see
       attributes(7).
       ┌────────────────┬───────────────┬──────────────────────────────┐
       │ Interface      Attribute     Value                        │
       ├────────────────┼───────────────┼──────────────────────────────┤
       │ bindresvport() │ Thread safety │ glibc >= 2.17: MT-Safe;      │
       │                │               │ glibc < 2.17: MT-Unsafe      │
       └────────────────┴───────────────┴──────────────────────────────┘

       The bindresvport() function uses a static variable that was not
       protected by a lock before glibc 2.17, rendering the function MT-
       Unsafe.

VERSIONS         top

       Present on the BSDs, Solaris, and many other systems.

NOTES         top

       Unlike some bindresvport() implementations, the glibc
       implementation ignores any value that the caller supplies in
       sin->sin_port.

STANDARDS         top

       BSD.

SEE ALSO         top

       bind(2), getsockname(2)

COLOPHON         top

       This page is part of the man-pages (Linux kernel and C library
       user-space interface documentation) project.  Information about
       the project can be found at 
       ⟨https://www.kernel.org/doc/man-pages/⟩.  If you have a bug report
       for this manual page, see
       ⟨https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/CONTRIBUTING⟩.
       This page was obtained from the tarball man-pages-6.9.1.tar.gz
       fetched from
       ⟨https://mirrors.edge.kernel.org/pub/linux/docs/man-pages/⟩ on
       2024-06-26.  If you discover any rendering problems in this HTML
       version of the page, or you believe there is a better or more up-
       to-date source for the page, or you have corrections or
       improvements to the information in this COLOPHON (which is not
       part of the original manual page), send a mail to
       [email protected]

Linux man-pages 6.9.1          2024-05-02                bindresvport(3)