Infrastructure needed to generate, build and install the PD library for a given P4 program
[bmv2] (https://github.com/p4lang/behavioral-model) with pdfixed needs to be
installed. When compiling bmv2, pdfixed can be installed with --with-pdfixed.
The [bmv2 compiler] (https://github.com/p4lang/p4c-bm) also needs to be installed.
This repository is meant to be used to compile (and install) the PD library for
a given P4 program. As a result the full absolute path to the P4 program, as
well as the P4 program name, needs to be provided to configure.
When running configure the folllowing environment variables need to be
defined: P4_PATH, P4_NAME and possibly P4_PREFIX. You can run configure -h for more details.
1. ./autogen.sh
2. ./configure --with-bmv2 P4_NAME=<name of P4 program> P4_PATH=<absolute
path to P4 program> [P4_PREFIX=<prefix to use for PD APIs>]
3. make
4. make install
If P4_PREFIX is missing, we will use P4_NAME by default.
The following describes what can potentially be installed by this package, for a
given P4 program for which P4_NAME=test.
.
├── bin
├── include
│ └── bmpd
│ └── test
│ └── pd
│ ├── pd_counters.h
│ ├── pd.h
│ ├── pd_learning.h
│ ├── pd_meters.h
│ ├── pd_mirroring.h
│ ├── pd_registers.h
│ ├── pd_rpc_server.h
│ ├── pd_tables.h
│ └── pd_types.h
├── lib
│ ├── bmpd
│ │ └── test
│ │ ├── libpd.a
│ │ ├── libpd.la
│ │ ├── libpd.so -> libpd.so.0.0.0
│ │ ├── libpd.so.0 -> libpd.so.0.0.0
│ │ ├── libpd.so.0.0.0
│ │ ├── libpdthrift.a
│ │ ├── libpdthrift.la
│ │ ├── libpdthrift.so -> libpdthrift.so.0.0.0
│ │ ├── libpdthrift.so.0 -> libpdthrift.so.0.0.0
│ │ └── libpdthrift.so.0.0.0
│ └── python2.7
│ └── site-packages
│ └── bmpd
│ └── test
│ ├── p4_pd_rpc
│ │ ├── constants.py
│ │ ├── __init__.py
│ │ ├── test.py
│ │ ├── test-remote
│ │ └── ttypes.py
│ └── res_pd_rpc
│ ├── constants.py
│ ├── __init__.py
│ └── ttypes.py
└── share
└── bmpd
└── test
└── test.json