[Babel-users] Convergence problem
Robert Lukan
Robert.Lukan at ltfe.org
Fri Jul 4 09:14:30 UTC 2008
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.
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.
I did not change any of parameters.
ANd again thank you very much for support. I hope you dont have to much work because of my experiments :)
Robert
-----Original Message-----
From: Juliusz Chroboczek [mailto:Juliusz.Chroboczek at pps.jussieu.fr]
Sent: Thu 7/3/2008 5:23 PM
To: Robert Lukan; babel-users at lists.alioth.debian.org
Subject: Re: [Babel-users] Convergence problem
> The issue is that your implementation of ppp switches link-local
> addresses on every up/down event. IPv6 link-local addresses are
> supposed to remain stable, so this is why Babel gets confused by this
> case. I'll implement a workaround, but you really should try to
> ensure that your link-local addresses remain stable if possible.
Please try the attached patch, and let me know if it fixes your issue.
Juliusz
Thu Jul 3 17:21:04 CEST 2008 Juliusz Chroboczek <jch at pps.jussieu.fr>
* Protect against duplicate neighbours.
diff -rN -u old-babel/neighbour.c new-babel/neighbour.c
--- old-babel/neighbour.c 2008-07-03 17:21:33.000000000 +0200
+++ new-babel/neighbour.c 2008-07-03 17:21:33.000000000 +0200
@@ -48,6 +48,17 @@
return NULL;
}
+struct neighbour *
+find_neighbour_by_id(const unsigned char *id, struct network *net)
+{
+ struct neighbour *neigh;
+ FOR_ALL_NEIGHBOURS(neigh) {
+ if(memcmp(id, neigh->id, 16) == 0 && neigh->network == net)
+ return neigh;
+ }
+ return NULL;
+}
+
void
flush_neighbour(struct neighbour *neigh)
{
@@ -84,6 +95,22 @@
neigh = NULL;
}
}
+
+ neigh = find_neighbour_by_id(id, net);
+ if(neigh) {
+ if((neigh->reach & 0xE000) == 0) {
+ /* The other neighbour is probably obsolete. */
+ flush_neighbour(neigh);
+ neigh = NULL;
+ } else {
+ fprintf(stderr, "Duplicate neighbour %s (%s and %s)!\n",
+ format_address(id),
+ format_address(neigh->address),
+ format_address(address));
+ return NULL;
+ }
+ }
+
debugf("Creating neighbour %s (%s).\n",
format_address(id), format_address(address));
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.alioth.debian.org/pipermail/babel-users/attachments/20080704/0c0ddb34/attachment-0001.htm
-------------- next part --------------
A non-text attachment was scrubbed...
Name: babel.alix.log.gz
Type: application/x-gzip
Size: 13151 bytes
Desc: babel.alix.log.gz
Url : http://lists.alioth.debian.org/pipermail/babel-users/attachments/20080704/0c0ddb34/attachment-0002.bin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: babel.suse.log.gz
Type: application/x-gzip
Size: 13065 bytes
Desc: babel.suse.log.gz
Url : http://lists.alioth.debian.org/pipermail/babel-users/attachments/20080704/0c0ddb34/attachment-0003.bin
More information about the Babel-users
mailing list