File: ip.7

package info (click to toggle)
manpages-fr 0.9.3-1
  • links: PTS
  • area: main
  • in suites: woody
  • size: 7,052 kB
  • ctags: 4
  • sloc: makefile: 58; sh: 8
file content (920 lines) | stat: -rw-r--r-- 28,560 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
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
'\" 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.19 2000/12/20 18:10:31 ak Exp $
.\" Traduction Christophe Blaess <ccb@club-internet.fr> 
.\" 09/06/2001 - LDP-man-pages-1.37
.TH IP 7 "9 juin 2001" Linux "Manuel de l'administrateur Linux"
.SH NOM
ip \- Impl�mentation Linux du protocole IPv4.
.SH SYNOPSIS
.B #include <sys/socket.h>
.br
.\" .B #include <net/netinet.h> -- does not exist anymore
.\" .B #include <linux/errqueue.h> -- never include <linux/foo.h>
.B #include <netinet/in.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 DESCRIPTION 
Linux impl�mente le Protocole Internet (IP) version 4, d�crit dans les
RFC 791 et RFC 1122.
.B ip 
contient une impl�mentation du multicasting
niveau 2 conforme � la RFC 1112. Elle contient aussi un routeur IP
comprenant un filtre de paquets.
.\" XXX: has someone verified that 2.1 is really 1812 compliant?
.PP
L'interface de programmation est compatible avec les sockets BSD.
Pour plus de renseignements sur les sockets, voir
.BR socket (7). 
.PP
Une socket IP est cr��e par la fonction
.BR socket (2) 
invoqu�e sous la forme
.BR "socket(PF_INET, type_socket, protocole)" .
les types valides des sockets sont
.B SOCK_STREAM 
pour ouvrir une socket
.BR tcp (7),
.B SOCK_DGRAM
pour ouvrir 
une socket
.BR udp (7),
ou
.B SOCK_RAW
pour ouvrir une socket
.BR raw (7)
permettant d'acc�der directement au protocole IP. Le
.I protocole
indiqu� est celui inscrit dans les ent�tes IP �mis ou re�us. Les seules valeurs valides
pour le 
.I protocole
sont
.B 0
et
.B IPPROTO_TCP
pour les sockets TCP, et
.B 0
et
.B IPPROTO_UDP 
pour les sockets UDP. Pour les sockets
.B SOCK_RAW
on peut indiquer un protocole IP IANA valide dont la
RFC 1700
pr�cise les num�ros assign�s.
.PP
.\" XXX ip current does an autobind in listen, but I'm not sure if that should
.\" be documented.
Lorsqu'un processus veut recevoir de nouveaux paquets entrants ou connexions, il
doit attacher une socket � une adresse d'interface locale en utilisant
.BR bind (2).
Une seule socket IP peut �tre attach�e � une paire (adresse, port) locale donn�e.
Lorsqu'on indique
.B INADDR_ANY 
lors de l'attachement, la socket sera affect�e �
.I toutes
les interfaces locales. Si on invoque
.BR listen (2)
ou
.BR connect (2)
sur une socket non affect�e, elle est automatiquement attach�e �
un port libre al�atoire, avec l'adresse locale fix�e sur
.BR INADDR_ANY .

L'adresse locale d'une socket TCP qui a �t� attach�e est indisponible pendant quelques instants
apr�s sa fermeture, � moins que l'attribut
unless the 
.B SO_REUSEADDR
ait �t� activ�. Il faut �tre prudent en utilisant ce drapeau, car il rend le protocole
TCP moins fiable.

.SH "FORMAT D'ADRESSE"
Une adresse de socket IP est d�finie comme la combinaison d'une adresse IP d'interface et
d'un num�ro de port. Le protocole IP de base ne fournit pas de num�ro de port, ils sont
impl�ment�s par les protocoles de plus haut-niveau comme
.BR udp (7)
et
.BR tcp (7).
Sur les sockets raw, le champ
.B sin_port
contient le protocole IP.

.PP
.RS
.nf
.ta 4n 19n 31n
struct sockaddr_in {
	sa_family_t	sin_family; /* famille d'adresse : AF_INET       */
	u_int16_t	sin_port;   /* port dans l'ordre d'octets r�seau */
	struct in_addr  sin_addr;   /* adresse Internet                  */
};

