555 lines
22 KiB
JSON
555 lines
22 KiB
JSON
{
|
|
"$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
|
|
}
|
|
}
|
|
}
|