Exemple #1
0
        public void process_tuple(TopaddrTuple t, ulong ts)
        {
            TopaddrRecord r = (TopaddrRecord)table[t.addr];

            if (r == null)   /* need new entry in hash table */
            {
                r             = new TopaddrRecord();
                r.addr        = t.addr;
                r.bytes       = 0;
                r.pkts        = 0;
                r.ts          = ts;
                table[t.addr] = r;

                /*
                 * XXX rough estimate!
                 *
                 * addr + bytes + pkts + ts
                 * plus one hashtable entry which consists
                 * of at least a ptr to next elem and a ptr
                 * to the elem itself.
                 */
                mem_usage += 4 + 8 + 4 + 8;
                mem_usage += 4 + 4;
            }

            r.bytes += t.bytes; /* update entry */
            r.pkts  += (uint)t.pkts;
        }
Exemple #2
0
        int IComparer.Compare(Object _x, Object _y)
        {
            TopaddrRecord x = (TopaddrRecord)_x;
            TopaddrRecord y = (TopaddrRecord)_y;

            if (x.bytes > y.bytes)
            {
                return(-1);
            }
            if (x.bytes < y.bytes)
            {
                return(1);
            }
            return(0);
        }
Exemple #3
0
        public void print_rec(string format, Record _r)
        {
            TopaddrRecord r  = (TopaddrRecord)_r;
            uint          ts = TS.sec(r.ts);

            if (current != ts)
            {
                current = ts;
                count   = 0;
            }
            count++;

            uint  addr   = r.addr & cfg.mask;
            ulong fullts = TS.from_time(ts, 0);

            switch (format)
            {
            case "pretty":
                print(String.Format(PRETTYFMT, TS.to_string(fullts),
                                    count, IP.to_string(addr), r.bytes, r.pkts));
                break;

            case "plain":
                print(String.Format(PLAINFMT, ts, count,
                                    IP.to_string(addr), r.bytes, r.pkts));
                break;

            case "html":
                print(String.Format(HTMLFMT, count, urlstr,
                                    IP.to_string(addr), r.bytes, r.pkts));
                break;

            case "sidebox":
                print(String.Format(HTMLFMT, count, urlstr,
                                    IP.to_string(addr), r.bytes, r.pkts));
                break;
            }
        }