static void destroy_flowinfo_in_port(struct flowinfo *self) { struct ptree_node *node; struct flowinfo *flowinfo; node = ptree_top(self->ptree); while (node != NULL) { flowinfo = node->info; flowinfo->destroy_func(flowinfo); node = ptree_next(node); } ptree_free(self->ptree); self->misc->destroy_func(self->misc); free(self); }
static void destroy_flowinfo_ipv4_dst(struct flowinfo *self) { struct ptree_node *node; struct flowinfo *flowinfo; node = ptree_top(self->ptree); while (node != NULL) { flowinfo = node->info; if (flowinfo != NULL) { flowinfo->destroy_func(flowinfo); } node = ptree_next(node); } ptree_free(self->ptree); free(self); }
int debug_tree_print(struct ptree_node_head *pnh) { register struct ptree_node *pn, *next; if ( !pnh || !pnh->pnh_treetop ) return (0); pn = pnh->pnh_top; printf("\n pnh[%p] phn_top[%p] offset[%d]\n",pnh,pn,pnh->pnh_offset); printf("----------------------------------------------------------\n"); if(!pn) return (0); for (;;) { debug_node_print(pn, pnh->pnh_offset); next = ptree_next(pn); if( !next ) break; pn = next; } /* NOTREACHED */ printf("----------------------------------------------------------\n\n"); return (0); }