summaryrefslogtreecommitdiffstats
path: root/src/vnet/fib
AgeCommit message (Collapse)AuthorFilesLines
2021-03-16fib: Allow the creation of new source on the APINeale Ranns6-20/+201
Type: feature an client can dump the existing sources, examine their priorities, then define thier own source. Usefull if a client wants to distingusih between say, static, ospf, bgp, etc routes it has added over the API. Signed-off-by: Neale Ranns <nranns@cisco.com> Signed-off-by: Alexander Chernavin <achernavin@netgate.com> Change-Id: I5158b4fa1ebe87381ff8707bb173217f56ea274a
2021-02-15ip: Path MTUNeale Ranns3-2/+25
Type: feature Support setting the MTU for a peer on an interface. The minimum value of the path and interface MTU is used at forwarding time. the path MTU is specified for a given peer, by address and table-ID. In the forwarding plane the MTU is enfored either: 1 - if the peer is attached, then the MTU is set on the peer's adjacency 2 - if the peer is not attached, it is remote, then a DPO is added to the peer's FIB entry to perform the necessary fragmentation. Signed-off-by: Neale Ranns <neale@graphiant.com> Change-Id: I8b9ea6a07868b50e97e2561f18d9335407dea7ae
2021-02-11tests: tag the tests that do not work with multi-worker configurationAndrew Yourtchenko1-0/+2
If the multi-worker default VPP configuration is triggered by setting VPP_WORKER_CONFIG="workers 2", some of the tests fail for various reasons. It's a substantial number, so this change marks all of the testsets that have this issue, such that they can be addressed later independently. Type: test Change-Id: I4f77196499edef3300afe7eabef9cbff91f794d3 Signed-off-by: Andrew Yourtchenko <ayourtch@gmail.com>
2021-02-04mpls: MPLS Hash fixesNeale Ranns1-2/+3
Type: fix MPLS hash includes the IP hash at the bottom of the stack. Default this to the IP default and use the value passed in to the compute function. Signed-off-by: Neale Ranns <neale@graphiant.com> Change-Id: I3f8cb0f7c4fe98ea903a752c2b5fd3d7e26d449a
2021-02-01fib: Changes to interpose sourceNeale Ranns5-19/+78
Type: improvement 1) stack the interpose on any path-extensions (e.g. labels) from the next best source 2) allow more than 1 source to contribute a DPO for a given prefix Signed-off-by: Neale Ranns <neale@graphiant.com> Change-Id: Idc2fbb36cfbd2387081765d8af0f1fbe61612160
2021-01-21fib: fix includes for muslNathan Moos1-1/+1
Type: fix When building with musl, the type `uint` is not available unless you include <sys/types.h>. Signed-off-by: Nathan Moos <nmoos@cisco.com> Change-Id: I0003b0c373d9fd532b4135c43d78f36d6cd7afa4
2021-01-14docs: Update FIB documentationNeale Ranns1-6/+17
Type: docs Signed-off-by: Neale Ranns <nranns@cisco.com> Change-Id: I3dfde4520a48c945ca9707accabbe1735c1a8799
2020-12-18fib: Remove unused FIB path-list DB variableNeale Ranns2-7/+0
Type: refactor Signed-off-by: Neale Ranns <neale.ranns@cisco.com> Change-Id: I64527e9f5259e9984dc1e90023b367ee0fd8deeb
2020-12-16tests: move fib tests to src/vnet/fib/testDave Wallace2-0/+456
- Refactor make test code to be co-located with the vpp feature source code Type: test Signed-off-by: Dave Wallace <dwallacelf@gmail.com> Change-Id: I0529eb51b5a6bc2a5f1a49ee9d3320908ad1dba9
2020-12-14misc: refactor clib_bitmap_foreach macroDamjan Marion1-3/+3
Type: refactor Change-Id: I077110e1a422722e20aa546a6f3224c06ab0cde5 Signed-off-by: Damjan Marion <damarion@cisco.com>
2020-12-14misc: move to new pool_foreach macrosDamjan Marion8-30/+30
Type: refactor Change-Id: Ie67dc579e88132ddb1ee4a34cb69f96920101772 Signed-off-by: Damjan Marion <damarion@cisco.com>
2020-12-11fib: remove unsued path flagNeale Ranns1-5/+0
Type: refactor Signed-off-by: Neale Ranns <neale.ranns@cisco.com> Change-Id: Ic4ef53f49102d7b5061f1b6d3a1d0c8427b9d1f7
2020-12-11fib: Remove unused BIER variablesNeale Ranns2-22/+10
Type: refactor Signed-off-by: Neale Ranns <neale.ranns@cisco.com> Change-Id: Idf17c3c02fb77fcadf69a9164abd4da35289aaed
2020-12-08fib: Source Address SelectionNeale Ranns10-34/+329
Type: feature Use the FIB to provide SAS (in so far as it is today) - Use the glean adjacency as the record of the connected prefixes = there's a glean per-{interface, protocol, connected-prefix} - Keep the glean up to date with whatever the recieve host prefix is (since it can change) Signed-off-by: Neale Ranns <neale.ranns@cisco.com> Change-Id: I0f3dd1edb1f3fc965af1c7c586709028eb9cdeac
2020-11-26fib: Expressive type for walk return code. Honour code.Neale Ranns6-19/+17
Type: improvement Signed-off-by: Neale Ranns <neale.ranns@cisco.com> Change-Id: I487e698555545fce85d02d55deaaf7bb0007e388
2020-11-26fib: Only track cover if activatedNeale Ranns1-1/+15
Type: fix also cleanup any tracking at delete Signed-off-by: Neale Ranns <nranns@cisco.com> Change-Id: Id1037920c88c63e2029384af931064c00ed497aa
2020-11-16fib: remove misleading FIB_PATH_TYPE_LASTBenoît Ganne1-14/+0
FIB_PATH_TYPE_LAST seems to not have been updated accordingly. It is unused anyway, just remove it. Type: improvement Change-Id: I195e556a6695e3250cc03070ffd9262349f2c77b Signed-off-by: Benoît Ganne <bganne@cisco.com>
2020-10-28misc: Break the big IP header files to improve compile timeNeale Ranns1-1/+0
Type: refactor Signed-off-by: Neale Ranns <neale.ranns@cisco.com> Change-Id: Id1801519638a9b97175847d7ed58824fb83433d6
2020-10-26fib: API to extract any resolving interface rather than the one from theNeale Ranns2-0/+22
best source Type: improvement Signed-off-by: Neale Ranns <neale.ranns@cisco.com> Change-Id: Iaa91cbc7eba94f4ffbdc249ecdb49770bd2ae916
2020-10-21ip: convert u32 entry_flags to vl_api_mfib_entry_flags_t on mroute APINeale Ranns1-2/+2
Type: fix This is not an API change, it's the same values, just a different named type. also use VppEnum values in tests Signed-off-by: Neale Ranns <nranns@cisco.com> Change-Id: I3a18b529514f3cc9467ae4e8ac3e88d067fc776b
2020-10-19ip: Move the IP6 fib into ip6_[m]fib.cNeale Ranns2-14/+120
Type: improvement reduce the compile time by moving the bihash includes out of ip[46].h Signed-off-by: Neale Ranns <nranns@cisco.com> Change-Id: I6b9216e10aff1013071f9238b3e1ebbdd205bd80
2020-09-21ip: use main heap for mtrieDamjan Marion1-18/+3
Main heap can be hugepage backed so it is more efficient to use main heap instead of allocating special heap just for mtrie.... Type: improvement Change-Id: I210912ab8567c043205ddfc10fdcfde9a0fa7757 Signed-off-by: Damjan Marion <damarion@cisco.com>
2020-09-02fib: IPv6 lookup data structure MP safe when prefixes changeNeale Ranns1-14/+31
Type: fix adding routes should be MP safe. When new prefixes with differrent prefix lengths are added, adjust the sorted list in an MP safe way. Change-Id: Ib73a3c84d01eb86d17f8e79ea2bd2505dd9afb3d Signed-off-by: Neale Ranns <nranns@cisco.com>
2020-07-06fib: fix debug preprocessor directivesMatthew Smith4-4/+4
Type: fix Some debugging declarations were wrapped in an 'ifdef CLIB_DEBUG'. This seems to always evaluate true because clib.h defines CLIB_DEBUG to 0 if its not defined. The result is that if a route table is added and a route is added to it and then the table is deleted, VPP exits because the debug function fib_table_assert_empty() gets called whether VPP was started using a debug build or a release build. Change the ifdef to 'if CLIB_DEBUG > 0'. Change-Id: I357dc2c299e81b95244f2f7efaadb8e0de27627a Signed-off-by: Matthew Smith <mgsmith@netgate.com>
2020-05-26fib: Fix interpose source reactivateNeale Ranns1-0/+14
Type: fix when the interpose is on an adj-fib and the cover is removed the adj source will not install. this lead to no path list being found for the interpose source and a crash. pick a drop path list in this case. Signed-off-by: Neale Ranns <nranns@cisco.com> Change-Id: Ied217da043926c913657080f5ffb151201225d23
2020-05-15misc: removed executable bits from source filesRay Kinsella1-0/+0
Identified and removed executable bit from source files in the tree. find . -perm 755 -name *.[ch] -exec chmod a-x {} \; Type: improvement Signed-off-by: Ray Kinsella <mdr@ashroe.eu> Change-Id: I00710d59fcc46ce5be5233109af4c8077daff74b
2020-05-06docs: clean up make docs jobPaul Vinciguerra1-1/+1
Type: docs Change-Id: I9b5e5137eb4c1e89f6e8d7a278cd11a0fd496471 Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
2020-04-14urpf: Unicast reverse Path Forwarding (plugin)Neale Ranns1-0/+24
Type: feature - move the IP4 code to plugin - add ip6 support - add suport for uRPF on TX - add tests Change-Id: I074c2debc486d3e79c12fad4b8dbd72c41e841a0 Signed-off-by: Neale Ranns <nranns@cisco.com>
2020-03-19ip: change ip API enums address_family and ip_proto size to u8Jakub Grajciar2-14/+16
Type: fix Signed-off-by: Jakub Grajciar <jgrajcia@cisco.com> Change-Id: I73d27520726543d6375caad76a841339f68c3533 Signed-off-by: Jakub Grajciar <jgrajcia@cisco.com>
2020-03-19fib: format functions for pathNeale Ranns2-0/+72
Type: improvement Signed-off-by: Neale Ranns <nranns@cisco.com> Change-Id: Ib7a9e457cb2462e6ce9e5e2af53d1f997f4ae6cf
2020-03-06fib: path flag FIB_API_PATH_TYPE_INTERFACE_RX not copied to clientIJsbrand Wijnands1-0/+4
This path flag FIB_API_PATH_TYPE_INTERFACE_RX is not copied to the client bin_api. Type: fix Change-Id: Signed-off-by: IJsbrand Wijnands <ice@cisco.com> Change-Id: I612044d2f564c852f83fceb63ce750a6330e1365
2020-02-21fib: Uninitialised pad in the prefix (coverity warning)Neale Ranns1-0/+2
Type: fix Change-Id: Ia61d6fbf6e80977f83f1f6672e5e83b52ddeb0e5 Signed-off-by: Neale Ranns <nranns@cisco.com>
2020-02-20fib: fib path realloc during midchain stackNeale Ranns1-9/+13
Type: fix Change-Id: I0677f46dfa22c8abab7f311230a09ef1cd8ac335 Signed-off-by: Neale Ranns <nranns@cisco.com> (cherry picked from commit 02d5a67d39cbb8f1865227afdc79533578067b8d)
2020-02-17misc: fix coverity warningsDave Barach1-4/+4
Add an ALWAYS_ASSERT (...) macro, to (a) shut up coverity, and (b) check the indicated condition in production images. As in: p = hash_get(...); ALWAYS_ASSERT(p) /* was ASSERT(p) */ elt = pool_elt_at_index(pool, p[0]); This may not be the best way to handle a specific case, but failure to check return values at all followed by e.g. a pointer dereference isn't ok. Type: fix Ticket: VPP-1837 Signed-off-by: Dave Barach <dave@barachs.net> Change-Id: Ia97c641cefcfb7ea7d77ea5a55ed4afea0345acb
2020-02-13fib: Fix some more realloc errorsNeale Ranns5-55/+34
Type: fix Change-Id: I6011f5d6eae79019d3c16a260a9bedf0a76d2151 Signed-off-by: Neale Ranns <nranns@cisco.com>
2020-02-11vppinfra: remove the historical mheap memory allocatorDave Barach1-12/+3
The mheap allocator has been turned off for several releases. This commit removes the cmake config parameter, parallel support for dlmalloc and mheap, and the mheap allocator itself. Type: refactor Signed-off-by: Dave Barach <dave@barachs.net> Change-Id: I104f88a1f06e47e90e5f7fb3e11cd1ca66467903
2020-02-07fib: fix non-NULL terminated vectors in cli outputBenoît Ganne2-2/+2
Type: fix Change-Id: Idbb3f29b13a5c84a8585c4299e51fdfc35f7e1ad Signed-off-by: Benoît Ganne <bganne@cisco.com>
2020-01-27ipip: Multi-point interfaceNeale Ranns1-1/+2
Type: feature plus fixes for gre Signed-off-by: Neale Ranns <nranns@cisco.com> Change-Id: I0eca5f94b8b8ea0fcfb058162cafea4491708db6
2020-01-22fib: FIB crash removing labelled route (VPP-1818)Neale Ranns1-7/+12
Type: fix The crash occured trying to retreive a NULL path list to walk the path extensions. A walk shoul not be required, because there should be no extensins, since all paths are removed. The problem is that when the paths were added, they were not sorted, hence neither were the extensions and when they were updated, duplicate extensions were added, and hence a path removal did not remove them all. Fix is to make sure paths are sorted. Change-Id: I069d937de8e7bc8aae3d92f588db4daff727d863 Signed-off-by: Neale Ranns <nranns@cisco.com> (cherry picked from commit 257749c40946a9269140d322e374d74c3b6eefb8)
2020-01-14classify: Reduce the include dependencies on vnet_classify.hNeale Ranns1-0/+1
Type: refactor currently vnet_classify.h is included in ip.h where it's not required. Change-Id: Id55682637601655aa2edda681536a979c8e323bd Signed-off-by: Neale Ranns <nranns@cisco.com>
2020-01-09fib: leverage well-optimized clib_memcpyZhiyong Yang3-6/+6
Type: fix Change-Id: I684910837ca4d9c8a07262459158bbb0423a33af Signed-off-by: Zhiyong Yang <zhiyong.yang@intel.com>
2019-12-22fib: use 32 bits per-source reference counterMiklos Tirpak2-2/+2
The 16 bits reference counter limited the number of interfaces per FIB table to 65K from a given source. Some use cases, for example GTP-U tunnels require much more interfaces than that. This change increases the size of the reference counter to 32 bits. Type: fix Signed-off-by: Miklos Tirpak <miklos.tirpak@gmail.com> Change-Id: I944a98513018840f904f2808c2a1e963b37886cc
2019-12-17ip: Protocol Independent IP NeighborsNeale Ranns7-6/+59
Type: feature - ip-neighbour: generic neighbour handling; APIs, DBs, event handling, aging - arp: ARP protocol implementation - ip6-nd; IPv6 neighbor discovery implementation; separate ND, MLD, RA - ip6-link; manage link-local addresses - l2-arp-term; events separated from IP neighbours, since they are not the same. vnet retains just enough education to perform ND/ARP packet construction. arp and ip6-nd to be moved to plugins soon. Change-Id: I88dedd0006b299344f4c7024a0aa5baa6b9a8bbe Signed-off-by: Neale Ranns <nranns@cisco.com>
2019-12-17fib: Glean on NBMA interface points to dropNeale Ranns2-86/+85
Type: fix Signed-off-by: Neale Ranns <nranns@cisco.com> Change-Id: Iaae7a9e120bbf8168c581b06d3ac0e124b32e0e7
2019-12-16vppinfra: bihash walk cb typedef and continue/stop controlsNeale Ranns1-2/+4
Type: feature Change-Id: I28f7a658be3f3beec9ea32635b60d1d3a10d9b06 Signed-off-by: Neale Ranns <nranns@cisco.com>
2019-12-04fib: Decouple source from priority and behaviourNeale Ranns23-371/+743
Type: feature the fib_source_t enum alone no longer defines the priority and behaviour, instead each source must be allocated these attributes. This allows the creation of other sources by the plugins (and soon over the API). Signed-off-by: Neale Ranns <nranns@cisco.com> Change-Id: I890ee820fbc16079ee417ea1fbc163192806e853
2019-11-26fib: Fix crash on cover update to non activated adj sourceNeale Ranns1-7/+11
if the adj source is not active then there is no existing cover during a cover update Type: fix Ticket: VPP-1803 Signed-off-by: Neale Ranns <nranns@cisco.com> Change-Id: Ie912f1c99345de4fb012bdcd97b443098d4a7351
2019-11-26fib: Another realloc burnNeale Ranns1-5/+13
Type: fix harmless this time since it only affects the debug statement, but it still crashes an ASAN image. Signed-off-by: Neale Ranns <nranns@cisco.com> Change-Id: Ie02e7fe3014b98b9f8c83447f59017a380ab3948
2019-11-26fib: Table ReplaceNeale Ranns7-17/+219
Type: feature from the API doc, a table replace is: " The use-case is that, for some unspecified reason, the control plane has a very different set of entries it wants in the table than VPP currently has. The CP would thus like to 'replace' VPP's current table only by specifying what the new set of entries shall be, i.e. it is not going to delete anything that already eixts. the CP delcartes the start of this procedure with this begin_replace API Call, and when it has populated all the entries it wants, it calls the below end_replace API. From this point on it is of coursce free to add and delete entries as usual. The underlying mechanism by which VPP implements this replace is purposefully left unspecified. " In the FIB, the algorithm is implemented using mark and sweep. Algorithm goes: 1) replace_begin: this marks all the entries in that table as 'stale' 2) download all the entries that should be in this table - this clears the stale flag on those entries 3) signal the table converged: ip_table_replace_end - this removes all entries that are still stale this procedure can be used when an agent first connects to VPP, as an alternative to dump and diff state reconciliation. Change-Id: I168edec10cf7670866076b129ebfe6149ea8222e Signed-off-by: Neale Ranns <nranns@cisco.com>
2019-11-14fib: Copy the prefix before use in case the underlying entry reallocs.Neale Ranns3-6/+19
Type: fix all other uses of the fib_entry_get_preifx in the code base don't pass the prefix into recursive functions. Change-Id: Ic1c56acd406a733b215ee2fd98b6bed58b490a4f Signed-off-by: Neale Ranns <nranns@cisco.com>