8#ifndef BACKENDS_EBPF_EBPFMODEL_H_
9#define BACKENDS_EBPF_EBPFMODEL_H_
11#include "frontends/common/model.h"
12#include "frontends/p4/coreLibrary.h"
14#include "lib/cstring.h"
18using namespace P4::literals;
21 explicit TableImpl_Model(
cstring name) : Extern_Model(name), size(
"size"_cs) {}
27 : Extern_Model(
"CounterArray"_cs),
28 increment(
"increment"_cs),
30 max_index(
"max_index"_cs),
31 sparse(
"sparse"_cs) {}
38enum ModelArchitecture {
44 Xdp_Model() : Elem(
"xdp"_cs), parser(
"p"_cs), switch_(
"s"_cs), deparser(
"d"_cs) {}
51 Filter_Model() : Elem(
"ebpf_filter"_cs), parser(
"prs"_cs), filter(
"filt"_cs) {}
61 array_table(
"array_table"_cs),
62 hash_table(
"hash_table"_cs),
63 tableImplProperty(
"implementation"_cs),
64 CPacketName(
"skb"_cs),
65 packet(
"packet"_cs, P4::P4CoreLibrary::instance().packetIn, 0),
69 counterIndexType(
"u32"_cs),
70 counterValueType(
"u32"_cs) {}
73 static EBPFModel instance;
82 ModelArchitecture arch;
90 static cstring reserved(
cstring name) {
return reservedPrefix + name; }
Filter_Model filter
Only one of these should be used, depending on arch value.
Definition ebpfModel.h:84
Definition frontends/common/model.h:55
Definition codeGen.cpp:14
Definition ebpfModel.h:25
Definition ebpfModel.h:50
Definition ebpfModel.h:20
Definition ebpfModel.h:43
Definition frontends/common/model.h:19
Extern_Model : Type_Model.
Definition frontends/common/model.h:43
Param_Model : Elem.
Definition frontends/common/model.h:48