sys/freebsd: add support for various network protocols

Add support for Ethernet, IPv4, ICMP, IPv6, ICMP6, TCP, and UDP.
This work is based on the corresponding Linux support.
diff --git a/executor/defs.h b/executor/defs.h
index 4262de6..f183b71 100644
--- a/executor/defs.h
+++ b/executor/defs.h
@@ -20,7 +20,7 @@
 
 #if GOARCH_amd64
 #define GOARCH "amd64"
-#define SYZ_REVISION "4b5db889742657ae7fe970feaa45dbf6b13e405b"
+#define SYZ_REVISION "e540c106993372e0b27ed5e2d9ec82c4eed76447"
 #define SYZ_EXECUTOR_USES_FORK_SERVER 1
 #define SYZ_EXECUTOR_USES_SHMEM 1
 #define SYZ_PAGE_SIZE 4096
diff --git a/sys/freebsd/gen/amd64.go b/sys/freebsd/gen/amd64.go
index 6322b34..2fc0563 100644
--- a/sys/freebsd/gen/amd64.go
+++ b/sys/freebsd/gen/amd64.go
@@ -50,6 +50,32 @@
 		&BufferType{TypeCommon: TypeCommon{TypeName: "string", FldName: "af_name", TypeSize: 16, ArgDir: 1}, Kind: 2, SubKind: "accept_filter_names", Values: []string{"accf_data\x00\x00\x00\x00\x00\x00\x00", "accf_dns\x00\x00\x00\x00\x00\x00\x00\x00", "accf_http\x00\x00\x00\x00\x00\x00\x00"}},
 		&BufferType{TypeCommon: TypeCommon{TypeName: "array", FldName: "af_arg", TypeSize: 240, ArgDir: 1}, Kind: 1, RangeBegin: 240, RangeEnd: 240},
 	}}},
+	{Key: StructKey{Name: "arp_ether_ipv4_packet"}, Desc: &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"},
+	}}},
+	{Key: StructKey{Name: "arp_generic_packet"}, Desc: &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, 32}},
+		&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, 34850, 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}}, Buf: "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},
+	}}},
+	{Key: StructKey{Name: "arp_packet"}, Desc: &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"},
+	}}},
 	{Key: StructKey{Name: "cmsghdr"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "cmsghdr", IsVarlen: true}, Fields: []Type{
 		&LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "cmsg_len", TypeSize: 8}}, Buf: "parent"},
 		&FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "cmsg_levels", FldName: "cmsg_level", TypeSize: 4}}, Vals: []uint64{65535, 0, 41, 1, 58, 132, 6, 17, 136}},
@@ -127,6 +153,37 @@
 		&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "type", TypeSize: 4}}, Val: 1},
 		&ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "fds", IsVarlen: true}, Type: &ResourceType{TypeCommon: TypeCommon{TypeName: "fd", TypeSize: 4}}},
 	}, AlignAttr: 8}},
+	{Key: StructKey{Name: "eth2_packet"}, Desc: &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]"}, FldName: "ipv6"},
+	}}},
+	{Key: StructKey{Name: "eth2_packet_generic"}, Desc: &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, 34850, 34887, 34888, 34902, 34915, 34916, 34952, 34958, 34984, 36864, 36865, 36866, 36867, 43690, 64245, 65280}},
+		&BufferType{TypeCommon: TypeCommon{TypeName: "array", FldName: "payload", IsVarlen: true}},
+	}}},
+	{Key: StructKey{Name: "eth2_packet_t[ETHERTYPE_ARP, arp_packet]"}, Desc: &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"},
+	}}},
+	{Key: StructKey{Name: "eth2_packet_t[ETHERTYPE_IP, ipv4_packet]"}, Desc: &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"},
+	}}},
+	{Key: StructKey{Name: "eth2_packet_t[ETHERTYPE_IPV6, ipv6_packet]"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "eth2_packet_t[ETHERTYPE_IPV6, ipv6_packet]", 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"}, FldName: "payload"},
+	}}},
+	{Key: StructKey{Name: "eth_packet"}, Desc: &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"},
+	}}},
+	{Key: StructKey{Name: "eth_payload"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "eth_payload", IsVarlen: true}, Fields: []Type{
+		&UnionType{Key: StructKey{Name: "eth2_packet"}, FldName: "eth2"},
+	}}},
 	{Key: StructKey{Name: "fd_set", Dir: 2}, Desc: &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}}},
@@ -191,6 +248,289 @@
 		&StructType{Key: StructKey{Name: "sockaddr_storage_in6"}, FldName: "gsr_group"},
 		&StructType{Key: StructKey{Name: "sockaddr_storage_in6"}, FldName: "gsr_source"},
 	}}},
+	{Key: StructKey{Name: "icmp_dest_unreach_packet"}, Desc: &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},
+	}}},
+	{Key: StructKey{Name: "icmp_echo_packet"}, Desc: &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}},
+	}}},
+	{Key: StructKey{Name: "icmp_echo_reply_packet"}, Desc: &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: 2, 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}},
+	}}},
+	{Key: StructKey{Name: "icmp_generic_packet"}, Desc: &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}},
+	}}},
+	{Key: StructKey{Name: "icmp_info_reply_packet"}, Desc: &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}},
+	}}},
+	{Key: StructKey{Name: "icmp_info_request_packet"}, Desc: &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}},
+	}}},
+	{Key: StructKey{Name: "icmp_ipv4_header"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "icmp_ipv4_header", IsVarlen: true}, Fields: []Type{
+		&LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "bytesize4", FldName: "ihl", TypeSize: 1}, BitfieldLen: 4, BitfieldMdl: true}, BitSize: 32, Buf: "parent"},
+		&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "version", TypeSize: 1}, BitfieldOff: 4, BitfieldLen: 4}, Val: 4},
+		&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "ecn", TypeSize: 1}, BitfieldLen: 2, BitfieldMdl: true}},
+		&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "dscp", TypeSize: 1}, BitfieldOff: 2, BitfieldLen: 6}},
+		&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: 2, 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{1, 2, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 42, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 108, 108, 135, 136, 139, 140, 103, 112, 113, 137, 240}},
+		&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"},
+	}}},
+	{Key: StructKey{Name: "icmp_mask_reply_packet"}, Desc: &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}},
+	}}},
+	{Key: StructKey{Name: "icmp_mask_request_packet"}, Desc: &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}},
+	}}},
+	{Key: StructKey{Name: "icmp_packet"}, Desc: &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"},
+	}}},
+	{Key: StructKey{Name: "icmp_parameter_prob_packet"}, Desc: &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}, BitMask: true},
+		&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},
+	}}},
+	{Key: StructKey{Name: "icmp_redirect_packet"}, Desc: &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},
+	}}},
+	{Key: StructKey{Name: "icmp_source_quench_packet"}, Desc: &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},
+	}}},
+	{Key: StructKey{Name: "icmp_time_exceeded_packet"}, Desc: &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}, BitMask: true},
+		&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},
+	}}},
+	{Key: StructKey{Name: "icmp_timestamp_packet"}, Desc: &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}},
+	}}},
+	{Key: StructKey{Name: "icmp_timestamp_reply_packet"}, Desc: &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}},
+	}}},
+	{Key: StructKey{Name: "icmpv6_dest_unreach_packet"}, Desc: &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, 2, 3, 4, 5, 6, 7}},
+		&CsumType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "csum", FldName: "csum", TypeSize: 2}, ArgFormat: 1}, Kind: 1, Buf: "parent", Protocol: 58},
+		&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "length", TypeSize: 1}}},
+		&ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "unused", TypeSize: 3}, Type: &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", TypeSize: 1}}}, Kind: 1, RangeBegin: 3, RangeEnd: 3},
+		&StructType{Key: StructKey{Name: "icmpv6_ipv6_packet"}, FldName: "packet"},
+	}}},
+	{Key: StructKey{Name: "icmpv6_echo_reply_packet"}, Desc: &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: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "csum", FldName: "csum", TypeSize: 2}, ArgFormat: 1}, Kind: 1, Buf: "parent", Protocol: 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}},
+	}}},
+	{Key: StructKey{Name: "icmpv6_echo_request_packet"}, Desc: &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: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "csum", FldName: "csum", TypeSize: 2}, ArgFormat: 1}, Kind: 1, Buf: "parent", Protocol: 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}},
+	}}},
+	{Key: StructKey{Name: "icmpv6_ipv6_packet"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "icmpv6_ipv6_packet", IsVarlen: true}, Fields: []Type{
+		&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "priority", TypeSize: 1}, BitfieldLen: 4, BitfieldMdl: true}},
+		&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "version", TypeSize: 1}, BitfieldOff: 4, BitfieldLen: 4}, 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{4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 108, 108, 135, 136, 139, 140, 103, 112, 113, 137, 240}},
+		&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}},
+	}}},
+	{Key: StructKey{Name: "icmpv6_mld_packet"}, Desc: &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, 132}},
+		&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "code", TypeSize: 1}}},
+		&CsumType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "csum", FldName: "csum", TypeSize: 2}, ArgFormat: 1}, Kind: 1, Buf: "parent", Protocol: 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"},
+	}}},
+	{Key: StructKey{Name: "icmpv6_ndisc_neigh_advert_packet"}, Desc: &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: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "csum", FldName: "csum", TypeSize: 2}, ArgFormat: 1}, Kind: 1, Buf: "parent", Protocol: 58},
+		&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "neighbor_flags", TypeSize: 1}}},
+		&ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "unused", TypeSize: 3}, Type: &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", TypeSize: 1}}}, Kind: 1, RangeBegin: 3, RangeEnd: 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"}}},
+	}}},
+	{Key: StructKey{Name: "icmpv6_ndisc_neigh_solicit_packet"}, Desc: &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: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "csum", FldName: "csum", TypeSize: 2}, ArgFormat: 1}, Kind: 1, Buf: "parent", Protocol: 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"}}},
+	}}},
+	{Key: StructKey{Name: "icmpv6_ndisc_option"}, Desc: &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, 14, 24, 25, 31}},
+		&LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "bytesize8", FldName: "length", TypeSize: 1}}, BitSize: 64, Buf: "parent"},
+		&BufferType{TypeCommon: TypeCommon{TypeName: "array", FldName: "data", IsVarlen: true}},
+	}}},
+	{Key: StructKey{Name: "icmpv6_ndisc_redir_packet"}, Desc: &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: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "csum", FldName: "csum", TypeSize: 2}, ArgFormat: 1}, Kind: 1, Buf: "parent", Protocol: 58},
+		&ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "unused", TypeSize: 4}, Type: &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", TypeSize: 1}}}, Kind: 1, RangeBegin: 4, RangeEnd: 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"}}},
+	}}},
+	{Key: StructKey{Name: "icmpv6_ndisc_router_advert_packet"}, Desc: &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: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "csum", FldName: "csum", TypeSize: 2}, ArgFormat: 1}, Kind: 1, Buf: "parent", Protocol: 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"}}},
+	}}},
+	{Key: StructKey{Name: "icmpv6_ndisc_router_solicit_packet"}, Desc: &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: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "csum", FldName: "csum", TypeSize: 2}, ArgFormat: 1}, Kind: 1, Buf: "parent", Protocol: 58},
+		&ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "unused", TypeSize: 4}, Type: &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", TypeSize: 1}}}, Kind: 1, RangeBegin: 4, RangeEnd: 4},
+		&ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "options", IsVarlen: true}, Type: &StructType{Key: StructKey{Name: "icmpv6_ndisc_option"}}},
+	}}},
+	{Key: StructKey{Name: "icmpv6_ni_packet"}, Desc: &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: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "csum", FldName: "csum", TypeSize: 2}, ArgFormat: 1}, Kind: 1, Buf: "parent", Protocol: 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}},
+	}}},
+	{Key: StructKey{Name: "icmpv6_packet"}, Desc: &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"},
+	}}},
+	{Key: StructKey{Name: "icmpv6_param_prob_packet"}, Desc: &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}, BitMask: true},
+		&CsumType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "csum", FldName: "csum", TypeSize: 2}, ArgFormat: 1}, Kind: 1, Buf: "parent", Protocol: 58},
+		&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32be", FldName: "pointer", TypeSize: 4}, ArgFormat: 1}},
+		&StructType{Key: StructKey{Name: "icmpv6_ipv6_packet"}, FldName: "packet"},
+	}}},
+	{Key: StructKey{Name: "icmpv6_pkt_toobig_packet"}, Desc: &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: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "csum", FldName: "csum", TypeSize: 2}, ArgFormat: 1}, Kind: 1, Buf: "parent", Protocol: 58},
+		&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32be", FldName: "mtu", TypeSize: 4}, ArgFormat: 1}},
+		&StructType{Key: StructKey{Name: "icmpv6_ipv6_packet"}, FldName: "packet"},
+	}}},
+	{Key: StructKey{Name: "icmpv6_time_exceed_packet"}, Desc: &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}, BitMask: true},
+		&CsumType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "csum", FldName: "csum", TypeSize: 2}, ArgFormat: 1}, Kind: 1, Buf: "parent", Protocol: 58},
+		&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "length", TypeSize: 1}}},
+		&ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "unused", TypeSize: 3}, Type: &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", TypeSize: 1}}}, Kind: 1, RangeBegin: 3, RangeEnd: 3},
+		&StructType{Key: StructKey{Name: "icmpv6_ipv6_packet"}, FldName: "packet"},
+	}}},
 	{Key: StructKey{Name: "in6_pktinfo"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "in6_pktinfo", TypeSize: 20}, Fields: []Type{
 		&UnionType{Key: StructKey{Name: "ipv6_addr"}, FldName: "ipi6_addr"},
 		&ResourceType{TypeCommon: TypeCommon{TypeName: "ifindex", FldName: "ipi6_ifindex", TypeSize: 4}},
@@ -317,23 +657,119 @@
 		&ProcType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "proc", FldName: "a2", TypeSize: 1, ArgDir: 2}}, ValuesPerProc: 1},
 		&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "a3", TypeSize: 1, ArgDir: 2}}, Val: 187},
 	}}},
