kernel-iph: Implicitly enable IP forwarding when installing routes

This commit is contained in:
Martin Willi 2013-12-24 10:40:09 +01:00
parent c7d30c2ad1
commit 5e6e214ab4
1 changed files with 26 additions and 0 deletions

View File

@ -50,6 +50,11 @@ struct private_kernel_iph_net_t {
*/
HANDLE changes;
/**
* EnableRouter() OVERLAPPED
*/
OVERLAPPED router;
/**
* Mutex to access interface list
*/
@ -677,6 +682,23 @@ static status_t manage_route(private_kernel_iph_net_t *this, bool add,
DBG1(DBG_KNL, "%sing route failed: 0x%08lx", add ? "add" : "remov", ret);
return FAILED;
}
if (add)
{
ret = EnableRouter(NULL, &this->router);
if (ret != ERROR_IO_PENDING)
{
DBG1(DBG_KNL, "EnableRouter router failed: 0x%08lx", ret);
}
}
else
{
ret = UnenableRouter(&this->router, NULL);
if (ret != NO_ERROR)
{
DBG1(DBG_KNL, "UnenableRouter router failed: 0x%08lx", ret);
}
}
return SUCCESS;
}
@ -701,6 +723,7 @@ METHOD(kernel_net_t, destroy, void,
{
CancelMibChangeNotify2(this->changes);
}
CloseHandle(this->router.hEvent);
this->mutex->destroy(this->mutex);
this->ifaces->destroy_function(this->ifaces, (void*)iface_destroy);
free(this);
@ -728,6 +751,9 @@ kernel_iph_net_t *kernel_iph_net_create()
.destroy = _destroy,
},
},
.router = {
.hEvent = CreateEvent(NULL, FALSE, FALSE, NULL),
},
.mutex = mutex_create(MUTEX_TYPE_DEFAULT),
.ifaces = linked_list_create(),
);