/* Adresse Internet */
struct in_addr {
	u_int32_t	s_addr;	/* Adresse dans l'ordre d'octets r�seau */
};
.ta
.fi
.RE
.PP
.I sin_family 
est toujours rempli avec
.BR AF_INET . 
C'est indispensable. Sous Linux 2.2, la plupart des fonctions r�seau renvoient
.B EINVAL
lorsque cette configuration manque.
.I sin_port
contient le num�ro de port, dans l'ordre des octets du r�seau. Les num�ros de ports inf�rieures � 1024 sont dits
.IR "r�serv�s" .
Seuls les processus avec un UID effectif nul ou la capacit�
.B CAP_NET_BIND_SERVICE 
peuvent appeler
.BR bind (2)  
pour ces ports. Notez que le protocole IPv4 en tant que tel n'a pas de concept de ports,
ils sont seulement impl�ment�s par des protocoles de plus haut-niveau comme
.BR tcp (7)
et
.BR udp (7).
.PP
.I sin_addr 
est l'adresse IP de l'h�te.
le membre
.I addr
de la structure
.B struct in_addr
contient l'adresse de l'interface de l'h�te, dans l'ordre des octets du r�seau.
.B in_addr 
ne doit �tre manipul� qu'au travers des fonctions de biblioth�que
.BR inet_aton (3),
.BR inet_addr (3),
.BR inet_makeaddr (3)
ou directement par le syst�me de r�solution des noms (voir
.BR gethostbyname (3)).
Les adresses IPv4 sont divis�es en adresses unicast, broadcast et
multicast. Les adresses unicast d�crivent une interface unique d'un h�te,
les adresses broadcast correspondent � tous les h�tes d'un r�seau, et les
adresses multicast repr�sentent tous les h�tes d'un groupe multicast. Les datagrammes vers des adresses broadcast 
ne peuvent �tre �mis et re�us que si l'attribut de socket
.B SO_BROADCAST
est activ�.
Dans l'impl�mentation actuelle, les sockets orient�es connexion ne sont
autoris�es que sur des adresses unicast.
.\" Leave a loophole for XTP @)

Remarquez que l'adresse et le port sont toujours stock�s dans l'ordre des octets
du r�seau. Cela signifie qu'il faut invoquer
.BR htons (3) 
sur le num�ro attribu� � un port. Toutes les fonctions de manipulation d'adresse
et port de la bbibliothque standard fonctionne dans l'ordre du r�seau.

Il existe plusieurs adresses particuli�res :
.B INADDR_LOOPBACK
(127.0.0.1)
correspond toujours � l'h�te local via le p�riph�rique loopback ;
.B INADDR_ANY 
(0.0.0.0)
signifie un attachement � n'importe quelle adresse ;
.B INADDR_BROADCAST
(255.255.255.255)
signifie n'iporte quel h�te et � le m�me effet que
.B INADDR_ANY
pour des raisons historiques.

.SH "OPTIONS DES SOCKETS"

IP supporte quelques options des sockets sp�cifiques aux protocoles, fix�es avec
.BR setsockopt (2)
et consult�es avec
.BR getsockopt (2).
Le niveau d'option de socket pour IP est
.BR SOL_IP .
Un attribut bool�en en faux quand il est nul, et vrai sinon.

.TP
.B IP_OPTIONS
Fixe ou lit les options IP � envoyer avec chaque paquet sur cette socket.
Les arguments sont un pointeur sur un buffer contenant les options et la
longueur des options.
L'appel
.BR setsockopt (2)
fixe les options IP associ�es � une socket.
La taille maximale des options pour IPv4 est 40 octets. Voir la RFC 791 pour
les options autoris�es. Lorsque le paquet de connexion initiale d'une socket
.B SOCK_STREAM
contient des options IP, celles-ci seront automatiquement attribu� �
la socket, avec les options de routage invers�es.
Les paquets entrants ne peuvent pas modifier les options apr�s que la connexion
est �tablie.
Le traitement des options de routage des paquets entrant est d�sactiv� par
d�faut, et peut �tre valid� en utilisant la requ�te sysctl
.BR accept_source_route .
Les autres options, comme l'horodatage sont toujours trait�es.
Pour les socket datagrammes, les options IP ne peuvent �tre fix�es que par
l'utilisateur local. L'appel de
.BR getsockopt (2)
avec
.I IP_OPTIONS
remplit le buffer fourni avec les options d'�mission actuelles.

