File: ip.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 (818 lines) | stat: -rw-r--r-- 25,826 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
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
'\" t
.\" Don't change the line above. it tells man that tbl is needed.
.\" This man page is Copyright (C) 1999 Andi Kleen <ak@muc.de>.
.\" Permission is granted to distribute possibly modified copies
.\" of this page provided the header is included verbatim,
.\" and in case of nontrivial modification author and date
.\" of the modification is added to the header.
.\" $Id: ip.7,v 1.13 1999/06/12 10:11:38 freitag Exp $
.\"
.\" Translated on Thu Jul 8 1999 by Juan Piernas <piernas@ditec.um.es>
.\"
.TH IP  7 "11 mayo 1999" "Pgina man de Linux" "Manual del Programador de Linux" 
.SH NOMBRE
ip \- Implementacin Linux del protocolo IPv4
.SH SINOPSIS
.B #include <sys/socket.h>
.br
.B #include <net/netinet.h> 
.sp
.IB tcp_socket " = socket(PF_INET, SOCK_STREAM, 0);"
.br 
.IB raw_socket " = socket(PF_INET, SOCK_RAW, " protocol ");"
.br
.IB udp_socket " = socket(PF_INET, SOCK_DGRAM, " protocol ");"
.SH DESCRIPCIN 
Linux implementa el Protocolo de Internet (Internet Protocol, IP), version 4,
descrito en RFC791 y RFC1122. 
.B ip 
contiene una implementacin de multidestino del Nivel 2 segn el RFC1112.
Tambin contiene un enrutador IP incluyendo un filtro de paquetes.
.\" XXX: Alguien ha comprobado si la versin 2.1 sigue realmente el 1812?
.PP
La interfaz del programador es compatible con la de los conectores BSD. Para
ms informacin sobre conectores, vea
.BR socket (7). 
.PP
Un conector IP se crea llamando a la funcin
.BR socket (2) 
de la forma
.BR "socket(PF_INET, socket_type, protocol)" .
Los tipos de conectores vlidos son
.B SOCK_STREAM 
para abrir un conector
.BR tcp (7),
.B SOCK_DGRAM
para abrir un conector
.BR udp (7)
o
.B SOCK_RAW
para abrir un conector directo (raw) para acceder al protocolo IP
directamente.
.I protocol 
es el protocolo IP en la cabecera IP a enviar o recibir. Los nicos valores
vlidos para
.I protocol
son
.B 0
y
.B IPPROTO_TCP
para conectores TCP, y
.B 0
y
.B IPPROTO_UDP 
para conectores UDP. Para
.B SOCK_RAW
debe especificar un protocolo IP vlido del IANA definido por uno de los
nmeros asignados en el RFC1700.
.PP
Los conectores directos slo pueden ser abiertos por un proceso con un
identificador de usuario efectivo 0 o con la capacidad
.BR CAP_NET_RAW .
.PP
.\" XXX ip current does an autobind in listen, but I'm not sure if that should
.\" be documented.
Cuando un proceso quiere recibir nuevos paquetes de entrada o conexiones,
debe enlazar un conector a una direccin de la interfaz local usando
.BR bind (2).
Slo se puede ligar un conector IP a un par (direccin, puerto) dado.
Cuando en la llamada a
.B bind
se especifica
.BR INADDR_ANY ,
el conector ser ligado a 
.I todas
las interfaces locales. Cuando se llama a
.BR listen (2)
o
.BR connect (2)
con un conector no enlazado, el conector ser automticamente ligado a un
puerto aleatorio libre cuya direccin local sea
.BR INADDR_ANY .
Una direccin local de conector TCP que haya sido enlazada, no estar
disponible durante un cierto tiempo despus de que se cierre, a menos que se
haya activado la opcin
.BR SO_REUSEADDR .
Se debe tener cuidado al usar esta opcin ya que hace que TCP sea menos
fiable.

.SH FORMATO DE LAS DIRECCIONES
Una direccin de conector IP se define como una combinacin de una direccin
de interfaz IP y un nmero de puerto. El protocolo IP bsico no proporciona
nmeros de puerto. Estos son implementados por protocolos de un nivel ms
alto como
.BR udp (7)
y
.BR tcp (7).
Los conectores directos ignoran los puertos.

