Skip to content

Commit 6a414fd

Browse files
pmachatadavem330
authored andcommitted
selftests: rtnetlink: Add an address proto test
Add coverage of "ip address {add,replace} ... proto" support. Signed-off-by: Petr Machata <[email protected]> Reviewed-by: Ido Schimmel <[email protected]> Reviewed-by: David Ahern <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent ecb3c1e commit 6a414fd

File tree

1 file changed

+91
-0
lines changed

1 file changed

+91
-0
lines changed

tools/testing/selftests/net/rtnetlink.sh

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ ALL_TESTS="
2626
kci_test_fdb_get
2727
kci_test_neigh_get
2828
kci_test_bridge_parent_id
29+
kci_test_address_proto
2930
"
3031

3132
devdummy="test-dummy0"
@@ -1249,6 +1250,96 @@ kci_test_bridge_parent_id()
12491250
echo "PASS: bridge_parent_id"
12501251
}
12511252

1253+
address_get_proto()
1254+
{
1255+
local addr=$1; shift
1256+
1257+
ip -N -j address show dev "$devdummy" |
1258+
jq -e -r --arg addr "${addr%/*}" \
1259+
'.[].addr_info[] | select(.local == $addr) | .protocol'
1260+
}
1261+
1262+
address_count()
1263+
{
1264+
ip -N -j address show dev "$devdummy" "$@" |
1265+
jq -e -r '[.[].addr_info[] | .local | select(. != null)] | length'
1266+
}
1267+
1268+
do_test_address_proto()
1269+
{
1270+
local what=$1; shift
1271+
local addr=$1; shift
1272+
local addr2=${addr%/*}2/${addr#*/}
1273+
local addr3=${addr%/*}3/${addr#*/}
1274+
local proto
1275+
local count
1276+
local ret=0
1277+
local err
1278+
1279+
ip address add dev "$devdummy" "$addr3"
1280+
check_err $?
1281+
proto=$(address_get_proto "$addr3")
1282+
[[ "$proto" == null ]]
1283+
check_err $?
1284+
1285+
ip address add dev "$devdummy" "$addr2" proto 0x99
1286+
check_err $?
1287+
proto=$(address_get_proto "$addr2")
1288+
[[ "$proto" == 0x99 ]]
1289+
check_err $?
1290+
1291+
ip address add dev "$devdummy" "$addr" proto 0xab
1292+
check_err $?
1293+
proto=$(address_get_proto "$addr")
1294+
[[ "$proto" == 0xab ]]
1295+
check_err $?
1296+
1297+
ip address replace dev "$devdummy" "$addr" proto 0x11
1298+
proto=$(address_get_proto "$addr")
1299+
check_err $?
1300+
[[ "$proto" == 0x11 ]]
1301+
check_err $?
1302+
1303+
count=$(address_count)
1304+
check_err $?
1305+
(( count == 3 )) # $addr, $addr2 and $addr3
1306+
1307+
count=$(address_count proto 0)
1308+
check_err $?
1309+
(( count == 1 )) # just $addr2
1310+
1311+
count=$(address_count proto 0x11)
1312+
check_err $?
1313+
(( count == 2 )) # $addr and $addr2
1314+
1315+
count=$(address_count proto 0xab)
1316+
check_err $?
1317+
(( count == 1 )) # just $addr2
1318+
1319+
ip address del dev "$devdummy" "$addr"
1320+
ip address del dev "$devdummy" "$addr2"
1321+
ip address del dev "$devdummy" "$addr3"
1322+
1323+
if [ $ret -ne 0 ]; then
1324+
echo "FAIL: address proto $what"
1325+
return 1
1326+
fi
1327+
echo "PASS: address proto $what"
1328+
}
1329+
1330+
kci_test_address_proto()
1331+
{
1332+
local ret=0
1333+
1334+
do_test_address_proto IPv4 192.0.2.1/28
1335+
check_err $?
1336+
1337+
do_test_address_proto IPv6 2001:db8:1::1/64
1338+
check_err $?
1339+
1340+
return $ret
1341+
}
1342+
12521343
kci_test_rtnl()
12531344
{
12541345
local current_test

0 commit comments

Comments
 (0)