Skip to content

Commit 0534c54

Browse files
roopa-prabhudavem330
authored andcommitted
selftests: net: add fdb nexthop tests
This commit adds ipv4 and ipv6 fdb nexthop api tests to fib_nexthops.sh. Signed-off-by: Roopa Prabhu <[email protected]> Reviewed-by: David Ahern <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent c7cdbe2 commit 0534c54

File tree

1 file changed

+158
-2
lines changed

1 file changed

+158
-2
lines changed

tools/testing/selftests/net/fib_nexthops.sh

Lines changed: 158 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ ret=0
1919
ksft_skip=4
2020

2121
# all tests in this script. Can be overridden with -t option
22-
IPV4_TESTS="ipv4_fcnal ipv4_grp_fcnal ipv4_withv6_fcnal ipv4_fcnal_runtime ipv4_compat_mode"
23-
IPV6_TESTS="ipv6_fcnal ipv6_grp_fcnal ipv6_fcnal_runtime ipv6_compat_mode"
22+
IPV4_TESTS="ipv4_fcnal ipv4_grp_fcnal ipv4_withv6_fcnal ipv4_fcnal_runtime ipv4_compat_mode ipv4_fdb_grp_fcnal"
23+
IPV6_TESTS="ipv6_fcnal ipv6_grp_fcnal ipv6_fcnal_runtime ipv6_compat_mode ipv6_fdb_grp_fcnal"
2424

2525
ALL_TESTS="basic ${IPV4_TESTS} ${IPV6_TESTS}"
2626
TESTS="${ALL_TESTS}"
@@ -146,6 +146,7 @@ setup()
146146
create_ns remote
147147

148148
IP="ip -netns me"
149+
BRIDGE="bridge -netns me"
149150
set -e
150151
$IP li add veth1 type veth peer name veth2
151152
$IP li set veth1 up
@@ -280,6 +281,161 @@ stop_ip_monitor()
280281
return $rc
281282
}
282283

