本文整理汇总了Python中netfilterqueue.NetfilterQueue.get_fd方法的典型用法代码示例。如果您正苦于以下问题:Python NetfilterQueue.get_fd方法的具体用法?Python NetfilterQueue.get_fd怎么用?Python NetfilterQueue.get_fd使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类netfilterqueue.NetfilterQueue
的用法示例。
在下文中一共展示了NetfilterQueue.get_fd方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: Packet_Engin
# 需要导入模块: from netfilterqueue import NetfilterQueue [as 别名]
# 或者: from netfilterqueue.NetfilterQueue import get_fd [as 别名]
class Packet_Engin(object):
def __init__(self, handler, queue=1):
self.evt_base = libevent.Base()
self.setup_NFQ(handler, queue)
self.nfq_evt = self.add_persist_read_event(
self.nfq_fd, self.nfq_event_handler, self)
def __del__(self):
self.nfq_socket.close()
self.nfq.unbind()
def setup_NFQ(self, handler, queue):
self.nfq = NFQ(queue)
self.nfq.bind(queue, handler)
self.nfq_fd = self.nfq.get_fd()
self.nfq_socket = socket.fromfd(self.nfq_fd, \
socket.AF_UNIX, socket.SOCK_STREAM)
self.nfq_socket.setblocking(False)
# returned evt must be kept live until you are done with it
def add_event(self, fd, flag, cb, cb_data, timeout=0):
evt = libevent.Event(self.evt_base, fd, flag, cb, cb_data)
evt.add(timeout)
return evt
def add_persist_read_event(self, fd, cb, cb_data, timeout=0):
return self.add_event(fd, libevent.EV_READ | libevent.EV_PERSIST,
cb, cb_data, timeout)
def add_persist_timer(self, cb, cb_data, timeout):
return self.add_event(-1, libevent.EV_TIMEOUT | libevent.EV_PERSIST,
cb, cb_data, timeout)
@staticmethod
def nfq_event_handler(evt, fd, what, self):
self.nfq.run_socket(self.nfq_socket)
def start(self):
self.evt_base.loop()