+	{Key: StructKey{Name: "ipv4_header"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "ipv4_header", IsVarlen: true}, Fields: []Type{
+		&LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "bytesize4", FldName: "ihl", TypeSize: 1}, BitfieldLen: 4, BitfieldMdl: true}, BitSize: 32, Buf: "parent"},
+		&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "version", TypeSize: 1}, BitfieldOff: 4, BitfieldLen: 4}, Val: 4},
+		&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "ecn", TypeSize: 1}, BitfieldLen: 2, BitfieldMdl: true}},
+		&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "dscp", TypeSize: 1}, BitfieldOff: 2, BitfieldLen: 6}},
+		&LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "total_len", TypeSize: 2}, ArgFormat: 1}, Buf: "ipv4_packet"},
+		&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int16be", FldName: "id", TypeSize: 2}, ArgFormat: 1}, Kind: 2, 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{1, 2, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 42, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 108, 108, 135, 136, 139, 140, 103, 112, 113, 137, 240}},
+		&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"},
+	}}},
+	{Key: StructKey{Name: "ipv4_option"}, Desc: &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"},
+	}}},
+	{Key: StructKey{Name: "ipv4_option_end"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "ipv4_option_end", TypeSize: 1}, Fields: []Type{
+		&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "type", TypeSize: 1}}},
+	}}},
+	{Key: StructKey{Name: "ipv4_option_generic"}, Desc: &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, 133, 134, 136, 137, 148}},
+		&LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "length", TypeSize: 1}}, Buf: "parent"},
+		&BufferType{TypeCommon: TypeCommon{TypeName: "array", FldName: "data", IsVarlen: true}, Kind: 1, RangeEnd: 16},
+	}}},
+	{Key: StructKey{Name: "ipv4_option_lsrr"}, Desc: &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}}, Buf: "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"}}},
+	}}},
+	{Key: StructKey{Name: "ipv4_option_noop"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "ipv4_option_noop", TypeSize: 1}, Fields: []Type{
+		&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "type", TypeSize: 1}}, Val: 1},
+	}}},
+	{Key: StructKey{Name: "ipv4_option_ra"}, Desc: &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}}, Buf: "parent"},
+		&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32be", FldName: "value", TypeSize: 4}, ArgFormat: 1}},
+	}}},
+	{Key: StructKey{Name: "ipv4_option_rr"}, Desc: &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}}, Buf: "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"}}},
+	}}},
+	{Key: StructKey{Name: "ipv4_option_ssrr"}, Desc: &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}}, Buf: "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"}}},
+	}}},
+	{Key: StructKey{Name: "ipv4_option_timestamp"}, Desc: &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}}, Buf: "parent"},
+		&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "pointer", TypeSize: 1}}},
+		&FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "ipv4_option_timestamp_flags", FldName: "flg", TypeSize: 1}, BitfieldLen: 4, BitfieldMdl: true}, Vals: []uint64{0, 1, 3}},
+		&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "oflw", TypeSize: 1}, BitfieldOff: 4, BitfieldLen: 4}},
+		&ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "timestamps", IsVarlen: true}, Type: &StructType{Key: StructKey{Name: "ipv4_option_timestamp_timestamp"}}},
+	}}},
+	{Key: StructKey{Name: "ipv4_option_timestamp_timestamp"}, Desc: &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}},
+	}}},
+	{Key: StructKey{Name: "ipv4_options"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "ipv4_options", IsVarlen: true}, Fields: []Type{
+		&ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "options", IsVarlen: true}, Type: &UnionType{Key: StructKey{Name: "ipv4_option"}}},
+	}, AlignAttr: 4}},
+	{Key: StructKey{Name: "ipv4_packet"}, Desc: &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"},
+	}}},
+	{Key: StructKey{Name: "ipv4_payload"}, Desc: &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"},
+	}}},
 	{Key: StructKey{Name: "ipv6_addr"}, Desc: &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"},
 	}}},
 	{Key: StructKey{Name: "ipv6_addr", Dir: 1}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "ipv6_addr", TypeSize: 16, ArgDir: 1}, Fields: []Type{
+		&BufferType{TypeCommon: TypeCommon{TypeName: "array", FldName: "rand_addr", TypeSize: 16, ArgDir: 1}, Kind: 1, RangeBegin: 16, RangeEnd: 16},
 		&StructType{Key: StructKey{Name: "ipv6_addr_empty", Dir: 1}, FldName: "empty"},
 		&StructType{Key: StructKey{Name: "ipv6_addr_local", Dir: 1}, FldName: "local"},
 		&StructType{Key: StructKey{Name: "ipv6_addr_remote", Dir: 1}, FldName: "remote"},
 		&StructType{Key: StructKey{Name: "ipv6_addr_loopback", Dir: 1}, FldName: "loopback"},
+		&StructType{Key: StructKey{Name: "ipv6_addr_ipv4", Dir: 1}, FldName: "ipv4"},
+		&StructType{Key: StructKey{Name: "ipv6_addr_multicast1", Dir: 1}, FldName: "mcast1"},
+		&StructType{Key: StructKey{Name: "ipv6_addr_multicast2", Dir: 1}, FldName: "mcast2"},
 	}}},
 	{Key: StructKey{Name: "ipv6_addr", Dir: 2}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "ipv6_addr", TypeSize: 16, ArgDir: 2}, Fields: []Type{
+		&BufferType{TypeCommon: TypeCommon{TypeName: "array", FldName: "rand_addr", TypeSize: 16, ArgDir: 2}, Kind: 1, RangeBegin: 16, RangeEnd: 16},
 		&StructType{Key: StructKey{Name: "ipv6_addr_empty", Dir: 2}, FldName: "empty"},
 		&StructType{Key: StructKey{Name: "ipv6_addr_local", Dir: 2}, FldName: "local"},
 		&StructType{Key: StructKey{Name: "ipv6_addr_remote", Dir: 2}, FldName: "remote"},
 		&StructType{Key: StructKey{Name: "ipv6_addr_loopback", Dir: 2}, FldName: "loopback"},
+		&StructType{Key: StructKey{Name: "ipv6_addr_ipv4", Dir: 2}, FldName: "ipv4"},
+		&StructType{Key: StructKey{Name: "ipv6_addr_multicast1", Dir: 2}, FldName: "mcast1"},
+		&StructType{Key: StructKey{Name: "ipv6_addr_multicast2", Dir: 2}, FldName: "mcast2"},
 	}}},
 	{Key: StructKey{Name: "ipv6_addr_empty"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "ipv6_addr_empty", TypeSize: 16}, Fields: []Type{
 		&ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "a0", TypeSize: 16}, Type: &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", TypeSize: 1}}}, Kind: 1, RangeBegin: 16, RangeEnd: 16},
@@ -344,6 +780,21 @@
 	{Key: StructKey{Name: "ipv6_addr_empty", Dir: 2}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "ipv6_addr_empty", TypeSize: 16, ArgDir: 2}, Fields: []Type{
 		&ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "a0", TypeSize: 16, ArgDir: 2}, Type: &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", TypeSize: 1, ArgDir: 2}}}, Kind: 1, RangeBegin: 16, RangeEnd: 16},
 	}}},
+	{Key: StructKey{Name: "ipv6_addr_ipv4"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "ipv6_addr_ipv4", TypeSize: 16}, Fields: []Type{
+		&ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "a0", TypeSize: 10}, Type: &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", TypeSize: 1}}}, Kind: 1, RangeBegin: 10, RangeEnd: 10},
+		&ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "a1", TypeSize: 2}, Type: &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", TypeSize: 1}}, Val: 255}, Kind: 1, RangeBegin: 2, RangeEnd: 2},
+		&UnionType{Key: StructKey{Name: "ipv4_addr"}, FldName: "a3"},
+	}}},
+	{Key: StructKey{Name: "ipv6_addr_ipv4", Dir: 1}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "ipv6_addr_ipv4", TypeSize: 16, ArgDir: 1}, Fields: []Type{
+		&ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "a0", TypeSize: 10, ArgDir: 1}, Type: &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", TypeSize: 1, ArgDir: 1}}}, Kind: 1, RangeBegin: 10, RangeEnd: 10},
+		&ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "a1", TypeSize: 2, ArgDir: 1}, Type: &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", TypeSize: 1, ArgDir: 1}}, Val: 255}, Kind: 1, RangeBegin: 2, RangeEnd: 2},
+		&UnionType{Key: StructKey{Name: "ipv4_addr", Dir: 1}, FldName: "a3"},
+	}}},
+	{Key: StructKey{Name: "ipv6_addr_ipv4", Dir: 2}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "ipv6_addr_ipv4", TypeSize: 16, ArgDir: 2}, Fields: []Type{
+		&ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "a0", TypeSize: 10, ArgDir: 2}, Type: &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", TypeSize: 1, ArgDir: 2}}}, Kind: 1, RangeBegin: 10, RangeEnd: 10},
+		&ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "a1", TypeSize: 2, ArgDir: 2}, Type: &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", TypeSize: 1, ArgDir: 2}}, Val: 255}, Kind: 1, RangeBegin: 2, RangeEnd: 2},
+		&UnionType{Key: StructKey{Name: "ipv4_addr", Dir: 2}, FldName: "a3"},
+	}}},
 	{Key: StructKey{Name: "ipv6_addr_local"}, Desc: &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},
