aboutsummaryrefslogtreecommitdiffstats
path: root/libglouglou/libggnet.c
diff options
context:
space:
mode:
Diffstat (limited to 'libglouglou/libggnet.c')
-rw-r--r--libglouglou/libggnet.c28
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);