Provided by: manpages-pt_20040726-5_all bug

NOME

       ip - Implementação do protocolo IPv4 em Linux

SINOPSE

       #include <sys/socket.h>
       #include <net/netinet.h>

       tcp_socket = socket(PF_INET, SOCK_STREAM, 0);
       raw_socket = socket(PF_INET, SOCK_RAW, protocol);
       udp_socket = socket(PF_INET, SOCK_DGRAM, protocol);

DESCRIÇÃO

       Linux  implementa  o  Protocolo  Internet  (IP),  versão 4, descrito nas RFC791 e RFC1122.  ip contém uma
       implementação de multicasting de nível 2, conforme a RFC1112.  Ele  também  contém  um  roteador  IP  que
       inclui um filtro de pacotes.

       A  interface  do  programador é compatível com sockets BSD.  Para maiores informações sobre sockets, veja
       socket(7).

       Um socket IP é criado ao se chamar a função socket(2) no formato socket(PF_INET, socket_type,  protocol).
       Tipos  válidos  de  sockets são SOCK_STREAM para abrir um socket tcp(7) , SOCK_DGRAM para abrir um socket
       udp(7) , ou SOCK_RAW para abrir um socket raw(7)  para  acessar  o  protocolo  IP  protocol  diretamente.
       protocol é o protocolo IP no header IP a ser recebido ou enviado. Os únicos valores válidos para protocol
       são  0  e  IPPROTO_TCP  para  sockets  TCP,  e  0 e IPPROTO_UDP para sockets UDP. Para SOCK_RAW Você deve
       especificar um protocolo IP IANA válido, definido nos números atribuídos na RFC1700.

       Quando um processo quer receber novos pacotes ou conexões de entrada, ele deveria ligar um  socket  a  um
       endereço  local  de  interface,  usando  bind(2).   Somente  um  socket IP pode ser ligado a qualquer par
       (endereço, porta) local dado.  Quando INADDR_ANY é especificado na chamada 'bind' , o socket será  ligado
       a  todas  as interfaces locais. Quando listen(2) ou connect(2) são chamados sobre um socket não ligado, o
       socket é automaticalmente ligado a uma porta livre aleatória, com o endereço local setado em INADDR_ANY.

       Um endereço de socket TCP local  que  tenha  sido  ligado  é  indisponível  por  algum  tempo  depois  do
       fechamento,  a  menos que o flag SO_REUSEADDR tenha sido setado. Deve-se tomar cuidado quando se usa este
       flag, pois ele torna o TCP menos reliable.

FORMATO DE ENDEREÇO

       Um endereço de socket IP é definido como uma combinação de um endereço de interface IP  e  um  número  de
       porta. O protocolo IP básico não suporta número de portas, elas são implementadas por protocolos de nível
       mais alto, como udp(7) e tcp(7).  Em sockets diretos, sin_port é setado para o protocolo IP.

              struct sockaddr_in {
                 sa_family_t   sin_family; /* família de endereço: AF_INET */
                 u_int16_t     sin_port;   /* porta na ordem de byte da rede */
                 struct in_addr  sin_addr; /* endereço internet */
              };

              /* Endereço internet. */
              struct in_addr {
                 u_int32_t     s_addr;     /* endereço na ordem de byte da rede */
              };

       sin_family  é  sempre  selecionado  para AF_INET.  Este é requerido; em Linux 2.2, muitas funções de rede
       retornam EINVAL quando esta configuração está faltando.  sin_port contém a porta  em  ordem  de  byte  da
       rede.  Os  números  de  porta abaixo de 1024 são chamados de portas reservadas.  Somente processos com id
       efetivo de usuário 0 ou a capabilidade CAP_NET_BIND_SERVICE podem fazer o bind(2)  nesses  sockets.  Note
       que  o  protocolo  IPv4  direto,  como  tal,  não  possui  nenhum  conceito  de  porta,  elas somente são
       implementadas por protocolos superiores, como o tcp(7) e o udp(7).

       sin_addr é o endereço IP do host.  O membro addr de struct in_addr contém o endereço de interface do host
       na ordem de rede.  in_addr só deveria ser acessada  usando-se  as  funções  de  biblioteca  inet_aton(3),
       inet_addr(3),  inet_makeaddr(3)  ,  ou diretamente com o resolvedor de nomes (veja gethostbyname(3)).  Os
       endereços IPv4 são divididos em unicast, broadcast e multicast.  Endereços  de  unicast  especificam  uma
       interface única de um host, endereços de broadcast especificam todos os hosts de uma rede, e endereços de
       multicast  endereçam  todos  os  hosts  em  um  grupo  de  multicast. Datagramas dirigidos a endereços de
       broadcast só podem  ser  enviados  ou  recebidos  quando  um  sinalizador  de  socket  SO_BROADCAST  está
       selecionado.   Na  implementação  corrente,  sockets orientados a conexão somente têm permissão para usar
       endereços de unicast.

       Note que o endereço e a porta são sempre armazenados na ordem da rede.  Em particular, isto significa que
       você precisa chamar htons(3) sobre o número que é atribuído a uma porta. Todas as funções de  manipulação
       de endereço/porta na biblioteca padrão funcionam na ordem da rede.

       Há vários endereços especiais: INADDR_LOOPBACK (127.0.0.1) sempre se refere ao host local via dispositivo
       de   loopback;   INADDR_ANY   (0.0.0.0)   significa  qualquer  endereço  para  conexão;  INADDR_BROADCAST
       (255.255.255.255) significa qualquer host e tem o mesmo efeito, em uma  conexão,  que  o  INADDR_ANY  por
       razões históricas.

