FD.io VPP
v21.01
Vector Packet Processing
|
This is the VPP sample plugin demonstrates how to create a new plugin that integrates with VPP. The sample code implements a trival macswap algorithim that demonstrates plugin runtime integration with the VPP graph hierachy, api and cli.
For deeper dive information see the annotations in the sample code itself. See sample.c
Now (re)build VPP.
$ make wipe
Define environmental variable 'SAMPLE_PLUGIN=yes' with a process scope
$ SAMPLE_PLUGIN=yes make build
or a session scope, and build VPP.
$ export SAMPLE_PLUGIN=yes $ make build
Now run VPP and make sure the plugin is loaded.
$ make run ... load_one_plugin:184: Loaded plugin: memif_plugin.so (Packet Memory Interface (experimetal)) load_one_plugin:184: Loaded plugin: sample_plugin.so (Sample of VPP Plugin) load_one_plugin:184: Loaded plugin: nat_plugin.so (Network Address Translation) ... DBGvpp#
To create a new plugin based on the sample plugin, copy and rename the sample plugin directory and automake config.
cp -r src/examples/sample-plugin/sample src/plugins/newplugin cp src/examples/sample-plugin/sample.am src/plugins/newplugin.am
Add the following entry to the plugins section of src/configure.ac
.
PLUGIN_ENABLED(newplugin)
Add the following entry to the plugins section of src/plugins/Makefile.am
if ENABLE_NEWPLUGIN include newplugin.am endif
Now (re)build VPP.
$ make wipe $ make build
To enable the sample plugin
sample macswap <interface name>
To disable the sample plugin
sample macswap <interface name> disable