diff --git a/birdagent.py b/birdagent.py index 5ec3bb2..9f20033 100644 --- a/birdagent.py +++ b/birdagent.py @@ -25,6 +25,7 @@ import re import subprocess import glob +import os import dateutil.parser from datetime import datetime import traceback @@ -48,7 +49,7 @@ def __init__(self, cfgfile, birdcli, sscmd): "established": 6, } - _re_config_include = re.compile("^include\s*\"(/[^\"]*)\".*$") + _re_config_include = re.compile("^include\s*\"([^\"]*)\".*$") _re_config_bgp_proto_begin = re.compile( "^protocol bgp ([a-zA-Z0-9_]+).*\{$") _re_config_bgp_holdtime = re.compile("hold time ([0-9]+);") @@ -151,7 +152,10 @@ def combinedConfigLines(filename): if not match: yield line else: - for subconf in glob.glob(match.group(1)): + included = match.group(1) + if not included.startswith('/'): + included = os.path.join(os.path.dirname(filename), included) + for subconf in glob.glob(included): yield "# subconf: %s (from %s)" % (subconf, line) for subline in BirdAgent.combinedConfigLines(subconf): yield subline