2014-03-24 30 views
2

我正在寻找在用户空间中立即得到通知的方式,当时已经创建了一个新的套接字。我们现有的实现在/ proc/net/tcp和/ proc/net/udp上进行轮询读取,但对于寿命很短的套接字(例如发送数据报和关闭),这不起作用。Linux:如何获得新创建的套接字的通知?

+0

你真的想做什么。我怀疑如果你真的得到了*每个*新套接字的通知,你都会被埋没在噪音中。 Linux使用套接字*很多* ... – twalberg

+0

你的意思是为特定的系列和类型创建套接字对象('struct socket')吗?或者你的意思是建立连接? – Kaz

回答

1

你可以尝试:

  • 审计的socketsocketcall系统调用。如果不使用audit守护程序,则需要编写一些netlink代码。如果你想与试图访问审计系统的其他用户空间共存,你需要为其多播netlink套接字使用3.15内核。
  • 编写一个自定义的linux安全模块,使用您最喜欢的事件机制来通知用户空间一个新的套接字。
  • 使用straceltrace以递归方式进行系统调用或库呼叫跟踪,如果您不介意hackiness,raciness和overhead。
  • 用垫片层替换套接字系统调用。需要编写你自己的内核模块。
  • 使用跟踪器function进行跟踪,并限制跟踪到套接字系统调用或其委托的类型特定的初始化函数的函数。
  • Kprobing前面提到的感兴趣的内核函数,并使用您最喜欢的通知用户空间的机制。
相关问题