29class DeparserPrepareBufferTranslator :
public ControlBodyTranslator {
34 explicit DeparserPrepareBufferTranslator(
const EBPFDeparser *deparser);
37 bool preorder(
const IR::BlockStatement *s)
override;
38 bool preorder(
const IR::IfStatement *ifstmt)
override;
39 bool preorder(
const IR::AssignmentStatement *)
override {
return false; }
40 bool preorder(
const IR::MethodCallStatement *s)
override;
41 bool preorder(
const IR::MethodCallExpression *expression)
override;
59class EBPFDeparser :
public EBPFControl {
61 const IR::Parameter *packet_out;
64 cstring outerHdrOffsetVar, outerHdrLengthVar;
67 EBPFDeparser(
const EBPFProgram *program,
const IR::ControlBlock *control,
68 const IR::Parameter *parserHeaders)
69 : EBPFControl(program, control, parserHeaders) {
71 outerHdrOffsetVar =
cstring(
"outHeaderOffset");
72 outerHdrLengthVar =
cstring(
"outHeaderLength");
73 returnCode =
cstring(
"returnCode");
76 bool build()
override;
83 virtual void emitDeparserExternCalls(
CodeBuilder *builder) { (void)builder; }
85 void emitBufferAdjusts(CodeBuilder *builder)
const;
87 DECLARE_TYPEINFO(EBPFDeparser, EBPFControl);
This translator emits deparser externs.
Definition ebpfDeparser.h:17