/* Allocates a new node structure */ node_t * node_create(const node_id_t * node_id) { node_t *node; gchar *name; guint i; g_assert(node_id); node = g_malloc (sizeof (node_t)); g_assert(node); node->node_id = *node_id; name = node_id_str(node_id); node->name = g_string_new(name); node->numeric_name = g_string_new(name); g_free(name); for (i = 0 ; i <= STACK_SIZE; ++i) node->main_prot[i] = NULL; traffic_stats_init(&node->node_stats); ++nodes_num; if (INFO_ENABLED) { gchar *msg = node_id_dump(&node->node_id); g_my_info(_("New node: %s. Number of nodes %d"), msg, nodes_num); g_free(msg); } return node; } /* create_node */
void r3_tree_build_ag_nodes(Agraph_t * g, Agnode_t * ag_parent_node, node * n, int node_cnt) { edge * e; Agnode_t *agn_child; Agedge_t *agn_edge; for ( int i = 0 ; i < n->edge_len ; i++ ) { e = n->edges[i]; node_cnt++; agn_child = agnode(g, node_id_str(node_cnt) , 1); agn_edge = agedge(g, ag_parent_node, agn_child, 0, 1); agsafeset(agn_edge, "label", e->pattern, ""); if (e->child && e->child->endpoint) { agsafeset(agn_child, "shape", "doublecircle", ""); } r3_tree_build_ag_nodes(g, agn_child, e->child, node_cnt); } }