/* 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;
}