Skip to content

Bug - Module not working for iptables version 1.8.11-2 #353

@jkklemm

Description

@jkklemm

If iptables version 1.8.11-2 is installed and python 3.12 or python 3.13 is used in Ubuntu or Arch Linux and and the python-iptables module of pip version 1.0.1. is installed, the following code creates the following issue:

import iptc
rule = iptc.Rule()
rule.protocol = "udp"
match = iptc.Match(rule, "udp")
match.dport = "22"

XTablesError                              Traceback (most recent call last)
Cell In[1], line 5
      3 rule.protocol = "udp"
      4 match = iptc.Match(rule, "udp")
----> 5 match.sport = "22"

File /usr/local/lib/python3.12/dist-packages/iptc/ip4tc.py:460, in IPTCModule.__setattr__(self, name, value)
    458 def __setattr__(self, name, value):
    459     if not name.startswith('_') and name not in dir(self):
--> 460         self.parse(name.replace("_", "-"), value)
    461     else:
    462         object.__setattr__(self, name, value)

File /usr/local/lib/python3.12/dist-packages/iptc/ip4tc.py:332, in IPTCModule.parse(self, parameter, value)
    328     argv[i + 1] = args[i]
    330 entry = self._rule.entry and ct.pointer(self._rule.entry) or None
--> 332 self._parse(argv, inv, entry)

File /usr/local/lib/python3.12/dist-packages/iptc/ip4tc.py:601, in Match._parse(self, argv, inv, entry)
    600 def _parse(self, argv, inv, entry):
--> 601     self._xt.parse_match(argv, inv, self._module, entry,
    602                          ct.cast(self._ptrptr, ct.POINTER(ct.c_void_p)),
    603                          self._orig_parse, self._orig_options)

File /usr/local/lib/python3.12/dist-packages/iptc/xtables.py:869, in set_nfproto.<locals>.new(*args)
    867 xtobj = args[0]
    868 xtables._xtables_set_nfproto(xtobj.proto)
--> 869 return fn(*args)

File /usr/local/lib/python3.12/dist-packages/iptc/xtables.py:1144, in xtables.parse_match(self, argv, invert, m, fw, ptr, x6_parse, x6_options)
   1142 entry = self._option_lookup(x6_options, argv[0])
   1143 if not entry:
-> 1144     raise XTablesError("%s: no such parameter %s" % (m.name,
   1145                                                      argv[0]))
   1147 cb = xt_option_call()
   1148 cb.entry = ct.pointer(entry)

XTablesError: b'udp': no such parameter b'sport'

There are other things that do not work, such as sport for match udp. I don't know why iptc doesn't work with iptables in version 1.8.11-2 anymore.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions