83 lines
1.2 KiB
Plaintext

header_type ethernet_t {
fields {
dstAddr : 48;
srcAddr : 48;
etherType : 16;
}
}
header_type intrinsic_metadata_t {
fields {
mcast_grp : 4;
egress_rid : 4;
mcast_hash : 16;
lf_field_list: 32;
}
}
header_type meta_t {
fields {
meter_tag : 32;
}
}
metadata meta_t meta;
parser start {
return parse_ethernet;
}
header ethernet_t ethernet;
metadata intrinsic_metadata_t intrinsic_metadata;
parser parse_ethernet {
extract(ethernet);
return ingress;
}
action _drop() {
drop();
}
action _nop() {
}
meter my_meter {
type: packets; // or bytes
static: m_table;
instance_count: 16384;
}
action m_action(meter_idx) {
execute_meter(my_meter, meter_idx, meta.meter_tag);
modify_field(standard_metadata.egress_spec, 1);
}
table m_table {
reads {
ethernet.srcAddr : exact;
}
actions {
m_action; _nop;
}
size : 16384;
}
table m_filter {
reads {
meta.meter_tag : exact;
}
actions {
_drop; _nop;
}
size: 16;
}
control ingress {
apply(m_table);
apply(m_filter);
}
control egress {
}