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.
This commit is contained in:
parent
985bf2f115
commit
779087bb99
|
@ -8,15 +8,32 @@ class Link(object):
|
||||||
|
|
||||||
|
|
||||||
def __getLinkType__(self):
|
def __getLinkType__(self):
|
||||||
|
type_src = None
|
||||||
|
type_dst = None
|
||||||
if self.__srcNode__ != None:
|
if self.__srcNode__ != None:
|
||||||
for k, v in self.__srcNode__.interfaces.items():
|
for k, v in self.__srcNode__.interfaces.items():
|
||||||
if self.__jsonObject__['source']['interface_mac'] in v:
|
if self.__jsonObject__['source']['interface_mac'] in v:
|
||||||
return k
|
type_src = k
|
||||||
if self.__dstNode__ != None:
|
if self.__dstNode__ != None:
|
||||||
for k, v in self.__dstNode__.interfaces.items():
|
for k, v in self.__dstNode__.interfaces.items():
|
||||||
if self.__jsonObject__['target']['interface_mac'] in v:
|
if self.__jsonObject__['target']['interface_mac'] in v:
|
||||||
return k
|
type_dst = k
|
||||||
|
|
||||||
|
if type_src == type_dst:
|
||||||
|
if type_src == None:
|
||||||
return 'unknown'
|
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):
|
def __getLinkVpnState__(self):
|
||||||
if self.__jsonObject__['vpn'] == True:
|
if self.__jsonObject__['vpn'] == True:
|
||||||
|
|
Loading…
Reference in a new issue