! {# RIP key-chain definition #} {% if interface is defined and interface is not none %} {% for iface, iface_config in interface.items() %} {% if iface_config.authentication is defined and iface_config.authentication.md5 is defined and iface_config.authentication.md5 is not none %} key chain {{ iface }}-rip {% for key_id, key_options in iface_config.authentication.md5.items() %} key {{ key_id }} {% if key_options.password is defined and key_options.password is not none %} key-string {{ key_options.password }} {% endif %} {% endfor %} {% endif %} {% endfor %} {% endif %} ! {# Interface specific configuration #} {% if interface is defined and interface is not none %} {% for iface, iface_config in interface.items() %} interface {{ iface }} {% if iface_config.authentication is defined and iface_config.authentication.plaintext_password is defined and iface_config.authentication.plaintext_password is not none %} ip rip authentication mode text ip rip authentication string {{ iface_config.authentication.plaintext_password }} {% elif iface_config.authentication is defined and iface_config.authentication.md5 is defined and iface_config.authentication.md5 is not none %} ip rip authentication key-chain {{ iface }}-rip ip rip authentication mode md5 {% endif %} {% if iface_config.split_horizon is defined and iface_config.split_horizon.disable is defined %} no ip rip split-horizon {% endif %} {% if iface_config.split_horizon is defined and iface_config.split_horizon.poison_reverse is defined %} ip rip split-horizon poisoned-reverse {% endif %} {% endfor %} {% endif %} ! router rip {% if default_distance is defined and default_distance is not none %} distance {{ default_distance }} {% endif %} {% if network_distance is defined and network_distance is not none %} {% for network, network_config in network_distance.items() %} {% if network_config.distance is defined and network_config.distance is not none %} distance {{ network_config.distance }} {{ network }} {% endif %} {% endfor %} {% endif %} {% if neighbor is defined and neighbor is not none %} {% for address in neighbor %} neighbor {{ address }} {% endfor %} {% endif %} {% if distribute_list is defined and distribute_list is not none %} {% if distribute_list.access_list is defined and distribute_list.access_list is not none %} {% if distribute_list.access_list.in is defined and distribute_list.access_list.in is not none %} distribute-list {{ distribute_list.access_list.in }} in {% endif %} {% if distribute_list.access_list.out is defined and distribute_list.access_list.out is not none %} distribute-list {{ distribute_list.access_list.out }} out {% endif %} {% endif %} {% if distribute_list.interface is defined and distribute_list.interface is not none %} {% for interface, interface_config in distribute_list.interface.items() %} {% if interface_config.access_list is defined and interface_config.access_list is not none %} {% if interface_config.access_list.in is defined and interface_config.access_list.in is not none %} distribute-list {{ interface_config.access_list.in }} in {{ interface }} {% endif %} {% if interface_config.access_list.out is defined and interface_config.access_list.out is not none %} distribute-list {{ interface_config.access_list.out }} out {{ interface }} {% endif %} {% endif %} {% if interface_config.prefix_list is defined and interface_config.prefix_list is not none %} {% if interface_config.prefix_list.in is defined and interface_config.prefix_list.in is not none %} distribute-list prefix {{ interface_config.prefix_list.in }} in {{ interface }} {% endif %} {% if interface_config.prefix_list.out is defined and interface_config.prefix_list.out is not none %} distribute-list prefix {{ interface_config.prefix_list.out }} out {{ interface }} {% endif %} {% endif %} {% endfor %} {% endif %} {% if distribute_list.prefix_list is defined and distribute_list.prefix_list is not none %} {% if distribute_list.prefix_list.in is defined and distribute_list.prefix_list.in is not none %} distribute-list prefix {{ distribute_list.prefix_list.in }} in {% endif %} {% if distribute_list.prefix_list.out is defined and distribute_list.prefix_list.out is not none %} distribute-list prefix {{ distribute_list.prefix_list.out }} out {% endif %} {% endif %} {% endif %} {% include 'frr/rip_ripng.frr.j2' %} !