! {% 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 interface, interface_config in ifaces.items() %} interface {{ interface }} {% if interface_config.version %} ip igmp version {{ interface_config.version }} {% else %} {# IGMP default version 3 #} ip igmp {% endif %} {% if interface_config.query_interval %} ip igmp query-interval {{ interface_config.query_interval }} {% endif %} {% if interface_config.query_max_resp_time %} ip igmp query-max-response-time {{ interface_config.query_max_resp_time }} {% endif %} {% for group in interface_config.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 %} !