summaryrefslogtreecommitdiff
path: root/haircontrol
diff options
context:
space:
mode:
Diffstat (limited to 'haircontrol')
-rw-r--r--haircontrol/data.py5
-rw-r--r--haircontrol/discovery.py28
2 files changed, 31 insertions, 2 deletions
diff --git a/haircontrol/data.py b/haircontrol/data.py
index 2ab8268..1eb4d3b 100644
--- a/haircontrol/data.py
+++ b/haircontrol/data.py
@@ -60,8 +60,9 @@ class Interface:
self.name = name
self.mac = mac
self.mac_seen = []
+ self.direct_neighbours = []
def __repr__(self):
- return repr( ( self.mac, self.name, self.mac_seen ) )
- #return repr( ( self.mac, self.name, '[ %i mac_seen ]'%len(self.mac_seen) ) )
+ #return repr( ( self.mac, self.name, self.direct_neighbours, self.mac_seen ) )
+ return repr( ( self.mac, self.name, self.direct_neighbours, '[ %i mac_seen ]'%len(self.mac_seen) ) )
diff --git a/haircontrol/discovery.py b/haircontrol/discovery.py
index d6839b2..a9639be 100644
--- a/haircontrol/discovery.py
+++ b/haircontrol/discovery.py
@@ -179,3 +179,31 @@ class Discovery:
print("Notice: Nothing inspected on %s"%e)
i.disconnect()
+ def compute_neighbourhood(self):
+ print("**********compute_neighbourhood************")
+ # net.equipments[<mgmt_ip>].ifaces[<ifname>].mac_seen[i]
+
+ # Fake algorithm
+ random_e = '172.16.0.254'
+ for (mgmt_ip,e) in self.net.equipments.items():
+ for (ifname,i) in e.ifaces.items():
+ last = None
+ for mac_seen in i.mac_seen:
+ last = mac_seen
+ if last and last in self.net.mac2ip:
+ random_e = self.net.mac2ip[last]
+ i.direct_neighbours.append(random_e)
+
+# for (mgmt_ip,e) in self.net.equipments.items():
+# print("%s (%s)"%(mgmt_ip,e.name))
+# for (ifname,i) in e.ifaces.items():
+# print("\t%s"%i.name)
+# for mac_seen in i.mac_seen:
+# print("\t\tseen %s"%mac_seen)
+# for remote_mgmtip in i.direct_neighbours:
+# e = self.net.equipments[remote_mgmtip]
+# print("\t\tdirect_neighbour %s (%s)"%(remote_mgmtip, e.name))
+
+
+ print("**********compute_neighbourhood************")
+