C++ 如何使kext os x网络过滤器与应用程序交互?

C++ 如何使kext os x网络过滤器与应用程序交互?,c++,macos,network-programming,kernel-extension,C++,Macos,Network Programming,Kernel Extension,我正在为OSX编写网络过滤器内核扩展。 我想在kext中调用类似回调的东西。 例如,在函数data_中,当我得到一个tcp数据包时,我想从用户应用程序调用这个回调。应用程序更改此数据包,我将其注入。 如何在kext和用户应用程序之间进行这种交互?首先,您不想在回调中阻止数据-您应该“吞下”数据包,将其发送到用户空间,当它返回时,将其重新注入连接 有几种与用户空间进程交换数据的方法。交换网络数据包最方便的方式可能是机制,它本质上允许您打开用户程序和kext之间的套接字连接 苹果过去提供的示例源代码

我正在为OSX编写网络过滤器内核扩展。 我想在kext中调用类似回调的东西。 例如,在函数data_中,当我得到一个tcp数据包时,我想从用户应用程序调用这个回调。应用程序更改此数据包,我将其注入。
如何在kext和用户应用程序之间进行这种交互?

首先,您不想在回调中阻止数据-您应该“吞下”数据包,将其发送到用户空间,当它返回时,将其重新注入连接

有几种与用户空间进程交换数据的方法。交换网络数据包最方便的方式可能是机制,它本质上允许您打开用户程序和kext之间的套接字连接

苹果过去提供的示例源代码“tcplognke”做了一些非常类似的事情,但它似乎已经从他们自己的网站上消失了。有人好心地保存了它,现在我看它还可以,但显然要小心从随机网站下载东西