From: Ruben Kerkhof Date: Fri, 25 Dec 2015 10:46:04 +0000 (+0100) Subject: uuid plugin: make it work on OpenBSD X-Git-Tag: collectd-5.6.0~87^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F1490%2Fhead;p=thirdparty%2Fcollectd.git uuid plugin: make it work on OpenBSD --- diff --git a/src/uuid.c b/src/uuid.c index a607d6192..897662687 100644 --- a/src/uuid.c +++ b/src/uuid.c @@ -124,6 +124,21 @@ uuid_get_from_sysctlbyname(const char *name) return NULL; return (strdup (uuid)); } +#elif defined(__OpenBSD__) +static char * +uuid_get_from_sysctl(void) +{ + char uuid[UUID_PRINTABLE_NORMAL_LENGTH + 1]; + size_t len = sizeof (uuid); + int mib[2]; + + mib[0] = CTL_HW; + mib[1] = HW_UUID; + + if (sysctl(mib, 2, uuid, &len, NULL, 0) == -1) + return NULL; + return (strdup (uuid)); +} #endif #if HAVE_LIBHAL_H @@ -218,6 +233,9 @@ uuid_get_local(void) #elif defined(__NetBSD__) if ((uuid = uuid_get_from_sysctlbyname("machdep.dmi.system-uuid")) != NULL) return (uuid); +#elif defined(__OpenBSD__) + if ((uuid = uuid_get_from_sysctl()) != NULL) + return (uuid); #elif defined(__linux__) if ((uuid = uuid_get_from_file("/sys/class/dmi/id/product_uuid")) != NULL) return (uuid);