diff --git a/net/quagga/Makefile b/net/quagga/Makefile
index 93cf75e01..98825ff13 100644
--- a/net/quagga/Makefile
+++ b/net/quagga/Makefile
@@ -1,5 +1,5 @@
PLUGIN_NAME= quagga
-PLUGIN_VERSION= 1.0.0
+PLUGIN_VERSION= 1.0.1
PLUGIN_COMMENT= Quagga Routing Suite
PLUGIN_DEPENDS= quagga
PLUGIN_MAINTAINER= franz.fabian.94@gmail.com
diff --git a/net/quagga/src/opnsense/mvc/app/controllers/OPNsense/Quagga/forms/dialogEditBGPNeighbor.xml b/net/quagga/src/opnsense/mvc/app/controllers/OPNsense/Quagga/forms/dialogEditBGPNeighbor.xml
index 34139c884..019d3a5b8 100644
--- a/net/quagga/src/opnsense/mvc/app/controllers/OPNsense/Quagga/forms/dialogEditBGPNeighbor.xml
+++ b/net/quagga/src/opnsense/mvc/app/controllers/OPNsense/Quagga/forms/dialogEditBGPNeighbor.xml
@@ -19,7 +19,7 @@
neighbor.updatesource
- text
+ select_multiple
Physical name of the interface facing the peer
diff --git a/net/quagga/src/opnsense/mvc/app/models/OPNsense/Quagga/BGP.xml b/net/quagga/src/opnsense/mvc/app/models/OPNsense/Quagga/BGP.xml
index 248132a33..1b29feaa5 100644
--- a/net/quagga/src/opnsense/mvc/app/models/OPNsense/Quagga/BGP.xml
+++ b/net/quagga/src/opnsense/mvc/app/models/OPNsense/Quagga/BGP.xml
@@ -45,9 +45,13 @@
Y
-
+
N
+ N
+
+ /^(?!0).*$/
+
0
diff --git a/net/quagga/src/opnsense/service/templates/OPNsense/Quagga/bgpd.conf b/net/quagga/src/opnsense/service/templates/OPNsense/Quagga/bgpd.conf
index 084040e65..a7fbc72c1 100644
--- a/net/quagga/src/opnsense/service/templates/OPNsense/Quagga/bgpd.conf
+++ b/net/quagga/src/opnsense/service/templates/OPNsense/Quagga/bgpd.conf
@@ -1,4 +1,5 @@
{% if helpers.exists('OPNsense.quagga.bgp.enabled') and OPNsense.quagga.bgp.enabled == '1' %}
+{% from 'OPNsense/Macros/interface.macro' import physical_interface %}
!
! Zebra configuration saved from vty
! 2017/03/03 20:21:04
@@ -8,27 +9,27 @@
!
{% if helpers.exists('OPNsense.quagga.bgp.asnumber') and OPNsense.quagga.bgp.asnumber != '' %}
router bgp {{ OPNsense.quagga.bgp.asnumber }}
-{% if helpers.exists('OPNsense.quagga.bgp.networks') %}
-{% for network in OPNsense.quagga.bgp.networks.split(',') %}
+{% if helpers.exists('OPNsense.quagga.bgp.networks') %}
+{% for network in OPNsense.quagga.bgp.networks.split(',') %}
network {{ network }}
-{% endfor %}
-{% endif %}
-{% if helpers.exists('OPNsense.quagga.bgp.neighbors.neighbor') %}
-{% for neighbor in helpers.toList('OPNsense.quagga.bgp.neighbors.neighbor') %}
-{% if neighbor.enabled == '1' %}
- neighbor {{ neighbor.address }} remote-as {{ neighbor.remoteas }}
-{% if helpers.exists('OPNsense.quagga.bgp.neighbors.neighbor.updatesource') and OPNsense.quagga.bgp.neighbors.neighbor.updatesource != '' %}
- neighbor {{ neighbor.address }} update-source {{ neighbor.updatesource }}
-{% endif %}
-{% if neighbor.nexthopself == '1' %}
+{% endfor %}
+{% endif %}
+{% if helpers.exists('OPNsense.quagga.bgp.neighbors.neighbor') %}
+{% for neighbor in helpers.toList('OPNsense.quagga.bgp.neighbors.neighbor') %}
+{% if neighbor.enabled == '1' %}
+ neighbor {{ neighbor.address }} remote-as {{ neighbor.remoteas }}
+{% if 'updatesource' in neighbor and neighbor.updatesource != '' %}
+ neighbor {{ neighbor.address }} update-source {{ physical_interface(neighbor.updatesource) }}
+{% endif %}
+{% if 'nexthopself' in neighbor and neighbor.nexthopself == '1' %}
neighbor {{ neighbor.address }} next-hop-self
-{% endif %}
-{% if neighbor.defaultoriginate == '1' %}
+{% endif %}
+{% if 'defaultoriginate' in neighbor and neighbor.defaultoriginate == '1' %}
neighbor {{ neighbor.address }} default-originate
-{% endif %}
-{% endif %}
-{% endfor %}
-{% endif %}
+{% endif %}
+{% endif %}
+{% endfor %}
+{% endif %}
{% endif %}
!
line vty