1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
|
From 532972c390ceeb2ecaa67a91850348a28e16155a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?IOhannes=20m=20zm=C3=B6lnig=20=28Debian/GNU=29?=
<umlaeute@debian.org>
Date: Thu, 18 May 2017 00:23:15 +0200
Subject: Backported xtables_match_v12
Closes: #862741
---
iptc/xtables.py | 54 +++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 53 insertions(+), 1 deletion(-)
diff --git a/iptc/xtables.py b/iptc/xtables.py
index 54ba0e4..4546bc1 100644
--- a/iptc/xtables.py
+++ b/iptc/xtables.py
@@ -411,7 +411,59 @@ class _xtables_match_v10(ct.Structure):
_xtables_match_v11 = _xtables_match_v10
-_xtables_match_v12 = _xtables_match_v10
+
+
+class _xtables_match_v12(ct.Structure):
+ _fields_ = [("version", ct.c_char_p),
+ ("next", ct.c_void_p),
+ ("name", ct.c_char_p),
+ ("real_name", ct.c_char_p),
+ ("revision", ct.c_uint8),
+ ("ext_flags", ct.c_uint8),
+ ("family", ct.c_uint16),
+ ("size", ct.c_size_t),
+ ("userspacesize", ct.c_size_t),
+ ("help", ct.CFUNCTYPE(None)),
+ ("init", ct.CFUNCTYPE(None, ct.POINTER(xt_entry_match))),
+ # fourth parameter entry is struct ipt_entry for example
+ # int (*parse)(int c, char **argv, int invert, unsigned int
+ # *flags, const void *entry, struct xt_entry_match **match)
+ ("parse", ct.CFUNCTYPE(ct.c_int, ct.c_int,
+ ct.POINTER(ct.c_char_p), ct.c_int,
+ ct.POINTER(ct.c_uint), ct.c_void_p,
+ ct.POINTER(ct.POINTER(
+ xt_entry_match)))),
+ ("final_check", ct.CFUNCTYPE(None, ct.c_uint)),
+ # prints out the match iff non-NULL: put space at end
+ # first parameter ip is struct ipt_ip * for example
+ ("print", ct.CFUNCTYPE(None, ct.c_void_p,
+ ct.POINTER(xt_entry_match), ct.c_int)),
+ # saves the match info in parsable form to stdout.
+ # first parameter ip is struct ipt_ip * for example
+ ("save", ct.CFUNCTYPE(None, ct.c_void_p,
+ ct.POINTER(xt_entry_match))),
+ # Print match name or alias
+ ("alias", ct.CFUNCTYPE(ct.c_char_p,
+ ct.POINTER(xt_entry_match))),
+ # pointer to list of extra command-line options
+ ("extra_opts", ct.POINTER(option)),
+
+ # introduced with the new iptables API
+ ("x6_parse", ct.CFUNCTYPE(None, ct.POINTER(xt_option_call))),
+ ("x6_fcheck", ct.CFUNCTYPE(None, ct.POINTER(xt_fcheck_call))),
+ ("x6_options", ct.POINTER(xt_option_entry)),
+
+ ('xt_xlate', ct.c_int),
+
+ # size of per-extension instance extra "global" scratch space
+ ("udata_size", ct.c_size_t),
+
+ # ignore these men behind the curtain:
+ ("udata", ct.c_void_p),
+ ("option_offset", ct.c_uint),
+ ("m", ct.POINTER(xt_entry_match)),
+ ("mflags", ct.c_uint),
+ ("loaded", ct.c_uint)]
class xtables_match(ct.Union):
|