
<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://livre.g6.asso.fr/index.php?action=history&amp;feed=atom&amp;title=L%27interface_de_programmation_%22socket%22_IPv6</id>
		<title>L'interface de programmation &quot;socket&quot; IPv6 - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://livre.g6.asso.fr/index.php?action=history&amp;feed=atom&amp;title=L%27interface_de_programmation_%22socket%22_IPv6"/>
		<link rel="alternate" type="text/html" href="http://livre.g6.asso.fr/index.php?title=L%27interface_de_programmation_%22socket%22_IPv6&amp;action=history"/>
		<updated>2026-05-03T10:00:04Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.25.2</generator>

	<entry>
		<id>http://livre.g6.asso.fr/index.php?title=L%27interface_de_programmation_%22socket%22_IPv6&amp;diff=2952&amp;oldid=prev</id>
		<title>Bruno Deniaud: /* &lt;div id=&quot;struct&quot;&gt;Les structures de données d'adresses&lt;/div&gt; */</title>
		<link rel="alternate" type="text/html" href="http://livre.g6.asso.fr/index.php?title=L%27interface_de_programmation_%22socket%22_IPv6&amp;diff=2952&amp;oldid=prev"/>
				<updated>2006-02-27T10:40:58Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;&amp;lt;div id=&amp;quot;struct&amp;quot;&amp;gt;Les structures de données d&amp;#039;adresses&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 10:40, 27 February 2006&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;L67&quot; &gt;Line 67:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 67:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Si le champ &amp;lt;tt&amp;gt;sin6_len&amp;lt;/tt&amp;gt; existe (ce qui est testable par le fait que le symbole &amp;lt;tt&amp;gt;SIN6_LEN&amp;lt;/tt&amp;gt; est défini), il doit être initialisé par la taille de la structure &amp;lt;tt&amp;gt;sockaddr_in6&amp;lt;/tt&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Si le champ &amp;lt;tt&amp;gt;sin6_len&amp;lt;/tt&amp;gt; existe (ce qui est testable par le fait que le symbole &amp;lt;tt&amp;gt;SIN6_LEN&amp;lt;/tt&amp;gt; est défini), il doit être initialisé par la taille de la structure &amp;lt;tt&amp;gt;sockaddr_in6&amp;lt;/tt&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;On notera la présence de deux nouveaux champs (ils n'ont pas d'équivalents dans la structure &amp;lt;tt&amp;gt;sockaddr_in&amp;lt;/tt&amp;gt;) dans la structure de données &amp;lt;tt&amp;gt;sockaddr_in6&amp;lt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;§tt&lt;/del&gt;&amp;gt;, les champs &amp;lt;tt&amp;gt;sin6_flowinfo&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;sin6_scope_id&amp;lt;/tt&amp;gt;. Le premier, en réalité structuré, est décrit dans le RFC 2460 et [[Identificateur de flux]]. Le second désigne un ensemble d'interfaces en adéquation avec la portée de l'adresse contenue dans le champ &amp;lt;tt&amp;gt;sin6_addr&amp;lt;/tt&amp;gt;. Par exemple, si l'adresse en question est de type [[Lien-local|lien local]], le champ &amp;lt;tt&amp;gt;sin6_scope_id&amp;lt;/tt&amp;gt; devrait être un index d'interface.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;On notera la présence de deux nouveaux champs (ils n'ont pas d'équivalents dans la structure &amp;lt;tt&amp;gt;sockaddr_in&amp;lt;/tt&amp;gt;) dans la structure de données &amp;lt;tt&amp;gt;sockaddr_in6&amp;lt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;/tt&lt;/ins&gt;&amp;gt;, les champs &amp;lt;tt&amp;gt;sin6_flowinfo&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;sin6_scope_id&amp;lt;/tt&amp;gt;. Le premier, en réalité structuré, est décrit dans le RFC 2460 et [[Identificateur de flux]]. Le second désigne un ensemble d'interfaces en adéquation avec la portée de l'adresse contenue dans le champ &amp;lt;tt&amp;gt;sin6_addr&amp;lt;/tt&amp;gt;. Par exemple, si l'adresse en question est de type [[Lien-local|lien local]], le champ &amp;lt;tt&amp;gt;sin6_scope_id&amp;lt;/tt&amp;gt; devrait être un index d'interface.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{suivi| Programmation d'applications | Programmation d'applications | L'interface socket | L'interface socket }}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{suivi| Programmation d'applications | Programmation d'applications | L'interface socket | L'interface socket }}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Bruno Deniaud</name></author>	</entry>

	<entry>
		<id>http://livre.g6.asso.fr/index.php?title=L%27interface_de_programmation_%22socket%22_IPv6&amp;diff=2951&amp;oldid=prev</id>
		<title>Bruno Deniaud at 10:37, 27 February 2006</title>
		<link rel="alternate" type="text/html" href="http://livre.g6.asso.fr/index.php?title=L%27interface_de_programmation_%22socket%22_IPv6&amp;diff=2951&amp;oldid=prev"/>
				<updated>2006-02-27T10:37:11Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 10:37, 27 February 2006&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;L1&quot; &gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{suivi| Programmation d'applications | Programmation d'applications | L'interface socket | L'interface socket }}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==&amp;lt;div id=&amp;quot;change&amp;quot;&amp;gt;Ce qui a changé&amp;lt;/div&amp;gt;==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==&amp;lt;div id=&amp;quot;change&amp;quot;&amp;gt;Ce qui a changé&amp;lt;/div&amp;gt;==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;L67&quot; &gt;Line 67:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 68:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;On notera la présence de deux nouveaux champs (ils n'ont pas d'équivalents dans la structure &amp;lt;tt&amp;gt;sockaddr_in&amp;lt;/tt&amp;gt;) dans la structure de données &amp;lt;tt&amp;gt;sockaddr_in6&amp;lt;§tt&amp;gt;, les champs &amp;lt;tt&amp;gt;sin6_flowinfo&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;sin6_scope_id&amp;lt;/tt&amp;gt;. Le premier, en réalité structuré, est décrit dans le RFC 2460 et [[Identificateur de flux]]. Le second désigne un ensemble d'interfaces en adéquation avec la portée de l'adresse contenue dans le champ &amp;lt;tt&amp;gt;sin6_addr&amp;lt;/tt&amp;gt;. Par exemple, si l'adresse en question est de type [[Lien-local|lien local]], le champ &amp;lt;tt&amp;gt;sin6_scope_id&amp;lt;/tt&amp;gt; devrait être un index d'interface.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;On notera la présence de deux nouveaux champs (ils n'ont pas d'équivalents dans la structure &amp;lt;tt&amp;gt;sockaddr_in&amp;lt;/tt&amp;gt;) dans la structure de données &amp;lt;tt&amp;gt;sockaddr_in6&amp;lt;§tt&amp;gt;, les champs &amp;lt;tt&amp;gt;sin6_flowinfo&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;sin6_scope_id&amp;lt;/tt&amp;gt;. Le premier, en réalité structuré, est décrit dans le RFC 2460 et [[Identificateur de flux]]. Le second désigne un ensemble d'interfaces en adéquation avec la portée de l'adresse contenue dans le champ &amp;lt;tt&amp;gt;sin6_addr&amp;lt;/tt&amp;gt;. Par exemple, si l'adresse en question est de type [[Lien-local|lien local]], le champ &amp;lt;tt&amp;gt;sin6_scope_id&amp;lt;/tt&amp;gt; devrait être un index d'interface.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{suivi| Programmation d'applications | Programmation d'applications | L'interface socket | L'interface socket }}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Bruno Deniaud</name></author>	</entry>

	<entry>
		<id>http://livre.g6.asso.fr/index.php?title=L%27interface_de_programmation_%22socket%22_IPv6&amp;diff=2261&amp;oldid=prev</id>
		<title>Laurent Toutain: /* Les structures de données d'adresses */</title>
		<link rel="alternate" type="text/html" href="http://livre.g6.asso.fr/index.php?title=L%27interface_de_programmation_%22socket%22_IPv6&amp;diff=2261&amp;oldid=prev"/>
				<updated>2005-12-14T05:55:59Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Les structures de données d&amp;#039;adresses&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 05:55, 14 December 2005&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;L16&quot; &gt;Line 16:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 16:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Une API &amp;quot;avancée&amp;quot;, décrite dans le RFC 3542 permet de programmer les échanges réseaux de manière très précise. Elle sera également utilisée mais de manière succinte et essentiellement par le biais de l'exemple [[one_ping6]].&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Une API &amp;quot;avancée&amp;quot;, décrite dans le RFC 3542 permet de programmer les échanges réseaux de manière très précise. Elle sera également utilisée mais de manière succinte et essentiellement par le biais de l'exemple [[one_ping6]].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Les structures de données d'adresses==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;div id=&amp;quot;struct&amp;quot;&amp;gt;&lt;/ins&gt;Les structures de données d'adresses&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/div&amp;gt;&lt;/ins&gt;==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Une nouvelle famille d'adresses ayant pour nom &amp;lt;tt&amp;gt;AF_INET6&amp;lt;/tt&amp;gt; et dont la valeur peut varier d'une implémentation à l'autre, a été définie (dans &amp;lt;tt&amp;gt;sys/socket.h&amp;lt;/tt&amp;gt;). Également, une nouvelle famille de protocoles ayant pour nom &amp;lt;tt&amp;gt;PF_INET6&amp;lt;/tt&amp;gt; a été définie (dans &amp;lt;tt&amp;gt;sys/socket.h&amp;lt;/tt&amp;gt;). En principe, on doit avoir :&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Une nouvelle famille d'adresses ayant pour nom &amp;lt;tt&amp;gt;AF_INET6&amp;lt;/tt&amp;gt; et dont la valeur peut varier d'une implémentation à l'autre, a été définie (dans &amp;lt;tt&amp;gt;sys/socket.h&amp;lt;/tt&amp;gt;). Également, une nouvelle famille de protocoles ayant pour nom &amp;lt;tt&amp;gt;PF_INET6&amp;lt;/tt&amp;gt; a été définie (dans &amp;lt;tt&amp;gt;sys/socket.h&amp;lt;/tt&amp;gt;). En principe, on doit avoir :&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Laurent Toutain</name></author>	</entry>

	<entry>
		<id>http://livre.g6.asso.fr/index.php?title=L%27interface_de_programmation_%22socket%22_IPv6&amp;diff=2258&amp;oldid=prev</id>
		<title>Laurent Toutain: /* Ce qui a changé */</title>
		<link rel="alternate" type="text/html" href="http://livre.g6.asso.fr/index.php?title=L%27interface_de_programmation_%22socket%22_IPv6&amp;diff=2258&amp;oldid=prev"/>
				<updated>2005-12-14T05:52:32Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Ce qui a changé&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 05:52, 14 December 2005&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;L1&quot; &gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Ce qui a changé==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;div id=&amp;quot;change&amp;quot;&amp;gt;&lt;/ins&gt;Ce qui a changé&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/div&amp;gt;&lt;/ins&gt;==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Les changements opérés de façon à intégrer IPv6 concernent les quatre domaines suivants :&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Les changements opérés de façon à intégrer IPv6 concernent les quatre domaines suivants :&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Laurent Toutain</name></author>	</entry>

	<entry>
		<id>http://livre.g6.asso.fr/index.php?title=L%27interface_de_programmation_%22socket%22_IPv6&amp;diff=2257&amp;oldid=prev</id>
		<title>Laurent Toutain: /* Les structures de données d'adresses */</title>
		<link rel="alternate" type="text/html" href="http://livre.g6.asso.fr/index.php?title=L%27interface_de_programmation_%22socket%22_IPv6&amp;diff=2257&amp;oldid=prev"/>
				<updated>2005-12-14T05:51:32Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Les structures de données d&amp;#039;adresses&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 05:51, 14 December 2005&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;L66&quot; &gt;Line 66:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 66:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Si le champ &amp;lt;tt&amp;gt;sin6_len&amp;lt;/tt&amp;gt; existe (ce qui est testable par le fait que le symbole &amp;lt;tt&amp;gt;SIN6_LEN&amp;lt;/tt&amp;gt; est défini), il doit être initialisé par la taille de la structure &amp;lt;tt&amp;gt;sockaddr_in6&amp;lt;/tt&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Si le champ &amp;lt;tt&amp;gt;sin6_len&amp;lt;/tt&amp;gt; existe (ce qui est testable par le fait que le symbole &amp;lt;tt&amp;gt;SIN6_LEN&amp;lt;/tt&amp;gt; est défini), il doit être initialisé par la taille de la structure &amp;lt;tt&amp;gt;sockaddr_in6&amp;lt;/tt&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;On notera la présence de deux nouveaux champs (ils n'ont pas d'équivalents dans la structure &amp;lt;tt&amp;gt;sockaddr_in&amp;lt;/tt&amp;gt;) dans la structure de données &amp;lt;tt&amp;gt;sockaddr_in6&amp;lt;§tt&amp;gt;, les champs &amp;lt;tt&amp;gt;sin6_flowinfo&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;sin6_scope_id&amp;lt;/tt&amp;gt;. Le premier, en réalité structuré, est décrit dans le RFC 2460 et [[Identificateur de flux]]. Le second désigne un ensemble d'interfaces en adéquation avec la portée de l'adresse contenue dans le champ &amp;lt;tt&amp;gt;sin6_addr&amp;lt;/tt&amp;gt;. Par exemple, si l'adresse en question est de type [[Lien local|lien local]], le champ &amp;lt;tt&amp;gt;sin6_scope_id&amp;lt;/tt&amp;gt; devrait être un index d'interface.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;On notera la présence de deux nouveaux champs (ils n'ont pas d'équivalents dans la structure &amp;lt;tt&amp;gt;sockaddr_in&amp;lt;/tt&amp;gt;) dans la structure de données &amp;lt;tt&amp;gt;sockaddr_in6&amp;lt;§tt&amp;gt;, les champs &amp;lt;tt&amp;gt;sin6_flowinfo&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;sin6_scope_id&amp;lt;/tt&amp;gt;. Le premier, en réalité structuré, est décrit dans le RFC 2460 et [[Identificateur de flux]]. Le second désigne un ensemble d'interfaces en adéquation avec la portée de l'adresse contenue dans le champ &amp;lt;tt&amp;gt;sin6_addr&amp;lt;/tt&amp;gt;. Par exemple, si l'adresse en question est de type [[Lien&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;-&lt;/ins&gt;local|lien local]], le champ &amp;lt;tt&amp;gt;sin6_scope_id&amp;lt;/tt&amp;gt; devrait être un index d'interface.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Laurent Toutain</name></author>	</entry>

	<entry>
		<id>http://livre.g6.asso.fr/index.php?title=L%27interface_de_programmation_%22socket%22_IPv6&amp;diff=2256&amp;oldid=prev</id>
		<title>Laurent Toutain: /* Les structures de données d'adresses */</title>
		<link rel="alternate" type="text/html" href="http://livre.g6.asso.fr/index.php?title=L%27interface_de_programmation_%22socket%22_IPv6&amp;diff=2256&amp;oldid=prev"/>
				<updated>2005-12-14T05:51:09Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Les structures de données d&amp;#039;adresses&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 05:51, 14 December 2005&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;L66&quot; &gt;Line 66:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 66:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Si le champ &amp;lt;tt&amp;gt;sin6_len&amp;lt;/tt&amp;gt; existe (ce qui est testable par le fait que le symbole &amp;lt;tt&amp;gt;SIN6_LEN&amp;lt;/tt&amp;gt; est défini), il doit être initialisé par la taille de la structure &amp;lt;tt&amp;gt;sockaddr_in6&amp;lt;/tt&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Si le champ &amp;lt;tt&amp;gt;sin6_len&amp;lt;/tt&amp;gt; existe (ce qui est testable par le fait que le symbole &amp;lt;tt&amp;gt;SIN6_LEN&amp;lt;/tt&amp;gt; est défini), il doit être initialisé par la taille de la structure &amp;lt;tt&amp;gt;sockaddr_in6&amp;lt;/tt&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;On notera la présence de deux nouveaux champs (ils n'ont pas d'équivalents dans la structure &amp;lt;tt&amp;gt;sockaddr_in&amp;lt;/tt&amp;gt;) dans la structure de données &amp;lt;tt&amp;gt;sockaddr_in6&amp;lt;§tt&amp;gt;, les champs &amp;lt;tt&amp;gt;sin6_flowinfo&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;sin6_scope_id&amp;lt;/tt&amp;gt;. Le premier, en réalité structuré, est décrit dans le RFC 2460 et [[Identificateur de flux]]. Le second désigne un ensemble d'interfaces en adéquation avec la portée de l'adresse contenue dans le champ &amp;lt;tt&amp;gt;sin6_addr&amp;lt;/tt&amp;gt;. Par exemple, si l'adresse en question est de type [Lien local|lien local]], le champ &amp;lt;tt&amp;gt;sin6_scope_id&amp;lt;/tt&amp;gt; devrait être un index d'interface.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;On notera la présence de deux nouveaux champs (ils n'ont pas d'équivalents dans la structure &amp;lt;tt&amp;gt;sockaddr_in&amp;lt;/tt&amp;gt;) dans la structure de données &amp;lt;tt&amp;gt;sockaddr_in6&amp;lt;§tt&amp;gt;, les champs &amp;lt;tt&amp;gt;sin6_flowinfo&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;sin6_scope_id&amp;lt;/tt&amp;gt;. Le premier, en réalité structuré, est décrit dans le RFC 2460 et [[Identificateur de flux]]. Le second désigne un ensemble d'interfaces en adéquation avec la portée de l'adresse contenue dans le champ &amp;lt;tt&amp;gt;sin6_addr&amp;lt;/tt&amp;gt;. Par exemple, si l'adresse en question est de type &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;[&lt;/ins&gt;[Lien local|lien local]], le champ &amp;lt;tt&amp;gt;sin6_scope_id&amp;lt;/tt&amp;gt; devrait être un index d'interface.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Laurent Toutain</name></author>	</entry>

	<entry>
		<id>http://livre.g6.asso.fr/index.php?title=L%27interface_de_programmation_%22socket%22_IPv6&amp;diff=2255&amp;oldid=prev</id>
		<title>Laurent Toutain: /* Les structures de données d'adresses */</title>
		<link rel="alternate" type="text/html" href="http://livre.g6.asso.fr/index.php?title=L%27interface_de_programmation_%22socket%22_IPv6&amp;diff=2255&amp;oldid=prev"/>
				<updated>2005-12-14T05:50:22Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Les structures de données d&amp;#039;adresses&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 05:50, 14 December 2005&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;L22&quot; &gt;Line 22:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 22:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; #define PF_INET6 AF_INET6&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; #define PF_INET6 AF_INET6&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;La structure de données destinée à contenir une adresse IPv6 est définie comme suit (dans &amp;lt;tt&amp;gt;netinet/in.h&amp;lt;tt&amp;gt;) :&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;La structure de données destinée à contenir une adresse IPv6 est définie comme suit (dans &amp;lt;tt&amp;gt;netinet/in.h&amp;lt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;/&lt;/ins&gt;tt&amp;gt;) :&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; struct in6_addr {&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; struct in6_addr {&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Laurent Toutain</name></author>	</entry>

	<entry>
		<id>http://livre.g6.asso.fr/index.php?title=L%27interface_de_programmation_%22socket%22_IPv6&amp;diff=2253&amp;oldid=prev</id>
		<title>Laurent Toutain at 05:49, 14 December 2005</title>
		<link rel="alternate" type="text/html" href="http://livre.g6.asso.fr/index.php?title=L%27interface_de_programmation_%22socket%22_IPv6&amp;diff=2253&amp;oldid=prev"/>
				<updated>2005-12-14T05:49:37Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Ce qui a changé==&lt;br /&gt;
