diff options
| author | Donald Sharp <sharpd@cumulusnetworks.com> | 2019-04-23 08:34:47 -0400 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-04-23 08:34:47 -0400 | 
| commit | c1f0465a3d15f6e7fc709e5523b3ac7b4f62cfd6 (patch) | |
| tree | a0658fb38610efe7a7af667686fbf7e5537380bc /ripngd | |
| parent | f799ea3f940dc8107e677f4349fcd542cf01305b (diff) | |
| parent | cbcbac457870a9b569104b8250e57f0bd8d55114 (diff) | |
Merge pull request #4162 from opensourcerouting/rip-issues
ripd, ripngd: fix cleaning up of offset lists
Diffstat (limited to 'ripngd')
| -rw-r--r-- | ripngd/ripng_offset.c | 5 | ||||
| -rw-r--r-- | ripngd/ripngd.c | 2 | ||||
| -rw-r--r-- | ripngd/ripngd.h | 1 | 
3 files changed, 7 insertions, 1 deletions
diff --git a/ripngd/ripng_offset.c b/ripngd/ripng_offset.c index 41ba2360ba..fe95ccfc2b 100644 --- a/ripngd/ripng_offset.c +++ b/ripngd/ripng_offset.c @@ -56,6 +56,11 @@ struct ripng_offset_list *ripng_offset_list_new(struct ripng *ripng,  void ripng_offset_list_del(struct ripng_offset_list *offset)  {  	listnode_delete(offset->ripng->offset_list_master, offset); +	ripng_offset_list_free(offset); +} + +void ripng_offset_list_free(struct ripng_offset_list *offset) +{  	if (OFFSET_LIST_IN_NAME(offset))  		free(OFFSET_LIST_IN_NAME(offset));  	if (OFFSET_LIST_OUT_NAME(offset)) diff --git a/ripngd/ripngd.c b/ripngd/ripngd.c index b36cee2c5d..411689a7a7 100644 --- a/ripngd/ripngd.c +++ b/ripngd/ripngd.c @@ -1889,7 +1889,7 @@ struct ripng *ripng_create(const char *vrf_name, struct vrf *vrf, int socket)  	ripng->offset_list_master->cmp =  		(int (*)(void *, void *))offset_list_cmp;  	ripng->offset_list_master->del = -		(void (*)(void *))ripng_offset_list_del; +		(void (*)(void *))ripng_offset_list_free;  	ripng->distribute_ctx = distribute_list_ctx_create(vrf);  	distribute_list_add_hook(ripng->distribute_ctx,  				 ripng_distribute_update); diff --git a/ripngd/ripngd.h b/ripngd/ripngd.h index dcc61ae58a..dc425b6958 100644 --- a/ripngd/ripngd.h +++ b/ripngd/ripngd.h @@ -421,6 +421,7 @@ extern void ripng_peer_list_del(void *arg);  extern struct ripng_offset_list *ripng_offset_list_new(struct ripng *ripng,  						       const char *ifname);  extern void ripng_offset_list_del(struct ripng_offset_list *offset); +extern void ripng_offset_list_free(struct ripng_offset_list *offset);  extern struct ripng_offset_list *ripng_offset_list_lookup(struct ripng *ripng,  							  const char *ifname);  extern int ripng_offset_list_apply_in(struct ripng *ripng,  | 
