# Various flags applied to a TCP session.
#
# We cannot rely on, for example, "print-x.out" and
# "print-X.out" being different files - we might be running
# this on a case-insensitive file system, e.g. a Windows
# file system or a case-insensitive HFS+ file system on
# Mac OS X.
#
# Therefore, for "X" and "XX", we have "print-capX.out"
# and "print-capXX.out".
#
print-x		print-flags.pcap	print-x.out	-t -x
print-xx	print-flags.pcap	print-xx.out	-t -xx
print-X		print-flags.pcap	print-capX.out	-t -X
print-XX	print-flags.pcap	print-capXX.out	-t -XX
print-A		print-flags.pcap	print-A.out	-t -A
print-AA	print-flags.pcap	print-AA.out	-t -AA

# BGP tests
bgp_vpn_attrset bgp_vpn_attrset.pcap bgp_vpn_attrset.out -t -v
mpbgp-linklocal-nexthop mpbgp-linklocal-nexthop.pcap mpbgp-linklocal-nexthop.out -t -v
bgp_infloop-v		bgp-infinite-loop.pcap		bgp_infloop-v.out	-t -v

# EAP tests
eapon1 eapon1.pcap eapon1.out -t

# ESP tests
esp0 02-sunrise-sunset-esp.pcap esp0.out -t -n
# more ESP tests in crypto.sh

# ISAKMP tests
isakmp1 isakmp-delete-segfault.pcap isakmp1.out -t
isakmp2 isakmp-pointer-loop.pcap    isakmp2.out -t
isakmp3 isakmp-identification-segfault.pcap isakmp3.out -t -v
# isakmp4 is in crypto.sh
isakmp5-v	ISAKMP_sa_setup.pcap		isakmp5-v.out	-t -v

# Link Management Protocol tests
lmp		lmp.pcap		lmp.out -t -T lmp
# lmp-v is now conditionally handled by lmp-v.sh

# MPLS tests
mpls-ldp-hello	mpls-ldp-hello.pcap	mpls-ldp-hello.out -t -v
ldp_infloop	ldp-infinite-loop.pcap	ldp_infloop.out -t

# OSPF tests
ospf-gmpls	ospf-gmpls.pcap				ospf-gmpls.out		-t -v
ospf3_ah-vv	OSPFv3_with_AH.pcap			ospf3_ah-vv.out		-t -v -v
ospf3_auth-vv	ospf3_auth.pcap				ospf3_auth-vv.out 	-t -v -v
ospf3_bc-vv	OSPFv3_broadcast_adjacency.pcap		ospf3_bc-vv.out		-t -v -v
ospf3_mp-vv	OSPFv3_multipoint_adjacencies.pcap	ospf3_mp-vv.out		-t -v -v
ospf3_nbma-vv	OSPFv3_NBMA_adjacencies.pcap		ospf3_nbma-vv.out	-t -v -v

# IKEv2 tests
ikev2four	ikev2four.pcap		ikev2four.out	-t -v
ikev2fourv	ikev2four.pcap		ikev2fourv.out	-t -v -v -v
ikev2fourv4	ikev2four.pcap		ikev2fourv4.out	-t -v -v -v -v
# ikev2pI2 test in crypto.sh

# IETF ROLL RPL packets
dio02           rpl-19-pickdag.pcap         rpl-19-pickdag.out  -t -v -v
dio03           rpl-19-pickdag.pcap         rpl-19-pickdagvvv.out  -t -v -v -v
dao01           rpl-14-dao.pcap             rpl-14-daovvv.out    -t -v -v -v
daoack01        rpl-26-senddaoack.pcap      rpl-26-senddaovv.out -t -v -v -v

# IPNET encapsulated site
e1000g		e1000g.pcap		e1000g.out	-t

# IETF FORCES WG packets and printer
forces01        forces1.pcap            forces1.out     -t
forces01vvv     forces1.pcap            forces1vvv.out  -t -v -v -v
forces01vvvv    forces1.pcap            forces1vvvv.out -t -v -v -v -v
# need new pcap file, not sure what the differences were?
#forces02        forces2.pcap            forces2.out     -t
#forces02v       forces2.pcap            forces2v.out    -t -v
#forces02vv      forces2.pcap            forces2vv.out   -t -v -v

