diff --git a/.dev/br-lft-act.yaml b/.dev/br-lft-act.yaml index 60b0d92..7ea0bfa 100644 --- a/.dev/br-lft-act.yaml +++ b/.dev/br-lft-act.yaml @@ -42,11 +42,11 @@ bridges: maximum_delay: 3600s script: - - ["ip", "-${proto}", "route", "replace", "${bridge_peer_cidr}", "dev", "${tunnel_interface}"] + - ["/bin/sh", "-c", "for cidr in ${bridge_peer_cidrs_ipv4}; do ip -4 route replace $cidr dev ${tunnel_interface}; done"] interface_deactivate: script: - - ["ip", "-${proto}", "route", "del", "${bridge_peer_cidr}", "dev", "${tunnel_interface}"] + - ["/bin/sh", "-c", "for cidr in ${bridge_peer_cidrs_ipv4}; do ip -4 route del $cidr dev ${tunnel_interface}; done"] metrics: listen_addr: 0.0.0.0:8000 diff --git a/.dev/br-lft-sby.yaml b/.dev/br-lft-sby.yaml index 33ce88f..8e3c26c 100644 --- a/.dev/br-lft-sby.yaml +++ b/.dev/br-lft-sby.yaml @@ -34,11 +34,11 @@ bridges: interface_activate: script: - - ["ip", "-${proto}", "route", "replace", "${bridge_peer_cidr}", "dev", "${tunnel_interface}"] + - ["/bin/sh", "-c", "for cidr in ${bridge_peer_cidrs_ipv4}; do ip -4 route replace $cidr dev ${tunnel_interface}; done"] interface_deactivate: script: - - ["ip", "-${proto}", "route", "del", "${bridge_peer_cidr}", "dev", "${tunnel_interface}"] + - ["/bin/sh", "-c", "for cidr in ${bridge_peer_cidrs_ipv4}; do ip -4 route del $cidr dev ${tunnel_interface}; done"] metrics: listen_addr: 0.0.0.0:8001 diff --git a/reconciler/render.go b/reconciler/render.go index b85f1a4..d5674d6 100644 --- a/reconciler/render.go +++ b/reconciler/render.go @@ -11,10 +11,11 @@ import ( const ( placeholderProto = "proto" - placeholderBridgeInterface = "bridge_interface" - placeholderBridgeInterfaceIP = "bridge_interface_ip" - placeholderBridgePeerCIDR = "bridge_peer_cidr" - placeholderBridgeExtraPeerCIDRs = "bridge_extra_peer_cidrs" + placeholderBridgeInterface = "bridge_interface" + placeholderBridgeInterfaceIP = "bridge_interface_ip" + placeholderBridgePeerCIDR = "bridge_peer_cidr" + placeholderBridgePeerCIDRsIPv4 = "bridge_peer_cidrs_ipv4" + placeholderBridgePeerCIDRsIPv6 = "bridge_peer_cidrs_ipv6" placeholderTunnelInterface = "tunnel_interface" placeholderTunnelInterfaceIP = "tunnel_interface_ip" @@ -55,14 +56,18 @@ func (r *Reconciler) renderPlaceholders(e event.Event) (map[string]string, error } } - if len(cidrs) > 1 { - extraPeerCIDRs := make([]string, 0, len(cidrs)-1) - for idx := 1; idx < len(cidrs); idx++ { - extraPeerCIDRs = append(extraPeerCIDRs, cidrs[idx].String()) + cidrsIPv4 := make([]string, 0) + cidrsIPv6 := make([]string, 0) + for _, cidr := range cidrs { + if cidr.IsIPv4() { + cidrsIPv4 = append(cidrsIPv4, cidr.String()) + } else { + cidrsIPv6 = append(cidrsIPv4, cidr.String()) } - - placeholders[placeholderBridgeExtraPeerCIDRs] = strings.Join(extraPeerCIDRs, ",") } + + placeholders[placeholderBridgePeerCIDRsIPv4] = strings.Join(cidrsIPv4, " ") + placeholders[placeholderBridgePeerCIDRsIPv6] = strings.Join(cidrsIPv6, " ") } return placeholders, nil