diff options
| author | Greg Steuck <greg@nest.cx> | 2020-04-25 09:33:49 -0700 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2020-04-26 04:43:15 +0200 |
| commit | 99b258ddc33e296f07588a15397ae426c6ed236c (patch) | |
| tree | 218300e17ac828aae107106f74ef2dcec5ff7366 /sys | |
| parent | 32c0bff1a887caf206ddd5ea1a8ae9df8dd166f4 (diff) | |
sys/openbsd: extend vnet
* started with freebsd/vnet.txt
* pruned unsupported items
* gmake extract
* gmake generate_sys
* gmake fomat
Diffstat (limited to 'sys')
| -rw-r--r-- | sys/openbsd/gen/amd64.go | 1046 | ||||
| -rw-r--r-- | sys/openbsd/vnet.txt | 972 | ||||
| -rw-r--r-- | sys/openbsd/vnet_amd64.const | 338 |
3 files changed, 2349 insertions, 7 deletions
diff --git a/sys/openbsd/gen/amd64.go b/sys/openbsd/gen/amd64.go index ef120292f..135db0751 100644 --- a/sys/openbsd/gen/amd64.go +++ b/sys/openbsd/gen/amd64.go @@ -43,6 +43,32 @@ var resources_amd64 = []*ResourceDesc{ } var structDescs_amd64 = []*KeyedStruct{ + {StructKey{Name: "arp_ether_ipv4_packet"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "arp_ether_ipv4_packet", TypeSize: 28}, Fields: []Type{ + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "ar_hrd", TypeSize: 2}, ArgFormat: 1}, Val: 1}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "ar_pro", TypeSize: 2}, ArgFormat: 1}, Val: 2048}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "ar_hln", TypeSize: 1}}, Val: 6}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "ar_pln", TypeSize: 1}}, Val: 4}, + &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "arp_ops", FldName: "ar_op", TypeSize: 2}, ArgFormat: 1}, Vals: []uint64{1, 2, 3, 4, 8, 9}}, + &UnionType{Key: StructKey{Name: "mac_addr"}, FldName: "ar_sha"}, + &UnionType{Key: StructKey{Name: "ipv4_addr"}, FldName: "ar_spa"}, + &UnionType{Key: StructKey{Name: "mac_addr"}, FldName: "ar_tha"}, + &UnionType{Key: StructKey{Name: "ipv4_addr"}, FldName: "ar_tpa"}, + }}}, + {StructKey{Name: "arp_generic_packet"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "arp_generic_packet", IsVarlen: true}, Fields: []Type{ + &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "arp_hrds", FldName: "ar_hrd", TypeSize: 2}, ArgFormat: 1}, Vals: []uint64{1, 6, 15, 24}}, + &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "ether_types", FldName: "ar_pro", TypeSize: 2}, ArgFormat: 1}, Vals: []uint64{4, 512, 512, 1280, 1536, 1537, 1632, 1633, 2048, 2049, 2050, 2051, 2052, 2053, 2054, 2055, 2056, 2304, 2560, 2561, 2989, 2990, 2991, 4660, 5632, 6537, 6549, 15360, 15361, 15362, 15363, 15364, 15365, 15366, 15367, 15368, 15369, 15370, 15371, 15372, 15373, 16962, 16972, 17185, 19522, 21000, 24576, 24577, 24578, 24579, 24580, 24581, 24582, 24583, 24584, 24585, 25944, 25945, 28672, 28673, 28674, 28675, 28677, 28679, 28681, 28720, 28721, 28724, 32771, 32772, 32773, 32774, 32776, 32784, 32787, 32788, 32789, 32790, 32793, 32814, 32815, 32821, 32822, 32823, 32824, 32825, 32826, 32827, 32828, 32829, 32830, 32831, 32832, 32833, 32836, 32840, 32841, 32859, 32860, 32861, 32864, 32866, 32871, 32872, 32873, 32874, 32876, 32877, 32890, 32891, 32892, 32896, 32923, 32927, 32966, 32967, 32981, 32989, 33010, 33011, 33015, 33024, 33026, 33027, 33067, 33072, 33072, 33073, 33079, 33080, 33087, 33093, 33094, 33095, 33096, 33097, 33098, 33100, 33103, 33104, 33149, 33150, 33152, 33153, 33165, 33169, 33680, 34091, 34178, 34523, 34525, 34526, 34527, 34617, 34618, 34667, 34668, 34669, 34824, 34825, 34827, 34848, 34887, 34888, 34902, 34915, 34916, 34952, 34958, 34984, 36864, 36865, 36866, 36867, 43690, 64245, 65280}}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "ar_hln", TypeSize: 1}}, Val: 6}, + &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "ar_pln", TypeSize: 1}}, Path: []string{"ar_spa"}}, + &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "arp_ops", FldName: "ar_op", TypeSize: 2}, ArgFormat: 1}, Vals: []uint64{1, 2, 3, 4, 8, 9}}, + &UnionType{Key: StructKey{Name: "mac_addr"}, FldName: "ar_sha"}, + &BufferType{TypeCommon: TypeCommon{TypeName: "array", FldName: "ar_spa", IsVarlen: true}, Kind: 1, RangeEnd: 16}, + &UnionType{Key: StructKey{Name: "mac_addr"}, FldName: "ar_tha"}, + &BufferType{TypeCommon: TypeCommon{TypeName: "array", FldName: "ar_tpa", TypeSize: 16}, Kind: 1, RangeBegin: 16, RangeEnd: 16}, + }}}, + {StructKey{Name: "arp_packet"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "arp_packet", IsVarlen: true}, Fields: []Type{ + &StructType{Key: StructKey{Name: "arp_generic_packet"}, FldName: "generic"}, + &StructType{Key: StructKey{Name: "arp_ether_ipv4_packet"}, FldName: "ether_ipv4"}, + }}}, {StructKey{Name: "bf_insns"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "bf_insns", TypeSize: 8}, Fields: []Type{ &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int16", FldName: "code", TypeSize: 2}}}, &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "jt", TypeSize: 1}}}, @@ -97,6 +123,37 @@ var structDescs_amd64 = []*KeyedStruct{ &ResourceType{TypeCommon: TypeCommon{TypeName: "fd", FldName: "fd", TypeSize: 4}}, &FlagsType{IntTypeCommon{TypeCommon: TypeCommon{TypeName: "dk_diskmap_flags", FldName: "flags", TypeSize: 4}}, []uint64{1, 2}, true}, }}}, + {StructKey{Name: "eth2_packet"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "eth2_packet", IsVarlen: true}, Fields: []Type{ + &StructType{Key: StructKey{Name: "eth2_packet_generic"}, FldName: "generic"}, + &StructType{Key: StructKey{Name: "eth2_packet_t[ETHERTYPE_ARP, arp_packet]"}, FldName: "arp"}, + &StructType{Key: StructKey{Name: "eth2_packet_t[ETHERTYPE_IP, ipv4_packet]"}, FldName: "ipv4"}, + &StructType{Key: StructKey{Name: "eth2_packet_t[ETHERTYPE_IPV6, ipv6_packet_t]"}, FldName: "ipv6"}, + }}}, + {StructKey{Name: "eth2_packet_generic"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "eth2_packet_generic", IsVarlen: true}, Fields: []Type{ + &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "ether_types", FldName: "etype", TypeSize: 2}, ArgFormat: 1}, Vals: []uint64{4, 512, 512, 1280, 1536, 1537, 1632, 1633, 2048, 2049, 2050, 2051, 2052, 2053, 2054, 2055, 2056, 2304, 2560, 2561, 2989, 2990, 2991, 4660, 5632, 6537, 6549, 15360, 15361, 15362, 15363, 15364, 15365, 15366, 15367, 15368, 15369, 15370, 15371, 15372, 15373, 16962, 16972, 17185, 19522, 21000, 24576, 24577, 24578, 24579, 24580, 24581, 24582, 24583, 24584, 24585, 25944, 25945, 28672, 28673, 28674, 28675, 28677, 28679, 28681, 28720, 28721, 28724, 32771, 32772, 32773, 32774, 32776, 32784, 32787, 32788, 32789, 32790, 32793, 32814, 32815, 32821, 32822, 32823, 32824, 32825, 32826, 32827, 32828, 32829, 32830, 32831, 32832, 32833, 32836, 32840, 32841, 32859, 32860, 32861, 32864, 32866, 32871, 32872, 32873, 32874, 32876, 32877, 32890, 32891, 32892, 32896, 32923, 32927, 32966, 32967, 32981, 32989, 33010, 33011, 33015, 33024, 33026, 33027, 33067, 33072, 33072, 33073, 33079, 33080, 33087, 33093, 33094, 33095, 33096, 33097, 33098, 33100, 33103, 33104, 33149, 33150, 33152, 33153, 33165, 33169, 33680, 34091, 34178, 34523, 34525, 34526, 34527, 34617, 34618, 34667, 34668, 34669, 34824, 34825, 34827, 34848, 34887, 34888, 34902, 34915, 34916, 34952, 34958, 34984, 36864, 36865, 36866, 36867, 43690, 64245, 65280}}, + &BufferType{TypeCommon: TypeCommon{TypeName: "array", FldName: "payload", IsVarlen: true}}, + }}}, + {StructKey{Name: "eth2_packet_t[ETHERTYPE_ARP, arp_packet]"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "eth2_packet_t[ETHERTYPE_ARP, arp_packet]", IsVarlen: true}, Fields: []Type{ + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "etype", TypeSize: 2}, ArgFormat: 1}, Val: 2054}, + &UnionType{Key: StructKey{Name: "arp_packet"}, FldName: "payload"}, + }}}, + {StructKey{Name: "eth2_packet_t[ETHERTYPE_IP, ipv4_packet]"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "eth2_packet_t[ETHERTYPE_IP, ipv4_packet]", IsVarlen: true}, Fields: []Type{ + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "etype", TypeSize: 2}, ArgFormat: 1}, Val: 2048}, + &StructType{Key: StructKey{Name: "ipv4_packet"}, FldName: "payload"}, + }}}, + {StructKey{Name: "eth2_packet_t[ETHERTYPE_IPV6, ipv6_packet_t]"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "eth2_packet_t[ETHERTYPE_IPV6, ipv6_packet_t]", IsVarlen: true}, Fields: []Type{ + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "etype", TypeSize: 2}, ArgFormat: 1}, Val: 34525}, + &StructType{Key: StructKey{Name: "ipv6_packet_t"}, FldName: "payload"}, + }}}, + {StructKey{Name: "eth_packet"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "eth_packet", IsVarlen: true}, Fields: []Type{ + &UnionType{Key: StructKey{Name: "mac_addr"}, FldName: "dst_mac"}, + &UnionType{Key: StructKey{Name: "mac_addr"}, FldName: "src_mac"}, + &ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "vtag", IsVarlen: true}, Type: &StructType{Key: StructKey{Name: "vlan_tag"}}, Kind: 1, RangeEnd: 1}, + &StructType{Key: StructKey{Name: "eth_payload"}, FldName: "payload"}, + }}}, + {StructKey{Name: "eth_payload"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "eth_payload", IsVarlen: true}, Fields: []Type{ + &UnionType{Key: StructKey{Name: "eth2_packet"}, FldName: "eth2"}, + }}}, {StructKey{"fd_set", 2}, &StructDesc{TypeCommon: TypeCommon{TypeName: "fd_set", TypeSize: 64, ArgDir: 2}, Fields: []Type{ &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int64", FldName: "mask0", TypeSize: 8, ArgDir: 2}}}, &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int64", FldName: "mask1", TypeSize: 8, ArgDir: 2}}}, @@ -116,6 +173,289 @@ var structDescs_amd64 = []*KeyedStruct{ &ResourceType{TypeCommon: TypeCommon{TypeName: "pid", FldName: "pid", TypeSize: 4}}, &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "pad", TypeSize: 4}}, IsPad: true}, }}}, + {StructKey{Name: "icmp_dest_unreach_packet"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "icmp_dest_unreach_packet", IsVarlen: true}, Fields: []Type{ + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "type", TypeSize: 1}}, Val: 3}, + &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "icmp_dest_unreach_codes", FldName: "code", TypeSize: 1}}, Vals: []uint64{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}}, + &CsumType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "csum", FldName: "csum", TypeSize: 2}, ArgFormat: 1}, Buf: "parent"}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "unused", TypeSize: 1}}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "length", TypeSize: 1}}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int16be", FldName: "mtu", TypeSize: 2}, ArgFormat: 1}}, + &StructType{Key: StructKey{Name: "icmp_ipv4_header"}, FldName: "iph"}, + &BufferType{TypeCommon: TypeCommon{TypeName: "array", FldName: "data", IsVarlen: true}, Kind: 1, RangeEnd: 8}, + }}}, + {StructKey{Name: "icmp_echo_packet"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "icmp_echo_packet", IsVarlen: true}, Fields: []Type{ + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "type", TypeSize: 1}}, Val: 8}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "code", TypeSize: 1}}}, + &CsumType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "csum", FldName: "csum", TypeSize: 2}, ArgFormat: 1}, Buf: "parent"}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int16be", FldName: "id", TypeSize: 2}, ArgFormat: 1}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int16be", FldName: "seq_num", TypeSize: 2}, ArgFormat: 1}}, + &BufferType{TypeCommon: TypeCommon{TypeName: "array", FldName: "data", IsVarlen: true}}, + }}}, + {StructKey{Name: "icmp_echo_reply_packet"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "icmp_echo_reply_packet", IsVarlen: true}, Fields: []Type{ + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "type", TypeSize: 1}}}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "code", TypeSize: 1}}}, + &CsumType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "csum", FldName: "csum", TypeSize: 2}, ArgFormat: 1}, Buf: "parent"}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int16be", FldName: "id", TypeSize: 2}, ArgFormat: 1}, Kind: 1, RangeBegin: 100, RangeEnd: 104}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int16be", FldName: "seq_num", TypeSize: 2}, ArgFormat: 1}}, + &BufferType{TypeCommon: TypeCommon{TypeName: "array", FldName: "data", IsVarlen: true}}, + }}}, + {StructKey{Name: "icmp_generic_packet"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "icmp_generic_packet", IsVarlen: true}, Fields: []Type{ + &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "icmp_types", FldName: "type", TypeSize: 1}}, Vals: []uint64{0, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 30, 31, 32, 33, 34, 35, 36, 39, 40}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "code", TypeSize: 1}}}, + &CsumType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "csum", FldName: "csum", TypeSize: 2}, ArgFormat: 1}, Buf: "parent"}, + &BufferType{TypeCommon: TypeCommon{TypeName: "array", FldName: "data", IsVarlen: true}}, + }}}, + {StructKey{Name: "icmp_info_reply_packet"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "icmp_info_reply_packet", TypeSize: 8}, Fields: []Type{ + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "type", TypeSize: 1}}, Val: 16}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "code", TypeSize: 1}}}, + &CsumType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "csum", FldName: "csum", TypeSize: 2}, ArgFormat: 1}, Buf: "parent"}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int16be", FldName: "id", TypeSize: 2}, ArgFormat: 1}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int16be", FldName: "seq_num", TypeSize: 2}, ArgFormat: 1}}, + }}}, + {StructKey{Name: "icmp_info_request_packet"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "icmp_info_request_packet", TypeSize: 8}, Fields: []Type{ + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "type", TypeSize: 1}}, Val: 15}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "code", TypeSize: 1}}}, + &CsumType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "csum", FldName: "csum", TypeSize: 2}, ArgFormat: 1}, Buf: "parent"}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int16be", FldName: "id", TypeSize: 2}, ArgFormat: 1}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int16be", FldName: "seq_num", TypeSize: 2}, ArgFormat: 1}}, + }}}, + {StructKey{Name: "icmp_ipv4_header"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "icmp_ipv4_header", IsVarlen: true}, Fields: []Type{ + &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "bytesize4", FldName: "ihl"}, BitfieldLen: 4, BitfieldUnit: 1}, BitSize: 32, Path: []string{"parent"}}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "version", TypeSize: 1}, BitfieldOff: 4, BitfieldLen: 4, BitfieldUnit: 1}, Val: 4}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "ecn"}, BitfieldLen: 2, BitfieldUnit: 1}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "dscp", TypeSize: 1}, BitfieldOff: 2, BitfieldLen: 6, BitfieldUnit: 1}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int16be", FldName: "total_len", TypeSize: 2}, ArgFormat: 1}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int16be", FldName: "id", TypeSize: 2}, ArgFormat: 1}, Kind: 1, RangeBegin: 100, RangeEnd: 104}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int16be", FldName: "frag_off", TypeSize: 2}, ArgFormat: 1}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "ttl", TypeSize: 1}}}, + &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "ipv4_types", FldName: "protocol", TypeSize: 1}}, Vals: []uint64{0, 1, 2, 3, 4, 6, 8, 12, 17, 22, 29, 41, 43, 44, 46, 47, 50, 51, 55, 58, 59, 60, 80, 97, 98, 103, 108, 112, 136, 137, 240, 255}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int16be", FldName: "csum", TypeSize: 2}, ArgFormat: 1}}, + &UnionType{Key: StructKey{Name: "ipv4_addr"}, FldName: "src_ip"}, + &UnionType{Key: StructKey{Name: "ipv4_addr"}, FldName: "dst_ip"}, + &StructType{Key: StructKey{Name: "ipv4_options"}, FldName: "options"}, + }}}, + {StructKey{Name: "icmp_mask_reply_packet"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "icmp_mask_reply_packet", TypeSize: 8}, Fields: []Type{ + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "type", TypeSize: 1}}, Val: 18}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "code", TypeSize: 1}}}, + &CsumType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "csum", FldName: "csum", TypeSize: 2}, ArgFormat: 1}, Buf: "parent"}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32be", FldName: "mask", TypeSize: 4}, ArgFormat: 1}}, + }}}, + {StructKey{Name: "icmp_mask_request_packet"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "icmp_mask_request_packet", TypeSize: 8}, Fields: []Type{ + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "type", TypeSize: 1}}, Val: 17}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "code", TypeSize: 1}}}, + &CsumType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "csum", FldName: "csum", TypeSize: 2}, ArgFormat: 1}, Buf: "parent"}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32be", FldName: "mask", TypeSize: 4}, ArgFormat: 1}}, + }}}, + {StructKey{Name: "icmp_packet"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "icmp_packet", IsVarlen: true}, Fields: []Type{ + &StructType{Key: StructKey{Name: "icmp_generic_packet"}, FldName: "generic"}, + &StructType{Key: StructKey{Name: "icmp_echo_reply_packet"}, FldName: "echo_reply"}, + &StructType{Key: StructKey{Name: "icmp_dest_unreach_packet"}, FldName: "dest_unreach"}, + &StructType{Key: StructKey{Name: "icmp_source_quench_packet"}, FldName: "source_quench"}, + &StructType{Key: StructKey{Name: "icmp_redirect_packet"}, FldName: "redirect"}, + &StructType{Key: StructKey{Name: "icmp_echo_packet"}, FldName: "echo"}, + &StructType{Key: StructKey{Name: "icmp_time_exceeded_packet"}, FldName: "time_exceeded"}, + &StructType{Key: StructKey{Name: "icmp_parameter_prob_packet"}, FldName: "parameter_prob"}, + &StructType{Key: StructKey{Name: "icmp_timestamp_packet"}, FldName: "timestamp"}, + &StructType{Key: StructKey{Name: "icmp_timestamp_reply_packet"}, FldName: "timestamp_reply"}, + &StructType{Key: StructKey{Name: "icmp_info_request_packet"}, FldName: "info_request"}, + &StructType{Key: StructKey{Name: "icmp_info_reply_packet"}, FldName: "info_reply"}, + &StructType{Key: StructKey{Name: "icmp_mask_request_packet"}, FldName: "mask_request"}, + &StructType{Key: StructKey{Name: "icmp_mask_reply_packet"}, FldName: "mask_reply"}, + }}}, + {StructKey{Name: "icmp_parameter_prob_packet"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "icmp_parameter_prob_packet", IsVarlen: true}, Fields: []Type{ + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "type", TypeSize: 1}}, Val: 12}, + &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "icmp_parameter_prob_codes", FldName: "code", TypeSize: 1}}, Vals: []uint64{0, 1, 2}}, + &CsumType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "csum", FldName: "csum", TypeSize: 2}, ArgFormat: 1}, Buf: "parent"}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "pointer", TypeSize: 1}}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "length", TypeSize: 1}}}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "unused", TypeSize: 2}}}, + &StructType{Key: StructKey{Name: "icmp_ipv4_header"}, FldName: "iph"}, + &BufferType{TypeCommon: TypeCommon{TypeName: "array", FldName: "data", IsVarlen: true}, Kind: 1, RangeEnd: 8}, + }}}, + {StructKey{Name: "icmp_redirect_packet"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "icmp_redirect_packet", IsVarlen: true}, Fields: []Type{ + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "type", TypeSize: 1}}, Val: 5}, + &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "icmp_redirect_codes", FldName: "code", TypeSize: 1}}, Vals: []uint64{0, 1, 2, 3}}, + &CsumType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "csum", FldName: "csum", TypeSize: 2}, ArgFormat: 1}, Buf: "parent"}, + &UnionType{Key: StructKey{Name: "ipv4_addr"}, FldName: "ip"}, + &StructType{Key: StructKey{Name: "icmp_ipv4_header"}, FldName: "iph"}, + &BufferType{TypeCommon: TypeCommon{TypeName: "array", FldName: "data", IsVarlen: true}, Kind: 1, RangeEnd: 8}, + }}}, + {StructKey{Name: "icmp_source_quench_packet"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "icmp_source_quench_packet", IsVarlen: true}, Fields: []Type{ + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "type", TypeSize: 1}}, Val: 4}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "code", TypeSize: 1}}}, + &CsumType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "csum", FldName: "csum", TypeSize: 2}, ArgFormat: 1}, Buf: "parent"}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "unused", TypeSize: 4}}}, + &StructType{Key: StructKey{Name: "icmp_ipv4_header"}, FldName: "iph"}, + &BufferType{TypeCommon: TypeCommon{TypeName: "array", FldName: "data", IsVarlen: true}, Kind: 1, RangeEnd: 8}, + }}}, + {StructKey{Name: "icmp_time_exceeded_packet"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "icmp_time_exceeded_packet", IsVarlen: true}, Fields: []Type{ + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "type", TypeSize: 1}}, Val: 11}, + &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "icmp_time_exceeded_codes", FldName: "code", TypeSize: 1}}, Vals: []uint64{0, 1}}, + &CsumType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "csum", FldName: "csum", TypeSize: 2}, ArgFormat: 1}, Buf: "parent"}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "unused1", TypeSize: 1}}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "length", TypeSize: 1}}}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "unused2", TypeSize: 2}}}, + &StructType{Key: StructKey{Name: "icmp_ipv4_header"}, FldName: "iph"}, + &BufferType{TypeCommon: TypeCommon{TypeName: "array", FldName: "data", IsVarlen: true}, Kind: 1, RangeEnd: 8}, + }}}, + {StructKey{Name: "icmp_timestamp_packet"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "icmp_timestamp_packet", TypeSize: 20}, Fields: []Type{ + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "type", TypeSize: 1}}, Val: 13}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "code", TypeSize: 1}}}, + &CsumType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "csum", FldName: "csum", TypeSize: 2}, ArgFormat: 1}, Buf: "parent"}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int16be", FldName: "id", TypeSize: 2}, ArgFormat: 1}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int16be", FldName: "seq_num", TypeSize: 2}, ArgFormat: 1}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32be", FldName: "orig_ts", TypeSize: 4}, ArgFormat: 1}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32be", FldName: "recv_ts", TypeSize: 4}, ArgFormat: 1}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32be", FldName: "trans_ts", TypeSize: 4}, ArgFormat: 1}}, + }}}, + {StructKey{Name: "icmp_timestamp_reply_packet"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "icmp_timestamp_reply_packet", TypeSize: 20}, Fields: []Type{ + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "type", TypeSize: 1}}, Val: 14}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "code", TypeSize: 1}}}, + &CsumType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "csum", FldName: "csum", TypeSize: 2}, ArgFormat: 1}, Buf: "parent"}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int16be", FldName: "id", TypeSize: 2}, ArgFormat: 1}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int16be", FldName: "seq_num", TypeSize: 2}, ArgFormat: 1}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32be", FldName: "orig_ts", TypeSize: 4}, ArgFormat: 1}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32be", FldName: "recv_ts", TypeSize: 4}, ArgFormat: 1}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32be", FldName: "trans_ts", TypeSize: 4}, ArgFormat: 1}}, + }}}, + {StructKey{Name: "icmpv6_dest_unreach_packet"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "icmpv6_dest_unreach_packet", IsVarlen: true}, Fields: []Type{ + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "type", TypeSize: 1}}, Val: 1}, + &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "icmpv6_dest_unreach_codes", FldName: "code", TypeSize: 1}}, Vals: []uint64{0, 1, 2, 3, 4}}, + &CsumType{IntTypeCommon{TypeCommon: TypeCommon{TypeName: "csum", FldName: "csum", TypeSize: 2}, ArgFormat: 1}, 1, "parent", 58}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "length", TypeSize: 1}}}, + &ArrayType{TypeCommon{TypeName: "array", FldName: "unused", TypeSize: 3}, &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", TypeSize: 1}}}, 1, 3, 3}, + &StructType{Key: StructKey{Name: "icmpv6_ipv6_packet"}, FldName: "packet"}, + }}}, + {StructKey{Name: "icmpv6_echo_reply_packet"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "icmpv6_echo_reply_packet", IsVarlen: true}, Fields: []Type{ + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "type", TypeSize: 1}}, Val: 129}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "code", TypeSize: 1}}}, + &CsumType{IntTypeCommon{TypeCommon: TypeCommon{TypeName: "csum", FldName: "csum", TypeSize: 2}, ArgFormat: 1}, 1, "parent", 58}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int16be", FldName: "id", TypeSize: 2}, ArgFormat: 1}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int16be", FldName: "seq_num", TypeSize: 2}, ArgFormat: 1}}, + &BufferType{TypeCommon: TypeCommon{TypeName: "array", FldName: "data", IsVarlen: true}}, + }}}, + {StructKey{Name: "icmpv6_echo_request_packet"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "icmpv6_echo_request_packet", IsVarlen: true}, Fields: []Type{ + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "type", TypeSize: 1}}, Val: 128}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "code", TypeSize: 1}}}, + &CsumType{IntTypeCommon{TypeCommon: TypeCommon{TypeName: "csum", FldName: "csum", TypeSize: 2}, ArgFormat: 1}, 1, "parent", 58}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int16be", FldName: "id", TypeSize: 2}, ArgFormat: 1}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int16be", FldName: "seq_num", TypeSize: 2}, ArgFormat: 1}}, + &BufferType{TypeCommon: TypeCommon{TypeName: "array", FldName: "data", IsVarlen: true}}, + }}}, + {StructKey{Name: "icmpv6_ipv6_packet"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "icmpv6_ipv6_packet", IsVarlen: true}, Fields: []Type{ + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "priority"}, BitfieldLen: 4, BitfieldUnit: 1}}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "version", TypeSize: 1}, BitfieldOff: 4, BitfieldLen: 4, BitfieldUnit: 1}, Val: 6}, + &BufferType{TypeCommon: TypeCommon{TypeName: "array", FldName: "flow_label", TypeSize: 3}, Kind: 1, RangeBegin: 3, RangeEnd: 3}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int16be", FldName: "length", TypeSize: 2}, ArgFormat: 1}}, + &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "ipv6_types", FldName: "next_header", TypeSize: 1}}, Vals: []uint64{0, 1, 2, 3, 4, 6, 8, 12, 17, 22, 29, 41, 43, 44, 46, 47, 50, 51, 55, 58, 59, 60, 80, 97, 98, 103, 108, 112, 136, 137, 240, 255}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "hop_limit", TypeSize: 1}}}, + &UnionType{Key: StructKey{Name: "ipv6_addr"}, FldName: "src_ip"}, + &UnionType{Key: StructKey{Name: "ipv6_addr"}, FldName: "dst_ip"}, + &ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "ext_headers", IsVarlen: true}, Type: &UnionType{Key: StructKey{Name: "ipv6_ext_header"}}}, + &BufferType{TypeCommon: TypeCommon{TypeName: "array", FldName: "data", IsVarlen: true}}, + }}}, + {StructKey{Name: "icmpv6_mld_packet"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "icmpv6_mld_packet", TypeSize: 24}, Fields: []Type{ + &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "icmpv6_mld_types", FldName: "type", TypeSize: 1}}, Vals: []uint64{130, 131}}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "code", TypeSize: 1}}}, + &CsumType{IntTypeCommon{TypeCommon: TypeCommon{TypeName: "csum", FldName: "csum", TypeSize: 2}, ArgFormat: 1}, 1, "parent", 58}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int16be", FldName: "mrd", TypeSize: 2}, ArgFormat: 1}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int16", FldName: "unused", TypeSize: 2}}}, + &UnionType{Key: StructKey{Name: "ipv6_addr"}, FldName: "addr"}, + }}}, + {StructKey{Name: "icmpv6_ndisc_neigh_advert_packet"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "icmpv6_ndisc_neigh_advert_packet", IsVarlen: true}, Fields: []Type{ + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "type", TypeSize: 1}}, Val: 136}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "code", TypeSize: 1}}}, + &CsumType{IntTypeCommon{TypeCommon: TypeCommon{TypeName: "csum", FldName: "csum", TypeSize: 2}, ArgFormat: 1}, 1, "parent", 58}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "neighbor_flags", TypeSize: 1}}}, + &ArrayType{TypeCommon{TypeName: "array", FldName: "unused", TypeSize: 3}, &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", TypeSize: 1}}}, 1, 3, 3}, + &UnionType{Key: StructKey{Name: "ipv6_addr"}, FldName: "target_addr"}, + &ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "options", IsVarlen: true}, Type: &StructType{Key: StructKey{Name: "icmpv6_ndisc_option"}}}, + }}}, + {StructKey{Name: "icmpv6_ndisc_neigh_solicit_packet"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "icmpv6_ndisc_neigh_solicit_packet", IsVarlen: true}, Fields: []Type{ + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "type", TypeSize: 1}}, Val: 135}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "code", TypeSize: 1}}}, + &CsumType{IntTypeCommon{TypeCommon: TypeCommon{TypeName: "csum", FldName: "csum", TypeSize: 2}, ArgFormat: 1}, 1, "parent", 58}, + &UnionType{Key: StructKey{Name: "ipv6_addr"}, FldName: "target_addr"}, + &ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "options", IsVarlen: true}, Type: &StructType{Key: StructKey{Name: "icmpv6_ndisc_option"}}}, + }}}, + {StructKey{Name: "icmpv6_ndisc_option"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "icmpv6_ndisc_option", IsVarlen: true}, Fields: []Type{ + &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "icmpv6_ndisc_option_types", FldName: "option_type", TypeSize: 1}}, Vals: []uint64{1, 2, 3, 4, 5, 24, 25, 31}}, + &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "bytesize8", FldName: "length", TypeSize: 1}}, BitSize: 64, Path: []string{"parent"}}, + &BufferType{TypeCommon: TypeCommon{TypeName: "array", FldName: "data", IsVarlen: true}}, + }}}, + {StructKey{Name: "icmpv6_ndisc_redir_packet"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "icmpv6_ndisc_redir_packet", IsVarlen: true}, Fields: []Type{ + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "type", TypeSize: 1}}, Val: 137}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "code", TypeSize: 1}}}, + &CsumType{IntTypeCommon{TypeCommon: TypeCommon{TypeName: "csum", FldName: "csum", TypeSize: 2}, ArgFormat: 1}, 1, "parent", 58}, + &ArrayType{TypeCommon{TypeName: "array", FldName: "unused", TypeSize: 4}, &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", TypeSize: 1}}}, 1, 4, 4}, + &UnionType{Key: StructKey{Name: "ipv6_addr"}, FldName: "target_addr"}, + &UnionType{Key: StructKey{Name: "ipv6_addr"}, FldName: "dst_addr"}, + &ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "options", IsVarlen: true}, Type: &StructType{Key: StructKey{Name: "icmpv6_ndisc_option"}}}, + }}}, + {StructKey{Name: "icmpv6_ndisc_router_advert_packet"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "icmpv6_ndisc_router_advert_packet", IsVarlen: true}, Fields: []Type{ + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "type", TypeSize: 1}}, Val: 134}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "code", TypeSize: 1}}}, + &CsumType{IntTypeCommon{TypeCommon: TypeCommon{TypeName: "csum", FldName: "csum", TypeSize: 2}, ArgFormat: 1}, 1, "parent", 58}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "cur_hop_limit", TypeSize: 1}}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "router_flags", TypeSize: 1}}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int16", FldName: "router_lifetime", TypeSize: 2}}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", FldName: "reachable_time", TypeSize: 4}}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", FldName: "retrans_time", TypeSize: 4}}}, + &ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "options", IsVarlen: true}, Type: &StructType{Key: StructKey{Name: "icmpv6_ndisc_option"}}}, + }}}, + {StructKey{Name: "icmpv6_ndisc_router_solicit_packet"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "icmpv6_ndisc_router_solicit_packet", IsVarlen: true}, Fields: []Type{ + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "type", TypeSize: 1}}, Val: 133}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "code", TypeSize: 1}}}, + &CsumType{IntTypeCommon{TypeCommon: TypeCommon{TypeName: "csum", FldName: "csum", TypeSize: 2}, ArgFormat: 1}, 1, "parent", 58}, + &ArrayType{TypeCommon{TypeName: "array", FldName: "unused", TypeSize: 4}, &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", TypeSize: 1}}}, 1, 4, 4}, + &ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "options", IsVarlen: true}, Type: &StructType{Key: StructKey{Name: "icmpv6_ndisc_option"}}}, + }}}, + {StructKey{Name: "icmpv6_ni_packet"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "icmpv6_ni_packet", IsVarlen: true}, Fields: []Type{ + &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "icmpv6_ni_types", FldName: "type", TypeSize: 1}}, Vals: []uint64{139, 140}}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "code", TypeSize: 1}}}, + &CsumType{IntTypeCommon{TypeCommon: TypeCommon{TypeName: "csum", FldName: "csum", TypeSize: 2}, ArgFormat: 1}, 1, "parent", 58}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int16be", FldName: "qtype", TypeSize: 2}, ArgFormat: 1}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int16be", FldName: "flags", TypeSize: 2}, ArgFormat: 1}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int64be", FldName: "nonce", TypeSize: 8}, ArgFormat: 1}}, + &BufferType{TypeCommon: TypeCommon{TypeName: "array", FldName: "data", IsVarlen: true}}, + }}}, + {StructKey{Name: "icmpv6_packet"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "icmpv6_packet", IsVarlen: true}, Fields: []Type{ + &StructType{Key: StructKey{Name: "icmpv6_dest_unreach_packet"}, FldName: "dest_unreach"}, + &StructType{Key: StructKey{Name: "icmpv6_pkt_toobig_packet"}, FldName: "pkt_toobig"}, + &StructType{Key: StructKey{Name: "icmpv6_time_exceed_packet"}, FldName: "time_exceed"}, + &StructType{Key: StructKey{Name: "icmpv6_param_prob_packet"}, FldName: "param_prob"}, + &StructType{Key: StructKey{Name: "icmpv6_echo_request_packet"}, FldName: "echo_request"}, + &StructType{Key: StructKey{Name: "icmpv6_echo_reply_packet"}, FldName: "echo_reply"}, + &StructType{Key: StructKey{Name: "icmpv6_mld_packet"}, FldName: "mld"}, + &StructType{Key: StructKey{Name: "icmpv6_ni_packet"}, FldName: "ni"}, + &StructType{Key: StructKey{Name: "icmpv6_ndisc_router_solicit_packet"}, FldName: "ndisc_rs"}, + &StructType{Key: StructKey{Name: "icmpv6_ndisc_router_advert_packet"}, FldName: "ndisc_ra"}, + &StructType{Key: StructKey{Name: "icmpv6_ndisc_neigh_advert_packet"}, FldName: "ndisc_na"}, + &StructType{Key: StructKey{Name: "icmpv6_ndisc_neigh_solicit_packet"}, FldName: "ndisc_ns"}, + &StructType{Key: StructKey{Name: "icmpv6_ndisc_redir_packet"}, FldName: "ndisc_redir"}, + }}}, + {StructKey{Name: "icmpv6_param_prob_packet"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "icmpv6_param_prob_packet", IsVarlen: true}, Fields: []Type{ + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "type", TypeSize: 1}}, Val: 4}, + &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "icmpv6_param_prob_codes", FldName: "code", TypeSize: 1}}, Vals: []uint64{0, 1, 2}}, + &CsumType{IntTypeCommon{TypeCommon: TypeCommon{TypeName: "csum", FldName: "csum", TypeSize: 2}, ArgFormat: 1}, 1, "parent", 58}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32be", FldName: "pointer", TypeSize: 4}, ArgFormat: 1}}, + &StructType{Key: StructKey{Name: "icmpv6_ipv6_packet"}, FldName: "packet"}, + }}}, + {StructKey{Name: "icmpv6_pkt_toobig_packet"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "icmpv6_pkt_toobig_packet", IsVarlen: true}, Fields: []Type{ + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "type", TypeSize: 1}}, Val: 2}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "code", TypeSize: 1}}}, + &CsumType{IntTypeCommon{TypeCommon: TypeCommon{TypeName: "csum", FldName: "csum", TypeSize: 2}, ArgFormat: 1}, 1, "parent", 58}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32be", FldName: "mtu", TypeSize: 4}, ArgFormat: 1}}, + &StructType{Key: StructKey{Name: "icmpv6_ipv6_packet"}, FldName: "packet"}, + }}}, + {StructKey{Name: "icmpv6_time_exceed_packet"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "icmpv6_time_exceed_packet", IsVarlen: true}, Fields: []Type{ + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "type", TypeSize: 1}}, Val: 3}, + &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "icmpv6_time_exceed_codes", FldName: "code", TypeSize: 1}}, Vals: []uint64{0, 1}}, + &CsumType{IntTypeCommon{TypeCommon: TypeCommon{TypeName: "csum", FldName: "csum", TypeSize: 2}, ArgFormat: 1}, 1, "parent", 58}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "length", TypeSize: 1}}}, + &ArrayType{TypeCommon{TypeName: "array", FldName: "unused", TypeSize: 3}, &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", TypeSize: 1}}}, 1, 3, 3}, + &StructType{Key: StructKey{Name: "icmpv6_ipv6_packet"}, FldName: "packet"}, + }}}, {StructKey{"ifr_ifru", 1}, &StructDesc{TypeCommon: TypeCommon{TypeName: "ifr_ifru", ArgDir: 1, IsVarlen: true}, Fields: []Type{ &UnionType{Key: StructKey{"sockaddr_storage", 1}, FldName: "ifru_addr"}, &UnionType{Key: StructKey{"sockaddr_storage", 1}, FldName: "ifru_dstaddr"}, @@ -158,6 +498,254 @@ var structDescs_amd64 = []*KeyedStruct{ &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "pad1", TypeSize: 8}}}, &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "pad2", TypeSize: 8}}}, }}}, + {StructKey{Name: "ipv4_addr"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "ipv4_addr", TypeSize: 4}, Fields: []Type{ + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "empty", TypeSize: 4}, ArgFormat: 1}}, + &StructType{Key: StructKey{Name: "ipv4_addr_local"}, FldName: "local"}, + &StructType{Key: StructKey{Name: "ipv4_addr_remote"}, FldName: "remote"}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "loopback", TypeSize: 4}, ArgFormat: 1}, Val: 2130706433}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "multicast1", TypeSize: 4}, ArgFormat: 1}, Val: 3758096385}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "multicast2", TypeSize: 4}, ArgFormat: 1}, Val: 3758096386}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "broadcast", TypeSize: 4}, ArgFormat: 1}, Val: 4294967295}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32be", FldName: "rand_addr", TypeSize: 4}, ArgFormat: 1}}, + }}}, + {StructKey{Name: "ipv4_addr_local"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "ipv4_addr_local", TypeSize: 4}, Fields: []Type{ + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "a0", TypeSize: 1}}, Val: 172}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "a1", TypeSize: 1}}, Val: 20}, + &ProcType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "proc", FldName: "a2", TypeSize: 1}}, ValuesPerProc: 1}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "a3", TypeSize: 1}}, Val: 170}, + }}}, + {StructKey{Name: "ipv4_addr_remote"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "ipv4_addr_remote", TypeSize: 4}, Fields: []Type{ + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "a0", TypeSize: 1}}, Val: 172}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "a1", TypeSize: 1}}, Val: 20}, + &ProcType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "proc", FldName: "a2", TypeSize: 1}}, ValuesPerProc: 1}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "a3", TypeSize: 1}}, Val: 187}, + }}}, + {StructKey{Name: "ipv4_header"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "ipv4_header", IsVarlen: true}, Fields: []Type{ + &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "bytesize4", FldName: "ihl"}, BitfieldLen: 4, BitfieldUnit: 1}, BitSize: 32, Path: []string{"parent"}}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "version", TypeSize: 1}, BitfieldOff: 4, BitfieldLen: 4, BitfieldUnit: 1}, Val: 4}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "ecn"}, BitfieldLen: 2, BitfieldUnit: 1}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "dscp", TypeSize: 1}, BitfieldOff: 2, BitfieldLen: 6, BitfieldUnit: 1}}, + &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "total_len", TypeSize: 2}, ArgFormat: 1}, Path: []string{"ipv4_packet"}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int16be", FldName: "id", TypeSize: 2}, ArgFormat: 1}, Kind: 1, RangeBegin: 100, RangeEnd: 104}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int16be", FldName: "frag_off", TypeSize: 2}, ArgFormat: 1}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "ttl", TypeSize: 1}}}, + &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "ipv4_types", FldName: "protocol", TypeSize: 1}}, Vals: []uint64{0, 1, 2, 3, 4, 6, 8, 12, 17, 22, 29, 41, 43, 44, 46, 47, 50, 51, 55, 58, 59, 60, 80, 97, 98, 103, 108, 112, 136, 137, 240, 255}}, + &CsumType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "csum", FldName: "csum", TypeSize: 2}, ArgFormat: 1}, Buf: "parent"}, + &UnionType{Key: StructKey{Name: "ipv4_addr"}, FldName: "src_ip"}, + &UnionType{Key: StructKey{Name: "ipv4_addr"}, FldName: "dst_ip"}, + &StructType{Key: StructKey{Name: "ipv4_options"}, FldName: "options"}, + }}}, + {StructKey{Name: "ipv4_option"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "ipv4_option", IsVarlen: true}, Fields: []Type{ + &StructType{Key: StructKey{Name: "ipv4_option_generic"}, FldName: "generic"}, + &StructType{Key: StructKey{Name: "ipv4_option_end"}, FldName: "end"}, + &StructType{Key: StructKey{Name: "ipv4_option_noop"}, FldName: "noop"}, + &StructType{Key: StructKey{Name: "ipv4_option_lsrr"}, FldName: "lsrr"}, + &StructType{Key: StructKey{Name: "ipv4_option_ssrr"}, FldName: "ssrr"}, + &StructType{Key: StructKey{Name: "ipv4_option_rr"}, FldName: "rr"}, + &StructType{Key: StructKey{Name: "ipv4_option_timestamp"}, FldName: "timestamp"}, + &StructType{Key: StructKey{Name: "ipv4_option_ra"}, FldName: "ra"}, + }}}, + {StructKey{Name: "ipv4_option_end"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "ipv4_option_end", TypeSize: 1}, Fields: []Type{ + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "type", TypeSize: 1}}}, + }}}, + {StructKey{Name: "ipv4_option_generic"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "ipv4_option_generic", IsVarlen: true}, Fields: []Type{ + &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "ipv4_option_types", FldName: "type", TypeSize: 1}}, Vals: []uint64{0, 1, 7, 68, 130, 131, 136, 137, 148}}, + &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "length", TypeSize: 1}}, Path: []string{"parent"}}, + &BufferType{TypeCommon: TypeCommon{TypeName: "array", FldName: "data", IsVarlen: true}, Kind: 1, RangeEnd: 16}, + }}}, + {StructKey{Name: "ipv4_option_lsrr"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "ipv4_option_lsrr", IsVarlen: true}, Fields: []Type{ + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "type", TypeSize: 1}}, Val: 131}, + &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "length", TypeSize: 1}}, Path: []string{"parent"}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "pointer", TypeSize: 1}}}, + &ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "data", IsVarlen: true}, Type: &UnionType{Key: StructKey{Name: "ipv4_addr"}}}, + }}}, + {StructKey{Name: "ipv4_option_noop"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "ipv4_option_noop", TypeSize: 1}, Fields: []Type{ + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "type", TypeSize: 1}}, Val: 1}, + }}}, + {StructKey{Name: "ipv4_option_ra"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "ipv4_option_ra", TypeSize: 6}, Fields: []Type{ + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "type", TypeSize: 1}}, Val: 148}, + &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "length", TypeSize: 1}}, Path: []string{"parent"}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32be", FldName: "value", TypeSize: 4}, ArgFormat: 1}}, + }}}, + {StructKey{Name: "ipv4_option_rr"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "ipv4_option_rr", IsVarlen: true}, Fields: []Type{ + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "type", TypeSize: 1}}, Val: 7}, + &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "length", TypeSize: 1}}, Path: []string{"parent"}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "pointer", TypeSize: 1}}}, + &ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "data", IsVarlen: true}, Type: &UnionType{Key: StructKey{Name: "ipv4_addr"}}}, + }}}, + {StructKey{Name: "ipv4_option_ssrr"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "ipv4_option_ssrr", IsVarlen: true}, Fields: []Type{ + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "type", TypeSize: 1}}, Val: 137}, + &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "length", TypeSize: 1}}, Path: []string{"parent"}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "pointer", TypeSize: 1}}}, + &ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "data", IsVarlen: true}, Type: &UnionType{Key: StructKey{Name: "ipv4_addr"}}}, + }}}, + {StructKey{Name: "ipv4_option_timestamp"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "ipv4_option_timestamp", IsVarlen: true}, Fields: []Type{ + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "type", TypeSize: 1}}, Val: 68}, + &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "length", TypeSize: 1}}, Path: []string{"parent"}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "pointer", TypeSize: 1}}}, + &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "ipv4_option_timestamp_flags", FldName: "flg"}, BitfieldLen: 4, BitfieldUnit: 1}, Vals: []uint64{0, 1, 3}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "oflw", TypeSize: 1}, BitfieldOff: 4, BitfieldLen: 4, BitfieldUnit: 1}}, + &ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "timestamps", IsVarlen: true}, Type: &StructType{Key: StructKey{Name: "ipv4_option_timestamp_timestamp"}}}, + }}}, + {StructKey{Name: "ipv4_option_timestamp_timestamp"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "ipv4_option_timestamp_timestamp", IsVarlen: true}, Fields: []Type{ + &ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "addr", IsVarlen: true}, Type: &UnionType{Key: StructKey{Name: "ipv4_addr"}}, Kind: 1, RangeEnd: 1}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32be", FldName: "timestamp", TypeSize: 4}, ArgFormat: 1}}, + }}}, + {StructKey{Name: "ipv4_options"}, &StructDesc{TypeCommon{TypeName: "ipv4_options", IsVarlen: true}, []Type{ + &ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "options", IsVarlen: true}, Type: &UnionType{Key: StructKey{Name: "ipv4_option"}}}, + }, 4}}, + {StructKey{Name: "ipv4_packet"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "ipv4_packet", IsVarlen: true}, Fields: []Type{ + &StructType{Key: StructKey{Name: "ipv4_header"}, FldName: "header"}, + &UnionType{Key: StructKey{Name: "ipv4_payload"}, FldName: "payload"}, + }}}, + {StructKey{Name: "ipv4_payload"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "ipv4_payload", IsVarlen: true}, Fields: []Type{ + &BufferType{TypeCommon: TypeCommon{TypeName: "array", FldName: "generic", IsVarlen: true}}, + &StructType{Key: StructKey{Name: "tcp_packet"}, FldName: "tcp"}, + &StructType{Key: StructKey{Name: "udp_packet"}, FldName: "udp"}, + &UnionType{Key: StructKey{Name: "icmp_packet"}, FldName: "icmp"}, + }}}, + {StructKey{Name: "ipv6_addr"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "ipv6_addr", TypeSize: 16}, Fields: []Type{ + &BufferType{TypeCommon: TypeCommon{TypeName: "array", FldName: "rand_addr", TypeSize: 16}, Kind: 1, RangeBegin: 16, RangeEnd: 16}, + &StructType{Key: StructKey{Name: "ipv6_addr_empty"}, FldName: "empty"}, + &StructType{Key: StructKey{Name: "ipv6_addr_local"}, FldName: "local"}, + &StructType{Key: StructKey{Name: "ipv6_addr_remote"}, FldName: "remote"}, + &StructType{Key: StructKey{Name: "ipv6_addr_loopback"}, FldName: "loopback"}, + &StructType{Key: StructKey{Name: "ipv6_addr_ipv4"}, FldName: "ipv4"}, + &StructType{Key: StructKey{Name: "ipv6_addr_multicast1"}, FldName: "mcast1"}, + &StructType{Key: StructKey{Name: "ipv6_addr_multicast2"}, FldName: "mcast2"}, + }}}, + {StructKey{Name: "ipv6_addr_empty"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "ipv6_addr_empty", TypeSize: 16}, Fields: []Type{ + &ArrayType{TypeCommon{TypeName: "array", FldName: "a0", TypeSize: 16}, &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", TypeSize: 1}}}, 1, 16, 16}, + }}}, + {StructKey{Name: "ipv6_addr_ipv4"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "ipv6_addr_ipv4", TypeSize: 16}, Fields: []Type{ + &ArrayType{TypeCommon{TypeName: "array", FldName: "a0", TypeSize: 10}, &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", TypeSize: 1}}}, 1, 10, 10}, + &ArrayType{TypeCommon{TypeName: "array", FldName: "a1", TypeSize: 2}, &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", TypeSize: 1}}, Val: 255}, 1, 2, 2}, + &UnionType{Key: StructKey{Name: "ipv4_addr"}, FldName: "a3"}, + }}}, + {StructKey{Name: "ipv6_addr_local"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "ipv6_addr_local", TypeSize: 16}, Fields: []Type{ + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "a0", TypeSize: 1}}, Val: 254}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "a1", TypeSize: 1}}, Val: 128}, + &ArrayType{TypeCommon{TypeName: "array", FldName: "a2", TypeSize: 12}, &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", TypeSize: 1}}}, 1, 12, 12}, + &ProcType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "proc", FldName: "a3", TypeSize: 1}}, ValuesPerProc: 1}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "a4", TypeSize: 1}}, Val: 170}, + }}}, + {StructKey{Name: "ipv6_addr_loopback"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "ipv6_addr_loopback", TypeSize: 16}, Fields: []Type{ + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "a0", TypeSize: 8}, ArgFormat: 1}}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "a1", TypeSize: 8}, ArgFormat: 1}, Val: 1}, + }}}, + {StructKey{Name: "ipv6_addr_multicast1"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "ipv6_addr_multicast1", TypeSize: 16}, Fields: []Type{ + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "a0", TypeSize: 1}}, Val: 255}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "a1", TypeSize: 1}}, Val: 1}, + &ArrayType{TypeCommon{TypeName: "array", FldName: "a2", TypeSize: 13}, &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", TypeSize: 1}}}, 1, 13, 13}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "a3", TypeSize: 1}}, Val: 1}, + }}}, + {StructKey{Name: "ipv6_addr_multicast2"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "ipv6_addr_multicast2", TypeSize: 16}, Fields: []Type{ + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "a0", TypeSize: 1}}, Val: 255}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "a1", TypeSize: 1}}, Val: 2}, + &ArrayType{TypeCommon{TypeName: "array", FldName: "a2", TypeSize: 13}, &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", TypeSize: 1}}}, 1, 13, 13}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "a3", TypeSize: 1}}, Val: 1}, + }}}, + {StructKey{Name: "ipv6_addr_remote"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "ipv6_addr_remote", TypeSize: 16}, Fields: []Type{ + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "a0", TypeSize: 1}}, Val: 254}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "a1", TypeSize: 1}}, Val: 128}, + &ArrayType{TypeCommon{TypeName: "array", FldName: "a2", TypeSize: 12}, &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", TypeSize: 1}}}, 1, 12, 12}, + &ProcType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "proc", FldName: "a3", TypeSize: 1}}, ValuesPerProc: 1}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "a4", TypeSize: 1}}, Val: 187}, + }}}, + {StructKey{Name: "ipv6_dstopts_ext_header"}, &StructDesc{TypeCommon{TypeName: "ipv6_dstopts_ext_header", IsVarlen: true}, []Type{ + &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "ipv6_types", FldName: "next_header", TypeSize: 1}}, Vals: []uint64{0, 1, 2, 3, 4, 6, 8, 12, 17, 22, 29, 41, 43, 44, 46, 47, 50, 51, 55, 58, 59, 60, 80, 97, 98, 103, 108, 112, 136, 137, 240, 255}}, + &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "bytesize8", FldName: "length", TypeSize: 1}}, BitSize: 64, Path: []string{"options"}}, + &ArrayType{TypeCommon{TypeName: "array", FldName: "pad", TypeSize: 6}, &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", TypeSize: 1}}}, 1, 6, 6}, + &ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "options", IsVarlen: true}, Type: &UnionType{Key: StructKey{Name: "ipv6_tlv_option"}}}, + }, 8}}, + {StructKey{Name: "ipv6_ext_header"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "ipv6_ext_header", IsVarlen: true}, Fields: []Type{ + &StructType{Key: StructKey{Name: "ipv6_hopots_ext_header"}, FldName: "hopopts"}, + &StructType{Key: StructKey{Name: "ipv6_rt_hdr"}, FldName: "routing"}, + &StructType{Key: StructKey{Name: "ipv6_fragment_ext_header"}, FldName: "fragment"}, + &StructType{Key: StructKey{Name: "ipv6_dstopts_ext_header"}, FldName: "dstopts"}, + }}}, + {StructKey{Name: "ipv6_fragment_ext_header"}, &StructDesc{TypeCommon{TypeName: "ipv6_fragment_ext_header", TypeSize: 8}, []Type{ + &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "ipv6_types", FldName: "next_header", TypeSize: 1}}, Vals: []uint64{0, 1, 2, 3, 4, 6, 8, 12, 17, 22, 29, 41, 43, 44, 46, 47, 50, 51, 55, 58, 59, 60, 80, 97, 98, 103, 108, 112, 136, 137, 240, 255}}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "reserved1", TypeSize: 1}}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "fragment_off_hi", TypeSize: 1}}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "m_flag"}, BitfieldLen: 1, BitfieldUnit: 1}}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "reserved2"}, BitfieldOff: 1, BitfieldLen: 2, BitfieldUnit: 1}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "fragment_off_lo", TypeSize: 1}, BitfieldOff: 3, BitfieldLen: 5, BitfieldUnit: 1}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", FldName: "identification", TypeSize: 4}}, Kind: 1, RangeBegin: 100, RangeEnd: 104}, + }, 8}}, + {StructKey{Name: "ipv6_hopots_ext_header"}, &StructDesc{TypeCommon{TypeName: "ipv6_hopots_ext_header", IsVarlen: true}, []Type{ + &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "ipv6_types", FldName: "next_header", TypeSize: 1}}, Vals: []uint64{0, 1, 2, 3, 4, 6, 8, 12, 17, 22, 29, 41, 43, 44, 46, 47, 50, 51, 55, 58, 59, 60, 80, 97, 98, 103, 108, 112, 136, 137, 240, 255}}, + &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "bytesize8", FldName: "length", TypeSize: 1}}, BitSize: 64, Path: []string{"options"}}, + &ArrayType{TypeCommon{TypeName: "array", FldName: "pad", TypeSize: 6}, &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", TypeSize: 1}}}, 1, 6, 6}, + &ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "options", IsVarlen: true}, Type: &UnionType{Key: StructKey{Name: "ipv6_tlv_option"}}}, + }, 8}}, + {StructKey{Name: "ipv6_packet_payload"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "ipv6_packet_payload", IsVarlen: true}, Fields: []Type{ + &ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "ext_headers", IsVarlen: true}, Type: &UnionType{Key: StructKey{Name: "ipv6_ext_header"}}}, + &UnionType{Key: StructKey{Name: "ipv6_payload"}, FldName: "payload"}, + }}}, + {StructKey{Name: "ipv6_packet_t"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "ipv6_packet_t", IsVarlen: true}, Fields: []Type{ + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "priority"}, BitfieldLen: 4, BitfieldUnit: 1}}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "version", TypeSize: 1}, BitfieldOff: 4, BitfieldLen: 4, BitfieldUnit: 1}, Val: 6}, + &BufferType{TypeCommon: TypeCommon{TypeName: "array", FldName: "flow_label", TypeSize: 3}, Kind: 1, RangeBegin: 3, RangeEnd: 3}, + &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "length", TypeSize: 2}, ArgFormat: 1}, Path: []string{"payload"}}, + &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "ipv6_types", FldName: "next_header", TypeSize: 1}}, Vals: []uint64{0, 1, 2, 3, 4, 6, 8, 12, 17, 22, 29, 41, 43, 44, 46, 47, 50, 51, 55, 58, 59, 60, 80, 97, 98, 103, 108, 112, 136, 137, 240, 255}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "hop_limit", TypeSize: 1}}}, + &UnionType{Key: StructKey{Name: "ipv6_addr"}, FldName: "src_ip"}, + &UnionType{Key: StructKey{Name: "ipv6_addr"}, FldName: "dst_ip"}, + &StructType{Key: StructKey{Name: "ipv6_packet_payload"}, FldName: "payload"}, + }}}, + {StructKey{Name: "ipv6_payload"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "ipv6_payload", IsVarlen: true}, Fields: []Type{ + &BufferType{TypeCommon: TypeCommon{TypeName: "array", FldName: "generic", IsVarlen: true}}, + &StructType{Key: StructKey{Name: "tcp_packet"}, FldName: "tcp"}, + &StructType{Key: StructKey{Name: "udp_packet"}, FldName: "udp"}, + &UnionType{Key: StructKey{Name: "icmpv6_packet"}, FldName: "icmpv6"}, + }}}, + {StructKey{Name: "ipv6_rt_hdr"}, &StructDesc{TypeCommon{TypeName: "ipv6_rt_hdr", IsVarlen: true}, []Type{ + &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "ipv6_types", FldName: "next_header", TypeSize: 1}}, Vals: []uint64{0, 1, 2, 3, 4, 6, 8, 12, 17, 22, 29, 41, 43, 44, 46, 47, 50, 51, 55, 58, 59, 60, 80, 97, 98, 103, 108, 112, 136, 137, 240, 255}}, + &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "bytesize8", FldName: "length", TypeSize: 1}}, BitSize: 64, Path: []string{"data"}}, + &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "ipv6_routing_types", FldName: "routing_type", TypeSize: 1}}, Vals: []uint64{0, 0}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "segments_left", TypeSize: 1}}}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "reserved", TypeSize: 4}}}, + &ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "data", IsVarlen: true}, Type: &UnionType{Key: StructKey{Name: "ipv6_addr"}}}, + }, 8}}, + {StructKey{Name: "ipv6_tlv_generic"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "ipv6_tlv_generic", IsVarlen: true}, Fields: []Type{ + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "type", TypeSize: 1}}}, + &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "length", TypeSize: 1}}, Path: []string{"data"}}, + &BufferType{TypeCommon: TypeCommon{TypeName: "array", FldName: "data", IsVarlen: true}}, + }}}, + {StructKey{Name: "ipv6_tlv_jumbo"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "ipv6_tlv_jumbo", TypeSize: 6}, Fields: []Type{ + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "type", TypeSize: 1}}, Val: 194}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "len", TypeSize: 1}}, Val: 4}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32be", FldName: "pkt_len", TypeSize: 4}, ArgFormat: 1}}, + }}}, + {StructKey{Name: "ipv6_tlv_option"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "ipv6_tlv_option", IsVarlen: true}, Fields: []Type{ + &StructType{Key: StructKey{Name: "ipv6_tlv_generic"}, FldName: "generic"}, + &StructType{Key: StructKey{Name: "ipv6_tlv_pad1"}, FldName: "pad1"}, + &StructType{Key: StructKey{Name: "ipv6_tlv_padn"}, FldName: "padn"}, + &StructType{Key: StructKey{Name: "ipv6_tlv_jumbo"}, FldName: "jumbo"}, + &StructType{Key: StructKey{Name: "ipv6_tlv_tun_lim"}, FldName: "enc_lim"}, + &StructType{Key: StructKey{Name: "ipv6_tlv_ra"}, FldName: "ra"}, + }}}, + {StructKey{Name: "ipv6_tlv_pad1"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "ipv6_tlv_pad1", TypeSize: 3}, Fields: []Type{ + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "type", TypeSize: 1}}}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "len", TypeSize: 1}}, Val: 1}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "pad", TypeSize: 1}}}, + }}}, + {StructKey{Name: "ipv6_tlv_padn"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "ipv6_tlv_padn", IsVarlen: true}, Fields: []Type{ + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "type", TypeSize: 1}}, Val: 1}, + &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "len", TypeSize: 1}}, Path: []string{"pad"}}, + &ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "pad", IsVarlen: true}, Type: &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", TypeSize: 1}}}}, + }}}, + {StructKey{Name: "ipv6_tlv_ra"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "ipv6_tlv_ra", TypeSize: 4}, Fields: []Type{ + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "type", TypeSize: 1}}, Val: 5}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "len", TypeSize: 1}}, Val: 2}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int16be", FldName: "ra", TypeSize: 2}, ArgFormat: 1}}, + }}}, + {StructKey{Name: "ipv6_tlv_tun_lim"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "ipv6_tlv_tun_lim", TypeSize: 3}, Fields: []Type{ + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "type", TypeSize: 1}}, Val: 4}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "len", TypeSize: 1}}, Val: 1}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "encap_limit", TypeSize: 1}}}, + }}}, {StructKey{Name: "itimerval"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "itimerval", TypeSize: 32}, Fields: []Type{ &StructType{Key: StructKey{Name: "timeval"}, FldName: "interv"}, &StructType{Key: StructKey{Name: "timeval"}, FldName: "value"}, @@ -186,6 +774,21 @@ var structDescs_amd64 = []*KeyedStruct{ &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", FldName: "onoff", TypeSize: 4, ArgDir: 1}}}, &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", FldName: "linger", TypeSize: 4, ArgDir: 1}}}, }}}, + {StructKey{Name: "mac_addr"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "mac_addr", TypeSize: 6}, Fields: []Type{ + &ArrayType{TypeCommon{TypeName: "array", FldName: "empty", TypeSize: 6}, &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", TypeSize: 1}}}, 1, 6, 6}, + &StructType{Key: StructKey{Name: "mac_addr_t[const[0xaa, int8]]"}, FldName: "local"}, + &StructType{Key: StructKey{Name: "mac_addr_t[const[0xbb, int8]]"}, FldName: "remote"}, + &ArrayType{TypeCommon{TypeName: "array", FldName: "broadcast", TypeSize: 6}, &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", TypeSize: 1}}, Val: 255}, 1, 6, 6}, + &BufferType{TypeCommon: TypeCommon{TypeName: "array", FldName: "random", TypeSize: 6}, Kind: 1, RangeBegin: 6, RangeEnd: 6}, + }}}, + {StructKey{Name: "mac_addr_t[const[0xaa, int8]]"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "mac_addr_t[const[0xaa, int8]]", TypeSize: 6}, Fields: []Type{ + &ArrayType{TypeCommon{TypeName: "array", FldName: "a0", TypeSize: 5}, &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", TypeSize: 1}}, Val: 170}, 1, 5, 5}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "a1", TypeSize: 1}}, Val: 170}, + }}}, + {StructKey{Name: "mac_addr_t[const[0xbb, int8]]"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "mac_addr_t[const[0xbb, int8]]", TypeSize: 6}, Fields: []Type{ + &ArrayType{TypeCommon{TypeName: "array", FldName: "a0", TypeSize: 5}, &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", TypeSize: 1}}, Val: 170}, 1, 5, 5}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "a1", TypeSize: 1}}, Val: 187}, + }}}, {StructKey{Name: "mf6cctl"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "mf6cctl", TypeSize: 60}, Fields: []Type{ &StructType{Key: StructKey{Name: "sockaddr_in6"}, FldName: "mf6cc_origin"}, &StructType{Key: StructKey{Name: "sockaddr_in6"}, FldName: "mf6cc_mcastgrp"}, @@ -431,10 +1034,86 @@ var structDescs_amd64 = []*KeyedStruct{ &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "pad1", TypeSize: 4, ArgDir: 1}}}, &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "pad2", TypeSize: 4, ArgDir: 1}}}, }}}, + {StructKey{Name: "tcp_eol_option"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "tcp_eol_option", TypeSize: 1}, Fields: []Type{ + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "type", TypeSize: 1}}}, + }}}, + {StructKey{Name: "tcp_generic_option"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "tcp_generic_option", IsVarlen: true}, Fields: []Type{ + &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "tcp_option_types", FldName: "type", TypeSize: 1}}, Vals: []uint64{0, 1, 2, 3, 4, 5, 8, 19}}, + &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "length", TypeSize: 1}}, Path: []string{"parent"}}, + &BufferType{TypeCommon: TypeCommon{TypeName: "array", FldName: "data", IsVarlen: true}, Kind: 1, RangeEnd: 16}, + }}}, + {StructKey{Name: "tcp_header"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "tcp_header", IsVarlen: true}, Fields: []Type{ + &ProcType{IntTypeCommon{TypeCommon: TypeCommon{TypeName: "proc", FldName: "src_port", TypeSize: 2}, ArgFormat: 1}, 20000, 4}, + &ProcType{IntTypeCommon{TypeCommon: TypeCommon{TypeName: "proc", FldName: "dst_port", TypeSize: 2}, ArgFormat: 1}, 20000, 4}, + &ResourceType{TypeCommon: TypeCommon{TypeName: "tcp_seq_num", FldName: "seq_num", TypeSize: 4}}, + &ResourceType{TypeCommon: TypeCommon{TypeName: "tcp_seq_num", FldName: "ack_num", TypeSize: 4}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "ns"}, BitfieldLen: 1, BitfieldUnit: 1}}, + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "reserved"}, BitfieldOff: 1, BitfieldLen: 3, BitfieldUnit: 1}}, + &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "bytesize4", FldName: "data_off", TypeSize: 1}, BitfieldOff: 4, BitfieldLen: 4, BitfieldUnit: 1}, BitSize: 32, Path: []string{"parent"}}, + &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "tcp_flags", FldName: "flags", TypeSize: 1}}, Vals: []uint64{0, 1, 2, 4, 8, 16, 32, 64, 128}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int16be", FldName: "window_size", TypeSize: 2}, ArgFormat: 1}}, + &CsumType{IntTypeCommon{TypeCommon: TypeCommon{TypeName: "csum", FldName: "csum", TypeSize: 2}, ArgFormat: 1}, 1, "tcp_packet", 6}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int16be", FldName: "urg_ptr", TypeSize: 2}, ArgFormat: 1}}, + &StructType{Key: StructKey{Name: "tcp_options"}, FldName: "options"}, + }}}, + {StructKey{Name: "tcp_md5sig_option"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "tcp_md5sig_option", TypeSize: 18}, Fields: []Type{ + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "type", TypeSize: 1}}, Val: 19}, + &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "length", TypeSize: 1}}, Path: []string{"parent"}}, + &BufferType{TypeCommon: TypeCommon{TypeName: "array", FldName: "md5", TypeSize: 16}, Kind: 1, RangeBegin: 16, RangeEnd: 16}, + }}}, + {StructKey{Name: "tcp_mss_option"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "tcp_mss_option", TypeSize: 4}, Fields: []Type{ + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "type", TypeSize: 1}}, Val: 2}, + &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "length", TypeSize: 1}}, Path: []string{"parent"}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int16", FldName: "seg_size", TypeSize: 2}}}, + }}}, + {StructKey{Name: "tcp_nop_option"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "tcp_nop_option", TypeSize: 1}, Fields: []Type{ + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "type", TypeSize: 1}}, Val: 1}, + }}}, + {StructKey{Name: "tcp_option"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "tcp_option", IsVarlen: true}, Fields: []Type{ + &StructType{Key: StructKey{Name: "tcp_generic_option"}, FldName: "generic"}, + &StructType{Key: StructKey{Name: "tcp_nop_option"}, FldName: "nop"}, + &StructType{Key: StructKey{Name: "tcp_eol_option"}, FldName: "eol"}, + &StructType{Key: StructKey{Name: "tcp_mss_option"}, FldName: "mss"}, + &StructType{Key: StructKey{Name: "tcp_window_option"}, FldName: "window"}, + &StructType{Key: StructKey{Name: "tcp_sack_perm_option"}, FldName: "sack_perm"}, + &StructType{Key: StructKey{Name: "tcp_sack_option"}, FldName: "sack"}, + &StructType{Key: StructKey{Name: "tcp_timestamp_option"}, FldName: "timestamp"}, + &StructType{Key: StructKey{Name: "tcp_md5sig_option"}, FldName: "md5sig"}, + }}}, + {StructKey{Name: "tcp_options"}, &StructDesc{TypeCommon{TypeName: "tcp_options", IsVarlen: true}, []Type{ + &ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "options", IsVarlen: true}, Type: &UnionType{Key: StructKey{Name: "tcp_option"}}}, + }, 4}}, + {StructKey{Name: "tcp_packet"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "tcp_packet", IsVarlen: true}, Fields: []Type{ + &StructType{Key: StructKey{Name: "tcp_header"}, FldName: "header"}, + &StructType{Key: StructKey{Name: "tcp_payload"}, FldName: "payload"}, + }}}, + {StructKey{Name: "tcp_payload"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "tcp_payload", IsVarlen: true}, Fields: []Type{ + &BufferType{TypeCommon: TypeCommon{TypeName: "array", FldName: "payload", IsVarlen: true}}, + }}}, {StructKey{"tcp_resources", 1}, &StructDesc{TypeCommon: TypeCommon{TypeName: "tcp_resources", TypeSize: 8, ArgDir: 1}, Fields: []Type{ &ResourceType{TypeCommon: TypeCommon{TypeName: "tcp_seq_num", FldName: "seq", TypeSize: 4, ArgDir: 1}}, &ResourceType{TypeCommon: TypeCommon{TypeName: "tcp_seq_num", FldName: "ack", TypeSize: 4, ArgDir: 1}}, }}}, + {StructKey{Name: "tcp_sack_option"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "tcp_sack_option", IsVarlen: true}, Fields: []Type{ + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "type", TypeSize: 1}}, Val: 5}, + &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "length", TypeSize: 1}}, Path: []string{"parent"}}, + &ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "data", IsVarlen: true}, Type: &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32be", TypeSize: 4}, ArgFormat: 1}}}, + }}}, + {StructKey{Name: "tcp_sack_perm_option"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "tcp_sack_perm_option", TypeSize: 2}, Fields: []Type{ + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "type", TypeSize: 1}}, Val: 4}, + &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "length", TypeSize: 1}}, Path: []string{"parent"}}, + }}}, + {StructKey{Name: "tcp_timestamp_option"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "tcp_timestamp_option", TypeSize: 10}, Fields: []Type{ + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "type", TypeSize: 1}}, Val: 8}, + &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "length", TypeSize: 1}}, Path: []string{"parent"}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32be", FldName: "tsval", TypeSize: 4}, ArgFormat: 1}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32be", FldName: "tsecr", TypeSize: 4}, ArgFormat: 1}}, + }}}, + {StructKey{Name: "tcp_window_option"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "tcp_window_option", TypeSize: 3}, Fields: []Type{ + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "type", TypeSize: 1}}, Val: 3}, + &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "length", TypeSize: 1}}, Path: []string{"parent"}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "shift", TypeSize: 1}}}, + }}}, {StructKey{Name: "termios"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "termios", TypeSize: 44}, Fields: []Type{ &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", FldName: "iflag", TypeSize: 4}}}, &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", FldName: "oflag", TypeSize: 4}}}, @@ -491,6 +1170,19 @@ var structDescs_amd64 = []*KeyedStruct{ &ResourceType{TypeCommon: TypeCommon{TypeName: "uid", FldName: "uid", TypeSize: 4, ArgDir: 1}}, &ResourceType{TypeCommon: TypeCommon{TypeName: "gid", FldName: "gid", TypeSize: 4, ArgDir: 1}}, }}}, + {StructKey{Name: "udp_header"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "udp_header", TypeSize: 8}, Fields: []Type{ + &ProcType{IntTypeCommon{TypeCommon: TypeCommon{TypeName: "proc", FldName: "src_port", TypeSize: 2}, ArgFormat: 1}, 20000, 4}, + &ProcType{IntTypeCommon{TypeCommon: TypeCommon{TypeName: "proc", FldName: "dst_port", TypeSize: 2}, ArgFormat: 1}, 20000, 4}, + &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "length", TypeSize: 2}, ArgFormat: 1}, Path: []string{"parent"}}, + &CsumType{IntTypeCommon{TypeCommon: TypeCommon{TypeName: "csum", FldName: "csum", TypeSize: 2}, ArgFormat: 1}, 1, "parent", 17}, + }}}, + {StructKey{Name: "udp_packet"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "udp_packet", IsVarlen: true}, Fields: []Type{ + &StructType{Key: StructKey{Name: "udp_header"}, FldName: "header"}, + &StructType{Key: StructKey{Name: "udp_payload"}, FldName: "payload"}, + }}}, + {StructKey{Name: "udp_payload"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "udp_payload", IsVarlen: true}, Fields: []Type{ + &BufferType{TypeCommon: TypeCommon{TypeName: "array", FldName: "payload", IsVarlen: true}}, + }}}, {StructKey{"unix_pair", 1}, &StructDesc{TypeCommon: TypeCommon{TypeName: "unix_pair", TypeSize: 8, ArgDir: 1}, Fields: []Type{ &ResourceType{TypeCommon: TypeCommon{TypeName: "sock_unix", FldName: "fd0", TypeSize: 4, ArgDir: 1}}, &ResourceType{TypeCommon: TypeCommon{TypeName: "sock_unix", FldName: "fd1", TypeSize: 4, ArgDir: 1}}, @@ -546,6 +1238,22 @@ var structDescs_amd64 = []*KeyedStruct{ &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "pad", TypeSize: 4}}, IsPad: true}, &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int64", FldName: "vsi_base", TypeSize: 8, ArgDir: 2}}}, }}}, + {StructKey{Name: "vlan_tag"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "vlan_tag", IsVarlen: true}, Fields: []Type{ + &ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "tag_ad", IsVarlen: true}, Type: &StructType{Key: StructKey{Name: "vlan_tag_ad"}}, Kind: 1, RangeEnd: 1}, + &StructType{Key: StructKey{Name: "vlan_tag_q"}, FldName: "tag_q"}, + }}}, + {StructKey{Name: "vlan_tag_ad"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "vlan_tag_ad", TypeSize: 4}, Fields: []Type{ + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "tpid", TypeSize: 2}, ArgFormat: 1}, Val: 34984}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int16", FldName: "pcp"}, BitfieldLen: 3, BitfieldUnit: 2}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int16", FldName: "dei"}, BitfieldOff: 3, BitfieldLen: 1, BitfieldUnit: 2}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int16", FldName: "vid", TypeSize: 2}, BitfieldOff: 4, BitfieldLen: 12, BitfieldUnit: 2}, Kind: 1, RangeEnd: 4}, + }}}, + {StructKey{Name: "vlan_tag_q"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "vlan_tag_q", TypeSize: 4}, Fields: []Type{ + &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "tpid", TypeSize: 2}, ArgFormat: 1}, Val: 33024}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int16", FldName: "pcp"}, BitfieldLen: 3, BitfieldUnit: 2}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int16", FldName: "dei"}, BitfieldOff: 3, BitfieldLen: 1, BitfieldUnit: 2}}, + &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int16", FldName: "vid", TypeSize: 2}, BitfieldOff: 4, BitfieldLen: 12, BitfieldUnit: 2}, Kind: 1, RangeEnd: 4}, + }}}, {StructKey{Name: "vm_create_params"}, &StructDesc{TypeCommon: TypeCommon{TypeName: "vm_create_params", TypeSize: 1280}, Fields: []Type{ &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "vcp_nmemranges", TypeSize: 8}}, Path: []string{"vcp_memranges"}}, &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int64", FldName: "vcp_ncpus", TypeSize: 8}}}, @@ -2395,7 +3103,7 @@ var syscalls_amd64 = []*Syscall{ {NR: 36, Name: "sync", CallName: "sync"}, {Name: "syz_emit_ethernet", CallName: "syz_emit_ethernet", Args: []Type{ &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "len", TypeSize: 8}}, Path: []string{"packet"}}, - &PtrType{TypeCommon{TypeName: "ptr", FldName: "packet", TypeSize: 8}, &BufferType{TypeCommon: TypeCommon{TypeName: "array", IsVarlen: true}}}, + &PtrType{TypeCommon{TypeName: "ptr", FldName: "packet", TypeSize: 8}, &StructType{Key: StructKey{Name: "eth_packet"}}}, }}, {Name: "syz_execute_func", CallName: "syz_execute_func", Args: []Type{ &PtrType{TypeCommon{TypeName: "ptr", FldName: "text", TypeSize: 8}, &BufferType{TypeCommon: TypeCommon{TypeName: "text", IsVarlen: true}, Kind: 4}}, @@ -2465,6 +3173,16 @@ var consts_amd64 = []ConstValue{ {"AF_NS", 6}, {"AF_UNIX", 1}, {Name: "AF_UNSPEC"}, + {"ARPHRD_ETHER", 1}, + {"ARPHRD_FRELAY", 15}, + {"ARPHRD_IEEE1394", 24}, + {"ARPHRD_IEEE802", 6}, + {"ARPOP_INVREPLY", 9}, + {"ARPOP_INVREQUEST", 8}, + {"ARPOP_REPLY", 2}, + {"ARPOP_REQUEST", 1}, + {"ARPOP_REVREPLY", 4}, + {"ARPOP_REVREQUEST", 3}, {"AT_EACCESS", 1}, {"AT_FDCWD", 18446744073709551516}, {"AT_REMOVEDIR", 8}, @@ -2502,6 +3220,183 @@ var consts_amd64 = []ConstValue{ {"DIOCMAP", 3222299767}, {"DM_OPENBLCK", 2}, {"DM_OPENPART", 1}, + {"ETHERTYPE_8023", 4}, + {"ETHERTYPE_AARP", 33011}, + {"ETHERTYPE_ACCTON", 33680}, + {"ETHERTYPE_AEONIC", 32822}, + {"ETHERTYPE_ALPHA", 33098}, + {"ETHERTYPE_AMBER", 24584}, + {"ETHERTYPE_AMOEBA", 33093}, + {"ETHERTYPE_APOLLO", 33015}, + {"ETHERTYPE_APOLLODOMAIN", 32793}, + {"ETHERTYPE_APPLITEK", 32967}, + {"ETHERTYPE_ARGONAUT", 32826}, + {"ETHERTYPE_ARP", 2054}, + {"ETHERTYPE_ATALK", 32923}, + {"ETHERTYPE_ATOMIC", 34527}, + {"ETHERTYPE_ATT", 32873}, + {"ETHERTYPE_ATTSTANFORD", 32776}, + {"ETHERTYPE_AUTOPHON", 32874}, + {"ETHERTYPE_AXIS", 34902}, + {"ETHERTYPE_BCLOOP", 36867}, + {"ETHERTYPE_BOFL", 33026}, + {"ETHERTYPE_CABLETRON", 28724}, + {"ETHERTYPE_CHAOS", 2052}, + {"ETHERTYPE_COMDESIGN", 32876}, + {"ETHERTYPE_COMPUGRAPHIC", 32877}, + {"ETHERTYPE_COUNTERPOINT", 32866}, + {"ETHERTYPE_CRONUS", 32772}, + {"ETHERTYPE_CRONUSVLN", 32771}, + {"ETHERTYPE_DCA", 4660}, + {"ETHERTYPE_DDE", 32891}, + {"ETHERTYPE_DEBNI", 43690}, + {"ETHERTYPE_DECAM", 32840}, + {"ETHERTYPE_DECCUST", 24582}, + {"ETHERTYPE_DECDIAG", 24581}, + {"ETHERTYPE_DECDNS", 32828}, + {"ETHERTYPE_DECDTS", 32830}, + {"ETHERTYPE_DECEXPER", 24576}, + {"ETHERTYPE_DECLAST", 32833}, + {"ETHERTYPE_DECLTM", 32831}, + {"ETHERTYPE_DECMUMPS", 24585}, + {"ETHERTYPE_DECNETBIOS", 32832}, + {"ETHERTYPE_DECnet", 24579}, + {"ETHERTYPE_DELTACON", 34526}, + {"ETHERTYPE_DIDDLE", 17185}, + {"ETHERTYPE_DLOG1", 1632}, + {"ETHERTYPE_DLOG2", 1633}, + {"ETHERTYPE_DOGFIGHT", 6537}, + {"ETHERTYPE_DSMD", 32825}, + {"ETHERTYPE_ECMA", 2051}, + {"ETHERTYPE_ENCRYPT", 32829}, + {"ETHERTYPE_ES", 32861}, + {"ETHERTYPE_EXCELAN", 32784}, + {"ETHERTYPE_EXPERDATA", 32841}, + {"ETHERTYPE_FLIP", 33094}, + {"ETHERTYPE_FLOWCONTROL", 34824}, + {"ETHERTYPE_FRARP", 2056}, + {"ETHERTYPE_GENDYN", 32872}, + {"ETHERTYPE_HAYES", 33072}, + {"ETHERTYPE_HIPPI_FP", 33152}, + {"ETHERTYPE_HITACHI", 34848}, + {"ETHERTYPE_HP", 32773}, + {"ETHERTYPE_IEEEPUP", 2560}, + {"ETHERTYPE_IEEEPUPAT", 2561}, + {"ETHERTYPE_IMLBL", 19522}, + {"ETHERTYPE_IMLBLDIAG", 16972}, + {"ETHERTYPE_IP", 2048}, + {"ETHERTYPE_IPAS", 34668}, + {"ETHERTYPE_IPV6", 34525}, + {"ETHERTYPE_IPX", 33079}, + {"ETHERTYPE_IPXNEW", 32823}, + {"ETHERTYPE_KALPANA", 34178}, + {"ETHERTYPE_LANBRIDGE", 32824}, + {"ETHERTYPE_LANPROBE", 34952}, + {"ETHERTYPE_LAT", 24580}, + {"ETHERTYPE_LITTLE", 32864}, + {"ETHERTYPE_LOGICRAFT", 33096}, + {"ETHERTYPE_LOOPBACK", 36864}, + {"ETHERTYPE_MATRA", 32890}, + {"ETHERTYPE_MERIT", 32892}, + {"ETHERTYPE_MICP", 34618}, + {"ETHERTYPE_MOPDL", 24577}, + {"ETHERTYPE_MOPRC", 24578}, + {"ETHERTYPE_MOTOROLA", 33165}, + {"ETHERTYPE_MPLS", 34887}, + {"ETHERTYPE_MPLS_MCAST", 34888}, + {"ETHERTYPE_MUMPS", 33087}, + {"ETHERTYPE_NBPCC", 15364}, + {"ETHERTYPE_NBPCLAIM", 15369}, + {"ETHERTYPE_NBPCLREQ", 15365}, + {"ETHERTYPE_NBPCLRSP", 15366}, + {"ETHERTYPE_NBPCREQ", 15362}, + {"ETHERTYPE_NBPCRSP", 15363}, + {"ETHERTYPE_NBPDG", 15367}, + {"ETHERTYPE_NBPDGB", 15368}, + {"ETHERTYPE_NBPDLTE", 15370}, + {"ETHERTYPE_NBPRAR", 15372}, + {"ETHERTYPE_NBPRAS", 15371}, + {"ETHERTYPE_NBPRST", 15373}, + {"ETHERTYPE_NBPSCD", 15361}, + {"ETHERTYPE_NBPVCD", 15360}, + {"ETHERTYPE_NBS", 2050}, + {"ETHERTYPE_NCD", 33097}, + {"ETHERTYPE_NESTAR", 32774}, + {"ETHERTYPE_NETBEUI", 33169}, + {"ETHERTYPE_NOVELL", 33080}, + {"ETHERTYPE_NS", 1536}, + {"ETHERTYPE_NSAT", 1537}, + {"ETHERTYPE_NSCOMPAT", 2055}, + {"ETHERTYPE_OS9", 28679}, + {"ETHERTYPE_OS9NET", 28681}, + {"ETHERTYPE_PACER", 32966}, + {"ETHERTYPE_PAE", 34958}, + {"ETHERTYPE_PCS", 16962}, + {"ETHERTYPE_PLANNING", 32836}, + {"ETHERTYPE_PPP", 34827}, + {"ETHERTYPE_PPPOE", 34916}, + {"ETHERTYPE_PPPOEDISC", 34915}, + {"ETHERTYPE_PRIMENTS", 28721}, + {"ETHERTYPE_PUP", 512}, + {"ETHERTYPE_PUPAT", 512}, + {"ETHERTYPE_QINQ", 34984}, + {"ETHERTYPE_RACAL", 28720}, + {"ETHERTYPE_RATIONAL", 33104}, + {"ETHERTYPE_RAWFR", 25945}, + {"ETHERTYPE_RCL", 6549}, + {"ETHERTYPE_RDP", 34617}, + {"ETHERTYPE_RETIX", 33010}, + {"ETHERTYPE_REVARP", 32821}, + {"ETHERTYPE_SCA", 24583}, + {"ETHERTYPE_SECTRA", 34523}, + {"ETHERTYPE_SECUREDATA", 34669}, + {"ETHERTYPE_SGITW", 33150}, + {"ETHERTYPE_SG_BOUNCE", 32790}, + {"ETHERTYPE_SG_DIAG", 32787}, + {"ETHERTYPE_SG_NETGAMES", 32788}, + {"ETHERTYPE_SG_RESV", 32789}, + {"ETHERTYPE_SIMNET", 21000}, + {"ETHERTYPE_SLOW", 34825}, + {"ETHERTYPE_SNA", 32981}, + {"ETHERTYPE_SNMP", 33100}, + {"ETHERTYPE_SONIX", 64245}, + {"ETHERTYPE_SPIDER", 32927}, + {"ETHERTYPE_SPRITE", 1280}, + {"ETHERTYPE_STP", 33153}, + {"ETHERTYPE_TALARIS", 33067}, + {"ETHERTYPE_TALARISMC", 34091}, + {"ETHERTYPE_TCPCOMP", 34667}, + {"ETHERTYPE_TCPSM", 36866}, + {"ETHERTYPE_TEC", 33103}, + {"ETHERTYPE_TIGAN", 32815}, + {"ETHERTYPE_TRANSETHER", 25944}, + {"ETHERTYPE_TYMSHARE", 32814}, + {"ETHERTYPE_UBBST", 28677}, + {"ETHERTYPE_UBDEBUG", 2304}, + {"ETHERTYPE_UBDIAGLOOP", 28674}, + {"ETHERTYPE_UBDL", 28672}, + {"ETHERTYPE_UBNIU", 28673}, + {"ETHERTYPE_UBNMC", 28675}, + {"ETHERTYPE_VALID", 5632}, + {"ETHERTYPE_VARIAN", 32989}, + {"ETHERTYPE_VAXELN", 32827}, + {"ETHERTYPE_VEECO", 32871}, + {"ETHERTYPE_VEXP", 32859}, + {"ETHERTYPE_VGLAB", 33073}, + {"ETHERTYPE_VINES", 2989}, + {"ETHERTYPE_VINESECHO", 2991}, + {"ETHERTYPE_VINESLOOP", 2990}, + {"ETHERTYPE_VITAL", 65280}, + {"ETHERTYPE_VLAN", 33024}, + {"ETHERTYPE_VLTLMAN", 32896}, + {"ETHERTYPE_VPROD", 32860}, + {"ETHERTYPE_VURESERVED", 33095}, + {"ETHERTYPE_WATERLOO", 33072}, + {"ETHERTYPE_WELLFLEET", 33027}, + {"ETHERTYPE_X25", 2053}, + {"ETHERTYPE_X75", 2049}, + {"ETHERTYPE_XNSSM", 36865}, + {"ETHERTYPE_XTP", 33149}, {"EVFILT_AIO", 18446744073709551613}, {"EVFILT_DEVICE", 18446744073709551608}, {"EVFILT_PROC", 18446744073709551611}, @@ -2543,8 +3438,81 @@ var consts_amd64 = []ConstValue{ {"GETPID", 4}, {"GETVAL", 5}, {"GETZCNT", 7}, + {"ICMP6_DST_UNREACH", 1}, + {"ICMP6_DST_UNREACH_ADDR", 3}, + {"ICMP6_DST_UNREACH_ADMIN", 1}, + {"ICMP6_DST_UNREACH_BEYONDSCOPE", 2}, + {"ICMP6_DST_UNREACH_NOPORT", 4}, + {Name: "ICMP6_DST_UNREACH_NOROUTE"}, + {"ICMP6_ECHO_REPLY", 129}, + {"ICMP6_ECHO_REQUEST", 128}, + {"ICMP6_NI_QUERY", 139}, + {"ICMP6_NI_REPLY", 140}, + {"ICMP6_PACKET_TOO_BIG", 2}, + {Name: "ICMP6_PARAMPROB_HEADER"}, + {"ICMP6_PARAMPROB_NEXTHEADER", 1}, + {"ICMP6_PARAMPROB_OPTION", 2}, + {"ICMP6_PARAM_PROB", 4}, + {"ICMP6_TIME_EXCEEDED", 3}, + {"ICMP6_TIME_EXCEED_REASSEMBLY", 1}, + {Name: "ICMP6_TIME_EXCEED_TRANSIT"}, + {"ICMP_ALTHOSTADDR", 6}, + {"ICMP_DATACONVERR", 31}, + {"ICMP_ECHO", 8}, + {Name: "ICMP_ECHOREPLY"}, + {"ICMP_IPV6_IAMHERE", 34}, + {"ICMP_IPV6_WHEREAREYOU", 33}, + {"ICMP_IREQ", 15}, + {"ICMP_IREQREPLY", 16}, + {"ICMP_MASKREPLY", 18}, + {"ICMP_MASKREQ", 17}, + {"ICMP_MOBILE_REDIRECT", 32}, + {"ICMP_MOBILE_REGREPLY", 36}, + {"ICMP_MOBILE_REGREQUEST", 35}, + {"ICMP_PARAMPROB", 12}, + {Name: "ICMP_PARAMPROB_ERRATPTR"}, + {"ICMP_PARAMPROB_LENGTH", 2}, + {"ICMP_PARAMPROB_OPTABSENT", 1}, + {"ICMP_PHOTURIS", 40}, + {"ICMP_REDIRECT", 5}, + {"ICMP_REDIRECT_HOST", 1}, + {Name: "ICMP_REDIRECT_NET"}, + {"ICMP_REDIRECT_TOSHOST", 3}, + {"ICMP_REDIRECT_TOSNET", 2}, + {"ICMP_ROUTERADVERT", 9}, + {"ICMP_ROUTERSOLICIT", 10}, + {"ICMP_SKIP", 39}, + {"ICMP_SOURCEQUENCH", 4}, + {"ICMP_TIMXCEED", 11}, + {Name: "ICMP_TIMXCEED_INTRANS"}, + {"ICMP_TIMXCEED_REASS", 1}, + {"ICMP_TRACEROUTE", 30}, + {"ICMP_TSTAMP", 13}, + {"ICMP_TSTAMPREPLY", 14}, + {"ICMP_UNREACH", 3}, + {"ICMP_UNREACH_FILTER_PROHIB", 13}, + {"ICMP_UNREACH_HOST", 1}, + {"ICMP_UNREACH_HOST_PRECEDENCE", 14}, + {"ICMP_UNREACH_HOST_PROHIB", 10}, + {"ICMP_UNREACH_HOST_UNKNOWN", 7}, + {"ICMP_UNREACH_ISOLATED", 8}, + {"ICMP_UNREACH_NEEDFRAG", 4}, + {Name: "ICMP_UNREACH_NET"}, + {"ICMP_UNREACH_NET_PROHIB", 9}, + {"ICMP_UNREACH_NET_UNKNOWN", 6}, + {"ICMP_UNREACH_PORT", 3}, + {"ICMP_UNREACH_PRECEDENCE_CUTOFF", 15}, + {"ICMP_UNREACH_PROTOCOL", 2}, + {"ICMP_UNREACH_SRCFAIL", 5}, + {"ICMP_UNREACH_TOSHOST", 12}, + {"ICMP_UNREACH_TOSNET", 11}, {"IFNAMSIZ", 16}, {"IFREQ_SIZE", 32}, + {"IP6OPT_JUMBO", 194}, + {Name: "IP6OPT_PAD1"}, + {"IP6OPT_PADN", 1}, + {"IP6OPT_ROUTER_ALERT", 5}, + {"IP6OPT_TUNNEL_LIMIT", 4}, {"IPC_CREAT", 512}, {"IPC_EXCL", 1024}, {"IPC_NOWAIT", 2048}, @@ -2552,9 +3520,52 @@ var consts_amd64 = []ConstValue{ {Name: "IPC_RMID"}, {"IPC_SET", 1}, {"IPC_STAT", 2}, + {Name: "IPOPT_EOL"}, + {"IPOPT_LSRR", 131}, + {"IPOPT_NOP", 1}, + {"IPOPT_RA", 148}, + {"IPOPT_RR", 7}, + {"IPOPT_SATID", 136}, + {"IPOPT_SECURITY", 130}, + {"IPOPT_SSRR", 137}, + {"IPOPT_TS", 68}, + {"IPOPT_TS_PRESPEC", 3}, + {"IPOPT_TS_TSANDADDR", 1}, + {Name: "IPOPT_TS_TSONLY"}, + {"IPPROTO_AH", 51}, + {"IPPROTO_CARP", 112}, + {"IPPROTO_DSTOPTS", 60}, + {"IPPROTO_EGP", 8}, + {"IPPROTO_ENCAP", 98}, + {"IPPROTO_EON", 80}, + {"IPPROTO_ESP", 50}, + {"IPPROTO_ETHERIP", 97}, + {"IPPROTO_FRAGMENT", 44}, + {"IPPROTO_GGP", 3}, + {"IPPROTO_GRE", 47}, {"IPPROTO_ICMP", 1}, + {"IPPROTO_ICMPV6", 58}, + {"IPPROTO_IDP", 22}, + {"IPPROTO_IGMP", 2}, {Name: "IPPROTO_IP"}, + {"IPPROTO_IPCOMP", 108}, + {"IPPROTO_IPV4", 4}, {"IPPROTO_IPV6", 41}, + {"IPPROTO_MOBILE", 55}, + {"IPPROTO_MPLS", 137}, + {"IPPROTO_NONE", 59}, + {"IPPROTO_PFSYNC", 240}, + {"IPPROTO_PIM", 103}, + {"IPPROTO_PUP", 12}, + {"IPPROTO_RAW", 255}, + {"IPPROTO_ROUTING", 43}, + {"IPPROTO_RSVP", 46}, + {"IPPROTO_TCP", 6}, + {"IPPROTO_TP", 29}, + {"IPPROTO_UDP", 17}, + {"IPPROTO_UDPLITE", 136}, + {Name: "IPV6_RTHDR_LOOSE"}, + {Name: "IPV6_RTHDR_TYPE_0"}, {"IP_OPTIONS", 1}, {"ITIMER_PROF", 2}, {Name: "ITIMER_REAL"}, @@ -2619,6 +3630,8 @@ var consts_amd64 = []ConstValue{ {"MCL_CURRENT", 1}, {"MCL_FUTURE", 2}, {"MIFF_REGISTER", 1}, + {"MLD_LISTENER_QUERY", 130}, + {"MLD_LISTENER_REPORT", 131}, {"MRT6_ADD_MFC", 104}, {"MRT6_ADD_MIF", 102}, {"MRT6_DEL_MFC", 105}, @@ -2631,6 +3644,19 @@ var consts_amd64 = []ConstValue{ {"MSG_PEEK", 2}, {"MSG_WAITALL", 64}, {"NCCS", 20}, + {"ND_NEIGHBOR_ADVERT", 136}, + {"ND_NEIGHBOR_SOLICIT", 135}, + {"ND_OPT_DNSSL", 31}, + {"ND_OPT_MTU", 5}, + {"ND_OPT_PREFIX_INFORMATION", 3}, + {"ND_OPT_RDNSS", 25}, + {"ND_OPT_REDIRECTED_HEADER", 4}, + {"ND_OPT_ROUTE_INFO", 24}, + {"ND_OPT_SOURCE_LINKADDR", 1}, + {"ND_OPT_TARGET_LINKADDR", 2}, + {"ND_REDIRECT", 137}, + {"ND_ROUTER_ADVERT", 134}, + {"ND_ROUTER_SOLICIT", 133}, {"NOTE_ATTRIB", 8}, {"NOTE_CHANGE", 1}, {"NOTE_CHILD", 4}, @@ -2885,6 +3911,22 @@ var consts_amd64 = []ConstValue{ {"S_IXGRP", 8}, {"S_IXOTH", 1}, {"S_IXUSR", 64}, + {Name: "TCPOPT_EOL"}, + {"TCPOPT_MAXSEG", 2}, + {"TCPOPT_NOP", 1}, + {"TCPOPT_SACK", 5}, + {"TCPOPT_SACK_PERMITTED", 4}, + {"TCPOPT_SIGNATURE", 19}, + {"TCPOPT_TIMESTAMP", 8}, + {"TCPOPT_WINDOW", 3}, + {"TH_ACK", 16}, + {"TH_CWR", 128}, + {"TH_ECE", 64}, + {"TH_FIN", 1}, + {"TH_PUSH", 8}, + {"TH_RST", 4}, + {"TH_SYN", 2}, + {"TH_URG", 32}, {"TIOCCBRK", 536900730}, {"TIOCCDTR", 536900728}, {"TIOCCHKVERAUTH", 536900638}, @@ -3058,4 +4100,4 @@ var consts_amd64 = []ConstValue{ {"__MAP_NOREPLACE", 2048}, } -const revision_amd64 = "a570b2d3d9a419936727c8cd0987ecf9172f7ef7" +const revision_amd64 = "ac9b6f8078c1ecfe0d04ae960aa55911b242da3f" diff --git a/sys/openbsd/vnet.txt b/sys/openbsd/vnet.txt index 1c9f99a04..bd18f899c 100644 --- a/sys/openbsd/vnet.txt +++ b/sys/openbsd/vnet.txt @@ -1,11 +1,19 @@ -# Copyright 2018 syzkaller project authors. All rights reserved. +# Copyright 2017 syzkaller project authors. All rights reserved. # Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file. -# TODO(blackgnezdo): discover a cheap way to share protocol -# descriptions between different OSs. They are platform agnostic -# and should not need to be recreated on each platform. +include <sys/types.h> +include <sys/param.h> +include <sys/socket.h> +include <net/ethertypes.h> +include <net/if_arp.h> +include <netinet/in.h> +include <netinet/ip.h> +include <netinet/ip_icmp.h> +include <netinet/ip6.h> +include <netinet/icmp6.h> +include <netinet/tcp.h> -syz_emit_ethernet(len len[packet], packet ptr[in, array[int8]]) +syz_emit_ethernet(len len[packet], packet ptr[in, eth_packet]) resource tcp_seq_num[int32]: 0x41424344 @@ -18,3 +26,957 @@ tcp_resources { # They also adds the inc arguments to the returned values, this way sequence numbers get incremented. syz_extract_tcp_res(res ptr[out, tcp_resources], seq_inc int32, ack_inc int32) syz_extract_tcp_res$synack(res ptr[out, tcp_resources], seq_inc const[1], ack_inc const[0]) + +################################################################################ +################################### Ethernet ################################### +################################################################################ + +# https://en.wikipedia.org/wiki/Ethernet_frame#Structure +# https://en.wikipedia.org/wiki/IEEE_802.1Q + +type mac_addr_t[LAST] { + a0 array[const[0xaa, int8], 5] + a1 LAST +} [packed] + +mac_addr [ + empty array[const[0x0, int8], 6] + local mac_addr_t[const[0xaa, int8]] + remote mac_addr_t[const[0xbb, int8]] + broadcast array[const[0xff, int8], 6] + random array[int8, 6] +] + +vlan_tag_ad { + tpid const[ETHERTYPE_QINQ, int16be] + pcp int16:3 + dei int16:1 + vid int16:12[0:4] +} [packed] + +vlan_tag_q { + tpid const[ETHERTYPE_VLAN, int16be] + pcp int16:3 + dei int16:1 + vid int16:12[0:4] +} [packed] + +vlan_tag { + tag_ad array[vlan_tag_ad, 0:1] + tag_q vlan_tag_q +} [packed] + +eth_packet { + dst_mac mac_addr + src_mac mac_addr + vtag array[vlan_tag, 0:1] + payload eth_payload +} [packed] + +eth_payload { + eth2 eth2_packet +} [packed] + +################################################################################ +################################## Ethernet 2 ################################## +################################################################################ + +# https://en.wikipedia.org/wiki/Ethernet_frame#Ethernet_II + +ether_types = ETHERTYPE_8023, ETHERTYPE_PUP, ETHERTYPE_PUPAT, ETHERTYPE_SPRITE, ETHERTYPE_NS, ETHERTYPE_NSAT, ETHERTYPE_DLOG1, ETHERTYPE_DLOG2, ETHERTYPE_IP, ETHERTYPE_X75, ETHERTYPE_NBS, ETHERTYPE_ECMA, ETHERTYPE_CHAOS, ETHERTYPE_X25, ETHERTYPE_ARP, ETHERTYPE_NSCOMPAT, ETHERTYPE_FRARP, ETHERTYPE_UBDEBUG, ETHERTYPE_IEEEPUP, ETHERTYPE_IEEEPUPAT, ETHERTYPE_VINES, ETHERTYPE_VINESLOOP, ETHERTYPE_VINESECHO, ETHERTYPE_DCA, ETHERTYPE_VALID, ETHERTYPE_DOGFIGHT, ETHERTYPE_RCL, ETHERTYPE_NBPVCD, ETHERTYPE_NBPSCD, ETHERTYPE_NBPCREQ, ETHERTYPE_NBPCRSP, ETHERTYPE_NBPCC, ETHERTYPE_NBPCLREQ, ETHERTYPE_NBPCLRSP, ETHERTYPE_NBPDG, ETHERTYPE_NBPDGB, ETHERTYPE_NBPCLAIM, ETHERTYPE_NBPDLTE, ETHERTYPE_NBPRAS, ETHERTYPE_NBPRAR, ETHERTYPE_NBPRST, ETHERTYPE_PCS, ETHERTYPE_IMLBLDIAG, ETHERTYPE_DIDDLE, ETHERTYPE_IMLBL, ETHERTYPE_SIMNET, ETHERTYPE_DECEXPER, ETHERTYPE_MOPDL, ETHERTYPE_MOPRC, ETHERTYPE_DECnet, ETHERTYPE_LAT, ETHERTYPE_DECDIAG, ETHERTYPE_DECCUST, ETHERTYPE_SCA, ETHERTYPE_AMBER, ETHERTYPE_DECMUMPS, ETHERTYPE_TRANSETHER, ETHERTYPE_RAWFR, ETHERTYPE_UBDL, ETHERTYPE_UBNIU, ETHERTYPE_UBDIAGLOOP, ETHERTYPE_UBNMC, ETHERTYPE_UBBST, ETHERTYPE_OS9, ETHERTYPE_OS9NET, ETHERTYPE_RACAL, ETHERTYPE_PRIMENTS, ETHERTYPE_CABLETRON, ETHERTYPE_CRONUSVLN, ETHERTYPE_CRONUS, ETHERTYPE_HP, ETHERTYPE_NESTAR, ETHERTYPE_ATTSTANFORD, ETHERTYPE_EXCELAN, ETHERTYPE_SG_DIAG, ETHERTYPE_SG_NETGAMES, ETHERTYPE_SG_RESV, ETHERTYPE_SG_BOUNCE, ETHERTYPE_APOLLODOMAIN, ETHERTYPE_TYMSHARE, ETHERTYPE_TIGAN, ETHERTYPE_REVARP, ETHERTYPE_AEONIC, ETHERTYPE_IPXNEW, ETHERTYPE_LANBRIDGE, ETHERTYPE_DSMD, ETHERTYPE_ARGONAUT, ETHERTYPE_VAXELN, ETHERTYPE_DECDNS, ETHERTYPE_ENCRYPT, ETHERTYPE_DECDTS, ETHERTYPE_DECLTM, ETHERTYPE_DECNETBIOS, ETHERTYPE_DECLAST, ETHERTYPE_PLANNING, ETHERTYPE_DECAM, ETHERTYPE_EXPERDATA, ETHERTYPE_VEXP, ETHERTYPE_VPROD, ETHERTYPE_ES, ETHERTYPE_LITTLE, ETHERTYPE_COUNTERPOINT, ETHERTYPE_VEECO, ETHERTYPE_GENDYN, ETHERTYPE_ATT, ETHERTYPE_AUTOPHON, ETHERTYPE_COMDESIGN, ETHERTYPE_COMPUGRAPHIC, ETHERTYPE_MATRA, ETHERTYPE_DDE, ETHERTYPE_MERIT, ETHERTYPE_VLTLMAN, ETHERTYPE_ATALK, ETHERTYPE_SPIDER, ETHERTYPE_PACER, ETHERTYPE_APPLITEK, ETHERTYPE_SNA, ETHERTYPE_VARIAN, ETHERTYPE_RETIX, ETHERTYPE_AARP, ETHERTYPE_APOLLO, ETHERTYPE_VLAN, ETHERTYPE_BOFL, ETHERTYPE_WELLFLEET, ETHERTYPE_TALARIS, ETHERTYPE_WATERLOO, ETHERTYPE_HAYES, ETHERTYPE_VGLAB, ETHERTYPE_IPX, ETHERTYPE_NOVELL, ETHERTYPE_MUMPS, ETHERTYPE_AMOEBA, ETHERTYPE_FLIP, ETHERTYPE_VURESERVED, ETHERTYPE_LOGICRAFT, ETHERTYPE_NCD, ETHERTYPE_ALPHA, ETHERTYPE_SNMP, ETHERTYPE_TEC, ETHERTYPE_RATIONAL, ETHERTYPE_XTP, ETHERTYPE_SGITW, ETHERTYPE_HIPPI_FP, ETHERTYPE_STP, ETHERTYPE_MOTOROLA, ETHERTYPE_NETBEUI, ETHERTYPE_ACCTON, ETHERTYPE_TALARISMC, ETHERTYPE_KALPANA, ETHERTYPE_SECTRA, ETHERTYPE_IPV6, ETHERTYPE_DELTACON, ETHERTYPE_ATOMIC, ETHERTYPE_RDP, ETHERTYPE_MICP, ETHERTYPE_TCPCOMP, ETHERTYPE_IPAS, ETHERTYPE_SECUREDATA, ETHERTYPE_FLOWCONTROL, ETHERTYPE_SLOW, ETHERTYPE_PPP, ETHERTYPE_HITACHI, ETHERTYPE_MPLS, ETHERTYPE_MPLS_MCAST, ETHERTYPE_AXIS, ETHERTYPE_PPPOEDISC, ETHERTYPE_PPPOE, ETHERTYPE_LANPROBE, ETHERTYPE_PAE, ETHERTYPE_QINQ, ETHERTYPE_LOOPBACK, ETHERTYPE_XNSSM, ETHERTYPE_TCPSM, ETHERTYPE_BCLOOP, ETHERTYPE_DEBNI, ETHERTYPE_SONIX, ETHERTYPE_VITAL + +eth2_packet [ + generic eth2_packet_generic + arp eth2_packet_t[ETHERTYPE_ARP, arp_packet] + ipv4 eth2_packet_t[ETHERTYPE_IP, ipv4_packet] + ipv6 eth2_packet_t[ETHERTYPE_IPV6, ipv6_packet_t] +] [varlen] + +eth2_packet_generic { + etype flags[ether_types, int16be] + payload array[int8] +} [packed] + +type eth2_packet_t[TYPE, PAYLOAD] { + etype const[TYPE, int16be] + payload PAYLOAD +} [packed] + +################################################################################ +###################################### ARP ##################################### +################################################################################ + +# https://en.wikipedia.org/wiki/Address_Resolution_Protocol#Packet_structure +# https://tools.ietf.org/html/rfc826 + +arp_hrds = ARPHRD_ETHER, ARPHRD_IEEE802, ARPHRD_FRELAY, ARPHRD_IEEE1394 + +arp_ops = ARPOP_REQUEST, ARPOP_REPLY, ARPOP_REVREQUEST, ARPOP_REVREPLY, ARPOP_INVREQUEST, ARPOP_INVREPLY + +arp_generic_packet { + ar_hrd flags[arp_hrds, int16be] + ar_pro flags[ether_types, int16be] + ar_hln const[6, int8] + ar_pln len[ar_spa, int8] + ar_op flags[arp_ops, int16be] + ar_sha mac_addr + ar_spa array[int8, 0:16] + ar_tha mac_addr + ar_tpa array[int8, 16] +} [packed] + +arp_ether_ipv4_packet { + ar_hrd const[ARPHRD_ETHER, int16be] + ar_pro const[ETHERTYPE_IP, int16be] + ar_hln const[6, int8] + ar_pln const[4, int8] + ar_op flags[arp_ops, int16be] + ar_sha mac_addr + ar_spa ipv4_addr + ar_tha mac_addr + ar_tpa ipv4_addr +} [packed] + +arp_packet [ + generic arp_generic_packet + ether_ipv4 arp_ether_ipv4_packet +] [varlen] + +################################################################################ +##################################### IPv4 ##################################### +################################################################################ + +# https://tools.ietf.org/html/rfc791#section-3.1 +# https://en.wikipedia.org/wiki/IPv4#Header + +# This corresponds to LOCAL_IPV4 ("172.20.%d.170" % pid) in executor/common_bsd.h +ipv4_addr_local { + a0 const[0xac, int8] + a1 const[0x14, int8] + a2 proc[0, 1, int8] + a3 const[0xaa, int8] +} [packed] + +# This corresponds to LOCAL_IPV4 ("172.20.%d.187" % pid) in executor/common_bsd.h +ipv4_addr_remote { + a0 const[0xac, int8] + a1 const[0x14, int8] + a2 proc[0, 1, int8] + a3 const[0xbb, int8] +} [packed] + +ipv4_addr [ +# 0.0.0.0 + empty const[0x0, int32be] +# 172.20.%d.170 + local ipv4_addr_local +# 172.20.%d.187 + remote ipv4_addr_remote +# 127.0.0.1 + loopback const[0x7f000001, int32be] +# 224.0.0.1 + multicast1 const[0xe0000001, int32be] +# 224.0.0.2 + multicast2 const[0xe0000002, int32be] +# 255.255.255.255 + broadcast const[0xffffffff, int32be] +# random + rand_addr int32be +] + +# http://www.iana.org/assignments/ip-parameters/ip-parameters.xhtml#ip-parameters-1 +ipv4_option [ + generic ipv4_option_generic + end ipv4_option_end + noop ipv4_option_noop + lsrr ipv4_option_lsrr + ssrr ipv4_option_ssrr + rr ipv4_option_rr + timestamp ipv4_option_timestamp + ra ipv4_option_ra +] [varlen] + +ipv4_option_types = IPOPT_EOL, IPOPT_NOP, IPOPT_RR, IPOPT_TS, IPOPT_SECURITY, IPOPT_LSRR, IPOPT_SATID, IPOPT_SSRR, IPOPT_RA + +ipv4_option_generic { + type flags[ipv4_option_types, int8] + length len[parent, int8] + data array[int8, 0:16] +} [packed] + +# https://tools.ietf.org/html/rfc791#section-3.1 +ipv4_option_end { + type const[IPOPT_EOL, int8] +} [packed] + +# https://tools.ietf.org/html/rfc791#section-3.1 +ipv4_option_noop { + type const[IPOPT_NOP, int8] +} [packed] + +# https://tools.ietf.org/html/rfc791#section-3.1 +ipv4_option_lsrr { + type const[IPOPT_LSRR, int8] + length len[parent, int8] + pointer int8 + data array[ipv4_addr] +} [packed] + +# https://tools.ietf.org/html/rfc791#section-3.1 +ipv4_option_ssrr { + type const[IPOPT_SSRR, int8] + length len[parent, int8] + pointer int8 + data array[ipv4_addr] +} [packed] + +# https://tools.ietf.org/html/rfc791#section-3.1 +ipv4_option_rr { + type const[IPOPT_RR, int8] + length len[parent, int8] + pointer int8 + data array[ipv4_addr] +} [packed] + +ipv4_option_timestamp_flags = IPOPT_TS_TSONLY, IPOPT_TS_TSANDADDR, IPOPT_TS_PRESPEC + +ipv4_option_timestamp_timestamp { + addr array[ipv4_addr, 0:1] + timestamp int32be +} [packed] + +# https://tools.ietf.org/html/rfc791#section-3.1 +# http://www.networksorcery.com/enp/protocol/ip/option004.htm +ipv4_option_timestamp { + type const[IPOPT_TS, int8] + length len[parent, int8] + pointer int8 + flg flags[ipv4_option_timestamp_flags, int8:4] + oflw int8:4 + timestamps array[ipv4_option_timestamp_timestamp] +} [packed] + +# https://tools.ietf.org/html/rfc2113 +ipv4_option_ra { + type const[IPOPT_RA, int8] + length len[parent, int8] + value int32be +} [packed] + +ipv4_options { + options array[ipv4_option] +} [packed, align[4]] + +ipv4_types = IPPROTO_IP, IPPROTO_ICMP, IPPROTO_IGMP, IPPROTO_GGP, IPPROTO_IPV4, IPPROTO_TCP, IPPROTO_EGP, IPPROTO_PUP, IPPROTO_UDP, IPPROTO_IDP, IPPROTO_TP, IPPROTO_IPV6, IPPROTO_ROUTING, IPPROTO_FRAGMENT, IPPROTO_RSVP, IPPROTO_GRE, IPPROTO_ESP, IPPROTO_AH, IPPROTO_MOBILE, IPPROTO_ICMPV6, IPPROTO_NONE, IPPROTO_DSTOPTS, IPPROTO_EON, IPPROTO_ETHERIP, IPPROTO_ENCAP, IPPROTO_PIM, IPPROTO_IPCOMP, IPPROTO_CARP, IPPROTO_UDPLITE, IPPROTO_MPLS, IPPROTO_PFSYNC, IPPROTO_RAW + +ipv4_header { + ihl bytesize4[parent, int8:4] + version const[4, int8:4] + ecn int8:2 + dscp int8:6 + total_len len[ipv4_packet, int16be] + id int16be[100:104] + frag_off int16be +# TODO: frag_off is actually 13 bits, 3 bits are flags + ttl int8 + protocol flags[ipv4_types, int8] + csum csum[parent, inet, int16be] + src_ip ipv4_addr + dst_ip ipv4_addr + options ipv4_options +} [packed] + +ipv4_packet { + header ipv4_header + payload ipv4_payload +} [packed] + +ipv4_payload [ + generic array[int8] + tcp tcp_packet + udp udp_packet + icmp icmp_packet +] [varlen] + +################################################################################ +###################################### ICMP #################################### +################################################################################ + +# https://en.wikipedia.org/wiki/Internet_Control_Message_Protocol#ICMP_datagram_structure +# https://tools.ietf.org/html/rfc792 +# https://tools.ietf.org/html/rfc4884#section-4.1 +# http://www.iana.org/assignments/icmp-parameters/icmp-parameters.xhtml + +icmp_ipv4_header { + ihl bytesize4[parent, int8:4] + version const[4, int8:4] + ecn int8:2 + dscp int8:6 + total_len int16be + id icmp_id + frag_off int16be + ttl int8 + protocol flags[ipv4_types, int8] + csum int16be + src_ip ipv4_addr + dst_ip ipv4_addr + options ipv4_options +} [packed] + +icmp_types = ICMP_ECHOREPLY, ICMP_UNREACH, ICMP_SOURCEQUENCH, ICMP_REDIRECT, ICMP_ALTHOSTADDR, ICMP_ECHO, ICMP_ROUTERADVERT, ICMP_ROUTERSOLICIT, ICMP_TIMXCEED, ICMP_PARAMPROB, ICMP_TSTAMP, ICMP_TSTAMPREPLY, ICMP_IREQ, ICMP_IREQREPLY, ICMP_MASKREQ, ICMP_MASKREPLY, ICMP_TRACEROUTE, ICMP_DATACONVERR, ICMP_MOBILE_REDIRECT, ICMP_IPV6_WHEREAREYOU, ICMP_IPV6_IAMHERE, ICMP_MOBILE_REGREQUEST, ICMP_MOBILE_REGREPLY, ICMP_SKIP, ICMP_PHOTURIS + +icmp_generic_packet { + type flags[icmp_types, int8] + code int8 + csum csum[parent, inet, int16be] + data array[int8] +} [packed] + +icmp_echo_reply_packet { + type const[ICMP_ECHOREPLY, int8] + code const[0, int8] + csum csum[parent, inet, int16be] + id icmp_id + seq_num int16be + data array[int8] +} [packed] + +type icmp_id int16be[100:104] + +icmp_dest_unreach_codes = ICMP_UNREACH_NET, ICMP_UNREACH_HOST, ICMP_UNREACH_PROTOCOL, ICMP_UNREACH_PORT, ICMP_UNREACH_NEEDFRAG, ICMP_UNREACH_SRCFAIL, ICMP_UNREACH_NET_UNKNOWN, ICMP_UNREACH_HOST_UNKNOWN, ICMP_UNREACH_ISOLATED, ICMP_UNREACH_NET_PROHIB, ICMP_UNREACH_HOST_PROHIB, ICMP_UNREACH_TOSNET, ICMP_UNREACH_TOSHOST, ICMP_UNREACH_FILTER_PROHIB, ICMP_UNREACH_HOST_PRECEDENCE, ICMP_UNREACH_PRECEDENCE_CUTOFF + +icmp_dest_unreach_packet { + type const[ICMP_UNREACH, int8] + code flags[icmp_dest_unreach_codes, int8] + csum csum[parent, inet, int16be] + unused const[0, int8] + length int8 + mtu int16be + iph icmp_ipv4_header + data array[int8, 0:8] +} [packed] + +icmp_source_quench_packet { + type const[ICMP_SOURCEQUENCH, int8] + code const[0, int8] + csum csum[parent, inet, int16be] + unused const[0, int32] + iph icmp_ipv4_header + data array[int8, 0:8] +} [packed] + +icmp_redirect_codes = ICMP_REDIRECT_NET, ICMP_REDIRECT_HOST, ICMP_REDIRECT_TOSNET, ICMP_REDIRECT_TOSHOST + +icmp_redirect_packet { + type const[ICMP_REDIRECT, int8] + code flags[icmp_redirect_codes, int8] + csum csum[parent, inet, int16be] + ip ipv4_addr + iph icmp_ipv4_header + data array[int8, 0:8] +} [packed] + +icmp_echo_packet { + type const[ICMP_ECHO, int8] + code const[0, int8] + csum csum[parent, inet, int16be] + id int16be + seq_num int16be + data array[int8] +} [packed] + +icmp_time_exceeded_codes = ICMP_TIMXCEED_INTRANS, ICMP_TIMXCEED_REASS + +icmp_time_exceeded_packet { + type const[ICMP_TIMXCEED, int8] + code flags[icmp_time_exceeded_codes, int8] + csum csum[parent, inet, int16be] + unused1 const[0, int8] + length int8 + unused2 const[0, int16] + iph icmp_ipv4_header + data array[int8, 0:8] +} [packed] + +icmp_parameter_prob_codes = ICMP_PARAMPROB_ERRATPTR, ICMP_PARAMPROB_OPTABSENT, ICMP_PARAMPROB_LENGTH + +icmp_parameter_prob_packet { + type const[ICMP_PARAMPROB, int8] + code flags[icmp_parameter_prob_codes, int8] + csum csum[parent, inet, int16be] + pointer int8 + length int8 + unused const[0, int16] + iph icmp_ipv4_header + data array[int8, 0:8] +} [packed] + +icmp_timestamp_packet { + type const[ICMP_TSTAMP, int8] + code const[0, int8] + csum csum[parent, inet, int16be] + id int16be + seq_num int16be + orig_ts int32be + recv_ts int32be + trans_ts int32be +} [packed] + +icmp_timestamp_reply_packet { + type const[ICMP_TSTAMPREPLY, int8] + code const[0, int8] + csum csum[parent, inet, int16be] + id int16be + seq_num int16be + orig_ts int32be + recv_ts int32be + trans_ts int32be +} [packed] + +icmp_info_request_packet { + type const[ICMP_IREQ, int8] + code const[0, int8] + csum csum[parent, inet, int16be] + id int16be + seq_num int16be +} [packed] + +icmp_info_reply_packet { + type const[ICMP_IREQREPLY, int8] + code const[0, int8] + csum csum[parent, inet, int16be] + id int16be + seq_num int16be +} [packed] + +icmp_mask_request_packet { + type const[ICMP_MASKREQ, int8] + code const[0, int8] + csum csum[parent, inet, int16be] + mask int32be +} [packed] + +icmp_mask_reply_packet { + type const[ICMP_MASKREPLY, int8] + code const[0, int8] + csum csum[parent, inet, int16be] + mask int32be +} [packed] + +icmp_packet [ + generic icmp_generic_packet + echo_reply icmp_echo_reply_packet + dest_unreach icmp_dest_unreach_packet + source_quench icmp_source_quench_packet + redirect icmp_redirect_packet + echo icmp_echo_packet + time_exceeded icmp_time_exceeded_packet + parameter_prob icmp_parameter_prob_packet + timestamp icmp_timestamp_packet + timestamp_reply icmp_timestamp_reply_packet + info_request icmp_info_request_packet + info_reply icmp_info_reply_packet + mask_request icmp_mask_request_packet + mask_reply icmp_mask_reply_packet +] [varlen] + +################################################################################ +##################################### IPv6 ##################################### +################################################################################ + +ipv6_types = IPPROTO_IP, IPPROTO_ICMP, IPPROTO_IGMP, IPPROTO_GGP, IPPROTO_IPV4, IPPROTO_TCP, IPPROTO_EGP, IPPROTO_PUP, IPPROTO_UDP, IPPROTO_IDP, IPPROTO_TP, IPPROTO_IPV6, IPPROTO_ROUTING, IPPROTO_FRAGMENT, IPPROTO_RSVP, IPPROTO_GRE, IPPROTO_ESP, IPPROTO_AH, IPPROTO_MOBILE, IPPROTO_ICMPV6, IPPROTO_NONE, IPPROTO_DSTOPTS, IPPROTO_EON, IPPROTO_ETHERIP, IPPROTO_ENCAP, IPPROTO_PIM, IPPROTO_IPCOMP, IPPROTO_CARP, IPPROTO_UDPLITE, IPPROTO_MPLS, IPPROTO_PFSYNC, IPPROTO_RAW + +ipv6_addr_empty { + a0 array[const[0x0, int8], 16] +} + +# This corresponds to LOCAL_IPV6 ("fe80::%02hxaa" % pid) in executor/common_bsd.h +ipv6_addr_local { + a0 const[0xfe, int8] + a1 const[0x80, int8] + a2 array[const[0x0, int8], 12] + a3 proc[0, 1, int8] + a4 const[0xaa, int8] +} [packed] + +# This corresponds to REMOTE_IPV6 ("fe80::%02hxbb" % pid) in executor/common_bsd.h +ipv6_addr_remote { + a0 const[0xfe, int8] + a1 const[0x80, int8] + a2 array[const[0x0, int8], 12] + a3 proc[0, 1, int8] + a4 const[0xbb, int8] +} [packed] + +ipv6_addr_loopback { + a0 const[0, int64be] + a1 const[1, int64be] +} [packed] + +ipv6_addr_ipv4 { + a0 array[const[0x0, int8], 10] + a1 array[const[0xff, int8], 2] + a3 ipv4_addr +} [packed] + +ipv6_addr_multicast1 { + a0 const[0xff, int8] + a1 const[0x1, int8] + a2 array[const[0x0, int8], 13] + a3 const[0x1, int8] +} [packed] + +ipv6_addr_multicast2 { + a0 const[0xff, int8] + a1 const[0x2, int8] + a2 array[const[0x0, int8], 13] + a3 const[0x1, int8] +} [packed] + +ipv6_addr [ + rand_addr array[int8, 16] + empty ipv6_addr_empty + local ipv6_addr_local + remote ipv6_addr_remote + loopback ipv6_addr_loopback + ipv4 ipv6_addr_ipv4 + mcast1 ipv6_addr_multicast1 + mcast2 ipv6_addr_multicast2 +] [size[16]] + +# https://tools.ietf.org/html/rfc2402 +# https://tools.ietf.org/html/rfc2406 +# https://tools.ietf.org/html/rfc3775 + +# https://tools.ietf.org/html/rfc2460#section-4 +# The length field in each of the extension headers specifies the +# length of the header in 8-octet units not including the first 8 octets. + +ipv6_ext_header [ + hopopts ipv6_hopots_ext_header + routing ipv6_rt_hdr + fragment ipv6_fragment_ext_header + dstopts ipv6_dstopts_ext_header +] [varlen] + +ipv6_hopots_ext_header { + next_header flags[ipv6_types, int8] + length bytesize8[options, int8] + pad array[const[0, int8], 6] + options array[ipv6_tlv_option] +} [packed, align[8]] + +ipv6_routing_types = IPV6_RTHDR_LOOSE, IPV6_RTHDR_TYPE_0 + +ipv6_rt_hdr { + next_header flags[ipv6_types, int8] + length bytesize8[data, int8] + routing_type flags[ipv6_routing_types, int8] + segments_left int8 + reserved const[0, int32] + data array[ipv6_addr] +} [packed, align[8]] + +ipv6_fragment_ext_header { + next_header flags[ipv6_types, int8] + reserved1 const[0, int8] + fragment_off_hi int8 + m_flag int8:1 + reserved2 const[0, int8:2] + fragment_off_lo int8:5 + identification int32[100:104] +} [packed, align[8]] + +ipv6_dstopts_ext_header { + next_header flags[ipv6_types, int8] + length bytesize8[options, int8] + pad array[const[0, int8], 6] + options array[ipv6_tlv_option] +} [packed, align[8]] + +ipv6_tlv_option [ + generic ipv6_tlv_generic + pad1 ipv6_tlv_pad1 + padn ipv6_tlv_padn + jumbo ipv6_tlv_jumbo + enc_lim ipv6_tlv_tun_lim + ra ipv6_tlv_ra +] [varlen] + +ipv6_tlv_generic { + type int8 + length len[data, int8] + data array[int8] +} [packed] + +ipv6_tlv_pad1 { + type const[IP6OPT_PAD1, int8] + len const[1, int8] + pad const[0, int8] +} [packed] + +ipv6_tlv_padn { + type const[IP6OPT_PADN, int8] + len len[pad, int8] + pad array[const[0, int8]] +} [packed] + +ipv6_tlv_jumbo { + type const[IP6OPT_JUMBO, int8] + len const[4, int8] + pkt_len int32be +} [packed] + +ipv6_tlv_tun_lim { + type const[IP6OPT_TUNNEL_LIMIT, int8] + len const[1, int8] + encap_limit int8 +} [packed] + +ipv6_tlv_ra { + type const[IP6OPT_ROUTER_ALERT, int8] + len const[2, int8] + ra int16be +} [packed] + +ipv6_packet_t { + priority int8:4 + version const[6, int8:4] + flow_label array[int8, 3] +# TODO: flow_label is actually 20 bits, 4 bits are part of priority + length len[payload, int16be] + next_header flags[ipv6_types, int8] + hop_limit int8 + src_ip ipv6_addr + dst_ip ipv6_addr + payload ipv6_packet_payload +} [packed] + +ipv6_packet_payload { + ext_headers array[ipv6_ext_header] + payload ipv6_payload +} [packed] + +ipv6_payload [ + generic array[int8] + tcp tcp_packet + udp udp_packet + icmpv6 icmpv6_packet +] [varlen] + +################################################################################ +##################################### ICMPv6 ################################### +################################################################################ + +# https://tools.ietf.org/html/rfc4443 +# http://www.iana.org/assignments/icmpv6-parameters/icmpv6-parameters.xhtml + +icmpv6_ipv6_packet { + priority int8:4 + version const[6, int8:4] + flow_label array[int8, 3] + length int16be + next_header flags[ipv6_types, int8] + hop_limit int8 + src_ip ipv6_addr + dst_ip ipv6_addr + ext_headers array[ipv6_ext_header] + data array[int8] +} [packed] + +icmpv6_dest_unreach_codes = ICMP6_DST_UNREACH_NOROUTE, ICMP6_DST_UNREACH_ADMIN, ICMP6_DST_UNREACH_BEYONDSCOPE, ICMP6_DST_UNREACH_ADDR, ICMP6_DST_UNREACH_NOPORT + +icmpv6_dest_unreach_packet { + type const[ICMP6_DST_UNREACH, int8] + code flags[icmpv6_dest_unreach_codes, int8] + csum csum[parent, pseudo, IPPROTO_ICMPV6, int16be] + length int8 + unused array[const[0, int8], 3] + packet icmpv6_ipv6_packet +} [packed] + +icmpv6_pkt_toobig_packet { + type const[ICMP6_PACKET_TOO_BIG, int8] + code const[0, int8] + csum csum[parent, pseudo, IPPROTO_ICMPV6, int16be] + mtu int32be + packet icmpv6_ipv6_packet +} [packed] + +icmpv6_time_exceed_codes = ICMP6_TIME_EXCEED_TRANSIT, ICMP6_TIME_EXCEED_REASSEMBLY + +icmpv6_time_exceed_packet { + type const[ICMP6_TIME_EXCEEDED, int8] + code flags[icmpv6_time_exceed_codes, int8] + csum csum[parent, pseudo, IPPROTO_ICMPV6, int16be] + length int8 + unused array[const[0, int8], 3] + packet icmpv6_ipv6_packet +} [packed] + +icmpv6_param_prob_codes = ICMP6_PARAMPROB_HEADER, ICMP6_PARAMPROB_NEXTHEADER, ICMP6_PARAMPROB_OPTION + +icmpv6_param_prob_packet { + type const[ICMP6_PARAM_PROB, int8] + code flags[icmpv6_param_prob_codes, int8] + csum csum[parent, pseudo, IPPROTO_ICMPV6, int16be] + pointer int32be + packet icmpv6_ipv6_packet +} [packed] + +icmpv6_echo_request_packet { + type const[ICMP6_ECHO_REQUEST, int8] + code const[0, int8] + csum csum[parent, pseudo, IPPROTO_ICMPV6, int16be] + id int16be + seq_num int16be + data array[int8] +} [packed] + +icmpv6_echo_reply_packet { + type const[ICMP6_ECHO_REPLY, int8] + code const[0, int8] + csum csum[parent, pseudo, IPPROTO_ICMPV6, int16be] + id int16be + seq_num int16be + data array[int8] +} [packed] + +icmpv6_mld_types = MLD_LISTENER_QUERY, MLD_LISTENER_REPORT + +# https://tools.ietf.org/html/rfc2710#section-3 +icmpv6_mld_packet { + type flags[icmpv6_mld_types, int8] + code const[0, int8] + csum csum[parent, pseudo, IPPROTO_ICMPV6, int16be] + mrd int16be + unused int16 + addr ipv6_addr +} [packed] + +icmpv6_ni_types = ICMP6_NI_QUERY, ICMP6_NI_REPLY + +# https://tools.ietf.org/html/rfc4620#section-4 +icmpv6_ni_packet { + type flags[icmpv6_ni_types, int8] + code const[0, int8] + csum csum[parent, pseudo, IPPROTO_ICMPV6, int16be] + qtype int16be + flags int16be + nonce int64be + data array[int8] +} [packed] + +icmpv6_ndisc_option_types = ND_OPT_SOURCE_LINKADDR, ND_OPT_TARGET_LINKADDR, ND_OPT_PREFIX_INFORMATION, ND_OPT_REDIRECTED_HEADER, ND_OPT_MTU, ND_OPT_ROUTE_INFO, ND_OPT_RDNSS, ND_OPT_DNSSL + +# https://tools.ietf.org/html/rfc4861#section-4.6 +icmpv6_ndisc_option { + option_type flags[icmpv6_ndisc_option_types, int8] + length bytesize8[parent, int8] +# TODO: define the option formats + data array[int8] +} [packed] + +# https://tools.ietf.org/html/rfc4861#section-4.1 +icmpv6_ndisc_router_solicit_packet { + type const[ND_ROUTER_SOLICIT, int8] + code const[0, int8] + csum csum[parent, pseudo, IPPROTO_ICMPV6, int16be] + unused array[const[0, int8], 4] + options array[icmpv6_ndisc_option] +} [packed] + +# https://tools.ietf.org/html/rfc4861#section-4.2 +icmpv6_ndisc_router_advert_packet { + type const[ND_ROUTER_ADVERT, int8] + code const[0, int8] + csum csum[parent, pseudo, IPPROTO_ICMPV6, int16be] + cur_hop_limit int8 +# TODO: Implement bitflags for the router advert flags + router_flags int8 + router_lifetime int16 + reachable_time int32 + retrans_time int32 + options array[icmpv6_ndisc_option] +} [packed] + +# https://tools.ietf.org/html/rfc4861#section-4.3 +icmpv6_ndisc_neigh_solicit_packet { + type const[ND_NEIGHBOR_SOLICIT, int8] + code const[0, int8] + csum csum[parent, pseudo, IPPROTO_ICMPV6, int16be] + target_addr ipv6_addr + options array[icmpv6_ndisc_option] +} [packed] + +# https://tools.ietf.org/html/rfc4861#section-4.4 +icmpv6_ndisc_neigh_advert_packet { + type const[ND_NEIGHBOR_ADVERT, int8] + code const[0, int8] + csum csum[parent, pseudo, IPPROTO_ICMPV6, int16be] +# TODO: Implement bitflags for the neighbor advert flags + neighbor_flags int8 + unused array[const[0, int8], 3] + target_addr ipv6_addr + options array[icmpv6_ndisc_option] +} [packed] + +# https://tools.ietf.org/html/rfc4861#section-4.5 +icmpv6_ndisc_redir_packet { + type const[ND_REDIRECT, int8] + code const[0, int8] + csum csum[parent, pseudo, IPPROTO_ICMPV6, int16be] + unused array[const[0, int8], 4] + target_addr ipv6_addr + dst_addr ipv6_addr + options array[icmpv6_ndisc_option] +} [packed] + +icmpv6_packet [ + dest_unreach icmpv6_dest_unreach_packet + pkt_toobig icmpv6_pkt_toobig_packet + time_exceed icmpv6_time_exceed_packet + param_prob icmpv6_param_prob_packet + echo_request icmpv6_echo_request_packet + echo_reply icmpv6_echo_reply_packet + mld icmpv6_mld_packet + ni icmpv6_ni_packet + ndisc_rs icmpv6_ndisc_router_solicit_packet + ndisc_ra icmpv6_ndisc_router_advert_packet + ndisc_na icmpv6_ndisc_neigh_advert_packet + ndisc_ns icmpv6_ndisc_neigh_solicit_packet + ndisc_redir icmpv6_ndisc_redir_packet +] [varlen] + +################################################################################ +###################################### TCP ##################################### +################################################################################ + +# https://tools.ietf.org/html/rfc793#section-3.1 +# https://en.wikipedia.org/wiki/Transmission_Control_Protocol#TCP_segment_structure +# http://www.iana.org/assignments/tcp-parameters/tcp-parameters.xhtml + +tcp_option [ + generic tcp_generic_option + nop tcp_nop_option + eol tcp_eol_option + mss tcp_mss_option + window tcp_window_option + sack_perm tcp_sack_perm_option + sack tcp_sack_option + timestamp tcp_timestamp_option + md5sig tcp_md5sig_option +] [varlen] + +tcp_option_types = TCPOPT_EOL, TCPOPT_NOP, TCPOPT_MAXSEG, TCPOPT_WINDOW, TCPOPT_SACK_PERMITTED, TCPOPT_SACK, TCPOPT_TIMESTAMP, TCPOPT_SIGNATURE + +tcp_generic_option { + type flags[tcp_option_types, int8] + length len[parent, int8] + data array[int8, 0:16] +} [packed] + +# https://tools.ietf.org/html/rfc793#section-3.1 +tcp_eol_option { + type const[TCPOPT_EOL, int8] +} [packed] + +# https://tools.ietf.org/html/rfc793#section-3.1 +tcp_nop_option { + type const[TCPOPT_NOP, int8] +} [packed] + +# https://tools.ietf.org/html/rfc793#section-3.1 +tcp_mss_option { + type const[TCPOPT_MAXSEG, int8] + length len[parent, int8] + seg_size int16 +} [packed] + +# https://tools.ietf.org/html/rfc7323#section-2 +tcp_window_option { + type const[TCPOPT_WINDOW, int8] + length len[parent, int8] + shift int8 +} [packed] + +# https://tools.ietf.org/html/rfc2018#section-2 +tcp_sack_perm_option { + type const[TCPOPT_SACK_PERMITTED, int8] + length len[parent, int8] +} [packed] + +# https://tools.ietf.org/html/rfc2018#section-3 +tcp_sack_option { + type const[TCPOPT_SACK, int8] + length len[parent, int8] + data array[int32be] +} [packed] + +# https://tools.ietf.org/html/rfc7323#section-3 +tcp_timestamp_option { + type const[TCPOPT_TIMESTAMP, int8] + length len[parent, int8] + tsval int32be + tsecr int32be +} [packed] + +# https://tools.ietf.org/html/rfc2385#section-3.0 +tcp_md5sig_option { + type const[TCPOPT_SIGNATURE, int8] + length len[parent, int8] + md5 array[int8, 16] +} [packed] + +tcp_options { + options array[tcp_option] +} [packed, align[4]] + +tcp_flags = 0, TH_FIN, TH_SYN, TH_RST, TH_PUSH, TH_ACK, TH_URG, TH_ECE, TH_CWR + +tcp_header { + src_port sock_port + dst_port sock_port + seq_num tcp_seq_num + ack_num tcp_seq_num + ns int8:1 + reserved const[0, int8:3] + data_off bytesize4[parent, int8:4] + flags flags[tcp_flags, int8] + window_size int16be + csum csum[tcp_packet, pseudo, IPPROTO_TCP, int16be] + urg_ptr int16be + options tcp_options +} [packed] + +tcp_packet { + header tcp_header + payload tcp_payload +} [packed] + +tcp_payload { + payload array[int8] +} [packed] + +################################################################################ +###################################### UDP ##################################### +################################################################################ + +# https://tools.ietf.org/html/rfc768 +# https://en.wikipedia.org/wiki/User_Datagram_Protocol#Packet_structure + +udp_header { + src_port sock_port + dst_port sock_port + length len[parent, int16be] + csum csum[parent, pseudo, IPPROTO_UDP, int16be] +} [packed] + +udp_packet { + header udp_header + payload udp_payload +} [packed] + +udp_payload { + payload array[int8] +} [packed] diff --git a/sys/openbsd/vnet_amd64.const b/sys/openbsd/vnet_amd64.const new file mode 100644 index 000000000..6a6d780a7 --- /dev/null +++ b/sys/openbsd/vnet_amd64.const @@ -0,0 +1,338 @@ +# AUTOGENERATED FILE +ARPHRD_ETHER = 1 +ARPHRD_FRELAY = 15 +ARPHRD_IEEE1394 = 24 +ARPHRD_IEEE802 = 6 +ARPOP_INVREPLY = 9 +ARPOP_INVREQUEST = 8 +ARPOP_REPLY = 2 +ARPOP_REQUEST = 1 +ARPOP_REVREPLY = 4 +ARPOP_REVREQUEST = 3 +ETHERTYPE_8023 = 4 +ETHERTYPE_AARP = 33011 +ETHERTYPE_ACCTON = 33680 +ETHERTYPE_AEONIC = 32822 +ETHERTYPE_ALPHA = 33098 +ETHERTYPE_AMBER = 24584 +ETHERTYPE_AMOEBA = 33093 +ETHERTYPE_APOLLO = 33015 +ETHERTYPE_APOLLODOMAIN = 32793 +ETHERTYPE_APPLITEK = 32967 +ETHERTYPE_ARGONAUT = 32826 +ETHERTYPE_ARP = 2054 +ETHERTYPE_ATALK = 32923 +ETHERTYPE_ATOMIC = 34527 +ETHERTYPE_ATT = 32873 +ETHERTYPE_ATTSTANFORD = 32776 +ETHERTYPE_AUTOPHON = 32874 +ETHERTYPE_AXIS = 34902 +ETHERTYPE_BCLOOP = 36867 +ETHERTYPE_BOFL = 33026 +ETHERTYPE_CABLETRON = 28724 +ETHERTYPE_CHAOS = 2052 +ETHERTYPE_COMDESIGN = 32876 +ETHERTYPE_COMPUGRAPHIC = 32877 +ETHERTYPE_COUNTERPOINT = 32866 +ETHERTYPE_CRONUS = 32772 +ETHERTYPE_CRONUSVLN = 32771 +ETHERTYPE_DCA = 4660 +ETHERTYPE_DDE = 32891 +ETHERTYPE_DEBNI = 43690 +ETHERTYPE_DECAM = 32840 +ETHERTYPE_DECCUST = 24582 +ETHERTYPE_DECDIAG = 24581 +ETHERTYPE_DECDNS = 32828 +ETHERTYPE_DECDTS = 32830 +ETHERTYPE_DECEXPER = 24576 +ETHERTYPE_DECLAST = 32833 +ETHERTYPE_DECLTM = 32831 +ETHERTYPE_DECMUMPS = 24585 +ETHERTYPE_DECNETBIOS = 32832 +ETHERTYPE_DECnet = 24579 +ETHERTYPE_DELTACON = 34526 +ETHERTYPE_DIDDLE = 17185 +ETHERTYPE_DLOG1 = 1632 +ETHERTYPE_DLOG2 = 1633 +ETHERTYPE_DOGFIGHT = 6537 +ETHERTYPE_DSMD = 32825 +ETHERTYPE_ECMA = 2051 +ETHERTYPE_ENCRYPT = 32829 +ETHERTYPE_ES = 32861 +ETHERTYPE_EXCELAN = 32784 +ETHERTYPE_EXPERDATA = 32841 +ETHERTYPE_FLIP = 33094 +ETHERTYPE_FLOWCONTROL = 34824 +ETHERTYPE_FRARP = 2056 +ETHERTYPE_GENDYN = 32872 +ETHERTYPE_HAYES = 33072 +ETHERTYPE_HIPPI_FP = 33152 +ETHERTYPE_HITACHI = 34848 +ETHERTYPE_HP = 32773 +ETHERTYPE_IEEEPUP = 2560 +ETHERTYPE_IEEEPUPAT = 2561 +ETHERTYPE_IMLBL = 19522 +ETHERTYPE_IMLBLDIAG = 16972 +ETHERTYPE_IP = 2048 +ETHERTYPE_IPAS = 34668 +ETHERTYPE_IPV6 = 34525 +ETHERTYPE_IPX = 33079 +ETHERTYPE_IPXNEW = 32823 +ETHERTYPE_KALPANA = 34178 +ETHERTYPE_LANBRIDGE = 32824 +ETHERTYPE_LANPROBE = 34952 +ETHERTYPE_LAT = 24580 +ETHERTYPE_LITTLE = 32864 +ETHERTYPE_LOGICRAFT = 33096 +ETHERTYPE_LOOPBACK = 36864 +ETHERTYPE_MATRA = 32890 +ETHERTYPE_MERIT = 32892 +ETHERTYPE_MICP = 34618 +ETHERTYPE_MOPDL = 24577 +ETHERTYPE_MOPRC = 24578 +ETHERTYPE_MOTOROLA = 33165 +ETHERTYPE_MPLS = 34887 +ETHERTYPE_MPLS_MCAST = 34888 +ETHERTYPE_MUMPS = 33087 +ETHERTYPE_NBPCC = 15364 +ETHERTYPE_NBPCLAIM = 15369 +ETHERTYPE_NBPCLREQ = 15365 +ETHERTYPE_NBPCLRSP = 15366 +ETHERTYPE_NBPCREQ = 15362 +ETHERTYPE_NBPCRSP = 15363 +ETHERTYPE_NBPDG = 15367 +ETHERTYPE_NBPDGB = 15368 +ETHERTYPE_NBPDLTE = 15370 +ETHERTYPE_NBPRAR = 15372 +ETHERTYPE_NBPRAS = 15371 +ETHERTYPE_NBPRST = 15373 +ETHERTYPE_NBPSCD = 15361 +ETHERTYPE_NBPVCD = 15360 +ETHERTYPE_NBS = 2050 +ETHERTYPE_NCD = 33097 +ETHERTYPE_NESTAR = 32774 +ETHERTYPE_NETBEUI = 33169 +ETHERTYPE_NOVELL = 33080 +ETHERTYPE_NS = 1536 +ETHERTYPE_NSAT = 1537 +ETHERTYPE_NSCOMPAT = 2055 +ETHERTYPE_OS9 = 28679 +ETHERTYPE_OS9NET = 28681 +ETHERTYPE_PACER = 32966 +ETHERTYPE_PAE = 34958 +ETHERTYPE_PCS = 16962 +ETHERTYPE_PLANNING = 32836 +ETHERTYPE_PPP = 34827 +ETHERTYPE_PPPOE = 34916 +ETHERTYPE_PPPOEDISC = 34915 +ETHERTYPE_PRIMENTS = 28721 +ETHERTYPE_PUP = 512 +ETHERTYPE_PUPAT = 512 +ETHERTYPE_QINQ = 34984 +ETHERTYPE_RACAL = 28720 +ETHERTYPE_RATIONAL = 33104 +ETHERTYPE_RAWFR = 25945 +ETHERTYPE_RCL = 6549 +ETHERTYPE_RDP = 34617 +ETHERTYPE_RETIX = 33010 +ETHERTYPE_REVARP = 32821 +ETHERTYPE_SCA = 24583 +ETHERTYPE_SECTRA = 34523 +ETHERTYPE_SECUREDATA = 34669 +ETHERTYPE_SGITW = 33150 +ETHERTYPE_SG_BOUNCE = 32790 +ETHERTYPE_SG_DIAG = 32787 +ETHERTYPE_SG_NETGAMES = 32788 +ETHERTYPE_SG_RESV = 32789 +ETHERTYPE_SIMNET = 21000 +ETHERTYPE_SLOW = 34825 +ETHERTYPE_SNA = 32981 +ETHERTYPE_SNMP = 33100 +ETHERTYPE_SONIX = 64245 +ETHERTYPE_SPIDER = 32927 +ETHERTYPE_SPRITE = 1280 +ETHERTYPE_STP = 33153 +ETHERTYPE_TALARIS = 33067 +ETHERTYPE_TALARISMC = 34091 +ETHERTYPE_TCPCOMP = 34667 +ETHERTYPE_TCPSM = 36866 +ETHERTYPE_TEC = 33103 +ETHERTYPE_TIGAN = 32815 +ETHERTYPE_TRANSETHER = 25944 +ETHERTYPE_TYMSHARE = 32814 +ETHERTYPE_UBBST = 28677 +ETHERTYPE_UBDEBUG = 2304 +ETHERTYPE_UBDIAGLOOP = 28674 +ETHERTYPE_UBDL = 28672 +ETHERTYPE_UBNIU = 28673 +ETHERTYPE_UBNMC = 28675 +ETHERTYPE_VALID = 5632 +ETHERTYPE_VARIAN = 32989 +ETHERTYPE_VAXELN = 32827 +ETHERTYPE_VEECO = 32871 +ETHERTYPE_VEXP = 32859 +ETHERTYPE_VGLAB = 33073 +ETHERTYPE_VINES = 2989 +ETHERTYPE_VINESECHO = 2991 +ETHERTYPE_VINESLOOP = 2990 +ETHERTYPE_VITAL = 65280 +ETHERTYPE_VLAN = 33024 +ETHERTYPE_VLTLMAN = 32896 +ETHERTYPE_VPROD = 32860 +ETHERTYPE_VURESERVED = 33095 +ETHERTYPE_WATERLOO = 33072 +ETHERTYPE_WELLFLEET = 33027 +ETHERTYPE_X25 = 2053 +ETHERTYPE_X75 = 2049 +ETHERTYPE_XNSSM = 36865 +ETHERTYPE_XTP = 33149 +ICMP6_DST_UNREACH = 1 +ICMP6_DST_UNREACH_ADDR = 3 +ICMP6_DST_UNREACH_ADMIN = 1 +ICMP6_DST_UNREACH_BEYONDSCOPE = 2 +ICMP6_DST_UNREACH_NOPORT = 4 +ICMP6_DST_UNREACH_NOROUTE = 0 +ICMP6_ECHO_REPLY = 129 +ICMP6_ECHO_REQUEST = 128 +ICMP6_NI_QUERY = 139 +ICMP6_NI_REPLY = 140 +ICMP6_PACKET_TOO_BIG = 2 +ICMP6_PARAMPROB_HEADER = 0 +ICMP6_PARAMPROB_NEXTHEADER = 1 +ICMP6_PARAMPROB_OPTION = 2 +ICMP6_PARAM_PROB = 4 +ICMP6_TIME_EXCEEDED = 3 +ICMP6_TIME_EXCEED_REASSEMBLY = 1 +ICMP6_TIME_EXCEED_TRANSIT = 0 +ICMP_ALTHOSTADDR = 6 +ICMP_DATACONVERR = 31 +ICMP_ECHO = 8 +ICMP_ECHOREPLY = 0 +ICMP_IPV6_IAMHERE = 34 +ICMP_IPV6_WHEREAREYOU = 33 +ICMP_IREQ = 15 +ICMP_IREQREPLY = 16 +ICMP_MASKREPLY = 18 +ICMP_MASKREQ = 17 +ICMP_MOBILE_REDIRECT = 32 +ICMP_MOBILE_REGREPLY = 36 +ICMP_MOBILE_REGREQUEST = 35 +ICMP_PARAMPROB = 12 +ICMP_PARAMPROB_ERRATPTR = 0 +ICMP_PARAMPROB_LENGTH = 2 +ICMP_PARAMPROB_OPTABSENT = 1 +ICMP_PHOTURIS = 40 +ICMP_REDIRECT = 5 +ICMP_REDIRECT_HOST = 1 +ICMP_REDIRECT_NET = 0 +ICMP_REDIRECT_TOSHOST = 3 +ICMP_REDIRECT_TOSNET = 2 +ICMP_ROUTERADVERT = 9 +ICMP_ROUTERSOLICIT = 10 +ICMP_SKIP = 39 +ICMP_SOURCEQUENCH = 4 +ICMP_TIMXCEED = 11 +ICMP_TIMXCEED_INTRANS = 0 +ICMP_TIMXCEED_REASS = 1 +ICMP_TRACEROUTE = 30 +ICMP_TSTAMP = 13 +ICMP_TSTAMPREPLY = 14 +ICMP_UNREACH = 3 +ICMP_UNREACH_FILTER_PROHIB = 13 +ICMP_UNREACH_HOST = 1 +ICMP_UNREACH_HOST_PRECEDENCE = 14 +ICMP_UNREACH_HOST_PROHIB = 10 +ICMP_UNREACH_HOST_UNKNOWN = 7 +ICMP_UNREACH_ISOLATED = 8 +ICMP_UNREACH_NEEDFRAG = 4 +ICMP_UNREACH_NET = 0 +ICMP_UNREACH_NET_PROHIB = 9 +ICMP_UNREACH_NET_UNKNOWN = 6 +ICMP_UNREACH_PORT = 3 +ICMP_UNREACH_PRECEDENCE_CUTOFF = 15 +ICMP_UNREACH_PROTOCOL = 2 +ICMP_UNREACH_SRCFAIL = 5 +ICMP_UNREACH_TOSHOST = 12 +ICMP_UNREACH_TOSNET = 11 +IP6OPT_JUMBO = 194 +IP6OPT_PAD1 = 0 +IP6OPT_PADN = 1 +IP6OPT_ROUTER_ALERT = 5 +IP6OPT_TUNNEL_LIMIT = 4 +IPOPT_EOL = 0 +IPOPT_LSRR = 131 +IPOPT_NOP = 1 +IPOPT_RA = 148 +IPOPT_RR = 7 +IPOPT_SATID = 136 +IPOPT_SECURITY = 130 +IPOPT_SSRR = 137 +IPOPT_TS = 68 +IPOPT_TS_PRESPEC = 3 +IPOPT_TS_TSANDADDR = 1 +IPOPT_TS_TSONLY = 0 +IPPROTO_AH = 51 +IPPROTO_CARP = 112 +IPPROTO_DSTOPTS = 60 +IPPROTO_EGP = 8 +IPPROTO_ENCAP = 98 +IPPROTO_EON = 80 +IPPROTO_ESP = 50 +IPPROTO_ETHERIP = 97 +IPPROTO_FRAGMENT = 44 +IPPROTO_GGP = 3 +IPPROTO_GRE = 47 +IPPROTO_ICMP = 1 +IPPROTO_ICMPV6 = 58 +IPPROTO_IDP = 22 +IPPROTO_IGMP = 2 +IPPROTO_IP = 0 +IPPROTO_IPCOMP = 108 +IPPROTO_IPV4 = 4 +IPPROTO_IPV6 = 41 +IPPROTO_MOBILE = 55 +IPPROTO_MPLS = 137 +IPPROTO_NONE = 59 +IPPROTO_PFSYNC = 240 +IPPROTO_PIM = 103 +IPPROTO_PUP = 12 +IPPROTO_RAW = 255 +IPPROTO_ROUTING = 43 +IPPROTO_RSVP = 46 +IPPROTO_TCP = 6 +IPPROTO_TP = 29 +IPPROTO_UDP = 17 +IPPROTO_UDPLITE = 136 +IPV6_RTHDR_LOOSE = 0 +IPV6_RTHDR_TYPE_0 = 0 +MLD_LISTENER_QUERY = 130 +MLD_LISTENER_REPORT = 131 +ND_NEIGHBOR_ADVERT = 136 +ND_NEIGHBOR_SOLICIT = 135 +ND_OPT_DNSSL = 31 +ND_OPT_MTU = 5 +ND_OPT_PREFIX_INFORMATION = 3 +ND_OPT_RDNSS = 25 +ND_OPT_REDIRECTED_HEADER = 4 +ND_OPT_ROUTE_INFO = 24 +ND_OPT_SOURCE_LINKADDR = 1 +ND_OPT_TARGET_LINKADDR = 2 +ND_REDIRECT = 137 +ND_ROUTER_ADVERT = 134 +ND_ROUTER_SOLICIT = 133 +TCPOPT_EOL = 0 +TCPOPT_MAXSEG = 2 +TCPOPT_NOP = 1 +TCPOPT_SACK = 5 +TCPOPT_SACK_PERMITTED = 4 +TCPOPT_SIGNATURE = 19 +TCPOPT_TIMESTAMP = 8 +TCPOPT_WINDOW = 3 +TH_ACK = 16 +TH_CWR = 128 +TH_ECE = 64 +TH_FIN = 1 +TH_PUSH = 8 +TH_RST = 4 +TH_SYN = 2 +TH_URG = 32 |