.PP
.RS
.nf
.ta 4n 19n 31n
struct sockaddr_in {
	sa_family_t	sin_family;	/* familia de direcciones:
			   AF_INET */
	u_int16_t	sin_port;	/* puerto con los bytes en el
			   orden de red */
	struct in_addr  sin_addr;	/* direccin de Internet */
};

/* Direccin de Internet. */
struct in_addr {
	u_int32_t	s_addr;	/* direccin con los bytes en
			   el orden de red */
};
.ta
.fi
.RE
.PP
A
.I sin_family 
siempre se le asigna el valor
.BR AF_INET . 
Este valor es necesario. En Linux 2.2, la mayora de las funciones de red
devuelven
.B EINVAL
cuando se ha omitido este valor.
.I sin_port
contiene el puerto con los bytes en orden de red. Los nmeros de puerto por
debajo de 1024 se llaman
.IR "puertos reservados" .
Slo los procesos con identificador de usuario efectivo 0 o la capacidad
.B CAP_NET_BIND_SERVICE 
pueden realizar enlaces mediante
.BR bind (2)  
a estos conectores. Dese cuenta que el protocolo IPv4 puro no posee como
tal el concepto de puerto. Estos son implementados por protocolos superiores
como
.BR tcp (7)
y
.BR udp (7).
.PP
.I sin_addr 
es la direccin IP del anfitrin (host).
El miembro
.I s_addr
de
.B struct in_addr
contiene la direccin de la interfaz del anfitrin con los bytes en orden de
red.
Slo se debera acceder a
.B in_addr
usando las funciones de biblioteca
.BR inet_aton (3),
.BR inet_addr (3)
y
.BR inet_makeaddr (3),
o directamente mediante el mecanismo de resolucin de nombres (vea
.BR gethostbyname (3)).
Las direcciones IPv4 se dividen en direcciones unidestino, de difusin y
multidestino. Las direcciones unidestino especifican una nica interfaz de
un anfitrin, las direcciones de difusin especifican todos los anfitriones
de una red y las direcciones multidestino identifican a todos los
anfitriones de un grupo multidestino. Slo se pueden enviar datagramas a o recibir
datagramas de direcciones de difusin cuando est activa la opcin de
conector
.BR SO_BROADCAST .
En la implementacin actual, los conectores orientados a conexin slo
pueden usar direcciones unidestino.
.\" Leave a loophole for XTP @)

Dese cuenta que la direccin y el puerto se almacenan siempre en orden de
red. En particular, esto significa que necesita llamar a
.BR htons (3)
con el nmero que se ha asignado al puerto. Todas las funciones de
manipulacin de direccin/puerto en la biblioteca estndar trabajan en orden
de red.

.SH OPCIONES DE LOS CONECTORES

IP soporta algunas opciones de conector especficas del protocolo que se
pueden configurar con
.BR setsockopt (2)
y leer con
.BR getsockopt (2).
El nivel de opciones de conector para IP es
.BR SOL_IP .
Una opcin entera booleana es cero cuando es falsa y cualquier otra cosa
cuando es cierta.

.TP
.B IP_OPTIONS
Establece u obtiene las opciones IP a enviar con cada paquete desde este
conector. Los argumentos son punteros a un buffer de memoria que contiene
las opciones y la longitud de las opciones.
La llamada
.BR setsockopt (2)
establece las opciones IP asociadas a un conector. El tamao mximo de
opcin para IPv4 es de 40 bytes. Vea RFC791 para las opciones permitidas.
Cuando el paquete inicial de peticin de conexin para un conector
.B SOCK_STREAM
contiene opciones IP, las opciones IP se configurarn automticamente al
valor de las opcines del paquete inicial con las cabeceras de enrutamiento
invertidas. No se permite que los paquetes de entrada cambien las opciones
despus de que la conexin se haya establecido.
El procesamiento de todas las opciones de enrutamiento de la fuente de
entrada est desactivado por defecto y se puede activar usando la sysctl
.BR accept_source_route .
Otras opciones, como las marcas de tiempo, todava se siguen manejando. Para
los conectores de datagramas, las opciones IP slo pueden ser configuradas
por el usuario local.
Llamar a
.BR getsockopt (2)
con
.I IP_OPTIONS
coloca en el buffer proporcionado las opciones IP actuales usadas para
enviar.