@@ -377,6 +828,42 @@
 		&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "a0", TypeSize: 8, ArgDir: 2}, ArgFormat: 1}},
 		&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "a1", TypeSize: 8, ArgDir: 2}, ArgFormat: 1}, Val: 1},
 	}}},
+	{Key: StructKey{Name: "ipv6_addr_multicast1"}, Desc: &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: TypeCommon{TypeName: "array", FldName: "a2", TypeSize: 13}, Type: &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", TypeSize: 1}}}, Kind: 1, RangeBegin: 13, RangeEnd: 13},
+		&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "a3", TypeSize: 1}}, Val: 1},
+	}}},
+	{Key: StructKey{Name: "ipv6_addr_multicast1", Dir: 1}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "ipv6_addr_multicast1", TypeSize: 16, ArgDir: 1}, Fields: []Type{
+		&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "a0", TypeSize: 1, ArgDir: 1}}, Val: 255},
+		&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "a1", TypeSize: 1, ArgDir: 1}}, Val: 1},
+		&ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "a2", TypeSize: 13, ArgDir: 1}, Type: &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", TypeSize: 1, ArgDir: 1}}}, Kind: 1, RangeBegin: 13, RangeEnd: 13},
+		&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "a3", TypeSize: 1, ArgDir: 1}}, Val: 1},
+	}}},
+	{Key: StructKey{Name: "ipv6_addr_multicast1", Dir: 2}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "ipv6_addr_multicast1", TypeSize: 16, ArgDir: 2}, Fields: []Type{
+		&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "a0", TypeSize: 1, ArgDir: 2}}, Val: 255},
+		&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "a1", TypeSize: 1, ArgDir: 2}}, Val: 1},
+		&ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "a2", TypeSize: 13, ArgDir: 2}, Type: &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", TypeSize: 1, ArgDir: 2}}}, Kind: 1, RangeBegin: 13, RangeEnd: 13},
+		&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "a3", TypeSize: 1, ArgDir: 2}}, Val: 1},
+	}}},
+	{Key: StructKey{Name: "ipv6_addr_multicast2"}, Desc: &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: TypeCommon{TypeName: "array", FldName: "a2", TypeSize: 13}, Type: &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", TypeSize: 1}}}, Kind: 1, RangeBegin: 13, RangeEnd: 13},
+		&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "a3", TypeSize: 1}}, Val: 1},
+	}}},
+	{Key: StructKey{Name: "ipv6_addr_multicast2", Dir: 1}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "ipv6_addr_multicast2", TypeSize: 16, ArgDir: 1}, Fields: []Type{
+		&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "a0", TypeSize: 1, ArgDir: 1}}, Val: 255},
+		&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "a1", TypeSize: 1, ArgDir: 1}}, Val: 2},
+		&ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "a2", TypeSize: 13, ArgDir: 1}, Type: &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", TypeSize: 1, ArgDir: 1}}}, Kind: 1, RangeBegin: 13, RangeEnd: 13},
+		&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "a3", TypeSize: 1, ArgDir: 1}}, Val: 1},
+	}}},
+	{Key: StructKey{Name: "ipv6_addr_multicast2", Dir: 2}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "ipv6_addr_multicast2", TypeSize: 16, ArgDir: 2}, Fields: []Type{
+		&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "a0", TypeSize: 1, ArgDir: 2}}, Val: 255},
+		&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "a1", TypeSize: 1, ArgDir: 2}}, Val: 2},
+		&ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "a2", TypeSize: 13, ArgDir: 2}, Type: &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", TypeSize: 1, ArgDir: 2}}}, Kind: 1, RangeBegin: 13, RangeEnd: 13},
+		&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "a3", TypeSize: 1, ArgDir: 2}}, Val: 1},
+	}}},
 	{Key: StructKey{Name: "ipv6_addr_remote"}, Desc: &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},
@@ -398,6 +885,100 @@
 		&ProcType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "proc", FldName: "a3", TypeSize: 1, ArgDir: 2}}, ValuesPerProc: 1},
 		&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "a4", TypeSize: 1, ArgDir: 2}}, Val: 187},
 	}}},
+	{Key: StructKey{Name: "ipv6_dstopts_ext_header"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "ipv6_dstopts_ext_header", IsVarlen: true}, Fields: []Type{
+		&FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "ipv6_types", FldName: "next_header", TypeSize: 1}}, Vals: []uint64{4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 108, 108, 135, 136, 139, 140, 103, 112, 113, 137, 240}},
+		&LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "bytesize8", FldName: "length", TypeSize: 1}}, BitSize: 64, Buf: "options"},
+		&ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "pad", TypeSize: 6}, Type: &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", TypeSize: 1}}}, Kind: 1, RangeBegin: 6, RangeEnd: 6},
+		&ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "options", IsVarlen: true}, Type: &UnionType{Key: StructKey{Name: "ipv6_tlv_option"}}},
+	}, AlignAttr: 8}},
+	{Key: StructKey{Name: "ipv6_ext_header"}, Desc: &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"},
+	}}},
+	{Key: StructKey{Name: "ipv6_fragment_ext_header"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "ipv6_fragment_ext_header", TypeSize: 8}, Fields: []Type{
+		&FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "ipv6_types", FldName: "next_header", TypeSize: 1}}, Vals: []uint64{4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 108, 108, 135, 136, 139, 140, 103, 112, 113, 137, 240}},
+		&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", TypeSize: 1}, BitfieldLen: 1, BitfieldMdl: true}},
+		&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "reserved2", TypeSize: 1}, BitfieldOff: 1, BitfieldLen: 2, BitfieldMdl: true}},
+		&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "fragment_off_lo", TypeSize: 1}, BitfieldOff: 3, BitfieldLen: 5}},
+		&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", FldName: "identification", TypeSize: 4}}, Kind: 2, RangeBegin: 100, RangeEnd: 104},
+	}, AlignAttr: 8}},
+	{Key: StructKey{Name: "ipv6_hopots_ext_header"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "ipv6_hopots_ext_header", IsVarlen: true}, Fields: []Type{
+		&FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "ipv6_types", FldName: "next_header", TypeSize: 1}}, Vals: []uint64{4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 108, 108, 135, 136, 139, 140, 103, 112, 113, 137, 240}},
+		&LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "bytesize8", FldName: "length", TypeSize: 1}}, BitSize: 64, Buf: "options"},
+		&ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "pad", TypeSize: 6}, Type: &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", TypeSize: 1}}}, Kind: 1, RangeBegin: 6, RangeEnd: 6},
+		&ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "options", IsVarlen: true}, Type: &UnionType{Key: StructKey{Name: "ipv6_tlv_option"}}},
+	}, AlignAttr: 8}},
+	{Key: StructKey{Name: "ipv6_packet"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "ipv6_packet", IsVarlen: true}, Fields: []Type{
+		&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "priority", TypeSize: 1}, BitfieldLen: 4, BitfieldMdl: true}},
+		&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "version", TypeSize: 1}, BitfieldOff: 4, BitfieldLen: 4}, 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}, Buf: "payload"},
+		&FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "ipv6_types", FldName: "next_header", TypeSize: 1}}, Vals: []uint64{4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 108, 108, 135, 136, 139, 140, 103, 112, 113, 137, 240}},
+		&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"},
+	}}},
+	{Key: StructKey{Name: "ipv6_packet_payload"}, Desc: &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"},
+	}}},
+	{Key: StructKey{Name: "ipv6_payload"}, Desc: &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"},
+	}}},
+	{Key: StructKey{Name: "ipv6_rt_hdr"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "ipv6_rt_hdr", IsVarlen: true}, Fields: []Type{
+		&FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "ipv6_types", FldName: "next_header", TypeSize: 1}}, Vals: []uint64{4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 108, 108, 135, 136, 139, 140, 103, 112, 113, 137, 240}},
+		&LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "bytesize8", FldName: "length", TypeSize: 1}}, BitSize: 64, Buf: "data"},
+		&FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "ipv6_routing_types", FldName: "routing_type", TypeSize: 1}}, Vals: []uint64{0, 1, 0}, BitMask: true},
+		&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"}}},
+	}, AlignAttr: 8}},
+	{Key: StructKey{Name: "ipv6_tlv_generic"}, Desc: &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}}, Buf: "data"},
+		&BufferType{TypeCommon: TypeCommon{TypeName: "array", FldName: "data", IsVarlen: true}},
+	}}},
+	{Key: StructKey{Name: "ipv6_tlv_jumbo"}, Desc: &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}},
+	}}},
+	{Key: StructKey{Name: "ipv6_tlv_option"}, Desc: &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"},
+	}}},
+	{Key: StructKey{Name: "ipv6_tlv_pad1"}, Desc: &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}}},
+	}}},
+	{Key: StructKey{Name: "ipv6_tlv_padn"}, Desc: &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}}, Buf: "pad"},
+		&ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "pad", IsVarlen: true}, Type: &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", TypeSize: 1}}}},
+	}}},
+	{Key: StructKey{Name: "ipv6_tlv_ra"}, Desc: &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}},
+	}}},
+	{Key: StructKey{Name: "ipv6_tlv_tun_lim"}, Desc: &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}}},
+	}}},
 	{Key: StructKey{Name: "itimerval"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "itimerval", TypeSize: 32}, Fields: []Type{
 		&StructType{Key: StructKey{Name: "timeval"}, FldName: "interv"},
 		&StructType{Key: StructKey{Name: "timeval"}, FldName: "value"},
@@ -414,6 +995,21 @@
 		&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}}},
 	}}},
+	{Key: StructKey{Name: "mac_addr"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "mac_addr", TypeSize: 6}, Fields: []Type{
+		&ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "empty", TypeSize: 6}, Type: &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", TypeSize: 1}}}, Kind: 1, RangeBegin: 6, RangeEnd: 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: TypeCommon{TypeName: "array", FldName: "broadcast", TypeSize: 6}, Type: &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", TypeSize: 1}}, Val: 255}, Kind: 1, RangeBegin: 6, RangeEnd: 6},
+		&BufferType{TypeCommon: TypeCommon{TypeName: "array", FldName: "random", TypeSize: 6}, Kind: 1, RangeBegin: 6, RangeEnd: 6},
+	}}},
+	{Key: StructKey{Name: "mac_addr_t[const[0xaa, int8]]"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "mac_addr_t[const[0xaa, int8]]", TypeSize: 6}, Fields: []Type{
+		&ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "a0", TypeSize: 5}, Type: &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", TypeSize: 1}}, Val: 170}, Kind: 1, RangeBegin: 5, RangeEnd: 5},
+		&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "a1", TypeSize: 1}}, Val: 170},
+	}}},
+	{Key: StructKey{Name: "mac_addr_t[const[0xbb, int8]]"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "mac_addr_t[const[0xbb, int8]]", TypeSize: 6}, Fields: []Type{
+		&ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "a0", TypeSize: 5}, Type: &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", TypeSize: 1}}, Val: 170}, Kind: 1, RangeBegin: 5, RangeEnd: 5},
+		&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "a1", TypeSize: 1}}, Val: 187},
+	}}},
 	{Key: StructKey{Name: "mf6cctl"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "mf6cctl", TypeSize: 92}, Fields: []Type{
 		&StructType{Key: StructKey{Name: "sockaddr_in6"}, FldName: "mf6cc_origin"},
 		&StructType{Key: StructKey{Name: "sockaddr_in6"}, FldName: "mf6cc_mcastgrp"},
@@ -1037,18 +1633,100 @@
 		&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int64", FldName: "gen", TypeSize: 8, ArgDir: 1}}},
 		&ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "__spare", TypeSize: 80, ArgDir: 1}, Type: &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int64", TypeSize: 8, ArgDir: 1}}}, Kind: 1, RangeBegin: 10, RangeEnd: 10},
 	}}},
