From 648197da2403c81145438d63f27bd023cac1e677 Mon Sep 17 00:00:00 2001 From: tamihiro Date: Sun, 9 Jun 2019 21:41:35 +0900 Subject: [PATCH] Correct AS path prepend count in bgpmap. Without this patch, show_bgpmap() method does duplicate counts of aspath prepends, and returns a larger prepend count than it actually is. --- lg.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/lg.py b/lg.py index 40caa95..56873a6 100644 --- a/lg.py +++ b/lg.py @@ -477,7 +477,13 @@ def show_bgpmap(): hop_label = "" for _as in asmap: if _as == previous_as: - prepend_as[_as] = prepend_as.get(_as, 1) + 1 + if not prepend_as.get(_as, None): + prepend_as[_as] = {} + if not prepend_as[_as].get(host, None): + prepend_as[_as][host] = {} + if not prepend_as[_as][host].get(asmap[0], None): + prepend_as[_as][host][asmap[0]] = 1 + prepend_as[_as][host][asmap[0]] += 1 continue if not hop: @@ -514,7 +520,8 @@ def show_bgpmap(): node.set_shape("box") for _as in prepend_as: - graph.add_edge(pydot.Edge(*(_as, _as), label=" %dx" % prepend_as[_as], color="grey", fontcolor="grey")) + for n in set([ n for h, d in prepend_as[_as].iteritems() for p, n in d.iteritems() ]): + graph.add_edge(pydot.Edge(*(_as, _as), label=" %dx" % n, color="grey", fontcolor="grey")) fmt = request.args.get('fmt', 'png') #response = Response("
" + graph.create_dot() + "
")