From bd651e26d3b5ad977256009731ba2b975ade1f33 Mon Sep 17 00:00:00 2001 From: Saikrishna Arcot Date: Tue, 13 Jun 2023 18:45:39 -0700 Subject: [PATCH] Re-add 127.0.0.1/8 when bringing down the interfaces (#15080) * Re-add 127.0.0.1/8 when bringing down the interfaces With #5353, 127.0.0.1/16 was added to the lo interface, and then 127.0.0.1/8 was removed. However, when bringing down the lo interface, like during a config reload, 127.0.0.1/16 gets removed, but 127.0.0.1/8 isn't added back to the interface. This means that there's a period of time where 127.0.0.1 is not available at all, and services that need to connect to 127.0.01 (such as for redis DB) will fail. To fix this, when going down, add 127.0.0.1/8. Add this address before the existing configuration gets removed, so that 127.0.0.1 is available at all times. Note that running `ifdown lo` doesn't actually bring down the loopback interface; the interface always stays "physically" up. Signed-off-by: Saikrishna Arcot --- files/image_config/interfaces/interfaces.j2 | 1 + src/sonic-config-engine/tests/sample_output/py2/interfaces | 1 + src/sonic-config-engine/tests/sample_output/py2/mvrf_interfaces | 1 + src/sonic-config-engine/tests/sample_output/py3/interfaces | 1 + src/sonic-config-engine/tests/sample_output/py3/mvrf_interfaces | 1 + 5 files changed, 5 insertions(+) diff --git a/files/image_config/interfaces/interfaces.j2 b/files/image_config/interfaces/interfaces.j2 index 1e554e4ed716..773cb749e6fc 100644 --- a/files/image_config/interfaces/interfaces.j2 +++ b/files/image_config/interfaces/interfaces.j2 @@ -26,6 +26,7 @@ iface lo inet loopback netmask 255.255.0.0 scope host post-up ip addr del 127.0.0.1/8 dev lo + down ip addr add 127.0.0.1/8 dev lo {% endblock loopback %} {% block mgmt_interface %} diff --git a/src/sonic-config-engine/tests/sample_output/py2/interfaces b/src/sonic-config-engine/tests/sample_output/py2/interfaces index 360ecf7b13de..a47c89258e34 100644 --- a/src/sonic-config-engine/tests/sample_output/py2/interfaces +++ b/src/sonic-config-engine/tests/sample_output/py2/interfaces @@ -10,6 +10,7 @@ iface lo inet loopback netmask 255.255.0.0 scope host post-up ip addr del 127.0.0.1/8 dev lo + down ip addr add 127.0.0.1/8 dev lo # The management network interface auto eth0 diff --git a/src/sonic-config-engine/tests/sample_output/py2/mvrf_interfaces b/src/sonic-config-engine/tests/sample_output/py2/mvrf_interfaces index 6143d7ba8c4b..5777bce1837c 100644 --- a/src/sonic-config-engine/tests/sample_output/py2/mvrf_interfaces +++ b/src/sonic-config-engine/tests/sample_output/py2/mvrf_interfaces @@ -19,6 +19,7 @@ iface lo inet loopback netmask 255.255.0.0 scope host post-up ip addr del 127.0.0.1/8 dev lo + down ip addr add 127.0.0.1/8 dev lo # The management network interface auto eth0 diff --git a/src/sonic-config-engine/tests/sample_output/py3/interfaces b/src/sonic-config-engine/tests/sample_output/py3/interfaces index 360ecf7b13de..a47c89258e34 100644 --- a/src/sonic-config-engine/tests/sample_output/py3/interfaces +++ b/src/sonic-config-engine/tests/sample_output/py3/interfaces @@ -10,6 +10,7 @@ iface lo inet loopback netmask 255.255.0.0 scope host post-up ip addr del 127.0.0.1/8 dev lo + down ip addr add 127.0.0.1/8 dev lo # The management network interface auto eth0 diff --git a/src/sonic-config-engine/tests/sample_output/py3/mvrf_interfaces b/src/sonic-config-engine/tests/sample_output/py3/mvrf_interfaces index 6143d7ba8c4b..5777bce1837c 100644 --- a/src/sonic-config-engine/tests/sample_output/py3/mvrf_interfaces +++ b/src/sonic-config-engine/tests/sample_output/py3/mvrf_interfaces @@ -19,6 +19,7 @@ iface lo inet loopback netmask 255.255.0.0 scope host post-up ip addr del 127.0.0.1/8 dev lo + down ip addr add 127.0.0.1/8 dev lo # The management network interface auto eth0