{ "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "object", "title": "Root Schema", "required": [ "interfaces" ], "properties": { "nodeSelector": { "additionalProperties": false, "title": "Label to use to select node", "type": "object", "additionalProperties": { "type": "string" } }, "debugLevel": { "title": "Debug level", "type": "integer", "default": 0, "minimum": 0, "maximum": 5 }, "defaults": { "properties": { "interfaces": { "$ref": "#/$defs/interface_options" }, "prefixes": { "$ref": "#/$defs/prefix_options" }, "routes": { "$ref": "#/$defs/route_options" }, "rdnss": { "$ref": "#/$defs/rdnss_options" }, "dnssl": { "$ref": "#/$defs/dnssl_options" }, "abro": { "$ref": "#/$defs/abro_options" } }, "additionalProperties": false, "title": "Default options for each definition", "type": "object" }, "interfaces": { "type": "array", "default": [], "title": "The RADVD configuration schema", "items": { "type": "object", "title": "RADVD per-interface definition", "required": [ "name", "prefixes" ], "properties": { "name": { "type": "string", "title": "The interface name", "examples": [ "eth0", "eth1" ] }, "options": { "$ref": "#/$defs/interface_options" }, "prefixes": { "type": "array", "title": "Prefix(es) definition for the interface", "items": { "type": "object", "title": "Configuration for a single prefix", "required": [ "prefix" ], "properties": { "prefix": { "type": "string", "title": "The IPv6 prefix to be configured", "examples": [ "fe80::/64", "fd80::/64" ] }, "options": { "$ref": "#/$defs/prefix_options" } }, "additionalProperties": false } }, "routes": { "type": "array", "title": "Route(s) definition for the interface", "items": { "type": "object", "title": "Configuration for a single route", "required": [ "route" ], "properties": { "route": { "type": "string", "title": "The route to be configured", "examples": [ "fe80::/64", "fd80::/64" ] }, "options": { "$ref": "#/$defs/route_options" } }, "additionalProperties": false } }, "rdnss": { "type": "array", "title": "Recursive DNS server definitions for this interface", "items": { "type": "object", "title": "Configuration for one set of DNS servers", "required": [ "addresses" ], "properties": { "addresses": { "type": "array", "title": "Addresses used by this set of DNS servers", "items": { "type": "string", "title": "Address used by a single DNS server", "format": "ipv6", "examples": [ "fe80::1/64", "fe80::2/64", "fe80::3/64", "fe80::4/64" ] } }, "options": { "$ref": "#/$defs/rdnss_options" } }, "additionalProperties": false } }, "dnssl": { "type": "array", "title": "DNS Search List definitions for this interface", "items": { "type": "object", "title": "Definition for one set of suffixes", "required": [ "suffixes" ], "properties": { "suffixes": { "type": "array", "title": "List of DNS suffixes", "items": { "type": "string", "title": "One DNS suffix", "examples": [ "example.com", "subdomain.example.com" ] } }, "options": { "$ref": "#/$defs/dnssl_options" } }, "additionalProperties": false } }, "clients": { "type": "array", "title": "Exclusive unicast client Configuration (disables multicast)", "items": { "type": "string", "format": "ipv6", "title": "One client to add to the unicast list", "examples": [ "fe80::1", "fe80::2", "fe80::3", "fe80::4" ] } }, "abro": { "type": "array", "title": "List of Authoritative Border Router Option definitions", "items": { "type": "object", "title": "A single Authoritative Border Router Option definition", "required": [ "address" ], "properties": { "address": { "type": "string", "title": "Address of border router", "examples": [ "fe80::1/64", "fe80::2/64" ] }, "options": { "$ref": "#/$defs/abro_options" } }, "additionalProperties": false } }, "AdvRASrcAddresses": { "type": "array", "title": "List of acceptable source addresses", "items": { "type": "string", "format": "ipv6", "title": "One source address", "examples": [ "fe80::1", "fe80::2", "fe80::3", "fe80::4" ] } } }, "additionalProperties": false } } }, "additionalProperties": false, "$defs": { "interface_options": { "type": "object", "title": "The options for an interface", "properties": { "IgnoreIfMissing": { "type": "boolean", "title": "The IgnoreIfMissing Schema", "default": true }, "AdvSendAdvert": { "type": "boolean", "title": "Whether or not the router sends periodic router advertisements and responds to router solicitations", "default": false }, "UnicastOnly": { "type": "boolean", "title": "Indicates that the interface link type only supports unicast", "default": false }, "AdvRASolicitedUnicast": { "type": "boolean", "title": "Indicates that router solicitations will be responded to with unicast router advertisements, as recommended by RFC7772", "default" : true }, "MaxRtrAdvInterval": { "type": "number", "title": "Maximum time allowed between sending unsolicited multicast router advertisements from the interface, in seconds", "default" : 600, "exclusiveMinimum" : 0 }, "MinRtrAdvInterval": { "type": "number", "default" : "0.33 * MaxRtrAdvInterval", "title": "Minimum time allowed between sending unsolicited multicast router advertisements from the interface, in seconds", "minimum" : 3 }, "MinDelayBetweenRAs": { "type": "integer", "title": "Minimum time allowed between sending multicast router advertisements, in seconds", "type" : "number", "default" : 3, "exclusiveMinimum" : 0 }, "AdvManagedFlag": { "type": "boolean", "default" : false, "title": "When set, hosts use the administered (stateful) protocol for address autoconfiguration in addition to any addresses autoconfigured using stateless address autoconfiguration" }, "AdvOtherConfigFlag": { "type": "boolean", "default" : false, "title": "When set, hosts use the administered (stateful) protocol for autoconfiguration of other (non-address) information" }, "AdvLinkMTU": { "type": "integer", "title": "The MTU option is used in router advertisement messages to insure that all nodes on a link use the same MTU value in those cases where the link MTU is not well known", "type" : "integer", "default" : 0, "minimum" : 0 }, "AdvReachableTime": { "type": "integer", "title": "The time, in milliseconds, that a node assumes a neighbor is reachable after having received a reachability confirmation", "type" : "integer", "default" : 0, "minimum" : 0, "maximum" : 3600000 }, "AdvRetransTimer": { "type": "integer", "default" : 0, "minimum" : 0, "title": "The time, in milliseconds, between retransmitted Neighbor Solicitation messages" }, "AdvCurHopLimit": { "type": "integer", "default" : 64, "minimum" : 0, "title": "The default value that should be placed in the Hop Count field of the IP header for outgoing (unicast) IP packets." }, "AdvDefaultLifetime": { "type": "integer", "title": "The lifetime associated with the default router in units of seconds", "minimum" : 0, "maximum": 65520, "default" : "3 * MaxRtrAdvInterval (Minimum 1 second)" }, "AdvDefaultPreference": { "type": "string", "title": "The preference associated with the default router", "enum" : [ "low", "medium", "high" ] }, "AdvSourceLLAddress": { "type": "boolean", "title": "When set, the link-layer address of the outgoing interface is included in the RA.", "default" : true }, "AdvHomeAgentFlag": { "type": "boolean", "title": "When set, indicates that sending router is able to serve as Mobile IPv6 Home Agent", "default" : false }, "AdvHomeAgentInfo": { "type": "boolean", "title": "When set, Home Agent Information Option (specified by Mobile IPv6) is included in Router Advertisements. (Requires AdvHomeAgentFlag=true)", "default": false }, "HomeAgentLifetime": { "type": "integer", "title": "The length of time in seconds (relative to the time the packet is sent) that the router is offering Mobile IPv6 Home Agent services. (Requires AdvHomeAgentFlag=true)", "default" : 0 }, "HomeAgentPreference": { "type": "integer", "title": "The preference for the Home Agent sending this Router Advertisement (Requires AdvHomeAgentFlag=true)", "default" : 0 }, "AdvMobRtrSupportFlag": { "type": "boolean", "title": "When set, the Home Agent signals it supports Mobile Router registrations (specified by NEMO Basic). (Requires AdvHomeAgentFlag=true)", "default": false }, "AdvIntervalOpt": { "type": "boolean", "title": "When set, Advertisement Interval Option (specified by Mobile IPv6) is included in Router Advertisements", "default" : false } }, "additionalProperties": false }, "prefix_options": { "type": "object", "title": "Options for a prefix", "properties": { "AdvOnLink": { "type": "boolean", "default": true, "title": "Indicates that this prefix can be used for on-link determination." }, "AdvAutonomous": { "type": "boolean", "title": "indicates that this prefix can be used for autonomous address configuration as specified in RFC 4862" }, "AdvRouterAddr": { "type": "boolean", "default": false, "title": "When set, indicates that the address of interface is sent instead of network prefix, as is required by Mobile IPv6" }, "AdvValidLifetime": { "anyOf" : [ { "type": "integer", "mininum": 0, "maximum": 4294967295 }, { "type": "string", "enum" : [ "infinity" ] } ], "default": 86400, "title": "The length of time in seconds (relative to the time the packet is sent) that the prefix is valid for the purpose of on-link determination", "examples": [ 86400, "infinity" ] }, "AdvPreferredLifetime": { "anyOf" : [ { "type": "integer", "mininum": 0, "maximum": 4294967295 }, { "type": "string", "enum" : [ "infinity" ] } ], "default": 14400, "title": "The length of time in seconds (relative to the time the packet is sent) that addresses generated from the prefix via stateless address autoconfiguration remain preferred", "examples": [ 14400, "infinity" ] }, "DeprecatePrefix": { "type": "boolean", "title": "Upon shutdown, this option will cause radvd to deprecate the prefix by announcing it in the radvd shutdown RA with a zero preferred lifetime and a valid lifetime slightly greater than 2 hours", "default": false }, "DecrementLifetimes": { "type": "boolean", "title": "This option causes radvd to decrement the values of the preferred and valid lifetimes for the prefix over time", "default": false }, "Base6Interface": { "type": "string", "title": "This prefix will be combined with the IPv6 address of the interface specified", "default": null }, "Base6to4Interface": { "type": "string", "title": "This prefix will be combined with the IPv4 address of interface name to produce a valid 6to4 prefix", "default": null } }, "additionalProperties": false }, "route_options": { "type": "object", "title": "Options for a route", "properties": { "AdvRouteLifetime": { "anyOf" : [ { "type": "integer", "mininum": 0, "maximum": 4294967295 }, { "type": "string", "enum" : [ "infinity" ] } ], "default": "3 * MaxRtrAdvInterval", "title": "The AdvRouteLifetime Schema", "examples": [ 1800, "infinity" ] }, "AdvRoutePreference": { "type": "string", "title": "The preference associated with the default router", "enum" : [ "low", "medium", "high" ], "default": "medium" }, "RemoveRoute": { "type": "boolean", "title": "Upon shutdown, announce this route with a zero second lifetime", "default": true } }, "additionalProperties": false }, "rdnss_options": { "type": "object", "title": "Options for this set of DNS servers", "properties": { "AdvRDNSSLifetime": { "anyOf" : [ { "type": "integer", "mininum": 0, "maximum": 4294967295 }, { "type": "string", "enum" : [ "infinity" ] } ], "default": "2 * MaxRtrAdvInterval", "title": "The maximum duration how long the RDNSS entries are used for name resolution.", "examples": [ 1200, "infinity" ] }, "FlushRDNSS": { "type": "boolean", "title": "Upon shutdown, announce the RDNSS entries with a zero second lifetime", "default": true } }, "additionalProperties": false }, "dnssl_options": { "type": "object", "title": "Options for this set of suffixes", "properties": { "AdvDNSSLLifetime": { "anyOf" : [ { "type": "integer", "mininum": 0, "maximum": 4294967295 }, { "type": "string", "enum" : [ "infinity" ] } ], "default": "2 * MaxRtrAdvInterval", "title": "The maximum duration how long the DNSSL entries are used for name resolution", "examples": [ 1200, "infinity" ] }, "FlushDNSSL": { "type": "boolean", "title": "Upon shutdown, announce the DNSSL entries with a zero second lifetime", "default": true } }, "additionalProperties": false }, "abro_options": { "type": "object", "title": "Options for this Authoritative Border Router Option definition", "properties": { "AdvValidLifeTime": { "type": "integer", "title": "The time in units of that the set of border router information is valid", "default": 10000 }, "AdvVersionLow": { "type": "integer", "title": "The lower 32 bits of a 48-bit version number corresponding to the set of information contained in RA message", "minimum": 0, "maximum": 4294967295, "default": 0 }, "AdvVersionHigh": { "type": "integer", "title": "The upper 16 bits of a 48-bit version number corresponding to the set of information contained in RA message", "default": 0, "minimum": 0, "maximumExclusive": 65536 } }, "additionalProperties": false } } }