forked from Mirror/frr
lib: Add common handler for nexthop_group_equal*()
Add a common handler function for the different nexthop_group_equal*() comparison functions. Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
This commit is contained in:
parent
dd9546e196
commit
f17f2c5d6c
|
@ -132,13 +132,12 @@ struct nexthop *nexthop_exists(const struct nexthop_group *nhg,
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* This assumes ordered */
|
static bool
|
||||||
bool nexthop_group_equal_no_recurse(const struct nexthop_group *nhg1,
|
nexthop_group_equal_common(const struct nexthop_group *nhg1,
|
||||||
const struct nexthop_group *nhg2)
|
const struct nexthop_group *nhg2,
|
||||||
|
uint8_t (*nexthop_group_nexthop_num_func)(
|
||||||
|
const struct nexthop_group *nhg))
|
||||||
{
|
{
|
||||||
struct nexthop *nh1 = NULL;
|
|
||||||
struct nexthop *nh2 = NULL;
|
|
||||||
|
|
||||||
if (nhg1 && !nhg2)
|
if (nhg1 && !nhg2)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
@ -148,8 +147,22 @@ bool nexthop_group_equal_no_recurse(const struct nexthop_group *nhg1,
|
||||||
if (nhg1 == nhg2)
|
if (nhg1 == nhg2)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
if (nexthop_group_nexthop_num_no_recurse(nhg1)
|
if (nexthop_group_nexthop_num_func(nhg1)
|
||||||
!= nexthop_group_nexthop_num_no_recurse(nhg2))
|
!= nexthop_group_nexthop_num_func(nhg2))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* This assumes ordered */
|
||||||
|
bool nexthop_group_equal_no_recurse(const struct nexthop_group *nhg1,
|
||||||
|
const struct nexthop_group *nhg2)
|
||||||
|
{
|
||||||
|
struct nexthop *nh1 = NULL;
|
||||||
|
struct nexthop *nh2 = NULL;
|
||||||
|
|
||||||
|
if (!nexthop_group_equal_common(nhg1, nhg2,
|
||||||
|
&nexthop_group_nexthop_num_no_recurse))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
for (nh1 = nhg1->nexthop, nh2 = nhg2->nexthop; nh1 || nh2;
|
for (nh1 = nhg1->nexthop, nh2 = nhg2->nexthop; nh1 || nh2;
|
||||||
|
@ -172,16 +185,7 @@ bool nexthop_group_equal(const struct nexthop_group *nhg1,
|
||||||
struct nexthop *nh1 = NULL;
|
struct nexthop *nh1 = NULL;
|
||||||
struct nexthop *nh2 = NULL;
|
struct nexthop *nh2 = NULL;
|
||||||
|
|
||||||
if (nhg1 && !nhg2)
|
if (!nexthop_group_equal_common(nhg1, nhg2, &nexthop_group_nexthop_num))
|
||||||
return false;
|
|
||||||
|
|
||||||
if (!nhg1 && nhg2)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
if (nhg1 == nhg2)
|
|
||||||
return true;
|
|
||||||
|
|
||||||
if (nexthop_group_nexthop_num(nhg1) != nexthop_group_nexthop_num(nhg2))
|
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
for (nh1 = nhg1->nexthop, nh2 = nhg2->nexthop; nh1 || nh2;
|
for (nh1 = nhg1->nexthop, nh2 = nhg2->nexthop; nh1 || nh2;
|
||||||
|
|
Loading…
Reference in a new issue