#!/usr/bin/env python3 """Minimal NFQUEUE example: add random delay and jitter, but do not drop packets.""" import random import signal import sys import time from netfilterqueue import NetfilterQueue # Demo tuning values. BASE_DELAY_MS = 40 JITTER_MS = 120 nfq = NetfilterQueue() def _handle_packet(packet) -> None: delay_ms = BASE_DELAY_MS + random.uniform(0, JITTER_MS) time.sleep(delay_ms / 1000.0) packet.accept() def _stop(_sig, _frame) -> None: raise SystemExit(0) def main() -> int: if len(sys.argv) != 2: print("Usage: chaos_delay_jitter.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())