0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040 lib_dir=$(dirname $0)/../../../net/forwarding
0041
0042 ALL_TESTS="
0043 stp_test
0044 lacp_test
0045 lldp_test
0046 igmp_query_test
0047 igmp_v1_report_test
0048 igmp_v2_report_test
0049 igmp_v3_report_test
0050 igmp_v2_leave_test
0051 mld_query_test
0052 mld_v1_report_test
0053 mld_v2_report_test
0054 mld_v1_done_test
0055 ipv4_dhcp_test
0056 ipv6_dhcp_test
0057 arp_request_test
0058 arp_response_test
0059 ipv6_neigh_solicit_test
0060 ipv6_neigh_advert_test
0061 ipv4_bfd_test
0062 ipv6_bfd_test
0063 ipv4_ospf_test
0064 ipv6_ospf_test
0065 ipv4_bgp_test
0066 ipv6_bgp_test
0067 ipv4_vrrp_test
0068 ipv6_vrrp_test
0069 ipv4_pim_test
0070 ipv6_pim_test
0071 uc_loopback_test
0072 local_route_test
0073 external_route_test
0074 ipv6_uc_dip_link_local_scope_test
0075 ipv4_router_alert_test
0076 ipv6_router_alert_test
0077 ipv6_dip_all_nodes_test
0078 ipv6_dip_all_routers_test
0079 ipv6_router_solicit_test
0080 ipv6_router_advert_test
0081 ipv6_redirect_test
0082 ptp_event_test
0083 ptp_general_test
0084 flow_action_sample_test
0085 flow_action_trap_test
0086 "
0087 NUM_NETIFS=4
0088 source $lib_dir/lib.sh
0089 source $lib_dir/devlink_lib.sh
0090 source mlxsw_lib.sh
0091
0092 h1_create()
0093 {
0094 simple_if_init $h1 192.0.2.1/24 2001:db8:1::1/64
0095
0096 ip -4 route add default vrf v$h1 nexthop via 192.0.2.2
0097 ip -6 route add default vrf v$h1 nexthop via 2001:db8:1::2
0098 }
0099
0100 h1_destroy()
0101 {
0102 ip -6 route del default vrf v$h1 nexthop via 2001:db8:1::2
0103 ip -4 route del default vrf v$h1 nexthop via 192.0.2.2
0104
0105 simple_if_fini $h1 192.0.2.1/24 2001:db8:1::1/64
0106 }
0107
0108 h2_create()
0109 {
0110 simple_if_init $h2 198.51.100.1/24 2001:db8:2::1/64
0111
0112 ip -4 route add default vrf v$h2 nexthop via 198.51.100.2
0113 ip -6 route add default vrf v$h2 nexthop via 2001:db8:2::2
0114 }
0115
0116 h2_destroy()
0117 {
0118 ip -6 route del default vrf v$h2 nexthop via 2001:db8:2::2
0119 ip -4 route del default vrf v$h2 nexthop via 198.51.100.2
0120
0121 simple_if_fini $h2 198.51.100.1/24 2001:db8:2::1/64
0122 }
0123
0124 router_create()
0125 {
0126 ip link set dev $rp1 up
0127 ip link set dev $rp2 up
0128
0129 __addr_add_del $rp1 add 192.0.2.2/24 2001:db8:1::2/64
0130 __addr_add_del $rp2 add 198.51.100.2/24 2001:db8:2::2/64
0131 }
0132
0133 router_destroy()
0134 {
0135 __addr_add_del $rp2 del 198.51.100.2/24 2001:db8:2::2/64
0136 __addr_add_del $rp1 del 192.0.2.2/24 2001:db8:1::2/64
0137
0138 ip link set dev $rp2 down
0139 ip link set dev $rp1 down
0140 }
0141
0142 setup_prepare()
0143 {
0144 h1=${NETIFS[p1]}
0145 rp1=${NETIFS[p2]}
0146
0147 rp2=${NETIFS[p3]}
0148 h2=${NETIFS[p4]}
0149
0150 vrf_prepare
0151 forwarding_enable
0152
0153 h1_create
0154 h2_create
0155 router_create
0156 }
0157
0158 cleanup()
0159 {
0160 pre_cleanup
0161
0162 router_destroy
0163 h2_destroy
0164 h1_destroy
0165
0166 forwarding_restore
0167 vrf_cleanup
0168 }
0169
0170 stp_test()
0171 {
0172 devlink_trap_stats_test "STP" "stp" $MZ $h1 -c 1 -t bpdu -q
0173 }
0174
0175 lacp_payload_get()
0176 {
0177 local source_mac=$1; shift
0178 local p
0179
0180 p=$(:
0181 )"01:80:C2:00:00:02:"$( : ETH daddr
0182 )"$source_mac:"$( : ETH saddr
0183 )"88:09:"$( : ETH type
0184 )
0185 echo $p
0186 }
0187
0188 lacp_test()
0189 {
0190 local h1mac=$(mac_get $h1)
0191
0192 devlink_trap_stats_test "LACP" "lacp" $MZ $h1 -c 1 \
0193 $(lacp_payload_get $h1mac) -p 100 -q
0194 }
0195
0196 lldp_payload_get()
0197 {
0198 local source_mac=$1; shift
0199 local p
0200
0201 p=$(:
0202 )"01:80:C2:00:00:0E:"$( : ETH daddr
0203 )"$source_mac:"$( : ETH saddr
0204 )"88:CC:"$( : ETH type
0205 )
0206 echo $p
0207 }
0208
0209 lldp_test()
0210 {
0211 local h1mac=$(mac_get $h1)
0212
0213 devlink_trap_stats_test "LLDP" "lldp" $MZ $h1 -c 1 \
0214 $(lldp_payload_get $h1mac) -p 100 -q
0215 }
0216
0217 igmp_query_test()
0218 {
0219
0220 devlink_trap_stats_test "IGMP Membership Query" "igmp_query" \
0221 $MZ $h1 -c 1 -a own -b 01:00:5E:00:00:01 \
0222 -A 192.0.2.1 -B 224.0.0.1 -t ip proto=2,p=11 -p 100 -q
0223 }
0224
0225 igmp_v1_report_test()
0226 {
0227
0228 devlink_trap_stats_test "IGMP Version 1 Membership Report" \
0229 "igmp_v1_report" $MZ $h1 -c 1 -a own -b 01:00:5E:00:00:01 \
0230 -A 192.0.2.1 -B 244.0.0.1 -t ip proto=2,p=12 -p 100 -q
0231 }
0232
0233 igmp_v2_report_test()
0234 {
0235
0236 devlink_trap_stats_test "IGMP Version 2 Membership Report" \
0237 "igmp_v2_report" $MZ $h1 -c 1 -a own -b 01:00:5E:00:00:01 \
0238 -A 192.0.2.1 -B 244.0.0.1 -t ip proto=2,p=16 -p 100 -q
0239 }
0240
0241 igmp_v3_report_test()
0242 {
0243
0244 devlink_trap_stats_test "IGMP Version 3 Membership Report" \
0245 "igmp_v3_report" $MZ $h1 -c 1 -a own -b 01:00:5E:00:00:01 \
0246 -A 192.0.2.1 -B 244.0.0.1 -t ip proto=2,p=22 -p 100 -q
0247 }
0248
0249 igmp_v2_leave_test()
0250 {
0251
0252 devlink_trap_stats_test "IGMP Version 2 Leave Group" \
0253 "igmp_v2_leave" $MZ $h1 -c 1 -a own -b 01:00:5E:00:00:02 \
0254 -A 192.0.2.1 -B 224.0.0.2 -t ip proto=2,p=17 -p 100 -q
0255 }
0256
0257 mld_payload_get()
0258 {
0259 local type=$1; shift
0260 local p
0261
0262 type=$(printf "%x" $type)
0263 p=$(:
0264 )"3A:"$( : Next Header - ICMPv6
0265 )"00:"$( : Hdr Ext Len
0266 )"00:00:00:00:00:00:"$( : Options and Padding
0267 )"$type:"$( : ICMPv6.type
0268 )"00:"$( : ICMPv6.code
0269 )"00:"$( : ICMPv6.checksum
0270 )
0271 echo $p
0272 }
0273
0274 mld_query_test()
0275 {
0276
0277 devlink_trap_stats_test "MLD Multicast Listener Query" "mld_query" \
0278 $MZ $h1 -6 -c 1 -A fe80::1 -B ff02::1 \
0279 -t ip hop=1,next=0,payload=$(mld_payload_get 130) -p 100 -q
0280 }
0281
0282 mld_v1_report_test()
0283 {
0284
0285 devlink_trap_stats_test "MLD Version 1 Multicast Listener Report" \
0286 "mld_v1_report" $MZ $h1 -6 -c 1 -A fe80::1 -B ff02::16 \
0287 -t ip hop=1,next=0,payload=$(mld_payload_get 131) -p 100 -q
0288 }
0289
0290 mld_v2_report_test()
0291 {
0292
0293 devlink_trap_stats_test "MLD Version 2 Multicast Listener Report" \
0294 "mld_v2_report" $MZ $h1 -6 -c 1 -A fe80::1 -B ff02::16 \
0295 -t ip hop=1,next=0,payload=$(mld_payload_get 143) -p 100 -q
0296 }
0297
0298 mld_v1_done_test()
0299 {
0300
0301 devlink_trap_stats_test "MLD Version 1 Multicast Listener Done" \
0302 "mld_v1_done" $MZ $h1 -6 -c 1 -A fe80::1 -B ff02::16 \
0303 -t ip hop=1,next=0,payload=$(mld_payload_get 132) -p 100 -q
0304 }
0305
0306 ipv4_dhcp_test()
0307 {
0308 devlink_trap_stats_test "IPv4 DHCP Port 67" "ipv4_dhcp" \
0309 $MZ $h1 -c 1 -a own -b bcast -A 0.0.0.0 -B 255.255.255.255 \
0310 -t udp sp=68,dp=67 -p 100 -q
0311
0312 devlink_trap_stats_test "IPv4 DHCP Port 68" "ipv4_dhcp" \
0313 $MZ $h1 -c 1 -a own -b $(mac_get $rp1) -A 192.0.2.1 \
0314 -B 255.255.255.255 -t udp sp=67,dp=68 -p 100 -q
0315 }
0316
0317 ipv6_dhcp_test()
0318 {
0319 devlink_trap_stats_test "IPv6 DHCP Port 547" "ipv6_dhcp" \
0320 $MZ $h1 -6 -c 1 -A fe80::1 -B ff02::1:2 -t udp sp=546,dp=547 \
0321 -p 100 -q
0322
0323 devlink_trap_stats_test "IPv6 DHCP Port 546" "ipv6_dhcp" \
0324 $MZ $h1 -6 -c 1 -A fe80::1 -B ff02::1:2 -t udp sp=547,dp=546 \
0325 -p 100 -q
0326 }
0327
0328 arp_request_test()
0329 {
0330 devlink_trap_stats_test "ARP Request" "arp_request" \
0331 $MZ $h1 -c 1 -a own -b bcast -t arp request -p 100 -q
0332 }
0333
0334 arp_response_test()
0335 {
0336 devlink_trap_stats_test "ARP Response" "arp_response" \
0337 $MZ $h1 -c 1 -a own -b $(mac_get $rp1) -t arp reply -p 100 -q
0338 }
0339
0340 icmpv6_header_get()
0341 {
0342 local type=$1; shift
0343 local p
0344
0345 type=$(printf "%x" $type)
0346 p=$(:
0347 )"$type:"$( : ICMPv6.type
0348 )"00:"$( : ICMPv6.code
0349 )"00:"$( : ICMPv6.checksum
0350 )
0351 echo $p
0352 }
0353
0354 ipv6_neigh_solicit_test()
0355 {
0356 devlink_trap_stats_test "IPv6 Neighbour Solicitation" \
0357 "ipv6_neigh_solicit" $MZ $h1 -6 -c 1 \
0358 -A fe80::1 -B ff02::1:ff00:02 \
0359 -t ip hop=1,next=58,payload=$(icmpv6_header_get 135) -p 100 -q
0360 }
0361
0362 ipv6_neigh_advert_test()
0363 {
0364 devlink_trap_stats_test "IPv6 Neighbour Advertisement" \
0365 "ipv6_neigh_advert" $MZ $h1 -6 -c 1 -a own -b $(mac_get $rp1) \
0366 -A fe80::1 -B 2001:db8:1::2 \
0367 -t ip hop=1,next=58,payload=$(icmpv6_header_get 136) -p 100 -q
0368 }
0369
0370 ipv4_bfd_test()
0371 {
0372 devlink_trap_stats_test "IPv4 BFD Control - Port 3784" "ipv4_bfd" \
0373 $MZ $h1 -c 1 -a own -b $(mac_get $rp1) \
0374 -A 192.0.2.1 -B 192.0.2.2 -t udp sp=49153,dp=3784 -p 100 -q
0375
0376 devlink_trap_stats_test "IPv4 BFD Echo - Port 3785" "ipv4_bfd" \
0377 $MZ $h1 -c 1 -a own -b $(mac_get $rp1) \
0378 -A 192.0.2.1 -B 192.0.2.2 -t udp sp=49153,dp=3785 -p 100 -q
0379 }
0380
0381 ipv6_bfd_test()
0382 {
0383 devlink_trap_stats_test "IPv6 BFD Control - Port 3784" "ipv6_bfd" \
0384 $MZ $h1 -6 -c 1 -a own -b $(mac_get $rp1) \
0385 -A 2001:db8:1::1 -B 2001:db8:1::2 \
0386 -t udp sp=49153,dp=3784 -p 100 -q
0387
0388 devlink_trap_stats_test "IPv6 BFD Echo - Port 3785" "ipv6_bfd" \
0389 $MZ $h1 -6 -c 1 -a own -b $(mac_get $rp1) \
0390 -A 2001:db8:1::1 -B 2001:db8:1::2 \
0391 -t udp sp=49153,dp=3785 -p 100 -q
0392 }
0393
0394 ipv4_ospf_test()
0395 {
0396 devlink_trap_stats_test "IPv4 OSPF - Multicast" "ipv4_ospf" \
0397 $MZ $h1 -c 1 -a own -b 01:00:5e:00:00:05 \
0398 -A 192.0.2.1 -B 224.0.0.5 -t ip proto=89 -p 100 -q
0399
0400 devlink_trap_stats_test "IPv4 OSPF - Unicast" "ipv4_ospf" \
0401 $MZ $h1 -c 1 -a own -b $(mac_get $rp1) \
0402 -A 192.0.2.1 -B 192.0.2.2 -t ip proto=89 -p 100 -q
0403 }
0404
0405 ipv6_ospf_test()
0406 {
0407 devlink_trap_stats_test "IPv6 OSPF - Multicast" "ipv6_ospf" \
0408 $MZ $h1 -6 -c 1 -a own -b 33:33:00:00:00:05 \
0409 -A fe80::1 -B ff02::5 -t ip next=89 -p 100 -q
0410
0411 devlink_trap_stats_test "IPv6 OSPF - Unicast" "ipv6_ospf" \
0412 $MZ $h1 -6 -c 1 -a own -b $(mac_get $rp1) \
0413 -A 2001:db8:1::1 -B 2001:db8:1::2 -t ip next=89 -p 100 -q
0414 }
0415
0416 ipv4_bgp_test()
0417 {
0418 devlink_trap_stats_test "IPv4 BGP" "ipv4_bgp" \
0419 $MZ $h1 -c 1 -a own -b $(mac_get $rp1) \
0420 -A 192.0.2.1 -B 192.0.2.2 -t tcp sp=54321,dp=179,flags=rst \
0421 -p 100 -q
0422 }
0423
0424 ipv6_bgp_test()
0425 {
0426 devlink_trap_stats_test "IPv6 BGP" "ipv6_bgp" \
0427 $MZ $h1 -6 -c 1 -a own -b $(mac_get $rp1) \
0428 -A 2001:db8:1::1 -B 2001:db8:1::2 \
0429 -t tcp sp=54321,dp=179,flags=rst -p 100 -q
0430 }
0431
0432 ipv4_vrrp_test()
0433 {
0434 devlink_trap_stats_test "IPv4 VRRP" "ipv4_vrrp" \
0435 $MZ $h1 -c 1 -a own -b 01:00:5e:00:00:12 \
0436 -A 192.0.2.1 -B 224.0.0.18 -t ip proto=112 -p 100 -q
0437 }
0438
0439 ipv6_vrrp_test()
0440 {
0441 devlink_trap_stats_test "IPv6 VRRP" "ipv6_vrrp" \
0442 $MZ $h1 -6 -c 1 -a own -b 33:33:00:00:00:12 \
0443 -A fe80::1 -B ff02::12 -t ip next=112 -p 100 -q
0444 }
0445
0446 ipv4_pim_test()
0447 {
0448 devlink_trap_stats_test "IPv4 PIM - Multicast" "ipv4_pim" \
0449 $MZ $h1 -c 1 -a own -b 01:00:5e:00:00:0d \
0450 -A 192.0.2.1 -B 224.0.0.13 -t ip proto=103 -p 100 -q
0451
0452 devlink_trap_stats_test "IPv4 PIM - Unicast" "ipv4_pim" \
0453 $MZ $h1 -c 1 -a own -b $(mac_get $rp1) \
0454 -A 192.0.2.1 -B 192.0.2.2 -t ip proto=103 -p 100 -q
0455 }
0456
0457 ipv6_pim_test()
0458 {
0459 devlink_trap_stats_test "IPv6 PIM - Multicast" "ipv6_pim" \
0460 $MZ $h1 -6 -c 1 -a own -b 33:33:00:00:00:0d \
0461 -A fe80::1 -B ff02::d -t ip next=103 -p 100 -q
0462
0463 devlink_trap_stats_test "IPv6 PIM - Unicast" "ipv6_pim" \
0464 $MZ $h1 -6 -c 1 -a own -b $(mac_get $rp1) \
0465 -A fe80::1 -B 2001:db8:1::2 -t ip next=103 -p 100 -q
0466 }
0467
0468 uc_loopback_test()
0469 {
0470
0471
0472
0473 ip -4 neigh add 192.0.2.3 lladdr 00:11:22:33:44:55 nud permanent \
0474 dev $rp1
0475 ip -6 neigh add 2001:db8:1::3 lladdr 00:11:22:33:44:55 nud permanent \
0476 dev $rp1
0477
0478 devlink_trap_stats_test "IPv4 Unicast Loopback" "uc_loopback" \
0479 $MZ $h1 -c 1 -a own -b $(mac_get $rp1) \
0480 -A 192.0.2.1 -B 192.0.2.3 -t udp sp=54321,dp=12345 -p 100 -q
0481
0482 devlink_trap_stats_test "IPv6 Unicast Loopback" "uc_loopback" \
0483 $MZ $h1 -6 -c 1 -a own -b $(mac_get $rp1) \
0484 -A 2001:db8:1::1 -B 2001:db8:1::3 -t udp sp=54321,dp=12345 \
0485 -p 100 -q
0486
0487 ip -6 neigh del 2001:db8:1::3 dev $rp1
0488 ip -4 neigh del 192.0.2.3 dev $rp1
0489 }
0490
0491 local_route_test()
0492 {
0493
0494
0495 devlink_trap_stats_test "IPv4 Local Route" "local_route" \
0496 $MZ $h1 -c 1 -a own -b $(mac_get $rp1) \
0497 -A 192.0.2.3 -B 192.0.2.2 -t udp sp=54321,dp=12345 -p 100 -q
0498
0499 devlink_trap_stats_test "IPv6 Local Route" "local_route" \
0500 $MZ $h1 -6 -c 1 -a own -b $(mac_get $rp1) \
0501 -A 2001:db8:1::3 -B 2001:db8:1::2 -t udp sp=54321,sp=12345 \
0502 -p 100 -q
0503 }
0504
0505 external_route_test()
0506 {
0507
0508
0509 ip link add name dummy10 up type dummy
0510 ip address add 203.0.113.1/24 dev dummy10
0511 ip -6 address add 2001:db8:10::1/64 dev dummy10
0512
0513 devlink_trap_stats_test "IPv4 External Route" "external_route" \
0514 $MZ $h1 -c 1 -a own -b $(mac_get $rp1) \
0515 -A 192.0.2.1 -B 203.0.113.2 -t udp sp=54321,dp=12345 -p 100 -q
0516
0517 devlink_trap_stats_test "IPv6 External Route" "external_route" \
0518 $MZ $h1 -6 -c 1 -a own -b $(mac_get $rp1) \
0519 -A 2001:db8:1::1 -B 2001:db8:10::2 -t udp sp=54321,sp=12345 \
0520 -p 100 -q
0521
0522 ip -6 address del 2001:db8:10::1/64 dev dummy10
0523 ip address del 203.0.113.1/24 dev dummy10
0524 ip link del dev dummy10
0525 }
0526
0527 ipv6_uc_dip_link_local_scope_test()
0528 {
0529
0530 ip -6 route add fe80:1::/64 dev $rp2
0531
0532 devlink_trap_stats_test \
0533 "IPv6 Unicast Destination IP With Link-Local Scope" \
0534 "ipv6_uc_dip_link_local_scope" \
0535 $MZ $h1 -6 -c 1 -a own -b $(mac_get $rp1) \
0536 -A fe80::1 -B fe80:1::2 -t udp sp=54321,sp=12345 \
0537 -p 100 -q
0538
0539 ip -6 route del fe80:1::/64 dev $rp2
0540 }
0541
0542 ipv4_router_alert_get()
0543 {
0544 local p
0545
0546
0547 p=$(:
0548 )"94:"$( : Option Number
0549 )"04:"$( : Option Length
0550 )"00:00:"$( : Option Data
0551 )
0552 echo $p
0553 }
0554
0555 ipv4_router_alert_test()
0556 {
0557 devlink_trap_stats_test "IPv4 Router Alert" "ipv4_router_alert" \
0558 $MZ $h1 -c 1 -a own -b $(mac_get $rp1) \
0559 -A 192.0.2.1 -B 198.51.100.3 \
0560 -t ip option=$(ipv4_router_alert_get) -p 100 -q
0561 }
0562
0563 ipv6_router_alert_get()
0564 {
0565 local p
0566
0567
0568
0569 p=$(:
0570 )"11:"$( : Next Header - UDP
0571 )"00:"$( : Hdr Ext Len
0572 )"05:02:00:00:00:00:"$( : Option Data
0573 )
0574 echo $p
0575 }
0576
0577 ipv6_router_alert_test()
0578 {
0579 devlink_trap_stats_test "IPv6 Router Alert" "ipv6_router_alert" \
0580 $MZ $h1 -6 -c 1 -a own -b $(mac_get $rp1) \
0581 -A 2001:db8:1::1 -B 2001:db8:1::3 \
0582 -t ip next=0,payload=$(ipv6_router_alert_get) -p 100 -q
0583 }
0584
0585 ipv6_dip_all_nodes_test()
0586 {
0587 devlink_trap_stats_test "IPv6 Destination IP \"All Nodes Address\"" \
0588 "ipv6_dip_all_nodes" \
0589 $MZ $h1 -6 -c 1 -a own -b 33:33:00:00:00:01 \
0590 -A 2001:db8:1::1 -B ff02::1 -t udp sp=12345,dp=54321 -p 100 -q
0591 }
0592
0593 ipv6_dip_all_routers_test()
0594 {
0595 devlink_trap_stats_test "IPv6 Destination IP \"All Routers Address\"" \
0596 "ipv6_dip_all_routers" \
0597 $MZ $h1 -6 -c 1 -a own -b 33:33:00:00:00:02 \
0598 -A 2001:db8:1::1 -B ff02::2 -t udp sp=12345,dp=54321 -p 100 -q
0599 }
0600
0601 ipv6_router_solicit_test()
0602 {
0603 devlink_trap_stats_test "IPv6 Router Solicitation" \
0604 "ipv6_router_solicit" \
0605 $MZ $h1 -6 -c 1 -a own -b 33:33:00:00:00:02 \
0606 -A fe80::1 -B ff02::2 \
0607 -t ip hop=1,next=58,payload=$(icmpv6_header_get 133) -p 100 -q
0608 }
0609
0610 ipv6_router_advert_test()
0611 {
0612 devlink_trap_stats_test "IPv6 Router Advertisement" \
0613 "ipv6_router_advert" \
0614 $MZ $h1 -6 -c 1 -a own -b 33:33:00:00:00:01 \
0615 -A fe80::1 -B ff02::1 \
0616 -t ip hop=1,next=58,payload=$(icmpv6_header_get 134) -p 100 -q
0617 }
0618
0619 ipv6_redirect_test()
0620 {
0621 devlink_trap_stats_test "IPv6 Redirect Message" \
0622 "ipv6_redirect" \
0623 $MZ $h1 -6 -c 1 -a own -b $(mac_get $rp1) \
0624 -A fe80::1 -B 2001:db8:1::2 \
0625 -t ip hop=1,next=58,payload=$(icmpv6_header_get 137) -p 100 -q
0626 }
0627
0628 ptp_event_test()
0629 {
0630 mlxsw_only_on_spectrum 1 || return
0631
0632
0633 devlink_trap_stats_test "PTP Time-Critical Event Message" "ptp_event" \
0634 $MZ $h1 -c 1 -a own -b 01:00:5e:00:01:81 \
0635 -A 192.0.2.1 -B 224.0.1.129 \
0636 -t udp sp=12345,dp=319,payload=10 -p 100 -q
0637 }
0638
0639 ptp_general_test()
0640 {
0641 mlxsw_only_on_spectrum 1 || return
0642
0643
0644 devlink_trap_stats_test "PTP General Message" "ptp_general" \
0645 $MZ $h1 -c 1 -a own -b 01:00:5e:00:01:81 \
0646 -A 192.0.2.1 -B 224.0.1.129 \
0647 -t udp sp=12345,dp=320,payload=1b -p 100 -q
0648 }
0649
0650 flow_action_sample_test()
0651 {
0652
0653 tc qdisc add dev $rp1 clsact
0654 tc filter add dev $rp1 ingress proto all pref 1 handle 101 matchall \
0655 skip_sw action sample rate 1 group 1
0656
0657 devlink_trap_stats_test "Flow Sampling" "flow_action_sample" \
0658 $MZ $h1 -c 1 -a own -b $(mac_get $rp1) \
0659 -A 192.0.2.1 -B 198.51.100.1 -t udp sp=12345,dp=54321 -p 100 -q
0660
0661 tc filter del dev $rp1 ingress proto all pref 1 handle 101 matchall
0662 tc qdisc del dev $rp1 clsact
0663 }
0664
0665 flow_action_trap_test()
0666 {
0667
0668 tc qdisc add dev $rp1 clsact
0669 tc filter add dev $rp1 ingress proto ip pref 1 handle 101 flower \
0670 skip_sw ip_proto udp src_port 12345 dst_port 54321 action trap
0671
0672 devlink_trap_stats_test "Flow Trapping (Logging)" "flow_action_trap" \
0673 $MZ $h1 -c 1 -a own -b $(mac_get $rp1) \
0674 -A 192.0.2.1 -B 198.51.100.1 -t udp sp=12345,dp=54321 -p 100 -q
0675
0676 tc filter del dev $rp1 ingress proto ip pref 1 handle 101 flower
0677 tc qdisc del dev $rp1 clsact
0678 }
0679
0680 trap cleanup EXIT
0681
0682 setup_prepare
0683 setup_wait
0684
0685 tests_run
0686
0687 exit $EXIT_STATUS