-from knot_resolver_manager.datamodel.types import IPv6Network96
+from typing import List, Optional
+
+from knot_resolver_manager.datamodel.types import IPv6Network, IPv6Network96, TimeUnit
from knot_resolver_manager.utils.modeling import ConfigSchema
---
prefix: IPv6 prefix to be used for synthesizing AAAA records.
+ rev_ttl: TTL in CNAME generated in the reverse 'ip6.arpa.' subtree.
+ exclude_subnets: IPv6 subnets that are disallowed in answer.
"""
prefix: IPv6Network96 = IPv6Network96("64:ff9b::/96")
+ rev_ttl: Optional[TimeUnit] = None
+ exclude_subnets: Optional[List[IPv6Network]] = None
}
-class IPv6Network96(BaseValueType):
+class IPv6Network(BaseValueType):
_value: ipaddress.IPv6Network
def __init__(self, source_value: Any, object_path: str = "/") -> None:
- super().__init__(source_value, object_path=object_path)
+ super().__init__(source_value)
if isinstance(source_value, str):
try:
self._value: ipaddress.IPv6Network = ipaddress.IPv6Network(source_value)
except ValueError as e:
- raise ValueError("failed to parse IPv6 /96 network.") from e
-
- if self._value.prefixlen == 128:
- raise ValueError(
- "Expected IPv6 network address with /96 prefix length."
- " Submitted address has been interpreted as /128."
- " Maybe, you forgot to add /96 after the base address?"
- )
-
- if self._value.prefixlen != 96:
- raise ValueError(
- "expected IPv6 network address with /96 prefix length."
- f" Got prefix lenght of {self._value.prefixlen}"
- )
+ raise ValueError("failed to parse IPv6 network.") from e
else:
raise ValueError(
- "Unexpected value for a network subnet."
+ "Unexpected value for a IPv6 network subnet."
f" Expected string, got '{source_value}' with type '{type(source_value)}'"
)
+ def to_std(self) -> ipaddress.IPv6Network:
+ return self._value
+
def __str__(self) -> str:
return self._value.with_prefixlen
raise ValueError("Can't convert network prefix to an integer")
def __eq__(self, o: object) -> bool:
- return isinstance(o, IPv6Network96) and o._value == self._value
+ return isinstance(o, IPv6Network) and o._value == self._value
def serialize(self) -> Any:
return self._value.with_prefixlen
- def to_std(self) -> ipaddress.IPv6Network:
- return self._value
-
@classmethod
- def json_schema(cls: Type["IPv6Network96"]) -> Dict[Any, Any]:
- return {"type": "string"}
+ def json_schema(cls: Type["IPv6Network"]) -> Dict[Any, Any]:
+ return {
+ "type": "string",
+ }
+
+
+class IPv6Network96(IPv6Network):
+ def __init__(self, source_value: Any, object_path: str = "/") -> None:
+ super().__init__(source_value, object_path=object_path)
+ if self._value.prefixlen == 128:
+ raise ValueError(
+ "Expected IPv6 network address with /96 prefix length."
+ " Submitted address has been interpreted as /128."
+ " Maybe, you forgot to add /96 after the base address?"
+ )
+
+ if self._value.prefixlen != 96:
+ raise ValueError(
+ "expected IPv6 network address with /96 prefix length." f" Got prefix lenght of {self._value.prefixlen}"
+ )