Commit graph

3371 commits

Author SHA1 Message Date
Ondrej Zajicek
0dd7ccc766 Fix typo. 2009-01-13 19:25:27 +01:00
Ondrej Zajicek
0844b65d13 Fix OSPF protocol error recovery behavior.
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-13 19:15:49 +01:00
Ondrej Zajicek
f15cb99c79 Add check detecting packet overwrite in TX buffer. 2009-01-12 23:42:51 +01:00
Ondrej Zajicek
02a9eeeb85 Slist update 2009-01-12 14:40:21 +01:00
Ondrej Zajicek
23d6702952 Some fixes and update of OSPF debug messages 2009-01-11 12:14:27 +01:00
Ondrej Zajicek
0e9617e400 Move check for NULL before usage of variable. 2009-01-11 10:51:54 +01:00
Ondrej Zajicek
f20907adf6 Fixes bug in OSPF
Checksum was not recalculated when LSA was changed and
packets with bad checksum were sent.
2009-01-11 10:47:41 +01:00
Ondrej Zajicek
330aecead8 Bugfix in interpret
Missing cases in filter code interpret leads to crash
when  bgp_next_hop attr was queried.
2008-12-25 17:49:57 +01:00
Ondrej Zajicek
083c43e22e fixes some 64-bit related bugs.
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-25 11:55:27 +01:00
Ondrej Zajicek
165a622727 Adds support for fallback to capabilityless BGP connect
When capability related error is received, next connect will be
without capabilities. Also cease error subcodes descriptions
(according to [RFC4486]) are added.
2008-12-24 17:24:41 +01:00
Ondrej Zajicek
591211557f Fixes bug related to reconfiguration of BGP.
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-24 12:18:10 +01:00
Ondrej Zajicek
11b32d9117 Major changes to BGP
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-19 01:34:39 +01:00
Ondrej Zajicek
b933281ed5 Fixes nasty bug in event processing.
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-18 23:26:08 +01:00
Ondrej Zajicek
35164c5017 rx_hook may be cleaned in some callback so we check it before
executing sk_read().
2008-12-12 17:48:03 +01:00
Ondrej Zajicek
d6a836f8d6 Fixes core state machine.
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-12-08 12:24:55 +01:00
Ondrej Zajicek
fbde6c3908 Fixes race condition leading to memory corruption and crash.
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-22 01:12:22 +01:00
Ondrej Zajicek
35f983f889 Fixes segfault with multiple routing tables. 2008-11-21 18:17:03 +01:00
Ondrej Zajicek
661ec5db7f I am not sure whether this is proper fix for a problem that birdc
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.
2008-11-21 13:05:12 +01:00
Ondrej Zajicek
eac21b46f7 This is bug, isn't it? 2008-11-21 13:01:05 +01:00
Ondrej Zajicek
e00115904f birdc died during terminal resize because of unhandled EINTR
in select loop.
2008-11-21 12:59:03 +01:00
Ondrej Zajicek
44711e0ca2 Fix some bugs in filter interpret. 2008-11-16 22:16:04 +01:00
Ondrej Zajicek
ebacaf6f7b Fix bug in AS path matching 2008-11-16 11:35:30 +01:00
Ondrej Zajicek
258d0ad4ca Fixes feeding of new protocol, only preferred routes are announced. 2008-11-14 23:03:15 +01:00
Ondrej Zajicek
3f670371cf OSPF routes appeared with random value of ospf_tag attribute.
This patch fixes it.
2008-11-14 21:13:56 +01:00
Ondrej Zajicek
e29fa06ece New read-only route attribute 'proto' added. It returns a string
representing a name of the protocol that originated the route.
Strings can be compared using = or matched using ~. Routes can
be filtered, for example:

show route where proto ~ "bgp1*"
2008-11-14 14:50:37 +01:00
Ondrej Zajicek
aebe06b40c Proper format functions for ORIGINATOR_ID, CLUSTER_LIST 2008-11-08 23:33:22 +01:00
Ondrej Zajicek
b21f68b4cd Fix bugs in OSPF MD5 authentication. First bug is that default
values for MD5 password ID changed during reconfigure, Second
bug is that BIRD chooses password in first-fit manner, but RFC
says that it should use the one with the latest generate-from.

It also modifies the syntax for multiple passwords.
Now it is possible to just add more 'password' statements
to the interface section and it is not needed to use
'passwords' section. Old syntax can be used too.
2008-11-08 17:24:23 +01:00
Ondrej Zajicek
08cca48a14 Uprava configure 2008-11-06 19:13:55 +01:00
Ondrej Zajicek
fd91ae3325 Fix problem with local time changes. 2008-11-05 22:36:49 +01:00
Ondrej Zajicek
1389f3699f Fixes bugs in IPv6 code caused by recent commits. 2008-11-05 21:39:04 +01:00
Ondrej Zajicek
baa9ef18c6 These warnings are so abundant (because char * / byte * mix) that they
are completely useless.
2008-11-04 14:52:47 +01:00
Ondrej Zajicek
6c8102e3a8 Ignore messages related to wireless extensions. 2008-11-04 14:51:45 +01:00
Ondrej Zajicek
a39b165e45 Multihop BGP was completely broken, because listening socket has always
ttl 1.
2008-11-01 16:58:40 +01:00
Ondrej Zajicek
a92fe60717 Implementation of route server. 2008-11-01 12:55:43 +01:00
Ondrej Zajicek
e16466b379 Fix race condition that breaks BGP connections after reconfigure.
RFC says that only connections in OpenConfirm and Established state
should participate in connection collision detection.

