Provided by:
manpages-es_1.55-7_all 
NOMBRE
ddp - Implementanción de Linux del protocolo AppleTalk
SINOPSIS
#include <sys/socket.h>
#include <netatalk/at.h>
ddp_socket = socket(PF_APPLETALK, SOCK_DGRAM, 0);
raw_socket = socket(PF_APPLETALK, SOCK_RAW, protocol);
DESCRIPCIÓN
Linux implementa el protocolo Appletalk descrito en Inside Appletalk.
Únicamente la capa DDP y el AARP se encuentran dentro del núcleo. Están
diseñados para ser usados mediante las bibliotecas netatalk del
protocolo. Esta página documenta la interfaz para aquellos que desean
o necesitan usar la capa DDP directamente.
La comunicación entre Appletalk y el programa de usuario funciona
usando una interfaz de conectores compatible con BSD. Para más
información sobre conectores, vea socket(7).
Un conector Appletalk se crea llamando a la función socket(2) y pasando
PF_APPLETALK como familia del conector. Los tipos de conectores válidos
son SOCK_DGRAM para abrir un conector ddp o SOCK_RAW para abrir un
conector raw (directo). protocol es el protocolo Appletalk a ser
recibido o enviado. Para SOCK_RAW debe especificar ATPROTO_DDP.
Los conectores directos sólo pueden ser abiertos por un proceso cuyo
identificador de usuario efectivo sea 0 o por un proceso que posea la
capacidad CAP_NET_RAW.
FORMATO DE LAS DIRECCIONES
La dirección de un conector Appletalk se define como la combinación de
un número de red, un número de nodo y un número de puerto.
struct at_addr {
u_short s_net;
u_char s_node;
};
struct sockaddr_atalk {
sa_family_t sat_family; /* familia de direcciones */
u_char sat_port; /* port */
struct at_addr sat_addr; /* red/nodo */
};
A sat_family siempre se le asigna el valor AF_APPLETALK. sat_port
contiene el puerto. Los números de puerto por debajo de 129 se conocen
como puertos reservados. Sólo los procesos con identificador de
usuario efectivo 0 o con la capacidad CAP_NET_BIND_SERVICE pueden
enlazar estos conectores mediante bind(2). sat_addr es la dirección
del anfitrión (host). El miembro net de struct at_addr contiene la red
del anfitrión expresada en el formato "orden de red" de los bytes. El
valor AT_ANYNET es un comodín y también implica “esta red.” El miembro
node de struct at_addr contiene el número de nodo del anfitrión. El
valor AT_ANYNODE es un comodín y también implica “este nodo.” El valor
de ATADDR_BCAST es la dirección de enlace de difusión local.
OPCIONES DE LOS CONECTORES
No se soportan opciones de conector específicas del protocolo.
SYSCTLS
IP soporta una interfaz sysctl para configurar algunos parámetros
AppleTalk globales. Se puede acceder a las sysctls leyendo o
escribiendo los ficheros del directorio /proc/sys/net/atalk o con la
interfaz sysctl(2).
aarp-expiry-time
El intervalo de tiempo (en segundos) antes de que una entrada de
la cache AARP expire.
aarp-resolve-time
El intervalo de tiempo (en segundos) antes de que se resuelva
una entrada de la cache AARP.
aarp-retransmit-limit
El número de retransmisiones de una entrada AARP antes de que el
nodo sea declarado muerto.
aarp-tick-time
La frecuencia del cronómetro (en segundos) para el cronómetro
que controla el AARP.
Los valores por defecto coinciden con la especificación y nunca debe
ser necesario el cambiarlos.
IOCTLS
Todas las ioctls descritas en socket(7) se aplican también a ddp.
OBSERVACIONES
Tenga cuidado con la opción SO_BROADCAST (no es privilegiada en Linux).
Es fácil sobrecargar la red sin darse cuenta enviando a la direcciones
de difusión.
VERSIONES
Appletalk está soportado a partir de la versión 2.0 de Linux. La
interfaz sysctl es nueva en la versión 2.2 de Linux.
ERRORES
ENOTCONN
La operación sólo está definida en un conector conectado pero el
conector no está conectado.
EINVAL Se ha pasado un argumento inválido.
EMSGSIZE
El datagrama es mayor que la MTU de DDP.
EACCES El usuario ha intentado ejecutar una operación sin los permisos
necesarios. Estos incluyen el enviar a una dirección de
difusión sin haber activado la opción de difusión e intentar el
enlace a un puerto reservado sin un identificador de usuario
efectivo 0 y sin CAP_NET_BIND_SERVICE.
EADDRINUSE
Se ha intentado el enlace a una dirección ya en uso.
ENOMEM y ENOBUFS
No hay suficiente memoria disponible.
ENOPROTOOPT y EOPNOTSUPP
Se han pasado opciones de conector inválidas.
EPERM El usuario no tiene permiso para establecer una prioridad más
alta, hacer un cambio a la configuración o enviar señales al
proceso o grupo solicitado.
EADDRNOTAVAIL
Se ha solicitado una interfaz inexistente o la dirección fuente
solicitada no es local.
EAGAIN La operación se bloquearía sobre un conector bloqueante.
ESOCKTNOSUPPORT
El conector está sin configurar o se ha solicitado un tipo de
conector desconocido.
EISCONN
Se ha llamado a connect(2) sobre un conector ya conectado.
EALREADY
Ya se está realizando una operación de conexión sobre un
conector no bloqueante.
ECONNABORTED
Se ha cerrado la conexión durante un accept(2).
EPIPE La conexión ha sido cerrada o cancelada por el otro extremo.
ENOENT Se ha llamado a SIOCGSTAMP sobre un conector en donde no han
llegado paquetes.
EHOSTUNREACH
No existe una entrada en la tabla de enrutamiento que coincida
con la dirección de destino.
ENODEV El dispositivo de red no está disponible o es incapaz de enviar
IP.
ENOPKG No se ha configurado un subsistema del núcleo.
COMPATIBILIDAD
La interfaz básica de conectores AppleTalk es compatible con netatalk
en los sistemas derivados de BSD. Muchos sistemas BSD fallan al
comprobar SO_BROADCAST cuando se envían tramas de difusión. Esto puede
conducir a problemas de compatibilidad.
El modo de conector directo es único de Linux y existe para soportar
más fácilmente el paquete alternativo CAP y las herramientas de
monitorización de AppleTalk.
FALLOS
Hay demasiados valores de error inconsistentes.
Las ioctls usadas para configurar las tablas de enrutamiento,
dispositivos, tablas AARP y otros dispositivos no se han descrito
todavía.
VÉASE TAMBIÉN
sendmsg(2), recvmsg(2), socket(7)