Package: python-iptables / 0.11.0-4

0005-Backported-xtables_match_v12.patch Patch series | download
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):