+	{Key: StructKey{Name: "tcp_eol_option"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "tcp_eol_option", TypeSize: 1}, Fields: []Type{
+		&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "type", TypeSize: 1}}},
+	}}},
 	{Key: StructKey{Name: "tcp_fastopen"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "tcp_fastopen", TypeSize: 20}, Fields: []Type{
 		&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", FldName: "enable", TypeSize: 4}}},
 		&BufferType{TypeCommon: TypeCommon{TypeName: "array", FldName: "psk", TypeSize: 16}, Kind: 1, RangeBegin: 16, RangeEnd: 16},
 	}}},
+	{Key: StructKey{Name: "tcp_fastopen_option"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "tcp_fastopen_option", IsVarlen: true}, Fields: []Type{
+		&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "type", TypeSize: 1}}, Val: 34},
+		&LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "length", TypeSize: 1}}, Buf: "parent"},
+		&BufferType{TypeCommon: TypeCommon{TypeName: "array", FldName: "data", IsVarlen: true}, Kind: 1, RangeEnd: 16},
+	}}},
 	{Key: StructKey{Name: "tcp_function_set"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "tcp_function_set", TypeSize: 36}, Fields: []Type{
 		&BufferType{TypeCommon: TypeCommon{TypeName: "string", FldName: "function_set_name", TypeSize: 32}, Kind: 2, SubKind: "tcp_function_set_names", Values: []string{"freebsd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", "rack\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", "bbr\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"}},
 		&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", FldName: "pcbcnt", TypeSize: 4}}},
 	}}},
+	{Key: StructKey{Name: "tcp_generic_option"}, Desc: &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, 34}},
+		&LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "length", TypeSize: 1}}, Buf: "parent"},
+		&BufferType{TypeCommon: TypeCommon{TypeName: "array", FldName: "data", IsVarlen: true}, Kind: 1, RangeEnd: 16},
+	}}},
+	{Key: StructKey{Name: "tcp_header"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "tcp_header", IsVarlen: true}, Fields: []Type{
+		&ProcType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "proc", FldName: "src_port", TypeSize: 2}, ArgFormat: 1}, ValuesStart: 20000, ValuesPerProc: 4},
+		&ProcType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "proc", FldName: "dst_port", TypeSize: 2}, ArgFormat: 1}, ValuesStart: 20000, ValuesPerProc: 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", TypeSize: 1}, BitfieldLen: 1, BitfieldMdl: true}},
+		&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "reserved", TypeSize: 1}, BitfieldOff: 1, BitfieldLen: 3, BitfieldMdl: true}},
+		&LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "bytesize4", FldName: "data_off", TypeSize: 1}, BitfieldOff: 4, BitfieldLen: 4}, BitSize: 32, Buf: "parent"},
+		&FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "tcp_flags", FldName: "flags", TypeSize: 1}}, Vals: []uint64{0, 1, 2, 4, 8, 16, 32, 64, 128}, BitMask: true},
+		&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int16be", FldName: "window_size", TypeSize: 2}, ArgFormat: 1}},
+		&CsumType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "csum", FldName: "csum", TypeSize: 2}, ArgFormat: 1}, Kind: 1, Buf: "tcp_packet", Protocol: 6},
+		&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int16be", FldName: "urg_ptr", TypeSize: 2}, ArgFormat: 1}},
+		&StructType{Key: StructKey{Name: "tcp_options"}, FldName: "options"},
+	}}},
+	{Key: StructKey{Name: "tcp_md5sig_option"}, Desc: &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}}, Buf: "parent"},
+		&BufferType{TypeCommon: TypeCommon{TypeName: "array", FldName: "md5", TypeSize: 16}, Kind: 1, RangeBegin: 16, RangeEnd: 16},
+	}}},
+	{Key: StructKey{Name: "tcp_mss_option"}, Desc: &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}}, Buf: "parent"},
+		&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int16", FldName: "seg_size", TypeSize: 2}}},
+	}}},
+	{Key: StructKey{Name: "tcp_nop_option"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "tcp_nop_option", TypeSize: 1}, Fields: []Type{
+		&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "type", TypeSize: 1}}, Val: 1},
+	}}},
+	{Key: StructKey{Name: "tcp_option"}, Desc: &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"},
+		&StructType{Key: StructKey{Name: "tcp_fastopen_option"}, FldName: "fastopen"},
+	}}},
+	{Key: StructKey{Name: "tcp_options"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "tcp_options", IsVarlen: true}, Fields: []Type{
+		&ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "options", IsVarlen: true}, Type: &UnionType{Key: StructKey{Name: "tcp_option"}}},
+	}, AlignAttr: 4}},
+	{Key: StructKey{Name: "tcp_packet"}, Desc: &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"},
+	}}},
+	{Key: StructKey{Name: "tcp_payload"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "tcp_payload", IsVarlen: true}, Fields: []Type{
+		&BufferType{TypeCommon: TypeCommon{TypeName: "array", FldName: "payload", IsVarlen: true}},
+	}}},
 	{Key: StructKey{Name: "tcp_resources", Dir: 1}, Desc: &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}},
 	}}},
+	{Key: StructKey{Name: "tcp_sack_option"}, Desc: &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}}, Buf: "parent"},
+		&ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "data", IsVarlen: true}, Type: &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32be", TypeSize: 4}, ArgFormat: 1}}},
+	}}},
+	{Key: StructKey{Name: "tcp_sack_perm_option"}, Desc: &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}}, Buf: "parent"},
+	}}},
+	{Key: StructKey{Name: "tcp_timestamp_option"}, Desc: &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}}, Buf: "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}},
+	}}},
+	{Key: StructKey{Name: "tcp_window_option"}, Desc: &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}}, Buf: "parent"},
+		&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "shift", TypeSize: 1}}},
+	}}},
 	{Key: StructKey{Name: "timespec"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "timespec", TypeSize: 16}, Fields: []Type{
 		&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "intptr", FldName: "sec", TypeSize: 8}}},
 		&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "intptr", FldName: "nsec", TypeSize: 8}}},
@@ -1069,10 +1747,39 @@
 		&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "intptr", FldName: "sec", TypeSize: 8, ArgDir: 2}}},
 		&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "intptr", FldName: "usec", TypeSize: 8, ArgDir: 2}}},
 	}}},
+	{Key: StructKey{Name: "udp_header"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "udp_header", TypeSize: 8}, Fields: []Type{
+		&ProcType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "proc", FldName: "src_port", TypeSize: 2}, ArgFormat: 1}, ValuesStart: 20000, ValuesPerProc: 4},
+		&ProcType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "proc", FldName: "dst_port", TypeSize: 2}, ArgFormat: 1}, ValuesStart: 20000, ValuesPerProc: 4},
+		&LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "length", TypeSize: 2}, ArgFormat: 1}, Buf: "parent"},
+		&CsumType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "csum", FldName: "csum", TypeSize: 2}, ArgFormat: 1}, Kind: 1, Buf: "parent", Protocol: 17},
+	}}},
+	{Key: StructKey{Name: "udp_packet"}, Desc: &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"},
+	}}},
+	{Key: StructKey{Name: "udp_payload"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "udp_payload", IsVarlen: true}, Fields: []Type{
+		&BufferType{TypeCommon: TypeCommon{TypeName: "array", FldName: "payload", IsVarlen: true}},
+	}}},
 	{Key: StructKey{Name: "unix_pair", Dir: 1}, Desc: &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}},
 	}}},
+	{Key: StructKey{Name: "vlan_tag"}, Desc: &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"},
+	}}},
+	{Key: StructKey{Name: "vlan_tag_ad"}, Desc: &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", TypeSize: 2}, BitfieldLen: 3, BitfieldMdl: true}},
+		&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int16", FldName: "dei", TypeSize: 2}, BitfieldOff: 3, BitfieldLen: 1, BitfieldMdl: true}},
+		&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int16", FldName: "vid", TypeSize: 2}, BitfieldOff: 4, BitfieldLen: 12}, Kind: 2, RangeEnd: 4},
+	}}},
+	{Key: StructKey{Name: "vlan_tag_q"}, Desc: &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", TypeSize: 2}, BitfieldLen: 3, BitfieldMdl: true}},
+		&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int16", FldName: "dei", TypeSize: 2}, BitfieldOff: 3, BitfieldLen: 1, BitfieldMdl: true}},
+		&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int16", FldName: "vid", TypeSize: 2}, BitfieldOff: 4, BitfieldLen: 12}, Kind: 2, RangeEnd: 4},
+	}}},
 }
 
 var syscalls_amd64 = []*Syscall{
@@ -3932,7 +4639,7 @@
 	{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}}, Buf: "packet"},
-		&PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "packet", TypeSize: 8}, Type: &BufferType{TypeCommon: TypeCommon{TypeName: "array", IsVarlen: true}}},
+		&PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "packet", TypeSize: 8}, Type: &StructType{Key: StructKey{Name: "eth_packet"}}},
 	}},
 	{Name: "syz_execute_func", CallName: "syz_execute_func", Args: []Type{
 		&PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "text", TypeSize: 8}, Type: &BufferType{TypeCommon: TypeCommon{TypeName: "text", IsVarlen: true}, Kind: 4}},
@@ -3994,6 +4701,17 @@
 	{Name: "AF_IPX", Value: 23},
 	{Name: "AF_UNIX", Value: 1},
 	{Name: "AF_UNSPEC"},
+	{Name: "ARPHRD_ETHER", Value: 1},
+	{Name: "ARPHRD_FRELAY", Value: 15},
+	{Name: "ARPHRD_IEEE1394", Value: 24},
+	{Name: "ARPHRD_IEEE802", Value: 6},
+	{Name: "ARPHRD_INFINIBAND", Value: 32},
+	{Name: "ARPOP_INVREPLY", Value: 9},
+	{Name: "ARPOP_INVREQUEST", Value: 8},
+	{Name: "ARPOP_REPLY", Value: 2},
+	{Name: "ARPOP_REQUEST", Value: 1},
+	{Name: "ARPOP_REVREPLY", Value: 4},
+	{Name: "ARPOP_REVREQUEST", Value: 3},
 	{Name: "AT_FDCWD", Value: 18446744073709551516},
 	{Name: "AT_REMOVEDIR", Value: 2048},
 	{Name: "AT_SYMLINK_FOLLOW", Value: 1024},
@@ -4060,6 +4778,184 @@
 	{Name: "DIOCXBEGIN", Value: 3222291537},
 	{Name: "DIOCXCOMMIT", Value: 3222291538},
 	{Name: "DIOCXROLLBACK", Value: 3222291539},
