From 9e0139c4343d7032de3a3bbb4408914fa943ec45 Mon Sep 17 00:00:00 2001 From: Laurent Ghigonis Date: Thu, 13 Dec 2012 17:22:21 +0100 Subject: keep track of group connection usage --- libglouglou/libggnet.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'libglouglou/libggnet.c') diff --git a/libglouglou/libggnet.c b/libglouglou/libggnet.c index cfed99e..71a21cc 100644 --- a/libglouglou/libggnet.c +++ b/libglouglou/libggnet.c @@ -166,10 +166,14 @@ ggnet_conn_add(struct ggnet *net, struct in_addr *src, int src_port, if (!srcnode) srcnode = ggnet_node_add(net, src); srcnode->used++; + if (srcnode->group) + srcnode->group->conn_count++; dstnode = ggnet_node_find(net, dst); if (!dstnode) dstnode = ggnet_node_add(net, dst); dstnode->used++; + if (dstnode->group) + dstnode->group->conn_count++; c = xmalloc(sizeof(struct ggnet_conn)); c->id = id; @@ -230,7 +234,11 @@ ggnet_conn_del(struct ggnet *net, struct ggnet_conn *c) } c->src->used--; + if (c->src->group) + c->src->group->conn_count--; c->dst->used--; + if (c->dst->group) + c->dst->group->conn_count--; LIST_REMOVE(c, entry); free(c); @@ -362,6 +370,10 @@ nodegroup_add(struct ggnet *net, enum ggnet_grouptype type, void *param, static void nodegroup_del(struct ggnet *net, struct ggnet_nodegroup *group) { + if (group->node_count || group->conn_count) + gg_log_fatal("ggnet_nodegroup_del: trying to remove a used group !"); + gg_log_debug("ggnet_nodegroup_del"); + net->cb_delgroup(net, group); if (group->parent) { group->parent->child_groups_count--; -- cgit v1.2.3-59-g8ed1b