Build Instructions

Install dependencies

sudo apt-get install -y git cmake autoconf pkg_config libtool

Libmemif is now part of VPP repository. Follow wiki to pull source code from VPP repository.,_Building,_Running,_Hacking_and_Pushing_VPP_Code#Pushing_Patches

Libmemif is located under extras/libmemif. From the vpp workspace root directory:

mkdir -p extras/libmemif/build
cd extras/libmemif/build
cmake ..
make install

Verify installation:

./examples/icmp_responder -?

Use -? flag to display help:

LIBMEMIF EXAMPLE APP: icmp_responder_example
libmemif version: 4.0, memif version: 2.0
In this example, memif endpoint connects to an external application.
The example application can resolve ARP and reply to ICMPv4 packets.
The program will exit once the interface is disconnected.
Usage: icmp_responder [OPTIONS]

        -r      Interface role <slave|master>. Default: slave
        -s      Socket path. Supports abstract socket using @ before the path. Default: /run/vpp/memif.sock
        -i      Interface id. Default: 0
        -a      IPv4 address. Default:
        -h      Mac address. Default: aa:aa:aa:aa:aa:aa
        -?      Show help and exit.
        -v      Show libmemif and memif version information and exit.

Running tests:

Tests needs to their proper functioning Unity framework which is depended externally and cloned from official git repository:

mkdir -p extras/libmemif/build
cd extras/libmemif/build
cmake ..

ctest will execute the tests and print out brief information about test suites with their statuses.

In case we want verbose:

ctest --verbose
ctest --extra-verbose

If there are any needs to debug tests, just add to cmake command -DCMAKE_BUILD_TYPE=Debug flag.

Use Cases

Once the library is built/installed, refer to Getting started and Libmemif Examples for additional information on basic use cases and API usage.