summaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2009-04-17Rewrite of buggy AS path matching.Ondrej Zajicek
Old AS path maching supposes thath AS number appears only once in AS path, but that is not true. It also contains some bugs related to AS path sets. New code does not use any assumptions about semantic structure of AS path. It is asymptotically slower than the old code, but on real paths it is not significant. It also allows '?' for matching one arbitrary AS number.
2009-04-08Fixes broken cryptographic authentication in OSPFOndrej Zajicek
Cryptographic authentication in OSPF is defective by design - there might be several packets independently sent to the network (for example HELLO, LSUPD and LSACK) where they might be reordered and that causes crypt. sequence number error. That can be workarounded by not incresing sequence number too often. Now we update it only when last packet was sent before at least one second. This can constitute a risk of replay attacks, but RFC supposes something similar (like time in seconds used as CSN).
2009-04-06Fixes bug in OSPF packet retransmission.Ondrej Zajicek
If a DBDES packet from a master to a slave is lost, then the old code does not retransmit it and instead send a next one with the same sequence number. That leads to silent desynchronization of LSA databases.
2009-04-06Better OSPF packet tracing log messages.Ondrej Zajicek
Replaces old OSPF packet tracing messages with uniform messages with packet dumps.
2009-03-31Documentation updateOndrej Zajicek
2009-03-31Cleanup changesOndrej Zajicek
2009-03-31Reimplementation of prefix sets.Ondrej Zajicek
Prefix sets were broken beyond any repair and have to be reimplemented. They are reimplemented using a trie with bitmasks in nodes. There is also change in the interpretation of minus prefix pattern, but the old interpretation was already inconsistent with the documentation and broken. There is also some bugfixes in filter code related to set variables.
2009-03-25Minor text updates.Ondrej Zajicek
2009-03-25Fixes bug in pipe route filtering.Ondrej Zajicek
Routes comming through pipe from primary to secondary table were filtered by both EXPORT and IMPORT filters, but they should be only filtered by EXPORT filters.
2009-03-25Fixes minor bug in pipe.Ondrej Zajicek
Missing macro leads to not calling some of protocol's callbacks.
2009-03-20Fix bugs related to kernel table synchronization.Ondrej Zajicek
KRF_INSTALLED flag was not cleared during reconfiguration that lead to not removing routes during reconfigure when export rules changed. We also should not try to remove routes we didi not installed, on Linux this leads to warnings (as kernel checks route source field and do not allow to remove non-bird routes) but we should not rely on it.
2009-03-18Better handling of AS4 optional attribute errorsOndrej Zajicek
AS4 optional attribute errors were handled by session drop (according to BGP RFC). This patch implements error handling according to new BGP AS4 draft (*) - ignoring invalid AS4 optional attributes. (*) http://www.ietf.org/internet-drafts/draft-chen-rfc4893bis-02.txt
2009-03-14Documentation fixes.Ondrej Zajicek
2009-03-14Path related documentation updateOndrej Zajicek
2009-03-14New syntax for bgp_pathOndrej Zajicek
2009-03-13Update NEWSOndrej Zajicek
2009-03-13Update capability handshake optionsOndrej Zajicek
Add 'capabilities' option, change default behavior to advertise ipv4, add some checks and ignore incoming capabilities when capabilities are disabled.
2009-03-05Added Cisco and Quagga capability workaround option.Ondrej Zajicek
2009-02-27Better handling of too long attributesOndrej Zajicek
This patch extends the length for attributes from 1024 to 2048 (because both AS_PATH and AS4_PATH attributes take 2+4 B per AS). If there is not enough space for attributes, Bird skips that route group. Old behavior (skipping remaining attributes) leads to skipping required attributes and session drop.
2009-02-26Rate limit for most abundant log messagesOndrej Zajicek
2009-02-25Fixes another bug in packet retransmissions.Ondrej Zajicek
When slave was in full state, it didn't retransmit lost packets. That leads to OSPF connection locked in states loading-full.
2009-02-21Fixes crash during some expressionsOndrej Zajicek
Bird crashed when 'bgp_path.len' was used for routes that does not came from BGP.
2009-02-21Add format for BGP_AGGREGATOR attributeOndrej Zajicek
2009-02-21Fix bug in empty bgp mask handlingOndrej Zajicek
2009-02-12Documentation updateOndrej Zajicek
2009-02-12Fixes bug in packet retransmissions.Ondrej Zajicek
When packet was lost during dbdes exchange, slave did not retransmit it. That leads to OSPF connection locked in states exchange-exstart.
2009-02-12Fixes bug in protocol state machineOndrej Zajicek
Scheduling flush must be done before resource pool freeing as it frees some allocated list nodes from a global list.
2009-02-12Do not use ? for client-side help when in new BGP path syntaxOndrej Zajicek
2009-01-27New syntax for bgp_pathOndrej Zajicek
2009-01-16Fixes compilation on older systems.Ondrej Zajicek
Older kernel headers (the ones in Debian Sarge) does not have __kernel_sockaddr_storage .
2009-01-16Fixes some past config grammar update that caused password related regression.Ondrej Zajicek
2009-01-16One null-pointer dereference bugfix hidden in whitespace changesOndrej Zajicek
2009-01-13Fix typo.Ondrej Zajicek
2009-01-13Fix OSPF protocol error recovery behavior.Ondrej Zajicek
When OSPF neighbor state drops down to EXSTART, clear LSA request and retransmit lists, as specified by RFC. I hope that this will prevent oscillations between EXSTART and LOADING states, which sometimes happened. It also contains related fix from Yury Shevchuk that properly resets DB summary list iterator.
2009-01-12Add check detecting packet overwrite in TX buffer.Ondrej Zajicek
2009-01-12Slist updateOndrej Zajicek
2009-01-11Some fixes and update of OSPF debug messagesOndrej Zajicek
2009-01-11Move check for NULL before usage of variable.Ondrej Zajicek
2009-01-11Fixes bug in OSPFOndrej Zajicek
Checksum was not recalculated when LSA was changed and packets with bad checksum were sent.
2008-12-25Bugfix in interpretOndrej Zajicek
Missing cases in filter code interpret leads to crash when bgp_next_hop attr was queried.
2008-12-25fixes some 64-bit related bugs.Ondrej Zajicek
Filter code used 'aux' integer field of 'symbol' struct to store ptr to next symbol and both 'aux2' and 'def' fields for value. Changed to just 'def' for value and 'aux2' for ptr to next symbol. Also another minor bugfix.
2008-12-24Adds support for fallback to capabilityless BGP connectOndrej Zajicek
When capability related error is received, next connect will be without capabilities. Also cease error subcodes descriptions (according to [RFC4486]) are added.
2008-12-24Fixes bug related to reconfiguration of BGP.Ondrej Zajicek
BGP keeps its copy of configuration ptr and didn't update it during reconfiguration. But old configuration is freed during reconfiguration. That leads to unnecessary reset of BGP connection during reconfiguration (old conf is corrupted and therefore different) and possibly other strange behavior.
2008-12-19Major changes to BGPOndrej Zajicek
Fixes two race conditions causing crash of Bird, several unhandled cases during BGP initialization, and some other bugs. Also changes handling of startup delay to be more useful and implement reporting of last error in 'show protocols' command.
2008-12-18Fixes nasty bug in event processing.Ondrej Zajicek
WALK_LIST_DELSAFE (in ev_run_list) is not safe with regard to deletion of next node. When some events are rescheduled during event execution, it may lead to deletion of next node and some events are skipped. Such skipped nodes remain in temporary list on stack and the last of them contains 'next' pointer to stack area. When this event is later scheduled, it damages stack area trying to remove it from the list, which leads to random crashes with funny backtraces :-) .
2008-12-12rx_hook may be cleaned in some callback so we check it beforeOndrej Zajicek
executing sk_read().
2008-12-08Fixes core state machine.Ondrej Zajicek
The core state machine was broken - it didn't free resources in START -> DOWN transition and might freed resources after UP -> STOP transition before protocol turned down. It leads to deadlock on olock acquisition when lock was not freed during previous stop. The current behavior is that resources, allocated during DOWN -> * transition, are freed in * -> DOWN transition, and flushing (scheduled in UP -> *) just counteract feeding (scheduled in * -> UP). Protocol fell down when both flushing is done (if needed) and protocol reports DOWN. BTW, is thera a reason why neighbour cache item acquired by protocol is not tracked by resource mechanism?
2008-11-22Fixes race condition leading to memory corruption and crash.Ondrej Zajicek
When protocol started, feeding was scheduled. If protocol got down before feeding was executed, then function responsible for connecting protocol to kernel routing tables was called after the function responsible for disconnecting, then resource pool of protocol was freed, but freed linked list structures remains in the list.
2008-11-21Fixes segfault with multiple routing tables.Ondrej Zajicek
2008-11-21I am not sure whether this is proper fix for a problem that birdcOndrej Zajicek
shows only parts of larger outputs (for example 'show route all'). It seems that birdc reads (from bird) and writes (to stdout) everything but during execution of some readline code some already written output disappeared (although it is fflush()ed and tcdrain()ed). As birdc reads from stdin when select said there are some data, O_NONBLOCK for stdin is unnecessary and when it is removed, i didn't notified this problem.