.TP
.B IP_PKTINFO
Pasa un mensaje auxiliar
.I IP_PKTINFO
que contiene una estructura
.B pktinfo 
que proporciona alguna informacin sobre los paquetes de entrada. Esto slo
funciona para conectores orientados a datagramas.
.IP
.RS
.ta 4n 19n 33n
.nf
struct in_pktinfo
{
	unsigned int	ipi_ifindex; 	/* ndice de la interfaz */
	struct in_addr	ipi_spec_dst;	/* Direccin de destino del
			   enrutamiento */
	struct in_addr	ipi_addr;	/* Direccin de destino en la
			   cabecera */
};
.fi
.RE
.IP
.\" XXX elaborate on that.
.B ipi_ifindex
es el ndice de la interfaz en la que se recibi el paquete.
.\" XXX is that correct?
.B ipi_spec_dst
es la direccin de destino de la entrada de la tabla de enrutamiento y
.B ipi_addr
es la direccin de destino en la cabecera del paquete.
Si se pasa
.I IP_PKTINFO 
a
.BR sendmsg (2),
el paquete de salida se enviar a travs de la interfaz especificada en
.B ipi_ifindex
con la direccin de destino indicada en
.BR ipi_spec_dst .

.TP
.B IP_RECVTOS
Cuando est activa, se pasa el mensaje auxiliar
.I IP_TOS 
con los paquetes de entrada. Contiene un byte que especifica el campo Tipo
de Servicio/Precedencia de la cabecera del paquete.
Espera una opcin entera booleana.

.TP
.B IP_RECVTTL
Cuando esta opcin est activa, pasa un mensaje de control
.I IP_RECVTTL
con el campo "tiempo de vida" (time to live) del paquete recibido dado por
un byte. No soportada por conectores
.BR SOCK_STREAM .

.TP
.B IP_RECVOPTS
Pasa todas las opciones IP de entrada al usuario en un mensaje de control
.IR IP_OPTIONS .
La cabecera de enrutamiento y otras opciones ya las completa el
anfitrin local. No soportada para conectores
.BR SOCK_STREAM .

.TP
.B IP_RETOPTS
Identica a
.I IP_RECVOPTS
pero devuelve opciones directas sin procesar cuyas marcas de tiempo y
opciones del registro de ruta no son completadas por este anfitrin.

.TP
.B IP_TOS
Establece o devuelve el campo Tipo de Servicio (Type-Of-Service, TOS) a enviar
con cada paquete IP creado desde este conector. Se usa para priorizar los
paquetes en la red. TOS es un byte. Existen algunas opciones TOS estndares
definidas:
.B IPTOS_LOWDELAY 
para minizar los retrasos en el caso de trfico interactivo,
.B IPTOS_THROUGHPUT
para optimizar el rendimiento,
.B IPTOS_RELIABILITY
para optimizar la fiabilidad e
.BR IPTOS_MINCOST ,
que se debera usar para "datos de relleno" donde no tenga sentido una
transmisin lenta. Como mucho, se puede especificar uno de estos valores
TOS. Los otros bits son invlidos y se limpiarn.
Por defecto, Linux enva primero datagramas
.B IPTOS_LOWDELAY 
pero el comportamiento exacto depende de la disciplina de encolamiento
configurada.
.\" XXX elaborate on this
Algunos niveles de prioridad alta pueden necesitar un identificador de
usuario efectivo 0 o la capacidad
.BR CAP_NET_ADMIN .
La prioridad tambin se puede configurar de una manera independiente del
protocolo mediante la opcin de conector
.B (SOL_SOCKET, SO_PRIORITY) 
(vea
.BR socket (7)). 

.TP  
.B IP_TTL
Establece u obtiene el campo "tiempo de vida" actual que se enva en cada
paquete enviado desde este conector.

.TP
.B IP_HDRINCL
Cuando est activa, el usuario proporciona una cabecera IP delante de los
datos de usuario. Slo vlida para conectores
.BR SOCK_RAW .
Vea
.BR raw (7)
para ms informacin. Cuando esta opcin est activa los valores
configurados mediante
.IR IP_OPTIONS ,
.I IP_TTL
y
.I IP_TOS
se ignoran.

