summaryrefslogtreecommitdiffstats
path: root/src/vnet/fib/fib_entry.h
AgeCommit message (Expand)AuthorFilesLines
2019-12-04fib: Decouple source from priority and behaviourNeale Ranns1-170/+1
2019-11-26fib: Table ReplaceNeale Ranns1-0/+8
2019-09-25fib: fix some typos in fib/mtrieLijian.Zhang1-2/+2
2019-07-28fib: add invalid source type and fix debug logBenoƮt Ganne1-0/+7
2019-07-19fib: FIB Entry trackingNeale Ranns1-3/+2
2019-06-18fib: fib api updatesNeale Ranns1-5/+4
2018-10-16FIB: use vlib-log for debuggingNeale Ranns1-0/+4
2018-09-20Route counters in the stats segmentNeale Ranns1-0/+2
2018-08-22IPIP and SIXRD tunnels create API needs table-IDs not fib-indexesNeale Ranns1-0/+5
2018-07-30FIB: return entry prefix by const reference to avoid the copyNeale Ranns1-2/+1
2018-04-30FIB: elide cover walk for insert of host routeNeale Ranns1-0/+1
2018-04-04NAT added FIB entries have a preference lower than API/CLINeale Ranns1-0/+5
2018-03-20FIB Interpose SourceNeale Ranns1-10/+50
2018-03-13Common form of fib-path reproting in dumpsNeale Ranns1-0/+1
2018-03-05IP6 link-local tableNeale Ranns1-0/+11
2018-03-016RD: Rewritten 6RD RFC5969 support.Ole Troan1-5/+0
2018-01-18FIB Inherited SrouceNeale Ranns1-2/+24
2017-12-05Revert "FIB: optimise for src memory allocations"Neale Ranns1-40/+4
2017-11-26FIB: optimise for src memory allocationsNeale Ranns1-4/+40
2017-11-09BIERNeale Ranns1-0/+5
2017-10-25L3 proxy FIB source for container networkingAndrew Yourtchenko1-0/+5
2017-09-11FIB table add/delete APINeale Ranns1-0/+1
2017-08-03DHCP Client: receive unicast ACKsNeale Ranns1-7/+2
2017-05-23ARP/ND entries for the same address on different interfaces (VPP-848)Neale Ranns1-1/+1
2017-05-05First commit SR MPLSPablo Camarillo1-4/+4
2017-04-26IP Flow Hash Config fixesNeale Ranns1-0/+2
2017-04-07MPLS McastNeale Ranns1-3/+10
2017-04-06BFD-FIB interactionsNeale Ranns1-0/+1
2017-03-08Proxy ND (RFC4389 - or a sub-set thereof). This allows the 'emulation' of bri...Neale Ranns1-0/+5
2017-03-06ioam: manycast using iOAM and SR (VPP-628)Shwetha Bhandari1-1/+8
2017-01-27IP Multicast FIB (mfib)Neale Ranns1-1/+1
2016-12-28Reorganize source tree to use single autotools instanceDamjan Marion1-0/+530
n> u32 *tab; u32 *scramble; /* Seed value for hash mixer. */ u64 hash_seed; u32 flags; /* Key functions want 64 bit keys. Use hash_mix64 rather than hash_mix32. */ #define PHASH_FLAG_MIX64 (1 << 0) #define PHASH_FLAG_MIX32 (0 << 0) /* When b_bits is large enough (>= 12) we scramble. */ #define PHASH_FLAG_USE_SCRAMBLE (1 << 1) /* Slow mode gives smaller tables but at the expense of more run time. */ #define PHASH_FLAG_SLOW_MODE (0 << 2) #define PHASH_FLAG_FAST_MODE (1 << 2) /* Generate minimal perfect hash instead of perfect hash. */ #define PHASH_FLAG_NON_MINIMAL (0 << 3) #define PHASH_FLAG_MINIMAL (1 << 3) /* vec_len (keys) for minimal hash; 1 << s_bits for non-minimal hash. */ u32 hash_max; /* Vector of keys. */ phash_key_t *keys; /* Used by callbacks to identify keys. */ void *private; /* Key comparison callback. */ int (*key_is_equal) (void *private, uword key1, uword key2); /* Callback to reduce single key -> hash seeds. */ void (*key_seed1) (void *private, uword key, void *seed); /* Callback to reduce two key2 -> hash seeds. */ void (*key_seed2) (void *private, uword key1, uword key2, void *seed); /* Stuff used to compute perfect hash. */ u32 random_seed; /* Stuff indexed by B. */ phash_tabb_t *tabb; /* Table of B ordered by number of keys in tabb[b]. */ u32 *tabb_sort; /* Unique key (or ~0 if none) for a given hash H = A ^ scramble[tab[B].val_b]. */ u32 *tabh; /* Stuff indexed by q. */ phash_tabq_t *tabq; /* Stats. */ u32 n_seed_trials, n_perfect_calls; } phash_main_t; always_inline void phash_main_free_working_memory (phash_main_t * pm) { vec_free (pm->tabb); vec_free (pm->tabq); vec_free (pm->tabh); vec_free (pm->tabb_sort); if (!(pm->flags & PHASH_FLAG_USE_SCRAMBLE)) vec_free (pm->scramble); } always_inline void phash_main_free (phash_main_t * pm) { phash_main_free_working_memory (pm); vec_free (pm->tab); vec_free (pm->keys); clib_memset (pm, 0, sizeof (pm[0])); } /* Slow hash computation for general keys. */ uword phash_hash_slow (phash_main_t * pm, uword key); /* Main routine to compute perfect hash. */ clib_error_t *phash_find_perfect_hash (phash_main_t * pm); /* Validates that hash is indeed perfect. */ clib_error_t *phash_validate (phash_main_t * pm); /* Unit test. */ int phash_test_main (unformat_input_t * input); #endif /* included_phash_h */ /* * fd.io coding-style-patch-verification: ON * * Local Variables: * eval: (c-set-style "gnu") * End: */