File: netlink.7

package info (click to toggle)
manpages-es 1.24a-6
  • links: PTS
  • area: main
  • in suites: potato
  • size: 4,256 kB
  • ctags: 7
  • sloc: makefile: 66; sh: 62
file content (270 lines) | stat: -rw-r--r-- 7,927 bytes parent folder | download
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
257
258
259
260
261
262
263
264
265
266
267
268
269
270
'\" t
.\" 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.6 1999/05/18 10:35:08 freitag Exp $
.\"
.\" Translated on Sat Jul 3 1999 by Juan Piernas <piernas@ditec.um.es>
.\"
.TH NETLINK  7 "27 abril 1999" "Pgina man de Linux" "Manual del Programador de Linux"
.SH NOMBRE
netlink, PF_NETLINK \- Comunicacin entre el ncleo y el usuario.
.SH SINOPSIS
.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 DESCRIPCIN
Netlink se utiliza para transferir informacin entre los mdulos del ncleo
y los procesos del espacio de usuario. Consiste en una interfaz basada en
conectores estndares para los procesos de usuario y una API del ncleo
interna para los mdulos del ncleo. La interfaz del ncleo interna no se
documenta en esta pgina de manual. Tambin existe una interfaz netlink
obsoleta mediante dispositivos de caracteres netlink. Esta interfaz no se
documenta aqu y slo se proporciona por compatibilidad hacia atrs.

Netlink es un servicio orientado a datagramas. Tanto
.B SOCK_RAW 
como
.B SOCK_DGRAM
son valores vlidos para
.IR socket_type .
Sin embargo, el protocolo netlink no distingue entre conectores de datagrama
y conectores directos (raw).

.I netlink_family
selecciona el mdulo del ncleo o el grupo netlink con el que comunicarse.
Las familias netlink asignadas actualmente son:
.TP
.B NETLINK_ROUTE
Recibe actualizaciones de enrutamiento y puede usarse para modificar la
tabla de enrutamiento de IPv4 (vea
.BR rtnetlink (7)).
.TP
.B NETLINK_FIREWALL 
Recibe paquetes enviados por el cdigo del cortafuegos de IPv4.
.TP
.B NETLINK_ARPD
Para gestionar la tabla ARP en el espacio de usuario.
.TP
.B NETLINK_ROUTE6
Recibe y enva actualizaciones a la tabla de enrutamiento de IPv6.
.TP
.B NETLINK_IP6_FW
Para recibir los paquetes que no pasarn las comprobaciones del cortafuegos
de IPv6 (actualmente no implementado).
.TP
.BR NETLINK_TAPBASE ... NETLINK_TAPBASE+15
Son las instancias del dispositivo
.BR ethertap .
El dispositivo ethertap es un pseudodispositivo de tunel de red que permite
simular un manejador ethernet desde el espacio de usuario.
.TP
.B NETLINK_SKIP
Reservado para ENskip.
.TP
.B NETLINK_USERSOCK
Reservado para futuros protocolos en el espacio de usuario.
.PP
Los mensajes netlink consisten en un flujo de bytes con una o ms cabeceras
.B nlmsghdr
y sus cargas tiles asociadas.
Para los mensajes multiparte, la primera cabecera y las siguientes tienen
activa la opcin
.BR NLM_F_MULTI ,
excepto la ltima cabecera, que tiene el tipo
.BR NLMSG_DONE .
El flujo de bytes slo debera ser accedido con las macros estndares
.BR NLMSG_* .
Vea
.BR netlink (3). 

Netlink no es un protocolo fiable. Intenta hacerlo lo mejor que puede para
entregar un mensaje en su destino (o destinos), pero puede perder mensajes
cuando no hay suficiente memoria o se produce cualquier otro error. Para una
transferencia fiable, el emisor puede solicitar un reconocimiento del receptor
activando la opcin
.BR NLM_F_ACK .
Un reconocimiento es un paquete
.B NLMSG_ERROR 
cuyo campo de error vale 0. La propia aplicacin debe generar
reconocimientos para los mensajes recibidos. El ncleo intenta enviar un
mensaje
.B NLMSG_ERROR
para cualquier paquete que falle. Un proceso de usuario tambin debera seguir
estas convenciones.

Cada familia netlink tiene un conjunto de 32 grupos multidestino
(mutlicast).
Cuando se llama a
.BR bind (2)
sobre el conector, se debe configurar el campo
.B nl_groups
de
.B sockaddr_nl
como una mscara de bits de los grupos que se desea escuchar.
El valor por omisin para este campo es cero, lo que significa que no se
recibirn multidestinos.