+	{Name: "ETHERTYPE_8023", Value: 4},
+	{Name: "ETHERTYPE_AARP", Value: 33011},
+	{Name: "ETHERTYPE_ACCTON", Value: 33680},
+	{Name: "ETHERTYPE_AEONIC", Value: 32822},
+	{Name: "ETHERTYPE_ALPHA", Value: 33098},
+	{Name: "ETHERTYPE_AMBER", Value: 24584},
+	{Name: "ETHERTYPE_AMOEBA", Value: 33093},
+	{Name: "ETHERTYPE_APOLLO", Value: 33015},
+	{Name: "ETHERTYPE_APOLLODOMAIN", Value: 32793},
+	{Name: "ETHERTYPE_APPLITEK", Value: 32967},
+	{Name: "ETHERTYPE_ARGONAUT", Value: 32826},
+	{Name: "ETHERTYPE_ARP", Value: 2054},
+	{Name: "ETHERTYPE_ATALK", Value: 32923},
+	{Name: "ETHERTYPE_ATOMIC", Value: 34527},
+	{Name: "ETHERTYPE_ATT", Value: 32873},
+	{Name: "ETHERTYPE_ATTSTANFORD", Value: 32776},
+	{Name: "ETHERTYPE_AUTOPHON", Value: 32874},
+	{Name: "ETHERTYPE_AXIS", Value: 34902},
+	{Name: "ETHERTYPE_BCLOOP", Value: 36867},
+	{Name: "ETHERTYPE_BOFL", Value: 33026},
+	{Name: "ETHERTYPE_CABLETRON", Value: 28724},
+	{Name: "ETHERTYPE_CHAOS", Value: 2052},
+	{Name: "ETHERTYPE_COMDESIGN", Value: 32876},
+	{Name: "ETHERTYPE_COMPUGRAPHIC", Value: 32877},
+	{Name: "ETHERTYPE_COUNTERPOINT", Value: 32866},
+	{Name: "ETHERTYPE_CRONUS", Value: 32772},
+	{Name: "ETHERTYPE_CRONUSVLN", Value: 32771},
+	{Name: "ETHERTYPE_DCA", Value: 4660},
+	{Name: "ETHERTYPE_DDE", Value: 32891},
+	{Name: "ETHERTYPE_DEBNI", Value: 43690},
+	{Name: "ETHERTYPE_DECAM", Value: 32840},
+	{Name: "ETHERTYPE_DECCUST", Value: 24582},
+	{Name: "ETHERTYPE_DECDIAG", Value: 24581},
+	{Name: "ETHERTYPE_DECDNS", Value: 32828},
+	{Name: "ETHERTYPE_DECDTS", Value: 32830},
+	{Name: "ETHERTYPE_DECEXPER", Value: 24576},
+	{Name: "ETHERTYPE_DECLAST", Value: 32833},
+	{Name: "ETHERTYPE_DECLTM", Value: 32831},
+	{Name: "ETHERTYPE_DECMUMPS", Value: 24585},
+	{Name: "ETHERTYPE_DECNETBIOS", Value: 32832},
+	{Name: "ETHERTYPE_DECnet", Value: 24579},
+	{Name: "ETHERTYPE_DELTACON", Value: 34526},
+	{Name: "ETHERTYPE_DIDDLE", Value: 17185},
+	{Name: "ETHERTYPE_DLOG1", Value: 1632},
+	{Name: "ETHERTYPE_DLOG2", Value: 1633},
+	{Name: "ETHERTYPE_DOGFIGHT", Value: 6537},
+	{Name: "ETHERTYPE_DSMD", Value: 32825},
+	{Name: "ETHERTYPE_ECMA", Value: 2051},
+	{Name: "ETHERTYPE_ENCRYPT", Value: 32829},
+	{Name: "ETHERTYPE_ES", Value: 32861},
+	{Name: "ETHERTYPE_EXCELAN", Value: 32784},
+	{Name: "ETHERTYPE_EXPERDATA", Value: 32841},
+	{Name: "ETHERTYPE_FLIP", Value: 33094},
+	{Name: "ETHERTYPE_FLOWCONTROL", Value: 34824},
+	{Name: "ETHERTYPE_FRARP", Value: 2056},
+	{Name: "ETHERTYPE_GENDYN", Value: 32872},
+	{Name: "ETHERTYPE_HAYES", Value: 33072},
+	{Name: "ETHERTYPE_HIPPI_FP", Value: 33152},
+	{Name: "ETHERTYPE_HITACHI", Value: 34848},
+	{Name: "ETHERTYPE_HP", Value: 32773},
+	{Name: "ETHERTYPE_IEEEPUP", Value: 2560},
+	{Name: "ETHERTYPE_IEEEPUPAT", Value: 2561},
+	{Name: "ETHERTYPE_IMLBL", Value: 19522},
+	{Name: "ETHERTYPE_IMLBLDIAG", Value: 16972},
+	{Name: "ETHERTYPE_IP", Value: 2048},
+	{Name: "ETHERTYPE_IPAS", Value: 34668},
+	{Name: "ETHERTYPE_IPV6", Value: 34525},
+	{Name: "ETHERTYPE_IPX", Value: 33079},
+	{Name: "ETHERTYPE_IPXNEW", Value: 32823},
+	{Name: "ETHERTYPE_KALPANA", Value: 34178},
+	{Name: "ETHERTYPE_LANBRIDGE", Value: 32824},
+	{Name: "ETHERTYPE_LANPROBE", Value: 34952},
+	{Name: "ETHERTYPE_LAT", Value: 24580},
+	{Name: "ETHERTYPE_LITTLE", Value: 32864},
+	{Name: "ETHERTYPE_LOGICRAFT", Value: 33096},
+	{Name: "ETHERTYPE_LOOPBACK", Value: 36864},
+	{Name: "ETHERTYPE_MATRA", Value: 32890},
+	{Name: "ETHERTYPE_MERIT", Value: 32892},
+	{Name: "ETHERTYPE_MICP", Value: 34618},
+	{Name: "ETHERTYPE_MOPDL", Value: 24577},
+	{Name: "ETHERTYPE_MOPRC", Value: 24578},
+	{Name: "ETHERTYPE_MOTOROLA", Value: 33165},
+	{Name: "ETHERTYPE_MPLS", Value: 34887},
+	{Name: "ETHERTYPE_MPLS_MCAST", Value: 34888},
+	{Name: "ETHERTYPE_MUMPS", Value: 33087},
+	{Name: "ETHERTYPE_NBPCC", Value: 15364},
+	{Name: "ETHERTYPE_NBPCLAIM", Value: 15369},
+	{Name: "ETHERTYPE_NBPCLREQ", Value: 15365},
+	{Name: "ETHERTYPE_NBPCLRSP", Value: 15366},
+	{Name: "ETHERTYPE_NBPCREQ", Value: 15362},
+	{Name: "ETHERTYPE_NBPCRSP", Value: 15363},
+	{Name: "ETHERTYPE_NBPDG", Value: 15367},
+	{Name: "ETHERTYPE_NBPDGB", Value: 15368},
+	{Name: "ETHERTYPE_NBPDLTE", Value: 15370},
+	{Name: "ETHERTYPE_NBPRAR", Value: 15372},
+	{Name: "ETHERTYPE_NBPRAS", Value: 15371},
+	{Name: "ETHERTYPE_NBPRST", Value: 15373},
+	{Name: "ETHERTYPE_NBPSCD", Value: 15361},
+	{Name: "ETHERTYPE_NBPVCD", Value: 15360},
+	{Name: "ETHERTYPE_NBS", Value: 2050},
+	{Name: "ETHERTYPE_NCD", Value: 33097},
+	{Name: "ETHERTYPE_NESTAR", Value: 32774},
+	{Name: "ETHERTYPE_NETBEUI", Value: 33169},
+	{Name: "ETHERTYPE_NOVELL", Value: 33080},
+	{Name: "ETHERTYPE_NS", Value: 1536},
+	{Name: "ETHERTYPE_NSAT", Value: 1537},
+	{Name: "ETHERTYPE_NSCOMPAT", Value: 2055},
+	{Name: "ETHERTYPE_OS9", Value: 28679},
+	{Name: "ETHERTYPE_OS9NET", Value: 28681},
+	{Name: "ETHERTYPE_PACER", Value: 32966},
+	{Name: "ETHERTYPE_PAE", Value: 34958},
+	{Name: "ETHERTYPE_PCS", Value: 16962},
+	{Name: "ETHERTYPE_PLANNING", Value: 32836},
+	{Name: "ETHERTYPE_PPP", Value: 34827},
+	{Name: "ETHERTYPE_PPPOE", Value: 34916},
+	{Name: "ETHERTYPE_PPPOEDISC", Value: 34915},
+	{Name: "ETHERTYPE_PRIMENTS", Value: 28721},
+	{Name: "ETHERTYPE_PUP", Value: 512},
+	{Name: "ETHERTYPE_PUPAT", Value: 512},
+	{Name: "ETHERTYPE_QINQ", Value: 34984},
+	{Name: "ETHERTYPE_RACAL", Value: 28720},
+	{Name: "ETHERTYPE_RATIONAL", Value: 33104},
+	{Name: "ETHERTYPE_RAWFR", Value: 25945},
+	{Name: "ETHERTYPE_RCL", Value: 6549},
+	{Name: "ETHERTYPE_RDP", Value: 34617},
+	{Name: "ETHERTYPE_RETIX", Value: 33010},
+	{Name: "ETHERTYPE_REVARP", Value: 32821},
+	{Name: "ETHERTYPE_SCA", Value: 24583},
+	{Name: "ETHERTYPE_SECTRA", Value: 34523},
+	{Name: "ETHERTYPE_SECUREDATA", Value: 34669},
+	{Name: "ETHERTYPE_SGITW", Value: 33150},
+	{Name: "ETHERTYPE_SG_BOUNCE", Value: 32790},
+	{Name: "ETHERTYPE_SG_DIAG", Value: 32787},
+	{Name: "ETHERTYPE_SG_NETGAMES", Value: 32788},
+	{Name: "ETHERTYPE_SG_RESV", Value: 32789},
+	{Name: "ETHERTYPE_SIMNET", Value: 21000},
+	{Name: "ETHERTYPE_SLOW", Value: 34825},
+	{Name: "ETHERTYPE_SNA", Value: 32981},
+	{Name: "ETHERTYPE_SNMP", Value: 33100},
+	{Name: "ETHERTYPE_SONIX", Value: 64245},
+	{Name: "ETHERTYPE_SPIDER", Value: 32927},
+	{Name: "ETHERTYPE_SPRITE", Value: 1280},
+	{Name: "ETHERTYPE_STP", Value: 33153},
+	{Name: "ETHERTYPE_TALARIS", Value: 33067},
+	{Name: "ETHERTYPE_TALARISMC", Value: 34091},
+	{Name: "ETHERTYPE_TCPCOMP", Value: 34667},
+	{Name: "ETHERTYPE_TCPSM", Value: 36866},
+	{Name: "ETHERTYPE_TEC", Value: 33103},
+	{Name: "ETHERTYPE_TEST", Value: 34850},
+	{Name: "ETHERTYPE_TIGAN", Value: 32815},
+	{Name: "ETHERTYPE_TRANSETHER", Value: 25944},
+	{Name: "ETHERTYPE_TYMSHARE", Value: 32814},
+	{Name: "ETHERTYPE_UBBST", Value: 28677},
+	{Name: "ETHERTYPE_UBDEBUG", Value: 2304},
+	{Name: "ETHERTYPE_UBDIAGLOOP", Value: 28674},
+	{Name: "ETHERTYPE_UBDL", Value: 28672},
+	{Name: "ETHERTYPE_UBNIU", Value: 28673},
+	{Name: "ETHERTYPE_UBNMC", Value: 28675},
+	{Name: "ETHERTYPE_VALID", Value: 5632},
+	{Name: "ETHERTYPE_VARIAN", Value: 32989},
+	{Name: "ETHERTYPE_VAXELN", Value: 32827},
+	{Name: "ETHERTYPE_VEECO", Value: 32871},
+	{Name: "ETHERTYPE_VEXP", Value: 32859},
+	{Name: "ETHERTYPE_VGLAB", Value: 33073},
+	{Name: "ETHERTYPE_VINES", Value: 2989},
+	{Name: "ETHERTYPE_VINESECHO", Value: 2991},
+	{Name: "ETHERTYPE_VINESLOOP", Value: 2990},
+	{Name: "ETHERTYPE_VITAL", Value: 65280},
+	{Name: "ETHERTYPE_VLAN", Value: 33024},
+	{Name: "ETHERTYPE_VLTLMAN", Value: 32896},
+	{Name: "ETHERTYPE_VPROD", Value: 32860},
+	{Name: "ETHERTYPE_VURESERVED", Value: 33095},
+	{Name: "ETHERTYPE_WATERLOO", Value: 33072},
+	{Name: "ETHERTYPE_WELLFLEET", Value: 33027},
+	{Name: "ETHERTYPE_X25", Value: 2053},
+	{Name: "ETHERTYPE_X75", Value: 2049},
+	{Name: "ETHERTYPE_XNSSM", Value: 36865},
+	{Name: "ETHERTYPE_XTP", Value: 33149},
 	{Name: "FASYNC", Value: 64},
 	{Name: "FD_CLOEXEC", Value: 1},
 	{Name: "F_DUPFD"},
