[Nagiosplug-checkins] CVS: nagiosplug/plugins check_nwstat.c,1.13,1.14 netutils.c,1.16,1.17 netutils.h,1.8,1.9
Karl DeBisschop
kdebisschop at users.sourceforge.net
Sat Feb 28 20:21:47 CET 2004
Update of /cvsroot/nagiosplug/nagiosplug/plugins
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9187/plugins
Modified Files:
check_nwstat.c netutils.c netutils.h
Log Message:
was making up to 34 separate tcp connections - now we open one and reuse
Index: check_nwstat.c
===================================================================
RCS file: /cvsroot/nagiosplug/nagiosplug/plugins/check_nwstat.c,v
retrieving revision 1.13
retrieving revision 1.14
diff -C2 -r1.13 -r1.14
*** check_nwstat.c 22 Aug 2003 06:22:38 -0000 1.13
--- check_nwstat.c 29 Feb 2004 04:09:34 -0000 1.14
***************
*** 87,90 ****
--- 87,91 ----
main(int argc, char **argv) {
int result;
+ int sd;
char *send_buffer=NULL;
char recv_buffer[MAX_INPUT_BUFFER];
***************
*** 130,138 ****
/* set socket timeout */
alarm(socket_timeout);
!
/* get OS version string */
if (check_netware_version==TRUE) {
send_buffer = strdup ("S19\r\n");
! result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
if (result!=STATE_OK)
return result;
--- 131,142 ----
/* set socket timeout */
alarm(socket_timeout);
!
! /* open connection */
! my_tcp_connect (server_address, server_port, &sd);
!
/* get OS version string */
if (check_netware_version==TRUE) {
send_buffer = strdup ("S19\r\n");
! result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
if (result!=STATE_OK)
return result;
***************
*** 163,172 ****
asprintf (&send_buffer,"UTIL%s\r\n",temp_buffer);
! result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
if (result!=STATE_OK)
return result;
utilization=strtoul(recv_buffer,NULL,10);
send_buffer = strdup ("UPTIME\r\n");
! result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
if (result!=STATE_OK)
return result;
--- 167,176 ----
asprintf (&send_buffer,"UTIL%s\r\n",temp_buffer);
! result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
if (result!=STATE_OK)
return result;
utilization=strtoul(recv_buffer,NULL,10);
send_buffer = strdup ("UPTIME\r\n");
! result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
if (result!=STATE_OK)
return result;
***************
*** 190,194 ****
send_buffer = strdup ("CONNECT\r\n");
! result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
if (result!=STATE_OK)
return result;
--- 194,198 ----
send_buffer = strdup ("CONNECT\r\n");
! result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
if (result!=STATE_OK)
return result;
***************
*** 209,213 ****
send_buffer = strdup ("S1\r\n");
! result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
if (result!=STATE_OK)
return result;
--- 213,217 ----
send_buffer = strdup ("S1\r\n");
! result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
if (result!=STATE_OK)
return result;
***************
*** 228,232 ****
send_buffer = strdup ("S2\r\n");
! result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
if (result!=STATE_OK)
return result;
--- 232,236 ----
send_buffer = strdup ("S2\r\n");
! result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
if (result!=STATE_OK)
return result;
***************
*** 247,251 ****
send_buffer = strdup ("S3\r\n");
! result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
if (result!=STATE_OK)
return result;
--- 251,255 ----
send_buffer = strdup ("S3\r\n");
! result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
if (result!=STATE_OK)
return result;
***************
*** 266,270 ****
send_buffer = strdup ("S5\r\n");
! result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
if (result!=STATE_OK)
return result;
--- 270,274 ----
send_buffer = strdup ("S5\r\n");
! result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
if (result!=STATE_OK)
return result;
***************
*** 286,290 ****
asprintf (&send_buffer,"VKF%s\r\n",volume_name);
! result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
if (result!=STATE_OK)
return result;
--- 290,294 ----
asprintf (&send_buffer,"VKF%s\r\n",volume_name);
! result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
if (result!=STATE_OK)
return result;
***************
*** 310,314 ****
asprintf (&send_buffer,"VKF%s\r\n",volume_name);
! result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
if (result!=STATE_OK)
return result;
--- 314,318 ----
asprintf (&send_buffer,"VKF%s\r\n",volume_name);
! result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
if (result!=STATE_OK)
return result;
***************
*** 324,328 ****
asprintf (&send_buffer,"VKS%s\r\n",volume_name);
! result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
if (result!=STATE_OK)
return result;
--- 328,332 ----
asprintf (&send_buffer,"VKS%s\r\n",volume_name);
! result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
if (result!=STATE_OK)
return result;
***************
*** 343,347 ****
send_buffer = strdup ("S11\r\n");
! result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
if (result!=STATE_OK)
return result;
--- 347,351 ----
send_buffer = strdup ("S11\r\n");
! result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
if (result!=STATE_OK)
return result;
***************
*** 352,356 ****
send_buffer = strdup ("S13\r\n");
! result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
temp_buffer=strtok(recv_buffer,"\r\n");
--- 356,360 ----
send_buffer = strdup ("S13\r\n");
! result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
temp_buffer=strtok(recv_buffer,"\r\n");
***************
*** 361,365 ****
send_buffer = strdup ("S12\r\n");
! result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
if (result!=STATE_OK)
return result;
--- 365,369 ----
send_buffer = strdup ("S12\r\n");
! result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
if (result!=STATE_OK)
return result;
***************
*** 375,379 ****
asprintf (&send_buffer,"S15\r\n");
! result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
if (result!=STATE_OK)
return result;
--- 379,383 ----
asprintf (&send_buffer,"S15\r\n");
! result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
if (result!=STATE_OK)
return result;
***************
*** 382,386 ****
asprintf (&send_buffer,"S16\r\n");
! result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
if (result!=STATE_OK)
return result;
--- 386,390 ----
asprintf (&send_buffer,"S16\r\n");
! result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
if (result!=STATE_OK)
return result;
***************
*** 411,415 ****
else
asprintf (&send_buffer,"S9.%d\r\n",sap_number);
! result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
if (result!=STATE_OK)
return result;
--- 415,419 ----
else
asprintf (&send_buffer,"S9.%d\r\n",sap_number);
! result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
if (result!=STATE_OK)
return result;
***************
*** 431,435 ****
asprintf (&send_buffer,"VKP%s\r\n",volume_name);
! result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
if (result!=STATE_OK)
return result;
--- 435,439 ----
asprintf (&send_buffer,"VKP%s\r\n",volume_name);
! result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
if (result!=STATE_OK)
return result;
***************
*** 451,455 ****
asprintf (&send_buffer,"VKP%s\r\n",volume_name);
! result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
if (result!=STATE_OK)
return result;
--- 455,459 ----
asprintf (&send_buffer,"VKP%s\r\n",volume_name);
! result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
if (result!=STATE_OK)
return result;
***************
*** 465,469 ****
asprintf (&send_buffer,"VKS%s\r\n",volume_name);
! result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
if (result!=STATE_OK)
return result;
--- 469,473 ----
asprintf (&send_buffer,"VKS%s\r\n",volume_name);
! result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
if (result!=STATE_OK)
return result;
***************
*** 484,488 ****
asprintf (&send_buffer,"VKNP%s\r\n",volume_name);
! result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
if (result!=STATE_OK)
return result;
--- 488,492 ----
asprintf (&send_buffer,"VKNP%s\r\n",volume_name);
! result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
if (result!=STATE_OK)
return result;
***************
*** 504,508 ****
asprintf (&send_buffer,"VKNP%s\r\n",volume_name);
! result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
if (result!=STATE_OK)
return result;
--- 508,512 ----
asprintf (&send_buffer,"VKNP%s\r\n",volume_name);
! result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
if (result!=STATE_OK)
return result;
***************
*** 518,522 ****
asprintf (&send_buffer,"VKS%s\r\n",volume_name);
! result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
if (result!=STATE_OK)
return result;
--- 522,526 ----
asprintf (&send_buffer,"VKS%s\r\n",volume_name);
! result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
if (result!=STATE_OK)
return result;
***************
*** 537,541 ****
asprintf (&send_buffer,"S18\r\n");
! result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
if (result!=STATE_OK)
return result;
--- 541,545 ----
asprintf (&send_buffer,"S18\r\n");
! result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
if (result!=STATE_OK)
return result;
***************
*** 554,558 ****
asprintf (&send_buffer,"S17\r\n");
! result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
if (result!=STATE_OK)
return result;
--- 558,562 ----
asprintf (&send_buffer,"S17\r\n");
! result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
if (result!=STATE_OK)
return result;
***************
*** 571,575 ****
asprintf (&send_buffer,"S20\r\n");
! result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
if (result!=STATE_OK)
return result;
--- 575,579 ----
asprintf (&send_buffer,"S20\r\n");
! result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
if (result!=STATE_OK)
return result;
***************
*** 578,582 ****
asprintf (&send_buffer,"S21\r\n");
! result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
if (result!=STATE_OK)
return result;
--- 582,586 ----
asprintf (&send_buffer,"S21\r\n");
! result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
if (result!=STATE_OK)
return result;
***************
*** 598,602 ****
asprintf (&send_buffer,"S22\r\n");
! result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
if (result!=STATE_OK)
return result;
--- 602,606 ----
asprintf (&send_buffer,"S22\r\n");
! result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
if (result!=STATE_OK)
return result;
***************
*** 616,620 ****
send_buffer = strdup ("S4\r\n");
! result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
if (result!=STATE_OK)
return result;
--- 620,624 ----
send_buffer = strdup ("S4\r\n");
! result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
if (result!=STATE_OK)
return result;
***************
*** 632,636 ****
send_buffer = strdup ("S6\r\n");
! result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
if (result!=STATE_OK)
return result;
--- 636,640 ----
send_buffer = strdup ("S6\r\n");
! result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
if (result!=STATE_OK)
return result;
***************
*** 647,651 ****
send_buffer = strdup ("S7\r\n");
! result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
if (result!=STATE_OK)
return result;
--- 651,655 ----
send_buffer = strdup ("S7\r\n");
! result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
if (result!=STATE_OK)
return result;
***************
*** 660,664 ****
} else if (vars_to_check==DSVER) {
asprintf (&send_buffer,"S13\r\n");
! result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
if (result!=STATE_OK)
return result;
--- 664,668 ----
} else if (vars_to_check==DSVER) {
asprintf (&send_buffer,"S13\r\n");
! result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
if (result!=STATE_OK)
return result;
***************
*** 669,673 ****
} else if (vars_to_check==UPTIME) {
! result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
if (result!=STATE_OK)
return result;
--- 673,677 ----
} else if (vars_to_check==UPTIME) {
! result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
if (result!=STATE_OK)
return result;
***************
*** 679,683 ****
} else if (vars_to_check==NLM) {
asprintf (&send_buffer,"S24:%s\r\n",nlm_name);
! result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
if (result!=STATE_OK)
return result;
--- 683,687 ----
} else if (vars_to_check==NLM) {
asprintf (&send_buffer,"S24:%s\r\n",nlm_name);
! result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
if (result!=STATE_OK)
return result;
***************
*** 698,701 ****
--- 702,707 ----
}
+ close (sd);
+
/* reset timeout */
alarm(0);
Index: netutils.c
===================================================================
RCS file: /cvsroot/nagiosplug/nagiosplug/plugins/netutils.c,v
retrieving revision 1.16
retrieving revision 1.17
diff -C2 -r1.16 -r1.17
*** netutils.c 20 Feb 2004 05:22:05 -0000 1.16
--- netutils.c 29 Feb 2004 04:09:34 -0000 1.17
***************
*** 169,177 ****
{
int result;
- int send_result;
- int recv_result;
int sd;
- struct timeval tv;
- fd_set readfds;
result = STATE_OK;
--- 169,173 ----
***************
*** 181,219 ****
return STATE_CRITICAL;
! send_result = send (sd, send_buffer, strlen (send_buffer), 0);
! if (send_result<0 || (size_t)send_result!=strlen(send_buffer)) {
! printf ("send() failed\n");
! result = STATE_WARNING;
! }
!
! /* wait up to the number of seconds for socket timeout minus one
! for data from the host */
! tv.tv_sec = socket_timeout - 1;
! tv.tv_usec = 0;
! FD_ZERO (&readfds);
! FD_SET (sd, &readfds);
! select (sd + 1, &readfds, NULL, NULL, &tv);
!
! /* make sure some data has arrived */
! if (!FD_ISSET (sd, &readfds)) {
! strcpy (recv_buffer, "");
! printf ("No data was received from host!\n");
! result = STATE_WARNING;
! }
!
! else {
! recv_result = recv (sd, recv_buffer, (size_t)recv_size - 1, 0);
! if (recv_result == -1) {
! strcpy (recv_buffer, "");
! if (proto != IPPROTO_TCP)
! printf ("recv() failed\n");
! result = STATE_WARNING;
! }
! else
! recv_buffer[recv_result] = 0;
!
! /* die returned string */
! recv_buffer[recv_size - 1] = 0;
! }
close (sd);
--- 177,181 ----
return STATE_CRITICAL;
! result = send_request (sd, proto, send_buffer, recv_buffer, recv_size);
close (sd);
***************
*** 316,319 ****
--- 278,344 ----
}
+
+ int
+ send_tcp_request (int sd, const char *send_buffer, char *recv_buffer, int recv_size)
+ {
+ return send_request (sd, IPPROTO_TCP, send_buffer, recv_buffer, recv_size);
+ }
+
+
+ int
+ send_udp_request (int sd, const char *send_buffer, char *recv_buffer, int recv_size)
+ {
+ return send_request (sd, IPPROTO_UDP, send_buffer, recv_buffer, recv_size);
+ }
+
+
+ int
+ send_request (int sd, int proto, const char *send_buffer, char *recv_buffer, int recv_size)
+ {
+ int result;
+ int send_result;
+ int recv_result;
+ struct timeval tv;
+ fd_set readfds;
+
+ send_result = send (sd, send_buffer, strlen (send_buffer), 0);
+ if (send_result<0 || (size_t)send_result!=strlen(send_buffer)) {
+ printf ("send() failed\n");
+ result = STATE_WARNING;
+ }
+
+ /* wait up to the number of seconds for socket timeout minus one
+ for data from the host */
+ tv.tv_sec = socket_timeout - 1;
+ tv.tv_usec = 0;
+ FD_ZERO (&readfds);
+ FD_SET (sd, &readfds);
+ select (sd + 1, &readfds, NULL, NULL, &tv);
+
+ /* make sure some data has arrived */
+ if (!FD_ISSET (sd, &readfds)) {
+ strcpy (recv_buffer, "");
+ printf ("No data was received from host!\n");
+ result = STATE_WARNING;
+ }
+
+ else {
+ recv_result = recv (sd, recv_buffer, (size_t)recv_size - 1, 0);
+ if (recv_result == -1) {
+ strcpy (recv_buffer, "");
+ if (proto != IPPROTO_TCP)
+ printf ("recv() failed\n");
+ result = STATE_WARNING;
+ }
+ else
+ recv_buffer[recv_result] = 0;
+
+ /* die returned string */
+ recv_buffer[recv_size - 1] = 0;
+ }
+ return result;
+ }
+
+
int
is_host (const char *address)
Index: netutils.h
===================================================================
RCS file: /cvsroot/nagiosplug/nagiosplug/plugins/netutils.h,v
retrieving revision 1.8
retrieving revision 1.9
diff -C2 -r1.8 -r1.9
*** netutils.h 5 Dec 2003 16:42:38 -0000 1.8
--- netutils.h 29 Feb 2004 04:09:34 -0000 1.9
***************
*** 49,52 ****
--- 49,56 ----
int my_udp_connect (const char *address, int port, int *sd);
+ int send_tcp_request (int sd, const char *send_buffer, char *recv_buffer, int recv_size);
+ int send_udp_request (int sd, const char *send_buffer, char *recv_buffer, int recv_size);
+ int send_request (int sd, int proto, const char *send_buffer, char *recv_buffer, int recv_size);
+
int is_host (const char *);
int is_addr (const char *);
More information about the Commits
mailing list