&lt;br /&gt;
Les changements opérés de façon à intégrer IPv6 concernent les quatre domaines suivants :&lt;br /&gt;
&lt;br /&gt;
* les structures de données d'adresses ;&lt;br /&gt;
* l'interface socket ;&lt;br /&gt;
* les primitives de conversion entre noms et adresses ;&lt;br /&gt;
* les fonctions de conversions d'adresses.&lt;br /&gt;
&lt;br /&gt;
Ces changements ont été minimisés autant que possible de manière à faciliter le portage des applications IPv4 existantes. En outre, et ce point est important, cette nouvelle API doit permettre l'interopérabilité entre machines IPv4 et machines IPv6 grâce au mécanisme de double pile décrit ci-après.&lt;br /&gt;
&lt;br /&gt;
L'API décrite ici est celle utilisée en Solaris, Linux et systèmes *BSD. Elle correspond à celle définie dans le RFC 3493 avec quelques modifications nécessaires pour prendre en compte les dernières évolutions des protocoles sous-jacents. Cette API est explicitement conçue pour fonctionner sur des machines possédant la double pile IPv4 et IPv6 (cf. See Double pile IPv4/IPv6 pour le schéma d'implémentation d'une telle double pile sous UNIX 4.4BSD). Cette API &amp;quot;socket&amp;quot; est celle disponible dans de nombreux environnements de programmation tels que Java, perl, python, ruby, ...&lt;br /&gt;
&lt;br /&gt;
[[image:CS191.gif]]&lt;br /&gt;
&lt;br /&gt;
Une API &amp;quot;avancée&amp;quot;, décrite dans le RFC 3542 permet de programmer les échanges réseaux de manière très précise. Elle sera également utilisée mais de manière succinte et essentiellement par le biais de l'exemple [[one_ping6]].&lt;br /&gt;
&lt;br /&gt;
==Les structures de données d'adresses==&lt;br /&gt;
&lt;br /&gt;
Une nouvelle famille d'adresses ayant pour nom &amp;lt;tt&amp;gt;AF_INET6&amp;lt;/tt&amp;gt; et dont la valeur peut varier d'une implémentation à l'autre, a été définie (dans &amp;lt;tt&amp;gt;sys/socket.h&amp;lt;/tt&amp;gt;). Également, une nouvelle famille de protocoles ayant pour nom &amp;lt;tt&amp;gt;PF_INET6&amp;lt;/tt&amp;gt; a été définie (dans &amp;lt;tt&amp;gt;sys/socket.h&amp;lt;/tt&amp;gt;). En principe, on doit avoir :&lt;br /&gt;
&lt;br /&gt;
 #define PF_INET6 AF_INET6&lt;br /&gt;
