1. 10 Dec, 2018 1 commit
    • Ondřej Zajíček's avatar
      OSPF: Fix reconfiguration of vlinks · 8c0b12ac
      Ondřej Zajíček authored
      Fix crash during reconfiguration of OSPF config with vlinks. When vlink
      is reconfigured, a generic iface-reconfiguration code is used, which in
      one place supposes that it is running on a regular iface.
      
      Thanks to Cybertinus for a bugreport.
      8c0b12ac
  2. 04 Dec, 2018 1 commit
  3. 21 Nov, 2018 1 commit
  4. 20 Nov, 2018 1 commit
  5. 08 Nov, 2018 1 commit
    • Ondřej Zajíček's avatar
      Nest: Improve keeping track of IPv6 link-local addresses · 81489b79
      Ondřej Zajíček authored
      Most protocols in IPv6 mode use link-local source addresses and expect
      that there is one on each active interface. The old code depended on
      assumption that if there is some IPv6 address on iface, there is also an
      IPv6 link-local address on that iface (added by kernel when the iface
      went up). Unfortunately, that is not generally true, as a configured
      global address sometimes ceases to be tentative (finishes DOD) before
      a link-local address on the same iface. In such case a protocol iface
      (namely RAdv and Babel) is activated, but fails to found link-local
      address and stays in failed state.
      
      The patch fixes that by tracking 'primary' IPv6 link-local address,
      sending iface restart notifications when it changes and making
      protocols ignore iface-up notifications when no such address is
      selected for an iface.
      81489b79
  6. 05 Nov, 2018 1 commit
  7. 25 Oct, 2018 1 commit
    • Ondřej Zajíček's avatar
      OSPF: Fix some trace messages · fff79b1c
      Ondřej Zajíček authored
      Missing argument in MTU change trace message can crash bird when MTU
      change happens and trace messages are active.
      
      Thanks to Alexander Velkov for the bugreport.
      fff79b1c
  8. 18 Sep, 2018 1 commit
    • Ondřej Zajíček's avatar
      The MRT protocol · c0fc3e67
      Ondřej Zajíček authored
      The new MRT protocol is responsible for periodic RIB table dumps in the
      MRT format (RFC 6396). Also the existing code for BGP4MP MRT dumps is
      refactored and splitted between BGP to MRT protocols, will be more
      integrated into MRT in the future.
      
      Example:
      
      protocol mrt {
      	table "*";
      	filename "%N_%F_%T.mrt";
      	period 60;
      }
      
      It is partially based on the old MRT code from Pavel Tvrdik.
      c0fc3e67
  9. 11 Sep, 2018 1 commit
  10. 01 Aug, 2018 2 commits
  11. 28 Jul, 2018 2 commits
  12. 17 Jul, 2018 3 commits
  13. 06 Jul, 2018 1 commit
    • Ondřej Zajíček's avatar
      Nest: Fix race condition during reconfiguration, part 2 · 470efcb9
      Ondřej Zajíček authored
      If export filter is changed during reconfiguration and a route disappears
      between reconfiguration and refeed (e.g., if the route is a static route
      also removed during the reconfiguration), the route is not withdrawn.
      
      The issue was fixed for regular channels by an earlier patch. This patch
      fixes the issue for channels in RA_ACCEPTED mode (first-pass-the-filter),
      used by BGP with 'secondary' option.
      470efcb9
  14. 03 Jul, 2018 1 commit
    • Ondřej Zajíček's avatar
      Nest: Fix race condition during reconfiguration · cbfdf6ed
      Ondřej Zajíček authored
      If export filter is changed during reconfiguration and a route disappears
      between reconfiguration and refeed (e.g., if the route is a static route
      also removed during the reconfiguration), the route is not withdrawn.
      The patch fixes that by adding tx reconfiguration timestamp.
      cbfdf6ed
  15. 24 Apr, 2018 3 commits
  16. 23 Apr, 2018 1 commit
  17. 24 Mar, 2018 2 commits
  18. 23 Mar, 2018 1 commit
  19. 22 Mar, 2018 1 commit
  20. 21 Mar, 2018 2 commits
  21. 19 Mar, 2018 1 commit
  22. 14 Mar, 2018 1 commit
    • Jan Maria Matejka's avatar
      Filter: make bgpmask literals real constructors · e8bc64e3
      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.
      e8bc64e3
  23. 13 Mar, 2018 3 commits
    • Jan Maria Matejka's avatar
      Filters: Removed FI_COMMA, not used for 19 years. · 74bfd2f9
      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
      74bfd2f9
    • Jan Maria Matejka's avatar
      Filter: recursion to loop · 7c601e6b
      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.
      7c601e6b
    • Maria Jan Matejka's avatar
      Filter: Instruction codes named as enum · 5a14df39
      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.
      5a14df39
  24. 07 Mar, 2018 1 commit
  25. 23 Jan, 2018 1 commit
    • Ondřej Zajíček's avatar
      IO: Fix socket priority · d6cf9961
      Ondřej Zajíček authored
      On Linux, setting the ToS will also set the priority and the range of
      accepted values is quite limited (masked by 0x1e). Therefore, 0xc0 is
      translated to a priority of 0, not something we want, overriding the
      "7" priority which was set previously explicitely. To avoid that, just
      move setting priority later in the code.
      
      Thanks to Vincent Bernat for the patch.
      d6cf9961
  26. 16 Jan, 2018 2 commits
  27. 03 Jan, 2018 1 commit
  28. 02 Jan, 2018 1 commit
    • Ondřej Zajíček's avatar
      Remove libhistory check · cce6ba4d
      Ondřej Zajíček authored
      According to GNU Readline developers, if we link with libreadline then
      there is no need to link with libhistory at all.
      cce6ba4d
  29. 14 Dec, 2017 1 commit