File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff 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
41184121def get_default_gateway (
You can’t perform that action at this time.
0 commit comments