Un conector puede enviar un mensajes con varios destinos a cualquiera de los
grupos multidestino, asignando a
.B nl_groups
una mscara de bits de los grupos a los que desea enviar cuando llama a
.BR sendmsg (2) 
o hace un
.BR connect (2).
Slo los usuarios con un identificador de usuario efectivo 0 o la capacidad
.B CAP_NET_ADMIN
pueden enviar a o escuchar de un grupo netlink multidestino.
Cualquier respuesta a un mensaje recibido por un grupo multidestino se debe
enviar de regreso al pid emisor y al grupo multidestino.

.RS
.nf
.ta 4 13 25
struct nlmsghdr
{
	__u32	nlmsg_len;	/* Longitud del mensaje incluyendo
			   la cabecera */
	__u16	nlmsg_type;	/* Contenido del mensaje */
	__u16	nlmsg_flags;	/* Opciones adicionales */
	__u32	nlmsg_seq;	/* Nmero de secuencia */
	__u32	nlmsg_pid;	/* PID del proceso emisor */
};


struct nlmsgerr
{
	int	error;	/* nmero de error negativo o 0
			   para reconocimientos */ 
	struct nlmsghdr msg;	/* cabecera del mensaje que
			   provoc el error */ 
};
.ta
.fi
.RE

Despus de cada
.B nlmsghdr
viene la carga til.
.B nlmsg_type
puede ser uno de los tipos de mensajes estndares:
.TP
.B NLMSG_NOOP
Se va a ignorar el mensaje.
.TP
.B NLMSG_ERROR
El mensaje indica un error y la carga til contiene una estructura
.IR nlmsgerr . 
.TP
.B NLMSG_DONE
El mensaje termina un mensaje multiparte.
.\" 2.1.130 no parece usarlo.
.\" .B NLMSG_OVERRUN
.\" se han perdido los datos.
.PP
Una familia netlink normalmente especifica ms tipos de mensajes. Vea las
pginas de manual adecuadas para ello. Por ejemplo,
.BR rtnetlink (7)
para 
.IR NETLINK_ROUTE .

.TS 
tab(:) allbox; 
c s 
l l.
Bits de opciones estndares en nlmsg_flags
NLM_F_REQUEST:Poner en todos los mensajes de solicitud
NLM_F_MULTI:T{
El mensaje es parte de un mensaje multiparte terminado mediante
.B 
NLMSG_DONE
.\" XXX describe that
T}
NLM_F_ACK:Responder con un reconocimiento en caso de xito
NLM_F_ECHO:Hacer eco de esta solicitud
.TE

.TS
tab(:) allbox;
c s 
l l.
Bits de opciones adicionales para peticiones GET
NLM_F_ROOT:T{
Devolver la tabla completa en lugar de una nica entrada.
T}
NLM_F_MATCH:Todava no implementado. 
NLM_F_ATOMIC:Devolver una copia instantnea atmica de la tabla.
NLM_F_DUMP:Todava no documentado.
.TE

.TS
tab(:) allbox;
c s
l l.
Bits de opciones adicionales para peticiones NEW
NLM_F_REPLACE:Reemplazar un objeto existente.
NLM_F_EXCL:No reemplazar si el objeto ya existe.
NLM_F_CREATE:Crear un objeto sin no existe ya.
NLM_F_APPEND:Aadir al final de la lista de objetos.
.TE

Dese cuenta que NLM_F_ATOMIC requiere CAP_NET_ADMIN o derechos de
superusuario.

.SH FORMATOS DE LAS DIRECCIONES
La estructura
.B sockaddr_nl
describe un cliente netlink en el espacio de usuario o en el ncleo. Una
sockaddr_nl puede ser o bien unidestino (envo a un nico igual) o bien un
envo a grupos netlink (nl_groups distinto de 0).

.RS
.nf
struct sockaddr_nl
{
    sa_family_t nl_family;    /* AF_NETLINK */
    unsigned short nl_pad;    /* cero */
    pid_t       nl_pid;       /* PID del proceso */
    __u32       nl_groups;    /* Mscara de grupos
                                 mutlidireccin */
};
.fi
.RE

.B nl_pid 
es el PID del netlink en el espacio de usuario o 0 si el destino est en el
ncleo.
.B nl_groups 
es una mscara de bits con cada bit representando a un nmero de grupo
netlink.
.\" XXX describir qu es eso. 

.SH FALLOS
Esta pgina de manual no est completa.

.SH NOTAS
Normalmente es mejor usar netlink mediante
.B libnetlink
que mediante la interfaz de bajo nivel del ncleo.

.SH VERSIONES
La interfaz de conectores netlink es una nueva caracterstica de la versin
2.2 de Linux.

La versin 2.0 de Linux soportaba una interfaz netlink ms primitiva basada
en dispositivos (que todava est disponible por compatibilidad). Esta
interfaz obsoleta no se describe aqu.

.SH VASE TAMBIN
.BR cmsg "(3), " rtnetlink "(7), " netlink "(3)" 
.PP
.BR ftp://ftp.inr.ac.ru/ip-routing/iproute2* 
para libnetlink