ddp(7)

NOMBRE
ddp - Implementanción de Linux del protocolo AppleTalk

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

ddp_socket = socket(AF_APPLETALK, SOCK_DGRAM, 0);
raw_socket = socket(AF_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 AF_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 {
        unsigned short s_net;
        unsigned char  s_node;
    };

    struct sockaddr_atalk {
        sa_family_t    sat_family;    /* familia de direcciones */
        unsigned 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.

  Interfaces /proc
IP soporta un conjunto de interfaces /proc para configurar algunos parámetros AppleTalk globales. Se puede acceder a ellos leyendo o escribiendo los ficheros del directorio /proc/sys/net/atalk.

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.

ERRORES

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.

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.

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

EHOSTUNREACH
    No existe una entrada en la tabla de enrutamiento que coincida con la dirección de destino.

EINVAL
    Se ha pasado un argumento inválido.

EISCONN
    Se ha llamado a connect(2) sobre un conector ya conectado.

EMSGSIZE
    El datagrama es mayor que la MTU de DDP.

ENODEV
    El dispositivo de red no está disponible o es incapaz de enviar IP.

ENOENT
    Se ha llamado a SIOCGSTAMP sobre un conector en donde no han llegado paquetes.

ENOMEM y ENOBUFS
    No hay suficiente memoria disponible.

ENOPKG
    No se ha configurado un subsistema del núcleo.

ENOPROTOOPT y EOPNOTSUPP
    Se han pasado opciones de conector inválidas.

ENOTCONN
    La operación solo está definida en un conector conectado pero el conector no está conectado.

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.

EPIPE
    La conexión ha sido cerrada o cancelada por el otro extremo.

ESOCKTNOSUPPORT
    El conector está sin configurar o se ha solicitado un tipo de conector desconocido.

VERSIONES
El soporte para Appletalk está incluido a partir de la versión 2.0 de Linux. La interfaz /proc existe desde la versión 2.2 de Linux.

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

  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.

ERRORES
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
recvmsg(2), sendmsg(2), capabilities(7), socket(7)

TRADUCCIÓN
La traducción al español de esta página del manual fue creada por Juan Piernas <piernas@ditec.um.es> y Marcos Fouces <marcos@debian.org>

Esta traducción es documentación libre; lea la GNU General Public License Version 3 (https://www.gnu.org/licenses/gpl-3.0.html) o posterior con respecto a las condiciones de copyright. No existe NINGUNA RESPONSABILIDAD.

Si encuentra algún error en la traducción de esta página del manual, envíe un correo electrónico a debian-l10n-spanish@lists.debian.org.