#!/usr/bin/env python3 """Minimal NFQUEUE example: accept every packet from a queue.""" import signal import sys try: from netfilterqueue import NetfilterQueue except Exception as exc: print(f"Failed to import netfilterqueue: {exc}", file=sys.stderr) sys.exit(2) nfq = NetfilterQueue() def _handle_packet(packet) -> None: packet.accept() def _stop(_sig, _frame) -> None: raise SystemExit(0) def main() -> int: if len(sys.argv) != 2: print("Usage: hello_nfqueue.py ", file=sys.stderr) return 1 try: qnum = int(sys.argv[1]) except ValueError: print("qnum must be an integer", file=sys.stderr) return 1 signal.signal(signal.SIGINT, _stop) signal.signal(signal.SIGTERM, _stop) nfq.bind(qnum, _handle_packet) try: nfq.run() except KeyboardInterrupt: pass finally: nfq.unbind() return 0 if __name__ == "__main__": raise SystemExit(main())