OPÇÕES DE SOCKETS

       O  IP  suporta  algumas  opções  de  socket  específicos  de  protocolo,  que  podem  ser selecionado com
       setsockopt(2) e lidas com getsockopt(2).  O nível de opção de socket para IP é  SOL_IP.   Um  sinalizador
       inteiro para booleano é zero quando é falso, e em caso contrário é verdadeiro.

       IP_OPTIONS
              Seta ou obtém as opções de IP a serem enviadas com cada pacote deste socket.  Os argumentos são um
              ponteiro  para  um  buffer  de  memória que contém as opções, e o comprimento da opção.  A chamada
              setsockopt(2) seta as opções de IP associadas com o socket.  O máximo tamanho de opção para IPv4 é
              40 bytes. Consulte RFC791 para ver as opções permitidas. Quando o pacote inicial de requisição  de
              conexão  para  um  socket  SOCK_STREAM  contém  opções  de  IP,  as  opções  de  IP  serão setadas
              automaticamente para as opções do pacote inicial, com os headers de roteamento revertido.  Pacotes
              entrantes não têm permissão de mudar opções depois que a conexão é estabelecida.  O  processamento
              de  todas  as  opções  entrantes  de  roteamento  da  fonte é desabilitada por default, e pode ser
              habilitada pelo uso do sysctl accept_source_route Para sockets de datagramas, as opções de  IP  só
              podem  ser  setadas pelo usuário local.  Chamando-se getsockopt(2) com IP_OPTIONS põe-se as opções
              de IP correntes, usadas para envio, no buffer fornecido.

       IP_PKTINFO
              Passa uma mensagem ancilar IP_PKTINFO que contém uma  estrutura  pktinfo  ,  que  fornece  algumas
              informações sobre o pacote entrante. Isto só funciona para sockets orientados a datagramas.

              struct in_pktinfo
              {
                  unsigned int   ipi_ifindex;  /* índice da interface  */
                  struct in_addr ipi_spec_dst; /* endereço de destino do roteamento */
                  struct in_addr ipi_addr;     /* endereço do Destino do Header */
              };

              ipi_ifindex  é  o único índice da interface onde o pacote foi recebido.  ipi_spec_dst é o endereço
              de destino da entrada da tabela de roteamento e ipi_addr é o endereço de destino no  cabeçalho  do
              pacote.   Se  IP_PKTINFO  é  passado  para sendmsg(2) então o pacote de saída será enviado sobre a
              interface especificada em ipi_ifindex , com o endereço de destino setado em ipi_spec_dst.

       IP_RECVTOS
              Se habilitado, a mensagem ancilar IP_TOS é passada com pacotes entrantes. Ele contém um  byte  que
              especifica  o  campo "Tipo de Serviço/Precedência" do cabeçalho do pacote. Espera um flag booleano
              inteiro.

       IP_RECVTTL
              Quando este flag é setado, passa uma mensagem de controle IP_RECVTTL com o campo "time to live" do
              pacote recebido como um byte.  Não é suportado para sockets SOCK_STREAM

       IP_RECVOPTS
              Passa todas as opções de IP entrantes para o usuário em uma mensagem de  controle  IP_OPTIONS.   O
              header  de  roteamento e outras opções já são preenchidas para o host local.  Não é suportado para
              sockets SOCK_STREAM

       IP_RETOPTS
              Idêntico a IP_RECVOPTS , mas retorna opções diretas não processadas, com  opções  de  timestamp  e
              registro de rota não preenchidos para este hop.

       IP_TOS Seleciona  ou  recebe  o campo Tipo-de-Serviço (Tipo-Of-Service - TOS), que é enviado com todos os
              pacotes IP originados deste socket. Ele é usado para priorizar pacotes na rede.  TOS é um byte. Há
              alguns padrões  de  flags  TOS  definidos:  IPTOS_LOWDELAY  para  minimizar  delays  para  tráfego
              interativo, IPTOS_THROUGHPUT para otimizar o fluxo, IPTOS_RELIABILITY para otimizar a reliability,
              IPTOS_MINCOST  deveria  ser  usado  como  "dado  preenchedor"  onde transmissões lentas não causam
              problemas.  No máximo um desses valores de TOS podem ser especificados. Outros bits são  inválidos
              e  serão zerados.  Linux envia datagramas IPTOS_LOWDELAY primeiro por default, mas o comportamento
              exato depende da disciplina de fila configurada.  Alguns níveis de alta prioridade podem  requerer
              um  id  efetivo de usuário 0 ou a capabilidade CAP_NET_ADMIN.  A prioridade também pode ser setada
              de maneira independente de protocolo, pela opção de  socket  (  SOL_SOCKET,  SO_PRIORITY  )  (veja
              socket(7) ).

       IP_TTL Seta  ou  recupera  o  campo "time to live" corrente, que é enviado em todos os pacotes originados
              neste socket.

       IP_HDRINCL
              Se habilitado, o usuário fornece um header ip na frente dos dados.  Somente  válido  para  sockets
              SOCK_RAW.  Veja raw(7) para mais informação. Quando este flag é habilitado, os valores setados por
              IP_OPTIONS, IP_TTL e IP_TOS são ignorados.

       IP_RECVERR
              Habilita a passagem estendida e confiável de mensagens de erro.  Quando habilitado sobre um socket
              de  datagrama, todos os erros gerados serão enfileirados em uma fila de erros por-socket. Quando o
              usuário recebe um erro de uma operação  de  socket,  os  erros  podem  ser  recebidos  chamando-se
              recvmsg(2) com o sinalizador MSG_ERRQUEUE selecionado. A estrutura sock_extended_err descrevendo o
              erro  será analisada em uma mensagem ancilar, com o tipo IP_RECVERR e o nível SOL_IP.  Isto é útil
              para manipulação confiável de erros ou sockets desconectados.   A  parte  dos  dados  recebidos  a
              partir da fila de erros contém o pacote de erro.

              IP  usa  a  estrutura  sock_extended_err  como segue: ee_origin é setado em SO_EE_ORIGIN_ICMP para
              erros recebidos como um pacote ICMP, ou SO_EE_ORIGIN_LOCAL para erros gerados localmente.  ee_type
              e ee_code são setados para os campos "tipo" e "código" do  header  ICMP.   ee_info  contém  o  MTU
              descoberto  para  EMSGSIZE  erros.   ee_data  não é usado atualmente. Quando o erro originou-se na
              rede, todas as opções de IP (IP_OPTIONS, IP_TTL, etc.) habilitadas no socket e contidas no  pacote
              de  erro  são  passadas  como  mensagens  de  controle.  O "payload" do pacote que causou o erro é
              retornado como dado normal.

              Em sockets SOCK_STREAM , IP_RECVERR tem semânticas ligeiramente diferentes. Em vez  de  gravar  os
              erros  para  o  próximo  timeout, ele passa todos os erros entrantes imediatamente para o usuário.
              Isto pode ser útil para conexões TCP muito curtas,  que  precisam  de  uma  manipulação  de  erros
              rápida.  Use  esta  opção  com  cuidado: ela torna o TCP não confiável, ao não permitir que ele se
              recupere propriamente de deslocamento de roteamento, e  outras  condições  e  quebras  normais  da
              especificação  do  protocolo.  Note que TCP não tem fila de erro; MSG_ERRQUEUE é ilegal em sockets
              SOCK_STREAM Portanto todos os erros são retornados pelo retorno de função do  socket  ou  SO_ERROR
              apenas.

              Para  sockets  diretos,  IP_RECVERR  habilita  a passagem para o aplicativo de todos os erros ICMP
              recebidos, caso contrário os erros serão relatados apenas nos sockets conectados.

              Ele seta ou recupera um flag booleano inteiro.  IP_RECVERR é desligado, por padrão.

       IP_PMTU_DISCOVER
              Seta ou recupera a configuração do Path MTU Discovery para um socket. Quando habilitado,  o  Linux
              realiza  o  Path  MTU  Discovery  neste  socket  como é definido na RFC1191.  O sinalizador de não
              fragmentação é selecionado em todos  os  datagramas  de  saída.   O  padrão  geral  do  sistema  é
              controlado  pelo  sysctl  ip_no_pmtu_disc  para sockets SOCK_STREAM , e desabilitado para todos os
              outros. Para sockets que não são SOCK_STREAM , é responsabilidade do usuário empacotar os dados em
              blocos grandes, de tamanho igual ao  MTU  e  fazer  a  retransmissão,  se  necessário.   O  kernel
              rejeitará  pacotes  que  sejam  maiores  que  o  MTU da rota conhecida, se este flag é setada (com
              EMSGSIZE ).

              Flags do Path MTU Discovery   Significado
              IP_PMTUDISC_WANT              Usa configurações por-rota.
              IP_PMTUDISC_DONT              Nunca executa Path MTU Discovery.
              IP_PMTUDISC_DO                Sempre executa Path MTU Discovery.

              Quando o PMTU discovery está habilitado, o kernel automaticamente guarda as  informações  do  Path
              MTU  por  host  de  destino.   Quando ele é conectado a um peer específico com connect(2) , o PMTU
              conhecido atualmente pode ser recuperado convenientemente usando-se a opção de socket IP_MTU  (por
              exemplo,  depois  da  ocorrência de um erro EMSGSIZE ). Isso pode mudar com o tempo.  Para sockets
              sem conexão com muitos destinos, o novo also MTU para um dado destino  também  pode  ser  acessado
              usando-se a fila de erros (veja IP_RECVERR).  Um novo erro será enfileirado em toda atualização de
              MTU de entrada.

              Enquanto o MTU Discovery está em progresso, os pacotes iniciais de sockets de datagramas podem ser
              perdidos.  Aplicativos usando UDP devem ser alertados sobre isso, e não levar isso em conta pera a
              estratégia de retransmissão de pacotes.

              Para bootstrap o processo de path MTU discovery em sockets não conectados, é possível iniciar  com
              um tamanho de datagrama grande (de até 64K-headers bytes de comprimento) e deixá-lo encolher pelas
              atualizações do MTU da rota.

              Para  conseguir  uma  estimativa  inicial do PMTU, conecte um socket de datagrama a um endereço de
              destino usando connect(2) e recupere o MTU chamando getsockopt(2) com a opção IP_MTU

       IP_MTU Recupera o PMTU atual do socket corrente.  Somente válido quando o socket está conectado.  Retorna
              um inteiro. Somente válido como um getsockopt(2).

       IP_ROUTER_ALERT
              Passa todos os pacotes "a serem encaminhados" com a opção "Alerta de Roteador IP" selecionada para
              este  socket. Somente válido para sockets diretos. Isto é útil, por enquanto, para daemons RSVP do
              espaço do usuário. Os pacotes mandados não são encaminhados pelo  kernel,  é  responsabilidade  do
              usuário  enviá-los  novamente.  A  ligação do socket é ignorada, tais pacotes são apenas filtrados
              pelo protocolo.  Espera um sinalizador inteiro.

       IP_MULTICAST_TTL
              Seta ou lê o valor de "time-to-live" de pacotes de multicast de saída para este  socket.  É  muito
              importante  para  pacotes  multicast  que  seja  setado o menor TTL possível.  O padrão é 1, o que
              significa que pacotes multicast não saem da rede local  a  menos  que  o  programa  do  usuário  o
              requeira explicitamente. O argumento é um inteiro.

       IP_MULTICAST_LOOP
              Seta  ou lê um argumento booleano inteiro se pacotes de multicast enviados deveriam ser retornados
              por meio de "loop back" para os sockets locais.

       IP_ADD_MEMBERSHIP
              Integra a um grupo de multicast. O argumento é uma estrutura struct ip_mreqn

              struct ip_mreqn
              {
                  struct in_addr imr_multiaddr; /* endereço IP de grupo de multicast */
                  struct in_addr imr_address;   /* endereço IP da interface local */
                  int            imr_ifindex;   /* índice da interface */
              };

              imr_multiaddr contém o endereço do grupo de multicast com que a aplicação quer se ligar ou deixar.
              Deve ser um endereço de multicast válido.  imr_address é o endereço da interface local com o  qual
              o  sistema  deveria  se  unir  ao  grupo  de  multicast; se for igual a INADDR_ANY , uma interface
              apropriada  é  escolhida  pelo  sistema.   imr_ifindex  é  um  índice   da   interface   que   vai
              agregar/abandonar o grupo imr_multiaddr , ou 0 para indicar qualquer interface.

              Por questão de contabilidade, a antiga estrutura ip_mreq ainda é suportada. Ela difere de ip_mreqn
              somente pela não inclusão do campo imr_ifindex.  Somente válido como um setsockopt(2).

       IP_DROP_MEMBERSHIP
              Abandona  um  grupo  de  multicast.  O  argumento  é uma estrutura ip_mreqn ou ip_mreq , similar a
              IP_ADD_MEMBERSHIP.

       IP_MULTICAST_IF
              Seta o dispositivo local para um socket multicast. O argumento é uma estrutura ip_mreqn ou ip_mreq
              , similar a IP_ADD_MEMBERSHIP.

              Quando é passada uma opção inválida de socket, ENOPROTOOPT é retornado.

