1. NOM

ddp - Implémentation Linux du protocole AppleTalk

2. SYNOPSIS

#include <sys/socket.h>
#include <netatalk/at.h>

ddp_socket = socket(AF_APPLETALK, SOCK_DGRAM, 0);
raw_socket = socket(AF_APPLETALK, SOCK_RAW, protocole);

3. DESCRIPTION

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. Consultez 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. protocole 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.

3.1. Format d'adresse

Une socket AppleTalk est définie comme la combinaison d'un numéro de réseau, d'un numéro de nœud et d'un numéro de port.

 
Sélectionnez
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 réservés. 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.

3.2. Options de sockets

Il n'y a pas d'options spécifiques au protocole sur les sockets.

3.3. 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 nœud 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.

3.4. Ioctls

Toutes les ioctls décrits dans socket(7) s'appliquent à DDP.

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

5. VERSIONS

Appletalk est pris en charge par Linux 2.0 et ultérieurs. Les interfaces /proc existent depuis Linux 2.2.

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

6.1. 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 prendre en charge le paquetage CAP et les outils de supervision AppleTalk plus facilement.

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

8. VOIR AUSSI

9. 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/.

10. 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). Julien Cristau et l'équipe francophone de traduction de Debian (2006-2009).

Veuillez signaler toute erreur de traduction en écrivant à <>.

Vous pouvez toujours avoir accès à la version anglaise de ce document en utilisant la commande « LC_ALL=C man <section> <page_de_man> ».