diff options
Diffstat (limited to 'docs/gettingstarted/developers/fib20/hacking.rst')
-rw-r--r-- | docs/gettingstarted/developers/fib20/hacking.rst | 68 |
1 files changed, 0 insertions, 68 deletions
diff --git a/docs/gettingstarted/developers/fib20/hacking.rst b/docs/gettingstarted/developers/fib20/hacking.rst deleted file mode 100644 index f64d3deb860..00000000000 --- a/docs/gettingstarted/developers/fib20/hacking.rst +++ /dev/null @@ -1,68 +0,0 @@ -.. _hacking: - -Get Hacking ------------ - -The code's directory structure is trivial, FIB, mFIB, adj have their -own directories. - -for the most part, for all the FIB object types mentioned in this -documentation there is a corresponding .h and .c file. As with any VPP -component/sub-system a 'public' header file is any file that can be -included by another sub-system and/or plugin. These must be specified -in the build-system, so go look there. Public header files are always -a good entry point to start reading. - -FIB -^^^ - -There is no direct [VPP's binary] API access to FIB, but FIB does -expose types that can be used on the API by FIB and by other -subsystems (e.g. :ref:`barnacles`). These types are specified in -fib.api and the encoding and decoding thereof in fib_api.[ch]. - -Most operations on a FIB entry happen as a result of an operation on a -FIB table; an entry does not exist in isolation. The APIs in -fib_table.h are well doxygen documented you should be able to figure -out what they do. Use this as a starting point to explore how entries -are created and deleted and how the source priority scheme works. - -FIB sources are defined in fib_source.h. Each source behaviour has its -own file fib_entry_src_*.c These define the virtual functions that -determine how the source behaves when actions on the FIB occur. For -example, what the entry must do when its covering prefix's forwarding -is updated. - -When creating new paths/path-lists the main action required is to -resolve them; see fib_path*_resolve, and once resolved to have them -contribute a DPO for forwarding or for the uRPF list; see -fib_*_contribute_forwarding and fib_*_contribute_urpf respectively. - -The data-structures that used for entry lookup are protocol -specific, they are implemented in separate files; ip4_fib.[ch], -ip6_fib.[ch] and mpls_fib.[ch]. - -FIB extranet support is implemented in fib_attached_export.[ch]. -FIB tracking is implemented in fib_entry_track.[ch]. -FIB [back]walk is implemented in fib_walk.[ch]. - -Adjacency -^^^^^^^^^ - -Not much to say here, each adjacency type has it own file; use the -force, read the source. - - -Testing -^^^^^^^ - -the majority of FIB coverage comes from the C Unit tests in -fib_test.c. I strongly encourage you to add code here. It's a much -easier development cycle to fire up GDB, run VPP and iterate with -'test fib', than it is work in the python UT. You still need to write -python UT, don't get me wrong, it's just easier to do the FIB dev -using C UT. - - - -Enjoy! |