* 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
84 lines
1.4 KiB
Plaintext
84 lines
1.4 KiB
Plaintext
#ifndef __HEADER_P4__
|
|
#define __HEADER_P4__ 1
|
|
|
|
struct ingress_metadata_t {
|
|
bit<32> nhop_ipv4;
|
|
}
|
|
|
|
header ethernet_t {
|
|
bit<48> dstAddr;
|
|
bit<48> srcAddr;
|
|
bit<16> etherType;
|
|
}
|
|
|
|
header ipv4_t {
|
|
bit<4> version;
|
|
bit<4> ihl;
|
|
bit<8> diffserv;
|
|
bit<16> totalLen;
|
|
bit<16> identification;
|
|
bit<3> flags;
|
|
bit<13> fragOffset;
|
|
bit<8> ttl;
|
|
bit<8> protocol;
|
|
bit<16> hdrChecksum;
|
|
bit<32> srcAddr;
|
|
bit<32> dstAddr;
|
|
}
|
|
|
|
header tcp_t {
|
|
bit<16> srcPort;
|
|
bit<16> dstPort;
|
|
bit<32> seqNo;
|
|
bit<32> ackNo;
|
|
bit<4> dataOffset;
|
|
bit<4> res;
|
|
bit<8> flags;
|
|
bit<16> window;
|
|
bit<16> checksum;
|
|
bit<16> urgentPtr;
|
|
}
|
|
|
|
header udp_t {
|
|
bit<16> srcPort;
|
|
bit<16> dstPort;
|
|
bit<16> hdrLength;
|
|
bit<16> checksum;
|
|
}
|
|
|
|
struct hhd_t {
|
|
@name("filter_age")
|
|
bit<48> filter_age;
|
|
bit<32> value_a0;
|
|
bit<32> value_a1;
|
|
bit<32> value_a2;
|
|
bit<32> value_a3;
|
|
bit<32> value_b0;
|
|
bit<32> value_b1;
|
|
bit<32> value_b2;
|
|
bit<32> value_b3;
|
|
bit<32> threshold;
|
|
bit<1> is_a_active;
|
|
bit<1> is_heavy_hitter;
|
|
}
|
|
|
|
struct metadata {
|
|
@name("ingress_metadata")
|
|
ingress_metadata_t ingress_metadata;
|
|
@name("hhd")
|
|
hhd_t hhd;
|
|
}
|
|
|
|
struct headers {
|
|
@name("ethernet")
|
|
ethernet_t ethernet;
|
|
@name("ipv4")
|
|
ipv4_t ipv4;
|
|
@name("tcp")
|
|
tcp_t tcp;
|
|
@name("udp")
|
|
udp_t udp;
|
|
}
|
|
|
|
#endif // __HEADER_P4__
|