Sample plugin for VPP
Overview
This is the VPP sample plugin demonstrates how to create a new plugin that integrates with VPP. The sample code implements a trivial macswap algorithm that demonstrates plugin runtime integration with the VPP graph hierarchy, api and cli.
For deeper dive information see the annotations in the sample code itself. See sample.c
How to build and run the sample plugin.
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#
How to create a new plugin
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
Configuration
To enable the sample plugin
sample macswap <interface name>
To disable the sample plugin
sample macswap <interface name> disable