router bgp {{ my_as.asn }}
        {%- for internet_exchange in internet_exchanges %}
        {%- for address_family, sessions in internet_exchange.sessions.items() %}
        {%- if sessions|length > 0 %}
   neighbor peer-ixp-{{ internet_exchange.slug }}-v{{ address_family }} peer-group
   neighbor peer-ixp-{{ internet_exchange.slug }}-v{{ address_family }} next-hop-self
   {% if address_family == 6 -%}
   neighbor peer-ixp-{{ internet_exchange.slug }}-v{{ address_family }} maximum-routes 10
   {%- else -%}
   neighbor peer-ixp-{{ internet_exchange.slug }}-v{{ address_family }} maximum-routes 100
   {%- endif -%}
      {%- if address_family == 6 %}
   address-family ipv6
      {%- endif %}
      {%- if internet_exchange.import_routing_policies %}
      neighbor peer-ixp-{{ internet_exchange.slug }}-v{{ address_family }} route-map {% for import_policy in internet_exchange.import_routing_policies %}{%- if import_policy.address_family == address_family %}{{ import_policy.slug }} {% endif %}{% endfor %}in
      {%- else %}
      neighbor peer-ixp-{{ internet_exchange.slug }}-v{{ address_family }} route-map block-all in
      {%- endif %}
      {%- if internet_exchange.export_routing_policies %}
      neighbor peer-ixp-{{ internet_exchange.slug }}-v{{ address_family }} route-map {% for export_policy in internet_exchange.export_routing_policies %}{%- if export_policy.address_family == address_family %}{{ export_policy.slug }} {% endif %}{% endfor %}out
      {%- else %}
      neighbor peer-ixp-{{ internet_exchange.slug }}-v{{ address_family }} route-map block-all out
      {%- endif %}
      {%- if address_family == 6 %}
      neighbor peer-ixp-{{ internet_exchange.slug }}-v{{ address_family }} activate
      {%- endif %}
   !
   {%- for session in sessions %}
    neighbor {{ session.ip_address }} peer-group peer-ixp-{{ internet_exchange.slug }}-v{{ address_family }}
    neighbor {{ session.ip_address }} remote-as {{ session.autonomous_system.asn }}
    neighbor {{ session.ip_address }} description "{{ session.autonomous_system.name }}"
    {%- if address_family == 6 and session.autonomous_system.ipv6_max_prefixes > 0 %}
    neighbor {{ session.ip_address }} maximum-routes {{ session.autonomous_system.ipv6_max_prefixes }}
    {%- endif %}
    {%- if address_family == 4 and session.autonomous_system.ipv4_max_prefixes > 0 %}
    neighbor {{ session.ip_address }} maximum-routes {{ session.autonomous_system.ipv4_max_prefixes }}
    {%- endif %}

    {%- if session.is_route_server %}
    no neighbor {{ session.ip_address }} enforce-first-as
    {%- endif %}
    {%- if session.password %}
    {%- if session.encrypted_password %}
    neighbor {{ session.ip_address }} password 7 {{ session.encrypted_password }}
    {%- else %}
    neighbor {{ session.ip_address }} password 0 {{ session.password }}
    {%- endif %}
    {%- endif %}
    {%- if not session.enabled %}
    neighbor {{ session.ip_address }} shutdown
    {%- else %}
    no neighbor {{ session.ip_address }} shutdown
    {%- endif %}
    {%- if session.import_routing_policies %}
    {%- if address_family == 6 %}
    address-family ipv6
    {%- endif %}
       neighbor {{ session.ip_address }} route-map {% for import_policy in session.import_routing_policies %}{%- if (import_policy.address_family == address_family or export_policy.address_family == 0) %}{{ import_policy.slug }} {% endif %}{% endfor %}in
    {%- endif %}
    {%- if session.export_routing_policies %}
       neighbor {{ session.ip_address }} route-map {% for export_policy in session.export_routing_policies %}{%- if (export_policy.address_family == address_family or export_policy.address_family == 0) %}{{ export_policy.slug }} {% endif %}{% endfor %}out
    {%- endif %}
    !
{%- endfor %}
        {%- endif %}
        {%- endfor %}
        {%- endfor %}
exit