Esempio n. 1
0
/**
 * Destroys route_tree by freeing all its memory.
 *
 * @param route_tree route tree to be destroyed
 */
void destroy_route_tree(struct route_tree *route_tree) {
	destroy_route_tree_item(route_tree->tree);
	destroy_failure_route_tree_item(route_tree->failure_tree);
	shm_free(route_tree->name.s);
	shm_free(route_tree);
	return;
}
Esempio n. 2
0
/**
 * Destroys route_tree_item in shared memory by freing all its memory.
 *
 * @param route_tree_item route tree node to be destroyed
 */
static void destroy_route_tree_item(struct route_tree_item *route_tree_item) {
	int i;
	struct route_rule *rs;
	struct route_rule *rs_tmp;

	if (!route_tree_item) {
		LM_ERR("NULL pointer in parameter\n");
	}

	for (i = 0; i < 10; ++i) {
		if (route_tree_item->nodes[i] != NULL) {
			destroy_route_tree_item(route_tree_item->nodes[i]);
		}
	}
	if (route_tree_item->rules) {
		shm_free(route_tree_item->rules);
	}
	rs = route_tree_item->rule_list;
	while (rs != NULL) {
		rs_tmp = rs->next;
		destroy_route_rule(rs);
		rs = rs_tmp;
	}
	shm_free(route_tree_item);
	return;
}
Esempio n. 3
0
/**
 * Destroys route_tree_item in shared memory by freing all its memory.
 *
 * @param route_tree_item route tree node to be destroyed
 */
static void destroy_route_tree_item(struct route_tree_item *route_tree_item) {
	int i;
	struct route_flags *rf;
	struct route_flags *rf_tmp;

	if (!route_tree_item) {
		LM_ERR("NULL pointer in parameter\n");
	}

	for (i = 0; i < 10; ++i) {
		if (route_tree_item->nodes[i] != NULL) {
			destroy_route_tree_item(route_tree_item->nodes[i]);
		}
	}

	rf=route_tree_item->flag_list;
	while (rf!=NULL) {
		rf_tmp = rf->next;
		destroy_route_flags(rf);
		rf = rf_tmp;
	}
}