# 802.1ad, QinQ tests
qinq            QinQpacket.pcap         QinQpacket.out  -t -e
qinqv           QinQpacket.pcap         QinQpacketv.out  -t -e -v

# now SFLOW tests
sflow1          sflow_multiple_counter_30_pdus.pcap     sflow_multiple_counter_30_pdus.out      -t -v
sflow2          sflow_multiple_counter_30_pdus.pcap     sflow_multiple_counter_30_pdus-nv.out      -t

# AHCP and Babel tests
ahcp-vv         ahcp.pcap              ahcp-vv.out     -t -vv
babel1          babel.pcap             babel1.out      -t
babel1v         babel.pcap             babel1v.out     -t -v
babel_auth      babel_auth.pcap        babel_auth.out  -t -v
babel_pad1      babel_pad1.pcap        babel_pad1.out  -t
babel_rtt       babel_rtt.pcap         babel_rtt.out   -t -v

# PPPoE tests
pppoe           pppoe.pcap             pppoe.out       -t
pppoes          pppoes.pcap            pppoes.out      -t
pppoes_id       pppoes.pcap            pppoes_id.out   -t pppoes 0x3b

# IGMP tests
igmpv1		IGMP_V1.pcap		igmpv1.out		-t
igmpv2		IGMP_V2.pcap		igmpv2.out		-t
igmpv3-queries  igmpv3-queries.pcap     igmpv3-queries.out      -t
mtrace		mtrace.pcap		mtrace.out		-t
dvmrp		mrinfo_query.pcap	dvmrp.out		-t

# ICMPv6
icmpv6          icmpv6.pcap             icmpv6.out      -t -vv
icmpv6_opt24-v	icmpv6_opt24.pcap	icmpv6_opt24-v.out	-t -v

# SPB tests
spb	            spb.pcap	            spb.out -t

# SPB BPDUv4 tests
spb_bpduv4      spb_bpduv4.pcap       spb_bpduv4.out -t

# DCB Tests
dcb_ets         dcb_ets.pcap          dcb_ets.out   -t -vv
dcb_pfc         dcb_pfc.pcap          dcb_pfc.out   -t -vv
dcb_qcn         dcb_qcn.pcap          dcb_qcn.out   -t -vv

# EVB tests
evb             evb.pcap              evb.out       -t -vv

# STP tests
mstp-v		MSTP_Intra-Region_BPDUs.pcap	mstp-v.out	-t -v
stp-v		802.1D_spanning_tree.pcap	stp-v.out	-t -v
rstp-v		802.1w_rapid_STP.pcap		rstp-v.out	-t -v
rpvst-v		rpvstp-trunk-native-vid5.pcap	rpvst-v.out	-t -v

# RIP tests
ripv1v2         ripv1v2.pcap            ripv1v2.out     -t -v
ripv2_auth      ripv2_auth.pcap         ripv2_auth.out  -t -v

# DHCPv6 tests
dhcpv6-aftr-name	dhcpv6-AFTR-Name-RFC6334.pcap	dhcpv6-AFTR-Name-RFC6334.out	-t -v
dhcpv6-ia-na	dhcpv6-ia-na.pcap	dhcpv6-ia-na.out	-t -v
dhcpv6-ia-pd	dhcpv6-ia-pd.pcap	dhcpv6-ia-pd.out	-t -v
dhcpv6-ia-ta	dhcpv6-ia-ta.pcap	dhcpv6-ia-ta.out	-t -v
dhcpv6-ntp-server	dhcpv6-ntp-server.pcap	dhcpv6-ntp-server.out	-t -v
dhcpv6-sip-server-d	dhcpv6-sip-server-d.pcap	dhcpv6-sip-server-d.out -t -v
dhcpv6-domain-list	dhcpv6-domain-list.pcap	dhcpv6-domain-list.out	-t -v