.TP
.B IP_RECVERR
Habilita el paso adicional fiable de mensajes de error. Cuando se activa en
un conector de datagramas todos los errores generados se encolarn en una
cola de errores por conector. Cuando el usuario recibe un errore procedente
de una operacin con un conector, se pueden recibir el errore llamando a
.BR recvmsg (2)
con la opcin
.B MSG_ERRQUEUE
activa. La estructura
.B sock_extended_err
que describe el error se pasar en un mensaje auxiliar con el tipo
.I IP_RECVERR
y el nivel
.BR SOL_IP .
Esto es til para el manejo fiable de errores en conectores no conectados.
La parte de datos recibida de la cola de errores contiene el paquete de
error.
.IP
IP usa la estructura
.B sock_extended_err
como sigue:
a
.I ee_origin
se le asigna el valor
.B SO_EE_ORIGIN_ICMP
para errores recibidos en un paquete ICMP o
.B SO_EE_ORIGIN_LOCAL
para errores generados localmente.
A
.I ee_type
y 
.I ee_code
se les asignan los campos tipo y cdigo de la cabecera ICMP.
.I ee_info
contiene la MTU descubierta para errores
.BR EMSGSIZE .
.I ee_data
no se usa actualmente. En el caso de un error originado en la red, todas las
opciones IP
.RI ( IP_OPTIONS ", " IP_TTL ", "
etc.) activas en el conector y contenidas en el paquete de error, se pasan
como mensajes de control. El contenido til del paquete que ha provocado el
error se devuelve como datos normales.
.IP
.\" XXX: is it a good idea to document that? It is a dubious feature.
En el caso de conectores
.BR SOCK_STREAM ,
.I IP_RECVERR
tiene un semntica ligeramente diferente. En lugar de guardar los errores
para cuando expire el siguiente plazo de tiempo, pasa todos los errores de
entrada inmediatamente al usuario. Esto podra ser til para conexiones TCP
breves que necesitan un manejo rpido de errores. Use esta opcin con cuidado:
hace que TCP no sea fiable al no permitirle recuperarse adecuadamente de los
cambios de enrutamiento y de otras condiciones normales, y rompe la
especificacin del protocolo. Dese cuenta que TCP no posee una cola de
errores.
.B MSG_ERRQUEUE
es invlida en conectores
.BR SOCK_STREAM .
Todos los errores son devueltos slo por funciones de conector.
.IP
Para conectores directos (raw),
.I IP_RECVERR
activa el paso de todos los errores ICMP recibidos a la aplicacin. En otro
caso, slo se informa de los errores que se producen en conectores conectados.
.IP
Esta opcin establece u obtiene un valor booleano entero.
Por defecto,
.I IP_RECVERR
est desactivada.

.TP
.B IP_PMTU_DISCOVER
Establece o recibe la configuracin del "descubrimiento de la MTU de la ruta"
para el conector. Cuando se activa, Linux realizar el descubrimiento de la
MTU de la ruta en este conector tal y como se define en RFC1191. La opcin
de "no fragmentar" se activa en todos los datagramas de salida. El valor
global por defecto del sistema se controla mediante la sysctl
.B ip_no_pmtu_disc
para los conectores
.B SOCK_STREAM
y para todos los dems est desactivado. El usuario puede obtener la MTU de
la ruta usando la opcin
.I IP_MTU 
o 
.IR IP_RECVERR .

.TS
tab(:) allbox;
c l
l l.
T{
Opciones del descubrimiento de la MTU de la ruta
T}:Significado
IP_PMTUDISC_WANT:Usar configuraciones por ruta.
IP_PMTUDISC_DONT:T{
Nunca realizar el descubrimiento de la MTU de la ruta.
T}
IP_PMTUDISC_DO:T{
Realizar siempre el descubrimiento de la MTU de la ruta.
T}
.TE   

Cuando se activa el descubrimiento de la MTU de la ruta, el ncleo
automticamente memoriza la MTU de la ruta por anfitrin de destino. Los
paquetes enviados desde conectores de datagramas (incluyendo los conectores
directos) que son mayores que la MTU son rechazados con un error
.BR EMSGSIZE .
Cuando se est conectado a un extremo especfico mediante
.BR connect (2),
se puede obtener convenientemente la MTU de la ruta conocida actualmente
usando la opcin de conector
.B IP_MTU
(por ejemplo, despus de que haya ocurrido un error
.BR EMSGSIZE ).
La MTU puede cambiar con el tiempo. Para conectores no orientados a conexin
con muchos destinos, se puede acceder a la MTU nueva usando la cola de errores
(vea
.BR IP_RECVERR ).
Mientras se est realizando el descubrimiento de la MTU, se pueden perder
paquetes iniciales de los conectores de datagramas. Las aplicaciones que
usan UDP deben se conscientes de esto y no tenerlo en cuenta para sus
estrategias de retransmisin de paquetes.

