1. 05 Apr, 1999 1 commit
    • Martin Mareš's avatar
      Routing table core changes to support full route filtering: · e2dc2f30
      Martin Mareš authored
      o  Introduced rte_cow() which should be used for copying on write the
         rte's in filters. Each rte now carries a flag saying whether it's
         a real route (possessing table linkage and other insignia) or a local
         copy. This function can be expected to be fast since its fast-path
         is inlined.
      o  Introduced rte_update_pool which is a linear memory pool used for
         all temporary data during rte_update. You should not reference it directly
         -- instead use a pool pointer passed to all related functions.
      o  Split rte_update to three functions:
      
      	rte_update	The front end: handles all checking, inbound
      			filtering and calls rte_recalculate() for the
      			final version of the route.
      	rte_recalculate	Update the table according to already filtered route.
      	rte_announce	Announce routing table changes to all protocols,
      			passing them through export filters and so on.
      
         The interface has _not_ changed -- still call rte_update() and it will
         do the rest for you automagically.
      o  Use new filtering semantics to be explained in a separate mail.
      e2dc2f30
  2. 03 Apr, 1999 1 commit
    • Martin Mareš's avatar
      More changes to the kernel syncer. · c10421d3
      Martin Mareš authored
      o  Now compatible with filtering.
      o  Learning of kernel routes supported only on CONFIG_SELF_CONSCIOUS
         systems (on the others it's impossible to get it semantically correct).
      o  Learning now stores all of its routes in a separate fib and selects
         the ones the kernel really uses for forwarding packets.
      o  Better treatment of CONFIG_AUTO_ROUTES ports.
      o  Lots of internal changes.
      c10421d3
  3. 17 Mar, 1999 1 commit
  4. 04 Mar, 1999 1 commit
  5. 01 Mar, 1999 1 commit
  6. 13 Feb, 1999 1 commit
  7. 20 Dec, 1998 1 commit
    • Martin Mareš's avatar
      Rewrote fib functions to make them insert/delete/asynchronous-walk safe. · 3ab001b9
      Martin Mareš authored
      This is implemented in a way similar to lib/slists.h, but it took some
      more effort to make rehashing not disturb the readers. We do it by just
      taking _highest_ k bits of ipa_hash as our hash value and sorting each
      box by whole ipa_hash().
      
      Consult FIB_ITERATE_* macros in nest/route.h.
      
      Implemented fib_check() debugging function and also rewrote the rehashing
      algorithm to use better thresholds and not to waste time by rehashing
      forth and back.
      3ab001b9
  8. 08 Dec, 1998 1 commit
  9. 07 Dec, 1998 3 commits
    • Martin Mareš's avatar
      Minor rte/rta interface changes: · 04925e90
      Martin Mareš authored
        o  rte can now contain a pointer to both cached and uncached rta. Protocols
           which don't need their own attribute caching can now just fill-in a rta,
           link it to rte without any calls to attribute cache and call rte_update()
           which will replace rte->attrs by a cached copy.
      
        o  In order to support this, one of previously pad bytes in struct rta
           now holds new attribute flags (RTAF_CACHED). If you call rte_update()
           with uncached rta, you _must_ clear these flags. In other cases rta_lookup()
           sets it appropriately.
      
        o  Added rte_free() which is useful when you construct a rte and then the
           circumstances change and you decide not to use it for an update. (Needed
           for temporary rte's in kernel syncer...)
      04925e90
    • Martin Mareš's avatar
      KRF_* flags moved to krt.h as they are internal to kernel syncer, · 12df4d90
      Martin Mareš authored
      fib->pad0,pad1 renamed to x0,x1 and in case of struct net x0 is reserved
      for kernel syncing as well.
      12df4d90
    • Martin Mareš's avatar
      Removed protocol-specific data in rte for protocol static since no · 78d06cf2
      Martin Mareš authored
      such data ever existed.
      78d06cf2
  10. 20 Oct, 1998 2 commits
  11. 19 Oct, 1998 1 commit
  12. 18 Oct, 1998 2 commits
  13. 17 Oct, 1998 1 commit
  14. 04 Jun, 1998 1 commit
  15. 01 Jun, 1998 1 commit
    • Martin Mareš's avatar
      - Rewrote whole interface logic. Removed support for multiple addresses per · 4cc78c50
      Martin Mareš authored
        interface since it makes much trouble everywhere. Instead, we understand
        secondary addresses as subinterfaces.
      
      - In case interface addresses or basic flags change, we simply convert it
        to a down/up sequence.
      
      - Implemented the universal neighbour cache. (Just forget what did previous
        includes say of neighbour caching, this one is brand new.)
      4cc78c50
  16. 24 May, 1998 1 commit
  17. 20 May, 1998 1 commit
  18. 15 May, 1998 1 commit
  19. 03 May, 1998 1 commit
  20. 28 Apr, 1998 1 commit
  21. 23 Apr, 1998 1 commit
  22. 22 Apr, 1998 1 commit