1 { 0x28, 0, 0, 0xc }, / Load Ethernet at 12
2 { 0x15, 0, 5, 0x8100 }, / Check for VLAN
3 { 0x01, 0, 0, 0x12 }, / Load 18 -> X (start IP)
4 { 0x28, 0, 0, 0x10 }, / Load Ethernet at 16
5 { 0x15, 7, 0, 0x800 }, / Check IPv4
6 { 0x28, 0, 0, 0x10 }, / Load Ethernet at 16
7 { 0x15, 9, 0, 0x86dd }, / Check IPv6
8 { 0x01, 0, 0, 0xe }, / Load 14 -> X (start IP)
9 { 0x28, 0, 0, 0xc }, / Load Ethernet at 12
10 { 0x15, 2, 0, 0x800 }, / Check IPv4
11 { 0x28, 0, 0, 0xc }, / Load Ethernet at 12
12 { 0x15, 5, 79, 0x86dd }, / Check IPv6
13 { 0x87, 0, 0, 0x0 }, / A <- X
14 { 0x04, 0, 0, 0x9 }, / add 9 -> X (start IPv4 Nxt Hdr)
15 { 0x07, 0, 0, 0x0 }, / A -> X
16 { 0x50, 0, 0, 0x0 }, / Load IPv4 Nxt Header
17 { 0x15, 73, 74, 0x2 }, / Check for IGMP
18 { 0x87, 0, 0, 0x0 }, / A <- X
19 { 0x04, 0, 0, 0x6 }, / add 6 -> X (start IPv6 Nxt Hdr)
20 { 0x07, 0, 0, 0x0 }, / A -> X
21 { 0x50, 0, 0, 0x0 }, / Load IPv6 Nxt Header
22 { 0x02, 0, 0, 0x0 }, / A -> M0
23 { 0x87, 0, 0, 0x0 }, / A <- X
24 { 0x04, 0, 0, 0x22 }, / add 34 -> X (end ipv6 packet)
25 { 0x07, 0, 0, 0x0 }, / A -> X
26 { 0x60, 0, 0, 0x0 }, / A <- M0
27 { 0x15, 0, 7, 0x0 }, / Check for HopbyHop
28 { 0x50, 0, 0, 0x0 }, / Load HopbyHop Nxt Header
29 { 0x02, 0, 0, 0x0 }, / A -> M0
30 { 0x50, 0, 0, 0x1 }, / Load HopbyHop Ext Len
31 { 0x04, 0, 0, 0x1 }, / add 1 to HopbyHop Ext Len
32 { 0x64, 0, 0, 0x3 }, / multiply by 8
33 { 0x0c, 0, 0, 0x0 }, / A + X
34 { 0x07, 0, 0, 0x0 }, / A -> X
35 { 0x60, 0, 0, 0x0 }, / A <- M0
36 { 0x15, 0, 7, 0x3c }, / Check for Dest Opts
37 { 0x50, 0, 0, 0x0 }, / Load Dest Opts Nxt Header
38 { 0x02, 0, 0, 0x0 }, / A -> M0
39 { 0x50, 0, 0, 0x1 }, / Load Dest Opts Ext Len
40 { 0x04, 0, 0, 0x1 }, / add 1 to Dest Opts Ext Len
41 { 0x64, 0, 0, 0x3 }, / multiply by 8
42 { 0x0c, 0, 0, 0x0 }, / A + X
43 { 0x07, 0, 0, 0x0 }, / A -> X
44 { 0x60, 0, 0, 0x0 }, / A <- M0
45 { 0x15, 0, 7, 0x2b }, / Check for Routing
46 { 0x50, 0, 0, 0x0 }, / Load Routing Nxt Header
47 { 0x02, 0, 0, 0x0 }, / A -> M0
48 { 0x50, 0, 0, 0x1 }, / Load Routing Ext Len
49 { 0x04, 0, 0, 0x1 }, / add 1 to Routing Ext Len
50 { 0x64, 0, 0, 0x3 }, / multiply by 8
51 { 0x0c, 0, 0, 0x0 }, / A + X
52 { 0x07, 0, 0, 0x0 }, / A -> X
53 { 0x60, 0, 0, 0x0 }, / A <- M0
54 { 0x15, 0, 6, 0x2c }, / Check for Fragment
55 { 0x50, 0, 0, 0x0 }, / Load Fragment Nxt Header
56 { 0x02, 0, 0, 0x0 }, / A -> M0
57 { 0x00, 0, 0, 0x8 }, / Load 8
58 { 0x0c, 0, 0, 0x0 }, / A + X
59 { 0x07, 0, 0, 0x0 }, / A -> X
60 { 0x60, 0, 0, 0x0 }, / A <- M0
61 { 0x15, 0, 8, 0x33 }, / Check for Authentication
62 { 0x50, 0, 0, 0x0 }, / Load Authentication Nxt Header
63 { 0x02, 0, 0, 0x0 }, / A -> M0
64 { 0x50, 0, 0, 0x1 }, / Load Authentication Ext Len
65 { 0x04, 0, 0, 0x2 }, / add 2 to Authentication Ext Len
66 { 0x64, 0, 0, 0x2 }, / multiply by 4
67 { 0x0c, 0, 0, 0x0 }, / A + X
68 { 0x07, 0, 0, 0x0 }, / A -> X
69 { 0x60, 0, 0, 0x0 }, / A <- M0
70 { 0x15, 21, 0, 0x32 }, / Check for ESP
71 { 0x15, 0, 7, 0x3c }, / Check for Dest Opts
72 { 0x50, 0, 0, 0x0 }, / Load Dest Opts Nxt Header
73 { 0x02, 0, 0, 0x0 }, / A -> M0
74 { 0x50, 0, 0, 0x1 }, / Load Dest Opts Ext Len
75 { 0x04, 0, 0, 0x1 }, / add 1 to Dest Opts Ext Len
76 { 0x64, 0, 0, 0x3 }, / multiply by 8
77 { 0x0c, 0, 0, 0x0 }, / A + X
78 { 0x07, 0, 0, 0x0 }, / A -> X
79 { 0x60, 0, 0, 0x0 }, / A <- M0
80 { 0x15, 0, 7, 0x87 }, / Check for Mobility
81 { 0x50, 0, 0, 0x0 }, / Load Mobility Nxt Header
82 { 0x02, 0, 0, 0x0 }, / A -> M0
83 { 0x50, 0, 0, 0x1 }, / Load Mobility Ext Len
84 { 0x04, 0, 0, 0x1 }, / add 1 to Mobility Ext Len
85 { 0x64, 0, 0, 0x3 }, / multiply by 8
86 { 0x0c, 0, 0, 0x0 }, / A + X
87 { 0x07, 0, 0, 0x0 }, / A -> X
88 { 0x60, 0, 0, 0x0 }, / A <- M0
89 { 0x15, 2, 0, 0x3b }, / Check for No Nxt Hdr
90 { 0x15, 0, 1, 0x3a }, / Check for ICMPv6
91 { 0x6, 0, 0, 0xffffffff }, / return pkt
92 { 0x6, 0, 0, 0x00000000 }, / return nothing