local daddr4=$1
   local daddr6=$2
 
-  if ip netns exec "$ns1" ping -c 1 -w 1 -q "$daddr4" > /dev/null; then
+  if ip netns exec "$ns1" ping -c 1 -W 0.1 -q "$daddr4" > /dev/null; then
        echo "FAIL: ${ns1} could reach $daddr4" 1>&2
        return 1
   fi
 
-  if ip netns exec "$ns1" ping -c 1 -w 1 -q "$daddr6" > /dev/null; then
+  if ip netns exec "$ns1" ping -c 1 -W 0.1 -q "$daddr6" > /dev/null; then
        echo "FAIL: ${ns1} could reach $daddr6" 1>&2
        return 1
   fi
        local addr="$3"
        local type="$4"
        local count="$5"
+       local lret=0
 
        [ -z "$count" ] && count=1
 
        if ! ip netns exec "$nsrouter" nft get element inet t "$setname" { "$iifname" . "$addr" . "$type" } |grep -q "counter packets $count";then
-               echo "FAIL: did not find $iifname . $addr . $type in $setname"
+               echo "FAIL: did not find $iifname . $addr . $type in $setname with $count packets"
                ip netns exec "$nsrouter" nft list set inet t "$setname"
                ret=1
-               return 1
+               # do not fail right away, delete entry if it exists so later test that
+               # checks for unwanted keys don't get confused by this *expected* key.
+               lret=1
        fi
 
        # delete the entry, this allows to check if anything unexpected appeared
                return 1
        fi
 
-       return 0
+       return $lret
 }
 
 check_local()