From 7bd7b24f1d00be6f63304374c3133ab6d85d03ea Mon Sep 17 00:00:00 2001 From: Conor Murphy Date: Sun, 28 Jan 2024 16:03:45 +0100 Subject: [PATCH] Adding PIM source and destination filter for bridge domain --- aci_tenants.tf | 4 ++++ modules/terraform-aci-bridge-domain/README.md | 4 ++++ modules/terraform-aci-bridge-domain/main.tf | 18 ++++++++++++++++++ .../terraform-aci-bridge-domain/variables.tf | 12 ++++++++++++ 4 files changed, 38 insertions(+) diff --git a/aci_tenants.tf b/aci_tenants.tf index 13a070ff..b3a62f1a 100644 --- a/aci_tenants.tf +++ b/aci_tenants.tf @@ -176,6 +176,8 @@ locals { ep_move_detection = try(bd.ep_move_detection, local.defaults.apic.tenants.bridge_domains.ep_move_detection) clear_remote_mac_entries = try(bd.clear_remote_mac_entries, local.defaults.apic.tenants.bridge_domains.clear_remote_mac_entries) l3_multicast = try(bd.l3_multicast, local.defaults.apic.tenants.bridge_domains.l3_multicast) + pim_source_filter = try(bd.pim_source_filter, "") + pim_destination_filter = try(bd.pim_destination_filter, "") multi_destination_flooding = try(bd.multi_destination_flooding, local.defaults.apic.tenants.bridge_domains.multi_destination_flooding) unicast_routing = try(bd.unicast_routing, local.defaults.apic.tenants.bridge_domains.unicast_routing) unknown_unicast = try(bd.unknown_unicast, local.defaults.apic.tenants.bridge_domains.unknown_unicast) @@ -223,6 +225,8 @@ module "aci_bridge_domain" { ep_move_detection = each.value.ep_move_detection clear_remote_mac_entries = each.value.clear_remote_mac_entries l3_multicast = each.value.l3_multicast + pim_source_filter = each.value.pim_source_filter + pim_destination_filter = each.value.pim_destination_filter multi_destination_flooding = each.value.multi_destination_flooding unicast_routing = each.value.unicast_routing unknown_unicast = each.value.unknown_unicast diff --git a/modules/terraform-aci-bridge-domain/README.md b/modules/terraform-aci-bridge-domain/README.md index e6e43ab8..0f671d2d 100644 --- a/modules/terraform-aci-bridge-domain/README.md +++ b/modules/terraform-aci-bridge-domain/README.md @@ -85,6 +85,8 @@ module "aci_bridge_domain" { | [clear\_remote\_mac\_entries](#input\_clear\_remote\_mac\_entries) | Clear remote MAC entries flag. | `bool` | `false` | no | | [virtual\_mac](#input\_virtual\_mac) | Virtual MAC address. Format: `12:34:56:78:9A:BC`. | `string` | `"not-applicable"` | no | | [l3\_multicast](#input\_l3\_multicast) | L3 multicast. | `bool` | `false` | no | +| [pim\_source\_filter](#input\_pim\_source\_filter) | PIM source filter. | `string` | `""` | no | +| [pim\_destination\_filter](#input\_pim\_destination\_filter) | PIM destination filter. | `string` | `""` | no | | [multi\_destination\_flooding](#input\_multi\_destination\_flooding) | Multi destination flooding. Choices: `bd-flood`, `encap-flood`, `drop`. | `string` | `"bd-flood"` | no | | [unicast\_routing](#input\_unicast\_routing) | Unicast routing. | `bool` | `true` | no | | [unknown\_unicast](#input\_unknown\_unicast) | Unknown unicast forwarding behavior. Choices: `flood`, `proxy`. | `string` | `"proxy"` | no | @@ -118,5 +120,7 @@ module "aci_bridge_domain" { | [aci_rest_managed.fvSubnet](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/rest_managed) | resource | | [aci_rest_managed.igmpIfP](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/rest_managed) | resource | | [aci_rest_managed.igmpRsIfPol](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/rest_managed) | resource | +| [aci_rest_managed.rtdmcRsFilterToRtMapPol_destination](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/rest_managed) | resource | +| [aci_rest_managed.rtdmcRsFilterToRtMapPol_source](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/rest_managed) | resource | | [aci_rest_managed.tagTag](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/rest_managed) | resource | \ No newline at end of file diff --git a/modules/terraform-aci-bridge-domain/main.tf b/modules/terraform-aci-bridge-domain/main.tf index aa7d238a..ba534e5f 100644 --- a/modules/terraform-aci-bridge-domain/main.tf +++ b/modules/terraform-aci-bridge-domain/main.tf @@ -139,3 +139,21 @@ resource "aci_rest_managed" "fvRsIgmpsn" { tnIgmpSnoopPolName = var.igmp_snooping_policy } } + +resource "aci_rest_managed" "rtdmcRsFilterToRtMapPol_source" { + count = var.pim_source_filter != "" ? 1 : 0 + dn = "${aci_rest_managed.fvBD.dn}/pimbdp/pimbdfilterp/pimbdsrcfilterp/rsfilterToRtMapPol" + class_name = "rtdmcRsFilterToRtMapPol" + content = { + tDn = "uni/tn-${var.tenant}/rtmap-${var.pim_source_filter}" + } +} + +resource "aci_rest_managed" "rtdmcRsFilterToRtMapPol_destination" { + count = var.pim_destination_filter != "" ? 1 : 0 + dn = "${aci_rest_managed.fvBD.dn}/pimbdp/pimbdfilterp/pimbddestfilterp/rsfilterToRtMapPol" + class_name = "rtdmcRsFilterToRtMapPol" + content = { + tDn = "uni/tn-${var.tenant}/rtmap-${var.pim_destination_filter}" + } +} \ No newline at end of file diff --git a/modules/terraform-aci-bridge-domain/variables.tf b/modules/terraform-aci-bridge-domain/variables.tf index 2657d706..b324601b 100644 --- a/modules/terraform-aci-bridge-domain/variables.tf +++ b/modules/terraform-aci-bridge-domain/variables.tf @@ -104,6 +104,18 @@ variable "l3_multicast" { default = false } +variable "pim_source_filter" { + description = "PIM source filter." + type = string + default = "" +} + +variable "pim_destination_filter" { + description = "PIM destination filter." + type = string + default = "" +} + variable "multi_destination_flooding" { description = "Multi destination flooding. Choices: `bd-flood`, `encap-flood`, `drop`." type = string