The current implementation leads to race condition when both sides
are trying to connect at the almost same time, then both sides
receive OPEN message by different connections at the almost same
time and close the other connection. Both connections are
closed and the both sides end in  start/idle or start/active
state.
2008-10-29 14:16:34 +01:00
Ondrej Zajicek
f0ad56f441 Fixes some sloppiness of commit a3b70dc499. 2008-10-28 16:10:42 +01:00
Ondrej Zajicek
a98fbf0f12 Merge branch 'dev' into out 2008-10-27 00:20:22 +01:00
Ondrej Zajicek
a3b70dc499 Two new informative CLI commands for OSPF.
Two new CLI commands for OSPF giving nice informative (and still machine
parsable) representation of OSPF network graph (based on datas from the
LSA database).

The first command (show ospf topology) shows routers, networks and stub
networks, The second command (show ospf state) shows also external
routes and area-external networks and routers propagated by given area
boundary router.
2008-10-27 00:03:30 +01:00
Ondrej Zajicek
68fa95cfec Check of socket name length 2008-10-26 23:55:38 +01:00
Ondrej Zajicek
52586ccdf1 Missing newline. 2008-10-26 23:53:05 +01:00
Ondrej Zajicek
a97122a3ca Bugfix in LSA origination for PTP OSPF links.
The code generating LSAs for PTP OSPF links is buggy. The old behavior
is that it generates PTP link if there is a full/ptp neighbor and stub
link if there isn't. According to RFC 2328, the correct behavior is to
generate stub link in both cases (in the first case together with PTP
link).

And because of buggy detection of unnumbered networks, for numbered
networks the code creates stub links with 0.0.0.0/32.
2008-10-26 23:43:13 +01:00
Ondrej Zajicek
4c94a6c7e7 Do not repeat 'Invalid broadcast address' error message.
'Invalid broadcast address' error is reported only once for
an interface and not during every interface scan.
2008-10-26 23:23:09 +01:00
Ondrej Zajicek
d7f3b30649 Ignore unknown netlink events.
Bird sometimes reported 'bird: nl_parse_link: Malformed message received'.
The cause is that bird asynchronously received netlink packet from
wireless driver about some wireless event on its link layer. In that
case bird shouldn't complain.
2008-10-26 23:20:50 +01:00
Ondrej Zajicek
1567edea8d Bugfix for routing table breaking bug.
Here is a patch fixing a bug that causes breakage of a local routing
table during shutdown of Bird. The problem was caused by shutdown
of 'device' protocol before shutdown of 'kernel' protocol.  When
'device' protocol went down, the route (with local network prefix)
From different protocol (BGP or OSPF) became preferred and installed
to the kernel routing table. Such routes were broken (like
192.168.1.0/24 via 192.168.1.2). I think it is also the cause
of problem reported by Martin Kraus.

The patch disables updating of kernel routing table during shutdown of
Bird. I am not sure whether this is the best way to fix it, I would
prefer to forbid 'kernel' protocol to overwrite routes with
'proto kernel'.

The patch also fixes a problem that during shutdown sometimes routes
created by Bird remained in the kernel routing table.
2008-10-26 23:09:46 +01:00
Ondrej Zajicek
b6bf284a90 Bugfixes in MULIT_EXIT_DISC attribute handling.
- Old MED handling was completely different from behavior
   specified in RFCs - for example they havn't been propagated
   to neighboring areas.

 - Update tie-breaking according to RFC 4271.

 - Change default value for 'default bgp_med' configuration
   option according to RFC 4271.
2008-10-26 22:59:21 +01:00
Ondrej Zajicek
4819c3e17a Bugfix in LOCAL_PREF attribute handling. 2008-10-26 22:54:23 +01:00
Ondrej Zajicek
1adc17b4b5 Update of a documentation - new options for AS4, MD5 auth and route reflection. 2008-10-26 22:52:21 +01:00
Ondrej Zajicek
ba5ed6f3e4 Implementation of an option for disabling AS4 support per BGP instance. 2008-10-26 22:48:02 +01:00
Ondrej Zajicek
4847a894bf Implementation of route reflection for BGP 2008-10-26 22:45:09 +01:00
Ondrej Zajicek
d51aa28190 Implementation of MD5 authentication of BGP sessions. 2008-10-26 22:42:39 +01:00