Opérations de contrôle de socket ioctl

Objectif

Effectue des opérations de contrôle liées au réseau.

Syntaxe

#include <sys/ioctl.h>

int ioctl (fd,  cmd, .../* arg */) 
int  fd;
int  cmd; 
int ...  /* arg */

Descriptif

Les commandes ioctl de socket permettent d'exécuter divers contrôles liés au réseau. L'argument fd est un descripteur de socket. Pour les descripteurs non-socket, les fonctions exécutées par cet appel ne sont pas spécifiées.

L'argument cmd et un troisième argument facultatif (de type variable) sont transmis à et interprétés par la fonction socket ioctl pour effectuer une opération de contrôle appropriée spécifiée par l'utilisateur.

Les opérations de contrôle ioctl de socket peuvent se trouver dans les catégories d'opérations de contrôle suivantes:

Paramètres

Article Descriptif
fd Descripteur de fichier ouvert qui fait référence à un socket créé à l'aide d'un socket ou d'un appel d'acceptation.
cmd Sélectionne la fonction de contrôle à exécuter.
.../ * arg */ Représente les informations requises pour la fonction demandée. Le type de arg dépend de la demande de contrôle particulière, mais il s'agit d'un entier ou d'un pointeur vers une structure de données spécifique au socket.

Opérations de contrôle de socket

Les commandes ioctl suivantes fonctionnent sur des sockets:
Commande ioctl Descriptif
SIOCATMARK Détermine si le pointeur de lecture pointe vers la marque logique dans le DataStream. La marque logique indique le point d'envoi des données hors bande.
ioctl(fd, SIOCATMARK,&atmark);
int atmark;
Si atmark est défini sur 1 en cas de retour, le pointeur de lecture pointe vers la marque et la lecture suivante renvoie les données après la marque. Si atmark est défini sur 0 en cas de retour (en supposant que des données hors bande sont présentes sur le DataStream), la lecture suivante renvoie les données qui sont envoyées avant la marque hors bande.
Remarque: Les données hors bande sont un canal de données logiquement indépendant qui est distribué à l'utilisateur indépendamment des données normales ; en outre, un signal est également envoyé en raison de l'attention immédiate requise. Les caractères Ctrl-C en sont un exemple.

SIOCSPGRP

SIOCGPGRP

SIOCSPGRP définit les informations de groupe de processus pour un socket. SIOCGPGRP obtient l'ID de groupe de processus associé à un socket.
ioctl (fd, cmd, (int)&pgrp);
int  pgrp;
cmd
Défini sur SIOCSPGRP ou SIOCGPGRP.
pgrp
Indique l'ID du groupe de processus pour le socket.

Opérations de contrôle de la table de routage

Les commandes ioctl suivantes fonctionnent sur la table de routage du noyau:
Commande ioctl Descriptif

SIOCADDRT

SIOCDELRT

SIOCADDRT ajoute un poste de route dans la table de routage. SIOCDELRT supprime une entrée de route de la table de routage.
ioctl(fd, cmd, (caddr_t)&route);
struct ortentry route;
cmd
Défini sur SIOCADDRT ou SIOCDELRT.
Les informations d'entrée de route sont transmises dans la structure ortentry .
SIOUPDROUTE Met à jour la table de routage à l'aide des informations transmises dans la structure ifreq .
ioctl (fd, SIOUPDROUTE, (caddr_t)&ifr);
struct ifreq  ifr;

Opérations de contrôle de table ARP

Les commandes ioctl suivantes fonctionnent sur la table ARP du noyau. Le fichier d'en-tête net/if_arp.h doit être inclus.
Commande ioctl Descriptif

SIOCSARP

SIOCDARP

SIOCGARP

SIOCSARP ajoute ou modifie une entrée ARP dans la table ARP. SIOCDARP supprime une entrée ARP de la table ARP. SIOCGARP obtient une entrée ARP de la table ARP.
ioctl(fd, cmd, (caddr_t)&ar);
struct arpreq ar;
cmd
Défini sur SIOCSARP, SIOCDARP ou SIOCGARP.

Les informations d'entrée ARP sont transmises dans la structure arpreq . Si ar.if Type = IFT_IB et que la commande est SIOCDARP, l'entrée InfiniBand (IB) ARP est supprimée.

Opérations de contrôle des paramètres réseau globaux

