P4C
The P4 Compiler
|
Public Member Functions | |
EBPFTable (const EBPFProgram *program, CodeGenInspector *codeGen, cstring name) | |
EBPFTable (const EBPFProgram *program, const IR::TableBlock *table, CodeGenInspector *codeGen) | |
virtual bool | cacheEnabled () |
DECLARE_TYPEINFO (EBPFTable, EBPFTableBase) | |
virtual bool | dropOnNoMatchingEntryFound () const |
virtual void | emitAction (CodeBuilder *builder, cstring valueName, cstring actionRunVariable) |
void | emitActionArguments (CodeBuilder *builder, const IR::P4Action *action, cstring name) |
virtual void | emitCacheLookup (CodeBuilder *builder, cstring key, cstring value) |
virtual void | emitCacheUpdate (CodeBuilder *builder, cstring key, cstring value) |
virtual void | emitDirectValueTypes (CodeBuilder *builder) |
Emits value types used by direct externs. | |
virtual void | emitInitializer (CodeBuilder *builder) |
virtual void | emitInstance (CodeBuilder *builder) |
void | emitKey (CodeBuilder *builder, cstring keyName) |
virtual void | emitKeyType (CodeBuilder *builder) |
virtual void | emitLookup (CodeBuilder *builder, cstring key, cstring value) |
virtual void | emitLookupDefault (CodeBuilder *builder, cstring key, cstring value, cstring actionRunVariable) |
virtual void | emitTypes (CodeBuilder *builder) |
virtual void | emitValueActionIDNames (CodeBuilder *builder) |
virtual void | emitValueStructStructure (CodeBuilder *builder) |
virtual void | emitValueType (CodeBuilder *builder) |
bool | isLPMTable () const |
virtual bool | isMatchTypeSupported (const IR::Declaration_ID *matchType) |
bool | isTernaryTable () const |
cstring | p4ActionToActionIDName (const IR::P4Action *action) const |
Public Member Functions inherited from P4::EBPF::EBPFObject | |
DECLARE_TYPEINFO (EBPFObject) | |
Public Member Functions inherited from P4::ICastable | |
template<typename T > | |
T & | as () |
Tries to convert the class to type T. A BUG occurs if the cast fails. | |
template<typename T > | |
const T & | as () const |
Tries to convert the class to type T. A BUG occurs if the cast fails. | |
template<typename T > | |
T * | checkedTo () |
Performs a checked cast. A BUG occurs if the cast fails. | |
template<typename T > | |
const T * | checkedTo () const |
Performs a checked cast. A BUG occurs if the cast fails. | |
Public Member Functions inherited from P4::RTTI::Base | |
template<typename T > | |
bool | is () const noexcept |
virtual bool | isA (TypeId typeId) const noexcept=0 |
template<typename T > | |
const T * | to () const noexcept |
Same as to , but returns const pointer to T. | |
template<typename T > | |
T * | to () noexcept |
virtual TypeId | typeId () const noexcept=0 |
Public Attributes | |
const IR::ActionList * | actionList |
cstring | defaultActionMapName |
std::map< const IR::KeyElement *, cstring > | keyFieldNames |
const IR::Key * | keyGenerator |
std::map< const IR::KeyElement *, EBPFType * > | keyTypes |
const cstring | prefixFieldName = "prefixlen"_cs |
size_t | size = 1024 |
const IR::TableBlock * | table |
Public Attributes inherited from P4::EBPF::EBPFTableBase | |
CodeGenInspector * | codeGen |
cstring | dataMapName |
cstring | instanceName |
cstring | keyTypeName |
const EBPFProgram * | program |
cstring | valueTypeName |
Protected Member Functions | |
virtual ActionTranslationVisitor * | createActionTranslationVisitor (cstring valueName, const EBPFProgram *program) const |
void | emitTernaryInstance (CodeBuilder *builder) |
virtual void | validateKeys () const |
Protected Member Functions inherited from P4::EBPF::EBPFTableBase | |
EBPFTableBase (const EBPFProgram *program, cstring instanceName, CodeGenInspector *codeGen) | |
DECLARE_TYPEINFO (EBPFTableBase, EBPFObject) | |
Protected Member Functions inherited from P4::RTTI::Base | |
virtual const void * | toImpl (TypeId typeId) const noexcept=0 |
Additional Inherited Members | |
Static Public Member Functions inherited from P4::EBPF::EBPFObject | |
static cstring | externalName (const IR::IDeclaration *declaration) |
static cstring | getSpecializedTypeName (const IR::Declaration_Instance *di) |
static cstring | getTypeName (const IR::Declaration_Instance *di) |
|
inlinevirtual |
Whether to drop packet if no match entry found. Some table implementations may want to continue processing.
Reimplemented in P4::EBPF::EBPFTablePSA.
|
inlinevirtual |
Emits value types used by direct externs.
Reimplemented in P4::EBPF::EBPFTablePSA.
bool P4::EBPF::EBPFTable::isLPMTable | ( | ) | const |
As ternary has precedence over lpm, this function checks if any field is key field is lpm and none of key fields is of type ternary.
|
protectedvirtual |
Performs the following validations:
Reimplemented in P4::TC::EBPFTablePNA.
size_t P4::EBPF::EBPFTable::size = 1024 |
Use 1024 by default. TODO: make it configurable using compiler options.