diff --git a/dockers/docker-fpm-frr/zebra.interfaces.conf.j2 b/dockers/docker-fpm-frr/zebra.interfaces.conf.j2 index 4a089e4dc72..a42a42b12af 100644 --- a/dockers/docker-fpm-frr/zebra.interfaces.conf.j2 +++ b/dockers/docker-fpm-frr/zebra.interfaces.conf.j2 @@ -39,13 +39,23 @@ link-detect {% endif %} {% endfor %} {% endif %} +{% if lo_ipv4_addrs|length > 0 or lo_ipv6_addrs|length > 0 %} +interface Loopback0 +{% if lo_ipv4_addrs|length > 0 %} + ip address {{ lo_ipv4_addrs[0] }} +{% endif %} +{% if lo_ipv6_addrs|length > 0 %} + ipv6 address {{ lo_ipv6_addrs[0] | ip }}/{{ lo_ipv6_addrs[0] | prefixlen }} +{% endif %} +! +{% endif %} ! Set ip source to loopback for bgp learned routes -{% if lo_ipv4_addrs|length > 0 -%} +{% if lo_ipv4_addrs|length > 0 %} route-map RM_SET_SRC permit 10 set src {{ lo_ipv4_addrs[0] | ip }} ! {% endif %} -{% if lo_ipv6_addrs|length > 0 %} +{% if lo_ipv6_addrs|length > 0 %} route-map RM_SET_SRC6 permit 10 set src {{ lo_ipv6_addrs[0] | ip }} ! diff --git a/src/sonic-config-engine/minigraph.py b/src/sonic-config-engine/minigraph.py index 7799f3367d9..d7506cac1e0 100644 --- a/src/sonic-config-engine/minigraph.py +++ b/src/sonic-config-engine/minigraph.py @@ -573,7 +573,7 @@ def parse_xml(filename, platform=None, port_config_file=None): vlan_members = None pcs = None mgmt_intf = None - lo_intf = None + lo_intfs = None neighbors = None devices = None hostname = None @@ -650,7 +650,10 @@ def parse_xml(filename, platform=None, port_config_file=None): if alias in port_speeds_default: results['MGMT_PORT'][name]['speed'] = port_speeds_default[alias] results['MGMT_INTERFACE'][(name, key[1])] = mgmt_intf[key] - results['LOOPBACK_INTERFACE'] = lo_intfs + results['LOOPBACK_INTERFACE'] = {} + for lo_intf in lo_intfs: + results['LOOPBACK_INTERFACE'][lo_intf] = lo_intfs[lo_intf] + results['LOOPBACK_INTERFACE'][lo_intf[0]] = {} results['MGMT_VRF_CONFIG'] = mvrf phyport_intfs = {} diff --git a/src/sonic-config-engine/tests/sample_output/frr.conf b/src/sonic-config-engine/tests/sample_output/frr.conf index edcf0939a03..99eb56f7039 100644 --- a/src/sonic-config-engine/tests/sample_output/frr.conf +++ b/src/sonic-config-engine/tests/sample_output/frr.conf @@ -30,11 +30,14 @@ interface PortChannel04 link-detect ! ! +interface Loopback0 + ip address 10.1.0.32/32 + ipv6 address fc00:1::32/128 +! ! Set ip source to loopback for bgp learned routes route-map RM_SET_SRC permit 10 set src 10.1.0.32 ! - route-map RM_SET_SRC6 permit 10 set src fc00:1::32 ! diff --git a/src/sonic-config-engine/tests/sample_output/t2-chassis-fe-pc-zebra.conf b/src/sonic-config-engine/tests/sample_output/t2-chassis-fe-pc-zebra.conf index 312394bf76c..a28f8129bb0 100644 --- a/src/sonic-config-engine/tests/sample_output/t2-chassis-fe-pc-zebra.conf +++ b/src/sonic-config-engine/tests/sample_output/t2-chassis-fe-pc-zebra.conf @@ -23,6 +23,9 @@ interface PortChannel8 link-detect ! ! +interface Loopback0 + ip address 4.0.0.0/32 +! ! Set ip source to loopback for bgp learned routes route-map RM_SET_SRC permit 10 set src 4.0.0.0 diff --git a/src/sonic-config-engine/tests/sample_output/t2-chassis-fe-vni-zebra.conf b/src/sonic-config-engine/tests/sample_output/t2-chassis-fe-vni-zebra.conf index bd2b5c84f47..bf169c05796 100644 --- a/src/sonic-config-engine/tests/sample_output/t2-chassis-fe-vni-zebra.conf +++ b/src/sonic-config-engine/tests/sample_output/t2-chassis-fe-vni-zebra.conf @@ -28,6 +28,9 @@ interface Ethernet8 link-detect ! ! +interface Loopback0 + ip address 4.0.0.0/32 +! ! Set ip source to loopback for bgp learned routes route-map RM_SET_SRC permit 10 set src 4.0.0.0 diff --git a/src/sonic-config-engine/tests/sample_output/t2-chassis-fe-zebra.conf b/src/sonic-config-engine/tests/sample_output/t2-chassis-fe-zebra.conf index e047fcd64f2..0de0ab9a122 100644 --- a/src/sonic-config-engine/tests/sample_output/t2-chassis-fe-zebra.conf +++ b/src/sonic-config-engine/tests/sample_output/t2-chassis-fe-zebra.conf @@ -28,6 +28,9 @@ interface Ethernet8 link-detect ! ! +interface Loopback0 + ip address 4.0.0.0/32 +! ! Set ip source to loopback for bgp learned routes route-map RM_SET_SRC permit 10 set src 4.0.0.0 diff --git a/src/sonic-config-engine/tests/sample_output/zebra_frr.conf b/src/sonic-config-engine/tests/sample_output/zebra_frr.conf index 690f609dafc..16e120befac 100644 --- a/src/sonic-config-engine/tests/sample_output/zebra_frr.conf +++ b/src/sonic-config-engine/tests/sample_output/zebra_frr.conf @@ -28,11 +28,14 @@ interface PortChannel04 link-detect ! ! +interface Loopback0 + ip address 10.1.0.32/32 + ipv6 address fc00:1::32/128 +! ! Set ip source to loopback for bgp learned routes route-map RM_SET_SRC permit 10 set src 10.1.0.32 ! - route-map RM_SET_SRC6 permit 10 set src fc00:1::32 !