X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fipvs.c;h=68a3d7f3bf9d46a9f47c17492a6acd926458cfbc;hb=d46f48f40cdf847de5cb5fcdf5463d1f3e3f6367;hp=4c6305864941e4d9572d72ec59326c8679365d25;hpb=b291c13a18214834bb32aadca1535ce84a26e8bd;p=collectd.git diff --git a/src/ipvs.c b/src/ipvs.c index 4c630586..68a3d7f3 100644 --- a/src/ipvs.c +++ b/src/ipvs.c @@ -54,18 +54,14 @@ #define log_err(...) ERROR ("ipvs: " __VA_ARGS__) #define log_info(...) INFO ("ipvs: " __VA_ARGS__) - /* * private variables */ - -static int sockfd = -1; - +static int sockfd = -1; /* * libipvs API */ - static struct ip_vs_get_services *ipvs_get_services (void) { struct ip_vs_getinfo ipvs_info; @@ -134,11 +130,9 @@ static struct ip_vs_get_dests *ipvs_get_dests (struct ip_vs_service_entry *se) return ret; } /* ip_vs_get_dests */ - /* * collectd plugin API and helper functions */ - static int cipvs_init (void) { struct ip_vs_getinfo ipvs_info; @@ -160,6 +154,7 @@ static int cipvs_init (void) log_err ("cipvs_init: getsockopt() failed: %s", sstrerror (errno, errbuf, sizeof (errbuf))); close (sockfd); + sockfd = -1; return -1; } @@ -168,6 +163,7 @@ static int cipvs_init (void) log_err ("cipvs_init: IPVS version too old (%d.%d.%d < %d.%d.%d)", NVERSION (ipvs_info.version), 1, 1, 4); close (sockfd); + sockfd = -1; return -1; } else { @@ -315,9 +311,11 @@ static void cipvs_submit_service (struct ip_vs_service_entry *se) static int cipvs_read (void) { struct ip_vs_get_services *services = NULL; - int i = 0; + if (sockfd < 0) + return (-1); + if (NULL == (services = ipvs_get_services ())) return -1; @@ -330,7 +328,10 @@ static int cipvs_read (void) static int cipvs_shutdown (void) { - close (sockfd); + if (sockfd >= 0) + close (sockfd); + sockfd = -1; + return 0; } /* cipvs_shutdown */ @@ -343,4 +344,3 @@ void module_register (void) } /* module_register */ /* vim: set sw=4 ts=4 tw=78 noexpandtab : */ -