helm-radvd/templates/config.yaml

252 lines
12 KiB
YAML
Raw Normal View History

2024-08-27 16:53:36 +02:00
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Chart.Name }}-config-{{ .Release.Name }}
data:
config: |-
{{- $defaultInterfaceOptions := dict }}
{{- $defaultPrefixOptions := dict }}
{{- $defaultRouteOptions := dict }}
{{- $defaultRdnssOptions := dict }}
{{- $defaultDnsslOptions := dict }}
{{- $defaultAbroOptions := dict }}
{{- if $.Values.defaults }}
{{- range $name, $value := $.Values.defaults.interfaces }}
{{- $_ := set $defaultInterfaceOptions $name $value }}
{{- end }}
{{- range $name, $value := $.Values.defaults.prefixes }}
{{- $_ := set $defaultPrefixOptions $name $value }}
{{- end }}
{{- range $name, $value := $.Values.defaults.routes }}
{{- $_ := set $defaultRouteOptions $name $value }}
{{- end }}
{{- range $name, $value := $.Values.defaults.rdnss }}
{{- $_ := set $defaultRdnssOptions $name $value }}
{{- end }}
{{- range $name, $value := $.Values.defaults.dnssl }}
{{- $_ := set $defaultDnsslOptions $name $value }}
{{- end }}
{{- range $name, $value := $.Values.defaults.abro }}
{{- $_ := set $defaultAbroOptions $name $value }}
{{- end }}
{{- end }}
{{- range $interface := .Values.interfaces }}
interface {{ $interface.name }} {
{{- $interfaceOptions := dict }}
{{- range $name, $value := $interface.options }}
{{- $_ := set $interfaceOptions $name $value }}
{{- end }}
{{- $_ := merge $interfaceOptions $defaultInterfaceOptions $interfaceOptions }}
{{- if hasKey $interfaceOptions "IgnoreIfMissing" }}
IgnoreIfMissing {{get $interfaceOptions "IgnoreIfMissing" | ternary "on" "off" }};
{{- end }}
{{- if hasKey $interfaceOptions "AdvSendAdvert" }}
AdvSendAdvert {{get $interfaceOptions "AdvSendAdvert" | ternary "on" "off" }};
{{- end }}
{{- if hasKey $interfaceOptions "UnicastOnly" }}
UnicastOnly {{get $interfaceOptions "UnicastOnly" | ternary "on" "off" }};
{{- end }}
{{- if hasKey $interfaceOptions "AdvRASolicitedUnicast" }}
AdvRASolicitedUnicast {{get $interfaceOptions "AdvRASolicitedUnicast" | ternary "on" "off" }};
{{- end }}
{{- if hasKey $interfaceOptions "MaxRtrAdvInterval" }}
MaxRtrAdvInterval {{get $interfaceOptions "MaxRtrAdvInterval" | float64 }}; # seconds
{{- end }}
{{- if hasKey $interfaceOptions "MinRtrAdvInterval" }}
MinRtrAdvInterval {{get $interfaceOptions "MinRtrAdvInterval" | float64 }}; # seconds
{{- end }}
{{- if hasKey $interfaceOptions "MinDelayBetweenRAs" }}
MinDelayBetweenRAs {{get $interfaceOptions "MinDelayBetweenRAs" | float64 }}; # seconds
{{- end }}
{{- if hasKey $interfaceOptions "AdvManagedFlag" }}
AdvManagedFlag {{get $interfaceOptions "AdvManagedFlag" | ternary "on" "off" }};
{{- end }}
{{- if hasKey $interfaceOptions "AdvOtherConfigFlag" }}
AdvOtherConfigFlag {{get $interfaceOptions "AdvOtherConfigFlag" | ternary "on" "off" }};
{{- end }}
{{- if hasKey $interfaceOptions "AdvLinkMTU" }}
AdvLinkMTU {{get $interfaceOptions "AdvLinkMTU" | int}}; # integer
{{- end }}
{{- if hasKey $interfaceOptions "AdvReachableTime" }}
AdvReachableTime {{get $interfaceOptions "AdvReachableTime" | int }}; # milliseconds
{{- end }}
{{- if hasKey $interfaceOptions "AdvRetransTimer" }}
AdvRetransTimer {{get $interfaceOptions "AdvRetransTimer" | int }}; # milliseconds
{{- end }}
{{- if hasKey $interfaceOptions "AdvCurHopLimit" }}
AdvCurHopLimit {{get $interfaceOptions "AdvCurHopLimit" | int }}; # integer
{{- end }}
{{- if hasKey $interfaceOptions "AdvDefaultLifetime" }}
AdvDefaultLifetime {{get $interfaceOptions "AdvDefaultLifetime" | int }}; # seconds
{{- end }}
{{- if hasKey $interfaceOptions "AdvDefaultPreference" }}
AdvDefaultPreference {{get $interfaceOptions "AdvDefaultPreference" }}; # low|medium|high
{{- end }}
{{- if hasKey $interfaceOptions "AdvSourceLLAddress" }}
AdvSourceLLAddress {{get $interfaceOptions "AdvSourceLLAddress" | ternary "on" "off" }};
{{- end }}
{{- if hasKey $interfaceOptions "AdvHomeAgentFlag" }}
AdvHomeAgentFlag {{get $interfaceOptions "AdvHomeAgentFlag" | ternary "on" "off" }};
{{- end }}
{{- if hasKey $interfaceOptions "AdvHomeAgentInfo" }}
AdvHomeAgentInfo {{get $interfaceOptions "AdvHomeAgentInfo" | ternary "on" "off" }};
{{- end }}
{{- if hasKey $interfaceOptions "HomeAgentLifetime" }}
HomeAgentLifetime {{get $interfaceOptions "HomeAgentLifetime" | int}}; # seconds
{{- end }}
{{- if hasKey $interfaceOptions "HomeAgentPreference" }}
HomeAgentPreference {{get $interfaceOptions "HomeAgentPreference" | int}}; # integer
{{- end }}
{{- if hasKey $interfaceOptions "AdvMobRtrSupportFlag" }}
AdvMobRtrSupportFlag {{get $interfaceOptions "AdvMobRtrSupportFlag" | ternary "on" "off" }};
{{- end }}
{{- if hasKey $interfaceOptions "AdvIntervalOpt" }}
AdvIntervalOpt {{get $interfaceOptions "AdvIntervalOpt" | ternary "on" "off" }};
{{- end }}
{{- range $prefix := $interface.prefixes }}
prefix {{ $prefix.prefix }} {
{{- $prefixOptions := dict }}
{{- range $name, $value := $prefix.options }}
{{- $_ := set $prefixOptions $name $value }}
{{- end }}
{{- $_ := merge $prefixOptions $defaultPrefixOptions $prefixOptions }}
{{- if hasKey $prefixOptions "AdvOnLink" }}
AdvOnLink {{get $prefixOptions "AdvOnLink" | ternary "on" "off" }};
{{- end }}
{{- if hasKey $prefixOptions "AdvAutonomous" }}
AdvAutonomous {{get $prefixOptions "AdvAutonomous" | ternary "on" "off" }};
{{- end }}
{{- if hasKey $prefixOptions "AdvRouterAddr" }}
AdvRouterAddr {{get $prefixOptions "AdvRouterAddr" | ternary "on" "off" }};
{{- end }}
{{- if hasKey $prefixOptions "AdvValidLifetime" }}
{{- if kindIs "string" (get $prefixOptions "AdvValidLifetime") }}
AdvValidLifetime {{get $prefixOptions "AdvValidLifetime" }}; # seconds|infinity
{{- else }}
AdvValidLifetime {{get $prefixOptions "AdvValidLifetime" | int}}; # seconds|infinity
{{- end }}
{{- end }}
{{- if hasKey $prefixOptions "AdvPreferredLifetime" }}
{{- if kindIs "string" (get $prefixOptions "AdvValidLifetime") }}
AdvPreferredLifetime {{get $prefixOptions "AdvPreferredLifetime" }}; # seconds|infinity
{{- else }}
AdvPreferredLifetime {{get $prefixOptions "AdvPreferredLifetime" | int}}; # seconds|infinity
{{- end }}
{{- end }}
{{- if hasKey $prefixOptions "DeprecatePrefix" }}
DeprecatePrefix {{get $prefixOptions "DeprecatePrefix" | ternary "on" "off" }};
{{- end }}
{{- if hasKey $prefixOptions "DecrementLifetimes" }}
DecrementLifetimes {{get $prefixOptions "DecrementLifetimes" | ternary "on" "off" }};
{{- end }}
{{- if hasKey $prefixOptions "Base6Interface" }}
Base6Interface {{get $prefixOptions "Base6Interface" }}; # name
{{- end }}
{{- if hasKey $prefixOptions "Base6to4Interface" }}
Base6to4Interface {{get $prefixOptions "Base6to4Interface" }}; # name
{{- end }}
};
2024-08-27 16:53:36 +02:00
{{- end }}
{{- range $route := $interface.routes }}
route {{ $route.route }} {
{{- $routeOptions := dict }}
{{- range $name, $value := $route.options }}
{{- $_ := set $routeOptions $name $value }}
{{- end }}
{{- $_ := merge $routeOptions $defaultRouteOptions $routeOptions }}
{{- if hasKey $routeOptions "AdvRouteLifetime" }}
{{- if kindIs "string" (get $routeOptions "AdvRouteLifetime") }}
AdvRouteLifetime {{get $routeOptions "AdvRouteLifetime" }}; # seconds|infinity
{{- else }}
AdvRouteLifetime {{get $routeOptions "AdvRouteLifetime" | int}}; # seconds|infinity
{{- end }}
{{- end }}
{{- if hasKey $routeOptions "AdvRoutePreference" }}
AdvRoutePreference {{get $routeOptions "AdvRoutePreference" }}; # low|medium|high
{{- end }}
{{- if hasKey $routeOptions "RemoveRoute" }}
RemoveRoute {{get $routeOptions "RemoveRoute" | ternary "on" "off" }};
{{- end }}
};
2024-08-27 16:53:36 +02:00
{{- end }}
{{- range $rdnss := $interface.rdnss }}
RDNSS {{ join " " $rdnss.addresses }} {
{{- $rdnssOptions := dict }}
{{- range $name, $value := $rdnss.options }}
{{- $_ := set $rdnssOptions $name $value }}
{{- end }}
{{- $_ := merge $rdnssOptions $defaultRdnssOptions $rdnssOptions }}
{{- if hasKey $rdnssOptions "AdvRDNSSLifetime" }}
{{- if kindIs "string" (get $rdnssOptions "AdvRDNSSLifetime") }}
AdvRDNSSLifetime {{get $rdnssOptions "AdvRDNSSLifetime" }}; # seconds|infinity
{{- else }}
AdvRDNSSLifetime {{get $rdnssOptions "AdvRDNSSLifetime" | int }}; # seconds|infinity
{{- end }}
{{- end }}
{{- if hasKey $rdnssOptions "FlushRDNSS" }}
FlushRDNSS {{get $rdnssOptions "FlushRDNSS" | ternary "on" "off" }};
{{- end }}
};
2024-08-27 16:53:36 +02:00
{{- end }}
{{- range $dnssl := .dnssl }}
DNSSL {{ join " " $dnssl.suffixes }} {
{{- $dnsslOptions := dict }}
{{- range $name, $value := $dnssl.options }}
{{- $_ := set $dnsslOptions $name $value }}
{{- end }}
{{- $_ := merge $dnsslOptions $defaultDnsslOptions $dnsslOptions }}
{{- if hasKey $dnsslOptions "AdvDNSSLLifetime" }}
{{ $val := get $dnsslOptions "AdvDNSSLifetime" }}
{{- if kindIs "string" $val }}
AdvDNSSLLifetime {{ $val }}; # seconds|infinity;
{{- else }}
AdvDNSSLLifetime {{ $val | int }}; # seconds|infinity;
{{- end }}
{{- end }}
{{- if hasKey $dnsslOptions "FlushDNSSL" }}
FlushDNSSL {{get $dnsslOptions "FlushDNSSL" | ternary "on" "off" }};
{{- end }}
};
2024-08-27 16:53:36 +02:00
{{- end }}
{{- range $abro := .abro }}
{{- $abroOptions := dict }}
{{- range $name, $value := $abro.options }}
{{- $_ := set $abroOptions $name $value }}
{{- end }}
{{- $_ := merge $abroOptions $defaultAbroOptions $abroOptions }}
abro {{ $abro.address }} {
{{- if hasKey $abroOptions "AdvValidLifeTime" }}
AdvValidLifeTime {{get $abroOptions "AdvValidLifeTime" | int }}; # seconds
{{- end }}
{{- if hasKey $abroOptions "AdvVersionLow" }}
AdvVersionLow {{get $abroOptions "AdvVersionLow" | int }}; # unsignedinteger
{{- end }}
{{- if hasKey $abroOptions "AdvVersionHigh" }}
AdvVersionHigh {{get $abroOptions "AdvVersionHigh" | int }}; # unsignedinteger
{{- end }}
};
2024-08-27 16:53:36 +02:00
{{- end }}
{{- if $interface.clients }}
clients {
{{- range $client := $interface.clients }}
{{- $client }};
{{- end }}
};
2024-08-27 16:53:36 +02:00
{{- end }}
{{- if $interface.AdvRASrcAddresses }}
AdvRASrcAddress {
{{- range $address := $interface.AdvRASrcAddresses }}
{{- $address }};
{{- end }}
};
2024-08-27 16:53:36 +02:00
{{- end }}
};
2024-08-27 16:53:36 +02:00
{{- end }}