diff --git a/dockers/docker-fpm-quagga/bgpd.conf.j2 b/dockers/docker-fpm-quagga/bgpd.conf.j2
index 5f53d9698b2e..ceb866edd02d 100644
--- a/dockers/docker-fpm-quagga/bgpd.conf.j2
+++ b/dockers/docker-fpm-quagga/bgpd.conf.j2
@@ -84,7 +84,9 @@ router bgp {{ minigraph_bgp_asn }}
neighbor {{ bgp_peer['name'] }} update-source Loopback0
neighbor {{ bgp_peer['name'] }} route-map FROM_BGP_SPEAKER_V4 in
neighbor {{ bgp_peer['name'] }} route-map TO_BGP_SPEAKER_V4 out
- bgp listen range {{ bgp_peer['ip_range'] }} peer-group {{ bgp_peer['name'] }}
+{% for ip_range in bgp_peer['ip_range'] %}
+ bgp listen range {{ip_range}} peer-group {{ bgp_peer['name'] }}
+{% endfor %}
{% endfor %}
{% endblock bgp_peers_with_range %}
!
diff --git a/src/sonic-config-engine/minigraph.py b/src/sonic-config-engine/minigraph.py
index 0344ad0f04e6..1fd16f376fab 100644
--- a/src/sonic-config-engine/minigraph.py
+++ b/src/sonic-config-engine/minigraph.py
@@ -281,9 +281,10 @@ def parse_cpg(cpg, hname):
if bgpPeer.find(str(QName(ns1, "PeersRange"))) is not None:
name = bgpPeer.find(str(QName(ns1, "Name"))).text
ip_range = bgpPeer.find(str(QName(ns1, "PeersRange"))).text
+ ip_range_group = ip_range.split(';') if ip_range and ip_range != "" else []
bgp_peers_with_range.append({
'name': name,
- 'ip_range': ip_range
+ 'ip_range': ip_range_group
})
else:
for bgp_session in bgp_sessions:
diff --git a/src/sonic-config-engine/tests/t0-sample-bgp-speaker.xml b/src/sonic-config-engine/tests/t0-sample-bgp-speaker.xml
index b5e373ddd868..8a21c041c80e 100644
--- a/src/sonic-config-engine/tests/t0-sample-bgp-speaker.xml
+++ b/src/sonic-config-engine/tests/t0-sample-bgp-speaker.xml
@@ -111,7 +111,7 @@
10.1.0.32
BGPSLBPassive
- 10.10.10.10/26
+ 10.10.10.10/26;100.100.100.100/26
diff --git a/src/sonic-config-engine/tests/test_cfggen.py b/src/sonic-config-engine/tests/test_cfggen.py
index eae4cb74fa42..6835c60e27fd 100644
--- a/src/sonic-config-engine/tests/test_cfggen.py
+++ b/src/sonic-config-engine/tests/test_cfggen.py
@@ -113,7 +113,7 @@ def test_minigraph_neighbors(self):
def test_minigraph_peers_with_range(self):
argument = '-m "' + self.sample_graph_bgp_speaker + '" -p "' + self.port_config + '" -v minigraph_bgp_peers_with_range'
output = self.run_script(argument)
- self.assertEqual(output.strip(), "[{'name': 'BGPSLBPassive', 'ip_range': '10.10.10.10/26'}]")
+ self.assertEqual(output.strip(), "[{'name': 'BGPSLBPassive', 'ip_range': ['10.10.10.10/26', '100.100.100.100/26']}]")
def test_minigraph_deployment_id(self):
argument = '-m "' + self.sample_graph_bgp_speaker + '" -p "' + self.port_config + '" -v deployment_id'