Skip to content
Snippets Groups Projects
  1. Apr 21, 2023
  2. Apr 20, 2023
    • Maria Matejka's avatar
      Linpool: Fix lp_restore() · 33540924
      Maria Matejka authored and Ondřej Zajíček's avatar Ondřej Zajíček committed
      When lp_save() is called on an empty linpool, then some allocation is
      done, then lp_restore() is called, the linpool is restored but the used
      chunks are inaccessible. Fix it.
      33540924
    • Ondřej Zajíček's avatar
      BMP: Silence some log messages · 976dec04
      Ondřej Zajíček authored
      Hooks called from BGP to BMP should not log warning when BMP is not
      connected, that is not an error (and we do not want to flood logs with
      a ton of messages).
      
      Blocked sk_send() should not log warning, that is expected situation.
      Error during sk_send() is handled in error hook anyway.
      976dec04
    • Ondřej Zajíček's avatar
      BMP: Fix connection management · 2c7d2141
      Ondřej Zajíček authored
      Replace broken TCP connection management with a simple state machine.
      Handle failed attempts properly with a timeout, detect and handle TCP
      connection close and try to reconnect after that. Remove useless
      'station_connected' flag.
      
      Keep open messages saved even after the BMP session establishment,
      so they can be used after BMP session flaps.
      
      Use proper log messages for session events.
      2c7d2141
  3. Apr 18, 2023
  4. Apr 16, 2023
  5. Apr 14, 2023
  6. Apr 13, 2023
  7. Apr 04, 2023
    • Ondřej Zajíček's avatar
      BGP: Fix bgp_med handling · f881b98d
      Ondřej Zajíček authored
      Missing translation from BGP attribute ID to eattr ID in bgp_unset_attr()
      broke automatic removal of bgp_med during export to EBGP peers.
      
      Thanks to Edward Sun for the bugreport.
      f881b98d
  8. Mar 18, 2023
  9. Mar 16, 2023
    • Maria Matejka's avatar
      BGP: Free bind applies also to outbound connections · 2b712554
      Maria Matejka authored
      Even though the free bind option is primarily meant to alleviate problems
      with addresses assigned too late, it's also possible to use BIRD with AnyIP
      configuration, assigning whole ranges to the machine. Therefore free bind
      allows also to create an outbound connection from specific address even though
      such address is not assigned.
      2b712554
  10. Mar 06, 2023
  11. Feb 22, 2023
    • Maria Matejka's avatar
    • Maria Matejka's avatar
      Linpool flush drops all the allocated pages but one · 6c058ae4
      Maria Matejka authored
      When a linpool is used to allocate a one-off big load of memory, it
      makes no sense to keep that amount of memory for future use inside the
      linpool. Contrary to previous implementations where the memory was
      directly free()d, we now use the page allocator which has an internal
      cache which keeps the released pages for us and subsequent allocations
      simply get these released pages back.
      
      And even if the page cleanup routine kicks in inbetween, the pages get
      only madvise()d, not munmap()ed so performance aspects are negligible.
      
      This may fix some memory usage peaks in extreme cases.
      6c058ae4
  12. Feb 19, 2023
  13. Feb 14, 2023
    • Toke Høiland-Jørgensen's avatar
      Babel: Keep separate auth PC counters for unicast and multicast · ee919658
      Toke Høiland-Jørgensen authored and Ondřej Zajíček's avatar Ondřej Zajíček committed
      The babel protocol normally sends all its messages as multicast packets,
      but the protocol specification allows most messages to be sent as either
      unicast or multicast, and the two can be mixed freely. In particular, the
      babeld implementation can be configured to unicast updates to all peers
      instead of sending them as unicast.
      
      Daniel discovered that this can cause problems with the packet counter
      checks in the MAC extension due to packet reordering. This happens on WiFi
      networks where clients have power save enabled (which is quite common in
      infrastructure networks): in this case, the access point will buffer all
      multicast traffic and only send it out along with its beacons, leading to a
      maximum buffering in default Linux-based access point configuration of up
      to 200 ms.
      
      This means that a Babel sender that mixes unicast and multicast messages
      can have the unicast messages overtake the multicast messages because of
      this buffering; when authentication is enabled, this causes the receiver to
      discard the multicast message when it does arrive because it now has a
      packet counter value less than the unicast message that arrived before it.
      Daniel observed that this happens frequently enough that Babel ceases to
      work entirely when runner over a WiFi network.
      
      The issue has been described in draft-ietf-babel-mac-relaxed, which is
      currently pending RFC publication. That also describes two mitigation
      mechanisms: Keeping separate PC counters for unicast and multicast, and
      using a reorder window for PC values. This patch implements the former as
      that is the simplest, and resolves the particular issue seen on WiFi.
      
      Thanks to Daniel Gröber for the bugreport.
      
      Minor changes from committer.
      ee919658
    • andi's avatar
      Babel: Implement IPv4 via IPv6 extension (RFC 9229) · eecc3f02
      andi authored and Ondřej Zajíček's avatar Ondřej Zajíček committed
      The patch implements an IPv4 via IPv6 extension (RFC 9229) to the Babel
      routing protocol (RFC 8966) that allows annoncing routes to an IPv4
      prefix with an IPv6 next hop, which makes it possible for IPv4 traffic
      to flow through interfaces that have not been assigned an IPv4 address.
      
      The implementation is compatible with the current Babeld version.
      
      Thanks to Toke Høiland-Jørgensen for early review on this work.
      
      Minor changes from committer.
      eecc3f02
  14. Feb 03, 2023
  15. Feb 01, 2023
  16. Jan 31, 2023
    • Toke Høiland-Jørgensen's avatar
      Babel: Initialise source seqno from incoming message · dc4c5f51
      Toke Høiland-Jørgensen authored and Ondřej Zajíček's avatar Ondřej Zajíček committed
      When creating a new babel_source object we initialise the seqno to 0. The
      caller will update the source object with the right metric and seqno value,
      for both newly created and old source objects. However if we initialise the
      source object seqno to 0 that may actually turn out to be a valid (higher)
      seqno than the one in the routing table, because of seqno wrapping. In this
      case the source metric will not be set properly, which breaks feasibility
      tracking for subsequent updates.
      
      To fix this, add a new initial_seqno argument to babel_get_source() which
      is used when allocating a new object, and set that to the seqno value of
      the update we're sending.
      
      Thanks to Juliusz Chroboczek for the bugreport.
      dc4c5f51
  17. Jan 30, 2023
  18. Jan 23, 2023