kernel-pfroute: Properly install routes with interface and gateway

This commit is contained in:
Tobias Brunner
2013-06-21 17:03:21 +02:00
parent 1f31a2bc2e
commit f58f8bf409
@@ -510,7 +510,7 @@ static void process_link(private_kernel_pfroute_net_t *this,
{ {
enumerator_t *enumerator; enumerator_t *enumerator;
iface_entry_t *iface; iface_entry_t *iface;
bool roam = FALSE, found = FALSE;; bool roam = FALSE, found = FALSE;
this->lock->write_lock(this->lock); this->lock->write_lock(this->lock);
enumerator = this->ifaces->create_enumerator(this->ifaces); enumerator = this->ifaces->create_enumerator(this->ifaces);
@@ -1051,13 +1051,14 @@ static status_t manage_route(private_kernel_pfroute_net_t *this, int op,
dst->get_family(dst), prefixlen); dst->get_family(dst), prefixlen);
} }
break; break;
case RTAX_GATEWAY: case RTAX_IFP:
/* interface name seems to replace gateway on OS X */
if (if_name) if (if_name)
{ {
add_rt_ifname(&msg.hdr, RTA_GATEWAY, if_name); add_rt_ifname(&msg.hdr, RTA_IFP, if_name);
} }
else if (gateway) break;
case RTAX_GATEWAY:
if (gateway)
{ {
add_rt_addr(&msg.hdr, RTA_GATEWAY, gateway); add_rt_addr(&msg.hdr, RTA_GATEWAY, gateway);
} }