mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-06-18 08:51:01 +00:00
zebra: Actually free all memory associated ctx->u.iptable.interface_name_list
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
This commit is contained in:
parent
63e6e11f9f
commit
1cc380679e
@ -833,20 +833,8 @@ static void dplane_ctx_free_internal(struct zebra_dplane_ctx *ctx)
|
|||||||
break;
|
break;
|
||||||
case DPLANE_OP_IPTABLE_ADD:
|
case DPLANE_OP_IPTABLE_ADD:
|
||||||
case DPLANE_OP_IPTABLE_DELETE:
|
case DPLANE_OP_IPTABLE_DELETE:
|
||||||
if (ctx->u.iptable.interface_name_list) {
|
if (ctx->u.iptable.interface_name_list)
|
||||||
struct listnode *node, *nnode;
|
|
||||||
char *ifname;
|
|
||||||
|
|
||||||
for (ALL_LIST_ELEMENTS(
|
|
||||||
ctx->u.iptable.interface_name_list, node,
|
|
||||||
nnode, ifname)) {
|
|
||||||
LISTNODE_DETACH(
|
|
||||||
ctx->u.iptable.interface_name_list,
|
|
||||||
node);
|
|
||||||
XFREE(MTYPE_DP_NETFILTER, ifname);
|
|
||||||
}
|
|
||||||
list_delete(&ctx->u.iptable.interface_name_list);
|
list_delete(&ctx->u.iptable.interface_name_list);
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case DPLANE_OP_GRE_SET:
|
case DPLANE_OP_GRE_SET:
|
||||||
case DPLANE_OP_INTF_NETCONFIG:
|
case DPLANE_OP_INTF_NETCONFIG:
|
||||||
@ -3476,6 +3464,11 @@ static int dplane_ctx_rule_init(struct zebra_dplane_ctx *ctx,
|
|||||||
return AOK;
|
return AOK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void zebra_dplane_interface_name_list_deletion(void *data)
|
||||||
|
{
|
||||||
|
XFREE(MTYPE_DP_NETFILTER, data);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* dplane_ctx_iptable_init() - Initialize a context block for a PBR iptable
|
* dplane_ctx_iptable_init() - Initialize a context block for a PBR iptable
|
||||||
* update.
|
* update.
|
||||||
@ -3509,9 +3502,10 @@ static int dplane_ctx_iptable_init(struct zebra_dplane_ctx *ctx,
|
|||||||
|
|
||||||
ctx->zd_vrf_id = iptable->vrf_id;
|
ctx->zd_vrf_id = iptable->vrf_id;
|
||||||
memcpy(&ctx->u.iptable, iptable, sizeof(struct zebra_pbr_iptable));
|
memcpy(&ctx->u.iptable, iptable, sizeof(struct zebra_pbr_iptable));
|
||||||
ctx->u.iptable.interface_name_list = NULL;
|
|
||||||
if (iptable->nb_interface > 0) {
|
if (iptable->nb_interface > 0) {
|
||||||
ctx->u.iptable.interface_name_list = list_new();
|
ctx->u.iptable.interface_name_list = list_new();
|
||||||
|
ctx->u.iptable.interface_name_list->del =
|
||||||
|
zebra_dplane_interface_name_list_deletion;
|
||||||
for (ALL_LIST_ELEMENTS_RO(iptable->interface_name_list, node,
|
for (ALL_LIST_ELEMENTS_RO(iptable->interface_name_list, node,
|
||||||
ifname)) {
|
ifname)) {
|
||||||
listnode_add(ctx->u.iptable.interface_name_list,
|
listnode_add(ctx->u.iptable.interface_name_list,
|
||||||
|
Loading…
Reference in New Issue
Block a user