Skip to content

Commit 3d0069f

Browse files
committed
utils_net:Update get_default_gateway_json to support multiple gw
Signed-off-by: Haijiao Zhao <haizhao@redhat.com>
1 parent 1144cf5 commit 3d0069f

1 file changed

Lines changed: 16 additions & 13 deletions

File tree

virttest/utils_net.py

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4100,19 +4100,22 @@ def get_default_gateway_json(
41004100

41014101
if len(default_route_list) == 0:
41024102
raise exceptions.TestError("Cannot get default gateway with given condition")
4103-
elif len(default_route_list) == 1:
4104-
default_route = default_route_list[0]
4105-
if iface_name and "dev" in default_route:
4106-
return default_route["dev"]
4107-
if "gateway" in default_route:
4108-
return default_route["gateway"]
4109-
else:
4110-
# TODO:deal with multiple gateway
4111-
if iface_name:
4112-
gw = [path["dev"] for path in default_route_list]
4113-
else:
4114-
gw = [path["gateway"] for path in default_route_list]
4115-
return gw
4103+
elif len(default_route_list) > 1:
4104+
# For multiple default gateway, return the one with smaller metric
4105+
# which has the higher priority
4106+
default_route_list = [
4107+
x
4108+
for x in default_route_list
4109+
if x["metric"] == min([y["metric"] for y in default_route_list])
4110+
]
4111+
4112+
default_route = default_route_list[0]
4113+
LOG.debug(f"Default route: {default_route}")
4114+
4115+
if iface_name and "dev" in default_route:
4116+
return default_route["dev"]
4117+
if "gateway" in default_route:
4118+
return default_route["gateway"]
41164119

41174120

41184121
def get_default_gateway(

0 commit comments

Comments
 (0)