mirror of
https://github.com/sileht/bird-lg.git
synced 2024-11-21 22:44:43 +01:00
Merge pull request #49 from tamihiro/new-pr-batch
Correctly parse aspath for both bird 1.x and 2.0.
This commit is contained in:
commit
93ed0769fe
29
lg.py
29
lg.py
|
@ -538,21 +538,29 @@ def build_as_tree_from_raw_bird_ouput(host, proto, text):
|
||||||
path = None
|
path = None
|
||||||
paths = []
|
paths = []
|
||||||
net_dest = None
|
net_dest = None
|
||||||
|
peer_protocol_name = None
|
||||||
for line in text:
|
for line in text:
|
||||||
line = line.strip()
|
line = line.strip()
|
||||||
|
|
||||||
expr = re.search(r'(.*)via\s+([0-9a-fA-F:\.]+)\s+on.*\[(\w+)\s+', line)
|
expr = re.search(r'(.*)unicast\s+\[(\w+)\s+', line)
|
||||||
if expr:
|
if expr:
|
||||||
|
if expr.group(1).strip():
|
||||||
|
net_dest = expr.group(1).strip()
|
||||||
|
peer_protocol_name = expr.group(2).strip()
|
||||||
|
|
||||||
|
expr2 = re.search(r'(.*)via\s+([0-9a-fA-F:\.]+)\s+on\s+\w+(\s+\[(\w+)\s+)?', line)
|
||||||
|
if expr2:
|
||||||
if path:
|
if path:
|
||||||
path.append(net_dest)
|
path.append(net_dest)
|
||||||
paths.append(path)
|
paths.append(path)
|
||||||
path = None
|
path = None
|
||||||
|
|
||||||
if expr.group(1).strip():
|
if expr2.group(1).strip():
|
||||||
net_dest = expr.group(1).strip()
|
net_dest = expr2.group(1).strip()
|
||||||
|
|
||||||
peer_ip = expr.group(2).strip()
|
peer_ip = expr2.group(2).strip()
|
||||||
peer_protocol_name = expr.group(3).strip()
|
if expr2.group(4):
|
||||||
|
peer_protocol_name = expr2.group(4).strip()
|
||||||
# Check if via line is a internal route
|
# Check if via line is a internal route
|
||||||
for rt_host, rt_ips in app.config["ROUTER_IP"].iteritems():
|
for rt_host, rt_ips in app.config["ROUTER_IP"].iteritems():
|
||||||
# Special case for internal routing
|
# Special case for internal routing
|
||||||
|
@ -564,15 +572,18 @@ def build_as_tree_from_raw_bird_ouput(host, proto, text):
|
||||||
path = [ peer_protocol_name ]
|
path = [ peer_protocol_name ]
|
||||||
# path = ["%s\r%s" % (peer_protocol_name, get_as_name(get_as_number_from_protocol_name(host, proto, peer_protocol_name)))]
|
# path = ["%s\r%s" % (peer_protocol_name, get_as_name(get_as_number_from_protocol_name(host, proto, peer_protocol_name)))]
|
||||||
|
|
||||||
expr2 = re.search(r'(.*)unreachable\s+\[(\w+)\s+', line)
|
expr3 = re.search(r'(.*)unreachable\s+\[(\w+)\s+', line)
|
||||||
if expr2:
|
if expr3:
|
||||||
if path:
|
if path:
|
||||||
path.append(net_dest)
|
path.append(net_dest)
|
||||||
paths.append(path)
|
paths.append(path)
|
||||||
path = None
|
path = None
|
||||||
|
|
||||||
if expr2.group(1).strip():
|
if path is None:
|
||||||
net_dest = expr2.group(1).strip()
|
path = [ expr3.group(2).strip() ]
|
||||||
|
|
||||||
|
if expr3.group(1).strip():
|
||||||
|
net_dest = expr3.group(1).strip()
|
||||||
|
|
||||||
if line.startswith("BGP.as_path:"):
|
if line.startswith("BGP.as_path:"):
|
||||||
ASes = line.replace("BGP.as_path:", "").strip().split(" ")
|
ASes = line.replace("BGP.as_path:", "").strip().split(" ")
|
||||||
|
|
Loading…
Reference in a new issue