Martin Mares [Mon, 31 May 2004 21:48:19 +0000 (21:48 +0000)]
Rewritten the I/O loop. All socket operations are now safe, meaning that
you can delete the socket from anywhere in the hooks and nothing should break.
Also, the receive/transmit buffers are now regular xmalloc()'ed buffers,
not separate resources which would need shuffling around between pools.
Martin Mares [Mon, 31 May 2004 18:16:42 +0000 (18:16 +0000)]
The code was broken for external /29 to /32 routes. Assuming that you
have one machine publishing a route to 10.1.1.3/32 and another one
publishing a route to 10.1.1.4/32. If the first machine went down the
route to 10.1.1.4/32 was wrongly killed by the old code, leading either
to missing routes or worse to bug()s like "Router parent does not have
next hop" or just segfaults. The patch fixes this but in the long term a
redesign is required here. Note that the patch doesn't worse the
situation, instead it prevents the problems stated. The redesign is
required to handle multiple routes to small subnets properly.
(by Andreas)
Feela, I think that this is at least a good temporary fix, but it's
of course up to you to decide.
Martin Mares [Mon, 31 May 2004 18:13:14 +0000 (18:13 +0000)]
The OSPF authentication type was sent in host byte order instead of of
network byte order thus breaking interoperability with other routing
daemons on litte endian machines. The patch fixes this but note that
this breaks compatability with older bird installations using OSPF and
password authentication
Martin Mares [Mon, 31 May 2004 18:11:16 +0000 (18:11 +0000)]
The initial sequence number for RIP md5 authentication was always zero.
Bad as when bird e.g. was running for two weeks and then restarted it
would take another two weeks until the peers of this router would accept
data again from this router, as the sequence number would be too low.
Changed to use the the current system time as the starting sequence
number which is a more sane start value.
Martin Mares [Mon, 31 May 2004 17:55:30 +0000 (17:55 +0000)]
Fix handling on full pipe to client in bird. Prevent packet overflows
for even only medium sized route table output. Fix a strange garbled
output problem in the client. The latter seems to be caused by some
library doing tcflush while there is still command output pending. So
the best fix here is to do fflush and then tcdrain. Note that this
problem occurs only under certain load situations and is not too easy to
reproduce.
Martin Mares [Mon, 31 May 2004 17:53:02 +0000 (17:53 +0000)]
Bird's control socket should be in /var/run and the convention for
--localstatedir is /var. The control socket pathname creation is thus
corrected here.
Martin Mares [Sun, 6 Apr 2003 19:35:50 +0000 (19:35 +0000)]
Updated the documentation building tools to work with a recent linuxdoc-tools package.
Note that this is (and always was) a terrible hack and we really should
replace it with something reasonable which wouldn't need changing every
time linuxdoc-tools evolve.
I also needed to include a patched version of LinuxDocTools.pm, because the
original one explicitly refused to work with a non-linuxdoc DTD. The authors
of linuxdoc recommend to use sgmltools-lite in such cases, but it would mean
rewritting our formatting rules to the DSSSL language which I don't dare to
speak about here :)
Martin Mares [Sat, 22 Feb 2003 22:47:45 +0000 (22:47 +0000)]
Better selection of link-local NLRI addresses, at least for our own
address. Need to do it better for the other neighbors -- the current
solution works only if they use the standard 64+64 global addresses
and the interface identifier in lower 64 bits is the same as for the
link-scope addresses.
Martin Mares [Sat, 22 Feb 2003 22:39:06 +0000 (22:39 +0000)]
There can be multiple primary addresses with different scopes
and only the highest scope one has IA_PRIMARY set, so report
the remaining ones as "Unselected".