From: Florian Forster Date: Wed, 30 Apr 2008 08:26:28 +0000 (+0200) Subject: Merge branch 'collectd-4.2' into collectd-4.3 X-Git-Tag: collectd-4.4.0~4^2~4 X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=9d5a7847b03d78a94b6a0b153abeb630b4b94ddd;hp=-c;p=collectd.git Merge branch 'collectd-4.2' into collectd-4.3 --- 9d5a7847b03d78a94b6a0b153abeb630b4b94ddd diff --combined src/collectd.c index 984ff757,ab9c89d2..4e521f9f --- a/src/collectd.c +++ b/src/collectd.c @@@ -23,13 -23,14 +23,17 @@@ #include "collectd.h" #include "common.h" +#include +#include +#include + #include "plugin.h" #include "configfile.h" -#include "types_list.h" + #if HAVE_STATGRAB_H + # include + #endif + /* * Global variables */ @@@ -51,67 -52,25 +55,67 @@@ static void sigTermHandler (int signal loop++; } -static int init_global_variables (void) +static int init_hostname (void) { const char *str; + struct addrinfo ai_hints; + struct addrinfo *ai_list; + struct addrinfo *ai_ptr; + int status; + str = global_option_get ("Hostname"); if (str != NULL) { strncpy (hostname_g, str, sizeof (hostname_g)); + hostname_g[sizeof (hostname_g) - 1] = '\0'; + return (0); } - else + + if (gethostname (hostname_g, sizeof (hostname_g)) != 0) { - if (gethostname (hostname_g, sizeof (hostname_g)) != 0) - { - fprintf (stderr, "`gethostname' failed and no " - "hostname was configured.\n"); - return (-1); - } + fprintf (stderr, "`gethostname' failed and no " + "hostname was configured.\n"); + return (-1); } - DEBUG ("hostname_g = %s;", hostname_g); + + str = global_option_get ("FQDNLookup"); + if ((strcasecmp ("false", str) == 0) + || (strcasecmp ("no", str) == 0) + || (strcasecmp ("off", str) == 0)) + return (0); + + memset (&ai_hints, '\0', sizeof (ai_hints)); + ai_hints.ai_flags = AI_CANONNAME; + + status = getaddrinfo (hostname_g, NULL, &ai_hints, &ai_list); + if (status != 0) + { + ERROR ("Looking up \"%s\" failed. You have set the " + "\"FQDNLookup\" option, but I cannot resolve " + "my hostname to a fully qualified domain " + "name. Please fix you network " + "configuration.", hostname_g); + return (-1); + } + + for (ai_ptr = ai_list; ai_ptr != NULL; ai_ptr = ai_ptr->ai_next) + { + if (ai_ptr->ai_canonname == NULL) + continue; + + strncpy (hostname_g, ai_ptr->ai_canonname, sizeof (hostname_g)); + hostname_g[sizeof (hostname_g) - 1] = '\0'; + break; + } + + freeaddrinfo (ai_list); + return (0); +} /* int init_hostname */ + +static int init_global_variables (void) +{ + const char *str; str = global_option_get ("Interval"); if (str == NULL) @@@ -125,10 -84,6 +129,10 @@@ } DEBUG ("interval_g = %i;", interval_g); + if (init_hostname () != 0) + return (-1); + DEBUG ("hostname_g = %s;", hostname_g); + return (0); } /* int init_global_variables */ @@@ -219,7 -174,7 +223,7 @@@ static void update_kstat (void /* TODO * Remove all settings but `-f' and `-C' */ -static void exit_usage (char *name) +static void exit_usage (void) { printf ("Usage: "PACKAGE" [OPTIONS]\n\n" @@@ -263,6 -218,7 +267,6 @@@ static int do_init (void } #endif - read_types_list (); plugin_init_all (); return (0); @@@ -292,7 -248,7 +296,7 @@@ static int do_loop (void #endif /* Issue all plugins */ - plugin_read_all (&loop); + plugin_read_all (); if (gettimeofday (&tv_now, NULL) < 0) { @@@ -408,7 -364,7 +412,7 @@@ int main (int argc, char **argv #endif /* COLLECT_DAEMON */ case 'h': default: - exit_usage (argv[0]); + exit_usage (); } /* switch (c) */ } /* while (1) */