From 72ba2ed371ae593b6fda1d196c31d7dd408a6a1c Mon Sep 17 00:00:00 2001 From: Andrew Evans Date: Thu, 30 Jun 2011 18:08:59 -0700 Subject: [PATCH] connmgr: Free controller info in the same module where it's allocated. Make ofproto_free_ofproto_controller_info() just a passthrough to connmgr_free_controller_info() so the allocation and freeing of memory in the controller info structure is done in the same place. --- ofproto/connmgr.c | 15 +++++++++++++++ ofproto/connmgr.h | 1 + ofproto/ofproto.c | 11 +---------- 3 files changed, 17 insertions(+), 10 deletions(-) diff --git a/ofproto/connmgr.c b/ofproto/connmgr.c index 7c043a4aa..7776c8898 100644 --- a/ofproto/connmgr.c +++ b/ofproto/connmgr.c @@ -416,6 +416,21 @@ connmgr_get_controller_info(struct connmgr *mgr, struct shash *info) } } +void +connmgr_free_controller_info(struct shash *info) +{ + struct shash_node *node; + + SHASH_FOR_EACH (node, info) { + struct ofproto_controller_info *cinfo = node->data; + while (cinfo->pairs.n) { + free((char *) cinfo->pairs.values[--cinfo->pairs.n]); + } + free(cinfo); + } + shash_destroy(info); +} + /* Changes 'mgr''s set of controllers to the 'n_controllers' controllers in * 'controllers'. */ void diff --git a/ofproto/connmgr.h b/ofproto/connmgr.h index 58b1ae3fe..31416a1f8 100644 --- a/ofproto/connmgr.h +++ b/ofproto/connmgr.h @@ -66,6 +66,7 @@ void connmgr_retry(struct connmgr *); /* OpenFlow configuration. */ bool connmgr_has_controllers(const struct connmgr *); void connmgr_get_controller_info(struct connmgr *, struct shash *); +void connmgr_free_controller_info(struct shash *); void connmgr_set_controllers(struct connmgr *, const struct ofproto_controller[], size_t n); void connmgr_reconnect(const struct connmgr *); diff --git a/ofproto/ofproto.c b/ofproto/ofproto.c index efa3686e0..ac243cf05 100644 --- a/ofproto/ofproto.c +++ b/ofproto/ofproto.c @@ -845,16 +845,7 @@ ofproto_get_ofproto_controller_info(const struct ofproto *ofproto, void ofproto_free_ofproto_controller_info(struct shash *info) { - struct shash_node *node; - - SHASH_FOR_EACH (node, info) { - struct ofproto_controller_info *cinfo = node->data; - while (cinfo->pairs.n) { - free((char *) cinfo->pairs.values[--cinfo->pairs.n]); - } - free(cinfo); - } - shash_destroy(info); + connmgr_free_controller_info(info); } /* Makes a deep copy of 'old' into 'port'. */ -- 2.39.5