mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-06-09 11:35:37 +00:00

Add a topotest that ensures that when addpath is enabled and two paths with same nexthop are received, they are sent to ZEBRA which detects 'duplicate nexthop'. Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
49 lines
1.3 KiB
Python
49 lines
1.3 KiB
Python
#!/usr/bin/env python
|
|
# SPDX-License-Identifier: ISC
|
|
#
|
|
# common_check.py
|
|
#
|
|
# Copyright 2024 6WIND S.A.
|
|
|
|
#
|
|
import json
|
|
from lib import topotest
|
|
|
|
|
|
def ip_check_path_selection(router, ipaddr_str, expected, vrf_name=None):
|
|
if vrf_name:
|
|
cmdstr = f'show ip route vrf {vrf_name} {ipaddr_str} json'
|
|
else:
|
|
cmdstr = f'show ip route {ipaddr_str} json'
|
|
try:
|
|
output = json.loads(router.vtysh_cmd(cmdstr))
|
|
except:
|
|
output = {}
|
|
|
|
ret = topotest.json_cmp(output, expected)
|
|
if ret is None:
|
|
num_nh_expected = len(expected[ipaddr_str][0]["nexthops"])
|
|
num_nh_observed = len(output[ipaddr_str][0]["nexthops"])
|
|
if num_nh_expected == num_nh_observed:
|
|
return ret
|
|
return "{}, prefix {} does not have the correct number of nexthops : observed {}, expected {}".format(
|
|
router.name, ipaddr_str, num_nh_observed, num_nh_expected
|
|
)
|
|
return ret
|
|
|
|
|
|
def iproute2_check_path_selection(router, ipaddr_str, expected, vrf_name=None):
|
|
if not topotest.iproute2_is_json_capable():
|
|
return None
|
|
|
|
if vrf_name:
|
|
cmdstr = f'ip -json route show vrf {vrf_name} {ipaddr_str}'
|
|
else:
|
|
cmdstr = f'ip -json route show {ipaddr_str}'
|
|
try:
|
|
output = json.loads(cmdstr)
|
|
except:
|
|
output = []
|
|
|
|
return topotest.json_cmp(output, expected)
|