.TP
.B IP_PKTINFO
Fournit un message
.I IP_PKTINFO
de service, qui contient une structure
.B pktinfo 
fournissant quelques informations � propos du paquet entrant.
Ceci ne fonctionne que pour les sockets orient�es datagrammes.
L'argument est un drapeau indiquant � la socket sur le message IP_PKTINFO
doit �tre pass� ou non. Le message lui-m�me ne peut �tre �crit ou lu que
comme message de contr�le avec un paquet, en utilisant
.BR recvmsg (2)
ou
.BR sendmsg (2).

.IP
.RS
.ta 4n 19n 33n
.nf
struct in_pktinfo {
	unsigned int	ipi_ifindex; 	/* Num�ro d'interface  */
	struct in_addr	ipi_spec_dst;	/* Adresse locale      */
	struct in_addr	ipi_addr;	/* Adresse destination */
};
.fi
.RE
.IP
.\" XXX elaborate on that.
.B ipi_ifindex
est le num�ro unique de l'interface sur laquelle le paquet a �t� re�u.
.B ipi_spec_dst
est l'adresse locale du paquet, et
.B ipi_addr
est l'adresse de destination dans l'ent�te du paquet.
Si
.I IP_PKTINFO 
est pass� �
.BR sendmsg (2)
alors le paquet sortant sera envoy� vers l'interface
indiqu�e par
.B ipi_ifindex
et l'adresse de destination remplie avec
.BR ipi_spec_dst .


.TP
.B IP_RECVTOS
Le message de service
.I IP_TOS 
est pass� avec les paquets entrants. Il contient un octet qui d�crit
le champ Type-Of-Service/Pr�c�dence de l'ent�te du paquet.
Il s'agit d'un drapeau entier bool�en.

.TP
.B IP_RECVTTL
Passer un message
de contr�le
.I IP_RECVTTL 
avec le champ Time-To-Live du paquet re�u
comme argument sous forme d'octet. Non support� pour les
sockets
.BR SOCK_STREAM .

.TP
.B IP_RECVOPTS
Passer � l'utilisateur toutes les options IP entrantes dans un message de contr�le
.IR IP_OPTIONS .
L'ent�te de routage et les autres options sont d�ja remplies pour l'h�te local.
Non support� pour les
sockets 
.IR SOCK_STREAM .

.TP
.B IP_RETOPTS
Comme
.I IP_RECVOPTS
mais renvoie les options non trait�es, avec les options d'horodatage et de routage
non remplies pour ce saut (hop).

.TP
.B IP_TOS:
Fixe ou consulte le champs Type-Of-Service (TOS) envoy� avec chaque paquet IP
sortant de cette socket. Il sert � g�rer sur le r�seau les priorit�s entre paquets.
TOS est un octet. Quelques attributs TOS standards sont d�finis :
.B IPTOS_LOWDELAY 
pour minimiser les d�lais en trafic interactif,
.B IPTOS_THROUGHPUT
pour optimiser le d�bit,
.B IPTOS_RELIABILITY
pour optimiser la fiabilit�,
.B IPTOS_MINCOST
doit �tre utilis� pour les donn�es de remplissage, quand la lenteur de transmission importe peu.
Une de ces valeurs TOS au maximum peut �tre indiqu�e. Les autres bits sont invalides et doivent
�tre effac�s.
Linux envoie d'abord des datagrammes 
.B IPTOS_LOWDELAY 
par d�faut,
mais le comportement exact d�pend de la politique configur�e pour la file d'attente.
.\" XXX elaborate on this 
Quelques niveaux de haute priorit� peuvent r�clamer un UID effectif nul, ou la
capacit�
.BR CAP_NET_ADMIN .
La priorit� peut aussi �tre indiqu�e d'une mani�re ind�pendante du protocole
avec les options
.RB ( "SOL_SOCKET, SO_PRIORITY" )
de
.BR socket (7). 

.TP  
.B IP_TTL
Fixer ou consulter le contenu actuel du champ Time-To-Live envoy� avec chaque
paquet sortant de cette socket.

.TP
.B IP_HDRINCL
L'utilisateur doit fournir un ent�te ip
avant les donn�es proprement dites. 
Uniquement valides pour les sockets
.BR SOCK_RAW .
Voir
.BR raw (7)
pour plus de d�tail. Lorsque cet attribut est activ�, les valeurs fix�es pour
.IR IP_OPTIONS ,
.I IP_TTL
et
.I IP_TOS
sont ignor�es.