@@ -4081,7 +4977,84 @@
 	{Name: "GETPID", Value: 4},
 	{Name: "GETVAL", Value: 5},
 	{Name: "GETZCNT", Value: 7},
+	{Name: "ICMP6_DST_UNREACH", Value: 1},
+	{Name: "ICMP6_DST_UNREACH_ADDR", Value: 3},
+	{Name: "ICMP6_DST_UNREACH_ADMIN", Value: 1},
+	{Name: "ICMP6_DST_UNREACH_BEYONDSCOPE", Value: 2},
+	{Name: "ICMP6_DST_UNREACH_NOPORT", Value: 4},
+	{Name: "ICMP6_DST_UNREACH_NOROUTE"},
+	{Name: "ICMP6_DST_UNREACH_NOTNEIGHBOR", Value: 2},
+	{Name: "ICMP6_DST_UNREACH_POLICY", Value: 5},
+	{Name: "ICMP6_DST_UNREACH_REJECT", Value: 6},
+	{Name: "ICMP6_DST_UNREACH_SRCROUTE", Value: 7},
+	{Name: "ICMP6_ECHO_REPLY", Value: 129},
+	{Name: "ICMP6_ECHO_REQUEST", Value: 128},
+	{Name: "ICMP6_NI_QUERY", Value: 139},
+	{Name: "ICMP6_NI_REPLY", Value: 140},
+	{Name: "ICMP6_PACKET_TOO_BIG", Value: 2},
+	{Name: "ICMP6_PARAMPROB_HEADER"},
+	{Name: "ICMP6_PARAMPROB_NEXTHEADER", Value: 1},
+	{Name: "ICMP6_PARAMPROB_OPTION", Value: 2},
+	{Name: "ICMP6_PARAM_PROB", Value: 4},
+	{Name: "ICMP6_TIME_EXCEEDED", Value: 3},
+	{Name: "ICMP6_TIME_EXCEED_REASSEMBLY", Value: 1},
+	{Name: "ICMP6_TIME_EXCEED_TRANSIT"},
+	{Name: "ICMP_ALTHOSTADDR", Value: 6},
+	{Name: "ICMP_DATACONVERR", Value: 31},
+	{Name: "ICMP_ECHO", Value: 8},
+	{Name: "ICMP_ECHOREPLY"},
+	{Name: "ICMP_IPV6_IAMHERE", Value: 34},
+	{Name: "ICMP_IPV6_WHEREAREYOU", Value: 33},
+	{Name: "ICMP_IREQ", Value: 15},
+	{Name: "ICMP_IREQREPLY", Value: 16},
+	{Name: "ICMP_MASKREPLY", Value: 18},
+	{Name: "ICMP_MASKREQ", Value: 17},
+	{Name: "ICMP_MOBILE_REDIRECT", Value: 32},
+	{Name: "ICMP_MOBILE_REGREPLY", Value: 36},
+	{Name: "ICMP_MOBILE_REGREQUEST", Value: 35},
+	{Name: "ICMP_PARAMPROB", Value: 12},
+	{Name: "ICMP_PARAMPROB_ERRATPTR"},
+	{Name: "ICMP_PARAMPROB_LENGTH", Value: 2},
+	{Name: "ICMP_PARAMPROB_OPTABSENT", Value: 1},
+	{Name: "ICMP_PHOTURIS", Value: 40},
+	{Name: "ICMP_REDIRECT", Value: 5},
+	{Name: "ICMP_REDIRECT_HOST", Value: 1},
+	{Name: "ICMP_REDIRECT_NET"},
+	{Name: "ICMP_REDIRECT_TOSHOST", Value: 3},
+	{Name: "ICMP_REDIRECT_TOSNET", Value: 2},
+	{Name: "ICMP_ROUTERADVERT", Value: 9},
+	{Name: "ICMP_ROUTERSOLICIT", Value: 10},
+	{Name: "ICMP_SKIP", Value: 39},
+	{Name: "ICMP_SOURCEQUENCH", Value: 4},
+	{Name: "ICMP_TIMXCEED", Value: 11},
+	{Name: "ICMP_TIMXCEED_INTRANS"},
+	{Name: "ICMP_TIMXCEED_REASS", Value: 1},
+	{Name: "ICMP_TRACEROUTE", Value: 30},
+	{Name: "ICMP_TSTAMP", Value: 13},
+	{Name: "ICMP_TSTAMPREPLY", Value: 14},
+	{Name: "ICMP_UNREACH", Value: 3},
+	{Name: "ICMP_UNREACH_FILTER_PROHIB", Value: 13},
+	{Name: "ICMP_UNREACH_HOST", Value: 1},
+	{Name: "ICMP_UNREACH_HOST_PRECEDENCE", Value: 14},
+	{Name: "ICMP_UNREACH_HOST_PROHIB", Value: 10},
+	{Name: "ICMP_UNREACH_HOST_UNKNOWN", Value: 7},
+	{Name: "ICMP_UNREACH_ISOLATED", Value: 8},
+	{Name: "ICMP_UNREACH_NEEDFRAG", Value: 4},
+	{Name: "ICMP_UNREACH_NET"},
+	{Name: "ICMP_UNREACH_NET_PROHIB", Value: 9},
+	{Name: "ICMP_UNREACH_NET_UNKNOWN", Value: 6},
+	{Name: "ICMP_UNREACH_PORT", Value: 3},
+	{Name: "ICMP_UNREACH_PRECEDENCE_CUTOFF", Value: 15},
+	{Name: "ICMP_UNREACH_PROTOCOL", Value: 2},
+	{Name: "ICMP_UNREACH_SRCFAIL", Value: 5},
+	{Name: "ICMP_UNREACH_TOSHOST", Value: 12},
+	{Name: "ICMP_UNREACH_TOSNET", Value: 11},
 	{Name: "IFNAMSIZ", Value: 16},
+	{Name: "IP6OPT_JUMBO", Value: 194},
+	{Name: "IP6OPT_PAD1"},
+	{Name: "IP6OPT_PADN", Value: 1},
+	{Name: "IP6OPT_ROUTER_ALERT", Value: 5},
+	{Name: "IP6OPT_TUNNEL_LIMIT", Value: 4},
 	{Name: "IPC_CREAT", Value: 512},
 	{Name: "IPC_EXCL", Value: 1024},
 	{Name: "IPC_INFO", Value: 3},
@@ -4090,14 +5063,130 @@
 	{Name: "IPC_RMID"},
 	{Name: "IPC_SET", Value: 1},
 	{Name: "IPC_STAT", Value: 2},
+	{Name: "IPOPT_CIPSO", Value: 134},
+	{Name: "IPOPT_EOL"},
+	{Name: "IPOPT_ESO", Value: 133},
+	{Name: "IPOPT_LSRR", Value: 131},
+	{Name: "IPOPT_NOP", Value: 1},
+	{Name: "IPOPT_RA", Value: 148},
+	{Name: "IPOPT_RR", Value: 7},
+	{Name: "IPOPT_SATID", Value: 136},
+	{Name: "IPOPT_SECURITY", Value: 130},
+	{Name: "IPOPT_SSRR", Value: 137},
+	{Name: "IPOPT_TS", Value: 68},
+	{Name: "IPOPT_TS_PRESPEC", Value: 3},
+	{Name: "IPOPT_TS_TSANDADDR", Value: 1},
+	{Name: "IPOPT_TS_TSONLY"},
+	{Name: "IPPROTO_3PC", Value: 34},
+	{Name: "IPPROTO_ADFS", Value: 68},
+	{Name: "IPPROTO_AH", Value: 51},
+	{Name: "IPPROTO_AHIP", Value: 61},
+	{Name: "IPPROTO_APES", Value: 99},
+	{Name: "IPPROTO_ARGUS", Value: 13},
+	{Name: "IPPROTO_AX25", Value: 93},
+	{Name: "IPPROTO_BHA", Value: 49},
+	{Name: "IPPROTO_BLT", Value: 30},
+	{Name: "IPPROTO_BRSATMON", Value: 76},
+	{Name: "IPPROTO_CARP", Value: 112},
+	{Name: "IPPROTO_CFTP", Value: 62},
+	{Name: "IPPROTO_CHAOS", Value: 16},
+	{Name: "IPPROTO_CMTP", Value: 38},
+	{Name: "IPPROTO_CPHB", Value: 73},
+	{Name: "IPPROTO_CPNX", Value: 72},
+	{Name: "IPPROTO_DDP", Value: 37},
+	{Name: "IPPROTO_DGP", Value: 86},
+	{Name: "IPPROTO_DSTOPTS", Value: 60},
+	{Name: "IPPROTO_EGP", Value: 8},
+	{Name: "IPPROTO_EMCON", Value: 14},
+	{Name: "IPPROTO_ENCAP", Value: 98},
+	{Name: "IPPROTO_EON", Value: 80},
+	{Name: "IPPROTO_ESP", Value: 50},
+	{Name: "IPPROTO_ETHERIP", Value: 97},
+	{Name: "IPPROTO_FRAGMENT", Value: 44},
+	{Name: "IPPROTO_GMTP", Value: 100},
+	{Name: "IPPROTO_GRE", Value: 47},
+	{Name: "IPPROTO_HELLO", Value: 63},
+	{Name: "IPPROTO_HIP", Value: 139},
+	{Name: "IPPROTO_HMP", Value: 20},
 	{Name: "IPPROTO_ICMP", Value: 1},
 	{Name: "IPPROTO_ICMPV6", Value: 58},
+	{Name: "IPPROTO_IDP", Value: 22},
+	{Name: "IPPROTO_IDPR", Value: 35},
+	{Name: "IPPROTO_IDRP", Value: 45},
+	{Name: "IPPROTO_IGMP", Value: 2},
+	{Name: "IPPROTO_IGP", Value: 85},
+	{Name: "IPPROTO_IGRP", Value: 88},
+	{Name: "IPPROTO_IL", Value: 40},
+	{Name: "IPPROTO_INLSP", Value: 52},
+	{Name: "IPPROTO_INP", Value: 32},
 	{Name: "IPPROTO_IP"},
+	{Name: "IPPROTO_IPCOMP", Value: 108},
+	{Name: "IPPROTO_IPCV", Value: 71},
+	{Name: "IPPROTO_IPEIP", Value: 94},
+	{Name: "IPPROTO_IPPC", Value: 67},
+	{Name: "IPPROTO_IPV4", Value: 4},
 	{Name: "IPPROTO_IPV6", Value: 41},
