1. 24 May, 2018 1 commit
    • Do not initialize route metrics in import_control hook · feae132e
      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).
  2. 16 May, 2018 1 commit
  3. 03 May, 2018 4 commits
    • Better initialization of random generator · eaf63d31
      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).
    • Babel: Add option to randomize router ID · 70fab178
      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.
    • Babel: Fix type of route entry router ID · 23b07904
      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.
    • Makefile: Only set git version if BIRD is build from its repository. · 29958745
      Jan Maria Matejka authored
      Thanks to Toke Høiland-Jørgensen <toke@toke.dk> for reporting this bug.
  4. 27 Apr, 2018 1 commit
  5. 25 Apr, 2018 1 commit
  6. 12 Apr, 2018 1 commit
  7. 03 Apr, 2018 2 commits
  8. 24 Mar, 2018 1 commit
  9. 23 Mar, 2018 1 commit
  10. 22 Mar, 2018 2 commits
  11. 21 Mar, 2018 2 commits
  12. 20 Mar, 2018 1 commit
  13. 19 Mar, 2018 1 commit
  14. 18 Mar, 2018 2 commits
  15. 17 Mar, 2018 2 commits
  16. 14 Mar, 2018 2 commits
    • Merge branch 'master' into int-new · 8a871e89
      Jan Maria Matejka authored
    • 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.
  17. 13 Mar, 2018 5 commits
  18. 08 Mar, 2018 2 commits
  19. 07 Mar, 2018 2 commits
  20. 27 Feb, 2018 1 commit
  21. 13 Feb, 2018 5 commits
    • Add cscope Makefile target · d5144ea9
      Ondřej Zajíček authored
      For those who prefer cscope to etags
      
      Thanks to Toke Hoiland-Jorgensen for the patch.
    • Babel: Fix accidental bitwise or assignment · 5ce7adfc
      Ondřej Zajíček authored
      Fix an accidental bitwise or assignment that was supposed to be a
      comparison.
      
      Thanks to Toke Hoiland-Jorgensen for the patch.
    • Babel: Add source-specific routing support · 185a0a51
      Ondřej Zajíček authored
      This patch adds support for source-specific routing to the Babel protocol.
      It changes the protocol to support both NET_IP6 and NET_IP6_SADR channels
      for IPv6 addresses. If only a NET_IP6 channel is configured,
      source-specific updates are ignored. Otherwise, non-source-specific
      routes are simply treated as source-specific routes with SADR prefix 0.
      
      Thanks to Toke Hoiland-Jorgensen for the original patch.
      Minor changes by Ondrej Santiago Zajicek.
    • Add support for source-specific IPv6 routes to BIRD core · be17805c
      Ondřej Zajíček authored
      This patch adds support for source-specific IPv6 routes to BIRD core.
      This is based on Dean Luga's original patch, with the review comments
      addressed. SADR support is added to network address parsing in confbase.Y
      and to the kernel protocol on Linux.
      
      Currently there is no way to mix source-specific and non-source-specific
      routes (i.e., SADR tables cannot be connected to non-SADR tables).
      
      Thanks to Toke Hoiland-Jorgensen for the original patch.
      Minor changes by Ondrej Santiago Zajicek.