# ZeroMQ/PGM tests
# ZMTP/1.0 over TCP
zmtp1v		zmtp1.pcap		zmtp1.out	-t -v -T zmtp1
# native PGM
pgmv		pgm_zmtp1.pcap		pgmv.out	-t -v
# UDP-encapsulated PGM
epgmv		epgm_zmtp1.pcap		epgmv.out	-t -v -T pgm
# ZMTP/1.0 inside native PGM
pgm_zmtp1v	pgm_zmtp1.pcap		pgm_zmtp1v.out	-t -v -T pgm_zmtp1
# ZMTP/1.0 inside UDP-encapsulated PGM
epgm_zmtp1v	epgm_zmtp1.pcap		epgm_zmtp1v.out	-t -v -T pgm_zmtp1

# MS NLB tests
msnlb		msnlb.pcap		msnlb.out	-t
msnlb2		msnlb2.pcap		msnlb2.out	-t

# MPTCP tests
mptcp		mptcp.pcap		mptcp.out		-t
mptcp-fclose	mptcp-fclose.pcap	mptcp-fclose.out	-t
# TFO tests
tfo		tfo-5c1fa7f9ae91.pcap	tfo.out		-t

# IEEE 802.11 tests
802.11_exthdr	ieee802.11_exthdr.pcap	ieee802.11_exthdr.out	-t -v
802.11_rx-stbc	ieee802.11_rx-stbc.pcap	ieee802.11_rx-stbc.out	-t

# OpenFlow tests
of10_p3295-vv	of10_p3295.pcap		of10_p3295-vv.out	-t -vv
of10_s4810-vvvv	of10_s4810.pcap		of10_s4810-vvvv.out	-t -vvvv
of10_pf5240-vv	of10_pf5240.pcap	of10_pf5240-vv.out	-t -vv
of10_7050q-v	of10_7050q.pcap		of10_7050q-v.out	-t -v
of10_7050sx_bsn-vv	of10_7050sx_bsn.pcap		of10_7050sx_bsn-vv.out	-t -vv

# GeoNetworking and CALM FAST tests
geonet-calm-fast	geonet_and_calm_fast.pcap	geonet_and_calm_fast.out	-t -vv -n

# M3UA tests
m3ua isup.pcap isup.out -t
m3ua-vv isup.pcap isupvv.out -t -vv

# NFLOG test case moved to nflog-e.sh

# syslog test case
syslog-v	syslog_udp.pcap		syslog-v.out		-t -v

#IPv6 tests
ipv6-bad-version.pcap	ipv6-bad-version.pcap 	ipv6-bad-version.out	-t
ipv6-routing-header	ipv6-routing-header.pcap	ipv6-routing-header.out -t -v

# Loopback/CTP test case
loopback	loopback.pcap		loopback.out		-t

# DCCP partial checksums tests
dccp_partial_csum_v4_simple	dccp_partial_csum_v4_simple.pcap	dccp_partial_csum_v4_simple.out -t -vv
dccp_partial_csum_v4_longer	dccp_partial_csum_v4_longer.pcap	dccp_partial_csum_v4_longer.out -t -vv
dccp_partial_csum_v6_simple	dccp_partial_csum_v6_simple.pcap	dccp_partial_csum_v6_simple.out -t -vv
dccp_partial_csum_v6_longer	dccp_partial_csum_v6_longer.pcap	dccp_partial_csum_v6_longer.out -t -vv

# VRRP tests
vrrp		vrrp.pcap		vrrp.out		-t
vrrp-v		vrrp.pcap		vrrp-v.out		-t -v

# HSRP tests
hsrp_1		HSRP_coup.pcap		hsrp_1.out	-t
hsrp_1-v	HSRP_coup.pcap		hsrp_1-v.out	-t -v
hsrp_2-v	HSRP_election.pcap	hsrp_2-v.out	-t -v
hsrp_3-v	HSRP_failover.pcap	hsrp_3-v.out	-t -v

# PIMv2 tests
pimv2_dm-v		PIM-DM_pruning.pcap		pimv2_dm-v.out		-t -v
pimv2_register-v	PIM_register_register-stop.pcap	pimv2_register-v.out	-t -v
pimv2_sm-v		PIM-SM_join_prune.pcap		pimv2_sm-v.out		-t -v
pimv2_bootstrap-v	PIMv2_bootstrap.pcap		pimv2_bootstrap-v.out	-t -v
pimv2_hellos-v		PIMv2_hellos.pcap		pimv2_hellos-v.out	-t -v