Les commandes ioctl suivantes fonctionnent comme des paramètres réseau globaux:
Commande ioctl Descriptif

SIOCSNETOPT

SIOCGNETOPT

SIOCDNETOPT

SIOCGNETOPT1

SIOCSNETOPT définit la valeur d'une option de réseau. SIOCGNETOPT obtient la valeur d'une option de réseau. SIOCDNETOPT définit les valeurs par défaut d'une option de réseau.
ioctl(fd, cmd, (caddr_t)&oreq);
struct optreq oreq;
cmd
Défini sur SIOCSNETOPT, SIOCGNETOPT ou SIOCDNETOPT.
La valeur de l'option de réseau est stockée dans la structure optreq .
SIOCGNETOPT1 obtient la valeur en cours, la valeur par défaut et la plage d'une option de réseau.
ioctl(fd, SIOCGNETOPT1, (caddr_t)&oreq);
struct optreq1 oreq;
Les informations d'option de réseau sont stockées dans la structure optreq1 en cas de retour. Les structures optreq et optreq1 sont définies dans net/netopt.h.

SIOCGNMTUS

SIOCGETMTUS

SIOCADDMTU

SIOCDELMTU

SIOCGNMTUS obtient le nombre de MTU gérées dans la liste des MTU communes. SIOCADDMTU ajoute une MTU dans la liste des MTU communes. SIOCDELMTU supprime une MTU de la liste des MTU communes.
ioctl(fd, cmd, (caddr_t)&nmtus);
int nmtus;
cmd
Défini sur SIOCGNMTUS, SIOCADDMTU ou SIOCDELMTU.
SIOCGETMTUS obtient les MTU gérées dans la liste des MTU communes.
ioctl(fd, SIOCGETMTUS, (caddr_t)&gm);
struct get_mtus gm;
La structure get_mtus est définie dans netinet/in.h.

Opérations de contrôle d'interface

Les commandes ioctl suivantes fonctionnent sur des interfaces. Le fichier d'en-tête net/if.h doit être inclus.
Commande ioctl Descriptif

SIOCSIFADDR

SIOCDIFADDR

SIOCSIFADDR définit une adresse d'interface. SIOCDIFADDR supprime une adresse d'interface. L'adresse de l'interface est spécifiée dans la zone ifr.ifr_addr . SIOCGIFADDR obtient une adresse d'interface. L'adresse est renvoyée dans la zone ifr.ifr_addr .
ioctl(fd, cmd, (caddr_t)&ifr, sizeof(struct ifreq));
struct ifreq ifr;
cmd
Défini sur SIOCSIFADDR ou SIOCDIFADDR.

SIOCAIFADDR

