#            veth0 <---|---> veth1
 # Validate source address selection for route without gateway
 
+source lib.sh
 PAUSE_ON_FAIL=no
 VERBOSE=0
 ret=0
 # config
 setup()
 {
-       ip netns add h1
-       ip -n h1 link set lo up
-       ip netns add h2
-       ip -n h2 link set lo up
+       setup_ns h1 h2
 
        # Add a fake eth0 to support an ip address
-       ip -n h1 link add name eth0 type dummy
-       ip -n h1 link set eth0 up
-       ip -n h1 address add 192.168.0.1/24 dev eth0
+       ip -n $h1 link add name eth0 type dummy
+       ip -n $h1 link set eth0 up
+       ip -n $h1 address add 192.168.0.1/24 dev eth0
 
        # Configure veths (same @mac, arp off)
-       ip -n h1 link add name veth0 type veth peer name veth1 netns h2
-       ip -n h1 link set veth0 up
+       ip -n $h1 link add name veth0 type veth peer name veth1 netns $h2
+       ip -n $h1 link set veth0 up
 
-       ip -n h2 link set veth1 up
+       ip -n $h2 link set veth1 up
 
        # Configure @IP in the peer netns
-       ip -n h2 address add 192.168.1.1/32 dev veth1
-       ip -n h2 route add default dev veth1
+       ip -n $h2 address add 192.168.1.1/32 dev veth1
+       ip -n $h2 route add default dev veth1
 
        # Add a nexthop without @gw and use it in a route
-       ip -n h1 nexthop add id 1 dev veth0
-       ip -n h1 route add 192.168.1.1 nhid 1
+       ip -n $h1 nexthop add id 1 dev veth0
+       ip -n $h1 route add 192.168.1.1 nhid 1
 }
 
 cleanup()
 {
-       ip netns del h1 2>/dev/null
-       ip netns del h2 2>/dev/null
+       cleanup_ns $h1 $h2
 }
 
 trap cleanup EXIT
        esac
 done
 
-cleanup
 setup
 
-run_cmd ip -netns h1 route get 192.168.1.1
+run_cmd ip -netns $h1 route get 192.168.1.1
 log_test $? 0 "nexthop: get route with nexthop without gw"
-run_cmd ip netns exec h1 ping -c1 192.168.1.1
+run_cmd ip netns exec $h1 ping -c1 192.168.1.1
 log_test $? 0 "nexthop: ping through nexthop without gw"
 
 exit $ret