<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<META NAME="Generator" CONTENT="MS Exchange Server version 6.5.7652.24">
<TITLE>RE: [Babel-users] Convergence problem</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/plain format -->

<P><FONT SIZE=2>I used ipv6cp-use-persistent in /etc/ppp/options files, and problem of changing link local address was solved. I can also try without ipv6cp-use-persistent, to test patch, if you there is a necessity.<BR>
<BR>
But problem with convergence is still present, not always but sometimes. I enclosed again debug files, I tried few times disconnecting link, after few successful converging of link, you can see there is still a problem. The only solution was to disconnect link from other side or to restart babel process.&nbsp;&nbsp;<BR>
<BR>
I did not change any of parameters.<BR>
<BR>
ANd again thank you very much for support. I hope you dont have to much work because of my experiments :)<BR>
<BR>
Robert<BR>
<BR>
<BR>
<BR>
-----Original Message-----<BR>
From: Juliusz Chroboczek [<A HREF="mailto:Juliusz.Chroboczek@pps.jussieu.fr">mailto:Juliusz.Chroboczek@pps.jussieu.fr</A>]<BR>
Sent: Thu 7/3/2008 5:23 PM<BR>
To: Robert Lukan; babel-users@lists.alioth.debian.org<BR>
Subject: Re: [Babel-users] Convergence problem<BR>
<BR>
&gt; The issue is that your implementation of ppp switches link-local<BR>
&gt; addresses on every up/down event.&nbsp; IPv6 link-local addresses are<BR>
&gt; supposed to remain stable, so this is why Babel gets confused by this<BR>
&gt; case.&nbsp; I'll implement a workaround, but you really should try to<BR>
&gt; ensure that your link-local addresses remain stable if possible.<BR>
<BR>
Please try the attached patch, and let me know if it fixes your issue.<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Juliusz<BR>
<BR>
Thu Jul&nbsp; 3 17:21:04 CEST 2008&nbsp; Juliusz Chroboczek &lt;jch@pps.jussieu.fr&gt;<BR>
&nbsp; * Protect against duplicate neighbours.<BR>
diff -rN -u old-babel/neighbour.c new-babel/neighbour.c<BR>
--- old-babel/neighbour.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2008-07-03 17:21:33.000000000 +0200<BR>
+++ new-babel/neighbour.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2008-07-03 17:21:33.000000000 +0200<BR>
@@ -48,6 +48,17 @@<BR>
&nbsp;&nbsp;&nbsp;&nbsp; return NULL;<BR>
&nbsp;}<BR>
<BR>
+struct neighbour *<BR>
+find_neighbour_by_id(const unsigned char *id, struct network *net)<BR>
+{<BR>
+&nbsp;&nbsp;&nbsp; struct neighbour *neigh;<BR>
+&nbsp;&nbsp;&nbsp; FOR_ALL_NEIGHBOURS(neigh) {<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(memcmp(id, neigh-&gt;id, 16) == 0 &amp;&amp; neigh-&gt;network == net)<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return neigh;<BR>
+&nbsp;&nbsp;&nbsp; }<BR>
+&nbsp;&nbsp;&nbsp; return NULL;<BR>
+}<BR>
+<BR>
&nbsp;void<BR>
&nbsp;flush_neighbour(struct neighbour *neigh)<BR>
&nbsp;{<BR>
@@ -84,6 +95,22 @@<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; neigh = NULL;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>
&nbsp;&nbsp;&nbsp;&nbsp; }<BR>
+<BR>
+&nbsp;&nbsp;&nbsp; neigh = find_neighbour_by_id(id, net);<BR>
+&nbsp;&nbsp;&nbsp; if(neigh) {<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if((neigh-&gt;reach &amp; 0xE000) == 0) {<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* The other neighbour is probably obsolete. */<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; flush_neighbour(neigh);<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; neigh = NULL;<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else {<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fprintf(stderr, &quot;Duplicate neighbour %s (%s and %s)!\n&quot;,<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; format_address(id),<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; format_address(neigh-&gt;address),<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; format_address(address));<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return NULL;<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>
+&nbsp;&nbsp;&nbsp; }<BR>
+<BR>
&nbsp;&nbsp;&nbsp;&nbsp; debugf(&quot;Creating neighbour %s (%s).\n&quot;,<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; format_address(id), format_address(address));<BR>
<BR>
<BR>
<BR>
</FONT>
</P>

</BODY>
</HTML>