# -*- coding: utf-8 -*- # Copyright (c) 2022, Felix Fontein (@felixfontein) # GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) # SPDX-License-Identifier: GPL-3.0-or-later # The data inside here is private to this collection. If you use this from outside the collection, # you are on your own. There can be random changes to its format even in bugfix releases! from __future__ import absolute_import, division, print_function __metaclass__ = type from ansible_collections.community.routeros.plugins.module_utils.version import LooseVersion def _compare(a, b, comparator): if comparator == '==': return a == b if comparator == '!=': return a != b if comparator == '<': return a < b if comparator == '<=': return a <= b if comparator == '>': return a > b if comparator == '>=': return a >= b raise ValueError('Unknown comparator "{comparator}"'.format(comparator=comparator)) class APIData(object): def __init__(self, unversioned=None, versioned=None): if (unversioned is None) == (versioned is None): raise ValueError('either unversioned or versioned must be provided') self.unversioned = unversioned self.versioned = versioned if self.unversioned is not None: self.needs_version = self.unversioned.needs_version self.fully_understood = self.unversioned.fully_understood else: self.needs_version = self.versioned is not None # Mark as 'fully understood' if it is for at least one version self.fully_understood = False for dummy, dummy, unversioned in self.versioned: if unversioned and not isinstance(unversioned, str) and unversioned.fully_understood: self.fully_understood = True break self._current = None if self.needs_version else self.unversioned def _select(self, data, api_version): if data is None: self._current = None return False, None if isinstance(data, str): self._current = None return False, data self._current = data.specialize_for_version(api_version) return self._current.fully_understood, None def provide_version(self, version): if not self.needs_version: return self.unversioned.fully_understood, None api_version = LooseVersion(version) if self.unversioned is not None: self._current = self.unversioned.specialize_for_version(api_version) return self._current.fully_understood, None for other_version, comparator, data in self.versioned: if other_version == '*' and comparator == '*': return self._select(data, api_version) other_api_version = LooseVersion(other_version) if _compare(api_version, other_api_version, comparator): return self._select(data, api_version) self._current = None return False, None def get_data(self): if self._current is None: raise ValueError('either provide_version() was not called or it returned False') return self._current class VersionedAPIData(object): def __init__(self, primary_keys=None, stratify_keys=None, required_one_of=None, mutually_exclusive=None, has_identifier=False, single_value=False, unknown_mechanism=False, fully_understood=False, fixed_entries=False, fields=None, versioned_fields=None): if sum([primary_keys is not None, stratify_keys is not None, has_identifier, single_value, unknown_mechanism]) > 1: raise ValueError('primary_keys, stratify_keys, has_identifier, single_value, and unknown_mechanism are mutually exclusive') if unknown_mechanism and fully_understood: raise ValueError('unknown_mechanism and fully_understood cannot be combined') self.primary_keys = primary_keys self.stratify_keys = stratify_keys self.required_one_of = required_one_of or [] self.mutually_exclusive = mutually_exclusive or [] self.has_identifier = has_identifier self.single_value = single_value self.unknown_mechanism = unknown_mechanism self.fully_understood = fully_understood self.fixed_entries = fixed_entries if fixed_entries and primary_keys is None: raise ValueError('fixed_entries can only be used with primary_keys') if fields is None: raise ValueError('fields must be provided') self.fields = fields if versioned_fields is not None: if not isinstance(versioned_fields, list): raise ValueError('unversioned_fields must be a list') for conditions, name, field in versioned_fields: if not isinstance(conditions, (tuple, list)): raise ValueError('conditions must be a list or tuple') if not isinstance(field, KeyInfo): raise ValueError('field must be a KeyInfo object') if name in fields: raise ValueError('"{name}" appears both in fields and versioned_fields'.format(name=name)) self.versioned_fields = versioned_fields or [] if primary_keys: for pk in primary_keys: if pk not in fields: raise ValueError('Primary key {pk} must be in fields!'.format(pk=pk)) if stratify_keys: for sk in stratify_keys: if sk not in fields: raise ValueError('Stratify key {sk} must be in fields!'.format(sk=sk)) if required_one_of: for index, require_list in enumerate(required_one_of): if not isinstance(require_list, list): raise ValueError('Require one of element at index #{index} must be a list!'.format(index=index + 1)) for rk in require_list: if rk not in fields: raise ValueError('Require one of key {rk} must be in fields!'.format(rk=rk)) if mutually_exclusive: for index, exclusive_list in enumerate(mutually_exclusive): if not isinstance(exclusive_list, list): raise ValueError('Mutually exclusive element at index #{index} must be a list!'.format(index=index + 1)) for ek in exclusive_list: if ek not in fields: raise ValueError('Mutually exclusive key {ek} must be in fields!'.format(ek=ek)) self.needs_version = len(self.versioned_fields) > 0 def specialize_for_version(self, api_version): fields = self.fields.copy() for conditions, name, field in self.versioned_fields: matching = True for other_version, comparator in conditions: other_api_version = LooseVersion(other_version) if not _compare(api_version, other_api_version, comparator): matching = False break if matching: if name in fields: raise ValueError( 'Internal error: field "{field}" already exists for {version}'.format(field=name, version=api_version) ) fields[name] = field return VersionedAPIData( primary_keys=self.primary_keys, stratify_keys=self.stratify_keys, required_one_of=self.required_one_of, mutually_exclusive=self.mutually_exclusive, has_identifier=self.has_identifier, single_value=self.single_value, unknown_mechanism=self.unknown_mechanism, fully_understood=self.fully_understood, fixed_entries=self.fixed_entries, fields=fields, ) class KeyInfo(object): def __init__(self, _dummy=None, can_disable=False, remove_value=None, absent_value=None, default=None, required=False, automatically_computed_from=None, read_only=False, write_only=False): if _dummy is not None: raise ValueError('KeyInfo() does not have positional arguments') if sum([required, default is not None or can_disable, automatically_computed_from is not None]) > 1: raise ValueError( 'required, default, automatically_computed_from, and can_disable are mutually exclusive ' 'besides default and can_disable which can be set together') if not can_disable and remove_value is not None: raise ValueError('remove_value can only be specified if can_disable=True') if absent_value is not None and any([default is not None, automatically_computed_from is not None, can_disable]): raise ValueError('absent_value can not be combined with default, automatically_computed_from, can_disable=True, or absent_value') if read_only and write_only: raise ValueError('read_only and write_only cannot be used at the same time') if read_only and any([can_disable, remove_value is not None, absent_value is not None, default is not None, required]): raise ValueError('read_only can not be combined with can_disable, remove_value, absent_value, default, or required') self.can_disable = can_disable self.remove_value = remove_value self.automatically_computed_from = automatically_computed_from self.default = default self.required = required self.absent_value = absent_value self.read_only = read_only self.write_only = write_only def split_path(path): return path.split() def join_path(path): return ' '.join(path) # How to obtain this information: # 1. Run `/export verbose` in the CLI; # 2. All attributes listed there go into the `fields` list; # attributes which can have a `!` ahead should have `canDisable=True` # 3. All bold attributes go into the `primary_keys` list -- this is not always true! PATHS = { ('interface', 'bonding'): APIData( unversioned=VersionedAPIData( fully_understood=True, primary_keys=('name', ), fields={ 'arp': KeyInfo(default='enabled'), 'arp-interval': KeyInfo(default='100ms'), 'arp-ip-targets': KeyInfo(default=''), 'arp-timeout': KeyInfo(default='auto'), 'comment': KeyInfo(can_disable=True, remove_value=''), 'disabled': KeyInfo(default=False), 'down-delay': KeyInfo(default='0ms'), 'forced-mac-address': KeyInfo(can_disable=True), 'lacp-rate': KeyInfo(default='30secs'), 'lacp-user-key': KeyInfo(can_disable=True, remove_value=0), 'link-monitoring': KeyInfo(default='mii'), 'mii-interval': KeyInfo(default='100ms'), 'min-links': KeyInfo(default=0), 'mlag-id': KeyInfo(can_disable=True, remove_value=0), 'mode': KeyInfo(default='balance-rr'), 'mtu': KeyInfo(default=1500), 'name': KeyInfo(), 'primary': KeyInfo(default='none'), 'slaves': KeyInfo(required=True), 'transmit-hash-policy': KeyInfo(default='layer-2'), 'up-delay': KeyInfo(default='0ms'), } ), ), ('interface', 'bridge'): APIData( unversioned=VersionedAPIData( fully_understood=True, primary_keys=('name', ), fields={ 'admin-mac': KeyInfo(default=''), 'ageing-time': KeyInfo(default='5m'), 'arp': KeyInfo(default='enabled'), 'arp-timeout': KeyInfo(default='auto'), 'auto-mac': KeyInfo(default=True), 'comment': KeyInfo(can_disable=True, remove_value=''), 'dhcp-snooping': KeyInfo(default=False), 'disabled': KeyInfo(default=False), 'ether-type': KeyInfo(default='0x8100'), 'fast-forward': KeyInfo(default=True), 'frame-types': KeyInfo(default='admit-all'), 'forward-delay': KeyInfo(default='15s'), 'igmp-snooping': KeyInfo(default=False), 'ingress-filtering': KeyInfo(default=True), 'max-message-age': KeyInfo(default='20s'), 'mtu': KeyInfo(default='auto'), 'name': KeyInfo(), 'priority': KeyInfo(default='0x8000'), 'protocol-mode': KeyInfo(default='rstp'), 'pvid': KeyInfo(default=1), 'transmit-hold-count': KeyInfo(default=6), 'vlan-filtering': KeyInfo(default=False), }, ), ), ('interface', 'eoip'): APIData( unversioned=VersionedAPIData( fully_understood=True, primary_keys=('name',), fields={ 'allow-fast-path': KeyInfo(default=True), 'arp': KeyInfo(default='enabled'), 'arp-timeout': KeyInfo(default='auto'), 'clamp-tcp-mss': KeyInfo(default=True), 'comment': KeyInfo(can_disable=True, remove_value=''), 'disabled': KeyInfo(default=False), 'dont-fragment': KeyInfo(default=False), 'dscp': KeyInfo(default='inherit'), 'ipsec-secret': KeyInfo(can_disable=True), 'keepalive': KeyInfo(default='10s,10', can_disable=True), 'local-address': KeyInfo(default='0.0.0.0'), 'loop-protect': KeyInfo(default='default'), 'loop-protect-disable-time': KeyInfo(default='5m'), 'loop-protect-send-interval': KeyInfo(default='5s'), 'mac-address': KeyInfo(), 'mtu': KeyInfo(default='auto'), 'name': KeyInfo(), 'remote-address': KeyInfo(required=True), 'tunnel-id': KeyInfo(required=True), }, ), ), ('interface', 'ethernet'): APIData( unversioned=VersionedAPIData( fixed_entries=True, fully_understood=True, primary_keys=('default-name', ), fields={ 'default-name': KeyInfo(), 'advertise': KeyInfo(), 'arp': KeyInfo(default='enabled'), 'arp-timeout': KeyInfo(default='auto'), 'auto-negotiation': KeyInfo(default=True), 'bandwidth': KeyInfo(default='unlimited/unlimited'), 'combo-mode': KeyInfo(can_disable=True), 'comment': KeyInfo(can_disable=True, remove_value=''), 'disabled': KeyInfo(default=False), 'fec-mode': KeyInfo(can_disable=True, remove_value='auto'), 'full-duplex': KeyInfo(default=True), 'l2mtu': KeyInfo(), 'loop-protect': KeyInfo(default='default'), 'loop-protect-disable-time': KeyInfo(default='5m'), 'loop-protect-send-interval': KeyInfo(default='5s'), 'mac-address': KeyInfo(), 'mdix-enable': KeyInfo(), 'mtu': KeyInfo(default=1500), 'name': KeyInfo(), 'orig-mac-address': KeyInfo(), 'poe-out': KeyInfo(can_disable=True, remove_value='auto-on'), 'poe-priority': KeyInfo(can_disable=True, remove_value=10), 'poe-voltage': KeyInfo(can_disable=True), 'power-cycle-interval': KeyInfo(), 'power-cycle-ping-address': KeyInfo(can_disable=True), 'power-cycle-ping-enabled': KeyInfo(), 'power-cycle-ping-timeout': KeyInfo(can_disable=True), 'rx-flow-control': KeyInfo(default='off'), 'sfp-rate-select': KeyInfo(default='high'), 'sfp-shutdown-temperature': KeyInfo(default=95), 'speed': KeyInfo(), 'tx-flow-control': KeyInfo(default='off'), }, ), ), ('interface', 'ethernet', 'poe'): APIData( unversioned=VersionedAPIData( fixed_entries=True, fully_understood=True, primary_keys=('name', ), fields={ 'name': KeyInfo(), 'poe-out': KeyInfo(default='auto-on'), 'poe-priority': KeyInfo(default=10), 'poe-voltage': KeyInfo(default='auto'), 'power-cycle-interval': KeyInfo(default='none'), 'power-cycle-ping-address': KeyInfo(can_disable=True), 'power-cycle-ping-enabled': KeyInfo(default=False), 'power-cycle-ping-timeout': KeyInfo(can_disable=True), } ), ), ('interface', 'gre'): APIData( unversioned=VersionedAPIData( fully_understood=True, primary_keys=('name', ), fields={ 'allow-fast-path': KeyInfo(default=True), 'clamp-tcp-mss': KeyInfo(default=True), 'comment': KeyInfo(can_disable=True, remove_value=''), 'disabled': KeyInfo(default=False), 'dont-fragment': KeyInfo(default=False), 'dscp': KeyInfo(default='inherit'), 'ipsec-secret': KeyInfo(can_disable=True), 'keepalive': KeyInfo(default='10s,10', can_disable=True), 'local-address': KeyInfo(default='0.0.0.0'), 'mtu': KeyInfo(default='auto'), 'name': KeyInfo(), 'remote-address': KeyInfo(required=True), }, ), ), ('interface', 'gre6'): APIData( unversioned=VersionedAPIData( fully_understood=True, primary_keys=('name',), fields={ 'clamp-tcp-mss': KeyInfo(default=True), 'comment': KeyInfo(can_disable=True, remove_value=''), 'disabled': KeyInfo(default=False), 'dscp': KeyInfo(default='inherit'), 'ipsec-secret': KeyInfo(can_disable=True), 'keepalive': KeyInfo(default='10s,10', can_disable=True), 'local-address': KeyInfo(default='::'), 'mtu': KeyInfo(default='auto'), 'name': KeyInfo(), 'remote-address': KeyInfo(required=True), }, ), ), ('interface', 'list'): APIData( unversioned=VersionedAPIData( primary_keys=('name', ), fully_understood=True, fields={ 'comment': KeyInfo(can_disable=True, remove_value=''), 'exclude': KeyInfo(), 'include': KeyInfo(), 'name': KeyInfo(), }, ), ), ('interface', 'list', 'member'): APIData( unversioned=VersionedAPIData( primary_keys=('list', 'interface', ), fully_understood=True, fields={ 'comment': KeyInfo(can_disable=True, remove_value=''), 'interface': KeyInfo(), 'list': KeyInfo(), 'disabled': KeyInfo(default=False), }, ), ), ('interface', 'lte', 'apn'): APIData( unversioned=VersionedAPIData( unknown_mechanism=True, # primary_keys=('default', ), fields={ 'default': KeyInfo(), 'add-default-route': KeyInfo(), 'apn': KeyInfo(), 'default-route-distance': KeyInfo(), 'name': KeyInfo(), 'use-peer-dns': KeyInfo(), }, ), ), ('interface', 'ppp-client'): APIData( unversioned=VersionedAPIData( fully_understood=True, primary_keys=('name', ), fields={ 'add-default-route': KeyInfo(default=True), 'allow': KeyInfo(default='pap,chap,mschap1,mschap2'), 'apn': KeyInfo(default='internet'), 'comment': KeyInfo(can_disable=True, remove_value=''), 'data-channel': KeyInfo(default=0), 'default-route-distance': KeyInfo(default=1), 'dial-command': KeyInfo(default="ATDT"), 'dial-on-demand': KeyInfo(default=True), 'disabled': KeyInfo(default=True), 'info-channel': KeyInfo(default=0), 'keepalive-timeout': KeyInfo(default=30), 'max-mru': KeyInfo(default=1500), 'max-mtu': KeyInfo(default=1500), 'modem-init': KeyInfo(default=''), 'mrru': KeyInfo(default='disabled'), 'name': KeyInfo(), 'null-modem': KeyInfo(default=False), 'password': KeyInfo(default=''), 'phone': KeyInfo(default=''), 'pin': KeyInfo(default=''), 'port': KeyInfo(), 'profile': KeyInfo(default='default'), 'use-peer-dns': KeyInfo(default=True), 'user': KeyInfo(default=''), }, ), ), ('interface', 'pppoe-client'): APIData( unversioned=VersionedAPIData( fully_understood=True, primary_keys=('name', ), fields={ 'ac-name': KeyInfo(default=''), 'add-default-route': KeyInfo(default=False), 'allow': KeyInfo(default='pap,chap,mschap1,mschap2'), 'comment': KeyInfo(can_disable=True, remove_value=''), 'default-route-distance': KeyInfo(default=1), 'dial-on-demand': KeyInfo(default=False), 'disabled': KeyInfo(default=True), 'host-uniq': KeyInfo(can_disable=True), 'interface': KeyInfo(required=True), 'keepalive-timeout': KeyInfo(default=10), 'max-mru': KeyInfo(default='auto'), 'max-mtu': KeyInfo(default='auto'), 'mrru': KeyInfo(default='disabled'), 'name': KeyInfo(), 'password': KeyInfo(default=''), 'profile': KeyInfo(default='default'), 'service-name': KeyInfo(default=''), 'use-peer-dns': KeyInfo(default=False), 'user': KeyInfo(default=''), }, ), ), ('interface', 'vlan'): APIData( unversioned=VersionedAPIData( fully_understood=True, primary_keys=('name', ), fields={ 'arp': KeyInfo(default='enabled'), 'arp-timeout': KeyInfo(default='auto'), 'comment': KeyInfo(can_disable=True, remove_value=''), 'disabled': KeyInfo(default=False), 'interface': KeyInfo(required=True), 'loop-protect': KeyInfo(default='default'), 'loop-protect-disable-time': KeyInfo(default='5m'), 'loop-protect-send-interval': KeyInfo(default='5s'), 'mtu': KeyInfo(default=1500), 'name': KeyInfo(), 'use-service-tag': KeyInfo(default=False), 'vlan-id': KeyInfo(required=True), }, ), ), ('interface', 'vrrp'): APIData( unversioned=VersionedAPIData( fully_understood=True, primary_keys=('name', ), fields={ 'arp': KeyInfo(default='enabled'), 'arp-timeout': KeyInfo(default='auto'), 'authentication': KeyInfo(default='none'), 'comment': KeyInfo(can_disable=True, remove_value=''), 'disabled': KeyInfo(default=False), 'group-master': KeyInfo(default=''), 'interface': KeyInfo(required=True), 'interval': KeyInfo(default='1s'), 'mtu': KeyInfo(default=1500), 'name': KeyInfo(), 'on-backup': KeyInfo(default=''), 'on-fail': KeyInfo(default=''), 'on-master': KeyInfo(default=''), 'password': KeyInfo(default=''), 'preemption-mode': KeyInfo(default=True), 'priority': KeyInfo(default=100), 'remote-address': KeyInfo(), 'sync-connection-tracking': KeyInfo(default=False), 'v3-protocol': KeyInfo(default='ipv4'), 'version': KeyInfo(default=3), 'vrid': KeyInfo(default=1), }, ), ), ('ip', 'hotspot', 'profile'): APIData( unversioned=VersionedAPIData( unknown_mechanism=True, # primary_keys=('default', ), fields={ 'default': KeyInfo(), 'dns-name': KeyInfo(), 'hotspot-address': KeyInfo(), 'html-directory': KeyInfo(), 'html-directory-override': KeyInfo(), 'http-cookie-lifetime': KeyInfo(), 'http-proxy': KeyInfo(), 'login-by': KeyInfo(), 'name': KeyInfo(), 'rate-limit': KeyInfo(), 'smtp-server': KeyInfo(), 'split-user-domain': KeyInfo(), 'use-radius': KeyInfo(), }, ), ), ('ip', 'hotspot', 'user', 'profile'): APIData( unversioned=VersionedAPIData( unknown_mechanism=True, # primary_keys=('default', ), fields={ 'default': KeyInfo(), 'add-mac-cookie': KeyInfo(), 'address-list': KeyInfo(), 'idle-timeout': KeyInfo(), 'insert-queue-before': KeyInfo(can_disable=True), 'keepalive-timeout': KeyInfo(), 'mac-cookie-timeout': KeyInfo(), 'name': KeyInfo(), 'parent-queue': KeyInfo(can_disable=True), 'queue-type': KeyInfo(can_disable=True), 'shared-users': KeyInfo(), 'status-autorefresh': KeyInfo(), 'transparent-proxy': KeyInfo(), }, ), ), ('ip', 'ipsec', 'identity'): APIData( unversioned=VersionedAPIData( fully_understood=True, primary_keys=('peer', ), fields={ 'auth-method': KeyInfo(default='pre-shared-key'), 'certificate': KeyInfo(), 'comment': KeyInfo(can_disable=True, remove_value=''), 'disabled': KeyInfo(default=False), 'eap-methods': KeyInfo(default='eap-tls'), 'generate-policy': KeyInfo(default=False), 'key': KeyInfo(), 'match-by': KeyInfo(can_disable=True, remove_value='remote-id'), 'mode-config': KeyInfo(can_disable=True, remove_value='none'), 'my-id': KeyInfo(can_disable=True, remove_value='auto'), 'notrack-chain': KeyInfo(can_disable=True, remove_value=''), 'password': KeyInfo(), 'peer': KeyInfo(), 'policy-template-group': KeyInfo(can_disable=True, remove_value='default'), 'remote-certificate': KeyInfo(), 'remote-id': KeyInfo(can_disable=True, remove_value='auto'), 'remote-key': KeyInfo(), 'secret': KeyInfo(default=''), 'username': KeyInfo(), }, ), ), ('ip', 'ipsec', 'mode-config'): APIData( unversioned=VersionedAPIData( unknown_mechanism=True, # primary_keys=('default', ), fields={ 'default': KeyInfo(), 'name': KeyInfo(), 'responder': KeyInfo(), 'use-responder-dns': KeyInfo(), }, ), ), ('ip', 'ipsec', 'peer'): APIData( unversioned=VersionedAPIData( fully_understood=True, primary_keys=('name', ), fields={ 'address': KeyInfo(can_disable=True, remove_value=''), 'comment': KeyInfo(can_disable=True, remove_value=''), 'disabled': KeyInfo(default=False), 'exchange-mode': KeyInfo(default='main'), 'local-address': KeyInfo(can_disable=True, remove_value='0.0.0.0'), 'name': KeyInfo(), 'passive': KeyInfo(can_disable=True, remove_value=False), 'port': KeyInfo(can_disable=True, remove_value=500), 'profile': KeyInfo(default='default'), 'send-initial-contact': KeyInfo(default=True), }, ), ), ('ip', 'ipsec', 'policy', 'group'): APIData( unversioned=VersionedAPIData( unknown_mechanism=True, # primary_keys=('default', ), fields={ 'default': KeyInfo(), 'name': KeyInfo(), }, ), ), ('ip', 'ipsec', 'profile'): APIData( unversioned=VersionedAPIData( fully_understood=True, primary_keys=('name', ), fields={ 'dh-group': KeyInfo(default='modp2048,modp1024'), 'dpd-interval': KeyInfo(default='2m'), 'dpd-maximum-failures': KeyInfo(default=5), 'enc-algorithm': KeyInfo(default='aes-128,3des'), 'hash-algorithm': KeyInfo(default='sha1'), 'lifebytes': KeyInfo(can_disable=True, remove_value=0), 'lifetime': KeyInfo(default='1d'), 'name': KeyInfo(), 'nat-traversal': KeyInfo(default=True), 'prf-algorithm': KeyInfo(can_disable=True, remove_value='auto'), 'proposal-check': KeyInfo(default='obey'), }, ), ), ('ip', 'ipsec', 'proposal'): APIData( unversioned=VersionedAPIData( fully_understood=True, primary_keys=('name', ), fields={ 'auth-algorithms': KeyInfo(default='sha1'), 'disabled': KeyInfo(default=False), 'enc-algorithms': KeyInfo(default='aes-256-cbc,aes-192-cbc,aes-128-cbc'), 'lifetime': KeyInfo(default='30m'), 'name': KeyInfo(), 'pfs-group': KeyInfo(default='modp1024'), }, ), ), ('ip', 'pool'): APIData( unversioned=VersionedAPIData( fully_understood=True, primary_keys=('name', ), fields={ 'name': KeyInfo(), 'ranges': KeyInfo(), }, ), ), ('ip', 'route'): APIData( unversioned=VersionedAPIData( fully_understood=True, fields={ 'blackhole': KeyInfo(can_disable=True), 'check-gateway': KeyInfo(can_disable=True), 'comment': KeyInfo(can_disable=True, remove_value=''), 'disabled': KeyInfo(default=False), 'distance': KeyInfo(), 'dst-address': KeyInfo(), 'gateway': KeyInfo(), 'pref-src': KeyInfo(), 'routing-table': KeyInfo(default='main'), 'route-tag': KeyInfo(can_disable=True), 'routing-mark': KeyInfo(can_disable=True), 'scope': KeyInfo(), 'suppress-hw-offload': KeyInfo(default=False), 'target-scope': KeyInfo(), 'type': KeyInfo(can_disable=True, remove_value='unicast'), 'vrf-interface': KeyInfo(can_disable=True), }, ), ), ('ip', 'route', 'rule'): APIData( versioned=[ ('7', '<', VersionedAPIData( fully_understood=True, fields={ 'action': KeyInfo(default='lookup'), 'comment': KeyInfo(can_disable=True, remove_value=''), 'disabled': KeyInfo(default=False), 'dst-address': KeyInfo(can_disable=True), 'interface': KeyInfo(can_disable=True), 'routing-mark': KeyInfo(can_disable=True), 'src-address': KeyInfo(can_disable=True), 'table': KeyInfo(default='main'), }, )), ], ), ('ip', 'vrf'): APIData( versioned=[ ('7', '>=', VersionedAPIData( fully_understood=True, primary_keys=('name', ), fields={ 'comment': KeyInfo(can_disable=True, remove_value=''), 'disabled': KeyInfo(default=False), 'interfaces': KeyInfo(), 'name': KeyInfo(), }, )), ] ), ('ip', 'route', 'vrf'): APIData( versioned=[ ('7', '<', VersionedAPIData( fully_understood=True, primary_keys=('routing-mark', ), fields={ 'comment': KeyInfo(can_disable=True, remove_value=''), 'disabled': KeyInfo(default=False), 'interfaces': KeyInfo(), 'routing-mark': KeyInfo(), }, )), ], ), ('routing', 'filter'): APIData( versioned=[ ('7', '<', VersionedAPIData( fully_understood=True, fields={ 'action': KeyInfo(default='passthrough'), 'address-family': KeyInfo(can_disable=True), 'append-bgp-communities': KeyInfo(can_disable=True), 'append-route-targets': KeyInfo(can_disable=True), 'bgp-as-path': KeyInfo(can_disable=True), 'bgp-as-path-length': KeyInfo(can_disable=True), 'bgp-atomic-aggregate': KeyInfo(can_disable=True), 'bgp-communities': KeyInfo(can_disable=True), 'bgp-local-pref': KeyInfo(can_disable=True), 'bgp-med': KeyInfo(can_disable=True), 'bgp-origin': KeyInfo(can_disable=True), 'bgp-weight': KeyInfo(can_disable=True), 'chain': KeyInfo(required=True), 'comment': KeyInfo(can_disable=True, remove_value=''), 'disabled': KeyInfo(default=False), 'distance': KeyInfo(can_disable=True), 'invert-match': KeyInfo(default=False), 'jump-target': KeyInfo(), 'locally-originated-bgp': KeyInfo(can_disable=True), 'match-chain': KeyInfo(can_disable=True), 'ospf-type': KeyInfo(can_disable=True), 'pref-src': KeyInfo(can_disable=True), 'prefix': KeyInfo(default='0.0.0.0/0'), 'prefix-length': KeyInfo(can_disable=True), 'protocol': KeyInfo(can_disable=True), 'route-comment': KeyInfo(can_disable=True), 'route-tag': KeyInfo(can_disable=True), 'route-targets': KeyInfo(can_disable=True), 'routing-mark': KeyInfo(can_disable=True), 'scope': KeyInfo(can_disable=True), 'set-bgp-communities': KeyInfo(can_disable=True), 'set-bgp-local-pref': KeyInfo(can_disable=True), 'set-bgp-med': KeyInfo(can_disable=True), 'set-bgp-prepend': KeyInfo(can_disable=True), 'set-bgp-prepend-path': KeyInfo(), 'set-bgp-weight': KeyInfo(can_disable=True), 'set-check-gateway': KeyInfo(can_disable=True), 'set-disabled': KeyInfo(can_disable=True), 'set-distance': KeyInfo(can_disable=True), 'set-in-nexthop': KeyInfo(can_disable=True), 'set-in-nexthop-direct': KeyInfo(can_disable=True), 'set-in-nexthop-ipv6': KeyInfo(can_disable=True), 'set-in-nexthop-linklocal': KeyInfo(can_disable=True), 'set-out-nexthop': KeyInfo(can_disable=True), 'set-out-nexthop-ipv6': KeyInfo(can_disable=True), 'set-out-nexthop-linklocal': KeyInfo(can_disable=True), 'set-pref-src': KeyInfo(can_disable=True), 'set-route-comment': KeyInfo(can_disable=True), 'set-route-tag': KeyInfo(can_disable=True), 'set-route-targets': KeyInfo(can_disable=True), 'set-routing-mark': KeyInfo(can_disable=True), 'set-scope': KeyInfo(can_disable=True), 'set-site-of-origin': KeyInfo(can_disable=True), 'set-target-scope': KeyInfo(can_disable=True), 'set-type': KeyInfo(can_disable=True), 'set-use-te-nexthop': KeyInfo(can_disable=True), 'site-of-origin': KeyInfo(can_disable=True), 'target-scope': KeyInfo(can_disable=True), }, )), ], ), ('routing', 'filter', 'rule'): APIData( versioned=[ ('7', '>=', VersionedAPIData( fully_understood=True, fields={ 'chain': KeyInfo(required=True), 'comment': KeyInfo(can_disable=True, remove_value=''), 'disabled': KeyInfo(can_disable=True), 'rule': KeyInfo(can_disable=True), }, )), ], ), ('routing', 'filter', 'select-rule'): APIData( versioned=[ ('7', '>=', VersionedAPIData( fully_understood=True, fields={ 'chain': KeyInfo(required=True), 'comment': KeyInfo(can_disable=True, remove_value=''), 'disabled': KeyInfo(can_disable=True), 'do-group-num': KeyInfo(can_disable=True), 'do-group-prfx': KeyInfo(can_disable=True), 'do-jump': KeyInfo(can_disable=True), 'do-select-num': KeyInfo(can_disable=True), 'do-select-prfx': KeyInfo(can_disable=True), 'do-take': KeyInfo(can_disable=True), 'do-where': KeyInfo(can_disable=True), }, )), ], ), ('routing', 'ospf', 'instance'): APIData( unversioned=VersionedAPIData( fully_understood=True, primary_keys=('name', ), fields={ 'comment': KeyInfo(can_disable=True, remove_value=''), 'disabled': KeyInfo(default=False), 'domain-id': KeyInfo(can_disable=True), 'domain-tag': KeyInfo(can_disable=True), 'in-filter-chain': KeyInfo(can_disable=True), 'mpls-te-address': KeyInfo(can_disable=True), 'mpls-te-area': KeyInfo(can_disable=True), 'name': KeyInfo(), 'originate-default': KeyInfo(can_disable=True), 'out-filter-chain': KeyInfo(can_disable=True), 'out-filter-select': KeyInfo(can_disable=True), 'redistribute': KeyInfo(can_disable=True), 'router-id': KeyInfo(default='main'), 'routing-table': KeyInfo(can_disable=True), 'use-dn': KeyInfo(can_disable=True), 'version': KeyInfo(default=2), 'vrf': KeyInfo(default='main'), }, ), ), ('routing', 'ospf', 'area'): APIData( unversioned=VersionedAPIData( fully_understood=True, primary_keys=('name', ), fields={ 'area-id': KeyInfo(default='0.0.0.0'), 'comment': KeyInfo(can_disable=True, remove_value=''), 'default-cost': KeyInfo(can_disable=True), 'disabled': KeyInfo(default=False), 'instance': KeyInfo(required=True), 'name': KeyInfo(), 'no-summaries': KeyInfo(can_disable=True), 'nssa-translator': KeyInfo(can_disable=True), 'type': KeyInfo(default='default'), }, ), ), ('routing', 'ospf', 'area', 'range'): APIData( unversioned=VersionedAPIData( fully_understood=True, primary_keys=('area', 'prefix', ), fields={ 'advertise': KeyInfo(default=True), 'area': KeyInfo(), 'comment': KeyInfo(can_disable=True, remove_value=''), 'cost': KeyInfo(can_disable=True), 'disabled': KeyInfo(default=False), 'prefix': KeyInfo(), }, ), ), ('routing', 'ospf', 'interface-template'): APIData( unversioned=VersionedAPIData( fully_understood=True, fields={ 'area': KeyInfo(required=True), 'auth': KeyInfo(can_disable=True), 'auth-id': KeyInfo(can_disable=True), 'auth-key': KeyInfo(can_disable=True), 'comment': KeyInfo(can_disable=True, remove_value=''), 'cost': KeyInfo(default=1), 'dead-interval': KeyInfo(default='40s'), 'disabled': KeyInfo(default=False), 'hello-interval': KeyInfo(default='10s'), 'instance-id': KeyInfo(default=0), 'interfaces': KeyInfo(can_disable=True), 'networks': KeyInfo(can_disable=True), 'passive': KeyInfo(can_disable=True), 'prefix-list': KeyInfo(can_disable=True), 'priority': KeyInfo(default=128), 'retransmit-interval': KeyInfo(default='5s'), 'transmit-delay': KeyInfo(default='1s'), 'type': KeyInfo(default='broadcast'), 'vlink-neighbor-id': KeyInfo(can_disable=True), 'vlink-transit-area': KeyInfo(can_disable=True), }, ), ), ('routing', 'ospf-v3', 'instance'): APIData( unversioned=VersionedAPIData( unknown_mechanism=True, # primary_keys=('default', ), fields={ 'default': KeyInfo(), 'disabled': KeyInfo(), 'distribute-default': KeyInfo(), 'metric-bgp': KeyInfo(), 'metric-connected': KeyInfo(), 'metric-default': KeyInfo(), 'metric-other-ospf': KeyInfo(), 'metric-rip': KeyInfo(), 'metric-static': KeyInfo(), 'name': KeyInfo(), 'redistribute-bgp': KeyInfo(), 'redistribute-connected': KeyInfo(), 'redistribute-other-ospf': KeyInfo(), 'redistribute-rip': KeyInfo(), 'redistribute-static': KeyInfo(), 'router-id': KeyInfo(), }, ), ), ('routing', 'ospf-v3', 'area'): APIData( unversioned=VersionedAPIData( unknown_mechanism=True, # primary_keys=('default', ), fields={ 'default': KeyInfo(), 'area-id': KeyInfo(), 'disabled': KeyInfo(), 'instance': KeyInfo(), 'name': KeyInfo(), 'type': KeyInfo(), }, ), ), ('routing', 'pimsm', 'instance'): APIData( unversioned=VersionedAPIData( fully_understood=True, primary_keys=('name', ), fields={ 'afi': KeyInfo(default='ipv4'), 'bsm-forward-back': KeyInfo(), 'crp-advertise-contained': KeyInfo(), 'disabled': KeyInfo(default=False), 'name': KeyInfo(), 'rp-hash-mask-length': KeyInfo(), 'rp-static-override': KeyInfo(default=False), 'ssm-range': KeyInfo(), 'switch-to-spt': KeyInfo(default=True), 'switch-to-spt-bytes': KeyInfo(default=0), 'switch-to-spt-interval': KeyInfo(), 'vrf': KeyInfo(default="main"), }, ), ), ('routing', 'pimsm', 'interface-template'): APIData( unversioned=VersionedAPIData( fully_understood=True, fields={ 'disabled': KeyInfo(default=False), 'hello-delay': KeyInfo(default='5s'), 'hello-period': KeyInfo(default='30s'), 'instance': KeyInfo(required=True), 'interfaces': KeyInfo(can_disable=True), 'join-prune-period': KeyInfo(default='1m'), 'join-tracking-support': KeyInfo(default=True), 'override-interval': KeyInfo(default='2s500ms'), 'priority': KeyInfo(default=1), 'propagation-delay': KeyInfo(default='500ms'), 'source-addresses': KeyInfo(can_disable=True), }, ), ), ('routing', 'rule'): APIData( versioned=[ ('7', '>=', VersionedAPIData( fully_understood=True, fields={ 'action': KeyInfo(can_disable=True), 'comment': KeyInfo(can_disable=True, remove_value=''), 'disabled': KeyInfo(default=False), 'dst-address': KeyInfo(can_disable=True), 'interface': KeyInfo(can_disable=True), 'min-prefix': KeyInfo(can_disable=True), 'routing-mark': KeyInfo(can_disable=True), 'src-address': KeyInfo(can_disable=True), 'table': KeyInfo(can_disable=True), }, )), ], ), ('routing', 'table'): APIData( versioned=[ ('7', '>=', VersionedAPIData( fully_understood=True, fields={ 'name': KeyInfo(required=True), 'comment': KeyInfo(can_disable=True, remove_value=''), 'disabled': KeyInfo(default=False), 'fib': KeyInfo(), }, )), ], ), ('snmp', 'community'): APIData( unversioned=VersionedAPIData( fully_understood=True, primary_keys=('name', ), fields={ 'addresses': KeyInfo(default='::/0'), 'authentication-password': KeyInfo(default=''), 'authentication-protocol': KeyInfo(default='MD5'), 'comment': KeyInfo(can_disable=True, remove_value=''), 'disabled': KeyInfo(default=False), 'encryption-password': KeyInfo(default=''), 'encryption-protocol': KeyInfo(default='DES'), 'name': KeyInfo(required=True), 'read-access': KeyInfo(default=True), 'security': KeyInfo(default='none'), 'write-access': KeyInfo(default=False), }, ), ), ('caps-man', 'aaa'): APIData( unversioned=VersionedAPIData( single_value=True, fully_understood=True, fields={ 'called-format': KeyInfo(default='mac:ssid'), 'interim-update': KeyInfo(default='disabled'), 'mac-caching': KeyInfo(default='disabled'), 'mac-format': KeyInfo(default='XX:XX:XX:XX:XX:XX'), 'mac-mode': KeyInfo(default='as-username'), }, ), ), ('caps-man', 'access-list'): APIData( unversioned=VersionedAPIData( fully_understood=True, fields={ 'action': KeyInfo(can_disable=True), 'allow-signal-out-of-range': KeyInfo(can_disable=True), 'ap-tx-limit': KeyInfo(can_disable=True), 'client-to-client-forwarding': KeyInfo(can_disable=True), 'client-tx-limit': KeyInfo(can_disable=True), 'comment': KeyInfo(can_disable=True, remove_value=''), 'disabled': KeyInfo(default=False), 'interface': KeyInfo(can_disable=True), 'mac-address': KeyInfo(can_disable=True), 'mac-address-mask': KeyInfo(can_disable=True), 'private-passphrase': KeyInfo(can_disable=True), 'radius-accounting': KeyInfo(can_disable=True), 'signal-range': KeyInfo(can_disable=True), 'ssid-regexp': KeyInfo(), 'time': KeyInfo(can_disable=True), 'vlan-id': KeyInfo(can_disable=True), 'vlan-mode': KeyInfo(can_disable=True), }, ), ), ('caps-man', 'channel'): APIData( unversioned=VersionedAPIData( fully_understood=True, primary_keys=('name', ), fields={ 'band': KeyInfo(can_disable=True), 'comment': KeyInfo(can_disable=True, remove_value=''), 'control-channel-width': KeyInfo(can_disable=True), 'extension-channel': KeyInfo(can_disable=True), 'frequency': KeyInfo(can_disable=True), 'name': KeyInfo(), 'reselect-interval': KeyInfo(can_disable=True), 'save-selected': KeyInfo(can_disable=True), 'secondary-frequency': KeyInfo(can_disable=True), 'skip-dfs-channels': KeyInfo(can_disable=True), 'tx-power': KeyInfo(can_disable=True), }, ), ), ('caps-man', 'configuration'): APIData( unversioned=VersionedAPIData( fully_understood=True, primary_keys=('name', ), fields={ 'channel': KeyInfo(can_disable=True), 'channel.band': KeyInfo(can_disable=True), 'channel.control-channel-width': KeyInfo(can_disable=True), 'channel.extension-channel': KeyInfo(can_disable=True), 'channel.frequency': KeyInfo(can_disable=True), 'channel.reselect-interval': KeyInfo(can_disable=True), 'channel.save-selected': KeyInfo(can_disable=True), 'channel.secondary-frequency': KeyInfo(can_disable=True), 'channel.skip-dfs-channels': KeyInfo(can_disable=True), 'channel.tx-power': KeyInfo(can_disable=True), 'comment': KeyInfo(can_disable=True, remove_value=''), 'country': KeyInfo(can_disable=True), 'datapath': KeyInfo(can_disable=True), 'datapath.arp': KeyInfo(), 'datapath.bridge': KeyInfo(can_disable=True), 'datapath.bridge-cost': KeyInfo(can_disable=True), 'datapath.bridge-horizon': KeyInfo(can_disable=True), 'datapath.client-to-client-forwarding': KeyInfo(can_disable=True), 'datapath.interface-list': KeyInfo(can_disable=True), 'datapath.l2mtu': KeyInfo(), 'datapath.local-forwarding': KeyInfo(can_disable=True), 'datapath.mtu': KeyInfo(), 'datapath.openflow-switch': KeyInfo(can_disable=True), 'datapath.vlan-id': KeyInfo(can_disable=True), 'datapath.vlan-mode': KeyInfo(can_disable=True), 'disconnect-timeout': KeyInfo(can_disable=True), 'distance': KeyInfo(can_disable=True), 'frame-lifetime': KeyInfo(can_disable=True), 'guard-interval': KeyInfo(can_disable=True), 'hide-ssid': KeyInfo(can_disable=True), 'hw-protection-mode': KeyInfo(can_disable=True), 'hw-retries': KeyInfo(can_disable=True), 'installation': KeyInfo(can_disable=True), 'keepalive-frames': KeyInfo(can_disable=True), 'load-balancing-group': KeyInfo(can_disable=True), 'max-sta-count': KeyInfo(can_disable=True), 'mode': KeyInfo(can_disable=True), 'multicast-helper': KeyInfo(can_disable=True), 'name': KeyInfo(), 'rates': KeyInfo(can_disable=True), 'rates.basic': KeyInfo(can_disable=True), 'rates.ht-basic-mcs': KeyInfo(can_disable=True), 'rates.ht-supported-mcs': KeyInfo(can_disable=True), 'rates.supported': KeyInfo(can_disable=True), 'rates.vht-basic-mcs': KeyInfo(can_disable=True), 'rates.vht-supported-mcs': KeyInfo(can_disable=True), 'rx-chains': KeyInfo(can_disable=True), 'security': KeyInfo(can_disable=True), 'security.authentication-types': KeyInfo(can_disable=True), 'security.disable-pmkid': KeyInfo(can_disable=True), 'security.eap-methods': KeyInfo(can_disable=True), 'security.eap-radius-accounting': KeyInfo(can_disable=True), 'security.encryption': KeyInfo(can_disable=True), 'security.group-encryption': KeyInfo(can_disable=True), 'security.group-key-update': KeyInfo(), 'security.passphrase': KeyInfo(can_disable=True), 'security.tls-certificate': KeyInfo(), 'security.tls-mode': KeyInfo(), 'ssid': KeyInfo(can_disable=True), 'tx-chains': KeyInfo(can_disable=True), }, ), ), ('caps-man', 'datapath'): APIData( unversioned=VersionedAPIData( fully_understood=True, primary_keys=('name', ), fields={ 'arp': KeyInfo(), 'bridge': KeyInfo(can_disable=True), 'bridge-cost': KeyInfo(can_disable=True), 'bridge-horizon': KeyInfo(can_disable=True), 'client-to-client-forwarding': KeyInfo(can_disable=True), 'comment': KeyInfo(can_disable=True, remove_value=''), 'interface-list': KeyInfo(can_disable=True), 'l2mtu': KeyInfo(), 'local-forwarding': KeyInfo(can_disable=True), 'mtu': KeyInfo(), 'name': KeyInfo(), 'openflow-switch': KeyInfo(can_disable=True), 'vlan-id': KeyInfo(can_disable=True), 'vlan-mode': KeyInfo(can_disable=True), }, ), ), ('caps-man', 'manager', 'interface'): APIData( unversioned=VersionedAPIData( fully_understood=True, primary_keys=('interface', ), fields={ 'comment': KeyInfo(can_disable=True, remove_value=''), 'default': KeyInfo(), 'disabled': KeyInfo(default=False), 'forbid': KeyInfo(default=False), 'interface': KeyInfo(), }, ), ), ('caps-man', 'provisioning'): APIData( unversioned=VersionedAPIData( fully_understood=True, fields={ 'action': KeyInfo(default='none'), 'comment': KeyInfo(can_disable=True, remove_value=''), 'common-name-regexp': KeyInfo(default=''), 'disabled': KeyInfo(default=False), 'hw-supported-modes': KeyInfo(default=''), 'identity-regexp': KeyInfo(default=''), 'ip-address-ranges': KeyInfo(default=''), 'master-configuration': KeyInfo(default='*FFFFFFFF'), 'name-format': KeyInfo(default='cap'), 'name-prefix': KeyInfo(default=''), 'radio-mac': KeyInfo(default='00:00:00:00:00:00'), 'slave-configurations': KeyInfo(default=''), }, ), ), ('caps-man', 'security'): APIData( unversioned=VersionedAPIData( fully_understood=True, primary_keys=('name', ), fields={ 'authentication-types': KeyInfo(can_disable=True), 'comment': KeyInfo(can_disable=True, remove_value=''), 'disable-pmkid': KeyInfo(can_disable=True), 'eap-methods': KeyInfo(can_disable=True), 'eap-radius-accounting': KeyInfo(can_disable=True), 'encryption': KeyInfo(can_disable=True), 'group-encryption': KeyInfo(can_disable=True), 'group-key-update': KeyInfo(), 'name': KeyInfo(), 'passphrase': KeyInfo(can_disable=True), 'tls-certificate': KeyInfo(), 'tls-mode': KeyInfo(), } ), ), ('certificate', 'settings'): APIData( unversioned=VersionedAPIData( single_value=True, fully_understood=True, fields={ 'crl-download': KeyInfo(default=False), 'crl-store': KeyInfo(default='ram'), 'crl-use': KeyInfo(default=False), }, ), ), ('interface', 'bridge', 'port'): APIData( unversioned=VersionedAPIData( fully_understood=True, primary_keys=('interface', ), fields={ 'auto-isolate': KeyInfo(default=False), 'bpdu-guard': KeyInfo(default=False), 'bridge': KeyInfo(required=True), 'broadcast-flood': KeyInfo(default=True), 'comment': KeyInfo(can_disable=True, remove_value=''), 'disabled': KeyInfo(default=False), 'edge': KeyInfo(default='auto'), 'fast-leave': KeyInfo(default=False), 'frame-types': KeyInfo(default='admit-all'), 'horizon': KeyInfo(default='none'), 'hw': KeyInfo(default=True), 'ingress-filtering': KeyInfo(default=True), 'interface': KeyInfo(), 'internal-path-cost': KeyInfo(default=10), 'learn': KeyInfo(default='auto'), 'multicast-router': KeyInfo(default='temporary-query'), 'path-cost': KeyInfo(default=10), 'point-to-point': KeyInfo(default='auto'), 'priority': KeyInfo(default='0x80'), 'pvid': KeyInfo(default=1), 'restricted-role': KeyInfo(default=False), 'restricted-tcn': KeyInfo(default=False), 'tag-stacking': KeyInfo(default=False), 'trusted': KeyInfo(default=False), 'unknown-multicast-flood': KeyInfo(default=True), 'unknown-unicast-flood': KeyInfo(default=True), }, ), ), ('interface', 'bridge', 'mlag'): APIData( unversioned=VersionedAPIData( single_value=True, fully_understood=True, fields={ 'bridge': KeyInfo(default='none'), 'peer-port': KeyInfo(default='none'), } ), ), ('interface', 'bridge', 'port-controller'): APIData( unversioned=VersionedAPIData( single_value=True, fully_understood=True, fields={ 'bridge': KeyInfo(default='none'), 'cascade-ports': KeyInfo(default=''), 'switch': KeyInfo(default='none'), }, ), ), ('interface', 'bridge', 'port-extender'): APIData( unversioned=VersionedAPIData( single_value=True, fully_understood=True, fields={ 'control-ports': KeyInfo(default=''), 'excluded-ports': KeyInfo(default=''), 'switch': KeyInfo(default='none'), }, ), ), ('interface', 'bridge', 'settings'): APIData( unversioned=VersionedAPIData( single_value=True, fully_understood=True, fields={ 'allow-fast-path': KeyInfo(default=True), 'use-ip-firewall': KeyInfo(default=False), 'use-ip-firewall-for-pppoe': KeyInfo(default=False), 'use-ip-firewall-for-vlan': KeyInfo(default=False), }, ), ), ('interface', 'bridge', 'vlan'): APIData( unversioned=VersionedAPIData( fully_understood=True, primary_keys=('bridge', 'vlan-ids', ), fields={ 'bridge': KeyInfo(), 'comment': KeyInfo(can_disable=True, remove_value=''), 'disabled': KeyInfo(default=False), 'tagged': KeyInfo(default=''), 'untagged': KeyInfo(default=''), 'vlan-ids': KeyInfo(), }, ), ), ('ip', 'firewall', 'connection', 'tracking'): APIData( unversioned=VersionedAPIData( single_value=True, fully_understood=True, fields={ 'enabled': KeyInfo(default='auto'), 'generic-timeout': KeyInfo(default='10m'), 'icmp-timeout': KeyInfo(default='10s'), 'loose-tcp-tracking': KeyInfo(default=True), 'tcp-close-timeout': KeyInfo(default='10s'), 'tcp-close-wait-timeout': KeyInfo(default='10s'), 'tcp-established-timeout': KeyInfo(default='1d'), 'tcp-fin-wait-timeout': KeyInfo(default='10s'), 'tcp-last-ack-timeout': KeyInfo(default='10s'), 'tcp-max-retrans-timeout': KeyInfo(default='5m'), 'tcp-syn-received-timeout': KeyInfo(default='5s'), 'tcp-syn-sent-timeout': KeyInfo(default='5s'), 'tcp-time-wait-timeout': KeyInfo(default='10s'), 'tcp-unacked-timeout': KeyInfo(default='5m'), 'udp-stream-timeout': KeyInfo(default='3m'), 'udp-timeout': KeyInfo(default='10s'), }, ), ), ('ip', 'neighbor', 'discovery-settings'): APIData( unversioned=VersionedAPIData( single_value=True, fully_understood=True, versioned_fields=[ ([('7.7', '>=')], 'mode', KeyInfo(default='tx-and-rx')), ], fields={ 'discover-interface-list': KeyInfo(), 'lldp-med-net-policy-vlan': KeyInfo(default='disabled'), 'protocol': KeyInfo(default='cdp,lldp,mndp'), }, ), ), ('ip', 'settings'): APIData( unversioned=VersionedAPIData( single_value=True, fully_understood=True, fields={ 'accept-redirects': KeyInfo(default=False), 'accept-source-route': KeyInfo(default=False), 'allow-fast-path': KeyInfo(default=True), 'arp-timeout': KeyInfo(default='30s'), 'icmp-rate-limit': KeyInfo(default=10), 'icmp-rate-mask': KeyInfo(default='0x1818'), 'ip-forward': KeyInfo(default=True), 'max-neighbor-entries': KeyInfo(default=8192), 'route-cache': KeyInfo(default=True), 'rp-filter': KeyInfo(default=False), 'secure-redirects': KeyInfo(default=True), 'send-redirects': KeyInfo(default=True), 'tcp-syncookies': KeyInfo(default=False), }, ), ), ('ipv6', 'address'): APIData( unversioned=VersionedAPIData( fully_understood=True, fields={ 'address': KeyInfo(), 'advertise': KeyInfo(default=True), 'comment': KeyInfo(can_disable=True, remove_value=''), 'disabled': KeyInfo(default=False), 'eui-64': KeyInfo(default=False), 'from-pool': KeyInfo(default=''), 'interface': KeyInfo(required=True), 'no-dad': KeyInfo(default=False), }, ), ), ('ipv6', 'settings'): APIData( unversioned=VersionedAPIData( single_value=True, fully_understood=True, fields={ 'accept-redirects': KeyInfo(default='yes-if-forwarding-disabled'), 'accept-router-advertisements': KeyInfo(default='yes-if-forwarding-disabled'), 'disable-ipv6': KeyInfo(default=False), 'forward': KeyInfo(default=True), 'max-neighbor-entries': KeyInfo(default=8192), }, ), ), ('interface', 'detect-internet'): APIData( unversioned=VersionedAPIData( single_value=True, fully_understood=True, fields={ 'detect-interface-list': KeyInfo(default='none'), 'internet-interface-list': KeyInfo(default='none'), 'lan-interface-list': KeyInfo(default='none'), 'wan-interface-list': KeyInfo(default='none'), }, ), ), ('interface', 'l2tp-server', 'server'): APIData( unversioned=VersionedAPIData( single_value=True, fully_understood=True, fields={ 'allow-fast-path': KeyInfo(default=False), 'authentication': KeyInfo(default='pap,chap,mschap1,mschap2'), 'caller-id-type': KeyInfo(default='ip-address'), 'default-profile': KeyInfo(default='default-encryption'), 'enabled': KeyInfo(default=False), 'ipsec-secret': KeyInfo(default=''), 'keepalive-timeout': KeyInfo(default=30), 'max-mru': KeyInfo(default=1450), 'max-mtu': KeyInfo(default=1450), 'max-sessions': KeyInfo(default='unlimited'), 'mrru': KeyInfo(default='disabled'), 'one-session-per-host': KeyInfo(default=False), 'use-ipsec': KeyInfo(default=False), }, ), ), ('interface', 'ovpn-client'): APIData( unversioned=VersionedAPIData( primary_keys=('name', ), fully_understood=True, fields={ 'add-default-route': KeyInfo(default=False), 'auth': KeyInfo(default='sha1'), 'certificate': KeyInfo(), 'cipher': KeyInfo(default='blowfish128'), 'comment': KeyInfo(can_disable=True, remove_value=''), 'connect-to': KeyInfo(), 'disabled': KeyInfo(default=True), 'disconnect-notify': KeyInfo(), 'mac-address': KeyInfo(), 'max-mtu': KeyInfo(default=1500), 'mode': KeyInfo(default='ip'), 'name': KeyInfo(), 'password': KeyInfo(), 'port': KeyInfo(default=1194), 'profile': KeyInfo(default='default'), 'protocol': KeyInfo(default='tcp'), 'route-nopull': KeyInfo(default=False), 'tls-version': KeyInfo(default='any'), 'use-peer-dns': KeyInfo(default=True), 'user': KeyInfo(), 'verify-server-certificate': KeyInfo(default=False), }, ), ), ('interface', 'ovpn-server', 'server'): APIData( unversioned=VersionedAPIData( single_value=True, fully_understood=True, fields={ 'auth': KeyInfo(), 'cipher': KeyInfo(), 'default-profile': KeyInfo(default='default'), 'enabled': KeyInfo(default=False), 'keepalive-timeout': KeyInfo(default=60), 'mac-address': KeyInfo(), 'max-mtu': KeyInfo(default=1500), 'mode': KeyInfo(default='ip'), 'netmask': KeyInfo(default=24), 'port': KeyInfo(default=1194), 'require-client-certificate': KeyInfo(default=False), }, ), ), ('interface', 'pppoe-server', 'server'): APIData( unversioned=VersionedAPIData( fully_understood=True, primary_keys=('interface', ), fields={ 'accept-empty-service': KeyInfo(default=True), 'authentication': KeyInfo(default='pap,chap,mschap1,mschap2'), 'comment': KeyInfo(can_disable=True, remove_value=''), 'default-profile': KeyInfo(default='default'), 'disabled': KeyInfo(default=True), 'interface': KeyInfo(required=True), 'keepalive-timeout': KeyInfo(default=10), 'max-mru': KeyInfo(default='auto'), 'max-mtu': KeyInfo(default='auto'), 'max-sessions': KeyInfo(default='unlimited'), 'mrru': KeyInfo(default='disabled'), 'one-session-per-host': KeyInfo(default=False), 'pado-delay': KeyInfo(default=0), 'service-name': KeyInfo(default=''), }, ), ), ('interface', 'pptp-server', 'server'): APIData( unversioned=VersionedAPIData( single_value=True, fully_understood=True, fields={ 'authentication': KeyInfo(default='mschap1,mschap2'), 'default-profile': KeyInfo(default='default-encryption'), 'enabled': KeyInfo(default=False), 'keepalive-timeout': KeyInfo(default=30), 'max-mru': KeyInfo(default=1450), 'max-mtu': KeyInfo(default=1450), 'mrru': KeyInfo(default='disabled'), }, ), ), ('interface', 'sstp-server', 'server'): APIData( unversioned=VersionedAPIData( single_value=True, fully_understood=True, fields={ 'authentication': KeyInfo(default='pap,chap,mschap1,mschap2'), 'certificate': KeyInfo(default='none'), 'default-profile': KeyInfo(default='default'), 'enabled': KeyInfo(default=False), 'force-aes': KeyInfo(default=False), 'keepalive-timeout': KeyInfo(default=60), 'max-mru': KeyInfo(default=1500), 'max-mtu': KeyInfo(default=1500), 'mrru': KeyInfo(default='disabled'), 'pfs': KeyInfo(default=False), 'port': KeyInfo(default=443), 'tls-version': KeyInfo(default='any'), 'verify-client-certificate': KeyInfo(default='no'), }, ), ), ('interface', 'wifi'): APIData( versioned=[ ('7.13', '>=', VersionedAPIData( fully_understood=True, primary_keys=('name', ), required_one_of=[['default-name', 'radio-mac', 'master-interface']], fields={ 'aaa.called-format': KeyInfo(can_disable=True), 'aaa.calling-format': KeyInfo(can_disable=True), 'aaa.interim-update': KeyInfo(can_disable=True), 'aaa.mac-caching': KeyInfo(can_disable=True), 'aaa.nas-identifier': KeyInfo(can_disable=True), 'aaa.password-format': KeyInfo(can_disable=True), 'aaa.username-format': KeyInfo(can_disable=True), 'aaa': KeyInfo(can_disable=True), 'arp-timeout': KeyInfo(default='auto'), 'arp': KeyInfo(can_disable=True), 'channel.band': KeyInfo(can_disable=True), 'channel.frequency': KeyInfo(can_disable=True), 'channel.secondary-frequency': KeyInfo(can_disable=True), 'channel.skip-dfs-channels': KeyInfo(can_disable=True), 'channel.width': KeyInfo(can_disable=True), 'channel': KeyInfo(can_disable=True), 'comment': KeyInfo(can_disable=True, remove_value=''), 'configuration.antenna-gain': KeyInfo(can_disable=True), 'configuration.beacon-interval': KeyInfo(can_disable=True), 'configuration.chains': KeyInfo(can_disable=True), 'configuration.country': KeyInfo(can_disable=True), 'configuration.dtim-period': KeyInfo(can_disable=True), 'configuration.hide-ssid': KeyInfo(can_disable=True), 'configuration.manager': KeyInfo(can_disable=True), 'configuration.mode': KeyInfo(can_disable=True), 'configuration.multicast-enhance': KeyInfo(can_disable=True), 'configuration.qos-classifier': KeyInfo(can_disable=True), 'configuration.ssid': KeyInfo(can_disable=True), 'configuration.tx-chain': KeyInfo(can_disable=True), 'configuration.tx-power': KeyInfo(can_disable=True), 'configuration': KeyInfo(can_disable=True), 'datapath.bridge-cost': KeyInfo(can_disable=True), 'datapath.bridge-horizon': KeyInfo(can_disable=True), 'datapath.bridge': KeyInfo(can_disable=True), 'datapath.client-isolation': KeyInfo(can_disable=True), 'datapath.interface-list': KeyInfo(can_disable=True), 'datapath.vlan-id': KeyInfo(can_disable=True), 'datapath': KeyInfo(can_disable=True), 'default-name': KeyInfo(), 'disable-running-check': KeyInfo(can_disable=True), 'disabled': KeyInfo(default=True), 'interworking.3gpp-info': KeyInfo(can_disable=True), 'interworking.authentication-types': KeyInfo(can_disable=True), 'interworking.connection-capabilities': KeyInfo(can_disable=True), 'interworking.domain-names': KeyInfo(can_disable=True), 'interworking.esr': KeyInfo(can_disable=True), 'interworking.hessid': KeyInfo(can_disable=True), 'interworking.hotspot20-dgaf': KeyInfo(can_disable=True), 'interworking.hotspot20': KeyInfo(can_disable=True), 'interworking.internet': KeyInfo(can_disable=True), 'interworking.ipv4-availability': KeyInfo(can_disable=True), 'interworking.ipv6-availability': KeyInfo(can_disable=True), 'interworking.network-type': KeyInfo(can_disable=True), 'interworking.operational-classes': KeyInfo(can_disable=True), 'interworking.operator-names': KeyInfo(can_disable=True), 'interworking.realms': KeyInfo(can_disable=True), 'interworking.roaming-ois': KeyInfo(can_disable=True), 'interworking.uesa': KeyInfo(can_disable=True), 'interworking.venue-names': KeyInfo(can_disable=True), 'interworking.venue': KeyInfo(can_disable=True), 'interworking.wan-at-capacity': KeyInfo(can_disable=True), 'interworking.wan-downlink-load': KeyInfo(can_disable=True), 'interworking.wan-downlink': KeyInfo(can_disable=True), 'interworking.wan-measurement-duration': KeyInfo(can_disable=True), 'interworking.wan-status': KeyInfo(can_disable=True), 'interworking.wan-symmetric': KeyInfo(can_disable=True), 'interworking.wan-uplink-load': KeyInfo(can_disable=True), 'interworking.wan-uplink': KeyInfo(can_disable=True), 'interworking': KeyInfo(can_disable=True), 'l2mtu': KeyInfo(default=1560), 'mac-address': KeyInfo(), 'master-interface': KeyInfo(), 'mtu': KeyInfo(default=1500), 'name': KeyInfo(), 'radio-mac': KeyInfo(), 'security.authentication-types': KeyInfo(can_disable=True), 'security.connect-group': KeyInfo(can_disable=True), 'security.connect-priority': KeyInfo(can_disable=True), 'security.dh-groups': KeyInfo(can_disable=True), 'security.disable-pmkid': KeyInfo(can_disable=True), 'security.eap-accounting': KeyInfo(can_disable=True), 'security.eap-anonymous-identity': KeyInfo(can_disable=True), 'security.eap-certificate-mode': KeyInfo(can_disable=True), 'security.eap-methods': KeyInfo(can_disable=True), 'security.eap-password': KeyInfo(can_disable=True), 'security.eap-tls-certificate': KeyInfo(can_disable=True), 'security.eap-username': KeyInfo(can_disable=True), 'security.encryption': KeyInfo(can_disable=True), 'security.ft-mobility-domain': KeyInfo(can_disable=True), 'security.ft-nas-identifier': KeyInfo(can_disable=True), 'security.ft-over-ds': KeyInfo(can_disable=True), 'security.ft-preserve-vlanid': KeyInfo(can_disable=True), 'security.ft-r0-key-lifetime': KeyInfo(can_disable=True), 'security.ft-reassociation-deadline': KeyInfo(can_disable=True), 'security.ft': KeyInfo(can_disable=True), 'security.group-encryption': KeyInfo(can_disable=True), 'security.group-key-update': KeyInfo(can_disable=True), 'security.management-encryption': KeyInfo(can_disable=True), 'security.management-protection': KeyInfo(can_disable=True), 'security.owe-transition-interface': KeyInfo(can_disable=True), 'security.passphrase': KeyInfo(can_disable=True), 'security.sae-anti-clogging-threshold': KeyInfo(can_disable=True), 'security.sae-max-failure-rate': KeyInfo(can_disable=True), 'security.sae-pwe': KeyInfo(can_disable=True), 'security.wps': KeyInfo(can_disable=True), 'security': KeyInfo(can_disable=True), 'steering.neighbor-group': KeyInfo(can_disable=True), 'steering.rrm': KeyInfo(can_disable=True), 'steering.wnm': KeyInfo(can_disable=True), 'steering': KeyInfo(can_disable=True), }, )), ], ), ('interface', 'wifi', 'aaa'): APIData( versioned=[ ('7.13', '>=', VersionedAPIData( fully_understood=True, primary_keys=('name', ), fields={ 'called-format': KeyInfo(can_disable=True), 'calling-format': KeyInfo(can_disable=True), 'comment': KeyInfo(can_disable=True, remove_value=''), 'disabled': KeyInfo(default=False), 'interim-update': KeyInfo(can_disable=True), 'mac-caching': KeyInfo(can_disable=True), 'name': KeyInfo(), 'nas-identifier': KeyInfo(can_disable=True), 'password-format': KeyInfo(can_disable=True), 'username-format': KeyInfo(can_disable=True), }, )), ], ), ('interface', 'wifi', 'access-list'): APIData( versioned=[ ('7.13', '>=', VersionedAPIData( fully_understood=True, fields={ 'action': KeyInfo(default='accept'), 'allow-signal-out-of-range': KeyInfo(can_disable=True), 'client-isolation': KeyInfo(can_disable=True), 'comment': KeyInfo(can_disable=True, remove_value=''), 'disabled': KeyInfo(default=False), 'interface': KeyInfo(can_disable=True), 'mac-address-mask': KeyInfo(can_disable=True), 'mac-address': KeyInfo(can_disable=True), 'passphrase': KeyInfo(can_disable=True), 'radius-accounting': KeyInfo(can_disable=True), 'signal-range': KeyInfo(can_disable=True), 'ssid-regexp': KeyInfo(can_disable=True), 'time': KeyInfo(can_disable=True), 'vlan-id': KeyInfo(can_disable=True), }, )), ], ), ('interface', 'wifi', 'cap'): APIData( versioned=[ ('7.13', '>=', VersionedAPIData( single_value=True, fully_understood=True, fields={ 'caps-man-addresses': KeyInfo(default=''), 'caps-man-certificate-common-names': KeyInfo(default=''), 'caps-man-names': KeyInfo(default=''), 'certificate': KeyInfo(default='none'), 'discovery-interfaces': KeyInfo(default=''), 'enabled': KeyInfo(default=False), 'lock-to-caps-man': KeyInfo(default=False), 'slaves-datapath': KeyInfo(), 'slaves-static': KeyInfo(), }, )), ], ), ('interface', 'wifi', 'capsman'): APIData( versioned=[ ('7.13', '>=', VersionedAPIData( single_value=True, fully_understood=True, fields={ 'ca-certificate': KeyInfo(default=''), 'certificate': KeyInfo(default='none'), 'enabled': KeyInfo(default=False), 'interfaces': KeyInfo(default=''), 'package-path': KeyInfo(default=''), 'require-peer-certificate': KeyInfo(default=False), 'upgrade-policy': KeyInfo(default='none'), }, )), ], ), ('interface', 'wifi', 'channel'): APIData( versioned=[ ('7.13', '>=', VersionedAPIData( fully_understood=True, primary_keys=('name', ), fields={ 'band': KeyInfo(can_disable=True), 'comment': KeyInfo(can_disable=True, remove_value=''), 'disabled': KeyInfo(default=False), 'frequency': KeyInfo(can_disable=True), 'name': KeyInfo(), 'secondary-frequency': KeyInfo(can_disable=True), 'skip-dfs-channels': KeyInfo(can_disable=True), 'width': KeyInfo(can_disable=True), }, )), ], ), ('interface', 'wifi', 'configuration'): APIData( versioned=[ ('7.13', '>=', VersionedAPIData( fully_understood=True, primary_keys=('name', ), fields={ 'aaa': KeyInfo(can_disable=True), 'antenna-gain': KeyInfo(can_disable=True), 'beacon-interval': KeyInfo(can_disable=True), 'chains': KeyInfo(can_disable=True), 'channel': KeyInfo(can_disable=True), 'comment': KeyInfo(can_disable=True, remove_value=''), 'country': KeyInfo(can_disable=True), 'datapath': KeyInfo(can_disable=True), 'disabled': KeyInfo(default=False), 'dtim-period': KeyInfo(can_disable=True), 'hide-ssid': KeyInfo(default=False), 'interworking': KeyInfo(can_disable=True), 'manager': KeyInfo(can_disable=True), 'mode': KeyInfo(can_disable=True), 'multicast-enhance': KeyInfo(can_disable=True), 'name': KeyInfo(), 'qos-classifier': KeyInfo(can_disable=True), 'security': KeyInfo(can_disable=True), 'ssid': KeyInfo(can_disable=True), 'steering': KeyInfo(can_disable=True), 'tx-chains': KeyInfo(can_disable=True), 'tx-power': KeyInfo(can_disable=True), }, )), ], ), ('interface', 'wifi', 'datapath'): APIData( versioned=[ ('7.13', '>=', VersionedAPIData( fully_understood=True, primary_keys=('name', ), fields={ 'bridge-cost': KeyInfo(can_disable=True), 'bridge-horizon': KeyInfo(can_disable=True), 'bridge': KeyInfo(can_disable=True), 'client-isolation': KeyInfo(can_disable=True), 'comment': KeyInfo(can_disable=True, remove_value=''), 'disabled': KeyInfo(default=False), 'interface-list': KeyInfo(can_disable=True), 'name': KeyInfo(), 'vlan-id': KeyInfo(can_disable=True), }, )), ], ), ('interface', 'wifi', 'interworking'): APIData( versioned=[ ('7.13', '>=', VersionedAPIData( fully_understood=True, primary_keys=('name', ), fields={ '3gpp-info': KeyInfo(can_disable=True), 'authentication-types': KeyInfo(can_disable=True), 'comment': KeyInfo(can_disable=True, remove_value=''), 'connection-capabilities': KeyInfo(can_disable=True), 'disabled': KeyInfo(default=False), 'domain-names': KeyInfo(can_disable=True), 'esr': KeyInfo(can_disable=True), 'hessid': KeyInfo(can_disable=True), 'hotspot20-dgaf': KeyInfo(can_disable=True), 'hotspot20': KeyInfo(can_disable=True), 'internet': KeyInfo(can_disable=True), 'ipv4-availability': KeyInfo(can_disable=True), 'ipv6-availability': KeyInfo(can_disable=True), 'name': KeyInfo(), 'network-type': KeyInfo(can_disable=True), 'operational-classes': KeyInfo(can_disable=True), 'operator-names': KeyInfo(can_disable=True), 'realms': KeyInfo(can_disable=True), 'roaming-ois': KeyInfo(can_disable=True), 'uesa': KeyInfo(can_disable=True), 'venue-names': KeyInfo(can_disable=True), 'venue': KeyInfo(can_disable=True), 'wan-at-capacity': KeyInfo(can_disable=True), 'wan-downlink-load': KeyInfo(can_disable=True), 'wan-downlink': KeyInfo(can_disable=True), 'wan-measurement-duration': KeyInfo(can_disable=True), 'wan-status': KeyInfo(can_disable=True), 'wan-symmetric': KeyInfo(can_disable=True), 'wan-uplink-load': KeyInfo(can_disable=True), 'wan-uplink': KeyInfo(can_disable=True), }, )), ], ), ('interface', 'wifi', 'provisioning'): APIData( versioned=[ ('7.13', '>=', VersionedAPIData( fully_understood=True, primary_keys=('action', ), fields={ 'action': KeyInfo(default='none'), 'address-ranges': KeyInfo(can_disable=True), 'comment': KeyInfo(can_disable=True, remove_value=''), 'common-name-regexp': KeyInfo(can_disable=True), 'disabled': KeyInfo(default=False), 'identity-regexp': KeyInfo(can_disable=True), 'master-configuration': KeyInfo(can_disable=True), 'name-format': KeyInfo(can_disable=True), 'radio-mac': KeyInfo(can_disable=True), 'slave-configurations': KeyInfo(can_disable=True), 'supported-bands': KeyInfo(can_disable=True), }, )), ], ), ('interface', 'wifi', 'security'): APIData( versioned=[ ('7.13', '>=', VersionedAPIData( fully_understood=True, primary_keys=('name', ), fields={ 'authentication-types': KeyInfo(can_disable=True), 'comment': KeyInfo(can_disable=True, remove_value=''), 'connect-group': KeyInfo(can_disable=True), 'connect-priority': KeyInfo(can_disable=True), 'dh-groups': KeyInfo(can_disable=True), 'disable-pmkid': KeyInfo(can_disable=True), 'disabled': KeyInfo(default=False), 'eap-accounting': KeyInfo(can_disable=True), 'eap-anonymous-identity': KeyInfo(can_disable=True), 'eap-certificate-mode': KeyInfo(can_disable=True), 'eap-methods': KeyInfo(can_disable=True), 'eap-password': KeyInfo(can_disable=True), 'eap-tls-certificate': KeyInfo(can_disable=True), 'eap-username': KeyInfo(can_disable=True), 'encryption': KeyInfo(can_disable=True), 'ft-mobility-domain': KeyInfo(can_disable=True), 'ft-nas-identifier': KeyInfo(can_disable=True), 'ft-over-ds': KeyInfo(can_disable=True), 'ft-preserve-vlanid': KeyInfo(can_disable=True), 'ft-r0-key-lifetime': KeyInfo(can_disable=True), 'ft-reassociation-deadline': KeyInfo(can_disable=True), 'ft': KeyInfo(can_disable=True), 'group-encryption': KeyInfo(can_disable=True), 'group-key-update': KeyInfo(can_disable=True), 'management-encryption': KeyInfo(can_disable=True), 'management-protection': KeyInfo(can_disable=True), 'name': KeyInfo(), 'owe-transition-interface': KeyInfo(can_disable=True), 'passphrase': KeyInfo(can_disable=True), 'sae-anti-clogging-threshold': KeyInfo(can_disable=True), 'sae-max-failure-rate': KeyInfo(can_disable=True), 'sae-pwe': KeyInfo(can_disable=True), 'wps': KeyInfo(can_disable=True), }, )), ], ), ('interface', 'wifi', 'steering'): APIData( versioned=[ ('7.13', '>=', VersionedAPIData( fully_understood=True, primary_keys=('name', ), fields={ 'comment': KeyInfo(can_disable=True, remove_value=''), 'disabled': KeyInfo(default=False), 'name': KeyInfo(), 'neighbor-group': KeyInfo(can_disable=True), 'rrm': KeyInfo(can_disable=True), 'wnm': KeyInfo(can_disable=True), }, )), ], ), ('interface', 'wifiwave2'): APIData( versioned=[ ('7.13', '>=', 'RouterOS 7.13 uses WiFi package'), ('7.8', '>=', VersionedAPIData( fully_understood=True, primary_keys=('name', ), required_one_of=[['default-name', 'master-interface']], fields={ 'aaa': KeyInfo(), 'arp-timeout': KeyInfo(default='auto'), 'arp': KeyInfo(default='enabled'), 'channel': KeyInfo(), 'configuration': KeyInfo(), 'datapath': KeyInfo(), 'default-name': KeyInfo(), 'disable-running-check': KeyInfo(default=False), 'interworking': KeyInfo(), 'l2mtu': KeyInfo(default=1600), 'mac-address': KeyInfo(), 'master-interface': KeyInfo(), 'mtu': KeyInfo(default=1500), 'name': KeyInfo(), 'security': KeyInfo(), 'steering': KeyInfo(), }, )), ], ), ('interface', 'wifiwave2', 'aaa'): APIData( versioned=[ ('7.13', '>=', 'RouterOS 7.13 uses WiFi package'), ('7.8', '>=', VersionedAPIData( fully_understood=True, primary_keys=('name', ), fields={ 'called-format': KeyInfo(can_disable=True), 'calling-format': KeyInfo(can_disable=True), 'comment': KeyInfo(can_disable=True, remove_value=''), 'disabled': KeyInfo(default=True), 'interim-update': KeyInfo(can_disable=True), 'mac-caching': KeyInfo(can_disable=True), 'name': KeyInfo(), 'nas-identifier': KeyInfo(can_disable=True), 'password-format': KeyInfo(can_disable=True), 'username-format': KeyInfo(can_disable=True), }, )), ], ), ('interface', 'wifiwave2', 'access-list'): APIData( versioned=[ ('7.13', '>=', 'RouterOS 7.13 uses WiFi package'), ('7.8', '>=', VersionedAPIData( fully_understood=True, fields={ 'action': KeyInfo(can_disable=True), 'allow-signal-out-of-range': KeyInfo(can_disable=True), 'client-isolation': KeyInfo(can_disable=True), 'comment': KeyInfo(can_disable=True, remove_value=''), 'disabled': KeyInfo(default=True), 'interface': KeyInfo(can_disable=True), 'mac-address': KeyInfo(can_disable=True), 'mac-address-mask': KeyInfo(can_disable=True), 'passphrase': KeyInfo(can_disable=True), 'radius-accounting': KeyInfo(can_disable=True), 'signal-range': KeyInfo(can_disable=True), 'ssid-regexp': KeyInfo(), 'time': KeyInfo(can_disable=True), 'vlan-id': KeyInfo(can_disable=True), }, )), ], ), ('interface', 'wifiwave2', 'cap'): APIData( versioned=[ ('7.13', '>=', 'RouterOS 7.13 uses WiFi package'), ('7.8', '>=', VersionedAPIData( single_value=True, fully_understood=True, fields={ 'caps-man-addresses': KeyInfo(default=''), 'caps-man-certificate-common-names': KeyInfo(default=''), 'caps-man-names': KeyInfo(default=''), 'certificate': KeyInfo(default='none'), 'discovery-interfaces': KeyInfo(default=''), 'enabled': KeyInfo(default=False), 'lock-to-caps-man': KeyInfo(default=False), 'slaves-datapath': KeyInfo(), 'slaves-static': KeyInfo(), }, )), ], ), ('interface', 'wifiwave2', 'capsman'): APIData( versioned=[ ('7.13', '>=', 'RouterOS 7.13 uses WiFi package'), ('7.8', '>=', VersionedAPIData( single_value=True, fully_understood=True, fields={ 'ca-certificate': KeyInfo(default=''), 'certificate': KeyInfo(default='none'), 'enabled': KeyInfo(default=False), 'package-path': KeyInfo(default=''), 'require-peer-certificate': KeyInfo(default=False), 'upgrade-policy': KeyInfo(default='none'), 'interfaces': KeyInfo(default=''), }, )), ], ), ('interface', 'wifiwave2', 'channel'): APIData( versioned=[ ('7.13', '>=', 'RouterOS 7.13 uses WiFi package'), ('7.8', '>=', VersionedAPIData( fully_understood=True, primary_keys=('name', ), fields={ 'band': KeyInfo(), 'frequency': KeyInfo(), 'name': KeyInfo(), 'secondary-frequency': KeyInfo(), 'skip-dfs-channels': KeyInfo(default='disabled'), 'width': KeyInfo(), }, )), ], ), ('interface', 'wifiwave2', 'configuration'): APIData( versioned=[ ('7.13', '>=', 'RouterOS 7.13 uses WiFi package'), ('7.8', '>=', VersionedAPIData( fully_understood=True, primary_keys=('name', ), fields={ 'aaa': KeyInfo(), 'antenna-gain': KeyInfo(), 'beacon-interval': KeyInfo(default=100), 'chains': KeyInfo(), 'channel': KeyInfo(), 'country': KeyInfo(default='United States'), 'datapath': KeyInfo(), 'dtim-period': KeyInfo(default=1), 'hide-ssid': KeyInfo(default=False), 'interworking': KeyInfo(), 'manager': KeyInfo(), 'mode': KeyInfo(default='ap'), 'name': KeyInfo(), 'security': KeyInfo(), 'ssid': KeyInfo(), 'steering': KeyInfo(), 'tx-chains': KeyInfo(), 'tx-power': KeyInfo(), }, )), ], ), ('interface', 'wifiwave2', 'datapath'): APIData( versioned=[ ('7.13', '>=', 'RouterOS 7.13 uses WiFi package'), ('7.8', '>=', VersionedAPIData( fully_understood=True, primary_keys=('name', ), fields={ 'bridge': KeyInfo(), 'bridge-cost': KeyInfo(), 'bridge-horizon': KeyInfo(), 'client-isolation': KeyInfo(default=False), 'interface-list': KeyInfo(), 'name': KeyInfo(), 'openflow-switch': KeyInfo(), 'vlan-id': KeyInfo(), }, )), ], ), ('interface', 'wifiwave2', 'interworking'): APIData( versioned=[ ('7.13', '>=', 'RouterOS 7.13 uses WiFi package'), ('7.8', '>=', VersionedAPIData( fully_understood=True, primary_keys=('name', ), fields={ '3gpp-info': KeyInfo(), 'authentication-types': KeyInfo(), 'comment': KeyInfo(can_disable=True, remove_value=''), 'connection-capabilities': KeyInfo(), 'disabled': KeyInfo(default=False), 'domain-names': KeyInfo(), 'esr': KeyInfo(), 'hessid': KeyInfo(), 'hotspot20': KeyInfo(), 'hotspot20-dgaf': KeyInfo(), 'internet': KeyInfo(), 'ipv4-availability': KeyInfo(), 'ipv6-availability': KeyInfo(), 'name': KeyInfo(), 'network-type': KeyInfo(), 'operational-classes': KeyInfo(), 'operator-names': KeyInfo(), 'realms': KeyInfo(), 'roaming-ois': KeyInfo(), 'uesa': KeyInfo(), 'venue': KeyInfo(), 'venue-names': KeyInfo(), 'wan-at-capacity': KeyInfo(), 'wan-downlink': KeyInfo(), 'wan-downlink-load': KeyInfo(), 'wan-measurement-duration': KeyInfo(), 'wan-status': KeyInfo(), 'wan-symmetric': KeyInfo(), 'wan-uplink': KeyInfo(), 'wan-uplink-load': KeyInfo(), }, )), ], ), ('interface', 'wifiwave2', 'provisioning'): APIData( versioned=[ ('7.13', '>=', 'RouterOS 7.13 uses WiFi package'), ('7.8', '>=', VersionedAPIData( fully_understood=True, primary_keys=('action', ), fields={ 'action': KeyInfo(default='none'), 'address-ranges': KeyInfo(), 'comment': KeyInfo(can_disable=True, remove_value=''), 'common-name-regexp': KeyInfo(), 'disabled': KeyInfo(default=False), 'identity-regexp': KeyInfo(), 'master-configuration': KeyInfo(), 'name-format': KeyInfo(), 'radio-mac': KeyInfo(), 'slave-configurations': KeyInfo(), 'supported-bands': KeyInfo(), }, )), ], ), ('interface', 'wifiwave2', 'security'): APIData( versioned=[ ('7.13', '>=', 'RouterOS 7.13 uses WiFi package'), ('7.8', '>=', VersionedAPIData( fully_understood=True, primary_keys=('name', ), fields={ 'authentication-types': KeyInfo(), 'connect-group': KeyInfo(can_disable=True), 'connect-priority': KeyInfo(), 'dh-groups': KeyInfo(), 'disable-pmkid': KeyInfo(default=False), 'eap-accounting': KeyInfo(default=False), 'eap-anonymous-identity': KeyInfo(), 'eap-certificate-mode': KeyInfo(default='dont-verify-certificate'), 'eap-methods': KeyInfo(), 'eap-password': KeyInfo(), 'eap-tls-certificate': KeyInfo(), 'eap-username': KeyInfo(), 'encryption': KeyInfo(default='ccmp'), 'ft-mobility-domain': KeyInfo(default=0xADC4), 'ft-nas-identifier': KeyInfo(), 'ft-over-ds': KeyInfo(default=False), 'ft-preserve-vlanid': KeyInfo(default=True), 'ft-r0-key-lifetime': KeyInfo(default='600000s'), 'ft-reassociation-deadline': KeyInfo(default='20s'), 'ft': KeyInfo(default=False), 'group-encryption': KeyInfo(default='ccmp'), 'group-key-update': KeyInfo(default='24h'), 'management-encryption': KeyInfo(default='cmac'), 'management-protection': KeyInfo(), 'name': KeyInfo(), 'owe-transition-interface': KeyInfo(), 'passphrase': KeyInfo(default=''), 'sae-anti-clogging-threshold': KeyInfo(can_disable=True), 'sae-max-failure-rate': KeyInfo(can_disable=True), 'sae-pwe': KeyInfo(default='both'), 'wps': KeyInfo(default='push-button'), }, )), ], ), ('interface', 'wifiwave2', 'steering'): APIData( versioned=[ ('7.13', '>=', 'RouterOS 7.13 uses WiFi package'), ('7.8', '>=', VersionedAPIData( fully_understood=True, primary_keys=('name', ), fields={ 'comment': KeyInfo(can_disable=True, remove_value=''), 'disabled': KeyInfo(default=False), 'name': KeyInfo(), 'neighbor-group': KeyInfo(), 'rrm': KeyInfo(), 'wnm': KeyInfo(), }, )), ], ), ('interface', 'wireguard'): APIData( unversioned=VersionedAPIData( fully_understood=True, primary_keys=('name', ), fields={ 'comment': KeyInfo(can_disable=True, remove_value=''), 'disabled': KeyInfo(default=False), 'listen-port': KeyInfo(), 'mtu': KeyInfo(default=1420), 'name': KeyInfo(), 'private-key': KeyInfo(), }, ), ), ('interface', 'wireguard', 'peers'): APIData( unversioned=VersionedAPIData( fully_understood=True, primary_keys=('public-key', 'interface'), fields={ 'allowed-address': KeyInfo(required=True), 'comment': KeyInfo(can_disable=True, remove_value=''), 'disabled': KeyInfo(default=False), 'endpoint-address': KeyInfo(default=''), 'endpoint-port': KeyInfo(default=0), 'interface': KeyInfo(), 'persistent-keepalive': KeyInfo(can_disable=True, remove_value=0), 'preshared-key': KeyInfo(can_disable=True, remove_value=''), 'public-key': KeyInfo(), }, ), ), ('interface', 'wireless'): APIData( unversioned=VersionedAPIData( fully_understood=True, primary_keys=('name', ), required_one_of=[['default-name', 'master-interface']], fields={ 'adaptive-noise-immunity': KeyInfo(default='none'), 'allow-sharedkey': KeyInfo(default=False), 'ampdu-priorities': KeyInfo(default=0), 'amsdu-limit': KeyInfo(default=8192), 'amsdu-threshold': KeyInfo(default=8192), 'antenna-gain': KeyInfo(default=0), 'antenna-mode': KeyInfo(), 'area': KeyInfo(default=''), 'arp': KeyInfo(default='enabled'), 'arp-timeout': KeyInfo(default='auto'), 'band': KeyInfo(), 'basic-rates-a/g': KeyInfo(default='6Mbps'), 'basic-rates-b': KeyInfo(default='1Mbps'), 'bridge-mode': KeyInfo(default='enabled'), 'channel-width': KeyInfo(default='20mhz'), 'comment': KeyInfo(can_disable=True, remove_value=''), 'compression': KeyInfo(default=False), 'country': KeyInfo(default='etsi'), 'default-ap-tx-limit': KeyInfo(default=0), 'default-authentication': KeyInfo(default=True), 'default-client-tx-limit': KeyInfo(default=0), 'default-forwarding': KeyInfo(default=True), 'default-name': KeyInfo(), 'disable-running-check': KeyInfo(default=False), 'disabled': KeyInfo(default=True), 'disconnect-timeout': KeyInfo(default='3s'), 'distance': KeyInfo(default='dynamic'), 'frame-lifetime': KeyInfo(default=0), 'frequency': KeyInfo(), 'frequency-mode': KeyInfo(default='regulatory-domain'), 'frequency-offset': KeyInfo(default=0), 'guard-interval': KeyInfo(default='any'), 'hide-ssid': KeyInfo(default=False), 'ht-basic-mcs': KeyInfo(), 'ht-supported-mcs': KeyInfo(), 'hw-fragmentation-threshold': KeyInfo(default='disabled'), 'hw-protection-mode': KeyInfo(default='none'), 'hw-protection-threshold': KeyInfo(default=0), 'hw-retries': KeyInfo(default=7), 'installation': KeyInfo(default='any'), 'interworking-profile': KeyInfo(default='disabled'), 'keepalive-frames': KeyInfo(default='enabled'), 'l2mtu': KeyInfo(default=1600), 'mac-address': KeyInfo(), 'master-interface': KeyInfo(), 'max-station-count': KeyInfo(default=2007), 'mode': KeyInfo(default='ap-bridge'), 'mtu': KeyInfo(default=1500), 'multicast-buffering': KeyInfo(default='enabled'), 'multicast-helper': KeyInfo(default='default'), 'name': KeyInfo(), 'noise-floor-threshold': KeyInfo(default='default'), 'nv2-cell-radius': KeyInfo(default=30), 'nv2-downlink-ratio': KeyInfo(default=50), 'nv2-mode': KeyInfo(default='dynamic-downlink'), 'nv2-noise-floor-offset': KeyInfo(default='default'), 'nv2-preshared-key': KeyInfo(default=''), 'nv2-qos': KeyInfo(default='default'), 'nv2-queue-count': KeyInfo(default=2), 'nv2-security': KeyInfo(default='disabled'), 'nv2-sync-secret': KeyInfo(default=''), 'on-fail-retry-time': KeyInfo(default='100ms'), 'preamble-mode': KeyInfo(default='both'), 'radio-name': KeyInfo(), 'rate-selection': KeyInfo(default='advanced'), 'rate-set': KeyInfo(default='default'), 'running': KeyInfo(read_only=True), 'rx-chains': KeyInfo(default='0,1'), 'scan-list': KeyInfo(default='default'), 'secondary-frequency': KeyInfo(default=''), 'security-profile': KeyInfo(default='default'), 'skip-dfs-channels': KeyInfo(default='disabled'), 'ssid': KeyInfo(required=True), 'station-bridge-clone-mac': KeyInfo(), 'station-roaming': KeyInfo(default='disabled'), 'supported-rates-a/g': KeyInfo(), 'supported-rates-b': KeyInfo(), 'tdma-period-size': KeyInfo(default=2), 'tx-chains': KeyInfo(), 'tx-power': KeyInfo(default=''), 'tx-power-mode': KeyInfo(default='default'), 'update-stats-interval': KeyInfo(default='disabled'), 'vlan-id': KeyInfo(default=1), 'vlan-mode': KeyInfo(default='no-tag'), 'wds-cost-range': KeyInfo(default='50-150'), 'wds-default-bridge': KeyInfo(default='none'), 'wds-default-cost': KeyInfo(default=100), 'wds-ignore-ssid': KeyInfo(default=False), 'wds-mode': KeyInfo(default='disabled'), 'wireless-protocol': KeyInfo(default='any'), 'wmm-support': KeyInfo(default='disabled'), 'wps-mode': KeyInfo(default='push-button'), }, ), ), ('interface', 'wireless', 'align'): APIData( unversioned=VersionedAPIData( single_value=True, fully_understood=True, fields={ 'active-mode': KeyInfo(default=True), 'audio-max': KeyInfo(default=-20), 'audio-min': KeyInfo(default=-100), 'audio-monitor': KeyInfo(default='00:00:00:00:00:00'), 'filter-mac': KeyInfo(default='00:00:00:00:00:00'), 'frame-size': KeyInfo(default=300), 'frames-per-second': KeyInfo(default=25), 'receive-all': KeyInfo(default=False), 'ssid-all': KeyInfo(default=False), }, ), ), ('interface', 'wireless', 'cap'): APIData( unversioned=VersionedAPIData( single_value=True, fully_understood=True, fields={ 'bridge': KeyInfo(default='none'), 'caps-man-addresses': KeyInfo(default=''), 'caps-man-certificate-common-names': KeyInfo(default=''), 'caps-man-names': KeyInfo(default=''), 'certificate': KeyInfo(default='none'), 'discovery-interfaces': KeyInfo(default=''), 'enabled': KeyInfo(default=False), 'interfaces': KeyInfo(default=''), 'lock-to-caps-man': KeyInfo(default=False), 'static-virtual': KeyInfo(default=False), }, ), ), ('interface', 'wireless', 'security-profiles'): APIData( unversioned=VersionedAPIData( fully_understood=True, primary_keys=('name', ), fields={ 'authentication-types': KeyInfo(), 'disable-pmkid': KeyInfo(default=False), 'disabled': KeyInfo(default=True), 'eap-methods': KeyInfo(), 'group-ciphers': KeyInfo(), 'group-key-update': KeyInfo(default='5m'), 'interim-update': KeyInfo(), 'management-protection': KeyInfo(default='disabled'), 'management-protection-key': KeyInfo(default=''), 'mode': KeyInfo(default='none'), 'mschapv2-password': KeyInfo(default=''), 'mschapv2-username': KeyInfo(default=''), 'name': KeyInfo(), 'radius-called-format': KeyInfo(), 'radius-eap-accounting': KeyInfo(default=False), 'radius-mac-accounting': KeyInfo(default=False), 'radius-mac-authentication': KeyInfo(default=False), 'radius-mac-caching': KeyInfo(default='disabled'), 'radius-mac-format': KeyInfo(default='XX:XX:XX:XX:XX:XX'), 'radius-mac-mode': KeyInfo(default='as-username'), 'static-algo-0': KeyInfo(default='none'), 'static-algo-1': KeyInfo(default='none'), 'static-algo-2': KeyInfo(default='none'), 'static-algo-3': KeyInfo(default='none'), 'static-key-0': KeyInfo(), 'static-key-1': KeyInfo(), 'static-key-2': KeyInfo(), 'static-key-3': KeyInfo(), 'static-sta-private-algo': KeyInfo(default='none'), 'static-sta-private-key': KeyInfo(), 'static-transmit-key': KeyInfo(), 'supplicant-identity': KeyInfo(default='MikroTik'), 'tls-certificate': KeyInfo(default='none'), 'tls-mode': KeyInfo(), 'unicast-ciphers': KeyInfo(), 'wpa-pre-shared-key': KeyInfo(), 'wpa2-pre-shared-key': KeyInfo(), }, ), ), ('interface', 'wireless', 'sniffer'): APIData( unversioned=VersionedAPIData( single_value=True, fully_understood=True, fields={ 'channel-time': KeyInfo(default='200ms'), 'file-limit': KeyInfo(default=10), 'file-name': KeyInfo(default=''), 'memory-limit': KeyInfo(default=10), 'multiple-channels': KeyInfo(default=False), 'only-headers': KeyInfo(default=False), 'receive-errors': KeyInfo(default=False), 'streaming-enabled': KeyInfo(default=False), 'streaming-max-rate': KeyInfo(default=0), 'streaming-server': KeyInfo(default='0.0.0.0'), }, ), ), ('interface', 'wireless', 'snooper'): APIData( unversioned=VersionedAPIData( single_value=True, fully_understood=True, fields={ 'channel-time': KeyInfo(default='200ms'), 'multiple-channels': KeyInfo(default=True), 'receive-errors': KeyInfo(default=False), }, ), ), ('iot', 'modbus'): APIData( unversioned=VersionedAPIData( single_value=True, fully_understood=True, fields={ 'disabled': KeyInfo(default=True), 'hardware-port': KeyInfo(default='modbus'), 'tcp-port': KeyInfo(default=502), 'timeout': KeyInfo(default=1000), }, ), ), ('ip', 'accounting'): APIData( unversioned=VersionedAPIData( single_value=True, fully_understood=True, fields={ 'account-local-traffic': KeyInfo(default=False), 'enabled': KeyInfo(default=False), 'threshold': KeyInfo(default=256), }, ), ), ('ip', 'accounting', 'web-access'): APIData( unversioned=VersionedAPIData( single_value=True, fully_understood=True, fields={ 'accessible-via-web': KeyInfo(default=False), 'address': KeyInfo(default='0.0.0.0/0'), }, ), ), ('ip', 'address'): APIData( unversioned=VersionedAPIData( fully_understood=True, primary_keys=('address', 'interface', ), fields={ 'address': KeyInfo(), 'comment': KeyInfo(can_disable=True, remove_value=''), 'disabled': KeyInfo(default=False), 'interface': KeyInfo(), 'network': KeyInfo(automatically_computed_from=('address', )), }, ), ), ('ip', 'arp'): APIData( unversioned=VersionedAPIData( fully_understood=True, fields={ 'address': KeyInfo(default='0.0.0.0'), 'comment': KeyInfo(can_disable=True, remove_value=''), 'disabled': KeyInfo(default=False), 'interface': KeyInfo(required=True), 'mac-address': KeyInfo(default='00:00:00:00:00:00'), 'published': KeyInfo(default=False), }, ), ), ('ip', 'cloud'): APIData( unversioned=VersionedAPIData( single_value=True, fully_understood=True, fields={ 'ddns-enabled': KeyInfo(default=False), 'ddns-update-interval': KeyInfo(default='none'), 'update-time': KeyInfo(default=True), }, ), ), ('ip', 'cloud', 'advanced'): APIData( unversioned=VersionedAPIData( single_value=True, fully_understood=True, fields={ 'use-local-address': KeyInfo(default=False), }, ), ), ('ip', 'dhcp-client'): APIData( unversioned=VersionedAPIData( fully_understood=True, primary_keys=('interface', ), fields={ 'add-default-route': KeyInfo(default=True), 'comment': KeyInfo(can_disable=True, remove_value=''), 'default-route-distance': KeyInfo(default=1), 'dhcp-options': KeyInfo(default='hostname,clientid', can_disable=True, remove_value=''), 'disabled': KeyInfo(default=False), 'interface': KeyInfo(), 'script': KeyInfo(can_disable=True), 'use-peer-dns': KeyInfo(default=True), 'use-peer-ntp': KeyInfo(default=True), }, ), ), ('ip', 'dhcp-relay'): APIData( unversioned=VersionedAPIData( fully_understood=True, primary_keys=('name',), fields={ 'add-relay-info': KeyInfo(default=False), 'delay-threshold': KeyInfo(can_disable=True, remove_value='none'), 'dhcp-server': KeyInfo(required=True), 'disabled': KeyInfo(default=False), 'interface': KeyInfo(required=True), 'local-address': KeyInfo(can_disable=True, remove_value='0.0.0.0'), 'name': KeyInfo(), 'relay-info-remote-id': KeyInfo(), }, ), ), ('ip', 'dhcp-server'): APIData( unversioned=VersionedAPIData( fully_understood=True, primary_keys=('name', ), fields={ 'address-pool': KeyInfo(default='static-only'), 'allow-dual-stack-queue': KeyInfo(can_disable=True, remove_value=True), 'always-broadcast': KeyInfo(can_disable=True, remove_value=False), 'authoritative': KeyInfo(default=True), 'bootp-lease-time': KeyInfo(default='forever'), 'bootp-support': KeyInfo(can_disable=True, remove_value='static'), 'client-mac-limit': KeyInfo(can_disable=True, remove_value='unlimited'), 'comment': KeyInfo(can_disable=True, remove_value=''), 'conflict-detection': KeyInfo(can_disable=True, remove_value=True), 'delay-threshold': KeyInfo(can_disable=True, remove_value='none'), 'dhcp-option-set': KeyInfo(can_disable=True, remove_value='none'), 'disabled': KeyInfo(default=False), 'insert-queue-before': KeyInfo(can_disable=True, remove_value='first'), 'interface': KeyInfo(required=True), 'lease-script': KeyInfo(default=''), 'lease-time': KeyInfo(default='10m'), 'name': KeyInfo(), 'parent-queue': KeyInfo(can_disable=True, remove_value='none'), 'relay': KeyInfo(can_disable=True, remove_value='0.0.0.0'), 'server-address': KeyInfo(can_disable=True, remove_value='0.0.0.0'), 'use-framed-as-classless': KeyInfo(can_disable=True, remove_value=True), 'use-radius': KeyInfo(default=False), }, ), ), ('ip', 'dhcp-server', 'config'): APIData( unversioned=VersionedAPIData( single_value=True, fully_understood=True, fields={ 'accounting': KeyInfo(default=True), 'interim-update': KeyInfo(default='0s'), 'store-leases-disk': KeyInfo(default='5m'), }, ), ), ('ip', 'dhcp-server', 'lease'): APIData( unversioned=VersionedAPIData( fully_understood=True, primary_keys=('server', 'address', ), fields={ 'address': KeyInfo(), 'address-lists': KeyInfo(default=''), 'always-broadcast': KeyInfo(), 'client-id': KeyInfo(can_disable=True, remove_value=''), 'comment': KeyInfo(can_disable=True, remove_value=''), 'dhcp-option': KeyInfo(default=''), 'disabled': KeyInfo(default=False), 'insert-queue-before': KeyInfo(can_disable=True), 'mac-address': KeyInfo(can_disable=True, remove_value=''), 'server': KeyInfo(absent_value='all'), }, ), ), ('ip', 'dhcp-server', 'network'): APIData( unversioned=VersionedAPIData( fully_understood=True, primary_keys=('address', ), fields={ 'address': KeyInfo(), 'boot-file-name': KeyInfo(default=''), 'caps-manager': KeyInfo(default=''), 'comment': KeyInfo(can_disable=True, remove_value=''), 'dhcp-option': KeyInfo(default=''), 'dhcp-option-set': KeyInfo(default=''), 'dns-none': KeyInfo(default=False), 'dns-server': KeyInfo(default=''), 'domain': KeyInfo(default=''), 'gateway': KeyInfo(default=''), 'netmask': KeyInfo(can_disable=True, remove_value=0), 'next-server': KeyInfo(can_disable=True), 'ntp-server': KeyInfo(default=''), 'wins-server': KeyInfo(default=''), }, ), ), ('ip', 'dhcp-server', 'option'): APIData( unversioned=VersionedAPIData( fully_understood=True, primary_keys=('name',), fields={ 'code': KeyInfo(required=True), 'name': KeyInfo(), 'value': KeyInfo(default=''), 'force': KeyInfo(default=False), }, ), ), ('ip', 'dhcp-server', 'option', 'sets'): APIData( unversioned=VersionedAPIData( fully_understood=True, primary_keys=('name',), fields={ 'name': KeyInfo(required=True), 'options': KeyInfo(), }, ), ), ('ip', 'dhcp-server', 'matcher'): APIData( versioned=[ ('7.4', '>=', VersionedAPIData( fully_understood=True, primary_keys=('name', ), fields={ 'address-pool': KeyInfo(default='none'), 'code': KeyInfo(required=True), 'disabled': KeyInfo(default=False), 'name': KeyInfo(required=True), 'option-set': KeyInfo(), 'server': KeyInfo(default='all'), 'value': KeyInfo(required=True), }, )), ], ), ('ip', 'dns'): APIData( unversioned=VersionedAPIData( single_value=True, fully_understood=True, versioned_fields=[ ([('7.8', '>=')], 'doh-max-concurrent-queries', KeyInfo(default=50)), ([('7.8', '>=')], 'doh-max-server-connections', KeyInfo(default=5)), ([('7.8', '>=')], 'doh-timeout', KeyInfo(default='5s')), ], fields={ 'allow-remote-requests': KeyInfo(), 'cache-max-ttl': KeyInfo(default='1w'), 'cache-size': KeyInfo(default='2048KiB'), 'max-concurrent-queries': KeyInfo(default=100), 'max-concurrent-tcp-sessions': KeyInfo(default=20), 'max-udp-packet-size': KeyInfo(default=4096), 'query-server-timeout': KeyInfo(default='2s'), 'query-total-timeout': KeyInfo(default='10s'), 'servers': KeyInfo(default=''), 'use-doh-server': KeyInfo(default=''), 'verify-doh-cert': KeyInfo(default=False), }, ), ), ('ip', 'dns', 'static'): APIData( unversioned=VersionedAPIData( fully_understood=True, required_one_of=[['name', 'regexp']], mutually_exclusive=[['name', 'regexp']], versioned_fields=[ ([('7.5', '>=')], 'address-list', KeyInfo()), ([('7.5', '>=')], 'match-subdomain', KeyInfo(default=False)), ], fields={ 'address': KeyInfo(), 'cname': KeyInfo(), 'comment': KeyInfo(can_disable=True, remove_value=''), 'disabled': KeyInfo(default=False), 'forward-to': KeyInfo(), 'mx-exchange': KeyInfo(), 'mx-preference': KeyInfo(), 'name': KeyInfo(), 'ns': KeyInfo(), 'regexp': KeyInfo(), 'srv-port': KeyInfo(), 'srv-priority': KeyInfo(), 'srv-target': KeyInfo(), 'srv-weight': KeyInfo(), 'text': KeyInfo(), 'ttl': KeyInfo(default='1d'), 'type': KeyInfo(), }, ), ), ('ip', 'firewall', 'address-list'): APIData( unversioned=VersionedAPIData( fully_understood=True, primary_keys=('address', 'list', ), fields={ 'address': KeyInfo(), 'comment': KeyInfo(can_disable=True, remove_value=''), 'disabled': KeyInfo(default=False), 'list': KeyInfo(), }, ), ), ('ip', 'firewall', 'filter'): APIData( unversioned=VersionedAPIData( fully_understood=True, stratify_keys=('chain', ), fields={ 'action': KeyInfo(), 'address-list': KeyInfo(can_disable=True), 'address-list-timeout': KeyInfo(can_disable=True), 'chain': KeyInfo(), 'comment': KeyInfo(can_disable=True, remove_value=''), 'connection-bytes': KeyInfo(can_disable=True), 'connection-limit': KeyInfo(can_disable=True), 'connection-mark': KeyInfo(can_disable=True), 'connection-nat-state': KeyInfo(can_disable=True), 'connection-rate': KeyInfo(can_disable=True), 'connection-state': KeyInfo(can_disable=True), 'connection-type': KeyInfo(can_disable=True), 'content': KeyInfo(can_disable=True), 'disabled': KeyInfo(default=False), 'dscp': KeyInfo(can_disable=True), 'dst-address': KeyInfo(can_disable=True), 'dst-address-list': KeyInfo(can_disable=True), 'dst-address-type': KeyInfo(can_disable=True), 'dst-limit': KeyInfo(can_disable=True), 'dst-port': KeyInfo(can_disable=True), 'fragment': KeyInfo(can_disable=True), 'hotspot': KeyInfo(can_disable=True), 'hw-offload': KeyInfo(can_disable=True), 'icmp-options': KeyInfo(can_disable=True), 'in-bridge-port': KeyInfo(can_disable=True), 'in-bridge-port-list': KeyInfo(can_disable=True), 'in-interface': KeyInfo(can_disable=True), 'in-interface-list': KeyInfo(can_disable=True), 'ingress-priority': KeyInfo(can_disable=True), 'ipsec-policy': KeyInfo(can_disable=True), 'ipv4-options': KeyInfo(can_disable=True), 'jump-target': KeyInfo(can_disable=True), 'layer7-protocol': KeyInfo(can_disable=True), 'limit': KeyInfo(can_disable=True), 'log': KeyInfo(can_disable=True), 'log-prefix': KeyInfo(can_disable=True), 'nth': KeyInfo(can_disable=True), 'out-bridge-port': KeyInfo(can_disable=True), 'out-bridge-port-list': KeyInfo(can_disable=True), 'out-interface': KeyInfo(can_disable=True), 'out-interface-list': KeyInfo(can_disable=True), 'p2p': KeyInfo(can_disable=True), 'packet-mark': KeyInfo(can_disable=True), 'packet-size': KeyInfo(can_disable=True), 'per-connection-classifier': KeyInfo(can_disable=True), 'port': KeyInfo(can_disable=True), 'priority': KeyInfo(can_disable=True), 'protocol': KeyInfo(can_disable=True), 'psd': KeyInfo(can_disable=True), 'random': KeyInfo(can_disable=True), 'realm': KeyInfo(can_disable=True), 'reject-with': KeyInfo(can_disable=True), 'routing-mark': KeyInfo(can_disable=True), 'routing-table': KeyInfo(can_disable=True), 'src-address': KeyInfo(can_disable=True), 'src-address-list': KeyInfo(can_disable=True), 'src-address-type': KeyInfo(can_disable=True), 'src-mac-address': KeyInfo(can_disable=True), 'src-port': KeyInfo(can_disable=True), 'tcp-flags': KeyInfo(can_disable=True), 'tcp-mss': KeyInfo(can_disable=True), 'time': KeyInfo(can_disable=True), 'tls-host': KeyInfo(can_disable=True), 'ttl': KeyInfo(can_disable=True), }, ), ), ('ip', 'firewall', 'mangle'): APIData( unversioned=VersionedAPIData( fully_understood=True, stratify_keys=('chain', ), fields={ 'action': KeyInfo(), 'address-list': KeyInfo(can_disable=True), 'address-list-timeout': KeyInfo(can_disable=True), 'chain': KeyInfo(), 'comment': KeyInfo(can_disable=True, remove_value=''), 'connection-bytes': KeyInfo(can_disable=True), 'connection-limit': KeyInfo(can_disable=True), 'connection-mark': KeyInfo(can_disable=True), 'connection-nat-state': KeyInfo(can_disable=True), 'connection-rate': KeyInfo(can_disable=True), 'connection-state': KeyInfo(can_disable=True), 'connection-type': KeyInfo(can_disable=True), 'content': KeyInfo(can_disable=True), 'disabled': KeyInfo(default=False), 'dscp': KeyInfo(can_disable=True), 'dst-address': KeyInfo(can_disable=True), 'dst-address-list': KeyInfo(can_disable=True), 'dst-address-type': KeyInfo(can_disable=True), 'dst-limit': KeyInfo(can_disable=True), 'dst-port': KeyInfo(can_disable=True), 'fragment': KeyInfo(can_disable=True), 'hotspot': KeyInfo(can_disable=True), 'icmp-options': KeyInfo(can_disable=True), 'in-bridge-port': KeyInfo(can_disable=True), 'in-bridge-port-list': KeyInfo(can_disable=True), 'in-interface': KeyInfo(can_disable=True), 'in-interface-list': KeyInfo(can_disable=True), 'ingress-priority': KeyInfo(can_disable=True), 'ipsec-policy': KeyInfo(can_disable=True), 'ipv4-options': KeyInfo(can_disable=True), 'jump-target': KeyInfo(can_disable=True), 'layer7-protocol': KeyInfo(can_disable=True), 'limit': KeyInfo(can_disable=True), 'log': KeyInfo(can_disable=True), 'log-prefix': KeyInfo(can_disable=True), 'new-connection-mark': KeyInfo(can_disable=True), 'new-dscp': KeyInfo(can_disable=True), 'new-mss': KeyInfo(can_disable=True), 'new-packet-mark': KeyInfo(can_disable=True), 'new-priority': KeyInfo(can_disable=True), 'new-routing-mark': KeyInfo(can_disable=True), 'new-ttl': KeyInfo(can_disable=True), 'nth': KeyInfo(can_disable=True), 'out-bridge-port': KeyInfo(can_disable=True), 'out-bridge-port-list': KeyInfo(can_disable=True), 'out-interface': KeyInfo(can_disable=True), 'out-interface-list': KeyInfo(can_disable=True), 'p2p': KeyInfo(can_disable=True), 'packet-mark': KeyInfo(can_disable=True), 'packet-size': KeyInfo(can_disable=True), 'passthrough': KeyInfo(can_disable=True), 'per-connection-classifier': KeyInfo(can_disable=True), 'port': KeyInfo(can_disable=True), 'priority': KeyInfo(can_disable=True), 'protocol': KeyInfo(can_disable=True), 'psd': KeyInfo(can_disable=True), 'random': KeyInfo(can_disable=True), 'realm': KeyInfo(can_disable=True), 'route-dst': KeyInfo(can_disable=True), 'routing-mark': KeyInfo(can_disable=True), 'routing-table': KeyInfo(can_disable=True), 'sniff-id': KeyInfo(can_disable=True), 'sniff-target': KeyInfo(can_disable=True), 'sniff-target-port': KeyInfo(can_disable=True), 'src-address': KeyInfo(can_disable=True), 'src-address-list': KeyInfo(can_disable=True), 'src-address-type': KeyInfo(can_disable=True), 'src-mac-address': KeyInfo(can_disable=True), 'src-port': KeyInfo(can_disable=True), 'tcp-flags': KeyInfo(can_disable=True), 'tcp-mss': KeyInfo(can_disable=True), 'time': KeyInfo(can_disable=True), 'tls-host': KeyInfo(can_disable=True), 'ttl': KeyInfo(can_disable=True), }, ), ), ('ip', 'firewall', 'nat'): APIData( unversioned=VersionedAPIData( fully_understood=True, stratify_keys=('chain', ), fields={ 'action': KeyInfo(), 'address-list': KeyInfo(can_disable=True), 'address-list-timeout': KeyInfo(can_disable=True), 'chain': KeyInfo(), 'comment': KeyInfo(can_disable=True, remove_value=''), 'connection-bytes': KeyInfo(can_disable=True), 'connection-limit': KeyInfo(can_disable=True), 'connection-mark': KeyInfo(can_disable=True), 'connection-rate': KeyInfo(can_disable=True), 'connection-type': KeyInfo(can_disable=True), 'content': KeyInfo(can_disable=True), 'disabled': KeyInfo(default=False), 'dscp': KeyInfo(can_disable=True), 'dst-address': KeyInfo(can_disable=True), 'dst-address-list': KeyInfo(can_disable=True), 'dst-address-type': KeyInfo(can_disable=True), 'dst-limit': KeyInfo(can_disable=True), 'dst-port': KeyInfo(can_disable=True), 'fragment': KeyInfo(can_disable=True), 'hotspot': KeyInfo(can_disable=True), 'icmp-options': KeyInfo(can_disable=True), 'in-bridge-port': KeyInfo(can_disable=True), 'in-bridge-port-list': KeyInfo(can_disable=True), 'in-interface': KeyInfo(can_disable=True), 'in-interface-list': KeyInfo(can_disable=True), 'ingress-priority': KeyInfo(can_disable=True), 'ipsec-policy': KeyInfo(can_disable=True), 'ipv4-options': KeyInfo(can_disable=True), 'jump-target': KeyInfo(can_disable=True), 'layer7-protocol': KeyInfo(can_disable=True), 'limit': KeyInfo(can_disable=True), 'log': KeyInfo(can_disable=True), 'log-prefix': KeyInfo(can_disable=True), 'nth': KeyInfo(can_disable=True), 'out-bridge-port': KeyInfo(can_disable=True), 'out-bridge-port-list': KeyInfo(can_disable=True), 'out-interface': KeyInfo(can_disable=True), 'out-interface-list': KeyInfo(can_disable=True), 'packet-mark': KeyInfo(can_disable=True), 'packet-size': KeyInfo(can_disable=True), 'per-connection-classifier': KeyInfo(can_disable=True), 'port': KeyInfo(can_disable=True), 'priority': KeyInfo(can_disable=True), 'protocol': KeyInfo(can_disable=True), 'psd': KeyInfo(can_disable=True), 'random': KeyInfo(can_disable=True), 'randomise-ports': KeyInfo(can_disable=True), 'realm': KeyInfo(can_disable=True), 'routing-mark': KeyInfo(can_disable=True), 'same-not-by-dst': KeyInfo(can_disable=True), 'src-address': KeyInfo(can_disable=True), 'src-address-list': KeyInfo(can_disable=True), 'src-address-type': KeyInfo(can_disable=True), 'src-mac-address': KeyInfo(can_disable=True), 'src-port': KeyInfo(can_disable=True), 'tcp-mss': KeyInfo(can_disable=True), 'time': KeyInfo(can_disable=True), 'tls-host': KeyInfo(can_disable=True), 'to-addresses': KeyInfo(can_disable=True), 'to-ports': KeyInfo(can_disable=True), 'ttl': KeyInfo(can_disable=True), }, ), ), ('ip', 'firewall', 'raw'): APIData( unversioned=VersionedAPIData( fully_understood=True, stratify_keys=('chain',), fields={ 'action': KeyInfo(), 'address-list': KeyInfo(can_disable=True), 'address-list-timeout': KeyInfo(can_disable=True), 'chain': KeyInfo(), 'comment': KeyInfo(can_disable=True, remove_value=''), 'content': KeyInfo(can_disable=True), 'disabled': KeyInfo(default=False), 'dscp': KeyInfo(can_disable=True), 'dst-address': KeyInfo(can_disable=True), 'dst-address-list': KeyInfo(can_disable=True), 'dst-address-type': KeyInfo(can_disable=True), 'dst-limit': KeyInfo(can_disable=True), 'dst-port': KeyInfo(can_disable=True), 'fragment': KeyInfo(can_disable=True), 'hotspot': KeyInfo(can_disable=True), 'icmp-options': KeyInfo(can_disable=True), 'in-bridge-port': KeyInfo(can_disable=True), 'in-bridge-port-list': KeyInfo(can_disable=True), 'in-interface': KeyInfo(can_disable=True), 'in-interface-list': KeyInfo(can_disable=True), 'ingress-priority': KeyInfo(can_disable=True), 'ipsec-policy': KeyInfo(can_disable=True), 'ipv4-options': KeyInfo(can_disable=True), 'jump-target': KeyInfo(can_disable=True), 'limit': KeyInfo(can_disable=True), 'log': KeyInfo(can_disable=True), 'log-prefix': KeyInfo(can_disable=True), 'nth': KeyInfo(can_disable=True), 'out-bridge-port': KeyInfo(can_disable=True), 'out-bridge-port-list': KeyInfo(can_disable=True), 'out-interface': KeyInfo(can_disable=True), 'out-interface-list': KeyInfo(can_disable=True), 'packet-mark': KeyInfo(can_disable=True), 'packet-size': KeyInfo(can_disable=True), 'per-connection-classifier': KeyInfo(can_disable=True), 'port': KeyInfo(can_disable=True), 'priority': KeyInfo(can_disable=True), 'protocol': KeyInfo(can_disable=True), 'psd': KeyInfo(can_disable=True), 'random': KeyInfo(can_disable=True), 'src-address': KeyInfo(can_disable=True), 'src-address-list': KeyInfo(can_disable=True), 'src-address-type': KeyInfo(can_disable=True), 'src-mac-address': KeyInfo(can_disable=True), 'src-port': KeyInfo(can_disable=True), 'tcp-flags': KeyInfo(can_disable=True), 'tcp-mss': KeyInfo(can_disable=True), 'time': KeyInfo(can_disable=True), 'tls-host': KeyInfo(can_disable=True), 'ttl': KeyInfo(can_disable=True), }, ), ), ('ip', 'hotspot', 'user'): APIData( unversioned=VersionedAPIData( unknown_mechanism=True, # primary_keys=('default', ), fields={ 'default': KeyInfo(), 'comment': KeyInfo(can_disable=True, remove_value=''), 'disabled': KeyInfo(), 'name': KeyInfo(), }, ), ), ('ip', 'ipsec', 'settings'): APIData( unversioned=VersionedAPIData( single_value=True, fully_understood=True, fields={ 'accounting': KeyInfo(default=True), 'interim-update': KeyInfo(default='0s'), 'xauth-use-radius': KeyInfo(default=False), }, ), ), ('ip', 'proxy'): APIData( unversioned=VersionedAPIData( single_value=True, fully_understood=True, fields={ 'always-from-cache': KeyInfo(default=False), 'anonymous': KeyInfo(default=False), 'cache-administrator': KeyInfo(default='webmaster'), 'cache-hit-dscp': KeyInfo(default=4), 'cache-on-disk': KeyInfo(default=False), 'cache-path': KeyInfo(default='web-proxy'), 'enabled': KeyInfo(default=False), 'max-cache-object-size': KeyInfo(default='2048KiB'), 'max-cache-size': KeyInfo(default='unlimited'), 'max-client-connections': KeyInfo(default=600), 'max-fresh-time': KeyInfo(default='3d'), 'max-server-connections': KeyInfo(default=600), 'parent-proxy': KeyInfo(default='::'), 'parent-proxy-port': KeyInfo(default=0), 'port': KeyInfo(default=8080), 'serialize-connections': KeyInfo(default=False), 'src-address': KeyInfo(default='::'), }, ), ), ('ip', 'smb'): APIData( unversioned=VersionedAPIData( single_value=True, fully_understood=True, fields={ 'allow-guests': KeyInfo(default=True), 'comment': KeyInfo(default='MikrotikSMB'), 'domain': KeyInfo(default='MSHOME'), 'enabled': KeyInfo(default=False), 'interfaces': KeyInfo(default='all'), }, ), ), ('ip', 'smb', 'shares'): APIData( unversioned=VersionedAPIData( unknown_mechanism=True, # primary_keys=('default', ), fields={ 'default': KeyInfo(), 'comment': KeyInfo(can_disable=True, remove_value=''), 'directory': KeyInfo(), 'disabled': KeyInfo(), 'max-sessions': KeyInfo(), 'name': KeyInfo(), }, ), ), ('ip', 'smb', 'users'): APIData( unversioned=VersionedAPIData( unknown_mechanism=True, # primary_keys=('default', ), fields={ 'default': KeyInfo(), 'disabled': KeyInfo(), 'name': KeyInfo(), 'password': KeyInfo(), 'read-only': KeyInfo(), }, ), ), ('ip', 'socks'): APIData( unversioned=VersionedAPIData( single_value=True, fully_understood=True, fields={ 'auth-method': KeyInfo(default='none'), 'connection-idle-timeout': KeyInfo(default='2m'), 'enabled': KeyInfo(default=False), 'max-connections': KeyInfo(default=200), 'port': KeyInfo(default=1080), 'version': KeyInfo(default=4), }, ), ), ('ip', 'ssh'): APIData( unversioned=VersionedAPIData( single_value=True, fully_understood=True, versioned_fields=[ ([('7.9', '>=')], 'host-key-type', KeyInfo(default='rsa')), ], fields={ 'allow-none-crypto': KeyInfo(default=False), 'always-allow-password-login': KeyInfo(default=False), 'forwarding-enabled': KeyInfo(default=False), 'host-key-size': KeyInfo(default=2048), 'strong-crypto': KeyInfo(default=False), }, ), ), ('ip', 'tftp', 'settings'): APIData( unversioned=VersionedAPIData( single_value=True, fully_understood=True, fields={ 'max-block-size': KeyInfo(default=4096), }, ), ), ('ip', 'traffic-flow'): APIData( unversioned=VersionedAPIData( single_value=True, fully_understood=True, fields={ 'active-flow-timeout': KeyInfo(default='30m'), 'cache-entries': KeyInfo(default='32k'), 'enabled': KeyInfo(default=False), 'inactive-flow-timeout': KeyInfo(default='15s'), 'interfaces': KeyInfo(default='all'), 'packet-sampling': KeyInfo(default=False), 'sampling-interval': KeyInfo(default=0), 'sampling-space': KeyInfo(default=0), }, ), ), ('ip', 'traffic-flow', 'ipfix'): APIData( unversioned=VersionedAPIData( single_value=True, fully_understood=True, fields={ 'bytes': KeyInfo(default=True), 'dst-address': KeyInfo(default=True), 'dst-address-mask': KeyInfo(default=True), 'dst-mac-address': KeyInfo(default=True), 'dst-port': KeyInfo(default=True), 'first-forwarded': KeyInfo(default=True), 'gateway': KeyInfo(default=True), 'icmp-code': KeyInfo(default=True), 'icmp-type': KeyInfo(default=True), 'igmp-type': KeyInfo(default=True), 'in-interface': KeyInfo(default=True), 'ip-header-length': KeyInfo(default=True), 'ip-total-length': KeyInfo(default=True), 'ipv6-flow-label': KeyInfo(default=True), 'is-multicast': KeyInfo(default=True), 'last-forwarded': KeyInfo(default=True), 'nat-dst-address': KeyInfo(default=True), 'nat-dst-port': KeyInfo(default=True), 'nat-events': KeyInfo(default=False), 'nat-src-address': KeyInfo(default=True), 'nat-src-port': KeyInfo(default=True), 'out-interface': KeyInfo(default=True), 'packets': KeyInfo(default=True), 'protocol': KeyInfo(default=True), 'src-address': KeyInfo(default=True), 'src-address-mask': KeyInfo(default=True), 'src-mac-address': KeyInfo(default=True), 'src-port': KeyInfo(default=True), 'sys-init-time': KeyInfo(default=True), 'tcp-ack-num': KeyInfo(default=True), 'tcp-flags': KeyInfo(default=True), 'tcp-seq-num': KeyInfo(default=True), 'tcp-window-size': KeyInfo(default=True), 'tos': KeyInfo(default=True), 'ttl': KeyInfo(default=True), 'udp-length': KeyInfo(default=True), }, ), ), ('ip', 'traffic-flow', 'target'): APIData( unversioned=VersionedAPIData( single_value=False, fully_understood=True, fields={ 'address': KeyInfo(), 'disabled': KeyInfo(default=False), 'dst-address': KeyInfo(), 'port': KeyInfo(default=2055), 'src-address': KeyInfo(), 'v9-template-refresh': KeyInfo(default=20), 'v9-template-timeout': KeyInfo(), 'version': KeyInfo(), }, ), ), ('ip', 'upnp'): APIData( unversioned=VersionedAPIData( single_value=True, fully_understood=True, fields={ 'allow-disable-external-interface': KeyInfo(default=False), 'enabled': KeyInfo(default=False), 'show-dummy-rule': KeyInfo(default=True), }, ), ), ('ip', 'upnp', 'interfaces'): APIData( unversioned=VersionedAPIData( fully_understood=True, primary_keys=('interface', 'type'), fields={ 'disabled': KeyInfo(default=False), 'interface': KeyInfo(), 'type': KeyInfo(), 'forced-ip': KeyInfo(can_disable=True), }, ), ), ('ipv6', 'dhcp-client'): APIData( unversioned=VersionedAPIData( fully_understood=True, primary_keys=('interface', 'request'), fields={ 'add-default-route': KeyInfo(default=False), 'comment': KeyInfo(can_disable=True, remove_value=''), 'default-route-distance': KeyInfo(default=1), 'dhcp-options': KeyInfo(default=''), 'disabled': KeyInfo(default=False), 'interface': KeyInfo(), 'pool-name': KeyInfo(required=True), 'pool-prefix-length': KeyInfo(default=64), 'prefix-hint': KeyInfo(default='::/0'), 'request': KeyInfo(), 'use-peer-dns': KeyInfo(default=True), }, ), ), ('ipv6', 'dhcp-server'): APIData( unversioned=VersionedAPIData( fully_understood=True, primary_keys=('name', ), fields={ 'address-pool': KeyInfo(required=True), 'allow-dual-stack-queue': KeyInfo(can_disable=True, remove_value=True), 'binding-script': KeyInfo(can_disable=True, remove_value=''), 'comment': KeyInfo(can_disable=True, remove_value=''), 'dhcp-option': KeyInfo(default=''), 'disabled': KeyInfo(default=False), 'insert-queue-before': KeyInfo(can_disable=True, remove_value='first'), 'interface': KeyInfo(required=True), 'lease-time': KeyInfo(default='3d'), 'name': KeyInfo(), 'parent-queue': KeyInfo(can_disable=True, remove_value='none'), 'preference': KeyInfo(default=255), 'rapid-commit': KeyInfo(default=True), 'route-distance': KeyInfo(default=1), 'use-radius': KeyInfo(default=False), }, ), ), ('ipv6', 'dhcp-server', 'option'): APIData( unversioned=VersionedAPIData( fully_understood=True, primary_keys=('name',), fields={ 'code': KeyInfo(required=True), 'name': KeyInfo(), 'value': KeyInfo(default=''), }, ), ), ('ipv6', 'firewall', 'address-list'): APIData( unversioned=VersionedAPIData( fully_understood=True, primary_keys=('address', 'list', ), fields={ 'address': KeyInfo(), 'comment': KeyInfo(can_disable=True, remove_value=''), 'disabled': KeyInfo(default=False), 'list': KeyInfo(), }, ), ), ('ipv6', 'firewall', 'filter'): APIData( unversioned=VersionedAPIData( fully_understood=True, stratify_keys=('chain', ), fields={ 'action': KeyInfo(), 'address-list': KeyInfo(can_disable=True), 'address-list-timeout': KeyInfo(can_disable=True), 'chain': KeyInfo(), 'comment': KeyInfo(can_disable=True, remove_value=''), 'connection-bytes': KeyInfo(can_disable=True), 'connection-limit': KeyInfo(can_disable=True), 'connection-mark': KeyInfo(can_disable=True), 'connection-rate': KeyInfo(can_disable=True), 'connection-state': KeyInfo(can_disable=True), 'connection-type': KeyInfo(can_disable=True), 'content': KeyInfo(can_disable=True), 'disabled': KeyInfo(default=False), 'dscp': KeyInfo(can_disable=True), 'dst-address': KeyInfo(can_disable=True), 'dst-address-list': KeyInfo(can_disable=True), 'dst-address-type': KeyInfo(can_disable=True), 'dst-limit': KeyInfo(can_disable=True), 'dst-port': KeyInfo(can_disable=True), 'headers': KeyInfo(can_disable=True), 'hop-limit': KeyInfo(can_disable=True), 'icmp-options': KeyInfo(can_disable=True), 'in-bridge-port': KeyInfo(can_disable=True), 'in-bridge-port-list': KeyInfo(can_disable=True), 'in-interface': KeyInfo(can_disable=True), 'in-interface-list': KeyInfo(can_disable=True), 'ingress-priority': KeyInfo(can_disable=True), 'ipsec-policy': KeyInfo(can_disable=True), 'jump-target': KeyInfo(can_disable=True), 'limit': KeyInfo(can_disable=True), 'log': KeyInfo(can_disable=False), 'log-prefix': KeyInfo(can_disable=False), 'nth': KeyInfo(can_disable=True), 'out-bridge-port': KeyInfo(can_disable=True), 'out-bridge-port-list': KeyInfo(can_disable=True), 'out-interface': KeyInfo(can_disable=True), 'out-interface-list': KeyInfo(can_disable=True), 'packet-mark': KeyInfo(can_disable=True), 'packet-size': KeyInfo(can_disable=True), 'per-connection-classifier': KeyInfo(can_disable=True), 'port': KeyInfo(can_disable=True), 'priority': KeyInfo(can_disable=True), 'protocol': KeyInfo(can_disable=True), 'random': KeyInfo(can_disable=True), 'reject-with': KeyInfo(), 'src-address': KeyInfo(can_disable=True), 'src-address-list': KeyInfo(can_disable=True), 'src-address-type': KeyInfo(can_disable=True), 'src-mac-address': KeyInfo(can_disable=True), 'src-port': KeyInfo(can_disable=True), 'tcp-flags': KeyInfo(can_disable=True), 'tcp-mss': KeyInfo(can_disable=True), 'time': KeyInfo(can_disable=True), }, ), ), ('ipv6', 'firewall', 'mangle'): APIData( unversioned=VersionedAPIData( fully_understood=True, stratify_keys=('chain', ), fields={ 'action': KeyInfo(), 'address-list': KeyInfo(), 'address-list-timeout': KeyInfo(), 'chain': KeyInfo(), 'comment': KeyInfo(can_disable=True, remove_value=''), 'connection-bytes': KeyInfo(can_disable=True), 'connection-limit': KeyInfo(can_disable=True), 'connection-mark': KeyInfo(can_disable=True), 'connection-rate': KeyInfo(can_disable=True), 'connection-state': KeyInfo(can_disable=True), 'connection-type': KeyInfo(can_disable=True), 'content': KeyInfo(can_disable=True), 'disabled': KeyInfo(default=False), 'dscp': KeyInfo(can_disable=True), 'dst-address': KeyInfo(can_disable=True), 'dst-address-list': KeyInfo(can_disable=True), 'dst-address-type': KeyInfo(can_disable=True), 'dst-limit': KeyInfo(can_disable=True), 'dst-port': KeyInfo(can_disable=True), 'dst-prefix': KeyInfo(), 'headers': KeyInfo(can_disable=True), 'hop-limit': KeyInfo(can_disable=True), 'icmp-options': KeyInfo(can_disable=True), 'in-bridge-port': KeyInfo(can_disable=True), 'in-bridge-port-list': KeyInfo(can_disable=True), 'in-interface': KeyInfo(can_disable=True), 'in-interface-list': KeyInfo(can_disable=True), 'ingress-priority': KeyInfo(can_disable=True), 'ipsec-policy': KeyInfo(can_disable=True), 'jump-target': KeyInfo(), 'limit': KeyInfo(can_disable=True), 'log': KeyInfo(), 'log-prefix': KeyInfo(), 'new-connection-mark': KeyInfo(), 'new-dscp': KeyInfo(), 'new-hop-limit': KeyInfo(), 'new-mss': KeyInfo(), 'new-packet-mark': KeyInfo(), 'new-routing-mark': KeyInfo(), 'nth': KeyInfo(can_disable=True), 'out-bridge-port': KeyInfo(can_disable=True), 'out-bridge-port-list': KeyInfo(can_disable=True), 'out-interface': KeyInfo(can_disable=True), 'out-interface-list': KeyInfo(can_disable=True), 'packet-mark': KeyInfo(can_disable=True), 'packet-size': KeyInfo(can_disable=True), 'passthrough': KeyInfo(), 'per-connection-classifier': KeyInfo(can_disable=True), 'port': KeyInfo(can_disable=True), 'priority': KeyInfo(can_disable=True), 'protocol': KeyInfo(can_disable=True), 'random': KeyInfo(can_disable=True), 'routing-mark': KeyInfo(can_disable=True), 'sniff-id': KeyInfo(), 'sniff-target': KeyInfo(), 'sniff-target-port': KeyInfo(), 'src-address': KeyInfo(can_disable=True), 'src-address-list': KeyInfo(can_disable=True), 'src-address-type': KeyInfo(can_disable=True), 'src-mac-address': KeyInfo(can_disable=True), 'src-port': KeyInfo(can_disable=True), 'src-prefix': KeyInfo(), 'tcp-flags': KeyInfo(can_disable=True), 'tcp-mss': KeyInfo(can_disable=True), 'time': KeyInfo(can_disable=True), 'tls-host': KeyInfo(can_disable=True), } ), ), ('ipv6', 'firewall', 'nat'): APIData( unversioned=VersionedAPIData( fully_understood=True, stratify_keys=('chain', ), fields={ 'action': KeyInfo(), 'address-list': KeyInfo(), 'address-list-timeout': KeyInfo(), 'chain': KeyInfo(), 'comment': KeyInfo(can_disable=True, remove_value=''), 'connection-bytes': KeyInfo(can_disable=True), 'connection-limit': KeyInfo(can_disable=True), 'connection-mark': KeyInfo(can_disable=True), 'connection-rate': KeyInfo(can_disable=True), 'connection-state': KeyInfo(can_disable=True), 'connection-type': KeyInfo(can_disable=True), 'content': KeyInfo(can_disable=True), 'disabled': KeyInfo(default=False), 'dscp': KeyInfo(can_disable=True), 'dst-address': KeyInfo(can_disable=True), 'dst-address-list': KeyInfo(can_disable=True), 'dst-address-type': KeyInfo(can_disable=True), 'dst-limit': KeyInfo(can_disable=True), 'dst-port': KeyInfo(can_disable=True), 'icmp-options': KeyInfo(can_disable=True), 'in-bridge-port': KeyInfo(can_disable=True), 'in-bridge-port-list': KeyInfo(can_disable=True), 'in-interface': KeyInfo(can_disable=True), 'in-interface-list': KeyInfo(can_disable=True), 'ingress-priority': KeyInfo(can_disable=True), 'ipsec-policy': KeyInfo(can_disable=True), 'jump-target': KeyInfo(), 'layer7-protocol': KeyInfo(can_disable=True), 'limit': KeyInfo(can_disable=True), 'log': KeyInfo(), 'log-prefix': KeyInfo(), 'out-bridge-port': KeyInfo(can_disable=True), 'out-bridge-port-list': KeyInfo(can_disable=True), 'out-interface': KeyInfo(can_disable=True), 'out-interface-list': KeyInfo(can_disable=True), 'packet-mark': KeyInfo(can_disable=True), 'packet-size': KeyInfo(can_disable=True), 'per-connection-classifier': KeyInfo(can_disable=True), 'port': KeyInfo(can_disable=True), 'priority': KeyInfo(can_disable=True), 'protocol': KeyInfo(can_disable=True), 'random': KeyInfo(can_disable=True), 'routing-mark': KeyInfo(can_disable=True), 'src-address': KeyInfo(can_disable=True), 'src-address-list': KeyInfo(can_disable=True), 'src-address-type': KeyInfo(can_disable=True), 'src-mac-address': KeyInfo(can_disable=True), 'src-port': KeyInfo(can_disable=True), 'tcp-flags': KeyInfo(can_disable=True), 'tcp-mss': KeyInfo(can_disable=True), 'time': KeyInfo(can_disable=True), 'tls-host': KeyInfo(can_disable=True), 'to-addresses': KeyInfo(can_disable=True), 'to-ports': KeyInfo(can_disable=True), }, ), ), ('ipv6', 'firewall', 'raw'): APIData( unversioned=VersionedAPIData( fully_understood=True, stratify_keys=('chain',), fields={ 'action': KeyInfo(), 'address-list': KeyInfo(), 'address-list-timeout': KeyInfo(), 'chain': KeyInfo(), 'comment': KeyInfo(can_disable=True, remove_value=''), 'content': KeyInfo(can_disable=True), 'disabled': KeyInfo(default=False), 'dscp': KeyInfo(can_disable=True), 'dst-address': KeyInfo(can_disable=True), 'dst-address-list': KeyInfo(can_disable=True), 'dst-address-type': KeyInfo(can_disable=True), 'dst-limit': KeyInfo(can_disable=True), 'dst-port': KeyInfo(can_disable=True), 'headers': KeyInfo(can_disable=True), 'hop-limit': KeyInfo(can_disable=True), 'icmp-options': KeyInfo(can_disable=True), 'in-bridge-port': KeyInfo(can_disable=True), 'in-bridge-port-list': KeyInfo(can_disable=True), 'in-interface': KeyInfo(can_disable=True), 'in-interface-list': KeyInfo(can_disable=True), 'ingress-priority': KeyInfo(can_disable=True), 'ipsec-policy': KeyInfo(can_disable=True), 'jump-target': KeyInfo(), 'limit': KeyInfo(can_disable=True), 'log': KeyInfo(), 'log-prefix': KeyInfo(), 'nth': KeyInfo(can_disable=True), 'out-bridge-port': KeyInfo(can_disable=True), 'out-bridge-port-list': KeyInfo(can_disable=True), 'out-interface': KeyInfo(can_disable=True), 'out-interface-list': KeyInfo(can_disable=True), 'packet-mark': KeyInfo(can_disable=True), 'packet-size': KeyInfo(can_disable=True), 'per-connection-classifier': KeyInfo(can_disable=True), 'port': KeyInfo(can_disable=True), 'priority': KeyInfo(can_disable=True), 'protocol': KeyInfo(can_disable=True), 'random': KeyInfo(can_disable=True), 'src-address': KeyInfo(can_disable=True), 'src-address-list': KeyInfo(can_disable=True), 'src-address-type': KeyInfo(can_disable=True), 'src-mac-address': KeyInfo(can_disable=True), 'src-port': KeyInfo(can_disable=True), 'tcp-flags': KeyInfo(can_disable=True), 'tcp-mss': KeyInfo(can_disable=True), 'time': KeyInfo(can_disable=True), 'tls-host': KeyInfo(can_disable=True), } ), ), ('ipv6', 'nd'): APIData( unversioned=VersionedAPIData( fully_understood=True, primary_keys=('interface', ), fields={ 'advertise-dns': KeyInfo(default=True), 'advertise-mac-address': KeyInfo(default=True), 'disabled': KeyInfo(default=False), 'dns': KeyInfo(default=''), 'hop-limit': KeyInfo(default='unspecified'), 'interface': KeyInfo(), 'managed-address-configuration': KeyInfo(default=False), 'mtu': KeyInfo(default='unspecified'), 'other-configuration': KeyInfo(default=False), 'ra-delay': KeyInfo(default='3s'), 'ra-interval': KeyInfo(default='3m20s-10m'), 'ra-lifetime': KeyInfo(default='30m'), 'ra-preference': KeyInfo(default='medium'), 'reachable-time': KeyInfo(default='unspecified'), 'retransmit-interval': KeyInfo(default='unspecified'), }, ), ), ('ipv6', 'nd', 'prefix', 'default'): APIData( unversioned=VersionedAPIData( single_value=True, fully_understood=True, fields={ 'autonomous': KeyInfo(default=True), 'preferred-lifetime': KeyInfo(default='1w'), 'valid-lifetime': KeyInfo(default='4w2d'), }, ), ), ('ipv6', 'route'): APIData( unversioned=VersionedAPIData( fully_understood=True, fields={ 'bgp-as-path': KeyInfo(can_disable=True), 'bgp-atomic-aggregate': KeyInfo(can_disable=True), 'bgp-communities': KeyInfo(can_disable=True), 'bgp-local-pref': KeyInfo(can_disable=True), 'bgp-med': KeyInfo(can_disable=True), 'bgp-origin': KeyInfo(can_disable=True), 'bgp-prepend': KeyInfo(can_disable=True), 'type': KeyInfo(can_disable=True, remove_value='unicast'), 'blackhole': KeyInfo(can_disable=True), 'check-gateway': KeyInfo(can_disable=True), 'comment': KeyInfo(can_disable=True, remove_value=''), 'disabled': KeyInfo(default=False), 'distance': KeyInfo(default=1), 'dst-address': KeyInfo(), 'gateway': KeyInfo(), 'route-tag': KeyInfo(can_disable=True), 'routing-table': KeyInfo(default='main'), 'scope': KeyInfo(default=30), 'target-scope': KeyInfo(default=10), 'vrf-interface': KeyInfo(can_disable=True), }, ), ), ('mpls', ): APIData( unversioned=VersionedAPIData( single_value=True, fully_understood=True, fields={ 'allow-fast-path': KeyInfo(default=True), 'dynamic-label-range': KeyInfo(default='16-1048575'), 'propagate-ttl': KeyInfo(default=True), }, ), ), ('mpls', 'interface'): APIData( unversioned=VersionedAPIData( fully_understood=True, fields={ 'disabled': KeyInfo(default=False), 'comment': KeyInfo(can_disable=True, remove_value=''), 'interface': KeyInfo(required=True), 'mpls-mtu': KeyInfo(), 'info': KeyInfo(can_disable=True), }, ), ), ('mpls', 'ldp'): APIData( versioned=[ ('7.1', '>=', VersionedAPIData( fully_understood=True, primary_keys=('vrf', ), fields={ 'afi': KeyInfo(can_disable=True), 'distribute-for-default': KeyInfo(can_disable=True), 'path-vector-limit': KeyInfo(can_disable=True), 'vrf': KeyInfo(), 'comment': KeyInfo(can_disable=True, remove_value=''), 'hop-limit': KeyInfo(can_disable=True), 'preferred-afi': KeyInfo(can_disable=True), 'loop-detect': KeyInfo(can_disable=True), 'transport-addresses': KeyInfo(can_disable=True), 'disabled': KeyInfo(default=False), 'lsr-id': KeyInfo(can_disable=True), 'use-explicit-null': KeyInfo(can_disable=True), }, )), ('7.1', '<', VersionedAPIData( single_value=True, fully_understood=True, fields={ 'distribute-for-default-route': KeyInfo(default=False), 'enabled': KeyInfo(default=False), 'hop-limit': KeyInfo(default=255), 'loop-detect': KeyInfo(default=False), 'lsr-id': KeyInfo(default='0.0.0.0'), 'path-vector-limit': KeyInfo(default=255), 'transport-address': KeyInfo(default='0.0.0.0'), 'use-explicit-null': KeyInfo(default=False), }, )), ], ), ('mpls', 'ldp', 'accept-filter'): APIData( unversioned=VersionedAPIData( fully_understood=True, fields={ 'accept': KeyInfo(can_disable=True), 'disabled': KeyInfo(default=False), 'comment': KeyInfo(can_disable=True, remove_value=''), 'neighbor': KeyInfo(can_disable=True), 'prefix': KeyInfo(can_disable=True), 'vrf': KeyInfo(can_disable=True), }, ), ), ('mpls', 'ldp', 'advertise-filter'): APIData( unversioned=VersionedAPIData( fully_understood=True, fields={ 'advertise': KeyInfo(default=''), 'disabled': KeyInfo(default=False), 'comment': KeyInfo(can_disable=True, remove_value=''), 'neighbor': KeyInfo(), 'prefix': KeyInfo(), 'vrf': KeyInfo(), }, ), ), ('mpls', 'ldp', 'interface'): APIData( unversioned=VersionedAPIData( fully_understood=True, fields={ 'disabled': KeyInfo(default=False), 'comment': KeyInfo(can_disable=True, remove_value=''), 'accept-dynamic-neighbors': KeyInfo(can_disable=True), 'afi': KeyInfo(can_disable=True), 'hello-interval': KeyInfo(can_disable=True), 'hold-time': KeyInfo(can_disable=True), 'interface': KeyInfo(required=True), 'transport-addresses': KeyInfo(can_disable=True), }, ), ), ('port', 'firmware'): APIData( unversioned=VersionedAPIData( single_value=True, fully_understood=True, fields={ 'directory': KeyInfo(default='firmware'), 'ignore-directip-modem': KeyInfo(default=False), }, ), ), ('port', 'remote-access'): APIData( unversioned=VersionedAPIData( fully_understood=True, fields={ 'allowed-addresses': KeyInfo(default='0.0.0.0/0'), 'channel': KeyInfo(default=0), 'disabled': KeyInfo(default=False), 'log-file': KeyInfo(default=""), 'port': KeyInfo(required=True), 'protocol': KeyInfo(default='rfc2217'), 'tcp-port': KeyInfo(default=0), }, ), ), ('ppp', 'aaa'): APIData( unversioned=VersionedAPIData( single_value=True, fully_understood=True, fields={ 'accounting': KeyInfo(default=True), 'interim-update': KeyInfo(default='0s'), 'use-circuit-id-in-nas-port-id': KeyInfo(default=False), 'use-radius': KeyInfo(default=False), }, ), ), ('radius', ): APIData( unversioned=VersionedAPIData( fully_understood=True, fields={ 'accounting-backup': KeyInfo(default=False), 'accounting-port': KeyInfo(default=1813), 'address': KeyInfo(default='0.0.0.0'), 'authentication-port': KeyInfo(default=1812), 'called-id': KeyInfo(), 'certificate': KeyInfo(), 'comment': KeyInfo(can_disable=True, remove_value=''), 'disabled': KeyInfo(default=False), 'domain': KeyInfo(), 'protocol': KeyInfo(default='udp'), 'realm': KeyInfo(), 'secret': KeyInfo(), 'service': KeyInfo(), 'src-address': KeyInfo(default='0.0.0.0'), 'timeout': KeyInfo(default='300ms'), }, ), ), ('radius', 'incoming'): APIData( unversioned=VersionedAPIData( single_value=True, fully_understood=True, fields={ 'accept': KeyInfo(default=False), 'port': KeyInfo(default=3799), }, ), ), ('routing', 'id'): APIData( unversioned=VersionedAPIData( fully_understood=True, fields={ 'comment': KeyInfo(can_disable=True, remove_value=''), 'disabled': KeyInfo(default=False), 'id': KeyInfo(), 'name': KeyInfo(), 'select-dynamic-id': KeyInfo(), 'select-from-vrf': KeyInfo(), }, ), ), ('routing', 'bfd', 'interface'): APIData( unversioned=VersionedAPIData( unknown_mechanism=True, # primary_keys=('default', ), fields={ 'default': KeyInfo(), 'disabled': KeyInfo(), 'interface': KeyInfo(), 'interval': KeyInfo(), 'min-rx': KeyInfo(), 'multiplier': KeyInfo(), }, ), ), ('routing', 'mme'): APIData( unversioned=VersionedAPIData( single_value=True, fully_understood=True, fields={ 'bidirectional-timeout': KeyInfo(default=2), 'gateway-class': KeyInfo(default='none'), 'gateway-keepalive': KeyInfo(default='1m'), 'gateway-selection': KeyInfo(default='no-gateway'), 'origination-interval': KeyInfo(default='5s'), 'preferred-gateway': KeyInfo(default='0.0.0.0'), 'timeout': KeyInfo(default='1m'), 'ttl': KeyInfo(default=50), }, ), ), ('routing', 'rip'): APIData( unversioned=VersionedAPIData( single_value=True, fully_understood=True, fields={ 'distribute-default': KeyInfo(default='never'), 'garbage-timer': KeyInfo(default='2m'), 'metric-bgp': KeyInfo(default=1), 'metric-connected': KeyInfo(default=1), 'metric-default': KeyInfo(default=1), 'metric-ospf': KeyInfo(default=1), 'metric-static': KeyInfo(default=1), 'redistribute-bgp': KeyInfo(default=False), 'redistribute-connected': KeyInfo(default=False), 'redistribute-ospf': KeyInfo(default=False), 'redistribute-static': KeyInfo(default=False), 'routing-table': KeyInfo(default='main'), 'timeout-timer': KeyInfo(default='3m'), 'update-timer': KeyInfo(default='30s'), }, ), ), ('routing', 'ripng'): APIData( unversioned=VersionedAPIData( single_value=True, fully_understood=True, fields={ 'distribute-default': KeyInfo(default='never'), 'garbage-timer': KeyInfo(default='2m'), 'metric-bgp': KeyInfo(default=1), 'metric-connected': KeyInfo(default=1), 'metric-default': KeyInfo(default=1), 'metric-ospf': KeyInfo(default=1), 'metric-static': KeyInfo(default=1), 'redistribute-bgp': KeyInfo(default=False), 'redistribute-connected': KeyInfo(default=False), 'redistribute-ospf': KeyInfo(default=False), 'redistribute-static': KeyInfo(default=False), 'timeout-timer': KeyInfo(default='3m'), 'update-timer': KeyInfo(default='30s'), }, ), ), ('snmp', ): APIData( unversioned=VersionedAPIData( single_value=True, fully_understood=True, fields={ 'contact': KeyInfo(default=''), 'enabled': KeyInfo(default=False), 'location': KeyInfo(default=''), 'src-address': KeyInfo(default='::'), 'trap-community': KeyInfo(default='public'), 'trap-generators': KeyInfo(default='temp-exception'), 'trap-target': KeyInfo(default=''), 'trap-version': KeyInfo(default=1), 'trap-interfaces': KeyInfo(default=''), }, versioned_fields=[ ([('7.10', '<')], 'engine-id', KeyInfo(default='')), ([('7.10', '>=')], 'engine-id', KeyInfo(read_only=True)), ([('7.10', '>=')], 'engine-id-suffix', KeyInfo(default='')), ], ), ), ('system', 'clock'): APIData( unversioned=VersionedAPIData( single_value=True, fully_understood=True, fields={ 'date': KeyInfo(), 'gmt-offset': KeyInfo(), 'time': KeyInfo(), 'time-zone-autodetect': KeyInfo(default=True), 'time-zone-name': KeyInfo(default='manual'), }, ), ), ('system', 'clock', 'manual'): APIData( unversioned=VersionedAPIData( single_value=True, fully_understood=True, fields={ 'dst-delta': KeyInfo(default='00:00'), 'dst-end': KeyInfo(default='jan/01/1970 00:00:00'), 'dst-start': KeyInfo(default='jan/01/1970 00:00:00'), 'time-zone': KeyInfo(default='+00:00'), }, ), ), ('system', 'health', 'settings'): APIData( versioned=[ ('7.14', '<', VersionedAPIData( single_value=True, fully_understood=True, fields={ 'cpu-overtemp-check': KeyInfo(), 'cpu-overtemp-startup-delay': KeyInfo(), 'cpu-overtemp-threshold': KeyInfo(), 'fan-control-interval': KeyInfo(can_disable=True, default='30s'), 'fan-full-speed-temp': KeyInfo(default=65), 'fan-min-speed-percent': KeyInfo(default=0), 'fan-mode': KeyInfo(), 'fan-on-threshold': KeyInfo(), 'fan-switch': KeyInfo(), 'fan-target-temp': KeyInfo(default=58), 'use-fan': KeyInfo(), }, )), ('7.14', '>=', VersionedAPIData( single_value=True, fully_understood=True, fields={ 'cpu-overtemp-check': KeyInfo(), 'cpu-overtemp-startup-delay': KeyInfo(), 'cpu-overtemp-threshold': KeyInfo(), 'fan-control-interval': KeyInfo(default=30), 'fan-full-speed-temp': KeyInfo(default=65), 'fan-min-speed-percent': KeyInfo(default=12), 'fan-mode': KeyInfo(), 'fan-on-threshold': KeyInfo(), 'fan-switch': KeyInfo(), 'fan-target-temp': KeyInfo(default=58), 'use-fan': KeyInfo(), }, )), ], ), ('system', 'identity'): APIData( unversioned=VersionedAPIData( single_value=True, fully_understood=True, fields={ 'name': KeyInfo(default='Mikrotik'), }, ), ), ('system', 'leds', 'settings'): APIData( unversioned=VersionedAPIData( single_value=True, fully_understood=True, fields={ 'all-leds-off': KeyInfo(default='never'), }, ), ), ('system', 'note'): APIData( unversioned=VersionedAPIData( single_value=True, fully_understood=True, fields={ 'note': KeyInfo(default=''), 'show-at-login': KeyInfo(default=True), }, ), ), ('system', 'ntp', 'client'): APIData( unversioned=VersionedAPIData( single_value=True, fully_understood=True, fields={ 'enabled': KeyInfo(default=False), 'primary-ntp': KeyInfo(default='0.0.0.0'), 'secondary-ntp': KeyInfo(default='0.0.0.0'), 'server-dns-names': KeyInfo(default=''), 'servers': KeyInfo(default=''), 'mode': KeyInfo(default='unicast'), 'vrf': KeyInfo(default='main'), }, ), ), ('system', 'ntp', 'client', 'servers'): APIData( unversioned=VersionedAPIData( primary_keys=('address', ), fully_understood=True, fields={ 'comment': KeyInfo(can_disable=True, remove_value=''), 'disabled': KeyInfo(default=False), 'address': KeyInfo(), 'auth-key': KeyInfo(default='none'), 'iburst': KeyInfo(default=True), 'max-poll': KeyInfo(default=10), 'min-poll': KeyInfo(default=6), }, ), ), ('system', 'ntp', 'server'): APIData( unversioned=VersionedAPIData( single_value=True, fully_understood=True, fields={ 'auth-key': KeyInfo(default='none'), 'broadcast': KeyInfo(default=False), 'broadcast-addresses': KeyInfo(default=''), 'enabled': KeyInfo(default=False), 'local-clock-stratum': KeyInfo(default=5), 'manycast': KeyInfo(default=False), 'multicast': KeyInfo(default=False), 'use-local-clock': KeyInfo(default=False), 'vrf': KeyInfo(default='main'), }, ), ), ('system', 'package', 'update'): APIData( unversioned=VersionedAPIData( single_value=True, fully_understood=True, fields={ 'channel': KeyInfo(default='stable'), 'installed-version': KeyInfo(read_only=True), 'latest-version': KeyInfo(read_only=True), 'status': KeyInfo(read_only=True), }, ), ), ('system', 'routerboard', 'settings'): APIData( unversioned=VersionedAPIData( single_value=True, fully_understood=True, fields={ 'auto-upgrade': KeyInfo(default=False), 'baud-rate': KeyInfo(default=115200), 'boot-delay': KeyInfo(default='2s'), 'boot-device': KeyInfo(default='nand-if-fail-then-ethernet'), 'boot-protocol': KeyInfo(default='bootp'), 'enable-jumper-reset': KeyInfo(default=True), 'enter-setup-on': KeyInfo(default='any-key'), 'force-backup-booter': KeyInfo(default=False), 'protected-routerboot': KeyInfo(default='disabled'), 'reformat-hold-button': KeyInfo(default='20s'), 'reformat-hold-button-max': KeyInfo(default='10m'), 'silent-boot': KeyInfo(default=False), }, ), ), ('system', 'upgrade', 'mirror'): APIData( unversioned=VersionedAPIData( single_value=True, fully_understood=True, fields={ 'check-interval': KeyInfo(default='1d'), 'enabled': KeyInfo(default=False), 'primary-server': KeyInfo(default='0.0.0.0'), 'secondary-server': KeyInfo(default='0.0.0.0'), 'user': KeyInfo(default=''), }, ), ), ('system', 'ups'): APIData( unversioned=VersionedAPIData( fully_understood=True, primary_keys=('name', ), fields={ 'alarm-setting': KeyInfo(default='immediate'), 'check-capabilities': KeyInfo(can_disable=True, remove_value=True), 'comment': KeyInfo(can_disable=True, remove_value=''), 'disabled': KeyInfo(default=True), 'min-runtime': KeyInfo(default='never'), 'name': KeyInfo(), 'offline-time': KeyInfo(default='0s'), 'port': KeyInfo(required=True), }, ), ), ('system', 'watchdog'): APIData( unversioned=VersionedAPIData( single_value=True, fully_understood=True, fields={ 'auto-send-supout': KeyInfo(default=False), 'automatic-supout': KeyInfo(default=True), 'ping-start-after-boot': KeyInfo(default='5m'), 'ping-timeout': KeyInfo(default='1m'), 'watch-address': KeyInfo(default='none'), 'watchdog-timer': KeyInfo(default=True), }, ), ), ('tool', 'bandwidth-server'): APIData( unversioned=VersionedAPIData( single_value=True, fully_understood=True, fields={ 'allocate-udp-ports-from': KeyInfo(default=2000), 'authenticate': KeyInfo(default=True), 'enabled': KeyInfo(default=True), 'max-sessions': KeyInfo(default=100), }, ), ), ('tool', 'e-mail'): APIData( versioned=[ ('7.12', '>=', VersionedAPIData( single_value=True, fully_understood=True, fields={ 'from': KeyInfo(default='<>'), 'password': KeyInfo(default=''), 'port': KeyInfo(default=25), 'server': KeyInfo(default='0.0.0.0'), 'start-tls': KeyInfo(default=False), 'tls': KeyInfo(default=False), 'user': KeyInfo(default=''), 'vfr': KeyInfo(default=''), }, )), ('7.12', '<', VersionedAPIData( single_value=True, fully_understood=True, fields={ 'address': KeyInfo(default='0.0.0.0'), 'from': KeyInfo(default='<>'), 'password': KeyInfo(default=''), 'port': KeyInfo(default=25), 'start-tls': KeyInfo(default=False), 'tls': KeyInfo(default=False), 'user': KeyInfo(default=''), 'vfr': KeyInfo(default=''), }, )), ], ), ('tool', 'graphing'): APIData( unversioned=VersionedAPIData( single_value=True, fully_understood=True, fields={ 'page-refresh': KeyInfo(default=300), 'store-every': KeyInfo(default='5min'), }, ), ), ('tool', 'graphing', 'interface'): APIData( versioned=[ ('7', '>=', VersionedAPIData( fully_understood=True, fields={ 'comment': KeyInfo(can_disable=True, remove_value=''), 'disabled': KeyInfo(default=False), 'allow-address': KeyInfo(default='0.0.0.0/0'), 'interface': KeyInfo(default='all'), 'store-on-disk': KeyInfo(default=True), }, )), ], ), ('tool', 'graphing', 'resource'): APIData( versioned=[ ('7', '>=', VersionedAPIData( fully_understood=True, fields={ 'comment': KeyInfo(can_disable=True, remove_value=''), 'disabled': KeyInfo(default=False), 'allow-address': KeyInfo(default='0.0.0.0/0'), 'store-on-disk': KeyInfo(default=True), }, )), ], ), ('tool', 'mac-server'): APIData( unversioned=VersionedAPIData( single_value=True, fully_understood=True, fields={ 'allowed-interface-list': KeyInfo(), }, ), ), ('tool', 'mac-server', 'mac-winbox'): APIData( unversioned=VersionedAPIData( single_value=True, fully_understood=True, fields={ 'allowed-interface-list': KeyInfo(), }, ), ), ('tool', 'mac-server', 'ping'): APIData( unversioned=VersionedAPIData( single_value=True, fully_understood=True, fields={ 'enabled': KeyInfo(default=True), }, ), ), ('tool', 'netwatch'): APIData( versioned=[ ('7', '>=', VersionedAPIData( fully_understood=True, fields={ 'certificate': KeyInfo(), 'check-certificate': KeyInfo(), 'comment': KeyInfo(), 'disabled': KeyInfo(default=False), 'down-script': KeyInfo(), 'host': KeyInfo(required=True), 'http-codes': KeyInfo(), 'interval': KeyInfo(), 'name': KeyInfo(), 'packet-count': KeyInfo(), 'packet-interval': KeyInfo(), 'packet-size': KeyInfo(), 'port': KeyInfo(), 'src-address': KeyInfo(), 'start-delay': KeyInfo(), 'startup-delay': KeyInfo(), 'test-script': KeyInfo(), 'thr-avg': KeyInfo(), 'thr-http-time': KeyInfo(), 'thr-jitter': KeyInfo(), 'thr-loss-count': KeyInfo(), 'thr-loss-percent': KeyInfo(), 'thr-max': KeyInfo(), 'thr-stdev': KeyInfo(), 'thr-tcp-conn-time': KeyInfo(), 'timeout': KeyInfo(), 'type': KeyInfo(default='simple'), 'up-script': KeyInfo(), }, )), ], ), ('tool', 'romon'): APIData( unversioned=VersionedAPIData( single_value=True, fully_understood=True, fields={ 'enabled': KeyInfo(default=False), 'id': KeyInfo(default='00:00:00:00:00:00'), 'secrets': KeyInfo(default=''), }, ), ), ('tool', 'romon', 'port'): APIData( unversioned=VersionedAPIData( fields={ 'cost': KeyInfo(), 'disabled': KeyInfo(), 'forbid': KeyInfo(), 'interface': KeyInfo(), 'secrets': KeyInfo(), }, ), ), ('tool', 'sms'): APIData( unversioned=VersionedAPIData( single_value=True, fully_understood=True, fields={ 'allowed-number': KeyInfo(default=''), 'auto-erase': KeyInfo(default=False), 'channel': KeyInfo(default=0), 'port': KeyInfo(default='none'), 'receive-enabled': KeyInfo(default=False), 'secret': KeyInfo(default=''), 'sim-pin': KeyInfo(default=''), }, ), ), ('tool', 'sniffer'): APIData( unversioned=VersionedAPIData( single_value=True, fully_understood=True, fields={ 'file-limit': KeyInfo(default='1000KiB'), 'file-name': KeyInfo(default=''), 'filter-cpu': KeyInfo(default=''), 'filter-direction': KeyInfo(default='any'), 'filter-interface': KeyInfo(default=''), 'filter-ip-address': KeyInfo(default=''), 'filter-ip-protocol': KeyInfo(default=''), 'filter-ipv6-address': KeyInfo(default=''), 'filter-mac-address': KeyInfo(default=''), 'filter-mac-protocol': KeyInfo(default=''), 'filter-operator-between-entries': KeyInfo(default='or'), 'filter-port': KeyInfo(default=''), 'filter-size': KeyInfo(default=''), 'filter-stream': KeyInfo(default=False), 'memory-limit': KeyInfo(default='100KiB'), 'memory-scroll': KeyInfo(default=True), 'only-headers': KeyInfo(default=False), 'streaming-enabled': KeyInfo(default=False), 'streaming-server': KeyInfo(default='0.0.0.0:37008'), }, ), ), ('tool', 'traffic-generator'): APIData( unversioned=VersionedAPIData( single_value=True, fully_understood=True, fields={ 'latency-distribution-max': KeyInfo(default='100us'), 'measure-out-of-order': KeyInfo(default=True), 'stats-samples-to-keep': KeyInfo(default=100), 'test-id': KeyInfo(default=0), }, ), ), ('user',): APIData( unversioned=VersionedAPIData( primary_keys=('name', ), fully_understood=True, fields={ 'address': KeyInfo(), 'comment': KeyInfo(can_disable=True, remove_value=''), 'disabled': KeyInfo(default=False), 'expired': KeyInfo(read_only=True), 'group': KeyInfo(), 'last-logged-in': KeyInfo(read_only=True), 'name': KeyInfo(), 'password': KeyInfo(write_only=True), }, ), ), ('user', 'aaa'): APIData( unversioned=VersionedAPIData( single_value=True, fully_understood=True, fields={ 'accounting': KeyInfo(default=True), 'default-group': KeyInfo(default='read'), 'exclude-groups': KeyInfo(default=''), 'interim-update': KeyInfo(default='0s'), 'use-radius': KeyInfo(default=False), }, ), ), ('user', 'settings'): APIData( unversioned=VersionedAPIData( single_value=True, fully_understood=True, fields={ 'minimum-categories': KeyInfo(), 'minimum-password-length': KeyInfo(), }, ), ), ('queue', 'interface'): APIData( unversioned=VersionedAPIData( primary_keys=('interface', ), fully_understood=True, fixed_entries=True, fields={ 'interface': KeyInfo(required=True), 'queue': KeyInfo(required=True), }, ), ), ('queue', 'simple'): APIData( unversioned=VersionedAPIData( primary_keys=('name', ), fully_understood=True, fields={ 'comment': KeyInfo(can_disable=True, remove_value=''), 'dst': KeyInfo(can_disable=True, remove_value=''), 'time': KeyInfo(can_disable=True, remove_value=''), 'bucket-size': KeyInfo(default='0.1/0.1'), 'burst-limit': KeyInfo(default='0/0'), 'burst-threshold': KeyInfo(default='0/0'), 'burst-time': KeyInfo(default='0s/0s'), 'disabled': KeyInfo(default=False), 'limit-at': KeyInfo(default='0/0'), 'max-limit': KeyInfo(default='0/0'), 'name': KeyInfo(), 'packet-marks': KeyInfo(default=''), 'parent': KeyInfo(default='none'), 'priority': KeyInfo(default='8/8'), 'queue': KeyInfo(default='default-small/default-small'), 'target': KeyInfo(required=True), }, ), ), ('queue', 'tree'): APIData( unversioned=VersionedAPIData( primary_keys=('name', ), fully_understood=True, fields={ 'bucket-size': KeyInfo(default='0.1'), 'burst-limit': KeyInfo(default=0), 'burst-threshold': KeyInfo(default=0), 'burst-time': KeyInfo(default='0s'), 'comment': KeyInfo(can_disable=True, remove_value=''), 'disabled': KeyInfo(default=False), 'limit-at': KeyInfo(default=0), 'max-limit': KeyInfo(default=0), 'name': KeyInfo(), 'packet-mark': KeyInfo(default=''), 'parent': KeyInfo(required=True), 'priority': KeyInfo(default=8), 'queue': KeyInfo(default='default-small'), }, ), ), ('queue', 'type'): APIData( unversioned=VersionedAPIData( primary_keys=('name', ), fully_understood=True, fields={ 'name': KeyInfo(), 'kind': KeyInfo(required=True), 'bfifo-limit': KeyInfo(default=15000), 'cake-ack-filter': KeyInfo(default='none'), 'cake-atm': KeyInfo(default='none'), 'cake-autorate-ingress': KeyInfo(can_disable=True), 'cake-bandwidth': KeyInfo(can_disable=True, remove_value=0), 'cake-diffserv': KeyInfo(default='diffserv3'), 'cake-flowmode': KeyInfo(default='triple-isolate'), 'cake-memlimit': KeyInfo(default=0), 'cake-mpu': KeyInfo(can_disable=True, remove_value=''), 'cake-nat': KeyInfo(can_disable=True, remove_value=False), 'cake-overhead': KeyInfo(default=0), 'cake-overhead-scheme': KeyInfo(can_disable=True, remove_value=''), 'cake-rtt': KeyInfo(default='100ms'), 'cake-rtt-scheme': KeyInfo(default='none'), 'cake-wash': KeyInfo(can_disable=True, remove_value=False), 'codel-ce-threshold': KeyInfo(can_disable=True, remove_value=''), 'codel-ecn': KeyInfo(can_disable=True, remove_value=False), 'codel-interval': KeyInfo(default='100ms'), 'codel-limit': KeyInfo(default=1000), 'codel-target': KeyInfo(default='5ms'), 'fq-codel-ce-threshold': KeyInfo(can_disable=True, remove_value=''), 'fq-codel-ecn': KeyInfo(default=True), 'fq-codel-flows': KeyInfo(default=1024), 'fq-codel-interval': KeyInfo(default='100ms'), 'fq-codel-limit': KeyInfo(default=10240), 'fq-codel-memlimit': KeyInfo(default=33554432), 'fq-codel-quantum': KeyInfo(default=1514), 'fq-codel-target': KeyInfo(default='5ms'), 'mq-pfifo-limit': KeyInfo(default=50), 'pcq-burst-rate': KeyInfo(default=0), 'pcq-burst-threshold': KeyInfo(default=0), 'pcq-burst-time': KeyInfo(default='10s'), 'pcq-classifier': KeyInfo(can_disable=True, remove_value=''), 'pcq-dst-address-mask': KeyInfo(default=32), 'pcq-dst-address6-mask': KeyInfo(default=128), 'pcq-limit': KeyInfo(default=50), 'pcq-rate': KeyInfo(default=0), 'pcq-src-address-mask': KeyInfo(default=32), 'pcq-src-address6-mask': KeyInfo(default=128), 'pcq-total-limit': KeyInfo(default=2000), 'pfifo-limit': KeyInfo(default=50), 'red-avg-packet': KeyInfo(default=1000), 'red-burst': KeyInfo(default=20), 'red-limit': KeyInfo(default=60), 'red-max-threshold': KeyInfo(default=50), 'red-min-threshold': KeyInfo(default=10), 'sfq-allot': KeyInfo(default=1514), 'sfq-perturb': KeyInfo(default=5), }, ), ), ('interface', 'ethernet', 'switch'): APIData( unversioned=VersionedAPIData( fixed_entries=True, primary_keys=('name', ), fully_understood=True, fields={ 'cpu-flow-control': KeyInfo(default=True), 'mirror-source': KeyInfo(default='none'), 'mirror-target': KeyInfo(default='none'), 'name': KeyInfo(), }, ), ), ('interface', 'ethernet', 'switch', 'port'): APIData( unversioned=VersionedAPIData( fixed_entries=True, primary_keys=('name', ), fully_understood=True, fields={ 'default-vlan-id': KeyInfo(), 'name': KeyInfo(), 'vlan-header': KeyInfo(default='leave-as-is'), 'vlan-mode': KeyInfo(default='disabled'), }, ), ), ('ip', 'dhcp-client', 'option'): APIData( unversioned=VersionedAPIData( fixed_entries=True, primary_keys=('name', ), fully_understood=True, fields={ 'code': KeyInfo(), 'name': KeyInfo(), 'value': KeyInfo(), }, ), ), ('ppp', 'profile'): APIData( unversioned=VersionedAPIData( fully_understood=True, primary_keys=('name', ), fields={ 'address-list': KeyInfo(default=''), 'bridge': KeyInfo(can_disable=True), 'bridge-horizon': KeyInfo(can_disable=True), 'bridge-learning': KeyInfo(default='default'), 'bridge-path-cost': KeyInfo(can_disable=True), 'bridge-port-priority': KeyInfo(can_disable=True), 'change-tcp-mss': KeyInfo(default=True), 'dns-server': KeyInfo(can_disable=True), 'idle-timeout': KeyInfo(can_disable=True), 'incoming-filter': KeyInfo(can_disable=True), 'insert-queue-before': KeyInfo(can_disable=True), 'interface-list': KeyInfo(can_disable=True), 'local-address': KeyInfo(can_disable=True), 'name': KeyInfo(required=True), 'on-down': KeyInfo(default=''), 'on-up': KeyInfo(default=''), 'only-one': KeyInfo(default='default'), 'outgoing-filter': KeyInfo(can_disable=True), 'parent-queue': KeyInfo(can_disable=True), 'queue-type': KeyInfo(can_disable=True), 'rate-limit': KeyInfo(can_disable=True), 'remote-address': KeyInfo(can_disable=True), 'session-timeout': KeyInfo(can_disable=True), 'use-compression': KeyInfo(default='default'), 'use-encryption': KeyInfo(default='default'), 'use-ipv6': KeyInfo(default=True), 'use-mpls': KeyInfo(default='default'), 'use-upnp': KeyInfo(default='default'), 'wins-server': KeyInfo(can_disable=True), }, ), ), ('ppp', 'secret'): APIData( unversioned=VersionedAPIData( fully_understood=True, primary_keys=('name', ), fields={ 'caller-id': KeyInfo(default=''), 'disabled': KeyInfo(default=False), 'ipv6-routes': KeyInfo(default=''), 'limit-bytes-in': KeyInfo(default=0), 'limit-bytes-out': KeyInfo(default=0), 'local-address': KeyInfo(can_disable=True), 'name': KeyInfo(required=True), 'password': KeyInfo(), 'profile': KeyInfo(default='default'), 'remote-address': KeyInfo(can_disable=True), 'remote-ipv6-prefix': KeyInfo(can_disable=True), 'routes': KeyInfo(can_disable=True), 'service': KeyInfo(default='any'), }, ), ), ('routing', 'bgp', 'aggregate'): APIData( unversioned=VersionedAPIData( primary_keys=('prefix',), fully_understood=True, fields={ 'advertise-filter': KeyInfo(), 'attribute-filter': KeyInfo(), 'disabled': KeyInfo(default=False), 'include-igp': KeyInfo(default=False), 'inherit-attributes': KeyInfo(default=True), 'instance': KeyInfo(required=True), 'prefix': KeyInfo(required=True), 'summary-only': KeyInfo(default=True), 'suppress-filter': KeyInfo(), }, ), ), ('routing', 'bgp', 'connection'): APIData( unversioned=VersionedAPIData( fully_understood=True, fields={ 'as': KeyInfo(), 'add-path-out': KeyInfo(), 'address-families': KeyInfo(), 'cisco-vpls-nlri-len-fmt': KeyInfo(), 'cluster-id': KeyInfo(), 'comment': KeyInfo(), 'connect': KeyInfo(default=True), 'disabled': KeyInfo(default=False), 'hold-time': KeyInfo(), 'input.accept-communities': KeyInfo(), 'input.accept-ext-communities': KeyInfo(), 'input.accept-large-communities': KeyInfo(), 'input.accpet-nlri': KeyInfo(), 'input.accept-unknown': KeyInfo(), 'input.affinity': KeyInfo(), 'input.allow-as': KeyInfo(), 'input.filter': KeyInfo(), 'input.ignore-as-path-len': KeyInfo(), 'input.limit-process-routes-ipv4': KeyInfo(), 'input.limit-process-routes-ipv6': KeyInfo(), 'keepalive-time': KeyInfo(), 'listen': KeyInfo(default=True), 'local.address': KeyInfo(), 'local.port': KeyInfo(), 'local.role': KeyInfo(required=True), 'local.ttl': KeyInfo(), 'multihop': KeyInfo(), 'name': KeyInfo(required=True), 'nexthop-choice': KeyInfo(), 'output.affinity': KeyInfo(), 'output.as-override': KeyInfo(), 'output.default-originate': KeyInfo(), 'output.default-prepend': KeyInfo(), 'output.filter-chain': KeyInfo(), 'output.filter-select': KeyInfo(), 'output.keep-sent-attributes': KeyInfo(), 'output.network': KeyInfo(), 'output.no-client-to-client-reflection': KeyInfo(), 'output.no-early-cut': KeyInfo(), 'output.redistribute': KeyInfo(), 'output.remote-private-as': KeyInfo(), 'remote.address': KeyInfo(required=True), 'remote.port': KeyInfo(), 'remote.as': KeyInfo(), 'remote.allowed-as': KeyInfo(), 'remote.ttl': KeyInfo(), 'router-id': KeyInfo(), 'routing-table': KeyInfo(), 'save-to': KeyInfo(), 'tcp-md5-key': KeyInfo(), 'templates': KeyInfo(), 'use-bfd': KeyInfo(), 'vrf': KeyInfo(), }, ), ), ('routing', 'bgp', 'instance'): APIData( unversioned=VersionedAPIData( fixed_entries=True, primary_keys=('name', ), fully_understood=True, fields={ 'as': KeyInfo(), 'client-to-client-reflection': KeyInfo(), 'cluster-id': KeyInfo(can_disable=True), 'confederation': KeyInfo(can_disable=True), 'disabled': KeyInfo(default=False), 'ignore-as-path-len': KeyInfo(), 'name': KeyInfo(), 'out-filter': KeyInfo(), 'redistribute-connected': KeyInfo(), 'redistribute-ospf': KeyInfo(), 'redistribute-other-bgp': KeyInfo(), 'redistribute-rip': KeyInfo(), 'redistribute-static': KeyInfo(), 'router-id': KeyInfo(), 'routing-table': KeyInfo(), }, ), ), ('routing', 'bgp', 'network'): APIData( unversioned=VersionedAPIData( primary_keys=('network',), fully_understood=True, fields={ 'comment': KeyInfo(can_disable=True, remove_value=''), 'disabled': KeyInfo(default=False), 'network': KeyInfo(required=True), 'synchronize': KeyInfo(default=True), }, ), ), ('routing', 'bgp', 'peer'): APIData( unversioned=VersionedAPIData( primary_keys=('name', ), fully_understood=True, fields={ 'address-families': KeyInfo(default='ip'), 'allow-as-in': KeyInfo(can_disable=True, remove_value=''), 'as-override': KeyInfo(default=False), 'cisco-vpls-nlri-len-fmt': KeyInfo(), 'comment': KeyInfo(can_disable=True, remove_value=''), 'default-originate': KeyInfo(default='never'), 'disabled': KeyInfo(default=False), 'hold-time': KeyInfo(default='3m'), 'in-filter': KeyInfo(), 'instance': KeyInfo(), 'keepalive-time': KeyInfo(can_disable=True, remove_value=''), 'max-prefix-limit': KeyInfo(can_disable=True, remove_value=''), 'max-prefix-restart-time': KeyInfo(can_disable=True, remove_value=''), 'multihop': KeyInfo(default=False), 'name': KeyInfo(), 'nexthop-choice': KeyInfo(default='default'), 'passive': KeyInfo(default=False), 'out-filter': KeyInfo(), 'remote-address': KeyInfo(required=True), 'remote-as': KeyInfo(required=True), 'remote-port': KeyInfo(can_disable=True, remove_value=''), 'remove-private-as': KeyInfo(default=False), 'route-reflect': KeyInfo(default=False), 'tcp-md5-key': KeyInfo(), 'ttl': KeyInfo(default='default'), 'update-source': KeyInfo(can_disable=True, remove_value='none'), 'use-bfd': KeyInfo(default=False), }, ), ), ('routing', 'bgp', 'template'): APIData( unversioned=VersionedAPIData( primary_keys=('name', ), fully_understood=True, fields={ 'add-path-out': KeyInfo(), 'address-families': KeyInfo(default='ip'), 'as': KeyInfo(), 'as-override': KeyInfo(default=False), 'cisco-vpls-nlri-len-fmt': KeyInfo(), 'cluster-id': KeyInfo(), 'comment': KeyInfo(can_disable=True, remove_value=''), 'disabled': KeyInfo(default=False), 'hold-time': KeyInfo(default='3m'), 'input.accept-communities': KeyInfo(), 'input.accept-ext-communities': KeyInfo(), 'input.accept-large-communities': KeyInfo(), 'input.accept-unknown': KeyInfo(), 'input.accept-nlri': KeyInfo(), 'input.affinity': KeyInfo(), 'input.allow-as': KeyInfo(), 'input.filter': KeyInfo(), 'input.ignore-as-path-len': KeyInfo(default=False), 'input.limit-nlri-diversity': KeyInfo(), 'input.limit-process-routes-ipv4': KeyInfo(), 'input.limit-process-routes-ipv6': KeyInfo(), 'keepalive-time': KeyInfo(default='3m'), 'multihop': KeyInfo(default=False), 'name': KeyInfo(), 'nexthop-choice': KeyInfo(default='default'), 'output.affinity': KeyInfo(), 'output.default-originate': KeyInfo(default='never'), 'output.default-prepent': KeyInfo(), 'output.filter-chain': KeyInfo(), 'output.filter-select': KeyInfo(), 'output.keep-sent-attributes': KeyInfo(default=False), 'output.network': KeyInfo(), 'output.no-client-to-client-reflection': KeyInfo(), 'output.no-early-cut': KeyInfo(), 'output.redistribute': KeyInfo(), 'remove-private-as': KeyInfo(default=False), 'router-id': KeyInfo(default='main'), 'routing-table': KeyInfo(default='main'), 'save-to': KeyInfo(), 'templates': KeyInfo(), 'use-bfd': KeyInfo(default=False), 'vrf': KeyInfo(default='main'), }, ), ), ('system', 'logging', 'action'): APIData( unversioned=VersionedAPIData( fully_understood=True, primary_keys=('name',), fields={ 'bsd-syslog': KeyInfo(default=False), 'comment': KeyInfo(can_disable=True, remove_value=''), 'disk-file-count': KeyInfo(default=2), 'disk-file-name': KeyInfo(default='log'), 'disk-lines-per-file': KeyInfo(default=1000), 'disk-stop-on-full': KeyInfo(default=False), 'email-start-tls': KeyInfo(default=False), 'email-to': KeyInfo(default=''), 'memory-lines': KeyInfo(default=1000), 'memory-stop-on-full': KeyInfo(default=False), 'name': KeyInfo(), 'remember': KeyInfo(default=True), 'remote': KeyInfo(default='0.0.0.0'), 'remote-port': KeyInfo(default=514), 'src-address': KeyInfo(default='0.0.0.0'), 'syslog-facility': KeyInfo(default='daemon'), 'syslog-severity': KeyInfo(default='auto'), 'syslog-time-format': KeyInfo(default='bsd-syslog'), 'target': KeyInfo(required=True), }, ), ), ('user', 'group'): APIData( unversioned=VersionedAPIData( primary_keys=('name', ), fully_understood=True, fields={ 'comment': KeyInfo(can_disable=True, remove_value=''), 'name': KeyInfo(), 'policy': KeyInfo(), 'skin': KeyInfo(default='default'), }, ), ), ('caps-man', 'manager'): APIData( unversioned=VersionedAPIData( single_value=True, fully_understood=True, fields={ 'ca-certificate': KeyInfo(default='none'), 'certificate': KeyInfo(default='none'), 'enabled': KeyInfo(default=False), 'package-path': KeyInfo(default=''), 'require-peer-certificate': KeyInfo(default=False), 'upgrade-policy': KeyInfo(default='none'), }, ), ), ('ip', 'firewall', 'service-port'): APIData( unversioned=VersionedAPIData( primary_keys=('name', ), fully_understood=True, fields={ 'disabled': KeyInfo(default=False), 'name': KeyInfo(), 'ports': KeyInfo(), 'sip-direct-media': KeyInfo(), 'sip-timeout': KeyInfo(), }, ), ), ('ip', 'firewall', 'layer7-protocol'): APIData( unversioned=VersionedAPIData( primary_keys=('name', ), fully_understood=True, fields={ 'comment': KeyInfo(can_disable=True, remove_value=''), 'name': KeyInfo(), 'regexp': KeyInfo(), }, ), ), ('ip', 'hotspot', 'service-port'): APIData( unversioned=VersionedAPIData( fixed_entries=True, primary_keys=('name', ), fully_understood=True, fields={ 'disabled': KeyInfo(default=False), 'name': KeyInfo(), 'ports': KeyInfo(), }, ), ), ('ip', 'ipsec', 'policy'): APIData( unversioned=VersionedAPIData( fully_understood=True, fields={ 'action': KeyInfo(default='encrypt'), 'comment': KeyInfo(can_disable=True, remove_value=''), 'disabled': KeyInfo(default=False), 'dst-address': KeyInfo(), 'dst-port': KeyInfo(default='any'), 'group': KeyInfo(can_disable=True, remove_value='default'), 'ipsec-protocols': KeyInfo(default='esp'), 'level': KeyInfo(default='require'), 'peer': KeyInfo(), 'proposal': KeyInfo(default='default'), 'protocol': KeyInfo(default='all'), 'src-address': KeyInfo(), 'src-port': KeyInfo(default='any'), # The template field can't really be changed once the item is # created. This config captures the behavior best as it can # i.e. template=yes is shown, template=no is hidden. 'template': KeyInfo(can_disable=True, remove_value=False), 'tunnel': KeyInfo(default=False), }, ), ), ('ip', 'service'): APIData( unversioned=VersionedAPIData( fixed_entries=True, primary_keys=('name', ), fully_understood=True, fields={ 'address': KeyInfo(), 'certificate': KeyInfo(), 'disabled': KeyInfo(default=False), 'name': KeyInfo(), 'port': KeyInfo(), 'tls-version': KeyInfo(), }, ), ), ('system', 'logging'): APIData( unversioned=VersionedAPIData( fully_understood=True, fields={ 'action': KeyInfo(default='memory'), 'disabled': KeyInfo(default=False), 'prefix': KeyInfo(default=''), 'topics': KeyInfo(default=''), }, ), ), ('system', 'resource', 'irq'): APIData( unversioned=VersionedAPIData( has_identifier=True, fields={ 'cpu': KeyInfo(), }, ), ), ('system', 'resource', 'irq', 'rps'): APIData( unversioned=VersionedAPIData( fully_understood=True, primary_keys=('name',), fields={ 'disabled': KeyInfo(default=False), 'name': KeyInfo(), }, ), ), ('system', 'scheduler'): APIData( unversioned=VersionedAPIData( fully_understood=True, primary_keys=('name', ), fields={ 'comment': KeyInfo(can_disable=True, remove_value=''), 'disabled': KeyInfo(default=False), 'interval': KeyInfo(default='0s'), 'name': KeyInfo(), 'on-event': KeyInfo(default=''), 'policy': KeyInfo(default='ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon'), 'start-date': KeyInfo(), 'start-time': KeyInfo(), }, ), ), ('system', 'script'): APIData( unversioned=VersionedAPIData( fully_understood=True, primary_keys=('name',), fields={ 'comment': KeyInfo(can_disable=True, remove_value=''), 'dont-require-permissions': KeyInfo(default=False), 'name': KeyInfo(), 'owner': KeyInfo(), 'policy': KeyInfo(default='ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon'), 'source': KeyInfo(default=''), }, ), ), }