diff options
Diffstat (limited to 'src/frontends/osx/charon-xpc')
-rw-r--r-- | src/frontends/osx/charon-xpc/charon-xpc-Info.plist | 2 | ||||
-rw-r--r-- | src/frontends/osx/charon-xpc/charon-xpc.c | 24 |
2 files changed, 25 insertions, 1 deletions
diff --git a/src/frontends/osx/charon-xpc/charon-xpc-Info.plist b/src/frontends/osx/charon-xpc/charon-xpc-Info.plist index e8ddd24b0..85e2e4dc2 100644 --- a/src/frontends/osx/charon-xpc/charon-xpc-Info.plist +++ b/src/frontends/osx/charon-xpc/charon-xpc-Info.plist @@ -12,7 +12,7 @@ <string>1.0</string> <key>SMAuthorizedClients</key> <array> - <string>identifier org.strongswan.osx and certificate leaf[subject.CN] = "Joe Developer"</string> + <string>identifier org.strongswan.osx and certificate leaf[subject.CN] = "Developer ID Application: revosec AG (SRXT3TB2PY)"</string> </array> </dict> </plist> diff --git a/src/frontends/osx/charon-xpc/charon-xpc.c b/src/frontends/osx/charon-xpc/charon-xpc.c index 2235be12d..057bfbd88 100644 --- a/src/frontends/osx/charon-xpc/charon-xpc.c +++ b/src/frontends/osx/charon-xpc/charon-xpc.c @@ -123,6 +123,29 @@ static void segv_handler(int signal) } /** + * 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. */ int main(int argc, char *argv[]) @@ -204,5 +227,6 @@ int main(int argc, char *argv[]) atexit(dispatcher_cleanup); charon->start(charon); + fixup_pf_route(); return run(); } |