brintos

brintos / linux-shallow public Read only

0
0
Text · 18.2 KiB · 64153bb Raw
710 lines · bash
1#!/bin/bash2# SPDX-License-Identifier: GPL-2.03#4# Test devlink-trap control trap functionality over mlxsw. Each registered5# control packet trap is tested to make sure it is triggered under the right6# conditions.7#8# +---------------------------------+9# | H1 (vrf)                        |10# |    + $h1                        |11# |    | 192.0.2.1/24               |12# |    | 2001:db8:1::1/64           |13# |    |                            |14# |    |  default via 192.0.2.2     |15# |    |  default via 2001:db8:1::2 |16# +----|----------------------------+17#      |18# +----|----------------------------------------------------------------------+19# | SW |                                                                      |20# |    + $rp1                                                                 |21# |        192.0.2.2/24                                                       |22# |        2001:db8:1::2/64                                                   |23# |                                                                           |24# |        2001:db8:2::2/64                                                   |25# |        198.51.100.2/24                                                    |26# |    + $rp2                                                                 |27# |    |                                                                      |28# +----|----------------------------------------------------------------------+29#      |30# +----|----------------------------+31# |    |  default via 198.51.100.2  |32# |    |  default via 2001:db8:2::2 |33# |    |                            |34# |    | 2001:db8:2::1/64           |35# |    | 198.51.100.1/24            |36# |    + $h2                        |37# | H2 (vrf)                        |38# +---------------------------------+39 40lib_dir=$(dirname $0)/../../../net/forwarding41 42ALL_TESTS="43	stp_test44	lacp_test45	lldp_test46	igmp_query_test47	igmp_v1_report_test48	igmp_v2_report_test49	igmp_v3_report_test50	igmp_v2_leave_test51	mld_query_test52	mld_v1_report_test53	mld_v2_report_test54	mld_v1_done_test55	ipv4_dhcp_test56	ipv6_dhcp_test57	arp_request_test58	arp_response_test59	ipv6_neigh_solicit_test60	ipv6_neigh_advert_test61	ipv4_bfd_test62	ipv6_bfd_test63	ipv4_ospf_test64	ipv6_ospf_test65	ipv4_bgp_test66	ipv6_bgp_test67	ipv4_vrrp_test68	ipv6_vrrp_test69	ipv4_pim_test70	ipv6_pim_test71	uc_loopback_test72	local_route_test73	external_route_test74	ipv6_uc_dip_link_local_scope_test75	ipv4_router_alert_test76	ipv6_router_alert_test77	ipv6_dip_all_nodes_test78	ipv6_dip_all_routers_test79	ipv6_router_solicit_test80	ipv6_router_advert_test81	ipv6_redirect_test82	ptp_event_test83	ptp_general_test84	flow_action_sample_test85	flow_action_trap_test86	eapol_test87"88NUM_NETIFS=489source $lib_dir/lib.sh90source $lib_dir/devlink_lib.sh91source mlxsw_lib.sh92 93h1_create()94{95	simple_if_init $h1 192.0.2.1/24 2001:db8:1::1/6496 97	ip -4 route add default vrf v$h1 nexthop via 192.0.2.298	ip -6 route add default vrf v$h1 nexthop via 2001:db8:1::299}100 101h1_destroy()102{103	ip -6 route del default vrf v$h1 nexthop via 2001:db8:1::2104	ip -4 route del default vrf v$h1 nexthop via 192.0.2.2105 106	simple_if_fini $h1 192.0.2.1/24 2001:db8:1::1/64107}108 109h2_create()110{111	simple_if_init $h2 198.51.100.1/24 2001:db8:2::1/64112 113	ip -4 route add default vrf v$h2 nexthop via 198.51.100.2114	ip -6 route add default vrf v$h2 nexthop via 2001:db8:2::2115}116 117h2_destroy()118{119	ip -6 route del default vrf v$h2 nexthop via 2001:db8:2::2120	ip -4 route del default vrf v$h2 nexthop via 198.51.100.2121 122	simple_if_fini $h2 198.51.100.1/24 2001:db8:2::1/64123}124 125router_create()126{127	ip link set dev $rp1 up128	ip link set dev $rp2 up129 130	__addr_add_del $rp1 add 192.0.2.2/24 2001:db8:1::2/64131	__addr_add_del $rp2 add 198.51.100.2/24 2001:db8:2::2/64132}133 134router_destroy()135{136	__addr_add_del $rp2 del 198.51.100.2/24 2001:db8:2::2/64137	__addr_add_del $rp1 del 192.0.2.2/24 2001:db8:1::2/64138 139	ip link set dev $rp2 down140	ip link set dev $rp1 down141}142 143setup_prepare()144{145	h1=${NETIFS[p1]}146	rp1=${NETIFS[p2]}147 148	rp2=${NETIFS[p3]}149	h2=${NETIFS[p4]}150 151	vrf_prepare152	forwarding_enable153 154	h1_create155	h2_create156	router_create157}158 159cleanup()160{161	pre_cleanup162 163	router_destroy164	h2_destroy165	h1_destroy166 167	forwarding_restore168	vrf_cleanup169}170 171stp_test()172{173	devlink_trap_stats_test "STP" "stp" $MZ $h1 -c 1 -t bpdu -q174}175 176lacp_payload_get()177{178	local source_mac=$1; shift179	local p180 181	p=$(:182		)"01:80:C2:00:00:02:"$(       : ETH daddr183		)"$source_mac:"$(             : ETH saddr184		)"88:09:"$(                   : ETH type185		)186	echo $p187}188 189lacp_test()190{191	local h1mac=$(mac_get $h1)192 193	devlink_trap_stats_test "LACP" "lacp" $MZ $h1 -c 1 \194		$(lacp_payload_get $h1mac) -p 100 -q195}196 197lldp_payload_get()198{199	local source_mac=$1; shift200	local p201 202	p=$(:203		)"01:80:C2:00:00:0E:"$(       : ETH daddr204		)"$source_mac:"$(             : ETH saddr205		)"88:CC:"$(                   : ETH type206		)207	echo $p208}209 210lldp_test()211{212	local h1mac=$(mac_get $h1)213 214	devlink_trap_stats_test "LLDP" "lldp" $MZ $h1 -c 1 \215		$(lldp_payload_get $h1mac) -p 100 -q216}217 218igmp_query_test()219{220	# IGMP (IP Protocol 2) Membership Query (Type 0x11)221	devlink_trap_stats_test "IGMP Membership Query" "igmp_query" \222		$MZ $h1 -c 1 -a own -b 01:00:5E:00:00:01 \223		-A 192.0.2.1 -B 224.0.0.1 -t ip proto=2,p=11 -p 100 -q224}225 226igmp_v1_report_test()227{228	# IGMP (IP Protocol 2) Version 1 Membership Report (Type 0x12)229	devlink_trap_stats_test "IGMP Version 1 Membership Report" \230		"igmp_v1_report" $MZ $h1 -c 1 -a own -b 01:00:5E:00:00:01 \231		-A 192.0.2.1 -B 244.0.0.1 -t ip proto=2,p=12 -p 100 -q232}233 234igmp_v2_report_test()235{236	# IGMP (IP Protocol 2) Version 2 Membership Report (Type 0x16)237	devlink_trap_stats_test "IGMP Version 2 Membership Report" \238		"igmp_v2_report" $MZ $h1 -c 1 -a own -b 01:00:5E:00:00:01 \239		-A 192.0.2.1 -B 244.0.0.1 -t ip proto=2,p=16 -p 100 -q240}241 242igmp_v3_report_test()243{244	# IGMP (IP Protocol 2) Version 3 Membership Report (Type 0x22)245	devlink_trap_stats_test "IGMP Version 3 Membership Report" \246		"igmp_v3_report" $MZ $h1 -c 1 -a own -b 01:00:5E:00:00:01 \247		-A 192.0.2.1 -B 244.0.0.1 -t ip proto=2,p=22 -p 100 -q248}249 250igmp_v2_leave_test()251{252	# IGMP (IP Protocol 2) Version 2 Leave Group (Type 0x17)253	devlink_trap_stats_test "IGMP Version 2 Leave Group" \254		"igmp_v2_leave" $MZ $h1 -c 1 -a own -b 01:00:5E:00:00:02 \255		-A 192.0.2.1 -B 224.0.0.2 -t ip proto=2,p=17 -p 100 -q256}257 258mld_payload_get()259{260	local type=$1; shift261	local p262 263	type=$(printf "%x" $type)264	p=$(:265		)"3A:"$(			: Next Header - ICMPv6266		)"00:"$(			: Hdr Ext Len267		)"00:00:00:00:00:00:"$(		: Options and Padding268		)"$type:"$(			: ICMPv6.type269		)"00:"$(			: ICMPv6.code270		)"00:"$(			: ICMPv6.checksum271		)272	echo $p273}274 275mld_query_test()276{277	# MLD Multicast Listener Query (Type 130)278	devlink_trap_stats_test "MLD Multicast Listener Query" "mld_query" \279		$MZ $h1 -6 -c 1 -A fe80::1 -B ff02::1 \280		-t ip hop=1,next=0,payload=$(mld_payload_get 130) -p 100 -q281}282 283mld_v1_report_test()284{285	# MLD Version 1 Multicast Listener Report (Type 131)286	devlink_trap_stats_test "MLD Version 1 Multicast Listener Report" \287		"mld_v1_report" $MZ $h1 -6 -c 1 -A fe80::1 -B ff02::16 \288		-t ip hop=1,next=0,payload=$(mld_payload_get 131) -p 100 -q289}290 291mld_v2_report_test()292{293	# MLD Version 2 Multicast Listener Report (Type 143)294	devlink_trap_stats_test "MLD Version 2 Multicast Listener Report" \295		"mld_v2_report" $MZ $h1 -6 -c 1 -A fe80::1 -B ff02::16 \296		-t ip hop=1,next=0,payload=$(mld_payload_get 143) -p 100 -q297}298 299mld_v1_done_test()300{301	# MLD Version 1 Multicast Listener Done (Type 132)302	devlink_trap_stats_test "MLD Version 1 Multicast Listener Done" \303		"mld_v1_done" $MZ $h1 -6 -c 1 -A fe80::1 -B ff02::16 \304		-t ip hop=1,next=0,payload=$(mld_payload_get 132) -p 100 -q305}306 307ipv4_dhcp_test()308{309	devlink_trap_stats_test "IPv4 DHCP Port 67" "ipv4_dhcp" \310		$MZ $h1 -c 1 -a own -b bcast -A 0.0.0.0 -B 255.255.255.255 \311		-t udp sp=68,dp=67 -p 100 -q312 313	devlink_trap_stats_test "IPv4 DHCP Port 68" "ipv4_dhcp" \314		$MZ $h1 -c 1 -a own -b $(mac_get $rp1) -A 192.0.2.1 \315		-B 255.255.255.255 -t udp sp=67,dp=68 -p 100 -q316}317 318ipv6_dhcp_test()319{320	devlink_trap_stats_test "IPv6 DHCP Port 547" "ipv6_dhcp" \321		$MZ $h1 -6 -c 1 -A fe80::1 -B ff02::1:2 -t udp sp=546,dp=547 \322		-p 100 -q323 324	devlink_trap_stats_test "IPv6 DHCP Port 546" "ipv6_dhcp" \325		$MZ $h1 -6 -c 1 -A fe80::1 -B ff02::1:2 -t udp sp=547,dp=546 \326		-p 100 -q327}328 329arp_request_test()330{331	devlink_trap_stats_test "ARP Request" "arp_request" \332		$MZ $h1 -c 1 -a own -b bcast -t arp request -p 100 -q333}334 335arp_response_test()336{337	devlink_trap_stats_test "ARP Response" "arp_response" \338		$MZ $h1 -c 1 -a own -b $(mac_get $rp1) -t arp reply -p 100 -q339}340 341icmpv6_header_get()342{343	local type=$1; shift344	local p345 346	type=$(printf "%x" $type)347	p=$(:348		)"$type:"$(			: ICMPv6.type349		)"00:"$(			: ICMPv6.code350		)"00:"$(			: ICMPv6.checksum351		)352	echo $p353}354 355ipv6_neigh_solicit_test()356{357	devlink_trap_stats_test "IPv6 Neighbour Solicitation" \358		"ipv6_neigh_solicit" $MZ $h1 -6 -c 1 \359		-A fe80::1 -B ff02::1:ff00:02 \360		-t ip hop=1,next=58,payload=$(icmpv6_header_get 135) -p 100 -q361}362 363ipv6_neigh_advert_test()364{365	devlink_trap_stats_test "IPv6 Neighbour Advertisement" \366		"ipv6_neigh_advert" $MZ $h1 -6 -c 1 -a own -b $(mac_get $rp1) \367		-A fe80::1 -B 2001:db8:1::2 \368		-t ip hop=1,next=58,payload=$(icmpv6_header_get 136) -p 100 -q369}370 371ipv4_bfd_test()372{373	devlink_trap_stats_test "IPv4 BFD Control - Port 3784" "ipv4_bfd" \374		$MZ $h1 -c 1 -a own -b $(mac_get $rp1) \375		-A 192.0.2.1 -B 192.0.2.2 -t udp sp=49153,dp=3784 -p 100 -q376 377	devlink_trap_stats_test "IPv4 BFD Echo - Port 3785" "ipv4_bfd" \378		$MZ $h1 -c 1 -a own -b $(mac_get $rp1) \379		-A 192.0.2.1 -B 192.0.2.2 -t udp sp=49153,dp=3785 -p 100 -q380}381 382ipv6_bfd_test()383{384	devlink_trap_stats_test "IPv6 BFD Control - Port 3784" "ipv6_bfd" \385		$MZ $h1 -6 -c 1 -a own -b $(mac_get $rp1) \386		-A 2001:db8:1::1 -B 2001:db8:1::2 \387		-t udp sp=49153,dp=3784 -p 100 -q388 389	devlink_trap_stats_test "IPv6 BFD Echo - Port 3785" "ipv6_bfd" \390		$MZ $h1 -6 -c 1 -a own -b $(mac_get $rp1) \391		-A 2001:db8:1::1 -B 2001:db8:1::2 \392		-t udp sp=49153,dp=3785 -p 100 -q393}394 395ipv4_ospf_test()396{397	devlink_trap_stats_test "IPv4 OSPF - Multicast" "ipv4_ospf" \398		$MZ $h1 -c 1 -a own -b 01:00:5e:00:00:05 \399		-A 192.0.2.1 -B 224.0.0.5 -t ip proto=89 -p 100 -q400 401	devlink_trap_stats_test "IPv4 OSPF - Unicast" "ipv4_ospf" \402		$MZ $h1 -c 1 -a own -b $(mac_get $rp1) \403		-A 192.0.2.1 -B 192.0.2.2 -t ip proto=89 -p 100 -q404}405 406ipv6_ospf_test()407{408	devlink_trap_stats_test "IPv6 OSPF - Multicast" "ipv6_ospf" \409		$MZ $h1 -6 -c 1 -a own -b 33:33:00:00:00:05 \410		-A fe80::1 -B ff02::5 -t ip next=89 -p 100 -q411 412	devlink_trap_stats_test "IPv6 OSPF - Unicast" "ipv6_ospf" \413		$MZ $h1 -6 -c 1 -a own -b $(mac_get $rp1) \414		-A 2001:db8:1::1 -B 2001:db8:1::2 -t ip next=89 -p 100 -q415}416 417ipv4_bgp_test()418{419	devlink_trap_stats_test "IPv4 BGP" "ipv4_bgp" \420		$MZ $h1 -c 1 -a own -b $(mac_get $rp1) \421		-A 192.0.2.1 -B 192.0.2.2 -t tcp sp=54321,dp=179,flags=rst \422		-p 100 -q423}424 425ipv6_bgp_test()426{427	devlink_trap_stats_test "IPv6 BGP" "ipv6_bgp" \428		$MZ $h1 -6 -c 1 -a own -b $(mac_get $rp1) \429		-A 2001:db8:1::1 -B 2001:db8:1::2 \430		-t tcp sp=54321,dp=179,flags=rst -p 100 -q431}432 433ipv4_vrrp_test()434{435	devlink_trap_stats_test "IPv4 VRRP" "ipv4_vrrp" \436		$MZ $h1 -c 1 -a own -b 01:00:5e:00:00:12 \437		-A 192.0.2.1 -B 224.0.0.18 -t ip proto=112 -p 100 -q438}439 440ipv6_vrrp_test()441{442	devlink_trap_stats_test "IPv6 VRRP" "ipv6_vrrp" \443		$MZ $h1 -6 -c 1 -a own -b 33:33:00:00:00:12 \444		-A fe80::1 -B ff02::12 -t ip next=112 -p 100 -q445}446 447ipv4_pim_test()448{449	devlink_trap_stats_test "IPv4 PIM - Multicast" "ipv4_pim" \450		$MZ $h1 -c 1 -a own -b 01:00:5e:00:00:0d \451		-A 192.0.2.1 -B 224.0.0.13 -t ip proto=103 -p 100 -q452 453	devlink_trap_stats_test "IPv4 PIM - Unicast" "ipv4_pim" \454		$MZ $h1 -c 1 -a own -b $(mac_get $rp1) \455		-A 192.0.2.1 -B 192.0.2.2 -t ip proto=103 -p 100 -q456}457 458ipv6_pim_test()459{460	devlink_trap_stats_test "IPv6 PIM - Multicast" "ipv6_pim" \461		$MZ $h1 -6 -c 1 -a own -b 33:33:00:00:00:0d \462		-A fe80::1 -B ff02::d -t ip next=103 -p 100 -q463 464	devlink_trap_stats_test "IPv6 PIM - Unicast" "ipv6_pim" \465		$MZ $h1 -6 -c 1 -a own -b $(mac_get $rp1) \466		-A fe80::1 -B 2001:db8:1::2 -t ip next=103 -p 100 -q467}468 469uc_loopback_test()470{471	# Add neighbours to the fake destination IPs, so that the packets are472	# routed in the device and not trapped due to an unresolved neighbour473	# exception.474	ip -4 neigh add 192.0.2.3 lladdr 00:11:22:33:44:55 nud permanent \475		dev $rp1476	ip -6 neigh add 2001:db8:1::3 lladdr 00:11:22:33:44:55 nud permanent \477		dev $rp1478 479	devlink_trap_stats_test "IPv4 Unicast Loopback" "uc_loopback" \480		$MZ $h1 -c 1 -a own -b $(mac_get $rp1) \481		-A 192.0.2.1 -B 192.0.2.3 -t udp sp=54321,dp=12345 -p 100 -q482 483	devlink_trap_stats_test "IPv6 Unicast Loopback" "uc_loopback" \484		$MZ $h1 -6 -c 1 -a own -b $(mac_get $rp1) \485		-A 2001:db8:1::1 -B 2001:db8:1::3 -t udp sp=54321,dp=12345 \486		-p 100 -q487 488	ip -6 neigh del 2001:db8:1::3 dev $rp1489	ip -4 neigh del 192.0.2.3 dev $rp1490}491 492local_route_test()493{494	# Use a fake source IP to prevent the trap from being triggered twice495	# when the router sends back a port unreachable message.496	devlink_trap_stats_test "IPv4 Local Route" "local_route" \497		$MZ $h1 -c 1 -a own -b $(mac_get $rp1) \498		-A 192.0.2.3 -B 192.0.2.2 -t udp sp=54321,dp=12345 -p 100 -q499 500	devlink_trap_stats_test "IPv6 Local Route" "local_route" \501		$MZ $h1 -6 -c 1 -a own -b $(mac_get $rp1) \502		-A 2001:db8:1::3 -B 2001:db8:1::2 -t udp sp=54321,sp=12345 \503		-p 100 -q504}505 506external_route_test()507{508	# Add a dummy device through which the incoming packets should be509	# routed.510	ip link add name dummy10 up type dummy511	ip address add 203.0.113.1/24 dev dummy10512	ip -6 address add 2001:db8:10::1/64 dev dummy10513 514	devlink_trap_stats_test "IPv4 External Route" "external_route" \515		$MZ $h1 -c 1 -a own -b $(mac_get $rp1) \516		-A 192.0.2.1 -B 203.0.113.2 -t udp sp=54321,dp=12345 -p 100 -q517 518	devlink_trap_stats_test "IPv6 External Route" "external_route" \519		$MZ $h1 -6 -c 1 -a own -b $(mac_get $rp1) \520		-A 2001:db8:1::1 -B 2001:db8:10::2 -t udp sp=54321,sp=12345 \521		-p 100 -q522 523	ip -6 address del 2001:db8:10::1/64 dev dummy10524	ip address del 203.0.113.1/24 dev dummy10525	ip link del dev dummy10526}527 528ipv6_uc_dip_link_local_scope_test()529{530	# Add a dummy link-local prefix route to allow the packet to be routed.531	ip -6 route add fe80:1::/64 dev $rp2532 533	devlink_trap_stats_test \534		"IPv6 Unicast Destination IP With Link-Local Scope" \535		"ipv6_uc_dip_link_local_scope" \536		$MZ $h1 -6 -c 1 -a own -b $(mac_get $rp1) \537		-A fe80::1 -B fe80:1::2 -t udp sp=54321,sp=12345 \538		-p 100 -q539 540	ip -6 route del fe80:1::/64 dev $rp2541}542 543ipv4_router_alert_get()544{545	local p546 547	# https://en.wikipedia.org/wiki/IPv4#Options548	p=$(:549		)"94:"$(			: Option Number550		)"04:"$(			: Option Length551		)"00:00:"$(			: Option Data552		)553	echo $p554}555 556ipv4_router_alert_test()557{558	devlink_trap_stats_test "IPv4 Router Alert" "ipv4_router_alert" \559		$MZ $h1 -c 1 -a own -b $(mac_get $rp1) \560		-A 192.0.2.1 -B 198.51.100.3 \561		-t ip option=$(ipv4_router_alert_get) -p 100 -q562}563 564ipv6_router_alert_get()565{566	local p567 568	# https://en.wikipedia.org/wiki/IPv6_packet#Hop-by-hop_options_and_destination_options569	# https://tools.ietf.org/html/rfc2711#section-2.1570	p=$(:571		)"11:"$(			: Next Header - UDP572		)"00:"$(			: Hdr Ext Len573		)"05:02:00:00:00:00:"$(		: Option Data574		)575	echo $p576}577 578ipv6_router_alert_test()579{580	devlink_trap_stats_test "IPv6 Router Alert" "ipv6_router_alert" \581		$MZ $h1 -6 -c 1 -a own -b $(mac_get $rp1) \582		-A 2001:db8:1::1 -B 2001:db8:1::3 \583		-t ip next=0,payload=$(ipv6_router_alert_get) -p 100 -q584}585 586ipv6_dip_all_nodes_test()587{588	devlink_trap_stats_test "IPv6 Destination IP \"All Nodes Address\"" \589		"ipv6_dip_all_nodes" \590		$MZ $h1 -6 -c 1 -a own -b 33:33:00:00:00:01 \591		-A 2001:db8:1::1 -B ff02::1 -t udp sp=12345,dp=54321 -p 100 -q592}593 594ipv6_dip_all_routers_test()595{596	devlink_trap_stats_test "IPv6 Destination IP \"All Routers Address\"" \597		"ipv6_dip_all_routers" \598		$MZ $h1 -6 -c 1 -a own -b 33:33:00:00:00:02 \599		-A 2001:db8:1::1 -B ff02::2 -t udp sp=12345,dp=54321 -p 100 -q600}601 602ipv6_router_solicit_test()603{604	devlink_trap_stats_test "IPv6 Router Solicitation" \605		"ipv6_router_solicit" \606		$MZ $h1 -6 -c 1 -a own -b 33:33:00:00:00:02 \607		-A fe80::1 -B ff02::2 \608		-t ip hop=1,next=58,payload=$(icmpv6_header_get 133) -p 100 -q609}610 611ipv6_router_advert_test()612{613	devlink_trap_stats_test "IPv6 Router Advertisement" \614		"ipv6_router_advert" \615		$MZ $h1 -6 -c 1 -a own -b 33:33:00:00:00:01 \616		-A fe80::1 -B ff02::1 \617		-t ip hop=1,next=58,payload=$(icmpv6_header_get 134) -p 100 -q618}619 620ipv6_redirect_test()621{622	devlink_trap_stats_test "IPv6 Redirect Message" \623		"ipv6_redirect" \624		$MZ $h1 -6 -c 1 -a own -b $(mac_get $rp1) \625		-A fe80::1 -B 2001:db8:1::2 \626		-t ip hop=1,next=58,payload=$(icmpv6_header_get 137) -p 100 -q627}628 629ptp_event_test()630{631	mlxsw_only_on_spectrum 1 || return632 633	# PTP Sync (0)634	devlink_trap_stats_test "PTP Time-Critical Event Message" "ptp_event" \635		$MZ $h1 -c 1 -a own -b 01:00:5e:00:01:81 \636		-A 192.0.2.1 -B 224.0.1.129 \637		-t udp sp=12345,dp=319,payload=10 -p 100 -q638}639 640ptp_general_test()641{642	mlxsw_only_on_spectrum 1 || return643 644	# PTP Announce (b)645	devlink_trap_stats_test "PTP General Message" "ptp_general" \646		$MZ $h1 -c 1 -a own -b 01:00:5e:00:01:81 \647		-A 192.0.2.1 -B 224.0.1.129 \648		-t udp sp=12345,dp=320,payload=1b -p 100 -q649}650 651flow_action_sample_test()652{653	# Install a filter that samples every incoming packet.654	tc qdisc add dev $rp1 clsact655	tc filter add dev $rp1 ingress proto all pref 1 handle 101 matchall \656		skip_sw action sample rate 1 group 1657 658	devlink_trap_stats_test "Flow Sampling" "flow_action_sample" \659		$MZ $h1 -c 1 -a own -b $(mac_get $rp1) \660		-A 192.0.2.1 -B 198.51.100.1 -t udp sp=12345,dp=54321 -p 100 -q661 662	tc filter del dev $rp1 ingress proto all pref 1 handle 101 matchall663	tc qdisc del dev $rp1 clsact664}665 666flow_action_trap_test()667{668	# Install a filter that traps a specific flow.669	tc qdisc add dev $rp1 clsact670	tc filter add dev $rp1 ingress proto ip pref 1 handle 101 flower \671		skip_sw ip_proto udp src_port 12345 dst_port 54321 action trap672 673	devlink_trap_stats_test "Flow Trapping (Logging)" "flow_action_trap" \674		$MZ $h1 -c 1 -a own -b $(mac_get $rp1) \675		-A 192.0.2.1 -B 198.51.100.1 -t udp sp=12345,dp=54321 -p 100 -q676 677	tc filter del dev $rp1 ingress proto ip pref 1 handle 101 flower678	tc qdisc del dev $rp1 clsact679}680 681eapol_payload_get()682{683	local source_mac=$1; shift684	local p685 686	p=$(:687		)"01:80:C2:00:00:03:"$(       : ETH daddr688		)"$source_mac:"$(             : ETH saddr689		)"88:8E:"$(                   : ETH type690		)691	echo $p692}693 694eapol_test()695{696	local h1mac=$(mac_get $h1)697 698	devlink_trap_stats_test "EAPOL" "eapol" $MZ $h1 -c 1 \699		$(eapol_payload_get $h1mac) -p 100 -q700}701 702trap cleanup EXIT703 704setup_prepare705setup_wait706 707tests_run708 709exit $EXIT_STATUS710