def nfq_hook_cb(qh, nfmsg, nfad, data): """ int nfq_callback(struct nfq_q_handle *qh, struct nfgenmsg *nfmsg, struct nfq_data *nfad, void *data); """ packet_id = NFQ.cb_get_packet_id(nfad) ip_bytes = NFQ.cb_get_payload(nfad) this_id = data this = ctypes.cast(this_id, ctypes.py_object).value assert isinstance(this, NFQHook) this.send_ip_packet_to_inspector(packet_id, ip_bytes) return 1
def cb(qh, nfmsg, nfad, data): """ int nfq_callback(struct nfq_q_handle *qh, struct nfgenmsg *nfmsg, struct nfq_data *nfad, void *data); """ payload = NFQ.cb_get_payload(nfad) packet_id = NFQ.cb_get_packet_id(nfad) ip = IP(payload) LOG.info("ID %d: %s", packet_id, ip.summary()) sleep(SLEEP_SECS) NFQ.cb_set_verdict(qh, packet_id, NFQ.NF_ACCEPT) return 1