-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathheaders.p4
69 lines (60 loc) · 1.63 KB
/
headers.p4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include "assembly.p4"
/*************************************************************************
*********************** H E A D E R S ***********************************
*************************************************************************/
const bit<16> TYPE_IPV4 = 0x800;
const bit<8> PROTO_TCP = 0x6;
const bit<8> PROTO_UDP = 0x11;
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<3> reserved;
bit<9> flags;
bit<16> windowSize;
bit<16> tcpChecksum;
}
header udp_t {
bit<16> srcPort;
bit<16> dstPort;
bit<16> len;
bit<16> checksum;
}
struct metadata {
insn_unknown_t current_insn;
}
struct headers {
ethernet_t ethernet;
ipv4_t ipv4;
tcp_t tcp;
udp_t udp;
store_request_metadata_t store_request_metadata;
load_request_metadata_t load_request_metadata;
load_response_metadata_t load_response_metadata;
program_execution_metadata_t program_execution_metadata;
program_metadata_t program_metadata;
register_t[NUM_REGISTERS] registers;
insn_unparsed_t[MAX_INSNS] insns;
insn_unknown_t end_program;
}