NOM
ddp - Implémentation Linux du protocole AppleTalk
SYNOPSIS
#include <sys/socket.h>
#include <netatalk/at.h>
ddp_socket = socket(AF_APPLETALK, SOCK_DGRAM, 0);
raw_socket = socket(AF_APPLETALK, SOCK_RAW, protocol);
Linux implémente le protocole AppleTalk décrit dans le document Inside
Appletalk. Seuls le niveau DDP et l’AARP sont présents dans le noyau,
ils sont conçus pour être utilisés via les bibliothèques du protocole
netatalk. Cette page documente l’interface pour ceux qui ont envie (ou
besoin) d’utiliser directement le niveau DDP.
La communication entre Appletalk et le programme utilisateur fonctionne
en utilisant une interface compatible avec les sockets BSD. Voir
socket(7).
Une socket AppleTalk est créée en appelant la fonction socket(2) avec
un argument AF_APPLETALK en famille de socket. Les types valides sont
SOCK_DGRAM pour ouvrir une socket ddp ou SOCK_RAW pour ouvrir une
socket raw. protocol est le protocole Appletalk pour envoyer ou
recevoir des données. Pour le type SOCK_RAW il faut indiquer
ATPROTO_DDP.
Les sockets raw peuvent seulement être ouvertes par un processus ayant
UID effectif nul ou ayant la capacité CAP_NET_RAW.
Format d’adresse
Une socket AppleTalk est définie comme la combinaison d’un numéro de
réseau, d’un numéro de noeud et d’un numéro de port.
struct at_addr {
unsigned short s_net;
unsigned char s_node;
};
struct sockaddr_atalk {
sa_family_t sat_family; /* Famille d’adresse */
unsigned char sat_port; /* Port */
struct at_addr sat_addr; /* Réseau / Noeud */
};
sat_family doit toujours être rempli avec AF_APPLETALK. sat_port
contient le numéro de port. Les numéros inférieurs à 129 sont rservs.
Seuls les processus ayant un UID effectif nul ou la capacité
CAP_NET_BIND_SERVICE peut appeler bind(2) sur ces sockets. sat_addr est
l’adresse de l’hôte. Le membre net de la structure at_addr contient le
numéro de réseau dans l’ordre des octets du réseau (« network byte
order »). La valeur AT_ANYNET est générique et correspond aussi à « ce
réseau ». Le membre node de la structure at_addr contient le numéro
d’hôte. La valeur AT_ANYNODE est générique, et correspond aussi à « cet
hôte ». La valeur ATADDR_BCAST est une adresse broadcast locale.
Options de sockets
Il n’y a pas d’options spécifiques au protocole sur les sockets.
Interfaces /proc
IP prend en charge une série d’interfaces /proc pour configurer
certains paramètres AppleTalk globaux. On peut y accéder en lisant ou
écrivant les fichiers du répertoire /proc/sys/net/atalk/.
aarp-expiry-time
L’intervalle de temps (en secondes) avant qu’une entrée du cache
AARP expire.
aarp-resolve-time
L’intervalle de temps (en secondes) avant qu’une entrée du cache
AARP soit résolue.
aarp-retransmit-limit
Le nombre de retransmissions d’une demande AARP avant de
déclarer le noeud mort.
aarp-tick-time
La période (en secondes) de la temporisation dirigeant l’AARP.
Les valeurs par défaut correspondent aux spécifications et ne doivent
normalement pas être modifiées.
Ioctls
Toutes les ioctls décrits dans socket(7) s’appliquent à DDP.
ERREURS
EACCES L’utilisateur a essayé d’exécuter une opération sans avoir les
permissions adéquates. Ceci inclut l’envoi vers une adresse
broadcast sans avoir l’attribut correspondant, ou la tentative
d’utilisation de port réservé sans UID effectif nul et sans la
capacité CAP_NET_BIND_SERVICE.
EADDRINUSE
Tentative d’attachement à une adresse déjà utilisée.
EADDRNOTAVAIL
Une interface inexistante a été demandée, ou l’adresse
d’émission demandée n’était pas locale.
EAGAIN L’opération sur une socket non bloquante devrait bloquer.
EALREADY
Une connexion est déjà en cours sur la socket non bloquante.
ECONNABORTED
Une connexion a été fermée durant un appel à accept(2).
EHOSTUNREACH
Aucune entrée dans la table de routage ne correspond à l’adresse
de destination.
EINVAL Un paramètre non valable a été fourni.
EISCONN
connect(2) a été appelée sur une socket déjà connectée.
EMSGSIZE
Le datagramme est plus grand que le MTU DDP.
ENODEV Le périphérique réseau n’est pas disponible ou est incapable
d’utiliser le protocole IP.
ENOENT SIOCGSTAMP a été appelé sur une socket qu’aucun paquet n’a
atteint.
ENOMEM et ENOBUFS
Pas assez de mémoire.
ENOPKG Un sous-système du noyau n’est pas configuré.
ENOPROTOOPT et EOPNOTSUPP
Passage d’une option de socket non valable.
ENOTCONN
L’opération n’est définie que sur une socket connectée, mais
cette socket n’était pas connectée.
EPERM L’utilisateur n’a pas les permissions nécessaires.
EPIPE La connexion a été fermée prématurément ou volontairement à
l’autre extrémité.
ESOCKTNOSUPPORT
La socket n’est pas configurée ou on a demandé un type inconnu.
VERSIONS
Appletalk est supporté par Linux 2.0 et ultérieurs. Les interfaces
/proc existent depuis Linux 2.2.
NOTES
Soyez très prudents avec l’option SO_BROADCAST, elle n’est pas
privilégiée sous Linux. Il est facile de surcharger le réseau en
écrivant sans faire attention vers des adresses broadcast.
Compatibilité
L’interface socket AppleTalk de base est compatible avec netatalk sur
les systèmes dérivés de BSD. Plusieurs systèmes BSD peuvent échouer à
vérifier SO_BROADCAST lorsqu’ils envoient des trames broadcast. Ceci
peut poser des problèmes de compatibilité.
Le mode socket raw est spécifique à Linux et existe pour supporter le
paquetage CAP et les outils de supervision AppleTalk plus facilement.
BOGUES
Il y a trop de valeurs d’erreurs hétérogènes.
Les ioctls utilisées pour configurer les tables de routage, les
périphériques, et les tables AARP ne sont pas encore décrites.
VOIR AUSSI
recvmsg(2), sendmsg(2), capabilities(7), socket(7)
COLOPHON
Cette page fait partie de la publication 3.23 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
Cette page de manuel a été traduite et mise à jour par Christophe
Blaess <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis par
Alain Portal <aportal AT univ-montp2 DOT fr> jusqu’en 2006, et mise à
disposition sur http://manpagesfr.free.fr/.
Les mises à jour et corrections de la version présente dans Debian sont
directement gérées par Julien Cristau <jcristau@debian.org> et l’équipe
francophone de traduction de Debian.
Veuillez signaler toute erreur de traduction en écrivant à
<debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
paquet manpages-fr.
Vous pouvez toujours avoir accès à la version anglaise de ce document
en utilisant la commande « man -L C <section> <page_de_man> ».