table of contents
BINDRESVPORT(3) | Manuel du programmeur Linux | BINDRESVPORT(3) |
NOM¶
bindresvport - Affecter une socket à un port IP privilégié
SYNOPSIS¶
#include <sys/types.h> #include <netinet/in.h>
int bindresvport(int sockfd, struct sockaddr_in *sin);
DESCRIPTION¶
bindresvport() est utilisée pour affecter un descripteur de socket à un port IP privilégié anonyme, c'est-à-dire un numéro de port arbitrairement sélectionné dans l'intervalle [512, 1023].
Si le bind(2) réalisé par bindresvport() réussi et si sin est non NULL, alors sin->sin_port renvoie le numéro de port alloué.
sin peut être NULL, dans ce cas sin->sin_family est simplement considéré comme AF_INET. Cependant, dans ce cas, bindresvport() ne peut renvoyer le port actuellement alloué (cette information peut être obtenu ultérieurement avec getsockname(2)).
VALEUR RENVOYÉE¶
bindresvport() renvoie 0 en cas de succès. En cas d'erreur, -1 est renvoyé et errno est définie.
ERREURS¶
bindresvport() peut échouer pour les mêmes raisons que bind(2). De plus, les erreurs suivantes peuvent se produire :
- EACCES
- L'appelant n'a pas les privilèges suffisants (la capacité CAP_NET_BIND_SERVICE est nécessaire).
- EADDRINUSE
- Tous les ports privilégiés sont utilisés.
- EAFNOSUPPORT (EPFNOSUPPORT dans la glibc 2.7 et les versions précédentes)
- sin est non NULL et sin->sin_family n'est pas AF_INET.
ATTRIBUTS¶
Multithreading (voir pthreads(7))¶
Avant glibc 2.17, la fonction bindresvport() utilisait une variable statique non protégée, et n’était donc pas sûre dans un contexte multithread.
Depuis glibc 2.17, la fonction bindresvport() utilise un verrou de protection de variable statique, donc elle est sûre dans un contexte multithread.
CONFORMITɶ
Absent de POSIX.1-2001. Présent sur les systèmes BSD, Solaris et beaucoup d'autres.
NOTES¶
Contrairement à d'autres implémentations de bindresvport(), l'implémentation de la glibc ignore toutes les valeurs que l'appelant passe à sin->sin_port.
VOIR AUSSI¶
COLOPHON¶
Cette page fait partie de la publication 3.52 du projet man-pages Linux. Une description du projet et des instructions pour signaler des anomalies peuvent être trouvées à l'adresse http://www.kernel.org/doc/man-pages/.
TRADUCTION¶
Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a <http://po4a.alioth.debian.org/> par l'équipe de traduction francophone au sein du projet perkamon <http://perkamon.alioth.debian.org/>.
Christophe Blaess <http://www.blaess.fr/christophe/> (1996-2003), Alain Portal <http://manpagesfr.free.fr/> (2003-2006). Florentin Duneau et l'équipe francophone de traduction de Debian (2006-2009).
Veuillez signaler toute erreur de traduction en écrivant à <perkamon-fr@traduc.org>.
Vous pouvez toujours avoir accès à la version anglaise de ce document en utilisant la commande « LC_ALL=C man <section> <page_de_man> ».
21 juin 2013 |