charon-xpc: Add a work-around to trigger IP address add events after boot

This commit is contained in:
Martin Willi
2014-12-16 17:22:27 +01:00
parent f9da7ef868
commit 1c6188a0c2
+24
View File
@@ -122,6 +122,29 @@ static void segv_handler(int signal)
abort();
}
/**
* PF_ROUTE for some reason does not send an event for the first address
* installed after a fresh boot. Fix this by installing a fake tun address
* just to remove it afterwards.
*/
static void fixup_pf_route()
{
tun_device_t *tun;
host_t *host;
tun = tun_device_create(NULL);
if (tun)
{
if (tun->up(tun))
{
host = host_create_from_string("127.0.0.99", 0);
tun->set_address(tun, host, 32);
host->destroy(host);
}
tun->destroy(tun);
}
}
/**
* Main function, starts the daemon.
*/
@@ -204,5 +227,6 @@ int main(int argc, char *argv[])
atexit(dispatcher_cleanup);
charon->start(charon);
fixup_pf_route();
return run();
}