from knot_resolver_manager.datamodel.server_schema import ServerSchema
from knot_resolver_manager.datamodel.static_hints_schema import StaticHintsSchema
from knot_resolver_manager.datamodel.stub_zone_schema import StubZoneSchema
+from knot_resolver_manager.datamodel.forward_zone import ForwardZoneSchema
from knot_resolver_manager.datamodel.view_schema import ViewSchema
from knot_resolver_manager.utils import SchemaNode
static_hints: StaticHintsSchema = StaticHintsSchema()
views: Optional[List[ViewSchema]] = None
stub_zones: Optional[List[StubZoneSchema]] = None
+ forward_zones: Optional[List[ForwardZoneSchema]] = None
cache: CacheSchema = CacheSchema()
dnssec: Union[bool, DnssecSchema] = True
dns64: Union[bool, Dns64Schema] = False
static_hints: StaticHintsSchema
views: Optional[List[ViewSchema]]
stub_zones: Optional[List[StubZoneSchema]]
+ forward_zones: Optional[List[ForwardZoneSchema]]
cache: CacheSchema
dnssec: Union[Literal[False], DnssecSchema]
dns64: Union[Literal[False], Dns64Schema]
--- /dev/null
+from typing import List, Optional, Union
+
+from knot_resolver_manager.datamodel.types import AnyPath, DomainName, IPAddressPort
+from knot_resolver_manager.datamodel.view_schema import FlagsEnum
+from knot_resolver_manager.utils import SchemaNode
+
+
+class ForwardServerSchema(SchemaNode):
+ address: IPAddressPort
+ pin_sha256: Optional[Union[str, List[str]]] = None
+ hostname: Optional[DomainName] = None
+ ca_file: Optional[AnyPath] = None
+
+
+class ForwardZoneSchema(SchemaNode):
+ name: DomainName
+ tls: bool = False
+ servers: Union[List[IPAddressPort], List[ForwardServerSchema]]
+ views: Optional[List[str]] = None
+ options: Optional[List[FlagsEnum]] = None