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