Merge pull request #6243 from pguibert6WIND/flowspec_some_regression_seen

Flowspec some regression seen
This commit is contained in:
Quentin Young 2020-07-23 11:26:00 -04:00 committed by GitHub
commit bd6cec43c3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 17 additions and 7 deletions

View File

@ -376,11 +376,10 @@ void route_vty_out_flowspec(struct vty *vty, const struct prefix *p,
bpr->priority, bpr->priority,
bpr->action->table_id); bpr->action->table_id);
} }
if (list_began)
vty_out(vty, ")");
vty_out(vty, "\n");
} }
if (!list_began) if (list_began)
vty_out(vty, ")\n");
else
vty_out(vty, "\tnot installed in PBR\n"); vty_out(vty, "\tnot installed in PBR\n");
} }
} }

View File

@ -336,13 +336,19 @@ bool zebra_pbr_ipset_entry_hash_equal(const void *arg1, const void *arg2)
return true; return true;
} }
void zebra_pbr_iptable_free(void *arg) /* this function gives option to flush plugin memory contexts
* with all parameter. set it to true to flush all
* set it to false to flush only passed arg argument
*/
static void _zebra_pbr_iptable_free_all(void *arg, bool all)
{ {
struct zebra_pbr_iptable *iptable; struct zebra_pbr_iptable *iptable;
struct listnode *node, *nnode; struct listnode *node, *nnode;
char *name; char *name;
iptable = (struct zebra_pbr_iptable *)arg; iptable = (struct zebra_pbr_iptable *)arg;
if (all)
hook_call(zebra_pbr_iptable_update, 0, iptable); hook_call(zebra_pbr_iptable_update, 0, iptable);
if (iptable->interface_name_list) { if (iptable->interface_name_list) {
@ -356,6 +362,11 @@ void zebra_pbr_iptable_free(void *arg)
XFREE(MTYPE_TMP, iptable); XFREE(MTYPE_TMP, iptable);
} }
void zebra_pbr_iptable_free(void *arg)
{
_zebra_pbr_iptable_free_all(arg, false);
}
uint32_t zebra_pbr_iptable_hash_key(const void *arg) uint32_t zebra_pbr_iptable_hash_key(const void *arg)
{ {
const struct zebra_pbr_iptable *iptable = arg; const struct zebra_pbr_iptable *iptable = arg;
@ -529,7 +540,7 @@ static void zebra_pbr_cleanup_iptable(struct hash_bucket *b, void *data)
if (iptable->sock == *sock) { if (iptable->sock == *sock) {
if (hash_release(zrouter.iptable_hash, iptable)) if (hash_release(zrouter.iptable_hash, iptable))
zebra_pbr_iptable_free(iptable); _zebra_pbr_iptable_free_all(iptable, true);
else else
hook_call(zebra_pbr_iptable_update, 0, iptable); hook_call(zebra_pbr_iptable_update, 0, iptable);
} }