# Generated by confd

function osh_filters ()
{
  # support any addresses matching our secondary announcements
{{- range .Values.networking.bgp.ipv6.additional_cidrs }}
  if ( net ~ {{ . }} ) then { accept; }
{{- end }}
}

function apply_communities ()
{
  # Set community value based on dictionary of cidrs
{{- $asnum := .Values.networking.bgp.asnumber }}
{{- range .Values.networking.bgp.ipv6.community_cidr_ref }}
  {{- $community := .community }}
  {{- $cidr := .cidr }}
  {{- with .prefix }}
  if ( net ~ {{ $cidr }} ) then { bgp_community.add(({{ . }}, {{ $community }})); }
  {{- else }}
  if ( net ~ {{ $cidr }} ) then { bgp_community.add(({{ $asnum }}, {{ $community }})); }
  {{- end }}
{{- end }}
}

filter calico_pools {
  apply_communities();
  calico_aggr();
  osh_filters();
{{`{{range ls "/pool"}}{{$data := json (getv (printf "/pool/%s" .))}}`}}
{{`  if ( net ~ {{$data.cidr}} ) then {`}}
    accept;
  }
{{`{{end}}`}}
  reject;
}