diff --git a/README.md b/README.md index 3318e4d..bb6f602 100644 --- a/README.md +++ b/README.md @@ -122,6 +122,11 @@ module "iosxe" { | [iosxe_flow_monitor.flow_monitor](https://registry.terraform.io/providers/CiscoDevNet/iosxe/0.9.3/docs/resources/flow_monitor) | resource | | [iosxe_flow_record.flow_record](https://registry.terraform.io/providers/CiscoDevNet/iosxe/0.9.3/docs/resources/flow_record) | resource | | [iosxe_interface_ethernet.ethernet](https://registry.terraform.io/providers/CiscoDevNet/iosxe/0.9.3/docs/resources/interface_ethernet) | resource | +| [iosxe_interface_igmp.ethernet_igmp](https://registry.terraform.io/providers/CiscoDevNet/iosxe/0.9.3/docs/resources/interface_igmp) | resource | +| [iosxe_interface_igmp.loopback_igmp](https://registry.terraform.io/providers/CiscoDevNet/iosxe/0.9.3/docs/resources/interface_igmp) | resource | +| [iosxe_interface_igmp.port_channel_igmp](https://registry.terraform.io/providers/CiscoDevNet/iosxe/0.9.3/docs/resources/interface_igmp) | resource | +| [iosxe_interface_igmp.port_channel_subinterface_igmp](https://registry.terraform.io/providers/CiscoDevNet/iosxe/0.9.3/docs/resources/interface_igmp) | resource | +| [iosxe_interface_igmp.vlan_igmp](https://registry.terraform.io/providers/CiscoDevNet/iosxe/0.9.3/docs/resources/interface_igmp) | resource | | [iosxe_interface_loopback.loopback](https://registry.terraform.io/providers/CiscoDevNet/iosxe/0.9.3/docs/resources/interface_loopback) | resource | | [iosxe_interface_mpls.ethernet_mpls](https://registry.terraform.io/providers/CiscoDevNet/iosxe/0.9.3/docs/resources/interface_mpls) | resource | | [iosxe_interface_mpls.loopback_mpls](https://registry.terraform.io/providers/CiscoDevNet/iosxe/0.9.3/docs/resources/interface_mpls) | resource | diff --git a/iosxe_interfaces.tf b/iosxe_interfaces.tf index 4cac7be..274ecb1 100644 --- a/iosxe_interfaces.tf +++ b/iosxe_interfaces.tf @@ -172,6 +172,8 @@ locals { pim_border = try(int.pim.border, local.defaults.iosxe.devices.configuration.interfaces.ethernets.pim.border, null) pim_bsr_border = try(int.pim.bsr_border, local.defaults.iosxe.devices.configuration.interfaces.ethernets.pim.bsr_border, null) pim_dr_priority = try(int.pim.dr_priority, local.defaults.iosxe.devices.configuration.interfaces.ethernets.pim.dr_priority, null) + igmp = try(int.igmp.version, local.defaults.iosxe.devices.configuration.interfaces.ethernets.igmp.version, null) != null ? true : false + igmp_version = try(int.igmp.version, local.defaults.iosxe.devices.configuration.interfaces.ethernets.igmp.version, null) authentication_periodic = try(int.network_access_control.authentication_periodic, local.defaults.iosxe.devices.configuration.interfaces.ethernets.network_access_control.authentication_periodic, null) authentication_timer_reauthenticate = try(int.network_access_control.authentication_timer_reauthenticate, local.defaults.iosxe.devices.configuration.interfaces.ethernets.network_access_control.authentication_timer_reauthenticate, null) authentication_timer_reauthenticate_server = try(int.network_access_control.authentication_timer_reauthenticate_server, local.defaults.iosxe.devices.configuration.interfaces.ethernets.network_access_control.authentication_timer_reauthenticate_server, null) @@ -417,6 +419,19 @@ resource "iosxe_interface_pim" "ethernet_pim" { ] } +resource "iosxe_interface_igmp" "ethernet_igmp" { + for_each = { for v in local.interfaces_ethernets : v.key => v if v.igmp } + + device = each.value.device + type = each.value.type + name = each.value.id + version = each.value.igmp_version + + depends_on = [ + iosxe_interface_ethernet.ethernet + ] +} + ##### LOOPBACKS ##### locals { @@ -497,6 +512,8 @@ locals { pim_border = try(int.pim.border, local.defaults.iosxe.devices.configuration.interfaces.loopbacks.pim.border, null) pim_bsr_border = try(int.pim.bsr_border, local.defaults.iosxe.devices.configuration.interfaces.loopbacks.pim.bsr_border, null) pim_dr_priority = try(int.pim.dr_priority, local.defaults.iosxe.devices.configuration.interfaces.loopbacks.pim.dr_priority, null) + igmp = try(int.igmp.version, local.defaults.iosxe.devices.configuration.interfaces.loopbacks.igmp.version, null) != null ? true : false + igmp_version = try(int.igmp.version, local.defaults.iosxe.devices.configuration.interfaces.loopbacks.igmp.version, null) } ] ]) @@ -615,6 +632,19 @@ resource "iosxe_interface_pim" "loopback_pim" { ] } +resource "iosxe_interface_igmp" "loopback_igmp" { + for_each = { for v in local.interfaces_loopbacks : v.key => v if v.igmp } + + device = each.value.device + type = "Loopback" + name = each.value.id + version = each.value.igmp_version + + depends_on = [ + iosxe_interface_loopback.loopback + ] +} + ####### VLANS ####### locals { @@ -707,6 +737,8 @@ locals { pim_border = try(int.pim.border, local.defaults.iosxe.devices.configuration.interfaces.vlans.pim.border, null) pim_bsr_border = try(int.pim.bsr_border, local.defaults.iosxe.devices.configuration.interfaces.vlans.pim.bsr_border, null) pim_dr_priority = try(int.pim.dr_priority, local.defaults.iosxe.devices.configuration.interfaces.vlans.pim.dr_priority, null) + igmp = try(int.igmp.version, local.defaults.iosxe.devices.configuration.interfaces.vlans.igmp.version, null) != null ? true : false + igmp_version = try(int.igmp.version, local.defaults.iosxe.devices.configuration.interfaces.vlans.igmp.version, null) } ] ]) @@ -836,6 +868,19 @@ resource "iosxe_interface_pim" "vlan_pim" { ] } +resource "iosxe_interface_igmp" "vlan_igmp" { + for_each = { for v in local.interfaces_vlans : v.key => v if v.igmp } + + device = each.value.device + type = "Vlan" + name = each.value.id + version = each.value.igmp_version + + depends_on = [ + iosxe_interface_vlan.vlan + ] +} + ##### PORT-CHANNELS ##### locals { @@ -964,6 +1009,8 @@ locals { pim_border = try(int.pim.border, local.defaults.iosxe.devices.configuration.interfaces.port_channels.pim.border, null) pim_bsr_border = try(int.pim.bsr_border, local.defaults.iosxe.devices.configuration.interfaces.port_channels.pim.bsr_border, null) pim_dr_priority = try(int.pim.dr_priority, local.defaults.iosxe.devices.configuration.interfaces.port_channels.pim.dr_priority, null) + igmp = try(int.igmp.version, local.defaults.iosxe.devices.configuration.interfaces.port_channels.igmp.version, null) != null ? true : false + igmp_version = try(int.igmp.version, local.defaults.iosxe.devices.configuration.interfaces.port_channels.igmp.version, null) auto_qos_classify = try(int.auto_qos.classify, local.defaults.iosxe.devices.configuration.interfaces.port_channels.auto_qos.classify, null) auto_qos_classify_police = try(int.auto_qos.classify_police, local.defaults.iosxe.devices.configuration.interfaces.port_channels.auto_qos.classify_police, null) auto_qos_trust = try(int.auto_qos.trust, local.defaults.iosxe.devices.configuration.interfaces.port_channels.auto_qos.trust, null) @@ -1144,6 +1191,19 @@ resource "iosxe_interface_pim" "port_channel_pim" { ] } +resource "iosxe_interface_igmp" "port_channel_igmp" { + for_each = { for v in local.interfaces_port_channels : v.key => v if v.igmp } + + device = each.value.device + type = "Port-channel" + name = each.value.name + version = each.value.igmp_version + + depends_on = [ + iosxe_interface_port_channel.port_channel + ] +} + ##### PORT-CHANNEL SUBINTERFACES ##### locals { @@ -1247,6 +1307,8 @@ locals { pim_border = try(sub.pim.border, local.defaults.iosxe.devices.configuration.interfaces.port_channels.subinterfaces.pim.border, null) pim_bsr_border = try(sub.pim.bsr_border, local.defaults.iosxe.devices.configuration.interfaces.port_channels.subinterfaces.pim.bsr_border, null) pim_dr_priority = try(sub.pim.dr_priority, local.defaults.iosxe.devices.configuration.interfaces.port_channels.subinterfaces.pim.dr_priority, null) + igmp = try(sub.igmp.version, local.defaults.iosxe.devices.configuration.interfaces.port_channels.subinterfaces.igmp.version, null) != null ? true : false + igmp_version = try(sub.igmp.version, local.defaults.iosxe.devices.configuration.interfaces.port_channels.subinterfaces.igmp.version, null) } ] ] @@ -1390,6 +1452,19 @@ resource "iosxe_interface_pim" "port_channel_subinterface_pim" { ] } +resource "iosxe_interface_igmp" "port_channel_subinterface_igmp" { + for_each = { for v in local.interfaces_port_channel_subinterfaces : v.key => v if v.igmp } + + device = each.value.device + type = "Port-channel-subinterface/Port-channel" + name = each.value.name + version = each.value.igmp_version + + depends_on = [ + iosxe_interface_port_channel_subinterface.port_channel_subinterface + ] +} + ##### NVE ##### locals {