SIOCAIFADDR ajoute une adresse d'interface. Le nom de l'interface est spécifié dans la zone ifr.ifra_name . L'adresse IP d'alias est spécifiée dans la zone theifr.ifra_addr . L'adresse de diffusion IP d'alias peut être spécifiée dans la zone ifr.ifra_broadaddr et le masque de réseau IP d'alias peut être spécifié dans ifr.ifra_mask.
ioctl(fd, cmd, (caddr_t)&ifr, sizeof(struct ifaliasreq));
struct ifaliasreq ifr;
cmd
Défini sur SIOCAIFADDR
SIOCGIFADDRS Obtient la liste des adresses associées à une interface.
ioctl (fd, SIOCGIFADDRS, (caddr_t)ifaddrsp);
struct ifreqaddrs  *ifaddrsp;
Le nom de l'interface est transmis dans la zone ifaddrsp-> ifr_name. Les adresses associées à l'interface sont stockées dans le tableau ifaddrsp->ifrasu lors du retour.
Remarque: la structure ifreqaddrs contient de l'espace pour le stockage d'une seule structure sockaddr_in/sockaddr_in6 (tableau d'un élément sockaddr_in/sockaddr_in6 ). Pour obtenir n adresses associées à une interface, l'appelant de la commande ioctl doit allouer de l'espace pour {sizeof (struct ifreqaddrs) + (n * sizeof (struct sockaddr_in)} octets.

SIOCSIFDSTADDR

SIOCGIFDSTADDR

SIOCSIFDSTADDR définit l'adresse point à point pour une interface spécifiée dans la zone ifr.ifr_dstaddr . SIOCGIFDSTADDR obtient l'adresse point-à-point associée à une interface. L'adresse est stockée dans la zone ifr.ifr_dstaddr lors du retour.
ioctl(fd, cmd, (caddr_t)&ifr, sizeof(struct ifreq));
struct ifreq ifr;
cmd
Défini sur SIOCSIFDSTADDR ou SIOCGIFDSTADDR.

SIOCSIFNETMASK

SIOCGIFNETMASK

SIOCSIFNETMASK définit le masque de réseau d'interface spécifié dans la zone ifr.ifr_addr . SIOCGIFNETMASK obtient le masque de réseau de l'interface.
ioctl(fd, cmd, (caddr_t)&ifr, sizeof(struct ifreq));
struct ifreq ifr;
cmd
Défini sur SIOCSIFNETMASK ou SIOCGIFNETMASK.

SIOCSIFBRDADDR

SIOCGIFBRDADDR

SIOCSIFBRDADDR définit l'adresse de diffusion de l'interface spécifiée dans la zone ifr.ifr_broadaddr . SIOCGIFBRDADDR obtient l'adresse de diffusion de l'interface. L'adresse de diffusion est placée dans la zone ifr.ifr_broadaddr .
ioctl(fd, cmd, (caddr_t)&ifr, sizeof(struct ifreq));
struct ifreq ifr;
cmd
Défini sur SIOCSIFBRDADDR ou SIOCGIFBRDADDR.
SIOCGSIZIFCONF Obtient la taille de la mémoire requise pour obtenir les informations de configuration de toutes les interfaces renvoyées par SIOCGIFCONF.
ioctl(fd, cmd, (caddr_t)&ifconfsize);
int ifconfsize;
SIOCGIFCONF Renvoie des informations de configuration pour toutes les interfaces configurées sur le système.
ioctl(fd, SIOCGIFCONF, (caddr_t)&ifc);
struct ifconf ifc;
Les informations de configuration sont renvoyées dans une liste de structures ifreq pointées par la zone ifc.ifc_req , avec une structure ifreq par interface.
Remarque: L'appelant de la commande ioctl doit allouer suffisamment d'espace pour stocker les informations de configuration, renvoyées sous forme de liste de structures ifreq pour toutes les interfaces configurées sur le système. Par exemple, si n interfaces sont configurées sur le système, ifc.ifc_req doit pointer vers {n * sizeof (struct ifreq)} octets d'espace alloué.
Remarque: Vous pouvez également utiliser la commande SIOCGSIZIFCONF ioctl à cette fin.

SIOCSIFFLAGS

SIOCGIFFLAGS

SIOCSIFFLAGS définit les indicateurs d'interface. SIOCGIFFLAGS obtient les indicateurs d'interface.
ioctl(fd, cmd, (caddr_t)&ifr);
struct ifreq ifr;
Voir /usr/include/net/if.h pour les indicateurs d'interface, indiqués par IFF_xxx.
Remarque: Les indicateurs IFF_BROADCAST, IFF_POINTTOPOINT, IFF_SIMPLEX, IFF_RUNNING, IFF_OACTIVEet IFF_MULTICAST ne peuvent pas être modifiés à l'aide de ioctl.

SIOCSIFMETRIC

SIOCGIFMÉTRIQUE

SIOCSIFMETRIC définit la métrique d'interface spécifiée dans la zone ifr.ifr_metric . SIOCGIFMETRIC obtient la métrique d'interface. La métrique d'interface est placée dans la zone ifr.ifr_metric en cas de retour.
ioctl(fd, cmd, (caddr_t)&ifr);
struct ifreq ifr;
cmd
Défini sur SIOCSIFMETRIC ou SIOCGIFMETRIC.

SIOCSIFSUBCHAN

SIOCGIFSUBCHAN

SIOCSIFSUBCHAN définit l'adresse de sous-canal spécifiée dans la zone ifr.ifr_flags . SIOCGIFSUBCHAN obtient l'adresse de sous-canal dans la zone ifr.ifr_flags .
ioctl(fd, SIOCSIFSUBCHAN, (caddr_t)&ifr);
struct ifreq ifr;

OPTIONS SIOCSIF

OPTIONS SIOCGIF

SIOCSIFOPTIONS définit les options d'interface. SIOCGIFOPTIONS obtient les options d'interface.
ioctl(fd, SIOCSIFOPTIONS, (caddr_t)&ifr);
struct ifreq ifr;
Les options d'interface sont stockées dans la zone ifr_flags de la structure ifreq . Consultez le fichier /usr/include/net/if.h pour obtenir la liste des options d'interface indiquées par IFO_xxx.
Commande ioctl Descriptif

SIOCADDMULTI

SIOCDELMULTI

SIOCADDMULTI ajoute une adresse à la liste des adresses de multidiffusion pour une interface. SIOCDELMULTI supprime une adresse de multidiffusion de la liste des adresses de multidiffusion d'une interface.
ioctl(fd, cmd, (caddr_t)&ifr);
struct ifreq ifr;
cmd
Défini sur SIOCADDMULTI ou SIOCDELMULTI.
Les informations d'adresse de multidiffusion sont spécifiées dans la structure ifr_addr .
SIOCGETVIFCNT Extrait les informations sur le nombre de paquets pour une interface virtuelle. Les informations sont spécifiées dans la structure sioc_vif_req .
ioctl (fd, SIOCGETVIFCNT, (caddr_t)&v_req);
struct sioc_vif_req  v_req;
SIOCGETSGCNT Extrait les informations sur le nombre de paquets pour le groupe source spécifié. Les informations sont stockées dans la structure sioc_sg_req lors du retour.
ioctl(fd, SIOCGETSGCNT, (caddr_t)&v_req);
struct sioc_sg_req v_req;

SIOCSIFMTU

SIOCGIFMTU

SIOCSIFMTU définit l'unité de transmission maximale (MTU) de l'interface. SIOCGIFMTU obtient l'interface MTU.
ioctl(fd, cmd, (caddr_t)&ifr);
struct ifreq ifr;
La valeur MTU est stockée dans la zone ifr.ifr_mtu .
Remarque: La plage de valeurs valides pour MTU varie pour une interface et dépend du type d'interface.

SIOCIFATTACH

DETECAGE SIOCIFACH

SIOCIFATTACH connecte une interface. Cette opération initialise et ajoute une interface dans la liste des interfaces réseau. SIOCIFDETACH déconnecte une adresse de diffusion d'interface. Cette opération supprime l'interface de la liste des interfaces réseau. Le nom de l'interface est spécifié dans la zone ifr.ifr_name .
ioctl(fd, cmd, (caddr_t)&ifr);
struct ifreq ifr;

SIOCSIFGIDLIST

SIOCGIFGIDLIST

SIOCSIFGIDLIST ajoute ou supprime la liste des ID de groupe spécifiés dans la zone ifrg.ifrg_gidlist à l'interface gidlist . Le nom de l'interface est spécifié dans la zone ifrg.ifrg_name . Un code d'opération, ADD_GRP/DEL_GRP, spécifié dans la zone ifrg.ifrg_gidlist indique si la liste d'ID de groupe spécifiée doit être ajoutée ou supprimée de l'interface gidlist . SIOCGIFGIDLIST obtient la liste des ID de groupe associés à une interface. Les ID de groupe sont placés dans la zone ifrg.ifrg_gidlist lors du retour.
ioctl(fd, cmd, (caddr_t)&ifrg);
struct ifgidreq ifrg;

SIOCIF_ATM_UBR

SIOCIF_ATM_SNMPARP

SIOCIF_ATM_DUMPARP

SIOCIF_ATM_IDLE

SIOCIF_ATM_SVC

SIOCIF_ATM_DARP

SIOCIF_ATM_GARP

SIOCIF_ATM_SARP

SIOCIF_ATM_UBR définit le débit UBR pour une interface ATM. SIOCIF_ATM_SNMPARP obtient les entrées SNMP ATM ARP. SIOCIF_ATM_DUMPARP obtient le nombre spécifié d'entrées ATM ARP. SIOCIF_ATM_DARP supprime une entrée ATM ARP de la table ARP. SIOCIF_ATM_GARP obtient une entrée ATM ARP dans la table ARP. SIOCIF_ATM_SARP ajoute une entrée ATM ARP. Les informations ARP sont spécifiées dans la structure atm_arpreq . SIOCIF_ATM_SVC indique si cette interface prend en charge les types de connexions virtuelles de circuit virtuel permanent (PVC) et de circuit virtuel commuté (SVC). Elle indique également si cette interface est un client ARP ou un serveur ARP pour ce sous-réseau IP logique (LIS) en fonction de l'indicateur défini dans la structure ifatm_svc_arg . SIOCIF_ATM_IDLE indique la limite de temps d'inactivité sur l'interface.

SIOCSISNO

SIOCGISNO

SIOCSISNO définit des options de réseau spécifiques à l'interface pour une interface. SIOCGISNO obtient les options de réseau spécifiques à l'interface qui sont associées à une interface.
ioctl(fd, cmd, (caddr_t)&ifr);
struct ifreq ifr;
cmd
Défini sur SIOCSISNO ou SIOCGISNO.
Les options réseau spécifiques à l'interface sont stockées dans la structure ifr.ifr_isno . Reportez-vous au fichier /usr/include/net/if.h pour obtenir la liste des options de réseau spécifiques à l'interface qui sont indiquées par ISNO_xxx.
SIOCGIFBAUDRATE Extrait la valeur du débit en bauds de l'interface dans la zone ifr_baudrate .
ioctl(fd, SIOCGIFBAUDRATE, (caddr_t)&ifr);
struct ifreq ifr;
Le débit en bauds est stocké dans la zone ifr.ifr_baudrate .

SIOCADDIFVIPA

SIOCDELIFVIPA

SIOCLISTIFVIPA

SIOCADDIFVIPA associe la liste spécifiée des interfaces pointées par ifrv.ifrv_ifname à l'interface virtuelle spécifiée par ifrv.ifrv_name. Cette opération entraîne la définition de l'adresse source de tous les paquets sortants de ces interfaces sur l'adresse d'interface virtuelle. SIOCDELIFVIPA supprime la liste des interfaces spécifiées qui sont pointées par ifrv.ifrv_ifname et associées à l'interface virtuelle spécifiée par ifrv.ifrv_name, à l'aide de SIOCADDIFVIPA. SIOCLISTIFVIPA répertorie toutes les interfaces associées à l'interface virtuelle spécifiée par ifrv.ifrv_name.
ioctl(fd, SIOCADDIFVIPA, (caddr_t)&ifrv);
struct ifvireq ifrv;
Les informations d'interface virtuelle sont stockées dans la structure ifvireq .
Remarque: Ces indicateurs fonctionnent uniquement sur une interface virtuelle.
SIOCSIFADDR6 Définissez ou ajoutez une adresse IPv6 .
ioctl(fd, SIOCSIFADDR6, (caddr_t)&ifr);
struct in6_ifreq ifr;
SIOCGIFADDR6 Obtient une adresse IPv6 .
ioctl(fd, SIOCGIFADDR6, (caddr_t)&ifr);
struct in6_ifreq ifr;
SIOCSIFDSTADDR6 Définissez l'adresse de destination (point à point) pour une adresse IPv6 .
ioctl(fd, SIOCSIFDSTADDR6, (caddr_t)&ifr);
struct in6_ifreq ifr;
SIOCGIFDSTADDR6 Obtenez l'adresse de destination (point à point) pour une adresse IPv6 .
ioctl(fd, SIOCGIFDSTADDR6, (caddr_t)&ifr);
struct in6_ifreq ifr;
SIOCSIFNETMASK6 Définissez le masque de réseau pour une adresse IPv6 .
ioctl(fd, SIOCSIFNETMASK6, (caddr_t)&ifr);
struct in6_ifreq ifr;
SIOCGIFNETMASK6 Obtenez le masque de réseau pour une adresse IPv6 .
ioctl(fd, SIOCGIFNETMASK6, (caddr_t)&ifr);
struct in6_ifreq ifr;
SIOCDIFADDR6 Supprimez une adresse IPv6 .
ioctl(fd, SIOCDIFADDR6, (caddr_t)&ifr);
struct in6_ifreq ifr;
SIOCFIFADDR6 Placez une adresse IPv6 au début de la liste d'adresses.
ioctl(fd, SIOCFIFADDR6, (caddr_t)&ifr);
struct in6_ifreq ifr;
SIOCAIFADDR6 Ajoutez ou modifiez une adresse d'alias IPv6 .
ioctl(fd, SIOCAIFADDR6, (caddr_t)&ifra);
struct in6_aliasreq ifra;
SIOCADDANY6 Ajoutez une adresse IPv6 anycast.
ioctl(fd, SIOCADDANY6, (caddr_t)&ifra);
struct in6_ifreq ifr;
SIOCDELANY6 Supprimez une adresse IPv6 anycast.
ioctl(fd, SIOCDELANY6, (caddr_t)&ifra);
struct in6_ifreq ifr;
SIOCSIFZONE6 Définissez l'ID de zone IPv6 d'une interface sur une portée d'adresse particulière.
ioctl(fd, SIOCSIFZONE6, (caddr_t)&ifrz);
struct in6_zonereq ifrz;
SIOCGIFZONE6 Obtenez les ID de zone de portée IPv6 d'une interface.
ioctl(fd, SIOCGIFZONE6, (caddr_t)&ifrz);
struct in6_zonereq ifrz;
SIOCSIFADDRORI6 Définissez l'origine de configuration d'une adresse IPv6 .
ioctl(fd, SIOCSIFADDRORI6, (caddr_t)&ifro);
struct ifaddrorigin6 ifro;
SIOCAIFADDR6T Ajoutez ou modifiez une adresse et un type d'alias IPv6 .
ioctl(fd, SIOCAIFADDR6T, (caddr_t)&ifra);
struct in6_aliasreq2 ifra;
SIOCGIFADDR6T Obtenez le type d'une adresse IPv6 .
ioctl(fd, SIOCGIFADDR6T, (caddr_t)&ifra);
struct in6_aliasreq2 ifra;
SIOCSIFADDRSTATE6 Modifiez l'état d'une adresse IPv6 .
ioctl(fd, SIOCSIFADDRSTATE6, (caddr_t)&ifra);
struct in6_aliasreq2 ifra;
SIOCGIFADDRSTATE6 Obtenez l'état d'une adresse IPv6 .
ioctl(fd, SIOCGIFADDRSTATE6, (caddr_t)&ifra);
struct in6_aliasreq2 ifra;
SIOCGSRCFILTER6 Obtenez le filtre de source de groupe de multidiffusion IPv6 pour une interface.
ioctl(fd, SIOCGSRCFILTER6, (caddr_t)&ifrgsf);
struct group_source_filter_req ifrgsf;
SIOCACLADDR6 Ajoutez une adresse d'alias de cluster IPv6 .
ioctl(fd, SIOCACLADDR6, (caddr_t)&ifra);
struct in6_aliasreq ifra;
SIOCDCLADDR6 Supprimez une adresse de cluster IPv6 .
ioctl(fd, SIOCDCLADDR6, (caddr_t)&ifr);
struct in6_ifreq ifr;
SIOCSIFADDRFLAG6 Définissez l'indicateur de source d'adresse pour une adresse IPv6 .
ioctl(fd, SIOCSIFADDRFLAG6, (caddr_t)&ifra2);
struct in6_aliasreq2 ifra2;
SIOCGIFADDRFLAG6 Obtenir l'indicateur de source d'adresse pour une adresse IPv6 .
ioctl(fd, SIOCGIFADDRFLAG6, (caddr_t)&ifra2);
struct in6_aliasreq2 ifra2;

Valeurs renvoyées

Une fois l'opération terminée, ioctl renvoie 0. Sinon, elle renvoie -1 et définit errno pour indiquer l'erreur.

Codes d'erreur

Les commandes ioctl échouent dans les conditions générales suivantes:
Article Descriptif
EBADF Le descripteur de fichier fd n'est pas un descripteur de fichier de socket ouvert valide.
EINTR Un signal a été intercepté lors de l'opération ioctl.
EINVAL Une commande ou un argument non valide a été spécifié.
Si l'opération sous-jacente spécifiée par la commande ioctl cmd a échoué, ioctl échoue avec l'un des codes d'erreur suivants:
Article Descriptif
EACCES Droits refusés pour l'opération spécifiée.
EADDRNOTAVAIL L'adresse indiquée n'est pas disponible pour l'interface.
EAFNOSUPPORT Opération non prise en charge sur les sockets.
EBUSY La ressource est occupée.
EEXIST Une entrée ou un fichier existe.
EFAULT L'argument fait référence à une zone de mémoire inaccessible.
EIO Erreur d'entrée/sortie.
ENETUNREACH Passerelle inaccessible.
ENOBUFS Dépassement de la table de routage.
ENOCONNECT Aucune connexion.
ENOMEM Mémoire disponible insuffisante.
ENOTCONN L'opération est uniquement définie sur un socket connecté, mais le socket n'était pas connecté.
ENXIO L'unité n'existe pas.
ESRCH Aucun processus de ce type.