{% set ip_netns_prefix = '' if not item.netns else '-n "{}"'.format(item.netns) %} auto wg_{{ item.name }} iface wg_{{ item.name }} inet manual post-down ip link del $IFACE pre-up ip link add $IFACE type wireguard || true pre-up wg setconf $IFACE /etc/wireguard/$IFACE.conf {% if item.netns %} pre-up ip link set dev $IFACE netns "{{ item.netns }}" {% endif %} # set ips and routs up ip {{ ip_netns_prefix }} link set dev $IFACE up mtu {{ item.mtu }} {% if item.route|length == 1 and item.ip|length == 1%} pre-up ip {{ip_netns_prefix}} addr add {{ item.ip[0] }} peer {{ item.route[0] }} dev $IFACE up ip {{ ip_netns_prefix }} route replace {{ item.route[0] }} src {{ item.ip[0].split('/')[0] }} dev $IFACE {% else %} {% for i in item.ip %} pre-up ip {{ ip_netns_prefix }} addr add {{ i }} dev $IFACE {% endfor %} {% for i in item.route %} up ip {{ ip_netns_prefix }} route replace {{ i }} dev $IFACE {% endfor %} {% endif %} # custom hooks {% for scriptname in ["pre-up", "up", "post-up", "pre-down", "down", "post-down"]%} {% for scriptline in item.scripts[scriptname] or [] %} {{ scriptname }} {{ scriptline }} {% endfor %} {% endfor %} iface wg_{{ item.name }} inet6 manual {% if item.route6|length == 1 and item.ip6|length == 1%} pre-up ip -6 {{ ip_netns_prefix }} addr add {{ item.ip6[0] }} peer {{ item.route6[0] }} dev $IFACE up ip -6 {{ ip_netns_prefix }} route replace {{ item.route6[0] }} src {{ item.ip6[0].split('/')[0] }} dev $IFACE {% else %} {% for i in item.ip6 %} pre-up ip -6 {{ ip_netns_prefix }} addr add {{ i }} dev $IFACE {% endfor %} {% for i in item.route6 %} up ip -6 {{ ip_netns_prefix }} route replace {{ i }} dev $IFACE {% endfor %} {% endif %}