From f0af8aeacc7b87e61ab6230a0c27372532362718 Mon Sep 17 00:00:00 2001 From: Pedro Oliveira Date: Sat, 6 Jun 2020 16:34:38 +0100 Subject: [PATCH] Fix removal of IGMP/MLD interfaces --- hpimdm/Kernel.py | 8 ++++---- hpimdm/Main.py | 10 +++++----- hpimdm/Run.py | 6 +++--- setup.py | 4 ++-- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/hpimdm/Kernel.py b/hpimdm/Kernel.py index 8a435bf..44159c7 100644 --- a/hpimdm/Kernel.py +++ b/hpimdm/Kernel.py @@ -117,17 +117,17 @@ def create_membership_interface(self, interface_name: str): def _create_membership_interface_object(self, interface_name, index): raise NotImplementedError - def remove_interface(self, interface_name, igmp: bool = False, hpim: bool = False): + def remove_interface(self, interface_name, membership: bool = False, hpim: bool = False): thread = None with self.rwlock.genWlock(): hpim_interface = self.hpim_interface.get(interface_name) membership_interface = self.membership_interface.get(interface_name) - if (not igmp and not hpim) or (interface_name not in self.vif_name_to_index_dic): + if (not membership and not hpim) or (interface_name not in self.vif_name_to_index_dic): return if hpim and hpim_interface is not None: hpim_interface = self.hpim_interface.pop(interface_name) hpim_interface.remove() - if igmp and membership_interface is not None: + if membership and membership_interface is not None: membership_interface = self.membership_interface.pop(interface_name) membership_interface.remove() @@ -152,7 +152,7 @@ def notify_interface_changes(self, interface_name): igmp_was_enabled = interface_name in self.membership_interface hpim_was_enabled = interface_name in self.hpim_interface - self.remove_interface(interface_name, igmp=True, hpim=True) + self.remove_interface(interface_name, membership=True, hpim=True) if igmp_was_enabled: self.create_membership_interface(interface_name) if hpim_was_enabled: diff --git a/hpimdm/Main.py b/hpimdm/Main.py index 50a88c9..9f933a9 100644 --- a/hpimdm/Main.py +++ b/hpimdm/Main.py @@ -50,19 +50,19 @@ def add_membership_interface(interface_name, ipv4=True, ipv6=False): kernel_v6.create_membership_interface(interface_name=interface_name) -def remove_interface(interface_name, hpim=False, igmp=False, ipv4=True, ipv6=False): +def remove_interface(interface_name, hpim=False, membership=False, ipv4=True, ipv6=False): """ Remove HPIM-DM/IGMP interface """ if interface_name == "*": for interface_name in netifaces.interfaces(): - remove_interface(interface_name, hpim, igmp, ipv4, ipv6) + remove_interface(interface_name, hpim, membership, ipv4, ipv6) return if ipv4 and kernel is not None: - kernel.remove_interface(interface_name, hpim=hpim, igmp=igmp) + kernel.remove_interface(interface_name, hpim=hpim, membership=membership) if ipv6 and kernel_v6 is not None: - kernel_v6.remove_interface(interface_name, hpim=hpim, mld=igmp) + kernel_v6.remove_interface(interface_name, hpim=hpim, membership=membership) def list_neighbors(ipv4=False, ipv6=False): @@ -339,7 +339,7 @@ def stop(): """ Stop process """ - remove_interface("*", hpim=True, igmp=True) + remove_interface("*", hpim=True, membership=True, ipv4=True, ipv6=True) if kernel is not None: kernel.exit() if kernel_v6 is not None: diff --git a/hpimdm/Run.py b/hpimdm/Run.py index 7884c41..014dd9d 100644 --- a/hpimdm/Run.py +++ b/hpimdm/Run.py @@ -9,7 +9,7 @@ from hpimdm.daemon.Daemon import Daemon from hpimdm import Main -VERSION = "1.3" +VERSION = "1.3.1" def client_socket(data_to_send): @@ -96,10 +96,10 @@ def run(self): Main.remove_interface(args.remove_interface[0], hpim=True, ipv4=args.ipv4, ipv6=args.ipv6) connection.shutdown(socket.SHUT_RDWR) elif 'remove_interface_igmp' in args and args.remove_interface_igmp: - Main.remove_interface(args.remove_interface_igmp[0], igmp=True, ipv4=True, ipv6=False) + Main.remove_interface(args.remove_interface_igmp[0], membership=True, ipv4=True, ipv6=False) connection.shutdown(socket.SHUT_RDWR) elif 'remove_interface_mld' in args and args.remove_interface_mld: - Main.remove_interface(args.remove_interface_mld[0], igmp=True, ipv4=False, ipv6=True) + Main.remove_interface(args.remove_interface_mld[0], membership=True, ipv4=False, ipv6=True) connection.shutdown(socket.SHUT_RDWR) elif 'list_hmac_algorithms' in args and args.list_hmac_algorithms: connection.sendall(pickle.dumps(Main.list_hash_algorithms())) diff --git a/setup.py b/setup.py index c3d898e..40d3583 100644 --- a/setup.py +++ b/setup.py @@ -12,8 +12,8 @@ description="HPIM-DM protocol", long_description=open("README.md", "r").read(), long_description_content_type="text/markdown", - keywords="HPIM-DM Multicast Routing Protocol Dense-Mode Router", - version="1.3", + keywords="HPIM-DM Multicast Routing Protocol Dense-Mode Router IPv4 IPv6", + version="1.3.1", url="http://github.com/pedrofran12/hpim_dm", author="Pedro Oliveira", author_email="pedro.francisco.oliveira@tecnico.ulisboa.pt",