[ovs-dev] [PATCH 2/3] Delete groups in ofproto_destruct.
Jarno Rajahalme
jrajahalme at nicira.com
Fri Aug 30 20:40:17 UTC 2013
Also, since all kinds of groups can refer to other groups, there is no
reason to delete indirect groups first.
Signed-off-by: Jarno Rajahalme <jrajahalme at nicira.com>
---
ofproto/ofproto.c | 20 +++++++++-----------
1 file changed, 9 insertions(+), 11 deletions(-)
diff --git a/ofproto/ofproto.c b/ofproto/ofproto.c
index 9a4eda9..0eb1ee7 100644
--- a/ofproto/ofproto.c
+++ b/ofproto/ofproto.c
@@ -1126,6 +1126,8 @@ ofproto_flush__(struct ofproto *ofproto)
}
}
+static void delete_group(struct ofproto *ofproto, uint32_t group_id);
+
static void
ofproto_destroy__(struct ofproto *ofproto)
{
@@ -1139,6 +1141,9 @@ ofproto_destroy__(struct ofproto *ofproto)
free(ofproto->meters);
}
+ delete_group(ofproto, OFPG_ALL);
+ hmap_destroy(&ofproto->groups);
+
connmgr_destroy(ofproto->connmgr);
hmap_remove(&all_ofprotos, &ofproto->hmap_node);
@@ -4952,23 +4957,16 @@ delete_group__(struct ofgroup *ofgroup)
/* Implements OFPGC_DELETE. */
static void
-delete_group(struct ofproto *ofproto, const struct ofputil_group_mod *gm)
+delete_group(struct ofproto *ofproto, uint32_t group_id)
{
- if (gm->group_id == OFPG_ALL) {
+ if (group_id == OFPG_ALL) {
struct ofgroup *ofgroup, *next;
- /* Remove indirect groups first, to allow other groups to be removed
- * successfully. */
- HMAP_FOR_EACH_SAFE (ofgroup, next, hmap_node, &ofproto->groups) {
- if (ofgroup->type == OFPGT11_INDIRECT) {
- delete_group__(ofgroup);
- }
- }
HMAP_FOR_EACH_SAFE (ofgroup, next, hmap_node, &ofproto->groups) {
delete_group__(ofgroup);
}
} else {
- struct ofgroup *ofgroup = ofproto_group_lookup(ofproto, gm->group_id);
+ struct ofgroup *ofgroup = ofproto_group_lookup(ofproto, group_id);
if (ofgroup) {
delete_group__(ofgroup);
}
@@ -5000,7 +4998,7 @@ handle_group_mod(struct ofconn *ofconn, const struct ofp_header *oh)
return modify_group(ofproto, &gm);
case OFPGC11_DELETE:
- delete_group(ofproto, &gm);
+ delete_group(ofproto, gm->group_id);
return 0;
default:
--
1.7.10.4
More information about the dev
mailing list