#include "../include/traffic.h" /* Compare IP */ int cmp_ip(const void *s1, const void *s2) { struct host *h1, *h2; h1 = (struct host *)s1; h2 = (struct host *)s2; if (!opt.rsort) return (ntohl(h1->ip.s_addr) < ntohl(h2->ip.s_addr))?-1:1; else return (ntohl(h1->ip.s_addr) > ntohl(h2->ip.s_addr))?-1:1; } /* Compare data current */ int cmp_data_cur(const void *s1, const void *s2) { struct host *h1, *h2; h1 = (struct host *)s1; h2 = (struct host *)s2; if (!opt.rsort) return ((h1->last_in + h1->last_out) > (h2->last_in + h2->last_out))?-1:1; else return ((h1->last_in + h1->last_out) < (h2->last_in + h2->last_out))?-1:1; } /* Comapare data total and average */ int cmp_data_tot(const void *s1, const void *s2) { struct host *h1, *h2; h1 = (struct host *)s1; h2 = (struct host *)s2; if (!opt.rsort) return ((h1->tot_in + h1->tot_out) > (h2->tot_in + h2->tot_out))?-1:1; else return ((h1->tot_in + h1->tot_out) < (h2->tot_in + h2->tot_out))?-1:1; } /* Compare data max */ int cmp_data_max(const void *s1, const void *s2) { struct host *h1, *h2; h1 = (struct host *)s1; h2 = (struct host *)s2; if (!opt.rsort) return ((h1->max_in + h1->max_out) > (h2->max_in + h2->max_out))?-1:1; else return ((h1->max_in + h1->max_out) < (h2->max_in + h2->max_out))?-1:1; } /* Compare packets current */ int cmp_pkt_cur(const void *s1, const void *s2) { struct host *h1, *h2; h1 = (struct host *)s1; h2 = (struct host *)s2; if (!opt.rsort) return ((h1->last_pkt_in + h1->last_pkt_out) > (h2->last_pkt_in + h2->last_pkt_out))?-1:1; else return ((h1->last_pkt_in + h1->last_pkt_out) < (h2->last_pkt_in + h2->last_pkt_out))?-1:1; } /* Compare packets total and average */ int cmp_pkt_tot(const void *s1, const void *s2) { struct host *h1, *h2; h1 = (struct host *)s1; h2 = (struct host *)s2; if (!opt.rsort) return ((h1->tot_pkt_in + h1->tot_pkt_out) > (h2->tot_pkt_in + h2->tot_pkt_out))?-1:1; else return ((h1->tot_pkt_in + h1->tot_pkt_out) < (h2->tot_pkt_in + h2->tot_pkt_out))?-1:1; } /* Compare packets max */ int cmp_pkt_max(const void *s1, const void *s2) { struct host *h1, *h2; h1 = (struct host *)s1; h2 = (struct host *)s2; if (!opt.rsort) return ((h1->max_pkt_in + h1->max_pkt_out) > (h2->max_pkt_in + h2->max_pkt_out))?-1:1; else return ((h1->max_pkt_in + h1->max_pkt_out) < (h2->max_pkt_in + h2->max_pkt_out))?-1:1; } /* Compare MAC */ int cmp_mac(const void *s1, const void *s2) { struct host *h1, *h2; int i; h1 = (struct host *)s1; h2 = (struct host *)s2; for(i=0; i<17; i++) if (h1->mac[i] < h2->mac[i]) if (!opt.rsort) return 1; else return -1; return 1; } /* Compare hostname */ int cmp_hostname(const void *s1, const void *s2) { struct host *h1, *h2; int i; h1 = (struct host *)s1; h2 = (struct host *)s2; for(i=0; i<24; i++) if (h1->hostname[i] < h2->hostname[i]) if (!opt.rsort) return 1; else return -1; return 1; } /* Compare TCP current */ int cmp_tcp(const void *s1, const void *s2) { struct host *h1, *h2; h1 = (struct host *)s1; h2 = (struct host *)s2; if (!opt.rsort) return ((h1->last_tcp_in + h1->last_tcp_out) > (h2->last_tcp_in + h2->last_tcp_out))?-1:1; else return ((h1->last_tcp_in + h1->last_tcp_out) < (h2->last_tcp_in + h2->last_tcp_out))?-1:1; } /* Compare UDP current */ int cmp_udp(const void *s1, const void *s2) { struct host *h1, *h2; h1 = (struct host *)s1; h2 = (struct host *)s2; if (!opt.rsort) return ((h1->last_udp_in + h1->last_udp_out) > (h2->last_udp_in + h2->last_udp_out))?-1:1; else return ((h1->last_udp_in + h1->last_udp_out) < (h2->last_udp_in + h2->last_udp_out))?-1:1; } /* Compare ICMP current */ int cmp_icmp(const void *s1, const void *s2) { struct host *h1, *h2; h1 = (struct host *)s1; h2 = (struct host *)s2; if (!opt.rsort) return ((h1->last_icmp_in + h1->last_icmp_out) > (h2->last_icmp_in + h2->last_icmp_out))?-1:1; else return ((h1->last_icmp_in + h1->last_icmp_out) < (h2->last_icmp_in + h2->last_icmp_out))?-1:1; } /* Comapare TCP total */ int cmp_tcp_tot(const void *s1, const void *s2) { struct host *h1, *h2; h1 = (struct host *)s1; h2 = (struct host *)s2; if (!opt.rsort) return ((h1->tot_tcp_in + h1->tot_tcp_out) > (h2->tot_tcp_in + h2->tot_tcp_out))?-1:1; else return ((h1->tot_tcp_in + h1->tot_tcp_out) < (h2->tot_tcp_in + h2->tot_tcp_out))?-1:1; } /* Comapare UDP total */ int cmp_udp_tot(const void *s1, const void *s2) { struct host *h1, *h2; h1 = (struct host *)s1; h2 = (struct host *)s2; if (!opt.rsort) return ((h1->tot_udp_in + h1->tot_udp_out) > (h2->tot_udp_in + h2->tot_udp_out))?-1:1; else return ((h1->tot_udp_in + h1->tot_udp_out) < (h2->tot_udp_in + h2->tot_udp_out))?-1:1; } /* Comapare ICMP total */ int cmp_icmp_tot(const void *s1, const void *s2) { struct host *h1, *h2; h1 = (struct host *)s1; h2 = (struct host *)s2; if (!opt.rsort) return ((h1->tot_icmp_in + h1->tot_icmp_out) > (h2->tot_icmp_in + h2->tot_icmp_out))?-1:1; else return ((h1->tot_icmp_in + h1->tot_icmp_out) < (h2->tot_icmp_in + h2->tot_icmp_out))?-1:1; }