Annotation of embedaddon/mtr/ui/mtr.h, revision 1.1

1.1     ! misho       1: /*
        !             2:     mtr  --  a network diagnostic tool
        !             3:     Copyright (C) 1997,1998  Matt Kimball
        !             4:     Copyright (C) 2005 R.E.Wolff@BitWizard.nl
        !             5: 
        !             6:     This program is free software; you can redistribute it and/or modify
        !             7:     it under the terms of the GNU General Public License version 2 as 
        !             8:     published by the Free Software Foundation.
        !             9: 
        !            10:     This program is distributed in the hope that it will be useful,
        !            11:     but WITHOUT ANY WARRANTY; without even the implied warranty of
        !            12:     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        !            13:     GNU General Public License for more details.
        !            14: 
        !            15:     You should have received a copy of the GNU General Public License
        !            16:     along with this program; if not, write to the Free Software
        !            17:     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
        !            18: */
        !            19: 
        !            20: #ifndef MTR_MTR_H
        !            21: #define MTR_MTR_H
        !            22: 
        !            23: #include "config.h"
        !            24: 
        !            25: #include <stdint.h>
        !            26: #include <sys/socket.h>
        !            27: #include <arpa/inet.h>
        !            28: 
        !            29: #ifdef HAVE_NETINET_IN_H
        !            30: #include <netinet/in.h>
        !            31: #endif
        !            32: 
        !            33: /* Typedefs */
        !            34: #ifdef ENABLE_IPV6
        !            35: typedef struct in6_addr ip_t;
        !            36: #else
        !            37: typedef struct in_addr ip_t;
        !            38: #endif
        !            39: 
        !            40: #ifndef HAVE_TIME_T
        !            41: typedef int time_t;
        !            42: #endif
        !            43: 
        !            44: /* The __unused__ attribute was added in gcc 3.2.7.  */
        !            45: #if __GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)
        !            46: #define ATTRIBUTE_UNUSED __attribute__((__unused__))
        !            47: #else
        !            48: #define ATTRIBUTE_UNUSED        /* empty */
        !            49: #endif
        !            50: 
        !            51: /* The __const__ attribute was added in gcc 2.95.  */
        !            52: #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)
        !            53: #define ATTRIBUTE_CONST __attribute__ ((__const__))
        !            54: #else
        !            55: #define ATTRIBUTE_CONST         /* empty */
        !            56: #endif
        !            57: 
        !            58: /* stuff used by display such as report, curses... */
        !            59: #define MAXFLD 20               /* max stats fields to display */
        !            60: #define FLD_INDEX_SZ 256
        !            61: 
        !            62: /* net related definitions */
        !            63: #define SAVED_PINGS 200
        !            64: #define MAXPATH 8
        !            65: #define MaxHost 256
        !            66: #define MinPort 1024
        !            67: #define MaxPort 65535
        !            68: #define MAXPACKET 4470          /* largest test packet size */
        !            69: #define MINPACKET 28            /* 20 bytes IP header and 8 bytes ICMP or UDP */
        !            70: #define MAXLABELS 8             /* http://kb.juniper.net/KB2190 (+ 3 just in case) */
        !            71: 
        !            72: /* Stream Control Transmission Protocol is defined in netinet/in.h */
        !            73: #ifdef IPPROTO_SCTP
        !            74: #define HAS_SCTP 1
        !            75: #endif
        !            76: 
        !            77: #ifndef HAVE_SOCKLEN_T
        !            78: typedef int socklen_t;
        !            79: #endif
        !            80: 
        !            81: struct mtr_ctl {
        !            82:     int MaxPing;
        !            83:     float WaitTime;
        !            84:     float GraceTime;
        !            85:     char *Hostname;
        !            86:     char *InterfaceAddress;
        !            87:     char LocalHostname[128];
        !            88:     int ipinfo_no;
        !            89:     int ipinfo_max;
        !            90:     int cpacketsize;            /* packet size used by ping */
        !            91:     int bitpattern;             /* packet bit pattern used by ping */
        !            92:     int tos;                    /* type of service set in ping packet */
        !            93: #ifdef SO_MARK
        !            94:     uint32_t mark;
        !            95: #endif
        !            96:     ip_t unspec_addr;
        !            97:     int af;                     /* address family of remote target */
        !            98:     int mtrtype;                /* type of query packet used */
        !            99:     int fstTTL;                 /* initial hub(ttl) to ping byMin */
        !           100:     int maxTTL;                 /* last hub to ping byMin */
        !           101:     int maxUnknown;             /* stop ping threshold */
        !           102:     int remoteport;             /* target port for TCP tracing */
        !           103:     int localport;              /* source port for UDP tracing */
        !           104:     int probe_timeout;          /* timeout for probe sockets */
        !           105:     unsigned char fld_active[2 * MAXFLD];       /* SO_MARK to set for ping packet */
        !           106:     int display_mode;           /* display mode selector */
        !           107:     int fld_index[FLD_INDEX_SZ];        /* default display field (defined by key in net.h) and order */
        !           108:     char available_options[MAXFLD];
        !           109:     int display_offset;         /* only used in text mode */
        !           110:     void *gtk_data;             /* pointer to hold arbitrary gtk data */
        !           111:     unsigned int                /* bit field to hold named booleans */
        !           112:      ForceMaxPing:1,
        !           113:         use_dns:1,
        !           114:         show_ips:1,
        !           115:         enablempls:1, dns:1, reportwide:1, Interactive:1, DisplayMode:5;
        !           116: };
        !           117: 
        !           118: /* dynamic field drawing */
        !           119: struct fields {
        !           120:     const unsigned char key;
        !           121:     const char *descr;
        !           122:     const char *title;
        !           123:     const char *format;
        !           124:     const int length;
        !           125:     int (
        !           126:     *net_xxx) (
        !           127:     int);
        !           128: };
        !           129: /* defined in mtr.c */
        !           130: extern const struct fields data_fields[MAXFLD];
        !           131: 
        !           132: /* MPLS label object */
        !           133: struct mplslen {
        !           134:     unsigned long label[MAXLABELS];     /* label value */
        !           135:     uint8_t exp[MAXLABELS];     /* experimental bits */
        !           136:     uint8_t ttl[MAXLABELS];     /* MPLS TTL */
        !           137:     char s[MAXLABELS];          /* bottom of stack */
        !           138:     char labels;                /* how many labels did we get? */
        !           139: };
        !           140: 
        !           141: #endif                          /* MTR_MTR_H */

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