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

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)