!
{% for iface in old_ifaces %}
interface {{ iface }}
{% for group in old_ifaces[iface].gr_join %}
{% if old_ifaces[iface].gr_join[group] %}
{% for source in old_ifaces[iface].gr_join[group] %}
no ip igmp join {{ group }} {{ source }}
{% endfor %}
{% else %}
no ip igmp join {{ group }}
{% endif %}
{% endfor %}
no ip igmp
!
{% endfor %}
{% for iface in ifaces %}
interface {{ iface }}
{% if ifaces[iface].version %}
ip igmp version {{ ifaces[iface].version }}
{% else %}
{# IGMP default version 3 #}
ip igmp
{% endif %}
{% if ifaces[iface].query_interval %}
ip igmp query-interval {{ ifaces[iface].query_interval }}
{% endif %}
{% if ifaces[iface].query_max_resp_time %}
ip igmp query-max-response-time {{ ifaces[iface].query_max_resp_time }}
{% endif %}
{% for group in ifaces[iface].gr_join %}
{% if ifaces[iface].gr_join[group] %}
{% for source in ifaces[iface].gr_join[group] %}
ip igmp join {{ group }} {{ source }}
{% endfor %}
{% else %}
ip igmp join {{ group }}
{% endif %}
{% endfor %}
!
{% endfor %}
!