forked from Mirror/frr
ospf6d: remove meaningless ospf6_route_is_identical
As part of the check, it memcompares two structs ospf6_path. This struct has a pointer field nh_list which is allocated every time a new path is created, which means it can never be the same for two different paths. Therefore this check is always false and can be completely removed. Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
This commit is contained in:
parent
de48804c01
commit
8f359e1593
|
@ -704,27 +704,6 @@ struct ospf6_route *ospf6_route_add(struct ospf6_route *route,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (old) {
|
if (old) {
|
||||||
/* if route does not actually change, return unchanged */
|
|
||||||
if (ospf6_route_is_identical(old, route)) {
|
|
||||||
if (IS_OSPF6_DEBUG_ROUTE(MEMORY))
|
|
||||||
zlog_debug(
|
|
||||||
"%s %p: route add %p: needless update of %p old cost %u",
|
|
||||||
ospf6_route_table_name(table),
|
|
||||||
(void *)table, (void *)route,
|
|
||||||
(void *)old, old->path.cost);
|
|
||||||
else if (IS_OSPF6_DEBUG_ROUTE(TABLE))
|
|
||||||
zlog_debug("%s: route add: needless update",
|
|
||||||
ospf6_route_table_name(table));
|
|
||||||
|
|
||||||
ospf6_route_delete(route);
|
|
||||||
SET_FLAG(old->flag, OSPF6_ROUTE_ADD);
|
|
||||||
ospf6_route_table_assert(table);
|
|
||||||
|
|
||||||
/* to free the lookup lock */
|
|
||||||
route_unlock_node(node);
|
|
||||||
return old;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (IS_OSPF6_DEBUG_ROUTE(MEMORY))
|
if (IS_OSPF6_DEBUG_ROUTE(MEMORY))
|
||||||
zlog_debug(
|
zlog_debug(
|
||||||
"%s %p: route add %p cost %u paths %u nh %u: update of %p cost %u paths %u nh %u",
|
"%s %p: route add %p cost %u paths %u nh %u: update of %p cost %u paths %u nh %u",
|
||||||
|
|
|
@ -299,12 +299,6 @@ extern const char *const ospf6_path_type_substr[OSPF6_PATH_TYPE_MAX];
|
||||||
&& memcmp(&(ra)->path.origin, &(rb)->path.origin, \
|
&& memcmp(&(ra)->path.origin, &(rb)->path.origin, \
|
||||||
sizeof(struct ospf6_ls_origin)) \
|
sizeof(struct ospf6_ls_origin)) \
|
||||||
== 0)
|
== 0)
|
||||||
#define ospf6_route_is_identical(ra, rb) \
|
|
||||||
((ra)->type == (rb)->type \
|
|
||||||
&& memcmp(&(ra)->prefix, &(rb)->prefix, sizeof(struct prefix)) == 0 \
|
|
||||||
&& memcmp(&(ra)->path, &(rb)->path, sizeof(struct ospf6_path)) == 0 \
|
|
||||||
&& listcount(ra->paths) == listcount(rb->paths) \
|
|
||||||
&& ospf6_route_cmp_nexthops(ra, rb) == 0)
|
|
||||||
|
|
||||||
#define ospf6_route_is_best(r) (CHECK_FLAG ((r)->flag, OSPF6_ROUTE_BEST))
|
#define ospf6_route_is_best(r) (CHECK_FLAG ((r)->flag, OSPF6_ROUTE_BEST))
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue