我刚刚完成构建用户空间守护程序,用于通过某些无线硬件发送/接收(非IP)数据报(此守护程序称为“交换”)。此外,为了帮助开发过程,我实现了一个POSIX socket API,它允许服务器或客户端软件创建绑定到Exchange守护进程的虚拟套接字。这一切都很好,但它要求客户端/服务器直接链接到交换软件库。
我最终想要做的是挂钩socket
system call,这样任何程序都可以通过简单地传递正确的域,类型和协议args来轻松地通过交换守护进程进行通信,同时仍然允许交换拥有套接字的生命周期。 BlueZ库(例如creating an RFCOMM server socket)证明了我想要实现的一个例子。
根据socket
调用如何运作的我(有限)知识,我的第一个倾向是将AF_NETLINK
domain的某些方面与SOCK_DGRAM
和NETLINK_USERSOCK
结合使用允许将调用传递给内核模块接口。
此外,我已经研究过使用TUN / TAP和IPTABLES来加入这个功能,但这些似乎都专门用于基于IP的网络流量,交换数据报不是基于IP的。
有没有人有这样一个实现的例子,或者任何人可以分享更多关于在哪里寻求实现这种互操作性的线索?