+	{Name: "IPPROTO_IRTP", Value: 28},
+	{Name: "IPPROTO_KRYPTOLAN", Value: 65},
+	{Name: "IPPROTO_LARP", Value: 91},
+	{Name: "IPPROTO_LEAF1", Value: 25},
+	{Name: "IPPROTO_LEAF2", Value: 26},
+	{Name: "IPPROTO_MEAS", Value: 19},
+	{Name: "IPPROTO_MH", Value: 135},
+	{Name: "IPPROTO_MHRP", Value: 48},
+	{Name: "IPPROTO_MICP", Value: 95},
+	{Name: "IPPROTO_MOBILE", Value: 55},
+	{Name: "IPPROTO_MPLS", Value: 137},
+	{Name: "IPPROTO_MTP", Value: 92},
+	{Name: "IPPROTO_MUX", Value: 18},
+	{Name: "IPPROTO_ND", Value: 77},
+	{Name: "IPPROTO_NHRP", Value: 54},
+	{Name: "IPPROTO_NONE", Value: 59},
+	{Name: "IPPROTO_NSP", Value: 31},
+	{Name: "IPPROTO_NVPII", Value: 11},
+	{Name: "IPPROTO_OSPFIGP", Value: 89},
+	{Name: "IPPROTO_PFSYNC", Value: 240},
+	{Name: "IPPROTO_PGM", Value: 113},
+	{Name: "IPPROTO_PIGP", Value: 9},
+	{Name: "IPPROTO_PIM", Value: 103},
+	{Name: "IPPROTO_PRM", Value: 21},
+	{Name: "IPPROTO_PUP", Value: 12},
+	{Name: "IPPROTO_PVP", Value: 75},
+	{Name: "IPPROTO_RCCMON", Value: 10},
+	{Name: "IPPROTO_RDP", Value: 27},
+	{Name: "IPPROTO_ROUTING", Value: 43},
+	{Name: "IPPROTO_RSVP", Value: 46},
+	{Name: "IPPROTO_RVD", Value: 66},
+	{Name: "IPPROTO_SATEXPAK", Value: 64},
+	{Name: "IPPROTO_SATMON", Value: 69},
+	{Name: "IPPROTO_SCCSP", Value: 96},
 	{Name: "IPPROTO_SCTP", Value: 132},
+	{Name: "IPPROTO_SDRP", Value: 42},
+	{Name: "IPPROTO_SEP", Value: 33},
+	{Name: "IPPROTO_SHIM6", Value: 140},
+	{Name: "IPPROTO_SKIP", Value: 57},
+	{Name: "IPPROTO_SRPC", Value: 90},
+	{Name: "IPPROTO_ST", Value: 7},
+	{Name: "IPPROTO_SVMTP", Value: 82},
+	{Name: "IPPROTO_SWIPE", Value: 53},
+	{Name: "IPPROTO_TCF", Value: 87},
 	{Name: "IPPROTO_TCP", Value: 6},
+	{Name: "IPPROTO_TLSP", Value: 56},
+	{Name: "IPPROTO_TP", Value: 29},
+	{Name: "IPPROTO_TPXX", Value: 39},
+	{Name: "IPPROTO_TRUNK1", Value: 23},
+	{Name: "IPPROTO_TRUNK2", Value: 24},
+	{Name: "IPPROTO_TTP", Value: 84},
 	{Name: "IPPROTO_UDP", Value: 17},
 	{Name: "IPPROTO_UDPLITE", Value: 136},
+	{Name: "IPPROTO_VINES", Value: 83},
+	{Name: "IPPROTO_VISA", Value: 70},
+	{Name: "IPPROTO_VMTP", Value: 81},
+	{Name: "IPPROTO_WBEXPAK", Value: 79},
+	{Name: "IPPROTO_WBMON", Value: 78},
+	{Name: "IPPROTO_WSN", Value: 74},
+	{Name: "IPPROTO_XNET", Value: 15},
+	{Name: "IPPROTO_XTP", Value: 36},
 	{Name: "IPV6_2292DSTOPTS", Value: 23},
 	{Name: "IPV6_2292HOPLIMIT", Value: 20},
 	{Name: "IPV6_2292HOPOPTS", Value: 22},
@@ -4127,6 +5216,9 @@
 	{Name: "IPV6_RECVTCLASS", Value: 57},
 	{Name: "IPV6_RTHDR", Value: 51},
 	{Name: "IPV6_RTHDRDSTOPTS", Value: 35},
+	{Name: "IPV6_RTHDR_LOOSE"},
+	{Name: "IPV6_RTHDR_STRICT", Value: 1},
+	{Name: "IPV6_RTHDR_TYPE_0"},
 	{Name: "IPV6_TCLASS", Value: 61},
 	{Name: "IPV6_UNICAST_HOPS", Value: 4},
 	{Name: "IPV6_V6ONLY", Value: 27},
@@ -4181,6 +5273,9 @@
 	{Name: "MCL_CURRENT", Value: 1},
 	{Name: "MCL_FUTURE", Value: 2},
 	{Name: "MIFF_REGISTER", Value: 1},
+	{Name: "MLD_LISTENER_QUERY", Value: 130},
+	{Name: "MLD_LISTENER_REDUCTION", Value: 132},
+	{Name: "MLD_LISTENER_REPORT", Value: 131},
 	{Name: "MRT6_ADD_MFC", Value: 104},
 	{Name: "MRT6_ADD_MIF", Value: 102},
 	{Name: "MRT6_DEL_MFC", Value: 105},
@@ -4197,6 +5292,20 @@
 	{Name: "MS_ASYNC", Value: 1},
 	{Name: "MS_INVALIDATE", Value: 2},
 	{Name: "MS_SYNC"},
+	{Name: "ND_NEIGHBOR_ADVERT", Value: 136},
+	{Name: "ND_NEIGHBOR_SOLICIT", Value: 135},
+	{Name: "ND_OPT_DNSSL", Value: 31},
+	{Name: "ND_OPT_MTU", Value: 5},
+	{Name: "ND_OPT_NONCE", Value: 14},
+	{Name: "ND_OPT_PREFIX_INFORMATION", Value: 3},
+	{Name: "ND_OPT_RDNSS", Value: 25},
+	{Name: "ND_OPT_REDIRECTED_HEADER", Value: 4},
+	{Name: "ND_OPT_ROUTE_INFO", Value: 24},
+	{Name: "ND_OPT_SOURCE_LINKADDR", Value: 1},
+	{Name: "ND_OPT_TARGET_LINKADDR", Value: 2},
+	{Name: "ND_REDIRECT", Value: 137},
+	{Name: "ND_ROUTER_ADVERT", Value: 134},
+	{Name: "ND_ROUTER_SOLICIT", Value: 133},
 	{Name: "O_APPEND", Value: 8},
 	{Name: "O_CLOEXEC", Value: 1048576},
 	{Name: "O_CREAT", Value: 512},
@@ -4542,6 +5651,15 @@
 	{Name: "S_IXGRP", Value: 8},
 	{Name: "S_IXOTH", Value: 1},
 	{Name: "S_IXUSR", Value: 64},
+	{Name: "TCPOPT_EOL"},
+	{Name: "TCPOPT_FAST_OPEN", Value: 34},
+	{Name: "TCPOPT_MAXSEG", Value: 2},
+	{Name: "TCPOPT_NOP", Value: 1},
+	{Name: "TCPOPT_SACK", Value: 5},
+	{Name: "TCPOPT_SACK_PERMITTED", Value: 4},
+	{Name: "TCPOPT_SIGNATURE", Value: 19},
+	{Name: "TCPOPT_TIMESTAMP", Value: 8},
+	{Name: "TCPOPT_WINDOW", Value: 3},
 	{Name: "TCP_CCALGOOPT", Value: 65},
 	{Name: "TCP_CONGESTION", Value: 64},
 	{Name: "TCP_DELACK", Value: 72},
@@ -4566,6 +5684,14 @@
 	{Name: "TCP_NOPUSH", Value: 4},
 	{Name: "TCP_PCAP_IN", Value: 4096},
 	{Name: "TCP_PCAP_OUT", Value: 2048},
+	{Name: "TH_ACK", Value: 16},
+	{Name: "TH_CWR", Value: 128},
+	{Name: "TH_ECE", Value: 64},
+	{Name: "TH_FIN", Value: 1},
+	{Name: "TH_PUSH", Value: 8},
+	{Name: "TH_RST", Value: 4},
+	{Name: "TH_SYN", Value: 2},
+	{Name: "TH_URG", Value: 32},
 	{Name: "TIMER_ABSTIME", Value: 1},
 	{Name: "UDPLITE_RECV_CSCOV", Value: 4},
 	{Name: "UDPLITE_SEND_CSCOV", Value: 2},
@@ -4578,4 +5704,4 @@
 	{Name: "WUNTRACED", Value: 2},
 }
 
-const revision_amd64 = "4b5db889742657ae7fe970feaa45dbf6b13e405b"
+const revision_amd64 = "e540c106993372e0b27ed5e2d9ec82c4eed76447"
diff --git a/sys/freebsd/vnet.txt b/sys/freebsd/vnet.txt
index 195668a..de4d1dd 100644
--- a/sys/freebsd/vnet.txt
+++ b/sys/freebsd/vnet.txt
@@ -2,10 +2,18 @@
 # Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
 
 include <sys/types.h>
+include <sys/param.h>
 include <sys/socket.h>
+include <net/ethernet.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
 
@@ -19,7 +27,129 @@
 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])
 
-# This corresponds to LOCAL_IPV4 ("172.20.%d.170" % pid) in executor/common.h
+################################################################################
+################################### 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_TEST, 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]
+] [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, ARPHRD_INFINIBAND
+
+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]
@@ -27,7 +157,7 @@
 	a3	const[0xaa, int8]
 } [packed]
 
-# This corresponds to LOCAL_IPV4 ("172.20.%d.187" % pid) in executor/common.h
+# 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]
@@ -54,11 +184,313 @@
 	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_ESO, IPOPT_CIPSO, 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_ICMP, IPPROTO_IGMP, IPPROTO_IPV4, IPPROTO_TCP, IPPROTO_ST, IPPROTO_EGP, IPPROTO_PIGP, IPPROTO_RCCMON, IPPROTO_NVPII, IPPROTO_PUP, IPPROTO_ARGUS, IPPROTO_EMCON, IPPROTO_XNET, IPPROTO_CHAOS, IPPROTO_UDP, IPPROTO_MUX, IPPROTO_MEAS, IPPROTO_HMP, IPPROTO_PRM, IPPROTO_IDP, IPPROTO_TRUNK1, IPPROTO_TRUNK2, IPPROTO_LEAF1, IPPROTO_LEAF2, IPPROTO_RDP, IPPROTO_IRTP, IPPROTO_TP, IPPROTO_BLT, IPPROTO_NSP, IPPROTO_INP, IPPROTO_SEP, IPPROTO_3PC, IPPROTO_IDPR, IPPROTO_XTP, IPPROTO_DDP, IPPROTO_CMTP, IPPROTO_TPXX, IPPROTO_IL, IPPROTO_SDRP, IPPROTO_IDRP, IPPROTO_RSVP, IPPROTO_GRE, IPPROTO_MHRP, IPPROTO_BHA, IPPROTO_ESP, IPPROTO_AH, IPPROTO_INLSP, IPPROTO_SWIPE, IPPROTO_NHRP, IPPROTO_MOBILE, IPPROTO_TLSP, IPPROTO_SKIP, IPPROTO_AHIP, IPPROTO_CFTP, IPPROTO_HELLO, IPPROTO_SATEXPAK, IPPROTO_KRYPTOLAN, IPPROTO_RVD, IPPROTO_IPPC, IPPROTO_ADFS, IPPROTO_SATMON, IPPROTO_VISA, IPPROTO_IPCV, IPPROTO_CPNX, IPPROTO_CPHB, IPPROTO_WSN, IPPROTO_PVP, IPPROTO_BRSATMON, IPPROTO_ND, IPPROTO_WBMON, IPPROTO_WBEXPAK, IPPROTO_EON, IPPROTO_VMTP, IPPROTO_SVMTP, IPPROTO_VINES, IPPROTO_TTP, IPPROTO_IGP, IPPROTO_DGP, IPPROTO_TCF, IPPROTO_IGRP, IPPROTO_OSPFIGP, IPPROTO_SRPC, IPPROTO_LARP, IPPROTO_MTP, IPPROTO_AX25, IPPROTO_IPEIP, IPPROTO_MICP, IPPROTO_SCCSP, IPPROTO_ETHERIP, IPPROTO_ENCAP, IPPROTO_APES, IPPROTO_GMTP, IPPROTO_IPCOMP, IPPROTO_IPCOMP, IPPROTO_MH, IPPROTO_UDPLITE, IPPROTO_HIP, IPPROTO_SHIM6, IPPROTO_PIM, IPPROTO_CARP, IPPROTO_PGM, IPPROTO_MPLS, IPPROTO_PFSYNC
