summaryrefslogtreecommitdiffstats
path: root/plugins/check_smtp.c
diff options
context:
space:
mode:
authorKarl DeBisschop <kdebisschop@users.sourceforge.net>2003-03-07 07:45:45 (GMT)
committerKarl DeBisschop <kdebisschop@users.sourceforge.net>2003-03-07 07:45:45 (GMT)
commit1f7520fae4a776e0af2c5221071f1ff300de8727 (patch)
tree55f559f84be55413c4a2d864335be46bf61c5307 /plugins/check_smtp.c
parent2ab504386c324a382c83495c991cb60747d0950d (diff)
downloadmonitoring-plugins-1f7520fae4a776e0af2c5221071f1ff300de8727.tar.gz
millisecond timing and perf data
git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@374 f882894a-f735-0410-b71e-b25c423dba1c
Diffstat (limited to 'plugins/check_smtp.c')
-rw-r--r--plugins/check_smtp.c33
1 files changed, 19 insertions, 14 deletions
diff --git a/plugins/check_smtp.c b/plugins/check_smtp.c
index 8c0a246..f78d112 100644
--- a/plugins/check_smtp.c
+++ b/plugins/check_smtp.c
@@ -73,16 +73,18 @@ int warning_time = 0;
73int check_warning_time = FALSE; 73int check_warning_time = FALSE;
74int critical_time = 0; 74int critical_time = 0;
75int check_critical_time = FALSE; 75int check_critical_time = FALSE;
76int verbose = FALSE; 76int verbose = 0;
77 77
78int 78int
79main (int argc, char **argv) 79main (int argc, char **argv)
80{ 80{
81 int sd; 81 int sd;
82 double elapsed_time;
82 int result = STATE_UNKNOWN; 83 int result = STATE_UNKNOWN;
83 char buffer[MAX_INPUT_BUFFER] = ""; 84 char buffer[MAX_INPUT_BUFFER] = "";
84 char *from_str = NULL; 85 char *from_str = NULL;
85 char *helocmd = NULL; 86 char *helocmd = NULL;
87 struct timeval tv;
86 88
87 if (process_arguments (argc, argv) != OK) 89 if (process_arguments (argc, argv) != OK)
88 usage ("Invalid command arguments supplied\n"); 90 usage ("Invalid command arguments supplied\n");
@@ -98,17 +100,19 @@ main (int argc, char **argv)
98 /* initialize the MAIL command with optional FROM command */ 100 /* initialize the MAIL command with optional FROM command */
99 asprintf (&from_str, "%sFROM: %s%s", SMTP_DUMMYCMD, from_arg, "\r\n"); 101 asprintf (&from_str, "%sFROM: %s%s", SMTP_DUMMYCMD, from_arg, "\r\n");
100 102
101 if (verbose == TRUE) 103 if (verbose)
102 printf ("FROMCMD: %s\n", from_str); 104 printf ("FROMCMD: %s\n", from_str);
103 105
104 /* initialize alarm signal handling */ 106 /* initialize alarm signal handling */
105 signal (SIGALRM, socket_timeout_alarm_handler); 107 (void) signal (SIGALRM, socket_timeout_alarm_handler);
106 108
107 /* set socket timeout */ 109 /* set socket timeout */
108 alarm (socket_timeout); 110 (void) alarm (socket_timeout);
111
112 /* start timer */
113 gettimeofday (&tv, NULL);
109 114
110 /* try to connect to the host at the given port number */ 115 /* try to connect to the host at the given port number */
111 time (&start_time);
112 result = my_tcp_connect (server_address, server_port, &sd); 116 result = my_tcp_connect (server_address, server_port, &sd);
113 117
114 /* we connected, so close connection before exiting */ 118 /* we connected, so close connection before exiting */
@@ -146,7 +150,7 @@ main (int argc, char **argv)
146 /* allow for response to DUMMYCMD to reach us */ 150 /* allow for response to DUMMYCMD to reach us */
147 recv(sd, buffer, MAX_INPUT_BUFFER-1, 0); 151 recv(sd, buffer, MAX_INPUT_BUFFER-1, 0);
148 152
149 if (verbose == TRUE) 153 if (verbose)
150 printf("DUMMYCMD: %s\n%s\n",from_str,buffer); 154 printf("DUMMYCMD: %s\n%s\n",from_str,buffer);
151#endif /* SMTP_USE_DUMMYCMD */ 155#endif /* SMTP_USE_DUMMYCMD */
152 156
@@ -160,18 +164,19 @@ main (int argc, char **argv)
160 /* reset the alarm */ 164 /* reset the alarm */
161 alarm (0); 165 alarm (0);
162 166
163 time (&end_time); 167 elapsed_time = delta_time (tv);
164 168
165 if (check_critical_time == TRUE && (end_time - start_time) > critical_time) 169 if (check_critical_time && elapsed_time > (double) critical_time)
166 result = STATE_CRITICAL; 170 result = STATE_CRITICAL;
167 else if (check_warning_time == TRUE && (end_time - start_time) > warning_time) 171 else if (check_warning_time && elapsed_time > (double) warning_time)
168 result = STATE_WARNING; 172 result = STATE_WARNING;
169 173
170 if (verbose == TRUE) 174 if (verbose)
171 printf ("SMTP %s - %d sec. response time, %s\n", 175 printf ("SMTP %s - %7.3f sec. response time, %s|time=%7.3f\n",
172 state_text (result), (int) (end_time - start_time), buffer); 176 state_text (result), elapsed_time, buffer, elapsed_time);
173 else 177 else
174 printf ("SMTP %s - %d second response time\n", state_text (result), (int) (end_time - start_time)); 178 printf ("SMTP %s - %7.3f second response time|time=%7.3f\n",
179 state_text (result), elapsed_time, elapsed_time);
175 180
176 return result; 181 return result;
177} 182}
@@ -268,7 +273,7 @@ process_arguments (int argc, char **argv)
268 } 273 }
269 break; 274 break;
270 case 'v': /* verbose */ 275 case 'v': /* verbose */
271 verbose = TRUE; 276 verbose++;
272 break; 277 break;
273 case 't': /* timeout */ 278 case 't': /* timeout */
274 if (is_intnonneg (optarg)) { 279 if (is_intnonneg (optarg)) {