22 lines
466 B
Plaintext
22 lines
466 B
Plaintext
// packet_in: extern for input packet
|
|
extern packet_in {
|
|
void extract<T>(out T hdr);
|
|
void extract<T>(out T hdr,in bit<32> n);
|
|
T lookahead<T>();
|
|
void advance(in bit<32> n);
|
|
bit<32> length();
|
|
}
|
|
|
|
// parser: begins in special "start" state
|
|
state start {
|
|
transition parse_ethernet;
|
|
}
|
|
|
|
// User-defined parser state
|
|
state parse_ethernet {
|
|
packet.extract(hdr.ethernet);
|
|
transition select(hdr.ethernet.type) {
|
|
0x800: parse_ipv4;
|
|
default: accept;
|
|
}
|
|
} |