+
+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_IPV4, IPPROTO_TCP, IPPROTO_ST, IPPROTO_EGP, IPPROTO_PIGP, IPPROTO_RCCMON, IPPROTO_NVPII, IPPROTO_PUP, IPPROTO_ARGUS, IPPROTO_EMCON, IPPROTO_XNET, IPPROTO_CHAOS, IPPROTO_UDP, IPPROTO_MUX, IPPROTO_MEAS, IPPROTO_HMP, IPPROTO_PRM, IPPROTO_IDP, IPPROTO_TRUNK1, IPPROTO_TRUNK2, IPPROTO_LEAF1, IPPROTO_LEAF2, IPPROTO_RDP, IPPROTO_IRTP, IPPROTO_TP, IPPROTO_BLT, IPPROTO_NSP, IPPROTO_INP, IPPROTO_SEP, IPPROTO_3PC, IPPROTO_IDPR, IPPROTO_XTP, IPPROTO_DDP, IPPROTO_CMTP, IPPROTO_TPXX, IPPROTO_IL, IPPROTO_SDRP, IPPROTO_ROUTING, IPPROTO_FRAGMENT, IPPROTO_IDRP, IPPROTO_RSVP, IPPROTO_GRE, IPPROTO_MHRP, IPPROTO_BHA, IPPROTO_ESP, IPPROTO_AH, IPPROTO_INLSP, IPPROTO_SWIPE, IPPROTO_NHRP, IPPROTO_MOBILE, IPPROTO_TLSP, IPPROTO_SKIP, IPPROTO_ICMPV6, IPPROTO_NONE, IPPROTO_DSTOPTS, IPPROTO_AHIP, IPPROTO_CFTP, IPPROTO_HELLO, IPPROTO_SATEXPAK, IPPROTO_KRYPTOLAN, IPPROTO_RVD, IPPROTO_IPPC, IPPROTO_ADFS, IPPROTO_SATMON, IPPROTO_VISA, IPPROTO_IPCV, IPPROTO_CPNX, IPPROTO_CPHB, IPPROTO_WSN, IPPROTO_PVP, IPPROTO_BRSATMON, IPPROTO_ND, IPPROTO_WBMON, IPPROTO_WBEXPAK, IPPROTO_EON, IPPROTO_VMTP, IPPROTO_SVMTP, IPPROTO_VINES, IPPROTO_TTP, IPPROTO_IGP, IPPROTO_DGP, IPPROTO_TCF, IPPROTO_IGRP, IPPROTO_OSPFIGP, IPPROTO_SRPC, IPPROTO_LARP, IPPROTO_MTP, IPPROTO_AX25, IPPROTO_IPEIP, IPPROTO_MICP, IPPROTO_SCCSP, IPPROTO_ETHERIP, IPPROTO_ENCAP, IPPROTO_APES, IPPROTO_GMTP, IPPROTO_IPCOMP, IPPROTO_IPCOMP, IPPROTO_MH, IPPROTO_UDPLITE, IPPROTO_HIP, IPPROTO_SHIM6, IPPROTO_PIM, IPPROTO_CARP, IPPROTO_PGM, IPPROTO_MPLS, IPPROTO_PFSYNC
+
 ipv6_addr_empty {
 	a0	array[const[0x0, int8], 16]
 }
 
-# This corresponds to LOCAL_IPV6 ("fe80::%02hxaa" % pid) in executor/common.h
+# This corresponds to LOCAL_IPV6 ("fe80::%02hxaa" % pid) in executor/common_bsd.h
 ipv6_addr_local {
 	a0	const[0xfe, int8]
 	a1	const[0x80, int8]
@@ -67,7 +499,7 @@
 	a4	const[0xaa, int8]
 } [packed]
 
-# This corresponds to REMOTE_IPV6 ("fe80::%02hxbb" % pid) in executor/common.h
+# This corresponds to REMOTE_IPV6 ("fe80::%02hxbb" % pid) in executor/common_bsd.h
 ipv6_addr_remote {
 	a0	const[0xfe, int8]
 	a1	const[0x80, int8]
@@ -81,9 +513,478 @@
 	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_STRICT, 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 {
+	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_NOTNEIGHBOR, ICMP6_DST_UNREACH_BEYONDSCOPE, ICMP6_DST_UNREACH_ADDR, ICMP6_DST_UNREACH_NOPORT, ICMP6_DST_UNREACH_POLICY, ICMP6_DST_UNREACH_REJECT, ICMP6_DST_UNREACH_SRCROUTE
+
+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, MLD_LISTENER_REDUCTION
+
+# 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_NONCE, 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
+	fastopen	tcp_fastopen_option
+] [varlen]
+
+tcp_option_types = TCPOPT_EOL, TCPOPT_NOP, TCPOPT_MAXSEG, TCPOPT_WINDOW, TCPOPT_SACK_PERMITTED, TCPOPT_SACK, TCPOPT_TIMESTAMP, TCPOPT_SIGNATURE, TCPOPT_FAST_OPEN
+
+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]
+
+# https://tools.ietf.org/html/rfc7413#section-4.1.1
+tcp_fastopen_option {
+	type	const[TCPOPT_FAST_OPEN, int8]
+	length	len[parent, int8]
+	data	array[int8, 0: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/freebsd/vnet_amd64.const b/sys/freebsd/vnet_amd64.const
new file mode 100644
index 0000000..caade90
--- /dev/null
+++ b/sys/freebsd/vnet_amd64.const
@@ -0,0 +1,425 @@
+# AUTOGENERATED FILE
+ARPHRD_ETHER = 1
+ARPHRD_FRELAY = 15
+ARPHRD_IEEE1394 = 24
+ARPHRD_IEEE802 = 6
+ARPHRD_INFINIBAND = 32
+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_TEST = 34850
+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_DST_UNREACH_NOTNEIGHBOR = 2
+ICMP6_DST_UNREACH_POLICY = 5
+ICMP6_DST_UNREACH_REJECT = 6
+ICMP6_DST_UNREACH_SRCROUTE = 7
+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_CIPSO = 134
+IPOPT_EOL = 0
+IPOPT_ESO = 133
+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_3PC = 34
+IPPROTO_ADFS = 68
+IPPROTO_AH = 51
+IPPROTO_AHIP = 61
+IPPROTO_APES = 99
+IPPROTO_ARGUS = 13
+IPPROTO_AX25 = 93
+IPPROTO_BHA = 49
+IPPROTO_BLT = 30
+IPPROTO_BRSATMON = 76
+IPPROTO_CARP = 112
+IPPROTO_CFTP = 62
+IPPROTO_CHAOS = 16
+IPPROTO_CMTP = 38
+IPPROTO_CPHB = 73
+IPPROTO_CPNX = 72
+IPPROTO_DDP = 37
+IPPROTO_DGP = 86
+IPPROTO_DSTOPTS = 60
+IPPROTO_EGP = 8
+IPPROTO_EMCON = 14
+IPPROTO_ENCAP = 98
+IPPROTO_EON = 80
+IPPROTO_ESP = 50
+IPPROTO_ETHERIP = 97
+IPPROTO_FRAGMENT = 44
+IPPROTO_GMTP = 100
+IPPROTO_GRE = 47
+IPPROTO_HELLO = 63
+IPPROTO_HIP = 139
+IPPROTO_HMP = 20
+IPPROTO_ICMP = 1
+IPPROTO_ICMPV6 = 58
+IPPROTO_IDP = 22
+IPPROTO_IDPR = 35
+IPPROTO_IDRP = 45
+IPPROTO_IGMP = 2
+IPPROTO_IGP = 85
+IPPROTO_IGRP = 88
+IPPROTO_IL = 40
+IPPROTO_INLSP = 52
+IPPROTO_INP = 32
+IPPROTO_IPCOMP = 108
+IPPROTO_IPCV = 71
+IPPROTO_IPEIP = 94
+IPPROTO_IPPC = 67
+IPPROTO_IPV4 = 4
+IPPROTO_IRTP = 28
+IPPROTO_KRYPTOLAN = 65
+IPPROTO_LARP = 91
+IPPROTO_LEAF1 = 25
+IPPROTO_LEAF2 = 26
+IPPROTO_MEAS = 19
+IPPROTO_MH = 135
+IPPROTO_MHRP = 48
+IPPROTO_MICP = 95
+IPPROTO_MOBILE = 55
+IPPROTO_MPLS = 137
+IPPROTO_MTP = 92
+IPPROTO_MUX = 18
+IPPROTO_ND = 77
+IPPROTO_NHRP = 54
+IPPROTO_NONE = 59
+IPPROTO_NSP = 31
+IPPROTO_NVPII = 11
+IPPROTO_OSPFIGP = 89
+IPPROTO_PFSYNC = 240
+IPPROTO_PGM = 113
+IPPROTO_PIGP = 9
+IPPROTO_PIM = 103
+IPPROTO_PRM = 21
+IPPROTO_PUP = 12
+IPPROTO_PVP = 75
+IPPROTO_RCCMON = 10
+IPPROTO_RDP = 27
+IPPROTO_ROUTING = 43
+IPPROTO_RSVP = 46
+IPPROTO_RVD = 66
+IPPROTO_SATEXPAK = 64
+IPPROTO_SATMON = 69
+IPPROTO_SCCSP = 96
+IPPROTO_SDRP = 42
+IPPROTO_SEP = 33
+IPPROTO_SHIM6 = 140
+IPPROTO_SKIP = 57
+IPPROTO_SRPC = 90
+IPPROTO_ST = 7
+IPPROTO_SVMTP = 82
+IPPROTO_SWIPE = 53
+IPPROTO_TCF = 87
+IPPROTO_TCP = 6
+IPPROTO_TLSP = 56
+IPPROTO_TP = 29
+IPPROTO_TPXX = 39
+IPPROTO_TRUNK1 = 23
+IPPROTO_TRUNK2 = 24
+IPPROTO_TTP = 84
+IPPROTO_UDP = 17
+IPPROTO_UDPLITE = 136
+IPPROTO_VINES = 83
+IPPROTO_VISA = 70
+IPPROTO_VMTP = 81
+IPPROTO_WBEXPAK = 79
+IPPROTO_WBMON = 78
+IPPROTO_WSN = 74
+IPPROTO_XNET = 15
+IPPROTO_XTP = 36
+IPV6_RTHDR_LOOSE = 0
+IPV6_RTHDR_STRICT = 1
+IPV6_RTHDR_TYPE_0 = 0
+MLD_LISTENER_QUERY = 130
+MLD_LISTENER_REDUCTION = 132
+MLD_LISTENER_REPORT = 131
+ND_NEIGHBOR_ADVERT = 136
+ND_NEIGHBOR_SOLICIT = 135
+ND_OPT_DNSSL = 31
+ND_OPT_MTU = 5
+ND_OPT_NONCE = 14
+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_FAST_OPEN = 34
+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