control Egress(
/* User */
inout my_egress_headers_t hdr,
inout my_egress_metadata_t meta,
/* Intrinsic */
in egress_intrinsic_metadata_t eg_intr_md,
in egress_intrinsic_metadata_from_parser_t eg_prsr_md,
inout egress_intrinsic_metadata_for_deparser_t eg_dprsr_md,
inout egress_intrinsic_metadata_for_output_port_t eg_oport_md)
{
action add_egs_mac_ts(bit<8> offset){
eg_oport_md.update_delay_on_tx = 1;
hdr.ptp_metadata.setValid();
hdr.ptp_metadata.udp_cksum_byte_offset = 0;
hdr.ptp_metadata.cf_byte_offset = offset;
hdr.ptp_metadata.updated_cf = 0;
}
table timestamp_eg_t {
key = {
}
actions = {
add_egs_mac_ts;
NoAction;
}
default_action = add_egs_mac_ts(46);
size = 1;
}
apply{
hdr.timestamps.ts3 = eg_intr_md.enq_tstamp;
hdr.timestamps.ts4 = eg_intr_md.deq_timedelta;
hdr.timestamps.ts4 = eg_prsr_md.global_tstamp;
timestamp_eg_t.apply();
}
}