lib: Add naive deduplication checks when installing commands

Since not all duplicate commands can be caught during graph
construction, do a linear search over all commands before
installing.

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
This commit is contained in:
Quentin Young 2016-10-07 18:41:41 +00:00
parent faf2a19de0
commit c0f9771dcc

View File

@ -329,6 +329,17 @@ install_element (enum node_type ntype, struct cmd_element *cmd)
}
// add node to command graph and command vector
// idiotic O(n) deduplication logic, should just use a merkle tree
for (unsigned int i = 0; i < vector_active (cnode->cmd_vector); i++)
{
struct cmd_element *existing = vector_slot (cnode->cmd_vector, i);
if (strmatch (existing->string, cmd->string))
{
zlog_warn ("Duplicate command: %s\n", cmd->string);
return;
}
}
command_parse_format (cnode->cmdgraph, cmd);
vector_set (cnode->cmd_vector, cmd);
}