Code

remove UT_HLP_VRS from print_usage
[nagiosplug.git] / plugins / linux.h
1 /*
2  * Special compatibility definitions for linux.
3  *
4  *      On the linux platform, several IP-related structures have
5  *      different names. Also some of the structure fields have
6  *      other names, although the layout is (obviously) fixed.
7  *      Several constants are not defined in the standard files.
8  *
9  *      @(#)linux.h             e07@nikhef.nl (Eric Wassenaar) 960301
10  * 
11  * XXX [src] - This is a complete ripoff from the fping program
12  */
14 #if defined(linux)
16 #include <endian.h>                             /* to get the proper BYTE_ORDER */
18 #if !defined(BYTE_ORDER) || (BYTE_ORDER != BIG_ENDIAN && \
19      BYTE_ORDER != LITTLE_ENDIAN && BYTE_ORDER != PDP_ENDIAN)
20 error "Undefined or invalid BYTE_ORDER";
21 #endif
23 /*
24  * Structure of an ip header, without options.
25  */
27 #define IPVERSION       4
29 struct ip {
30 #if (BYTE_ORDER == LITTLE_ENDIAN || BYTE_ORDER == PDP_ENDIAN)
31         u_char ip_hl:4,                         /* header length */
32           ip_v:4;                                       /* version */
33 #else
34         u_char ip_v:4,                          /* version */
35           ip_hl:4;                                      /* header length */
36 #endif
37         u_char ip_tos;                          /* type of service */
38         short ip_len;                           /* total length */
39         u_short ip_id;                          /* identification */
40         short ip_off;                           /* fragment offset field */
41 #define IP_DF 0x4000                    /* dont fragment flag */
42 #define IP_MF 0x2000                    /* more fragments flag */
43         u_char ip_ttl;                          /* time to live */
44         u_char ip_p;                            /* protocol */
45         u_short ip_sum;                         /* checksum */
46         struct in_addr ip_src, ip_dst;  /* source and dest address */
47 };
49 #define IP_MAXPACKET    65535   /* maximum packet size */
51 /*
52  * Structure of an icmp header.
53  */
55 struct icmp {
56         u_char icmp_type;                       /* type of message, see below */
57         u_char icmp_code;                       /* type sub code */
58         u_short icmp_cksum;                     /* ones complement cksum of struct */
59         union {
60                 u_char ih_pptr;                 /* ICMP_PARAMPROB */
61                 struct in_addr ih_gwaddr;       /* ICMP_REDIRECT */
62                 struct ih_idseq {
63                         n_short icd_id;
64                         n_short icd_seq;
65                 } ih_idseq;
66                 int ih_void;
67         } icmp_hun;
68 #define icmp_pptr       icmp_hun.ih_pptr
69 #define icmp_gwaddr     icmp_hun.ih_gwaddr
70 #define icmp_id         icmp_hun.ih_idseq.icd_id
71 #define icmp_seq        icmp_hun.ih_idseq.icd_seq
72 #define icmp_void       icmp_hun.ih_void
73         union {
74                 struct id_ts {
75                         n_time its_otime;
76                         n_time its_rtime;
77                         n_time its_ttime;
78                 } id_ts;
79                 struct id_ip {
80                         struct ip idi_ip;
81                         /* options and then 64 bits of data */
82                 } id_ip;
83                 u_long id_mask;
84                 char id_data[1];
85         } icmp_dun;
86 #define icmp_otime      icmp_dun.id_ts.its_otime
87 #define icmp_rtime      icmp_dun.id_ts.its_rtime
88 #define icmp_ttime      icmp_dun.id_ts.its_ttime
89 #define icmp_ip         icmp_dun.id_ip.idi_ip
90 #define icmp_mask       icmp_dun.id_mask
91 #define icmp_data       icmp_dun.id_data
92 };
94 #define ICMP_MINLEN     8                       /* abs minimum */
96 /*
97  * Definition of icmp type and code field values.
98  */
100 #define ICMP_ECHOREPLY          0       /* echo reply */
101 #define ICMP_UNREACH            3       /* dest unreachable, codes: */
102 #define         ICMP_UNREACH_NET                0       /* bad net */
103 #define         ICMP_UNREACH_HOST               1       /* bad host */
104 #define         ICMP_UNREACH_PROTOCOL   2       /* bad protocol */
105 #define         ICMP_UNREACH_PORT               3       /* bad port */
106 #define         ICMP_UNREACH_NEEDFRAG   4       /* IP_DF caused drop */
107 #define         ICMP_UNREACH_SRCFAIL    5       /* src route failed */
108 #define ICMP_SOURCEQUENCH       4       /* packet lost, slow down */
109 #define ICMP_REDIRECT           5       /* shorter route, codes: */
110 #define         ICMP_REDIRECT_NET               0       /* for network */
111 #define         ICMP_REDIRECT_HOST              1       /* for host */
112 #define         ICMP_REDIRECT_TOSNET    2       /* for tos and net */
113 #define         ICMP_REDIRECT_TOSHOST   3       /* for tos and host */
114 #define ICMP_ECHO                       8       /* echo service */
115 #define ICMP_TIMXCEED           11      /* time exceeded, codes: */
116 #define         ICMP_TIMXCEED_INTRANS   0       /* ttl==0 in transit */
117 #define         ICMP_TIMXCEED_REASS             1       /* ttl==0 in reass */
118 #define ICMP_PARAMPROB          12              /* ip header bad */
119 #define ICMP_TSTAMP                     13              /* timestamp request */
120 #define ICMP_TSTAMPREPLY        14              /* timestamp reply */
121 #define ICMP_IREQ                       15              /* information request */
122 #define ICMP_IREQREPLY          16              /* information reply */
123 #define ICMP_MASKREQ            17              /* address mask request */
124 #define ICMP_MASKREPLY          18              /* address mask reply */
126 /*
127  * Definitions needed for the udp header structure.
128  */
130 #define uh_sport        source
131 #define uh_dport        dest
132 #define uh_ulen         len
133 #define uh_sum          check
135 #endif /* linux */