logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

bindresvport - bind a socket to a privileged IP port

Attributes

       For an explanation of the terms used in this section, see attributes(7).
       ┌────────────────┬───────────────┬──────────────────────────────────────────────────────────────────────┐
       │ InterfaceAttributeValue                                                                │
       ├────────────────┼───────────────┼──────────────────────────────────────────────────────────────────────┤
       │ 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.

Description

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).)

Errors

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.

Library

       Standard C library (libc, -lc)

Name

       bindresvport - bind a socket to a privileged IP port

Notes

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

Return Value

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

See Also

bind(2), getsockname(2)

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

Standards

       BSD.

Synopsis

#include<sys/types.h>#include<netinet/in.h>intbindresvport(intsockfd,structsockaddr_in*sin);

Versions

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

See Also