diff options
Diffstat (limited to 'libglouglou/libggnet.c')
-rw-r--r-- | libglouglou/libggnet.c | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/libglouglou/libggnet.c b/libglouglou/libggnet.c index 160ac8b..0666041 100644 --- a/libglouglou/libggnet.c +++ b/libglouglou/libggnet.c @@ -118,7 +118,7 @@ ggnet_free(struct ggnet *net) } struct ggnet_node * -ggnet_node_add(struct ggnet *net, struct in_addr *addr, int allow_grouping) +ggnet_node_add(struct ggnet *net, struct in_addr *addr, int traceroute_node) { struct ggnet_node *n; @@ -130,20 +130,22 @@ ggnet_node_add(struct ggnet *net, struct in_addr *addr, int allow_grouping) printf("could not allocate node\n"); exit(1); } + printf("XXX n=%p\n", n); n->net = net; n->addr.s_addr = addr->s_addr; n->lastseen = net->time; - //n->allow_grouping = allow_grouping; XXX IN PROGRESS why segfault ?? + n->used_traceroute = traceroute_node; // XXX IN PROGRESS why segfault ? LIST_INSERT_HEAD(&net->node_list, n, entry); net->node_count++; - if (net->use_grouping && allow_grouping) + if (net->use_grouping && !traceroute_node) nodegroup_set(net, n); if (net->use_dns) n->dns_req = ggnet_dns_reverse(net->ggdns, &n->addr, _cb_dns_reverse, n); if (net->use_traceroute) { struct addr ip; addr_aton(inet_ntoa(*addr), &ip); - printf("XXX calling trace on %x\n", ip.addr_ip); + printf("XXX calling trace on %x - %s - %x - %s\n", addr->s_addr, inet_ntoa(*addr), ip.addr_ip, addr_ntoa(&ip)); + printf("XXX n=%p\n", n); n->traceroute_req = ggnet_traceroute_trace_tcp(net->ggtraceroute, &ip, 80, _cb_traceroute_trace, NULL, n); } @@ -153,7 +155,7 @@ ggnet_node_add(struct ggnet *net, struct in_addr *addr, int allow_grouping) void ggnet_node_del(struct ggnet *net, struct ggnet_node *n) { - if (n->used) { + if (n->used_conn || n->used_traceroute) { printf("FATAL: ggnet_node_del: trying to remove a used node !\n"); exit(1); } @@ -246,14 +248,14 @@ ggnet_conn_add(struct ggnet *net, struct in_addr *src, int src_port, srcnode = ggnet_node_find(net, src); if (!srcnode) - srcnode = ggnet_node_add(net, src, 1); - srcnode->used++; + srcnode = ggnet_node_add(net, src, 0); + srcnode->used_conn++; if (srcnode->group) srcnode->group->conn_count++; dstnode = ggnet_node_find(net, dst); if (!dstnode) - dstnode = ggnet_node_add(net, dst, 1); - dstnode->used++; + dstnode = ggnet_node_add(net, dst, 0); + dstnode->used_conn++; if (dstnode->group) dstnode->group->conn_count++; @@ -323,10 +325,10 @@ ggnet_conn_del(struct ggnet *net, struct ggnet_conn *c) net->conn_freeids[net->conn_freeids_ptr] = c->id; } - c->src->used--; + c->src->used_conn--; if (c->src->group) c->src->group->conn_count--; - c->dst->used--; + c->dst->used_conn--; if (c->dst->group) c->dst->group->conn_count--; @@ -507,7 +509,7 @@ nodegroup_set(struct ggnet *net, struct ggnet_node *n) struct ggnet_nodegroup *group, *groot, *gclassb; u_int addr, addr2; - addr = n->addr.s_addr & 0xffff0000; + addr = n->addr.s_addr & 0x0000ffff; group = nodegroup_find(net, GROUP_ADDRESS, &addr); if (!group) { @@ -515,7 +517,7 @@ nodegroup_set(struct ggnet *net, struct ggnet_node *n) groot = nodegroup_find(net, GROUP_ADDRESS, &addr2); if (!groot) groot = nodegroup_add(net, GROUP_ADDRESS, &addr2, NULL); - addr2 = addr & 0xff000000; + addr2 = addr & 0x000000ff; gclassb = nodegroup_find(net, GROUP_ADDRESS, &addr2); if (!gclassb) gclassb = nodegroup_add(net, GROUP_ADDRESS, &addr2, groot); |