def parse_prefix_range(expr=None):
pattern = r'^(?P<prefix>((\d+(\.\d+){3})|([0-9a-fA-F:]{2,40}))/\d+)' \
r'(\^(?P<ge>\d+)-(?P<le>\d+))?$'
match = re.match(pattern, expr)
if match:
prefix = ipaddress.ip_network(unicode(match.group("prefix")))
afi = "ipv%d" % prefix.version
entry = {"prefix": prefix}
try:
entry["greater-equal"] = int(match.group("ge"))
entry["less-equal"] = int(match.group("le"))
except (IndexError, TypeError):
pass
else:
raise ValueError("no match found")
return {afi: [entry]}
评论列表
文章目录