python3: fix netlink_lib delete_entries

libc and netfilter_conntrack calls, as C bindings, do not work with
python3 strings
This fixes netlink_lib by using bytes type for addresses manipulation

Update corresponding unit test by removing str() conversions

Change-Id: I0044d943de3dcde7c4337f396ae9d10cede381f3
Closes-bug: #1779170
This commit is contained in:
Bernard Cafarelli 2018-06-28 18:43:04 +02:00
parent 88ed88cd90
commit 144d3abf7c
No known key found for this signature in database
GPG Key ID: D148244A3C2462BD
2 changed files with 27 additions and 27 deletions

View File

@ -117,8 +117,8 @@ class ConntrackManager(object):
6: nfct.nfct_set_attr_u16}
}
self.converters = {'src': str,
'dst': str,
self.converters = {'src': bytes,
'dst': bytes,
'ipversion': nl_constants.IPVERSION_SOCKET.get,
'protocol': constants.IP_PROTOCOL_MAP.get,
'code': int,
@ -173,7 +173,7 @@ class ConntrackManager(object):
dest = ctypes.create_string_buffer(
nl_constants.IPVERSION_BUFFER[addr_family])
libc.inet_pton(nl_constants.IPVERSION_SOCKET[addr_family],
source, dest)
source.encode('utf-8'), dest)
return dest.raw
def _set_attributes(self, conntrack, entry):

View File

@ -124,13 +124,13 @@ class NetlinkLibTestCase(base.BaseTestCase):
calls = [
mock.call(conntrack_filter,
nl_constants.ATTR_IPV4_SRC,
str(conntrack._convert_text_to_binary(
FAKE_ICMP_ENTRY['src'], 4))
conntrack._convert_text_to_binary(
FAKE_ICMP_ENTRY['src'], 4)
),
mock.call(conntrack_filter,
nl_constants.ATTR_IPV4_DST,
str(conntrack._convert_text_to_binary(
FAKE_ICMP_ENTRY['dst'], 4))
conntrack._convert_text_to_binary(
FAKE_ICMP_ENTRY['dst'], 4)
),
]
nl_lib.nfct.nfct_set_attr.assert_has_calls(calls, any_order=True)
@ -173,13 +173,13 @@ class NetlinkLibTestCase(base.BaseTestCase):
calls = [
mock.call(conntrack_filter,
nl_constants.ATTR_IPV4_SRC,
str(conntrack._convert_text_to_binary(
FAKE_UDP_ENTRY['src'], 4))
conntrack._convert_text_to_binary(
FAKE_UDP_ENTRY['src'], 4)
),
mock.call(conntrack_filter,
nl_constants.ATTR_IPV4_DST,
str(conntrack._convert_text_to_binary(
FAKE_UDP_ENTRY['dst'], 4))
conntrack._convert_text_to_binary(
FAKE_UDP_ENTRY['dst'], 4)
),
]
nl_lib.nfct.nfct_set_attr.assert_has_calls(calls, any_order=True)
@ -222,13 +222,13 @@ class NetlinkLibTestCase(base.BaseTestCase):
calls = [
mock.call(conntrack_filter,
nl_constants.ATTR_IPV4_SRC,
str(conntrack._convert_text_to_binary(
FAKE_TCP_ENTRY['src'], 4))
conntrack._convert_text_to_binary(
FAKE_TCP_ENTRY['src'], 4)
),
mock.call(conntrack_filter,
nl_constants.ATTR_IPV4_DST,
str(conntrack._convert_text_to_binary(
FAKE_TCP_ENTRY['dst'], 4))
conntrack._convert_text_to_binary(
FAKE_TCP_ENTRY['dst'], 4)
),
]
@ -307,32 +307,32 @@ class NetlinkLibTestCase(base.BaseTestCase):
calls = [
mock.call(conntrack_filter,
nl_constants.ATTR_IPV4_SRC,
str(conntrack._convert_text_to_binary(
FAKE_TCP_ENTRY['src'], 4))
conntrack._convert_text_to_binary(
FAKE_TCP_ENTRY['src'], 4)
),
mock.call(conntrack_filter,
nl_constants.ATTR_IPV4_DST,
str(conntrack._convert_text_to_binary(
FAKE_TCP_ENTRY['dst'], 4))),
conntrack._convert_text_to_binary(
FAKE_TCP_ENTRY['dst'], 4)),
mock.call(conntrack_filter,
nl_constants.ATTR_IPV4_SRC,
str(conntrack._convert_text_to_binary(
FAKE_UDP_ENTRY['src'], 4))
conntrack._convert_text_to_binary(
FAKE_UDP_ENTRY['src'], 4)
),
mock.call(conntrack_filter,
nl_constants.ATTR_IPV4_DST,
str(conntrack._convert_text_to_binary(
FAKE_UDP_ENTRY['dst'], 4))
conntrack._convert_text_to_binary(
FAKE_UDP_ENTRY['dst'], 4)
),
mock.call(conntrack_filter,
nl_constants.ATTR_IPV4_SRC,
str(conntrack._convert_text_to_binary(
FAKE_ICMP_ENTRY['src'], 4))
conntrack._convert_text_to_binary(
FAKE_ICMP_ENTRY['src'], 4)
),
mock.call(conntrack_filter,
nl_constants.ATTR_IPV4_DST,
str(conntrack._convert_text_to_binary(
FAKE_ICMP_ENTRY['dst'], 4))
conntrack._convert_text_to_binary(
FAKE_ICMP_ENTRY['dst'], 4)
),
]
nl_lib.nfct.nfct_set_attr.assert_has_calls(calls, any_order=True)