From 144d3abf7c8472753f7cb8156f07ee9f82ca2d3a Mon Sep 17 00:00:00 2001 From: Bernard Cafarelli Date: Thu, 28 Jun 2018 18:43:04 +0200 Subject: [PATCH] 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 --- neutron/privileged/agent/linux/netlink_lib.py | 6 +-- .../agent/linux/test_netlink_lib.py | 48 +++++++++---------- 2 files changed, 27 insertions(+), 27 deletions(-) diff --git a/neutron/privileged/agent/linux/netlink_lib.py b/neutron/privileged/agent/linux/netlink_lib.py index ac8e3644c5c..8a10a0cc2d4 100644 --- a/neutron/privileged/agent/linux/netlink_lib.py +++ b/neutron/privileged/agent/linux/netlink_lib.py @@ -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): diff --git a/neutron/tests/unit/privileged/agent/linux/test_netlink_lib.py b/neutron/tests/unit/privileged/agent/linux/test_netlink_lib.py index 00cf5c98577..b8972c33316 100644 --- a/neutron/tests/unit/privileged/agent/linux/test_netlink_lib.py +++ b/neutron/tests/unit/privileged/agent/linux/test_netlink_lib.py @@ -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)