DOKK / manpages / debian 10 / manpages-pl-dev / bindresvport.3.pl
BINDRESVPORT(3) Podręcznik programisty Linuksa BINDRESVPORT(3)

bindresvport - połączenie gniazda z uprzywilejowanym portem IP

#include <sys/types.h>
#include <netinet/in.h>
int bindresvport(int sockfd, struct sockaddr_in *sin);

bindresvport() służy do łączenia gniazda opisanego deskryptorem pliku sockfd z uprzywilejowanym anonimowym portem IP, to znaczy z przypadkowo wybranym portem o zakresu od 512 do 1023.

Jeśli powiedzie się bind(2) uruchomiony przez bindresvport() i sin jest różne od NULL, to sin->sin_port będzie zawierać numer przydzielonego portu.

sin może mieć wartość NULL i w tym przypadku sin->sin_family jest przyjmowane jako AF_INET. Jednakże oznacza to również, że bindresvport() nie ma żadnej możliwości, by zwrócić numer przydzielonego portu. (Tę informację można później uzyskać za pomocą getsockname(2)).

bindresvport() zwraca 0, gdy zakończy się pomyślnie, a w przeciwnym przypadku zwraca -1 i ustawia errno, wskazując na przyczynę błędu.

bindresvport() może się nie powieść z tych samych powodów co bind(2). Ponadto mogą wystąpić następujące błędy:

Proces wywołujący nie był uprzywilejowany (a dokładniej: nie miał ustawionego atrybutu CAP_NET_BIND_SERVICE).
Wszystkie uprzywilejowane porty są już używane.
sin jest różny od NULL i sin->sin_family jest różne od AF_INET.

Informacje o pojęciach używanych w tym rozdziale można znaleźć w podręczniku attributes(7).

Interfejs Atrybut Wartość
bindresvport() Bezpieczeństwo wątkowe . glibc >= 2.17: MT-Safe glibc < 2.17: MT-Unsafe

Funkcja bindresvport() używa statycznej zmiennej które nie była zabezpieczona przez blokadę przed glibc 2.17, co nadawało funkcji cechę MT-Unsafe.

Nie występuje w POSIX.1. Obecna w systemach BSD, Solaris i wielu innych.

W przeciwieństwie do niektórych implementacji bindresvport(), implementacja glibc ignoruje wartość przekazaną w sin->sin_port podczas wywołania tej funkcji.

bind(2), getsockname(2)

Angielska wersja tej strony pochodzi z wydania 4.07 projektu Linux man-pages. Opis projektu, informacje dotyczące zgłaszania błędów oraz najnowszą wersję oryginału można znaleźć pod adresem https://www.kernel.org/doc/man-pages/.

Autorami polskiego tłumaczenia niniejszej strony podręcznika man są: Andrzej Krzysztofowicz (PTM) <ankry@mif.pg.gda.pl>, Robert Luberda <robert@debian.org> i Michał Kułach <michal.kulach@gmail.com>.

Polskie tłumaczenie jest częścią projektu manpages-pl; uwagi, pomoc, zgłaszanie błędów na stronie http://sourceforge.net/projects/manpages-pl/. Jest zgodne z wersją 4.07 oryginału.

2015-03-02