Para iniciar el proceso de descubrimiento de la MTU de la ruta en conectores
no orientados a conexin, es posible comenzar con un tamao grande de
datagramas (con logitudes de bytes de hasta 64KB en las cabeceras) y dejar
que se reduzca mediante actualizaciones de la MTU de la ruta.
.\" XXX this is an ugly hack

Para obtener una estimacin inicial de la MTU de la ruta, conecte un
conector de datagramas a una direccin de destino usando
.BR connect (2)
y obtenga la MTU llamando a
.BR getsockopt (2)
con la opcin
.BR IP_MTU .

.TP
.B IP_MTU
Obtiene la MTU de la ruta conocida actualmente para el conector actual. Slo
vlida cuando el conector ha sido conectado. Devuelve un entero.
Slo vlida para
.BR getsockopt (2). 
.\"
.TP
.B IP_ROUTER_ALERT
Pasar a este conector todos los paquetes "a reenviar" que tengan activa la
opcin "alarma del enrutador IP" (IP Router Alert).
Slo vlida para conectores directos. Esto es til, por ejemplo,
para demonios RSVP en el espacio de usuario. Los paquetes interceptados no
son reenviados por el ncleo, es responsabilidad de los usuarios envilarlos
de nuevo. Se ignora el enlace del conector, tales paquetes slo son filtrados
por el protocolo. Espera una opcin entera.
.\"
.TP
.B IP_MULTICAST_TTL
Establece o lee el valor "tiempo de vida" (time-to-live, TTL) de los paquetes
multidestino de salida para este conector. Es muy importante para los paquetes
multidestino utilizar el TTL ms pequeo posible. El valor por defecto es 1
lo que significa que los paquetes multidestino no abandonarn la red local a
menos que el programa de usuario lo solicite explcitamente. El argumento es
un entero.
.\"
.TP
.B IP_MULTICAST_LOOP
Establece o lee un argumento entero booleano que indica si los paquetes
multidestino enviados deben o no ser devueltos a los conectores
locales.
.\"
.TP
.B IP_ADD_MEMBERSHIP
Unirse a un grupo multidestino. El argumento es una estructura
.BR "struct ip_mreqn" .
.PP
.RS
.nf
.ta 4n 19n 34n
struct ip_mreqn
{
	struct in_addr	imr_multiaddr;	/* Direccin IP del grupo
			   multidestino */
	struct in_addr	imr_address;	/* Direccin IP de la
			   interfaz local */
	int	imr_ifindex;	/* ndice de la interfaz */
};
.fi
.RE
.IP
.I imr_multiaddr
contiene la direccin del grupo multidestino al que la aplicacin se quiere
unir o quiere dejar. Debe ser una direccin multidestino vlida.
.I imr_address
es la direccin de la interfaz local con la que el sistema debe unirse al
grupo multidestino. Si es igual a
.B INADDR_ANY
el sistema elige una interfaz adecuada.
.I imr_ifindex
es el ndice de la interfaz que debe unirse a o dejar el grupo
.IR imr_multiaddr ,
o 0 para indicar cualquier interfaz.
.IP
Por compatibilidad, todava se soporta la antigua estructura
.BR ip_mreq .
Difiere de
.B ip_mreqn 
slo en que no incluye el campo
.IR imr_ifindex .
sta opcin slo es vlida para
.BR setsockopt (2).
.\"
.TP
.B IP_DROP_MEMBERSHIP
Dejar un grupo multidestino. El argumento es una estructura
.B ip_mreqn 
o 
.B ip_mreq 
similar a la de
.IR IP_ADD_MEMBERSHIP . 
.\"
.TP
.B IP_MULTICAST_IF
Establece el dispositivo local para un conector multidestino. El argumento
es una estructura
.B ip_mreqn
o 
.B ip_mreq
similar a la de
.IR IP_ADD_MEMBERSHIP .
.IP
Cuando se pasa una opcin de conector invlida, se devuelve el error
.BR ENOPROTOOPT .

