{%- set peer = config.get_peer(peer_name) %}
{%- set port = peer.port.number %}
{%- set addresses = ([peer.ipv4.address | string] if peer.ipv4 else []) + ([peer.ipv6.address | string] if peer.ipv6 else []) -%}

[Interface]
Address = {{ addresses | join(", ") }}
ListenPort = {{ port }}
PrivateKey = {{ peer.private_key }}

{%- set p2ps = config.point_to_point -%}

{%- for p2p in p2ps -%}

    {%- if p2p.peer1_name == peer_name %}
        {%- set other_name = p2p.peer2_name %}
        {%- set other_peer = config.get_peer(other_name) %}
        {%- set other_addresses = ([other_peer.ipv4.address | string] if other_peer.ipv4 else []) + ([other_peer.ipv6.address | string] if other_peer.ipv6 else []) %}
[Peer]
PublicKey = {{ other_peer.public_key }}
PresharedKey = {{ p2p.preshared_key }}
AllowedIPs = {{ other_addresses | join(", ") }}
        {%- if p2p.peer2_endpoint is not none %}
Endpoint = {{ p2p.peer2_endpoint }}:{{ other_peer.port.number }}
        {% endif %}

    {% elif p2p.peer2_name == peer_name %}

        {% set other_name = config.get_peer_name(p2p.peer1_name) %}
        {% set other_peer = config.get_peer(other_name) %}
        {% set other_addresses = ([other_peer.ipv4.address | string] if other_peer.ipv4 else []) + ([other_peer.ipv6.address | string] if other_peer.ipv6 else []) %}
[Peer]
PublicKey = {{ other_peer.public_key }}
PresharedKey = {{ p2p.preshared_key }}
AllowedIPs = {{ other_addresses | join(", ") }}
        {%- if p2p.peer1_endpoint is not none %}
Endpoint = {{ p2p.peer1_endpoint }}:{{ other_peer.port.number }}
        {% endif %}

    {% endif %}

{% endfor %}
