diff options
Diffstat (limited to 'plugins/check_swap.c')
-rw-r--r-- | plugins/check_swap.c | 37 |
1 files changed, 32 insertions, 5 deletions
diff --git a/plugins/check_swap.c b/plugins/check_swap.c index db8ebf95..59c1ecf6 100644 --- a/plugins/check_swap.c +++ b/plugins/check_swap.c | |||
@@ -41,6 +41,22 @@ const char *email = "nagiosplug-devel@lists.sourceforge.net"; | |||
41 | #include "popen.h" | 41 | #include "popen.h" |
42 | #include "utils.h" | 42 | #include "utils.h" |
43 | 43 | ||
44 | #ifdef HAVE_DECL_SWAPCTL | ||
45 | # ifdef HAVE_SYS_SWAP_H | ||
46 | # include <sys/swap.h> | ||
47 | # endif | ||
48 | # ifdef HAVE_SYS_STAT_H | ||
49 | # include <sys/stat.h> | ||
50 | # endif | ||
51 | # ifdef HAVE_SYS_PARAM_H | ||
52 | # include <sys/param.h> | ||
53 | # endif | ||
54 | #endif | ||
55 | |||
56 | #ifndef SWAP_CONVERSION | ||
57 | # define SWAP_CONVERSION 1 | ||
58 | #endif | ||
59 | |||
44 | int check_swap (int usp, float free_swap_mb); | 60 | int check_swap (int usp, float free_swap_mb); |
45 | int process_arguments (int argc, char **argv); | 61 | int process_arguments (int argc, char **argv); |
46 | int validate_arguments (void); | 62 | int validate_arguments (void); |
@@ -236,22 +252,33 @@ main (int argc, char **argv) | |||
236 | # ifdef CHECK_SWAP_SWAPCTL_SVR4 | 252 | # ifdef CHECK_SWAP_SWAPCTL_SVR4 |
237 | 253 | ||
238 | /* get the number of active swap devices */ | 254 | /* get the number of active swap devices */ |
239 | nswaps=swapctl(SC_GETNSWP, NULL); | 255 | if((nswaps=swapctl(SC_GETNSWP, NULL))== -1) |
256 | die(STATE_UNKNOWN, _("Error getting swap devices\n") ); | ||
257 | |||
258 | if(nswaps == 0) | ||
259 | die(STATE_OK, _("SWAP OK: No swap devices defined\n")); | ||
260 | |||
261 | if(verbose >= 3) | ||
262 | printf("Found %d swap device(s)\n", nswaps); | ||
240 | 263 | ||
241 | /* initialize swap table + entries */ | 264 | /* initialize swap table + entries */ |
242 | tbl=(swaptbl_t*)malloc(sizeof(swaptbl_t)+(sizeof(swapent_t)*nswaps)); | 265 | tbl=(swaptbl_t*)malloc(sizeof(swaptbl_t)+(sizeof(swapent_t)*nswaps)); |
266 | |||
267 | if(tbl==NULL) | ||
268 | die(STATE_UNKNOWN, _("malloc() failed!\n")); | ||
269 | |||
243 | memset(tbl, 0, sizeof(swaptbl_t)+(sizeof(swapent_t)*nswaps)); | 270 | memset(tbl, 0, sizeof(swaptbl_t)+(sizeof(swapent_t)*nswaps)); |
244 | tbl->swt_n=nswaps; | 271 | tbl->swt_n=nswaps; |
245 | for(i=0;i<nswaps;i++){ | 272 | for(i=0;i<nswaps;i++){ |
246 | ent=&tbl->swt_ent[i]; | 273 | if((tbl->swt_ent[i].ste_path=(char*)malloc(sizeof(char)*MAXPATHLEN)) == NULL) |
247 | ent->ste_path=(char*)malloc(sizeof(char)*MAXPATHLEN); | 274 | die(STATE_UNKNOWN, _("malloc() failed!\n")); |
248 | } | 275 | } |
249 | 276 | ||
250 | /* and now, tally 'em up */ | 277 | /* and now, tally 'em up */ |
251 | swapctl_res=swapctl(SC_LIST, tbl); | 278 | swapctl_res=swapctl(SC_LIST, tbl); |
252 | if(swapctl_res < 0){ | 279 | if(swapctl_res < 0){ |
253 | perror(_("swapctl failed: ")); | 280 | perror(_("swapctl failed: ")); |
254 | result = STATE_WARNING; | 281 | die(STATE_UNKNOWN, _("Error in swapctl call\n")); |
255 | } | 282 | } |
256 | 283 | ||
257 | for(i=0;i<nswaps;i++){ | 284 | for(i=0;i<nswaps;i++){ |
@@ -293,7 +320,7 @@ main (int argc, char **argv) | |||
293 | swapctl_res=swapctl(SWAP_STATS, ent, nswaps); | 320 | swapctl_res=swapctl(SWAP_STATS, ent, nswaps); |
294 | if(swapctl_res < 0){ | 321 | if(swapctl_res < 0){ |
295 | perror(_("swapctl failed: ")); | 322 | perror(_("swapctl failed: ")); |
296 | result = STATE_WARNING; | 323 | die(STATE_UNKNOWN, _("Error in swapctl call\n")); |
297 | } | 324 | } |
298 | 325 | ||
299 | for(i=0;i<nswaps;i++){ | 326 | for(i=0;i<nswaps;i++){ |