charon-xpc: Add a work-around to trigger IP address add events after boot
This commit is contained in:
@@ -122,6 +122,29 @@ static void segv_handler(int signal)
|
|||||||
abort();
|
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.
|
* Main function, starts the daemon.
|
||||||
*/
|
*/
|
||||||
@@ -204,5 +227,6 @@ int main(int argc, char *argv[])
|
|||||||
atexit(dispatcher_cleanup);
|
atexit(dispatcher_cleanup);
|
||||||
|
|
||||||
charon->start(charon);
|
charon->start(charon);
|
||||||
|
fixup_pf_route();
|
||||||
return run();
|
return run();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user