Я пытаюсь найти решение, позволяющее разделить туннелирование с клиентом Cisco AnyConnect для OSX. Я нашел, как он модифицирует брандмауэр, и это можно исправить. Проблема, однако, в том, что демон vpnagentd продолжает перехватывать таблицу маршрутизации.
Саша Пачев предложил элегантное решение для Linux (https://superuser.com/a/546668/568559), однако у меня возникают проблемы с его адаптацией к OSX.
Hack.c, написанный для Linux, ссылается на linux/netlink.h, которого нет в OSX. Я думаю, что это откуда AF_NETLINK .
#include <sys/socket.h>
#include <linux/netlink.h>
int __ZN25CInterfaceRouteMonitorMac20routeCallbackHandlerEv()
{
int fd=50; // max fd to try
char buf[8192];
struct sockaddr_nl sa;
socklen_t len = sizeof(sa);
while (fd) {
if (!getsockname(fd, (struct sockaddr *)&sa, &len)) {
if (sa.nl_family == AF_NETLINK) {
ssize_t n = recv(fd, buf, sizeof(buf), MSG_DONTWAIT);
}
}
fd--;
}
return 0;
}
Я не знаком с этим языком, поэтому я не уверен, где искать. Я вижу, как другие ссылались в первоначальном вопросе на адаптацию этого к OSX, но я не вижу результатов, опубликованных где-либо.
Кому-нибудь повезло с адаптацией этого метода к OSX? Любая помощь с благодарностью.
Как только я получу этот аспект, я буду рад поделиться с вами полным решением.