Generates the JSON configuration for the behavioral-model (bmv2), as well as the C/C++ PD code
Python C++ C Thrift Objective-C
Latest commit 91c7add Jan 13, 2017 @antoninbas antoninbas committed on GitHub Fix C name sanitization (#79)
Some names were not being sanitized, others were being sanitized but
were not supposed to (string names passed to bmv2).



Generates the JSON configuration for the behavioral-model (bmv2).

Important: the PD has been moved out of this repository and split between the bmv2 repository (for fixed part of the PD) and the new p4-build repository (build infrastructure for the auto-generated / program-dependent part of the PD).


  • To install p4c-bm on your machine:
    • sudo pip install -r requirements.txt
    • sudo pip install -r requirements_v1_1.txt if you are interested in compiling P4 v1.1 programs
    • sudo python install
  • Using p4c-bm
    • Try p4c-bmv2 -h
    • --json to generate a JSON representation of the P4 program
    • --pd to generate the PD C++ code
    • --p4-v1.1 if your input program is a P4 v1.1 program
  • To install in a non-default location, you can use:
    • python build install --prefix <your_path> [--single-version-externally-managed] --record install_files.txt
    • cat install_files.txt | xargs rm -rf if you need to uninstall later on