File: netlink.7

package info (click to toggle)
manpages-pt 20011020-2
  • links: PTS
  • area: main
  • in suites: woody
  • size: 3,052 kB
  • ctags: 5
  • sloc: makefile: 49
file content (256 lines) | stat: -rw-r--r-- 7,608 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
.\" -*- nroff -*-
.\" Don't change the first line, it tells man that tbl is needed.
.\" This man page copyright 1998 by Andi Kleen. Subject to the GPL.
.\" This manpage copyright 1998 by Andi Kleen. Subject to the GPL.
.\" Based on the original comments from Alexey Kuznetsov
.\" $Id: netlink.7,v 1.1 2000/10/20 13:05:11 ricardo Exp $
.TH NETLINK  7 "27/04/1999" "Pgina de Manual do Linux" "Manual do Programador Linux"
.SH NOME
netlink, PF_NETLINK \- Comunicao entre o kernel e o usurio.
.SH SINOPSE
.nf
.\" XXX
.B #include <asm/types.h>
.br
.B #include <sys/socket.h>
.br
.B #include <linux/netlink.h> 
.br
.PP
.BI "netlink_socket = socket(PF_NETLINK, " socket_type ", " netlink_family ); 
.SH DESCRIPTION
Netlink  usado para transferir informao entre mdulos do kernel e processos do espao do usurio.
Consiste de uma interface padro baseada em sockets, para processos de usurio
e uma API interna do kernel para mdulos. A interface interna do kernel no 
documentada nesta pgina do manual. H tambm uma interface netlink obsoleta, via
dispositivos de caracteres netlink, esta interface no  documentada aqui e s
 fornecida para retro-compatibilidade.

Netlink  um servio orientado a datagrama. Tanto
.B SOCK_RAW 
quanto 
.B SOCK_DGRAM
so valores vlidos para
.IR socket_type ;
porm, o protocolo netlink no distingue entre
datagramas e sockets diretos.

.I netlink_family
seleciona o mdulo do kernel ou grupo de netlink para se comunicar. 
As famlias de netlink atribudas atualmente so:
.TP
.B NETLINK_ROUTE
Recebe atualizaes de roteamento e pode ser usado para modificar a tabela
de roteamento IPv4 (veja
.BR rtnetlink (7)).
.TP
.B NETLINK_FIREWALL 
Recebe pacotes enviados pelo cdigo do firewall IPv4.
.TP
.B NETLINK_ARPD
Para gerenciamento da tabela arp no espao do usurio.
.TP
.B NETLINK_ROUTE6
Recebe e envia atualizaes da tabela de roteamento IPv6.
.TP
.B NETLINK_IP6_FW
recebe pacotes que falharam nas checagens do firewall IPv6 (no
implementado correntemente).
.TP
.BR NETLINK_TAPBASE ... NETLINK_TAPBASE+15
so as instncias do dispositivo
.B ethertap. 
Ethertap  um pseudo-dispositivo de tnel de rede que permite a um driver 
ethernet ser simulado a partir do espao do usurio.
.TP
.B NETLINK_SKIP
Reservado para ENskip.
.TP
.B NETLINK_USERSOCK
 reservado para futuros protocolos do espao do usurio.
.PP
Mensagens do netlink consistem de uma seqncia de bytes com um ou vrios cabealhos  
.B nlmsghdr
, e "payload" associado.
Para mensagens multipartes, o primeiro cabealho e todos os seguintes tm o sinalizador
.B NLM_F_MULTI
setado, exceto pelo ltimo cabealho,
que tem o tipo
.BR NLMSG_DONE .
A seqncia de bytes deveria ser acessada somente com as macros 
.B NLMSG_*
padres, veja
.BR netlink (3). 

Netlink no  um protocolo confivel. Ele tenta fazer o melhor para entregar uma
mensagem a seu(s) destinatrio(s), mas pode perder mensagens quando ocorre uma
condio de falta de memria, ou outra. Para transferncia segura, o remetente
pode requerer um reconhecimento do receptor, atravs da configurao do sinalizador 
.B NLM_F_ACK.
Um reconhecimento  um pacote
.B NLMSG_ERROR 
com o campo de erro setado para 0. A aplicao deve gerar acks para as
prprias mensagens recebidas. O kernel tenta enviar uma mensagem
.B NLMSG_ERROR
para todos os pacotes falhos. Um processo de usurio tambm deveria seguir esta conveno.

Cada famlia de netlink tem um conjunto de 32 grupos de multicast.
Quando 
.BR bind (2)
 chamado no socket, o campo
.B nl_groups
no
.B sockaddr_nl
deveria ser setado para uma mscara de bits do grupo que ele deseja ouvir.
O valor padro para este campo  zero, o que significa que nenhum multicast
ser reebido.
Um socket podem realizar o multicast de mensagens para qualquer um dos grupos de multicast, atravs da configurao de 
.B nl_groups
para uma mscara de bits dos grupos para os quais ele deseja enviar, quando ele chama
.BR sendmsg (2)
ou executa um
.BR connect (2).
Somente usurios com uid efetivo igual a 0 ou a capabilidade
.B CAP_NET_ADMIN
podem enviar ou escutar um
grupo de multicast netlink.
Qualquer resposta a uma mensagem recebida de um grupo de multicast
deveria ser enviada de volta ao pid remetente e ao grupo de multicast. 

