diff --git a/README.rst b/README.rst index b665b75..29d58e9 100644 --- a/README.rst +++ b/README.rst @@ -10,7 +10,22 @@ Libnetfilter_queue (the netfilter library, not this module) is part of the `Netf Example ======= -Coming soon... +The following script prints a short description of each packet before accepting it:: + + from netfilterqueue import NetfilterQueue + + class PacketPrinter(NetfilterQueue): + def handle(self, packet): + print packet + packet.accept() + + p = PacketPrinter() + p.bind(1) + p.run() + +To send packets destined for your LAN to the script, type something like:: + + iptables -I INPUT -d 192.168.0.0/24 -j NFQUEUE --queue-num 1 Installation ============ @@ -46,20 +61,53 @@ To install from source:: Setup will use Cython if it is installed, regenerating the .c source from the .pyx before compiling the .so. -Usage -===== +API +=== Coming soon... -Now route packets to the queue:: +Usage +===== - # iptables -I INPUT -p tcp --dport 80 -j NFQUEUE --queue-num 1 +To route packets to the queue:: + + iptables -I -j NFQUEUE --queue-num + +For example:: + + iptables -I INPUT -d 192.168.0.0/24 -j NFQUEUE --queue-num 1 The only special part of the rule is the target. Rules can have any match and can be added to any table or chain. Valid queue numbers are integers from 0 to 65,536 inclusive. +To view libnetfilter_queue stats, refer to /proc/net/netfilter/nfnetlink_queue:: + + cat /proc/net/netfilter/nfnetlink_queue + 1 31621 0 2 4016 0 0 2 1 + +The fields are: + +1. Queue ID + +2. Bound process ID + +3. Number of currently queued packets + +4. Copy mode + +5. Copy size + +6. Number of packets dropped due to reaching max queue size + +7. Number of packets dropped due to netlink socket failure + +8. Total number of packets sent to queue + +9. Libnetfilter_queue internal use + + Limitations =========== diff --git a/netfilterqueue.c b/netfilterqueue.c index b741f36..dfdd885 100644 --- a/netfilterqueue.c +++ b/netfilterqueue.c @@ -1,4 +1,4 @@ -/* Generated by Cython 0.14 on Thu May 12 13:19:22 2011 */ +/* Generated by Cython 0.14.1 on Thu May 12 15:46:34 2011 */ #define PY_SSIZE_T_CLEAN #include "Python.h" @@ -126,14 +126,18 @@ #define PyBytes_Repr PyString_Repr #define PyBytes_Concat PyString_Concat #define PyBytes_ConcatAndDel PyString_ConcatAndDel +#endif + +#if PY_VERSION_HEX < 0x02060000 #define PySet_Check(obj) PyObject_TypeCheck(obj, &PySet_Type) #define PyFrozenSet_Check(obj) PyObject_TypeCheck(obj, &PyFrozenSet_Type) #endif - #ifndef PySet_CheckExact -# define PySet_CheckExact(obj) (Py_TYPE(obj) == &PySet_Type) + #define PySet_CheckExact(obj) (Py_TYPE(obj) == &PySet_Type) #endif +#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type) + #if PY_MAJOR_VERSION >= 3 #define PyIntObject PyLongObject #define PyInt_Type PyLong_Type @@ -152,7 +156,7 @@ #endif #if PY_MAJOR_VERSION >= 3 - #define PyBoolObject PyLongObject + #define PyBoolObject PyLongObject #endif @@ -308,7 +312,7 @@ static const char *__pyx_f[] = { /* Type declarations */ -/* "/root/NetfilterQueue/netfilterqueue.pxd":19 +/* "netfilterqueue.pxd":19 * * # Dummy defines from netinet/in.h: * cdef enum: # <<<<<<<<<<<<<< @@ -347,7 +351,7 @@ enum { __pyx_e_14netfilterqueue_IPPROTO_MAX }; -/* "/root/NetfilterQueue/netfilterqueue.pxd":134 +/* "netfilterqueue.pxd":134 * * # Dummy defines from linux/socket.h: * cdef enum: # Protocol families, same as address families. # <<<<<<<<<<<<<< @@ -360,7 +364,7 @@ enum { __pyx_e_14netfilterqueue_PF_INET6 = 10 }; -/* "/root/NetfilterQueue/netfilterqueue.pxd":142 +/* "netfilterqueue.pxd":142 * * # Dummy defines from linux/netfilter.h * cdef enum: # <<<<<<<<<<<<<< @@ -370,12 +374,12 @@ enum { enum { - /* "/root/NetfilterQueue/netfilterqueue.pxd":149 + /* "netfilterqueue.pxd":149 * NF_REPEAT * NF_STOP * NF_MAX_VERDICT = NF_STOP # <<<<<<<<<<<<<< * - * cdef class NFPacket: + * cdef class Packet: */ __pyx_e_14netfilterqueue_NF_DROP, __pyx_e_14netfilterqueue_NF_ACCEPT, @@ -386,17 +390,17 @@ enum { __pyx_e_14netfilterqueue_NF_MAX_VERDICT = __pyx_e_14netfilterqueue_NF_STOP }; -/* "/root/NetfilterQueue/netfilterqueue.pxd":151 +/* "netfilterqueue.pxd":151 * NF_MAX_VERDICT = NF_STOP * - * cdef class NFPacket: # <<<<<<<<<<<<<< + * cdef class Packet: # <<<<<<<<<<<<<< * cdef nfq_q_handle *_qh * cdef nfq_data *_nfa */ -struct __pyx_obj_14netfilterqueue_NFPacket { +struct __pyx_obj_14netfilterqueue_Packet { PyObject_HEAD - struct __pyx_vtabstruct_14netfilterqueue_NFPacket *__pyx_vtab; + struct __pyx_vtabstruct_14netfilterqueue_Packet *__pyx_vtab; struct nfq_q_handle *_qh; struct nfq_data *_nfa; struct nfqnl_msg_packet_hdr *_hdr; @@ -412,15 +416,15 @@ struct __pyx_obj_14netfilterqueue_NFPacket { struct timeval timestamp; }; -/* "/root/NetfilterQueue/netfilterqueue.pxd":186 +/* "netfilterqueue.pxd":186 * cpdef drop(self) * - * cdef class NFQueue: # <<<<<<<<<<<<<< + * cdef class NetfilterQueue: # <<<<<<<<<<<<<< * cdef nfq_handle *h # Handle to NFQueue library * cdef nfq_q_handle *qh # A handle to the queue */ -struct __pyx_obj_14netfilterqueue_NFQueue { +struct __pyx_obj_14netfilterqueue_NetfilterQueue { PyObject_HEAD struct nfq_handle *h; struct nfq_q_handle *qh; @@ -429,24 +433,24 @@ struct __pyx_obj_14netfilterqueue_NFQueue { }; -/* "/root/NetfilterQueue/netfilterqueue.pyx":37 +/* "netfilterqueue.pyx":23 * return 1 * - * cdef class NFPacket: # <<<<<<<<<<<<<< - * """A packet received from NFQueue.""" + * cdef class Packet: # <<<<<<<<<<<<<< + * """A packet received from NetfilterQueue.""" * def __cinit__(self): */ -struct __pyx_vtabstruct_14netfilterqueue_NFPacket { - PyObject *(*set_nfq_data)(struct __pyx_obj_14netfilterqueue_NFPacket *, struct nfq_q_handle *, struct nfq_data *); - void (*verdict)(struct __pyx_obj_14netfilterqueue_NFPacket *, u_int8_t); - Py_ssize_t (*get_payload_len)(struct __pyx_obj_14netfilterqueue_NFPacket *, int __pyx_skip_dispatch); - double (*get_timestamp)(struct __pyx_obj_14netfilterqueue_NFPacket *, int __pyx_skip_dispatch); - PyObject *(*set_mark)(struct __pyx_obj_14netfilterqueue_NFPacket *, u_int32_t, int __pyx_skip_dispatch); - PyObject *(*accept)(struct __pyx_obj_14netfilterqueue_NFPacket *, int __pyx_skip_dispatch); - PyObject *(*drop)(struct __pyx_obj_14netfilterqueue_NFPacket *, int __pyx_skip_dispatch); +struct __pyx_vtabstruct_14netfilterqueue_Packet { + PyObject *(*set_nfq_data)(struct __pyx_obj_14netfilterqueue_Packet *, struct nfq_q_handle *, struct nfq_data *); + void (*verdict)(struct __pyx_obj_14netfilterqueue_Packet *, u_int8_t); + Py_ssize_t (*get_payload_len)(struct __pyx_obj_14netfilterqueue_Packet *, int __pyx_skip_dispatch); + double (*get_timestamp)(struct __pyx_obj_14netfilterqueue_Packet *, int __pyx_skip_dispatch); + PyObject *(*set_mark)(struct __pyx_obj_14netfilterqueue_Packet *, u_int32_t, int __pyx_skip_dispatch); + PyObject *(*accept)(struct __pyx_obj_14netfilterqueue_Packet *, int __pyx_skip_dispatch); + PyObject *(*drop)(struct __pyx_obj_14netfilterqueue_Packet *, int __pyx_skip_dispatch); }; -static struct __pyx_vtabstruct_14netfilterqueue_NFPacket *__pyx_vtabptr_14netfilterqueue_NFPacket; +static struct __pyx_vtabstruct_14netfilterqueue_Packet *__pyx_vtabptr_14netfilterqueue_Packet; #ifndef CYTHON_REFNANNY #define CYTHON_REFNANNY 0 @@ -502,32 +506,40 @@ static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact, static CYTHON_INLINE int __Pyx_CheckKeywordStrings(PyObject *kwdict, const char* function_name, int kw_allowed); /*proto*/ -static CYTHON_INLINE long __Pyx_NegateNonNeg(long b) { return unlikely(b < 0) ? b : !b; } -static CYTHON_INLINE PyObject* __Pyx_PyBoolOrNull_FromLong(long b) { - return unlikely(b < 0) ? NULL : __Pyx_PyBool_FromLong(b); -} +static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb); /*proto*/ +static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb); /*proto*/ -static CYTHON_INLINE void __Pyx_RaiseNoneIndexingError(void); +static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb); /*proto*/ +static PyObject* __Pyx_PyDict_GetItemDefault(PyObject* d, PyObject* key, PyObject* default_value) { + PyObject* value; #if PY_MAJOR_VERSION >= 3 -static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) { - PyObject *value; - if (unlikely(d == Py_None)) { - __Pyx_RaiseNoneIndexingError(); - return NULL; - } value = PyDict_GetItemWithError(d, key); if (unlikely(!value)) { - if (!PyErr_Occurred()) - PyErr_SetObject(PyExc_KeyError, key); - return NULL; + if (unlikely(PyErr_Occurred())) + return NULL; + value = default_value; } Py_INCREF(value); +#else + if (PyString_CheckExact(key) || PyUnicode_CheckExact(key) || PyInt_CheckExact(key)) { + /* these presumably have safe hash functions */ + value = PyDict_GetItem(d, key); + if (unlikely(!value)) { + value = default_value; + } + Py_INCREF(value); + } else { + PyObject *m; + m = __Pyx_GetAttrString(d, "get"); + if (!m) return NULL; + value = PyObject_CallFunctionObjArgs(m, key, + (default_value == Py_None) ? NULL : default_value, NULL); + Py_DECREF(m); + } +#endif return value; } -#else - #define __Pyx_PyDict_GetItem(d, key) PyObject_GetItem(d, key) -#endif static void __Pyx_RaiseDoubleKeywordsError( const char* func_name, PyObject* kw_name); /*proto*/ @@ -543,28 +555,7 @@ static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_u_int16_t(u_int16_t); static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_u_int8_t(u_int8_t); -static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list); /*proto*/ - -#define __pyx_binding_PyCFunctionType_USED 1 - -typedef struct { - PyCFunctionObject func; -} __pyx_binding_PyCFunctionType_object; - -PyTypeObject __pyx_binding_PyCFunctionType_type; -PyTypeObject *__pyx_binding_PyCFunctionType = NULL; - -PyObject *__pyx_binding_PyCFunctionType_NewEx(PyMethodDef *ml, PyObject *self, PyObject *module); /* proto */ -#define __pyx_binding_PyCFunctionType_New(ml, self) __pyx_binding_PyCFunctionType_NewEx(ml, self, NULL) - -int __pyx_binding_PyCFunctionType_init(void); /* proto */ - -static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *, PyObject *, PyObject *); /*proto*/ - -static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb); /*proto*/ -static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb); /*proto*/ - -static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb); /*proto*/ +static CYTHON_INLINE u_int32_t __Pyx_PyInt_from_py_u_int32_t(PyObject *); static CYTHON_INLINE u_int16_t __Pyx_PyInt_from_py_u_int16_t(PyObject *); @@ -610,8 +601,6 @@ static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject * static void __Pyx_WriteUnraisable(const char *name); /*proto*/ -static CYTHON_INLINE u_int32_t __Pyx_PyInt_from_py_u_int32_t(PyObject *); - static CYTHON_INLINE u_int8_t __Pyx_PyInt_from_py_u_int8_t(PyObject *); static int __Pyx_SetVtable(PyObject *dict, void *vtable); /*proto*/ @@ -621,56 +610,196 @@ static void __Pyx_AddTraceback(const char *funcname); /*proto*/ static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /*proto*/ /* Module declarations from netfilterqueue */ -static PyTypeObject *__pyx_ptype_14netfilterqueue_NFPacket = 0; -static PyTypeObject *__pyx_ptype_14netfilterqueue_NFQueue = 0; +static PyTypeObject *__pyx_ptype_14netfilterqueue_Packet = 0; +static PyTypeObject *__pyx_ptype_14netfilterqueue_NetfilterQueue = 0; static int __pyx_f_14netfilterqueue_global_callback(struct nfq_q_handle *, struct nfgenmsg *, struct nfq_data *, void *); /*proto*/ #define __Pyx_MODULE_NAME "netfilterqueue" -int __pyx_module_is_main_netfilterqueue = 0; +static int __pyx_module_is_main_netfilterqueue = 0; /* Implementation of netfilterqueue */ -static PyObject *__pyx_builtin_filter; static PyObject *__pyx_builtin_OSError; -static char __pyx_k_2[] = "Unknown protocol"; -static char __pyx_k_3[] = "%s packet, %s bytes"; -static char __pyx_k_4[] = "Failed to get payload of packet."; -static char __pyx_k_6[] = "Failed to open NFQueue."; -static char __pyx_k_8[] = "Failed to bind family %s."; -static char __pyx_k_10[] = "Failed to create queue %s."; -static char __pyx_k_11[] = "Failed to set packet copy mode."; +static PyObject *__pyx_builtin_RuntimeWarning; +static char __pyx_k_1[] = "Unknown protocol"; +static char __pyx_k_2[] = "%s packet, %s bytes"; +static char __pyx_k_3[] = "Failed to get payload of packet."; +static char __pyx_k_5[] = "Verdict already given for this packet."; +static char __pyx_k_7[] = "Failed to open NFQueue."; +static char __pyx_k_9[] = "Failed to bind family %s."; +static char __pyx_k_12[] = "Failed to create queue %s."; +static char __pyx_k_13[] = "Failed to set packet copy mode."; +static char __pyx_k_15[] = "DEFAULT_MAX_QUEUELEN"; +static char __pyx_k_16[] = "BBN-RCC-MON"; +static char __pyx_k_17[] = "NVP-II"; +static char __pyx_k_18[] = "DCN-MEAS"; +static char __pyx_k_19[] = "XNS-IDP"; +static char __pyx_k_20[] = "TRUNK-1"; +static char __pyx_k_21[] = "TRUNK-2"; +static char __pyx_k_22[] = "LEAF-1"; +static char __pyx_k_23[] = "LEAF-2"; +static char __pyx_k_24[] = "ISO-TP4"; +static char __pyx_k_25[] = "MFE-NSP"; +static char __pyx_k_26[] = "MERIT-INP"; +static char __pyx_k_27[] = "IDPR-CMTP"; +static char __pyx_k_28[] = "TP++"; +static char __pyx_k_29[] = "IPv6-Route"; +static char __pyx_k_30[] = "IPv6-Frag"; +static char __pyx_k_31[] = "I-NLSP"; +static char __pyx_k_32[] = "IPv6-ICMP"; +static char __pyx_k_33[] = "IPv6-NoNxt"; +static char __pyx_k_34[] = "IPv6-Opts"; +static char __pyx_k_35[] = "any host internal protocol"; +static char __pyx_k_36[] = "any local network"; +static char __pyx_k_37[] = "SAT-EXPAK"; +static char __pyx_k_38[] = "any distributed file system"; +static char __pyx_k_39[] = "SAT-MON"; +static char __pyx_k_40[] = "BR-SAT-MON"; +static char __pyx_k_41[] = "SUN-ND"; +static char __pyx_k_42[] = "WB-MON"; +static char __pyx_k_43[] = "WB-EXPAK"; +static char __pyx_k_44[] = "ISO-IP"; +static char __pyx_k_45[] = "SECURE-VMTP"; +static char __pyx_k_46[] = "NSFNET-IGP"; +static char __pyx_k_47[] = "Sprite-RPC"; +static char __pyx_k_48[] = "AX.25"; +static char __pyx_k_49[] = "SCC-SP"; +static char __pyx_k_50[] = "any private encryption scheme"; +static char __pyx_k_51[] = "A/N"; +static char __pyx_k_52[] = "Compaq-Peer"; +static char __pyx_k_53[] = "IPX-in-IP"; +static char __pyx_k_54[] = "any 0-hop protocol"; +static char __pyx_k_55[] = "RSVP-E2E-IGNORE"; +static char __pyx_k_56[] = "MPLS-in-IP"; static char __pyx_k__h[] = "h"; +static char __pyx_k__AH[] = "AH"; +static char __pyx_k__FC[] = "FC"; +static char __pyx_k__IL[] = "IL"; +static char __pyx_k__IP[] = "IP"; +static char __pyx_k__SM[] = "SM"; +static char __pyx_k__ST[] = "ST"; static char __pyx_k__af[] = "af"; static char __pyx_k__id[] = "id"; static char __pyx_k__qh[] = "qh"; +static char __pyx_k__3PC[] = "3PC"; +static char __pyx_k__BNA[] = "BNA"; +static char __pyx_k__CBT[] = "CBT"; +static char __pyx_k__DDP[] = "DDP"; +static char __pyx_k__DDX[] = "DDX"; +static char __pyx_k__DGP[] = "DGP"; +static char __pyx_k__DSR[] = "DSR"; +static char __pyx_k__EGP[] = "EGP"; +static char __pyx_k__ESP[] = "ESP"; +static char __pyx_k__GGP[] = "GGP"; +static char __pyx_k__GRE[] = "GRE"; +static char __pyx_k__HIP[] = "HIP"; +static char __pyx_k__HMP[] = "HMP"; +static char __pyx_k__IGP[] = "IGP"; +static char __pyx_k__MTP[] = "MTP"; +static char __pyx_k__MUX[] = "MUX"; +static char __pyx_k__PGM[] = "PGM"; +static char __pyx_k__PIM[] = "PIM"; +static char __pyx_k__PRM[] = "PRM"; +static char __pyx_k__PTP[] = "PTP"; +static char __pyx_k__PUP[] = "PUP"; +static char __pyx_k__PVP[] = "PVP"; +static char __pyx_k__QNX[] = "QNX"; +static char __pyx_k__RDP[] = "RDP"; +static char __pyx_k__RVD[] = "RVD"; +static char __pyx_k__SMP[] = "SMP"; +static char __pyx_k__SNP[] = "SNP"; +static char __pyx_k__SPS[] = "SPS"; +static char __pyx_k__SRP[] = "SRP"; +static char __pyx_k__STP[] = "STP"; +static char __pyx_k__TCF[] = "TCF"; +static char __pyx_k__TCP[] = "TCP"; +static char __pyx_k__TTP[] = "TTP"; +static char __pyx_k__UDP[] = "UDP"; +static char __pyx_k__UTI[] = "UTI"; +static char __pyx_k__WSN[] = "WSN"; +static char __pyx_k__XTP[] = "XTP"; static char __pyx_k___qh[] = "_qh"; +static char __pyx_k__get[] = "get"; +static char __pyx_k__ARIS[] = "ARIS"; +static char __pyx_k__CFTP[] = "CFTP"; +static char __pyx_k__CPHB[] = "CPHB"; +static char __pyx_k__CPNX[] = "CPNX"; +static char __pyx_k__CRTP[] = "CRTP"; +static char __pyx_k__DCCP[] = "DCCP"; +static char __pyx_k__FIRE[] = "FIRE"; +static char __pyx_k__GMTP[] = "GMTP"; +static char __pyx_k__IATP[] = "IATP"; +static char __pyx_k__ICMP[] = "ICMP"; +static char __pyx_k__IDPR[] = "IDPR"; +static char __pyx_k__IDRP[] = "IDRP"; +static char __pyx_k__IFMP[] = "IFMP"; +static char __pyx_k__IGMP[] = "IGMP"; +static char __pyx_k__IPCV[] = "IPCV"; +static char __pyx_k__IPIP[] = "IPIP"; +static char __pyx_k__IPLT[] = "IPLT"; +static char __pyx_k__IPPC[] = "IPPC"; +static char __pyx_k__IPv6[] = "IPv6"; +static char __pyx_k__IRTP[] = "IRTP"; +static char __pyx_k__ISIS[] = "ISIS"; +static char __pyx_k__L2TP[] = "L2TP"; +static char __pyx_k__LARP[] = "LARP"; +static char __pyx_k__MICP[] = "MICP"; +static char __pyx_k__NARP[] = "NARP"; +static char __pyx_k__PIPE[] = "PIPE"; +static char __pyx_k__PNNI[] = "PNNI"; +static char __pyx_k__RSVP[] = "RSVP"; +static char __pyx_k__SCPS[] = "SCPS"; +static char __pyx_k__SCTP[] = "SCTP"; +static char __pyx_k__SDRP[] = "SDRP"; +static char __pyx_k__SKIP[] = "SKIP"; +static char __pyx_k__TLSP[] = "TLSP"; +static char __pyx_k__VISA[] = "VISA"; +static char __pyx_k__VMTP[] = "VMTP"; +static char __pyx_k__VRRP[] = "VRRP"; +static char __pyx_k__XNET[] = "XNET"; static char __pyx_k___hdr[] = "_hdr"; static char __pyx_k___nfa[] = "_nfa"; static char __pyx_k__drop[] = "drop"; static char __pyx_k__hook[] = "hook"; static char __pyx_k__mode[] = "mode"; +static char __pyx_k__ARGUS[] = "ARGUS"; +static char __pyx_k__CHAOS[] = "CHAOS"; +static char __pyx_k__CRUDP[] = "CRUDP"; +static char __pyx_k__EIGRP[] = "EIGRP"; +static char __pyx_k__EMCON[] = "EMCON"; +static char __pyx_k__ENCAP[] = "ENCAP"; +static char __pyx_k__SWIPE[] = "SWIPE"; +static char __pyx_k__Shim6[] = "Shim6"; +static char __pyx_k__VINES[] = "VINES"; +static char __pyx_k__manet[] = "manet"; static char __pyx_k__range[] = "range"; +static char __pyx_k__HOPOPT[] = "HOPOPT"; +static char __pyx_k__IPComp[] = "IPComp"; +static char __pyx_k__MOBILE[] = "MOBILE"; +static char __pyx_k__NETBLT[] = "NETBLT"; static char __pyx_k__accept[] = "accept"; -static char __pyx_k__filter[] = "filter"; static char __pyx_k__handle[] = "handle"; static char __pyx_k__maxlen[] = "maxlen"; -static char __pyx_k__socket[] = "socket"; static char __pyx_k__tv_sec[] = "tv_sec"; -static char __pyx_k__AF_INET[] = "AF_INET"; -static char __pyx_k__IPPROTO[] = "IPPROTO"; +static char __pyx_k__ETHERIP[] = "ETHERIP"; static char __pyx_k__OSError[] = "OSError"; -static char __pyx_k__handler[] = "handler"; +static char __pyx_k__OSPFIGP[] = "OSPFIGP"; +static char __pyx_k__UDPLite[] = "UDPLite"; static char __pyx_k__payload[] = "payload"; static char __pyx_k__tv_usec[] = "tv_usec"; static char __pyx_k__verdict[] = "verdict"; +static char __pyx_k__Mobility[] = "Mobility"; +static char __pyx_k__Reserved[] = "Reserved"; +static char __pyx_k__SSCOPMCE[] = "SSCOPMCE"; static char __pyx_k____main__[] = "__main__"; static char __pyx_k____test__[] = "__test__"; static char __pyx_k__protocol[] = "protocol"; static char __pyx_k__set_mark[] = "set_mark"; static char __pyx_k__COPY_META[] = "COPY_META"; static char __pyx_k__COPY_NONE[] = "COPY_NONE"; +static char __pyx_k__KRYPTOLAN[] = "KRYPTOLAN"; +static char __pyx_k__PROTOCOLS[] = "PROTOCOLS"; static char __pyx_k__packet_id[] = "packet_id"; static char __pyx_k__queue_num[] = "queue_num"; static char __pyx_k__timestamp[] = "timestamp"; -static char __pyx_k__startswith[] = "startswith"; static char __pyx_k__COPY_PACKET[] = "COPY_PACKET"; static char __pyx_k___given_mark[] = "_given_mark"; static char __pyx_k__hw_protocol[] = "hw_protocol"; @@ -678,23 +807,166 @@ static char __pyx_k__payload_len[] = "payload_len"; static char __pyx_k___mark_is_set[] = "_mark_is_set"; static char __pyx_k__set_nfq_data[] = "set_nfq_data"; static char __pyx_k__get_timestamp[] = "get_timestamp"; +static char __pyx_k__RuntimeWarning[] = "RuntimeWarning"; static char __pyx_k___given_payload[] = "_given_payload"; -static char __pyx_k__netfilterqueue[] = "netfilterqueue"; static char __pyx_k___verdict_is_set[] = "_verdict_is_set"; static char __pyx_k__get_payload_len[] = "get_payload_len"; -static PyObject *__pyx_kp_s_10; -static PyObject *__pyx_kp_s_11; +static PyObject *__pyx_kp_s_1; +static PyObject *__pyx_kp_s_12; +static PyObject *__pyx_kp_s_13; +static PyObject *__pyx_n_s_15; +static PyObject *__pyx_kp_s_16; +static PyObject *__pyx_kp_s_17; +static PyObject *__pyx_kp_s_18; +static PyObject *__pyx_kp_s_19; static PyObject *__pyx_kp_s_2; +static PyObject *__pyx_kp_s_20; +static PyObject *__pyx_kp_s_21; +static PyObject *__pyx_kp_s_22; +static PyObject *__pyx_kp_s_23; +static PyObject *__pyx_kp_s_24; +static PyObject *__pyx_kp_s_25; +static PyObject *__pyx_kp_s_26; +static PyObject *__pyx_kp_s_27; +static PyObject *__pyx_kp_s_28; +static PyObject *__pyx_kp_s_29; static PyObject *__pyx_kp_s_3; -static PyObject *__pyx_kp_s_4; -static PyObject *__pyx_kp_s_6; -static PyObject *__pyx_kp_s_8; -static PyObject *__pyx_n_s__AF_INET; +static PyObject *__pyx_kp_s_30; +static PyObject *__pyx_kp_s_31; +static PyObject *__pyx_kp_s_32; +static PyObject *__pyx_kp_s_33; +static PyObject *__pyx_kp_s_34; +static PyObject *__pyx_kp_s_35; +static PyObject *__pyx_kp_s_36; +static PyObject *__pyx_kp_s_37; +static PyObject *__pyx_kp_s_38; +static PyObject *__pyx_kp_s_39; +static PyObject *__pyx_kp_s_40; +static PyObject *__pyx_kp_s_41; +static PyObject *__pyx_kp_s_42; +static PyObject *__pyx_kp_s_43; +static PyObject *__pyx_kp_s_44; +static PyObject *__pyx_kp_s_45; +static PyObject *__pyx_kp_s_46; +static PyObject *__pyx_kp_s_47; +static PyObject *__pyx_kp_s_48; +static PyObject *__pyx_kp_s_49; +static PyObject *__pyx_kp_s_5; +static PyObject *__pyx_kp_s_50; +static PyObject *__pyx_kp_s_51; +static PyObject *__pyx_kp_s_52; +static PyObject *__pyx_kp_s_53; +static PyObject *__pyx_kp_s_54; +static PyObject *__pyx_kp_s_55; +static PyObject *__pyx_kp_s_56; +static PyObject *__pyx_kp_s_7; +static PyObject *__pyx_kp_s_9; +static PyObject *__pyx_kp_s__3PC; +static PyObject *__pyx_n_s__AH; +static PyObject *__pyx_n_s__ARGUS; +static PyObject *__pyx_n_s__ARIS; +static PyObject *__pyx_n_s__BNA; +static PyObject *__pyx_n_s__CBT; +static PyObject *__pyx_n_s__CFTP; +static PyObject *__pyx_n_s__CHAOS; static PyObject *__pyx_n_s__COPY_META; static PyObject *__pyx_n_s__COPY_NONE; static PyObject *__pyx_n_s__COPY_PACKET; -static PyObject *__pyx_n_s__IPPROTO; +static PyObject *__pyx_n_s__CPHB; +static PyObject *__pyx_n_s__CPNX; +static PyObject *__pyx_n_s__CRTP; +static PyObject *__pyx_n_s__CRUDP; +static PyObject *__pyx_n_s__DCCP; +static PyObject *__pyx_n_s__DDP; +static PyObject *__pyx_n_s__DDX; +static PyObject *__pyx_n_s__DGP; +static PyObject *__pyx_n_s__DSR; +static PyObject *__pyx_n_s__EGP; +static PyObject *__pyx_n_s__EIGRP; +static PyObject *__pyx_n_s__EMCON; +static PyObject *__pyx_n_s__ENCAP; +static PyObject *__pyx_n_s__ESP; +static PyObject *__pyx_n_s__ETHERIP; +static PyObject *__pyx_n_s__FC; +static PyObject *__pyx_n_s__FIRE; +static PyObject *__pyx_n_s__GGP; +static PyObject *__pyx_n_s__GMTP; +static PyObject *__pyx_n_s__GRE; +static PyObject *__pyx_n_s__HIP; +static PyObject *__pyx_n_s__HMP; +static PyObject *__pyx_n_s__HOPOPT; +static PyObject *__pyx_n_s__IATP; +static PyObject *__pyx_n_s__ICMP; +static PyObject *__pyx_n_s__IDPR; +static PyObject *__pyx_n_s__IDRP; +static PyObject *__pyx_n_s__IFMP; +static PyObject *__pyx_n_s__IGMP; +static PyObject *__pyx_n_s__IGP; +static PyObject *__pyx_n_s__IL; +static PyObject *__pyx_n_s__IP; +static PyObject *__pyx_n_s__IPCV; +static PyObject *__pyx_n_s__IPComp; +static PyObject *__pyx_n_s__IPIP; +static PyObject *__pyx_n_s__IPLT; +static PyObject *__pyx_n_s__IPPC; +static PyObject *__pyx_n_s__IPv6; +static PyObject *__pyx_n_s__IRTP; +static PyObject *__pyx_n_s__ISIS; +static PyObject *__pyx_n_s__KRYPTOLAN; +static PyObject *__pyx_n_s__L2TP; +static PyObject *__pyx_n_s__LARP; +static PyObject *__pyx_n_s__MICP; +static PyObject *__pyx_n_s__MOBILE; +static PyObject *__pyx_n_s__MTP; +static PyObject *__pyx_n_s__MUX; +static PyObject *__pyx_n_s__Mobility; +static PyObject *__pyx_n_s__NARP; +static PyObject *__pyx_n_s__NETBLT; static PyObject *__pyx_n_s__OSError; +static PyObject *__pyx_n_s__OSPFIGP; +static PyObject *__pyx_n_s__PGM; +static PyObject *__pyx_n_s__PIM; +static PyObject *__pyx_n_s__PIPE; +static PyObject *__pyx_n_s__PNNI; +static PyObject *__pyx_n_s__PRM; +static PyObject *__pyx_n_s__PROTOCOLS; +static PyObject *__pyx_n_s__PTP; +static PyObject *__pyx_n_s__PUP; +static PyObject *__pyx_n_s__PVP; +static PyObject *__pyx_n_s__QNX; +static PyObject *__pyx_n_s__RDP; +static PyObject *__pyx_n_s__RSVP; +static PyObject *__pyx_n_s__RVD; +static PyObject *__pyx_n_s__Reserved; +static PyObject *__pyx_n_s__RuntimeWarning; +static PyObject *__pyx_n_s__SCPS; +static PyObject *__pyx_n_s__SCTP; +static PyObject *__pyx_n_s__SDRP; +static PyObject *__pyx_n_s__SKIP; +static PyObject *__pyx_n_s__SM; +static PyObject *__pyx_n_s__SMP; +static PyObject *__pyx_n_s__SNP; +static PyObject *__pyx_n_s__SPS; +static PyObject *__pyx_n_s__SRP; +static PyObject *__pyx_n_s__SSCOPMCE; +static PyObject *__pyx_n_s__ST; +static PyObject *__pyx_n_s__STP; +static PyObject *__pyx_n_s__SWIPE; +static PyObject *__pyx_n_s__Shim6; +static PyObject *__pyx_n_s__TCF; +static PyObject *__pyx_n_s__TCP; +static PyObject *__pyx_n_s__TLSP; +static PyObject *__pyx_n_s__TTP; +static PyObject *__pyx_n_s__UDP; +static PyObject *__pyx_n_s__UDPLite; +static PyObject *__pyx_n_s__UTI; +static PyObject *__pyx_n_s__VINES; +static PyObject *__pyx_n_s__VISA; +static PyObject *__pyx_n_s__VMTP; +static PyObject *__pyx_n_s__VRRP; +static PyObject *__pyx_n_s__WSN; +static PyObject *__pyx_n_s__XNET; +static PyObject *__pyx_n_s__XTP; static PyObject *__pyx_n_s____main__; static PyObject *__pyx_n_s____test__; static PyObject *__pyx_n_s___given_mark; @@ -707,18 +979,17 @@ static PyObject *__pyx_n_s___verdict_is_set; static PyObject *__pyx_n_s__accept; static PyObject *__pyx_n_s__af; static PyObject *__pyx_n_s__drop; -static PyObject *__pyx_n_s__filter; +static PyObject *__pyx_n_s__get; static PyObject *__pyx_n_s__get_payload_len; static PyObject *__pyx_n_s__get_timestamp; static PyObject *__pyx_n_s__h; static PyObject *__pyx_n_s__handle; -static PyObject *__pyx_n_s__handler; static PyObject *__pyx_n_s__hook; static PyObject *__pyx_n_s__hw_protocol; static PyObject *__pyx_n_s__id; +static PyObject *__pyx_n_s__manet; static PyObject *__pyx_n_s__maxlen; static PyObject *__pyx_n_s__mode; -static PyObject *__pyx_n_s__netfilterqueue; static PyObject *__pyx_n_s__packet_id; static PyObject *__pyx_n_s__payload; static PyObject *__pyx_n_s__payload_len; @@ -728,31 +999,170 @@ static PyObject *__pyx_n_s__queue_num; static PyObject *__pyx_n_s__range; static PyObject *__pyx_n_s__set_mark; static PyObject *__pyx_n_s__set_nfq_data; -static PyObject *__pyx_n_s__socket; -static PyObject *__pyx_n_s__startswith; static PyObject *__pyx_n_s__timestamp; static PyObject *__pyx_n_s__tv_sec; static PyObject *__pyx_n_s__tv_usec; static PyObject *__pyx_n_s__verdict; +static PyObject *__pyx_int_0; static PyObject *__pyx_int_1; static PyObject *__pyx_int_2; static PyObject *__pyx_int_3; -static u_int8_t __pyx_k_9; -static PyObject *__pyx_k_tuple_1; -static PyObject *__pyx_k_tuple_5; -static PyObject *__pyx_k_tuple_7; -static PyObject *__pyx_k_tuple_12; +static PyObject *__pyx_int_4; +static PyObject *__pyx_int_5; +static PyObject *__pyx_int_6; +static PyObject *__pyx_int_7; +static PyObject *__pyx_int_8; +static PyObject *__pyx_int_9; +static PyObject *__pyx_int_10; +static PyObject *__pyx_int_11; +static PyObject *__pyx_int_12; +static PyObject *__pyx_int_13; +static PyObject *__pyx_int_14; +static PyObject *__pyx_int_15; +static PyObject *__pyx_int_16; +static PyObject *__pyx_int_17; +static PyObject *__pyx_int_18; +static PyObject *__pyx_int_19; +static PyObject *__pyx_int_20; +static PyObject *__pyx_int_21; +static PyObject *__pyx_int_22; +static PyObject *__pyx_int_23; +static PyObject *__pyx_int_24; +static PyObject *__pyx_int_25; +static PyObject *__pyx_int_26; +static PyObject *__pyx_int_27; +static PyObject *__pyx_int_28; +static PyObject *__pyx_int_29; +static PyObject *__pyx_int_30; +static PyObject *__pyx_int_31; +static PyObject *__pyx_int_32; +static PyObject *__pyx_int_33; +static PyObject *__pyx_int_34; +static PyObject *__pyx_int_35; +static PyObject *__pyx_int_36; +static PyObject *__pyx_int_37; +static PyObject *__pyx_int_38; +static PyObject *__pyx_int_39; +static PyObject *__pyx_int_40; +static PyObject *__pyx_int_41; +static PyObject *__pyx_int_42; +static PyObject *__pyx_int_43; +static PyObject *__pyx_int_44; +static PyObject *__pyx_int_45; +static PyObject *__pyx_int_46; +static PyObject *__pyx_int_47; +static PyObject *__pyx_int_48; +static PyObject *__pyx_int_49; +static PyObject *__pyx_int_50; +static PyObject *__pyx_int_51; +static PyObject *__pyx_int_52; +static PyObject *__pyx_int_53; +static PyObject *__pyx_int_54; +static PyObject *__pyx_int_55; +static PyObject *__pyx_int_56; +static PyObject *__pyx_int_57; +static PyObject *__pyx_int_58; +static PyObject *__pyx_int_59; +static PyObject *__pyx_int_60; +static PyObject *__pyx_int_61; +static PyObject *__pyx_int_62; +static PyObject *__pyx_int_63; +static PyObject *__pyx_int_64; +static PyObject *__pyx_int_65; +static PyObject *__pyx_int_66; +static PyObject *__pyx_int_67; +static PyObject *__pyx_int_68; +static PyObject *__pyx_int_69; +static PyObject *__pyx_int_70; +static PyObject *__pyx_int_71; +static PyObject *__pyx_int_72; +static PyObject *__pyx_int_73; +static PyObject *__pyx_int_74; +static PyObject *__pyx_int_75; +static PyObject *__pyx_int_76; +static PyObject *__pyx_int_77; +static PyObject *__pyx_int_78; +static PyObject *__pyx_int_79; +static PyObject *__pyx_int_80; +static PyObject *__pyx_int_81; +static PyObject *__pyx_int_82; +static PyObject *__pyx_int_83; +static PyObject *__pyx_int_84; +static PyObject *__pyx_int_85; +static PyObject *__pyx_int_86; +static PyObject *__pyx_int_87; +static PyObject *__pyx_int_88; +static PyObject *__pyx_int_89; +static PyObject *__pyx_int_90; +static PyObject *__pyx_int_91; +static PyObject *__pyx_int_92; +static PyObject *__pyx_int_93; +static PyObject *__pyx_int_94; +static PyObject *__pyx_int_95; +static PyObject *__pyx_int_96; +static PyObject *__pyx_int_97; +static PyObject *__pyx_int_98; +static PyObject *__pyx_int_99; +static PyObject *__pyx_int_100; +static PyObject *__pyx_int_101; +static PyObject *__pyx_int_102; +static PyObject *__pyx_int_103; +static PyObject *__pyx_int_104; +static PyObject *__pyx_int_105; +static PyObject *__pyx_int_106; +static PyObject *__pyx_int_107; +static PyObject *__pyx_int_108; +static PyObject *__pyx_int_109; +static PyObject *__pyx_int_110; +static PyObject *__pyx_int_111; +static PyObject *__pyx_int_112; +static PyObject *__pyx_int_113; +static PyObject *__pyx_int_114; +static PyObject *__pyx_int_115; +static PyObject *__pyx_int_116; +static PyObject *__pyx_int_117; +static PyObject *__pyx_int_118; +static PyObject *__pyx_int_119; +static PyObject *__pyx_int_120; +static PyObject *__pyx_int_121; +static PyObject *__pyx_int_122; +static PyObject *__pyx_int_123; +static PyObject *__pyx_int_124; +static PyObject *__pyx_int_125; +static PyObject *__pyx_int_126; +static PyObject *__pyx_int_127; +static PyObject *__pyx_int_128; +static PyObject *__pyx_int_129; +static PyObject *__pyx_int_130; +static PyObject *__pyx_int_131; +static PyObject *__pyx_int_132; +static PyObject *__pyx_int_133; +static PyObject *__pyx_int_134; +static PyObject *__pyx_int_135; +static PyObject *__pyx_int_136; +static PyObject *__pyx_int_137; +static PyObject *__pyx_int_138; +static PyObject *__pyx_int_139; +static PyObject *__pyx_int_140; +static PyObject *__pyx_int_255; +static PyObject *__pyx_int_1024; +static u_int32_t __pyx_k_10; +static u_int8_t __pyx_k_11; +static PyObject *__pyx_k_tuple_4; +static PyObject *__pyx_k_tuple_6; +static PyObject *__pyx_k_tuple_8; +static PyObject *__pyx_k_tuple_14; -/* "/root/NetfilterQueue/netfilterqueue.pyx":15 +/* "netfilterqueue.pyx":15 * DEF MaxCopySize = BufferSize - MetadataSize * * cdef int global_callback(nfq_q_handle *qh, nfgenmsg *nfmsg, # <<<<<<<<<<<<<< * nfq_data *nfa, void *data) with gil: - * """ + * """Create an Packet and pass it to appropriate Python/Cython callback.""" */ static int __pyx_f_14netfilterqueue_global_callback(struct nfq_q_handle *__pyx_v_qh, struct nfgenmsg *__pyx_v_nfmsg, struct nfq_data *__pyx_v_nfa, void *__pyx_v_data) { - struct __pyx_obj_14netfilterqueue_NFPacket *__pyx_v_packet; + struct __pyx_obj_14netfilterqueue_Packet *__pyx_v_packet; int __pyx_r; PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; @@ -761,58 +1171,58 @@ static int __pyx_f_14netfilterqueue_global_callback(struct nfq_q_handle *__pyx_ PyGILState_STATE _save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("global_callback"); - __pyx_v_packet = ((struct __pyx_obj_14netfilterqueue_NFPacket *)Py_None); __Pyx_INCREF(Py_None); + __pyx_v_packet = ((struct __pyx_obj_14netfilterqueue_Packet *)Py_None); __Pyx_INCREF(Py_None); - /* "/root/NetfilterQueue/netfilterqueue.pyx":32 - * # NULL # TODO: adapt to use self._given_payload - * # ) - * packet = NFPacket() # <<<<<<<<<<<<<< + /* "netfilterqueue.pyx":18 + * nfq_data *nfa, void *data) with gil: + * """Create an Packet and pass it to appropriate Python/Cython callback.""" + * packet = Packet() # <<<<<<<<<<<<<< * packet.set_nfq_data(qh, nfa) - * (data).handle(packet) + * (data).handle(packet) */ - __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_14netfilterqueue_NFPacket)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_14netfilterqueue_Packet)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(((PyObject *)__pyx_v_packet)); - __pyx_v_packet = ((struct __pyx_obj_14netfilterqueue_NFPacket *)__pyx_t_1); + __pyx_v_packet = ((struct __pyx_obj_14netfilterqueue_Packet *)__pyx_t_1); __pyx_t_1 = 0; - /* "/root/NetfilterQueue/netfilterqueue.pyx":33 - * # ) - * packet = NFPacket() + /* "netfilterqueue.pyx":19 + * """Create an Packet and pass it to appropriate Python/Cython callback.""" + * packet = Packet() * packet.set_nfq_data(qh, nfa) # <<<<<<<<<<<<<< - * (data).handle(packet) + * (data).handle(packet) * return 1 */ - __pyx_t_1 = ((struct __pyx_vtabstruct_14netfilterqueue_NFPacket *)__pyx_v_packet->__pyx_vtab)->set_nfq_data(__pyx_v_packet, __pyx_v_qh, __pyx_v_nfa); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = ((struct __pyx_vtabstruct_14netfilterqueue_Packet *)__pyx_v_packet->__pyx_vtab)->set_nfq_data(__pyx_v_packet, __pyx_v_qh, __pyx_v_nfa); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "/root/NetfilterQueue/netfilterqueue.pyx":34 - * packet = NFPacket() + /* "netfilterqueue.pyx":20 + * packet = Packet() * packet.set_nfq_data(qh, nfa) - * (data).handle(packet) # <<<<<<<<<<<<<< + * (data).handle(packet) # <<<<<<<<<<<<<< * return 1 * */ - __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_data), __pyx_n_s__handle); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_data), __pyx_n_s__handle); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_2)); __Pyx_INCREF(((PyObject *)__pyx_v_packet)); PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_packet)); __Pyx_GIVEREF(((PyObject *)__pyx_v_packet)); - __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "/root/NetfilterQueue/netfilterqueue.pyx":35 + /* "netfilterqueue.pyx":21 * packet.set_nfq_data(qh, nfa) - * (data).handle(packet) + * (data).handle(packet) * return 1 # <<<<<<<<<<<<<< * - * cdef class NFPacket: + * cdef class Packet: */ __pyx_r = 1; goto __pyx_L0; @@ -834,78 +1244,135 @@ static int __pyx_f_14netfilterqueue_global_callback(struct nfq_q_handle *__pyx_ return __pyx_r; } -/* "/root/NetfilterQueue/netfilterqueue.pyx":39 - * cdef class NFPacket: - * """A packet received from NFQueue.""" +/* "netfilterqueue.pyx":25 + * cdef class Packet: + * """A packet received from NetfilterQueue.""" * def __cinit__(self): # <<<<<<<<<<<<<< * self._verdict_is_set = False * self._mark_is_set = False */ -static int __pyx_pf_14netfilterqueue_8NFPacket_0__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pf_14netfilterqueue_8NFPacket_0__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { +static int __pyx_pf_14netfilterqueue_6Packet___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static int __pyx_pf_14netfilterqueue_6Packet___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { int __pyx_r; __Pyx_RefNannySetupContext("__cinit__"); if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) { __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;} if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1; - /* "/root/NetfilterQueue/netfilterqueue.pyx":40 - * """A packet received from NFQueue.""" + /* "netfilterqueue.pyx":26 + * """A packet received from NetfilterQueue.""" * def __cinit__(self): * self._verdict_is_set = False # <<<<<<<<<<<<<< * self._mark_is_set = False * self._given_payload = NULL */ - ((struct __pyx_obj_14netfilterqueue_NFPacket *)__pyx_v_self)->_verdict_is_set = 0; + ((struct __pyx_obj_14netfilterqueue_Packet *)__pyx_v_self)->_verdict_is_set = 0; - /* "/root/NetfilterQueue/netfilterqueue.pyx":41 + /* "netfilterqueue.pyx":27 * def __cinit__(self): * self._verdict_is_set = False * self._mark_is_set = False # <<<<<<<<<<<<<< * self._given_payload = NULL * */ - ((struct __pyx_obj_14netfilterqueue_NFPacket *)__pyx_v_self)->_mark_is_set = 0; + ((struct __pyx_obj_14netfilterqueue_Packet *)__pyx_v_self)->_mark_is_set = 0; - /* "/root/NetfilterQueue/netfilterqueue.pyx":42 + /* "netfilterqueue.pyx":28 * self._verdict_is_set = False * self._mark_is_set = False * self._given_payload = NULL # <<<<<<<<<<<<<< * * def __str__(self): */ - ((struct __pyx_obj_14netfilterqueue_NFPacket *)__pyx_v_self)->_given_payload = NULL; + ((struct __pyx_obj_14netfilterqueue_Packet *)__pyx_v_self)->_given_payload = NULL; __pyx_r = 0; __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "/root/NetfilterQueue/netfilterqueue.pyx":47 +/* "netfilterqueue.pyx":30 + * self._given_payload = NULL + * + * def __str__(self): # <<<<<<<<<<<<<< * cdef iphdr *hdr = self.payload - * protocol = "Unknown protocol" - * for name in filter(lambda x: x.startswith("IPPROTO"), dir(socket)): # <<<<<<<<<<<<<< - * if getattr(socket, name) == hdr.protocol: - * protocol = name[8:] + * protocol = PROTOCOLS.get(hdr.protocol, "Unknown protocol") */ -static PyObject *__pyx_lambda_funcdef14netfilterqueue_7__str___lambda1(PyObject *__pyx_self, PyObject *__pyx_v_x); /*proto*/ -static PyMethodDef __pyx_lambda_methdef14netfilterqueue_7__str___lambda1 = {__Pyx_NAMESTR("__pyx_lambda_funcdef14netfilterqueue_7__str___lambda1"), (PyCFunction)__pyx_lambda_funcdef14netfilterqueue_7__str___lambda1, METH_O, __Pyx_DOCSTR(0)}; -static PyObject *__pyx_lambda_funcdef14netfilterqueue_7__str___lambda1(PyObject *__pyx_self, PyObject *__pyx_v_x) { +static PyObject *__pyx_pf_14netfilterqueue_6Packet_1__str__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pf_14netfilterqueue_6Packet_1__str__(PyObject *__pyx_v_self) { + struct iphdr *__pyx_v_hdr; + PyObject *__pyx_v_protocol; PyObject *__pyx_r = NULL; PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; - __Pyx_RefNannySetupContext("__pyx_lambda_funcdef14netfilterqueue_7__str___lambda1"); - __pyx_self = __pyx_self; - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyObject_GetAttr(__pyx_v_x, __pyx_n_s__startswith); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + PyObject *__pyx_t_3 = NULL; + __Pyx_RefNannySetupContext("__str__"); + __pyx_v_protocol = Py_None; __Pyx_INCREF(Py_None); + + /* "netfilterqueue.pyx":31 + * + * def __str__(self): + * cdef iphdr *hdr = self.payload # <<<<<<<<<<<<<< + * protocol = PROTOCOLS.get(hdr.protocol, "Unknown protocol") + * return "%s packet, %s bytes" % (protocol, self.payload_len) + */ + __pyx_v_hdr = ((struct iphdr *)((struct __pyx_obj_14netfilterqueue_Packet *)__pyx_v_self)->payload); + + /* "netfilterqueue.pyx":32 + * def __str__(self): + * cdef iphdr *hdr = self.payload + * protocol = PROTOCOLS.get(hdr.protocol, "Unknown protocol") # <<<<<<<<<<<<<< + * return "%s packet, %s bytes" % (protocol, self.payload_len) + * + */ + __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__PROTOCOLS); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_k_tuple_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__get); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; + __pyx_t_1 = __Pyx_PyInt_to_py_u_int8_t(__pyx_v_hdr->protocol); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(((PyObject *)__pyx_t_3)); + PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_INCREF(((PyObject *)__pyx_kp_s_1)); + PyTuple_SET_ITEM(__pyx_t_3, 1, ((PyObject *)__pyx_kp_s_1)); + __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_1)); + __pyx_t_1 = 0; + __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_v_protocol); + __pyx_v_protocol = __pyx_t_1; + __pyx_t_1 = 0; + + /* "netfilterqueue.pyx":33 + * cdef iphdr *hdr = self.payload + * protocol = PROTOCOLS.get(hdr.protocol, "Unknown protocol") + * return "%s packet, %s bytes" % (protocol, self.payload_len) # <<<<<<<<<<<<<< + * + * cdef set_nfq_data(self, nfq_q_handle *qh, nfq_data *nfa): + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = PyInt_FromSsize_t(((struct __pyx_obj_14netfilterqueue_Packet *)__pyx_v_self)->payload_len); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(((PyObject *)__pyx_t_3)); + __Pyx_INCREF(__pyx_v_protocol); + PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_protocol); + __Pyx_GIVEREF(__pyx_v_protocol); + PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __pyx_t_1 = 0; + __pyx_t_1 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_2), ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(((PyObject *)__pyx_t_1)); + __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; + __pyx_r = ((PyObject *)__pyx_t_1); + __pyx_t_1 = 0; goto __pyx_L0; __pyx_r = Py_None; __Pyx_INCREF(Py_None); @@ -913,192 +1380,17 @@ static PyObject *__pyx_lambda_funcdef14netfilterqueue_7__str___lambda1(PyObject __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("netfilterqueue.__str__.lambda1"); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "/root/NetfilterQueue/netfilterqueue.pyx":44 - * self._given_payload = NULL - * - * def __str__(self): # <<<<<<<<<<<<<< - * cdef iphdr *hdr = self.payload - * protocol = "Unknown protocol" - */ - -static PyObject *__pyx_pf_14netfilterqueue_8NFPacket_1__str__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pf_14netfilterqueue_8NFPacket_1__str__(PyObject *__pyx_v_self) { - struct iphdr *__pyx_v_hdr; - PyObject *__pyx_v_protocol; - PyObject *__pyx_v_name; - PyObject *__pyx_r = NULL; - Py_ssize_t __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - int __pyx_t_6; - __Pyx_RefNannySetupContext("__str__"); - __pyx_v_protocol = Py_None; __Pyx_INCREF(Py_None); - __pyx_v_name = Py_None; __Pyx_INCREF(Py_None); - - /* "/root/NetfilterQueue/netfilterqueue.pyx":45 - * - * def __str__(self): - * cdef iphdr *hdr = self.payload # <<<<<<<<<<<<<< - * protocol = "Unknown protocol" - * for name in filter(lambda x: x.startswith("IPPROTO"), dir(socket)): - */ - __pyx_v_hdr = ((struct iphdr *)((struct __pyx_obj_14netfilterqueue_NFPacket *)__pyx_v_self)->payload); - - /* "/root/NetfilterQueue/netfilterqueue.pyx":46 - * def __str__(self): - * cdef iphdr *hdr = self.payload - * protocol = "Unknown protocol" # <<<<<<<<<<<<<< - * for name in filter(lambda x: x.startswith("IPPROTO"), dir(socket)): - * if getattr(socket, name) == hdr.protocol: - */ - __Pyx_INCREF(((PyObject *)__pyx_kp_s_2)); - __Pyx_DECREF(__pyx_v_protocol); - __pyx_v_protocol = ((PyObject *)__pyx_kp_s_2); - - /* "/root/NetfilterQueue/netfilterqueue.pyx":47 - * cdef iphdr *hdr = self.payload - * protocol = "Unknown protocol" - * for name in filter(lambda x: x.startswith("IPPROTO"), dir(socket)): # <<<<<<<<<<<<<< - * if getattr(socket, name) == hdr.protocol: - * protocol = name[8:] - */ - __pyx_t_2 = __pyx_binding_PyCFunctionType_NewEx(&__pyx_lambda_methdef14netfilterqueue_7__str___lambda1, NULL, __pyx_n_s__netfilterqueue); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__socket); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_Dir(__pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(((PyObject *)__pyx_t_3)); - PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_4); - __Pyx_GIVEREF(__pyx_t_4); - __pyx_t_2 = 0; - __pyx_t_4 = 0; - __pyx_t_4 = PyObject_Call(__pyx_builtin_filter, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; - if (PyList_CheckExact(__pyx_t_4) || PyTuple_CheckExact(__pyx_t_4)) { - __pyx_t_1 = 0; __pyx_t_3 = __pyx_t_4; __Pyx_INCREF(__pyx_t_3); - } else { - __pyx_t_1 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - } - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - for (;;) { - if (likely(PyList_CheckExact(__pyx_t_3))) { - if (__pyx_t_1 >= PyList_GET_SIZE(__pyx_t_3)) break; - __pyx_t_4 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_1); __Pyx_INCREF(__pyx_t_4); __pyx_t_1++; - } else if (likely(PyTuple_CheckExact(__pyx_t_3))) { - if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_3)) break; - __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_1); __Pyx_INCREF(__pyx_t_4); __pyx_t_1++; - } else { - __pyx_t_4 = PyIter_Next(__pyx_t_3); - if (!__pyx_t_4) { - if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - break; - } - __Pyx_GOTREF(__pyx_t_4); - } - __Pyx_DECREF(__pyx_v_name); - __pyx_v_name = __pyx_t_4; - __pyx_t_4 = 0; - - /* "/root/NetfilterQueue/netfilterqueue.pyx":48 - * protocol = "Unknown protocol" - * for name in filter(lambda x: x.startswith("IPPROTO"), dir(socket)): - * if getattr(socket, name) == hdr.protocol: # <<<<<<<<<<<<<< - * protocol = name[8:] - * return "%s packet, %s bytes" % (protocol, self.payload_len) - */ - __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__socket); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_2 = PyObject_GetAttr(__pyx_t_4, __pyx_v_name); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyInt_to_py_u_int8_t(__pyx_v_hdr->protocol); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = PyObject_RichCompare(__pyx_t_2, __pyx_t_4, Py_EQ); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (__pyx_t_6) { - - /* "/root/NetfilterQueue/netfilterqueue.pyx":49 - * for name in filter(lambda x: x.startswith("IPPROTO"), dir(socket)): - * if getattr(socket, name) == hdr.protocol: - * protocol = name[8:] # <<<<<<<<<<<<<< - * return "%s packet, %s bytes" % (protocol, self.payload_len) - * - */ - __pyx_t_5 = __Pyx_PySequence_GetSlice(__pyx_v_name, 8, PY_SSIZE_T_MAX); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_v_protocol); - __pyx_v_protocol = __pyx_t_5; - __pyx_t_5 = 0; - goto __pyx_L7; - } - __pyx_L7:; - } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "/root/NetfilterQueue/netfilterqueue.pyx":50 - * if getattr(socket, name) == hdr.protocol: - * protocol = name[8:] - * return "%s packet, %s bytes" % (protocol, self.payload_len) # <<<<<<<<<<<<<< - * - * cdef set_nfq_data(self, nfq_q_handle *qh, nfq_data *nfa): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_3 = PyInt_FromSsize_t(((struct __pyx_obj_14netfilterqueue_NFPacket *)__pyx_v_self)->payload_len); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(((PyObject *)__pyx_t_5)); - __Pyx_INCREF(__pyx_v_protocol); - PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_protocol); - __Pyx_GIVEREF(__pyx_v_protocol); - PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_3); - __Pyx_GIVEREF(__pyx_t_3); - __pyx_t_3 = 0; - __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_3), ((PyObject *)__pyx_t_5)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(((PyObject *)__pyx_t_3)); - __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0; - __pyx_r = ((PyObject *)__pyx_t_3); - __pyx_t_3 = 0; - goto __pyx_L0; - - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("netfilterqueue.NFPacket.__str__"); + __Pyx_AddTraceback("netfilterqueue.Packet.__str__"); __pyx_r = NULL; __pyx_L0:; __Pyx_DECREF(__pyx_v_protocol); - __Pyx_DECREF(__pyx_v_name); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "/root/NetfilterQueue/netfilterqueue.pyx":52 +/* "netfilterqueue.pyx":35 * return "%s packet, %s bytes" % (protocol, self.payload_len) * * cdef set_nfq_data(self, nfq_q_handle *qh, nfq_data *nfa): # <<<<<<<<<<<<<< @@ -1106,13 +1398,13 @@ static PyObject *__pyx_pf_14netfilterqueue_8NFPacket_1__str__(PyObject *__pyx_v_ * Assign a packet from NFQ to this object. Parse the header and load */ -static PyObject *__pyx_f_14netfilterqueue_8NFPacket_set_nfq_data(struct __pyx_obj_14netfilterqueue_NFPacket *__pyx_v_self, struct nfq_q_handle *__pyx_v_qh, struct nfq_data *__pyx_v_nfa) { +static PyObject *__pyx_f_14netfilterqueue_6Packet_set_nfq_data(struct __pyx_obj_14netfilterqueue_Packet *__pyx_v_self, struct nfq_q_handle *__pyx_v_qh, struct nfq_data *__pyx_v_nfa) { PyObject *__pyx_r = NULL; int __pyx_t_1; PyObject *__pyx_t_2 = NULL; __Pyx_RefNannySetupContext("set_nfq_data"); - /* "/root/NetfilterQueue/netfilterqueue.pyx":57 + /* "netfilterqueue.pyx":40 * local values. * """ * self._qh = qh # <<<<<<<<<<<<<< @@ -1121,7 +1413,7 @@ static PyObject *__pyx_f_14netfilterqueue_8NFPacket_set_nfq_data(struct __pyx_o */ __pyx_v_self->_qh = __pyx_v_qh; - /* "/root/NetfilterQueue/netfilterqueue.pyx":58 + /* "netfilterqueue.pyx":41 * """ * self._qh = qh * self._nfa = nfa # <<<<<<<<<<<<<< @@ -1130,7 +1422,7 @@ static PyObject *__pyx_f_14netfilterqueue_8NFPacket_set_nfq_data(struct __pyx_o */ __pyx_v_self->_nfa = __pyx_v_nfa; - /* "/root/NetfilterQueue/netfilterqueue.pyx":59 + /* "netfilterqueue.pyx":42 * self._qh = qh * self._nfa = nfa * self._hdr = nfq_get_msg_packet_hdr(nfa) # <<<<<<<<<<<<<< @@ -1139,7 +1431,7 @@ static PyObject *__pyx_f_14netfilterqueue_8NFPacket_set_nfq_data(struct __pyx_o */ __pyx_v_self->_hdr = nfq_get_msg_packet_hdr(__pyx_v_nfa); - /* "/root/NetfilterQueue/netfilterqueue.pyx":61 + /* "netfilterqueue.pyx":44 * self._hdr = nfq_get_msg_packet_hdr(nfa) * * self.id = ntohl(self._hdr.packet_id) # <<<<<<<<<<<<<< @@ -1148,7 +1440,7 @@ static PyObject *__pyx_f_14netfilterqueue_8NFPacket_set_nfq_data(struct __pyx_o */ __pyx_v_self->id = ntohl(__pyx_v_self->_hdr->packet_id); - /* "/root/NetfilterQueue/netfilterqueue.pyx":62 + /* "netfilterqueue.pyx":45 * * self.id = ntohl(self._hdr.packet_id) * self.hw_protocol = ntohs(self._hdr.hw_protocol) # <<<<<<<<<<<<<< @@ -1157,7 +1449,7 @@ static PyObject *__pyx_f_14netfilterqueue_8NFPacket_set_nfq_data(struct __pyx_o */ __pyx_v_self->hw_protocol = ntohs(__pyx_v_self->_hdr->hw_protocol); - /* "/root/NetfilterQueue/netfilterqueue.pyx":63 + /* "netfilterqueue.pyx":46 * self.id = ntohl(self._hdr.packet_id) * self.hw_protocol = ntohs(self._hdr.hw_protocol) * self.hook = self._hdr.hook # <<<<<<<<<<<<<< @@ -1166,7 +1458,7 @@ static PyObject *__pyx_f_14netfilterqueue_8NFPacket_set_nfq_data(struct __pyx_o */ __pyx_v_self->hook = __pyx_v_self->_hdr->hook; - /* "/root/NetfilterQueue/netfilterqueue.pyx":65 + /* "netfilterqueue.pyx":48 * self.hook = self._hdr.hook * * self.payload_len = nfq_get_payload(self._nfa, &self.payload) # <<<<<<<<<<<<<< @@ -1175,7 +1467,7 @@ static PyObject *__pyx_f_14netfilterqueue_8NFPacket_set_nfq_data(struct __pyx_o */ __pyx_v_self->payload_len = nfq_get_payload(__pyx_v_self->_nfa, (&__pyx_v_self->payload)); - /* "/root/NetfilterQueue/netfilterqueue.pyx":66 + /* "netfilterqueue.pyx":49 * * self.payload_len = nfq_get_payload(self._nfa, &self.payload) * if self.payload_len < 0: # <<<<<<<<<<<<<< @@ -1185,23 +1477,23 @@ static PyObject *__pyx_f_14netfilterqueue_8NFPacket_set_nfq_data(struct __pyx_o __pyx_t_1 = (__pyx_v_self->payload_len < 0); if (__pyx_t_1) { - /* "/root/NetfilterQueue/netfilterqueue.pyx":67 + /* "netfilterqueue.pyx":50 * self.payload_len = nfq_get_payload(self._nfa, &self.payload) * if self.payload_len < 0: * raise OSError("Failed to get payload of packet.") # <<<<<<<<<<<<<< * * nfq_get_timestamp(self._nfa, &self.timestamp) */ - __pyx_t_2 = PyObject_Call(__pyx_builtin_OSError, ((PyObject *)__pyx_k_tuple_5), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyObject_Call(__pyx_builtin_OSError, ((PyObject *)__pyx_k_tuple_4), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;} goto __pyx_L3; } __pyx_L3:; - /* "/root/NetfilterQueue/netfilterqueue.pyx":69 + /* "netfilterqueue.pyx":52 * raise OSError("Failed to get payload of packet.") * * nfq_get_timestamp(self._nfa, &self.timestamp) # <<<<<<<<<<<<<< @@ -1214,7 +1506,7 @@ static PyObject *__pyx_f_14netfilterqueue_8NFPacket_set_nfq_data(struct __pyx_o goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("netfilterqueue.NFPacket.set_nfq_data"); + __Pyx_AddTraceback("netfilterqueue.Packet.set_nfq_data"); __pyx_r = 0; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -1222,27 +1514,53 @@ static PyObject *__pyx_f_14netfilterqueue_8NFPacket_set_nfq_data(struct __pyx_o return __pyx_r; } -/* "/root/NetfilterQueue/netfilterqueue.pyx":71 +/* "netfilterqueue.pyx":54 * nfq_get_timestamp(self._nfa, &self.timestamp) * * cdef void verdict(self, u_int8_t verdict): # <<<<<<<<<<<<<< * """Call appropriate set_verdict... function on packet.""" - * #if self._verdict_is_set: + * if self._verdict_is_set: */ -static void __pyx_f_14netfilterqueue_8NFPacket_verdict(struct __pyx_obj_14netfilterqueue_NFPacket *__pyx_v_self, u_int8_t __pyx_v_verdict) { +static void __pyx_f_14netfilterqueue_6Packet_verdict(struct __pyx_obj_14netfilterqueue_Packet *__pyx_v_self, u_int8_t __pyx_v_verdict) { + PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("verdict"); - /* "/root/NetfilterQueue/netfilterqueue.pyx":76 - * # raise RuntimeWarning("Verdict already given for this packet.") + /* "netfilterqueue.pyx":56 + * cdef void verdict(self, u_int8_t verdict): + * """Call appropriate set_verdict... function on packet.""" + * if self._verdict_is_set: # <<<<<<<<<<<<<< + * raise RuntimeWarning("Verdict already given for this packet.") + * + */ + if (__pyx_v_self->_verdict_is_set) { + + /* "netfilterqueue.pyx":57 + * """Call appropriate set_verdict... function on packet.""" + * if self._verdict_is_set: + * raise RuntimeWarning("Verdict already given for this packet.") # <<<<<<<<<<<<<< + * + * if self._mark_is_set: + */ + __pyx_t_1 = PyObject_Call(__pyx_builtin_RuntimeWarning, ((PyObject *)__pyx_k_tuple_6), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + __Pyx_Raise(__pyx_t_1, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + goto __pyx_L3; + } + __pyx_L3:; + + /* "netfilterqueue.pyx":59 + * raise RuntimeWarning("Verdict already given for this packet.") * * if self._mark_is_set: # <<<<<<<<<<<<<< - * nfq_set_verdict_mark( + * nfq_set_verdict_mark( # TODO: make this use nfq_set_verdict2 if available on system * self._qh, */ if (__pyx_v_self->_mark_is_set) { - /* "/root/NetfilterQueue/netfilterqueue.pyx":83 + /* "netfilterqueue.pyx":66 * htonl(self._given_mark), * 0, # TODO: adapt to use self._given_payload * NULL # TODO: adapt to use self._given_payload # <<<<<<<<<<<<<< @@ -1250,11 +1568,11 @@ static void __pyx_f_14netfilterqueue_8NFPacket_verdict(struct __pyx_obj_14netfi * else: */ nfq_set_verdict_mark(__pyx_v_self->_qh, __pyx_v_self->id, __pyx_v_verdict, htonl(__pyx_v_self->_given_mark), 0, NULL); - goto __pyx_L3; + goto __pyx_L4; } /*else*/ { - /* "/root/NetfilterQueue/netfilterqueue.pyx":91 + /* "netfilterqueue.pyx":74 * verdict, * 0, # TODO: adapt to use self._given_payload * NULL # TODO: adapt to use self._given_payload # <<<<<<<<<<<<<< @@ -1263,40 +1581,55 @@ static void __pyx_f_14netfilterqueue_8NFPacket_verdict(struct __pyx_obj_14netfi */ nfq_set_verdict(__pyx_v_self->_qh, __pyx_v_self->id, __pyx_v_verdict, 0, NULL); } - __pyx_L3:; + __pyx_L4:; + /* "netfilterqueue.pyx":77 + * ) + * + * self._verdict_is_set = True # <<<<<<<<<<<<<< + * + * def get_payload(self): + */ + __pyx_v_self->_verdict_is_set = 1; + + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_WriteUnraisable("netfilterqueue.Packet.verdict"); + __pyx_L0:; __Pyx_RefNannyFinishContext(); } -/* "/root/NetfilterQueue/netfilterqueue.pyx":96 - * #self._verdict_is_set = True +/* "netfilterqueue.pyx":79 + * self._verdict_is_set = True * * def get_payload(self): # <<<<<<<<<<<<<< + * """Return payload as Python string.""" * cdef object py_string = PyString_FromStringAndSize(self.payload, self.payload_len) - * return py_string */ -static PyObject *__pyx_pf_14netfilterqueue_8NFPacket_2get_payload(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_pf_14netfilterqueue_8NFPacket_2get_payload(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { +static PyObject *__pyx_pf_14netfilterqueue_6Packet_2get_payload(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static char __pyx_doc_14netfilterqueue_6Packet_2get_payload[] = "Return payload as Python string."; +static PyObject *__pyx_pf_14netfilterqueue_6Packet_2get_payload(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_v_py_string = 0; PyObject *__pyx_r = NULL; PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("get_payload"); - /* "/root/NetfilterQueue/netfilterqueue.pyx":97 - * + /* "netfilterqueue.pyx":81 * def get_payload(self): + * """Return payload as Python string.""" * cdef object py_string = PyString_FromStringAndSize(self.payload, self.payload_len) # <<<<<<<<<<<<<< * return py_string * */ - __pyx_t_1 = PyString_FromStringAndSize(((struct __pyx_obj_14netfilterqueue_NFPacket *)__pyx_v_self)->payload, ((struct __pyx_obj_14netfilterqueue_NFPacket *)__pyx_v_self)->payload_len); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyString_FromStringAndSize(((struct __pyx_obj_14netfilterqueue_Packet *)__pyx_v_self)->payload, ((struct __pyx_obj_14netfilterqueue_Packet *)__pyx_v_self)->payload_len); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_v_py_string = __pyx_t_1; __pyx_t_1 = 0; - /* "/root/NetfilterQueue/netfilterqueue.pyx":98 - * def get_payload(self): + /* "netfilterqueue.pyx":82 + * """Return payload as Python string.""" * cdef object py_string = PyString_FromStringAndSize(self.payload, self.payload_len) * return py_string # <<<<<<<<<<<<<< * @@ -1311,7 +1644,7 @@ static PyObject *__pyx_pf_14netfilterqueue_8NFPacket_2get_payload(PyObject *__py goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("netfilterqueue.NFPacket.get_payload"); + __Pyx_AddTraceback("netfilterqueue.Packet.get_payload"); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_py_string); @@ -1320,7 +1653,7 @@ static PyObject *__pyx_pf_14netfilterqueue_8NFPacket_2get_payload(PyObject *__py return __pyx_r; } -/* "/root/NetfilterQueue/netfilterqueue.pyx":100 +/* "netfilterqueue.pyx":84 * return py_string * * cpdef Py_ssize_t get_payload_len(self): # <<<<<<<<<<<<<< @@ -1328,8 +1661,8 @@ static PyObject *__pyx_pf_14netfilterqueue_8NFPacket_2get_payload(PyObject *__py * */ -static PyObject *__pyx_pf_14netfilterqueue_8NFPacket_3get_payload_len(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static Py_ssize_t __pyx_f_14netfilterqueue_8NFPacket_get_payload_len(struct __pyx_obj_14netfilterqueue_NFPacket *__pyx_v_self, int __pyx_skip_dispatch) { +static PyObject *__pyx_pf_14netfilterqueue_6Packet_3get_payload_len(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static Py_ssize_t __pyx_f_14netfilterqueue_6Packet_get_payload_len(struct __pyx_obj_14netfilterqueue_Packet *__pyx_v_self, int __pyx_skip_dispatch) { Py_ssize_t __pyx_r; PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; @@ -1339,12 +1672,12 @@ static Py_ssize_t __pyx_f_14netfilterqueue_8NFPacket_get_payload_len(struct __p if (unlikely(__pyx_skip_dispatch)) ; /* Check if overriden in Python */ else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__get_payload_len); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__get_payload_len); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (void *)&__pyx_pf_14netfilterqueue_8NFPacket_3get_payload_len)) { - __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (void *)&__pyx_pf_14netfilterqueue_6Packet_3get_payload_len)) { + __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyIndex_AsSsize_t(__pyx_t_2); if (unlikely((__pyx_t_3 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyIndex_AsSsize_t(__pyx_t_2); if (unlikely((__pyx_t_3 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_3; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -1353,7 +1686,7 @@ static Py_ssize_t __pyx_f_14netfilterqueue_8NFPacket_get_payload_len(struct __p __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } - /* "/root/NetfilterQueue/netfilterqueue.pyx":101 + /* "netfilterqueue.pyx":85 * * cpdef Py_ssize_t get_payload_len(self): * return self.payload_len # <<<<<<<<<<<<<< @@ -1368,14 +1701,14 @@ static Py_ssize_t __pyx_f_14netfilterqueue_8NFPacket_get_payload_len(struct __p __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); - __Pyx_WriteUnraisable("netfilterqueue.NFPacket.get_payload_len"); + __Pyx_WriteUnraisable("netfilterqueue.Packet.get_payload_len"); __pyx_r = 0; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "/root/NetfilterQueue/netfilterqueue.pyx":100 +/* "netfilterqueue.pyx":84 * return py_string * * cpdef Py_ssize_t get_payload_len(self): # <<<<<<<<<<<<<< @@ -1383,13 +1716,13 @@ static Py_ssize_t __pyx_f_14netfilterqueue_8NFPacket_get_payload_len(struct __p * */ -static PyObject *__pyx_pf_14netfilterqueue_8NFPacket_3get_payload_len(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_pf_14netfilterqueue_8NFPacket_3get_payload_len(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { +static PyObject *__pyx_pf_14netfilterqueue_6Packet_3get_payload_len(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static PyObject *__pyx_pf_14netfilterqueue_6Packet_3get_payload_len(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = NULL; PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("get_payload_len"); __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyInt_FromSsize_t(((struct __pyx_vtabstruct_14netfilterqueue_NFPacket *)((struct __pyx_obj_14netfilterqueue_NFPacket *)__pyx_v_self)->__pyx_vtab)->get_payload_len(((struct __pyx_obj_14netfilterqueue_NFPacket *)__pyx_v_self), 1)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyInt_FromSsize_t(((struct __pyx_vtabstruct_14netfilterqueue_Packet *)((struct __pyx_obj_14netfilterqueue_Packet *)__pyx_v_self)->__pyx_vtab)->get_payload_len(((struct __pyx_obj_14netfilterqueue_Packet *)__pyx_v_self), 1)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; @@ -1399,7 +1732,7 @@ static PyObject *__pyx_pf_14netfilterqueue_8NFPacket_3get_payload_len(PyObject * goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("netfilterqueue.NFPacket.get_payload_len"); + __Pyx_AddTraceback("netfilterqueue.Packet.get_payload_len"); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -1407,7 +1740,7 @@ static PyObject *__pyx_pf_14netfilterqueue_8NFPacket_3get_payload_len(PyObject * return __pyx_r; } -/* "/root/NetfilterQueue/netfilterqueue.pyx":103 +/* "netfilterqueue.pyx":87 * return self.payload_len * * cpdef double get_timestamp(self): # <<<<<<<<<<<<<< @@ -1415,8 +1748,8 @@ static PyObject *__pyx_pf_14netfilterqueue_8NFPacket_3get_payload_len(PyObject * * */ -static PyObject *__pyx_pf_14netfilterqueue_8NFPacket_4get_timestamp(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static double __pyx_f_14netfilterqueue_8NFPacket_get_timestamp(struct __pyx_obj_14netfilterqueue_NFPacket *__pyx_v_self, int __pyx_skip_dispatch) { +static PyObject *__pyx_pf_14netfilterqueue_6Packet_4get_timestamp(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static double __pyx_f_14netfilterqueue_6Packet_get_timestamp(struct __pyx_obj_14netfilterqueue_Packet *__pyx_v_self, int __pyx_skip_dispatch) { double __pyx_r; PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; @@ -1426,12 +1759,12 @@ static double __pyx_f_14netfilterqueue_8NFPacket_get_timestamp(struct __pyx_obj if (unlikely(__pyx_skip_dispatch)) ; /* Check if overriden in Python */ else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__get_timestamp); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__get_timestamp); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (void *)&__pyx_pf_14netfilterqueue_8NFPacket_4get_timestamp)) { - __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (void *)&__pyx_pf_14netfilterqueue_6Packet_4get_timestamp)) { + __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_t_2); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_t_2); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_3; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -1440,7 +1773,7 @@ static double __pyx_f_14netfilterqueue_8NFPacket_get_timestamp(struct __pyx_obj __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } - /* "/root/NetfilterQueue/netfilterqueue.pyx":104 + /* "netfilterqueue.pyx":88 * * cpdef double get_timestamp(self): * return self.timestamp.tv_sec + (self.timestamp.tv_usec/1000000.0) # <<<<<<<<<<<<<< @@ -1455,14 +1788,14 @@ static double __pyx_f_14netfilterqueue_8NFPacket_get_timestamp(struct __pyx_obj __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); - __Pyx_WriteUnraisable("netfilterqueue.NFPacket.get_timestamp"); + __Pyx_WriteUnraisable("netfilterqueue.Packet.get_timestamp"); __pyx_r = 0; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "/root/NetfilterQueue/netfilterqueue.pyx":103 +/* "netfilterqueue.pyx":87 * return self.payload_len * * cpdef double get_timestamp(self): # <<<<<<<<<<<<<< @@ -1470,13 +1803,13 @@ static double __pyx_f_14netfilterqueue_8NFPacket_get_timestamp(struct __pyx_obj * */ -static PyObject *__pyx_pf_14netfilterqueue_8NFPacket_4get_timestamp(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_pf_14netfilterqueue_8NFPacket_4get_timestamp(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { +static PyObject *__pyx_pf_14netfilterqueue_6Packet_4get_timestamp(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static PyObject *__pyx_pf_14netfilterqueue_6Packet_4get_timestamp(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = NULL; PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("get_timestamp"); __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyFloat_FromDouble(((struct __pyx_vtabstruct_14netfilterqueue_NFPacket *)((struct __pyx_obj_14netfilterqueue_NFPacket *)__pyx_v_self)->__pyx_vtab)->get_timestamp(((struct __pyx_obj_14netfilterqueue_NFPacket *)__pyx_v_self), 1)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyFloat_FromDouble(((struct __pyx_vtabstruct_14netfilterqueue_Packet *)((struct __pyx_obj_14netfilterqueue_Packet *)__pyx_v_self)->__pyx_vtab)->get_timestamp(((struct __pyx_obj_14netfilterqueue_Packet *)__pyx_v_self), 1)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; @@ -1486,7 +1819,7 @@ static PyObject *__pyx_pf_14netfilterqueue_8NFPacket_4get_timestamp(PyObject *__ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("netfilterqueue.NFPacket.get_timestamp"); + __Pyx_AddTraceback("netfilterqueue.Packet.get_timestamp"); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -1494,7 +1827,7 @@ static PyObject *__pyx_pf_14netfilterqueue_8NFPacket_4get_timestamp(PyObject *__ return __pyx_r; } -/* "/root/NetfilterQueue/netfilterqueue.pyx":111 +/* "netfilterqueue.pyx":95 * # self._given_payload = payload * * cpdef set_mark(self, u_int32_t mark): # <<<<<<<<<<<<<< @@ -1502,8 +1835,8 @@ static PyObject *__pyx_pf_14netfilterqueue_8NFPacket_4get_timestamp(PyObject *__ * self._mark_is_set = True */ -static PyObject *__pyx_pf_14netfilterqueue_8NFPacket_5set_mark(PyObject *__pyx_v_self, PyObject *__pyx_arg_mark); /*proto*/ -static PyObject *__pyx_f_14netfilterqueue_8NFPacket_set_mark(struct __pyx_obj_14netfilterqueue_NFPacket *__pyx_v_self, u_int32_t __pyx_v_mark, int __pyx_skip_dispatch) { +static PyObject *__pyx_pf_14netfilterqueue_6Packet_5set_mark(PyObject *__pyx_v_self, PyObject *__pyx_arg_mark); /*proto*/ +static PyObject *__pyx_f_14netfilterqueue_6Packet_set_mark(struct __pyx_obj_14netfilterqueue_Packet *__pyx_v_self, u_int32_t __pyx_v_mark, int __pyx_skip_dispatch) { PyObject *__pyx_r = NULL; PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; @@ -1513,18 +1846,18 @@ static PyObject *__pyx_f_14netfilterqueue_8NFPacket_set_mark(struct __pyx_obj_1 if (unlikely(__pyx_skip_dispatch)) ; /* Check if overriden in Python */ else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__set_mark); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__set_mark); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (void *)&__pyx_pf_14netfilterqueue_8NFPacket_5set_mark)) { + if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (void *)&__pyx_pf_14netfilterqueue_6Packet_5set_mark)) { __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyInt_to_py_u_int32_t(__pyx_v_mark); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyInt_to_py_u_int32_t(__pyx_v_mark); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_3)); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; __pyx_r = __pyx_t_2; @@ -1535,7 +1868,7 @@ static PyObject *__pyx_f_14netfilterqueue_8NFPacket_set_mark(struct __pyx_obj_1 __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } - /* "/root/NetfilterQueue/netfilterqueue.pyx":112 + /* "netfilterqueue.pyx":96 * * cpdef set_mark(self, u_int32_t mark): * self._given_mark = mark # <<<<<<<<<<<<<< @@ -1544,7 +1877,7 @@ static PyObject *__pyx_f_14netfilterqueue_8NFPacket_set_mark(struct __pyx_obj_1 */ __pyx_v_self->_given_mark = __pyx_v_mark; - /* "/root/NetfilterQueue/netfilterqueue.pyx":113 + /* "netfilterqueue.pyx":97 * cpdef set_mark(self, u_int32_t mark): * self._given_mark = mark * self._mark_is_set = True # <<<<<<<<<<<<<< @@ -1559,7 +1892,7 @@ static PyObject *__pyx_f_14netfilterqueue_8NFPacket_set_mark(struct __pyx_obj_1 __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("netfilterqueue.NFPacket.set_mark"); + __Pyx_AddTraceback("netfilterqueue.Packet.set_mark"); __pyx_r = 0; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -1567,7 +1900,7 @@ static PyObject *__pyx_f_14netfilterqueue_8NFPacket_set_mark(struct __pyx_obj_1 return __pyx_r; } -/* "/root/NetfilterQueue/netfilterqueue.pyx":111 +/* "netfilterqueue.pyx":95 * # self._given_payload = payload * * cpdef set_mark(self, u_int32_t mark): # <<<<<<<<<<<<<< @@ -1575,23 +1908,23 @@ static PyObject *__pyx_f_14netfilterqueue_8NFPacket_set_mark(struct __pyx_obj_1 * self._mark_is_set = True */ -static PyObject *__pyx_pf_14netfilterqueue_8NFPacket_5set_mark(PyObject *__pyx_v_self, PyObject *__pyx_arg_mark); /*proto*/ -static PyObject *__pyx_pf_14netfilterqueue_8NFPacket_5set_mark(PyObject *__pyx_v_self, PyObject *__pyx_arg_mark) { +static PyObject *__pyx_pf_14netfilterqueue_6Packet_5set_mark(PyObject *__pyx_v_self, PyObject *__pyx_arg_mark); /*proto*/ +static PyObject *__pyx_pf_14netfilterqueue_6Packet_5set_mark(PyObject *__pyx_v_self, PyObject *__pyx_arg_mark) { u_int32_t __pyx_v_mark; PyObject *__pyx_r = NULL; PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("set_mark"); assert(__pyx_arg_mark); { - __pyx_v_mark = __Pyx_PyInt_from_py_u_int32_t(__pyx_arg_mark); if (unlikely((__pyx_v_mark == (u_int32_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_mark = __Pyx_PyInt_from_py_u_int32_t(__pyx_arg_mark); if (unlikely((__pyx_v_mark == (u_int32_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; - __Pyx_AddTraceback("netfilterqueue.NFPacket.set_mark"); + __Pyx_AddTraceback("netfilterqueue.Packet.set_mark"); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = ((struct __pyx_vtabstruct_14netfilterqueue_NFPacket *)((struct __pyx_obj_14netfilterqueue_NFPacket *)__pyx_v_self)->__pyx_vtab)->set_mark(((struct __pyx_obj_14netfilterqueue_NFPacket *)__pyx_v_self), __pyx_v_mark, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = ((struct __pyx_vtabstruct_14netfilterqueue_Packet *)((struct __pyx_obj_14netfilterqueue_Packet *)__pyx_v_self)->__pyx_vtab)->set_mark(((struct __pyx_obj_14netfilterqueue_Packet *)__pyx_v_self), __pyx_v_mark, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; @@ -1601,7 +1934,7 @@ static PyObject *__pyx_pf_14netfilterqueue_8NFPacket_5set_mark(PyObject *__pyx_v goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("netfilterqueue.NFPacket.set_mark"); + __Pyx_AddTraceback("netfilterqueue.Packet.set_mark"); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -1609,7 +1942,7 @@ static PyObject *__pyx_pf_14netfilterqueue_8NFPacket_5set_mark(PyObject *__pyx_v return __pyx_r; } -/* "/root/NetfilterQueue/netfilterqueue.pyx":115 +/* "netfilterqueue.pyx":99 * self._mark_is_set = True * * cpdef accept(self): # <<<<<<<<<<<<<< @@ -1617,8 +1950,8 @@ static PyObject *__pyx_pf_14netfilterqueue_8NFPacket_5set_mark(PyObject *__pyx_v * self.verdict(NF_ACCEPT) */ -static PyObject *__pyx_pf_14netfilterqueue_8NFPacket_6accept(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_f_14netfilterqueue_8NFPacket_accept(struct __pyx_obj_14netfilterqueue_NFPacket *__pyx_v_self, int __pyx_skip_dispatch) { +static PyObject *__pyx_pf_14netfilterqueue_6Packet_6accept(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static PyObject *__pyx_f_14netfilterqueue_6Packet_accept(struct __pyx_obj_14netfilterqueue_Packet *__pyx_v_self, int __pyx_skip_dispatch) { PyObject *__pyx_r = NULL; PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; @@ -1627,11 +1960,11 @@ static PyObject *__pyx_f_14netfilterqueue_8NFPacket_accept(struct __pyx_obj_14n if (unlikely(__pyx_skip_dispatch)) ; /* Check if overriden in Python */ else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__accept); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__accept); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (void *)&__pyx_pf_14netfilterqueue_8NFPacket_6accept)) { + if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (void *)&__pyx_pf_14netfilterqueue_6Packet_6accept)) { __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; @@ -1641,21 +1974,21 @@ static PyObject *__pyx_f_14netfilterqueue_8NFPacket_accept(struct __pyx_obj_14n __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } - /* "/root/NetfilterQueue/netfilterqueue.pyx":117 + /* "netfilterqueue.pyx":101 * cpdef accept(self): * """Accept the packet.""" * self.verdict(NF_ACCEPT) # <<<<<<<<<<<<<< * * cpdef drop(self): */ - ((struct __pyx_vtabstruct_14netfilterqueue_NFPacket *)__pyx_v_self->__pyx_vtab)->verdict(__pyx_v_self, __pyx_e_14netfilterqueue_NF_ACCEPT); + ((struct __pyx_vtabstruct_14netfilterqueue_Packet *)__pyx_v_self->__pyx_vtab)->verdict(__pyx_v_self, __pyx_e_14netfilterqueue_NF_ACCEPT); __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("netfilterqueue.NFPacket.accept"); + __Pyx_AddTraceback("netfilterqueue.Packet.accept"); __pyx_r = 0; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -1663,7 +1996,7 @@ static PyObject *__pyx_f_14netfilterqueue_8NFPacket_accept(struct __pyx_obj_14n return __pyx_r; } -/* "/root/NetfilterQueue/netfilterqueue.pyx":115 +/* "netfilterqueue.pyx":99 * self._mark_is_set = True * * cpdef accept(self): # <<<<<<<<<<<<<< @@ -1671,14 +2004,14 @@ static PyObject *__pyx_f_14netfilterqueue_8NFPacket_accept(struct __pyx_obj_14n * self.verdict(NF_ACCEPT) */ -static PyObject *__pyx_pf_14netfilterqueue_8NFPacket_6accept(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_14netfilterqueue_8NFPacket_6accept[] = "Accept the packet."; -static PyObject *__pyx_pf_14netfilterqueue_8NFPacket_6accept(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { +static PyObject *__pyx_pf_14netfilterqueue_6Packet_6accept(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static char __pyx_doc_14netfilterqueue_6Packet_6accept[] = "Accept the packet."; +static PyObject *__pyx_pf_14netfilterqueue_6Packet_6accept(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = NULL; PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("accept"); __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = ((struct __pyx_vtabstruct_14netfilterqueue_NFPacket *)((struct __pyx_obj_14netfilterqueue_NFPacket *)__pyx_v_self)->__pyx_vtab)->accept(((struct __pyx_obj_14netfilterqueue_NFPacket *)__pyx_v_self), 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = ((struct __pyx_vtabstruct_14netfilterqueue_Packet *)((struct __pyx_obj_14netfilterqueue_Packet *)__pyx_v_self)->__pyx_vtab)->accept(((struct __pyx_obj_14netfilterqueue_Packet *)__pyx_v_self), 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; @@ -1688,7 +2021,7 @@ static PyObject *__pyx_pf_14netfilterqueue_8NFPacket_6accept(PyObject *__pyx_v_s goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("netfilterqueue.NFPacket.accept"); + __Pyx_AddTraceback("netfilterqueue.Packet.accept"); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -1696,7 +2029,7 @@ static PyObject *__pyx_pf_14netfilterqueue_8NFPacket_6accept(PyObject *__pyx_v_s return __pyx_r; } -/* "/root/NetfilterQueue/netfilterqueue.pyx":119 +/* "netfilterqueue.pyx":103 * self.verdict(NF_ACCEPT) * * cpdef drop(self): # <<<<<<<<<<<<<< @@ -1704,8 +2037,8 @@ static PyObject *__pyx_pf_14netfilterqueue_8NFPacket_6accept(PyObject *__pyx_v_s * self.verdict(NF_DROP) */ -static PyObject *__pyx_pf_14netfilterqueue_8NFPacket_7drop(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_f_14netfilterqueue_8NFPacket_drop(struct __pyx_obj_14netfilterqueue_NFPacket *__pyx_v_self, int __pyx_skip_dispatch) { +static PyObject *__pyx_pf_14netfilterqueue_6Packet_7drop(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static PyObject *__pyx_f_14netfilterqueue_6Packet_drop(struct __pyx_obj_14netfilterqueue_Packet *__pyx_v_self, int __pyx_skip_dispatch) { PyObject *__pyx_r = NULL; PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; @@ -1714,11 +2047,11 @@ static PyObject *__pyx_f_14netfilterqueue_8NFPacket_drop(struct __pyx_obj_14net if (unlikely(__pyx_skip_dispatch)) ; /* Check if overriden in Python */ else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__drop); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__drop); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (void *)&__pyx_pf_14netfilterqueue_8NFPacket_7drop)) { + if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (void *)&__pyx_pf_14netfilterqueue_6Packet_7drop)) { __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; @@ -1728,21 +2061,21 @@ static PyObject *__pyx_f_14netfilterqueue_8NFPacket_drop(struct __pyx_obj_14net __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } - /* "/root/NetfilterQueue/netfilterqueue.pyx":121 + /* "netfilterqueue.pyx":105 * cpdef drop(self): * """Drop the packet.""" * self.verdict(NF_DROP) # <<<<<<<<<<<<<< * - * cdef class NFQueue: + * cdef class NetfilterQueue: */ - ((struct __pyx_vtabstruct_14netfilterqueue_NFPacket *)__pyx_v_self->__pyx_vtab)->verdict(__pyx_v_self, __pyx_e_14netfilterqueue_NF_DROP); + ((struct __pyx_vtabstruct_14netfilterqueue_Packet *)__pyx_v_self->__pyx_vtab)->verdict(__pyx_v_self, __pyx_e_14netfilterqueue_NF_DROP); __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("netfilterqueue.NFPacket.drop"); + __Pyx_AddTraceback("netfilterqueue.Packet.drop"); __pyx_r = 0; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -1750,7 +2083,7 @@ static PyObject *__pyx_f_14netfilterqueue_8NFPacket_drop(struct __pyx_obj_14net return __pyx_r; } -/* "/root/NetfilterQueue/netfilterqueue.pyx":119 +/* "netfilterqueue.pyx":103 * self.verdict(NF_ACCEPT) * * cpdef drop(self): # <<<<<<<<<<<<<< @@ -1758,14 +2091,14 @@ static PyObject *__pyx_f_14netfilterqueue_8NFPacket_drop(struct __pyx_obj_14net * self.verdict(NF_DROP) */ -static PyObject *__pyx_pf_14netfilterqueue_8NFPacket_7drop(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_14netfilterqueue_8NFPacket_7drop[] = "Drop the packet."; -static PyObject *__pyx_pf_14netfilterqueue_8NFPacket_7drop(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { +static PyObject *__pyx_pf_14netfilterqueue_6Packet_7drop(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static char __pyx_doc_14netfilterqueue_6Packet_7drop[] = "Drop the packet."; +static PyObject *__pyx_pf_14netfilterqueue_6Packet_7drop(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = NULL; PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("drop"); __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = ((struct __pyx_vtabstruct_14netfilterqueue_NFPacket *)((struct __pyx_obj_14netfilterqueue_NFPacket *)__pyx_v_self)->__pyx_vtab)->drop(((struct __pyx_obj_14netfilterqueue_NFPacket *)__pyx_v_self), 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = ((struct __pyx_vtabstruct_14netfilterqueue_Packet *)((struct __pyx_obj_14netfilterqueue_Packet *)__pyx_v_self)->__pyx_vtab)->drop(((struct __pyx_obj_14netfilterqueue_Packet *)__pyx_v_self), 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; @@ -1775,7 +2108,7 @@ static PyObject *__pyx_pf_14netfilterqueue_8NFPacket_7drop(PyObject *__pyx_v_sel goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("netfilterqueue.NFPacket.drop"); + __Pyx_AddTraceback("netfilterqueue.Packet.drop"); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -1783,7 +2116,7 @@ static PyObject *__pyx_pf_14netfilterqueue_8NFPacket_7drop(PyObject *__pyx_v_sel return __pyx_r; } -/* "/root/NetfilterQueue/netfilterqueue.pxd":162 +/* "netfilterqueue.pxd":162 * * # From NFQ packet header: * cdef readonly u_int32_t id # <<<<<<<<<<<<<< @@ -1791,13 +2124,13 @@ static PyObject *__pyx_pf_14netfilterqueue_8NFPacket_7drop(PyObject *__pyx_v_sel * cdef readonly u_int8_t hook */ -static PyObject *__pyx_pf_14netfilterqueue_8NFPacket_2id_0__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pf_14netfilterqueue_8NFPacket_2id_0__get__(PyObject *__pyx_v_self) { +static PyObject *__pyx_pf_14netfilterqueue_6Packet_2id___get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pf_14netfilterqueue_6Packet_2id___get__(PyObject *__pyx_v_self) { PyObject *__pyx_r = NULL; PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("__get__"); __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_to_py_u_int32_t(((struct __pyx_obj_14netfilterqueue_NFPacket *)__pyx_v_self)->id); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyInt_to_py_u_int32_t(((struct __pyx_obj_14netfilterqueue_Packet *)__pyx_v_self)->id); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; @@ -1807,7 +2140,7 @@ static PyObject *__pyx_pf_14netfilterqueue_8NFPacket_2id_0__get__(PyObject *__py goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("netfilterqueue.NFPacket.id.__get__"); + __Pyx_AddTraceback("netfilterqueue.Packet.id.__get__"); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -1815,7 +2148,7 @@ static PyObject *__pyx_pf_14netfilterqueue_8NFPacket_2id_0__get__(PyObject *__py return __pyx_r; } -/* "/root/NetfilterQueue/netfilterqueue.pxd":163 +/* "netfilterqueue.pxd":163 * # From NFQ packet header: * cdef readonly u_int32_t id * cdef readonly u_int16_t hw_protocol # <<<<<<<<<<<<<< @@ -1823,13 +2156,13 @@ static PyObject *__pyx_pf_14netfilterqueue_8NFPacket_2id_0__get__(PyObject *__py * */ -static PyObject *__pyx_pf_14netfilterqueue_8NFPacket_11hw_protocol_0__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pf_14netfilterqueue_8NFPacket_11hw_protocol_0__get__(PyObject *__pyx_v_self) { +static PyObject *__pyx_pf_14netfilterqueue_6Packet_11hw_protocol___get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pf_14netfilterqueue_6Packet_11hw_protocol___get__(PyObject *__pyx_v_self) { PyObject *__pyx_r = NULL; PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("__get__"); __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_to_py_u_int16_t(((struct __pyx_obj_14netfilterqueue_NFPacket *)__pyx_v_self)->hw_protocol); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 163; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyInt_to_py_u_int16_t(((struct __pyx_obj_14netfilterqueue_Packet *)__pyx_v_self)->hw_protocol); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 163; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; @@ -1839,7 +2172,7 @@ static PyObject *__pyx_pf_14netfilterqueue_8NFPacket_11hw_protocol_0__get__(PyOb goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("netfilterqueue.NFPacket.hw_protocol.__get__"); + __Pyx_AddTraceback("netfilterqueue.Packet.hw_protocol.__get__"); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -1847,7 +2180,7 @@ static PyObject *__pyx_pf_14netfilterqueue_8NFPacket_11hw_protocol_0__get__(PyOb return __pyx_r; } -/* "/root/NetfilterQueue/netfilterqueue.pxd":164 +/* "netfilterqueue.pxd":164 * cdef readonly u_int32_t id * cdef readonly u_int16_t hw_protocol * cdef readonly u_int8_t hook # <<<<<<<<<<<<<< @@ -1855,13 +2188,13 @@ static PyObject *__pyx_pf_14netfilterqueue_8NFPacket_11hw_protocol_0__get__(PyOb * # Packet details: */ -static PyObject *__pyx_pf_14netfilterqueue_8NFPacket_4hook_0__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pf_14netfilterqueue_8NFPacket_4hook_0__get__(PyObject *__pyx_v_self) { +static PyObject *__pyx_pf_14netfilterqueue_6Packet_4hook___get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pf_14netfilterqueue_6Packet_4hook___get__(PyObject *__pyx_v_self) { PyObject *__pyx_r = NULL; PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("__get__"); __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_to_py_u_int8_t(((struct __pyx_obj_14netfilterqueue_NFPacket *)__pyx_v_self)->hook); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyInt_to_py_u_int8_t(((struct __pyx_obj_14netfilterqueue_Packet *)__pyx_v_self)->hook); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; @@ -1871,7 +2204,7 @@ static PyObject *__pyx_pf_14netfilterqueue_8NFPacket_4hook_0__get__(PyObject *__ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("netfilterqueue.NFPacket.hook.__get__"); + __Pyx_AddTraceback("netfilterqueue.Packet.hook.__get__"); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -1879,7 +2212,7 @@ static PyObject *__pyx_pf_14netfilterqueue_8NFPacket_4hook_0__get__(PyObject *__ return __pyx_r; } -/* "/root/NetfilterQueue/netfilterqueue.pxd":168 +/* "netfilterqueue.pxd":168 * # Packet details: * cdef Py_ssize_t payload_len * cdef readonly char *payload # <<<<<<<<<<<<<< @@ -1887,13 +2220,13 @@ static PyObject *__pyx_pf_14netfilterqueue_8NFPacket_4hook_0__get__(PyObject *__ * # TODO: implement these */ -static PyObject *__pyx_pf_14netfilterqueue_8NFPacket_7payload_0__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pf_14netfilterqueue_8NFPacket_7payload_0__get__(PyObject *__pyx_v_self) { +static PyObject *__pyx_pf_14netfilterqueue_6Packet_7payload___get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pf_14netfilterqueue_6Packet_7payload___get__(PyObject *__pyx_v_self) { PyObject *__pyx_r = NULL; PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("__get__"); __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyBytes_FromString(((struct __pyx_obj_14netfilterqueue_NFPacket *)__pyx_v_self)->payload); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyBytes_FromString(((struct __pyx_obj_14netfilterqueue_Packet *)__pyx_v_self)->payload); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_1)); __pyx_r = ((PyObject *)__pyx_t_1); __pyx_t_1 = 0; @@ -1903,7 +2236,7 @@ static PyObject *__pyx_pf_14netfilterqueue_8NFPacket_7payload_0__get__(PyObject goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("netfilterqueue.NFPacket.payload.__get__"); + __Pyx_AddTraceback("netfilterqueue.Packet.payload.__get__"); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -1911,23 +2244,23 @@ static PyObject *__pyx_pf_14netfilterqueue_8NFPacket_7payload_0__get__(PyObject return __pyx_r; } -/* "/root/NetfilterQueue/netfilterqueue.pyx":125 - * cdef class NFQueue: +/* "netfilterqueue.pyx":109 + * cdef class NetfilterQueue: * """Handle a single numbered queue.""" * def __cinit__(self, *args, **kwargs): # <<<<<<<<<<<<<< - * if "af" in kwargs: - * self.af = kwargs["af"] + * self.af = kwargs.get("af", PF_INET) + * */ -static int __pyx_pf_14netfilterqueue_7NFQueue_0__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pf_14netfilterqueue_7NFQueue_0__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { +static int __pyx_pf_14netfilterqueue_14NetfilterQueue___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static int __pyx_pf_14netfilterqueue_14NetfilterQueue___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_args = 0; PyObject *__pyx_v_kwargs = 0; int __pyx_r; - int __pyx_t_1; + PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; u_int16_t __pyx_t_3; - PyObject *__pyx_t_4 = NULL; + int __pyx_t_4; __Pyx_RefNannySetupContext("__cinit__"); if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 1))) return -1; __pyx_v_kwargs = (__pyx_kwds) ? PyDict_Copy(__pyx_kwds) : PyDict_New(); @@ -1936,140 +2269,112 @@ static int __pyx_pf_14netfilterqueue_7NFQueue_0__cinit__(PyObject *__pyx_v_self, __Pyx_INCREF(__pyx_args); __pyx_v_args = __pyx_args; - /* "/root/NetfilterQueue/netfilterqueue.pyx":126 + /* "netfilterqueue.pyx":110 * """Handle a single numbered queue.""" * def __cinit__(self, *args, **kwargs): - * if "af" in kwargs: # <<<<<<<<<<<<<< - * self.af = kwargs["af"] - * else: - */ - if (unlikely(__pyx_v_kwargs == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - } - __pyx_t_1 = ((PyDict_Contains(((PyObject *)__pyx_v_kwargs), ((PyObject *)__pyx_n_s__af)))); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - if (__pyx_t_1) { - - /* "/root/NetfilterQueue/netfilterqueue.pyx":127 - * def __cinit__(self, *args, **kwargs): - * if "af" in kwargs: - * self.af = kwargs["af"] # <<<<<<<<<<<<<< - * else: - * self.af = socket.AF_INET - */ - __pyx_t_2 = __Pyx_PyDict_GetItem(((PyObject *)__pyx_v_kwargs), ((PyObject *)__pyx_n_s__af)); if (!__pyx_t_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyInt_from_py_u_int16_t(__pyx_t_2); if (unlikely((__pyx_t_3 == (u_int16_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - ((struct __pyx_obj_14netfilterqueue_NFQueue *)__pyx_v_self)->af = __pyx_t_3; - goto __pyx_L5; - } - /*else*/ { - - /* "/root/NetfilterQueue/netfilterqueue.pyx":129 - * self.af = kwargs["af"] - * else: - * self.af = socket.AF_INET # <<<<<<<<<<<<<< + * self.af = kwargs.get("af", PF_INET) # <<<<<<<<<<<<<< * * self.h = nfq_open() */ - __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__socket); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 129; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__AF_INET); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 129; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_3 = __Pyx_PyInt_from_py_u_int16_t(__pyx_t_4); if (unlikely((__pyx_t_3 == (u_int16_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 129; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - ((struct __pyx_obj_14netfilterqueue_NFQueue *)__pyx_v_self)->af = __pyx_t_3; + if (unlikely(__pyx_v_kwargs == Py_None)) { + PyErr_SetString(PyExc_AttributeError, "'NoneType' object has no attribute 'get'"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_L5:; + __pyx_t_1 = PyInt_FromLong(__pyx_e_14netfilterqueue_PF_INET); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyDict_GetItemDefault(((PyObject *)__pyx_v_kwargs), ((PyObject *)__pyx_n_s__af), __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_3 = __Pyx_PyInt_from_py_u_int16_t(__pyx_t_2); if (unlikely((__pyx_t_3 == (u_int16_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + ((struct __pyx_obj_14netfilterqueue_NetfilterQueue *)__pyx_v_self)->af = __pyx_t_3; - /* "/root/NetfilterQueue/netfilterqueue.pyx":131 - * self.af = socket.AF_INET + /* "netfilterqueue.pyx":112 + * self.af = kwargs.get("af", PF_INET) * * self.h = nfq_open() # <<<<<<<<<<<<<< * if self.h == NULL: * raise OSError("Failed to open NFQueue.") */ - ((struct __pyx_obj_14netfilterqueue_NFQueue *)__pyx_v_self)->h = nfq_open(); + ((struct __pyx_obj_14netfilterqueue_NetfilterQueue *)__pyx_v_self)->h = nfq_open(); - /* "/root/NetfilterQueue/netfilterqueue.pyx":132 + /* "netfilterqueue.pyx":113 * * self.h = nfq_open() * if self.h == NULL: # <<<<<<<<<<<<<< * raise OSError("Failed to open NFQueue.") * nfq_unbind_pf(self.h, self.af) # This does NOT kick out previous */ - __pyx_t_1 = (((struct __pyx_obj_14netfilterqueue_NFQueue *)__pyx_v_self)->h == NULL); - if (__pyx_t_1) { + __pyx_t_4 = (((struct __pyx_obj_14netfilterqueue_NetfilterQueue *)__pyx_v_self)->h == NULL); + if (__pyx_t_4) { - /* "/root/NetfilterQueue/netfilterqueue.pyx":133 + /* "netfilterqueue.pyx":114 * self.h = nfq_open() * if self.h == NULL: * raise OSError("Failed to open NFQueue.") # <<<<<<<<<<<<<< * nfq_unbind_pf(self.h, self.af) # This does NOT kick out previous * # running queues */ - __pyx_t_4 = PyObject_Call(__pyx_builtin_OSError, ((PyObject *)__pyx_k_tuple_7), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_4); - __Pyx_Raise(__pyx_t_4, 0, 0); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - goto __pyx_L6; + __pyx_t_2 = PyObject_Call(__pyx_builtin_OSError, ((PyObject *)__pyx_k_tuple_8), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __Pyx_Raise(__pyx_t_2, 0, 0); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + goto __pyx_L5; } - __pyx_L6:; + __pyx_L5:; - /* "/root/NetfilterQueue/netfilterqueue.pyx":134 + /* "netfilterqueue.pyx":115 * if self.h == NULL: * raise OSError("Failed to open NFQueue.") * nfq_unbind_pf(self.h, self.af) # This does NOT kick out previous # <<<<<<<<<<<<<< * # running queues * if nfq_bind_pf(self.h, self.af) < 0: */ - nfq_unbind_pf(((struct __pyx_obj_14netfilterqueue_NFQueue *)__pyx_v_self)->h, ((struct __pyx_obj_14netfilterqueue_NFQueue *)__pyx_v_self)->af); + nfq_unbind_pf(((struct __pyx_obj_14netfilterqueue_NetfilterQueue *)__pyx_v_self)->h, ((struct __pyx_obj_14netfilterqueue_NetfilterQueue *)__pyx_v_self)->af); - /* "/root/NetfilterQueue/netfilterqueue.pyx":136 + /* "netfilterqueue.pyx":117 * nfq_unbind_pf(self.h, self.af) # This does NOT kick out previous * # running queues * if nfq_bind_pf(self.h, self.af) < 0: # <<<<<<<<<<<<<< * raise OSError("Failed to bind family %s." % self.af) * */ - __pyx_t_1 = (nfq_bind_pf(((struct __pyx_obj_14netfilterqueue_NFQueue *)__pyx_v_self)->h, ((struct __pyx_obj_14netfilterqueue_NFQueue *)__pyx_v_self)->af) < 0); - if (__pyx_t_1) { + __pyx_t_4 = (nfq_bind_pf(((struct __pyx_obj_14netfilterqueue_NetfilterQueue *)__pyx_v_self)->h, ((struct __pyx_obj_14netfilterqueue_NetfilterQueue *)__pyx_v_self)->af) < 0); + if (__pyx_t_4) { - /* "/root/NetfilterQueue/netfilterqueue.pyx":137 + /* "netfilterqueue.pyx":118 * # running queues * if nfq_bind_pf(self.h, self.af) < 0: * raise OSError("Failed to bind family %s." % self.af) # <<<<<<<<<<<<<< * * def __dealloc__(self): */ - __pyx_t_4 = __Pyx_PyInt_to_py_u_int16_t(((struct __pyx_obj_14netfilterqueue_NFQueue *)__pyx_v_self)->af); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_2 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_8), __pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(((PyObject *)__pyx_t_2)); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(((PyObject *)__pyx_t_4)); - PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_t_2)); - __Pyx_GIVEREF(((PyObject *)__pyx_t_2)); - __pyx_t_2 = 0; - __pyx_t_2 = PyObject_Call(__pyx_builtin_OSError, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyInt_to_py_u_int16_t(((struct __pyx_obj_14netfilterqueue_NetfilterQueue *)__pyx_v_self)->af); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; - __Pyx_Raise(__pyx_t_2, 0, 0); + __pyx_t_1 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_9), __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(((PyObject *)__pyx_t_1)); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - goto __pyx_L7; + __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(((PyObject *)__pyx_t_2)); + PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_t_1)); + __Pyx_GIVEREF(((PyObject *)__pyx_t_1)); + __pyx_t_1 = 0; + __pyx_t_1 = PyObject_Call(__pyx_builtin_OSError, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; + __Pyx_Raise(__pyx_t_1, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + goto __pyx_L6; } - __pyx_L7:; + __pyx_L6:; __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("netfilterqueue.NFQueue.__cinit__"); + __Pyx_AddTraceback("netfilterqueue.NetfilterQueue.__cinit__"); __pyx_r = -1; __pyx_L0:; __Pyx_DECREF(__pyx_v_args); @@ -2078,7 +2383,7 @@ static int __pyx_pf_14netfilterqueue_7NFQueue_0__cinit__(PyObject *__pyx_v_self, return __pyx_r; } -/* "/root/NetfilterQueue/netfilterqueue.pyx":139 +/* "netfilterqueue.pyx":120 * raise OSError("Failed to bind family %s." % self.af) * * def __dealloc__(self): # <<<<<<<<<<<<<< @@ -2086,57 +2391,56 @@ static int __pyx_pf_14netfilterqueue_7NFQueue_0__cinit__(PyObject *__pyx_v_self, * nfq_destroy_queue(self.qh) */ -static void __pyx_pf_14netfilterqueue_7NFQueue_1__dealloc__(PyObject *__pyx_v_self); /*proto*/ -static void __pyx_pf_14netfilterqueue_7NFQueue_1__dealloc__(PyObject *__pyx_v_self) { +static void __pyx_pf_14netfilterqueue_14NetfilterQueue_1__dealloc__(PyObject *__pyx_v_self); /*proto*/ +static void __pyx_pf_14netfilterqueue_14NetfilterQueue_1__dealloc__(PyObject *__pyx_v_self) { int __pyx_t_1; __Pyx_RefNannySetupContext("__dealloc__"); - /* "/root/NetfilterQueue/netfilterqueue.pyx":140 + /* "netfilterqueue.pyx":121 * * def __dealloc__(self): * if self.qh != NULL: # <<<<<<<<<<<<<< * nfq_destroy_queue(self.qh) * # Don't call nfq_unbind_pf unless you want to disconnect any other */ - __pyx_t_1 = (((struct __pyx_obj_14netfilterqueue_NFQueue *)__pyx_v_self)->qh != NULL); + __pyx_t_1 = (((struct __pyx_obj_14netfilterqueue_NetfilterQueue *)__pyx_v_self)->qh != NULL); if (__pyx_t_1) { - /* "/root/NetfilterQueue/netfilterqueue.pyx":141 + /* "netfilterqueue.pyx":122 * def __dealloc__(self): * if self.qh != NULL: * nfq_destroy_queue(self.qh) # <<<<<<<<<<<<<< * # Don't call nfq_unbind_pf unless you want to disconnect any other * # processes using this libnetfilter_queue on this protocol family! */ - nfq_destroy_queue(((struct __pyx_obj_14netfilterqueue_NFQueue *)__pyx_v_self)->qh); + nfq_destroy_queue(((struct __pyx_obj_14netfilterqueue_NetfilterQueue *)__pyx_v_self)->qh); goto __pyx_L5; } __pyx_L5:; - /* "/root/NetfilterQueue/netfilterqueue.pyx":144 + /* "netfilterqueue.pyx":125 * # Don't call nfq_unbind_pf unless you want to disconnect any other * # processes using this libnetfilter_queue on this protocol family! * nfq_close(self.h) # <<<<<<<<<<<<<< * - * def bind(self, object handler, int queue_num, u_int32_t maxlen, u_int8_t mode=NFQNL_COPY_PACKET, u_int32_t range=MaxPacketSize): + * def bind(self, int queue_num, u_int32_t maxlen=DEFAULT_MAX_QUEUELEN, u_int8_t mode=NFQNL_COPY_PACKET, u_int32_t range=MaxPacketSize): */ - nfq_close(((struct __pyx_obj_14netfilterqueue_NFQueue *)__pyx_v_self)->h); + nfq_close(((struct __pyx_obj_14netfilterqueue_NetfilterQueue *)__pyx_v_self)->h); __Pyx_RefNannyFinishContext(); } -/* "/root/NetfilterQueue/netfilterqueue.pyx":146 +/* "netfilterqueue.pyx":127 * nfq_close(self.h) * - * def bind(self, object handler, int queue_num, u_int32_t maxlen, u_int8_t mode=NFQNL_COPY_PACKET, u_int32_t range=MaxPacketSize): # <<<<<<<<<<<<<< - * """Create a new queue with the given callback function.""" - * self.qh = nfq_create_queue(self.h, queue_num, global_callback, handler) + * def bind(self, int queue_num, u_int32_t maxlen=DEFAULT_MAX_QUEUELEN, u_int8_t mode=NFQNL_COPY_PACKET, u_int32_t range=MaxPacketSize): # <<<<<<<<<<<<<< + * """Create and bind to a new queue.""" + * self.qh = nfq_create_queue(self.h, queue_num, global_callback, self) */ -static PyObject *__pyx_pf_14netfilterqueue_7NFQueue_2bind(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_14netfilterqueue_7NFQueue_2bind[] = "Create a new queue with the given callback function."; -static PyObject *__pyx_pf_14netfilterqueue_7NFQueue_2bind(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_handler = 0; +static PyObject *__pyx_pf_14netfilterqueue_14NetfilterQueue_2bind(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static char __pyx_doc_14netfilterqueue_14NetfilterQueue_2bind[] = "Create and bind to a new queue."; +static PyObject *__pyx_pf_14netfilterqueue_14NetfilterQueue_2bind(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { int __pyx_v_queue_num; u_int32_t __pyx_v_maxlen; u_int8_t __pyx_v_mode; @@ -2145,13 +2449,12 @@ static PyObject *__pyx_pf_14netfilterqueue_7NFQueue_2bind(PyObject *__pyx_v_self int __pyx_t_1; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__handler,&__pyx_n_s__queue_num,&__pyx_n_s__maxlen,&__pyx_n_s__mode,&__pyx_n_s__range,0}; + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__queue_num,&__pyx_n_s__maxlen,&__pyx_n_s__mode,&__pyx_n_s__range,0}; __Pyx_RefNannySetupContext("bind"); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args = PyDict_Size(__pyx_kwds); - PyObject* values[5] = {0,0,0,0,0}; + PyObject* values[4] = {0,0,0,0}; switch (PyTuple_GET_SIZE(__pyx_args)) { - case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); @@ -2161,120 +2464,113 @@ static PyObject *__pyx_pf_14netfilterqueue_7NFQueue_2bind(PyObject *__pyx_v_self } switch (PyTuple_GET_SIZE(__pyx_args)) { case 0: - values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__handler); + values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__queue_num); if (likely(values[0])) kw_args--; else goto __pyx_L5_argtuple_error; case 1: - values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__queue_num); - if (likely(values[1])) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("bind", 0, 3, 5, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + if (kw_args > 0) { + PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__maxlen); + if (value) { values[1] = value; kw_args--; } } case 2: - values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__maxlen); - if (likely(values[2])) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("bind", 0, 3, 5, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + if (kw_args > 0) { + PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__mode); + if (value) { values[2] = value; kw_args--; } } case 3: - if (kw_args > 0) { - PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__mode); - if (value) { values[3] = value; kw_args--; } - } - case 4: if (kw_args > 0) { PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__range); - if (value) { values[4] = value; kw_args--; } + if (value) { values[3] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "bind") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "bind") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } - __pyx_v_handler = values[0]; - __pyx_v_queue_num = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_queue_num == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L3_error;} - __pyx_v_maxlen = __Pyx_PyInt_from_py_u_int32_t(values[2]); if (unlikely((__pyx_v_maxlen == (u_int32_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L3_error;} - if (values[3]) { - __pyx_v_mode = __Pyx_PyInt_from_py_u_int8_t(values[3]); if (unlikely((__pyx_v_mode == (u_int8_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_queue_num = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_queue_num == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + if (values[1]) { + __pyx_v_maxlen = __Pyx_PyInt_from_py_u_int32_t(values[1]); if (unlikely((__pyx_v_maxlen == (u_int32_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } else { - __pyx_v_mode = __pyx_k_9; + __pyx_v_maxlen = __pyx_k_10; } - if (values[4]) { - __pyx_v_range = __Pyx_PyInt_from_py_u_int32_t(values[4]); if (unlikely((__pyx_v_range == (u_int32_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + if (values[2]) { + __pyx_v_mode = __Pyx_PyInt_from_py_u_int8_t(values[2]); if (unlikely((__pyx_v_mode == (u_int8_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + } else { + __pyx_v_mode = __pyx_k_11; + } + if (values[3]) { + __pyx_v_range = __Pyx_PyInt_from_py_u_int32_t(values[3]); if (unlikely((__pyx_v_range == (u_int32_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } else { __pyx_v_range = ((u_int32_t)65535); } } else { - __pyx_v_mode = __pyx_k_9; + __pyx_v_maxlen = __pyx_k_10; + __pyx_v_mode = __pyx_k_11; __pyx_v_range = ((u_int32_t)65535); switch (PyTuple_GET_SIZE(__pyx_args)) { - case 5: - __pyx_v_range = __Pyx_PyInt_from_py_u_int32_t(PyTuple_GET_ITEM(__pyx_args, 4)); if (unlikely((__pyx_v_range == (u_int32_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L3_error;} - case 4: - __pyx_v_mode = __Pyx_PyInt_from_py_u_int8_t(PyTuple_GET_ITEM(__pyx_args, 3)); if (unlikely((__pyx_v_mode == (u_int8_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L3_error;} - case 3: - __pyx_v_maxlen = __Pyx_PyInt_from_py_u_int32_t(PyTuple_GET_ITEM(__pyx_args, 2)); if (unlikely((__pyx_v_maxlen == (u_int32_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L3_error;} - __pyx_v_queue_num = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_queue_num == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L3_error;} - __pyx_v_handler = PyTuple_GET_ITEM(__pyx_args, 0); + case 4: __pyx_v_range = __Pyx_PyInt_from_py_u_int32_t(PyTuple_GET_ITEM(__pyx_args, 3)); if (unlikely((__pyx_v_range == (u_int32_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + case 3: __pyx_v_mode = __Pyx_PyInt_from_py_u_int8_t(PyTuple_GET_ITEM(__pyx_args, 2)); if (unlikely((__pyx_v_mode == (u_int8_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + case 2: __pyx_v_maxlen = __Pyx_PyInt_from_py_u_int32_t(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_maxlen == (u_int32_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + case 1: __pyx_v_queue_num = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 0)); if (unlikely((__pyx_v_queue_num == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L3_error;} break; default: goto __pyx_L5_argtuple_error; } } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("bind", 0, 3, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("bind", 0, 1, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; - __Pyx_AddTraceback("netfilterqueue.NFQueue.bind"); + __Pyx_AddTraceback("netfilterqueue.NetfilterQueue.bind"); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - /* "/root/NetfilterQueue/netfilterqueue.pyx":148 - * def bind(self, object handler, int queue_num, u_int32_t maxlen, u_int8_t mode=NFQNL_COPY_PACKET, u_int32_t range=MaxPacketSize): - * """Create a new queue with the given callback function.""" - * self.qh = nfq_create_queue(self.h, queue_num, global_callback, handler) # <<<<<<<<<<<<<< + /* "netfilterqueue.pyx":129 + * def bind(self, int queue_num, u_int32_t maxlen=DEFAULT_MAX_QUEUELEN, u_int8_t mode=NFQNL_COPY_PACKET, u_int32_t range=MaxPacketSize): + * """Create and bind to a new queue.""" + * self.qh = nfq_create_queue(self.h, queue_num, global_callback, self) # <<<<<<<<<<<<<< * if self.qh == NULL: * raise OSError("Failed to create queue %s." % queue_num) */ - ((struct __pyx_obj_14netfilterqueue_NFQueue *)__pyx_v_self)->qh = nfq_create_queue(((struct __pyx_obj_14netfilterqueue_NFQueue *)__pyx_v_self)->h, __pyx_v_queue_num, ((nfq_callback *)__pyx_f_14netfilterqueue_global_callback), ((void *)__pyx_v_handler)); + ((struct __pyx_obj_14netfilterqueue_NetfilterQueue *)__pyx_v_self)->qh = nfq_create_queue(((struct __pyx_obj_14netfilterqueue_NetfilterQueue *)__pyx_v_self)->h, __pyx_v_queue_num, ((nfq_callback *)__pyx_f_14netfilterqueue_global_callback), ((void *)__pyx_v_self)); - /* "/root/NetfilterQueue/netfilterqueue.pyx":149 - * """Create a new queue with the given callback function.""" - * self.qh = nfq_create_queue(self.h, queue_num, global_callback, handler) + /* "netfilterqueue.pyx":130 + * """Create and bind to a new queue.""" + * self.qh = nfq_create_queue(self.h, queue_num, global_callback, self) * if self.qh == NULL: # <<<<<<<<<<<<<< * raise OSError("Failed to create queue %s." % queue_num) * */ - __pyx_t_1 = (((struct __pyx_obj_14netfilterqueue_NFQueue *)__pyx_v_self)->qh == NULL); + __pyx_t_1 = (((struct __pyx_obj_14netfilterqueue_NetfilterQueue *)__pyx_v_self)->qh == NULL); if (__pyx_t_1) { - /* "/root/NetfilterQueue/netfilterqueue.pyx":150 - * self.qh = nfq_create_queue(self.h, queue_num, global_callback, handler) + /* "netfilterqueue.pyx":131 + * self.qh = nfq_create_queue(self.h, queue_num, global_callback, self) * if self.qh == NULL: * raise OSError("Failed to create queue %s." % queue_num) # <<<<<<<<<<<<<< * * if range > MaxCopySize: */ - __pyx_t_2 = PyInt_FromLong(__pyx_v_queue_num); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyInt_FromLong(__pyx_v_queue_num); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_10), __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_12), __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_3)); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_2)); PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_t_3)); __Pyx_GIVEREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; - __pyx_t_3 = PyObject_Call(__pyx_builtin_OSError, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyObject_Call(__pyx_builtin_OSError, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; __Pyx_Raise(__pyx_t_3, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;} goto __pyx_L6; } __pyx_L6:; - /* "/root/NetfilterQueue/netfilterqueue.pyx":152 + /* "netfilterqueue.pyx":133 * raise OSError("Failed to create queue %s." % queue_num) * * if range > MaxCopySize: # <<<<<<<<<<<<<< @@ -2284,7 +2580,7 @@ static PyObject *__pyx_pf_14netfilterqueue_7NFQueue_2bind(PyObject *__pyx_v_self __pyx_t_1 = (__pyx_v_range > 4016); if (__pyx_t_1) { - /* "/root/NetfilterQueue/netfilterqueue.pyx":153 + /* "netfilterqueue.pyx":134 * * if range > MaxCopySize: * range = MaxCopySize # <<<<<<<<<<<<<< @@ -2296,47 +2592,47 @@ static PyObject *__pyx_pf_14netfilterqueue_7NFQueue_2bind(PyObject *__pyx_v_self } __pyx_L7:; - /* "/root/NetfilterQueue/netfilterqueue.pyx":154 + /* "netfilterqueue.pyx":135 * if range > MaxCopySize: * range = MaxCopySize * if nfq_set_mode(self.qh, mode, range) < 0: # <<<<<<<<<<<<<< * raise OSError("Failed to set packet copy mode.") * */ - __pyx_t_1 = (nfq_set_mode(((struct __pyx_obj_14netfilterqueue_NFQueue *)__pyx_v_self)->qh, __pyx_v_mode, __pyx_v_range) < 0); + __pyx_t_1 = (nfq_set_mode(((struct __pyx_obj_14netfilterqueue_NetfilterQueue *)__pyx_v_self)->qh, __pyx_v_mode, __pyx_v_range) < 0); if (__pyx_t_1) { - /* "/root/NetfilterQueue/netfilterqueue.pyx":155 + /* "netfilterqueue.pyx":136 * range = MaxCopySize * if nfq_set_mode(self.qh, mode, range) < 0: * raise OSError("Failed to set packet copy mode.") # <<<<<<<<<<<<<< * * nfq_set_queue_maxlen(self.qh, maxlen) */ - __pyx_t_3 = PyObject_Call(__pyx_builtin_OSError, ((PyObject *)__pyx_k_tuple_12), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyObject_Call(__pyx_builtin_OSError, ((PyObject *)__pyx_k_tuple_14), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L1_error;} goto __pyx_L8; } __pyx_L8:; - /* "/root/NetfilterQueue/netfilterqueue.pyx":157 + /* "netfilterqueue.pyx":138 * raise OSError("Failed to set packet copy mode.") * * nfq_set_queue_maxlen(self.qh, maxlen) # <<<<<<<<<<<<<< * * def unbind(self): */ - nfq_set_queue_maxlen(((struct __pyx_obj_14netfilterqueue_NFQueue *)__pyx_v_self)->qh, __pyx_v_maxlen); + nfq_set_queue_maxlen(((struct __pyx_obj_14netfilterqueue_NetfilterQueue *)__pyx_v_self)->qh, __pyx_v_maxlen); __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("netfilterqueue.NFQueue.bind"); + __Pyx_AddTraceback("netfilterqueue.NetfilterQueue.bind"); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -2344,7 +2640,7 @@ static PyObject *__pyx_pf_14netfilterqueue_7NFQueue_2bind(PyObject *__pyx_v_self return __pyx_r; } -/* "/root/NetfilterQueue/netfilterqueue.pyx":159 +/* "netfilterqueue.pyx":140 * nfq_set_queue_maxlen(self.qh, maxlen) * * def unbind(self): # <<<<<<<<<<<<<< @@ -2352,31 +2648,31 @@ static PyObject *__pyx_pf_14netfilterqueue_7NFQueue_2bind(PyObject *__pyx_v_self * if self.qh != NULL: */ -static PyObject *__pyx_pf_14netfilterqueue_7NFQueue_3unbind(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_14netfilterqueue_7NFQueue_3unbind[] = "Destroy the queue."; -static PyObject *__pyx_pf_14netfilterqueue_7NFQueue_3unbind(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { +static PyObject *__pyx_pf_14netfilterqueue_14NetfilterQueue_3unbind(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static char __pyx_doc_14netfilterqueue_14NetfilterQueue_3unbind[] = "Destroy the queue."; +static PyObject *__pyx_pf_14netfilterqueue_14NetfilterQueue_3unbind(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = NULL; int __pyx_t_1; __Pyx_RefNannySetupContext("unbind"); - /* "/root/NetfilterQueue/netfilterqueue.pyx":161 + /* "netfilterqueue.pyx":142 * def unbind(self): * """Destroy the queue.""" * if self.qh != NULL: # <<<<<<<<<<<<<< * nfq_destroy_queue(self.qh) * # See warning about nfq_unbind_pf in __dealloc__ above. */ - __pyx_t_1 = (((struct __pyx_obj_14netfilterqueue_NFQueue *)__pyx_v_self)->qh != NULL); + __pyx_t_1 = (((struct __pyx_obj_14netfilterqueue_NetfilterQueue *)__pyx_v_self)->qh != NULL); if (__pyx_t_1) { - /* "/root/NetfilterQueue/netfilterqueue.pyx":162 + /* "netfilterqueue.pyx":143 * """Destroy the queue.""" * if self.qh != NULL: * nfq_destroy_queue(self.qh) # <<<<<<<<<<<<<< * # See warning about nfq_unbind_pf in __dealloc__ above. * */ - nfq_destroy_queue(((struct __pyx_obj_14netfilterqueue_NFQueue *)__pyx_v_self)->qh); + nfq_destroy_queue(((struct __pyx_obj_14netfilterqueue_NetfilterQueue *)__pyx_v_self)->qh); goto __pyx_L5; } __pyx_L5:; @@ -2387,7 +2683,7 @@ static PyObject *__pyx_pf_14netfilterqueue_7NFQueue_3unbind(PyObject *__pyx_v_se return __pyx_r; } -/* "/root/NetfilterQueue/netfilterqueue.pyx":165 +/* "netfilterqueue.pyx":146 * # See warning about nfq_unbind_pf in __dealloc__ above. * * def run(self): # <<<<<<<<<<<<<< @@ -2395,9 +2691,9 @@ static PyObject *__pyx_pf_14netfilterqueue_7NFQueue_3unbind(PyObject *__pyx_v_se * cdef int fd = nfq_fd(self.h) */ -static PyObject *__pyx_pf_14netfilterqueue_7NFQueue_4run(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_14netfilterqueue_7NFQueue_4run[] = "Begin accepting packets."; -static PyObject *__pyx_pf_14netfilterqueue_7NFQueue_4run(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { +static PyObject *__pyx_pf_14netfilterqueue_14NetfilterQueue_4run(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static char __pyx_doc_14netfilterqueue_14NetfilterQueue_4run[] = "Begin accepting packets."; +static PyObject *__pyx_pf_14netfilterqueue_14NetfilterQueue_4run(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { int __pyx_v_fd; char __pyx_v_buf[4096]; int __pyx_v_rv; @@ -2405,16 +2701,16 @@ static PyObject *__pyx_pf_14netfilterqueue_7NFQueue_4run(PyObject *__pyx_v_self, int __pyx_t_1; __Pyx_RefNannySetupContext("run"); - /* "/root/NetfilterQueue/netfilterqueue.pyx":167 + /* "netfilterqueue.pyx":148 * def run(self): * """Begin accepting packets.""" * cdef int fd = nfq_fd(self.h) # <<<<<<<<<<<<<< * cdef char buf[BufferSize] * cdef int rv */ - __pyx_v_fd = nfq_fd(((struct __pyx_obj_14netfilterqueue_NFQueue *)__pyx_v_self)->h); + __pyx_v_fd = nfq_fd(((struct __pyx_obj_14netfilterqueue_NetfilterQueue *)__pyx_v_self)->h); - /* "/root/NetfilterQueue/netfilterqueue.pyx":170 + /* "netfilterqueue.pyx":151 * cdef char buf[BufferSize] * cdef int rv * with nogil: # <<<<<<<<<<<<<< @@ -2428,7 +2724,7 @@ static PyObject *__pyx_pf_14netfilterqueue_7NFQueue_4run(PyObject *__pyx_v_self, Py_UNBLOCK_THREADS /*try:*/ { - /* "/root/NetfilterQueue/netfilterqueue.pyx":171 + /* "netfilterqueue.pyx":152 * cdef int rv * with nogil: * rv = recv(fd, buf, sizeof(buf), 0) # <<<<<<<<<<<<<< @@ -2438,7 +2734,7 @@ static PyObject *__pyx_pf_14netfilterqueue_7NFQueue_4run(PyObject *__pyx_v_self, __pyx_v_rv = recv(__pyx_v_fd, __pyx_v_buf, (sizeof(__pyx_v_buf)), 0); } - /* "/root/NetfilterQueue/netfilterqueue.pyx":170 + /* "netfilterqueue.pyx":151 * cdef char buf[BufferSize] * cdef int rv * with nogil: # <<<<<<<<<<<<<< @@ -2450,7 +2746,7 @@ static PyObject *__pyx_pf_14netfilterqueue_7NFQueue_4run(PyObject *__pyx_v_self, } } - /* "/root/NetfilterQueue/netfilterqueue.pyx":172 + /* "netfilterqueue.pyx":153 * with nogil: * rv = recv(fd, buf, sizeof(buf), 0) * while rv >= 0: # <<<<<<<<<<<<<< @@ -2461,16 +2757,16 @@ static PyObject *__pyx_pf_14netfilterqueue_7NFQueue_4run(PyObject *__pyx_v_self, __pyx_t_1 = (__pyx_v_rv >= 0); if (!__pyx_t_1) break; - /* "/root/NetfilterQueue/netfilterqueue.pyx":173 + /* "netfilterqueue.pyx":154 * rv = recv(fd, buf, sizeof(buf), 0) * while rv >= 0: * nfq_handle_packet(self.h, buf, rv) # <<<<<<<<<<<<<< * with nogil: * rv = recv(fd, buf, sizeof(buf), 0) */ - nfq_handle_packet(((struct __pyx_obj_14netfilterqueue_NFQueue *)__pyx_v_self)->h, __pyx_v_buf, __pyx_v_rv); + nfq_handle_packet(((struct __pyx_obj_14netfilterqueue_NetfilterQueue *)__pyx_v_self)->h, __pyx_v_buf, __pyx_v_rv); - /* "/root/NetfilterQueue/netfilterqueue.pyx":174 + /* "netfilterqueue.pyx":155 * while rv >= 0: * nfq_handle_packet(self.h, buf, rv) * with nogil: # <<<<<<<<<<<<<< @@ -2484,17 +2780,17 @@ static PyObject *__pyx_pf_14netfilterqueue_7NFQueue_4run(PyObject *__pyx_v_self, Py_UNBLOCK_THREADS /*try:*/ { - /* "/root/NetfilterQueue/netfilterqueue.pyx":175 + /* "netfilterqueue.pyx":156 * nfq_handle_packet(self.h, buf, rv) * with nogil: * rv = recv(fd, buf, sizeof(buf), 0) # <<<<<<<<<<<<<< * - * def handle(self, NFPacket packet): + * def handle(self, Packet packet): */ __pyx_v_rv = recv(__pyx_v_fd, __pyx_v_buf, (sizeof(__pyx_v_buf)), 0); } - /* "/root/NetfilterQueue/netfilterqueue.pyx":174 + /* "netfilterqueue.pyx":155 * while rv >= 0: * nfq_handle_packet(self.h, buf, rv) * with nogil: # <<<<<<<<<<<<<< @@ -2513,28 +2809,30 @@ static PyObject *__pyx_pf_14netfilterqueue_7NFQueue_4run(PyObject *__pyx_v_self, return __pyx_r; } -/* "/root/NetfilterQueue/netfilterqueue.pyx":177 +/* "netfilterqueue.pyx":158 * rv = recv(fd, buf, sizeof(buf), 0) * - * def handle(self, NFPacket packet): # <<<<<<<<<<<<<< + * def handle(self, Packet packet): # <<<<<<<<<<<<<< * """Handle a single packet. User-defined classes should override this.""" * packet.accept() */ -static PyObject *__pyx_pf_14netfilterqueue_7NFQueue_5handle(PyObject *__pyx_v_self, PyObject *__pyx_v_packet); /*proto*/ -static char __pyx_doc_14netfilterqueue_7NFQueue_5handle[] = "Handle a single packet. User-defined classes should override this."; -static PyObject *__pyx_pf_14netfilterqueue_7NFQueue_5handle(PyObject *__pyx_v_self, PyObject *__pyx_v_packet) { +static PyObject *__pyx_pf_14netfilterqueue_14NetfilterQueue_5handle(PyObject *__pyx_v_self, PyObject *__pyx_v_packet); /*proto*/ +static char __pyx_doc_14netfilterqueue_14NetfilterQueue_5handle[] = "Handle a single packet. User-defined classes should override this."; +static PyObject *__pyx_pf_14netfilterqueue_14NetfilterQueue_5handle(PyObject *__pyx_v_self, PyObject *__pyx_v_packet) { PyObject *__pyx_r = NULL; PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("handle"); - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_packet), __pyx_ptype_14netfilterqueue_NFPacket, 1, "packet", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 177; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_packet), __pyx_ptype_14netfilterqueue_Packet, 1, "packet", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "/root/NetfilterQueue/netfilterqueue.pyx":179 - * def handle(self, NFPacket packet): + /* "netfilterqueue.pyx":160 + * def handle(self, Packet packet): * """Handle a single packet. User-defined classes should override this.""" * packet.accept() # <<<<<<<<<<<<<< + * + * PROTOCOLS = { */ - __pyx_t_1 = ((struct __pyx_vtabstruct_14netfilterqueue_NFPacket *)((struct __pyx_obj_14netfilterqueue_NFPacket *)__pyx_v_packet)->__pyx_vtab)->accept(((struct __pyx_obj_14netfilterqueue_NFPacket *)__pyx_v_packet), 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 179; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = ((struct __pyx_vtabstruct_14netfilterqueue_Packet *)((struct __pyx_obj_14netfilterqueue_Packet *)__pyx_v_packet)->__pyx_vtab)->accept(((struct __pyx_obj_14netfilterqueue_Packet *)__pyx_v_packet), 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 160; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -2542,66 +2840,66 @@ static PyObject *__pyx_pf_14netfilterqueue_7NFQueue_5handle(PyObject *__pyx_v_se goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("netfilterqueue.NFQueue.handle"); + __Pyx_AddTraceback("netfilterqueue.NetfilterQueue.handle"); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } -static struct __pyx_vtabstruct_14netfilterqueue_NFPacket __pyx_vtable_14netfilterqueue_NFPacket; +static struct __pyx_vtabstruct_14netfilterqueue_Packet __pyx_vtable_14netfilterqueue_Packet; -static PyObject *__pyx_tp_new_14netfilterqueue_NFPacket(PyTypeObject *t, PyObject *a, PyObject *k) { - struct __pyx_obj_14netfilterqueue_NFPacket *p; +static PyObject *__pyx_tp_new_14netfilterqueue_Packet(PyTypeObject *t, PyObject *a, PyObject *k) { + struct __pyx_obj_14netfilterqueue_Packet *p; PyObject *o = (*t->tp_alloc)(t, 0); if (!o) return 0; - p = ((struct __pyx_obj_14netfilterqueue_NFPacket *)o); - p->__pyx_vtab = __pyx_vtabptr_14netfilterqueue_NFPacket; - if (__pyx_pf_14netfilterqueue_8NFPacket_0__cinit__(o, __pyx_empty_tuple, NULL) < 0) { + p = ((struct __pyx_obj_14netfilterqueue_Packet *)o); + p->__pyx_vtab = __pyx_vtabptr_14netfilterqueue_Packet; + if (__pyx_pf_14netfilterqueue_6Packet___cinit__(o, __pyx_empty_tuple, NULL) < 0) { Py_DECREF(o); o = 0; } return o; } -static void __pyx_tp_dealloc_14netfilterqueue_NFPacket(PyObject *o) { +static void __pyx_tp_dealloc_14netfilterqueue_Packet(PyObject *o) { (*Py_TYPE(o)->tp_free)(o); } -static PyObject *__pyx_getprop_14netfilterqueue_8NFPacket_id(PyObject *o, void *x) { - return __pyx_pf_14netfilterqueue_8NFPacket_2id_0__get__(o); +static PyObject *__pyx_getprop_14netfilterqueue_6Packet_id(PyObject *o, void *x) { + return __pyx_pf_14netfilterqueue_6Packet_2id___get__(o); } -static PyObject *__pyx_getprop_14netfilterqueue_8NFPacket_hw_protocol(PyObject *o, void *x) { - return __pyx_pf_14netfilterqueue_8NFPacket_11hw_protocol_0__get__(o); +static PyObject *__pyx_getprop_14netfilterqueue_6Packet_hw_protocol(PyObject *o, void *x) { + return __pyx_pf_14netfilterqueue_6Packet_11hw_protocol___get__(o); } -static PyObject *__pyx_getprop_14netfilterqueue_8NFPacket_hook(PyObject *o, void *x) { - return __pyx_pf_14netfilterqueue_8NFPacket_4hook_0__get__(o); +static PyObject *__pyx_getprop_14netfilterqueue_6Packet_hook(PyObject *o, void *x) { + return __pyx_pf_14netfilterqueue_6Packet_4hook___get__(o); } -static PyObject *__pyx_getprop_14netfilterqueue_8NFPacket_payload(PyObject *o, void *x) { - return __pyx_pf_14netfilterqueue_8NFPacket_7payload_0__get__(o); +static PyObject *__pyx_getprop_14netfilterqueue_6Packet_payload(PyObject *o, void *x) { + return __pyx_pf_14netfilterqueue_6Packet_7payload___get__(o); } -static PyMethodDef __pyx_methods_14netfilterqueue_NFPacket[] = { - {__Pyx_NAMESTR("get_payload"), (PyCFunction)__pyx_pf_14netfilterqueue_8NFPacket_2get_payload, METH_NOARGS, __Pyx_DOCSTR(0)}, - {__Pyx_NAMESTR("get_payload_len"), (PyCFunction)__pyx_pf_14netfilterqueue_8NFPacket_3get_payload_len, METH_NOARGS, __Pyx_DOCSTR(0)}, - {__Pyx_NAMESTR("get_timestamp"), (PyCFunction)__pyx_pf_14netfilterqueue_8NFPacket_4get_timestamp, METH_NOARGS, __Pyx_DOCSTR(0)}, - {__Pyx_NAMESTR("set_mark"), (PyCFunction)__pyx_pf_14netfilterqueue_8NFPacket_5set_mark, METH_O, __Pyx_DOCSTR(0)}, - {__Pyx_NAMESTR("accept"), (PyCFunction)__pyx_pf_14netfilterqueue_8NFPacket_6accept, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_14netfilterqueue_8NFPacket_6accept)}, - {__Pyx_NAMESTR("drop"), (PyCFunction)__pyx_pf_14netfilterqueue_8NFPacket_7drop, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_14netfilterqueue_8NFPacket_7drop)}, +static PyMethodDef __pyx_methods_14netfilterqueue_Packet[] = { + {__Pyx_NAMESTR("get_payload"), (PyCFunction)__pyx_pf_14netfilterqueue_6Packet_2get_payload, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_14netfilterqueue_6Packet_2get_payload)}, + {__Pyx_NAMESTR("get_payload_len"), (PyCFunction)__pyx_pf_14netfilterqueue_6Packet_3get_payload_len, METH_NOARGS, __Pyx_DOCSTR(0)}, + {__Pyx_NAMESTR("get_timestamp"), (PyCFunction)__pyx_pf_14netfilterqueue_6Packet_4get_timestamp, METH_NOARGS, __Pyx_DOCSTR(0)}, + {__Pyx_NAMESTR("set_mark"), (PyCFunction)__pyx_pf_14netfilterqueue_6Packet_5set_mark, METH_O, __Pyx_DOCSTR(0)}, + {__Pyx_NAMESTR("accept"), (PyCFunction)__pyx_pf_14netfilterqueue_6Packet_6accept, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_14netfilterqueue_6Packet_6accept)}, + {__Pyx_NAMESTR("drop"), (PyCFunction)__pyx_pf_14netfilterqueue_6Packet_7drop, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_14netfilterqueue_6Packet_7drop)}, {0, 0, 0, 0} }; -static struct PyGetSetDef __pyx_getsets_14netfilterqueue_NFPacket[] = { - {(char *)"id", __pyx_getprop_14netfilterqueue_8NFPacket_id, 0, 0, 0}, - {(char *)"hw_protocol", __pyx_getprop_14netfilterqueue_8NFPacket_hw_protocol, 0, 0, 0}, - {(char *)"hook", __pyx_getprop_14netfilterqueue_8NFPacket_hook, 0, 0, 0}, - {(char *)"payload", __pyx_getprop_14netfilterqueue_8NFPacket_payload, 0, 0, 0}, +static struct PyGetSetDef __pyx_getsets_14netfilterqueue_Packet[] = { + {(char *)"id", __pyx_getprop_14netfilterqueue_6Packet_id, 0, 0, 0}, + {(char *)"hw_protocol", __pyx_getprop_14netfilterqueue_6Packet_hw_protocol, 0, 0, 0}, + {(char *)"hook", __pyx_getprop_14netfilterqueue_6Packet_hook, 0, 0, 0}, + {(char *)"payload", __pyx_getprop_14netfilterqueue_6Packet_payload, 0, 0, 0}, {0, 0, 0, 0, 0} }; -static PyNumberMethods __pyx_tp_as_number_NFPacket = { +static PyNumberMethods __pyx_tp_as_number_Packet = { 0, /*nb_add*/ 0, /*nb_subtract*/ 0, /*nb_multiply*/ @@ -2659,7 +2957,7 @@ static PyNumberMethods __pyx_tp_as_number_NFPacket = { #endif }; -static PySequenceMethods __pyx_tp_as_sequence_NFPacket = { +static PySequenceMethods __pyx_tp_as_sequence_Packet = { 0, /*sq_length*/ 0, /*sq_concat*/ 0, /*sq_repeat*/ @@ -2672,13 +2970,13 @@ static PySequenceMethods __pyx_tp_as_sequence_NFPacket = { 0, /*sq_inplace_repeat*/ }; -static PyMappingMethods __pyx_tp_as_mapping_NFPacket = { +static PyMappingMethods __pyx_tp_as_mapping_Packet = { 0, /*mp_length*/ 0, /*mp_subscript*/ 0, /*mp_ass_subscript*/ }; -static PyBufferProcs __pyx_tp_as_buffer_NFPacket = { +static PyBufferProcs __pyx_tp_as_buffer_Packet = { #if PY_MAJOR_VERSION < 3 0, /*bf_getreadbuffer*/ #endif @@ -2699,12 +2997,12 @@ static PyBufferProcs __pyx_tp_as_buffer_NFPacket = { #endif }; -PyTypeObject __pyx_type_14netfilterqueue_NFPacket = { +static PyTypeObject __pyx_type_14netfilterqueue_Packet = { PyVarObject_HEAD_INIT(0, 0) - __Pyx_NAMESTR("netfilterqueue.NFPacket"), /*tp_name*/ - sizeof(struct __pyx_obj_14netfilterqueue_NFPacket), /*tp_basicsize*/ + __Pyx_NAMESTR("netfilterqueue.Packet"), /*tp_name*/ + sizeof(struct __pyx_obj_14netfilterqueue_Packet), /*tp_basicsize*/ 0, /*tp_itemsize*/ - __pyx_tp_dealloc_14netfilterqueue_NFPacket, /*tp_dealloc*/ + __pyx_tp_dealloc_14netfilterqueue_Packet, /*tp_dealloc*/ 0, /*tp_print*/ 0, /*tp_getattr*/ 0, /*tp_setattr*/ @@ -2714,26 +3012,26 @@ PyTypeObject __pyx_type_14netfilterqueue_NFPacket = { 0, /*reserved*/ #endif 0, /*tp_repr*/ - &__pyx_tp_as_number_NFPacket, /*tp_as_number*/ - &__pyx_tp_as_sequence_NFPacket, /*tp_as_sequence*/ - &__pyx_tp_as_mapping_NFPacket, /*tp_as_mapping*/ + &__pyx_tp_as_number_Packet, /*tp_as_number*/ + &__pyx_tp_as_sequence_Packet, /*tp_as_sequence*/ + &__pyx_tp_as_mapping_Packet, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ - __pyx_pf_14netfilterqueue_8NFPacket_1__str__, /*tp_str*/ + __pyx_pf_14netfilterqueue_6Packet_1__str__, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ - &__pyx_tp_as_buffer_NFPacket, /*tp_as_buffer*/ + &__pyx_tp_as_buffer_Packet, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/ - __Pyx_DOCSTR("A packet received from NFQueue."), /*tp_doc*/ + __Pyx_DOCSTR("A packet received from NetfilterQueue."), /*tp_doc*/ 0, /*tp_traverse*/ 0, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ - __pyx_methods_14netfilterqueue_NFPacket, /*tp_methods*/ + __pyx_methods_14netfilterqueue_Packet, /*tp_methods*/ 0, /*tp_members*/ - __pyx_getsets_14netfilterqueue_NFPacket, /*tp_getset*/ + __pyx_getsets_14netfilterqueue_Packet, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ @@ -2741,7 +3039,7 @@ PyTypeObject __pyx_type_14netfilterqueue_NFPacket = { 0, /*tp_dictoffset*/ 0, /*tp_init*/ 0, /*tp_alloc*/ - __pyx_tp_new_14netfilterqueue_NFPacket, /*tp_new*/ + __pyx_tp_new_14netfilterqueue_Packet, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ @@ -2755,25 +3053,25 @@ PyTypeObject __pyx_type_14netfilterqueue_NFPacket = { #endif }; -static PyObject *__pyx_tp_new_14netfilterqueue_NFQueue(PyTypeObject *t, PyObject *a, PyObject *k) { - struct __pyx_obj_14netfilterqueue_NFQueue *p; +static PyObject *__pyx_tp_new_14netfilterqueue_NetfilterQueue(PyTypeObject *t, PyObject *a, PyObject *k) { + struct __pyx_obj_14netfilterqueue_NetfilterQueue *p; PyObject *o = (*t->tp_alloc)(t, 0); if (!o) return 0; - p = ((struct __pyx_obj_14netfilterqueue_NFQueue *)o); + p = ((struct __pyx_obj_14netfilterqueue_NetfilterQueue *)o); p->packet_copy_size = Py_None; Py_INCREF(Py_None); - if (__pyx_pf_14netfilterqueue_7NFQueue_0__cinit__(o, a, k) < 0) { + if (__pyx_pf_14netfilterqueue_14NetfilterQueue___cinit__(o, a, k) < 0) { Py_DECREF(o); o = 0; } return o; } -static void __pyx_tp_dealloc_14netfilterqueue_NFQueue(PyObject *o) { - struct __pyx_obj_14netfilterqueue_NFQueue *p = (struct __pyx_obj_14netfilterqueue_NFQueue *)o; +static void __pyx_tp_dealloc_14netfilterqueue_NetfilterQueue(PyObject *o) { + struct __pyx_obj_14netfilterqueue_NetfilterQueue *p = (struct __pyx_obj_14netfilterqueue_NetfilterQueue *)o; { PyObject *etype, *eval, *etb; PyErr_Fetch(&etype, &eval, &etb); ++Py_REFCNT(o); - __pyx_pf_14netfilterqueue_7NFQueue_1__dealloc__(o); + __pyx_pf_14netfilterqueue_14NetfilterQueue_1__dealloc__(o); if (PyErr_Occurred()) PyErr_WriteUnraisable(o); --Py_REFCNT(o); PyErr_Restore(etype, eval, etb); @@ -2782,17 +3080,17 @@ static void __pyx_tp_dealloc_14netfilterqueue_NFQueue(PyObject *o) { (*Py_TYPE(o)->tp_free)(o); } -static int __pyx_tp_traverse_14netfilterqueue_NFQueue(PyObject *o, visitproc v, void *a) { +static int __pyx_tp_traverse_14netfilterqueue_NetfilterQueue(PyObject *o, visitproc v, void *a) { int e; - struct __pyx_obj_14netfilterqueue_NFQueue *p = (struct __pyx_obj_14netfilterqueue_NFQueue *)o; + struct __pyx_obj_14netfilterqueue_NetfilterQueue *p = (struct __pyx_obj_14netfilterqueue_NetfilterQueue *)o; if (p->packet_copy_size) { e = (*v)(p->packet_copy_size, a); if (e) return e; } return 0; } -static int __pyx_tp_clear_14netfilterqueue_NFQueue(PyObject *o) { - struct __pyx_obj_14netfilterqueue_NFQueue *p = (struct __pyx_obj_14netfilterqueue_NFQueue *)o; +static int __pyx_tp_clear_14netfilterqueue_NetfilterQueue(PyObject *o) { + struct __pyx_obj_14netfilterqueue_NetfilterQueue *p = (struct __pyx_obj_14netfilterqueue_NetfilterQueue *)o; PyObject* tmp; tmp = ((PyObject*)p->packet_copy_size); p->packet_copy_size = Py_None; Py_INCREF(Py_None); @@ -2800,15 +3098,15 @@ static int __pyx_tp_clear_14netfilterqueue_NFQueue(PyObject *o) { return 0; } -static PyMethodDef __pyx_methods_14netfilterqueue_NFQueue[] = { - {__Pyx_NAMESTR("bind"), (PyCFunction)__pyx_pf_14netfilterqueue_7NFQueue_2bind, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_14netfilterqueue_7NFQueue_2bind)}, - {__Pyx_NAMESTR("unbind"), (PyCFunction)__pyx_pf_14netfilterqueue_7NFQueue_3unbind, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_14netfilterqueue_7NFQueue_3unbind)}, - {__Pyx_NAMESTR("run"), (PyCFunction)__pyx_pf_14netfilterqueue_7NFQueue_4run, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_14netfilterqueue_7NFQueue_4run)}, - {__Pyx_NAMESTR("handle"), (PyCFunction)__pyx_pf_14netfilterqueue_7NFQueue_5handle, METH_O, __Pyx_DOCSTR(__pyx_doc_14netfilterqueue_7NFQueue_5handle)}, +static PyMethodDef __pyx_methods_14netfilterqueue_NetfilterQueue[] = { + {__Pyx_NAMESTR("bind"), (PyCFunction)__pyx_pf_14netfilterqueue_14NetfilterQueue_2bind, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_14netfilterqueue_14NetfilterQueue_2bind)}, + {__Pyx_NAMESTR("unbind"), (PyCFunction)__pyx_pf_14netfilterqueue_14NetfilterQueue_3unbind, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_14netfilterqueue_14NetfilterQueue_3unbind)}, + {__Pyx_NAMESTR("run"), (PyCFunction)__pyx_pf_14netfilterqueue_14NetfilterQueue_4run, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_14netfilterqueue_14NetfilterQueue_4run)}, + {__Pyx_NAMESTR("handle"), (PyCFunction)__pyx_pf_14netfilterqueue_14NetfilterQueue_5handle, METH_O, __Pyx_DOCSTR(__pyx_doc_14netfilterqueue_14NetfilterQueue_5handle)}, {0, 0, 0, 0} }; -static PyNumberMethods __pyx_tp_as_number_NFQueue = { +static PyNumberMethods __pyx_tp_as_number_NetfilterQueue = { 0, /*nb_add*/ 0, /*nb_subtract*/ 0, /*nb_multiply*/ @@ -2866,7 +3164,7 @@ static PyNumberMethods __pyx_tp_as_number_NFQueue = { #endif }; -static PySequenceMethods __pyx_tp_as_sequence_NFQueue = { +static PySequenceMethods __pyx_tp_as_sequence_NetfilterQueue = { 0, /*sq_length*/ 0, /*sq_concat*/ 0, /*sq_repeat*/ @@ -2879,13 +3177,13 @@ static PySequenceMethods __pyx_tp_as_sequence_NFQueue = { 0, /*sq_inplace_repeat*/ }; -static PyMappingMethods __pyx_tp_as_mapping_NFQueue = { +static PyMappingMethods __pyx_tp_as_mapping_NetfilterQueue = { 0, /*mp_length*/ 0, /*mp_subscript*/ 0, /*mp_ass_subscript*/ }; -static PyBufferProcs __pyx_tp_as_buffer_NFQueue = { +static PyBufferProcs __pyx_tp_as_buffer_NetfilterQueue = { #if PY_MAJOR_VERSION < 3 0, /*bf_getreadbuffer*/ #endif @@ -2906,12 +3204,12 @@ static PyBufferProcs __pyx_tp_as_buffer_NFQueue = { #endif }; -PyTypeObject __pyx_type_14netfilterqueue_NFQueue = { +static PyTypeObject __pyx_type_14netfilterqueue_NetfilterQueue = { PyVarObject_HEAD_INIT(0, 0) - __Pyx_NAMESTR("netfilterqueue.NFQueue"), /*tp_name*/ - sizeof(struct __pyx_obj_14netfilterqueue_NFQueue), /*tp_basicsize*/ + __Pyx_NAMESTR("netfilterqueue.NetfilterQueue"), /*tp_name*/ + sizeof(struct __pyx_obj_14netfilterqueue_NetfilterQueue), /*tp_basicsize*/ 0, /*tp_itemsize*/ - __pyx_tp_dealloc_14netfilterqueue_NFQueue, /*tp_dealloc*/ + __pyx_tp_dealloc_14netfilterqueue_NetfilterQueue, /*tp_dealloc*/ 0, /*tp_print*/ 0, /*tp_getattr*/ 0, /*tp_setattr*/ @@ -2921,24 +3219,24 @@ PyTypeObject __pyx_type_14netfilterqueue_NFQueue = { 0, /*reserved*/ #endif 0, /*tp_repr*/ - &__pyx_tp_as_number_NFQueue, /*tp_as_number*/ - &__pyx_tp_as_sequence_NFQueue, /*tp_as_sequence*/ - &__pyx_tp_as_mapping_NFQueue, /*tp_as_mapping*/ + &__pyx_tp_as_number_NetfilterQueue, /*tp_as_number*/ + &__pyx_tp_as_sequence_NetfilterQueue, /*tp_as_sequence*/ + &__pyx_tp_as_mapping_NetfilterQueue, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ - &__pyx_tp_as_buffer_NFQueue, /*tp_as_buffer*/ + &__pyx_tp_as_buffer_NetfilterQueue, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ __Pyx_DOCSTR("Handle a single numbered queue."), /*tp_doc*/ - __pyx_tp_traverse_14netfilterqueue_NFQueue, /*tp_traverse*/ - __pyx_tp_clear_14netfilterqueue_NFQueue, /*tp_clear*/ + __pyx_tp_traverse_14netfilterqueue_NetfilterQueue, /*tp_traverse*/ + __pyx_tp_clear_14netfilterqueue_NetfilterQueue, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ - __pyx_methods_14netfilterqueue_NFQueue, /*tp_methods*/ + __pyx_methods_14netfilterqueue_NetfilterQueue, /*tp_methods*/ 0, /*tp_members*/ 0, /*tp_getset*/ 0, /*tp_base*/ @@ -2948,7 +3246,7 @@ PyTypeObject __pyx_type_14netfilterqueue_NFQueue = { 0, /*tp_dictoffset*/ 0, /*tp_init*/ 0, /*tp_alloc*/ - __pyx_tp_new_14netfilterqueue_NFQueue, /*tp_new*/ + __pyx_tp_new_14netfilterqueue_NetfilterQueue, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ @@ -2981,19 +3279,162 @@ static struct PyModuleDef __pyx_moduledef = { #endif static __Pyx_StringTabEntry __pyx_string_tab[] = { - {&__pyx_kp_s_10, __pyx_k_10, sizeof(__pyx_k_10), 0, 0, 1, 0}, - {&__pyx_kp_s_11, __pyx_k_11, sizeof(__pyx_k_11), 0, 0, 1, 0}, + {&__pyx_kp_s_1, __pyx_k_1, sizeof(__pyx_k_1), 0, 0, 1, 0}, + {&__pyx_kp_s_12, __pyx_k_12, sizeof(__pyx_k_12), 0, 0, 1, 0}, + {&__pyx_kp_s_13, __pyx_k_13, sizeof(__pyx_k_13), 0, 0, 1, 0}, + {&__pyx_n_s_15, __pyx_k_15, sizeof(__pyx_k_15), 0, 0, 1, 1}, + {&__pyx_kp_s_16, __pyx_k_16, sizeof(__pyx_k_16), 0, 0, 1, 0}, + {&__pyx_kp_s_17, __pyx_k_17, sizeof(__pyx_k_17), 0, 0, 1, 0}, + {&__pyx_kp_s_18, __pyx_k_18, sizeof(__pyx_k_18), 0, 0, 1, 0}, + {&__pyx_kp_s_19, __pyx_k_19, sizeof(__pyx_k_19), 0, 0, 1, 0}, {&__pyx_kp_s_2, __pyx_k_2, sizeof(__pyx_k_2), 0, 0, 1, 0}, + {&__pyx_kp_s_20, __pyx_k_20, sizeof(__pyx_k_20), 0, 0, 1, 0}, + {&__pyx_kp_s_21, __pyx_k_21, sizeof(__pyx_k_21), 0, 0, 1, 0}, + {&__pyx_kp_s_22, __pyx_k_22, sizeof(__pyx_k_22), 0, 0, 1, 0}, + {&__pyx_kp_s_23, __pyx_k_23, sizeof(__pyx_k_23), 0, 0, 1, 0}, + {&__pyx_kp_s_24, __pyx_k_24, sizeof(__pyx_k_24), 0, 0, 1, 0}, + {&__pyx_kp_s_25, __pyx_k_25, sizeof(__pyx_k_25), 0, 0, 1, 0}, + {&__pyx_kp_s_26, __pyx_k_26, sizeof(__pyx_k_26), 0, 0, 1, 0}, + {&__pyx_kp_s_27, __pyx_k_27, sizeof(__pyx_k_27), 0, 0, 1, 0}, + {&__pyx_kp_s_28, __pyx_k_28, sizeof(__pyx_k_28), 0, 0, 1, 0}, + {&__pyx_kp_s_29, __pyx_k_29, sizeof(__pyx_k_29), 0, 0, 1, 0}, {&__pyx_kp_s_3, __pyx_k_3, sizeof(__pyx_k_3), 0, 0, 1, 0}, - {&__pyx_kp_s_4, __pyx_k_4, sizeof(__pyx_k_4), 0, 0, 1, 0}, - {&__pyx_kp_s_6, __pyx_k_6, sizeof(__pyx_k_6), 0, 0, 1, 0}, - {&__pyx_kp_s_8, __pyx_k_8, sizeof(__pyx_k_8), 0, 0, 1, 0}, - {&__pyx_n_s__AF_INET, __pyx_k__AF_INET, sizeof(__pyx_k__AF_INET), 0, 0, 1, 1}, + {&__pyx_kp_s_30, __pyx_k_30, sizeof(__pyx_k_30), 0, 0, 1, 0}, + {&__pyx_kp_s_31, __pyx_k_31, sizeof(__pyx_k_31), 0, 0, 1, 0}, + {&__pyx_kp_s_32, __pyx_k_32, sizeof(__pyx_k_32), 0, 0, 1, 0}, + {&__pyx_kp_s_33, __pyx_k_33, sizeof(__pyx_k_33), 0, 0, 1, 0}, + {&__pyx_kp_s_34, __pyx_k_34, sizeof(__pyx_k_34), 0, 0, 1, 0}, + {&__pyx_kp_s_35, __pyx_k_35, sizeof(__pyx_k_35), 0, 0, 1, 0}, + {&__pyx_kp_s_36, __pyx_k_36, sizeof(__pyx_k_36), 0, 0, 1, 0}, + {&__pyx_kp_s_37, __pyx_k_37, sizeof(__pyx_k_37), 0, 0, 1, 0}, + {&__pyx_kp_s_38, __pyx_k_38, sizeof(__pyx_k_38), 0, 0, 1, 0}, + {&__pyx_kp_s_39, __pyx_k_39, sizeof(__pyx_k_39), 0, 0, 1, 0}, + {&__pyx_kp_s_40, __pyx_k_40, sizeof(__pyx_k_40), 0, 0, 1, 0}, + {&__pyx_kp_s_41, __pyx_k_41, sizeof(__pyx_k_41), 0, 0, 1, 0}, + {&__pyx_kp_s_42, __pyx_k_42, sizeof(__pyx_k_42), 0, 0, 1, 0}, + {&__pyx_kp_s_43, __pyx_k_43, sizeof(__pyx_k_43), 0, 0, 1, 0}, + {&__pyx_kp_s_44, __pyx_k_44, sizeof(__pyx_k_44), 0, 0, 1, 0}, + {&__pyx_kp_s_45, __pyx_k_45, sizeof(__pyx_k_45), 0, 0, 1, 0}, + {&__pyx_kp_s_46, __pyx_k_46, sizeof(__pyx_k_46), 0, 0, 1, 0}, + {&__pyx_kp_s_47, __pyx_k_47, sizeof(__pyx_k_47), 0, 0, 1, 0}, + {&__pyx_kp_s_48, __pyx_k_48, sizeof(__pyx_k_48), 0, 0, 1, 0}, + {&__pyx_kp_s_49, __pyx_k_49, sizeof(__pyx_k_49), 0, 0, 1, 0}, + {&__pyx_kp_s_5, __pyx_k_5, sizeof(__pyx_k_5), 0, 0, 1, 0}, + {&__pyx_kp_s_50, __pyx_k_50, sizeof(__pyx_k_50), 0, 0, 1, 0}, + {&__pyx_kp_s_51, __pyx_k_51, sizeof(__pyx_k_51), 0, 0, 1, 0}, + {&__pyx_kp_s_52, __pyx_k_52, sizeof(__pyx_k_52), 0, 0, 1, 0}, + {&__pyx_kp_s_53, __pyx_k_53, sizeof(__pyx_k_53), 0, 0, 1, 0}, + {&__pyx_kp_s_54, __pyx_k_54, sizeof(__pyx_k_54), 0, 0, 1, 0}, + {&__pyx_kp_s_55, __pyx_k_55, sizeof(__pyx_k_55), 0, 0, 1, 0}, + {&__pyx_kp_s_56, __pyx_k_56, sizeof(__pyx_k_56), 0, 0, 1, 0}, + {&__pyx_kp_s_7, __pyx_k_7, sizeof(__pyx_k_7), 0, 0, 1, 0}, + {&__pyx_kp_s_9, __pyx_k_9, sizeof(__pyx_k_9), 0, 0, 1, 0}, + {&__pyx_kp_s__3PC, __pyx_k__3PC, sizeof(__pyx_k__3PC), 0, 0, 1, 0}, + {&__pyx_n_s__AH, __pyx_k__AH, sizeof(__pyx_k__AH), 0, 0, 1, 1}, + {&__pyx_n_s__ARGUS, __pyx_k__ARGUS, sizeof(__pyx_k__ARGUS), 0, 0, 1, 1}, + {&__pyx_n_s__ARIS, __pyx_k__ARIS, sizeof(__pyx_k__ARIS), 0, 0, 1, 1}, + {&__pyx_n_s__BNA, __pyx_k__BNA, sizeof(__pyx_k__BNA), 0, 0, 1, 1}, + {&__pyx_n_s__CBT, __pyx_k__CBT, sizeof(__pyx_k__CBT), 0, 0, 1, 1}, + {&__pyx_n_s__CFTP, __pyx_k__CFTP, sizeof(__pyx_k__CFTP), 0, 0, 1, 1}, + {&__pyx_n_s__CHAOS, __pyx_k__CHAOS, sizeof(__pyx_k__CHAOS), 0, 0, 1, 1}, {&__pyx_n_s__COPY_META, __pyx_k__COPY_META, sizeof(__pyx_k__COPY_META), 0, 0, 1, 1}, {&__pyx_n_s__COPY_NONE, __pyx_k__COPY_NONE, sizeof(__pyx_k__COPY_NONE), 0, 0, 1, 1}, {&__pyx_n_s__COPY_PACKET, __pyx_k__COPY_PACKET, sizeof(__pyx_k__COPY_PACKET), 0, 0, 1, 1}, - {&__pyx_n_s__IPPROTO, __pyx_k__IPPROTO, sizeof(__pyx_k__IPPROTO), 0, 0, 1, 1}, + {&__pyx_n_s__CPHB, __pyx_k__CPHB, sizeof(__pyx_k__CPHB), 0, 0, 1, 1}, + {&__pyx_n_s__CPNX, __pyx_k__CPNX, sizeof(__pyx_k__CPNX), 0, 0, 1, 1}, + {&__pyx_n_s__CRTP, __pyx_k__CRTP, sizeof(__pyx_k__CRTP), 0, 0, 1, 1}, + {&__pyx_n_s__CRUDP, __pyx_k__CRUDP, sizeof(__pyx_k__CRUDP), 0, 0, 1, 1}, + {&__pyx_n_s__DCCP, __pyx_k__DCCP, sizeof(__pyx_k__DCCP), 0, 0, 1, 1}, + {&__pyx_n_s__DDP, __pyx_k__DDP, sizeof(__pyx_k__DDP), 0, 0, 1, 1}, + {&__pyx_n_s__DDX, __pyx_k__DDX, sizeof(__pyx_k__DDX), 0, 0, 1, 1}, + {&__pyx_n_s__DGP, __pyx_k__DGP, sizeof(__pyx_k__DGP), 0, 0, 1, 1}, + {&__pyx_n_s__DSR, __pyx_k__DSR, sizeof(__pyx_k__DSR), 0, 0, 1, 1}, + {&__pyx_n_s__EGP, __pyx_k__EGP, sizeof(__pyx_k__EGP), 0, 0, 1, 1}, + {&__pyx_n_s__EIGRP, __pyx_k__EIGRP, sizeof(__pyx_k__EIGRP), 0, 0, 1, 1}, + {&__pyx_n_s__EMCON, __pyx_k__EMCON, sizeof(__pyx_k__EMCON), 0, 0, 1, 1}, + {&__pyx_n_s__ENCAP, __pyx_k__ENCAP, sizeof(__pyx_k__ENCAP), 0, 0, 1, 1}, + {&__pyx_n_s__ESP, __pyx_k__ESP, sizeof(__pyx_k__ESP), 0, 0, 1, 1}, + {&__pyx_n_s__ETHERIP, __pyx_k__ETHERIP, sizeof(__pyx_k__ETHERIP), 0, 0, 1, 1}, + {&__pyx_n_s__FC, __pyx_k__FC, sizeof(__pyx_k__FC), 0, 0, 1, 1}, + {&__pyx_n_s__FIRE, __pyx_k__FIRE, sizeof(__pyx_k__FIRE), 0, 0, 1, 1}, + {&__pyx_n_s__GGP, __pyx_k__GGP, sizeof(__pyx_k__GGP), 0, 0, 1, 1}, + {&__pyx_n_s__GMTP, __pyx_k__GMTP, sizeof(__pyx_k__GMTP), 0, 0, 1, 1}, + {&__pyx_n_s__GRE, __pyx_k__GRE, sizeof(__pyx_k__GRE), 0, 0, 1, 1}, + {&__pyx_n_s__HIP, __pyx_k__HIP, sizeof(__pyx_k__HIP), 0, 0, 1, 1}, + {&__pyx_n_s__HMP, __pyx_k__HMP, sizeof(__pyx_k__HMP), 0, 0, 1, 1}, + {&__pyx_n_s__HOPOPT, __pyx_k__HOPOPT, sizeof(__pyx_k__HOPOPT), 0, 0, 1, 1}, + {&__pyx_n_s__IATP, __pyx_k__IATP, sizeof(__pyx_k__IATP), 0, 0, 1, 1}, + {&__pyx_n_s__ICMP, __pyx_k__ICMP, sizeof(__pyx_k__ICMP), 0, 0, 1, 1}, + {&__pyx_n_s__IDPR, __pyx_k__IDPR, sizeof(__pyx_k__IDPR), 0, 0, 1, 1}, + {&__pyx_n_s__IDRP, __pyx_k__IDRP, sizeof(__pyx_k__IDRP), 0, 0, 1, 1}, + {&__pyx_n_s__IFMP, __pyx_k__IFMP, sizeof(__pyx_k__IFMP), 0, 0, 1, 1}, + {&__pyx_n_s__IGMP, __pyx_k__IGMP, sizeof(__pyx_k__IGMP), 0, 0, 1, 1}, + {&__pyx_n_s__IGP, __pyx_k__IGP, sizeof(__pyx_k__IGP), 0, 0, 1, 1}, + {&__pyx_n_s__IL, __pyx_k__IL, sizeof(__pyx_k__IL), 0, 0, 1, 1}, + {&__pyx_n_s__IP, __pyx_k__IP, sizeof(__pyx_k__IP), 0, 0, 1, 1}, + {&__pyx_n_s__IPCV, __pyx_k__IPCV, sizeof(__pyx_k__IPCV), 0, 0, 1, 1}, + {&__pyx_n_s__IPComp, __pyx_k__IPComp, sizeof(__pyx_k__IPComp), 0, 0, 1, 1}, + {&__pyx_n_s__IPIP, __pyx_k__IPIP, sizeof(__pyx_k__IPIP), 0, 0, 1, 1}, + {&__pyx_n_s__IPLT, __pyx_k__IPLT, sizeof(__pyx_k__IPLT), 0, 0, 1, 1}, + {&__pyx_n_s__IPPC, __pyx_k__IPPC, sizeof(__pyx_k__IPPC), 0, 0, 1, 1}, + {&__pyx_n_s__IPv6, __pyx_k__IPv6, sizeof(__pyx_k__IPv6), 0, 0, 1, 1}, + {&__pyx_n_s__IRTP, __pyx_k__IRTP, sizeof(__pyx_k__IRTP), 0, 0, 1, 1}, + {&__pyx_n_s__ISIS, __pyx_k__ISIS, sizeof(__pyx_k__ISIS), 0, 0, 1, 1}, + {&__pyx_n_s__KRYPTOLAN, __pyx_k__KRYPTOLAN, sizeof(__pyx_k__KRYPTOLAN), 0, 0, 1, 1}, + {&__pyx_n_s__L2TP, __pyx_k__L2TP, sizeof(__pyx_k__L2TP), 0, 0, 1, 1}, + {&__pyx_n_s__LARP, __pyx_k__LARP, sizeof(__pyx_k__LARP), 0, 0, 1, 1}, + {&__pyx_n_s__MICP, __pyx_k__MICP, sizeof(__pyx_k__MICP), 0, 0, 1, 1}, + {&__pyx_n_s__MOBILE, __pyx_k__MOBILE, sizeof(__pyx_k__MOBILE), 0, 0, 1, 1}, + {&__pyx_n_s__MTP, __pyx_k__MTP, sizeof(__pyx_k__MTP), 0, 0, 1, 1}, + {&__pyx_n_s__MUX, __pyx_k__MUX, sizeof(__pyx_k__MUX), 0, 0, 1, 1}, + {&__pyx_n_s__Mobility, __pyx_k__Mobility, sizeof(__pyx_k__Mobility), 0, 0, 1, 1}, + {&__pyx_n_s__NARP, __pyx_k__NARP, sizeof(__pyx_k__NARP), 0, 0, 1, 1}, + {&__pyx_n_s__NETBLT, __pyx_k__NETBLT, sizeof(__pyx_k__NETBLT), 0, 0, 1, 1}, {&__pyx_n_s__OSError, __pyx_k__OSError, sizeof(__pyx_k__OSError), 0, 0, 1, 1}, + {&__pyx_n_s__OSPFIGP, __pyx_k__OSPFIGP, sizeof(__pyx_k__OSPFIGP), 0, 0, 1, 1}, + {&__pyx_n_s__PGM, __pyx_k__PGM, sizeof(__pyx_k__PGM), 0, 0, 1, 1}, + {&__pyx_n_s__PIM, __pyx_k__PIM, sizeof(__pyx_k__PIM), 0, 0, 1, 1}, + {&__pyx_n_s__PIPE, __pyx_k__PIPE, sizeof(__pyx_k__PIPE), 0, 0, 1, 1}, + {&__pyx_n_s__PNNI, __pyx_k__PNNI, sizeof(__pyx_k__PNNI), 0, 0, 1, 1}, + {&__pyx_n_s__PRM, __pyx_k__PRM, sizeof(__pyx_k__PRM), 0, 0, 1, 1}, + {&__pyx_n_s__PROTOCOLS, __pyx_k__PROTOCOLS, sizeof(__pyx_k__PROTOCOLS), 0, 0, 1, 1}, + {&__pyx_n_s__PTP, __pyx_k__PTP, sizeof(__pyx_k__PTP), 0, 0, 1, 1}, + {&__pyx_n_s__PUP, __pyx_k__PUP, sizeof(__pyx_k__PUP), 0, 0, 1, 1}, + {&__pyx_n_s__PVP, __pyx_k__PVP, sizeof(__pyx_k__PVP), 0, 0, 1, 1}, + {&__pyx_n_s__QNX, __pyx_k__QNX, sizeof(__pyx_k__QNX), 0, 0, 1, 1}, + {&__pyx_n_s__RDP, __pyx_k__RDP, sizeof(__pyx_k__RDP), 0, 0, 1, 1}, + {&__pyx_n_s__RSVP, __pyx_k__RSVP, sizeof(__pyx_k__RSVP), 0, 0, 1, 1}, + {&__pyx_n_s__RVD, __pyx_k__RVD, sizeof(__pyx_k__RVD), 0, 0, 1, 1}, + {&__pyx_n_s__Reserved, __pyx_k__Reserved, sizeof(__pyx_k__Reserved), 0, 0, 1, 1}, + {&__pyx_n_s__RuntimeWarning, __pyx_k__RuntimeWarning, sizeof(__pyx_k__RuntimeWarning), 0, 0, 1, 1}, + {&__pyx_n_s__SCPS, __pyx_k__SCPS, sizeof(__pyx_k__SCPS), 0, 0, 1, 1}, + {&__pyx_n_s__SCTP, __pyx_k__SCTP, sizeof(__pyx_k__SCTP), 0, 0, 1, 1}, + {&__pyx_n_s__SDRP, __pyx_k__SDRP, sizeof(__pyx_k__SDRP), 0, 0, 1, 1}, + {&__pyx_n_s__SKIP, __pyx_k__SKIP, sizeof(__pyx_k__SKIP), 0, 0, 1, 1}, + {&__pyx_n_s__SM, __pyx_k__SM, sizeof(__pyx_k__SM), 0, 0, 1, 1}, + {&__pyx_n_s__SMP, __pyx_k__SMP, sizeof(__pyx_k__SMP), 0, 0, 1, 1}, + {&__pyx_n_s__SNP, __pyx_k__SNP, sizeof(__pyx_k__SNP), 0, 0, 1, 1}, + {&__pyx_n_s__SPS, __pyx_k__SPS, sizeof(__pyx_k__SPS), 0, 0, 1, 1}, + {&__pyx_n_s__SRP, __pyx_k__SRP, sizeof(__pyx_k__SRP), 0, 0, 1, 1}, + {&__pyx_n_s__SSCOPMCE, __pyx_k__SSCOPMCE, sizeof(__pyx_k__SSCOPMCE), 0, 0, 1, 1}, + {&__pyx_n_s__ST, __pyx_k__ST, sizeof(__pyx_k__ST), 0, 0, 1, 1}, + {&__pyx_n_s__STP, __pyx_k__STP, sizeof(__pyx_k__STP), 0, 0, 1, 1}, + {&__pyx_n_s__SWIPE, __pyx_k__SWIPE, sizeof(__pyx_k__SWIPE), 0, 0, 1, 1}, + {&__pyx_n_s__Shim6, __pyx_k__Shim6, sizeof(__pyx_k__Shim6), 0, 0, 1, 1}, + {&__pyx_n_s__TCF, __pyx_k__TCF, sizeof(__pyx_k__TCF), 0, 0, 1, 1}, + {&__pyx_n_s__TCP, __pyx_k__TCP, sizeof(__pyx_k__TCP), 0, 0, 1, 1}, + {&__pyx_n_s__TLSP, __pyx_k__TLSP, sizeof(__pyx_k__TLSP), 0, 0, 1, 1}, + {&__pyx_n_s__TTP, __pyx_k__TTP, sizeof(__pyx_k__TTP), 0, 0, 1, 1}, + {&__pyx_n_s__UDP, __pyx_k__UDP, sizeof(__pyx_k__UDP), 0, 0, 1, 1}, + {&__pyx_n_s__UDPLite, __pyx_k__UDPLite, sizeof(__pyx_k__UDPLite), 0, 0, 1, 1}, + {&__pyx_n_s__UTI, __pyx_k__UTI, sizeof(__pyx_k__UTI), 0, 0, 1, 1}, + {&__pyx_n_s__VINES, __pyx_k__VINES, sizeof(__pyx_k__VINES), 0, 0, 1, 1}, + {&__pyx_n_s__VISA, __pyx_k__VISA, sizeof(__pyx_k__VISA), 0, 0, 1, 1}, + {&__pyx_n_s__VMTP, __pyx_k__VMTP, sizeof(__pyx_k__VMTP), 0, 0, 1, 1}, + {&__pyx_n_s__VRRP, __pyx_k__VRRP, sizeof(__pyx_k__VRRP), 0, 0, 1, 1}, + {&__pyx_n_s__WSN, __pyx_k__WSN, sizeof(__pyx_k__WSN), 0, 0, 1, 1}, + {&__pyx_n_s__XNET, __pyx_k__XNET, sizeof(__pyx_k__XNET), 0, 0, 1, 1}, + {&__pyx_n_s__XTP, __pyx_k__XTP, sizeof(__pyx_k__XTP), 0, 0, 1, 1}, {&__pyx_n_s____main__, __pyx_k____main__, sizeof(__pyx_k____main__), 0, 0, 1, 1}, {&__pyx_n_s____test__, __pyx_k____test__, sizeof(__pyx_k____test__), 0, 0, 1, 1}, {&__pyx_n_s___given_mark, __pyx_k___given_mark, sizeof(__pyx_k___given_mark), 0, 0, 1, 1}, @@ -3006,18 +3447,17 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_n_s__accept, __pyx_k__accept, sizeof(__pyx_k__accept), 0, 0, 1, 1}, {&__pyx_n_s__af, __pyx_k__af, sizeof(__pyx_k__af), 0, 0, 1, 1}, {&__pyx_n_s__drop, __pyx_k__drop, sizeof(__pyx_k__drop), 0, 0, 1, 1}, - {&__pyx_n_s__filter, __pyx_k__filter, sizeof(__pyx_k__filter), 0, 0, 1, 1}, + {&__pyx_n_s__get, __pyx_k__get, sizeof(__pyx_k__get), 0, 0, 1, 1}, {&__pyx_n_s__get_payload_len, __pyx_k__get_payload_len, sizeof(__pyx_k__get_payload_len), 0, 0, 1, 1}, {&__pyx_n_s__get_timestamp, __pyx_k__get_timestamp, sizeof(__pyx_k__get_timestamp), 0, 0, 1, 1}, {&__pyx_n_s__h, __pyx_k__h, sizeof(__pyx_k__h), 0, 0, 1, 1}, {&__pyx_n_s__handle, __pyx_k__handle, sizeof(__pyx_k__handle), 0, 0, 1, 1}, - {&__pyx_n_s__handler, __pyx_k__handler, sizeof(__pyx_k__handler), 0, 0, 1, 1}, {&__pyx_n_s__hook, __pyx_k__hook, sizeof(__pyx_k__hook), 0, 0, 1, 1}, {&__pyx_n_s__hw_protocol, __pyx_k__hw_protocol, sizeof(__pyx_k__hw_protocol), 0, 0, 1, 1}, {&__pyx_n_s__id, __pyx_k__id, sizeof(__pyx_k__id), 0, 0, 1, 1}, + {&__pyx_n_s__manet, __pyx_k__manet, sizeof(__pyx_k__manet), 0, 0, 1, 1}, {&__pyx_n_s__maxlen, __pyx_k__maxlen, sizeof(__pyx_k__maxlen), 0, 0, 1, 1}, {&__pyx_n_s__mode, __pyx_k__mode, sizeof(__pyx_k__mode), 0, 0, 1, 1}, - {&__pyx_n_s__netfilterqueue, __pyx_k__netfilterqueue, sizeof(__pyx_k__netfilterqueue), 0, 0, 1, 1}, {&__pyx_n_s__packet_id, __pyx_k__packet_id, sizeof(__pyx_k__packet_id), 0, 0, 1, 1}, {&__pyx_n_s__payload, __pyx_k__payload, sizeof(__pyx_k__payload), 0, 0, 1, 1}, {&__pyx_n_s__payload_len, __pyx_k__payload_len, sizeof(__pyx_k__payload_len), 0, 0, 1, 1}, @@ -3027,8 +3467,6 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_n_s__range, __pyx_k__range, sizeof(__pyx_k__range), 0, 0, 1, 1}, {&__pyx_n_s__set_mark, __pyx_k__set_mark, sizeof(__pyx_k__set_mark), 0, 0, 1, 1}, {&__pyx_n_s__set_nfq_data, __pyx_k__set_nfq_data, sizeof(__pyx_k__set_nfq_data), 0, 0, 1, 1}, - {&__pyx_n_s__socket, __pyx_k__socket, sizeof(__pyx_k__socket), 0, 0, 1, 1}, - {&__pyx_n_s__startswith, __pyx_k__startswith, sizeof(__pyx_k__startswith), 0, 0, 1, 1}, {&__pyx_n_s__timestamp, __pyx_k__timestamp, sizeof(__pyx_k__timestamp), 0, 0, 1, 1}, {&__pyx_n_s__tv_sec, __pyx_k__tv_sec, sizeof(__pyx_k__tv_sec), 0, 0, 1, 1}, {&__pyx_n_s__tv_usec, __pyx_k__tv_usec, sizeof(__pyx_k__tv_usec), 0, 0, 1, 1}, @@ -3036,8 +3474,8 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {0, 0, 0, 0, 0, 0, 0} }; static int __Pyx_InitCachedBuiltins(void) { - __pyx_builtin_filter = __Pyx_GetName(__pyx_b, __pyx_n_s__filter); if (!__pyx_builtin_filter) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_builtin_OSError = __Pyx_GetName(__pyx_b, __pyx_n_s__OSError); if (!__pyx_builtin_OSError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_builtin_OSError = __Pyx_GetName(__pyx_b, __pyx_n_s__OSError); if (!__pyx_builtin_OSError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_builtin_RuntimeWarning = __Pyx_GetName(__pyx_b, __pyx_n_s__RuntimeWarning); if (!__pyx_builtin_RuntimeWarning) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;} return 0; __pyx_L1_error:; return -1; @@ -3046,61 +3484,61 @@ static int __Pyx_InitCachedBuiltins(void) { static int __Pyx_InitCachedConstants(void) { __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants"); - /* "/root/NetfilterQueue/netfilterqueue.pyx":47 - * cdef iphdr *hdr = self.payload - * protocol = "Unknown protocol" - * for name in filter(lambda x: x.startswith("IPPROTO"), dir(socket)): # <<<<<<<<<<<<<< - * if getattr(socket, name) == hdr.protocol: - * protocol = name[8:] - */ - __pyx_k_tuple_1 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_1)); - __Pyx_INCREF(((PyObject *)__pyx_n_s__IPPROTO)); - PyTuple_SET_ITEM(__pyx_k_tuple_1, 0, ((PyObject *)__pyx_n_s__IPPROTO)); - __Pyx_GIVEREF(((PyObject *)__pyx_n_s__IPPROTO)); - __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_1)); - - /* "/root/NetfilterQueue/netfilterqueue.pyx":67 + /* "netfilterqueue.pyx":50 * self.payload_len = nfq_get_payload(self._nfa, &self.payload) * if self.payload_len < 0: * raise OSError("Failed to get payload of packet.") # <<<<<<<<<<<<<< * * nfq_get_timestamp(self._nfa, &self.timestamp) */ - __pyx_k_tuple_5 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_5)); - __Pyx_INCREF(((PyObject *)__pyx_kp_s_4)); - PyTuple_SET_ITEM(__pyx_k_tuple_5, 0, ((PyObject *)__pyx_kp_s_4)); - __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_4)); - __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_5)); + __pyx_k_tuple_4 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_4)); + __Pyx_INCREF(((PyObject *)__pyx_kp_s_3)); + PyTuple_SET_ITEM(__pyx_k_tuple_4, 0, ((PyObject *)__pyx_kp_s_3)); + __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_3)); + __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_4)); - /* "/root/NetfilterQueue/netfilterqueue.pyx":133 + /* "netfilterqueue.pyx":57 + * """Call appropriate set_verdict... function on packet.""" + * if self._verdict_is_set: + * raise RuntimeWarning("Verdict already given for this packet.") # <<<<<<<<<<<<<< + * + * if self._mark_is_set: + */ + __pyx_k_tuple_6 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_6)); + __Pyx_INCREF(((PyObject *)__pyx_kp_s_5)); + PyTuple_SET_ITEM(__pyx_k_tuple_6, 0, ((PyObject *)__pyx_kp_s_5)); + __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_5)); + __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_6)); + + /* "netfilterqueue.pyx":114 * self.h = nfq_open() * if self.h == NULL: * raise OSError("Failed to open NFQueue.") # <<<<<<<<<<<<<< * nfq_unbind_pf(self.h, self.af) # This does NOT kick out previous * # running queues */ - __pyx_k_tuple_7 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_7)); - __Pyx_INCREF(((PyObject *)__pyx_kp_s_6)); - PyTuple_SET_ITEM(__pyx_k_tuple_7, 0, ((PyObject *)__pyx_kp_s_6)); - __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_6)); - __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_7)); + __pyx_k_tuple_8 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_8)); + __Pyx_INCREF(((PyObject *)__pyx_kp_s_7)); + PyTuple_SET_ITEM(__pyx_k_tuple_8, 0, ((PyObject *)__pyx_kp_s_7)); + __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_7)); + __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_8)); - /* "/root/NetfilterQueue/netfilterqueue.pyx":155 + /* "netfilterqueue.pyx":136 * range = MaxCopySize * if nfq_set_mode(self.qh, mode, range) < 0: * raise OSError("Failed to set packet copy mode.") # <<<<<<<<<<<<<< * * nfq_set_queue_maxlen(self.qh, maxlen) */ - __pyx_k_tuple_12 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_12)); - __Pyx_INCREF(((PyObject *)__pyx_kp_s_11)); - PyTuple_SET_ITEM(__pyx_k_tuple_12, 0, ((PyObject *)__pyx_kp_s_11)); - __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_11)); - __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_12)); + __pyx_k_tuple_14 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_14)); + __Pyx_INCREF(((PyObject *)__pyx_kp_s_13)); + PyTuple_SET_ITEM(__pyx_k_tuple_14, 0, ((PyObject *)__pyx_kp_s_13)); + __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_13)); + __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_14)); __Pyx_RefNannyFinishContext(); return 0; __pyx_L1_error:; @@ -3110,9 +3548,149 @@ static int __Pyx_InitCachedConstants(void) { static int __Pyx_InitGlobals(void) { if (__Pyx_InitStrings(__pyx_string_tab) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; __pyx_int_2 = PyInt_FromLong(2); if (unlikely(!__pyx_int_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; __pyx_int_3 = PyInt_FromLong(3); if (unlikely(!__pyx_int_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_4 = PyInt_FromLong(4); if (unlikely(!__pyx_int_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_5 = PyInt_FromLong(5); if (unlikely(!__pyx_int_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_6 = PyInt_FromLong(6); if (unlikely(!__pyx_int_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_7 = PyInt_FromLong(7); if (unlikely(!__pyx_int_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_8 = PyInt_FromLong(8); if (unlikely(!__pyx_int_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_9 = PyInt_FromLong(9); if (unlikely(!__pyx_int_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_10 = PyInt_FromLong(10); if (unlikely(!__pyx_int_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_11 = PyInt_FromLong(11); if (unlikely(!__pyx_int_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_12 = PyInt_FromLong(12); if (unlikely(!__pyx_int_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_13 = PyInt_FromLong(13); if (unlikely(!__pyx_int_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_14 = PyInt_FromLong(14); if (unlikely(!__pyx_int_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_15 = PyInt_FromLong(15); if (unlikely(!__pyx_int_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_16 = PyInt_FromLong(16); if (unlikely(!__pyx_int_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_17 = PyInt_FromLong(17); if (unlikely(!__pyx_int_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_18 = PyInt_FromLong(18); if (unlikely(!__pyx_int_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_19 = PyInt_FromLong(19); if (unlikely(!__pyx_int_19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_20 = PyInt_FromLong(20); if (unlikely(!__pyx_int_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_21 = PyInt_FromLong(21); if (unlikely(!__pyx_int_21)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_22 = PyInt_FromLong(22); if (unlikely(!__pyx_int_22)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_23 = PyInt_FromLong(23); if (unlikely(!__pyx_int_23)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_24 = PyInt_FromLong(24); if (unlikely(!__pyx_int_24)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_25 = PyInt_FromLong(25); if (unlikely(!__pyx_int_25)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_26 = PyInt_FromLong(26); if (unlikely(!__pyx_int_26)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_27 = PyInt_FromLong(27); if (unlikely(!__pyx_int_27)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_28 = PyInt_FromLong(28); if (unlikely(!__pyx_int_28)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_29 = PyInt_FromLong(29); if (unlikely(!__pyx_int_29)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_30 = PyInt_FromLong(30); if (unlikely(!__pyx_int_30)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_31 = PyInt_FromLong(31); if (unlikely(!__pyx_int_31)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_32 = PyInt_FromLong(32); if (unlikely(!__pyx_int_32)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_33 = PyInt_FromLong(33); if (unlikely(!__pyx_int_33)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_34 = PyInt_FromLong(34); if (unlikely(!__pyx_int_34)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_35 = PyInt_FromLong(35); if (unlikely(!__pyx_int_35)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_36 = PyInt_FromLong(36); if (unlikely(!__pyx_int_36)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_37 = PyInt_FromLong(37); if (unlikely(!__pyx_int_37)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_38 = PyInt_FromLong(38); if (unlikely(!__pyx_int_38)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_39 = PyInt_FromLong(39); if (unlikely(!__pyx_int_39)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_40 = PyInt_FromLong(40); if (unlikely(!__pyx_int_40)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_41 = PyInt_FromLong(41); if (unlikely(!__pyx_int_41)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_42 = PyInt_FromLong(42); if (unlikely(!__pyx_int_42)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_43 = PyInt_FromLong(43); if (unlikely(!__pyx_int_43)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_44 = PyInt_FromLong(44); if (unlikely(!__pyx_int_44)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_45 = PyInt_FromLong(45); if (unlikely(!__pyx_int_45)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_46 = PyInt_FromLong(46); if (unlikely(!__pyx_int_46)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_47 = PyInt_FromLong(47); if (unlikely(!__pyx_int_47)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_48 = PyInt_FromLong(48); if (unlikely(!__pyx_int_48)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_49 = PyInt_FromLong(49); if (unlikely(!__pyx_int_49)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_50 = PyInt_FromLong(50); if (unlikely(!__pyx_int_50)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_51 = PyInt_FromLong(51); if (unlikely(!__pyx_int_51)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_52 = PyInt_FromLong(52); if (unlikely(!__pyx_int_52)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_53 = PyInt_FromLong(53); if (unlikely(!__pyx_int_53)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_54 = PyInt_FromLong(54); if (unlikely(!__pyx_int_54)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_55 = PyInt_FromLong(55); if (unlikely(!__pyx_int_55)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_56 = PyInt_FromLong(56); if (unlikely(!__pyx_int_56)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_57 = PyInt_FromLong(57); if (unlikely(!__pyx_int_57)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_58 = PyInt_FromLong(58); if (unlikely(!__pyx_int_58)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_59 = PyInt_FromLong(59); if (unlikely(!__pyx_int_59)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_60 = PyInt_FromLong(60); if (unlikely(!__pyx_int_60)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_61 = PyInt_FromLong(61); if (unlikely(!__pyx_int_61)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_62 = PyInt_FromLong(62); if (unlikely(!__pyx_int_62)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_63 = PyInt_FromLong(63); if (unlikely(!__pyx_int_63)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_64 = PyInt_FromLong(64); if (unlikely(!__pyx_int_64)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_65 = PyInt_FromLong(65); if (unlikely(!__pyx_int_65)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_66 = PyInt_FromLong(66); if (unlikely(!__pyx_int_66)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_67 = PyInt_FromLong(67); if (unlikely(!__pyx_int_67)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_68 = PyInt_FromLong(68); if (unlikely(!__pyx_int_68)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_69 = PyInt_FromLong(69); if (unlikely(!__pyx_int_69)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_70 = PyInt_FromLong(70); if (unlikely(!__pyx_int_70)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_71 = PyInt_FromLong(71); if (unlikely(!__pyx_int_71)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_72 = PyInt_FromLong(72); if (unlikely(!__pyx_int_72)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_73 = PyInt_FromLong(73); if (unlikely(!__pyx_int_73)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_74 = PyInt_FromLong(74); if (unlikely(!__pyx_int_74)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_75 = PyInt_FromLong(75); if (unlikely(!__pyx_int_75)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_76 = PyInt_FromLong(76); if (unlikely(!__pyx_int_76)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_77 = PyInt_FromLong(77); if (unlikely(!__pyx_int_77)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_78 = PyInt_FromLong(78); if (unlikely(!__pyx_int_78)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_79 = PyInt_FromLong(79); if (unlikely(!__pyx_int_79)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_80 = PyInt_FromLong(80); if (unlikely(!__pyx_int_80)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_81 = PyInt_FromLong(81); if (unlikely(!__pyx_int_81)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_82 = PyInt_FromLong(82); if (unlikely(!__pyx_int_82)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_83 = PyInt_FromLong(83); if (unlikely(!__pyx_int_83)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_84 = PyInt_FromLong(84); if (unlikely(!__pyx_int_84)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_85 = PyInt_FromLong(85); if (unlikely(!__pyx_int_85)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_86 = PyInt_FromLong(86); if (unlikely(!__pyx_int_86)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_87 = PyInt_FromLong(87); if (unlikely(!__pyx_int_87)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_88 = PyInt_FromLong(88); if (unlikely(!__pyx_int_88)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_89 = PyInt_FromLong(89); if (unlikely(!__pyx_int_89)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_90 = PyInt_FromLong(90); if (unlikely(!__pyx_int_90)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_91 = PyInt_FromLong(91); if (unlikely(!__pyx_int_91)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_92 = PyInt_FromLong(92); if (unlikely(!__pyx_int_92)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_93 = PyInt_FromLong(93); if (unlikely(!__pyx_int_93)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_94 = PyInt_FromLong(94); if (unlikely(!__pyx_int_94)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_95 = PyInt_FromLong(95); if (unlikely(!__pyx_int_95)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_96 = PyInt_FromLong(96); if (unlikely(!__pyx_int_96)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_97 = PyInt_FromLong(97); if (unlikely(!__pyx_int_97)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_98 = PyInt_FromLong(98); if (unlikely(!__pyx_int_98)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_99 = PyInt_FromLong(99); if (unlikely(!__pyx_int_99)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_100 = PyInt_FromLong(100); if (unlikely(!__pyx_int_100)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_101 = PyInt_FromLong(101); if (unlikely(!__pyx_int_101)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_102 = PyInt_FromLong(102); if (unlikely(!__pyx_int_102)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_103 = PyInt_FromLong(103); if (unlikely(!__pyx_int_103)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_104 = PyInt_FromLong(104); if (unlikely(!__pyx_int_104)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_105 = PyInt_FromLong(105); if (unlikely(!__pyx_int_105)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_106 = PyInt_FromLong(106); if (unlikely(!__pyx_int_106)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_107 = PyInt_FromLong(107); if (unlikely(!__pyx_int_107)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_108 = PyInt_FromLong(108); if (unlikely(!__pyx_int_108)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_109 = PyInt_FromLong(109); if (unlikely(!__pyx_int_109)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_110 = PyInt_FromLong(110); if (unlikely(!__pyx_int_110)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_111 = PyInt_FromLong(111); if (unlikely(!__pyx_int_111)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_112 = PyInt_FromLong(112); if (unlikely(!__pyx_int_112)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_113 = PyInt_FromLong(113); if (unlikely(!__pyx_int_113)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_114 = PyInt_FromLong(114); if (unlikely(!__pyx_int_114)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_115 = PyInt_FromLong(115); if (unlikely(!__pyx_int_115)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_116 = PyInt_FromLong(116); if (unlikely(!__pyx_int_116)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_117 = PyInt_FromLong(117); if (unlikely(!__pyx_int_117)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_118 = PyInt_FromLong(118); if (unlikely(!__pyx_int_118)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_119 = PyInt_FromLong(119); if (unlikely(!__pyx_int_119)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_120 = PyInt_FromLong(120); if (unlikely(!__pyx_int_120)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_121 = PyInt_FromLong(121); if (unlikely(!__pyx_int_121)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_122 = PyInt_FromLong(122); if (unlikely(!__pyx_int_122)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_123 = PyInt_FromLong(123); if (unlikely(!__pyx_int_123)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_124 = PyInt_FromLong(124); if (unlikely(!__pyx_int_124)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_125 = PyInt_FromLong(125); if (unlikely(!__pyx_int_125)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_126 = PyInt_FromLong(126); if (unlikely(!__pyx_int_126)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_127 = PyInt_FromLong(127); if (unlikely(!__pyx_int_127)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_128 = PyInt_FromLong(128); if (unlikely(!__pyx_int_128)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_129 = PyInt_FromLong(129); if (unlikely(!__pyx_int_129)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_130 = PyInt_FromLong(130); if (unlikely(!__pyx_int_130)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_131 = PyInt_FromLong(131); if (unlikely(!__pyx_int_131)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_132 = PyInt_FromLong(132); if (unlikely(!__pyx_int_132)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_133 = PyInt_FromLong(133); if (unlikely(!__pyx_int_133)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_134 = PyInt_FromLong(134); if (unlikely(!__pyx_int_134)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_135 = PyInt_FromLong(135); if (unlikely(!__pyx_int_135)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_136 = PyInt_FromLong(136); if (unlikely(!__pyx_int_136)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_137 = PyInt_FromLong(137); if (unlikely(!__pyx_int_137)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_138 = PyInt_FromLong(138); if (unlikely(!__pyx_int_138)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_139 = PyInt_FromLong(139); if (unlikely(!__pyx_int_139)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_140 = PyInt_FromLong(140); if (unlikely(!__pyx_int_140)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_255 = PyInt_FromLong(255); if (unlikely(!__pyx_int_255)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_int_1024 = PyInt_FromLong(1024); if (unlikely(!__pyx_int_1024)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; return 0; __pyx_L1_error:; return -1; @@ -3127,6 +3705,7 @@ PyMODINIT_FUNC PyInit_netfilterqueue(void) #endif { PyObject *__pyx_t_1 = NULL; + u_int32_t __pyx_t_2; #if CYTHON_REFNANNY void* __pyx_refnanny = NULL; __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); @@ -3175,76 +3754,233 @@ PyMODINIT_FUNC PyInit_netfilterqueue(void) /*--- Global init code ---*/ /*--- Function export code ---*/ /*--- Type init code ---*/ - __pyx_vtabptr_14netfilterqueue_NFPacket = &__pyx_vtable_14netfilterqueue_NFPacket; - __pyx_vtable_14netfilterqueue_NFPacket.set_nfq_data = (PyObject *(*)(struct __pyx_obj_14netfilterqueue_NFPacket *, struct nfq_q_handle *, struct nfq_data *))__pyx_f_14netfilterqueue_8NFPacket_set_nfq_data; - __pyx_vtable_14netfilterqueue_NFPacket.verdict = (void (*)(struct __pyx_obj_14netfilterqueue_NFPacket *, u_int8_t))__pyx_f_14netfilterqueue_8NFPacket_verdict; - __pyx_vtable_14netfilterqueue_NFPacket.get_payload_len = (Py_ssize_t (*)(struct __pyx_obj_14netfilterqueue_NFPacket *, int __pyx_skip_dispatch))__pyx_f_14netfilterqueue_8NFPacket_get_payload_len; - __pyx_vtable_14netfilterqueue_NFPacket.get_timestamp = (double (*)(struct __pyx_obj_14netfilterqueue_NFPacket *, int __pyx_skip_dispatch))__pyx_f_14netfilterqueue_8NFPacket_get_timestamp; - __pyx_vtable_14netfilterqueue_NFPacket.set_mark = (PyObject *(*)(struct __pyx_obj_14netfilterqueue_NFPacket *, u_int32_t, int __pyx_skip_dispatch))__pyx_f_14netfilterqueue_8NFPacket_set_mark; - __pyx_vtable_14netfilterqueue_NFPacket.accept = (PyObject *(*)(struct __pyx_obj_14netfilterqueue_NFPacket *, int __pyx_skip_dispatch))__pyx_f_14netfilterqueue_8NFPacket_accept; - __pyx_vtable_14netfilterqueue_NFPacket.drop = (PyObject *(*)(struct __pyx_obj_14netfilterqueue_NFPacket *, int __pyx_skip_dispatch))__pyx_f_14netfilterqueue_8NFPacket_drop; - if (PyType_Ready(&__pyx_type_14netfilterqueue_NFPacket) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - if (__Pyx_SetVtable(__pyx_type_14netfilterqueue_NFPacket.tp_dict, __pyx_vtabptr_14netfilterqueue_NFPacket) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - if (__Pyx_SetAttrString(__pyx_m, "NFPacket", (PyObject *)&__pyx_type_14netfilterqueue_NFPacket) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_ptype_14netfilterqueue_NFPacket = &__pyx_type_14netfilterqueue_NFPacket; - if (PyType_Ready(&__pyx_type_14netfilterqueue_NFQueue) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - if (__Pyx_SetAttrString(__pyx_m, "NFQueue", (PyObject *)&__pyx_type_14netfilterqueue_NFQueue) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_ptype_14netfilterqueue_NFQueue = &__pyx_type_14netfilterqueue_NFQueue; + __pyx_vtabptr_14netfilterqueue_Packet = &__pyx_vtable_14netfilterqueue_Packet; + __pyx_vtable_14netfilterqueue_Packet.set_nfq_data = (PyObject *(*)(struct __pyx_obj_14netfilterqueue_Packet *, struct nfq_q_handle *, struct nfq_data *))__pyx_f_14netfilterqueue_6Packet_set_nfq_data; + __pyx_vtable_14netfilterqueue_Packet.verdict = (void (*)(struct __pyx_obj_14netfilterqueue_Packet *, u_int8_t))__pyx_f_14netfilterqueue_6Packet_verdict; + __pyx_vtable_14netfilterqueue_Packet.get_payload_len = (Py_ssize_t (*)(struct __pyx_obj_14netfilterqueue_Packet *, int __pyx_skip_dispatch))__pyx_f_14netfilterqueue_6Packet_get_payload_len; + __pyx_vtable_14netfilterqueue_Packet.get_timestamp = (double (*)(struct __pyx_obj_14netfilterqueue_Packet *, int __pyx_skip_dispatch))__pyx_f_14netfilterqueue_6Packet_get_timestamp; + __pyx_vtable_14netfilterqueue_Packet.set_mark = (PyObject *(*)(struct __pyx_obj_14netfilterqueue_Packet *, u_int32_t, int __pyx_skip_dispatch))__pyx_f_14netfilterqueue_6Packet_set_mark; + __pyx_vtable_14netfilterqueue_Packet.accept = (PyObject *(*)(struct __pyx_obj_14netfilterqueue_Packet *, int __pyx_skip_dispatch))__pyx_f_14netfilterqueue_6Packet_accept; + __pyx_vtable_14netfilterqueue_Packet.drop = (PyObject *(*)(struct __pyx_obj_14netfilterqueue_Packet *, int __pyx_skip_dispatch))__pyx_f_14netfilterqueue_6Packet_drop; + if (PyType_Ready(&__pyx_type_14netfilterqueue_Packet) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_SetVtable(__pyx_type_14netfilterqueue_Packet.tp_dict, __pyx_vtabptr_14netfilterqueue_Packet) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_SetAttrString(__pyx_m, "Packet", (PyObject *)&__pyx_type_14netfilterqueue_Packet) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_ptype_14netfilterqueue_Packet = &__pyx_type_14netfilterqueue_Packet; + if (PyType_Ready(&__pyx_type_14netfilterqueue_NetfilterQueue) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_SetAttrString(__pyx_m, "NetfilterQueue", (PyObject *)&__pyx_type_14netfilterqueue_NetfilterQueue) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_ptype_14netfilterqueue_NetfilterQueue = &__pyx_type_14netfilterqueue_NetfilterQueue; /*--- Type import code ---*/ /*--- Function import code ---*/ /*--- Execution code ---*/ - /* "/root/NetfilterQueue/netfilterqueue.pyx":2 + /* "netfilterqueue.pyx":3 * ## cython: profile=True - * import socket # <<<<<<<<<<<<<< - * - * # Constants for module users - */ - __pyx_t_1 = __Pyx_Import(((PyObject *)__pyx_n_s__socket), 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_1); - if (PyObject_SetAttr(__pyx_m, __pyx_n_s__socket, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "/root/NetfilterQueue/netfilterqueue.pyx":5 - * * # Constants for module users * COPY_NONE = 1 # <<<<<<<<<<<<<< * COPY_META = 2 * COPY_PACKET = 3 */ - if (PyObject_SetAttr(__pyx_m, __pyx_n_s__COPY_NONE, __pyx_int_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyObject_SetAttr(__pyx_m, __pyx_n_s__COPY_NONE, __pyx_int_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "/root/NetfilterQueue/netfilterqueue.pyx":6 + /* "netfilterqueue.pyx":4 * # Constants for module users * COPY_NONE = 1 * COPY_META = 2 # <<<<<<<<<<<<<< * COPY_PACKET = 3 * */ - if (PyObject_SetAttr(__pyx_m, __pyx_n_s__COPY_META, __pyx_int_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyObject_SetAttr(__pyx_m, __pyx_n_s__COPY_META, __pyx_int_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "/root/NetfilterQueue/netfilterqueue.pyx":7 + /* "netfilterqueue.pyx":5 * COPY_NONE = 1 * COPY_META = 2 * COPY_PACKET = 3 # <<<<<<<<<<<<<< * + * DEFAULT_MAX_QUEUELEN = 1024 + */ + if (PyObject_SetAttr(__pyx_m, __pyx_n_s__COPY_PACKET, __pyx_int_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + + /* "netfilterqueue.pyx":7 + * COPY_PACKET = 3 + * + * DEFAULT_MAX_QUEUELEN = 1024 # <<<<<<<<<<<<<< + * * # Packet copying defaults */ - if (PyObject_SetAttr(__pyx_m, __pyx_n_s__COPY_PACKET, __pyx_int_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyObject_SetAttr(__pyx_m, __pyx_n_s_15, __pyx_int_1024) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "/root/NetfilterQueue/netfilterqueue.pyx":146 + /* "netfilterqueue.pyx":127 * nfq_close(self.h) * - * def bind(self, object handler, int queue_num, u_int32_t maxlen, u_int8_t mode=NFQNL_COPY_PACKET, u_int32_t range=MaxPacketSize): # <<<<<<<<<<<<<< - * """Create a new queue with the given callback function.""" - * self.qh = nfq_create_queue(self.h, queue_num, global_callback, handler) + * def bind(self, int queue_num, u_int32_t maxlen=DEFAULT_MAX_QUEUELEN, u_int8_t mode=NFQNL_COPY_PACKET, u_int32_t range=MaxPacketSize): # <<<<<<<<<<<<<< + * """Create and bind to a new queue.""" + * self.qh = nfq_create_queue(self.h, queue_num, global_callback, self) */ - __pyx_k_9 = NFQNL_COPY_PACKET; + __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s_15); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyInt_from_py_u_int32_t(__pyx_t_1); if (unlikely((__pyx_t_2 == (u_int32_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_k_10 = __pyx_t_2; + __pyx_k_11 = NFQNL_COPY_PACKET; - /* "/root/NetfilterQueue/netfilterqueue.pyx":1 - * ## cython: profile=True # <<<<<<<<<<<<<< - * import socket + /* "netfilterqueue.pyx":162 + * packet.accept() * + * PROTOCOLS = { # <<<<<<<<<<<<<< + * 0: "HOPOPT", + * 1: "ICMP", + */ + __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(((PyObject *)__pyx_t_1)); + if (PyDict_SetItem(__pyx_t_1, __pyx_int_0, ((PyObject *)__pyx_n_s__HOPOPT)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_1, ((PyObject *)__pyx_n_s__ICMP)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_2, ((PyObject *)__pyx_n_s__IGMP)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_3, ((PyObject *)__pyx_n_s__GGP)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_4, ((PyObject *)__pyx_n_s__IP)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_5, ((PyObject *)__pyx_n_s__ST)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_6, ((PyObject *)__pyx_n_s__TCP)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_7, ((PyObject *)__pyx_n_s__CBT)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_8, ((PyObject *)__pyx_n_s__EGP)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_9, ((PyObject *)__pyx_n_s__IGP)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_10, ((PyObject *)__pyx_kp_s_16)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_11, ((PyObject *)__pyx_kp_s_17)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_12, ((PyObject *)__pyx_n_s__PUP)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_13, ((PyObject *)__pyx_n_s__ARGUS)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_14, ((PyObject *)__pyx_n_s__EMCON)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_15, ((PyObject *)__pyx_n_s__XNET)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_16, ((PyObject *)__pyx_n_s__CHAOS)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_17, ((PyObject *)__pyx_n_s__UDP)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_18, ((PyObject *)__pyx_n_s__MUX)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_19, ((PyObject *)__pyx_kp_s_18)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_20, ((PyObject *)__pyx_n_s__HMP)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_21, ((PyObject *)__pyx_n_s__PRM)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_22, ((PyObject *)__pyx_kp_s_19)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_23, ((PyObject *)__pyx_kp_s_20)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_24, ((PyObject *)__pyx_kp_s_21)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_25, ((PyObject *)__pyx_kp_s_22)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_26, ((PyObject *)__pyx_kp_s_23)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_27, ((PyObject *)__pyx_n_s__RDP)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_28, ((PyObject *)__pyx_n_s__IRTP)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_29, ((PyObject *)__pyx_kp_s_24)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_30, ((PyObject *)__pyx_n_s__NETBLT)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_31, ((PyObject *)__pyx_kp_s_25)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_32, ((PyObject *)__pyx_kp_s_26)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_33, ((PyObject *)__pyx_n_s__DCCP)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_34, ((PyObject *)__pyx_kp_s__3PC)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_35, ((PyObject *)__pyx_n_s__IDPR)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_36, ((PyObject *)__pyx_n_s__XTP)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_37, ((PyObject *)__pyx_n_s__DDP)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_38, ((PyObject *)__pyx_kp_s_27)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_39, ((PyObject *)__pyx_kp_s_28)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_40, ((PyObject *)__pyx_n_s__IL)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_41, ((PyObject *)__pyx_n_s__IPv6)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_42, ((PyObject *)__pyx_n_s__SDRP)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_43, ((PyObject *)__pyx_kp_s_29)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_44, ((PyObject *)__pyx_kp_s_30)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_45, ((PyObject *)__pyx_n_s__IDRP)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_46, ((PyObject *)__pyx_n_s__RSVP)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_47, ((PyObject *)__pyx_n_s__GRE)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_48, ((PyObject *)__pyx_n_s__DSR)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_49, ((PyObject *)__pyx_n_s__BNA)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_50, ((PyObject *)__pyx_n_s__ESP)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_51, ((PyObject *)__pyx_n_s__AH)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_52, ((PyObject *)__pyx_kp_s_31)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_53, ((PyObject *)__pyx_n_s__SWIPE)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_54, ((PyObject *)__pyx_n_s__NARP)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_55, ((PyObject *)__pyx_n_s__MOBILE)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_56, ((PyObject *)__pyx_n_s__TLSP)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_57, ((PyObject *)__pyx_n_s__SKIP)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_58, ((PyObject *)__pyx_kp_s_32)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_59, ((PyObject *)__pyx_kp_s_33)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_60, ((PyObject *)__pyx_kp_s_34)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_61, ((PyObject *)__pyx_kp_s_35)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_62, ((PyObject *)__pyx_n_s__CFTP)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_63, ((PyObject *)__pyx_kp_s_36)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_64, ((PyObject *)__pyx_kp_s_37)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_65, ((PyObject *)__pyx_n_s__KRYPTOLAN)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_66, ((PyObject *)__pyx_n_s__RVD)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_67, ((PyObject *)__pyx_n_s__IPPC)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_68, ((PyObject *)__pyx_kp_s_38)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_69, ((PyObject *)__pyx_kp_s_39)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_70, ((PyObject *)__pyx_n_s__VISA)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_71, ((PyObject *)__pyx_n_s__IPCV)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_72, ((PyObject *)__pyx_n_s__CPNX)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_73, ((PyObject *)__pyx_n_s__CPHB)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_74, ((PyObject *)__pyx_n_s__WSN)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_75, ((PyObject *)__pyx_n_s__PVP)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_76, ((PyObject *)__pyx_kp_s_40)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_77, ((PyObject *)__pyx_kp_s_41)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_78, ((PyObject *)__pyx_kp_s_42)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_79, ((PyObject *)__pyx_kp_s_43)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_80, ((PyObject *)__pyx_kp_s_44)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_81, ((PyObject *)__pyx_n_s__VMTP)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_82, ((PyObject *)__pyx_kp_s_45)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_83, ((PyObject *)__pyx_n_s__VINES)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_84, ((PyObject *)__pyx_n_s__TTP)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_85, ((PyObject *)__pyx_kp_s_46)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_86, ((PyObject *)__pyx_n_s__DGP)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_87, ((PyObject *)__pyx_n_s__TCF)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_88, ((PyObject *)__pyx_n_s__EIGRP)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_89, ((PyObject *)__pyx_n_s__OSPFIGP)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_90, ((PyObject *)__pyx_kp_s_47)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_91, ((PyObject *)__pyx_n_s__LARP)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_92, ((PyObject *)__pyx_n_s__MTP)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_93, ((PyObject *)__pyx_kp_s_48)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_94, ((PyObject *)__pyx_n_s__IPIP)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_95, ((PyObject *)__pyx_n_s__MICP)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_96, ((PyObject *)__pyx_kp_s_49)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_97, ((PyObject *)__pyx_n_s__ETHERIP)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_98, ((PyObject *)__pyx_n_s__ENCAP)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_99, ((PyObject *)__pyx_kp_s_50)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_100, ((PyObject *)__pyx_n_s__GMTP)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_101, ((PyObject *)__pyx_n_s__IFMP)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_102, ((PyObject *)__pyx_n_s__PNNI)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_103, ((PyObject *)__pyx_n_s__PIM)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_104, ((PyObject *)__pyx_n_s__ARIS)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_105, ((PyObject *)__pyx_n_s__SCPS)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_106, ((PyObject *)__pyx_n_s__QNX)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_107, ((PyObject *)__pyx_kp_s_51)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_108, ((PyObject *)__pyx_n_s__IPComp)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_109, ((PyObject *)__pyx_n_s__SNP)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_110, ((PyObject *)__pyx_kp_s_52)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_111, ((PyObject *)__pyx_kp_s_53)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_112, ((PyObject *)__pyx_n_s__VRRP)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_113, ((PyObject *)__pyx_n_s__PGM)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_114, ((PyObject *)__pyx_kp_s_54)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_115, ((PyObject *)__pyx_n_s__L2TP)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_116, ((PyObject *)__pyx_n_s__DDX)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_117, ((PyObject *)__pyx_n_s__IATP)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_118, ((PyObject *)__pyx_n_s__STP)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_119, ((PyObject *)__pyx_n_s__SRP)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_120, ((PyObject *)__pyx_n_s__UTI)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_121, ((PyObject *)__pyx_n_s__SMP)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_122, ((PyObject *)__pyx_n_s__SM)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_123, ((PyObject *)__pyx_n_s__PTP)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_124, ((PyObject *)__pyx_n_s__ISIS)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_125, ((PyObject *)__pyx_n_s__FIRE)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_126, ((PyObject *)__pyx_n_s__CRTP)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_127, ((PyObject *)__pyx_n_s__CRUDP)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_128, ((PyObject *)__pyx_n_s__SSCOPMCE)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_129, ((PyObject *)__pyx_n_s__IPLT)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_130, ((PyObject *)__pyx_n_s__SPS)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_131, ((PyObject *)__pyx_n_s__PIPE)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_132, ((PyObject *)__pyx_n_s__SCTP)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_133, ((PyObject *)__pyx_n_s__FC)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_134, ((PyObject *)__pyx_kp_s_55)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_135, ((PyObject *)__pyx_n_s__Mobility)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_136, ((PyObject *)__pyx_n_s__UDPLite)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_137, ((PyObject *)__pyx_kp_s_56)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_138, ((PyObject *)__pyx_n_s__manet)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_139, ((PyObject *)__pyx_n_s__HIP)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_140, ((PyObject *)__pyx_n_s__Shim6)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_int_255, ((PyObject *)__pyx_n_s__Reserved)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyObject_SetAttr(__pyx_m, __pyx_n_s__PROTOCOLS, ((PyObject *)__pyx_t_1)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; + + /* "netfilterqueue.pyx":1 + * ## cython: profile=True # <<<<<<<<<<<<<< + * # Constants for module users + * COPY_NONE = 1 */ __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_1)); @@ -3342,284 +4078,6 @@ invalid_keyword: return 0; } -static CYTHON_INLINE void __Pyx_RaiseNoneIndexingError(void) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is unsubscriptable"); -} - -static void __Pyx_RaiseDoubleKeywordsError( - const char* func_name, - PyObject* kw_name) -{ - PyErr_Format(PyExc_TypeError, - #if PY_MAJOR_VERSION >= 3 - "%s() got multiple values for keyword argument '%U'", func_name, kw_name); - #else - "%s() got multiple values for keyword argument '%s'", func_name, - PyString_AS_STRING(kw_name)); - #endif -} - -static int __Pyx_ParseOptionalKeywords( - PyObject *kwds, - PyObject **argnames[], - PyObject *kwds2, - PyObject *values[], - Py_ssize_t num_pos_args, - const char* function_name) -{ - PyObject *key = 0, *value = 0; - Py_ssize_t pos = 0; - PyObject*** name; - PyObject*** first_kw_arg = argnames + num_pos_args; - - while (PyDict_Next(kwds, &pos, &key, &value)) { - name = first_kw_arg; - while (*name && (**name != key)) name++; - if (*name) { - values[name-argnames] = value; - } else { - #if PY_MAJOR_VERSION < 3 - if (unlikely(!PyString_CheckExact(key)) && unlikely(!PyString_Check(key))) { - #else - if (unlikely(!PyUnicode_CheckExact(key)) && unlikely(!PyUnicode_Check(key))) { - #endif - goto invalid_keyword_type; - } else { - for (name = first_kw_arg; *name; name++) { - #if PY_MAJOR_VERSION >= 3 - if (PyUnicode_GET_SIZE(**name) == PyUnicode_GET_SIZE(key) && - PyUnicode_Compare(**name, key) == 0) break; - #else - if (PyString_GET_SIZE(**name) == PyString_GET_SIZE(key) && - _PyString_Eq(**name, key)) break; - #endif - } - if (*name) { - values[name-argnames] = value; - } else { - /* unexpected keyword found */ - for (name=argnames; name != first_kw_arg; name++) { - if (**name == key) goto arg_passed_twice; - #if PY_MAJOR_VERSION >= 3 - if (PyUnicode_GET_SIZE(**name) == PyUnicode_GET_SIZE(key) && - PyUnicode_Compare(**name, key) == 0) goto arg_passed_twice; - #else - if (PyString_GET_SIZE(**name) == PyString_GET_SIZE(key) && - _PyString_Eq(**name, key)) goto arg_passed_twice; - #endif - } - if (kwds2) { - if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad; - } else { - goto invalid_keyword; - } - } - } - } - } - return 0; -arg_passed_twice: - __Pyx_RaiseDoubleKeywordsError(function_name, **name); - goto bad; -invalid_keyword_type: - PyErr_Format(PyExc_TypeError, - "%s() keywords must be strings", function_name); - goto bad; -invalid_keyword: - PyErr_Format(PyExc_TypeError, - #if PY_MAJOR_VERSION < 3 - "%s() got an unexpected keyword argument '%s'", - function_name, PyString_AsString(key)); - #else - "%s() got an unexpected keyword argument '%U'", - function_name, key); - #endif -bad: - return -1; -} - -static int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed, - const char *name, int exact) -{ - if (!type) { - PyErr_Format(PyExc_SystemError, "Missing type object"); - return 0; - } - if (none_allowed && obj == Py_None) return 1; - else if (exact) { - if (Py_TYPE(obj) == type) return 1; - } - else { - if (PyObject_TypeCheck(obj, type)) return 1; - } - PyErr_Format(PyExc_TypeError, - "Argument '%s' has incorrect type (expected %s, got %s)", - name, type->tp_name, Py_TYPE(obj)->tp_name); - return 0; -} - -static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_u_int32_t(u_int32_t val) { - const u_int32_t neg_one = (u_int32_t)-1, const_zero = (u_int32_t)0; - const int is_unsigned = const_zero < neg_one; - if ((sizeof(u_int32_t) == sizeof(char)) || - (sizeof(u_int32_t) == sizeof(short))) { - return PyInt_FromLong((long)val); - } else if ((sizeof(u_int32_t) == sizeof(int)) || - (sizeof(u_int32_t) == sizeof(long))) { - if (is_unsigned) - return PyLong_FromUnsignedLong((unsigned long)val); - else - return PyInt_FromLong((long)val); - } else if (sizeof(u_int32_t) == sizeof(PY_LONG_LONG)) { - if (is_unsigned) - return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG)val); - else - return PyLong_FromLongLong((PY_LONG_LONG)val); - } else { - int one = 1; int little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&val; - return _PyLong_FromByteArray(bytes, sizeof(u_int32_t), - little, !is_unsigned); - } -} - -static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_u_int16_t(u_int16_t val) { - const u_int16_t neg_one = (u_int16_t)-1, const_zero = (u_int16_t)0; - const int is_unsigned = const_zero < neg_one; - if ((sizeof(u_int16_t) == sizeof(char)) || - (sizeof(u_int16_t) == sizeof(short))) { - return PyInt_FromLong((long)val); - } else if ((sizeof(u_int16_t) == sizeof(int)) || - (sizeof(u_int16_t) == sizeof(long))) { - if (is_unsigned) - return PyLong_FromUnsignedLong((unsigned long)val); - else - return PyInt_FromLong((long)val); - } else if (sizeof(u_int16_t) == sizeof(PY_LONG_LONG)) { - if (is_unsigned) - return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG)val); - else - return PyLong_FromLongLong((PY_LONG_LONG)val); - } else { - int one = 1; int little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&val; - return _PyLong_FromByteArray(bytes, sizeof(u_int16_t), - little, !is_unsigned); - } -} - -static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_u_int8_t(u_int8_t val) { - const u_int8_t neg_one = (u_int8_t)-1, const_zero = (u_int8_t)0; - const int is_unsigned = const_zero < neg_one; - if ((sizeof(u_int8_t) == sizeof(char)) || - (sizeof(u_int8_t) == sizeof(short))) { - return PyInt_FromLong((long)val); - } else if ((sizeof(u_int8_t) == sizeof(int)) || - (sizeof(u_int8_t) == sizeof(long))) { - if (is_unsigned) - return PyLong_FromUnsignedLong((unsigned long)val); - else - return PyInt_FromLong((long)val); - } else if (sizeof(u_int8_t) == sizeof(PY_LONG_LONG)) { - if (is_unsigned) - return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG)val); - else - return PyLong_FromLongLong((PY_LONG_LONG)val); - } else { - int one = 1; int little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&val; - return _PyLong_FromByteArray(bytes, sizeof(u_int8_t), - little, !is_unsigned); - } -} - -static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list) { - PyObject *py_import = 0; - PyObject *empty_list = 0; - PyObject *module = 0; - PyObject *global_dict = 0; - PyObject *empty_dict = 0; - PyObject *list; - py_import = __Pyx_GetAttrString(__pyx_b, "__import__"); - if (!py_import) - goto bad; - if (from_list) - list = from_list; - else { - empty_list = PyList_New(0); - if (!empty_list) - goto bad; - list = empty_list; - } - global_dict = PyModule_GetDict(__pyx_m); - if (!global_dict) - goto bad; - empty_dict = PyDict_New(); - if (!empty_dict) - goto bad; - module = PyObject_CallFunctionObjArgs(py_import, - name, global_dict, empty_dict, list, NULL); -bad: - Py_XDECREF(empty_list); - Py_XDECREF(py_import); - Py_XDECREF(empty_dict); - return module; -} - - -PyObject *__pyx_binding_PyCFunctionType_NewEx(PyMethodDef *ml, PyObject *self, PyObject *module) { - __pyx_binding_PyCFunctionType_object *op = PyObject_GC_New(__pyx_binding_PyCFunctionType_object, __pyx_binding_PyCFunctionType); - if (op == NULL) - return NULL; - op->func.m_ml = ml; - Py_XINCREF(self); - op->func.m_self = self; - Py_XINCREF(module); - op->func.m_module = module; - PyObject_GC_Track(op); - return (PyObject *)op; -} - -static void __pyx_binding_PyCFunctionType_dealloc(__pyx_binding_PyCFunctionType_object *m) { - PyObject_GC_UnTrack(m); - Py_XDECREF(m->func.m_self); - Py_XDECREF(m->func.m_module); - PyObject_GC_Del(m); -} - -static PyObject *__pyx_binding_PyCFunctionType_descr_get(PyObject *func, PyObject *obj, PyObject *type) { - if (obj == Py_None) - obj = NULL; - return PyMethod_New(func, obj, type); -} - -int __pyx_binding_PyCFunctionType_init(void) { - __pyx_binding_PyCFunctionType_type = PyCFunction_Type; - __pyx_binding_PyCFunctionType_type.tp_name = __Pyx_NAMESTR("cython_binding_builtin_function_or_method"); - __pyx_binding_PyCFunctionType_type.tp_dealloc = (destructor)__pyx_binding_PyCFunctionType_dealloc; - __pyx_binding_PyCFunctionType_type.tp_descr_get = __pyx_binding_PyCFunctionType_descr_get; - if (PyType_Ready(&__pyx_binding_PyCFunctionType_type) < 0) { - return -1; - } - __pyx_binding_PyCFunctionType = &__pyx_binding_PyCFunctionType_type; - return 0; - -} - -static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *o, PyObject *n, PyObject *d) { - PyObject *r = PyObject_GetAttr(o, n); - if (!r) { - if (!PyErr_ExceptionMatches(PyExc_AttributeError)) - goto bad; - PyErr_Clear(); - r = d; - Py_INCREF(d); - } - return r; -bad: - return NULL; -} - static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb) { PyObject *tmp_type, *tmp_value, *tmp_tb; PyThreadState *tstate = PyThreadState_GET(); @@ -3757,6 +4215,245 @@ bad: } #endif +static void __Pyx_RaiseDoubleKeywordsError( + const char* func_name, + PyObject* kw_name) +{ + PyErr_Format(PyExc_TypeError, + #if PY_MAJOR_VERSION >= 3 + "%s() got multiple values for keyword argument '%U'", func_name, kw_name); + #else + "%s() got multiple values for keyword argument '%s'", func_name, + PyString_AS_STRING(kw_name)); + #endif +} + +static int __Pyx_ParseOptionalKeywords( + PyObject *kwds, + PyObject **argnames[], + PyObject *kwds2, + PyObject *values[], + Py_ssize_t num_pos_args, + const char* function_name) +{ + PyObject *key = 0, *value = 0; + Py_ssize_t pos = 0; + PyObject*** name; + PyObject*** first_kw_arg = argnames + num_pos_args; + + while (PyDict_Next(kwds, &pos, &key, &value)) { + name = first_kw_arg; + while (*name && (**name != key)) name++; + if (*name) { + values[name-argnames] = value; + } else { + #if PY_MAJOR_VERSION < 3 + if (unlikely(!PyString_CheckExact(key)) && unlikely(!PyString_Check(key))) { + #else + if (unlikely(!PyUnicode_CheckExact(key)) && unlikely(!PyUnicode_Check(key))) { + #endif + goto invalid_keyword_type; + } else { + for (name = first_kw_arg; *name; name++) { + #if PY_MAJOR_VERSION >= 3 + if (PyUnicode_GET_SIZE(**name) == PyUnicode_GET_SIZE(key) && + PyUnicode_Compare(**name, key) == 0) break; + #else + if (PyString_GET_SIZE(**name) == PyString_GET_SIZE(key) && + _PyString_Eq(**name, key)) break; + #endif + } + if (*name) { + values[name-argnames] = value; + } else { + /* unexpected keyword found */ + for (name=argnames; name != first_kw_arg; name++) { + if (**name == key) goto arg_passed_twice; + #if PY_MAJOR_VERSION >= 3 + if (PyUnicode_GET_SIZE(**name) == PyUnicode_GET_SIZE(key) && + PyUnicode_Compare(**name, key) == 0) goto arg_passed_twice; + #else + if (PyString_GET_SIZE(**name) == PyString_GET_SIZE(key) && + _PyString_Eq(**name, key)) goto arg_passed_twice; + #endif + } + if (kwds2) { + if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad; + } else { + goto invalid_keyword; + } + } + } + } + } + return 0; +arg_passed_twice: + __Pyx_RaiseDoubleKeywordsError(function_name, **name); + goto bad; +invalid_keyword_type: + PyErr_Format(PyExc_TypeError, + "%s() keywords must be strings", function_name); + goto bad; +invalid_keyword: + PyErr_Format(PyExc_TypeError, + #if PY_MAJOR_VERSION < 3 + "%s() got an unexpected keyword argument '%s'", + function_name, PyString_AsString(key)); + #else + "%s() got an unexpected keyword argument '%U'", + function_name, key); + #endif +bad: + return -1; +} + +static int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed, + const char *name, int exact) +{ + if (!type) { + PyErr_Format(PyExc_SystemError, "Missing type object"); + return 0; + } + if (none_allowed && obj == Py_None) return 1; + else if (exact) { + if (Py_TYPE(obj) == type) return 1; + } + else { + if (PyObject_TypeCheck(obj, type)) return 1; + } + PyErr_Format(PyExc_TypeError, + "Argument '%s' has incorrect type (expected %s, got %s)", + name, type->tp_name, Py_TYPE(obj)->tp_name); + return 0; +} + +static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_u_int32_t(u_int32_t val) { + const u_int32_t neg_one = (u_int32_t)-1, const_zero = (u_int32_t)0; + const int is_unsigned = const_zero < neg_one; + if ((sizeof(u_int32_t) == sizeof(char)) || + (sizeof(u_int32_t) == sizeof(short))) { + return PyInt_FromLong((long)val); + } else if ((sizeof(u_int32_t) == sizeof(int)) || + (sizeof(u_int32_t) == sizeof(long))) { + if (is_unsigned) + return PyLong_FromUnsignedLong((unsigned long)val); + else + return PyInt_FromLong((long)val); + } else if (sizeof(u_int32_t) == sizeof(PY_LONG_LONG)) { + if (is_unsigned) + return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG)val); + else + return PyLong_FromLongLong((PY_LONG_LONG)val); + } else { + int one = 1; int little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&val; + return _PyLong_FromByteArray(bytes, sizeof(u_int32_t), + little, !is_unsigned); + } +} + +static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_u_int16_t(u_int16_t val) { + const u_int16_t neg_one = (u_int16_t)-1, const_zero = (u_int16_t)0; + const int is_unsigned = const_zero < neg_one; + if ((sizeof(u_int16_t) == sizeof(char)) || + (sizeof(u_int16_t) == sizeof(short))) { + return PyInt_FromLong((long)val); + } else if ((sizeof(u_int16_t) == sizeof(int)) || + (sizeof(u_int16_t) == sizeof(long))) { + if (is_unsigned) + return PyLong_FromUnsignedLong((unsigned long)val); + else + return PyInt_FromLong((long)val); + } else if (sizeof(u_int16_t) == sizeof(PY_LONG_LONG)) { + if (is_unsigned) + return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG)val); + else + return PyLong_FromLongLong((PY_LONG_LONG)val); + } else { + int one = 1; int little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&val; + return _PyLong_FromByteArray(bytes, sizeof(u_int16_t), + little, !is_unsigned); + } +} + +static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_u_int8_t(u_int8_t val) { + const u_int8_t neg_one = (u_int8_t)-1, const_zero = (u_int8_t)0; + const int is_unsigned = const_zero < neg_one; + if ((sizeof(u_int8_t) == sizeof(char)) || + (sizeof(u_int8_t) == sizeof(short))) { + return PyInt_FromLong((long)val); + } else if ((sizeof(u_int8_t) == sizeof(int)) || + (sizeof(u_int8_t) == sizeof(long))) { + if (is_unsigned) + return PyLong_FromUnsignedLong((unsigned long)val); + else + return PyInt_FromLong((long)val); + } else if (sizeof(u_int8_t) == sizeof(PY_LONG_LONG)) { + if (is_unsigned) + return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG)val); + else + return PyLong_FromLongLong((PY_LONG_LONG)val); + } else { + int one = 1; int little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&val; + return _PyLong_FromByteArray(bytes, sizeof(u_int8_t), + little, !is_unsigned); + } +} + +static CYTHON_INLINE u_int32_t __Pyx_PyInt_from_py_u_int32_t(PyObject* x) { + const u_int32_t neg_one = (u_int32_t)-1, const_zero = (u_int32_t)0; + const int is_unsigned = const_zero < neg_one; + if (sizeof(u_int32_t) == sizeof(char)) { + if (is_unsigned) + return (u_int32_t)__Pyx_PyInt_AsUnsignedChar(x); + else + return (u_int32_t)__Pyx_PyInt_AsSignedChar(x); + } else if (sizeof(u_int32_t) == sizeof(short)) { + if (is_unsigned) + return (u_int32_t)__Pyx_PyInt_AsUnsignedShort(x); + else + return (u_int32_t)__Pyx_PyInt_AsSignedShort(x); + } else if (sizeof(u_int32_t) == sizeof(int)) { + if (is_unsigned) + return (u_int32_t)__Pyx_PyInt_AsUnsignedInt(x); + else + return (u_int32_t)__Pyx_PyInt_AsSignedInt(x); + } else if (sizeof(u_int32_t) == sizeof(long)) { + if (is_unsigned) + return (u_int32_t)__Pyx_PyInt_AsUnsignedLong(x); + else + return (u_int32_t)__Pyx_PyInt_AsSignedLong(x); + } else if (sizeof(u_int32_t) == sizeof(PY_LONG_LONG)) { + if (is_unsigned) + return (u_int32_t)__Pyx_PyInt_AsUnsignedLongLong(x); + else + return (u_int32_t)__Pyx_PyInt_AsSignedLongLong(x); + } else { + u_int32_t val; + PyObject *v = __Pyx_PyNumber_Int(x); + #if PY_VERSION_HEX < 0x03000000 + if (likely(v) && !PyLong_Check(v)) { + PyObject *tmp = v; + v = PyNumber_Long(tmp); + Py_DECREF(tmp); + } + #endif + if (likely(v)) { + int one = 1; int is_little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&val; + int ret = _PyLong_AsByteArray((PyLongObject *)v, + bytes, sizeof(val), + is_little, !is_unsigned); + Py_DECREF(v); + if (likely(!ret)) + return val; + } + return (u_int32_t)-1; + } +} + static CYTHON_INLINE u_int16_t __Pyx_PyInt_from_py_u_int16_t(PyObject* x) { const u_int16_t neg_one = (u_int16_t)-1, const_zero = (u_int16_t)0; const int is_unsigned = const_zero < neg_one; @@ -4227,58 +4924,6 @@ static void __Pyx_WriteUnraisable(const char *name) { } } -static CYTHON_INLINE u_int32_t __Pyx_PyInt_from_py_u_int32_t(PyObject* x) { - const u_int32_t neg_one = (u_int32_t)-1, const_zero = (u_int32_t)0; - const int is_unsigned = const_zero < neg_one; - if (sizeof(u_int32_t) == sizeof(char)) { - if (is_unsigned) - return (u_int32_t)__Pyx_PyInt_AsUnsignedChar(x); - else - return (u_int32_t)__Pyx_PyInt_AsSignedChar(x); - } else if (sizeof(u_int32_t) == sizeof(short)) { - if (is_unsigned) - return (u_int32_t)__Pyx_PyInt_AsUnsignedShort(x); - else - return (u_int32_t)__Pyx_PyInt_AsSignedShort(x); - } else if (sizeof(u_int32_t) == sizeof(int)) { - if (is_unsigned) - return (u_int32_t)__Pyx_PyInt_AsUnsignedInt(x); - else - return (u_int32_t)__Pyx_PyInt_AsSignedInt(x); - } else if (sizeof(u_int32_t) == sizeof(long)) { - if (is_unsigned) - return (u_int32_t)__Pyx_PyInt_AsUnsignedLong(x); - else - return (u_int32_t)__Pyx_PyInt_AsSignedLong(x); - } else if (sizeof(u_int32_t) == sizeof(PY_LONG_LONG)) { - if (is_unsigned) - return (u_int32_t)__Pyx_PyInt_AsUnsignedLongLong(x); - else - return (u_int32_t)__Pyx_PyInt_AsSignedLongLong(x); - } else { - u_int32_t val; - PyObject *v = __Pyx_PyNumber_Int(x); - #if PY_VERSION_HEX < 0x03000000 - if (likely(v) && !PyLong_Check(v)) { - PyObject *tmp = v; - v = PyNumber_Long(tmp); - Py_DECREF(tmp); - } - #endif - if (likely(v)) { - int one = 1; int is_little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&val; - int ret = _PyLong_AsByteArray((PyLongObject *)v, - bytes, sizeof(val), - is_little, !is_unsigned); - Py_DECREF(v); - if (likely(!ret)) - return val; - } - return (u_int32_t)-1; - } -} - static CYTHON_INLINE u_int8_t __Pyx_PyInt_from_py_u_int8_t(PyObject* x) { const u_int8_t neg_one = (u_int8_t)-1, const_zero = (u_int8_t)0; const int is_unsigned = const_zero < neg_one; diff --git a/netfilterqueue.pxd b/netfilterqueue.pxd index 5b520ce..817309f 100644 --- a/netfilterqueue.pxd +++ b/netfilterqueue.pxd @@ -148,7 +148,7 @@ cdef enum: NF_STOP NF_MAX_VERDICT = NF_STOP -cdef class NFPacket: +cdef class Packet: cdef nfq_q_handle *_qh cdef nfq_data *_nfa cdef nfqnl_msg_packet_hdr *_hdr @@ -183,7 +183,7 @@ cdef class NFPacket: cpdef accept(self) cpdef drop(self) -cdef class NFQueue: +cdef class NetfilterQueue: cdef nfq_handle *h # Handle to NFQueue library cdef nfq_q_handle *qh # A handle to the queue cdef u_int16_t af # Address family diff --git a/netfilterqueue.pyx b/netfilterqueue.pyx index 644bb0c..7f28c79 100644 --- a/netfilterqueue.pyx +++ b/netfilterqueue.pyx @@ -1,11 +1,11 @@ ## cython: profile=True -import socket - # Constants for module users COPY_NONE = 1 COPY_META = 2 COPY_PACKET = 3 +DEFAULT_MAX_QUEUELEN = 1024 + # Packet copying defaults DEF MaxPacketSize = 0xFFFF DEF BufferSize = 4096 @@ -14,28 +14,14 @@ DEF MaxCopySize = BufferSize - MetadataSize cdef int global_callback(nfq_q_handle *qh, nfgenmsg *nfmsg, nfq_data *nfa, void *data) with gil: - """ - Create an NFPacket and pass it to appropriate Python/Cython callback. - - Working in a Python or Cython callback, rather than directly in this - callback, results in a ~7% performance hit. - """ -# cdef nfqnl_msg_packet_hdr *_hdr = nfq_get_msg_packet_hdr(nfa) -# cdef u_int32_t id = ntohl(_hdr.packet_id) -# nfq_set_verdict( -# qh, -# id, -# NF_ACCEPT, -# 0, # TODO: adapt to use self._given_payload -# NULL # TODO: adapt to use self._given_payload -# ) - packet = NFPacket() + """Create an Packet and pass it to appropriate Python/Cython callback.""" + packet = Packet() packet.set_nfq_data(qh, nfa) - (data).handle(packet) + (data).handle(packet) return 1 -cdef class NFPacket: - """A packet received from NFQueue.""" +cdef class Packet: + """A packet received from NetfilterQueue.""" def __cinit__(self): self._verdict_is_set = False self._mark_is_set = False @@ -43,10 +29,7 @@ cdef class NFPacket: def __str__(self): cdef iphdr *hdr = self.payload - protocol = "Unknown protocol" - for name in filter(lambda x: x.startswith("IPPROTO"), dir(socket)): - if getattr(socket, name) == hdr.protocol: - protocol = name[8:] + protocol = PROTOCOLS.get(hdr.protocol, "Unknown protocol") return "%s packet, %s bytes" % (protocol, self.payload_len) cdef set_nfq_data(self, nfq_q_handle *qh, nfq_data *nfa): @@ -70,9 +53,9 @@ cdef class NFPacket: cdef void verdict(self, u_int8_t verdict): """Call appropriate set_verdict... function on packet.""" - #if self._verdict_is_set: - # raise RuntimeWarning("Verdict already given for this packet.") - + if self._verdict_is_set: + raise RuntimeWarning("Verdict already given for this packet.") + if self._mark_is_set: nfq_set_verdict_mark( # TODO: make this use nfq_set_verdict2 if available on system self._qh, @@ -91,9 +74,10 @@ cdef class NFPacket: NULL # TODO: adapt to use self._given_payload ) - #self._verdict_is_set = True + self._verdict_is_set = True def get_payload(self): + """Return payload as Python string.""" cdef object py_string = PyString_FromStringAndSize(self.payload, self.payload_len) return py_string @@ -120,13 +104,10 @@ cdef class NFPacket: """Drop the packet.""" self.verdict(NF_DROP) -cdef class NFQueue: +cdef class NetfilterQueue: """Handle a single numbered queue.""" def __cinit__(self, *args, **kwargs): - if "af" in kwargs: - self.af = kwargs["af"] - else: - self.af = socket.AF_INET + self.af = kwargs.get("af", PF_INET) self.h = nfq_open() if self.h == NULL: @@ -134,7 +115,7 @@ cdef class NFQueue: nfq_unbind_pf(self.h, self.af) # This does NOT kick out previous # running queues if nfq_bind_pf(self.h, self.af) < 0: - raise OSError("Failed to bind family %s." % self.af) + raise OSError("Failed to bind family %s. Are you root?" % self.af) def __dealloc__(self): if self.qh != NULL: @@ -143,9 +124,9 @@ cdef class NFQueue: # processes using this libnetfilter_queue on this protocol family! nfq_close(self.h) - def bind(self, object handler, int queue_num, u_int32_t maxlen, u_int8_t mode=NFQNL_COPY_PACKET, u_int32_t range=MaxPacketSize): - """Create a new queue with the given callback function.""" - self.qh = nfq_create_queue(self.h, queue_num, global_callback, handler) + def bind(self, int queue_num, u_int32_t maxlen=DEFAULT_MAX_QUEUELEN, u_int8_t mode=NFQNL_COPY_PACKET, u_int32_t range=MaxPacketSize): + """Create and bind to a new queue.""" + self.qh = nfq_create_queue(self.h, queue_num, global_callback, self) if self.qh == NULL: raise OSError("Failed to create queue %s." % queue_num) @@ -174,6 +155,151 @@ cdef class NFQueue: with nogil: rv = recv(fd, buf, sizeof(buf), 0) - def handle(self, NFPacket packet): + def handle(self, Packet packet): """Handle a single packet. User-defined classes should override this.""" packet.accept() + +PROTOCOLS = { + 0: "HOPOPT", + 1: "ICMP", + 2: "IGMP", + 3: "GGP", + 4: "IP", + 5: "ST", + 6: "TCP", + 7: "CBT", + 8: "EGP", + 9: "IGP", + 10: "BBN-RCC-MON", + 11: "NVP-II", + 12: "PUP", + 13: "ARGUS", + 14: "EMCON", + 15: "XNET", + 16: "CHAOS", + 17: "UDP", + 18: "MUX", + 19: "DCN-MEAS", + 20: "HMP", + 21: "PRM", + 22: "XNS-IDP", + 23: "TRUNK-1", + 24: "TRUNK-2", + 25: "LEAF-1", + 26: "LEAF-2", + 27: "RDP", + 28: "IRTP", + 29: "ISO-TP4", + 30: "NETBLT", + 31: "MFE-NSP", + 32: "MERIT-INP", + 33: "DCCP", + 34: "3PC", + 35: "IDPR", + 36: "XTP", + 37: "DDP", + 38: "IDPR-CMTP", + 39: "TP++", + 40: "IL", + 41: "IPv6", + 42: "SDRP", + 43: "IPv6-Route", + 44: "IPv6-Frag", + 45: "IDRP", + 46: "RSVP", + 47: "GRE", + 48: "DSR", + 49: "BNA", + 50: "ESP", + 51: "AH", + 52: "I-NLSP", + 53: "SWIPE", + 54: "NARP", + 55: "MOBILE", + 56: "TLSP", + 57: "SKIP", + 58: "IPv6-ICMP", + 59: "IPv6-NoNxt", + 60: "IPv6-Opts", + 61: "any host internal protocol", + 62: "CFTP", + 63: "any local network", + 64: "SAT-EXPAK", + 65: "KRYPTOLAN", + 66: "RVD", + 67: "IPPC", + 68: "any distributed file system", + 69: "SAT-MON", + 70: "VISA", + 71: "IPCV", + 72: "CPNX", + 73: "CPHB", + 74: "WSN", + 75: "PVP", + 76: "BR-SAT-MON", + 77: "SUN-ND", + 78: "WB-MON", + 79: "WB-EXPAK", + 80: "ISO-IP", + 81: "VMTP", + 82: "SECURE-VMTP", + 83: "VINES", + 84: "TTP", + 85: "NSFNET-IGP", + 86: "DGP", + 87: "TCF", + 88: "EIGRP", + 89: "OSPFIGP", + 90: "Sprite-RPC", + 91: "LARP", + 92: "MTP", + 93: "AX.25", + 94: "IPIP", + 95: "MICP", + 96: "SCC-SP", + 97: "ETHERIP", + 98: "ENCAP", + 99: "any private encryption scheme", + 100: "GMTP", + 101: "IFMP", + 102: "PNNI", + 103: "PIM", + 104: "ARIS", + 105: "SCPS", + 106: "QNX", + 107: "A/N", + 108: "IPComp", + 109: "SNP", + 110: "Compaq-Peer", + 111: "IPX-in-IP", + 112: "VRRP", + 113: "PGM", + 114: "any 0-hop protocol", + 115: "L2TP", + 116: "DDX", + 117: "IATP", + 118: "STP", + 119: "SRP", + 120: "UTI", + 121: "SMP", + 122: "SM", + 123: "PTP", + 124: "ISIS", + 125: "FIRE", + 126: "CRTP", + 127: "CRUDP", + 128: "SSCOPMCE", + 129: "IPLT", + 130: "SPS", + 131: "PIPE", + 132: "SCTP", + 133: "FC", + 134: "RSVP-E2E-IGNORE", + 135: "Mobility", + 136: "UDPLite", + 137: "MPLS-in-IP", + 138: "manet", + 139: "HIP", + 140: "Shim6", + 255: "Reserved", +} \ No newline at end of file