SYSCTLS

       O protocolo IP suporta que a interface sysctl configure algumas opções globais.   Os  sysctls  podem  ser
       acessados pela leitura ou escrita dos arquivos /proc/sys/net/ipv4/* , ou usando a interface sysctl(2)

       ip_default_ttl
              Seta  o  valor  default  do "time-to-live" para pacotes de saída. Isso pode ser alterado para cada
              socket, com a opção IP_TTL

       ip_forward
              Habilita "IP forwarding" com um flag booleano. "IP forwarding" também pode ser configurado em  uma
              base por interface.

       ip_dynaddr
              Habilita  endereço  dinâmico  de socket e reescrita mascarada de entrada em mudança de endereço de
              interface. Isto é útil para interface de dialup com  endereços  IP  variáveis.   0  significa  sem
              reescrita, 1 ativa a reescrita, e 2 habilita o modo verbose.

       ip_autoconfig
              Não documentado.

       ip_local_port_range
              Contém dois inteiros que definem a faixa padrão de portas locais alocados para sockets. A alocação
              começa  com  o  primeiro número e termina no segundo.  Note que eles não deveriam conflitar com as
              portas usadas pelo mascaramento (apesar de que o caso é manipulado). Escolhas  arbitrárias  também
              podem  causar problemas com alguns filtros de pacotes de firewall que assumem informações sobre as
              portas locais em uso.  O primeiro número deve ser pelo menos maior que 1024, o melhor é  que  seja
              maior  que  4096  para  evitar  conflitos  com portas mais conhecidas, e minimizar problemas com o
              firewall.

       ip_no_pmtu_disc
              Se habilitado, não realiza Path MTU Discovery para sockets TCP, por  padrão.  Path  MTU  discovery
              pode  falhar  se  firewalls  mal-configurados (que perdem todos os pacotes TCP) ou interfaces mal-
              configuradas (por exemplo, um link ponto-a-ponto onde ambos os extremos não concordam com  o  MTU)
              estão  na  rota.  É melhor corrigir os roteadores problemáticos na rota do que desligar o Path MTU
              Discovery globalmente, porque a não execução deste último incorre em grandes custos para a rede.

       ipfrag_high_thresh, ipfrag_low_thresh
              Se a quantidade de fragmentos IP enfileirados atinge ipfrag_high_thresh , a fila é  "podada"  para
              ipfrag_low_thresh .  Contém um inteiro com o número de bytes.

       ip_always_defrag
              [Novo  com  Kernel  2.2.13;  em versões anteriores do kernel, a feature era controlada em tempo de
              compilação pela opção CONFIG_IP_ALWAYS_DEFRAG ]

              Quando esse flag booleano é habilitado (diferente de 0) fragmentos de entrada (partes  de  pacotes
              IP  que  surgiram  quando  algum  host,  entre a origem e o destino, decidiram que os pacotes eram
              grandes demais e os cortaram  em  pedaços)  serão  remontados  (desfragmentados)  antes  de  serem
              processados, mesmo se eles serão encaminhados.

              Somente  habilite se estiver rodando um firewall que é o link exclusivo para sua rede, ou um proxy
              transparente; nunca acione  isso  para  um  roteador  normal  ou  um  host.  Caso  contrário,  uma
              comunicação  fragmentada pode ser perturbada quando os fragmentos viajam sobre links diferentes. A
              desfragmentação também consome muita memória e tempo da CPU.

              Isto é "automagicamente" acionado quando o mascaramento ou o proxy transparente são configurados.

       neigh/*
              Veja arp(7).

IOCTLS

       Todos os ioctls descritos em socket(7) se aplicam a ip.

       Os ioctls que configuram firewalling são documentados em ipfw(7) do pacote ipchains

       Os ioctls que configuram parâmetros genéricos do dispositivo são descritos em netdevice(7).

NOTAS

       Tome cuidado com a opção SO_BROADCAST - ela não é privilegiada em Linux. É fácil sobrecarregar a rede com
       broadcasts descuidados. Para novos protocolos de aplicativos, é melhor usar um grupo de multicast em  vez
       de broadcast. Broadcast é desencorajado.

       Algumas  outras  implementações  de sockets BSD provêm as opções de socket IP_RCVDSTADDR e IP_RECVIF para
       conseguir o endereço de destino e a interface dos datagramas recebidos.  O Linux tem o IP_PKTINFO ,  mais
       geral para a mesma tarefa.

ERROS

       ENOTCONN
              A operação só é definida em sockets conectados socket, mas o socket não é conectado.

       EINVAL Um  argumento  inválido  foi passado.  Para operações de envio, isso pode ser causado pelo envio a
              uma rota blackhole

       EMSGSIZE
              O datagrama é maior que um MTU na rota e não pode ser fragmentado.

       EACCES O usuário tentou executar uma operação sem as  permissões  necessárias.   Isso  inclui:  Envio  de
              pacote  a  um  endereço  de  broadcast  sem ter o sinalizador SO_BROADCAST seleciona.  Envio de um
              pacote através da rota prohibit Modificação de configuração de firewall sem CAP_NET_ADMIN ou id de
              usuário efetivo 0.  Ligação em uma porta reservada  sem  CAP_NET_BIND_SERVICE  ou  id  de  usuário
              efetivo 0.

       EADDRINUSE
              Tentativa de ligar a um endereço já em uso.

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

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

       EPERM  Usuário  não  tem  permissão para configurar alta prioridade, mudar configuração, ou enviar sinais
              para o processo ou grupo requerido.

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

       EAGAIN A operação sobre um socket não-bloqueável teria sido bloqueada.

       ESOCKTNOSUPPORT
              O socket não está configurado, ou um tipo desconhecido de socket foi requerido.

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

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

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

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

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

       EHOSTUNREACH
              Nenhuma entrada válida da tabela de roteamento combina com o endereço de destino. Este  erro  pode
              ser causado por uma mensagem ICMP de um roteador remoto para a tabela de roteamento local.

       ENODEV Dispositivo de rede não disponível ou não capaz de enviar IP.

       ENOPKG Um subsistema do kernel não foi configurado.

       ENOBUFS, ENOMEM
              Não  há  memória  livre  suficiente.   Isso  frequentemente quer dizer que a alocação de memória é
              limitada pelos limites do buffer de socket, e não pela memória do sistema, mas  isso  não  é  100%
              consistente.

       Outros erros podem ser gerados pelos protocolos de overlay; veja tcp(7), raw(7), udp(7) e socket(7).

VERSÕES

       IP_PKTINFO,  IP_MTU, IP_PMTU_DISCOVER, IP_PKTINFO, IP_RECVERR e IP_ROUTER_ALERT são novas opções no Linux
       2.2.

       struct ip_mreqn é novo no Linux 2.2.  Linux 2.0 somente suporta ip_mreq.

       Os sysctls foram introduzidos com o Linux 2.2.

COMPATIBILIDADE

       Por questões de compatibilidade com o Linux 2.0, a sintaxe obsoleta socket(PF_INET,  SOCK_RAW,  protocol)
       ainda  é suportada para abrir um socket packet(7) socket(PF_PACKET, SOCK_RAW, protocol) nova estrutura de
       endereço sockaddr_ll para informação genérica da camada de link, em vez do antigo sockaddr_pkt.

PROBLEMAS

       Há muitos valores de erro inconsistentes.

       Os ioctls que configuram opções de interface específicos do IP e tabelas ARP não estão descritos.

AUTORES

       Esta man page foi escrita por Andi Kleen.

VEJA TAMBÉM

       sendmsg(2), recvmsg(2), socket(7), netlink(7), tcp(7), udp(7), raw(7), ipfw(7).

       RFC791 para a especificação IP original.
       RFC1122 para os requisitos do host IPv4.
       RFC1812 para os requisitos do roteador IPv4.

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)

Linux Man Page                                 11 de maio de 1999                                          IP(7)