ip

IP(7)                     Manual do Programador Linux                    IP(7)



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)