.TP
.BR IP_RECVERR " (d�fini dans <linux/errqueue.h>)"
Active le passage am�lior� des messages d'erreur.
Lorsque cet attribut est activ� sur une socket datagramme, les erreurs seront
m�moris�es dans une file particuli�re pour la socket. Quand l'utilisateur 
d�tecte un �chec d'une op�ration sur la socket, les erreurs peuvent
�tre examin�e en invoquant
.BR recvmsg (2) 
avec l'attribut
.BR MSG_ERRQUEUE . 
La structure
.B sock_extended_err 
d�crivant l'erreur sera pass� comme message de service ayant
le type
.I IP_RECVERR 
et le niveau
.BR SOL_IP .
Ceci permet une gestion d'erreur fiable sur les sockets non connect�es.
La partie "donn�es re�ues" de la file d'erreurs
contient le paquet ayant rencontr� un probl�me. 
.IP
Le message de contr�le
.I IP_RECVERR 
contient une
structure
.BR sock_extended_err " :"
.IP
.RS
.ne 18
.nf
.ta 4n 20n 32n
#define SO_EE_ORIGIN_NONE	0
#define SO_EE_ORIGIN_LOCAL	1
#define SO_EE_ORIGIN_ICMP	2
#define SO_EE_ORIGIN_ICMP6	3

struct sock_extended_err {
	u_int32_t	ee_errno;	/* num�ro d'erreur */
	u_int8_t	ee_origin;	/* origine de l'erreur */ 
	u_int8_t	ee_type;	/* type */
	u_int8_t	ee_code;	/* code */
	u_int8_t	ee_pad;
	u_int32_t	ee_info;	/* autres informations */
	u_int32_t	ee_data;	/* autres donn�es */  
	/* champs suppl�mentaires �ventuels */ 
};

struct sockaddr *SOCK_EE_OFFENDER(struct sock_extended_err *);
.ta
.fi
.RE
.IP
.B ee_errno 
contient le num�ro de l'erreur mise en file.
.B ee_origin
est le code de l'origine de l'erreur.
Les autres champs sont sp�cifiques au protocole. La macro
.B SOCK_EE_OFFENDER 
renvoie un pointeur sur l'adresse d'un objet r�seau d'o�
l'erreur provient, en prenant en argument un pointeur sur le message de service.
Si cette adresse n'est pas disponible, le membre
.I sa_family 
de la structure
.B sockaddr 
contient
.B AF_UNSPEC
et les autres champs de
.B sockaddr 
sont ind�finis.
.IP
IP utilise la structure
.B sock_extended_err
comme suit :
.I ee_origin 
contient
.B SO_EE_ORIGIN_ICMP 
pour les erreurs re�ues sous forme de paquet ICMP, ou
.B SO_EE_ORIGIN_LOCAL 
pour les erreurs locales. Les valeurs inconnues doivent �tre ignor�es.
.I ee_type 
et
.I ee_code 
sont remplis avec les champs type et code de l'ent�te ICMP.
.I ee_info
contient le MTU d�termin� pour les erreurs
.BR EMSGSIZE .
Le message contient aussi l'adresse
.I sockaddr_in
du noeud ayant caus� l'erreur,
qui peut �tre obtenu avec la macro.
.BR SOCK_EE_OFFENDER .
Le champ
.I sin_family
de l'adresse fournie par SOCK_EE_OFFENDER vaut
.I AF_UNSPEC
si la source �tait inconnue.
Lorsque les erreurs proviennent du r�seau, toutes les options IP
.RI ( IP_OPTIONS ", " IP_TTL ", "
etc.) valides pour la socket, et contenues dans le paquet
en erreur sont transmises comme messages de contr�le. Le contenu original du paquet
causant l'erreur est renvoy� comme charge normale.
.\" XXX: is it a good idea to document that? It is a dubious feature.
.\" On 
.\" .B SOCK_STREAM 
.\" sockets,
.\" .I IP_RECVERR 
.\" has slightly different semantics. Instead of
.\" saving the errors for the next timeout, it passes all incoming errors 
.\" immediately to the 
.\" user. This might be useful for very short-lived TCP connections which
.\" need fast error handling. Use this option with care: it makes TCP unreliable
.\" by not allowing it to recover properly from routing shifts and other normal
.\" conditions and breaks the protocol specification. 
Notez que TCP n'a pas de file d'erreur ;
.B MSG_ERRQUEUE
est ill�gal sur
les sockets
.BR SOCK_STREAM .
Ainsi, toutes les erreurs sont renvoy�es par les fonctions sur les sockets ou par
.B SO_ERROR
seulement. 
.IP
Pour les sockets raw,
.I IP_RECVERR 
valide le passage de toutes les erreurs ICMP re�ues � l'application,
sinon les erreurs sont seulement renvoy�es sur les sockets connect�es.
Il s'agit d'un attribut bool�en entier.
.I IP_RECVERR
est d�sactiv� par d�faut. 

