Annotation of embedaddon/mtr/ui/mtr.h, revision 1.1.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>