ddp(7) | Miscellaneous Information Manual | ddp(7) |
NOME¶
ddp - Implementação do protocolo Linux AppleTalk
SINOPSE¶
#include <sys/socket.h> #include <netatalk/at.h>
ddp_socket = socket(AF_APPLETALK, SOCK_DGRAM, 0); raw_socket = socket(AF_APPLETALK, SOCK_RAW, protocolo);
DESCRIÇÃO¶
Linux implementa os protocolos AppleTalk descritos em Inside 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 AF_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' direto. protocol é um protocolo AppleTalk para ser recebido ou enviado. Para SOCK_RAW Você deve especificar ATPROTO_DDP.
Os 'sockets' diretos 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 de 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 {
unsigned short s_net;
unsigned char s_node; }; struct sockaddr_atalk {
sa_family_t sat_family; /* address family */
unsigned char sat_port; /* port */
struct at_addr sat_addr; /* net/node */ };
sat_family is always set to AF_APPLETALK. sat_port contains the port. The port numbers below 129 are known as reserved ports. Only processes with the effective user ID 0 or the CAP_NET_BIND_SERVICE capability may bind(2) to these sockets. sat_addr is the host address. The net member of struct at_addr contains the host network in network byte order. The value of AT_ANYNET is a wildcard and also implies “this network.” The node member of struct at_addr contains the host node number. The value of AT_ANYNODE is a wildcard and also implies “this node.” The value of ATADDR_BCAST is a link local broadcast address.
Opções de socket¶
Nenhuma opção de 'socket' específica de protocolo é suportada.
Interfaces /proc¶
IP supports a set of /proc interfaces to configure some global AppleTalk parameters. The parameters can be accessed by reading or writing files in the directory /proc/sys/net/atalk/.
- 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.
ERROS¶
- 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 fazer uma ligação a um endereço já em uso.
- EADDRNOTAVAIL
- Uma interface não existente foi requerida, ou o endereço de origem requerido não era local.
- EAGAIN
- Uma operação sobre um socket não bloqueante causaria bloqueio.
- EALREADY
- Uma operação de conexão sobre um socket não bloqueante já está em progresso.
- ECONNABORTED
- Uma conexão foi fechada durante um accept(2).
- EHOSTUNREACH
- Nenhuma entrada da tabela de roteamento encontrou o endereço de destino.
- EINVAL
- Foi passado um argumento inválido.
- EISCONN
- connect(2) foi chamado em um 'socket' já conectado.
- EMSGSIZE
- O datagrama é maior que o MTU DDP.
- ENODEV
- O dispositivo de rede não está disponível, ou não é capaz de enviar IP.
- ENOENT
- SIOCGSTAMP foi chamado em um 'socket' onde nenhum pacote chegou.
- ENOMEM e ENOBUFS
- Não há memória disponível.
- ENOPKG
- Um subsistema do kernel não foi configurado.
- ENOPROTOOPT e EOPNOTSUPP
- Uma opção de 'socket' inválida foi passada.
- ENOTCONN
- A operação só é definida em 'sockets' conectados 'socket', mas o 'socket' não é conectado.
- 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.
- EPIPE
- A conexão foi fechada ou derrubada inesperadamente pela outra extremidade.
- ESOCKTNOSUPPORT
- O 'socket' foi desconfigurado, ou um tipo de 'socket' desconhecido foi requerido.
VERSÕES¶
Appletalk é suportado pelo Linux versão 2.0 ou superior. As interfaces proc existem desde o Linux 2.2.
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'.
Compatibilidade¶
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' direto é único em Linux e existe para suportar o pacote alternativo CAP e as ferramentas de monitoramento AppleTalk mais facilmente.
BUGS¶
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¶
TRADUÇÃO¶
A tradução para português brasileiro desta página man foi criada por Rubens de Jesus Nogueira <darkseid99@usa.net> e André Luiz Fassone <lonely_wolf@ig.com.br>
Esta tradução é uma documentação livre; leia a Licença Pública Geral GNU Versão 3 ou posterior para as condições de direitos autorais. Nenhuma responsabilidade é aceita.
Se você encontrar algum erro na tradução desta página de manual, envie um e-mail para a lista de discussão de tradutores.
2 maio 2024 | Linux man-pages (unreleased) |