.TP
.B IP_PMTU_DISCOVER
Fixe ou consulte l'attribut de recherche du MTU du chemin (Path MTU - PMTU) pour une socket.
Lorsqu'il est activ�, Linux effectuer la recherche du MTU de chemin 
comme d�fini dans la RFC 1191.
L'attribut interdisant la fragementation est alors activ� sur tous les datagrammes sortants.
La valeur par d�faut est command�e au niveau syst�me par le sysctl
.B ip_no_pmtu_disc 
pour les sockets
.BR SOCK_STREAM ,
et d�sactiv� pour toutes les autres. Pour les sockets autres que
.B SOCK_STREAM 
il est de la responsabilit� de l'utilisateur d'empaqueter les donn�es dans 
des blocs inf�rieurs au MTU et d'assurer la retransmission si besoin est.
Le noyau rejettera les paquets qui sont plus gros que le MTU d�termin�
si cet attribut est activ� (avec l'erreur
.B EMSGSIZE
). 

.TS
tab(:);
c l
l l.
Attribut MTU chemin:Signification
IP_PMTUDISC_WANT:Utiliser une configuration par route.
IP_PMTUDISC_DONT:Ne pas rechercher le MTU par chemin.
IP_PMTUDISC_DO:Toujours rechercher le MTU par chemin.
.TE   


Lorsque la recherche du PMTU est active, le noyau garde automatiquement une trace
des MTU des chemins par h�te destinataire.
Lorsqu'il est connect� � un corrrespondant sp�cifique avec
.BR connect (2),
le MTU du chemin actuellement d�termin� peut �tre consult� en utilisant l'option
.B IP_MTU 
de la socket (par exemple si une erreur
.B EMSGSIZE 
se produit). Cette valeur peut changer dans le temps.
Pour les sockets sans connexions, avec plusieurs destinations, le nouveau MTU
pour une destination donn�e peut �galement �tre obtenu en utilisant la
file d'erreur (voir
.BR IP_RECVERR ).
Une nouvelle erreur sera mise en file pour chaque mise � jour du MTU.

Durant la recherche du MTU, les paquets initiaux des sockets datagrammes
peuvent �tre perdus. Les applications utilisant UDP devraient le savoir, et
les �viter dans leur strat�gie de retransmission.

Pour d�marrer le processus de recherche du MTU par chemin sur les sockets non-connect�es, il
est possible de d�marrer avec une grande taille de datagramme (jusqu'� 64Ko d'ent�te)
et la diminuer au fur et � mesure des mises � jours du MTU du chemin.
.\" XXX this is an ugly hack

Pour obtenir une estimation initiale du MTU d'un chemin
connectez une socket datagramme � l'adresse de destination en utilisant
.BR connect (2)
et consultez le MTU en appelant
.BR getsockopt (2)
avec
l'option
.BR IP_MTU .

