There are failed cases in the xfrm_policy.sh test, but the overall result is PASS
$ sudo ./xfrm_policy.sh
# selftests: net: xfrm_policy.sh
# PASS: policy before exception matches
# FAIL: expected ping to .254 to fail (exceptions)
# PASS: direct policy matches (exceptions)
# PASS: policy matches (exceptions)
# FAIL: expected ping to .254 to fail (exceptions and block policies)
# PASS: direct policy matches (exceptions and block policies)
# PASS: policy matches (exceptions and block policies)
# FAIL: expected ping to .254 to fail (exceptions and block policies after hresh changes)
# PASS: direct policy matches (exceptions and block policies after hresh changes)
# PASS: policy matches (exceptions and block policies after hresh changes)
# FAIL: expected ping to .254 to fail (exceptions and block policies after hthresh change in ns3)
# PASS: direct policy matches (exceptions and block policies after hthresh change in ns3)
# PASS: policy matches (exceptions and block policies after hthresh change in ns3)
# FAIL: expected ping to .254 to fail (exceptions and block policies after htresh change to normal)
# PASS: direct policy matches (exceptions and block policies after htresh change to normal)
# PASS: policy matches (exceptions and block policies after htresh change to normal)
# PASS: policies with repeated htresh change
ok 12 selftests: net: xfrm_policy.sh
$ echo $?
0
This is because of the variable "lret" in check_xfrm() is not a local variable, and it looks like it will override the one in check_exceptions() thus making the return value become 0 for the passed test case after the failed one.
There are failed cases in the xfrm_policy.sh test, but the overall result is PASS
$ sudo ./xfrm_policy.sh
# selftests: net: xfrm_policy.sh
# PASS: policy before exception matches
# FAIL: expected ping to .254 to fail (exceptions)
# PASS: direct policy matches (exceptions)
# PASS: policy matches (exceptions)
# FAIL: expected ping to .254 to fail (exceptions and block policies)
# PASS: direct policy matches (exceptions and block policies)
# PASS: policy matches (exceptions and block policies)
# FAIL: expected ping to .254 to fail (exceptions and block policies after hresh changes)
# PASS: direct policy matches (exceptions and block policies after hresh changes)
# PASS: policy matches (exceptions and block policies after hresh changes)
# FAIL: expected ping to .254 to fail (exceptions and block policies after hthresh change in ns3)
# PASS: direct policy matches (exceptions and block policies after hthresh change in ns3)
# PASS: policy matches (exceptions and block policies after hthresh change in ns3)
# FAIL: expected ping to .254 to fail (exceptions and block policies after htresh change to normal)
# PASS: direct policy matches (exceptions and block policies after htresh change to normal)
# PASS: policy matches (exceptions and block policies after htresh change to normal)
# PASS: policies with repeated htresh change
ok 12 selftests: net: xfrm_policy.sh
$ echo $?
0
This is because of the variable "lret" in check_xfrm() is not a local variable, and it looks like it will override the one in check_exceptions() thus making the return value become 0 for the passed test case after the failed one.