From a24b9da3b2a6cb7c06accbe8495a7415cb7c3aa6 Mon Sep 17 00:00:00 2001 From: Suvarna Meenakshi Date: Fri, 23 Jun 2023 22:38:55 +0000 Subject: [PATCH 1/3] Add function to retrieve docker0 ipv4 and ipv6 addresses Signed-off-by: Suvarna Meenakshi --- .../sonic_py_common/multi_asic.py | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/sonic-py-common/sonic_py_common/multi_asic.py b/src/sonic-py-common/sonic_py_common/multi_asic.py index 792f1557ce86..688b199fe78b 100644 --- a/src/sonic-py-common/sonic_py_common/multi_asic.py +++ b/src/sonic-py-common/sonic_py_common/multi_asic.py @@ -1,6 +1,7 @@ import glob import os import subprocess +import netifaces from natsort import natsorted from swsscommon import swsscommon @@ -484,3 +485,26 @@ def get_asic_presence_list(): # asic is asid id: asic0, asic1.... asicN. Get the numeric value. asics_list.append(int(get_asic_id_from_name(asic))) return asics_list + +def get_docker0_ip(): + """ + @summary: This function will return docker0 ipv4 and ipv6 addresses + for multi_asic platform. + This function will return None for single asic platform. + @return: tuple containing docker0 ipv4 and ipv6 address + """ + docker0_v4 = None + docker0_v6 = None + + # return (None, None) for single asic platform + if not is_multi_asic(): + return (docker0_v4, docker0_v6) + + interfaces = netifaces.interfaces() + if "docker0" in interfaces: + addresses = netifaces.ifaddresses("docker0") + if netifaces.AF_INET in addresses: + docker0_v4 = addresses[netifaces.AF_INET][0]['addr'] + if netifaces.AF_INET6 in addresses: + docker0_v6 = addresses[netifaces.AF_INET6][0]['addr'] + return (docker0_v4, docker0_v6) From 9f170508c4af4155263c317f4cb730e18eb9b9a9 Mon Sep 17 00:00:00 2001 From: Suvarna Meenakshi Date: Tue, 27 Jun 2023 08:16:29 +0000 Subject: [PATCH 2/3] Add netifaces. Signed-off-by: Suvarna Meenakshi --- src/sonic-py-common/setup.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/sonic-py-common/setup.py b/src/sonic-py-common/setup.py index 59e7bb0bf1df..34e0721264b0 100644 --- a/src/sonic-py-common/setup.py +++ b/src/sonic-py-common/setup.py @@ -10,6 +10,7 @@ dependencies = [ 'natsort==6.2.1', # 6.2.1 is the last version which supports Python 2 'pyyaml', + 'netifaces>=0.10.7', ] dependencies += sonic_dependencies From 1de85033e840b7ae21c14a2805d04db5520547d7 Mon Sep 17 00:00:00 2001 From: Suvarna Meenakshi Date: Tue, 27 Jun 2023 08:42:40 +0000 Subject: [PATCH 3/3] Modify function name Signed-off-by: Suvarna Meenakshi --- src/sonic-py-common/sonic_py_common/multi_asic.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sonic-py-common/sonic_py_common/multi_asic.py b/src/sonic-py-common/sonic_py_common/multi_asic.py index 688b199fe78b..06178513d739 100644 --- a/src/sonic-py-common/sonic_py_common/multi_asic.py +++ b/src/sonic-py-common/sonic_py_common/multi_asic.py @@ -486,7 +486,7 @@ def get_asic_presence_list(): asics_list.append(int(get_asic_id_from_name(asic))) return asics_list -def get_docker0_ip(): +def get_docker0_ips(): """ @summary: This function will return docker0 ipv4 and ipv6 addresses for multi_asic platform.