284+
check_nexthop_fdb_support()
285+
{
286+
$IP nexthop help 2>&1 | grep -q fdb
287+
if [ $? -ne 0 ]; then
288+
echo "SKIP: iproute2 too old, missing fdb nexthop support"
289+
return $ksft_skip
290+
fi
291+
}
292+
293+
ipv6_fdb_grp_fcnal()
294+
{
295+
local rc
296+
297+
echo
298+
echo "IPv6 fdb groups functional"
299+
echo "--------------------------"
300+
301+
check_nexthop_fdb_support
302+
if [ $? -eq $ksft_skip ]; then
303+
return $ksft_skip
304+
fi
305+
306+
# create group with multiple nexthops
307+
run_cmd "$IP nexthop add id 61 via 2001:db8:91::2 fdb"
308+
run_cmd "$IP nexthop add id 62 via 2001:db8:91::3 fdb"
309+
run_cmd "$IP nexthop add id 102 group 61/62 fdb"
310+
check_nexthop "id 102" "id 102 group 61/62 fdb"
311+
log_test $? 0 "Fdb Nexthop group with multiple nexthops"
312+
313+
## get nexthop group
314+
run_cmd "$IP nexthop get id 102"
315+
check_nexthop "id 102" "id 102 group 61/62 fdb"
316+
log_test $? 0 "Get Fdb nexthop group by id"
317+
318+
# fdb nexthop group can only contain fdb nexthops
319+
run_cmd "$IP nexthop add id 63 via 2001:db8:91::4"
320+
run_cmd "$IP nexthop add id 64 via 2001:db8:91::5"
321+
run_cmd "$IP nexthop add id 103 group 63/64 fdb"
322+
log_test $? 2 "Fdb Nexthop group with non-fdb nexthops"
323+
324+
# Non fdb nexthop group can not contain fdb nexthops
325+
run_cmd "$IP nexthop add id 65 via 2001:db8:91::5 fdb"
326+
run_cmd "$IP nexthop add id 66 via 2001:db8:91::6 fdb"
327+
run_cmd "$IP nexthop add id 104 group 65/66"
328+
log_test $? 2 "Non-Fdb Nexthop group with fdb nexthops"
329+
330+
# fdb nexthop cannot have blackhole
331+
run_cmd "$IP nexthop add id 67 blackhole fdb"
332+
log_test $? 2 "Fdb Nexthop with blackhole"
333+
334+
# fdb nexthop with oif
335+
run_cmd "$IP nexthop add id 68 via 2001:db8:91::7 dev veth1 fdb"
336+
log_test $? 2 "Fdb Nexthop with oif"
337+
338+
# fdb nexthop with onlink
339+
run_cmd "$IP nexthop add id 68 via 2001:db8:91::7 onlink fdb"
340+
log_test $? 2 "Fdb Nexthop with onlink"
341+
342+
# fdb nexthop with encap
343+
run_cmd "$IP nexthop add id 69 encap mpls 101 via 2001:db8:91::8 dev veth1 fdb"
344+
log_test $? 2 "Fdb Nexthop with encap"
345+
346+
run_cmd "$IP link add name vx10 type vxlan id 1010 local 2001:db8:91::9 remote 2001:db8:91::10 dstport 4789 nolearning noudpcsum tos inherit ttl 100"
347+
run_cmd "$BRIDGE fdb add 02:02:00:00:00:13 dev vx10 nhid 102 self"
348+
log_test $? 0 "Fdb mac add with nexthop group"
349+
350+
## fdb nexthops can only reference nexthop groups and not nexthops
351+
run_cmd "$BRIDGE fdb add 02:02:00:00:00:14 dev vx10 nhid 61 self"
352+
log_test $? 255 "Fdb mac add with nexthop"
353+
354+
run_cmd "$IP -6 ro add 2001:db8:101::1/128 nhid 66"
355+
log_test $? 2 "Route add with fdb nexthop"
356+
357+
run_cmd "$IP -6 ro add 2001:db8:101::1/128 nhid 103"
358+
log_test $? 2 "Route add with fdb nexthop group"
359+
360+
run_cmd "$IP nexthop del id 102"
361+
log_test $? 0 "Fdb nexthop delete"
362+
363+
$IP link del dev vx10
364+
}
365+
366+
ipv4_fdb_grp_fcnal()
367+
{
368+
local rc
369+
370+
echo
371+
echo "IPv4 fdb groups functional"
372+
echo "--------------------------"
373+
374+
check_nexthop_fdb_support
375+
if [ $? -eq $ksft_skip ]; then
376+
return $ksft_skip
377+
fi
378+
379+
# create group with multiple nexthops
380+
run_cmd "$IP nexthop add id 12 via 172.16.1.2 fdb"
381+
run_cmd "$IP nexthop add id 13 via 172.16.1.3 fdb"
382+
run_cmd "$IP nexthop add id 102 group 12/13 fdb"
383+
check_nexthop "id 102" "id 102 group 12/13 fdb"
384+
log_test $? 0 "Fdb Nexthop group with multiple nexthops"
385+
386+
# get nexthop group
387+
run_cmd "$IP nexthop get id 102"
388+
check_nexthop "id 102" "id 102 group 12/13 fdb"
389+
log_test $? 0 "Get Fdb nexthop group by id"
390+
391+
# fdb nexthop group can only contain fdb nexthops
392+
run_cmd "$IP nexthop add id 14 via 172.16.1.2"
393+
run_cmd "$IP nexthop add id 15 via 172.16.1.3"
394+
run_cmd "$IP nexthop add id 103 group 14/15 fdb"
395+
log_test $? 2 "Fdb Nexthop group with non-fdb nexthops"
396+
397+
# Non fdb nexthop group can not contain fdb nexthops
398+
run_cmd "$IP nexthop add id 16 via 172.16.1.2 fdb"
399+
run_cmd "$IP nexthop add id 17 via 172.16.1.3 fdb"
400+
run_cmd "$IP nexthop add id 104 group 14/15"
401+
log_test $? 2 "Non-Fdb Nexthop group with fdb nexthops"
402+
403+
# fdb nexthop cannot have blackhole
404+
run_cmd "$IP nexthop add id 18 blackhole fdb"
405+
log_test $? 2 "Fdb Nexthop with blackhole"
406+
407+
# fdb nexthop with oif
408+
run_cmd "$IP nexthop add id 16 via 172.16.1.2 dev veth1 fdb"
409+
log_test $? 2 "Fdb Nexthop with oif"
410+
411+
# fdb nexthop with onlink
412+
run_cmd "$IP nexthop add id 16 via 172.16.1.2 onlink fdb"
413+
log_test $? 2 "Fdb Nexthop with onlink"
414+
415+
# fdb nexthop with encap
416+
run_cmd "$IP nexthop add id 17 encap mpls 101 via 172.16.1.2 dev veth1 fdb"
417+
log_test $? 2 "Fdb Nexthop with encap"
418+
419+
run_cmd "$IP link add name vx10 type vxlan id 1010 local 10.0.0.1 remote 10.0.0.2 dstport 4789 nolearning noudpcsum tos inherit ttl 100"
420+
run_cmd "$BRIDGE fdb add 02:02:00:00:00:13 dev vx10 nhid 102 self"
421+
log_test $? 0 "Fdb mac add with nexthop group"
422+
423+
# fdb nexthops can only reference nexthop groups and not nexthops
424+
run_cmd "$BRIDGE fdb add 02:02:00:00:00:14 dev vx10 nhid 12 self"
425+
log_test $? 255 "Fdb mac add with nexthop"
426+
427+
run_cmd "$IP ro add 172.16.0.0/22 nhid 15"
428+
log_test $? 2 "Route add with fdb nexthop"
429+
430+
run_cmd "$IP ro add 172.16.0.0/22 nhid 103"
431+
log_test $? 2 "Route add with fdb nexthop group"
432+
433+
run_cmd "$IP nexthop del id 102"
434+
log_test $? 0 "Fdb nexthop delete"
435+
436+
$IP link del dev vx10
437+
}
438+
283439
################################################################################
284440
# basic operations (add, delete, replace) on nexthops and nexthop groups
285441
#

0 commit comments

Comments
 (0)