rtnetlink(7) | Miscellaneous Information Manual | rtnetlink(7) |
rtnetlink - Linux routing socket
#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);
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.
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).
Rtnetlink consiste nos seguintes tipos de mensagens (além das mensagens padrão do netlink):
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 */ };
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 |
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 */ };
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. |
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.
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.
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) |
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 */ }
struct rtvia { unsigned short rtvia_family; unsigned char rtvia_addr[0]; };
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; };
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
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.
rtnetlink é uma nova implementação do Linux 2.2.
Este página de manual é imcompleta.
cmsg(3), rtnetlink(3), ip(7), netlink(7)
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.
15 dezembro 2022 | Linux man-pages 6.03 |