helm-radvd/values.schema.json
2024-08-27 10:53:36 -04:00

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
}
}
}