Ondrej Zajicek [Sat, 22 May 2010 20:47:24 +0000 (22:47 +0200)]
Extends pair set syntax, matching and deleting against clist.
Expressions like (123,*) can be used in pair set literals, clists can be
matched against pair sets (community ~ pairset) and pair sets can be
used to specify items to delete from clists (community.delete(pairset)).
Ondrej Zajicek [Fri, 21 May 2010 09:51:39 +0000 (11:51 +0200)]
Fixes bug on Linux 2.4.x - kernel sync does not work until restart of kernel protocol.
Which was, actually, a bug in timers - on older kernel, monotonic timer
is missing and the other implementation started with now == 0, which
collides with usage 0 as a special value in timer->expires field.
Ondrej Zajicek [Sat, 24 Apr 2010 13:18:21 +0000 (15:18 +0200)]
Fixes and enhancements in 'show ospf state' command.
Now it shows a distance, option to change showing reachable/all network
nodes and better handling of AS-external LSAs in multiple areas. The
command 'show ospf topology' was changed to not show stubnets in both
OSPFv2 and OSPFv3 (previously it displayed stubnets in OSPFv2).
Ondrej Zajicek [Sun, 11 Apr 2010 08:19:54 +0000 (10:19 +0200)]
Fixes a bug in OSPF on NBMA interfaces.
A very tricky bug. OSPF on NBMA interfaces probably never really worked.
When a packet was sent to multiple destinations, the checksum was
calculated multiple times from a packet with already filled checksum
field (from previous calculation). Therefore, many packets were sent
with an invalid checksum.
Ondrej Zajicek [Sun, 4 Apr 2010 13:41:31 +0000 (15:41 +0200)]
Restrict export of device routes to the kernel protocol.
In usual configuration, such export is already restricted
with the aid of the direct protocol but there are some
races that can circumvent it. This makes it harder to
break kernel device routes. Also adds an option to
disable this restriction.
Ondrej Zajicek [Wed, 17 Mar 2010 11:19:22 +0000 (12:19 +0100)]
Adds check for no protocol and some minor CLI fixes.
- Adds check to deny config file with no specified protocol to prevent
loading of empty config file.
- Moves CLI init before config parse to receive immediate error message
when cannot open control socket.
- Fixes socket name path check and other error handling in CLI init.
Ondrej Zajicek [Sat, 27 Feb 2010 15:00:07 +0000 (16:00 +0100)]
Better flushing of interfaces.
When device protocol goes down, interfaces should be flushed
asynchronously (in the same way like routes from protocols are flushed),
when protocol goes to DOWN/HUNGRY.
This fixes the problem with static routes staying in kernel routing
table after BIRD shutdown.
Ondrej Zajicek [Fri, 26 Feb 2010 09:55:58 +0000 (10:55 +0100)]
Many changes in (mainly) kernel syncers.
- BSD kernel syncer is now self-conscious and can learn alien routes
- important bugfix in BSD kernel syncer (crash after protocol restart)
- many minor changes and bugfixes in kernel syncers and neighbor cache
- direct protocol does not generate host and link local routes
- min_scope check is removed, all routes have SCOPE_UNIVERSE by default
- also fixes some remaining compiler warnings
Ondrej Zajicek [Wed, 17 Feb 2010 20:53:07 +0000 (21:53 +0100)]
Replaces the algorithm for building balanced trees.
Changes the time complexity of the algorithm from O(n^2) to O(n*log(n)).
This speeds up loading of huge DEC-IX config from 128 s to 15 s. It also
makes the code significantly simpler.
Ondrej Zajicek [Sat, 13 Feb 2010 11:26:26 +0000 (12:26 +0100)]
Removes phantom protocol from the pipe design.
It seems that by adding one pipe-specific exception to route
announcement code and by adding one argument to rt_notify() callback i
could completely eliminate the need for the phantom protocol instance
and therefore make the code more straightforward. It will also fix some
minor bugs (like ignoring debug flag changes from the command line).
Ondrej Zajicek [Thu, 11 Feb 2010 21:27:06 +0000 (22:27 +0100)]
Fixes a tricky bug in the pipe protocol.
When uncofiguring the pipe and the peer table, the peer table was
unlocked when pipe protocol state changed to down/flushing and not to
down/hungry. This leads to the removal of the peer table before
the routes from the pipe were flushed.
The fix leads to adding some pipe-specific hacks to the nest,
but this seems inevitable.