summaryrefslogtreecommitdiffstats
path: root/plugins/utils.h
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/utils.h')
-rw-r--r--plugins/utils.h105
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
6functions that might otherwise be vulnerable to hacking. This
7currently includes a standard suite of validation routines to be sure
8that an string argument acually converts to its intended type and a
9suite of string handling routine that do their own memory management
10in order to resist overflow attacks. In addition, a few functions are
11provided to standardize version and error reporting accross the entire
12suite of plugins. */
13
14/* Standardize version information, termination */
15
16char *my_basename (char *);
17void support (void);
18char *clean_revstring (const char *revstring);
19void print_revision (const char *, const char *);
20void terminate (int result, char *msg, ...);
21extern RETSIGTYPE timeout_alarm_handler (int);
22
23/* Handle timeouts */
24
25time_t start_time, end_time;
26int timeout_interval = DEFAULT_SOCKET_TIMEOUT;
27
28/* Test input types */
29
30int is_host (char *);
31int is_addr (char *);
32int is_inet_addr (char *);
33#ifdef USE_IPV6
34int is_inet6_addr (char *);
35#endif
36int is_hostname (char *);
37
38int is_integer (char *);
39int is_intpos (char *);
40int is_intneg (char *);
41int is_intnonneg (char *);
42int is_intpercent (char *);
43
44int is_numeric (char *);
45int is_positive (char *);
46int is_negative (char *);
47int is_nonnegative (char *);
48int is_percentage (char *);
49
50int is_option (char *);
51
52/* generalized timer that will do milliseconds if available */
53#ifndef HAVE_STRUCT_TIMEVAL
54struct timeval {
55 long tv_sec; /* seconds */
56 long tv_usec; /* microseconds */
57};
58#endif
59
60#ifndef HAVE_GETTIMEOFDAY
61int gettimeofday(struct timeval *tv, struct timezone *tz);
62#endif
63
64double delta_time (struct timeval tv);
65
66/* Handle strings safely */
67
68void strip (char *buffer);
69char *strscpy (char *dest, char *src);
70char *strscat (char *dest, char *src);
71char *strnl (char *str);
72char *ssprintf (char *str, const char *fmt, ...); /* deprecate for asprintf */
73char *strpcpy (char *dest, const char *src, const char *str);
74char *strpcat (char *dest, const char *src, const char *str);
75
76int max_state (int a, int b);
77
78void usage (char *msg);
79void usage2(char *msg, char *arg);
80void 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