P4C
The P4 Compiler
 
Loading...
Searching...
No Matches
DPDK::ConvertLookahead Struct Reference
Inheritance diagram for DPDK::ConvertLookahead:

Classes

class  Collect
 
class  Replace
 
class  ReplacementMap
 

Public Member Functions

 ConvertLookahead (P4::ReferenceMap *refMap, P4::TypeMap *typeMap, DpdkProgramStructure *s)
 

Public Attributes

ReplacementMap repl
 

Detailed Description

DPDK target supports lookahead instruction only with header operand. This pass transforms usage of lookahead method with type parameters of other than header type (IR::Type_Header) to lookahead with header type using the following transformation:

This parser code:

T var_name;

state state_name { var_name = pkt.lookahead<T>(); }

is transformed to this:

  • new header definition:

header lookahead_tmp_hdr { T f; }

  • modification in parser code:

T var_name; lookahead_tmp_hdr lookahead_tmp;

state state_name { lookahead_tmp = pkt.lookahead<lookahead_tmp_hdr>(); var_name = lookahead_tmp; }