.SH SYSCTLS
El protocolo IP soporta la interfaz sysctl para configurar algunas opciones
globales. Se puede acceder a las sysctls leyendo o escribiendo los ficheros
.B /proc/sys/net/ipv4/*
o usando la interfaz
.BR sysctl (2).
.\"
.TP
.B ip_default_ttl
Establece el valor "tiempo de vida" (TTL) por defecto de los paquetes de
salida. ste se puede cambiar para cada conector con la opcin
.IR IP_TTL .
.\"
.TP
.B ip_forward
Activa el reenvo IP con una opcin booleana. Tambin se puede configurar el
reenvo IP interfaz a interfaz.
.\"
.TP
.B ip_dynaddr
Activa la reescritura dinmica de la direccin del conector y de las
entradas de enmascaramiento (masquerading) para cuando cambie la direccin de
la interfaz. Esto es til para interfaces dialup (como las telefnicas) con
direcciones IP cambiantes. 0 significa no reescritura, 1 la activa y 2 activa
el modo verboso.
.\"
.TP
.B ip_autoconfig
No documentado.
.\"
.TP
.B ip_local_port_range
Contiene dos enteros que definen el intervalo de puertos locales por defecto
reservados para los conectores. La reserva comienza con el primer nmero y
termina con el segundo. Dse cuenta que estos no deben entrar en conflicto
con los puertos usados por el enmascaramiento (aunque se trate el caso).
Tambin, las elecciones arbitrarias pueden producir problemas con algunos
filtros de paquetes del cortafuegos que realizan suposiciones sobre los
puertos locales en uso. El primer nmero debe ser al menos >1024, mejor >4096
para evitar conflictos con puertos bien conocidos y para minimizar los
problemas con el cortafuegos.
.\"
.TP
.B ip_no_pmtu_disc
Si est activa, por defecto no realiza el descubrimiento de la MTU de la
ruta para los conectores TCP. El descubrimiento de la MTU de la ruta puede
fallar si se encuentran en la ruta cortafuegos mal configurados (como los
que pierden todos los paquetes ICMP) o interfaces mal configuradas (por
ejemplo, un enlace punto a punto en donde ambos extremos no se ponen de
acuerdo en la MTU). Es mejor arreglar los enrutadores defectuosos de la ruta
que desactivar globalmente el descubrimiento de la MTU de la ruta ya que el
no realizarlo incurre en un alto coste para la red.
.\"
.TP
.B ipfrag_high_thresh, ipfrag_low_thresh 
Si el nmero de fragmentos IP encolados alcanza el valor
.BR ipfrag_high_thresh ,
la cola se recorta al valor
.BR ipfrag_low_thresh .
Contiene un entero con el nmero de bytes.
.TP
.B neigh/*
Vea 
.BR arp (7). 
.\" XXX Document the conf/*/* sysctls 
.\" XXX Document the route/* sysctls
.\" XXX document them all
.SH IOCTLS
Todas las ioctls descritas en
.BR socket (7)
se aplican a IP.
.PP
Las ioctls para configurar el cortafuegos se documentan en la pgina
.BR ipfw (7)
del paquete 
.BR ipchains .
.PP
Las ioctls para configurar los parmetros de los dispositivos genricos se
describen en
.BR netdevice (7).  
.\" XXX Add a chapter about multicasting
.SH NOTAS
Tenga mucho cuidado con la opcin
.B SO_BROADCAST
(no es privilegiada en Linux). Es fcil sobrecargar la red realizando
difusiones sin tomar precauciones. Para los nuevos protocolos de aplicacin es
mejor usar un grupo multidestino que usar la difusin. La difusin no est
recomendada.
.PP
Otras implementaciones de conectores BSD proporcionan las opciones de
conector
.I IP_RCVDSTADDR 
y 
.I IP_RECVIF 
para obtener la direccin de destino y la interfaz de los datagramas
recibidos. Linux posee la opcin ms general
.I IP_PKTINFO
para la misma tarea.
.PP
.SH ERRORES
.\" XXX document all errors. We should really fix the kernels to give more uniform
.\"     error returns (ENOMEM vs ENOBUFS, EPERM vs EACCES etc.)  
.TP 0.8i
.B ENOTCONN
La operacin slo est definida en conectores conectados, pero el conector no
lo est.
.TP
.B EINVAL
Se ha pasado un argumento invlido. Para las operaciones de envo, ste se
puede producir al enviar a una ruta
.IR blackhole .
.TP
.B EMSGSIZE 
El datagrama es mayor que una MTU de la ruta y no puede ser fragmentado.
.TP
.B EACCES
El usuario ha intentado ejecutar una operacin sin los permisos necesarios.
Estos incluyen:
enviar un paquete a una direccin de difusin sin haber activado la opcin
.BR SO_BROADCAST ,
enviar un paquete a travs de una ruta
.IR prohibida ,
modificar la configuracin del cortafuegos sin tener la capacidad
.B CAP_NET_ADMIN
ni un identificador de usuario efectivo 0,
y realizar un enlace a un puerto reservado sin la capacidad
.B CAP_NET_BIND_SERVICE
ni un identificador de usuario efectivo 0.

