* Added advanced Heavy Hitter Detection example * Changed directory location * Restored skeleton version * Added files for common run infra with the other tutorials * Updated readme * Autogenerate setup rules * Commends in simple_router.p4 * Fix typos * Removed commended out lines
52 lines
1.4 KiB
Plaintext
52 lines
1.4 KiB
Plaintext
parser ParserImpl(packet_in packet, out headers hdr, inout metadata meta, inout standard_metadata_t standard_metadata) {
|
|
state start {
|
|
transition parse_ethernet;
|
|
}
|
|
|
|
state parse_ethernet {
|
|
packet.extract(hdr.ethernet);
|
|
transition select(hdr.ethernet.etherType) {
|
|
16w0x800: parse_ipv4;
|
|
default: accept;
|
|
}
|
|
}
|
|
|
|
state parse_ipv4 {
|
|
packet.extract(hdr.ipv4);
|
|
transition select(hdr.ipv4.protocol) {
|
|
8w0x6: parse_tcp;
|
|
default: accept;
|
|
}
|
|
}
|
|
|
|
state parse_tcp {
|
|
packet.extract(hdr.tcp);
|
|
transition accept;
|
|
}
|
|
}
|
|
|
|
control DeparserImpl(packet_out packet, in headers hdr) {
|
|
apply {
|
|
packet.emit(hdr.ethernet);
|
|
packet.emit(hdr.ipv4);
|
|
packet.emit(hdr.tcp);
|
|
}
|
|
}
|
|
|
|
control verifyChecksum(inout headers hdr, inout metadata meta) {
|
|
apply { }
|
|
}
|
|
|
|
control computeChecksum(inout headers hdr, inout metadata meta) {
|
|
apply {
|
|
update_checksum(
|
|
hdr.ipv4.isValid(),
|
|
{ hdr.ipv4.version, hdr.ipv4.ihl, hdr.ipv4.diffserv,
|
|
hdr.ipv4.totalLen, hdr.ipv4.identification,
|
|
hdr.ipv4.flags, hdr.ipv4.fragOffset, hdr.ipv4.ttl,
|
|
hdr.ipv4.protocol, hdr.ipv4.srcAddr, hdr.ipv4.dstAddr },
|
|
hdr.ipv4.hdrChecksum,
|
|
HashAlgorithm.csum16);
|
|
}
|
|
}
|