From 9e16a7a452cd5d467080324dd2997687c794c65d Mon Sep 17 00:00:00 2001 From: Saikrishna Arcot Date: Wed, 14 Jun 2023 16:28:57 -0700 Subject: [PATCH] Re-add 127.0.0.1/8 when bringing down the interfaces (#15080) (#15462) * 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 1e554e4ed7..773cb749e6 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 360ecf7b13..a47c89258e 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 6143d7ba8c..5777bce183 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 360ecf7b13..a47c89258e 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 6143d7ba8c..5777bce183 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