Provided by: manpages-pt_20040726-4_all bug

NOME

       ddp - Implementação do protocolo Linux AppleTalk

SINOPSE

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

       ddp_socket = socket(PF_APPLETALK, SOCK_DGRAM, 0);
       raw_socket = socket(PF_APPLETALK, SOCK_RAW, protocol);

DESCRIÇÃO

       Linux  implementa  os  protocolos  Appletalk descritos em Por dentro do
       Appletalk.  Somente a camada DDP e o AARP estão  presentes  no  kernel.
       Eles  são  projetados  para  serem  usados nas bibliotecas do protocolo
       netatalk Esta página documenta a interface para aqueles que desejam  ou
       precisam usar a camada DDP diretamente.

       A  comunicação  entre Appletalk e o programa do usuário funciona usando
       uma interface de socket compatível  com  BSD.   Para  mais  informações
       sobre sockets, veja socket(7).

       Um  socket  AppleTalk  é  criado  chamando-se a função socket(2) com um
       argumento PF_APPLETALK da família de socket. Tipos de  sockets  válidos
       são  SOCK_DGRAM  para  abrir  um  socket  ddp ou SOCK_RAW para abrir um
       socket raw protocol é um  protocolo  Appletalk  para  ser  recebido  ou
       enviado. Para SOCK_RAW Você deve especificar ATPROTO_DDP.

       Raw  sockets  só podem ser abertos por um processo com um id efetivo de
       usuário igual a 0, ou quando o processo tem a propriedade CAP_NET_RAW

FORMATO DO ENDEREÇO

       Um endereço de socket Appletalk é definido como uma  combinação  de  um
       número de rede, um número de nó e um número de porta.

              struct at_addr {
                  u_short         s_net;
                  u_char          s_node;
              };

              struct sockaddr_atalk {
                  sa_family_t     sat_family; /* família de endereço */
                  u_char          sat_port;   /* porta */
                  struct at_addr  sat_addr;   /* rede/nó */
              };

       sat_family é sempre setado para AF_APPLETALK.  sat_port contém a porta.
       Os  números  de  porta  abaixo  de  129  são  conhecidos  como   portas
       reservadas.   Apenas  os processos com id efetivo de usuário igual a 0,
       ou com a propriedade CAP_NET_BIND_SERVICE podem  realizar  bind(2)  com
       esses  sockets.  sat_addr é o endereço do host.  O membro net de struct
       at_addr contém a rede do host, em ordem de byte da  rede.  O  valor  de
       AT_ANYNET é um coringa, e também significa “esta rede.”  O membro n de
       struct at_addr contém o número do nó do host. O valor de  AT_ANYNODE  é
       um  coringa, e também significa “este nó.” O valor de ATADDR_BCAST é um
       endereço local de broadcast de link.

OPÇÕES DE SOCKET

       Nenhuma opção de socket específica de protocolo é suportada.

SYSCTLS

       IP suporta uma  interface  sysctl  para  configurar  alguns  parâmetros
       globais  do  AppleTalk.  Os sysctls podem ser acessados pela leitura ou
       escrita nos arquivos /proc/sys/net/atalk/* ou com a interface sysctl(2)

       aarp-expiry-time
              O intervalo de tempo (em segundos) antes de uma entrada de cache
              AARP expirar.

       aarp-resolve-time
              O intervalo de tempo (em segundos) antes de uma entrada de cache
              AARP ser resolvida.

       aarp-retransmit-limit
              O  número  de retransmissões de uma pesquisa AARP antes que o nó
              seja declarado morto.

       aarp-tick-time
              A taxa do temporizador (em segundos)  para  o  temporizador  que
              controla o AARP.

       Os  valores  padrão  casam  com  a  especificação  e nunca deveriam ser
       alterados.

IOCTLS

       Todos os ioctls descritos em socket(7) aplicam-se ao ddp.

NOTAS

       Seja muito cuidadoso com a opção SO_BROADCAST - ela não é  privilegiada
       em  Linux.  É  fácil  sobrecarregar a rede com transmissões descuidadas
       para endereços de broadcast.

VERSÕES

       Appletalk é suportado pelo Linux versão 2.0 ou  superior.  A  interface
       sysctl é nova no Linux 2.2.

ERROS

       ENOTCONN
              A operação só é definida sobre um socket conectado, mas o socket
              não está conectado.

       EINVAL Um argumento inválido foi passado.

       EMSGSIZE
              O datagrama é maior que o MTU DDP.

       EACCES O  usuário  tentou  executar  uma  operação  sem  as  permissões
              necessárias.  Isso  inclui envios a um endereço de broadcast sem
              ter a flag de broadcast setada, e tentativas de executar um bind
              em uma porta reservada sem um id efetivo de usuário igual a 0 ou
              CAP_NET_BIND_SERVICE.

       EADDRINUSE
              Tentativa de executar um bind em um endereço já em uso.

       ENOMEM and ENOBUFS
              Não há memória disponível.

       ENOPROTOOPT and EOPNOTSUPP
              Uma opção de socket inválido foi passada.

       EPERM  Usuário não tem permissão de setar alta  prioridade,  fazer  uma
              mudança  de  configuração,  ou enviar sinais para um processo ou
              grupo requerido.

       EADDRNOTAVAIL
              Uma interface não existente foi  requerida,  ou  o  endereço  de
              fonte requerida não era local.

       EAGAIN Operation on a nonblocking socket would block.

       ESOCKTNOSUPPORT
              O  socket  foi desconfigurado, ou um tipo de socket desconhecido
              foi requerido.

       EISCONN
              connect(2) foi chamado sobre um socket já conectado.

       EALREADY
              Uma operação de conexão sobre um socket não-bloqueado já está em
              progresso.

       ECONNABORTED
              Uma conexão foi fechada durante um accept(2).

       EPIPE  A  conexão  foi  fechada ou desligada inesperadamente pelo outra
              extremidade.

       ENOENT SIOCGSTAMP foi  chamado  sobre  um  socket  onde  nenhum  pacote
              chegou.

       EHOSTUNREACH
              Nenhuma  entrada da tabela de roteamento encontrou o endereço de
              destino.

       ENODEV O dispositivo de rede não está disponível, ou  não  é  capaz  de
              enviar IP.

       ENOPKG Um subsistema do kernel não foi configurado.

COMPATIBILITY

       A  interface  básica  do  socket AppleTalk é compatível com netatalk em
       sistemas derivados do BSD. Muitos sistemas BSD falham  na  checagem  de
       SO_BROADCAST  quando  enviam  quadros  de  broadcast; isto pode levar a
       problemas de compatibilidade.

       O modo de socket raw é único em Linux e existe para suportar  o  pacote
       alternativo  CAP  e  as  ferramentas  de  monitoramento  AppleTalk mais
       facilmente.

ERROS

       Há muitos valores de erro inconsistentes.

       Os ioctls usados para configurar tabelas de  roteamento,  dispositivos,
       tabelas AARP e outros dispositivos ainda não foram descritos.

VEJA TAMBÉM

       sendmsg(2), recvmsg(2), socket(7)

TRADUZIDO POR LDP-BR em 21/08/2000.

       Rubens  de  Jesus  Nogueira  <darkseid99@usa.net>  (tradução)  André L.
       Fassone Canova <lonelywolf@blv.com.br> (revisão)