- 30 May, 2018 1 commit
-
-
Jan Maria Matejka authored
This is a fundamental change of an original (1999) concept of route processing inside BIRD. During import/export, there was a temporary ea_list created which was to be used instead of the another one inside the route itself. This led to some confusion, quirks, and strange filter code that handled extended route attributes. Dropping it now. The protocol interface has changed in an uniform way -- the `struct ea_list *attrs` argument has been removed from store_tmp_attrs(), import_control(), rt_notify() and get_route_info().
-
- 29 May, 2018 7 commits
-
-
Jan Maria Matejka authored
This supersedes the EAP_* constants.
-
Jan Maria Matejka authored
-
Jan Maria Matejka authored
-
Jan Maria Matejka authored
Just to make the code a bit more clean and easier to maintain.
-
Jan Maria Matejka authored
-
Jan Maria Matejka authored
-
Jan Maria Matejka authored
Included are Makefile implicit rules to show the preprocessed source. When debugging something around this, it may be handy.
-
- 24 May, 2018 1 commit
-
-
Ondřej Zajíček authored
During route export, the receiving protocol often initialized route metrics to default value in its import_control hook before export filter was executed. This is inconsistent with the expectation that an export filter would process the same route as one in the routing table and it breaks setting these metrics before (e.g. for static routes directly in static protocol). The patch removes the initialization of route metrics in import_control hook, the default values are already handled in rt_notify hook called after export filters. The patch also changed the behavior of OSPF to keep metrics when a route is reannounced between OSPF instances (to be consistent with other protocols) and the behavior when both ospf_metric1 and ospf_metric2 are specified (to have more expected behavior).
-
- 16 May, 2018 1 commit
-
-
Ondřej Zajíček authored
The patch allows to use 'net.src' to access SADR source prefix from filters. Thanks to Toke Hoiland-Jorgensen for the original patch for srclen.
-
- 03 May, 2018 4 commits
-
-
Ondřej Zajíček authored
Use full time precision to initialize random generator. The old code was prone to initialize it to the same values in specific circumstances (boot without RTC, multiple VMs starting at once).
-
Ondřej Zajíček authored
When a Babel node restarts, it loses its sequence number, which can cause its routes to be rejected by peers until the state is cleared out by other nodes in the network (which can take on the order of minutes). There are two ways to fix this: Having stable storage to keep the sequence number across restarts, or picking a different router ID each time. This implements the latter, by introducing a new option that will cause BIRD to randomize a high 32 bits of router ID every time it starts up. This avoids the problem at the cost of not having stable router IDs in the network. Thanks to Toke Hoiland-Jorgensen for the patch.
-
Ondřej Zajíček authored
The router ID being assigned to routes was a uint, which discards the upper 32 bits. This also has the nice side effect of echoing the wrong router ID back to other routers. Thanks to Toke Hoiland-Jorgensen for the patch.
-
Jan Maria Matejka authored
Thanks to Toke Høiland-Jørgensen <toke@toke.dk> for reporting this bug.
-
- 27 Apr, 2018 1 commit
-
-
Jan Maria Matejka authored
These instructions caused SIGABORTs on reconfiguration.
-
- 25 Apr, 2018 1 commit
-
-
Ondřej Zajíček authored
Implement RFC 7166, crypthographic authentication for OSPFv3 analogous to authentication used for OSPFv2.
-
- 12 Apr, 2018 1 commit
-
-
Ondřej Zajíček authored
For IPv4 with extended next hop, we use MP-BGP format and therefore no independent NEXT_HOP attribute. Thanks to Arvin Gan for the bugreport.
-
- 03 Apr, 2018 2 commits
-
-
Ondřej Zajíček authored
-
Ondřej Zajíček authored
Thanks to Arvin Gan for the bugreport.
-
- 24 Mar, 2018 1 commit
-
-
Ondřej Zajíček authored
-
- 23 Mar, 2018 1 commit
-
-
Ondřej Filip authored
-
- 22 Mar, 2018 2 commits
-
-
Ondřej Filip authored
-
-
- 21 Mar, 2018 2 commits
-
-
Ondřej Zajíček authored
-
Ondřej Zajíček authored
-
- 20 Mar, 2018 1 commit
-
-
Ondřej Zajíček authored
The old one does not work with 2.0.x.
-
- 19 Mar, 2018 1 commit
-
-
Ondřej Zajíček authored
-
- 18 Mar, 2018 2 commits
-
-
Ondřej Zajíček authored
Thanks to Toke Hoiland-Jorgensen for the bugreport.
-
Ondřej Zajíček authored
-
- 17 Mar, 2018 2 commits
-
-
Ondřej Zajíček authored
-
Ondřej Zajíček authored
Thanks to Joshua McQuistan for the bugreport.
-
- 14 Mar, 2018 2 commits
-
-
Jan Maria Matejka authored
-
Jan Maria Matejka authored
The bgpmask literals can include expressions. This is OK but they have to be interpreted as soon as the code is run, not in the time the code is used as value. This led to strange behavior like rewriting bgpmasks when they shan't be rewritten: function mask_generator(int as) { return [= * as * =]; } function another() bgpmask m1; bgpmask m2; { m1 = mask_generator(10); m2 = mask_generator(20); if (m1 == m2) { print("strange"); # this would happen } } Moreover, sending this to CLI would cause stack overflow and knock down the whole BIRD, as soon as there is at least one route to execute the given filter on. show route filter bgpmask mmm; bgppath ppp; { ppp = +empty+; mmm = [= (ppp ~ mmm) =]; print(mmm); accept; } The magic match operator (~) inside the bgpmask literal would try to resolve mmm, which points to the same bgpmask so it would resolve itself, call the magic match operator and vice versa. After this patch, the bgpmask literal will get resolved as soon as it's assigned to mmm and it also will return a type error as bool is not convertible to ASN in BIRD.
-
- 13 Mar, 2018 5 commits
-
-
Jan Maria Matejka authored
-
Jan Maria Matejka authored
This instruction was removed in the commit linked below and never used ever again. Rest in peace. commit 84c7e194 Author: Pavel Machek <pavel@ucw.cz> Date: Tue Mar 2 19:49:28 1999 +0000
-
Jan Maria Matejka authored
-
Jan Maria Matejka authored
It was supposed to do tail-recursion in interpret() but it didn't compile as such. Converting it to loop makes a significant filter performance improvement for flat filters.
-
Maria Jan Matejka authored
The two-letter instructions were quite messy but they could be easily read from memory dumps. Now GDB (since 2012) supports pretty printing enum values and GCC checks the switch construction for missing enum values so we are converting the nice two-byte values to enums. Anyway, the enum still keeps the old two-byte values to be able to read the instruction codes even without GDB from plain memory dump.
-
- 08 Mar, 2018 2 commits
-
-
Jan Maria Matejka authored
Uncommented an old test.
-
Jan Maria Matejka authored
-