mirror of
https://github.com/linux-system-roles/network.git
synced 2026-01-23 02:15:17 +00:00
Util: Normalize address family value before getting prefix length
Some address family values (e.g. "ipv4" or "ipv6") should not be considered as bogus value if they can be normalized into `socket.AF_INET` or `socket.AF_INET6`, it is more tolerant but also still preserving the capability for rejecting the utterly bogus address family values. Signed-off-by: Wen Liang <liangwen12year@gmail.com>
This commit is contained in:
parent
0234fb3b5a
commit
512d840fc4
1 changed files with 22 additions and 5 deletions
|
|
@ -328,13 +328,30 @@ class Util:
|
|||
else:
|
||||
return 64
|
||||
|
||||
@staticmethod
|
||||
def addr_family_norm(addr_family):
|
||||
if addr_family in [socket.AF_INET, socket.AF_INET6]:
|
||||
return addr_family
|
||||
if addr_family is None or addr_family == socket.AF_UNSPEC:
|
||||
return None
|
||||
if addr_family in ["4", "inet", "ip4", "ipv4", "IPv4"]:
|
||||
return socket.AF_INET
|
||||
if addr_family in ["6", "inet6", "ip6", "ipv6", "IPv6"]:
|
||||
return socket.AF_INET6
|
||||
Util.addr_family_check(addr_family)
|
||||
|
||||
@staticmethod
|
||||
def addr_family_prefix_length(family):
|
||||
addr_family = Util.addr_family_norm(family)
|
||||
if addr_family == socket.AF_INET:
|
||||
return 32
|
||||
if addr_family == socket.AF_INET6:
|
||||
return 128
|
||||
Util.addr_family_check(addr_family)
|
||||
|
||||
@staticmethod
|
||||
def addr_family_valid_prefix(family, prefix):
|
||||
Util.addr_family_check(family)
|
||||
if family == socket.AF_INET:
|
||||
m = 32
|
||||
else:
|
||||
m = 128
|
||||
m = Util.addr_family_prefix_length(family)
|
||||
return prefix >= 0 and prefix <= m
|
||||
|
||||
@staticmethod
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue