def get_prefix_info(addr):
"""Returns the smallest prefix from the NAVdb that an IP address fits into.
:param addr: An IP address string.
:returns: A Prefix object or None if no prefixes matched.
"""
try:
return Prefix.objects.select_related().extra(
select={"mask_size": "masklen(netaddr)"},
where=["%s << netaddr AND nettype <> 'scope'"],
order_by=["-mask_size"],
params=[addr]
)[0]
except (IndexError, DatabaseError):
return None
评论列表
文章目录