ddp
Table des matières
Retour à l'index
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, protocole);
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 à l’aide des 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).
Un socket AppleTalk est créé en appelant la fonction socket(2) avec un
argument AF_APPLETALK en famille de socket. Les types valables sont
SOCK_DGRAM pour ouvrir un socket ddp ou SOCK_RAW pour ouvrir un
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 ouverts par un processus ayant UID
effectif 0 ou ayant la capacité CAP_NET_RAW.
Format d'adresse
Une adresse de 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.
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 / Nœud */
};
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 de nœud de l'hôte. La valeur AT_ANYNODE est générique, et
correspond aussi à « ce nœud d'hôte ». La valeur ATADDR_BCAST est une
adresse broadcast locale.
Options de socket
Il n'y a pas d'options spécifiques au protocole sur les sockets.
/proc interfaces
IP prend en charge une série d'interfaces /proc pour configurer certains
paramètres AppleTalk globaux. Ils sont accessibles 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.
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. Cela 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 un socket non bloquant devrait bloquer.
- EALREADY
-
Une connexion est déjà en cours sur un socket non bloquant.
- 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 un socket déjà connecté.
- 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 un 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 pour un socket connecté, mais ce socket
n'était pas connecté.
- EPERM
-
L'utilisateur n'a pas les permissions nécessaires.
- EPIPE
-
La connexion a été fermée prématurément ou volontairement par l'autre
extrémité.
- ESOCKTNOSUPPORT
-
Le socket n'est pas configuré ou un type inconnu a été demandé.
VERSIONS
AppleTalk est pris en charge 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. Cela peut poser
des problèmes de compatibilité.
Le mode socket raw est spécifique à Linux et il existe pour une prise en
charge plus facile le paquet CAP et les outils de supervision AppleTalk.
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, les tables AARP et d'autres périphériques ne sont pas encore
décrites.
VOIR AUSSI
recvmsg(2), sendmsg(2), capabilities(7), socket(7)
TRADUCTION
La traduction française de cette page de manuel a été créée par
Christophe Blaess <https://www.blaess.fr/christophe/>,
Stéphan Rafin <stephan.rafin@laposte.net>,
Thierry Vignaud <tvignaud@mandriva.com>,
François Micaux,
Alain Portal <aportal@univ-montp2.fr>,
Jean-Philippe Guérard <fevrier@tigreraye.org>,
Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>,
Julien Cristau <jcristau@debian.org>,
Thomas Huriaux <thomas.huriaux@gmail.com>,
Nicolas François <nicolas.francois@centraliens.net>,
Florentin Duneau <fduneau@gmail.com>,
Simon Paillard <simon.paillard@resel.enst-bretagne.fr>,
Denis Barbier <barbier@debian.org>,
David Prévot <david@tilapin.org>
et
Jean-Pierre Giraud <jean-pierregiraud@neuf.fr>
Cette traduction est une documentation libre ; veuillez vous reporter à la
GNU General Public License version 3
concernant les conditions de copie et
de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel,
veuillez envoyer un message à
Index
- NOM
-
- SYNOPSIS
-
- DESCRIPTION
-
- Format d'adresse
-
- Options de socket
-
- /proc interfaces
-
- Ioctls
-
- ERREURS
-
- VERSIONS
-
- NOTES
-
- Compatibilité
-
- BOGUES
-
- VOIR AUSSI
-
- TRADUCTION
-
This document was created by
man2html,
using the manual pages.
Time: 05:06:36 GMT, September 19, 2025