docs: convert extras doc md->rst
Type: improvement
Change-Id: Ie3b25a86b99098d2b3a21a11fc73234c8ed589d6
Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
diff --git a/src/examples/srv6-sample-localsid/srv6_sample_localsid_doc.rst b/src/examples/srv6-sample-localsid/srv6_sample_localsid_doc.rst
new file mode 100644
index 0000000..a076cd2
--- /dev/null
+++ b/src/examples/srv6-sample-localsid/srv6_sample_localsid_doc.rst
@@ -0,0 +1,66 @@
+.. _srv6_plugin_doc:
+
+Sample SRv6 LocalSID documentation
+==================================
+
+Introduction
+------------
+
+This plugin is an example of how an user can create a new SRv6 LocalSID
+behavior by using VPP plugins with the appropriate API calls to the
+existing SR code.
+
+This **example** plugin registers a new localsid behavior, with cli
+keyword ‘new_srv6_localsid’ which only takes one parameter, a fib-table.
+Upon receival of a packet, this plugin will enforce the next IP6 lookup
+in the specific fib-table specified by the user. (Indeed it will do the
+lookup in the fib_table n+1 (since for the shake of the example we
+increment the fib-table.)
+
+Notice that the plugin only ‘defines’ a new SRv6 LocalSID behavior, but
+the existing SR code in VNET is the one actually instantiating new
+LocalSIDs. Notice that there are callback functions such that when you
+create or remove a LocalSID you can actually setup specific parameters
+through the functions in this plugin.
+
+Variables to watch for
+----------------------
+
+- srv6_localsid_name: This variable is the name (used as a unique key)
+ identifying this SR LocalSID plugin.
+- keyword_str: This is the CLI keyword to be used for the plugin. In
+ this example ‘new_srv6_localsid’. (i.e. sr localsid address cafe::1
+ behavior new_srv6_localsid )
+- def_str: This is a definition of this SR behavior. This is printed
+ when you do ‘show sr localsid behaviors’.
+- params_str: This is a definition of the parameters of this localsid.
+ This is printed when you do ‘show sr localsid behaviors’.
+
+Functions to watch for
+----------------------
+
+- srv6_localsid_creation_fn: This function will be called every time a
+ new SR LocalSID is instantiated with the behavior defined in this
+ plugin.
+- srv6_localsid_removal_fn: This function will be called every time a
+ new SR LocalSID is removed with the behavior defined in this plugin.
+ This function tends to be used for freeing up all the memory created
+ in the previous function.
+- format_srv6_localsid_sample: This function prints nicely the
+ parameters of every SR LocalSID using this behavior.
+- unformat_srv6_localsid_sample: This function parses the CLI command
+ when initializing a new SR LocalSID using this behavior. It parses
+ all the parameters and ensures that the parameters are correct.
+- format_srv6_localsid_sample_dpo: This function formats the ‘show ip6
+ fib’ message for the SR LocalSIDs created with this plugin behavior.
+
+Graph node
+----------
+
+The current graph node uses the function ‘end_srh_processing’ to do the
+Segment Routing Endpoint behavior. Notice that it does not allow the
+cleanup of a Segment Routing header (as per the SRv6 behavior specs).
+This function is identical to the one found in
+/src/vnet/srv6/sr_localsid.c In case that by some other reason you want
+to do decapsulation, or SRH clean_up you can use the functions
+‘end_decaps_srh_processing’ or ‘end_psp_srh_processing’ respectively.