# IS-IS tests
isis_infloop-v	isis-infinite-loop.pcap		isis_infloop-v.out	-t -v

# RSVP tests
rsvp_infloop-v	rsvp-infinite-loop.pcap		rsvp_infloop-v.out	-t -v

# HDLC tests
hdlc1	chdlc-slarp.pcap	hdlc1.out	-t
hdlc2	chdlc-slarp-short.pcap	hdlc2.out	-t
hdlc3	HDLC.pcap		hdlc3.out	-t
hdlc4	hdlc_slarp.pcap		hdlc4.out	-t

# DECnet test case
decnet		DECnet_Phone.pcap	decnet.out	-t

# RADIUS tests
radius-v	RADIUS.pcap	radius-v.out	-t -v
radius-rfc4675	RADIUS-RFC4675.pcap	radius-rfc4675-v.out	-t -v
radius-rfc5176	RADIUS-RFC5176.pcap	radius-rfc5176-v.out	-t -v

# link-level protocols
dtp-v		DTP.pcap		dtp-v.out		-t -v
lacp-ev		LACP.pcap		lacp-ev.out		-t -e -v
lldp_cdp-ev	LLDP_and_CDP.pcap	lldp_cdp-ev.out		-t -e -v
cdp-v		3560_CDP.pcap		cdp-v.out		-t -v
udld-v		UDLD.pcap		udld-v.out		-t -v

# EIGRP tests
eigrp1-v	EIGRP_adjacency.pcap	eigrp1-v.out	-t -v
eigrp2-v	EIGRP_goodbye.pcap	eigrp2-v.out	-t -v
eigrp3-v	EIGRP_subnet_down.pcap	eigrp3-v.out	-t -v
eigrp4-v	EIGRP_subnet_up.pcap	eigrp4-v.out	-t -v

# IS-IS tests
isis_1		ISIS_external_lsp.pcap		isis_1.out	-t
isis_1-v	ISIS_external_lsp.pcap		isis_1-v.out	-t -v
isis_2-v	ISIS_level1_adjacency.pcap	isis_2-v.out	-t -v
isis_3-v	ISIS_level2_adjacency.pcap	isis_3-v.out	-t -v
isis_4-v	ISIS_p2p_adjacency.pcap		isis_4-v.out	-t -v

# ATA-over-Ethernet tests
aoe_1		AoE_Linux.pcap		aoe_1.out	-t
aoe_1-v		AoE_Linux.pcap		aoe_1-v.out	-t -v

# Geneve tests
geneve-v	geneve.pcap		geneve-vv.out	-t -vv
geneve-vni	geneve.pcap		geneve-vni.out	-t geneve 0xb
geneve-tcp	geneve.pcap		geneve-tcp.out	-t "geneve && tcp"

# DHCP tests
dhcp-rfc3004	dhcp-rfc3004.pcap	dhcp-rfc3004-v.out	-t -v
dhcp-rfc5859	dhcp-rfc5859.pcap	dhcp-rfc5859-v.out	-t -v

# bad packets from Kevin Day
# cve-2015-2155 -- futz testing on FORCES printer
kday1           kday1.pcap              kday1.out       -t -v
# cve-2015-2153 -- futz testing on TCP printer
kday2           kday2.pcap              kday2.out       -t -v
# cve-2015-2153 -- futz testing on TCP printer
kday3           kday3.pcap              kday3.out       -t -v
# cve-2015-2153 -- futz testing on TCP printer
kday4           kday4.pcap              kday4.out       -t -v
# cve-2015-2153 -- futz testing on TCP printer
kday5           kday5.pcap              kday5.out       -t -v
# cve-2015-2154 -- ethernet printer
kday6           kday6.pcap              kday6.out       -t -v
# cve-2015-2153 -- futz testing on TCP printer
kday7           kday7.pcap              kday7.out       -t -v
# cve-2015-2153 -- futz testing on TCP printer
kday8           kday8.pcap              kday8.out       -t -v

# bad packets from reversex86.
cve2015-0261_01    cve2015-0261-ipv6.pcap       cve2015-0261-ipv6.out -t -v
cve2015-0261_02    cve2015-0261-crash.pcap      cve2015-0261-crash.out -t -v
