Provided by: manpages-pt-br_4.21.0-2_all bug

NOME

       rtnetlink - Linux routing socket

SINOPSE

       #include <asm/types.h>
       #include <linux/if_link.h>
       #include <linux/netlink.h>
       #include <linux/rtnetlink.h>
       #include <sys/socket.h>

       rtnetlink_socket = socket(AF_NETLINK, int socket_type, NETLINK_ROUTE);

DESCRIÇÃO

       Rtnetlink  permite que as tabelas de roteamento do kernel sejam lidas e alteradas. É usado
       dentro do kernel para a comunicação entre vários subsistemas, apesar de que seu uso não  é
       documentado  aqui,  e  para comunicação com programas do espaço do usuário. Rotas de rede,
       endereços IP, parâmetros de ligação, configurações de vizinhança,  disciplinas  de  filas,
       classes  de  tráfego  e  classificadores de pacotes podem todos ser controlados através de
       'sockets' NETLINK_ROUTE. Ele é baseado em mensagens de  "netlink";  veja  netlink(7)  para
       maiores informações.

   Atributos de roteamento
       Algumas mensagens do rnetlink têm atributos opcionais depois do cabeçalho inicial:

           struct rtattr {
               unsigned short rta_len;    /* Comprimento da opção */
               unsigned short rta_type;   /* Tipo da opção */
               /* Seguem os Dados */
           };

       Estes atributos seriam manipulados somente pelo uso de macros RTA_* ou do libnetlink, veja
       rtnetlink(3).

   Messages
       Rtnetlink consiste nos  seguintes  tipos  de  mensagens  (além  das  mensagens  padrão  do
       netlink):

       RTM_NEWLINK, RTM_DELLINK, RTM_GETLINK
              Cria,  remove  ou  obtém  informações sobre uma interface de rede específica. Essas
              mensagens contêm uma estrutura  ifinfomsg  seguida  por  uma  série  de  estruturas
              rtattr.

              struct ifinfomsg {
                  unsigned char  ifi_family; /* AF_UNSPEC */
                  unsigned short ifi_type;   /* Device type */
                  int            ifi_index;  /* Interface index */
                  unsigned int   ifi_flags;  /* Device flags  */
                  unsigned int   ifi_change; /* change mask */
              };

              ifi_flags  contains  the  device  flags,  see netdevice(7); ifi_index is the unique
              interface index (since Linux 3.7, it is possible to feed a nonzero value  with  the
              RTM_NEWLINK  message,  thus  creating a link with the given ifindex); ifi_change is
              reserved for future use and should be always set to 0xFFFFFFFF.

                               Atributos de roteamento
              rta_type         Tipo de valor        Descrição
              ───────────────────────────────────────────────────────────
              IFLA_UNSPEC      -                    não-especificado
              IFLA_ADDRESS     ender. de hardware   interface L2 address
              IFLA_BROADCAST   ender. de hardware   L2 broadcast address

              IFLA_IFNAME      cadeia asciiz        Nome do dispos.
              IFLA_MTU         int. sem sinal       MTU do dispos.
              IFLA_LINK        int                  Tipo de ligação
              IFLA_QDISC       cadeia asciiz        Disciplina de fila
              IFLA_STATS       see below            Interface Statistics

              The value type for IFLA_STATS is struct rtnl_link_stats (struct net_device_stats in
              Linux 2.4 and earlier).

       RTM_NEWADDR, RTM_DELADDR, RTM_GETADDR
              Acrescenta,  remove  ou  recebe  informação  sobre  um  endereço IP associado a uma
              interface. No Linux 2.2, uma interface pode carregar múltiplos endereços  IP,  isso
              substitui  o  conceito  de apelido de dispositivo no Linux 2.0. No Linux 2.2, essas
              mensagens suportam endereços IPv4 e IPv6.  Elas  contêm  uma  estrutura  ifaddrmsg,
              opcionalmente seguida pelos atributos de roteamento rtaddr.

              struct ifaddrmsg {
                  unsigned char ifa_family;    /* Address type */
                  unsigned char ifa_prefixlen; /* Prefixlength of address */
                  unsigned char ifa_flags;     /* Address flags */
                  unsigned char ifa_scope;     /* Address scope */
                  unsigned int  ifa_index;     /* Interface index */
              };

              ifa_family   is   the   address   family  type  (currently  AF_INET  or  AF_INET6),
              ifa_prefixlen is the length of the address mask of the address if defined  for  the
              family  (like for IPv4), ifa_scope is the address scope, ifa_index is the interface
              index of the interface the address is associated with.  ifa_flags is a flag word of
              IFA_F_SECONDARY  for secondary address (old alias interface), IFA_F_PERMANENT for a
              permanent address set by the user and other undocumented flags.

                                          Atributos
              rta_type        Tipo de valor                Descrição
              ──────────────────────────────────────────────────────────────────
              IFA_UNSPEC      -                            não-especificado
              IFA_ADDRESS     ender. de protocolo direto   ender. da interface
              IFA_LOCAL       ender. de protocolo direto   ender. local
              IFA_LABEL       cadeia asciiz                nome da interface
              IFA_BROADCAST   ender. de protocolo direto   Ender. de broadcast
              IFA_ANYCAST     ender. de protocolo direto   ender. de anycast
              IFA_CACHEINFO   struct ifa_cacheinfo         Informação de ender.

       RTM_NEWROUTE, RTM_DELROUTE, RTM_GETROUTE
              Cria, remove ou recebe informação sobre uma rota de rede.  Essas  mensagens  contêm
              uma  estrutura  rtmsg  com  uma  seqüência  opcional de estruturas rtattr a seguir.
              Selecionando RTM_GETROUTE, rtm_dst_len e rtm_src_len  para  0  significa  que  você
              obtém  todas  as  entradas para a tabela de roteamento especificada. Para os outros
              campos, exceto rtm_table e rtm_protocol 0 é um caractere coringa.

              struct rtmsg {
                  unsigned char rtm_family;   /* Address family of route */
                  unsigned char rtm_dst_len;  /* Length of destination */
                  unsigned char rtm_src_len;  /* Length of source */
                  unsigned char rtm_tos;      /* TOS filter */
                  unsigned char rtm_table;    /* Routing table ID;
                                                 see RTA_TABLE below */
                  unsigned char rtm_protocol; /* Routing protocol; see below */
                  unsigned char rtm_scope;    /* See below */
                  unsigned char rtm_type;     /* See below */

                  unsigned int  rtm_flags;
              };

              rtm_type          Tipo de rota
              ─────────────────────────────────────────────────────────────────

              RTN_UNSPEC        rota desconhecida
              RTN_UNICAST       um gateway ou rota direta
              RTN_LOCAL         uma rota de interface local
              RTN_BROADCAST     uma rota de broadcast local (enviado  como  um
                                broadcast)
              RTN_ANYCAST       uma  rota  de broadcast local (enviado como um
                                unicast)
              RTN_MULTICAST     uma rota de multicast
              RTN_BLACKHOLE     uma rota de perda de pacotes
              RTN_UNREACHABLE   um destino não alcançável
              RTN_PROHIBIT      uma rota de rejeição de pacotes
              RTN_THROW         continua a busca de roteamento em outra tabela
              RTN_NAT           uma regra de tradução de endereço de rede
              RTN_XRESOLVE      refere-se  a  um   resolvedor   externo   (não
                                implementado)

              rtm_protocol      Origem da rota
              ───────────────────────────────────────────────────
              RTPROT_UNSPEC     desconhecida
              RTPROT_REDIRECT   por  um redirecionamento de ICMP
                                (não usado atualmente)
              RTPROT_KERNEL     pelo kernel
              RTPROT_BOOT       durante a inicialização
              RTPROT_STATIC     pelo administrador

              Valores maiores que RTPROT_STATIC não  são  interpretados  pelo  kernel,  eles  são
              apenas  para  informação  do usuário. Eles podem ser usados para marcar a origem de
              uma informação  de  roteamento  ou  para  distinguir  entre  múltiplos  daemons  de
              roteamento.   Veja  <linux/rtnetlink.h>  para  os  identificadores  de  daemons  de
              roteamento que já são atribuídos.

              rtm_scope é a distância ao destino:

              RT_SCOPE_UNIVERSE   rota global
              RT_SCOPE_SITE       rota   interior    no    sistema
                                  autônomo local
              RT_SCOPE_LINK       rota nesta ligação
              RT_SCOPE_HOST       rota no host local
              RT_SCOPE_NOWHERE    destino não existe

              Os valores entre RT_SCOPE_UNIVERSE e RT_SCOPE_SITE são disponíveis para o usuário.

              O rtm_flags tem os seguintes significados:

              RTM_F_NOTIFY     se  a  rota  muda,  notifica  o usuário via
                               rtnetlink
              RTM_F_CLONED     a rota é clonada a partir de outra rota
              RTM_F_EQUALIZE   a multipath equalizer (not yet implemented)

              rtm_table especifica a tabela de roteamento

              RT_TABLE_UNSPEC    uma tabela de roteamento não especificada
              RT_TABLE_DEFAULT   a tabela padrão
              RT_TABLE_MAIN      a tabela principal
              RT_TABLE_LOCAL     a tabela local

              O   usuário   pode   atribuir   valores   arbitrários   entre   RT_TABLE_UNSPEC   e
              RT_TABLE_DEFAULT.

                                            Atributos
              rta_type        Tipo de valor         Descrição
              ──────────────────────────────────────────────────────────────────────
              RTA_UNSPEC      -                     ignorado
              RTA_DST         ender. do protocolo   Ender. de destino da rota
              RTA_SRC         ender. do protocolo   Ender. da origem da rota
              RTA_IIF         int                   Input interface index
              RTA_OIF         int                   Output interface index
              RTA_GATEWAY     ender. do protocolo   o gateway da rota
              RTA_PRIORITY    int                   Prioridade da rota
              RTA_PREFSRC     ender. do protocolo   Preferred source address
              RTA_METRICS     int                   métrica da rota
              RTA_MULTIPATH                         Multipath  nexthop data br (see
                                                    below).
              RTA_PROTOINFO                         No longer used
              RTA_FLOW        int                   Route realm
              RTA_CACHEINFO   struct rta_cacheinfo  (veja também linux/rtnetlink.h)
              RTA_SESSION                           No longer used
              RTA_MP_ALGO                           No longer used
              RTA_TABLE       int                   Routing table ID; if set,
                                                    rtm_table é ignorado
              RTA_MARK        int
              RTA_MFC_STATS   struct rta_mfc_stats  (veja também linux/rtnetlink.h)
              RTA_VIA         struct rtvia          Gateway in  different  AF  (see
                                                    below)
              RTA_NEWDST      ender. do protocolo   Change    packet    destination
                                                    address
              RTA_PREF        char                  RFC4191 IPv6 router  preference
                                                    (see below)
              RTA_ENCAP_TYPE  short                 Encapsulation type for
                                                    lwtunnels (see below)
              RTA_ENCAP                             Defined by RTA_ENCAP_TYPE
              RTA_EXPIRES     int                   Expire time for IPv6 routes (in
                                                    seconds)

              RTA_MULTIPATH contains several packed instances of struct rtnexthop  together  with
              nested RTAs (RTA_GATEWAY):

                  struct rtnexthop {
                      unsigned short rtnh_len;     /* Length of struct + length
                                                      of RTAs */
                      unsigned char  rtnh_flags;   /* Flags (see
                                                      linux/rtnetlink.h) */
                      unsigned char  rtnh_hops;    /* Nexthop priority */
                      int            rtnh_ifindex; /* Interface index for this
                                                      nexthop */
                  }

              There  exist a bunch of RTNH_* macros similar to RTA_* and NLHDR_* macros useful to
              handle these structures.

                  struct rtvia {
                      unsigned short rtvia_family;
                      unsigned char  rtvia_addr[0];
                  };

              rtvia_addr is the address, rtvia_family is its family type.

              RTA_PREF may contain values ICMPV6_ROUTER_PREF_LOW, ICMPV6_ROUTER_PREF_MEDIUM,  and
              ICMPV6_ROUTER_PREF_HIGH defined incw <linux/icmpv6.h>.

              RTA_ENCAP_TYPE   may   contain   values   LWTUNNEL_ENCAP_MPLS,   LWTUNNEL_ENCAP_IP,
              LWTUNNEL_ENCAP_ILA, or LWTUNNEL_ENCAP_IP6 defined in <linux/lwtunnel.h>.

              Preencha esses valores!

       RTM_NEWNEIGH, RTM_DELNEIGH, RTM_GETNEIGH
              Acrescenta, remove ou recebe informação sobre uma entrada de tabela  de  vizinhança
              (por exemplo, uma entrada ARP). A mensagem contém uma estrutura ndmsg.

              struct ndmsg {
                  unsigned char ndm_family;
                  int           ndm_ifindex;  /* índice da interface */
                  __u16         ndm_state;    /* estado */
                  __u8          ndm_flags;    /* sinalizadores */
                  __u8          ndm_type;
              };

              struct nda_cacheinfo {
                  __u32         ndm_confirmed;
                  __u32         ndm_used;
                  __u32         ndm_updated;
                  __u32         ndm_refcnt;
              };

              ndm_state é uma máscara de bits dos seguintes estados:

              NUD_INCOMPLETE   uma entrada atualmente resolvida de 'cache'
              NUD_REACHABLE    uma entrada confirmada de 'cache' funcionando
              NUD_STALE        uma entrada expirada do 'cache'
              NUD_DELAY        uma entrada aguardando por um temporizador
              NUD_PROBE        uma entrada de 'cache' que é retestada atualmente
              NUD_FAILED       uma entrada de 'cache' inválida
              NUD_NOARP        um dispositivo sem 'cache' de destino
              NUD_PERMANENT    uma entrada estática

              Os ndm_flags válidos são:

              NTF_PROXY    uma entrada de arp do proxy
              NTF_ROUTER   um roteador IPv6

              A estrutura rtaddr tem os seguintes significados para o campo rta_type:

              NDA_UNSPEC      tipo desconhecido
              NDA_DST         a neighbor cache n/w layer destination address
              NDA_LLADDR      ender. vizinho da camada de ligação do 'cache'
              NDA_CACHEINFO   estatísticas do 'cache'

              Se o campo rta_type é NDA_CACHEINFO, então segue o cabeçalho struct nda_cacheinfo

       RTM_NEWRULE, RTM_DELRULE, RTM_GETRULE
              Acrescenta, apaga ou recupera uma regra de roteamento. Carrega um struct rtmsg

       RTM_NEWQDISC, RTM_DELQDISC, RTM_GETQDISC
              Acrescenta,  remove  ou  obtém  uma disciplina de fila. A mensagem contém um struct
              tcmsg e pode ser seguida por uma série de atributos.

              struct tcmsg {
                  unsigned char    tcm_family;
                  int              tcm_ifindex;   /* índice de interface */
                  __u32            tcm_handle;    /* manipula Qdisc */
                  __u32            tcm_parent;    /* qdisc pai */
                  __u32            tcm_info;
              };

                                        Atributos
              rta_type     Tipo de valor        Descrição
              ──────────────────────────────────────────────────────────────
              TCA_UNSPEC   -                    não-especificado
              TCA_KIND     cadeia asciiz        nome da disciplina de fila
              TCA_OPTIONS  seqüência de bytes   Opções específicas do qdisc
              TCA_STATS    struct tc_stats      Estatísticas do qdisc
              TCA_XSTATS   qdisc-specific       Module-specific statistics
              TCA_RATE     struct tc_estimator  Limite de taxa

              Além desses, são permitidos vários outros atributos específicos de  módulos  qdisc.
              Para maiores informações, veja os arquivos de inclusão apropriados.

       RTM_NEWTCLASS, RTM_DELTCLASS, RTM_GETTCLASS
              Acrescenta, remove ou obtém uma classe de tráfego. Essas mensagens contêm um struct
              tcmsg como descrito acima.

       RTM_NEWTFILTER, RTM_DELTFILTER, RTM_GETTFILTER
              Acrescenta, remove  ou  recebe  informações  sobre  um  filtro  de  tráfego.  Essas
              mensagens contém um struct tcmsg como descrito acima.

VERSÕES

       rtnetlink é uma nova implementação do Linux 2.2.

BUGS

       Este página de manual é imcompleta.

VEJA TAMBÉM

       cmsg(3), rtnetlink(3), ip(7), netlink(7)

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
       ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  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 ⟨debian-l10n-portuguese@lists.debian.org⟩.