arping -q -A -c 1 -I ${device} ${address}
( sleep 2; arping -q -U -c 1 -I ${device} ${address} ) >/dev/null 2>&1 </dev/null &
}
+
+function ipv4_get_netaddress() {
+ local address=${1}
+ assert isset address
+
+ local prefix=$(ip_get_prefix ${address})
+ assert isset prefix
+
+ local NETWORK
+ eval $(ipcalc --network ${address})
+ assert isset NETWORK
+
+ echo "${NETWORK}/${prefix}"
+
+ return ${EXIT_OK}
+}
cmd ip route flush table ${table}
local local_ip_address=$(routing_db_get ${zone} ${proto} local-ip-address)
+ local remote_ip_address=$(routing_db_get ${zone} ${proto} remote-ip-address)
# XXX does not work.
- #log DEBUG "Adding route for subnet ${local_ip_address} to table ${table}"
- #cmd ip route add table ${table} ${local_ip_address} dev ${zone}
-
- local remote_ip_address=$(routing_db_get ${zone} ${proto} remote-ip-address)
+ case "${proto}" in
+ ipv4)
+ local net_address=$(ipv4_get_netaddress ${local_ip_address})
+
+ log DEBUG "Adding route for subnet ${local_ip_address} to table ${table}"
+ cmd ip route add table ${table} ${net_address} dev ${zone}
+ ;;
+ esac
if isset remote_ip_address; then
log DEBUG "Adding default route for table ${table}"