diff options
author | Laurent Ghigonis <laurent@p1sec.com> | 2013-06-05 15:23:45 +0200 |
---|---|---|
committer | Laurent Ghigonis <laurent@p1sec.com> | 2013-06-05 15:23:45 +0200 |
commit | c2df624fae9cd08c662f5f611044094f35bb8f63 (patch) | |
tree | 1e1f7b7fb6b86fc73cb6da21e6eabd3c5151069e /gg_map/gg_map.c | |
parent | Merge branch 'master' into traceroute (diff) | |
parent | gg_map: fix dependencies description (diff) | |
download | glouglou-c2df624fae9cd08c662f5f611044094f35bb8f63.tar.xz glouglou-c2df624fae9cd08c662f5f611044094f35bb8f63.zip |
Merge branch 'master' into traceroute
Diffstat (limited to 'gg_map/gg_map.c')
-rw-r--r-- | gg_map/gg_map.c | 95 |
1 files changed, 71 insertions, 24 deletions
diff --git a/gg_map/gg_map.c b/gg_map/gg_map.c index dda280c..48c68f0 100644 --- a/gg_map/gg_map.c +++ b/gg_map/gg_map.c @@ -6,13 +6,26 @@ #include <libglouglou.h> #include <libggnet.h> -int _debug = 0; +int _loglevel = 0; Evas_Object *_mainwin; Evas_Object *_egraph = NULL; struct ggnet *_ggnet; struct event_base *_ev_base; +#if defined(__OpenBSD__) +void __dead +#else +void +#endif +usage(void) +{ + extern char *__progname; + + fprintf(stderr, "usage: %s [-hv] [ip [port]]\n", __progname); + exit(1); +} + /* link between ecore loop and libevent loop */ static Eina_Bool _cb_ecore_libevent(void *data) { @@ -117,7 +130,7 @@ _conn_add(u_int id, u_int src, u_int dst, u_int proto, u_int8_t pktsize) int size, response; GG_PKTDATA_SIZE_DECODE(pktsize, size, response); - if (_debug) + if (_loglevel >= 2) printf("_conn_add\n"); if (response > 0) /* cannot have a new connection that is a response */ return; @@ -131,7 +144,7 @@ _conn_add(u_int id, u_int src, u_int dst, u_int proto, u_int8_t pktsize) va = _node_to_vertice(a); vb = _node_to_vertice(b); e = egraph_edge_find(_egraph, va, vb); - if (_debug) + if (_loglevel >= 2) printf("_conn_add: a %d b %d e %x id %d\n", va->id, vb->id, e, id); if (!e) { if (a->group && a->group->conn_count == 1) @@ -139,7 +152,7 @@ _conn_add(u_int id, u_int src, u_int dst, u_int proto, u_int8_t pktsize) if (b->group && b->group->conn_count == 1) _node_detach_parentgroup(b); e = egraph_edge_add(_egraph, va, vb, conn); - if (_debug) + if (_loglevel >= 2) printf("_conn_add: egraph edge added %x\n", e); } ggnet_conn_usrdata_set(conn, e); @@ -156,7 +169,7 @@ _conn_del(int id) { a = ggnet_conn_src_get(conn); b = ggnet_conn_dst_get(conn); e = ggnet_conn_usrdata_get(conn); - if (_debug) + if (_loglevel >= 2) printf("_conn_del: conn id %d\n", id); // XXX ggnet_conn_del(_ggnet, conn); /* is there other connections between these peers ? */ @@ -164,7 +177,7 @@ _conn_del(int id) { if (!otherconn) { // XXX lets keep the edges, igraph layouting behaves badly when you have // a vertice without edge ... - if (_debug) + if (_loglevel >= 2) printf("_conn_del: edge del %x\n", e); // XXX egraph_edge_del(_egraph, e); if (a->group && a->group->conn_count == 0) @@ -172,11 +185,11 @@ _conn_del(int id) { if (b->group && b->group->conn_count == 0) _node_attach_parentgroup(b); } else { - if (_debug) + if (_loglevel >= 2) printf("_conn_del: not last one, edge %x *not* deleted\n", e); } } else { - if (_debug) + if (_loglevel >= 2) printf("_conn_del: does not exist !\n"); } } @@ -222,12 +235,14 @@ _cb_packet(struct gg_client *cli, struct gg_packet *pkt) { switch(pkt->type) { case PACKET_NEWCONN: - printf(" type PACKET_NEWCONN\n"); - printf(" newconn_id %d\n", pkt->newconn_id); - printf(" newconn_src %4x\n", pkt->newconn_src); - printf(" newconn_dst %4x\n", pkt->newconn_dst); - printf(" newconn_proto %d\n", pkt->newconn_proto); - printf(" newconn_size %d\n", pkt->newconn_size); + if (_loglevel >= 1) { + printf(" type PACKET_NEWCONN\n"); + printf(" newconn_id %d\n", pkt->newconn_id); + printf(" newconn_src %4x\n", pkt->newconn_src); + printf(" newconn_dst %4x\n", pkt->newconn_dst); + printf(" newconn_proto %d\n", pkt->newconn_proto); + printf(" newconn_size %d\n", pkt->newconn_size); + } _conn_del(pkt->newconn_id); /* in case we missed a previous del */ _conn_add(pkt->newconn_id, pkt->newconn_src, pkt->newconn_dst, @@ -235,25 +250,31 @@ _cb_packet(struct gg_client *cli, struct gg_packet *pkt) break; case PACKET_DELCONN: - printf(" type PACKET_DELCONN\n"); - printf(" delconn_id %d\n", pkt->delconn_id); + if (_loglevel >= 1) { + printf(" type PACKET_DELCONN\n"); + printf(" delconn_id %d\n", pkt->delconn_id); + } _conn_del(pkt->delconn_id); break; case PACKET_DATA: - //printf(" type PACKET_DATA\n"); - //printf(" data_connid %d\n", pkt->data_connid); - //printf(" data_size %d\n", pkt->data_size); + if (_loglevel >= 1) { + //printf(" type PACKET_DATA\n"); + //printf(" data_connid %d\n", pkt->data_connid); + //printf(" data_size %d\n", pkt->data_size); + } _conn_data(pkt->data_connid, pkt->data_size); break; case PACKET_NAME: - printf(" type PACKET_NAME\n"); - printf(" name_addr %4x\n", pkt->name_addr); - printf(" name_len %d\n", pkt->name_len); - printf(" name_name_fqdn %s\n", pkt->name_fqdn); + if (_loglevel >= 1) { + printf(" type PACKET_NAME\n"); + printf(" name_addr %4x\n", pkt->name_addr); + printf(" name_len %d\n", pkt->name_len); + printf(" name_name_fqdn %s\n", pkt->name_fqdn); + } _conn_name(pkt->name_addr, pkt->name_len, pkt->name_fqdn); break; @@ -333,7 +354,33 @@ elm_main(int argc, char **argv) Evas_Object *bx, *bx2, *ck, *sc, *seg_it, *lb; Evas *evas; struct gg_client *ggcli; + char gg_serv_ip[30] = "127.0.0.1"; + int gg_serv_port = GLOUGLOU_ANALY_DEFAULT_PORT; int retval = -1; + int op; + + while ((op = getopt(argc, argv, "hv")) != -1) { + switch (op) { + case 'h': + usage(); + /* NOTREACHED */ + case 'v': + _loglevel++; + break; + default: + usage(); + /* NOTREACHED */ + } + } + switch (argc - optind) { + case 2: gg_serv_port = atoi(argv[3]); + case 1: strncpy(gg_serv_ip, argv[2], sizeof(gg_serv_ip)); + case 0: + break; + default: + usage(); + /* NOTREACHED */ + } win = elm_win_add(NULL, "panes", ELM_WIN_BASIC); evas = evas_object_evas_get(win); @@ -437,7 +484,7 @@ elm_main(int argc, char **argv) _cb_ggnet_addgroup, _cb_ggnet_delgroup); _ev_base = event_base_new(); - ggcli = gg_client_connect(_ev_base, "127.0.0.1", GLOUGLOU_ANALY_DEFAULT_PORT, + ggcli = gg_client_connect(_ev_base, gg_serv_ip, gg_serv_port, NULL, _cb_packet, NULL); if (!ggcli) goto quit; |