aboutsummaryrefslogtreecommitdiff
path: root/example
diff options
context:
space:
mode:
authorLuca Deri <deri@ntop.org>2017-05-01 19:44:46 +0200
committerLuca Deri <deri@ntop.org>2017-05-01 19:44:46 +0200
commita03a343723889c49c33c1011aac13ef61c36f7b7 (patch)
tree85559aa3d4308dd806cd2b62f302c8240b7119b0 /example
parent92d19ae2edfaaba0460d9cc798144b2ca0e4c162 (diff)
Minor code cleanup
Diffstat (limited to 'example')
-rw-r--r--example/ndpiReader.c103
1 files changed, 52 insertions, 51 deletions
diff --git a/example/ndpiReader.c b/example/ndpiReader.c
index 8fa1b10ce..ac3d75e77 100644
--- a/example/ndpiReader.c
+++ b/example/ndpiReader.c
@@ -98,9 +98,9 @@ typedef struct node_a{
struct port_stats {
u_int32_t port; /* we'll use this field as the key */
u_int32_t num_pkts, num_bytes;
- u_int32_t num_addr; /*to hold number of distinct IP addresses*/
- u_int32_t cumulative_addr; /*to hold cumulative some of IP addresses*/
- addr_node *addr_tree; /* to hold distinct IP addresses*/
+ u_int32_t num_addr; /*to hold number of distinct IP addresses */
+ u_int32_t cumulative_addr; /*to hold cumulative some of IP addresses */
+ addr_node *addr_tree; /* to hold distinct IP addresses */
struct info_pair top_ip_addrs[MAX_NUM_IP_ADDRESS];
UT_hash_handle hh; /* makes this structure hashable */
};
@@ -782,50 +782,52 @@ static void node_proto_guess_walker(const void *node, ndpi_VISIT which, int dept
/* *********************************************** */
-int updateIpTree(const u_int32_t key, addr_node **vrootp){
- addr_node *q;
- addr_node **rootp = vrootp;
+int updateIpTree(const u_int32_t key, addr_node **vrootp) {
+ addr_node *q;
+ addr_node **rootp = vrootp;
- if(rootp == (addr_node **)0)
- return 0;
+ if(rootp == (addr_node **)0)
+ return 0;
- while (*rootp != (addr_node *)0) { /* Knuth's T1: */
+ while (*rootp != (addr_node *)0) { /* Knuth's T1: */
+ if(key == ((*rootp)->addr)) { /* T2: */
+ return ++((*rootp)->count);
+ }
- if(key == ((*rootp)->addr)) { /* T2: */
- return ++((*rootp)->count);
- }
+ rootp = (key < ((*rootp)->addr)) ?
+ &(*rootp)->left : /* T3: follow left branch */
+ &(*rootp)->right; /* T4: follow right branch */
+ }
- rootp = (key < ((*rootp)->addr)) ?
- &(*rootp)->left : /* T3: follow left branch */
- &(*rootp)->right; /* T4: follow right branch */
- }
- q = (addr_node *) malloc(sizeof(addr_node)); /* T5: key not found */
- if(q != (addr_node *)0) { /* make new node */
- *rootp = q; /* link new node to old */
- q->addr = key; /* initialize new node */
- q->count = 1;
- q->left = q->right = (addr_node *)0;
- return q->count;
- }
+ q = (addr_node *) malloc(sizeof(addr_node)); /* T5: key not found */
+ if(q != (addr_node *)0) { /* make new node */
+ *rootp = q; /* link new node to old */
+ q->addr = key; /* initialize new node */
+ q->count = UPDATED_TREE;
+ q->left = q->right = (addr_node *)0;
+ return q->count;
+ }
+ return(0);
}
/* *********************************************** */
void freeIpTree(addr_node *root) {
- while (root != NULL) {
- addr_node *left = root->left;
- if (left == NULL) {
- addr_node *right = root->right;
- root->right = NULL;
- root = right;
- } else {
- /* Rotate the left child up.*/
- root->left = left->right;
- left->right = root;
- root = left;
- }
+ while (root != NULL) {
+ addr_node *left = root->left;
+
+ if(left == NULL) {
+ addr_node *right = root->right;
+ root->right = NULL;
+ root = right;
+ } else {
+ /* Rotate the left child up.*/
+ root->left = left->right;
+ left->right = root;
+ root = left;
}
+ }
}
/* *********************************************** */
@@ -844,7 +846,7 @@ void updateTopIpAddress(u_int32_t addr, int count, struct info_pair top[], int s
/* if the same ip with a bigger
count just update it */
for(i=0; i<size; i++) {
- if (top[i].addr == addr) {
+ if(top[i].addr == addr) {
top[i].count = count;
return;
}
@@ -853,7 +855,7 @@ void updateTopIpAddress(u_int32_t addr, int count, struct info_pair top[], int s
/* if array is not full yet
add it to the first empty place */
for(i=0; i<size; i++) {
- if (top[i].addr != addr && top[i].count == 0) {
+ if(top[i].addr != addr && top[i].count == 0) {
top[i] = pair;
return;
}
@@ -876,7 +878,8 @@ void updateTopIpAddress(u_int32_t addr, int count, struct info_pair top[], int s
static void updatePortStats(struct port_stats **stats, u_int32_t port, u_int32_t addr, u_int32_t num_pkts, u_int32_t num_bytes) {
struct port_stats *s;
char ipname[48];
-
+ int count;
+
HASH_FIND_INT(*stats, &port, s);
if(s == NULL) {
s = (struct port_stats*)malloc(sizeof(struct port_stats));
@@ -899,15 +902,15 @@ static void updatePortStats(struct port_stats **stats, u_int32_t port, u_int32_t
HASH_ADD_INT(*stats, port, s);
}
- int count = updateIpTree(addr, &(*s).addr_tree);
+ count = updateIpTree(addr, &(*s).addr_tree);
if(count == UPDATED_TREE) s->num_addr++;
+
if(count) {
s->cumulative_addr++;
updateTopIpAddress(addr, count, s->top_ip_addrs, MAX_NUM_IP_ADDRESS);
}
s->num_pkts += num_pkts, s->num_bytes += num_bytes;
-
}
/* *********************************************** */
@@ -1199,21 +1202,19 @@ static int info_pair_cmp (const void *_a, const void *_b)
void printPortStats(struct port_stats *stats) {
struct port_stats *s, *tmp;
char ip_name[48];
- int i = 0;
- int j = 0;
- int first = 1;
-
+ int i = 0, j = 0, first = 1;
HASH_ITER(hh, stats, s, tmp) {
i++;
- printf("\t%2d\tPort %5u\t[%u IP address/%u pkts/%u bytes]\n", i, s->port, s->num_addr, s->num_pkts, s->num_bytes);
+ printf("\t%2d\tPort %5u\t[%u IP address(es)/%u pkts/%u bytes]\n\t\tTop IP Stats:\n",
+ i, s->port, s->num_addr, s->num_pkts, s->num_bytes);
qsort(&s->top_ip_addrs[0], MAX_NUM_IP_ADDRESS, sizeof(struct info_pair), info_pair_cmp);
for(j=0; j<MAX_NUM_IP_ADDRESS; j++) {
- if (s->top_ip_addrs[j].count != 0) {
+ if(s->top_ip_addrs[j].count != 0) {
inet_ntop(AF_INET, &s->top_ip_addrs[j].addr, ip_name, sizeof(ip_name));
- printf("\t\t\t\t%s\t%s ~ %.2f%%\n", (first) ? "Top IP Stats:" : "\t",
+ printf("\t\t%-16s ~ %.2f%%\n",
ip_name, ((s->top_ip_addrs[j].count) * 100.0) / s->cumulative_addr);
first = 0;
}
@@ -1331,7 +1332,7 @@ static void printResults(u_int64_t tot_usec) {
float t = (float)(cumulative_stats.ip_packet_count*1000000)/(float)tot_usec;
float b = (float)(cumulative_stats.total_wire_bytes * 8 *1000000)/(float)tot_usec;
float traffic_duration;
- if (live_capture) traffic_duration = tot_usec;
+ if(live_capture) traffic_duration = tot_usec;
else traffic_duration = (pcap_end.tv_sec*1000000 + pcap_end.tv_usec) - (pcap_start.tv_sec*1000000 + pcap_start.tv_usec);
printf("\tnDPI throughput: %s pps / %s/sec\n", formatPackets(t, buf), formatTraffic(b, 1, buf1));
t = (float)(cumulative_stats.ip_packet_count*1000000)/(float)traffic_duration;
@@ -1647,8 +1648,8 @@ static void pcap_process_packet(u_char *args,
}
/* Check if capture is live or not */
- if (!live_capture) {
- if (!pcap_start.tv_sec) pcap_start.tv_sec = header->ts.tv_sec, pcap_start.tv_usec = header->ts.tv_usec;
+ if(!live_capture) {
+ if(!pcap_start.tv_sec) pcap_start.tv_sec = header->ts.tv_sec, pcap_start.tv_usec = header->ts.tv_usec;
pcap_end.tv_sec = header->ts.tv_sec, pcap_end.tv_usec = header->ts.tv_usec;
}