Annotation of embedaddon/trafshow/trafshow.h, revision 1.1.1.1

1.1       misho       1: /*
                      2:  *     Copyright (c) 1993-2004 Rinet Corp., Novosibirsk, Russia
                      3:  *
                      4:  * Redistribution and use in source forms, with and without modification,
                      5:  * are permitted provided that this entire comment appears intact.
                      6:  *
                      7:  * THIS SOURCE CODE IS PROVIDED ``AS IS'' WITHOUT ANY WARRANTIES OF ANY KIND.
                      8:  */
                      9: 
                     10: #ifndef        _TRAFSHOW_H_
                     11: #define        _TRAFSHOW_H_
                     12: 
                     13: #include <sys/types.h>
                     14: #include <sys/time.h>
                     15: #include <netinet/in.h>
                     16: #include <pcap.h>
                     17: #include <pthread.h>
                     18: 
                     19: /*
                     20:  * The default snapshot length.  This value allows most printers to print
                     21:  * useful information while keeping the amount of unwanted data down.
                     22:  */
                     23: #ifndef INET6
                     24: #define        SNAPLEN         68      /* ether + IPv4 + TCP + 14 */
                     25: #define        ADDRBITLEN      32      /* in bits */
                     26: #else
                     27: #define        SNAPLEN         96      /* ether + IPv6 + TCP + 22 */
                     28: #define        ADDRBITLEN      128     /* in bits */
                     29: #endif
                     30: 
                     31: #define        REFRESH_TIME    2       /* in seconds */
                     32: #define        PURGE_TIME      10      /* must be bigger than REFRESH_TIME */
                     33: 
                     34: #define        TEMP_DIR        "/tmp"
                     35: 
                     36: typedef enum { Interfaces, NetStat, FlowDump, HelpPage } ShowMode;
                     37: 
                     38: #ifndef        TRUE
                     39: #define        TRUE    1
                     40: #endif
                     41: #ifndef        FALSE
                     42: #define        FALSE   0
                     43: #endif
                     44: 
                     45: #ifndef        MAX
                     46: #define        MAX(a, b)       ((b) < (a) ? (a) : (b))
                     47: #endif
                     48: #ifndef        MIN
                     49: #define        MIN(a, b)       ((a) < (b) ? (a) : (b))
                     50: #endif
                     51: #ifndef        ABS
                     52: #define        ABS(a)          ((a) >= 0  ? (a) : -(a))
                     53: #endif
                     54: 
                     55: #if defined(htons) && defined(_BIG_ENDIAN) && defined(sparc)
                     56: #undef htons
                     57: #define        htons(x)        ((uint16_t)(x))
                     58: #endif
                     59: #if defined(ntohs) && defined(_BIG_ENDIAN) && defined(sparc)
                     60: #undef ntohs
                     61: #define        ntohs(x)        ((uint16_t)(x))
                     62: #endif
                     63: 
                     64: #ifdef DEBUG
                     65: #include <time.h>
                     66: #include <stdio.h>
                     67: #define        dprintf(x)      \
                     68:        {\
                     69:                char Dbuf[50];\
                     70:                struct timeval Dtv;\
                     71:                gettimeofday(&Dtv, 0);\
                     72:                strftime(Dbuf, sizeof(Dbuf), "%T", localtime(&Dtv.tv_sec));\
                     73:                printf("%s.%03d: ", Dbuf, (int)(Dtv.tv_usec / 1000));\
                     74:                printf x;\
                     75:                printf("\n");\
                     76:        }
                     77: #else
                     78: #define        dprintf(x)
                     79: #endif
                     80: 
                     81: struct netstat_header;
                     82: struct htab;
                     83: struct selector;
                     84: 
                     85: typedef        struct pcap_handler {
                     86:        struct pcap_handler *prev, *next;
                     87:        struct pcap_handler *top, *deep;
                     88: 
                     89: /* fixed input parameters */
                     90: 
                     91:        const char *name;               /* interface name */
                     92:        const char *descr;              /* interface description (or null) */
                     93:        const char *addrstr;            /* interface network address list */
                     94:        pcap_t *pcap;                   /* pcap device handler */
                     95:        pcap_addr_t *addr;              /* pcap device addresses */
                     96: 
                     97: /* aggregation stuff */
                     98:        int masklen;                    /* mask length in bits */
                     99:        struct netstat_header *maskhdr; /* mask address */
                    100: 
                    101: /* operation parameters */
                    102: 
                    103:        /*struct timeval pcap_time;*/   /* last packet capture time */
                    104: 
                    105:        pthread_mutex_t *ns_mutex;      /* netstat hash table mutex */
                    106:        struct htab *ns_hash;           /* netstat hash table */
                    107: 
                    108:        struct selector *selector;      /* list items selector */
                    109:        int selected;                   /* the flag: this item is selected */
                    110: 
                    111:        /* total statistics */
                    112:        u_int64_t pkt_cnt;              /* packet counter */
                    113:        u_int64_t pkt_len;              /* length of ip packet */
                    114:        u_int64_t data_len;             /* length of ip data */
                    115: 
                    116:        u_int64_t pkt_cnt_rate;         /* rate of packet counter */
                    117:        u_int64_t pkt_len_rate;         /* rate of packet length */
                    118:        u_int64_t data_len_rate;        /* rate of data length */
                    119: 
                    120: } PCAP_HANDLER;
                    121: 
                    122: 
                    123: /* function prototypes */
                    124: struct netstat;
                    125: char *pcap_setexpr(PCAP_HANDLER *ph_list, const char *expr);
                    126: PCAP_HANDLER *pcap_get_selected(PCAP_HANDLER *ph);
                    127: PCAP_HANDLER *pcap_set_selected(PCAP_HANDLER *ph, int idx);
                    128: void pcap_save(PCAP_HANDLER *ph, const struct netstat *ns);
                    129: void pcap_purge(void *arg); /* PCAP_HANDLER *ph_list */
                    130: void pcap_clear(void *arg); /* PCAP_HANDLER *ph_list */
                    131: void pcap_show(void *arg); /* PCAP_HANDLER *ph_list */
                    132: 
                    133: PCAP_HANDLER *pcaph_create(PCAP_HANDLER *top, const struct netstat_header *nh);
                    134: void pcaph_close(PCAP_HANDLER *ph);
                    135: 
                    136: /* global variables */
                    137: 
                    138: extern char package[];
                    139: extern char version[];
                    140: extern char target[];
                    141: extern char compiled[];
                    142: extern const char *progname;
                    143: extern const char *hostname;
                    144: extern const char *color_conf;
                    145: extern char *expression;
                    146: extern char *search;
                    147: extern int aggregate;
                    148: extern int popbackflow;
                    149: extern int refresh_time;
                    150: extern int purge_time;
                    151: extern int promisc;
                    152: extern int Oflag;
                    153: extern int nflag;
                    154: extern ShowMode show_mode;
                    155: 
                    156: #endif /* !_TRAFSHOW_H_ */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>