.TP
.B IP_MTU
Renvoie le MTU du chemin actuellement d�termin� pour la socket.
Seulement valdie quand la socket a �t� connect�e. Renvoie un entier.
Uniquement valide pour un
.BR getsockopt (2). 
.\"
.TP
.B IP_ROUTER_ALERT
Passer tous les futurs paquets redirig�s (forwarded) avec l'option
IP Router Alert 
activ�e sur cette socket.
Uniquement valide pour les sockets raw. Ceci sert par exemple pour les d�mons
RSVP de l'espace utilisateur. Les paquets enregistr�s ne sont pas redirig�s par le noyau,
c'est la responsabilit� de l'utilisateur de les renvoyer. L'attachement des sockets est ignor�,
et de tels paquets ne sont filtr�s que par le protocole.
Il s'agit d'un attribut entier.
.\"
.TP
.B IP_MULTICAST_TTL
Fixe ou consulte la valeur du champs Time-To-Live des paquets multicast sortant sur
cette socket. Il est tr�s importants pour les paquets multicas de fixer le
TTL le plus petit possible. La valeur par d�faut est 1, ce qui signifie
que les paquet multicast ne quittent pas le r�seau local � moins que
le programme de l'utilisateur ne le r�clame explicitement.
L'argument est un entier.
.\"
.TP
.B IP_MULTICAST_LOOP
Sets or reads a boolean integer argument whether sent multicast packets should be
looped back to the local sockets.
.\"
.TP
.B IP_ADD_MEMBERSHIP
Rejoindre un groupe multicast. L'argument est une
structure
.BR "struct ip_mreqn" .
.PP
.RS
.nf
.ta 4n 19n 34n
struct ip_mreqn {
	struct in_addr	imr_multiaddr;	/* Adresse IP du groupe multicast */
	struct in_addr	imr_address;	/* Adresse IP de l'interface locale */
	int	imr_ifindex;	/* Num�ro d'interface */
};
.fi
.RE
.IP
.I imr_multiaddr
contient l'adresse du groupe multicast que l'application veut rejoindre ou quitter.
Il doit s'agir d'une adresse multicast valide.
.I imr_address
est l'adresse de l'interface locale avec laquelle le syst�re doit joindre le
groupe multicast. Si elle est �gale �
.BR INADDR_ANY ,
une interface appropri�e est choisie par le syst�me.
.I imr_ifindex
est le num�ro de l'interface pour rejoindre ou quitter le groupe
.IR imr_multiaddr ,
ou z�ro pour indiquer n'importe quelle interface.
.IP
Pour la compatibilit�, l'ancienne structure
.B ip_mreq
est encore support�e. Elle diff�re de
.B ip_mreqn 
seulement par l'absence du
membre
.IR imr_ifindex .
Uniquement valide pour
.BR setsockopt (2).
.\"
.TP
.B IP_DROP_MEMBERSHIP
Quitter un groupe multicast? L'argument est une structure
.B ip_mreqn 
ou
.B ip_mreq 
comme pour
.IR IP_ADD_MEMBERSHIP . 
.\"
.TP
.B IP_MULTICAST_IF
Fixert le p�riph�rique local pour une socket multicast. L'argument est une structure
.B ip_mreqn 
ou
.B ip_mreq 
comme pour
.IR IP_ADD_MEMBERSHIP .
.IP
Lorsqu'une option de socket invalide est fournie, 
.B ENOPROTOOPT
est renvoy�e.
.SH SYSCTLS
Le protocole IP support l'interface sysctl
pour configurer certaines options globales. Les sysctl peuvent �tre
r�alis�s en lisant ou �crivant dans les fichiers
.B /proc/sys/net/ipv4/* 
ou en utilisant
l'interface
.BR sysctl (2).
.\"
.TP
.B ip_default_ttl 
Fixe la valeur par d�faut du champ Time-To-Live des paquets sortants. Ceci peut
�tre modifi� individuellement pour
chaque socket avec l'option
.IR IP_TTL .
.\"
.TP
.B ip_forward
Active la redirection IP (forwarding) avec un attribut bool�en. La redirection IP
peut aussi �tre configur�e interface par interface.
.\"
.TP
.B ip_dynaddr
Active la r��criture dynamique des adresses de socket et du masquerading lors des
changements d'adresse d'interface. Cela sert pour les liaisons par modem, avec des adresses
IP variables. 0 signifie aucune r��criture, 1 les autorise, et 2 demande un mode volubile.
.\"
.TP
.B ip_autoconfig
Non document�.
.\"
.TP
.B ip_local_port_range
Contient deux entiers qui d�finissent l'intervalle par d�faut des ports locaux allou�s aux
sockets. L'allocation d�marre avec le premier num�ro et se termine avec le second. Notez
que cela ne doit pas entrer en conflit avec les ports utilis�s pour le masquerading (bien que
cela soit trait�). De m�me des choix arbitraires peuvent poser des probl�mes avec certains firewalls
de filtrage par paquet qui font des suppositions sur les ports locaux utilis�s.
Le premier nombre doit �tre au moins sup�rieur � 1024 et de pr�f�rence � 4096 pour �viter les
collisions avec les ports officiels et minimiser les probl�mes de firewall.
.\"
.TP
.B ip_no_pmtu_disc
D�sactiver la recherche par d�faut des MTU par chemin pour les sockets TCP. La recherche du MTU par
chemin peut �chouer avec des firewalls mal configur�s (qui rejettente tous les paquets ICMP) ou
les interfaces mal configur�es (par exemple lien point-�-point o� les deux extr�mit�s n'ont pas le
m�me MTU). Il vaut mieux corriger le routeur d�fectueux que de supprimer globalement la
recherche du MTU par chemin, car cette derni�re option augmente les
co�ts du r�seau.
.\"
.TP
.B ipfrag_high_thresh, ipfrag_low_thresh 
Si le nombre de fragments IP en file atteint
.B ipfrag_high_thresh ,
la file est restreinte �
.B ipfrag_low_thresh . 
Contient un entier avec le nombre
d'octets.
.TP
.B ip_always_defrag
[Nouveaut� des noyaux 2.2.13, dans les noyaux pr�c�dents c'�tait une option
de compilation
nomm�e
.BR CONFIG_IP_ALWAYS_DEFRAG ]

Lorsque ce drapeau bool�en et actif (diff�rent de z�ro), les fragments entrants 
(morceaux de paquets IP obtenus car un h�te entre
l'origine et la destination a d�cid� que les paquets
�taient trop grands et les a coup� en morceaux) seront
r�assembl�s (d�fragment�s) avant d'�tre trait�s, m�me s'ils doivent �tre
redirig�s (forwarded).

� utiliser uniquement pour un firewall qui est le seul lien d'entr�e de votre
r�seau, ou un proxy transparent. Ne jamais activer pour un routeur normal
ou un h�te. Sinon, les communications fragment�es peuvent �tre interrompues
lorsque les fragments circulent par diff�rents liens. La d�fragmentation a
�galement un co�t m�moire et CPU non n�gligeable.

Ceci est automatiquement activ� lorsque le masquerading ou le proxy
transparent est configur�.
.TP
.B neigh/*
voir
.BR arp (7). 
.\" XXX Document the conf/*/* sysctls 
.\" XXX Document the route/* sysctls
.\" XXX document them all
.SH IOCTLS
Toutes les ioctls d�crites dans
All ioctls described in
.BR socket (7) 
s'appliquent � la couche IP.
.PP 
Les ioctls pour configurer les firewall sont document�s dans
.BR ipfw (7)
provenant du
paquetage
.BR ipchains .
.PP
Les ioctls pour configurer les param�tres g�n�riques des p�riph�riques sont d�crits dans
.BR netdevice (7).  
.\" XXX Add a chapter about multicasting
.SH NOTES
Soyez tr�s prudents avec l'option
.BR SO_BROADCAST ,
elle n'est pas privil�gi�e sous Linux. Il est facile de surcharger un r�seau avec des
broadcast sans pr�caution. Pour les nouveaux protocoles applicatifs, il vaut mieux
utiliser un groupe multicast plut�t que le broadcast. Ce dernier est
d�conseill�.
.PP
Certaines autres impl�mentations des sockets BSD fournissent les options de socket
.I IP_RCVDSTADDR 
et
.I IP_RECVIF 
pour obtenir l'adresse de destination et l'interface des
datagrammes re�us. Linux � l'option
.I IP_PKTINFO
plus g�n�rale pour effectuer ce travail. 
.PP
.SH ERREURS
.\" XXX document all errors. We should really fix the kernels to give more uniform
.\"     error returns (ENOMEM vs ENOBUFS, EPERM vs EACCES etc.)  
.TP
.B ENOTCONN
L'op�ration n'est d�finie que pour une socket connect�e, mais la socket ne l'�tait
pas.
.TP
.B EINVAL
Un argument invalide a �t� transmis.
Pour les �missions, cela peut �tre caus� par un envoi vers une
route
.IR "trou noir" .
.TP
.B EMSGSIZE 
Datagramme plus grand que le MTU du chemin, et ne peut pas �tre fragment�.
.TP
.B EACCES
L'utilisateur essaye de r�aliser une op�ration sans avoir les permissions n�cessaires.
Cela inclut :
L'envoi d'un paquet vers une adresse broadcast sans avoir activ�
l'attribut
.BR SO_BROADCAST .
L'envoi d'un paquet vers une
route
.IR interdite .
Modification du param�trage du firewall sans la capacit�
.B CAP_NET_ADMIN
ou un UID effectif nul.
Attachement � un port r�serv� sans la capacit�
.B CAP_NET_BIND_SERVICE
ou un UID effectif nul.

