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

Linux man-pages 6.03                            15 dezembro 2022                                    rtnetlink(7)