&lt;br /&gt;
La structure de données destinée à contenir une adresse IPv6 est définie comme suit (dans &amp;lt;tt&amp;gt;netinet/in.h&amp;lt;tt&amp;gt;) :&lt;br /&gt;
&lt;br /&gt;
 struct in6_addr {&lt;br /&gt;
    uint8_t s6_addr[16];&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
les octets constituant l'adresse étant rangés comme d'habitude dans l'ordre réseau (''network byte order'').&lt;br /&gt;
&lt;br /&gt;
La structure de données IPv6 &amp;lt;tt&amp;gt;struct sockaddr_in6&amp;lt;/tt&amp;gt;, est équivalente à la structure &amp;lt;tt&amp;gt;struct sockaddr_in&amp;lt;/tt&amp;gt; d'IPv4. Elle est définie comme suit (dans &amp;lt;tt&amp;gt;netinet/in.h&amp;lt;/tt&amp;gt;) pour les systèmes dérivés d'UNIX 4.3BSD :&lt;br /&gt;
&lt;br /&gt;
 struct sockaddr_in6 {&lt;br /&gt;
    sa_family_t sin6_family;   /* AF_INET6 */&lt;br /&gt;
    in_port_t sin6_port;       /* numéro de port */&lt;br /&gt;
    uint32_t sin6_flowinfo;    /* identificateur de flux */&lt;br /&gt;
    struct in6_addr sin6_addr; /* adresse IPv6 */&lt;br /&gt;
    uint32_t sin6_scope_id;    /* ensemble d'interfaces correspondant&lt;br /&gt;
                                * à la portée de l'adresse */&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
Il faut noter que cette structure a une longueur de 28 octets, et est donc plus grande que le type générique &amp;lt;tt&amp;gt;struct sockaddr&amp;lt;/tt&amp;gt;. Il n'est donc plus possible de réserver une &amp;lt;tt&amp;gt;struct sockaddr&amp;lt;/tt&amp;gt; si la valeur à stocker peut être une &amp;lt;tt&amp;gt;struct sockaddr_in6&amp;lt;/tt&amp;gt;. Afin de faciliter la tâche des implémenteurs, une nouvelle structure de données, &amp;lt;tt&amp;gt;struct sockaddr_storage&amp;lt;/tt&amp;gt;, a été définie. Celle-ci est de taille suffisante afin de pouvoir prendre en compte tous les protocoles supportés et alignée de telle sorte que les conversions de type entre pointeurs vers les structures de données d'adresse des protocoles supportés et pointeurs vers elle-même n'engendrent pas de problèmes d'alignement. Un exemple d'utilisation pourrait être le suivant :&lt;br /&gt;
&lt;br /&gt;
 struct sockaddr_storage ss;&lt;br /&gt;
  &lt;br /&gt;
 struct sockaddr_in *sin = (struct sockaddr_in *) &amp;amp;ss;&lt;br /&gt;
 struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *) &amp;amp;ss;&lt;br /&gt;
&lt;br /&gt;
Dans la version 4.4 d'UNIX BSD, la longueur du champ &amp;lt;tt&amp;gt;sin6_family&amp;lt;/tt&amp;gt; est passée de 2 octets à 1 octet. L'octet ainsi récupéré contient la taille de la structure &amp;lt;tt&amp;gt;sockaddr_in6&amp;lt;/tt&amp;gt; et sert à effectuer correctement la conversion de type vers la structure de données générique &amp;lt;tt&amp;gt;sockaddr&amp;lt;/tt&amp;gt; utilisée par bon nombre de primitives de l'interface socket.&lt;br /&gt;
&lt;br /&gt;
La macro-définition &amp;lt;tt&amp;gt;SIN6_LEN&amp;lt;/tt&amp;gt;, présente dans toute implémentation 4.4BSD, permet alors de distinguer les versions. Les autres champs restant inchangés, cette structure est presque identique à celle de la précédente version :&lt;br /&gt;
&lt;br /&gt;
 #define SIN6_LEN&lt;br /&gt;
  &lt;br /&gt;
 struct sockaddr_in6 {&lt;br /&gt;
    u_int8_t sin6_len;         /* la longueur de cette structure */&lt;br /&gt;
    sa_family_t sin6_family;   /* AF_INET6 */&lt;br /&gt;
    in_port_t sin6_port;       /* numéro de port */&lt;br /&gt;
    uint32_t sin6_flowinfo;    /* identificateur de flux */&lt;br /&gt;
    struct in6_addr sin6_addr; /* adresse IPv6 */&lt;br /&gt;
    uint32_t sin6_scope_id;    /* ensemble d'interfaces correspondant&lt;br /&gt;
                                * à la portée de l'adresse */&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
Si le champ &amp;lt;tt&amp;gt;sin6_len&amp;lt;/tt&amp;gt; existe (ce qui est testable par le fait que le symbole &amp;lt;tt&amp;gt;SIN6_LEN&amp;lt;/tt&amp;gt; est défini), il doit être initialisé par la taille de la structure &amp;lt;tt&amp;gt;sockaddr_in6&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
On notera la présence de deux nouveaux champs (ils n'ont pas d'équivalents dans la structure &amp;lt;tt&amp;gt;sockaddr_in&amp;lt;/tt&amp;gt;) dans la structure de données &amp;lt;tt&amp;gt;sockaddr_in6&amp;lt;§tt&amp;gt;, les champs &amp;lt;tt&amp;gt;sin6_flowinfo&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;sin6_scope_id&amp;lt;/tt&amp;gt;. Le premier, en réalité structuré, est décrit dans le RFC 2460 et [[Identificateur de flux]]. Le second désigne un ensemble d'interfaces en adéquation avec la portée de l'adresse contenue dans le champ &amp;lt;tt&amp;gt;sin6_addr&amp;lt;/tt&amp;gt;. Par exemple, si l'adresse en question est de type [Lien local|lien local]], le champ &amp;lt;tt&amp;gt;sin6_scope_id&amp;lt;/tt&amp;gt; devrait être un index d'interface.&lt;/div&gt;</summary>
		<author><name>Laurent Toutain</name></author>	</entry>

	</feed>