.TP
.B EADDRINUSE
Tentative d'attachement � une adresse d�j� utilis�e.
.TP
.BR ENOPROTOOPT " et " EOPNOTSUPP
Passage d'une option de socket invalide.
.TP
.B EPERM
L'utilisateur n'a pas la permission de fixer une priorit� haute, de changer la configuration
ou d'envoyer des signaux au groupe ou au processus demand�.
.TP
.B EADDRNOTAVAIL
Une interface inexistante ou une adresse source non locale
ont �t� r�clam�es.
.TP
.B EAGAIN
L'op�ration sur une socket non-bloquante devrait bloquer.
.TP
.B ESOCKTNOSUPPORT
La socket n'est pas configur�e ou on a demand� un type de socket inconnu.
.TP
.B EISCONN
.BR connect (2)
a �t� appel� sur une socket d�ja connect�e.
.TP
.B EALREADY
Une op�ration de connexion est d�ja en cours sur une socket non-bloquante.
.TP
.B ECONNABORTED
Une connexion a �t� ferm�e durant un
.BR accept (2). 
.TP
.B EPIPE
La connexion a �t� ferm�e pr�matur�ment ou termin�e par le correspondant.
.TP
.B ENOENT
.B SIOCGSTAMP 
a �t� appel� sur une socket sans qu'aucun paquet n'y soit disponible.
.TP
.B EHOSTUNREACH
Aucune route valide dans la table ne correspond � l'adresse de destination. Cette erreur
peut �tre d�e � un message ICMP d'un routeur distant ou � la table
de routage interne.
.TP
.B ENODEV 
Le p�riph�rique r�seau n'est pas disponible ou est incapable d'envoyer de l'IP.
.TP
.B ENOPKG 
Un sous-syst�me du noyau n'est pas configur�.
.TP
.B ENOBUFS, ENOMEM
Pas assez de m�moire.
Cela signifie souvent que l'allocation m�moire est contrainte par les limites du buffer
de socket, pas par la m�moire syst�me, mais ce n'est pas toujours s�r.
.PP
D'autres erreurs peuvent �tre d�clench�es par les protocoles sup�rieurs. Voir
.BR tcp (7),
.BR raw (7),
.BR udp (7)
et
.BR socket (7).
.SH VERSIONS
.IR IP_PKTINFO , 
.IR IP_MTU , 
.IR IP_PMTU_DISCOVER , 
.IR IP_PKTINFO , 
.IR IP_RECVERR
et
.IR IP_ROUTER_ALERT
sont de nouvelles options de Linux 2.2.
Elles sont aussi sp�cifiques � Linux et ne doivent pas servir dans des
programmes destin�s � �tre portables.
.PP
.B struct ip_mreqn 
est nouvelle dans Linux 2.2. Sous Linux 2.0, seule existait
.BR ip_mreq .
.PP
Les sysctls ont �t� introduits avec Linux 2.2.
.SH COMPATIBILIT�
Pour compatibili� avec Linux 2.0, la syntaxe obsol�te
.BI "socket(PF_INET, SOCK_RAW, "protocole ")"
est encore support�e pour ouvrir une
socket
.BR packet (7).
Cela est d�conseill�, et doit �tre remplac� par un
.BI "socket(PF_PACKET, SOCK_RAW, "protocole ")"
La principale diff�rence est la nouvelle
structure d'adresse
.B sockaddr_ll 
pour les informations g�n�riques du niveau liaison � la place de l'ancienne
.BR sockaddr_pkt .
.SH BOGUES
Il y a trop de valeurs d'erreurs h�t�rog�nes.
.PP
Les ioctls pour configurer les options d'interface sp�cifiques IP et les tablrs ARP
ne sont pas d�crites.
.PP
Certaines version de la GlibC oublient la d�claration
.I in_pktinfo.
Le rem�de est de recopier dans votre programme la description de cette page de manuel.
.PP
La r�ception de l'adresse de destination originale avec
.B MSG_ERRQUEUE
dans
.I msg_name
par
.BR recvmsg (2)
ne fonctionne pas dans certains noyaux 2.2.
.SH AUTEURS
Cette page de manuel a �t� �crite par Andi Kleen. 
.SH "VOIR AUSSI"
.BR sendmsg (2),
.BR recvmsg (2),
.BR socket (7),
.BR netlink (7),
.BR tcp (7),
.BR udp (7),
.BR raw (7),
.BR ipfw (7).
.PP
RFC 791 pour les sp�cifications IP d'origine.
.br
RFC 1122 pour les n�c�ssit�s IPv4 des h�tes.
.br
RFC 1812 pour les n�c�ssit�s IPv4 des routeurs.
\"  LocalWords:  XXX autobind INADDR REUSEADDR
.SH TRADUCTION
Christophe Blaess, 2001.