From f84dfd2345cf5d86cd9b55cbf716c3ec0fbb8184 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 + .../tests/sample_output/py2/interfaces_nomgmt | 1 + .../tests/sample_output/py2/interfaces_nomgmt_ztp | 1 + .../tests/sample_output/py2/interfaces_nomgmt_ztp_inband | 1 + .../tests/sample_output/py2/interfaces_nomgmt_ztp_inband_ip | 1 + .../tests/sample_output/py2/interfaces_nomgmt_ztp_ip | 1 + src/sonic-config-engine/tests/sample_output/py2/mvrf_interfaces | 1 + .../tests/sample_output/py2/mvrf_interfaces_nomgmt | 1 + .../tests/sample_output/py2/two_mgmt_interfaces | 1 + src/sonic-config-engine/tests/sample_output/py3/interfaces | 1 + .../tests/sample_output/py3/interfaces_nomgmt | 1 + .../tests/sample_output/py3/interfaces_nomgmt_ztp | 1 + .../tests/sample_output/py3/interfaces_nomgmt_ztp_inband | 1 + .../tests/sample_output/py3/interfaces_nomgmt_ztp_inband_ip | 1 + .../tests/sample_output/py3/interfaces_nomgmt_ztp_ip | 1 + src/sonic-config-engine/tests/sample_output/py3/mvrf_interfaces | 1 + .../tests/sample_output/py3/mvrf_interfaces_nomgmt | 1 + .../tests/sample_output/py3/two_mgmt_interfaces | 1 + 19 files changed, 19 insertions(+) diff --git a/files/image_config/interfaces/interfaces.j2 b/files/image_config/interfaces/interfaces.j2 index 295cebe352..18e1181c71 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/interfaces_nomgmt b/src/sonic-config-engine/tests/sample_output/py2/interfaces_nomgmt index b2d854266c..c447cfbc6d 100644 --- a/src/sonic-config-engine/tests/sample_output/py2/interfaces_nomgmt +++ b/src/sonic-config-engine/tests/sample_output/py2/interfaces_nomgmt @@ -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/interfaces_nomgmt_ztp b/src/sonic-config-engine/tests/sample_output/py2/interfaces_nomgmt_ztp index 2080d7dfcd..b41038fd8d 100644 --- a/src/sonic-config-engine/tests/sample_output/py2/interfaces_nomgmt_ztp +++ b/src/sonic-config-engine/tests/sample_output/py2/interfaces_nomgmt_ztp @@ -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/interfaces_nomgmt_ztp_inband b/src/sonic-config-engine/tests/sample_output/py2/interfaces_nomgmt_ztp_inband index 85d476a910..543819734f 100644 --- a/src/sonic-config-engine/tests/sample_output/py2/interfaces_nomgmt_ztp_inband +++ b/src/sonic-config-engine/tests/sample_output/py2/interfaces_nomgmt_ztp_inband @@ -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/interfaces_nomgmt_ztp_inband_ip b/src/sonic-config-engine/tests/sample_output/py2/interfaces_nomgmt_ztp_inband_ip index 9e62929b5a..57bf924ce7 100644 --- a/src/sonic-config-engine/tests/sample_output/py2/interfaces_nomgmt_ztp_inband_ip +++ b/src/sonic-config-engine/tests/sample_output/py2/interfaces_nomgmt_ztp_inband_ip @@ -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/interfaces_nomgmt_ztp_ip b/src/sonic-config-engine/tests/sample_output/py2/interfaces_nomgmt_ztp_ip index 9ddde6b5e8..31a6d33257 100644 --- a/src/sonic-config-engine/tests/sample_output/py2/interfaces_nomgmt_ztp_ip +++ b/src/sonic-config-engine/tests/sample_output/py2/interfaces_nomgmt_ztp_ip @@ -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/py2/mvrf_interfaces_nomgmt b/src/sonic-config-engine/tests/sample_output/py2/mvrf_interfaces_nomgmt index a110a91980..04490892fe 100644 --- a/src/sonic-config-engine/tests/sample_output/py2/mvrf_interfaces_nomgmt +++ b/src/sonic-config-engine/tests/sample_output/py2/mvrf_interfaces_nomgmt @@ -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/py2/two_mgmt_interfaces b/src/sonic-config-engine/tests/sample_output/py2/two_mgmt_interfaces index 12136a316a..ce3961f1a7 100644 --- a/src/sonic-config-engine/tests/sample_output/py2/two_mgmt_interfaces +++ b/src/sonic-config-engine/tests/sample_output/py2/two_mgmt_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 eth1 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/interfaces_nomgmt b/src/sonic-config-engine/tests/sample_output/py3/interfaces_nomgmt index b2d854266c..c447cfbc6d 100644 --- a/src/sonic-config-engine/tests/sample_output/py3/interfaces_nomgmt +++ b/src/sonic-config-engine/tests/sample_output/py3/interfaces_nomgmt @@ -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/interfaces_nomgmt_ztp b/src/sonic-config-engine/tests/sample_output/py3/interfaces_nomgmt_ztp index 2080d7dfcd..b41038fd8d 100644 --- a/src/sonic-config-engine/tests/sample_output/py3/interfaces_nomgmt_ztp +++ b/src/sonic-config-engine/tests/sample_output/py3/interfaces_nomgmt_ztp @@ -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/interfaces_nomgmt_ztp_inband b/src/sonic-config-engine/tests/sample_output/py3/interfaces_nomgmt_ztp_inband index 85d476a910..543819734f 100644 --- a/src/sonic-config-engine/tests/sample_output/py3/interfaces_nomgmt_ztp_inband +++ b/src/sonic-config-engine/tests/sample_output/py3/interfaces_nomgmt_ztp_inband @@ -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/interfaces_nomgmt_ztp_inband_ip b/src/sonic-config-engine/tests/sample_output/py3/interfaces_nomgmt_ztp_inband_ip index 9e62929b5a..57bf924ce7 100644 --- a/src/sonic-config-engine/tests/sample_output/py3/interfaces_nomgmt_ztp_inband_ip +++ b/src/sonic-config-engine/tests/sample_output/py3/interfaces_nomgmt_ztp_inband_ip @@ -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/interfaces_nomgmt_ztp_ip b/src/sonic-config-engine/tests/sample_output/py3/interfaces_nomgmt_ztp_ip index 9ddde6b5e8..31a6d33257 100644 --- a/src/sonic-config-engine/tests/sample_output/py3/interfaces_nomgmt_ztp_ip +++ b/src/sonic-config-engine/tests/sample_output/py3/interfaces_nomgmt_ztp_ip @@ -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 diff --git a/src/sonic-config-engine/tests/sample_output/py3/mvrf_interfaces_nomgmt b/src/sonic-config-engine/tests/sample_output/py3/mvrf_interfaces_nomgmt index a110a91980..04490892fe 100644 --- a/src/sonic-config-engine/tests/sample_output/py3/mvrf_interfaces_nomgmt +++ b/src/sonic-config-engine/tests/sample_output/py3/mvrf_interfaces_nomgmt @@ -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/two_mgmt_interfaces b/src/sonic-config-engine/tests/sample_output/py3/two_mgmt_interfaces index 7fa99896e8..5e2680854c 100644 --- a/src/sonic-config-engine/tests/sample_output/py3/two_mgmt_interfaces +++ b/src/sonic-config-engine/tests/sample_output/py3/two_mgmt_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