mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-05-28 15:33:34 +00:00
zebra: add type to nhg_prot_del API for sanity check
Add type to the nhg_proto_del API params for sanity checking that the types of the route sent by the proto matches the type found with the ID. Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
This commit is contained in:
parent
54a701e4c1
commit
aaa42e056f
@ -1746,7 +1746,7 @@ static void zread_nhg_del(ZAPI_HANDLER_ARGS)
|
||||
* Delete the received nhg id
|
||||
*/
|
||||
|
||||
nhe = zebra_nhg_proto_del(id);
|
||||
nhe = zebra_nhg_proto_del(id, proto);
|
||||
|
||||
if (nhe) {
|
||||
zebra_nhg_decrement_ref(nhe);
|
||||
|
@ -2853,7 +2853,7 @@ struct nhg_hash_entry *zebra_nhg_proto_add(uint32_t id, int type,
|
||||
}
|
||||
|
||||
/* Delete NHE from upper level proto, caller must decrement ref */
|
||||
struct nhg_hash_entry *zebra_nhg_proto_del(uint32_t id)
|
||||
struct nhg_hash_entry *zebra_nhg_proto_del(uint32_t id, int type)
|
||||
{
|
||||
struct nhg_hash_entry *nhe;
|
||||
|
||||
@ -2866,6 +2866,15 @@ struct nhg_hash_entry *zebra_nhg_proto_del(uint32_t id)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (type != nhe->type) {
|
||||
if (IS_ZEBRA_DEBUG_NHG)
|
||||
zlog_debug(
|
||||
"%s: id %u, type %s mismatch, sent by %s, ignoring",
|
||||
__func__, id, zebra_route_string(nhe->type),
|
||||
zebra_route_string(type));
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (CHECK_FLAG(nhe->flags, NEXTHOP_GROUP_PROTO_RELEASED)) {
|
||||
if (IS_ZEBRA_DEBUG_NHG)
|
||||
zlog_debug("%s: id %u, already released", __func__, id);
|
||||
|
@ -294,7 +294,7 @@ struct nhg_hash_entry *zebra_nhg_proto_add(uint32_t id, int type,
|
||||
*
|
||||
* Caller must decrement ref with zebra_nhg_decrement_ref() when done.
|
||||
*/
|
||||
struct nhg_hash_entry *zebra_nhg_proto_del(uint32_t id);
|
||||
struct nhg_hash_entry *zebra_nhg_proto_del(uint32_t id, int type);
|
||||
|
||||
/*
|
||||
* Remove specific by proto NHGs.
|
||||
|
Loading…
Reference in New Issue
Block a user