From 779087bb993da0a6ef21c51c02dbe37848d9bb13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20W=C3=BCllhorst?= Date: Tue, 19 Jul 2016 18:14:33 +0200 Subject: [PATCH] Sometimes there are mesh-links where the mac address from src is assigned to a wireless interface and the mac address from dst is assigned to a "other" interface. This seems to appear if the nodes do both: meshing via wireless AND meshing via LAN. The "exclude_clouds_with_lan_links" filter was not able to work properly therefore. This fix always returns the interface type that deviates from "wireless" if the interface types of src and dst node are different. This fix should fix the problem mentioned in issue #4. The fix needs to be testet, maybe there are a few false positive results. --- cloud/Link.py | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/cloud/Link.py b/cloud/Link.py index 25be9f3..214da49 100644 --- a/cloud/Link.py +++ b/cloud/Link.py @@ -8,15 +8,32 @@ class Link(object): def __getLinkType__(self): + type_src = None + type_dst = None if self.__srcNode__ != None: for k, v in self.__srcNode__.interfaces.items(): if self.__jsonObject__['source']['interface_mac'] in v: - return k + type_src = k if self.__dstNode__ != None: for k, v in self.__dstNode__.interfaces.items(): if self.__jsonObject__['target']['interface_mac'] in v: - return k - return 'unknown' + type_dst = k + + if type_src == type_dst: + if type_src == None: + return 'unknown' + return type_src + else: + if type_src == None: + return type_dst + elif type_dst == None: + return type_src + else: + #print(self.__srcNode__.hostname, type_src, '<-->', self.__dstNode__.hostname, type_dst) + if type_src == 'wireless': + return type_dst + else: + return type_src def __getLinkVpnState__(self): if self.__jsonObject__['vpn'] == True: