{ "$id": "https://openwrt.org/ucentral.schema.json", "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "properties": { "strict": { "type": "boolean", "default": false }, "uuid": { "type": "integer" }, "public_ip_lookup": { "type": "string", "format": "uc-fqdn" }, "unit": { "$ref": "#/$defs/unit" }, "globals": { "$ref": "#/$defs/globals" }, "ethernet": { "type": "array", "items": { "$ref": "#/$defs/ethernet" } }, "switch": { "$ref": "#/$defs/switch" }, "interfaces": { "type": "array", "items": { "$ref": "#/$defs/interface" } }, "services": { "$ref": "#/$defs/service" }, "metrics": { "$ref": "#/$defs/metrics" }, "config-raw": { "$ref": "#/$defs/config-raw" }, "third-party": { "type": "object", "additionalProperties": true } }, "$defs": { "unit": { "type": "object", "properties": { "name": { "type": "string" }, "hostname": { "type": "string", "format": "hostname" }, "location": { "type": "string" }, "timezone": { "type": "string", "examples": [ "UTC", "EST5", "CET-1CEST,M3.5.0,M10.5.0/3" ] }, "leds-active": { "type": "boolean", "default": true }, "random-password": { "type": "boolean", "default": false }, "system-password": { "type": "string" }, "beacon-advertisement": { "type": "object", "properties": { "device-name": { "type": "boolean" }, "device-serial": { "type": "boolean" }, "network-id": { "type": "integer" } } }, "poe": { "type": "object", "properties": { "power-management": { "type": "string", "examples": [ "class", "dynamic", "dynamic-priority", "static", "static-priority" ] }, "usage-threshold": { "type": "number", "default": 90 } } }, "multicast": { "type": "object", "properties": { "igmp-snooping-enable": { "type": "boolean", "default": true }, "mld-snooping-enable": { "type": "boolean", "default": true }, "unknown-multicast-flood-control": { "type": "boolean", "default": false }, "querier-enable": { "type": "boolean", "default": false } } } } }, "globals": { "type": "object", "properties": { "ipv4-network": { "type": "string", "format": "uc-cidr4", "examples": [ "192.168.0.0/16" ] }, "ipv6-network": { "type": "string", "format": "uc-cidr6", "examples": [ "fdca:1234:4567::/48" ] }, "ipv4-blackhole": { "type": "array", "items": { "type": "object", "properties": { "prefix": { "type": "string", "format": "uc-cidr4", "examples": [ "192.168.1.0/24" ] }, "vrf": { "type": "integer" } } } }, "ipv4-unreachable": { "type": "array", "items": { "type": "object", "properties": { "prefix": { "type": "string", "format": "uc-cidr4", "examples": [ "192.168.1.0/24" ] }, "vrf": { "type": "integer" } } } } } }, "ethernet": { "type": "object", "properties": { "select-ports": { "type": "array", "items": { "type": "string", "examples": [ "LAN1", "LAN2", "LAN3", "LAN4", "LAN*", "WAN*", "*" ] } }, "name": { "type": "string", "examples": [ "cloud_uplink_port" ] }, "speed": { "type": "integer", "enum": [ 10, 100, 1000, 2500, 5000, 10000, 25000, 40000, 50000, 100000, 200000 ], "default": 1000 }, "duplex": { "type": "string", "enum": [ "half", "full" ], "default": "full" }, "enabled": { "type": "boolean", "default": true }, "services": { "type": "array", "items": { "type": "string", "examples": [ "quality-of-service" ] } }, "poe": { "type": "object", "properties": { "admin-mode": { "type": "boolean", "default": false }, "do-reset": { "type": "boolean" }, "detection": { "type": "string", "examples": [ "2pt-dot3af", "2pt-dot3af+legacy", "4pt-dot3af", "4pt-dot3af+legacy", "dot3bt", "dot3bt+legacy", "legacy" ], "default": "dot3bt" }, "power-limit": { "type": "integer", "default": 99900 }, "priority": { "type": "string", "default": "low", "examples": [ "critical", "high", "medium", "low" ] } } }, "ieee8021x": { "type": "object", "properties": { "is-authenticator": { "type": "boolean", "default": false }, "authentication-mode": { "type": "string", "enum": [ "force-authorized", "force-unauthorized", "auto" ], "default": "force-authorized" }, "host-mode": { "type": "string", "enum": [ "multi-auth", "multi-domain", "multi-host", "single-host" ], "default": "multi-auth" }, "guest-vlan": { "type": "integer", "minimum": 1, "maximum": 4094 }, "unauthenticated-vlan": { "type": "integer", "minimum": 1, "maximum": 4094 }, "mac-address-bypass": { "type": "boolean" }, "mac-address-bypass-timeout-minutes": { "type": "integer" } } }, "trunk-group": { "type": "integer", "minimum": 1, "maximum": 64 }, "lacp-config": { "type": "object", "properties": { "lacp-enable": { "type": "boolean", "default": false }, "lacp-role": { "type": "string", "enum": [ "actor", "partner" ], "default": "actor" }, "lacp-mode": { "type": "string", "enum": [ "active", "passive" ], "default": "passive" }, "lacp-port-admin-key": { "type": "integer", "minimum": 1, "maximum": 65535, "default": 1 }, "lacp-port-priority": { "type": "integer", "minimum": 1, "maximum": 65535, "default": 32768 }, "lacp-system-priority": { "type": "integer", "minimum": 1, "maximum": 65535, "default": 32768 }, "lacp-pchan-admin-key": { "type": "integer", "minimum": 1, "maximum": 65535 }, "lacp-timeout": { "type": "string", "enum": [ "short", "long" ], "default": "long" } } }, "lldp-interface-config": { "type": "object", "properties": { "lldp-admin-status": { "type": "string", "enum": [ "rx", "tx", "rx-tx" ] }, "lldp-basic-tlv-mgmt-ip-v4": { "type": "boolean", "default": true }, "lldp-basic-tlv-mgmt-ip-v6": { "type": "boolean", "default": false }, "lldp-basic-tlv-port-descr": { "type": "boolean", "default": true }, "lldp-basic-tlv-sys-capab": { "type": "boolean", "default": true }, "lldp-basic-tlv-sys-descr": { "type": "boolean", "default": true }, "lldp-basic-tlv-sys-name": { "type": "boolean", "default": true }, "lldp-dot1-tlv-proto-ident": { "type": "boolean", "default": true }, "lldp-dot1-tlv-proto-vid": { "type": "boolean", "default": true }, "lldp-dot1-tlv-pvid": { "type": "boolean", "default": true }, "lldp-dot1-tlv-vlan-name": { "type": "boolean", "default": true }, "lldp-dot3-tlv-link-agg": { "type": "boolean", "default": true }, "lldp-dot3-tlv-mac-phy": { "type": "boolean", "default": true }, "lldp-dot3-tlv-max-frame": { "type": "boolean", "default": true }, "lldp-dot3-tlv-poe": { "type": "boolean", "default": true }, "lldp-med-location-civic-addr": { "type": "object", "properties": { "lldp-med-location-civic-addr-admin-status": { "type": "boolean", "default": false }, "lldp-med-location-civic-country-code": { "type": "string" }, "lldp-med-location-civic-device-type": { "type": "integer" }, "lldp-med-location-civic-ca": { "type": "array", "items": { "type": "object", "properties": { "lldp-med-location-civic-ca-type": { "type": "integer", "maximum": 255, "minimum": 0 }, "lldp-med-location-civic-ca-value": { "type": "string", "maxLength": 32, "minLength": 1 } } } } } }, "lldp-med-notification": { "type": "boolean", "default": false }, "lldp-med-tlv-ext-poe": { "type": "boolean", "default": true }, "lldp-med-tlv-inventory": { "type": "boolean", "default": true }, "lldp-med-tlv-location": { "type": "boolean", "default": true }, "lldp-med-tlv-med-cap": { "type": "boolean", "default": true }, "lldp-med-tlv-network-policy": { "type": "boolean", "default": true }, "lldp-notification": { "type": "boolean", "default": false } } }, "ip-arp-inspect-port": { "type": "object", "properties": { "rate-limit-pps": { "type": "integer", "minimum": 0, "maximum": 65535 }, "trusted": { "type": "boolean" } } }, "rate-limit-port": { "type": "object", "properties": { "ingress-kbps": { "type": "integer", "minimum": 64, "maximum": 1000000000 }, "egress-kbps": { "type": "integer", "minimum": 64, "maximum": 1000000000 } } }, "ip-source-guard-port": { "type": "object", "properties": { "rule": { "type": "string", "enum": [ "sip", "sip-mac" ] }, "mode": { "type": "string", "enum": [ "mac", "acl" ] }, "max-binding": { "type": "integer", "minimum": 1, "maximum": 65535 } } }, "acl": { "type": "array", "items": { "type": "object", "properties": { "acl-inf-policy-preference": { "type": "integer", "minimum": 1, "maximum": 64, "default": 1 }, "acl-inf-policy-ingress": { "type": "string", "maxLength": 32, "minLength": 1, "examples": [ "blacklisted-macs" ] }, "acl-inf-counters-ingress": { "type": "boolean", "default": false }, "acl-inf-policy-egress": { "type": "string", "maxLength": 32, "minLength": 1, "examples": [ "blacklisted-macs" ] }, "acl-inf-counters-egress": { "type": "boolean", "default": false } } } }, "voice-vlan-intf-config": { "type": "object", "properties": { "voice-vlan-intf-mode": { "type": "string", "default": "auto", "enum": [ "none", "manual", "auto" ] }, "voice-vlan-intf-priority": { "type": "integer", "default": 6, "minimum": 0, "maximum": 6 }, "voice-vlan-intf-detect-voice": { "type": "string", "default": "oui", "enum": [ "oui", "lldp" ] }, "voice-vlan-intf-security": { "type": "boolean", "default": false } } }, "dhcp-snoop-port": { "type": "object", "properties": { "dhcp-snoop-port-trust": { "type": "boolean", "default": false }, "dhcp-snoop-port-client-limit": { "type": "integer", "minimum": 1 }, "dhcp-snoop-port-circuit-id": { "type": "string", "minLength": 1, "maxLength": 32 } } }, "bpdu-guard": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "auto-recovery-secs": { "type": "integer", "default": 300 } } }, "edge-port": { "type": "boolean", "default": false "storm-control": { "type": "object", "properties": null, "broadcast-pps": { "type": "integer", "minimum": 0, "default": 0 }, "multicast-pps": { "type": "integer", "minimum": 0, "default": 0 }, "unknown-unicast-pps": { "type": "integer", "minimum": 0, "default": 0 } } } }, "switch.arp-inspect": { "type": "object", "properties": { "ip-arp-inspect": { "type": "boolean", "default": false }, "validate-dst-mac": { "type": "boolean" }, "validate-ip": { "type": "boolean" }, "validate-allow-zeros": { "type": "boolean" }, "validate-src-mac": { "type": "boolean" } } }, "switch.ip-source-guard": { "type": "object", "properties": { "bindings": { "type": "array", "items": { "type": "object", "properties": { "binding-mode": { "type": "string", "enum": [ "mac", "acl" ] }, "binding-mac": { "type": "string", "format": "uc-mac" }, "binding-vlans": { "type": "integer" }, "binding-ip": { "type": "string", "format": "ipv4" }, "binding-port": { "type": "string" } } } } } }, "switch.rtevent": { "type": "object", "properties": { "port-status": { "type": "object", "properties": { "enabled": { "type": "boolean", "default": false }, "sub-events": { "type": "object", "properties": { "wired.carrier-down": { "type": "boolean", "default": false }, "wired.carrier-up": { "type": "boolean", "default": false } } } } }, "module": { "type": "object", "properties": { "enabled": { "type": "boolean", "default": false }, "sub-events": { "type": "object", "properties": { "module.plugout": { "type": "boolean", "default": false }, "module.plugin": { "type": "boolean", "default": false } } } } }, "stp": { "type": "object", "properties": { "enabled": { "type": "boolean", "default": false }, "sub-events": { "type": "object", "properties": { "stp.loop-detected": { "type": "boolean", "default": false }, "stp.loop-cleared": { "type": "boolean", "default": false }, "stp.state-change": { "type": "boolean", "default": false } } } } }, "rstp": { "type": "object", "properties": { "enabled": { "type": "boolean", "default": false }, "sub-events": { "type": "object", "properties": { "rstp.loop-detected": { "type": "boolean", "default": false }, "rstp.loop-cleared": { "type": "boolean", "default": false }, "rstp.state-change": { "type": "boolean", "default": false } } } } }, "fw-upgrade": { "type": "object", "properties": { "enabled": { "type": "boolean", "default": false }, "sub-events": { "type": "object", "properties": { "upg.download-start": { "type": "boolean", "default": false }, "upg.download-in-progress": { "type": "boolean", "default": false }, "upg.download-failed": { "type": "boolean", "default": false }, "upg.validation-start": { "type": "boolean", "default": false }, "upg.validation-success": { "type": "boolean", "default": false }, "upg.validation-failed": { "type": "boolean", "default": false }, "upg.backup-current-firmware": { "type": "boolean", "default": false }, "upg.install-start": { "type": "boolean", "default": false }, "upg.install-failed": { "type": "boolean", "default": false }, "upg.reboot-start": { "type": "boolean", "default": false }, "upg.success": { "type": "boolean", "default": false } } } } }, "dhcp-snooping": { "type": "object", "properties": { "enabled": { "type": "boolean", "default": false }, "sub-events": { "type": "object", "properties": { "dhcp-snooping.violation-detected": { "type": "boolean", "default": false }, "dhcp-snooping.violation-cleared": { "type": "boolean", "default": false } } } } } } }, "switch.acl": { "type": "array", "uniqueItems": true, "items": { "type": "object", "properties": { "acl-name": { "type": "string", "maxLength": 32, "minLength": 1 }, "acl-type": { "type": "string", "enum": [ "ipv4", "ipv6", "ipv4Ext", "ipv6Ext", "mac", "arp" ] }, "acl-rules": { "type": "object", "additionalProperties": { "type": "array", "uniqueItems": true, "items": { "type": "object", "properties": { "acl-rule-action": { "type": "string", "enum": [ "permit", "deny" ] }, "acl-source-macaddress": { "type": "string", "format": "uc-mac" }, "acl-source-macbitmask": { "type": "string", "format": "uc-mac" }, "acl-dest-macaddress": { "type": "string", "format": "uc-mac" }, "acl-dest-macbitmask": { "type": "string", "format": "uc-mac" }, "acl-packet-format": { "type": "string", "enum": [ "any", "untagged-eth2", "untagged-802.3", "tagged-eth2", "tagged-802.3" ] }, "acl-vlanid": { "type": "integer", "minimum": 1, "maximum": 4094 }, "acl-vid-bitmask": { "type": "integer", "minimum": 1, "maximum": 4095 }, "acl-ethertype": { "type": "string", "default": "800" }, "acl-ethertype-bitmask": { "type": "string", "default": "FFFF" }, "acl-cos": { "type": "integer", "minimum": 0, "maximum": 7 }, "acl-cos-bitmask": { "type": "integer", "minimum": 0, "maximum": 7 }, "acl-ipv4-source-address": { "type": "string", "format": "ipv4" }, "acl-ipv4-source-subnetmask": { "type": "string", "format": "ipv4" }, "acl-ipv4-dest-address": { "type": "string", "format": "ipv4" }, "acl-ipv4-dest-subnetmask": { "type": "string", "format": "ipv4" }, "acl-ip-proto": { "type": "integer", "minimum": 0, "maximum": 255 } } } } } } } }, "switch": { "type": "object", "properties": { "port-mirror": { "type": "array", "items": { "type": "object", "properties": { "monitor-ports": { "type": "array", "items": { "type": "string" } }, "analysis-port": { "type": "string" } } } }, "loop-detection": { "type": "object", "properties": { "protocol": { "type": "string", "enum": [ "none", "stp", "rstp", "mstp", "pvstp", "rpvstp" ], "default": "rstp" }, "roles": { "type": "array", "items": { "type": "string", "enum": [ "upstream", "downstream" ] } }, "instances": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "integer" }, "enabled": { "type": "boolean", "default": true }, "priority": { "type": "integer", "default": 32768 }, "forward_delay": { "type": "integer", "default": 15 }, "hello_time": { "type": "integer", "default": 2 }, "max_age": { "type": "integer", "default": 20 } } } } } }, "ieee8021x": { "type": "object", "properties": { "auth-control-enable": { "type": "boolean", "default": false }, "radius": { "type": "array", "items": { "type": "object", "properties": { "server-host": { "type": "string", "examples": [ "192.168.1.1", "somehost.com" ] }, "server-authentication-port": { "type": "integer", "maximum": 65535, "minimum": 1 }, "server-key": { "type": "string", "examples": [ "somepassword" ] }, "server-priority": { "type": "integer", "maximum": 64, "minimum": 1 } } } }, "dynamic-authorization": { "type": "object", "properties": { "auth-type": { "type": "string", "enum": [ "all", "any", "session-key" ] }, "bounce-port-ignore": { "type": "boolean", "default": false }, "disable-port-ignore": { "type": "boolean", "default": false }, "ignore-server-key": { "type": "boolean", "default": false }, "ignore-session-key": { "type": "boolean", "default": false }, "server-key": { "type": "string" }, "client": { "type": "array", "items": { "type": "object", "properties": { "address": { "type": "string" }, "server-key": { "type": "string" } } } } } } } }, "port-isolation": { "type": "object", "properties": { "sessions": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "integer" }, "uplink": { "type": "object", "properties": { "interface-list": { "type": "array", "items": { "type": "string" } } } }, "downlink": { "type": "object", "properties": { "interface-list": { "type": "array", "items": { "type": "string" } } } } } } } } }, "trunk-balance-method": { "type": "string", "enum": [ "dst-ip", "dst-mac", "src-dst-ip", "src-dst-mac", "src-ip", "src-mac" ], "default": "src-dst-mac" }, "jumbo-frames": { "type": "boolean", "default": false }, "dhcp-snooping": { "type": "object", "properties": { "dhcp-snoop-enable": { "type": "boolean", "default": false }, "dhcp-snoop-rate-limit": { "type": "integer", "minimum": 1, "maximum": 2048 }, "dhcp-snoop-mac-verify": { "type": "boolean", "default": false }, "dhcp-snoop-inf-opt-82": { "type": "boolean", "default": false }, "dhcp-snoop-inf-opt-encode-subopt": { "type": "boolean", "default": false }, "dhcp-snoop-inf-opt-remoteid": { "type": "string", "maxLength": 32, "minLength": 1 }, "dhcp-snoop-inf-opt-policy": { "type": "string", "enum": [ "drop", "keep", "replace" ] } } }, "mvr-config": { "type": "object", "properties": { "mvr-enable": { "type": "boolean", "default": false }, "mvr-proxy-query-intvl": { "type": "integer", "default": 125, "maximum": 43200, "minimum": 1 }, "mvr-proxy-switching": { "type": "boolean", "default": false }, "mvr-robustness-val": { "type": "integer", "default": 2, "maximum": 255, "minimum": 1 }, "mvr-source-port-mode": { "type": "string", "default": "forward", "enum": [ "dynamic", "forward" ] } } }, "mvr-domain-config": { "type": "array", "items": { "type": "object", "properties": { "mvr-domain-id": { "type": "integer", "minimum": 1, "maximum": 10, "default": 1 }, "mvr-domain-enable": { "type": "boolean", "default": false }, "mvr-domain-vlan-id": { "type": "integer", "minimum": 1, "maximum": 4094, "default": 1 }, "mvr-domain-upstream-sip": { "type": "string", "format": "ipv4", "examples": [ "192.168.0.5" ] } } } }, "mvr-group-config": { "type": "array", "items": { "type": "object", "properties": { "mvr-group-name": { "type": "string", "maxLength": 16, "minLength": 1 }, "mvr-group-range-start": { "type": "string", "format": "ipv4" }, "mvr-group-range-end": { "type": "string", "format": "ipv4" }, "mvr-group-assoc-domain": { "descpription": "Map the MVR Group to a secific domain. There can be many profiles under a single domain", "type": "array", "items": { "type": "integer", "maximum": 10, "minimum": 1 } } }, "required": [ "mvr-group-name", "mvr-group-range-start", "mvr-group-range-end", "mvr-group-assoc-domain" ] } }, "lldp-global-config": { "type": "object", "properties": { "lldp-enable": { "type": "boolean", "default": true }, "lldp-holdtime-multiplier": { "type": "integer", "default": 4 }, "lldp-med-fast-start-count": { "type": "integer", "default": 4 }, "lldp-refresh-interval": { "type": "integer", "default": 30 }, "lldp-reinit-delay": { "type": "integer", "default": 2 }, "lldp-tx-delay": { "type": "integer", "maximum": 8192, "minimum": 1 }, "lldp-notification-interval": { "type": "integer", "default": 5 } } }, "mc-lag": { "type": "boolean", "default": false }, "mclag-config": { "type": "object", "properties": { "mclag-domains": { "type": "array", "items": { "type": "object", "properties": { "mclag-domain": { "type": "integer", "minimum": 1, "maximum": 1024, "default": 1 }, "peer-link": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "port", "trunk-group" ], "default": "trunk-group" }, "value": { "type": "integer", "minimum": 1, "maximum": 64 } } }, "mclag-group": { "type": "object", "properties": { "group-id": { "type": "integer", "minimum": 1, "maximum": 128 }, "members": { "type": "array", "items": { "type": "string", "examples": [ "eth0", "eth1" ] } }, "lacp-config": { "type": "object", "properties": { "lacp-enable": { "type": "boolean", "default": true }, "lacp-role": { "type": "string", "enum": [ "actor", "partner" ], "default": "actor" }, "lacp-timeout": { "type": "string", "enum": [ "short", "long" ], "default": "long" } } } } }, "system-priority": { "type": "integer", "minimum": 1, "maximum": 65535, "default": 32768 }, "dual-active-detection": { "type": "boolean", "default": true } } } } } }, "voice-vlan-config": { "type": "object", "properties": { "voice-vlan-id": { "type": "integer", "minimum": 1, "maximum": 4094 }, "voice-vlan-ageing-time": { "type": "integer", "minimum": 5, "maximum": 43200, "default": 1440 }, "voice-vlan-oui-config": { "type": "array", "items": { "type": "object", "properties": { "voice-vlan-oui-mac": { "type": "string", "format": "uc-mac" }, "voice-vlan-oui-mask": { "type": "string", "format": "uc-mac" }, "voice-vlan-oui-description": { "type": "string", "maxLength": 32, "minLength": 1, "examples": [ "A VoIP Phone" ] } } } } } }, "arp-inspect": { "$ref": "#/$defs/switch.arp-inspect" }, "ip-source-guard": { "$ref": "#/$defs/switch.ip-source-guard" }, "rt-events": { "$ref": "#/$defs/switch.rtevent" }, "acl": { "$ref": "#/$defs/switch.acl" }, "dns": { "type": "array", "items": { "type": "string" } } } }, "interface.vlan": { "type": "object", "properties": { "id": { "type": "integer", "maximum": 4094 }, "range-start": { "decription": "Start vlan-id of the specified range", "type": "integer", "maximum": 4094 }, "range-end": { "decription": "End vlan-id of the specified range", "type": "integer", "maximum": 4094 }, "proto": { "decription": "The L2 vlan tag that shall be added (1q,1ad)", "type": "string", "enum": [ "802.1ad", "802.1q" ], "default": "802.1q" }, "stp-instance": { "decription": "MSTP instance identifier of the vlan. This field does nothing if MSTP is not enabled.", "type": "integer" } } }, "interface.bridge": { "type": "object", "properties": { "mtu": { "type": "integer", "maximum": 65535, "minimum": 256, "examples": [ 1500 ] }, "tx-queue-len": { "type": "integer", "examples": [ 5000 ] }, "isolate-ports": { "type": "boolean", "default": false } } }, "interface.ethernet": { "type": "object", "properties": { "select-ports": { "type": "array", "items": { "type": "string", "examples": [ "LAN1", "LAN2", "LAN3", "LAN4", "LAN*", "WAN*", "*" ] } }, "multicast": { "type": "boolean", "default": true }, "learning": { "type": "boolean", "default": true }, "isolate": { "type": "boolean", "default": false }, "macaddr": { "type": "string", "format": "uc-mac" }, "reverse-path-filter": { "type": "boolean", "default": false }, "vlan-tag": { "type": "string", "enum": [ "tagged", "un-tagged", "auto" ], "default": "auto" } } }, "interface.ipv4.arp-inspect": { "type": "object", "properties": { "vlan-enable": { "type": "boolean" }, "vlan-acl-rule": { "type": "string", "maxLength": 32, "minLength": 1 }, "vlan-acl-nodhcp-bindings": { "type": "boolean" } } }, "interface.ipv4.dhcp": { "type": "object", "properties": { "lease-first": { "type": "integer", "examples": [ 10 ] }, "lease-count": { "type": "integer", "examples": [ 100 ] }, "lease-time": { "type": "string", "format": "uc-timeout", "default": "6h" }, "relay-server": { "type": "string", "format": "ipv4", "example": "192.168.2.1" }, "circuit-id-format": { "type": "string", "example": [ "\\{Interface\\}:\\{VLAN-ID\\}}" ] } } }, "interface.ipv4.dhcp-lease": { "type": "object", "properties": { "macaddr": { "type": "string", "format": "uc-mac", "examples": [ "00:11:22:33:44:55" ] }, "static-lease-offset": { "type": "integer", "examples": [ 10 ] }, "lease-time": { "type": "string", "format": "uc-timeout", "default": "6h" }, "publish-hostname": { "type": "boolean", "default": true } } }, "interface.ipv4.port-forward": { "type": "object", "properties": { "protocol": { "type": "string", "enum": [ "tcp", "udp", "any" ], "default": "any" }, "external-port": { "type": [ "integer", "string" ], "minimum": 0, "maximum": 65535, "format": "uc-portrange" }, "internal-address": { "type": "string", "format": "ipv4", "example": "0.0.0.120" }, "internal-port": { "type": [ "integer", "string" ], "minimum": 0, "maximum": 65535, "format": "uc-portrange" } }, "required": [ "external-port", "internal-address" ] }, "interface.ipv4": { "type": "object", "properties": { "addressing": { "type": "string", "enum": [ "dynamic", "static", "none" ], "examples": [ "static" ] }, "subnet": { "type": "array", "items": { "type": "object", "properties": { "prefix": { "type": "string", "format": "uc-cidr4", "examples": [ "192.168.1.0/24" ] }, "vrf": { "type": "integer" } } } }, "gateway": { "type": "array", "items": { "type": "object", "properties": { "prefix": { "type": "string", "format": "uc-cidr4", "examples": [ "192.168.1.0/24" ] }, "nexthop": { "type": "string", "format": "ipv4", "examples": [ "192.168.1.1" ] }, "vrf": { "type": "integer" }, "metric": { "type": "number" } } } }, "broadcast": { "type": "array", "items": { "type": "object", "properties": { "prefix": { "type": "string", "format": "uc-cidr4", "examples": [ "192.168.1.0/24" ] }, "vrf": { "type": "integer" } } } }, "multicast": { "type": "object", "properties": { "unknown-multicast-flood-control": { "type": "boolean", "default": true }, "igmp": { "type": "object", "properties": { "snooping-enable": { "type": "boolean", "default": true }, "version": { "type": "integer", "enum": [ 1, 2, 3 ], "examples": [ 3 ], "default": 3 }, "querier-enable": { "type": "boolean", "default": false }, "fast-leave-enable": { "type": "boolean", "default": false }, "query-interval": { "type": "integer", "default": 1000 }, "last-member-query-interval": { "type": "integer", "default": 1000 }, "max-response-time": { "type": "integer", "default": 10 }, "static-mcast-groups": { "type": "array", "items": { "type": "object", "properties": { "egress-ports": { "type": "array", "items": { "type": "string" } }, "address": { "type": "string", "format": "ipv4", "examples": [ "225.0.0.1" ] } } } } } }, "mvr": { "type": "object", "properties": { "mvr-intf-mvr-role": { "type": "string", "enum": [ "none", "source", "receiver" ] }, "mvr-intf-immed-leave": { "type": "string", "enum": [ "none", "by-host-ip", "by-group" ], "default": "by-group" }, "mvr-intf-assoc-domain": { "type": "integer", "maximum": 10, "minimum": 1 } }, "required": [ "mvr-intf-mvr-role", "mvr-intf-immed-leave", "mvr-intf-assoc-domain" ] } } }, "send-hostname": { "type": "boolean", "default": true, "examples": [ true ] }, "use-dns": { "type": "array", "items": { "type": "string", "format": "ipv4", "examples": [ "8.8.8.8", "4.4.4.4" ] } }, "dhcp-snoop-vlan-enable": { "type": "boolean", "default": false }, "ip-arp-inspect-vlan": { "$ref": "#/$defs/interface.ipv4.arp-inspect" }, "dhcp": { "$ref": "#/$defs/interface.ipv4.dhcp" }, "dhcp-leases": { "type": "array", "items": { "$ref": "#/$defs/interface.ipv4.dhcp-lease" } }, "port-forward": { "type": "array", "items": { "$ref": "#/$defs/interface.ipv4.port-forward" } } } }, "interface.ipv6.dhcpv6": { "type": "object", "properties": { "mode": { "type": "string", "enum": [ "hybrid", "stateless", "stateful", "relay" ] }, "announce-dns": { "type": "array", "items": { "type": "string", "format": "ipv6" } }, "filter-prefix": { "type": "string", "format": "uc-cidr6", "default": "::/0" } } }, "interface.ipv6.port-forward": { "type": "object", "properties": { "protocol": { "type": "string", "enum": [ "tcp", "udp", "any" ], "default": "any" }, "external-port": { "type": [ "integer", "string" ], "minimum": 0, "maximum": 65535, "format": "uc-portrange" }, "internal-address": { "type": "string", "format": "ipv6", "example": "::1234:abcd" }, "internal-port": { "type": [ "integer", "string" ], "minimum": 0, "maximum": 65535, "format": "uc-portrange" } }, "required": [ "external-port", "internal-address" ] }, "interface.ipv6.traffic-allow": { "type": "object", "properties": { "protocol": { "type": "string", "default": "any" }, "source-address": { "type": "string", "format": "uc-cidr6", "example": "2001:db8:1234:abcd::/64", "default": "::/0" }, "source-ports": { "type": "array", "minItems": 1, "items": { "type": [ "integer", "string" ], "minimum": 0, "maximum": 65535, "format": "uc-portrange" } }, "destination-address": { "type": "string", "format": "ipv6", "example": "::1000" }, "destination-ports": { "type": "array", "minItems": 1, "items": { "type": [ "integer", "string" ], "minimum": 0, "maximum": 65535, "format": "uc-portrange" } } }, "required": [ "destination-address" ] }, "interface.ipv6": { "type": "object", "properties": { "addressing": { "type": "string", "enum": [ "dynamic", "static" ] }, "subnet": { "type": "string", "format": "uc-cidr6", "examples": [ "auto/64" ] }, "gateway": { "type": "string", "format": "ipv6", "examples": [ "2001:db8:123:456::1" ] }, "prefix-size": { "type": "integer", "maximum": 64, "minimum": 0 }, "dhcpv6": { "$ref": "#/$defs/interface.ipv6.dhcpv6" }, "port-forward": { "type": "array", "items": { "$ref": "#/$defs/interface.ipv6.port-forward" } }, "traffic-allow": { "type": "array", "items": { "$ref": "#/$defs/interface.ipv6.traffic-allow" } } } }, "interface.broad-band.wwan": { "type": "object", "properties": { "protocol": { "type": "string", "const": "wwan" }, "modem-type": { "type": "string", "enum": [ "qmi", "mbim", "wwan" ] }, "access-point-name": { "type": "string" }, "authentication-type": { "type": "string", "enum": [ "none", "pap", "chap", "pap-chap" ], "default": "none" }, "pin-code": { "type": "string" }, "user-name": { "type": "string" }, "password": { "type": "string" }, "packet-data-protocol": { "type": "string", "enum": [ "ipv4", "ipv6", "dual-stack" ], "default": "dual-stack" } } }, "interface.broad-band.pppoe": { "type": "object", "properties": { "protocol": { "type": "string", "const": "pppoe" }, "user-name": { "type": "string" }, "password": { "type": "string" } } }, "interface.broad-band": { "oneOf": [ { "$ref": "#/$defs/interface.broad-band.wwan" }, { "$ref": "#/$defs/interface.broad-band.pppoe" } ] }, "interface.tunnel.mesh": { "type": "object", "properties": { "proto": { "type": "string", "const": "mesh" } } }, "interface.tunnel.vxlan": { "type": "object", "properties": { "proto": { "type": "string", "const": "vxlan" }, "peer-address": { "type": "string", "format": "ipv4", "example": "192.168.100.1" }, "peer-port": { "type": "integer", "maximum": 65535, "minimum": 1, "examples": [ 4789 ] } } }, "interface.tunnel.l2tp": { "type": "object", "properties": { "proto": { "type": "string", "const": "l2tp" }, "server": { "type": "string", "format": "ipv4", "example": "192.168.100.1" }, "user-name": { "type": "string" }, "password": { "type": "string" } } }, "interface.tunnel.gre": { "type": "object", "properties": { "proto": { "type": "string", "const": "gre" }, "peer-address": { "type": "string", "format": "ipv4", "example": "192.168.100.1" }, "dhcp-healthcheck": { "type": "boolean", "default": false }, "dont-fragment": { "type": "boolean", "default": false } } }, "interface.tunnel.gre6": { "type": "object", "properties": { "proto": { "type": "string", "const": "gre6" }, "peer-address": { "type": "string", "format": "ipv6", "example": "2405:200:802:600:61::1" }, "dhcp-healthcheck": { "type": "boolean", "default": false } } }, "interface.tunnel": { "oneOf": [ { "$ref": "#/$defs/interface.tunnel.mesh" }, { "$ref": "#/$defs/interface.tunnel.vxlan" }, { "$ref": "#/$defs/interface.tunnel.l2tp" }, { "$ref": "#/$defs/interface.tunnel.gre" }, { "$ref": "#/$defs/interface.tunnel.gre6" } ] }, "interface": { "type": "object", "properties": { "name": { "type": "string", "examples": [ "LAN" ] }, "role": { "type": "string", "enum": [ "upstream", "downstream" ] }, "isolate-hosts": { "type": "boolean" }, "metric": { "type": "integer", "maximum": 4294967295, "minimum": 0 }, "mtu": { "type": "integer", "maximum": 1500, "minimum": 1280 }, "services": { "type": "array", "items": { "type": "string", "examples": [ "ssh", "lldp" ] } }, "vlan-awareness": { "type": "object", "properties": { "first": { "type": "integer" }, "last": { "type": "integer" } } }, "vlan": { "$ref": "#/$defs/interface.vlan" }, "bridge": { "$ref": "#/$defs/interface.bridge" }, "ethernet": { "type": "array", "items": { "$ref": "#/$defs/interface.ethernet" } }, "ipv4": { "$ref": "#/$defs/interface.ipv4" }, "ipv6": { "$ref": "#/$defs/interface.ipv6" }, "broad-band": { "$ref": "#/$defs/interface.broad-band" }, "tunnel": { "$ref": "#/$defs/interface.tunnel" } } }, "service.lldp": { "type": "object", "properties": { "describe": { "type": "string", "default": "uCentral Access Point" }, "location": { "type": "string", "default": "uCentral Network" } } }, "service.ssh": { "type": "object", "properties": { "port": { "type": "integer", "maximum": 65535, "default": 22 }, "authorized-keys": { "type": "array", "items": { "type": "string", "examples": [ "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQC0ghdSd2D2y08TFowZLMZn3x1/Djw3BkNsIeHt/Z+RaXwvfV1NQAnNdaOngMT/3uf5jZtYxhpl+dbZtRhoUPRvKflKBeFHYBqjZVzD3r4ns2Ofm2UpHlbdOpMuy9oeTSCeF0IKZZ6szpkvSirQogeP2fe9KRkzQpiza6YxxaJlWw== user@example", "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJ4FDjyCsg+1Mh2C5G7ibR3z0Kw1dU57kfXebLRwS6CL bob@work", "ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBP/JpJ/KHtKKImzISBDwLO0/EwytIr4pGZQXcP6GCSHchLMyfjf147KNlF9gC+3FibzqKH02EiQspVhRgfuK6y0= alice@home" ] } }, "password-authentication": { "type": "boolean", "default": true }, "enable": { "type": "boolean" } } }, "service.ntp": { "type": "object", "properties": { "servers": { "type": "array", "items": { "type": "string", "format": "uc-host" }, "examples": [ "0.openwrt.pool.ntp.org" ] }, "local-server": { "type": "boolean", "examples": [ true ] } } }, "service.mdns": { "type": "object", "properties": { "enable": { "type": "boolean", "default": false } } }, "service.rtty": { "type": "object", "properties": { "host": { "type": "string", "format": "uc-host", "examples": [ "192.168.1.10" ] }, "port": { "type": "integer", "maximum": 65535, "default": 5912 }, "token": { "type": "string", "maxLength": 32, "minLength": 32, "examples": [ "01234567890123456789012345678901" ] }, "mutual-tls": { "type": "boolean", "default": true } } }, "service.log": { "type": "object", "properties": { "host": { "type": "string", "format": "uc-host", "examples": [ "192.168.1.10" ] }, "port": { "type": "integer", "maximum": 65535, "minimum": 100, "examples": [ 2000 ] }, "proto": { "type": "string", "enum": [ "tcp", "udp" ], "default": "udp" }, "size": { "type": "integer", "minimum": 32, "default": 1000 }, "priority": { "type": "integer", "minimum": 0, "default": 7 } } }, "service.http": { "type": "object", "properties": { "http-port": { "type": "integer", "maximum": 65535, "minimum": 1, "default": 80 }, "enable": { "type": "boolean" } } }, "service.igmp": { "type": "object", "properties": { "enable": { "type": "boolean", "default": false } } }, "service.radius-proxy": { "type": "object", "properties": { "proxy-secret": { "type": "string", "default": "secret" }, "realms": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "protocol": { "type": "string", "enum": [ "radsec" ], "default": "radsec" }, "realm": { "type": "array", "items": { "type": "string", "default": "*" } }, "auto-discover": { "type": "boolean", "default": false }, "host": { "type": "string", "format": "uc-host", "examples": [ "192.168.1.10" ] }, "port": { "type": "integer", "maximum": 65535, "default": 2083 }, "secret": { "type": "string" }, "use-local-certificates": { "type": "boolean", "default": false }, "ca-certificate": { "type": "string" }, "certificate": { "type": "string" }, "private-key": { "type": "string" }, "private-key-password": { "type": "string" } } }, { "type": "object", "properties": { "protocol": { "type": "string", "enum": [ "radius" ] }, "realm": { "type": "array", "items": { "type": "string", "default": "*" } }, "auth-server": { "type": "string", "format": "uc-host", "examples": [ "192.168.1.10" ] }, "auth-port": { "type": "integer", "maximum": 65535, "minimum": 1024, "examples": [ 1812 ] }, "auth-secret": { "type": "string", "examples": [ "secret" ] }, "acct-server": { "type": "string", "format": "uc-host", "examples": [ "192.168.1.10" ] }, "acct-port": { "type": "integer", "maximum": 65535, "minimum": 1024, "examples": [ 1812 ] }, "acct-secret": { "type": "string", "examples": [ "secret" ] } } }, { "type": "object", "properties": { "protocol": { "type": "string", "enum": [ "block" ] }, "realm": { "type": "array", "items": { "type": "string", "default": "*" } }, "message": { "type": "string", "items": { "type": "string", "default": "blocked" } } } } ] } } } }, "service.online-check": { "type": "object", "properties": { "ping-hosts": { "type": "array", "items": { "type": "string", "format": "uc-host", "examples": [ "192.168.1.10" ] } }, "download-hosts": { "type": "array", "items": { "type": "string", "examples": [ "www.example.org" ] } }, "check-interval": { "type": "number", "default": 60 }, "check-threshold": { "type": "number", "default": 1 }, "action": { "type": "array", "items": { "type": "string", "enum": [ "leds" ] } } } }, "service.data-plane": { "type": "object", "properties": { "ingress-filters": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "program": { "type": "string", "format": "uc-base64" } } } } } }, "service.quality-of-service.class-selector": { "type": "string", "enum": [ "CS0", "CS1", "CS2", "CS3", "CS4", "CS5", "CS6", "CS7", "AF11", "AF12", "AF13", "AF21", "AF22", "AF23", "AF31", "AF32", "AF33", "AF41", "AF42", "AF43", "DF", "EF", "VA", "LE" ] }, "service.quality-of-service": { "type": "object", "properties": { "select-ports": { "type": "array", "items": { "type": "string", "default": "WAN" } }, "bandwidth-up": { "type": "integer", "default": 0 }, "bandwidth-down": { "type": "integer", "default": 0 }, "bulk-detection": { "type": "object", "properties": { "dscp": { "$ref": "#/$defs/service.quality-of-service.class-selector", "default": "CS0" }, "packets-per-second": { "type": "number", "default": 0 } } }, "services": { "type": "array", "items": { "type": "string" } }, "classifier": { "type": "array", "items": { "type": "object", "properties": { "dscp": { "$ref": "#/$defs/service.quality-of-service.class-selector", "default": "CS1" }, "ports": { "type": "array", "items": { "type": "object", "properties": { "protocol": { "type": "string", "enum": [ "any", "tcp", "udp" ], "default": "any" }, "port": { "type": "integer" }, "range-end": { "type": "integer" }, "reclassify": { "type": "boolean", "default": true } } } }, "dns": { "type": "array", "items": { "type": "object", "properties": { "fqdn": { "type": "string", "format": "uc-fqdn" }, "suffix-matching": { "type": "boolean", "default": true }, "reclassify": { "type": "boolean", "default": true } } } } } } } } }, "service.wireguard-overlay": { "type": "object", "properties": { "proto": { "type": "string", "const": "wireguard-overlay" }, "private-key": { "type": "string" }, "peer-port": { "type": "integer", "maximum": 65535, "minimum": 1, "default": 3456 }, "peer-exchange-port": { "type": "integer", "maximum": 65535, "minimum": 1, "default": 3458 }, "root-node": { "type": "object", "properties": { "key": { "type": "string" }, "endpoint": { "type": "string", "format": "uc-ip" }, "ipaddr": { "type": "array", "items": { "type": "string", "format": "uc-ip" } } } }, "hosts": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "key": { "type": "string" }, "endpoint": { "type": "string", "format": "uc-ip" }, "subnet": { "type": "array", "items": { "type": "string", "format": "uc-cidr" } }, "ipaddr": { "type": "array", "items": { "type": "string", "format": "uc-ip" } } } } }, "vxlan": { "type": "object", "properties": { "port": { "type": "integer", "maximum": 65535, "minimum": 1, "default": 4789 }, "mtu": { "type": "integer", "maximum": 65535, "minimum": 256, "default": 1420 }, "isolate": { "type": "boolean", "default": true } } } } }, "service.gps": { "type": "object", "properties": { "adjust-time": { "type": "boolean", "default": false }, "baud-rate": { "type": "integer", "enum": [ 2400, 4800, 9600, 19200 ] } } }, "service.telnet": { "type": "object", "properties": { "enable": { "type": "boolean" } } }, "service.https": { "type": "object", "properties": { "https-port": { "type": "integer", "maximum": 65535, "minimum": 1, "default": 443 }, "enable": { "type": "boolean" } } }, "service": { "type": "object", "properties": { "lldp": { "$ref": "#/$defs/service.lldp" }, "ssh": { "$ref": "#/$defs/service.ssh" }, "ntp": { "$ref": "#/$defs/service.ntp" }, "mdns": { "$ref": "#/$defs/service.mdns" }, "rtty": { "$ref": "#/$defs/service.rtty" }, "log": { "$ref": "#/$defs/service.log" }, "http": { "$ref": "#/$defs/service.http" }, "igmp": { "$ref": "#/$defs/service.igmp" }, "radius-proxy": { "$ref": "#/$defs/service.radius-proxy" }, "online-check": { "$ref": "#/$defs/service.online-check" }, "data-plane": { "$ref": "#/$defs/service.data-plane" }, "quality-of-service": { "$ref": "#/$defs/service.quality-of-service" }, "wireguard-overlay": { "$ref": "#/$defs/service.wireguard-overlay" }, "gps": { "$ref": "#/$defs/service.gps" }, "telnet": { "$ref": "#/$defs/service.telnet" }, "https": { "$ref": "#/$defs/service.https" } } }, "metrics.statistics": { "type": "object", "properties": { "interval": { "type": "integer", "minimum": 60 }, "types": { "type": "array", "items": { "type": "string", "enum": [ "lldp", "clients" ] } }, "wired-clients-max-num": { "type": "integer" } } }, "metrics.health": { "type": "object", "properties": { "interval": { "type": "integer", "minimum": 60 }, "dhcp-local": { "type": "boolean", "default": true }, "dhcp-remote": { "type": "boolean", "default": false }, "dns-local": { "type": "boolean", "default": true }, "dns-remote": { "type": "boolean", "default": true } } }, "metrics.dhcp-snooping": { "type": "object", "properties": { "filters": { "type": "array", "items": { "type": "string", "enum": [ "ack", "discover", "offer", "request", "solicit", "reply", "renew" ] } } } }, "metrics.telemetry": { "type": "object", "properties": { "interval": { "type": "integer" }, "types": { "type": "array", "items": { "type": "string", "enum": [ "ssh", "health", "health.dns", "health.dhcp", "health.radius", "health.memory", "client", "client.join", "client.leave", "client.key-mismatch", "wired", "wired.carrier-up", "wired.carrier-down", "unit", "unit.boot-up" ] } } } }, "metrics.realtime": { "type": "object", "properties": { "types": { "type": "array", "items": { "type": "string", "enum": [ "ssh", "health", "health.dns", "health.dhcp", "health.radius", "health.memory", "client", "client.join", "client.leave", "client.key-mismatch", "wired", "wired.carrier-up", "wired.carrier-down", "unit", "unit.boot-up" ] } } } }, "metrics": { "type": "object", "properties": { "statistics": { "$ref": "#/$defs/metrics.statistics" }, "health": { "$ref": "#/$defs/metrics.health" }, "dhcp-snooping": { "$ref": "#/$defs/metrics.dhcp-snooping" }, "telemetry": { "$ref": "#/$defs/metrics.telemetry" }, "realtime": { "$ref": "#/$defs/metrics.realtime" } } }, "config-raw": { "type": "array", "items": { "type": "array", "minItems": 2, "items": { "type": "string" }, "examples": [ [ "set", "system.@system[0].timezone", "GMT0" ], [ "delete", "firewall.@zone[0]" ], [ "delete", "dhcp.wan" ], [ "add", "dhcp", "dhcp" ], [ "add-list", "system.ntp.server", "0.pool.example.org" ], [ "del-list", "system.ntp.server", "1.openwrt.pool.ntp.org" ] ] } } } }