From 7adf2b1c05c059c3f18befa9d439a3a834fa0443 Mon Sep 17 00:00:00 2001 From: Yoush <63637102+youshcentec@users.noreply.github.com> Date: Thu, 19 Jan 2023 01:24:28 +0800 Subject: [PATCH] [BugFix] Fix the bug that it gets error system-mac of centec platform (#12721) Why I did it When getting system mac of centec platform, it would increase by 1 the last byte of mac, but it could not consider the case of carry. How I did it Firstly, I would replace the ":" with "" of mac to a string. And then, I would convert the mac from string to int and increase by 1, at last convert it to string with inserting ":". --- src/sonic-py-common/sonic_py_common/device_info.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/sonic-py-common/sonic_py_common/device_info.py b/src/sonic-py-common/sonic_py_common/device_info.py index 4d1df63522..7b55a03842 100644 --- a/src/sonic-py-common/sonic_py_common/device_info.py +++ b/src/sonic-py-common/sonic_py_common/device_info.py @@ -473,9 +473,10 @@ def get_system_mac(namespace=None): # Align last byte of MAC if necessary if version_info and version_info['asic_type'] == 'centec': - last_byte = mac[-2:] - aligned_last_byte = format(int(int(last_byte, 16) + 1), '02x') - mac = mac[:-2] + aligned_last_byte + mac_tmp = mac.replace(':','') + mac_tmp = "{:012x}".format(int(mac_tmp, 16) + 1) + mac_tmp = re.sub("(.{2})", "\\1:", mac_tmp, 0, re.DOTALL) + mac = mac_tmp[:-1] return mac