#include #include #include "headers.p4" #define Parsed_packet headers #define user_metadata_t metadata // digest_data, MUST be 256 bits -- not using it struct digest_data_t { bit<256> unused; } /******************************************************************************** * Parser */ parser RealParser( packet_in packet, out Parsed_packet hdr, out user_metadata_t meta, out digest_data_t digest_data, inout sume_metadata_t standard_metadata) { state start { packet.extract(hdr.ethernet); // meta.unused = 0; digest_data.unused = 0; transition accept; } } @Xilinx_MaxPacketRegion(1024) parser TopParser( packet_in b, out Parsed_packet p, out user_metadata_t user_metadata, out digest_data_t digest_data, inout sume_metadata_t sume_metadata) { RealParser() realparser; state start { realparser.apply(b, p, user_metadata, digest_data, sume_metadata); transition accept; } } /******************************************************************************** * Main */ control RealMain( inout Parsed_packet hdr, inout user_metadata_t meta, inout digest_data_t digest_data, inout sume_metadata_t sume_metadata) { #include "actions_nat64_generic.p4" #include "actions_egress.p4" #include "actions_delta_checksum.p4" apply { bit<17> tmp17 = 0; bool apply_v4networks = true; bool apply_v6networks = true; // #include "netpfga_nat64.p4" if(apply_v4networks == true) { v4_networks.apply(); } if(apply_v6networks == true) { v6_networks.apply(); } } } control TopPipe( inout Parsed_packet p, inout user_metadata_t user_metadata, inout digest_data_t digest_data, inout sume_metadata_t sume_metadata) { RealMain() realmain; apply { realmain.apply(p, user_metadata, digest_data, sume_metadata); } } /******************************************************************************** * Deparser */ @Xilinx_MaxPacketRegion(1024) control TopDeparser( packet_out b, in Parsed_packet p, in user_metadata_t user_metadata, inout digest_data_t digest_data, inout sume_metadata_t sume_metadata) { apply { b.emit(p.ethernet); } } /******************************************************************************** * Switch */ SimpleSumeSwitch( TopParser(), TopPipe(), TopDeparser() ) main;