aboutsummaryrefslogtreecommitdiffstats
path: root/src/frontends/osx/charon-xpc
diff options
context:
space:
mode:
Diffstat (limited to 'src/frontends/osx/charon-xpc')
-rw-r--r--src/frontends/osx/charon-xpc/charon-xpc-Info.plist2
-rw-r--r--src/frontends/osx/charon-xpc/charon-xpc.c24
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();
}