diff options
Diffstat (limited to 'plugins/utils.h')
-rw-r--r-- | plugins/utils.h | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/plugins/utils.h b/plugins/utils.h new file mode 100644 index 0000000..89ada6f --- /dev/null +++ b/plugins/utils.h | |||
@@ -0,0 +1,105 @@ | |||
1 | /* header file for nagios plugins utils.c */ | ||
2 | |||
3 | /* this file should be included in all plugins */ | ||
4 | |||
5 | /* The purpose of this package is to provide safer alternantives to C | ||
6 | functions that might otherwise be vulnerable to hacking. This | ||
7 | currently includes a standard suite of validation routines to be sure | ||
8 | that an string argument acually converts to its intended type and a | ||
9 | suite of string handling routine that do their own memory management | ||
10 | in order to resist overflow attacks. In addition, a few functions are | ||
11 | provided to standardize version and error reporting accross the entire | ||
12 | suite of plugins. */ | ||
13 | |||
14 | /* Standardize version information, termination */ | ||
15 | |||
16 | char *my_basename (char *); | ||
17 | void support (void); | ||
18 | char *clean_revstring (const char *revstring); | ||
19 | void print_revision (const char *, const char *); | ||
20 | void terminate (int result, char *msg, ...); | ||
21 | extern RETSIGTYPE timeout_alarm_handler (int); | ||
22 | |||
23 | /* Handle timeouts */ | ||
24 | |||
25 | time_t start_time, end_time; | ||
26 | int timeout_interval = DEFAULT_SOCKET_TIMEOUT; | ||
27 | |||
28 | /* Test input types */ | ||
29 | |||
30 | int is_host (char *); | ||
31 | int is_addr (char *); | ||
32 | int is_inet_addr (char *); | ||
33 | #ifdef USE_IPV6 | ||
34 | int is_inet6_addr (char *); | ||
35 | #endif | ||
36 | int is_hostname (char *); | ||
37 | |||
38 | int is_integer (char *); | ||
39 | int is_intpos (char *); | ||
40 | int is_intneg (char *); | ||
41 | int is_intnonneg (char *); | ||
42 | int is_intpercent (char *); | ||
43 | |||
44 | int is_numeric (char *); | ||
45 | int is_positive (char *); | ||
46 | int is_negative (char *); | ||
47 | int is_nonnegative (char *); | ||
48 | int is_percentage (char *); | ||
49 | |||
50 | int is_option (char *); | ||
51 | |||
52 | /* generalized timer that will do milliseconds if available */ | ||
53 | #ifndef HAVE_STRUCT_TIMEVAL | ||
54 | struct timeval { | ||
55 | long tv_sec; /* seconds */ | ||
56 | long tv_usec; /* microseconds */ | ||
57 | }; | ||
58 | #endif | ||
59 | |||
60 | #ifndef HAVE_GETTIMEOFDAY | ||
61 | int gettimeofday(struct timeval *tv, struct timezone *tz); | ||
62 | #endif | ||
63 | |||
64 | double delta_time (struct timeval tv); | ||
65 | |||
66 | /* Handle strings safely */ | ||
67 | |||
68 | void strip (char *buffer); | ||
69 | char *strscpy (char *dest, char *src); | ||
70 | char *strscat (char *dest, char *src); | ||
71 | char *strnl (char *str); | ||
72 | char *ssprintf (char *str, const char *fmt, ...); /* deprecate for asprintf */ | ||
73 | char *strpcpy (char *dest, const char *src, const char *str); | ||
74 | char *strpcat (char *dest, const char *src, const char *str); | ||
75 | |||
76 | int max_state (int a, int b); | ||
77 | |||
78 | void usage (char *msg); | ||
79 | void usage2(char *msg, char *arg); | ||
80 | void usage3(char *msg, char arg); | ||
81 | |||
82 | |||
83 | #define max(a,b) (((a)>(b))?(a):(b)) | ||
84 | |||
85 | #define state_text(a) \ | ||
86 | (a)==0?"OK":\ | ||
87 | (a)==1?"WARNING":\ | ||
88 | (a)==2?"CRITICAL":\ | ||
89 | (a)==3?"UNKNOWN":\ | ||
90 | (a)==4?"DEPENDENT":\ | ||
91 | "UNKNOWN" | ||
92 | |||
93 | /* The idea here is that, although not every plugin will use all of these, | ||
94 | most will or should. Therefore, for consistency, these very common | ||
95 | options should have only these meanings throughout the overall suite */ | ||
96 | |||
97 | #define STD_LONG_OPTS \ | ||
98 | {"version",no_argument,0,'V'},\ | ||
99 | {"verbose",no_argument,0,'v'},\ | ||
100 | {"help",no_argument,0,'h'},\ | ||
101 | {"timeout",required_argument,0,'t'},\ | ||
102 | {"critical",required_argument,0,'c'},\ | ||
103 | {"warning",required_argument,0,'w'},\ | ||
104 | {"hostname",required_argument,0,'H'} | ||
105 | |||