8#ifndef BACKENDS_EBPF_EBPFPROGRAM_H_
9#define BACKENDS_EBPF_EBPFPROGRAM_H_
13#include "ebpfObject.h"
14#include "ebpfOptions.h"
15#include "frontends/common/options.h"
16#include "frontends/p4/evaluator/evaluator.h"
17#include "frontends/p4/typeMap.h"
37 const IR::P4Program *program;
38 const IR::ToplevelBlock *toplevel;
47 cstring endLabel, offsetVar, lengthVar, headerStartVar;
48 cstring zeroKey, functionName, errorVar;
49 cstring packetStartVar, packetEndVar, byteVar;
57 P4::TypeMap *typeMap,
const IR::ToplevelBlock *toplevel)
58 : progTarget(nullptr),
69 offsetVar = EBPFModel::reserved(
"packetOffsetInBits"_cs);
70 zeroKey = EBPFModel::reserved(
"zero"_cs);
71 functionName = EBPFModel::reserved(
"filter"_cs);
72 errorVar = EBPFModel::reserved(
"errorCode"_cs);
73 packetStartVar = EBPFModel::reserved(
"packetStart"_cs);
74 packetEndVar = EBPFModel::reserved(
"packetEnd"_cs);
75 headerStartVar = EBPFModel::reserved(
"headerStart"_cs);
76 lengthVar = EBPFModel::reserved(
"pkt_len"_cs);
77 byteVar = EBPFModel::reserved(
"byte"_cs);
78 endLabel = EBPFModel::reserved(
"end"_cs);
79 errorEnum = EBPFModel::reserved(
"errorCodes"_cs);
85 virtual void emitHeaderInstances(
CodeBuilder *builder);
86 virtual void emitLocalVariables(
CodeBuilder *builder);
95 virtual void emitCommonPreamble(
CodeBuilder *builder);
96 virtual void emitGeneratedComment(
CodeBuilder *builder);
98 const std::filesystem::path &headerFile);
100 const std::filesystem::path &headerFile);
Definition ebpf/codeGen.h:33
Definition ebpfControl.h:57
Definition ebpfDeparser.h:59
Keep this in sync with ebpf_model.p4 and xdp_model.p4.
Definition ebpfModel.h:66
Base class for EBPF objects.
Definition ebpfObject.h:31
Definition ebpfParser.h:81
Definition ebpfProgram.h:30
EBPFProgram(const EbpfOptions &options, const IR::P4Program *program, P4::ReferenceMap *refMap, P4::TypeMap *typeMap, const IR::ToplevelBlock *toplevel)
return 'true' on success
Definition ebpfProgram.h:56
cstring arrayIndexType
TODO: this should be a compiler option probably.
Definition ebpfProgram.h:52
virtual bool isLibraryMethod(cstring methodName)
Definition ebpfProgram.cpp:337
EBPFDeparser * deparser
Deparser may be NULL if not supported (e.g. ebpfFilter package).
Definition ebpfProgram.h:45
Definition ebpfTable.h:72
Base class for EBPF types.
Definition ebpfType.h:29
Definition ebpf/target.h:44
Definition ebpfOptions.h:26
Class used to encode maps from paths to declarations.
Definition referenceMap.h:67
Definition codeGen.cpp:25