8#ifndef BACKENDS_UBPF_UBPFPROGRAM_H_
9#define BACKENDS_UBPF_UBPFPROGRAM_H_
11#include "backends/ebpf/ebpfOptions.h"
12#include "backends/ebpf/ebpfProgram.h"
14#include "frontends/p4/evaluator/evaluator.h"
15#include "frontends/p4/typeMap.h"
35 cstring contextVar, outerHdrOffsetVar, outerHdrLengthVar;
38 cstring arrayIndexType =
"uint32_t"_cs;
41 P4::TypeMap *typeMap,
const IR::ToplevelBlock *toplevel)
43 model(UBPFModel::instance) {
44 packetStartVar =
cstring(
"pkt");
45 offsetVar =
cstring(
"packetOffsetInBits");
46 outerHdrOffsetVar =
cstring(
"outHeaderOffset");
47 outerHdrLengthVar =
cstring(
"outHeaderLength");
51 stdMetadataVar =
cstring(
"std_meta");
52 packetTruncatedSizeVar =
cstring(
"packetTruncatedSize");
55 bool build()
override;
56 void emitC(
UbpfCodeBuilder *builder,
const std::filesystem::path &headerFile);
57 void emitH(
EBPF::CodeBuilder *builder,
const std::filesystem::path &headerFile)
override;
69 static std::set<cstring> DEFAULT_METHODS = {
70 "mark_to_drop"_cs,
"mark_to_pass"_cs,
"ubpf_time_get_ns"_cs,
"truncate"_cs,
71 "hash"_cs,
"csum_replace2"_cs,
"csum_replace4"_cs,
73 return DEFAULT_METHODS.find(methodName) != DEFAULT_METHODS.end() ||
74 EBPFProgram::isLibraryMethod(methodName);
Definition ebpf/codeGen.h:33
Definition ebpfProgram.h:30
Definition ebpfOptions.h:26
Class used to encode maps from paths to declarations.
Definition referenceMap.h:67
Definition ubpfControl.h:51
Definition ubpfDeparser.h:55
Definition ubpfModel.h:58
Definition ubpfParser.h:24
bool isLibraryMethod(cstring methodName) override
Definition ubpfProgram.h:68
Definition ubpfTable.h:43
Definition ubpf/codeGen.h:16