68 packet(
"packet", P4::P4CoreLibrary::instance().packetIn, 0),
73 ubpf_time_get_ns(
"ubpf_time_get_ns"),
75 csum_replace2(
"csum_replace2"),
76 csum_replace4(
"csum_replace4"),
96 unsigned version = 20200515;
98 static cstring reserved(
cstring name) {
return reservedPrefix + name; }
100 int numberOfParserArguments()
const {
return version >= 20200515 ? 4 : 3; }
101 int numberOfControlBlockArguments()
const {
return version >= 20200515 ? 3 : 2; }
104 bool preorder(
const IR::Declaration_Constant *dc)
override {
105 if (dc->name ==
"__ubpf_model_version") {
106 auto val = dc->initializer->to<IR::Constant>();
107 UBPFModel::instance.version =
static_cast<unsigned>(val->value);
111 bool preorder(
const IR::Declaration *)
override {
return false; }
114 const IR::P4Program *run(
const IR::P4Program *program) {
115 if (program ==
nullptr)
return nullptr;
121 passes.setName(
"UBPFFrontEnd");
122 passes.setStopOnError(
true);
123 const IR::P4Program *result = program->apply(passes);