.TP
.B EADDRINUSE
Se ha intentado el enlace a una direccin ya en uso.
.TP
.BR ENOMEM " y " ENOBUFS
No hay suficiente memoria disponible.
.TP
.BR ENOPROTOOPT " y " EOPNOTSUPP
Se han pasado una opcin de conector invlida.
.TP
.B EPERM
El usuario no tiene permiso para establecer una prioridad alta, cambiar la
configuracin o enviar seales al proceso o grupo solicitado.
.TP
.B EADDRNOTAVAIL
Se ha solicitado una interfaz inexistente o la direccin fuente solicitada
no es local.
.TP
.B EAGAIN
La operacin se bloqueara en un conector bloqueante.
.TP
.B ESOCKTNOSUPPORT
El conector no est configurado o se ha solicitado un tipo de conector
desconocido.
.TP
.B EISCONN
Se ha llamado a
.BR connect (2)
con un conector ya conectado.
.TP
.B EALREADY
Ya se est realizando una operacin de conexin sobre un conector no
bloqueante.
.TP
.B ECONNABORTED
Se ha cerrado la conexin durante un
.BR accept (2). 
.TP
.B EPIPE
La conexin se ha cerrado inesperadamente o el otro extremo la ha cancelado.
.TP
.B ENOENT
Se ha llamado a
.B SIOCGSTAMP
con un conector en donde no ha llegado ningn paquete.
.TP
.B EHOSTUNREACH
Ninguna entrada vlida de la tabla de enrutamiento coincide con la direccin
de destino. Este error puede ser provocado por un mensaje ICMP procedente de
un enrutador remoto o por la tabla local de enrutamiento.
.TP
.B ENODEV
Dispositivo de red no disponible o incapaz de enviar paquetes IP.
.TP
.B ENOPKG
No se ha configurado un subsistema del ncleo.
.PP
Los protocolos superpuestos pueden generar otros errores. Vea
.BR tcp (7),
.BR raw (7),
.BR udp (7)
y
.BR socket (7).
.SH VERSIONES
.IR IP_PKTINFO , 
.IR IP_MTU , 
.IR IP_PMTU_DISCOVER , 
.IR IP_PKTINFO , 
.IR IP_RECVERR
y
.IR IP_ROUTER_ALERT
son opciones nuevas del ncleo 2.2 de Linux.
.PP
.B struct ip_mreqn 
es nueva en Linux 2.2.  Linux 2.0 slo soportaba 
.BR ip_mreq .
.PP
Las sysctls se introdujeron en la versin 2.2 de Linux.
.SH COMPATIBILIDAD
Por compatibilidad con Linux 2.0, todava se soporta la sintxis obsoleta
.BI "socket(PF_INET, SOCK_RAW, "protocol ")"
para abrir un conector de paquetes
.RB ( packet (7)).
Se recomienda no usar esta sintaxis y debera reemplazarse por
.BI "socket(PF_PACKET, SOCK_RAW, "protocol ")."
La principal diferencia es la nueva estructura de direcciones
.B sockaddr_ll
para la informacin genrica de la capa de enlace en lugar de la antigua
.B sockaddr_pkt.
.SH FALLOS
Existen demasiados valores de error inconsistentes.
.PP
No se han descrito las ioctls para configurar las opciones de interfaz
especficas de IP y las tablas ARP.
.SH AUTORES
Esta pgina de manual fue escrita por Andi Kleen.
.SH VASE TAMBIN 
.BR sendmsg "(2), " recvmsg "(2), " socket "(7), " netlink "(7), "
.BR tcp "(7), " udp "(7), " raw "(7), " ipfw "(7)"
.PP
RFC791 para la especificacin IP original.
.br
RFC1122 para los requerimientos IPv4 para lo anfitriones.
.br
RFC1812 para los requeremientos IPv4 para los enrutadores.
\"  LocalWords:  XXX autobind INADDR REUSEADDR