TNSM_Latency_Prediction / code / parser / 15_random_hdr_parser / headers.p4
headers.p4
Raw
/* Standard ethernet header */
header ethernet_h {
    macAddr_t dstAddr;
    macAddr_t srcAddr;
    bit<16>   etherType;
}

#ifdef HDR_1B

    #ifdef RND_HEADER
        header rnd_size_h {
    #else
        header header_1b_h {
    #endif
            bit_8_t    f4;
        }// 1 byte

#endif

#ifdef HDR_2B

    #ifdef RND_HEADER
        header rnd_size_h {
    #else
        header header_2b_h {
    #endif
            bit_1_t    f1;
            bit_3_t    f2;
            bit_4_t    f3;
            bit_8_t    f4;
        }// 2 bytes

#endif

#ifdef HDR_4B

    #ifdef RND_HEADER
        header rnd_size_h {
    #else
        header header_4b_h {
    #endif
            bit_8_t    f1;
            bit_8_t    f2;
            bit_8_t    f3;
            bit_8_t    f4;
        }// 4 bytes

#endif

#ifdef HDR_5B

    #ifdef RND_HEADER
        header rnd_size_h {
    #else
        header header_5b_h {
    #endif
            bit_4_t    f1;
            bit_3_t    f2;
            bit_1_t    f3;
            bit_8_t    f4;
            bit_8_t    f5;
            bit_8_t    f6;
            bit_2_t    f7;
            bit_6_t    f8;
        }// 5 bytes

#endif

#ifdef HDR_8B

    #ifdef RND_HEADER
        header rnd_size_h {
    #else
        header header_8b_h {
    #endif
            bit_16_t    f1;
            bit_16_t    f2;
            bit_16_t    f3;
            bit_8_t     f4;
            bit_8_t     f5;
        }// 8 bytes

#endif

#ifdef HDR_10B

    #ifdef RND_HEADER
        header rnd_size_h {
    #else
        header header_10b_h {
    #endif
            bit_4_t    f1;
            bit_3_t    f2;
            bit_1_t    f3;
            bit_8_t    f4;
            bit_4_t    f5;
            bit_16_t   f6;
            bit_16_t   f7;
            bit_4_t    f8;
            bit_8_t    f9;
            bit_16_t   f10;
        }// 10 bytes

#endif

#ifdef HDR_15B

    #ifdef RND_HEADER
        header rnd_size_h {
    #else
        header header_15b_h {
    #endif
            bit_4_t    f1;
            bit_3_t    f2;
            bit_1_t    f3;
            bit_8_t    f4;
            bit_4_t    f5;
            bit_4_t    f6;
            bit_32_t   f7;
            bit_32_t   f8;
            bit_8_t    f9;
            bit_8_t    f10;
            bit_16_t   f11;
        }// 15 bytes

#endif

#ifdef HDR_16B

    #ifdef RND_HEADER
        header rnd_size_h {
    #else
        header header_16b_h {
    #endif
            bit_4_t    f1;
            bit_3_t    f2;
            bit_1_t    f3;
            bit_8_t    f4;
            bit_4_t    f5;
            bit_4_t    f6;
            bit_32_t   f7;
            bit_32_t   f8;
            bit_8_t    f9;
            bit_16_t   f10;
            bit_16_t   f11;
        }// 16 bytes

#endif

#ifdef HDR_20B

    #ifdef RND_HEADER
        header rnd_size_h {
    #else
        header header_20b_h {
    #endif
            bit_16_t   f1;
            bit_16_t   f2;
            bit_8_t    f3;
            bit_8_t    f4;
            bit_1_t    f5;
            bit_3_t    f6;
            bit_4_t    f7;
            bit_16_t   f8;
            bit_16_t   f9;
            bit_32_t   f10;
            bit_8_t    f11;
            bit_32_t   f12;
        }// 20 bytes

#endif

#ifdef HDR_32B

    #ifdef RND_HEADER
        header rnd_size_h {
    #else
        header header_32b_h {
    #endif
            bit_32_t   f1;
            bit_32_t   f2;
            bit_64_t   f3;
            bit_8_t    f4;
            bit_16_t   f5;
            bit_8_t    f6;
            bit_8_t    f7;
            bit_8_t    f8;
            bit_8_t    f9;
            bit_8_t    f10;
            bit_64_t   f11;
        }// 32 bytes

#endif

#ifdef HDR_40B

    #ifdef RND_HEADER
        header rnd_size_h {
    #else
        header header_40b_h {
    #endif
            bit_32_t   f1;
            bit_32_t   f2;
            bit_32_t   f3;
            bit_8_t    f4;
            bit_64_t   f5;
            bit_64_t   f6;
            bit_16_t   f7;
            bit_8_t    f8;
            bit_8_t    f9;
            bit_32_t   f10;
            bit_8_t    f11;
            bit_8_t    f12;
            bit_8_t    f13;
        }// 40 bytes

#endif

#ifdef HDR_50B

    #ifdef RND_HEADER
        header rnd_size_h {
    #else
        header header_50b_h {
    #endif
            bit_32_t   f1;
            bit_32_t   f2;
            bit_32_t   f3;
            bit_8_t    f4;
            bit_64_t   f5;
            bit_64_t   f6;
            bit_16_t   f7;
            bit_8_t    f8;
            bit_8_t    f9;
            bit_32_t   f10;
            bit_8_t    f11;
            bit_8_t    f12;
            bit_8_t    f13;
            bit_32_t   f14;
            bit_8_t    f15;
            bit_8_t    f16;
            bit_32_t   f17;
        }// 50 bytes
#endif

#ifdef HDR_64B

    #ifdef RND_HEADER
        header rnd_size_h {
    #else
        header header_64b_h {
    #endif
            bit_32_t   f1;
            bit_32_t   f2;
            bit_32_t   f3;
            bit_8_t    f4;
            bit_64_t   f5;
            bit_64_t   f6;
            bit_16_t   f7;
            bit_8_t    f8;
            bit_8_t    f9;
            bit_32_t   f10;
            bit_8_t    f11;
            bit_8_t    f12;
            bit_8_t    f13;
            bit_32_t   f14;
            bit_32_t   f15;
            bit_16_t   f16;
            bit_64_t   f17;
            bit_8_t    f18;
            bit_8_t    f19;
            bit_32_t   f20;
        }// 64 bytes

#endif

#ifdef HDR_100B
    #ifdef RND_HEADER
        header rnd_size_h {
    #else
        header header_100b_h {
    #endif
            bit_100_t    f1;
            bit_16_t     f2;
            bit_10_t     f3;
            bit_8_t      f4;
            bit_100_t    f5;
            bit_16_t     f6;
            bit_6_t      f7;
            bit_128_t    f8;
            bit_128_t    f9;
            bit_64_t     f10;
            bit_32_t     f11;
            bit_16_t     f12;
            bit_64_t     f13;
            bit_32_t     f14;
            bit_16_t     f15;
            bit_32_t     f16;
            bit_32_t     f17;
        }// 100 bytes
#endif

#ifdef HDR_128B

    #ifdef RND_HEADER
        header rnd_size_h {
    #else
        header header_128b_h {
    #endif
            bit_100_t    f1;
            bit_100_t    f2;
            bit_50_t     f3;
            bit_8_t      f4;
            bit_100_t    f5;
            bit_100_t    f6;
            bit_100_t    f7;
            bit_100_t    f8;
            bit_100_t    f9;
            bit_100_t    f10;
            bit_100_t    f11;
            bit_50_t     f12;
            bit_16_t     f13;
        }// 128 bytes

#endif




/* Timestamping headers */
header timestamps_ingress_h {
    bit<48> ts2;
    bit<48> ts1;
}

header timestamps_egress_h {
    bit<48> ts5;
    bit<24> ts4;
    bit<24> ts3;
}

/* TS6-related header */
/*
header ptp_metadata_t {
    bit<8>  udp_cksum_byte_offset;
    bit<8>  cf_byte_offset;
    bit<48> updated_cf;
}
*/

struct my_ingress_headers_t {
    ethernet_h            ethernet;
    timestamps_ingress_h  ts_ingress;

#ifdef CASE_DECREMENTAL
    header_128b_h           h1;
    header_100b_h           h2;
    header_64b_h            h3;
    header_50b_h            h4;
    header_32b_h            h5;
    header_16b_h            h6;
    header_8b_h             h7;
    header_4b_h             h8;
    header_2b_h             h9;
    header_1b_h             h10;
#endif

#ifdef CASE_INCREMENTAL
    header_1b_h             h1;
    header_2b_h             h2;
    header_4b_h             h3;
    header_8b_h             h4;
    header_16b_h            h5;
    header_32b_h            h6;
    header_50b_h            h7;
    header_64b_h            h8;
    header_100b_h           h9;
    header_128b_h           h10;
#endif

#ifdef SAME_HDR_10ST
    rnd_size_h             h1;
    rnd_size_h             h2;
    rnd_size_h             h3;
    rnd_size_h             h4;
    rnd_size_h             h5;
    rnd_size_h             h6;
    rnd_size_h             h7;
    rnd_size_h             h8;
    rnd_size_h             h9;
    rnd_size_h             h10;
#endif


}

struct my_egress_headers_t {
    ptp_metadata_t        ptp_metadata;
    ethernet_h            ethernet;
    timestamps_egress_h   ts_egress;
}