.RS
.nf
.ta 4 13 25
struct nlmsghdr
{
	__u32	nlmsg_len;	/* Comprimento da mensagem incluindo cabealho */
	__u16	nlmsg_type;	/* Contedo da mensagem */
	__u16	nlmsg_flags;	/* Flags adicionais */
	__u32	nlmsg_seq;	/* Nmero de seqncia */
	__u32	nlmsg_pid;	/* PID de envio de processo */
};


struct nlmsgerr
{
	int	error;	/* errno negativo, ou 0 para acks. */ 
	struct nlmsghdr msg;	/* cabealho da mensagem que causou o erro */ 
};
.ta
.fi
.RE

Depois de cada
.B nlmsghdr
o "payload" se segue. 
.B nlmsg_type
pode ser um dos tipos de mensagem padro: 
.B NLMSG_NOOP
mensagem deve ser ignorada,
.B NLMSG_ERROR
a mensagem sinaliza um erro e o "payload" contm uma estrutura 
.I nlmsgerr 
,
.B NLMSG_DONE
mensagem encerra uma mensagem multiparte,
.\" 2.1.130 does not seem to use it.
.\" .B NLMSG_OVERRUN
.\" data was lost. 

Uma famlia netlink geralmente especifica mais tipos de mensagem, veja
a pgina de manual apropriada para isso, por exemplo 
.BR rtnetlink (7)
para 
.IR NETLINK_ROUTE .

.TS 
tab(:); 
l s 
l l.
Bits de Flag Padro em nlmsg_flags
NLM_F_REQUEST:setado em todas as mensagens de pedido
NLM_F_MULTI:T{
a mensagem  parte de uma mensagem multipart terminada por 
.B 
NLMSG_DONE
.\" XXX describe that
T}
NLM_F_ACK:responde com um reconhecimento se bem-sucedido
NLM_F_ECHO:ecoa este pedido
.TE

.TS
tab(:);
l s 
l l.
Bits adicionais de flag para pedidos GET
NLM_F_ROOT:Retorna a tabela completa em vez de uma entrada nica.
NLM_F_MATCH:Ainda no implementado. 
NLM_F_ATOMIC:Retorna um snapshot atmico da tabela.
NLM_F_DUMP:Ainda no documentado.
.TE

.TS
tab(:);
l s
l l.
Bits adicionais de flag para pedidos NEW
NLM_F_REPLACE:Sobrepe objeto existente.
NLM_F_EXCL:No substitui se o objeto j existe.
NLM_F_CREATE:Cria objeto se ele ainda no existe.
NLM_F_APPEND:Acrescenta ao fim da lista de objetos.
.TE

Note que NLM_F_ATOMIC requer CAP_NET_ADMIN ou direitos de super usurio.

.SH FORMATOS DE ENDEREO
A estrutura 
.B sockaddr_nl
descreve um cliente netlink no espao do usurio no kernel.
Um sockaddr_nl pode ser unicast (somente envia para um peer) ou
enviar para grupos de netlink (nl_groups diferente de 0). 

.RS
.nf
struct sockaddr_nl
{
    sa_family_t nl_family;    /* AF_NETLINK */
    unsigned short nl_pad;    /* zero */
    pid_t       nl_pid;       /* pid do processo */
    __u32       nl_groups;    /* mscara dos grupos de multicast */
};
.fi
.RE

.B nl_pid 
 o pid do netlink do espao do usurio, ou 0 se o destino est no
kernel. 
.B nl_groups 
 uma mscara de bits, com cada bit representando um nmero de grupo de netlink.
.\" XXX describe what that is. 


.SH PROBLEMAS
Esta pgina de manual no est completa. 

.SH NOTAS
Freqentemente  melhor usar netlink via 
.B libnetlink
do que via interface de kernel de baixo nvel.

.SH VERSES
A interface de socket para netlink  uma realizao nova no Linux 2.2

O Linux 2.0 suporta uma interface netlink baseada em um dispositivo mais
primitivo (que ainda est disponvel como uma opo de
compatibilidade). Esta interface obsoleta no  descrita aqui. 

.SH VEJA TAMBM
.BR cmsg (3),
.BR rtnetlink (7),
.BR netlink (3).
.PP
.BR ftp://ftp.inr.ac.ru/ip-routing/iproute2* 
para libnetlink
.SH TRADUZIDO POR LDP-BR em 21/08/2000.
\&\fR\&\f(CWRubens de Jesus Nogueira <darkseid99@usa.net> (traduo)\fR
\&\fR\&\f(CWAndr L. Fassone Canova <lonelywolf@blv.com.br> (reviso)\fR