mirror of
https://github.com/reactos/syzkaller.git
synced 2025-02-12 23:22:31 +00:00
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.
This commit is contained in:
parent
618456b4f4
commit
7516d9fa93
@ -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
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -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 @@ tcp_resources {
|
||||
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 @@ ipv4_addr_local {
|
||||
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 @@ ipv4_addr [
|
||||
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 @@ ipv6_addr_local {
|
||||
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 @@ ipv6_addr_loopback {
|
||||
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]
|
||||
|
425
sys/freebsd/vnet_amd64.const
Normal file
425
sys/freebsd/vnet_amd64.const
Normal file
@ -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
|
Loading…
x
Reference in New Issue
Block a user