diff options
Diffstat (limited to 'ripd')
| -rw-r--r-- | ripd/rip_offset.c | 5 | ||||
| -rw-r--r-- | ripd/ripd.c | 2 | ||||
| -rw-r--r-- | ripd/ripd.h | 1 |
3 files changed, 7 insertions, 1 deletions
diff --git a/ripd/rip_offset.c b/ripd/rip_offset.c index b3f84fe50f..8307a95d27 100644 --- a/ripd/rip_offset.c +++ b/ripd/rip_offset.c @@ -50,6 +50,11 @@ struct rip_offset_list *rip_offset_list_new(struct rip *rip, const char *ifname) void offset_list_del(struct rip_offset_list *offset) { listnode_delete(offset->rip->offset_list_master, offset); + offset_list_free(offset); +} + +void offset_list_free(struct rip_offset_list *offset) +{ if (OFFSET_LIST_IN_NAME(offset)) free(OFFSET_LIST_IN_NAME(offset)); if (OFFSET_LIST_OUT_NAME(offset)) diff --git a/ripd/ripd.c b/ripd/ripd.c index 201de9a46e..3a1ffd17a6 100644 --- a/ripd/ripd.c +++ b/ripd/ripd.c @@ -2712,7 +2712,7 @@ struct rip *rip_create(const char *vrf_name, struct vrf *vrf, int socket) rip->passive_nondefault = vector_init(1); rip->offset_list_master = list_new(); rip->offset_list_master->cmp = (int (*)(void *, void *))offset_list_cmp; - rip->offset_list_master->del = (void (*)(void *))offset_list_del; + rip->offset_list_master->del = (void (*)(void *))offset_list_free; /* Distribute list install. */ rip->distribute_ctx = distribute_list_ctx_create(vrf); diff --git a/ripd/ripd.h b/ripd/ripd.h index 7b196a16be..44f5932fb6 100644 --- a/ripd/ripd.h +++ b/ripd/ripd.h @@ -507,6 +507,7 @@ extern struct rip_info *rip_ecmp_delete(struct rip *rip, extern struct rip_offset_list *rip_offset_list_new(struct rip *rip, const char *ifname); extern void offset_list_del(struct rip_offset_list *offset); +extern void offset_list_free(struct rip_offset_list *offset); extern struct rip_offset_list *rip_offset_list_lookup(struct rip *rip, const char *ifname); extern int rip_offset_list_apply_in(struct prefix_ipv4 *, struct interface *, |
