diff --git a/pna.p4 b/pna.p4 index 98c50fe..59ae451 100644 --- a/pna.p4 +++ b/pna.p4 @@ -776,6 +776,16 @@ extern T SelectByDirection( +// Struct to contain vendor-specific metadata fields that can be +// accessed while pakcets are being processed in the main control. +// The definition of the fields and their behavior is completely +// vendor-specific, and this part of the pna.p4 header file is +// expected to be customized by each vendor implementing PNA. + +struct vendor_metadata_t { +} + + // BEGIN:Programmable_blocks control PreControlT( @@ -791,10 +801,13 @@ parser MainParserT( inout MM main_user_meta, in pna_main_parser_input_metadata_t istd); -control MainControlT( +control MainControlT( //in PM pre_user_meta, inout MH main_hdr, inout MM main_user_meta, + inout vendor_metadata_t vmeta, + inout MTX txmeta, + inout MRX rxmeta, in pna_main_input_metadata_t istd, inout pna_main_output_metadata_t ostd); @@ -804,10 +817,10 @@ control MainDeparserT( in MM main_user_meta, in pna_main_output_metadata_t ostd); -package PNA_NIC( +package PNA_NIC( MainParserT main_parser, PreControlT pre_control, - MainControlT main_control, + MainControlT main_control, MainDeparserT main_deparser); // END:Programmable_blocks