39class DeparserPrepareBufferTranslator :
public ControlBodyTranslator {
44 explicit DeparserPrepareBufferTranslator(
const EBPFDeparser *deparser);
47 bool preorder(
const IR::BlockStatement *s)
override;
48 bool preorder(
const IR::IfStatement *ifstmt)
override;
49 bool preorder(
const IR::AssignmentStatement *)
override {
return false; }
50 bool preorder(
const IR::MethodCallStatement *s)
override;
51 bool preorder(
const IR::MethodCallExpression *expression)
override;
69class EBPFDeparser :
public EBPFControl {
71 const IR::Parameter *packet_out;
74 cstring outerHdrOffsetVar, outerHdrLengthVar;
77 EBPFDeparser(
const EBPFProgram *program,
const IR::ControlBlock *control,
78 const IR::Parameter *parserHeaders)
79 : EBPFControl(program, control, parserHeaders) {
81 outerHdrOffsetVar =
cstring(
"outHeaderOffset");
82 outerHdrLengthVar =
cstring(
"outHeaderLength");
83 returnCode =
cstring(
"returnCode");
86 bool build()
override;
93 virtual void emitDeparserExternCalls(
CodeBuilder *builder) { (void)builder; }
95 void emitBufferAdjusts(CodeBuilder *builder)
const;
97 DECLARE_TYPEINFO(EBPFDeparser, EBPFControl);
This translator emits deparser externs.
Definition ebpfDeparser.h:27